diff --git a/MekHQ/resources/mekhq/resources/DateChooser.properties b/MekHQ/resources/mekhq/resources/DateChooser.properties index 63a973b0c1..cf8523700f 100644 --- a/MekHQ/resources/mekhq/resources/DateChooser.properties +++ b/MekHQ/resources/mekhq/resources/DateChooser.properties @@ -30,76 +30,301 @@ friday.text=Fri saturday.text=Sat sunday.text=Sun dayPicker.tooltip=Click on a day to choose it -dateField.text=Click on the date field to edit it +dateField.text=Click on the date to edit it confirmDate.text=Confirm Date # createEraButtons -eraAgeOfWar.text=Age of War
(2475) +eraAgeOfWar.text=Age of War
+eraAgeOfWar.year=(2005-2570) eraAgeOfWar.tooltip=Humanity's expansion into space sparks political turmoil and the creation of vast\ \ interstellar empires. These powers inevitably engage in wars over resources and territory, with\ - \ the introduction of the powerful BattleMech revolutionizing warfare. -eraStarLeague.text=Star League
(2571) + \ the introduction of the powerful BattleMek revolutionizing warfare. +eraStarLeague.text=Star League
+eraStarLeague.year=(2571-2780) eraStarLeague.tooltip=The League prospers for two centuries under the leadership of the First Lords,\ \ with rapid technological advancements and widespread peace. However, unrest brews as the Periphery\ \ nations rebel, stemming from the consequences of Ian Cameron's initial actions. -eraEarlySuccessionWar.text=Early Succession War
(2781) +eraEarlySuccessionWar.text=Early Succession War
+eraEarlySuccessionWar.year=(2781-2900) eraEarlySuccessionWar.tooltip=Minoru Kurita of the Draconis Combine claims the title of First Lord of\ \ the Star League, triggering the First Succession War and involving all Great Houses in the conflict.\ \ The widespread use of weapons of mass destruction results in significant loss of life and technological\ \ regression. Although the war ends with a fragile truce, the Second Succession War erupts within\ \ a decade, causing even more devastation. -eraLateSuccessionWarLosTech.text=Late Succession War
(LostTech - 2901) +eraLateSuccessionWarLosTech.text=Late Succession War
+eraLateSuccessionWarLosTech.year=(2901-3019) eraLateSuccessionWarLosTech.tooltip=By the onset of the Third Succession War, the prolonged conflicts\ \ of the Second War and early stages of the Third have rendered much of the Star League's advanced\ \ technology as "lostech." The Third War begins with a Draconis Combine assault on the Lyran\ \ Commonwealth, but it soon devolves into two centuries of continuous, low-level warfare, with the\ \ Great Houses facing the consequences of their destructive actions. -eraLateSuccessionWarRenaissance.text=Late Succession War
(Renaissance - 3020) +eraLateSuccessionWarRenaissance.text=Late Succession War
+eraLateSuccessionWarRenaissance.year=(3020-3049) eraLateSuccessionWarRenaissance.tooltip=In the early 31st century, the Grey Death Legion uncovers the\ \ Helm memory core, sparking the revival of many lost technologies. Secretly, Hanse Davion and Katrina\ \ Steiner form the FedCom Accords, planning to unite the Federated Suns and Lyran Commonwealth. Using\ \ his marriage to Melissa Steiner as a cover, Davion initiates the Fourth Succession War with a\ \ large-scale invasion. The war ends with Davion capturing half of the Capellan Confederation and\ \ establishing a crucial link to the Commonwealth, though he fails to conquer the Draconis Combine. -eraClanInvasion.text=Clan Invasion
(3050) +eraClanInvasion.text=Clan Invasion
+eraClanInvasion.year=(3050-3061) eraClanInvasion.tooltip=A mysterious force known as the Clans invades the coreward region of the Inner\ \ Sphere. The Clans, descendants of Kerensky's SLDF troops, have evolved into a society focused on\ \ becoming the ultimate fighting force. With advanced technology and elite warriors, they swiftly\ \ conquer numerous worlds. This external threat eventually leads to the formation of a new Star League,\ \ an achievement that centuries of warfare could not attain. Additionally, the Clans' presence\ \ sparks a technological renaissance. -eraCivilWar.text=Civil War
(3062) +eraCivilWar.text=Civil War
+eraCivilWar.year=(3062-3067) eraCivilWar.tooltip=The Clan threat diminishes after the complete destruction of one Clan. With the\ \ external danger seemingly neutralized, internal conflicts erupt across the Inner Sphere. House\ \ Liao reclaims the St. Ives Compact, sparking internal unrest. A rebellion within House Kurita's\ \ military triggers a war with Clan Ghost Bear, while the once-mighty Federated Commonwealth of\ \ House Steiner and House Davion disintegrates into a five-year civil war. -eraJihad.text=Jihad
(3068) +eraJihad.text=Jihad
+eraJihad.year=(3068-3080) eraJihad.tooltip=After the Federated Commonwealth Civil War, the leaders of the Great Houses disband\ \ the new Star League, dismissing it as illegitimate. In response, the Word of Blake, a fanatical\ \ splinter group from ComStar, initiates the Jihad - a devastating interstellar war. This conflict\ \ draws every faction into battle, even against their own, as weapons of mass destruction are used\ \ for the first time in centuries, alongside the emergence of terrifying new technologies. -eraEarlyRepublic.text=Early Republic
(3081) +eraEarlyRepublic.text=Early Republic
+eraEarlyRepublic.year=(3081-3100) eraEarlyRepublic.tooltip=After the Jihad, Stone's Republic ushers in an era of peace and prosperity.\ \ While minor conflicts persist, the large-scale wars that once plagued the Inner Sphere become a\ \ thing of the past. -eraLateRepublic.text=Late Republic
(3101) +eraLateRepublic.text=Late Republic
+eraLateRepublic.year=(3101-3130) eraLateRepublic.tooltip=The peace established by Stone's Republic unravels as war escalates. Sun-Tzu\ \ Liao and his son, Daoshen, launch a campaign to reclaim territories taken by the Republic, sparking\ \ widespread violence. Conflicts erupt across the Inner Sphere and Periphery, including the Second\ \ Combine-Dominion War, the Victoria War, territorial disputes in the former Free Worlds League,\ \ rebellion in the Marian Hegemony, and the ongoing threat of Clan expansion. These events shatter\ \ the era of peace, leaving the Inner Sphere in turmoil once again. -eraDarkAge.text=Dark Age
(3131) +eraDarkAge.text=Dark Age
+eraDarkAge.year=(3131-3150) eraDarkAge.tooltip=Two years after Stone's disappearance, the communications network collapses,\ \ plunging the Inner Sphere into chaos. Seizing the opportunity, the Great Houses begin reclaiming\ \ the worlds they had ceded to the Republic, reigniting old rivalries and long-standing animosities. -eraIlClan.text=ilClan
(3151) +eraIlClan.text=ilClan
+eraIlClan.year=(3151-Present) eraIlClan.tooltip=With Clan Wolf's conquest of Terra, a pivotal moment unfolds in the Inner Sphere.\ \ This victory is likely to trigger major shifts in power, as other Clans and Great Houses react\ \ to this bold move. Clan Wolf's control over Terra, the symbolic heart of the Inner Sphere, could\ \ lead to further Clan expansion and consolidation of power, potentially sparking new conflicts with\ \ rival factions seeking to challenge their dominance. Alternatively, the conquest may inspire a\ \ fragile unity among the Great Houses and other Clans to resist Clan Wolf's growing influence. The\ - \ balance of power hangs in the balance, with the future of the Inner Sphere uncertain. \ No newline at end of file + \ balance of power hangs in the balance, with the future of the Inner Sphere uncertain. + +# turningPointsDialog +turningPoints.title=Select a Turning Point + +TerranHegemonyFounded.text=Founding of the Hegemony +TerranHegemonyFounded.tooltip=The Terran Hegemony was born in 2315, ignited by Admiral James McKenna's\ + \ military coup, overthrowing a faltering Terran Alliance. This marked the dawn of humanity's most\ + \ powerful realm, blending unmatched technological advancement and military might, setting the stage\ + \ for the rise of the Star League and reshaping interstellar politics. +RiseOfTheBattleMek.text=Rise of the BattleMek +RiseOfTheBattleMek.tooltip=In 2439, the BattleMek revolution began with the successful combat trial\ + \ of the Mackie. Developed by the Terran Hegemony, these massive humanoid war machines dominated\ + \ the battlefield with superior mobility, firepower, and durability. The proliferation of BattleMeks\ + \ changed warfare across the Inner Sphere, escalating conflicts and leading to an arms race among\ + \ the Great Houses. +ReunificationWar.text=Reunification War +ReunificationWar.tooltip=The Reunification War was the Star League's first major conflict, aimed at\ + \ forcibly integrating the independent Periphery states into the League. It involved massive campaigns\ + \ by the Star League Defense Force and Inner Sphere powers against the Outworlds Alliance, Taurian\ + \ Concordat, Magistracy of Canopus, and the Rim Worlds Republic, reshaping interstellar politics. +FirstHiddenWar.text=First Hidden War +FirstHiddenWar.tooltip=The First Hidden War was a secretive conflict between the Federated Suns and\ + \ Capellan Confederation, fought largely through espionage, sabotage, and covert operations. This\ + \ war saw both sides using subterfuge and proxy forces, rather than direct military confrontation,\ + \ to influence disputed border regions. Though not a full-scale war, the tension and clandestine\ + \ tactics involved led to ongoing friction between the two powers. +SecondHiddenWar.text=Second Hidden War +SecondHiddenWar.tooltip=The Second Hidden War, also known as the War of Davion Succession, was an\ + \ intense period of covert conflict between the Federated Suns and Draconis Combine. It involved\ + \ espionage, raids, and proxy battles, with each side attempting to weaken the other without a\ + \ full-scale war. This shadowy struggle revolved around control of strategic worlds and resources,\ + \ leading to significant military and political maneuvering that reshaped relations between these\ + \ powerful factions, while avoiding open conflict until later, larger wars erupted. +ThirdHiddenWar.text=Third Hidden War +ThirdHiddenWar.tooltip=The Third Hidden War was a shadowy conflict between the Federated Suns, Draconis\ + \ Combine, and Lyran Commonwealth over control and influence in the Rimward Periphery. Rather than\ + \ open warfare, the struggle played out through espionage, sabotage, and proxy battles. Each faction\ + \ sought to expand its reach without triggering a full-scale war, making it a tense but indirect\ + \ conflict that shifted political balances in the region. +AmarisCivilWar.text=Amaris Civil War +AmarisCivilWar.tooltip=The Amaris Civil War was a devastating conflict triggered by Stefan Amaris'\ + \ coup against the Star League. After seizing Terra and assassinating First Lord Richard Cameron,\ + \ Amaris ruled the Hegemony. General Aleksandr Kerensky led the Star League Defense Force in a bloody\ + \ campaign to reclaim Terra, ultimately toppling Amaris and ending the Star League. +OperationExodus.text=Operation Exodus +OperationExodus.tooltip=Operation Exodus was General Aleksandr Kerensky's daring decision to lead the\ + \ Star League Defense Force into deep space after the collapse of the Star League. Refusing to let\ + \ the Great Houses exploit his troops, Kerensky and his followers sought refuge beyond the Inner\ + \ Sphere, ultimately forming the foundation of the future Clans. +OperationKlondike.text=Operation Klondike +OperationKlondike.tooltip=Operation Klondike was the Clans' campaign to recapture the Pentagon Worlds,\ + \ which had fallen into chaos after Aleksandr Kerensky's death. Led by Nicholas Kerensky, the newly\ + \ formed Clans launched fierce attacks, retaking the planets from rebel factions. This operation\ + \ solidified the Clans' dominance and established their military traditions. +SecondSuccessionWar.text=Second Succession War +SecondSuccessionWar.tooltip=The Second Succession War was a devastating conflict among the Great Houses\ + \ of the Inner Sphere, marked by widespread destruction and technological regression. Despite brutal\ + \ fighting, no house gained a decisive advantage. The war accelerated the loss of advanced technology,\ + \ pushing the Inner Sphere into a dark age and setting the stage for the next Succession War. +ThirdSuccessionWar.text=Third Succession War +ThirdSuccessionWar.tooltip=The Third Succession War was marked by prolonged, low-intensity conflict\ + \ between the Great Houses of the Inner Sphere. Raids replaced large-scale battles as resources and\ + \ technology dwindled, pushing humanity further into decline. Despite constant skirmishes, no house\ + \ gained a decisive advantage, and the war ended without a formal peace, merely giving way to the\ + \ next conflict. +OperationFreedom.text=Operation Freedom +OperationFreedom.tooltip=Operation FREEDOM was a sprawling and hard-fought campaign launched by the\ + \ Lyran Commonwealth to reclaim critical industrial worlds from the Draconis Combine. With bold\ + \ offensives targeting key planets like Freedom and Skondia, the operation stretched across decades.\ + \ Though initial victories sparked hope, the conflict devolved into grueling attrition, testing the\ + \ Lyran military's resolve and reshaping their future military strategy. +ThirdSuccessionWarEnds.text=Third Succession War Ends +ThirdSuccessionWarEnds.tooltip=The Third Succession War ended in 3025 without a decisive military outcome,\ + \ as years of low-intensity skirmishes between the Great Houses gave way to exhaustion. Archon Katrina\ + \ Steiner's peace efforts formed the Federated Commonwealth Alliance with Hanse Davion, while the\ + \ other states created the Concord of Kapteyn. Around the same time, the Arano Restoration in the\ + \ Aurigan Reach highlighted smaller-scale conflicts, with Kamea Arano reclaiming her throne. These\ + \ events paved the way for the Fourth Succession War. +ForthSuccessionWar.text=Forth Succession War +ForthSuccessionWar.tooltip=The Fourth Succession War was a dramatic conflict driven by Hanse Davion's\ + \ surprise alliance with the Lyran Commonwealth against the Capellan Confederation and their allies.\ + \ With cunning strategies and bold offensives, Davion forces gained significant territory, especially\ + \ from the Capellans. The war reshaped the political landscape of the Inner Sphere, as powerful nations\ + \ rose, alliances were tested, and long-standing rivalries intensified, ultimately leading to the\ + \ formation of the Federated Commonwealth and setting the stage for future conflicts. +FRRFounded.text=Free Rasalhague Republic Founded +FRRFounded.tooltip=The Free Rasalhague Republic was born from the ashes centuries-long resistance\ + \ against the Draconis Combine. In a landmark decision, the Combine granted independence to the\ + \ Rasalhague region, allowing the proud people of Rasalhague to finally govern themselves. This bold\ + \ move marked the creation of a sovereign state, fueled by a fierce desire for freedom and cultural\ + \ preservation, standing as a testament to the perseverance of its people. +WarOf3039.text=War of 3039 +WarOf3039.tooltip=The War of 3039 was an ambitious attempt by Hanse Davion to crush the Draconis\ + \ Combine after the successes of the Fourth Succession War. However, the Combine, led by Theodore\ + \ Kurita, mounted a fierce defense with unexpected resilience. What started as a bold campaign\ + \ devolved into a war of attrition, with minimal territorial gains and the eventual cessation of\ + \ hostilities. Although the Federated Commonwealth won several battles, the Combine's tenacity\ + \ prevented a decisive victory, leaving both sides bloodied but largely unchanged. +FirstContact.text=First Contact +FirstContact.tooltip=The Clan Invasion's first contact with the Inner Sphere was swift and devastating.\ + \ Emerging from the Periphery, the Clans overwhelmed unprepared defenders with their advanced\ + \ technology and martial prowess. Entire worlds fell before most even realized the magnitude of the\ + \ threat. The invaders' relentless, honor-driven tactics and their superior war machines sent shockwaves\ + \ through the Inner Sphere, marking the dawn of a new era of warfare as rumors spread that these\ + \ fearsome conquerors might even be aliens. +YearOfPeace.text=Year of Peace +YearOfPeace.tooltip=During the "Year of Peace," both the Clans and Inner Sphere regrouped and rearmed\ + \ after the initial Clan Invasion waves. The Clans, bolstered by fresh reinforcements, prepared to\ + \ renew their assault. Meanwhile, the Inner Sphere's Great Houses, unprecedentedly united, worked\ + \ together to upgrade their forces, producing new technologies and 'Meks to counter the invaders.\ + \ Though tensions remained high, this brief lull set the stage for the fierce battles that would\ + \ follow, as both sides braced for the next chapter in their conflict. +Tukayyid.text=Tukayyid +Tukayyid.tooltip=The Battle of Tukayyid was a defining moment in the Clan Invasion, where ComStar's\ + \ Com Guards faced off against seven Clan armies in a desperate struggle for Terra. Against all odds,\ + \ the Com Guards outmaneuvered the technologically superior Clans, turning the planet into a battleground\ + \ of ambushes and attrition. The victory forced the Clans into a fifteen-year truce, halting their\ + \ advance toward Terra and giving the Inner Sphere a much-needed respite from the invaders' relentless\ + \ march. +RefusalWar.text=Refusal War +RefusalWar.tooltip=The Refusal War was a brutal internal Clan conflict between Clan Wolf and Clan Jade\ + \ Falcon. Sparked by accusations of treason against ilKhan Ulric Kerensky, it became a massive Trial\ + \ of Refusal. Ulric fought to protect his Clan's honor, splitting Clan Wolf into two factions:\ + \ Crusader-aligned Clan Jade Wolf and Warden-aligned Clan Wolf-in-Exile. The war saw the deaths of\ + \ many key leaders, including Ulric and Natasha Kerensky, and reshaped Clan politics, delaying further\ + \ Clan aggression toward the Inner Sphere. +OperationBulldog.text=Operation Bulldog +OperationBulldog.tooltip=Operation Bulldog was a bold campaign launched by the Second Star League to\ + \ annihilate Clan Smoke Jaguar's presence in the Inner Sphere. Led by Anastasius Focht and Victor\ + \ Steiner-Davion, the assault was a massive success, exploiting the Jaguars' lack of support from\ + \ other Clans. With strategic brilliance and the aid of defector Nova Cat warriors, the operation\ + \ reclaimed numerous planets, ultimately ejecting Smoke Jaguar from the Inner Sphere and signaling\ + \ the Star League's resurgence against the Clans. +FCCWStarts.text=FedCom Civil War +FCCWStarts.tooltip=The FedCom Civil War erupted between Victor Steiner-Davion and his sister, Katherine,\ + \ over control of the Federated Commonwealth. Katherine's ruthless manipulation and power grab led\ + \ to a full-scale civil war, dividing loyalties and shattering the once-powerful nation. Battles\ + \ raged across numerous worlds, with both sides suffering heavy losses. Victor ultimately emerged\ + \ victorious, ousting Katherine from power, but the war left the Federated Commonwealth in ruins,\ + \ deeply altering the balance of power in the Inner Sphere. +JadeFalconOffensive.text=Jade Falcon Offensive +JadeFalconOffensive.tooltip=The Jade Falcon Offensive of 3064 saw Clan Jade Falcon launch a fierce\ + \ incursion into the Lyran Alliance, striking with overwhelming force across key worlds. Initially,\ + \ they captured several planets, but the campaign met stiff resistance from Lyran forces and their\ + \ allies. The offensive stalled, turning into a series of brutal engagements, where both sides\ + \ suffered heavy losses. Despite early successes, the Jade Falcons were forced to pull back,\ + \ demonstrating the ferocity of Clan warfare and the resilience of the Lyran defenders. +FirstBattleOfHarlech.text=First Battle of Harlech +FirstBattleOfHarlech.tooltip=The First Battle of Harlech marked the explosive start of the Word of Blake\ + \ Jihad. Mercenary forces, led by the Waco Rangers and backed by the Word of Blake, launched a\ + \ surprise attack on Wolf's Dragoons' stronghold on Outreach. The fierce battle devastated the city\ + \ of Harlech, leading to massive civilian and military casualties. Despite the ferocity of the attack,\ + \ the Dragoons fought back with a relentless counterassault, ultimately crushing the Waco Rangers.\ + \ This bloody conflict ignited the galaxy-wide Word of Blake Jihad. +WarsOfReaving.text=Wars of Reaving +WarsOfReaving.tooltip=The Wars of Reaving were a savage period of civil war within the Clan Homeworlds,\ + \ initiated by ilKhan Brett Andrews' purges of Clans tainted by Inner Sphere contact. Fierce internal\ + \ battles led to the annihilation of several Clans, like Ice Hellion and Fire Mandrill, and resulted\ + \ in the isolation of the Home Clans from those in the Inner Sphere. This conflict left the Clans\ + \ fractured and politically unstable, altering their future forever. +OperationScour.text=Operation Scour +OperationScour.tooltip=Operation Scour was the climactic campaign to eradicate the Word of Blake during\ + \ the Jihad. Led by Devlin Stone, a coalition of Inner Sphere forces launched coordinated assaults\ + \ across multiple fronts, culminating in the liberation of Terra. Despite fierce resistance, the\ + \ Word of Blake was ultimately crushed, marking the end of their reign of terror and bringing a\ + \ fragile peace to the Inner Sphere. This operation paved the way for a new era under Stone's leadership. +RepublicFounded.text=Republic Founded +RepublicFounded.tooltip=The Republic of the Sphere was founded by Devlin Stone from the remnants of\ + \ the Word of Blake Protectorate. Created as a buffer state between the major Inner Sphere powers,\ + \ it embodied Stone's vision of peace and unity, with Terra as its capital. The Republic disarmed\ + \ much of the Inner Sphere and redistributed populations, promoting stability and security. Over\ + \ time, it faced internal strife, invasions, and eventual dissolution, but it marked a significant\ + \ era of relative peace after centuries of war. +OperationGoldenDawn.text=Operation Golden Dawn +OperationGoldenDawn.tooltip=Operation Golden Dawn was a swift military campaign launched by the\ + \ Republic of the Sphere against former Free Worlds League states in 3081. Led by Paladin Alys\ + \ Rousset-Marik, the operation aimed to secure Republic borders and legitimacy. Through multiple\ + \ waves of assaults, the Republic reclaimed key worlds, including New Hope, forcing several states\ + \ into peace agreements and solidifying control over ex-League territories. +SecondCombineDominionWar.text=Second Combine-Dominion War +SecondCombineDominionWar.tooltip=The Second Combine-Dominion War was sparked by escalating tensions\ + \ between Clan Ghost Bear and the Draconis Combine, worsened by raids and the Black Dragon Society's\ + \ interference. Both sides engaged in brutal battles over border worlds, resulting in heavy casualties.\ + \ The war ended in a stalemate, with neither side achieving a decisive victory, and a fragile\ + \ ceasefire was established. +VictoriaWar.text=Victoria War +VictoriaWar.tooltip=The Victoria War was a brief but intense conflict launched by Duchess Amanda Hasek\ + \ of the Federated Suns against the Capellan Confederation. Targeting the vital industrial world of\ + \ Victoria, the Federated Suns gained initial success but lost other strategic worlds in the process.\ + \ The war demonstrated the fragile balance of power between the two realms and the high cost of\ + \ territorial ambition. +CapellanCrusades.text=Capellan Crusades +CapellanCrusades.tooltip=The Capellan Crusades were a series of aggressive campaigns launched by the\ + \ Capellan Confederation under Chancellor Sun-Tzu Liao. Aimed at reclaiming lost territories and\ + \ restoring Capellan pride, the Crusades targeted House Davion and other enemies. These conflicts\ + \ showcased the Confederation's revitalized military strength, driven by Sun-Tzu's political\ + \ machinations and strategic brilliance, but also led to heavy losses and fierce resistance from\ + \ neighboring powers. The campaigns were a critical period for Capellan ambitions and influence\ + \ in the Inner Sphere. +GreyMonday.text=Grey Monday +GreyMonday.tooltip=Grey Monday, also known as the Blackout, was a catastrophic event in which interstellar\ + \ communications, reliant on HPG (Hyperpulse Generators), mysteriously collapsed across the Inner\ + \ Sphere. The blackout disrupted economies, militaries, and daily life, plunging regions into chaos\ + \ and uncertainty. The cause of the event remains unclear, but it gave rise to conspiracy theories,\ + \ power struggles, and opportunistic invasions as factions vied for control in the resulting\ + \ communication vacuum. This marked a turning point in Inner Sphere politics, sparking further\ + \ conflicts and instability. +BattleOfTerra.text=Battle of Terra +BattleOfTerra.tooltip=The Battle of Terra was a decisive and brutal conflict between Clan Wolf and\ + \ Clan Jade Falcon, fighting for control of Terra and the right to become ilClan, the supreme Clan\ + \ leader. After fierce combat across the planet, Clan Wolf emerged victorious, securing Terra and\ + \ significantly altering the balance of power in the Inner Sphere. This victory marked the end of\ + \ the ilClan Trial and positioned Clan Wolf as the dominant force in the Clans. \ No newline at end of file diff --git a/MekHQ/src/mekhq/gui/dialog/DateChooser.java b/MekHQ/src/mekhq/gui/dialog/DateChooser.java index 3f87d5948d..77a8819e73 100644 --- a/MekHQ/src/mekhq/gui/dialog/DateChooser.java +++ b/MekHQ/src/mekhq/gui/dialog/DateChooser.java @@ -137,9 +137,6 @@ private void initialize(Component owner, LocalDate date) { this.date = date; workingDate = this.date; - // Ensure the dialog isn't hidden - setAlwaysOnTop(true); - Container contentPane = getContentPane(); contentPane.setLayout(new BorderLayout()); @@ -271,7 +268,7 @@ public String valueToString(Object value) { // setResizable(false); ready = false; pack(); - setMinimumSize(new Dimension(700, 300)); + setMinimumSize(new Dimension(750, 550)); // center this dialog over the owner setLocationRelativeTo(owner); @@ -600,99 +597,211 @@ private boolean updateDateFromDateField() { * @return The created JButton object representing the specified era. */ private JButton createEraButton(int era) { - final List eraYears = List.of(2475, 2571, 2781, 2901, 3020, 3050, 3062, - 3068, 3081, 3101, 3131, 3151); - - final String ERA_AGE_OF_WAR_LABEL = resources.getString("eraAgeOfWar.text"); - final String ERA_AGE_OF_WAR_TOOLTIP = resources.getString("eraAgeOfWar.tooltip"); - final String ERA_STAR_LEAGUE_LABEL = resources.getString("eraStarLeague.text"); - final String ERA_STAR_LEAGUE_TOOLTIP = resources.getString("eraStarLeague.tooltip"); - final String ERA_EARLY_SUCCESSION_WAR_LABEL = resources.getString("eraEarlySuccessionWar.text"); - final String ERA_EARLY_SUCCESSION_WAR_TOOLTIP = resources.getString("eraEarlySuccessionWar.tooltip"); - final String ERA_LATE_SUCCESSION_WAR_LOSTECH_LABEL = resources.getString("eraLateSuccessionWarLosTech.text"); - final String ERA_LATE_SUCCESSION_WAR_LOSTECH_TOOLTIP = resources.getString("eraLateSuccessionWarLosTech.tooltip"); - final String ERA_LATE_SUCCESSION_WAR_RENAISSANCE_LABEL = resources.getString("eraLateSuccessionWarRenaissance.text"); - final String ERA_LATE_SUCCESSION_WAR_RENAISSANCE_TOOLTIP = resources.getString("eraLateSuccessionWarRenaissance.tooltip"); - final String ERA_CLAN_INVASION_LABEL = resources.getString("eraClanInvasion.text"); - final String ERA_CLAN_INVASION_TOOLTIP = resources.getString("eraClanInvasion.tooltip"); - final String ERA_CIVIL_WAR_LABEL = resources.getString("eraCivilWar.text"); - final String ERA_CIVIL_WAR_TOOLTIP = resources.getString("eraCivilWar.tooltip"); - final String ERA_JIHAD_LABEL = resources.getString("eraJihad.text"); - final String ERA_JIHAD_TOOLTIP = resources.getString("eraJihad.tooltip"); - final String ERA_EARLY_REPUBLIC_LABEL = resources.getString("eraEarlyRepublic.text"); - final String ERA_EARLY_REPUBLIC_TOOLTIP = resources.getString("eraEarlyRepublic.tooltip"); - final String ERA_LATE_REPUBLIC_LABEL = resources.getString("eraLateRepublic.text"); - final String ERA_LATE_REPUBLIC_TOOLTIP = resources.getString("eraLateRepublic.tooltip"); - final String ERA_DARK_AGE_LABEL = resources.getString("eraDarkAge.text"); - final String ERA_DARK_AGE_TOOLTIP = resources.getString("eraDarkAge.tooltip"); - final String ERA_ILCLAN_LABEL = resources.getString("eraIlClan.text"); - final String ERA_ILCLAN_TOOLTIP = resources.getString("eraIlClan.tooltip"); - - String eraLabel; - String eraTooltip; - switch (era) { + String reference = switch (era) { + case 0 -> "eraAgeOfWar"; + case 1 -> "eraStarLeague"; + case 2 -> "eraEarlySuccessionWar"; + case 3 -> "eraLateSuccessionWarLosTech"; + case 4 -> "eraLateSuccessionWarRenaissance"; + case 5 -> "eraClanInvasion"; + case 6 -> "eraCivilWar"; + case 7 -> "eraJihad"; + case 8 -> "eraEarlyRepublic"; + case 9 -> "eraLateRepublic"; + case 10 -> "eraDarkAge"; + case 11 -> "eraIlClan"; + default -> throw new IllegalStateException("Unexpected value mekhq/gui/dialog/DateChooser.java/createEraButton: " + + era); + }; + + String label = String.format("
%s%s
", + resources.getString(reference + ".text"), + resources.getString(reference + ".year")); + + JButton button = new JButton(label); + button.setToolTipText(wordWrap(resources.getString(reference + ".tooltip"))); + button.setHorizontalAlignment(SwingConstants.CENTER); + button.addActionListener(e -> turningPointsDialog(era, reference)); + + return button; + } + + /** + * Displays a dialog window with buttons representing turning points in history based on the era provided. + * + * @param era an integer value specifying the era of turning points to display + */ + private void turningPointsDialog(int era, String reference) { + TurningPoints turningPointData = getTurningPoints(era); + + JPanel panelDescriptionContainer = new JPanel(new FlowLayout(FlowLayout.CENTER)); + JLabel panelDescription = new JLabel(String.format( + "
%s
%s
", + resources.getString(reference + ".text"), + resources.getString(reference + ".tooltip"))); + panelDescriptionContainer.add(panelDescription); + + JDialog turningPointsDialog = new JDialog(); + turningPointsDialog.setTitle(resources.getString("turningPoints.title")); + turningPointsDialog.setModalityType(ModalityType.APPLICATION_MODAL); + + JPanel buttonPanel = new JPanel(); + final List finalTurningPointDates = turningPointData.turningPointDates(); + + for (int index = 1; index <= turningPointData.turningPoints().size(); index++) { + JButton eraButtonN = new JButton(String.format("
" + resources.getString(turningPointData.turningPoints().get(index - 1) + ".text") + + "
(" + finalTurningPointDates.get(index - 1).toString() + ")
")); + eraButtonN.setToolTipText(String.format(resources.getString(turningPointData.turningPoints().get(index - 1) + ".tooltip"))); + + final int finalIndex = index - 1; + eraButtonN.addActionListener(e -> { + setDate(finalTurningPointDates.get(finalIndex)); + turningPointsDialog.dispose(); + }); + + buttonPanel.add(eraButtonN); + } + + JLabel eraLogoLabel = new JLabel(); + eraLogoLabel.setIcon(turningPointData.eraLogo()); + eraLogoLabel.setHorizontalAlignment(JLabel.CENTER); + + // Create a JPanel to hold the description and buttons, then add to the center of the dialog + JPanel descriptionAndButtonsPanel = new JPanel(new BorderLayout()); + descriptionAndButtonsPanel.add(panelDescriptionContainer, BorderLayout.NORTH); + descriptionAndButtonsPanel.add(buttonPanel, BorderLayout.CENTER); + + turningPointsDialog.getContentPane().add(eraLogoLabel, BorderLayout.PAGE_START); + turningPointsDialog.getContentPane().add(descriptionAndButtonsPanel, BorderLayout.CENTER); + + // set turningPointsDialog size and location, and make it visible + setResizable(false); + turningPointsDialog.pack(); + turningPointsDialog.setMinimumSize(turningPointsDialog.getSize()); + turningPointsDialog.setLocationRelativeTo(null); + turningPointsDialog.setVisible(true); + } + + /** + * Retrieves turning points based on the given era. + * + * @param era the era for which turning points are requested + * @return {@link TurningPoints} object containing the turning points, their dates, and era logo + */ + private static TurningPoints getTurningPoints(int era) { + final String LOGO_DIRECTORY = "data/images/universe/"; + final String LOGO_FILE_TYPE = ".png"; + + List turningPoints; + List turningPointDates; + ImageIcon eraLogo; + + switch (era) { case 0 -> { - eraLabel = ERA_AGE_OF_WAR_LABEL; - eraTooltip = ERA_AGE_OF_WAR_TOOLTIP; + turningPoints = List.of("TerranHegemonyFounded", "RiseOfTheBattleMek"); + turningPointDates = List.of( + LocalDate.of(2315, 6, 2), + LocalDate.of(2475, 1, 1)); + eraLogo = new ImageIcon(LOGO_DIRECTORY + "era_starleague" + LOGO_FILE_TYPE); } case 1 -> { - eraLabel = ERA_STAR_LEAGUE_LABEL; - eraTooltip = ERA_STAR_LEAGUE_TOOLTIP; + turningPoints = List.of("ReunificationWar", "FirstHiddenWar", "SecondHiddenWar", + "ThirdHiddenWar", "AmarisCivilWar"); + turningPointDates = List.of( + LocalDate.of(2571, 1, 1), + LocalDate.of(2681, 1, 1), + LocalDate.of(2725, 1, 1), + LocalDate.of(2741, 1, 1), + LocalDate.of(2766, 11, 26)); + eraLogo = new ImageIcon(LOGO_DIRECTORY + "era_starleague" + LOGO_FILE_TYPE); } case 2 -> { - eraLabel = ERA_EARLY_SUCCESSION_WAR_LABEL; - eraTooltip = ERA_EARLY_SUCCESSION_WAR_TOOLTIP; + turningPoints = List.of("OperationExodus", "OperationKlondike", "SecondSuccessionWar", + "ThirdSuccessionWar"); + turningPointDates = List.of( + LocalDate.of(2784, 2, 14), + LocalDate.of(2821, 7, 2), + LocalDate.of(2830, 1, 1), + LocalDate.of(2866, 1, 1)); + eraLogo = new ImageIcon(LOGO_DIRECTORY + "era_sw" + LOGO_FILE_TYPE); } case 3 -> { - eraLabel = ERA_LATE_SUCCESSION_WAR_LOSTECH_LABEL; - eraTooltip = ERA_LATE_SUCCESSION_WAR_LOSTECH_TOOLTIP; + turningPoints = List.of("OperationFreedom"); + turningPointDates = List.of(LocalDate.of(2866, 1, 1)); + eraLogo = new ImageIcon(LOGO_DIRECTORY + "era_sw" + LOGO_FILE_TYPE); } case 4 -> { - eraLabel = ERA_LATE_SUCCESSION_WAR_RENAISSANCE_LABEL; - eraTooltip = ERA_LATE_SUCCESSION_WAR_RENAISSANCE_TOOLTIP; + turningPoints = List.of("ThirdSuccessionWarEnds", "ForthSuccessionWar", "FRRFounded", + "WarOf3039"); + turningPointDates = List.of( + LocalDate.of(3025, 1, 1), + LocalDate.of(3028, 8, 20), + LocalDate.of(3034, 3, 13), + LocalDate.of(3039, 4, 16)); + eraLogo = new ImageIcon(LOGO_DIRECTORY + "era_sw" + LOGO_FILE_TYPE); } case 5 -> { - eraLabel = ERA_CLAN_INVASION_LABEL; - eraTooltip = ERA_CLAN_INVASION_TOOLTIP; + turningPoints = List.of("FirstContact", "YearOfPeace", "Tukayyid", "RefusalWar", + "OperationBulldog"); + turningPointDates = List.of( + LocalDate.of(3049, 1, 1), + LocalDate.of(3050, 10, 31), + LocalDate.of(3052, 5, 1), + LocalDate.of(3057, 9, 1), + LocalDate.of(3059, 5, 1)); + eraLogo = new ImageIcon(LOGO_DIRECTORY + "era_claninvasion" + LOGO_FILE_TYPE); } case 6 -> { - eraLabel = ERA_CIVIL_WAR_LABEL; - eraTooltip = ERA_CIVIL_WAR_TOOLTIP; + turningPoints = List.of("FCCWStarts", "JadeFalconOffensive"); + turningPointDates = List.of( + LocalDate.of(3062, 11, 16), + LocalDate.of(3064, 5, 10)); + eraLogo = new ImageIcon(LOGO_DIRECTORY + "era_civilwar" + LOGO_FILE_TYPE); } case 7 -> { - eraLabel = ERA_JIHAD_LABEL; - eraTooltip = ERA_JIHAD_TOOLTIP; + turningPoints = List.of("FirstBattleOfHarlech", "WarsOfReaving", "OperationScour"); + turningPointDates = List.of( + LocalDate.of(3067, 10, 15), + LocalDate.of(3071, 12, 1), + LocalDate.of(3077, 1, 10)); + eraLogo = new ImageIcon(LOGO_DIRECTORY + "era_jihad" + LOGO_FILE_TYPE); } case 8 -> { - eraLabel = ERA_EARLY_REPUBLIC_LABEL; - eraTooltip = ERA_EARLY_REPUBLIC_TOOLTIP; + turningPoints = List.of("RepublicFounded", "OperationGoldenDawn"); + turningPointDates = List.of( + LocalDate.of(3081, 3, 7), + LocalDate.of(3081, 4, 3)); + eraLogo = new ImageIcon(LOGO_DIRECTORY + "era_darkage" + LOGO_FILE_TYPE); } case 9 -> { - eraLabel = ERA_LATE_REPUBLIC_LABEL; - eraTooltip = ERA_LATE_REPUBLIC_TOOLTIP; + turningPoints = List.of("SecondCombineDominionWar", "VictoriaWar", "CapellanCrusades"); + turningPointDates = List.of( + LocalDate.of(3098, 9, 14), + LocalDate.of(3103, 9, 7), + LocalDate.of(3111, 10, 11)); + eraLogo = new ImageIcon(LOGO_DIRECTORY + "era_darkage" + LOGO_FILE_TYPE); } case 10 -> { - eraLabel = ERA_DARK_AGE_LABEL; - eraTooltip = ERA_DARK_AGE_TOOLTIP; + turningPoints = List.of("GreyMonday"); + turningPointDates = List.of(LocalDate.of(3132, 8, 7)); + eraLogo = new ImageIcon(LOGO_DIRECTORY + "era_darkage" + LOGO_FILE_TYPE); } case 11 -> { - eraLabel = ERA_ILCLAN_LABEL; - eraTooltip = ERA_ILCLAN_TOOLTIP; + turningPoints = List.of("BattleOfTerra"); + turningPointDates = List.of(LocalDate.of(3151, 1, 1)); + eraLogo = new ImageIcon(LOGO_DIRECTORY + "era_ilclan" + LOGO_FILE_TYPE); } - default -> { - eraLabel = "ERROR"; - eraTooltip = "ERROR"; - } - } - - String label = String.format("
%s
", eraLabel); - - JButton button = new JButton(label); - button.setToolTipText(wordWrap(eraTooltip)); - button.setHorizontalAlignment(SwingConstants.CENTER); - button.addActionListener(e -> setDate(LocalDate.of(eraYears.get(era), 1, 1))); + default -> throw new IllegalStateException( + "Unexpected value mekhq/gui/turningPointsDialog/DateChooser.java/turningPointsDialog: " + + era); + } - // Return the button - return button; + return new TurningPoints(turningPoints, turningPointDates, eraLogo); } + + /** + * Represents a record for storing turning points in history. + * Contains lists of turning point names, their corresponding dates, and an {@link ImageIcon} of the era logo. + */ + private record TurningPoints(List turningPoints, List turningPointDates, ImageIcon eraLogo) {} }