Refactor out swing-related code from forge-gui into new forge-gui-desktop module

This commit is contained in:
drdev
2014-04-08 23:01:39 +00:00
parent 18dd421935
commit 9439bbbc57
535 changed files with 31219 additions and 19307 deletions

866
.gitattributes vendored
View File

@@ -187,7 +187,6 @@ forge-core/src/main/java/forge/deck/generation/DeckGenerator3Color.java svneol=n
forge-core/src/main/java/forge/deck/generation/DeckGenerator5Color.java svneol=native#text/plain
forge-core/src/main/java/forge/deck/generation/DeckGeneratorBase.java -text
forge-core/src/main/java/forge/deck/generation/DeckGeneratorMonoColor.java -text
forge-core/src/main/java/forge/deck/generation/DeckGeneratorTheme.java -text
forge-core/src/main/java/forge/deck/generation/package-info.java svneol=native#text/plain
forge-core/src/main/java/forge/deck/io/DeckFileHeader.java -text
forge-core/src/main/java/forge/deck/io/DeckGroupSerializer.java -text
@@ -630,6 +629,397 @@ forge-game/src/main/java/forge/game/zone/package-info.java svneol=native#text/pl
forge-game/src/main/java/forge/package-info.java -text
forge-game/src/main/java/forge/util/Expressions.java -text
forge-game/src/main/java/forge/util/package-info.java -text
forge-gui-desktop/.classpath -text
forge-gui-desktop/.project -text
forge-gui-desktop/.settings/org.eclipse.core.resources.prefs -text
forge-gui-desktop/.settings/org.eclipse.jdt.core.prefs -text
forge-gui-desktop/.settings/org.eclipse.m2e.core.prefs -text
forge-gui-desktop/pom.xml -text
forge-gui-desktop/src/main/config/Forge.icns -text
forge-gui-desktop/src/main/config/appbundler-1.0-custom.jar -text
forge-gui-desktop/src/main/config/backgroundImage.jpg -text
forge-gui-desktop/src/main/config/builder/create-dmg.builder -text
forge-gui-desktop/src/main/config/create-dmg -text
forge-gui-desktop/src/main/config/forge.command -text
forge-gui-desktop/src/main/config/forge.ico -text
forge-gui-desktop/src/main/config/forge.sh -text
forge-gui-desktop/src/main/config/forge_checks.xml -text
forge-gui-desktop/src/main/config/support/dmg-license.py -text
forge-gui-desktop/src/main/config/support/template.applescript -text
forge-gui-desktop/src/main/html/connectionTest.html -text
forge-gui-desktop/src/main/html/css/core.css -text
forge-gui-desktop/src/main/html/js/jquery/jquery-1.9.1.js -text
forge-gui-desktop/src/main/html/js/jquery/jquery-1.9.1.min.js -text
forge-gui-desktop/src/main/html/js/observable.js -text
forge-gui-desktop/src/main/html/js/socket.js -text
forge-gui-desktop/src/main/java/forge/GuiDesktop.java -text
forge-gui-desktop/src/main/java/forge/ImageCache.java -text
forge-gui-desktop/src/main/java/forge/ImageLoader.java -text
forge-gui-desktop/src/main/java/forge/Singletons.java -text
forge-gui-desktop/src/main/java/forge/control/FControl.java -text
forge-gui-desktop/src/main/java/forge/control/KeyboardShortcuts.java -text
forge-gui-desktop/src/main/java/forge/control/RestartUtil.java -text
forge-gui-desktop/src/main/java/forge/control/package-info.java -text
forge-gui-desktop/src/main/java/forge/deckchooser/DecksComboBox.java -text
forge-gui-desktop/src/main/java/forge/deckchooser/DecksComboBoxEvent.java -text
forge-gui-desktop/src/main/java/forge/deckchooser/FDeckChooser.java -text
forge-gui-desktop/src/main/java/forge/deckchooser/FDeckViewer.java -text
forge-gui-desktop/src/main/java/forge/deckchooser/IDecksComboBoxListener.java -text
forge-gui-desktop/src/main/java/forge/download/GuiDownloadPicturesLQ.java -text
forge-gui-desktop/src/main/java/forge/download/GuiDownloadPrices.java -text
forge-gui-desktop/src/main/java/forge/download/GuiDownloadQuestImages.java -text
forge-gui-desktop/src/main/java/forge/download/GuiDownloadSetPicturesLQ.java -text
forge-gui-desktop/src/main/java/forge/download/GuiDownloader.java -text
forge-gui-desktop/src/main/java/forge/download/package-info.java -text
forge-gui-desktop/src/main/java/forge/error/BugReporter.java -text
forge-gui-desktop/src/main/java/forge/error/package-info.java -text
forge-gui-desktop/src/main/java/forge/gui/CardContainer.java -text
forge-gui-desktop/src/main/java/forge/gui/CardDetailPanel.java -text
forge-gui-desktop/src/main/java/forge/gui/CardListViewer.java -text
forge-gui-desktop/src/main/java/forge/gui/CardPicturePanel.java -text
forge-gui-desktop/src/main/java/forge/gui/DualListBox.java -text
forge-gui-desktop/src/main/java/forge/gui/FNetOverlay.java -text
forge-gui-desktop/src/main/java/forge/gui/ForgeAction.java -text
forge-gui-desktop/src/main/java/forge/gui/GuiChoose.java -text
forge-gui-desktop/src/main/java/forge/gui/GuiDialog.java -text
forge-gui-desktop/src/main/java/forge/gui/GuiProgressBarWindow.java -text
forge-gui-desktop/src/main/java/forge/gui/GuiUtils.java -text
forge-gui-desktop/src/main/java/forge/gui/ImportDialog.java -text
forge-gui-desktop/src/main/java/forge/gui/ImportSourceAnalyzer.java -text
forge-gui-desktop/src/main/java/forge/gui/ListChooser.java -text
forge-gui-desktop/src/main/java/forge/gui/MouseUtil.java -text
forge-gui-desktop/src/main/java/forge/gui/MultiLineLabel.java -text
forge-gui-desktop/src/main/java/forge/gui/MultiLineLabelUI.java -text
forge-gui-desktop/src/main/java/forge/gui/SOverlayUtils.java -text
forge-gui-desktop/src/main/java/forge/gui/UnsortedListModel.java -text
forge-gui-desktop/src/main/java/forge/gui/WrapLayout.java -text
forge-gui-desktop/src/main/java/forge/gui/framework/CEmptyDoc.java -text
forge-gui-desktop/src/main/java/forge/gui/framework/DragCell.java -text
forge-gui-desktop/src/main/java/forge/gui/framework/DragTab.java -text
forge-gui-desktop/src/main/java/forge/gui/framework/EDocID.java -text
forge-gui-desktop/src/main/java/forge/gui/framework/FScreen.java -text
forge-gui-desktop/src/main/java/forge/gui/framework/ICDoc.java -text
forge-gui-desktop/src/main/java/forge/gui/framework/IDocIdList.java -text
forge-gui-desktop/src/main/java/forge/gui/framework/ILocalRepaint.java -text
forge-gui-desktop/src/main/java/forge/gui/framework/IVDoc.java -text
forge-gui-desktop/src/main/java/forge/gui/framework/IVTopLevelUI.java -text
forge-gui-desktop/src/main/java/forge/gui/framework/InvalidLayoutFileException.java -text
forge-gui-desktop/src/main/java/forge/gui/framework/RectangleOfDouble.java -text
forge-gui-desktop/src/main/java/forge/gui/framework/SDisplayUtil.java -text
forge-gui-desktop/src/main/java/forge/gui/framework/SLayoutConstants.java -text
forge-gui-desktop/src/main/java/forge/gui/framework/SLayoutIO.java -text
forge-gui-desktop/src/main/java/forge/gui/framework/SOverflowUtil.java -text
forge-gui-desktop/src/main/java/forge/gui/framework/SRearrangingUtil.java -text
forge-gui-desktop/src/main/java/forge/gui/framework/SResizingUtil.java -text
forge-gui-desktop/src/main/java/forge/gui/framework/VEmptyDoc.java -text
forge-gui-desktop/src/main/java/forge/gui/framework/package-info.java -text
forge-gui-desktop/src/main/java/forge/gui/package-info.java -text
forge-gui-desktop/src/main/java/forge/itemmanager/CardManager.java -text
forge-gui-desktop/src/main/java/forge/itemmanager/DeckManager.java -text
forge-gui-desktop/src/main/java/forge/itemmanager/ItemManager.java -text
forge-gui-desktop/src/main/java/forge/itemmanager/ItemManagerContainer.java -text
forge-gui-desktop/src/main/java/forge/itemmanager/SpellShopManager.java -text
forge-gui-desktop/src/main/java/forge/itemmanager/filters/CardCMCFilter.java -text
forge-gui-desktop/src/main/java/forge/itemmanager/filters/CardCMCRangeFilter.java -text
forge-gui-desktop/src/main/java/forge/itemmanager/filters/CardColorFilter.java -text
forge-gui-desktop/src/main/java/forge/itemmanager/filters/CardFormatFilter.java -text
forge-gui-desktop/src/main/java/forge/itemmanager/filters/CardPowerFilter.java -text
forge-gui-desktop/src/main/java/forge/itemmanager/filters/CardQuestWorldFilter.java -text
forge-gui-desktop/src/main/java/forge/itemmanager/filters/CardSearchFilter.java -text
forge-gui-desktop/src/main/java/forge/itemmanager/filters/CardSetFilter.java -text
forge-gui-desktop/src/main/java/forge/itemmanager/filters/CardToughnessFilter.java -text
forge-gui-desktop/src/main/java/forge/itemmanager/filters/CardTypeFilter.java -text
forge-gui-desktop/src/main/java/forge/itemmanager/filters/DeckColorFilter.java -text
forge-gui-desktop/src/main/java/forge/itemmanager/filters/DeckFolderFilter.java -text
forge-gui-desktop/src/main/java/forge/itemmanager/filters/DeckFormatFilter.java -text
forge-gui-desktop/src/main/java/forge/itemmanager/filters/DeckQuestWorldFilter.java -text
forge-gui-desktop/src/main/java/forge/itemmanager/filters/DeckSearchFilter.java -text
forge-gui-desktop/src/main/java/forge/itemmanager/filters/DeckSetFilter.java -text
forge-gui-desktop/src/main/java/forge/itemmanager/filters/DeckStatTypeFilter.java -text
forge-gui-desktop/src/main/java/forge/itemmanager/filters/FormatFilter.java -text
forge-gui-desktop/src/main/java/forge/itemmanager/filters/ItemFilter.java -text
forge-gui-desktop/src/main/java/forge/itemmanager/filters/ListLabelFilter.java -text
forge-gui-desktop/src/main/java/forge/itemmanager/filters/StatTypeFilter.java -text
forge-gui-desktop/src/main/java/forge/itemmanager/filters/TextSearchFilter.java -text
forge-gui-desktop/src/main/java/forge/itemmanager/filters/ToggleButtonsFilter.java -text
forge-gui-desktop/src/main/java/forge/itemmanager/filters/ValueRangeFilter.java -text
forge-gui-desktop/src/main/java/forge/itemmanager/package-info.java -text
forge-gui-desktop/src/main/java/forge/itemmanager/views/ColorSetRenderer.java -text
forge-gui-desktop/src/main/java/forge/itemmanager/views/DeckQuantityRenderer.java -text
forge-gui-desktop/src/main/java/forge/itemmanager/views/DeckStarRenderer.java -text
forge-gui-desktop/src/main/java/forge/itemmanager/views/ImageView.java -text
forge-gui-desktop/src/main/java/forge/itemmanager/views/IntegerRenderer.java -text
forge-gui-desktop/src/main/java/forge/itemmanager/views/ItemCellRenderer.java -text
forge-gui-desktop/src/main/java/forge/itemmanager/views/ItemListView.java -text
forge-gui-desktop/src/main/java/forge/itemmanager/views/ItemTableColumn.java -text
forge-gui-desktop/src/main/java/forge/itemmanager/views/ItemView.java -text
forge-gui-desktop/src/main/java/forge/itemmanager/views/ManaCostRenderer.java -text
forge-gui-desktop/src/main/java/forge/itemmanager/views/SColumnUtil.java -text
forge-gui-desktop/src/main/java/forge/itemmanager/views/SetCodeRenderer.java -text
forge-gui-desktop/src/main/java/forge/itemmanager/views/StarRenderer.java -text
forge-gui-desktop/src/main/java/forge/menus/ForgeMenu.java -text
forge-gui-desktop/src/main/java/forge/menus/HelpMenu.java -text
forge-gui-desktop/src/main/java/forge/menus/IMenuProvider.java -text
forge-gui-desktop/src/main/java/forge/menus/LayoutMenu.java -text
forge-gui-desktop/src/main/java/forge/menus/MenuUtil.java -text
forge-gui-desktop/src/main/java/forge/package-info.java -text
forge-gui-desktop/src/main/java/forge/screens/bazaar/CBazaarUI.java -text
forge-gui-desktop/src/main/java/forge/screens/bazaar/VBazaarUI.java -text
forge-gui-desktop/src/main/java/forge/screens/deckeditor/CDeckEditorUI.java -text
forge-gui-desktop/src/main/java/forge/screens/deckeditor/DeckImport.java -text
forge-gui-desktop/src/main/java/forge/screens/deckeditor/SEditorIO.java -text
forge-gui-desktop/src/main/java/forge/screens/deckeditor/VDeckEditorUI.java -text
forge-gui-desktop/src/main/java/forge/screens/deckeditor/controllers/ACEditorBase.java -text
forge-gui-desktop/src/main/java/forge/screens/deckeditor/controllers/CAllDecks.java -text
forge-gui-desktop/src/main/java/forge/screens/deckeditor/controllers/CCardCatalog.java -text
forge-gui-desktop/src/main/java/forge/screens/deckeditor/controllers/CCurrentDeck.java -text
forge-gui-desktop/src/main/java/forge/screens/deckeditor/controllers/CDeckgen.java -text
forge-gui-desktop/src/main/java/forge/screens/deckeditor/controllers/CEditorCommander.java -text
forge-gui-desktop/src/main/java/forge/screens/deckeditor/controllers/CEditorConstructed.java -text
forge-gui-desktop/src/main/java/forge/screens/deckeditor/controllers/CEditorDraftingProcess.java -text
forge-gui-desktop/src/main/java/forge/screens/deckeditor/controllers/CEditorLimited.java -text
forge-gui-desktop/src/main/java/forge/screens/deckeditor/controllers/CEditorQuest.java -text
forge-gui-desktop/src/main/java/forge/screens/deckeditor/controllers/CEditorQuestCardShop.java -text
forge-gui-desktop/src/main/java/forge/screens/deckeditor/controllers/CEditorVariant.java -text
forge-gui-desktop/src/main/java/forge/screens/deckeditor/controllers/CProbabilities.java -text
forge-gui-desktop/src/main/java/forge/screens/deckeditor/controllers/CStatistics.java -text
forge-gui-desktop/src/main/java/forge/screens/deckeditor/controllers/DeckController.java -text
forge-gui-desktop/src/main/java/forge/screens/deckeditor/menus/CDeckEditorUIMenus.java -text
forge-gui-desktop/src/main/java/forge/screens/deckeditor/menus/DeckFileMenu.java -text
forge-gui-desktop/src/main/java/forge/screens/deckeditor/package-info.java -text
forge-gui-desktop/src/main/java/forge/screens/deckeditor/views/VAllDecks.java -text
forge-gui-desktop/src/main/java/forge/screens/deckeditor/views/VCardCatalog.java -text
forge-gui-desktop/src/main/java/forge/screens/deckeditor/views/VCurrentDeck.java -text
forge-gui-desktop/src/main/java/forge/screens/deckeditor/views/VDeckgen.java -text
forge-gui-desktop/src/main/java/forge/screens/deckeditor/views/VProbabilities.java -text
forge-gui-desktop/src/main/java/forge/screens/deckeditor/views/VStatistics.java -text
forge-gui-desktop/src/main/java/forge/screens/home/CHomeUI.java -text
forge-gui-desktop/src/main/java/forge/screens/home/EMenuGroup.java -text
forge-gui-desktop/src/main/java/forge/screens/home/EMenuItem.java -text
forge-gui-desktop/src/main/java/forge/screens/home/IVSubmenu.java -text
forge-gui-desktop/src/main/java/forge/screens/home/LblGroup.java -text
forge-gui-desktop/src/main/java/forge/screens/home/LblHeader.java -text
forge-gui-desktop/src/main/java/forge/screens/home/LblMenuItem.java -text
forge-gui-desktop/src/main/java/forge/screens/home/PnlGroup.java -text
forge-gui-desktop/src/main/java/forge/screens/home/StartButton.java -text
forge-gui-desktop/src/main/java/forge/screens/home/VHomeUI.java -text
forge-gui-desktop/src/main/java/forge/screens/home/gauntlet/CSubmenuGauntletBuild.java -text
forge-gui-desktop/src/main/java/forge/screens/home/gauntlet/CSubmenuGauntletContests.java -text
forge-gui-desktop/src/main/java/forge/screens/home/gauntlet/CSubmenuGauntletLoad.java -text
forge-gui-desktop/src/main/java/forge/screens/home/gauntlet/CSubmenuGauntletQuick.java -text
forge-gui-desktop/src/main/java/forge/screens/home/gauntlet/ContestGauntletLister.java -text
forge-gui-desktop/src/main/java/forge/screens/home/gauntlet/QuickGauntletLister.java -text
forge-gui-desktop/src/main/java/forge/screens/home/gauntlet/VSubmenuGauntletBuild.java -text
forge-gui-desktop/src/main/java/forge/screens/home/gauntlet/VSubmenuGauntletContests.java -text
forge-gui-desktop/src/main/java/forge/screens/home/gauntlet/VSubmenuGauntletLoad.java -text
forge-gui-desktop/src/main/java/forge/screens/home/gauntlet/VSubmenuGauntletQuick.java -text
forge-gui-desktop/src/main/java/forge/screens/home/package-info.java -text
forge-gui-desktop/src/main/java/forge/screens/home/quest/CSubmenuChallenges.java -text
forge-gui-desktop/src/main/java/forge/screens/home/quest/CSubmenuDuels.java -text
forge-gui-desktop/src/main/java/forge/screens/home/quest/CSubmenuQuestData.java -text
forge-gui-desktop/src/main/java/forge/screens/home/quest/CSubmenuQuestDecks.java -text
forge-gui-desktop/src/main/java/forge/screens/home/quest/CSubmenuQuestPrefs.java -text
forge-gui-desktop/src/main/java/forge/screens/home/quest/DialogChooseSets.java -text
forge-gui-desktop/src/main/java/forge/screens/home/quest/IVQuestStats.java -text
forge-gui-desktop/src/main/java/forge/screens/home/quest/PnlEvent.java -text
forge-gui-desktop/src/main/java/forge/screens/home/quest/QuestFileLister.java -text
forge-gui-desktop/src/main/java/forge/screens/home/quest/QuestPreferencesHandler.java -text
forge-gui-desktop/src/main/java/forge/screens/home/quest/SSubmenuQuestUtil.java -text
forge-gui-desktop/src/main/java/forge/screens/home/quest/VSubmenuChallenges.java -text
forge-gui-desktop/src/main/java/forge/screens/home/quest/VSubmenuDuels.java -text
forge-gui-desktop/src/main/java/forge/screens/home/quest/VSubmenuQuestData.java -text
forge-gui-desktop/src/main/java/forge/screens/home/quest/VSubmenuQuestDecks.java -text
forge-gui-desktop/src/main/java/forge/screens/home/quest/VSubmenuQuestPrefs.java -text
forge-gui-desktop/src/main/java/forge/screens/home/quest/ViewItem.java -text
forge-gui-desktop/src/main/java/forge/screens/home/quest/ViewStall.java -text
forge-gui-desktop/src/main/java/forge/screens/home/quest/package-info.java -text
forge-gui-desktop/src/main/java/forge/screens/home/sanctioned/AvatarSelector.java -text
forge-gui-desktop/src/main/java/forge/screens/home/sanctioned/CSubmenuConstructed.java -text
forge-gui-desktop/src/main/java/forge/screens/home/sanctioned/CSubmenuDraft.java -text
forge-gui-desktop/src/main/java/forge/screens/home/sanctioned/CSubmenuSealed.java -text
forge-gui-desktop/src/main/java/forge/screens/home/sanctioned/ConstructedGameMenu.java -text
forge-gui-desktop/src/main/java/forge/screens/home/sanctioned/VSubmenuConstructed.java -text
forge-gui-desktop/src/main/java/forge/screens/home/sanctioned/VSubmenuDraft.java -text
forge-gui-desktop/src/main/java/forge/screens/home/sanctioned/VSubmenuSealed.java -text
forge-gui-desktop/src/main/java/forge/screens/home/sanctioned/package-info.java -text
forge-gui-desktop/src/main/java/forge/screens/home/settings/CSubmenuAvatars.java -text
forge-gui-desktop/src/main/java/forge/screens/home/settings/CSubmenuDownloaders.java -text
forge-gui-desktop/src/main/java/forge/screens/home/settings/CSubmenuPreferences.java -text
forge-gui-desktop/src/main/java/forge/screens/home/settings/CSubmenuReleaseNotes.java -text
forge-gui-desktop/src/main/java/forge/screens/home/settings/VSubmenuAvatars.java -text
forge-gui-desktop/src/main/java/forge/screens/home/settings/VSubmenuDownloaders.java -text
forge-gui-desktop/src/main/java/forge/screens/home/settings/VSubmenuPreferences.java -text
forge-gui-desktop/src/main/java/forge/screens/home/settings/VSubmenuReleaseNotes.java -text
forge-gui-desktop/src/main/java/forge/screens/home/settings/package-info.java -text
forge-gui-desktop/src/main/java/forge/screens/match/CMatchUI.java -text
forge-gui-desktop/src/main/java/forge/screens/match/ControlWinLose.java -text
forge-gui-desktop/src/main/java/forge/screens/match/GameLogPanel.java -text
forge-gui-desktop/src/main/java/forge/screens/match/GauntletWinLose.java -text
forge-gui-desktop/src/main/java/forge/screens/match/LimitedWinLose.java -text
forge-gui-desktop/src/main/java/forge/screens/match/QuestWinLose.java -text
forge-gui-desktop/src/main/java/forge/screens/match/QuestWinLoseCardViewer.java -text
forge-gui-desktop/src/main/java/forge/screens/match/TargetingOverlay.java -text
forge-gui-desktop/src/main/java/forge/screens/match/VAssignDamage.java -text
forge-gui-desktop/src/main/java/forge/screens/match/VMatchUI.java -text
forge-gui-desktop/src/main/java/forge/screens/match/ViewWinLose.java -text
forge-gui-desktop/src/main/java/forge/screens/match/ZoneAction.java -text
forge-gui-desktop/src/main/java/forge/screens/match/controllers/CAntes.java -text
forge-gui-desktop/src/main/java/forge/screens/match/controllers/CCombat.java -text
forge-gui-desktop/src/main/java/forge/screens/match/controllers/CCommand.java -text
forge-gui-desktop/src/main/java/forge/screens/match/controllers/CDetail.java -text
forge-gui-desktop/src/main/java/forge/screens/match/controllers/CDev.java -text
forge-gui-desktop/src/main/java/forge/screens/match/controllers/CDock.java -text
forge-gui-desktop/src/main/java/forge/screens/match/controllers/CField.java -text
forge-gui-desktop/src/main/java/forge/screens/match/controllers/CHand.java -text
forge-gui-desktop/src/main/java/forge/screens/match/controllers/CLog.java -text
forge-gui-desktop/src/main/java/forge/screens/match/controllers/CPicture.java -text
forge-gui-desktop/src/main/java/forge/screens/match/controllers/CPlayers.java -text
forge-gui-desktop/src/main/java/forge/screens/match/controllers/CPrompt.java -text
forge-gui-desktop/src/main/java/forge/screens/match/controllers/CStack.java -text
forge-gui-desktop/src/main/java/forge/screens/match/controllers/package-info.java -text
forge-gui-desktop/src/main/java/forge/screens/match/menus/CMatchUIMenus.java -text
forge-gui-desktop/src/main/java/forge/screens/match/menus/CardOverlaysMenu.java -text
forge-gui-desktop/src/main/java/forge/screens/match/menus/DevModeMenu.java -text
forge-gui-desktop/src/main/java/forge/screens/match/menus/GameMenu.java -text
forge-gui-desktop/src/main/java/forge/screens/match/package-info.java -text
forge-gui-desktop/src/main/java/forge/screens/match/views/VAntes.java -text
forge-gui-desktop/src/main/java/forge/screens/match/views/VCombat.java -text
forge-gui-desktop/src/main/java/forge/screens/match/views/VCommand.java -text
forge-gui-desktop/src/main/java/forge/screens/match/views/VDetail.java -text
forge-gui-desktop/src/main/java/forge/screens/match/views/VDev.java -text
forge-gui-desktop/src/main/java/forge/screens/match/views/VDock.java -text
forge-gui-desktop/src/main/java/forge/screens/match/views/VField.java -text
forge-gui-desktop/src/main/java/forge/screens/match/views/VHand.java -text
forge-gui-desktop/src/main/java/forge/screens/match/views/VLog.java -text
forge-gui-desktop/src/main/java/forge/screens/match/views/VPicture.java -text
forge-gui-desktop/src/main/java/forge/screens/match/views/VPlayers.java -text
forge-gui-desktop/src/main/java/forge/screens/match/views/VPrompt.java -text
forge-gui-desktop/src/main/java/forge/screens/match/views/VStack.java -text
forge-gui-desktop/src/main/java/forge/screens/match/views/package-info.java -text
forge-gui-desktop/src/main/java/forge/screens/workshop/CWorkshopUI.java -text
forge-gui-desktop/src/main/java/forge/screens/workshop/VWorkshopUI.java -text
forge-gui-desktop/src/main/java/forge/screens/workshop/controllers/CCardDesigner.java -text
forge-gui-desktop/src/main/java/forge/screens/workshop/controllers/CCardScript.java -text
forge-gui-desktop/src/main/java/forge/screens/workshop/controllers/CWorkshopCatalog.java -text
forge-gui-desktop/src/main/java/forge/screens/workshop/menus/CWorkshopUIMenus.java -text
forge-gui-desktop/src/main/java/forge/screens/workshop/menus/WorkshopFileMenu.java -text
forge-gui-desktop/src/main/java/forge/screens/workshop/views/VCardDesigner.java -text
forge-gui-desktop/src/main/java/forge/screens/workshop/views/VCardScript.java -text
forge-gui-desktop/src/main/java/forge/screens/workshop/views/VWorkshopCatalog.java -text
forge-gui-desktop/src/main/java/forge/toolbox/CardFaceSymbols.java -text
forge-gui-desktop/src/main/java/forge/toolbox/ContextMenuBuilder.java -text
forge-gui-desktop/src/main/java/forge/toolbox/FAbsolutePositioner.java -text
forge-gui-desktop/src/main/java/forge/toolbox/FButton.java -text
forge-gui-desktop/src/main/java/forge/toolbox/FCheckBox.java -text
forge-gui-desktop/src/main/java/forge/toolbox/FCheckBoxList.java -text
forge-gui-desktop/src/main/java/forge/toolbox/FComboBox.java -text
forge-gui-desktop/src/main/java/forge/toolbox/FComboBoxPanel.java -text
forge-gui-desktop/src/main/java/forge/toolbox/FComboBoxWrapper.java -text
forge-gui-desktop/src/main/java/forge/toolbox/FDigitalClock.java -text
forge-gui-desktop/src/main/java/forge/toolbox/FHtmlViewer.java -text
forge-gui-desktop/src/main/java/forge/toolbox/FHyperlink.java -text
forge-gui-desktop/src/main/java/forge/toolbox/FLabel.java -text
forge-gui-desktop/src/main/java/forge/toolbox/FList.java -text
forge-gui-desktop/src/main/java/forge/toolbox/FMouseAdapter.java -text
forge-gui-desktop/src/main/java/forge/toolbox/FOptionPane.java -text
forge-gui-desktop/src/main/java/forge/toolbox/FOverlay.java -text
forge-gui-desktop/src/main/java/forge/toolbox/FPanel.java -text
forge-gui-desktop/src/main/java/forge/toolbox/FProgressBar.java -text
forge-gui-desktop/src/main/java/forge/toolbox/FRadioButton.java -text
forge-gui-desktop/src/main/java/forge/toolbox/FScrollPane.java -text
forge-gui-desktop/src/main/java/forge/toolbox/FScrollPanel.java -text
forge-gui-desktop/src/main/java/forge/toolbox/FSkin.java -text
forge-gui-desktop/src/main/java/forge/toolbox/FSpinner.java -text
forge-gui-desktop/src/main/java/forge/toolbox/FTabbedPane.java -text
forge-gui-desktop/src/main/java/forge/toolbox/FTextArea.java -text
forge-gui-desktop/src/main/java/forge/toolbox/FTextEditor.java -text
forge-gui-desktop/src/main/java/forge/toolbox/FTextField.java -text
forge-gui-desktop/src/main/java/forge/toolbox/FUndoManager.java -text
forge-gui-desktop/src/main/java/forge/toolbox/IDisposable.java -text
forge-gui-desktop/src/main/java/forge/toolbox/JXButtonPanel.java -text
forge-gui-desktop/src/main/java/forge/toolbox/LayoutHelper.java -text
forge-gui-desktop/src/main/java/forge/toolbox/SaveOpenDialog.java -text
forge-gui-desktop/src/main/java/forge/toolbox/SmartScroller.java -text
forge-gui-desktop/src/main/java/forge/toolbox/ToolTipListener.java -text
forge-gui-desktop/src/main/java/forge/toolbox/imaging/FImagePanel.java -text
forge-gui-desktop/src/main/java/forge/toolbox/imaging/FImageUtil.java -text
forge-gui-desktop/src/main/java/forge/toolbox/package-info.java -text
forge-gui-desktop/src/main/java/forge/toolbox/special/CardViewer.java -text
forge-gui-desktop/src/main/java/forge/toolbox/special/CardZoomer.java -text
forge-gui-desktop/src/main/java/forge/toolbox/special/PhaseIndicator.java -text
forge-gui-desktop/src/main/java/forge/toolbox/special/PhaseLabel.java -text
forge-gui-desktop/src/main/java/forge/toolbox/special/PlayerDetailsPanel.java -text
forge-gui-desktop/src/main/java/forge/toolbox/special/package-info.java -text
forge-gui-desktop/src/main/java/forge/view/ButtonUtil.java -text
forge-gui-desktop/src/main/java/forge/view/FDialog.java -text
forge-gui-desktop/src/main/java/forge/view/FFrame.java -text
forge-gui-desktop/src/main/java/forge/view/FNavigationBar.java -text
forge-gui-desktop/src/main/java/forge/view/FTitleBar.java -text
forge-gui-desktop/src/main/java/forge/view/FTitleBarBase.java -text
forge-gui-desktop/src/main/java/forge/view/FView.java -text
forge-gui-desktop/src/main/java/forge/view/ITitleBarOwner.java -text
forge-gui-desktop/src/main/java/forge/view/Main.java -text
forge-gui-desktop/src/main/java/forge/view/SplashFrame.java -text
forge-gui-desktop/src/main/java/forge/view/arcane/CardArea.java -text
forge-gui-desktop/src/main/java/forge/view/arcane/CardPanel.java -text
forge-gui-desktop/src/main/java/forge/view/arcane/CardPanelContainer.java -text
forge-gui-desktop/src/main/java/forge/view/arcane/HandArea.java -text
forge-gui-desktop/src/main/java/forge/view/arcane/PlayArea.java -text
forge-gui-desktop/src/main/java/forge/view/arcane/ScaledImagePanel.java -text
forge-gui-desktop/src/main/java/forge/view/arcane/ViewPanel.java -text
forge-gui-desktop/src/main/java/forge/view/arcane/package-info.java -text
forge-gui-desktop/src/main/java/forge/view/arcane/util/Animation.java -text
forge-gui-desktop/src/main/java/forge/view/arcane/util/CardPanelMouseAdapter.java -text
forge-gui-desktop/src/main/java/forge/view/arcane/util/CardPanelMouseListener.java -text
forge-gui-desktop/src/main/java/forge/view/arcane/util/OutlinedLabel.java -text
forge-gui-desktop/src/main/java/forge/view/arcane/util/package-info.java -text
forge-gui-desktop/src/main/java/forge/view/package-info.java -text
forge-gui-desktop/src/site/apt/index.apt -text
forge-gui-desktop/src/test/java/forge/BoosterDraft1Test.java -text
forge-gui-desktop/src/test/java/forge/BoosterDraftTest.java -text
forge-gui-desktop/src/test/java/forge/GuiDownloadPicturesLQTest.java -text
forge-gui-desktop/src/test/java/forge/GuiDownloadSetPicturesLQTest.java -text
forge-gui-desktop/src/test/java/forge/GuiProgressBarWindowTest.java -text
forge-gui-desktop/src/test/java/forge/PanelTest.java -text
forge-gui-desktop/src/test/java/forge/RunTest.java -text
forge-gui-desktop/src/test/java/forge/TinyTest.java -text
forge-gui-desktop/src/test/java/forge/deck/generate/Generate2ColorDeckTest.java -text
forge-gui-desktop/src/test/java/forge/deck/generate/Generate3ColorDeckTest.java -text
forge-gui-desktop/src/test/java/forge/deck/generate/Generate5ColorDeckTest.java -text
forge-gui-desktop/src/test/java/forge/gamesimulationtests/BaseGameSimulationTest.java -text
forge-gui-desktop/src/test/java/forge/gamesimulationtests/comprehensiverules/ComprehensiveRulesSection103.java -text
forge-gui-desktop/src/test/java/forge/gamesimulationtests/comprehensiverules/ComprehensiveRulesSection104.java -text
forge-gui-desktop/src/test/java/forge/gamesimulationtests/util/CardDatabaseHelper.java -text
forge-gui-desktop/src/test/java/forge/gamesimulationtests/util/GameWrapper.java -text
forge-gui-desktop/src/test/java/forge/gamesimulationtests/util/IntegerConstraint.java -text
forge-gui-desktop/src/test/java/forge/gamesimulationtests/util/LobbyPlayerForTests.java -text
forge-gui-desktop/src/test/java/forge/gamesimulationtests/util/PlayerControllerForTests.java -text
forge-gui-desktop/src/test/java/forge/gamesimulationtests/util/Specification.java -text
forge-gui-desktop/src/test/java/forge/gamesimulationtests/util/SpecificationHandler.java -text
forge-gui-desktop/src/test/java/forge/gamesimulationtests/util/card/CardSpecification.java -text
forge-gui-desktop/src/test/java/forge/gamesimulationtests/util/card/CardSpecificationBuilder.java -text
forge-gui-desktop/src/test/java/forge/gamesimulationtests/util/card/CardSpecificationHandler.java -text
forge-gui-desktop/src/test/java/forge/gamesimulationtests/util/gamestate/GameStateSpecification.java -text
forge-gui-desktop/src/test/java/forge/gamesimulationtests/util/gamestate/GameStateSpecificationBuilder.java -text
forge-gui-desktop/src/test/java/forge/gamesimulationtests/util/player/PlayerSpecification.java -text
forge-gui-desktop/src/test/java/forge/gamesimulationtests/util/player/PlayerSpecificationBuilder.java -text
forge-gui-desktop/src/test/java/forge/gamesimulationtests/util/player/PlayerSpecificationHandler.java -text
forge-gui-desktop/src/test/java/forge/gamesimulationtests/util/playeractions/ActionPreCondition.java -text
forge-gui-desktop/src/test/java/forge/gamesimulationtests/util/playeractions/ActivateAbilityAction.java -text
forge-gui-desktop/src/test/java/forge/gamesimulationtests/util/playeractions/BasePlayerAction.java -text
forge-gui-desktop/src/test/java/forge/gamesimulationtests/util/playeractions/CastSpellFromHandAction.java -text
forge-gui-desktop/src/test/java/forge/gamesimulationtests/util/playeractions/DeclareAttackersAction.java -text
forge-gui-desktop/src/test/java/forge/gamesimulationtests/util/playeractions/DeclareBlockersAction.java -text
forge-gui-desktop/src/test/java/forge/gamesimulationtests/util/playeractions/PlayerActions.java -text
forge-gui-desktop/src/test/java/forge/gamesimulationtests/util/playeractions/testactions/AssertAction.java -text
forge-gui-desktop/src/test/java/forge/gamesimulationtests/util/playeractions/testactions/CardAssertAction.java -text
forge-gui-desktop/src/test/java/forge/gamesimulationtests/util/playeractions/testactions/EndTestAction.java -text
forge-gui-desktop/src/test/java/forge/gamesimulationtests/util/playeractions/testactions/PlayerAssertAction.java -text
forge-gui-desktop/src/test/java/forge/gamesimulationtests/util/playeractions/testactions/TestAction.java -text
forge-gui-desktop/src/test/java/forge/gui/ListChooserTest.java -text
forge-gui-desktop/src/test/java/forge/gui/game/CardDetailPanelTest.java -text
forge-gui-desktop/src/test/java/forge/item/DeckHintsTest.java -text
forge-gui-desktop/src/test/java/forge/model/FModelTest.java -text
forge-gui/.classpath -text
forge-gui/.project -text
forge-gui/.settings/org.eclipse.core.resources.prefs -text
@@ -15549,350 +15939,51 @@ forge-gui/src/main/html/js/jquery/jquery-1.9.1.min.js -text
forge-gui/src/main/html/js/observable.js -text
forge-gui/src/main/html/js/socket.js -text
forge-gui/src/main/java/forge/FThreads.java -text
forge-gui/src/main/java/forge/ImageCache.java svneol=native#text/plain
forge-gui/src/main/java/forge/ImageLoader.java -text
forge-gui/src/main/java/forge/Singletons.java svneol=native#text/plain
forge-gui/src/main/java/forge/GuiBase.java -text
forge-gui/src/main/java/forge/SGuiChoose.java -text
forge-gui/src/main/java/forge/SGuiDialog.java -text
forge-gui/src/main/java/forge/SOptionPane.java -text
forge-gui/src/main/java/forge/UiCommand.java svneol=native#text/plain
forge-gui/src/main/java/forge/assets/FSkinProp.java -text
forge-gui/src/main/java/forge/assets/ISkinImage.java -text
forge-gui/src/main/java/forge/assets/ImageUtil.java -text
forge-gui/src/main/java/forge/card/CardPreferences.java -text
forge-gui/src/main/java/forge/card/CardReaderExperiments.java -text
forge-gui/src/main/java/forge/card/CardScriptInfo.java -text
forge-gui/src/main/java/forge/control/ChatArea.java -text
forge-gui/src/main/java/forge/control/FControl.java -text
forge-gui/src/main/java/forge/control/FControlGameEventHandler.java -text
forge-gui/src/main/java/forge/control/FControlGamePlayback.java -text
forge-gui/src/main/java/forge/control/InputQueue.java svneol=native#text/plain
forge-gui/src/main/java/forge/control/KeyboardShortcuts.java -text
forge-gui/src/main/java/forge/control/RestartUtil.java -text
forge-gui/src/main/java/forge/control/package-info.java -text
forge-gui/src/main/java/forge/deck/DeckGeneratorTheme.java -text
forge-gui/src/main/java/forge/deck/DeckProxy.java -text
forge-gui/src/main/java/forge/deck/DeckType.java -text
forge-gui/src/main/java/forge/deck/DeckgenUtil.java -text
forge-gui/src/main/java/forge/deck/io/DeckHtmlSerializer.java -text
forge-gui/src/main/java/forge/deck/io/DeckPreferences.java -text
forge-gui/src/main/java/forge/deck/io/OldDeckParser.java -text
forge-gui/src/main/java/forge/deck/io/package-info.java svneol=native#text/plain
forge-gui/src/main/java/forge/error/ExceptionHandler.java svneol=native#text/plain
forge-gui/src/main/java/forge/error/package-info.java svneol=native#text/plain
forge-gui/src/main/java/forge/events/IUiEventVisitor.java -text
forge-gui/src/main/java/forge/events/UiEvent.java -text
forge-gui/src/main/java/forge/events/UiEventAttackerDeclared.java -text
forge-gui/src/main/java/forge/events/UiEventBlockerAssigned.java -text
forge-gui/src/main/java/forge/gauntlet/GauntletData.java -text
forge-gui/src/main/java/forge/gauntlet/GauntletIO.java -text
forge-gui/src/main/java/forge/gui/CardContainer.java svneol=native#text/plain
forge-gui/src/main/java/forge/gui/CardDetailPanel.java svneol=native#text/plain
forge-gui/src/main/java/forge/gui/CardListViewer.java -text
forge-gui/src/main/java/forge/gui/CardPicturePanel.java svneol=native#text/plain
forge-gui/src/main/java/forge/gui/CardPreferences.java -text
forge-gui/src/main/java/forge/gui/DualListBox.java -text
forge-gui/src/main/java/forge/gui/FNetOverlay.java -text
forge-gui/src/main/java/forge/gui/ForgeAction.java svneol=native#text/plain
forge-gui/src/main/java/forge/gui/GuiChoose.java -text
forge-gui/src/main/java/forge/gui/GuiDialog.java -text
forge-gui/src/main/java/forge/gui/GuiDisplayUtil.java svneol=native#text/plain
forge-gui/src/main/java/forge/gui/GuiProgressBarWindow.java svneol=native#text/plain
forge-gui/src/main/java/forge/gui/GuiUtils.java svneol=native#text/plain
forge-gui/src/main/java/forge/gui/InputProxy.java svneol=native#text/plain
forge-gui/src/main/java/forge/gui/ListChooser.java svneol=native#text/plain
forge-gui/src/main/java/forge/gui/MouseUtil.java -text
forge-gui/src/main/java/forge/gui/MultiLineLabel.java svneol=native#text/plain
forge-gui/src/main/java/forge/gui/MultiLineLabelUI.java svneol=native#text/plain
forge-gui/src/main/java/forge/gui/SOverlayUtils.java -text
forge-gui/src/main/java/forge/gui/UnsortedListModel.java -text
forge-gui/src/main/java/forge/gui/WrapLayout.java -text
forge-gui/src/main/java/forge/gui/bazaar/CBazaarUI.java -text
forge-gui/src/main/java/forge/gui/bazaar/VBazaarUI.java -text
forge-gui/src/main/java/forge/gui/deckchooser/DeckgenUtil.java -text
forge-gui/src/main/java/forge/gui/deckchooser/DecksComboBox.java -text
forge-gui/src/main/java/forge/gui/deckchooser/DecksComboBoxEvent.java -text
forge-gui/src/main/java/forge/gui/deckchooser/FDeckChooser.java -text
forge-gui/src/main/java/forge/gui/deckchooser/FDeckViewer.java -text
forge-gui/src/main/java/forge/gui/deckchooser/IDecksComboBoxListener.java -text
forge-gui/src/main/java/forge/gui/deckeditor/CDeckEditorUI.java -text
forge-gui/src/main/java/forge/gui/deckeditor/DeckImport.java -text
forge-gui/src/main/java/forge/gui/deckeditor/DeckProxy.java -text
forge-gui/src/main/java/forge/gui/deckeditor/SEditorIO.java -text
forge-gui/src/main/java/forge/gui/deckeditor/VDeckEditorUI.java -text
forge-gui/src/main/java/forge/gui/deckeditor/controllers/ACEditorBase.java -text
forge-gui/src/main/java/forge/gui/deckeditor/controllers/CAllDecks.java -text
forge-gui/src/main/java/forge/gui/deckeditor/controllers/CCardCatalog.java -text
forge-gui/src/main/java/forge/gui/deckeditor/controllers/CCurrentDeck.java -text
forge-gui/src/main/java/forge/gui/deckeditor/controllers/CDeckgen.java -text
forge-gui/src/main/java/forge/gui/deckeditor/controllers/CEditorCommander.java -text
forge-gui/src/main/java/forge/gui/deckeditor/controllers/CEditorConstructed.java svneol=native#text/plain
forge-gui/src/main/java/forge/gui/deckeditor/controllers/CEditorDraftingProcess.java svneol=native#text/plain
forge-gui/src/main/java/forge/gui/deckeditor/controllers/CEditorLimited.java -text
forge-gui/src/main/java/forge/gui/deckeditor/controllers/CEditorQuest.java svneol=native#text/plain
forge-gui/src/main/java/forge/gui/deckeditor/controllers/CEditorQuestCardShop.java -text
forge-gui/src/main/java/forge/gui/deckeditor/controllers/CEditorVariant.java -text
forge-gui/src/main/java/forge/gui/deckeditor/controllers/CProbabilities.java -text
forge-gui/src/main/java/forge/gui/deckeditor/controllers/CStatistics.java -text
forge-gui/src/main/java/forge/gui/deckeditor/controllers/DeckController.java -text
forge-gui/src/main/java/forge/gui/deckeditor/menus/CDeckEditorUIMenus.java -text
forge-gui/src/main/java/forge/gui/deckeditor/menus/DeckFileMenu.java -text
forge-gui/src/main/java/forge/gui/deckeditor/package-info.java -text
forge-gui/src/main/java/forge/gui/deckeditor/views/VAllDecks.java -text
forge-gui/src/main/java/forge/gui/deckeditor/views/VCardCatalog.java -text
forge-gui/src/main/java/forge/gui/deckeditor/views/VCurrentDeck.java -text
forge-gui/src/main/java/forge/gui/deckeditor/views/VDeckgen.java -text
forge-gui/src/main/java/forge/gui/deckeditor/views/VProbabilities.java -text
forge-gui/src/main/java/forge/gui/deckeditor/views/VStatistics.java -text
forge-gui/src/main/java/forge/gui/download/GuiDownloadPicturesLQ.java svneol=native#text/plain
forge-gui/src/main/java/forge/gui/download/GuiDownloadPrices.java svneol=native#text/plain
forge-gui/src/main/java/forge/gui/download/GuiDownloadQuestImages.java -text
forge-gui/src/main/java/forge/gui/download/GuiDownloadSetPicturesLQ.java svneol=native#text/plain
forge-gui/src/main/java/forge/gui/download/GuiDownloader.java -text
forge-gui/src/main/java/forge/gui/download/package-info.java -text
forge-gui/src/main/java/forge/gui/events/IUiEventVisitor.java -text
forge-gui/src/main/java/forge/gui/events/UiEvent.java -text
forge-gui/src/main/java/forge/gui/events/UiEventAttackerDeclared.java -text
forge-gui/src/main/java/forge/gui/events/UiEventBlockerAssigned.java -text
forge-gui/src/main/java/forge/gui/framework/CEmptyDoc.java -text
forge-gui/src/main/java/forge/gui/framework/DragCell.java -text
forge-gui/src/main/java/forge/gui/framework/DragTab.java -text
forge-gui/src/main/java/forge/gui/framework/EDocID.java -text
forge-gui/src/main/java/forge/gui/framework/FScreen.java -text
forge-gui/src/main/java/forge/gui/framework/ICDoc.java -text
forge-gui/src/main/java/forge/gui/framework/IDocIdList.java -text
forge-gui/src/main/java/forge/gui/framework/ILocalRepaint.java -text
forge-gui/src/main/java/forge/gui/framework/IVDoc.java -text
forge-gui/src/main/java/forge/gui/framework/IVTopLevelUI.java -text
forge-gui/src/main/java/forge/gui/framework/InvalidLayoutFileException.java -text
forge-gui/src/main/java/forge/gui/framework/RectangleOfDouble.java -text
forge-gui/src/main/java/forge/gui/framework/SDisplayUtil.java -text
forge-gui/src/main/java/forge/gui/framework/SLayoutConstants.java -text
forge-gui/src/main/java/forge/gui/framework/SLayoutIO.java -text
forge-gui/src/main/java/forge/gui/framework/SOverflowUtil.java -text
forge-gui/src/main/java/forge/gui/framework/SRearrangingUtil.java -text
forge-gui/src/main/java/forge/gui/framework/SResizingUtil.java -text
forge-gui/src/main/java/forge/gui/framework/VEmptyDoc.java -text
forge-gui/src/main/java/forge/gui/framework/package-info.java svneol=native#text/plain
forge-gui/src/main/java/forge/gui/home/CHomeUI.java -text
forge-gui/src/main/java/forge/gui/home/EMenuGroup.java -text
forge-gui/src/main/java/forge/gui/home/EMenuItem.java -text
forge-gui/src/main/java/forge/gui/home/IVSubmenu.java -text
forge-gui/src/main/java/forge/gui/home/LblGroup.java -text
forge-gui/src/main/java/forge/gui/home/LblHeader.java -text
forge-gui/src/main/java/forge/gui/home/LblMenuItem.java -text
forge-gui/src/main/java/forge/gui/home/PnlGroup.java -text
forge-gui/src/main/java/forge/gui/home/StartButton.java -text
forge-gui/src/main/java/forge/gui/home/VHomeUI.java -text
forge-gui/src/main/java/forge/gui/home/gauntlet/CSubmenuGauntletBuild.java -text
forge-gui/src/main/java/forge/gui/home/gauntlet/CSubmenuGauntletContests.java -text
forge-gui/src/main/java/forge/gui/home/gauntlet/CSubmenuGauntletLoad.java -text
forge-gui/src/main/java/forge/gui/home/gauntlet/CSubmenuGauntletQuick.java -text
forge-gui/src/main/java/forge/gui/home/gauntlet/ContestGauntletLister.java -text
forge-gui/src/main/java/forge/gui/home/gauntlet/QuickGauntletLister.java -text
forge-gui/src/main/java/forge/gui/home/gauntlet/VSubmenuGauntletBuild.java -text
forge-gui/src/main/java/forge/gui/home/gauntlet/VSubmenuGauntletContests.java -text
forge-gui/src/main/java/forge/gui/home/gauntlet/VSubmenuGauntletLoad.java -text
forge-gui/src/main/java/forge/gui/home/gauntlet/VSubmenuGauntletQuick.java -text
forge-gui/src/main/java/forge/gui/home/package-info.java svneol=native#text/plain
forge-gui/src/main/java/forge/gui/home/quest/CSubmenuChallenges.java -text
forge-gui/src/main/java/forge/gui/home/quest/CSubmenuDuels.java -text
forge-gui/src/main/java/forge/gui/home/quest/CSubmenuQuestData.java -text
forge-gui/src/main/java/forge/gui/home/quest/CSubmenuQuestDecks.java -text
forge-gui/src/main/java/forge/gui/home/quest/CSubmenuQuestPrefs.java -text
forge-gui/src/main/java/forge/gui/home/quest/IVQuestStats.java -text
forge-gui/src/main/java/forge/gui/home/quest/PnlEvent.java -text
forge-gui/src/main/java/forge/gui/home/quest/QuestFileLister.java -text
forge-gui/src/main/java/forge/gui/home/quest/QuestPreferencesHandler.java -text
forge-gui/src/main/java/forge/gui/home/quest/SSubmenuQuestUtil.java -text
forge-gui/src/main/java/forge/gui/home/quest/VSubmenuChallenges.java -text
forge-gui/src/main/java/forge/gui/home/quest/VSubmenuDuels.java -text
forge-gui/src/main/java/forge/gui/home/quest/VSubmenuQuestData.java -text
forge-gui/src/main/java/forge/gui/home/quest/VSubmenuQuestDecks.java -text
forge-gui/src/main/java/forge/gui/home/quest/VSubmenuQuestPrefs.java -text
forge-gui/src/main/java/forge/gui/home/quest/package-info.java svneol=native#text/plain
forge-gui/src/main/java/forge/gui/home/sanctioned/AvatarSelector.java -text
forge-gui/src/main/java/forge/gui/home/sanctioned/CSubmenuConstructed.java -text
forge-gui/src/main/java/forge/gui/home/sanctioned/CSubmenuDraft.java -text
forge-gui/src/main/java/forge/gui/home/sanctioned/CSubmenuSealed.java -text
forge-gui/src/main/java/forge/gui/home/sanctioned/ConstructedGameMenu.java -text
forge-gui/src/main/java/forge/gui/home/sanctioned/VSubmenuConstructed.java -text
forge-gui/src/main/java/forge/gui/home/sanctioned/VSubmenuDraft.java -text
forge-gui/src/main/java/forge/gui/home/sanctioned/VSubmenuSealed.java -text
forge-gui/src/main/java/forge/gui/home/sanctioned/package-info.java svneol=native#text/plain
forge-gui/src/main/java/forge/gui/home/settings/CSubmenuAvatars.java -text
forge-gui/src/main/java/forge/gui/home/settings/CSubmenuDownloaders.java -text
forge-gui/src/main/java/forge/gui/home/settings/CSubmenuPreferences.java -text
forge-gui/src/main/java/forge/gui/home/settings/CSubmenuReleaseNotes.java -text
forge-gui/src/main/java/forge/gui/home/settings/GamePlayerUtil.java -text
forge-gui/src/main/java/forge/gui/home/settings/VSubmenuAvatars.java -text
forge-gui/src/main/java/forge/gui/home/settings/VSubmenuDownloaders.java -text
forge-gui/src/main/java/forge/gui/home/settings/VSubmenuPreferences.java -text
forge-gui/src/main/java/forge/gui/home/settings/VSubmenuReleaseNotes.java -text
forge-gui/src/main/java/forge/gui/home/settings/package-info.java svneol=native#text/plain
forge-gui/src/main/java/forge/gui/input/Input.java -text
forge-gui/src/main/java/forge/gui/input/InputAttack.java svneol=native#text/plain
forge-gui/src/main/java/forge/gui/input/InputBase.java svneol=native#text/plain
forge-gui/src/main/java/forge/gui/input/InputBlock.java svneol=native#text/plain
forge-gui/src/main/java/forge/gui/input/InputConfirm.java -text
forge-gui/src/main/java/forge/gui/input/InputConfirmMulligan.java svneol=native#text/plain
forge-gui/src/main/java/forge/gui/input/InputLockUI.java -text
forge-gui/src/main/java/forge/gui/input/InputPassPriority.java svneol=native#text/plain
forge-gui/src/main/java/forge/gui/input/InputPayMana.java -text
forge-gui/src/main/java/forge/gui/input/InputPayManaOfCostPayment.java -text
forge-gui/src/main/java/forge/gui/input/InputPayManaSimple.java svneol=native#text/plain
forge-gui/src/main/java/forge/gui/input/InputPayManaX.java -text
forge-gui/src/main/java/forge/gui/input/InputPlaybackControl.java -text
forge-gui/src/main/java/forge/gui/input/InputProliferate.java -text
forge-gui/src/main/java/forge/gui/input/InputSelectCardsForConvoke.java -text
forge-gui/src/main/java/forge/gui/input/InputSelectCardsFromList.java -text
forge-gui/src/main/java/forge/gui/input/InputSelectEntitiesFromList.java -text
forge-gui/src/main/java/forge/gui/input/InputSelectManyBase.java -text
forge-gui/src/main/java/forge/gui/input/InputSelectTargets.java -text
forge-gui/src/main/java/forge/gui/input/InputSynchronized.java -text
forge-gui/src/main/java/forge/gui/input/InputSyncronizedBase.java -text
forge-gui/src/main/java/forge/gui/input/package-info.java svneol=native#text/plain
forge-gui/src/main/java/forge/gui/match/CMatchUI.java -text
forge-gui/src/main/java/forge/gui/match/ControlWinLose.java -text
forge-gui/src/main/java/forge/gui/match/GameLogPanel.java -text
forge-gui/src/main/java/forge/gui/match/GauntletWinLose.java -text
forge-gui/src/main/java/forge/gui/match/LimitedWinLose.java -text
forge-gui/src/main/java/forge/gui/match/QuestWinLose.java -text
forge-gui/src/main/java/forge/gui/match/QuestWinLoseCardViewer.java -text
forge-gui/src/main/java/forge/gui/match/TargetingOverlay.java -text
forge-gui/src/main/java/forge/gui/match/VAssignDamage.java svneol=native#text/plain
forge-gui/src/main/java/forge/gui/match/VMatchUI.java -text
forge-gui/src/main/java/forge/gui/match/ViewWinLose.java -text
forge-gui/src/main/java/forge/gui/match/ZoneAction.java -text
forge-gui/src/main/java/forge/gui/match/controllers/CAntes.java -text
forge-gui/src/main/java/forge/gui/match/controllers/CCombat.java -text
forge-gui/src/main/java/forge/gui/match/controllers/CCommand.java -text
forge-gui/src/main/java/forge/gui/match/controllers/CDetail.java -text
forge-gui/src/main/java/forge/gui/match/controllers/CDev.java -text
forge-gui/src/main/java/forge/gui/match/controllers/CDock.java -text
forge-gui/src/main/java/forge/gui/match/controllers/CField.java -text
forge-gui/src/main/java/forge/gui/match/controllers/CHand.java -text
forge-gui/src/main/java/forge/gui/match/controllers/CLog.java -text
forge-gui/src/main/java/forge/gui/match/controllers/CPicture.java -text
forge-gui/src/main/java/forge/gui/match/controllers/CPlayers.java -text
forge-gui/src/main/java/forge/gui/match/controllers/CPrompt.java -text
forge-gui/src/main/java/forge/gui/match/controllers/CStack.java -text
forge-gui/src/main/java/forge/gui/match/controllers/package-info.java svneol=native#text/plain
forge-gui/src/main/java/forge/gui/match/menus/CMatchUIMenus.java -text
forge-gui/src/main/java/forge/gui/match/menus/CardOverlaysMenu.java -text
forge-gui/src/main/java/forge/gui/match/menus/DevModeMenu.java -text
forge-gui/src/main/java/forge/gui/match/menus/GameMenu.java -text
forge-gui/src/main/java/forge/gui/match/package-info.java svneol=native#text/plain
forge-gui/src/main/java/forge/gui/match/views/VAntes.java -text
forge-gui/src/main/java/forge/gui/match/views/VCombat.java -text
forge-gui/src/main/java/forge/gui/match/views/VCommand.java -text
forge-gui/src/main/java/forge/gui/match/views/VDetail.java -text
forge-gui/src/main/java/forge/gui/match/views/VDev.java -text
forge-gui/src/main/java/forge/gui/match/views/VDock.java -text
forge-gui/src/main/java/forge/gui/match/views/VField.java -text
forge-gui/src/main/java/forge/gui/match/views/VHand.java -text
forge-gui/src/main/java/forge/gui/match/views/VLog.java -text
forge-gui/src/main/java/forge/gui/match/views/VPicture.java -text
forge-gui/src/main/java/forge/gui/match/views/VPlayers.java -text
forge-gui/src/main/java/forge/gui/match/views/VPrompt.java -text
forge-gui/src/main/java/forge/gui/match/views/VStack.java -text
forge-gui/src/main/java/forge/gui/match/views/package-info.java svneol=native#text/plain
forge-gui/src/main/java/forge/gui/menus/ForgeMenu.java -text
forge-gui/src/main/java/forge/gui/menus/HelpMenu.java -text
forge-gui/src/main/java/forge/gui/menus/IMenuProvider.java -text
forge-gui/src/main/java/forge/gui/menus/LayoutMenu.java -text
forge-gui/src/main/java/forge/gui/menus/MenuUtil.java -text
forge-gui/src/main/java/forge/gui/package-info.java svneol=native#text/plain
forge-gui/src/main/java/forge/gui/player/HumanCostDecision.java -text
forge-gui/src/main/java/forge/gui/player/HumanPlay.java -text
forge-gui/src/main/java/forge/gui/player/HumanPlaySpellAbility.java -text
forge-gui/src/main/java/forge/gui/player/LobbyPlayerHuman.java -text
forge-gui/src/main/java/forge/gui/player/PlayerControllerHuman.java -text
forge-gui/src/main/java/forge/gui/player/TargetSelection.java svneol=native#text/plain
forge-gui/src/main/java/forge/gui/player/package-info.java -text
forge-gui/src/main/java/forge/gui/toolbox/CardFaceSymbols.java svneol=native#text/plain
forge-gui/src/main/java/forge/gui/toolbox/ContextMenuBuilder.java -text
forge-gui/src/main/java/forge/gui/toolbox/FAbsolutePositioner.java -text
forge-gui/src/main/java/forge/gui/toolbox/FButton.java -text
forge-gui/src/main/java/forge/gui/toolbox/FCheckBox.java -text
forge-gui/src/main/java/forge/gui/toolbox/FComboBox.java -text
forge-gui/src/main/java/forge/gui/toolbox/FComboBoxPanel.java -text
forge-gui/src/main/java/forge/gui/toolbox/FComboBoxWrapper.java -text
forge-gui/src/main/java/forge/gui/toolbox/FDigitalClock.java -text
forge-gui/src/main/java/forge/gui/toolbox/FHtmlViewer.java -text
forge-gui/src/main/java/forge/gui/toolbox/FLabel.java -text
forge-gui/src/main/java/forge/gui/toolbox/FList.java -text
forge-gui/src/main/java/forge/gui/toolbox/FMouseAdapter.java -text
forge-gui/src/main/java/forge/gui/toolbox/FOptionPane.java -text
forge-gui/src/main/java/forge/gui/toolbox/FOverlay.java -text
forge-gui/src/main/java/forge/gui/toolbox/FPanel.java -text
forge-gui/src/main/java/forge/gui/toolbox/FProgressBar.java -text
forge-gui/src/main/java/forge/gui/toolbox/FRadioButton.java -text
forge-gui/src/main/java/forge/gui/toolbox/FScrollPane.java -text
forge-gui/src/main/java/forge/gui/toolbox/FScrollPanel.java -text
forge-gui/src/main/java/forge/gui/toolbox/FSkin.java -text
forge-gui/src/main/java/forge/gui/toolbox/FTabbedPane.java -text
forge-gui/src/main/java/forge/gui/toolbox/FTextArea.java -text
forge-gui/src/main/java/forge/gui/toolbox/FTextEditor.java -text
forge-gui/src/main/java/forge/gui/toolbox/FTextField.java -text
forge-gui/src/main/java/forge/gui/toolbox/FUndoManager.java -text
forge-gui/src/main/java/forge/gui/toolbox/IDisposable.java -text
forge-gui/src/main/java/forge/gui/toolbox/LayoutHelper.java -text
forge-gui/src/main/java/forge/gui/toolbox/SaveOpenDialog.java -text
forge-gui/src/main/java/forge/gui/toolbox/imaging/FImagePanel.java -text
forge-gui/src/main/java/forge/gui/toolbox/imaging/FImageUtil.java -text
forge-gui/src/main/java/forge/gui/toolbox/imaging/ImageUtil.java -text
forge-gui/src/main/java/forge/gui/toolbox/itemmanager/CardManager.java -text
forge-gui/src/main/java/forge/gui/toolbox/itemmanager/DeckManager.java -text
forge-gui/src/main/java/forge/gui/toolbox/itemmanager/ItemManager.java -text
forge-gui/src/main/java/forge/gui/toolbox/itemmanager/ItemManagerConfig.java -text
forge-gui/src/main/java/forge/gui/toolbox/itemmanager/ItemManagerContainer.java -text
forge-gui/src/main/java/forge/gui/toolbox/itemmanager/ItemManagerModel.java -text
forge-gui/src/main/java/forge/gui/toolbox/itemmanager/SFilterUtil.java -text
forge-gui/src/main/java/forge/gui/toolbox/itemmanager/SItemManagerUtil.java -text
forge-gui/src/main/java/forge/gui/toolbox/itemmanager/SpellShopManager.java -text
forge-gui/src/main/java/forge/gui/toolbox/itemmanager/filters/CardCMCFilter.java -text
forge-gui/src/main/java/forge/gui/toolbox/itemmanager/filters/CardCMCRangeFilter.java -text
forge-gui/src/main/java/forge/gui/toolbox/itemmanager/filters/CardColorFilter.java -text
forge-gui/src/main/java/forge/gui/toolbox/itemmanager/filters/CardFormatFilter.java -text
forge-gui/src/main/java/forge/gui/toolbox/itemmanager/filters/CardPowerFilter.java -text
forge-gui/src/main/java/forge/gui/toolbox/itemmanager/filters/CardQuestWorldFilter.java -text
forge-gui/src/main/java/forge/gui/toolbox/itemmanager/filters/CardSearchFilter.java -text
forge-gui/src/main/java/forge/gui/toolbox/itemmanager/filters/CardSetFilter.java -text
forge-gui/src/main/java/forge/gui/toolbox/itemmanager/filters/CardToughnessFilter.java -text
forge-gui/src/main/java/forge/gui/toolbox/itemmanager/filters/CardTypeFilter.java -text
forge-gui/src/main/java/forge/gui/toolbox/itemmanager/filters/DeckColorFilter.java -text
forge-gui/src/main/java/forge/gui/toolbox/itemmanager/filters/DeckFolderFilter.java -text
forge-gui/src/main/java/forge/gui/toolbox/itemmanager/filters/DeckFormatFilter.java -text
forge-gui/src/main/java/forge/gui/toolbox/itemmanager/filters/DeckQuestWorldFilter.java -text
forge-gui/src/main/java/forge/gui/toolbox/itemmanager/filters/DeckSearchFilter.java -text
forge-gui/src/main/java/forge/gui/toolbox/itemmanager/filters/DeckSetFilter.java -text
forge-gui/src/main/java/forge/gui/toolbox/itemmanager/filters/DeckStatTypeFilter.java -text
forge-gui/src/main/java/forge/gui/toolbox/itemmanager/filters/FormatFilter.java -text
forge-gui/src/main/java/forge/gui/toolbox/itemmanager/filters/ItemFilter.java -text
forge-gui/src/main/java/forge/gui/toolbox/itemmanager/filters/ListLabelFilter.java -text
forge-gui/src/main/java/forge/gui/toolbox/itemmanager/filters/StatTypeFilter.java -text
forge-gui/src/main/java/forge/gui/toolbox/itemmanager/filters/TextSearchFilter.java -text
forge-gui/src/main/java/forge/gui/toolbox/itemmanager/filters/ToggleButtonsFilter.java -text
forge-gui/src/main/java/forge/gui/toolbox/itemmanager/filters/ValueRangeFilter.java -text
forge-gui/src/main/java/forge/gui/toolbox/itemmanager/package-info.java -text
forge-gui/src/main/java/forge/gui/toolbox/itemmanager/views/ColorSetRenderer.java -text
forge-gui/src/main/java/forge/gui/toolbox/itemmanager/views/ColumnDef.java -text
forge-gui/src/main/java/forge/gui/toolbox/itemmanager/views/DeckQuantityRenderer.java -text
forge-gui/src/main/java/forge/gui/toolbox/itemmanager/views/DeckStarRenderer.java -text
forge-gui/src/main/java/forge/gui/toolbox/itemmanager/views/GroupDef.java -text
forge-gui/src/main/java/forge/gui/toolbox/itemmanager/views/ImageView.java -text
forge-gui/src/main/java/forge/gui/toolbox/itemmanager/views/IntegerRenderer.java -text
forge-gui/src/main/java/forge/gui/toolbox/itemmanager/views/ItemCellRenderer.java -text
forge-gui/src/main/java/forge/gui/toolbox/itemmanager/views/ItemColumn.java -text
forge-gui/src/main/java/forge/gui/toolbox/itemmanager/views/ItemColumnConfig.java -text
forge-gui/src/main/java/forge/gui/toolbox/itemmanager/views/ItemListView.java -text
forge-gui/src/main/java/forge/gui/toolbox/itemmanager/views/ItemView.java -text
forge-gui/src/main/java/forge/gui/toolbox/itemmanager/views/ManaCostRenderer.java -text
forge-gui/src/main/java/forge/gui/toolbox/itemmanager/views/SColumnUtil.java -text
forge-gui/src/main/java/forge/gui/toolbox/itemmanager/views/SetCodeRenderer.java -text
forge-gui/src/main/java/forge/gui/toolbox/itemmanager/views/StarRenderer.java -text
forge-gui/src/main/java/forge/gui/toolbox/package-info.java svneol=native#text/plain
forge-gui/src/main/java/forge/gui/toolbox/special/CardViewer.java -text
forge-gui/src/main/java/forge/gui/toolbox/special/CardZoomer.java -text
forge-gui/src/main/java/forge/gui/toolbox/special/PhaseIndicator.java -text
forge-gui/src/main/java/forge/gui/toolbox/special/PhaseLabel.java -text
forge-gui/src/main/java/forge/gui/toolbox/special/PlayerDetailsPanel.java -text
forge-gui/src/main/java/forge/gui/toolbox/special/package-info.java -text
forge-gui/src/main/java/forge/gui/workshop/CWorkshopUI.java -text
forge-gui/src/main/java/forge/gui/workshop/CardScriptInfo.java -text
forge-gui/src/main/java/forge/gui/workshop/VWorkshopUI.java -text
forge-gui/src/main/java/forge/gui/workshop/controllers/CCardDesigner.java -text
forge-gui/src/main/java/forge/gui/workshop/controllers/CCardScript.java -text
forge-gui/src/main/java/forge/gui/workshop/controllers/CWorkshopCatalog.java -text
forge-gui/src/main/java/forge/gui/workshop/menus/CWorkshopUIMenus.java -text
forge-gui/src/main/java/forge/gui/workshop/menus/WorkshopFileMenu.java -text
forge-gui/src/main/java/forge/gui/workshop/views/VCardDesigner.java -text
forge-gui/src/main/java/forge/gui/workshop/views/VCardScript.java -text
forge-gui/src/main/java/forge/gui/workshop/views/VWorkshopCatalog.java -text
forge-gui/src/main/java/forge/interfaces/IButton.java -text
forge-gui/src/main/java/forge/interfaces/IGuiBase.java -text
forge-gui/src/main/java/forge/interfaces/IProgressBar.java -text
forge-gui/src/main/java/forge/itemmanager/ColumnDef.java -text
forge-gui/src/main/java/forge/itemmanager/GroupDef.java -text
forge-gui/src/main/java/forge/itemmanager/IItemManager.java -text
forge-gui/src/main/java/forge/itemmanager/ItemColumn.java -text
forge-gui/src/main/java/forge/itemmanager/ItemColumnConfig.java -text
forge-gui/src/main/java/forge/itemmanager/ItemManagerConfig.java -text
forge-gui/src/main/java/forge/itemmanager/ItemManagerModel.java -text
forge-gui/src/main/java/forge/itemmanager/SColumnUtil.java -text
forge-gui/src/main/java/forge/itemmanager/SFilterUtil.java -text
forge-gui/src/main/java/forge/itemmanager/SItemManagerUtil.java -text
forge-gui/src/main/java/forge/itemmanager/package-info.java -text
forge-gui/src/main/java/forge/limited/BoosterDeckBuilder.java -text
forge-gui/src/main/java/forge/limited/BoosterDraft.java svneol=native#text/plain
forge-gui/src/main/java/forge/limited/BoosterDraftAI.java svneol=native#text/plain
@@ -15908,6 +15999,32 @@ forge-gui/src/main/java/forge/limited/ReadDraftRankings.java -text
forge-gui/src/main/java/forge/limited/SealedCardPoolGenerator.java svneol=native#text/plain
forge-gui/src/main/java/forge/limited/SealedDeckBuilder.java svneol=native#text/plain
forge-gui/src/main/java/forge/limited/package-info.java svneol=native#text/plain
forge-gui/src/main/java/forge/match/MatchConstants.java -text
forge-gui/src/main/java/forge/match/input/ButtonUtil.java -text
forge-gui/src/main/java/forge/match/input/Input.java -text
forge-gui/src/main/java/forge/match/input/InputAttack.java -text
forge-gui/src/main/java/forge/match/input/InputBase.java -text
forge-gui/src/main/java/forge/match/input/InputBlock.java -text
forge-gui/src/main/java/forge/match/input/InputConfirm.java -text
forge-gui/src/main/java/forge/match/input/InputConfirmMulligan.java -text
forge-gui/src/main/java/forge/match/input/InputLockUI.java -text
forge-gui/src/main/java/forge/match/input/InputPassPriority.java -text
forge-gui/src/main/java/forge/match/input/InputPayMana.java -text
forge-gui/src/main/java/forge/match/input/InputPayManaOfCostPayment.java -text
forge-gui/src/main/java/forge/match/input/InputPayManaSimple.java -text
forge-gui/src/main/java/forge/match/input/InputPayManaX.java -text
forge-gui/src/main/java/forge/match/input/InputPlaybackControl.java -text
forge-gui/src/main/java/forge/match/input/InputProliferate.java -text
forge-gui/src/main/java/forge/match/input/InputProxy.java -text
forge-gui/src/main/java/forge/match/input/InputQueue.java -text
forge-gui/src/main/java/forge/match/input/InputSelectCardsForConvoke.java -text
forge-gui/src/main/java/forge/match/input/InputSelectCardsFromList.java -text
forge-gui/src/main/java/forge/match/input/InputSelectEntitiesFromList.java -text
forge-gui/src/main/java/forge/match/input/InputSelectManyBase.java -text
forge-gui/src/main/java/forge/match/input/InputSelectTargets.java -text
forge-gui/src/main/java/forge/match/input/InputSynchronized.java -text
forge-gui/src/main/java/forge/match/input/InputSyncronizedBase.java -text
forge-gui/src/main/java/forge/match/input/package-info.java -text
forge-gui/src/main/java/forge/model/CardBlock.java -text
forge-gui/src/main/java/forge/model/CardCollections.java -text
forge-gui/src/main/java/forge/model/FModel.java svneol=native#text/plain
@@ -15931,9 +16048,16 @@ forge-gui/src/main/java/forge/net/client/state/InLobbyClientState.java -text
forge-gui/src/main/java/forge/net/client/state/UnauthorizedClientState.java -text
forge-gui/src/main/java/forge/net/client/state/package-info.java -text
forge-gui/src/main/java/forge/net/package-info.java -text
forge-gui/src/main/java/forge/package-info.java svneol=native#text/plain
forge-gui/src/main/java/forge/player/GamePlayerUtil.java -text
forge-gui/src/main/java/forge/player/HumanCostDecision.java -text
forge-gui/src/main/java/forge/player/HumanPlay.java -text
forge-gui/src/main/java/forge/player/HumanPlaySpellAbility.java -text
forge-gui/src/main/java/forge/player/LobbyPlayerHuman.java -text
forge-gui/src/main/java/forge/player/PlayerControllerHuman.java -text
forge-gui/src/main/java/forge/player/TargetSelection.java -text
forge-gui/src/main/java/forge/player/package-info.java -text
forge-gui/src/main/java/forge/properties/ForgeConstants.java -text
forge-gui/src/main/java/forge/properties/ForgePreferences.java svneol=native#text/plain
forge-gui/src/main/java/forge/properties/NewConstants.java svneol=native#text/plain
forge-gui/src/main/java/forge/properties/Preferences.java svneol=native#text/plain
forge-gui/src/main/java/forge/properties/SavePreferencesListener.java svneol=native#text/plain
forge-gui/src/main/java/forge/properties/package-info.java svneol=native#text/plain
@@ -15978,9 +16102,6 @@ forge-gui/src/main/java/forge/quest/data/QuestData.java svneol=native#text/plain
forge-gui/src/main/java/forge/quest/data/QuestItemCondition.java -text
forge-gui/src/main/java/forge/quest/data/QuestPreferences.java svneol=native#text/plain
forge-gui/src/main/java/forge/quest/data/package-info.java svneol=native#text/plain
forge-gui/src/main/java/forge/quest/gui/ViewItem.java -text
forge-gui/src/main/java/forge/quest/gui/ViewStall.java svneol=native#text/plain
forge-gui/src/main/java/forge/quest/gui/package-info.java svneol=native#text/plain
forge-gui/src/main/java/forge/quest/io/QuestChallengeReader.java -text
forge-gui/src/main/java/forge/quest/io/QuestDataIO.java svneol=native#text/plain
forge-gui/src/main/java/forge/quest/io/QuestDuelReader.java -text
@@ -15997,6 +16118,7 @@ forge-gui/src/main/java/forge/sound/SoundSystem.java -text
forge-gui/src/main/java/forge/util/AwtUtil.java -text
forge-gui/src/main/java/forge/util/Base64Coder.java svneol=native#text/plain
forge-gui/src/main/java/forge/util/Evaluator.java -text
forge-gui/src/main/java/forge/util/GuiDisplayUtil.java -text
forge-gui/src/main/java/forge/util/HttpUtil.java svneol=native#text/plain
forge-gui/src/main/java/forge/util/IgnoringXStream.java -text
forge-gui/src/main/java/forge/util/LineReader.java -text
@@ -16004,78 +16126,8 @@ forge-gui/src/main/java/forge/util/MultiplexOutputStream.java svneol=native#text
forge-gui/src/main/java/forge/util/OperatingSystem.java -text
forge-gui/src/main/java/forge/util/XmlUtil.java -text
forge-gui/src/main/java/forge/util/package-info.java -text
forge-gui/src/main/java/forge/view/ButtonUtil.java svneol=native#text/plain
forge-gui/src/main/java/forge/view/CardReaderExperiments.java -text
forge-gui/src/main/java/forge/view/FDialog.java -text
forge-gui/src/main/java/forge/view/FFrame.java -text
forge-gui/src/main/java/forge/view/FNavigationBar.java -text
forge-gui/src/main/java/forge/view/FTitleBar.java -text
forge-gui/src/main/java/forge/view/FTitleBarBase.java -text
forge-gui/src/main/java/forge/view/FView.java -text
forge-gui/src/main/java/forge/view/ITitleBarOwner.java -text
forge-gui/src/main/java/forge/view/Main.java -text
forge-gui/src/main/java/forge/view/SplashFrame.java -text
forge-gui/src/main/java/forge/view/arcane/CardArea.java svneol=native#text/plain
forge-gui/src/main/java/forge/view/arcane/CardPanel.java svneol=native#text/plain
forge-gui/src/main/java/forge/view/arcane/CardPanelContainer.java svneol=native#text/plain
forge-gui/src/main/java/forge/view/arcane/HandArea.java svneol=native#text/plain
forge-gui/src/main/java/forge/view/arcane/PlayArea.java svneol=native#text/plain
forge-gui/src/main/java/forge/view/arcane/ScaledImagePanel.java svneol=native#text/plain
forge-gui/src/main/java/forge/view/arcane/ViewPanel.java svneol=native#text/plain
forge-gui/src/main/java/forge/view/arcane/package-info.java svneol=native#text/plain
forge-gui/src/main/java/forge/view/arcane/util/Animation.java svneol=native#text/plain
forge-gui/src/main/java/forge/view/arcane/util/CardPanelMouseAdapter.java -text
forge-gui/src/main/java/forge/view/arcane/util/CardPanelMouseListener.java svneol=native#text/plain
forge-gui/src/main/java/forge/view/arcane/util/OutlinedLabel.java svneol=native#text/plain
forge-gui/src/main/java/forge/view/arcane/util/package-info.java svneol=native#text/plain
forge-gui/src/main/java/forge/view/package-info.java svneol=native#text/plain
forge-gui/src/main/resources/proxy-template.ftl -text
forge-gui/src/site/apt/index.apt -text
forge-gui/src/test/java/forge/BoosterDraft1Test.java svneol=native#text/plain
forge-gui/src/test/java/forge/BoosterDraftTest.java svneol=native#text/plain
forge-gui/src/test/java/forge/GuiDownloadPicturesLQTest.java svneol=native#text/plain
forge-gui/src/test/java/forge/GuiDownloadSetPicturesLQTest.java svneol=native#text/plain
forge-gui/src/test/java/forge/GuiProgressBarWindowTest.java svneol=native#text/plain
forge-gui/src/test/java/forge/PanelTest.java svneol=native#text/plain
forge-gui/src/test/java/forge/RunTest.java svneol=native#text/plain
forge-gui/src/test/java/forge/TinyTest.java svneol=native#text/plain
forge-gui/src/test/java/forge/deck/generate/Generate2ColorDeckTest.java svneol=native#text/plain
forge-gui/src/test/java/forge/deck/generate/Generate3ColorDeckTest.java svneol=native#text/plain
forge-gui/src/test/java/forge/deck/generate/Generate5ColorDeckTest.java svneol=native#text/plain
forge-gui/src/test/java/forge/gamesimulationtests/BaseGameSimulationTest.java -text
forge-gui/src/test/java/forge/gamesimulationtests/comprehensiverules/ComprehensiveRulesSection103.java -text
forge-gui/src/test/java/forge/gamesimulationtests/comprehensiverules/ComprehensiveRulesSection104.java -text
forge-gui/src/test/java/forge/gamesimulationtests/util/CardDatabaseHelper.java -text
forge-gui/src/test/java/forge/gamesimulationtests/util/GameWrapper.java -text
forge-gui/src/test/java/forge/gamesimulationtests/util/IntegerConstraint.java -text
forge-gui/src/test/java/forge/gamesimulationtests/util/LobbyPlayerForTests.java -text
forge-gui/src/test/java/forge/gamesimulationtests/util/PlayerControllerForTests.java -text
forge-gui/src/test/java/forge/gamesimulationtests/util/Specification.java -text
forge-gui/src/test/java/forge/gamesimulationtests/util/SpecificationHandler.java -text
forge-gui/src/test/java/forge/gamesimulationtests/util/card/CardSpecification.java -text
forge-gui/src/test/java/forge/gamesimulationtests/util/card/CardSpecificationBuilder.java -text
forge-gui/src/test/java/forge/gamesimulationtests/util/card/CardSpecificationHandler.java -text
forge-gui/src/test/java/forge/gamesimulationtests/util/gamestate/GameStateSpecification.java -text
forge-gui/src/test/java/forge/gamesimulationtests/util/gamestate/GameStateSpecificationBuilder.java -text
forge-gui/src/test/java/forge/gamesimulationtests/util/player/PlayerSpecification.java -text
forge-gui/src/test/java/forge/gamesimulationtests/util/player/PlayerSpecificationBuilder.java -text
forge-gui/src/test/java/forge/gamesimulationtests/util/player/PlayerSpecificationHandler.java -text
forge-gui/src/test/java/forge/gamesimulationtests/util/playeractions/ActionPreCondition.java -text
forge-gui/src/test/java/forge/gamesimulationtests/util/playeractions/ActivateAbilityAction.java -text
forge-gui/src/test/java/forge/gamesimulationtests/util/playeractions/BasePlayerAction.java -text
forge-gui/src/test/java/forge/gamesimulationtests/util/playeractions/CastSpellFromHandAction.java -text
forge-gui/src/test/java/forge/gamesimulationtests/util/playeractions/DeclareAttackersAction.java -text
forge-gui/src/test/java/forge/gamesimulationtests/util/playeractions/DeclareBlockersAction.java -text
forge-gui/src/test/java/forge/gamesimulationtests/util/playeractions/PlayerActions.java -text
forge-gui/src/test/java/forge/gamesimulationtests/util/playeractions/testactions/AssertAction.java -text
forge-gui/src/test/java/forge/gamesimulationtests/util/playeractions/testactions/CardAssertAction.java -text
forge-gui/src/test/java/forge/gamesimulationtests/util/playeractions/testactions/EndTestAction.java -text
forge-gui/src/test/java/forge/gamesimulationtests/util/playeractions/testactions/PlayerAssertAction.java -text
forge-gui/src/test/java/forge/gamesimulationtests/util/playeractions/testactions/TestAction.java -text
forge-gui/src/test/java/forge/gui/ListChooserTest.java svneol=native#text/plain
forge-gui/src/test/java/forge/gui/game/CardDetailPanelTest.java svneol=native#text/plain
forge-gui/src/test/java/forge/item/DeckHintsTest.java -text
forge-gui/src/test/java/forge/model/FModelTest.java -text
forge-gui/tools/PerSetTracking.py svneol=native#text/x-python
forge-gui/tools/assignSetInfo.py svneol=native#text/x-python
forge-gui/tools/cardTemplateScript.py svneol=native#text/x-python

View File

@@ -48,7 +48,6 @@ import org.apache.commons.lang3.StringUtils;
import org.apache.commons.lang3.tuple.ImmutablePair;
import org.apache.commons.lang3.tuple.Pair;
import java.awt.event.MouseEvent;
import java.security.InvalidParameterException;
import java.util.*;
@@ -72,7 +71,7 @@ public class PlayerControllerAi extends PlayerController {
}
public SpellAbility getAbilityToPlay(List<SpellAbility> abilities, MouseEvent triggerEvent) {
public SpellAbility getAbilityToPlay(List<SpellAbility> abilities, Object triggerEvent) {
if (abilities.size() == 0) {
return null;
}

View File

@@ -33,7 +33,6 @@ import forge.item.PaperCard;
import org.apache.commons.lang3.tuple.ImmutablePair;
import org.apache.commons.lang3.tuple.Pair;
import java.awt.event.MouseEvent;
import java.util.Collection;
import java.util.HashMap;
import java.util.List;
@@ -108,12 +107,8 @@ public abstract class PlayerController {
public LobbyPlayer getLobbyPlayer() { return lobbyPlayer; }
public final SpellAbility getAbilityToPlay(List<SpellAbility> abilities) { return getAbilityToPlay(abilities, null); }
public abstract SpellAbility getAbilityToPlay(List<SpellAbility> abilities, MouseEvent triggerEvent);
public abstract SpellAbility getAbilityToPlay(List<SpellAbility> abilities, Object triggerEvent);
/**
* TODO: Write javadoc for this method.
* @param c
*/
//public abstract void playFromSuspend(Card c);
public abstract void playSpellAbilityForFree(SpellAbility copySA, boolean mayChoseNewTargets);
public abstract void playSpellAbilityNoStack(SpellAbility effectSA, boolean mayChoseNewTargets);

View File

@@ -0,0 +1,9 @@
<?xml version="1.0" encoding="UTF-8"?>
<classpath>
<classpathentry kind="src" output="target/classes" path="src/main/java"/>
<classpathentry kind="src" output="target/test-classes" path="src/test/java"/>
<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.7"/>
<classpathentry kind="con" path="org.eclipse.m2e.MAVEN2_CLASSPATH_CONTAINER"/>
<classpathentry kind="con" path="org.testng.TESTNG_CONTAINER"/>
<classpathentry kind="output" path="target/classes"/>
</classpath>

View File

@@ -0,0 +1,23 @@
<?xml version="1.0" encoding="UTF-8"?>
<projectDescription>
<name>forge-gui-desktop</name>
<comment></comment>
<projects>
</projects>
<buildSpec>
<buildCommand>
<name>org.eclipse.jdt.core.javabuilder</name>
<arguments>
</arguments>
</buildCommand>
<buildCommand>
<name>org.eclipse.m2e.core.maven2Builder</name>
<arguments>
</arguments>
</buildCommand>
</buildSpec>
<natures>
<nature>org.eclipse.jdt.core.javanature</nature>
<nature>org.eclipse.m2e.core.maven2Nature</nature>
</natures>
</projectDescription>

View File

@@ -0,0 +1,2 @@
eclipse.preferences.version=1
encoding/<project>=ISO-8859-1

View File

@@ -0,0 +1,5 @@
eclipse.preferences.version=1
org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.7
org.eclipse.jdt.core.compiler.compliance=1.7
org.eclipse.jdt.core.compiler.problem.forbiddenReference=warning
org.eclipse.jdt.core.compiler.source=1.7

View File

@@ -0,0 +1,4 @@
activeProfiles=
eclipse.preferences.version=1
resolveWorkspaceProjects=true
version=1

515
forge-gui-desktop/pom.xml Normal file
View File

@@ -0,0 +1,515 @@
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
<modelVersion>4.0.0</modelVersion>
<parent>
<artifactId>forge</artifactId>
<groupId>forge</groupId>
<version>1.5.16-SNAPSHOT</version>
</parent>
<artifactId>forge-gui-desktop</artifactId>
<packaging>jar</packaging>
<name>Forge</name>
<build>
<plugins>
<plugin>
<groupId>com.google.code.maven-svn-revision-number-plugin</groupId>
<artifactId>svn-revision-number-maven-plugin</artifactId>
<executions>
<execution>
<goals>
<goal>revision</goal>
</goals>
</execution>
</executions>
<configuration>
<failOnError>false</failOnError>
<entries>
<entry>
<prefix>forge</prefix>
</entry>
</entries>
</configuration>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-antrun-plugin</artifactId>
<dependencies>
<dependency>
<groupId>org.apache.ant</groupId>
<artifactId>ant-nodeps</artifactId>
<version>1.8.1</version>
</dependency>
</dependencies>
<executions>
<execution>
<id>build-version-string</id>
<phase>process-resources</phase>
<goals>
<goal>run</goal>
</goals>
<configuration>
<exportAntProperties>true</exportAntProperties>
<target>
<condition property="fullversionstring" value="${project.version}-r${forge.revision}${forge.specialStatus}" else="${project.version}-r${forge.revision}${forge.specialStatus} (mixed revisions detected; please update from the root directory)">
<contains string="${forge.mixedRevisions}" substring="false" />
</condition>
</target>
</configuration>
</execution>
</executions>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-jar-plugin</artifactId>
<version>2.4</version>
<configuration>
<archive>
<manifest>
<addDefaultImplementationEntries>true</addDefaultImplementationEntries>
<addDefaultSpecificationEntries>true</addDefaultSpecificationEntries>
</manifest>
<manifestEntries>
<Implementation-Version>${fullversionstring}</Implementation-Version>
</manifestEntries>
</archive>
</configuration>
</plugin>
<plugin>
<groupId>com.google.code.maven-replacer-plugin</groupId>
<artifactId>replacer</artifactId>
<version>1.5.2</version>
<executions>
<execution>
<phase>package</phase>
<goals>
<goal>replace</goal>
</goals>
</execution>
</executions>
<configuration>
<basedir>${basedir}/${configSourceDirectory}</basedir>
<filesToInclude>forge.sh, forge.command</filesToInclude>
<outputBasedir>${project.build.directory}</outputBasedir>
<outputDir>.</outputDir>
<regex>false</regex>
<replacements>
<replacement>
<token>$project.build.finalName$</token>
<value>${project.build.finalName}-jar-with-dependencies.jar</value>
</replacement>
</replacements>
</configuration>
</plugin>
<plugin>
<artifactId>maven-assembly-plugin</artifactId>
<configuration>
<attach>false</attach>
<descriptorRefs>
<descriptorRef>jar-with-dependencies</descriptorRef>
</descriptorRefs>
<archive>
<manifest>
<mainClass>forge.view.Main</mainClass>
<addDefaultImplementationEntries>true</addDefaultImplementationEntries>
</manifest>
<manifestEntries>
<Implementation-Version>${fullversionstring}</Implementation-Version>
</manifestEntries>
</archive>
</configuration>
<executions>
<execution>
<id>make-assembly</id>
<!-- this is used for inheritance merges -->
<phase>package</phase>
<!-- bind to the packaging phase -->
<goals>
<goal>single</goal>
</goals>
</execution>
</executions>
</plugin>
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>build-helper-maven-plugin</artifactId>
<version>1.8</version>
<executions>
<execution>
<id>released-version</id>
<phase>validate</phase>
<goals>
<goal>released-version</goal>
</goals>
</execution>
<execution>
<id>parse-version</id>
<goals>
<goal>parse-version</goal>
</goals>
</execution>
</executions>
</plugin>
</plugins>
</build>
<dependencies>
<dependency>
<groupId>forge</groupId>
<artifactId>forge-core</artifactId>
<version>${project.version}</version>
</dependency>
<dependency>
<groupId>forge</groupId>
<artifactId>forge-game</artifactId>
<version>${project.version}</version>
</dependency>
<dependency>
<groupId>forge</groupId>
<artifactId>forge-ai</artifactId>
<version>${project.version}</version>
</dependency>
<dependency>
<groupId>forge</groupId>
<artifactId>forge-net</artifactId>
<version>${project.version}</version>
</dependency>
<dependency>
<groupId>forge</groupId>
<artifactId>forge-gui</artifactId>
<version>${project.version}</version>
</dependency>
<dependency>
<groupId>com.miglayout</groupId>
<artifactId>miglayout</artifactId>
<version>3.7.4</version>
</dependency>
<dependency>
<groupId>com.mortennobel</groupId>
<artifactId>java-image-scaling</artifactId>
<version>0.8.5</version>
</dependency>
<dependency>
<groupId>com.google.guava</groupId>
<artifactId>guava</artifactId>
<version>16.0.1</version>
</dependency>
<dependency>
<groupId>com.thoughtworks.xstream</groupId>
<artifactId>xstream</artifactId>
<version>1.4.7</version>
</dependency>
<dependency>
<groupId>org.testng</groupId>
<artifactId>testng</artifactId>
<version>6.8.7</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.powermock</groupId>
<artifactId>powermock-module-testng</artifactId>
<version>1.5.4</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.powermock</groupId>
<artifactId>powermock-api-mockito</artifactId>
<version>1.5.4</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>log4j</groupId>
<artifactId>log4j</artifactId>
<version>1.2.17</version>
</dependency>
<dependency>
<groupId>com.googlecode</groupId>
<artifactId>minlog</artifactId>
<version>1.2</version>
</dependency>
<dependency>
<groupId>org.apache.commons</groupId>
<artifactId>commons-lang3</artifactId>
<version>3.3</version>
</dependency>
<dependency>
<groupId>org.freemarker</groupId>
<artifactId>freemarker</artifactId>
<version>2.3.20</version>
</dependency>
</dependencies>
<profiles>
<profile>
<id>windows-linux</id>
<build>
<plugins>
<plugin>
<groupId>com.akathist.maven.plugins.launch4j</groupId>
<artifactId>launch4j-maven-plugin</artifactId>
<version>1.5.2</version>
<executions>
<execution>
<id>l4j-gui</id>
<phase>package</phase>
<goals>
<goal>launch4j</goal>
</goals>
<configuration>
<headerType>gui</headerType>
<outfile>${project.build.directory}/forge.exe</outfile>
<jar>${project.build.finalName}-jar-with-dependencies.jar</jar>
<dontWrapJar>true</dontWrapJar>
<errTitle>forge</errTitle>
<icon>src/main/config/forge.ico</icon>
<classPath>
<mainClass>forge.view.Main</mainClass>
<addDependencies>false</addDependencies>
<preCp>anything</preCp>
</classPath>
<jre>
<minVersion>1.7.0</minVersion>
<maxHeapSize>1024</maxHeapSize>
</jre>
<versionInfo>
<fileVersion>${parsedVersion.majorVersion}.${parsedVersion.minorVersion}.${parsedVersion.incrementalVersion}.0</fileVersion>
<txtFileVersion>${parsedVersion.majorVersion}.${parsedVersion.minorVersion}.${parsedVersion.incrementalVersion}.0</txtFileVersion>
<fileDescription>Forge</fileDescription>
<copyright>Forge</copyright>
<productVersion>${parsedVersion.majorVersion}.${parsedVersion.minorVersion}.${parsedVersion.incrementalVersion}.0</productVersion>
<txtProductVersion>${parsedVersion.majorVersion}.${parsedVersion.minorVersion}.${parsedVersion.incrementalVersion}.0</txtProductVersion>
<productName>Forge</productName>
<internalName>forge</internalName>
<originalFilename>forge.exe</originalFilename>
</versionInfo>
</configuration>
</execution>
</executions>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-antrun-plugin</artifactId>
<version>1.7</version>
<dependencies>
<dependency>
<groupId>org.apache.ant</groupId>
<artifactId>ant-nodeps</artifactId>
<version>1.8.1</version>
</dependency>
</dependencies>
<executions>
<execution>
<id>win-linux-app-bundle</id>
<phase>pre-integration-test</phase>
<configuration>
<target>
<!-- Windows/Linux archive -->
<mkdir dir="${project.build.directory}/${project.build.finalName}" />
<copy todir="${project.build.directory}/${project.build.finalName}">
<fileset dir="${project.build.directory}" includes="forge.sh" />
<fileset dir="${project.build.directory}" includes="forge.command" />
<fileset dir="${basedir}" includes="forge.profile.properties.example" />
<fileset dir="${basedir}" includes="LICENSE.txt" />
<fileset dir="${basedir}" includes="README.txt" />
<fileset dir="${basedir}" includes="CHANGES.txt" />
<fileset dir="${basedir}">
<include name="res/**" />
<exclude name="res/cardsfolder/**" />
</fileset>
<fileset dir="${project.build.directory}" includes="forge.exe" />
<fileset dir="${project.build.directory}" includes="${project.build.finalName}-jar-with-dependencies.jar" />
</copy>
<mkdir dir="${project.build.directory}/${project.build.finalName}/res/cardsfolder" />
<zip destfile="${project.build.directory}/${project.build.finalName}/res/cardsfolder/cardsfolder.zip" basedir="${basedir}/res/cardsfolder" level="1" />
<chmod file="${project.build.directory}/${project.build.finalName}/forge.sh" perm="a+rx" />
<chmod file="${project.build.directory}/${project.build.finalName}/forge.command" perm="a+rx" />
<chmod file="${project.build.directory}/${project.build.finalName}/forge.exe" perm="a+rx" />
<tar destfile="${project.build.directory}/${project.build.finalName}.tar.bz2" compression="bzip2">
<tarfileset filemode="755" dir="${project.build.directory}/${project.build.finalName}">
<include name="forge.sh" />
<include name="forge.command" />
<include name="forge.exe" />
</tarfileset>
<tarfileset dir="${project.build.directory}/${project.build.finalName}">
<include name="**" />
<exclude name="forge.sh" />
<exclude name="forge.command" />
<exclude name="forge.exe" />
</tarfileset>
</tar>
</target>
</configuration>
<goals>
<goal>run</goal>
</goals>
</execution>
</executions>
</plugin>
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>build-helper-maven-plugin</artifactId>
<version>1.8</version>
<executions>
<execution>
<id>released-version</id>
<phase>validate</phase>
<goals>
<goal>released-version</goal>
</goals>
</execution>
<execution>
<id>parse-version</id>
<goals>
<goal>parse-version</goal>
</goals>
</execution>
<execution>
<id>attach-distribution</id>
<phase>post-integration-test</phase>
<goals>
<goal>attach-artifact</goal>
</goals>
<configuration>
<artifacts>
<artifact>
<file>${project.build.directory}/${project.build.finalName}.tar.bz2</file>
<type>tar.bz2</type>
</artifact>
</artifacts>
</configuration>
</execution>
</executions>
</plugin>
</plugins>
</build>
</profile>
<profile>
<properties>
<license.file.name>"LICENSE.txt"</license.file.name>
<changes.file.name>"CHANGES.txt"</changes.file.name>
<readme.file.name>"README.txt"</readme.file.name>
<forge.file.name>"Forge"</forge.file.name>
<applications.file.name>"Applications"</applications.file.name>
</properties>
<id>osx</id>
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-antrun-plugin</artifactId>
<version>1.7</version>
<dependencies>
<dependency>
<groupId>org.apache.ant</groupId>
<artifactId>ant-nodeps</artifactId>
<version>1.8.1</version>
</dependency>
</dependencies>
<executions>
<execution>
<id>osx-appbundle</id>
<phase>pre-integration-test</phase>
<configuration>
<target>
<mkdir dir="${project.build.directory}/${project.build.finalName}-osx" />
<copy todir="${project.build.directory}/${project.build.finalName}-osx">
<fileset dir="${basedir}" includes="LICENSE.txt" />
<fileset dir="${basedir}" includes="README.txt" />
<fileset dir="${basedir}" includes="CHANGES.txt" />
</copy>
<taskdef name="bundleapp" classpath="${basedir}/${configSourceDirectory}/appbundler-1.0-custom.jar" classname="com.oracle.appbundler.AppBundlerTask" />
<bundleapp outputdirectory="${project.build.directory}/${project.build.finalName}-osx" name="${project.name}" displayname="${project.name}" shortversion="${project.version}" identifier="forge.view.Main" icon="${basedir}/${configSourceDirectory}/Forge.icns" applicationCategory="public.app-category.games" mainclassname="forge.view.Main">
<classpath file="${project.build.directory}/${project.build.finalName}-jar-with-dependencies.jar" />
<classpath file="${basedir}/forge.profile.properties.example" />
<option value="-Dapple.laf.useScreenMenuBar=true" />
<option value="-Dcom.apple.macos.use-file-dialog-packages=true" />
<option value="-Dcom.apple.macos.useScreenMenuBar=true" />
<option value="-Dcom.apple.mrj.application.apple.menu.about.name=Forge" />
<option value="-Dcom.apple.smallTabs=true" />
<option value="-Xmx1024M" />
<option value="-Dapp.dir=$APP_ROOT/Contents/Resources/" />
</bundleapp>
<copy todir="${project.build.directory}/${project.build.finalName}-osx/Forge.app/Contents/Resources/res">
<fileset dir="${basedir}/res" excludes="**/cardsfolder/**" />
</copy>
<mkdir dir="${project.build.directory}/${project.build.finalName}-osx/Forge.app/Contents/Resources/res/cardsfolder" />
<zip destfile="${project.build.directory}/${project.build.finalName}-osx/Forge.app/Contents/Resources/res/cardsfolder/cardsfolder.zip" basedir="${basedir}/res/cardsfolder" level="1" />
<symlink link="${project.build.directory}/${project.build.finalName}-osx/Applications" resource="/Applications" />
<exec executable="${basedir}/${configSourceDirectory}/create-dmg" failonerror="false">
<arg line="--volname ${project.name}-${project.version} --background ${basedir}/${configSourceDirectory}/backgroundImage.jpg --window-size 700 419 --icon-size 64 --icon ${forge.file.name} 141 283 --icon ${applications.file.name} 452 283 --icon ${changes.file.name} 645 80 --icon ${license.file.name} 645 200 --icon ${readme.file.name} 645 320 ${project.build.directory}/${project.build.finalName}.dmg ${project.build.directory}/${project.build.finalName}-osx" />
</exec>
<tar basedir="${project.build.directory}" includes="${project.build.finalName}.dmg" destfile="${project.build.directory}/${project.build.finalName}-osx.tar.bz2" compression="bzip2" />
<!--<symlink link="${project.build.directory}/${project.build.finalName}-osx/Applications" action="delete" /> -->
<exec executable="rm" failonerror="false">
<arg line="-f ${project.build.directory}/${project.build.finalName}-osx/Applications" />
</exec>
</target>
</configuration>
<goals>
<goal>run</goal>
</goals>
</execution>
</executions>
</plugin>
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>build-helper-maven-plugin</artifactId>
<version>1.8</version>
<executions>
<execution>
<id>released-version</id>
<phase>validate</phase>
<goals>
<goal>released-version</goal>
</goals>
</execution>
<execution>
<id>parse-version</id>
<goals>
<goal>parse-version</goal>
</goals>
</execution>
<execution>
<id>attach-distribution-osx</id>
<phase>post-integration-test</phase>
<goals>
<goal>attach-artifact</goal>
</goals>
<configuration>
<artifacts>
<artifact>
<file>${project.build.directory}/${project.build.finalName}-osx.tar.bz2
</file>
<type>tar.bz2</type>
<classifier>osx</classifier>
</artifact>
</artifacts>
</configuration>
</execution>
</executions>
</plugin>
</plugins>
</build>
</profile>
<profile>
<id>test-deploy</id>
<distributionManagement>
<repository>
<id>cardforge-repo-local</id>
<url>ftp://localhost/Users/dhudson/releases</url>
</repository>
<snapshotRepository>
<id>cardforge-snapshot-repo-local</id>
<url>ftp://localhost/Users/dhudson/snapshots</url>
</snapshotRepository>
</distributionManagement>
</profile>
</profiles>
</project>

Binary file not shown.

Binary file not shown.

After

Width:  |  Height:  |  Size: 390 KiB

View File

@@ -0,0 +1,26 @@
SET app_name create-dmg
VERSION create-dmg.cur create-dmg heads/master
NEWDIR build.dir temp %-build -
NEWFILE create-dmg.zip featured %.zip %
COPYTO [build.dir]
INTO create-dmg [create-dmg.cur]/create-dmg
INTO sample [create-dmg.cur]/sample
INTO support [create-dmg.cur]/support
SUBSTVARS [build.dir<alter>]/create-dmg [[]]
ZIP [create-dmg.zip]
INTO [build-files-prefix] [build.dir]
PUT megabox-builds create-dmg.zip
PUT megabox-builds build.log
PUT s3-builds create-dmg.zip
PUT s3-builds build.log

View File

@@ -0,0 +1,210 @@
#! /bin/bash
# Create a read-only disk image of the contents of a folder
set -e;
function pure_version() {
echo '1.0.0.2'
}
function version() {
echo "create-dmg $(pure_version)"
}
function usage() {
version
echo "Creates a fancy DMG file."
echo "Usage: $(basename $0) options... image.dmg source_folder"
echo "All contents of source_folder will be copied into the disk image."
echo "Options:"
echo " --volname name"
echo " set volume name (displayed in the Finder sidebar and window title)"
echo " --volicon icon.icns"
echo " set volume icon"
echo " --background pic.png"
echo " set folder background image (provide png, gif, jpg)"
echo " --window-pos x y"
echo " set position the folder window"
echo " --window-size width height"
echo " set size of the folder window"
echo " --icon-size icon_size"
echo " set window icons size (up to 128)"
echo " --icon file_name x y"
echo " set position of the file's icon"
echo " --hide-extension file_name"
echo " hide the extension of file"
echo " --custom-icon file_name custom_icon_or_sample_file x y"
echo " set position and custom icon"
echo " --app-drop-link x y"
echo " make a drop link to Applications, at location x,y"
echo " --eula eula_file"
echo " attach a license file to the dmg"
echo " --version show tool version number"
echo " -h, --help display this help"
exit 0
}
WINX=10
WINY=60
WINW=500
WINH=350
ICON_SIZE=128
while test "${1:0:1}" = "-"; do
case $1 in
--volname)
VOLUME_NAME="$2"
shift; shift;;
--volicon)
VOLUME_ICON_FILE="$2"
shift; shift;;
--background)
BACKGROUND_FILE="$2"
BACKGROUND_FILE_NAME="$(basename $BACKGROUND_FILE)"
BACKGROUND_CLAUSE="set background picture of opts to file \".background:$BACKGROUND_FILE_NAME\""
shift; shift;;
--icon-size)
ICON_SIZE="$2"
shift; shift;;
--window-pos)
WINX=$2; WINY=$3
shift; shift; shift;;
--window-size)
WINW=$2; WINH=$3
shift; shift; shift;;
--icon)
POSITION_CLAUSE="${POSITION_CLAUSE}set position of item \"$2\" to {$3, $4}
"
shift; shift; shift; shift;;
--hide-extension)
HIDING_CLAUSE="${HIDING_CLAUSE}set the extension hidden of item \"$2\" to true"
shift; shift;;
--custom-icon)
shift; shift; shift; shift; shift;;
-h | --help)
usage;;
--version)
version; exit 0;;
--pure-version)
pure_version; exit 0;;
--app-drop-link)
APPLICATION_LINK=$2
APPLICATION_CLAUSE="set position of item \"Applications\" to {$2, $3}
"
shift; shift; shift;;
--eula)
EULA_RSRC=$2
shift; shift;;
-*)
echo "Unknown option $1. Run with --help for help."
exit 1;;
esac
done
test -z "$2" && {
echo "Not enough arguments. Invoke with --help for help."
exit 1
}
DMG_PATH="$1"
DMG_DIRNAME="$(dirname "$DMG_PATH")"
DMG_DIR="$(cd $DMG_DIRNAME > /dev/null; pwd)"
DMG_NAME="$(basename "$DMG_PATH")"
DMG_TEMP_NAME="$DMG_DIR/rw.${DMG_NAME}"
SRC_FOLDER="$(cd "$2" > /dev/null; pwd)"
test -z "$VOLUME_NAME" && VOLUME_NAME="$(basename "$DMG_PATH" .dmg)"
AUX_PATH="$(dirname $0)/support"
test -d "$AUX_PATH" || {
echo "Cannot find support directory: $AUX_PATH"
exit 1
}
if [ -f "$SRC_FOLDER/.DS_Store" ]; then
echo "Deleting any .DS_Store in source folder"
rm "$SRC_FOLDER/.DS_Store"
fi
# Create the image
echo "Creating disk image..."
test -f "${DMG_TEMP_NAME}" && rm -f "${DMG_TEMP_NAME}"
ACTUAL_SIZE=`du -sm "$SRC_FOLDER" | sed -e 's/ .*//g'`
DISK_IMAGE_SIZE=$(expr $ACTUAL_SIZE + 20)
hdiutil create -srcfolder "$SRC_FOLDER" -volname "${VOLUME_NAME}" -fs HFS+ -fsargs "-c c=64,a=16,e=16" -format UDRW -size ${DISK_IMAGE_SIZE}m "${DMG_TEMP_NAME}"
# mount it
echo "Mounting disk image..."
MOUNT_DIR="/Volumes/${VOLUME_NAME}"
# try unmount dmg if it was mounted previously (e.g. developer mounted dmg, installed app and forgot to unmount it)
echo "Unmounting disk image..."
DEV_NAME=$(hdiutil info | egrep '^/dev/' | sed 1q | awk '{print $1}')
test -d "${MOUNT_DIR}" && hdiutil detach "${DEV_NAME}"
echo "Mount directory: $MOUNT_DIR"
DEV_NAME=$(hdiutil attach -readwrite -noverify -noautoopen "${DMG_TEMP_NAME}" | egrep '^/dev/' | sed 1q | awk '{print $1}')
echo "Device name: $DEV_NAME"
if ! test -z "$BACKGROUND_FILE"; then
echo "Copying background file..."
test -d "$MOUNT_DIR/.background" || mkdir "$MOUNT_DIR/.background"
cp "$BACKGROUND_FILE" "$MOUNT_DIR/.background/$BACKGROUND_FILE_NAME"
fi
if ! test -z "$APPLICATION_LINK"; then
echo "making link to Applications dir"
echo $MOUNT_DIR
ln -s /Applications "$MOUNT_DIR/Applications"
fi
if ! test -z "$VOLUME_ICON_FILE"; then
echo "Copying volume icon file '$VOLUME_ICON_FILE'..."
cp "$VOLUME_ICON_FILE" "$MOUNT_DIR/.VolumeIcon.icns"
SetFile -c icnC "$MOUNT_DIR/.VolumeIcon.icns"
fi
# run applescript
APPLESCRIPT=$(mktemp -t createdmg)
cat "$AUX_PATH/template.applescript" | sed -e "s/WINX/$WINX/g" -e "s/WINY/$WINY/g" -e "s/WINW/$WINW/g" -e "s/WINH/$WINH/g" -e "s/BACKGROUND_CLAUSE/$BACKGROUND_CLAUSE/g" -e "s/ICON_SIZE/$ICON_SIZE/g" | perl -pe "s/POSITION_CLAUSE/$POSITION_CLAUSE/g" | perl -pe "s/APPLICATION_CLAUSE/$APPLICATION_CLAUSE/g" | perl -pe "s/HIDING_CLAUSE/$HIDING_CLAUSE/" >"$APPLESCRIPT"
echo "Running Applescript: /usr/bin/osascript \"${APPLESCRIPT}\" \"${VOLUME_NAME}\""
"/usr/bin/osascript" "${APPLESCRIPT}" "${VOLUME_NAME}" || true
echo "Done running the applescript..."
sleep 4
rm "$APPLESCRIPT"
# make sure it's not world writeable
echo "Fixing permissions..."
chmod -Rf go-w "${MOUNT_DIR}" &> /dev/null || true
echo "Done fixing permissions."
# make the top window open itself on mount:
echo "Blessing started"
bless --folder "${MOUNT_DIR}" --openfolder "${MOUNT_DIR}"
echo "Blessing finished"
if ! test -z "$VOLUME_ICON_FILE"; then
# tell the volume that it has a special file attribute
SetFile -a C "$MOUNT_DIR"
fi
# unmount
echo "Unmounting disk image..."
hdiutil detach "${DEV_NAME}"
# compress image
echo "Compressing disk image..."
hdiutil convert "${DMG_TEMP_NAME}" -format UDZO -imagekey zlib-level=9 -o "${DMG_DIR}/${DMG_NAME}"
rm -f "${DMG_TEMP_NAME}"
# adding EULA resources
if [ ! -z "${EULA_RSRC}" -a "${EULA_RSRC}" != "-null-" ]; then
echo "adding EULA resources"
"${AUX_PATH}/dmg-license.py" "${DMG_DIR}/${DMG_NAME}" "${EULA_RSRC}"
fi
echo "Disk image done"
exit 0

View File

@@ -0,0 +1,3 @@
#!/bin/sh
cd "`dirname \"$0\"`"
java -Xmx1024m -jar $project.build.finalName$

Binary file not shown.

After

Width:  |  Height:  |  Size: 141 KiB

View File

@@ -0,0 +1,3 @@
#!/bin/sh
cd "`dirname \"$0\"`"
java -Xmx1024m -jar $project.build.finalName$

View File

@@ -0,0 +1,215 @@
<?xml version="1.0"?>
<!DOCTYPE module PUBLIC
"-//Puppy Crawl//DTD Check Configuration 1.3//EN"
"http://www.puppycrawl.com/dtds/configuration_1_3.dtd">
<!--
Checkstyle configuration that checks the sun coding conventions from:
- the Java Language Specification at
http://java.sun.com/docs/books/jls/second_edition/html/index.html
- the Sun Code Conventions at http://java.sun.com/docs/codeconv/
- the Javadoc guidelines at
http://java.sun.com/j2se/javadoc/writingdoccomments/index.html
- the JDK Api documentation http://java.sun.com/j2se/docs/api/index.html
- some best practices
Checkstyle is very configurable. Be sure to read the documentation at
http://checkstyle.sf.net (or in your downloaded distribution).
Most Checks are configurable, be sure to consult the documentation.
To completely disable a check, just comment it out or delete it from the file.
Finally, it is worth reading the documentation.
-->
<module name="Checker">
<!--
If you set the basedir property below, then all reported file
names will be relative to the specified directory. See
http://checkstyle.sourceforge.net/5.x/config.html#Checker
<property name="basedir" value="${basedir}"/>
-->
<!-- Checks that a package-info.java file exists for each package. -->
<!-- See http://checkstyle.sf.net/config_javadoc.html#JavadocPackage -->
<!-- <module name="JavadocPackage"/> -->
<!-- Checks whether files end with a new line. -->
<!-- See http://checkstyle.sf.net/config_misc.html#NewlineAtEndOfFile -->
<module name="NewlineAtEndOfFile"><property name="lineSeparator" value="lf"/></module>
<!-- Checks that property files contain the same keys. -->
<!-- See http://checkstyle.sf.net/config_misc.html#Translation -->
<module name="Translation"/>
<!-- Checks for Size Violations. -->
<!-- See http://checkstyle.sf.net/config_sizes.html -->
<!-- <module name="FileLength"/> -->
<!-- Checks for whitespace -->
<!-- See http://checkstyle.sf.net/config_whitespace.html -->
<module name="FileTabCharacter"/>
<!-- Miscellaneous other checks. -->
<!-- See http://checkstyle.sf.net/config_misc.html -->
<module name="RegexpSingleline">
<property name="format" value="(^|[^\*])\s+$"/>
<property name="minimum" value="0"/>
<property name="maximum" value="0"/>
<property name="message" value="Line has trailing spaces."/>
</module>
<module name="TreeWalker">
<property name="cacheFile" value="${cacheFile}"/>
<!-- Checks for Javadoc comments. -->
<!-- See http://checkstyle.sf.net/config_javadoc.html -->
<module name="JavadocMethod">
<property name="scope" value="package"/>
</module>
<module name="JavadocType">
<property name="scope" value="package"/>
</module>
<module name="JavadocVariable">
<property name="scope" value="package"/>
</module>
<module name="JavadocStyle"/>
<!-- Checks for Naming Conventions. -->
<!-- See http://checkstyle.sf.net/config_naming.html -->
<module name="ConstantName"/>
<module name="LocalFinalVariableName"/>
<module name="LocalVariableName"/>
<module name="MemberName"/>
<!-- Allow test_ methods to have underscores in them. -->
<module name="MethodName">
<property name="format" value="^[a-z][a-zA-Z0-9]*$|^test_[_a-zA-Z0-9]*$"/>
</module>
<module name="PackageName"/>
<module name="ParameterName"/>
<module name="StaticVariableName"/>
<module name="TypeName"/>
<!-- Checks for Headers -->
<!-- See http://checkstyle.sf.net/config_header.html -->
<!-- <module name="Header"> -->
<!-- The follow property value demonstrates the ability -->
<!-- to have access to ANT properties. In this case it uses -->
<!-- the ${basedir} property to allow Checkstyle to be run -->
<!-- from any directory within a project. See property -->
<!-- expansion, -->
<!-- http://checkstyle.sf.net/config.html#properties -->
<!-- <property -->
<!-- name="headerFile" -->
<!-- value="${basedir}/java.header"/> -->
<!-- </module> -->
<!-- Following interprets the header file as regular expressions. -->
<!-- <module name="RegexpHeader"/> -->
<!-- Checks for imports -->
<!-- See http://checkstyle.sf.net/config_import.html -->
<module name="AvoidStarImport"/>
<module name="IllegalImport"/>
<!-- defaults to sun.* packages -->
<module name="RedundantImport"/>
<module name="UnusedImports"/>
<!-- Checks for Size Violations. -->
<!-- See http://checkstyle.sf.net/config_sizes.html -->
<!-- <module name="LineLength">
<property name="max" value="180"/>
</module>
<module name="MethodLength"/>
<module name="ParameterNumber"/> -->
<!-- Checks for whitespace -->
<!-- See http://checkstyle.sf.net/config_whitespace.html -->
<module name="EmptyForIteratorPad"/>
<module name="GenericWhitespace"/>
<module name="MethodParamPad"/>
<module name="NoWhitespaceAfter">
<property name="tokens" value="BNOT, DEC, DOT, INC, LNOT, UNARY_MINUS, UNARY_PLUS"/>
</module>
<module name="NoWhitespaceBefore"/>
<module name="OperatorWrap"/>
<module name="ParenPad"/>
<module name="TypecastParenPad"/>
<module name="WhitespaceAfter"/>
<module name="WhitespaceAround"/>
<!-- Modifier Checks -->
<!-- See http://checkstyle.sf.net/config_modifiers.html -->
<module name="ModifierOrder"/>
<module name="RedundantModifier"/>
<!-- Checks for blocks. You know, those {}'s -->
<!-- See http://checkstyle.sf.net/config_blocks.html -->
<module name="AvoidNestedBlocks"/>
<!-- Allow empty blocks. <module name="EmptyBlock"/> -->
<module name="LeftCurly">
<!-- Place left curly at EOL for one-line clauses,
and on next line for multi-line clauses.
-->
<!-- <property name="option" value="nlow" /> -->
</module>
<module name="NeedBraces"/>
<!-- Allow for right curly to appear on same or next line. <module name="RightCurly"/> -->
<!-- Checks for common coding problems -->
<!-- See http://checkstyle.sf.net/config_coding.html -->
<!-- <module name="AvoidInlineConditionals"/> -->
<module name="DoubleCheckedLocking"/>
<!-- MY FAVOURITE -->
<module name="EmptyStatement"/>
<module name="EqualsHashCode"/>
<!-- <module name="HiddenField"/> -->
<module name="IllegalInstantiation"/>
<module name="InnerAssignment"/>
<!-- <module name="MagicNumber"/> -->
<module name="MissingSwitchDefault"/>
<module name="RedundantThrows"/>
<module name="SimplifyBooleanExpression"/>
<module name="SimplifyBooleanReturn"/>
<!-- Checks for class design -->
<!-- See http://checkstyle.sf.net/config_design.html -->
<!-- <module name="DesignForExtension"/> -->
<module name="FinalClass"/>
<!-- <module name="HideUtilityClassConstructor"/> -->
<module name="InterfaceIsType"/>
<module name="VisibilityModifier"/>
<!-- Miscellaneous other checks. -->
<!-- See http://checkstyle.sf.net/config_misc.html -->
<module name="ArrayTypeStyle"/>
<!-- <module name="FinalParameters"/> -->
<!-- <module name="TodoComment"/> -->
<module name="UpperEll"/>
</module>
</module>

View File

@@ -0,0 +1,141 @@
#! /usr/bin/env python
"""
This script adds a license file to a DMG. Requires Xcode and a plain ascii text
license file.
Obviously only runs on a Mac.
Copyright (C) 2011 Jared Hobbs
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in
all copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
THE SOFTWARE.
"""
import os
import sys
import tempfile
import optparse
class Path(str):
def __enter__(self):
return self
def __exit__(self, type, value, traceback):
os.unlink(self)
def mktemp(dir=None, suffix=''):
(fd, filename) = tempfile.mkstemp(dir=dir, suffix=suffix)
os.close(fd)
return Path(filename)
def main(options, args):
dmgFile, license = args
with mktemp('.') as tmpFile:
with open(tmpFile, 'w') as f:
f.write("""data 'LPic' (5000) {
$"0002 0011 0003 0001 0000 0000 0002 0000"
$"0000 000E 0006 0001 0005 0007 0000 0007"
$"0008 0000 0047 0009 0000 0034 000A 0001"
$"0035 000B 0001 0020 000C 0000 0011 000D"
$"0000 005B 0004 0000 0033 000F 0001 000C"
$"0010 0000 000B 000E 0000"
};\n\n""")
with open(license, 'r') as l:
f.write('data \'TEXT\' (5002, "English") {\n')
for line in l:
if len(line) < 1000:
f.write(' "' + line.strip().replace('"', '\\"') +
'\\n"\n')
else:
for liner in line.split('.'):
f.write(' "' +
liner.strip().replace('"', '\\"') +
'. \\n"\n')
f.write('};\n\n')
f.write("""resource 'STR#' (5002, "English") {
{
"English",
"Agree",
"Disagree",
"Print",
"Save...",
"IMPORTANT - By clicking on the \\"Agree\\" button, you agree "
"to be bound by the terms of the License Agreement.",
"Software License Agreement",
"This text cannot be saved. This disk may be full or locked, or the "
"file may be locked.",
"Unable to print. Make sure you have selected a printer."
}
};""")
os.system('/usr/bin/hdiutil unflatten -quiet "%s"' % dmgFile)
os.system('%s "%s/"*.r %s -a -o "%s"' %
(options.rez, options.flat_carbon, tmpFile, dmgFile))
os.system('/usr/bin/hdiutil flatten -quiet "%s"' % dmgFile)
if options.compression is not None:
os.system('cp %s %s.temp.dmg' % (dmgFile, dmgFile))
os.remove(dmgFile)
if options.compression == "bz2":
os.system('hdiutil convert %s.temp.dmg -format UDBZ -o %s' %
(dmgFile, dmgFile))
elif options.compression == "gz":
os.system('hdiutil convert %s.temp.dmg -format ' % dmgFile +
'UDZO -imagekey zlib-devel=9 -o %s' % dmgFile)
os.remove('%s.temp.dmg' % dmgFile)
print "Successfully added license to '%s'" % dmgFile
if __name__ == '__main__':
parser = optparse.OptionParser()
parser.set_usage("""%prog <dmgFile> <licenseFile> [OPTIONS]
This program adds a software license agreement to a DMG file.
It requires Xcode and a plain ascii text <licenseFile>.
See --help for more details.""")
parser.add_option(
'--rez',
'-r',
action='store',
default='/Applications/Xcode.app/Contents/Developer/Tools/Rez',
help='The path to the Rez tool. Defaults to %default'
)
parser.add_option(
'--flat-carbon',
'-f',
action='store',
default='/Applications/Xcode.app/Contents/Developer/Platforms'
'/MacOSX.platform/Developer/SDKs/MacOSX10.7.sdk'
'/Developer/Headers/FlatCarbon',
help='The path to the FlatCarbon headers. Defaults to %default'
)
parser.add_option(
'--compression',
'-c',
action='store',
choices=['bz2', 'gz'],
default=None,
help='Optionally compress dmg using specified compression type. '
'Choices are bz2 and gz.'
)
options, args = parser.parse_args()
cond = len(args) != 2 or not os.path.exists(options.rez) \
or not os.path.exists(options.flat_carbon)
if cond:
parser.print_usage()
sys.exit(1)
main(options, args)

View File

@@ -0,0 +1,77 @@
on run (volumeName)
tell application "Finder"
tell disk (volumeName as string)
open
set theXOrigin to WINX
set theYOrigin to WINY
set theWidth to WINW
set theHeight to WINH
set theBottomRightX to (theXOrigin + theWidth)
set theBottomRightY to (theYOrigin + theHeight)
set dsStore to "\"" & "/Volumes/" & volumeName & "/" & ".DS_STORE\""
tell container window
set current view to icon view
set toolbar visible to false
set statusbar visible to false
set the bounds to {theXOrigin, theYOrigin, theBottomRightX, theBottomRightY}
set statusbar visible to false
end tell
set opts to the icon view options of container window
tell opts
set icon size to ICON_SIZE
set arrangement to not arranged
end tell
BACKGROUND_CLAUSE
-- Positioning
POSITION_CLAUSE
-- Hiding
HIDING_CLAUSE
-- Application Link Clause
APPLICATION_CLAUSE
close
open
update without registering applications
-- Force saving of the size
delay 1
tell container window
set statusbar visible to false
set the bounds to {theXOrigin, theYOrigin, theBottomRightX - 10, theBottomRightY - 10}
end tell
update without registering applications
end tell
delay 1
tell disk (volumeName as string)
tell container window
set statusbar visible to false
set the bounds to {theXOrigin, theYOrigin, theBottomRightX, theBottomRightY}
end tell
update without registering applications
end tell
--give the finder some time to write the .DS_Store file
delay 3
set waitTime to 0
set ejectMe to false
repeat while ejectMe is false
delay 1
set waitTime to waitTime + 1
if (do shell script "[ -f " & dsStore & " ]; echo $?") = "0" then set ejectMe to true
end repeat
log "waited " & waitTime & " seconds for .DS_STORE to be created."
end tell
end run

View File

@@ -0,0 +1,100 @@
<html>
<head>
<title>Tail-based by Web Sockets</title>
<link href="css/core.css" media="all" rel="stylesheet" type="text/css" />
<script type="text/javascript" src="js/jquery/jquery-1.9.1.min.js"></script>
<script type="text/javascript" src="js/observable.js"></script>
<script type="text/javascript" src="js/socket.js"></script>
<script type='text/javascript' src="js/main.js"></script>
</head>
<body>
<div class="wrap">
<div class="title">
<span>Your server: <b>ws://</b></span>
<input id="ws_uri" type="text" value="localhost:81/" name="uri"/>
<button id="connect" name="connect" class="cn">Connect</button>
<button id="disconn" name="disconn" class="dc" disabled="disabled">Disconnect</button>
</div>
<ul class="messages" id='messages'></ul>
<div class="packets" id='input'>
<span>Raw text to send:</span>
<input type="text" name="packet" value="" />
<button id="send" class="send">Send</button>
</div>
</div>
<script type="text/javascript">
if (!window.WebSocket)
alert("WebSocket not supported by this browser");
var server = Socket();
var listener = {
onOpen : function() {
$('#input').slideDown();
},
onMessage : function(m) {
if (m.data) {
addLi("incoming", m.data);
}
},
onClose : function(m) {
addLi("error", "Connection was closed (" + m.code + "): " + m.reason);
onDisconnectClicked();
$('#input').fadeOut();
}
};
server.addObserver(listener);
function addLi(className, text) {
var spanText = document.createElement('li');
spanText.className = className;
spanText.innerHTML = text;
var messageBox = $('#messages')[0];
messageBox.appendChild(spanText);
messageBox.scrollTop = messageBox.scrollHeight - messageBox.clientHeight;
}
function onConnectClicked() {
var uri = $("#ws_uri").val()
addLi("connecting", "Connecting to ws://" + uri + " ..." )
server.connect(uri);
$('#connect').attr("disabled", "disabled")
$('#disconn').removeAttr("disabled")
}
function onDisconnectClicked() {
server.close();
$('#disconn').attr("disabled", "disabled")
$('#connect').removeAttr("disabled")
}
function onSendClicked() {
var toSend = $("#input input").val();
$("#input input").val("");
addLi("outcoming", toSend);
server.send(toSend)
}
function onInputKey(event) {
if( event.keyCode == 13 )
onSendClicked();
}
function onReady() {
$('#connect').on("click", onConnectClicked);
$('#disconn').on("click", onDisconnectClicked);
$('#send').on("click", onSendClicked);
$("#input input").on("keypress", onInputKey);
}
$(onReady)
</script>
</body>
</html>

View File

@@ -0,0 +1,23 @@
ul, ol { margin: 0; }
div { border: 0px solid black; }
div.wrap { width: 640px; margin: 100px auto;}
.title { height: 24px; background-color: #ddd; padding: 4px; border: 1px solid black; border-bottom: 0px }
.title input {width: 300px; }
.title span { display: inline-block; width: 120px; text-align: right; }
.messages { height: 30ex; overflow: auto; background-color: #fff; padding: 4px; border: 1px solid black; list-style: none; }
.messages .incoming { color: #006; }
.messages .incoming:before { content: "<< "}
.messages .outcoming { color: #060; }
.messages .outcoming:before { content: ">> "}
.messages .error { color: #600; }
.messages li:nth-child(2n) { background-color: #f7f7f7; }
.packets { padding: 4px; background-color: #ddd; border: 1px solid black; border-top: 0px; display: none; }
.packets span { display: inline-block; width: 120px; text-align: right; }
.packets input {width: 400px; }
.packets button { width: 100px; }
span.alert { font-style: italic; }

File diff suppressed because it is too large Load Diff

File diff suppressed because one or more lines are too long

View File

@@ -0,0 +1,23 @@
var Observable = function(eventNames) {
var _t = {};
var observers = {};
_t.addObserver = function(obj) {
for(var i = 0; i < eventNames.length; i++) {
var evName = eventNames[i]
var method = obj["on" + evName];
if( typeof(method) === 'function') {
var handlers = observers[evName]
if( 'undefined' === typeof(handler))
handlers = observers[evName] = [];
handlers.push(obj);
}
}
}
_t.fireEvent = function() { // usually invoked as .apply(EventName, args)
var q = observers[this]
if ( q ) for( var i = 0; i < q.length; i++ ) q[i]['on'+ this].apply(q[i], arguments);
}
return _t;
}

View File

@@ -0,0 +1,27 @@
// There should be some kind of fallback to Flash-powered sockets (IE 9-, Opera with sockets switched off)
var Socket = function() {
var _t = Observable(["Open", "Message", "Close", "Error"]);
function onOpen() { _t.fireEvent.apply("Open", arguments); }
function onClose() { _t.fireEvent.apply("Close", arguments); }
function onError() { _t.fireEvent.apply("Error", arguments); }
function onMessage() { _t.fireEvent.apply("Message", arguments); }
var ws;
_t.connect = function(location) {
ws = new WebSocket("ws://" + location);
ws.onopen = onOpen;
ws.onmessage = onMessage;
ws.onclose = onClose;
ws.onerror = onError;
}
// _t.getWs = function() { return ws; }
_t.isOpen = function() { return ws && ws.readyState == ws.OPEN; }
_t.close = function() { ws && ws.close(); }
_t.send = function(text) { text != null && text.length > 0 && ws && ws.send(text); };
return _t;
};

View File

@@ -0,0 +1,369 @@
package forge;
import java.awt.event.KeyEvent;
import java.awt.event.MouseEvent;
import java.lang.reflect.InvocationTargetException;
import java.util.Collection;
import java.util.List;
import java.util.Map;
import java.util.Set;
import javax.swing.JPopupMenu;
import javax.swing.KeyStroke;
import javax.swing.MenuElement;
import javax.swing.MenuSelectionManager;
import javax.swing.SwingUtilities;
import org.apache.commons.lang3.StringUtils;
import org.apache.commons.lang3.tuple.Pair;
import com.google.common.base.Function;
import forge.assets.FSkinProp;
import forge.assets.ISkinImage;
import forge.control.FControl;
import forge.error.BugReporter;
import forge.events.UiEvent;
import forge.game.Game;
import forge.game.GameEntity;
import forge.game.GameType;
import forge.game.card.Card;
import forge.game.combat.Combat;
import forge.game.event.GameEventTurnBegan;
import forge.game.phase.PhaseHandler;
import forge.game.phase.PhaseType;
import forge.game.player.LobbyPlayer;
import forge.game.player.Player;
import forge.game.player.RegisteredPlayer;
import forge.game.spellability.SpellAbility;
import forge.game.zone.ZoneType;
import forge.gui.CardListViewer;
import forge.gui.FNetOverlay;
import forge.gui.GuiChoose;
import forge.gui.GuiUtils;
import forge.gui.SOverlayUtils;
import forge.gui.framework.SDisplayUtil;
import forge.gui.framework.SLayoutIO;
import forge.interfaces.IButton;
import forge.interfaces.IGuiBase;
import forge.item.PaperCard;
import forge.match.input.InputQueue;
import forge.net.FServer;
import forge.screens.match.CMatchUI;
import forge.screens.match.VMatchUI;
import forge.screens.match.ViewWinLose;
import forge.screens.match.controllers.CPrompt;
import forge.screens.match.controllers.CStack;
import forge.screens.match.views.VField;
import forge.screens.match.views.VHand;
import forge.screens.match.views.VPrompt;
import forge.toolbox.FButton;
import forge.toolbox.FOptionPane;
import forge.toolbox.FSkin;
import forge.toolbox.FSkin.SkinImage;
import forge.toolbox.special.PhaseLabel;
import forge.util.BuildInfo;
public class GuiDesktop implements IGuiBase {
public void invokeInEdtLater(Runnable runnable) {
SwingUtilities.invokeLater(runnable);
}
public void invokeInEdtAndWait(final Runnable proc) {
if (SwingUtilities.isEventDispatchThread()) {
// Just run in the current thread.
proc.run();
}
else {
try {
SwingUtilities.invokeAndWait(proc);
}
catch (final InterruptedException exn) {
throw new RuntimeException(exn);
}
catch (final InvocationTargetException exn) {
throw new RuntimeException(exn);
}
}
}
public boolean isGuiThread() {
return SwingUtilities.isEventDispatchThread();
}
public String getAssetsRoot() {
return StringUtils.containsIgnoreCase(BuildInfo.getVersionString(), "svn") ?
"../forge-gui/res/" : "res/";
}
public boolean mayShowCard(Card card) {
return Singletons.getControl().mayShowCard(card);
}
public void reportBug(String details) {
BugReporter.reportBug(details);
}
public void reportException(Throwable ex) {
BugReporter.reportException(ex);
}
public void reportException(Throwable ex, String message) {
BugReporter.reportException(ex, message);
}
public boolean showConfirmDialog(String message) {
return FOptionPane.showConfirmDialog(message);
}
public ISkinImage getUnskinnedIcon(String path) {
return new FSkin.UnskinnedIcon(path);
}
public int showOptionDialog(String message, String title, ISkinImage icon, String[] options, int defaultOption) {
return FOptionPane.showOptionDialog(message, title, (SkinImage)icon, options, defaultOption);
}
public <T> T showInputDialog(String message, String title, ISkinImage icon, T initialInput, T[] inputOptions) {
return FOptionPane.showInputDialog(message, title, (SkinImage)icon, initialInput, inputOptions);
}
public <T> List<T> getChoices(final String message, final int min, final int max, final Collection<T> choices, final T selected, final Function<T, String> display) {
return GuiChoose.getChoices(message, min, max, choices, selected, display);
}
public <T> List<T> order(final String title, final String top, final int remainingObjectsMin, final int remainingObjectsMax,
final List<T> sourceChoices, final List<T> destChoices, final Card referenceCard, final boolean sideboardingMode) {
return GuiChoose.order(title, top, sourceChoices, referenceCard);
}
public void showCardList(final String title, final String message, final List<PaperCard> list) {
final CardListViewer cardView = new CardListViewer(title, message, list);
cardView.setVisible(true);
cardView.dispose();
}
public IButton getBtnOK() {
return VMatchUI.SINGLETON_INSTANCE.getBtnOK();
}
public IButton getBtnCancel() {
return VMatchUI.SINGLETON_INSTANCE.getBtnCancel();
}
public void focusButton(final IButton button) {
// ensure we don't steal focus from an overlay
if (!SOverlayUtils.overlayHasFocus()) {
FThreads.invokeInEdtLater(new Runnable() {
@Override
public void run() {
((FButton)button).requestFocusInWindow();
}
});
}
}
public void flashIncorrectAction() {
SDisplayUtil.remind(VPrompt.SINGLETON_INSTANCE);
}
public void updatePhase() {
PhaseHandler pH = Singletons.getControl().getObservedGame().getPhaseHandler();
Player p = pH.getPlayerTurn();
PhaseType ph = pH.getPhase();
final CMatchUI matchUi = CMatchUI.SINGLETON_INSTANCE;
PhaseLabel lbl = matchUi.getFieldViewFor(p).getPhaseIndicator().getLabelFor(ph);
matchUi.resetAllPhaseButtons();
if (lbl != null) lbl.setActive(true);
}
public void updateTurn(final GameEventTurnBegan event, final Game game) {
VField nextField = CMatchUI.SINGLETON_INSTANCE.getFieldViewFor(event.turnOwner);
SDisplayUtil.showTab(nextField);
CPrompt.SINGLETON_INSTANCE.updateText(game);
}
public void updatePlayerControl() {
CMatchUI.SINGLETON_INSTANCE.initHandViews(FServer.getLobby().getGuiPlayer());
SLayoutIO.loadLayout(null);
VMatchUI.SINGLETON_INSTANCE.populate();
for (VHand h : VMatchUI.SINGLETON_INSTANCE.getHands()) {
h.getLayoutControl().updateHand();
}
}
public void finishGame() {
new ViewWinLose(Singletons.getControl().getObservedGame());
SOverlayUtils.showOverlay();
}
public void updateStack() {
CStack.SINGLETON_INSTANCE.update();
}
public void startMatch(GameType gameType, List<RegisteredPlayer> players) {
FControl.instance.startMatch(gameType, players);
}
public void setPanelSelection(Card c) {
GuiUtils.setPanelSelection(c);
}
public SpellAbility getAbilityToPlay(List<SpellAbility> abilities, Object triggerEvent) {
if (triggerEvent == null) {
if (abilities.isEmpty()) {
return null;
}
if (abilities.size() == 1) {
return abilities.get(0);
}
return GuiChoose.oneOrNone("Choose ability to play", abilities);
}
if (abilities.isEmpty()) {
return null;
}
if (abilities.size() == 1 && !abilities.get(0).promptIfOnlyPossibleAbility()) {
if (abilities.get(0).canPlay()) {
return abilities.get(0); //only return ability if it's playable, otherwise return null
}
return null;
}
//show menu if mouse was trigger for ability
final JPopupMenu menu = new JPopupMenu("Abilities");
boolean enabled;
boolean hasEnabled = false;
int shortcut = KeyEvent.VK_1; //use number keys as shortcuts for abilities 1-9
for (final SpellAbility ab : abilities) {
enabled = ab.canPlay();
if (enabled) {
hasEnabled = true;
}
GuiUtils.addMenuItem(menu, FSkin.encodeSymbols(ab.toString(), true),
shortcut > 0 ? KeyStroke.getKeyStroke(shortcut, 0) : null,
new Runnable() {
@Override
public void run() {
CPrompt.SINGLETON_INSTANCE.getInputControl().selectAbility(ab);
}
}, enabled);
if (shortcut > 0) {
shortcut++;
if (shortcut > KeyEvent.VK_9) {
shortcut = 0; //stop adding shortcuts after 9
}
}
}
if (hasEnabled) { //only show menu if at least one ability can be played
SwingUtilities.invokeLater(new Runnable() { //use invoke later to ensure first ability selected by default
public void run() {
MenuSelectionManager.defaultManager().setSelectedPath(new MenuElement[]{menu, menu.getSubElements()[0]});
}
});
MouseEvent mouseEvent = (MouseEvent) triggerEvent;
menu.show(mouseEvent.getComponent(), mouseEvent.getX(), mouseEvent.getY());
}
return null; //delay ability until choice made
}
public void hear(LobbyPlayer player, String message) {
FNetOverlay.SINGLETON_INSTANCE.addMessage(player.getName(), message);
}
public int getAvatarCount() {
if (FSkin.isLoaded()) {
FSkin.getAvatars().size();
}
return 0;
}
@Override
public int showOptionDialog(String message, String title, FSkinProp icon, String[] options, int defaultOption) {
return FOptionPane.showOptionDialog(message, title, FSkin.getImage(icon), options, defaultOption);
}
@Override
public <T> T showInputDialog(String message, String title, FSkinProp icon, T initialInput, T[] inputOptions) {
return FOptionPane.showInputDialog(message, title, FSkin.getImage(icon), initialInput, inputOptions);
}
@Override
public void fireEvent(UiEvent e) {
CMatchUI.SINGLETON_INSTANCE.fireEvent(e);
}
@Override
public void setCard(Card card) {
CMatchUI.SINGLETON_INSTANCE.setCard(card);
}
@Override
public void showCombat(Combat combat) {
CMatchUI.SINGLETON_INSTANCE.showCombat(combat);
}
@Override
public void setUsedToPay(Card card, boolean b) {
CMatchUI.SINGLETON_INSTANCE.setUsedToPay(card, b);
}
@Override
public void setHighlighted(Player player, boolean b) {
CMatchUI.SINGLETON_INSTANCE.setHighlighted(player, b);
}
@Override
public void showPromptMessage(String message) {
CMatchUI.SINGLETON_INSTANCE.showMessage(message);
}
@Override
public boolean stopAtPhase(Player playerTurn, PhaseType phase) {
return CMatchUI.SINGLETON_INSTANCE.stopAtPhase(playerTurn, phase);
}
@Override
public InputQueue getInputQueue() {
return FControl.instance.getInputQueue();
}
@Override
public Game getGame() {
return FControl.instance.getObservedGame();
}
@Override
public void updateZones(List<Pair<Player, ZoneType>> zonesToUpdate) {
CMatchUI.SINGLETON_INSTANCE.updateZones(zonesToUpdate);
}
@Override
public void updateCards(Set<Card> cardsToUpdate) {
CMatchUI.SINGLETON_INSTANCE.updateCards(cardsToUpdate);
}
@Override
public void updateManaPool(List<Player> manaPoolUpdate) {
CMatchUI.SINGLETON_INSTANCE.updateManaPool(manaPoolUpdate);
}
@Override
public void updateLives(List<Player> livesUpdate) {
CMatchUI.SINGLETON_INSTANCE.updateLives(livesUpdate);
}
@Override
public void endCurrentGame() {
FControl.instance.endCurrentGame();
}
@Override
public Map<Card, Integer> getDamageToAssign(Card attacker, List<Card> blockers,
int damageDealt, GameEntity defender, boolean overrideOrder) {
return CMatchUI.SINGLETON_INSTANCE.getDamageToAssign(attacker, blockers,
damageDealt, defender, overrideOrder);
}
}

View File

@@ -21,21 +21,20 @@ import com.google.common.cache.CacheBuilder;
import com.google.common.cache.CacheLoader.InvalidCacheLoadException;
import com.google.common.cache.LoadingCache;
import com.mortennobel.imagescaling.ResampleOp;
import forge.card.CardDb;
import forge.card.CardRules;
import forge.card.CardSplitType;
import forge.assets.FSkinProp;
import forge.assets.ImageUtil;
import forge.game.card.Card;
import forge.game.player.IHasIcon;
import forge.gui.toolbox.FSkin;
import forge.gui.toolbox.FSkin.SkinIcon;
import forge.item.InventoryItem;
import forge.item.PaperCard;
import forge.properties.ForgePreferences.FPref;
import forge.properties.NewConstants;
import forge.util.Base64Coder;
import forge.properties.ForgeConstants;
import forge.toolbox.FSkin;
import forge.toolbox.FSkin.SkinIcon;
import org.apache.commons.lang3.StringUtils;
import javax.imageio.ImageIO;
import java.awt.image.BufferedImage;
import java.io.File;
import java.util.HashSet;
@@ -54,7 +53,7 @@ import java.util.concurrent.ExecutionException;
* </ul>
*
* @author Forge
* @version $Id$
* @version $Id: ImageCache.java 25093 2014-03-08 05:36:37Z drdev $
*/
public class ImageCache {
// short prefixes to save memory
@@ -65,7 +64,7 @@ public class ImageCache {
static {
BufferedImage defImage = null;
try {
defImage = ImageIO.read(new File(NewConstants.NO_CARD_FILE));
defImage = ImageIO.read(new File(ForgeConstants.NO_CARD_FILE));
} catch (Exception ex) {
System.err.println("could not load default card image");
} finally {
@@ -110,7 +109,7 @@ public class ImageCache {
if (_missingIconKeys.contains(imageKey) ||
null == (i = scaleImage(ihi.getIconImageKey(), -1, -1, false))) {
_missingIconKeys.add(imageKey);
return FSkin.getIcon(FSkin.InterfaceIcons.ICO_UNKNOWN);
return FSkin.getIcon(FSkinProp.ICO_UNKNOWN);
}
return new FSkin.UnskinnedIcon(i);
}
@@ -132,7 +131,7 @@ public class ImageCache {
if(altState)
imageKey = imageKey.substring(0, imageKey.length() - ImageKeys.BACKFACE_POSTFIX.length());
if (imageKey.startsWith(ImageKeys.CARD_PREFIX)) {
imageKey = getImageKey(getPaperCardFromImageKey(imageKey.substring(2)), altState, true);
imageKey = ImageUtil.getImageKey(ImageUtil.getPaperCardFromImageKey(imageKey.substring(2)), altState, true);
if (StringUtils.isBlank(imageKey)) {
return _defaultImage;
}
@@ -155,16 +154,6 @@ public class ImageCache {
return original;
}
private static PaperCard getPaperCardFromImageKey(String key) {
if( key == null )
return null;
PaperCard cp = StaticData.instance().getCommonCards().getCard(key);
if ( cp == null )
cp = StaticData.instance().getVariantCards().getCard(key);
return cp;
}
private static BufferedImage scaleImage(String key, final int width, final int height, boolean useDefaultImage) {
if (StringUtils.isEmpty(key) || (3 > width && -1 != width) || (3 > height && -1 != height)) {
// picture too small or key not defined; return a blank
@@ -187,7 +176,7 @@ public class ImageCache {
double scaleX = (-1 == width ? 1 : (double)width / original.getWidth());
double scaleY = (-1 == height? 1 : (double)height / original.getHeight());
double bestFitScale = Math.min(scaleX, scaleY);
if ((bestFitScale > 1) && !mayEnlarge()) {
if ((bestFitScale > 1) && !ImageUtil.mayEnlarge()) {
bestFitScale = 1;
}
@@ -208,10 +197,6 @@ public class ImageCache {
return result;
}
private static boolean mayEnlarge() {
return Singletons.getModel().getPreferences().getPrefBoolean(FPref.UI_SCALE_LARGER);
}
/**
* Returns the Image corresponding to the key.
*/
@@ -230,110 +215,4 @@ public class ImageCache {
return null;
}
}
private static String getImageRelativePath(PaperCard cp, boolean backFace, boolean includeSet, boolean isDownloadUrl) {
final String nameToUse = cp == null ? null : getNameToUse(cp, backFace);
if ( null == nameToUse )
return null;
StringBuilder s = new StringBuilder();
CardRules card = cp.getRules();
String edition = cp.getEdition();
s.append(ImageCache.toMWSFilename(nameToUse));
final int cntPictures;
final boolean hasManyPictures;
final CardDb db = !card.isVariant() ? Singletons.getMagicDb().getCommonCards() : Singletons.getMagicDb().getVariantCards();
if (includeSet) {
cntPictures = db.getPrintCount(card.getName(), edition);
hasManyPictures = cntPictures > 1;
} else {
// without set number of pictures equals number of urls provided in Svar:Picture
String urls = card.getPictureUrl(backFace);
cntPictures = StringUtils.countMatches(urls, "\\") + 1;
// raise the art index limit to the maximum of the sets this card was printed in
int maxCntPictures = db.getMaxPrintCount(card.getName());
hasManyPictures = maxCntPictures > 1;
}
int artIdx = cp.getArtIndex() - 1;
if (hasManyPictures) {
if ( cntPictures <= artIdx ) // prevent overflow
artIdx = cntPictures == 0 ? 0 : artIdx % cntPictures;
s.append(artIdx + 1);
}
// for whatever reason, MWS-named plane cards don't have the ".full" infix
if (!card.getType().isPlane() && !card.getType().isPhenomenon()) {
s.append(".full");
}
final String fname;
if (isDownloadUrl) {
s.append(".jpg");
fname = Base64Coder.encodeString(s.toString(), true);
} else {
fname = s.toString();
}
if (includeSet) {
String editionAliased = isDownloadUrl ? Singletons.getMagicDb().getEditions().getCode2ByCode(edition) : getSetFolder(edition);
return String.format("%s/%s", editionAliased, fname);
} else {
return fname;
}
}
public static boolean hasBackFacePicture(PaperCard cp) {
CardSplitType cst = cp.getRules().getSplitType();
return cst == CardSplitType.Transform || cst == CardSplitType.Flip;
}
public static String getSetFolder(String edition) {
return !NewConstants.CACHE_CARD_PICS_SUBDIR.containsKey(edition)
? Singletons.getMagicDb().getEditions().getCode2ByCode(edition) // by default 2-letter codes from MWS are used
: NewConstants.CACHE_CARD_PICS_SUBDIR.get(edition); // may use custom paths though
}
private static String getNameToUse(PaperCard cp, boolean backFace) {
final CardRules card = cp.getRules();
if (backFace ) {
if ( hasBackFacePicture(cp) )
return card.getOtherPart().getName();
else
return null;
} else if(CardSplitType.Split == cp.getRules().getSplitType()) {
return card.getMainPart().getName() + card.getOtherPart().getName();
} else {
return cp.getName();
}
}
public static String getImageKey(PaperCard cp, boolean backFace, boolean includeSet) {
return getImageRelativePath(cp, backFace, includeSet, false);
}
public static String getDownloadUrl(PaperCard cp, boolean backFace) {
return getImageRelativePath(cp, backFace, true, true);
}
public static String toMWSFilename(String in) {
final StringBuffer out = new StringBuffer();
char c;
for (int i = 0; i < in.length(); i++) {
c = in.charAt(i);
if ((c == '"') || (c == '/') || (c == ':') || (c == '?')) {
out.append("");
} else {
out.append(c);
}
}
return out.toString();
}
}

View File

@@ -1,11 +1,15 @@
package forge;
import com.google.common.cache.CacheLoader;
import forge.assets.ImageUtil;
import forge.error.BugReporter;
import forge.properties.NewConstants;
import forge.properties.ForgeConstants;
import org.apache.commons.lang3.StringUtils;
import javax.imageio.ImageIO;
import java.awt.image.BufferedImage;
import java.io.File;
import java.io.IOException;
@@ -25,34 +29,34 @@ final class ImageLoader extends CacheLoader<String, BufferedImage> {
final String filename;
if (key.startsWith(ImageKeys.TOKEN_PREFIX)) {
filename = key.substring(ImageKeys.TOKEN_PREFIX.length());
path = NewConstants.CACHE_TOKEN_PICS_DIR;
path = ForgeConstants.CACHE_TOKEN_PICS_DIR;
} else if (key.startsWith(ImageKeys.ICON_PREFIX)) {
filename = key.substring(ImageKeys.ICON_PREFIX.length());
path = NewConstants.CACHE_ICON_PICS_DIR;
path = ForgeConstants.CACHE_ICON_PICS_DIR;
} else if (key.startsWith(ImageKeys.BOOSTER_PREFIX)) {
filename = key.substring(ImageKeys.BOOSTER_PREFIX.length());
path = NewConstants.CACHE_BOOSTER_PICS_DIR;
path = ForgeConstants.CACHE_BOOSTER_PICS_DIR;
} else if (key.startsWith(ImageKeys.FATPACK_PREFIX)) {
filename = key.substring(ImageKeys.FATPACK_PREFIX.length());
path = NewConstants.CACHE_FATPACK_PICS_DIR;
path = ForgeConstants.CACHE_FATPACK_PICS_DIR;
} else if (key.startsWith(ImageKeys.PRECON_PREFIX)) {
filename = key.substring(ImageKeys.PRECON_PREFIX.length());
path = NewConstants.CACHE_PRECON_PICS_DIR;
path = ForgeConstants.CACHE_PRECON_PICS_DIR;
} else if (key.startsWith(ImageKeys.TOURNAMENTPACK_PREFIX)) {
filename = key.substring(ImageKeys.TOURNAMENTPACK_PREFIX.length());
path = NewConstants.CACHE_TOURNAMENTPACK_PICS_DIR;
path = ForgeConstants.CACHE_TOURNAMENTPACK_PICS_DIR;
} else {
filename = key;
path = NewConstants.CACHE_CARD_PICS_DIR;
path = ForgeConstants.CACHE_CARD_PICS_DIR;
}
BufferedImage ret = _findFile(key, path, filename);
// some S00 cards are really part of 6ED
if (null == ret ) {
String s2kAlias = ImageCache.getSetFolder("S00");
String s2kAlias = ImageUtil.getSetFolder("S00");
if ( filename.startsWith(s2kAlias) ) {
ret = _findFile(key, path, filename.replace(s2kAlias, ImageCache.getSetFolder("6ED")));
ret = _findFile(key, path, filename.replace(s2kAlias, ImageUtil.getSetFolder("6ED")));
}
}

View File

@@ -18,10 +18,7 @@
package forge;
import forge.control.FControl;
import forge.gui.toolbox.FProgressBar;
import forge.gui.workshop.CardScriptInfo;
import forge.model.FModel;
import forge.properties.NewConstants;
import forge.view.FView;
/**
@@ -29,10 +26,8 @@ import forge.view.FView;
*/
public final class Singletons {
private static boolean initialized = false;
private static FModel model = null;
private static FView view = null;
private static FControl control = null;
private static StaticData magicDb = null;
/**
* IMPORTANT - does not return view frame! Must call
@@ -40,15 +35,14 @@ public final class Singletons {
*/
public static FView getView() { return view; }
public static FControl getControl() { return control; }
public static FModel getModel() { return model; }
public static StaticData getMagicDb() { return magicDb; }
public static void initializeOnce(boolean withUi) {
FThreads.assertExecutedByEdt(false);
synchronized (Singletons.class) {
if(initialized)
if (initialized) {
throw new IllegalStateException("Singletons.initializeOnce really cannot be called again");
}
initialized = true;
}
@@ -56,29 +50,7 @@ public final class Singletons {
view = FView.SINGLETON_INSTANCE;
}
CardStorageReader.ProgressObserver progressBarBridge = view == null
? CardStorageReader.ProgressObserver.emptyObserver : new CardStorageReader.ProgressObserver() {
FProgressBar bar = view.getSplash().getProgressBar();
@Override
public void setOperationName(final String name, final boolean usePercents) {
FThreads.invokeInEdtLater(new Runnable() { @Override public void run() {
bar.setDescription(name);
bar.setPercentMode(usePercents);
} });
}
@Override
public void report(int current, int total) {
if ( total != bar.getMaximum())
bar.setMaximum(total);
bar.setValueThreadSafe(current);
}
};
// Loads all cards (using progress bar).
final CardStorageReader reader = new CardStorageReader(NewConstants.CARD_DATA_DIR, progressBarBridge, CardScriptInfo.readerObserver);
magicDb = new StaticData(reader, "res/editions", "res/blockdata");
model = FModel.getInstance(withUi);
FModel.initialize(view == null ? null : view.getSplash().getProgressBar());
if (withUi) {
control = FControl.instance;

View File

@@ -21,8 +21,8 @@ import forge.FThreads;
import forge.ImageCache;
import forge.Singletons;
import forge.ai.LobbyPlayerAi;
import forge.assets.FSkinProp;
import forge.control.KeyboardShortcuts.Shortcut;
import forge.deck.io.DeckPreferences;
import forge.game.Game;
import forge.game.GameRules;
import forge.game.GameType;
@@ -31,33 +31,35 @@ import forge.game.card.Card;
import forge.game.player.LobbyPlayer;
import forge.game.player.Player;
import forge.game.player.RegisteredPlayer;
import forge.gui.CardPreferences;
import forge.gui.GuiDialog;
import forge.gui.SOverlayUtils;
import forge.gui.deckeditor.CDeckEditorUI;
import forge.gui.framework.*;
import forge.gui.home.settings.GamePlayerUtil;
import forge.gui.match.CMatchUI;
import forge.gui.match.VMatchUI;
import forge.gui.match.controllers.CDock;
import forge.gui.match.controllers.CLog;
import forge.gui.match.controllers.CPrompt;
import forge.gui.match.controllers.CStack;
import forge.gui.match.views.VAntes;
import forge.gui.match.views.VField;
import forge.gui.menus.ForgeMenu;
import forge.gui.player.LobbyPlayerHuman;
import forge.gui.toolbox.FOptionPane;
import forge.gui.toolbox.FSkin;
import forge.gui.toolbox.itemmanager.ItemManagerConfig;
import forge.player.GamePlayerUtil;
import forge.player.LobbyPlayerHuman;
import forge.match.input.InputQueue;
import forge.menus.ForgeMenu;
import forge.model.FModel;
import forge.net.FServer;
import forge.properties.ForgePreferences;
import forge.properties.ForgePreferences.FPref;
import forge.properties.NewConstants;
import forge.properties.ForgeConstants;
import forge.quest.QuestController;
import forge.quest.data.QuestPreferences.QPref;
import forge.quest.io.QuestDataIO;
import forge.screens.deckeditor.CDeckEditorUI;
import forge.screens.match.CMatchUI;
import forge.screens.match.VMatchUI;
import forge.screens.match.controllers.CDock;
import forge.screens.match.controllers.CLog;
import forge.screens.match.controllers.CPrompt;
import forge.screens.match.controllers.CStack;
import forge.screens.match.views.VAntes;
import forge.screens.match.views.VDev;
import forge.screens.match.views.VField;
import forge.sound.SoundSystem;
import forge.toolbox.FOptionPane;
import forge.toolbox.FSkin;
import forge.toolbox.special.PhaseIndicator;
import forge.view.FFrame;
import forge.view.FView;
@@ -155,7 +157,7 @@ public enum FControl implements KeyEventDispatcher {
this.closeAction = closeAction0;
Singletons.getView().getNavigationBar().updateBtnCloseTooltip();
final ForgePreferences prefs = Singletons.getModel().getPreferences();
final ForgePreferences prefs = FModel.getPreferences();
prefs.setPref(FPref.UI_CLOSE_ACTION, closeAction0.toString());
prefs.save();
}
@@ -190,24 +192,20 @@ public enum FControl implements KeyEventDispatcher {
// Preloads skin components (using progress bar).
FSkin.loadFull(true);
CardPreferences.load(NewConstants.CARD_PREFS_FILE);
DeckPreferences.load(NewConstants.DECK_PREFS_FILE);
ItemManagerConfig.load(NewConstants.ITEM_VIEW_PREFS_FILE);
this.shortcuts = KeyboardShortcuts.attachKeyboardShortcuts();
this.display = FView.SINGLETON_INSTANCE.getLpnDocument();
final ForgePreferences prefs = Singletons.getModel().getPreferences();
final ForgePreferences prefs = FModel.getPreferences();
this.closeAction = CloseAction.valueOf(prefs.getPref(FPref.UI_CLOSE_ACTION));
FView.SINGLETON_INSTANCE.setSplashProgessBarMessage("About to load current quest.");
// Preload quest data if present
final File dirQuests = new File(NewConstants.QUEST_SAVE_DIR);
final String questname = Singletons.getModel().getQuestPreferences().getPref(QPref.CURRENT_QUEST);
final File dirQuests = new File(ForgeConstants.QUEST_SAVE_DIR);
final String questname = FModel.getQuestPreferences().getPref(QPref.CURRENT_QUEST);
final File data = new File(dirQuests.getPath(), questname);
if (data.exists()) {
Singletons.getModel().getQuest().load(QuestDataIO.loadData(data));
FModel.getQuest().load(QuestDataIO.loadData(data));
}
// Handles resizing in null layouts of layers in JLayeredPane as well as saving window layout
@@ -301,7 +299,7 @@ public enum FControl implements KeyEventDispatcher {
if (screen == FScreen.MATCH_SCREEN) {
if (isMatchBackgroundImageVisible()) {
FView.SINGLETON_INSTANCE.getPnlInsets().setForegroundImage(FSkin.getIcon(FSkin.Backgrounds.BG_MATCH));
FView.SINGLETON_INSTANCE.getPnlInsets().setForegroundImage(FSkin.getIcon(FSkinProp.BG_MATCH));
}
SOverlayUtils.showTargetingOverlay();
}
@@ -311,7 +309,7 @@ public enum FControl implements KeyEventDispatcher {
}
private boolean isMatchBackgroundImageVisible() {
return Singletons.getModel().getPreferences().getPrefBoolean(FPref.UI_MATCH_IMAGE_VISIBLE);
return FModel.getPreferences().getPrefBoolean(FPref.UI_MATCH_IMAGE_VISIBLE);
}
public boolean ensureScreenActive(FScreen screen) {
@@ -349,13 +347,13 @@ public enum FControl implements KeyEventDispatcher {
public Player getCurrentPlayer() {
// try current priority
Player currentPriority = game.getPhaseHandler().getPriorityPlayer();
if (null != currentPriority && currentPriority.getLobbyPlayer() == FServer.instance.getLobby().getGuiPlayer()) {
if (null != currentPriority && currentPriority.getLobbyPlayer() == FServer.getLobby().getGuiPlayer()) {
return currentPriority;
}
// otherwise find just any player, belonging to this lobbyplayer
for (Player p : game.getPlayers()) {
if (p.getLobbyPlayer() == FServer.instance.getLobby().getGuiPlayer()) {
if (p.getLobbyPlayer() == FServer.getLobby().getGuiPlayer()) {
return p;
}
}
@@ -385,7 +383,7 @@ public enum FControl implements KeyEventDispatcher {
public final void stopGame() {
List<Player> pp = new ArrayList<Player>();
for (Player p : game.getPlayers()) {
if (p.getOriginalLobbyPlayer() == FServer.instance.getLobby().getGuiPlayer()) {
if (p.getOriginalLobbyPlayer() == FServer.getLobby().getGuiPlayer()) {
pp.add(p);
}
}
@@ -400,7 +398,7 @@ public enum FControl implements KeyEventDispatcher {
}
Player priorityPlayer = game.getPhaseHandler().getPriorityPlayer();
boolean humanHasPriority = priorityPlayer == null || priorityPlayer.getLobbyPlayer() == FServer.instance.getLobby().getGuiPlayer();
boolean humanHasPriority = priorityPlayer == null || priorityPlayer.getLobbyPlayer() == FServer.getLobby().getGuiPlayer();
if (hasHuman && humanHasPriority) {
game.getAction().checkGameOverCondition();
@@ -446,11 +444,11 @@ public enum FControl implements KeyEventDispatcher {
this.game = null;
}
private final FControlGameEventHandler fcVisitor = new FControlGameEventHandler(this);
private final FControlGamePlayback playbackControl = new FControlGamePlayback(this);
private final FControlGameEventHandler fcVisitor = new FControlGameEventHandler();
private final FControlGamePlayback playbackControl = new FControlGamePlayback();
private void attachToGame(Game game0) {
if (game0.getRules().getGameType() == GameType.Quest) {
QuestController qc = Singletons.getModel().getQuest();
QuestController qc = FModel.getQuest();
// Reset new list when the Match round starts, not when each game starts
if (game0.getMatch().getPlayedGames().isEmpty()) {
qc.getCards().resetNewList();
@@ -463,14 +461,14 @@ public enum FControl implements KeyEventDispatcher {
this.game = game0;
game.subscribeToEvents(Singletons.getControl().getSoundSystem());
LobbyPlayer humanLobbyPlayer = FServer.instance.getLobby().getGuiPlayer();
LobbyPlayer humanLobbyPlayer = FServer.getLobby().getGuiPlayer();
// The UI controls should use these game data as models
CMatchUI.SINGLETON_INSTANCE.initMatch(game.getRegisteredPlayers(), humanLobbyPlayer);
CDock.SINGLETON_INSTANCE.setModel(game, humanLobbyPlayer);
CStack.SINGLETON_INSTANCE.setModel(game.getStack(), humanLobbyPlayer);
CLog.SINGLETON_INSTANCE.setModel(game.getGameLog());
Singletons.getModel().getPreferences().actuateMatchPreferences();
actuateMatchPreferences();
VAntes.SINGLETON_INSTANCE.setModel(game.getRegisteredPlayers());
setCurrentScreen(FScreen.MATCH_SCREEN);
@@ -484,7 +482,7 @@ public enum FControl implements KeyEventDispatcher {
// Add playback controls to match if needed
gameHasHumanPlayer = false;
for (Player p : game.getPlayers()) {
if (p.getController().getLobbyPlayer() == FServer.instance.getLobby().getGuiPlayer())
if (p.getController().getLobbyPlayer() == FServer.getLobby().getGuiPlayer())
gameHasHumanPlayer = true;
}
@@ -492,8 +490,6 @@ public enum FControl implements KeyEventDispatcher {
game.subscribeToEvents(playbackControl);
}
for (final VField field : VMatchUI.SINGLETON_INSTANCE.getFieldViews()) {
field.getDetailsPanel().getLblLibrary().setHoverable(ForgePreferences.DEV_MODE);
}
@@ -545,7 +541,7 @@ public enum FControl implements KeyEventDispatcher {
* PLAYER_NAME setting is blank. Does not apply to a hotseat game.
*/
private void setPlayerName(List<RegisteredPlayer> players) {
final ForgePreferences prefs = Singletons.getModel().getPreferences();
final ForgePreferences prefs = FModel.getPreferences();
if (StringUtils.isBlank(prefs.getPref(FPref.PLAYER_NAME))) {
boolean isPlayerOneHuman = players.get(0).getPlayer() instanceof LobbyPlayerHuman;
boolean isPlayerTwoComputer = players.get(1).getPlayer() instanceof LobbyPlayerAi;
@@ -560,7 +556,7 @@ public enum FControl implements KeyEventDispatcher {
}
public void startMatch(GameType gameType, List<GameType> appliedVariants, List<RegisteredPlayer> players) {
boolean useRandomFoil = Singletons.getModel().getPreferences().getPrefBoolean(FPref.UI_RANDOM_FOIL);
boolean useRandomFoil = FModel.getPreferences().getPrefBoolean(FPref.UI_RANDOM_FOIL);
for(RegisteredPlayer rp : players) {
rp.setRandomFoil(useRandomFoil);
}
@@ -568,9 +564,9 @@ public enum FControl implements KeyEventDispatcher {
GameRules rules = new GameRules(gameType);
if (null != appliedVariants && !appliedVariants.isEmpty())
rules.setAppliedVariants(appliedVariants);
rules.setPlayForAnte(Singletons.getModel().getPreferences().getPrefBoolean(FPref.UI_ANTE));
rules.setManaBurn(Singletons.getModel().getPreferences().getPrefBoolean(FPref.UI_MANABURN));
rules.canCloneUseTargetsImage = Singletons.getModel().getPreferences().getPrefBoolean(FPref.UI_CLONE_MODE_SOURCE);
rules.setPlayForAnte(FModel.getPreferences().getPrefBoolean(FPref.UI_ANTE));
rules.setManaBurn(FModel.getPreferences().getPrefBoolean(FPref.UI_MANABURN));
rules.canCloneUseTargetsImage = FModel.getPreferences().getPrefBoolean(FPref.UI_CLONE_MODE_SOURCE);
final Match mc = new Match(rules, players);
SOverlayUtils.startGameOverlay();
@@ -583,5 +579,95 @@ public enum FControl implements KeyEventDispatcher {
}
});
}
/**
* TODO: Needs to be reworked for efficiency with rest of prefs saves in
* codebase.
*/
public void writeMatchPreferences() {
final ForgePreferences prefs = FModel.getPreferences();
final List<VField> fieldViews = VMatchUI.SINGLETON_INSTANCE.getFieldViews();
// AI field is at index [1]
PhaseIndicator fvAi = fieldViews.get(1).getPhaseIndicator();
prefs.setPref(FPref.PHASE_AI_UPKEEP, String.valueOf(fvAi.getLblUpkeep().getEnabled()));
prefs.setPref(FPref.PHASE_AI_DRAW, String.valueOf(fvAi.getLblDraw().getEnabled()));
prefs.setPref(FPref.PHASE_AI_MAIN1, String.valueOf(fvAi.getLblMain1().getEnabled()));
prefs.setPref(FPref.PHASE_AI_BEGINCOMBAT, String.valueOf(fvAi.getLblBeginCombat().getEnabled()));
prefs.setPref(FPref.PHASE_AI_DECLAREATTACKERS, String.valueOf(fvAi.getLblDeclareAttackers().getEnabled()));
prefs.setPref(FPref.PHASE_AI_DECLAREBLOCKERS, String.valueOf(fvAi.getLblDeclareBlockers().getEnabled()));
prefs.setPref(FPref.PHASE_AI_FIRSTSTRIKE, String.valueOf(fvAi.getLblFirstStrike().getEnabled()));
prefs.setPref(FPref.PHASE_AI_COMBATDAMAGE, String.valueOf(fvAi.getLblCombatDamage().getEnabled()));
prefs.setPref(FPref.PHASE_AI_ENDCOMBAT, String.valueOf(fvAi.getLblEndCombat().getEnabled()));
prefs.setPref(FPref.PHASE_AI_MAIN2, String.valueOf(fvAi.getLblMain2().getEnabled()));
prefs.setPref(FPref.PHASE_AI_EOT, String.valueOf(fvAi.getLblEndTurn().getEnabled()));
prefs.setPref(FPref.PHASE_AI_CLEANUP, String.valueOf(fvAi.getLblCleanup().getEnabled()));
// Human field is at index [0]
PhaseIndicator fvHuman = fieldViews.get(0).getPhaseIndicator();
prefs.setPref(FPref.PHASE_HUMAN_UPKEEP, String.valueOf(fvHuman.getLblUpkeep().getEnabled()));
prefs.setPref(FPref.PHASE_HUMAN_DRAW, String.valueOf(fvHuman.getLblDraw().getEnabled()));
prefs.setPref(FPref.PHASE_HUMAN_MAIN1, String.valueOf(fvHuman.getLblMain1().getEnabled()));
prefs.setPref(FPref.PHASE_HUMAN_BEGINCOMBAT, String.valueOf(fvHuman.getLblBeginCombat().getEnabled()));
prefs.setPref(FPref.PHASE_HUMAN_DECLAREATTACKERS, String.valueOf(fvHuman.getLblDeclareAttackers().getEnabled()));
prefs.setPref(FPref.PHASE_HUMAN_DECLAREBLOCKERS, String.valueOf(fvHuman.getLblDeclareBlockers().getEnabled()));
prefs.setPref(FPref.PHASE_HUMAN_FIRSTSTRIKE, String.valueOf(fvHuman.getLblFirstStrike().getEnabled()));
prefs.setPref(FPref.PHASE_HUMAN_COMBATDAMAGE, String.valueOf(fvHuman.getLblCombatDamage().getEnabled()));
prefs.setPref(FPref.PHASE_HUMAN_ENDCOMBAT, String.valueOf(fvHuman.getLblEndCombat().getEnabled()));
prefs.setPref(FPref.PHASE_HUMAN_MAIN2, String.valueOf(fvHuman.getLblMain2().getEnabled()));
prefs.setPref(FPref.PHASE_HUMAN_EOT, fvHuman.getLblEndTurn().getEnabled());
prefs.setPref(FPref.PHASE_HUMAN_CLEANUP, fvHuman.getLblCleanup().getEnabled());
final VDev v = VDev.SINGLETON_INSTANCE;
// prefs.setPref(FPref.DEV_MILLING_LOSS, v.getLblMilling().getEnabled());
prefs.setPref(FPref.DEV_UNLIMITED_LAND, v.getLblUnlimitedLands().getEnabled());
prefs.save();
}
/**
* TODO: Needs to be reworked for efficiency with rest of prefs saves in
* codebase.
*/
public void actuateMatchPreferences() {
final ForgePreferences prefs = FModel.getPreferences();
final List<VField> fieldViews = VMatchUI.SINGLETON_INSTANCE.getFieldViews();
ForgePreferences.DEV_MODE = prefs.getPrefBoolean(FPref.DEV_MODE_ENABLED);
ForgePreferences.UPLOAD_DRAFT = ForgePreferences.NET_CONN; // && prefs.getPrefBoolean(FPref.UI_UPLOAD_DRAFT);
// AI field is at index [0]
PhaseIndicator fvAi = fieldViews.get(1).getPhaseIndicator();
fvAi.getLblUpkeep().setEnabled(prefs.getPrefBoolean(FPref.PHASE_AI_UPKEEP));
fvAi.getLblDraw().setEnabled(prefs.getPrefBoolean(FPref.PHASE_AI_DRAW));
fvAi.getLblMain1().setEnabled(prefs.getPrefBoolean(FPref.PHASE_AI_MAIN1));
fvAi.getLblBeginCombat().setEnabled(prefs.getPrefBoolean(FPref.PHASE_AI_BEGINCOMBAT));
fvAi.getLblDeclareAttackers().setEnabled(prefs.getPrefBoolean(FPref.PHASE_AI_DECLAREATTACKERS));
fvAi.getLblDeclareBlockers().setEnabled(prefs.getPrefBoolean(FPref.PHASE_AI_DECLAREBLOCKERS));
fvAi.getLblFirstStrike().setEnabled(prefs.getPrefBoolean(FPref.PHASE_AI_FIRSTSTRIKE));
fvAi.getLblCombatDamage().setEnabled(prefs.getPrefBoolean(FPref.PHASE_AI_COMBATDAMAGE));
fvAi.getLblEndCombat().setEnabled(prefs.getPrefBoolean(FPref.PHASE_AI_ENDCOMBAT));
fvAi.getLblMain2().setEnabled(prefs.getPrefBoolean(FPref.PHASE_AI_MAIN2));
fvAi.getLblEndTurn().setEnabled(prefs.getPrefBoolean(FPref.PHASE_AI_EOT));
fvAi.getLblCleanup().setEnabled(prefs.getPrefBoolean(FPref.PHASE_AI_CLEANUP));
// Human field is at index [1]
PhaseIndicator fvHuman = fieldViews.get(0).getPhaseIndicator();
fvHuman.getLblUpkeep().setEnabled(prefs.getPrefBoolean(FPref.PHASE_HUMAN_UPKEEP));
fvHuman.getLblDraw().setEnabled(prefs.getPrefBoolean(FPref.PHASE_HUMAN_DRAW));
fvHuman.getLblMain1().setEnabled(prefs.getPrefBoolean(FPref.PHASE_HUMAN_MAIN1));
fvHuman.getLblBeginCombat().setEnabled(prefs.getPrefBoolean(FPref.PHASE_HUMAN_BEGINCOMBAT));
fvHuman.getLblDeclareAttackers().setEnabled(prefs.getPrefBoolean(FPref.PHASE_HUMAN_DECLAREATTACKERS));
fvHuman.getLblDeclareBlockers().setEnabled(prefs.getPrefBoolean(FPref.PHASE_HUMAN_DECLAREBLOCKERS));
fvHuman.getLblFirstStrike().setEnabled(prefs.getPrefBoolean(FPref.PHASE_HUMAN_FIRSTSTRIKE));
fvHuman.getLblCombatDamage().setEnabled(prefs.getPrefBoolean(FPref.PHASE_HUMAN_COMBATDAMAGE));
fvHuman.getLblEndCombat().setEnabled(prefs.getPrefBoolean(FPref.PHASE_HUMAN_ENDCOMBAT));
fvHuman.getLblMain2().setEnabled(prefs.getPrefBoolean(FPref.PHASE_HUMAN_MAIN2));
fvHuman.getLblEndTurn().setEnabled(prefs.getPrefBoolean(FPref.PHASE_HUMAN_EOT));
fvHuman.getLblCleanup().setEnabled(prefs.getPrefBoolean(FPref.PHASE_HUMAN_CLEANUP));
//Singletons.getView().getViewMatch().setLayoutParams(prefs.getPref(FPref.UI_LAYOUT_PARAMS));
}
}

View File

@@ -4,13 +4,16 @@ import forge.Singletons;
import forge.gui.framework.EDocID;
import forge.gui.framework.FScreen;
import forge.gui.framework.SDisplayUtil;
import forge.gui.home.settings.VSubmenuPreferences.KeyboardShortcutField;
import forge.gui.match.CMatchUI;
import forge.gui.match.controllers.CDock;
import forge.model.FModel;
import forge.properties.ForgePreferences.FPref;
import forge.screens.home.settings.VSubmenuPreferences.KeyboardShortcutField;
import forge.screens.match.CMatchUI;
import forge.screens.match.controllers.CDock;
import org.apache.commons.lang3.StringUtils;
import javax.swing.*;
import java.awt.event.ActionEvent;
import java.awt.event.InputEvent;
import java.awt.event.KeyEvent;
@@ -82,7 +85,7 @@ public class KeyboardShortcuts {
@Override
public void actionPerformed(final ActionEvent e) {
if (Singletons.getControl().getCurrentScreen() != FScreen.MATCH_SCREEN) { return; }
if (Singletons.getModel().getPreferences().getPrefBoolean(FPref.DEV_MODE_ENABLED)) {
if (FModel.getPreferences().getPrefBoolean(FPref.DEV_MODE_ENABLED)) {
SDisplayUtil.showTab(EDocID.DEV_MODE.getDoc());
}
}
@@ -197,7 +200,7 @@ public class KeyboardShortcuts {
/** */
public void attach() {
detach();
str = Singletons.getModel().getPreferences().getPref(prefkeys);
str = FModel.getPreferences().getPref(prefkeys);
if (!str.isEmpty()) {
key = assembleKeystrokes(str.split(" "));

View File

@@ -0,0 +1,3 @@
/** Controller (as in model-view-controller) for Forge. */
package forge.control;

View File

@@ -1,10 +1,10 @@
package forge.gui.deckchooser;
package forge.deckchooser;
import forge.deck.DeckType;
import forge.gui.MouseUtil;
import forge.gui.deckchooser.DecksComboBox.DeckType;
import forge.gui.toolbox.FComboBox.TextAlignment;
import forge.gui.toolbox.FComboBoxWrapper;
import forge.gui.toolbox.FSkin;
import forge.toolbox.FComboBoxWrapper;
import forge.toolbox.FSkin;
import forge.toolbox.FComboBox.TextAlignment;
import javax.swing.*;
@@ -15,32 +15,6 @@ import java.util.ArrayList;
import java.util.List;
public class DecksComboBox extends FComboBoxWrapper<DeckType> {
public enum DeckType {
CUSTOM_DECK ("Custom User Decks"),
PRECONSTRUCTED_DECK("Preconstructed Decks"),
QUEST_OPPONENT_DECK ("Quest Opponent Decks"),
COLOR_DECK ("Random Color Decks"),
THEME_DECK ("Random Theme Decks");
private String value;
private DeckType(String value) {
this.value = value;
}
@Override
public String toString() {
return value;
}
public static DeckType fromString(String value){
for (final DeckType d : DeckType.values()) {
if (d.toString().equalsIgnoreCase(value)) {
return d;
}
}
throw new IllegalArgumentException("No Enum specified for this string");
}
};
private List<IDecksComboBoxListener> _listeners = new ArrayList<>();
private DeckType selectedDeckType = null;

View File

@@ -0,0 +1,19 @@
package forge.deckchooser;
import java.util.EventObject;
import forge.deck.DeckType;
@SuppressWarnings("serial")
public class DecksComboBoxEvent extends EventObject {
private final DeckType deckType;
public DecksComboBoxEvent(Object source, DeckType deckType0) {
super(source);
deckType = deckType0;
}
public DeckType getDeckType() {
return deckType;
}
}

View File

@@ -1,22 +1,23 @@
package forge.gui.deckchooser;
package forge.deckchooser;
import forge.UiCommand;
import forge.Singletons;
import forge.deck.Deck;
import forge.deck.DeckProxy;
import forge.deck.DeckType;
import forge.deck.DeckgenUtil;
import forge.game.GameType;
import forge.game.player.RegisteredPlayer;
import forge.gui.deckchooser.DecksComboBox.DeckType;
import forge.gui.deckeditor.DeckProxy;
import forge.gui.toolbox.FLabel;
import forge.gui.toolbox.itemmanager.DeckManager;
import forge.gui.toolbox.itemmanager.ItemManagerConfig;
import forge.gui.toolbox.itemmanager.ItemManagerContainer;
import forge.itemmanager.DeckManager;
import forge.itemmanager.ItemManagerConfig;
import forge.itemmanager.ItemManagerContainer;
import forge.model.FModel;
import forge.properties.ForgePreferences;
import forge.properties.ForgePreferences.FPref;
import forge.quest.QuestController;
import forge.quest.QuestEvent;
import forge.quest.QuestEventChallenge;
import forge.quest.QuestUtil;
import forge.toolbox.FLabel;
import net.miginfocom.swing.MigLayout;
import org.apache.commons.lang3.StringUtils;
@@ -39,7 +40,7 @@ public class FDeckChooser extends JPanel implements IDecksComboBoxListener {
private boolean isAi;
private final ForgePreferences prefs = Singletons.getModel().getPreferences();
private final ForgePreferences prefs = FModel.getPreferences();
private FPref stateSetting = null;
public FDeckChooser(boolean forAi) {
@@ -78,7 +79,7 @@ public class FDeckChooser extends JPanel implements IDecksComboBoxListener {
private void updateCustom() {
lstDecks.setAllowMultipleSelections(false);
lstDecks.setPool(DeckProxy.getAllConstructedDecks(Singletons.getModel().getDecks().getConstructed()));
lstDecks.setPool(DeckProxy.getAllConstructedDecks(FModel.getDecks().getConstructed()));
lstDecks.setup(ItemManagerConfig.CONSTRUCTED_DECKS);
btnRandom.setText("Random Deck");

View File

@@ -1,4 +1,4 @@
package forge.gui.deckchooser;
package forge.deckchooser;
import forge.deck.CardPool;
import forge.deck.Deck;
@@ -6,14 +6,14 @@ import forge.deck.DeckSection;
import forge.game.card.Card;
import forge.gui.CardDetailPanel;
import forge.gui.CardPicturePanel;
import forge.gui.toolbox.FButton;
import forge.gui.toolbox.FOptionPane;
import forge.gui.toolbox.itemmanager.CardManager;
import forge.gui.toolbox.itemmanager.ItemManagerConfig;
import forge.gui.toolbox.itemmanager.ItemManagerContainer;
import forge.gui.toolbox.itemmanager.ItemManagerModel;
import forge.gui.toolbox.itemmanager.views.*;
import forge.item.PaperCard;
import forge.itemmanager.CardManager;
import forge.itemmanager.ItemManagerConfig;
import forge.itemmanager.ItemManagerContainer;
import forge.itemmanager.ItemManagerModel;
import forge.itemmanager.views.*;
import forge.toolbox.FButton;
import forge.toolbox.FOptionPane;
import forge.view.FDialog;
import net.miginfocom.swing.MigLayout;

View File

@@ -1,4 +1,4 @@
package forge.gui.deckchooser;
package forge.deckchooser;
public interface IDecksComboBoxListener {
public void deckTypeSelected(DecksComboBoxEvent ev);

View File

@@ -15,13 +15,14 @@
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
package forge.gui.download;
package forge.download;
import forge.ImageCache;
import forge.Singletons;
import forge.assets.ImageUtil;
import forge.card.CardRules;
import forge.item.PaperCard;
import forge.properties.NewConstants;
import forge.model.FModel;
import forge.properties.ForgeConstants;
import org.apache.commons.lang3.StringUtils;
import java.io.File;
@@ -38,18 +39,19 @@ public class GuiDownloadPicturesLQ extends GuiDownloader {
protected final Map<String, String> getNeededImages() {
Map<String, String> downloads = new TreeMap<String, String>(String.CASE_INSENSITIVE_ORDER);
for (PaperCard c : Singletons.getMagicDb().getCommonCards().getAllCards()) {
for (PaperCard c : FModel.getMagicDb().getCommonCards().getAllCards()) {
addDLObject(c, downloads, false);
if (ImageCache.hasBackFacePicture(c))
if (ImageUtil.hasBackFacePicture(c)) {
addDLObject(c, downloads, true);
}
}
for (PaperCard c : Singletons.getMagicDb().getVariantCards().getAllCards()) {
for (PaperCard c : FModel.getMagicDb().getVariantCards().getAllCards()) {
addDLObject(c, downloads, false);
}
// Add missing tokens to the list of things to download.
addMissingItems(downloads, NewConstants.IMAGE_LIST_TOKENS_FILE, NewConstants.CACHE_TOKEN_PICS_DIR);
addMissingItems(downloads, ForgeConstants.IMAGE_LIST_TOKENS_FILE, ForgeConstants.CACHE_TOKEN_PICS_DIR);
return downloads;
}
@@ -61,8 +63,8 @@ public class GuiDownloadPicturesLQ extends GuiDownloader {
return;
}
String filename = ImageCache.getImageKey(c, backFace, false);
File destFile = new File(NewConstants.CACHE_CARD_PICS_DIR, filename + ".jpg");
String filename = ImageUtil.getImageKey(c, backFace, false);
File destFile = new File(ForgeConstants.CACHE_CARD_PICS_DIR, filename + ".jpg");
if (destFile.exists())
return;

View File

@@ -15,9 +15,9 @@
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
package forge.gui.download;
package forge.download;
import forge.properties.NewConstants;
import forge.properties.ForgeConstants;
import java.util.HashMap;
import java.util.Map;
@@ -31,7 +31,7 @@ public class GuiDownloadPrices extends GuiDownloader {
@Override
protected Map<String, String> getNeededImages() {
Map<String, String> result = new HashMap<String, String>();
result.put(NewConstants.QUEST_CARD_PRICE_FILE, NewConstants.URL_PRICE_DOWNLOAD);
result.put(ForgeConstants.QUEST_CARD_PRICE_FILE, ForgeConstants.URL_PRICE_DOWNLOAD);
return result;
}
}

View File

@@ -15,9 +15,9 @@
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
package forge.gui.download;
package forge.download;
import forge.properties.NewConstants;
import forge.properties.ForgeConstants;
import java.util.Map;
import java.util.TreeMap;
@@ -39,20 +39,20 @@ public class GuiDownloadQuestImages extends GuiDownloader {
* getNeededCards.
* </p>
*
* @return an array of {@link forge.gui.download.GuiDownloadSetPicturesLQ} objects.
* @return an array of {@link forge.download.GuiDownloadSetPicturesLQ} objects.
*/
@Override
protected final Map<String, String> getNeededImages() {
// read all card names and urls
final Map<String, String> urls = new TreeMap<String, String>(String.CASE_INSENSITIVE_ORDER);
addMissingItems(urls, NewConstants.IMAGE_LIST_QUEST_OPPONENT_ICONS_FILE, NewConstants.CACHE_ICON_PICS_DIR);
addMissingItems(urls, NewConstants.IMAGE_LIST_QUEST_PET_SHOP_ICONS_FILE, NewConstants.CACHE_ICON_PICS_DIR);
addMissingItems(urls, NewConstants.IMAGE_LIST_QUEST_BOOSTERS_FILE, NewConstants.CACHE_BOOSTER_PICS_DIR);
addMissingItems(urls, NewConstants.IMAGE_LIST_QUEST_FATPACKS_FILE, NewConstants.CACHE_FATPACK_PICS_DIR);
addMissingItems(urls, NewConstants.IMAGE_LIST_QUEST_PRECONS_FILE, NewConstants.CACHE_PRECON_PICS_DIR);
addMissingItems(urls, NewConstants.IMAGE_LIST_QUEST_TOURNAMENTPACKS_FILE, NewConstants.CACHE_TOURNAMENTPACK_PICS_DIR);
addMissingItems(urls, NewConstants.IMAGE_LIST_QUEST_TOKENS_FILE, NewConstants.CACHE_TOKEN_PICS_DIR);
addMissingItems(urls, ForgeConstants.IMAGE_LIST_QUEST_OPPONENT_ICONS_FILE, ForgeConstants.CACHE_ICON_PICS_DIR);
addMissingItems(urls, ForgeConstants.IMAGE_LIST_QUEST_PET_SHOP_ICONS_FILE, ForgeConstants.CACHE_ICON_PICS_DIR);
addMissingItems(urls, ForgeConstants.IMAGE_LIST_QUEST_BOOSTERS_FILE, ForgeConstants.CACHE_BOOSTER_PICS_DIR);
addMissingItems(urls, ForgeConstants.IMAGE_LIST_QUEST_FATPACKS_FILE, ForgeConstants.CACHE_FATPACK_PICS_DIR);
addMissingItems(urls, ForgeConstants.IMAGE_LIST_QUEST_PRECONS_FILE, ForgeConstants.CACHE_PRECON_PICS_DIR);
addMissingItems(urls, ForgeConstants.IMAGE_LIST_QUEST_TOURNAMENTPACKS_FILE, ForgeConstants.CACHE_TOURNAMENTPACK_PICS_DIR);
addMissingItems(urls, ForgeConstants.IMAGE_LIST_QUEST_TOKENS_FILE, ForgeConstants.CACHE_TOKEN_PICS_DIR);
return urls;
}

View File

@@ -15,14 +15,16 @@
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
package forge.gui.download;
package forge.download;
import com.google.common.collect.Iterables;
import forge.ImageCache;
import forge.Singletons;
import forge.assets.ImageUtil;
import forge.card.CardEdition;
import forge.item.PaperCard;
import forge.properties.NewConstants;
import forge.model.FModel;
import forge.properties.ForgeConstants;
import org.apache.commons.lang3.StringUtils;
import java.io.File;
@@ -39,30 +41,30 @@ public class GuiDownloadSetPicturesLQ extends GuiDownloader {
protected final Map<String, String> getNeededImages() {
Map<String, String> downloads = new TreeMap<String, String>(String.CASE_INSENSITIVE_ORDER);
for (final PaperCard c : Iterables.concat(Singletons.getMagicDb().getCommonCards().getAllCards(), Singletons.getMagicDb().getVariantCards().getAllCards())) {
for (final PaperCard c : Iterables.concat(FModel.getMagicDb().getCommonCards().getAllCards(), FModel.getMagicDb().getVariantCards().getAllCards())) {
final String setCode3 = c.getEdition();
if (StringUtils.isBlank(setCode3) || CardEdition.UNKNOWN.getCode().equals(setCode3)) {
// we don't want cards from unknown sets
continue;
}
addDLObject(ImageCache.getDownloadUrl(c, false), ImageCache.getImageKey(c, false, true), downloads);
addDLObject(ImageUtil.getDownloadUrl(c, false), ImageUtil.getImageKey(c, false, true), downloads);
if (ImageCache.hasBackFacePicture(c)) {
addDLObject(ImageCache.getDownloadUrl(c, true), ImageCache.getImageKey(c, true, true), downloads);
if (ImageUtil.hasBackFacePicture(c)) {
addDLObject(ImageUtil.getDownloadUrl(c, true), ImageUtil.getImageKey(c, true, true), downloads);
}
}
// Add missing tokens to the list of things to download.
addMissingItems(downloads, NewConstants.IMAGE_LIST_TOKENS_FILE, NewConstants.CACHE_TOKEN_PICS_DIR);
addMissingItems(downloads, ForgeConstants.IMAGE_LIST_TOKENS_FILE, ForgeConstants.CACHE_TOKEN_PICS_DIR);
return downloads;
}
private void addDLObject(String urlPath, String filename, Map<String, String> downloads) {
File destFile = new File(NewConstants.CACHE_CARD_PICS_DIR, filename + ".jpg");
File destFile = new File(ForgeConstants.CACHE_CARD_PICS_DIR, filename + ".jpg");
// System.out.println(filename);
if (!destFile.exists()) {
downloads.put(destFile.getAbsolutePath(), NewConstants.URL_PIC_DOWNLOAD + urlPath);
downloads.put(destFile.getAbsolutePath(), ForgeConstants.URL_PIC_DOWNLOAD + urlPath);
}
}
}

View File

@@ -15,22 +15,26 @@
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
package forge.gui.download;
package forge.download;
import com.esotericsoftware.minlog.Log;
import forge.UiCommand;
import forge.ImageCache;
import forge.assets.FSkinProp;
import forge.error.BugReporter;
import forge.gui.SOverlayUtils;
import forge.gui.toolbox.*;
import forge.toolbox.*;
import forge.util.FileUtil;
import forge.util.MyRandom;
import net.miginfocom.swing.MigLayout;
import org.apache.commons.lang3.tuple.Pair;
import javax.swing.*;
import javax.swing.event.ChangeEvent;
import javax.swing.event.ChangeListener;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
@@ -113,7 +117,7 @@ public abstract class GuiDownloader extends DefaultBoundedRangeModel implements
barProgress.reset();
barProgress.setString("Scanning for existing items...");
pnlDialog.setBackgroundTexture(FSkin.getIcon(FSkin.Backgrounds.BG_TEXTURE));
pnlDialog.setBackgroundTexture(FSkin.getIcon(FSkinProp.BG_TEXTURE));
// Layout
pnlDialog.add(grpPanel, "w 50%!");

View File

@@ -0,0 +1,3 @@
/** Forge Card Game. */
package forge.download;

View File

@@ -19,14 +19,16 @@ package forge.error;
import forge.FThreads;
import forge.gui.WrapLayout;
import forge.gui.toolbox.FHyperlink;
import forge.gui.toolbox.FLabel;
import forge.gui.toolbox.FOptionPane;
import forge.toolbox.FHyperlink;
import forge.toolbox.FLabel;
import forge.toolbox.FOptionPane;
import forge.util.BuildInfo;
import net.miginfocom.swing.MigLayout;
import org.apache.commons.lang3.StringUtils;
import javax.swing.*;
import java.awt.*;
import java.awt.datatransfer.StringSelection;
import java.awt.event.ActionEvent;

View File

@@ -1,3 +1,3 @@
/** Forge Card Game. */
package forge.gui.home;
package forge.error;

View File

@@ -29,12 +29,13 @@ import forge.game.card.CardUtil;
import forge.game.card.CounterType;
import forge.game.player.Player;
import forge.game.zone.ZoneType;
import forge.gui.toolbox.*;
import forge.gui.toolbox.FSkin.SkinnedPanel;
import forge.item.IPaperCard;
import forge.item.InventoryItemFromSet;
import forge.item.PreconDeck;
import forge.item.SealedProduct;
import forge.model.FModel;
import forge.toolbox.*;
import forge.toolbox.FSkin.SkinnedPanel;
import forge.util.Lang;
import forge.view.FDialog;
@@ -149,7 +150,7 @@ public class CardDetailPanel extends SkinnedPanel {
setInfoLabel.setOpaque(false);
setInfoLabel.setBorder(null);
} else {
CardEdition edition = Singletons.getMagicDb().getEditions().get(set);
CardEdition edition = FModel.getMagicDb().getEditions().get(set);
if (null != edition) {
setInfoLabel.setToolTipText(edition.getName());
}
@@ -212,7 +213,7 @@ public class CardDetailPanel extends SkinnedPanel {
String set = card.getCurSetCode();
this.setInfoLabel.setText(set);
if (null != set && !set.isEmpty()) {
CardEdition edition = Singletons.getMagicDb().getEditions().get(set);
CardEdition edition = FModel.getMagicDb().getEditions().get(set);
if (null == edition) {
setInfoLabel.setToolTipText(card.getRarity().name());
}

View File

@@ -19,15 +19,16 @@
package forge.gui;
import forge.game.card.Card;
import forge.gui.toolbox.FButton;
import forge.gui.toolbox.FLabel;
import forge.gui.toolbox.FScrollPane;
import forge.item.PaperCard;
import forge.toolbox.FButton;
import forge.toolbox.FLabel;
import forge.toolbox.FScrollPane;
import forge.view.FDialog;
import javax.swing.*;
import javax.swing.event.ListSelectionEvent;
import javax.swing.event.ListSelectionListener;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.WindowEvent;

View File

@@ -20,23 +20,24 @@ package forge.gui;
import forge.ImageCache;
import forge.ImageKeys;
import forge.Singletons;
import forge.card.CardCharacteristicName;
import forge.game.card.Card;
import forge.gui.toolbox.imaging.FImagePanel;
import forge.gui.toolbox.imaging.FImagePanel.AutoSizeImageMode;
import forge.gui.toolbox.imaging.FImageUtil;
import forge.item.InventoryItem;
import forge.model.FModel;
import forge.properties.ForgePreferences.FPref;
import forge.toolbox.imaging.FImagePanel;
import forge.toolbox.imaging.FImageUtil;
import forge.toolbox.imaging.FImagePanel.AutoSizeImageMode;
import javax.swing.*;
import java.awt.*;
import java.awt.image.BufferedImage;
/**
* Displays image associated with a card or inventory item.
*
* @version $Id$
* @version $Id: CardPicturePanel.java 25265 2014-03-27 02:18:47Z drdev $
*
*/
public final class CardPicturePanel extends JPanel {
@@ -104,7 +105,7 @@ public final class CardPicturePanel extends JPanel {
}
private boolean isUIScaleLarger() {
return Singletons.getModel().getPreferences().getPrefBoolean(FPref.UI_SCALE_LARGER);
return FModel.getPreferences().getPrefBoolean(FPref.UI_SCALE_LARGER);
}
}

View File

@@ -2,10 +2,10 @@ package forge.gui;
import forge.game.card.Card;
import forge.game.spellability.SpellAbility;
import forge.gui.match.CMatchUI;
import forge.gui.toolbox.*;
import forge.item.IPaperCard;
import forge.item.PaperCard;
import forge.screens.match.CMatchUI;
import forge.toolbox.*;
import forge.view.FDialog;
import javax.swing.*;
@@ -13,6 +13,7 @@ import javax.swing.event.ListDataEvent;
import javax.swing.event.ListDataListener;
import javax.swing.event.ListSelectionEvent;
import javax.swing.event.ListSelectionListener;
import java.awt.*;
import java.awt.event.*;
import java.util.ArrayList;

View File

@@ -1,14 +1,16 @@
package forge.gui;
import forge.control.ChatArea;
import forge.gui.toolbox.*;
import forge.gui.toolbox.FSkin.SkinnedPanel;
import forge.net.FServer;
import forge.net.Lobby;
import forge.toolbox.*;
import forge.toolbox.FSkin.SkinnedPanel;
import net.miginfocom.swing.MigLayout;
import org.apache.commons.lang3.StringUtils;
import javax.swing.*;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
@@ -46,7 +48,7 @@ public enum FNetOverlay {
if ( StringUtils.isBlank(message) )
return;
Lobby lobby = FServer.instance.getLobby();
Lobby lobby = FServer.getLobby();
lobby.speak(ChatArea.Room, lobby.getGuiPlayer(), message);
}
};

View File

@@ -19,34 +19,10 @@ package forge.gui;
import javax.swing.*;
import forge.match.MatchConstants;
@SuppressWarnings("serial")
public abstract class ForgeAction extends AbstractAction {
public static enum MatchConstants {
ALWAYSACCEPT ("Always accept this trigger"),
ALWAYSDECLINE ("Always decline this trigger"),
ALWAYSASK ("Always ask"),
HUMANEXILED ("Player's Exile", "Exile:", "Player - View Exile"),
HUMANFLASHBACK("Play card with Flashback", "Flashback:", "Player - View Cards with Flashback"),
HUMANGRAVEYARD("Player's Graveyard", "Graveyard:", "Player - View Graveyard"),
HUMANHAND ("Player's Hand", "Hand:", "Player - View Hand"),
HUMANLIBRARY ("Player's Library", "Library:", "Player - View Library");
public final String title;
public final String button;
public final String menu;
private MatchConstants(String title0) {
title = title0;
button = title0;
menu = title0;
}
private MatchConstants(String title0, String button0, String menu0) {
title = title0;
button = button0;
menu = menu0;
}
}
public ForgeAction(MatchConstants property) {
super(property.button);
this.putValue("buttonText", property.button);

View File

@@ -2,17 +2,20 @@ package forge.gui;
import com.google.common.base.Function;
import com.google.common.collect.Iterables;
import forge.FThreads;
import forge.Singletons;
import forge.game.card.Card;
import forge.gui.match.CMatchUI;
import forge.gui.toolbox.FOptionPane;
import forge.item.InventoryItem;
import forge.screens.match.CMatchUI;
import forge.toolbox.FOptionPane;
import org.apache.commons.lang3.StringUtils;
import javax.swing.*;
import javax.swing.event.ListSelectionEvent;
import javax.swing.event.ListSelectionListener;
import java.util.*;
import java.util.concurrent.Callable;
import java.util.concurrent.FutureTask;

View File

@@ -2,11 +2,13 @@ package forge.gui;
import forge.FThreads;
import forge.game.card.Card;
import forge.gui.match.CMatchUI;
import forge.gui.toolbox.FOptionPane;
import forge.screens.match.CMatchUI;
import forge.toolbox.FOptionPane;
import org.apache.commons.lang3.StringUtils;
import javax.swing.*;
import java.util.concurrent.Callable;
import java.util.concurrent.FutureTask;

View File

@@ -29,7 +29,7 @@ import java.awt.*;
* </p>
*
* @author Forge
* @version $Id$
* @version $Id: GuiProgressBarWindow.java 24769 2014-02-09 13:56:04Z Hellfish $
* @since 1.0.15
*/
public class GuiProgressBarWindow extends FDialog {

View File

@@ -18,11 +18,12 @@
package forge.gui;
import forge.game.card.Card;
import forge.gui.match.VMatchUI;
import forge.gui.match.views.VField;
import forge.screens.match.VMatchUI;
import forge.screens.match.views.VField;
import forge.view.arcane.CardPanel;
import javax.swing.*;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
@@ -36,7 +37,7 @@ import java.util.List;
* </p>
*
* @author Forge
* @version $Id$
* @version $Id: GuiUtils.java 24769 2014-02-09 13:56:04Z Hellfish $
*/
public final class GuiUtils {
private GuiUtils() {

View File

@@ -18,11 +18,13 @@
package forge.gui;
import forge.UiCommand;
import forge.assets.FSkinProp;
import forge.error.BugReporter;
import forge.gui.ImportSourceAnalyzer.OpType;
import forge.gui.toolbox.*;
import forge.properties.NewConstants;
import forge.properties.ForgeConstants;
import forge.toolbox.*;
import net.miginfocom.swing.MigLayout;
import org.apache.commons.lang3.StringUtils;
import org.apache.commons.lang3.tuple.Pair;
@@ -32,6 +34,7 @@ import javax.swing.event.ChangeEvent;
import javax.swing.event.ChangeListener;
import javax.swing.event.DocumentEvent;
import javax.swing.event.DocumentListener;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
@@ -63,7 +66,7 @@ public class ImportDialog {
public ImportDialog(String forcedSrcDir, final Runnable onDialogClose) {
_topPanel = new FPanel(new MigLayout("insets dialog, gap 0, center, wrap, fill"));
_topPanel.setOpaque(false);
_topPanel.setBackgroundTexture(FSkin.getIcon(FSkin.Backgrounds.BG_TEXTURE));
_topPanel.setBackgroundTexture(FSkin.getIcon(FSkinProp.BG_TEXTURE));
final boolean isMigration = !StringUtils.isEmpty(forcedSrcDir);
@@ -89,11 +92,11 @@ public class ImportDialog {
blurbPanelInterior.add(new FLabel.Builder().text(
"<html>Forge will now store your data in the same place as other applications on your system." +
" Specifically, your personal data, like decks, quest progress, and program preferences will be" +
" stored in <b>" + NewConstants.USER_DIR + "</b> and all downloaded content, such as card pictures," +
" skins, and quest world prices will be under <b>" + NewConstants.CACHE_DIR + "</b>. If, for whatever" +
" stored in <b>" + ForgeConstants.USER_DIR + "</b> and all downloaded content, such as card pictures," +
" skins, and quest world prices will be under <b>" + ForgeConstants.CACHE_DIR + "</b>. If, for whatever" +
" reason, you need to set different paths, cancel out of this dialog, exit Forge, and find the <b>" +
NewConstants.PROFILE_TEMPLATE_FILE + "</b> file in the program installation directory. Copy or rename" +
" it to <b>" + NewConstants.PROFILE_FILE + "</b> and edit the paths inside it. Then restart Forge and use" +
ForgeConstants.PROFILE_TEMPLATE_FILE + "</b> file in the program installation directory. Copy or rename" +
" it to <b>" + ForgeConstants.PROFILE_FILE + "</b> and edit the paths inside it. Then restart Forge and use" +
" this dialog to move your data to the paths that you set. Keep in mind that if you install a future" +
" version of Forge into a different directory, you'll need to copy this file over so Forge will know" +
" where to find your data.</html>").build(), "growx, w 50:50:");
@@ -316,11 +319,11 @@ public class ImportDialog {
JPanel unknownDeckPanel = new JPanel(new MigLayout("insets 0, gap 5"));
unknownDeckPanel.setOpaque(false);
_unknownDeckCombo = new FComboBoxWrapper<_UnknownDeckChoice>();
_unknownDeckCombo.addItem(new _UnknownDeckChoice("Constructed", NewConstants.DECK_CONSTRUCTED_DIR));
_unknownDeckCombo.addItem(new _UnknownDeckChoice("Draft", NewConstants.DECK_DRAFT_DIR));
_unknownDeckCombo.addItem(new _UnknownDeckChoice("Planar", NewConstants.DECK_PLANE_DIR));
_unknownDeckCombo.addItem(new _UnknownDeckChoice("Scheme", NewConstants.DECK_SCHEME_DIR));
_unknownDeckCombo.addItem(new _UnknownDeckChoice("Sealed", NewConstants.DECK_SEALED_DIR));
_unknownDeckCombo.addItem(new _UnknownDeckChoice("Constructed", ForgeConstants.DECK_CONSTRUCTED_DIR));
_unknownDeckCombo.addItem(new _UnknownDeckChoice("Draft", ForgeConstants.DECK_DRAFT_DIR));
_unknownDeckCombo.addItem(new _UnknownDeckChoice("Planar", ForgeConstants.DECK_PLANE_DIR));
_unknownDeckCombo.addItem(new _UnknownDeckChoice("Scheme", ForgeConstants.DECK_SCHEME_DIR));
_unknownDeckCombo.addItem(new _UnknownDeckChoice("Sealed", ForgeConstants.DECK_SEALED_DIR));
_unknownDeckCombo.addActionListener(new ActionListener() {
@Override public void actionPerformed(ActionEvent arg0) { _updateUI(); }
});

View File

@@ -19,14 +19,16 @@ package forge.gui;
import com.google.common.base.Predicate;
import com.google.common.collect.Iterables;
import forge.ImageCache;
import forge.Singletons;
import forge.assets.ImageUtil;
import forge.card.CardEdition;
import forge.card.CardRules;
import forge.item.IPaperCard;
import forge.item.PaperCard;
import forge.properties.NewConstants;
import forge.model.FModel;
import forge.properties.ForgeConstants;
import forge.util.FileUtil;
import org.apache.commons.lang3.StringUtils;
import org.apache.commons.lang3.tuple.Pair;
@@ -98,7 +100,7 @@ public class ImportSourceAnalyzer {
else if ("pics_product".equalsIgnoreCase(dirname)) { _analyzeProductPicsDir(root); }
else if ("preferences".equalsIgnoreCase(dirname)) { _analyzePreferencesDir(root); }
else if ("quest".equalsIgnoreCase(dirname)) { _analyzeQuestDir(root); }
else if (null != Singletons.getMagicDb().getEditions().get(dirname)) { _analyzeCardPicsSetDir(root); }
else if (null != FModel.getMagicDb().getEditions().get(dirname)) { _analyzeCardPicsSetDir(root); }
else {
// look at files in directory and make a semi-educated guess based on file extensions
int numUnhandledFiles = 0;
@@ -194,23 +196,23 @@ public class ImportSourceAnalyzer {
}
private void _analyzeConstructedDeckDir(File root) {
_analyzeKnownDeckDir(root, NewConstants.DECK_CONSTRUCTED_DIR, OpType.CONSTRUCTED_DECK);
_analyzeKnownDeckDir(root, ForgeConstants.DECK_CONSTRUCTED_DIR, OpType.CONSTRUCTED_DECK);
}
private void _analyzeDraftDeckDir(File root) {
_analyzeKnownDeckDir(root, NewConstants.DECK_DRAFT_DIR, OpType.DRAFT_DECK);
_analyzeKnownDeckDir(root, ForgeConstants.DECK_DRAFT_DIR, OpType.DRAFT_DECK);
}
private void _analyzePlanarDeckDir(File root) {
_analyzeKnownDeckDir(root, NewConstants.DECK_PLANE_DIR, OpType.PLANAR_DECK);
_analyzeKnownDeckDir(root, ForgeConstants.DECK_PLANE_DIR, OpType.PLANAR_DECK);
}
private void _analyzeSchemeDeckDir(File root) {
_analyzeKnownDeckDir(root, NewConstants.DECK_SCHEME_DIR, OpType.SCHEME_DECK);
_analyzeKnownDeckDir(root, ForgeConstants.DECK_SCHEME_DIR, OpType.SCHEME_DECK);
}
private void _analyzeSealedDeckDir(File root) {
_analyzeKnownDeckDir(root, NewConstants.DECK_SEALED_DIR, OpType.SEALED_DECK);
_analyzeKnownDeckDir(root, ForgeConstants.DECK_SEALED_DIR, OpType.SEALED_DECK);
}
private void _analyzeKnownDeckDir(File root, final String targetDir, final OpType opType) {
@@ -243,7 +245,7 @@ public class ImportSourceAnalyzer {
// find *.dat files, but exclude LOCKED_*
String filename = file.getName();
if (StringUtils.endsWithIgnoreCase(filename, ".dat") && !filename.startsWith("LOCKED_")) {
File targetFile = new File(NewConstants.GAUNTLET_DIR.userPrefLoc, _lcaseExt(filename));
File targetFile = new File(ForgeConstants.GAUNTLET_DIR.userPrefLoc, _lcaseExt(filename));
if (!file.equals(targetFile)) {
_cb.addOp(OpType.GAUNTLET_DATA, file, targetFile);
}
@@ -262,7 +264,7 @@ public class ImportSourceAnalyzer {
// find *_preferred.xml files
String filename = file.getName();
if (StringUtils.endsWithIgnoreCase(filename, "_preferred.xml")) {
File targetFile = new File(NewConstants.USER_PREFS_DIR,
File targetFile = new File(ForgeConstants.USER_PREFS_DIR,
file.getName().toLowerCase(Locale.ENGLISH).replace("_preferred", ""));
_cb.addOp(OpType.PREFERENCE_FILE, file, targetFile);
}
@@ -296,10 +298,11 @@ public class ImportSourceAnalyzer {
if (StringUtils.isEmpty(urls)) { return; }
int numPics = 1 + StringUtils.countMatches(urls, "\\");
if ( c.getArtIndex() > numPics )
if (c.getArtIndex() > numPics) {
return;
}
String filenameBase = ImageCache.getImageKey(c, backFace, false);
String filenameBase = ImageUtil.getImageKey(c, backFace, false);
String filename = filenameBase + ".jpg";
boolean alreadyHadIt = null != _defaultPicNames.put(filename, filename);
if ( alreadyHadIt ) return;
@@ -320,19 +323,20 @@ public class ImportSourceAnalyzer {
_defaultPicNames = new TreeMap<String, String>(String.CASE_INSENSITIVE_ORDER);
_defaultPicOldNameToCurrentName = new TreeMap<String, String>(String.CASE_INSENSITIVE_ORDER);
for (PaperCard c : Singletons.getMagicDb().getCommonCards().getAllCards()) {
for (PaperCard c : FModel.getMagicDb().getCommonCards().getAllCards()) {
_addDefaultPicNames(c, false);
if (ImageCache.hasBackFacePicture(c))
if (ImageUtil.hasBackFacePicture(c)) {
_addDefaultPicNames(c, true);
}
}
for (PaperCard c : Singletons.getMagicDb().getVariantCards().getAllCards()) {
for (PaperCard c : FModel.getMagicDb().getVariantCards().getAllCards()) {
_addDefaultPicNames(c, false);
// variants never have backfaces
}
}
_analyzeListedDir(root, NewConstants.CACHE_CARD_PICS_DIR, new _ListedAnalyzer() {
_analyzeListedDir(root, ForgeConstants.CACHE_CARD_PICS_DIR, new _ListedAnalyzer() {
@Override public String map(String filename) {
if (_defaultPicOldNameToCurrentName.containsKey(filename)) {
return _defaultPicOldNameToCurrentName.get(filename);
@@ -361,10 +365,10 @@ public class ImportSourceAnalyzer {
private static void _addSetCards(Map<String, String> cardFileNames, Iterable<PaperCard> library, Predicate<PaperCard> filter) {
for (PaperCard c : Iterables.filter(library, filter)) {
String filename = ImageCache.getImageKey(c, false, true) + ".jpg";
String filename = ImageUtil.getImageKey(c, false, true) + ".jpg";
cardFileNames.put(filename, filename);
if (ImageCache.hasBackFacePicture(c)) {
filename = ImageCache.getImageKey(c, true, true) + ".jpg";
if (ImageUtil.hasBackFacePicture(c)) {
filename = ImageUtil.getImageKey(c, true, true) + ".jpg";
cardFileNames.put(filename, filename);
}
}
@@ -375,11 +379,11 @@ public class ImportSourceAnalyzer {
private void _analyzeCardPicsSetDir(File root) {
if (null == _cardFileNamesBySet) {
_cardFileNamesBySet = new TreeMap<String, Map<String, String>>(String.CASE_INSENSITIVE_ORDER);
for (CardEdition ce : Singletons.getMagicDb().getEditions()) {
for (CardEdition ce : FModel.getMagicDb().getEditions()) {
Map<String, String> cardFileNames = new TreeMap<String, String>(String.CASE_INSENSITIVE_ORDER);
Predicate<PaperCard> filter = IPaperCard.Predicates.printedInSet(ce.getCode());
_addSetCards(cardFileNames, Singletons.getMagicDb().getCommonCards().getAllCards(), filter);
_addSetCards(cardFileNames, Singletons.getMagicDb().getVariantCards().getAllCards(), filter);
_addSetCards(cardFileNames, FModel.getMagicDb().getCommonCards().getAllCards(), filter);
_addSetCards(cardFileNames, FModel.getMagicDb().getVariantCards().getAllCards(), filter);
_cardFileNamesBySet.put(ce.getCode2(), cardFileNames);
}
@@ -392,17 +396,17 @@ public class ImportSourceAnalyzer {
}
};
for (PaperCard c : Iterables.filter(Singletons.getMagicDb().getVariantCards().getAllCards(), predPlanes)) {
String baseName = ImageCache.getImageKey(c,false, true);
for (PaperCard c : Iterables.filter(FModel.getMagicDb().getVariantCards().getAllCards(), predPlanes)) {
String baseName = ImageUtil.getImageKey(c,false, true);
_nameUpdates.put(baseName + ".full.jpg", baseName + ".jpg");
if (ImageCache.hasBackFacePicture(c)) {
baseName = ImageCache.getImageKey(c, true, true);
if (ImageUtil.hasBackFacePicture(c)) {
baseName = ImageUtil.getImageKey(c, true, true);
_nameUpdates.put(baseName + ".full.jpg", baseName + ".jpg");
}
}
}
CardEdition.Collection editions = Singletons.getMagicDb().getEditions();
CardEdition.Collection editions = FModel.getMagicDb().getEditions();
String editionCode = root.getName();
CardEdition edition = editions.get(editionCode);
if (null == edition) {
@@ -413,7 +417,7 @@ public class ImportSourceAnalyzer {
final String editionCode2 = edition.getCode2();
final Map<String, String> validFilenames = _cardFileNamesBySet.get(editionCode2);
_analyzeListedDir(root, NewConstants.CACHE_CARD_PICS_DIR, new _ListedAnalyzer() {
_analyzeListedDir(root, ForgeConstants.CACHE_CARD_PICS_DIR, new _ListedAnalyzer() {
@Override public String map(String filename) {
filename = editionCode2 + "/" + filename;
if (_nameUpdates.containsKey(filename)) {
@@ -441,15 +445,15 @@ public class ImportSourceAnalyzer {
private void _analyzeIconsPicsDir(File root) {
if (null == _iconFileNames) {
_iconFileNames = new TreeMap<String, String>(String.CASE_INSENSITIVE_ORDER);
for (Pair<String, String> nameurl : FileUtil.readNameUrlFile(NewConstants.IMAGE_LIST_QUEST_OPPONENT_ICONS_FILE)) {
for (Pair<String, String> nameurl : FileUtil.readNameUrlFile(ForgeConstants.IMAGE_LIST_QUEST_OPPONENT_ICONS_FILE)) {
_iconFileNames.put(nameurl.getLeft(), nameurl.getLeft());
}
for (Pair<String, String> nameurl : FileUtil.readNameUrlFile(NewConstants.IMAGE_LIST_QUEST_PET_SHOP_ICONS_FILE)) {
for (Pair<String, String> nameurl : FileUtil.readNameUrlFile(ForgeConstants.IMAGE_LIST_QUEST_PET_SHOP_ICONS_FILE)) {
_iconFileNames.put(nameurl.getLeft(), nameurl.getLeft());
}
}
_analyzeListedDir(root, NewConstants.CACHE_ICON_PICS_DIR, new _ListedAnalyzer() {
_analyzeListedDir(root, ForgeConstants.CACHE_ICON_PICS_DIR, new _ListedAnalyzer() {
@Override public String map(String filename) { return _iconFileNames.containsKey(filename) ? _iconFileNames.get(filename) : null; }
@Override public OpType getOpType(String filename) { return OpType.QUEST_PIC; }
});
@@ -461,15 +465,15 @@ public class ImportSourceAnalyzer {
if (null == _tokenFileNames) {
_tokenFileNames = new TreeMap<String, String>(String.CASE_INSENSITIVE_ORDER);
_questTokenFileNames = new TreeMap<String, String>(String.CASE_INSENSITIVE_ORDER);
for (Pair<String, String> nameurl : FileUtil.readNameUrlFile(NewConstants.IMAGE_LIST_TOKENS_FILE)) {
for (Pair<String, String> nameurl : FileUtil.readNameUrlFile(ForgeConstants.IMAGE_LIST_TOKENS_FILE)) {
_tokenFileNames.put(nameurl.getLeft(), nameurl.getLeft());
}
for (Pair<String, String> nameurl : FileUtil.readNameUrlFile(NewConstants.IMAGE_LIST_QUEST_TOKENS_FILE)) {
for (Pair<String, String> nameurl : FileUtil.readNameUrlFile(ForgeConstants.IMAGE_LIST_QUEST_TOKENS_FILE)) {
_questTokenFileNames.put(nameurl.getLeft(), nameurl.getLeft());
}
}
_analyzeListedDir(root, NewConstants.CACHE_TOKEN_PICS_DIR, new _ListedAnalyzer() {
_analyzeListedDir(root, ForgeConstants.CACHE_TOKEN_PICS_DIR, new _ListedAnalyzer() {
@Override public String map(String filename) {
if (_questTokenFileNames.containsKey(filename)) { return _questTokenFileNames.get(filename); }
if (_tokenFileNames.containsKey(filename)) { return _tokenFileNames.get(filename); }
@@ -487,13 +491,13 @@ public class ImportSourceAnalyzer {
@Override boolean onDir(File dir) {
String dirName = dir.getName();
if ("booster".equalsIgnoreCase(dirName)) {
_analyzeSimpleListedDir(dir, NewConstants.IMAGE_LIST_QUEST_BOOSTERS_FILE, NewConstants.CACHE_BOOSTER_PICS_DIR, OpType.QUEST_PIC);
_analyzeSimpleListedDir(dir, ForgeConstants.IMAGE_LIST_QUEST_BOOSTERS_FILE, ForgeConstants.CACHE_BOOSTER_PICS_DIR, OpType.QUEST_PIC);
} else if ("fatpacks".equalsIgnoreCase(dirName)) {
_analyzeSimpleListedDir(dir, NewConstants.IMAGE_LIST_QUEST_FATPACKS_FILE, NewConstants.CACHE_FATPACK_PICS_DIR, OpType.QUEST_PIC);
_analyzeSimpleListedDir(dir, ForgeConstants.IMAGE_LIST_QUEST_FATPACKS_FILE, ForgeConstants.CACHE_FATPACK_PICS_DIR, OpType.QUEST_PIC);
} else if ("precons".equalsIgnoreCase(dirName)) {
_analyzeSimpleListedDir(dir, NewConstants.IMAGE_LIST_QUEST_PRECONS_FILE, NewConstants.CACHE_PRECON_PICS_DIR, OpType.QUEST_PIC);
_analyzeSimpleListedDir(dir, ForgeConstants.IMAGE_LIST_QUEST_PRECONS_FILE, ForgeConstants.CACHE_PRECON_PICS_DIR, OpType.QUEST_PIC);
} else if ("tournamentpacks".equalsIgnoreCase(dirName)) {
_analyzeSimpleListedDir(dir, NewConstants.IMAGE_LIST_QUEST_TOURNAMENTPACKS_FILE, NewConstants.CACHE_TOURNAMENTPACK_PICS_DIR, OpType.QUEST_PIC);
_analyzeSimpleListedDir(dir, ForgeConstants.IMAGE_LIST_QUEST_TOURNAMENTPACKS_FILE, ForgeConstants.CACHE_TOURNAMENTPACK_PICS_DIR, OpType.QUEST_PIC);
} else {
return false;
}
@@ -511,7 +515,7 @@ public class ImportSourceAnalyzer {
@Override void onFile(File file) {
String filename = file.getName();
if ("editor.preferences".equalsIgnoreCase(filename) || "forge.preferences".equalsIgnoreCase(filename)) {
File targetFile = new File(NewConstants.USER_PREFS_DIR, filename.toLowerCase(Locale.ENGLISH));
File targetFile = new File(ForgeConstants.USER_PREFS_DIR, filename.toLowerCase(Locale.ENGLISH));
if (!file.equals(targetFile)) {
_cb.addOp(OpType.PREFERENCE_FILE, file, targetFile);
}
@@ -529,7 +533,7 @@ public class ImportSourceAnalyzer {
@Override void onFile(File file) {
String filename = file.getName();
if ("all-prices.txt".equalsIgnoreCase(filename)) {
File targetFile = new File(NewConstants.DB_DIR, filename.toLowerCase(Locale.ENGLISH));
File targetFile = new File(ForgeConstants.DB_DIR, filename.toLowerCase(Locale.ENGLISH));
if (!file.equals(targetFile)) {
_cb.addOp(OpType.DB_FILE, file, targetFile);
}
@@ -550,7 +554,7 @@ public class ImportSourceAnalyzer {
@Override void onFile(File file) {
String filename = file.getName();
if (StringUtils.endsWithIgnoreCase(filename, ".dat")) {
File targetFile = new File(NewConstants.QUEST_SAVE_DIR, _lcaseExt(filename));
File targetFile = new File(ForgeConstants.QUEST_SAVE_DIR, _lcaseExt(filename));
if (!file.equals(targetFile)) {
_cb.addOp(OpType.QUEST_DATA, file, targetFile);
}

View File

@@ -22,10 +22,10 @@ import com.google.common.base.Function;
import com.google.common.collect.Lists;
import forge.FThreads;
import forge.gui.toolbox.FList;
import forge.gui.toolbox.FMouseAdapter;
import forge.gui.toolbox.FOptionPane;
import forge.gui.toolbox.FScrollPane;
import forge.toolbox.FList;
import forge.toolbox.FMouseAdapter;
import forge.toolbox.FOptionPane;
import forge.toolbox.FScrollPane;
import javax.swing.*;
import javax.swing.event.ListSelectionEvent;
@@ -60,7 +60,7 @@ import java.util.List;
* @param <T>
* the generic type
* @author Forge
* @version $Id$
* @version $Id: ListChooser.java 25183 2014-03-14 23:09:45Z drdev $
*/
public class ListChooser<T> {
// Data and number of choices for the list

View File

@@ -1,17 +1,19 @@
package forge.gui;
import forge.Singletons;
import forge.gui.match.TargetingOverlay;
import forge.gui.toolbox.FLabel;
import forge.gui.toolbox.FOverlay;
import forge.gui.toolbox.FPanel;
import forge.gui.toolbox.FSkin;
import forge.gui.toolbox.FSkin.SkinnedButton;
import forge.gui.toolbox.FSkin.SkinnedLabel;
import forge.assets.FSkinProp;
import forge.screens.match.TargetingOverlay;
import forge.toolbox.FLabel;
import forge.toolbox.FOverlay;
import forge.toolbox.FPanel;
import forge.toolbox.FSkin;
import forge.toolbox.FSkin.SkinnedButton;
import forge.toolbox.FSkin.SkinnedLabel;
import net.miginfocom.swing.MigLayout;
import javax.swing.FocusManager;
import javax.swing.*;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
@@ -41,7 +43,7 @@ public final class SOverlayUtils {
pnl.setBackground(FSkin.getColor(FSkin.Colors.CLR_ACTIVE));
pnl.setBounds(new Rectangle(((w - pnlW) / 2), ((h - pnlH) / 2), pnlW, pnlH));
pnl.add(new FLabel.Builder().icon(FSkin.getIcon(FSkin.InterfaceIcons.ICO_LOGO)).build(),
pnl.add(new FLabel.Builder().icon(FSkin.getIcon(FSkinProp.ICO_LOGO)).build(),
"h 200px!, align center");
pnl.add(new FLabel.Builder().text("Loading new game...")
.fontSize(22).build(), "h 40px!, align center");

View File

@@ -1,16 +1,19 @@
package forge.gui.framework;
import com.google.common.collect.Lists;
import forge.Singletons;
import forge.gui.toolbox.FPanel;
import forge.gui.toolbox.FSkin;
import forge.gui.toolbox.FSkin.SkinImage;
import forge.assets.FSkinProp;
import forge.model.FModel;
import forge.properties.ForgePreferences;
import forge.properties.ForgePreferences.FPref;
import forge.toolbox.FPanel;
import forge.toolbox.FSkin;
import forge.toolbox.FSkin.SkinImage;
import forge.view.FView;
import net.miginfocom.swing.MigLayout;
import javax.swing.*;
import java.awt.*;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
@@ -107,7 +110,7 @@ public final class DragCell extends JPanel implements ILocalRepaint {
* Determines visibility of tabs on game screen.
*/
private boolean showGameTabs() {
ForgePreferences prefs = Singletons.getModel().getPreferences();
ForgePreferences prefs = FModel.getPreferences();
return !prefs.getPrefBoolean(FPref.UI_HIDE_GAME_TABS);
}
@@ -437,7 +440,7 @@ public final class DragCell extends JPanel implements ILocalRepaint {
/** Paints dragging handle image the length of the label. */
private class DragHandle extends JLabel {
private final SkinImage img = FSkin.getImage(FSkin.LayoutImages.IMG_HANDLE);
private final SkinImage img = FSkin.getImage(FSkinProp.IMG_HANDLE);
private boolean hovered = false;
public DragHandle() {

View File

@@ -1,9 +1,10 @@
package forge.gui.framework;
import forge.gui.toolbox.FSkin;
import forge.gui.toolbox.FSkin.SkinnedLabel;
import forge.toolbox.FSkin;
import forge.toolbox.FSkin.SkinnedLabel;
import javax.swing.border.EmptyBorder;
import java.awt.*;
/**

View File

@@ -3,23 +3,23 @@
*/
package forge.gui.framework;
import forge.gui.deckeditor.views.*;
import forge.gui.home.gauntlet.VSubmenuGauntletBuild;
import forge.gui.home.gauntlet.VSubmenuGauntletContests;
import forge.gui.home.gauntlet.VSubmenuGauntletLoad;
import forge.gui.home.gauntlet.VSubmenuGauntletQuick;
import forge.gui.home.quest.*;
import forge.gui.home.sanctioned.VSubmenuConstructed;
import forge.gui.home.sanctioned.VSubmenuDraft;
import forge.gui.home.sanctioned.VSubmenuSealed;
import forge.gui.home.settings.VSubmenuAvatars;
import forge.gui.home.settings.VSubmenuDownloaders;
import forge.gui.home.settings.VSubmenuPreferences;
import forge.gui.home.settings.VSubmenuReleaseNotes;
import forge.gui.match.views.*;
import forge.gui.workshop.views.VCardDesigner;
import forge.gui.workshop.views.VCardScript;
import forge.gui.workshop.views.VWorkshopCatalog;
import forge.screens.deckeditor.views.*;
import forge.screens.home.gauntlet.VSubmenuGauntletBuild;
import forge.screens.home.gauntlet.VSubmenuGauntletContests;
import forge.screens.home.gauntlet.VSubmenuGauntletLoad;
import forge.screens.home.gauntlet.VSubmenuGauntletQuick;
import forge.screens.home.quest.*;
import forge.screens.home.sanctioned.VSubmenuConstructed;
import forge.screens.home.sanctioned.VSubmenuDraft;
import forge.screens.home.sanctioned.VSubmenuSealed;
import forge.screens.home.settings.VSubmenuAvatars;
import forge.screens.home.settings.VSubmenuDownloaders;
import forge.screens.home.settings.VSubmenuPreferences;
import forge.screens.home.settings.VSubmenuReleaseNotes;
import forge.screens.match.views.*;
import forge.screens.workshop.views.VCardDesigner;
import forge.screens.workshop.views.VCardScript;
import forge.screens.workshop.views.VWorkshopCatalog;
/**
* These are the identifiers for tabs found in the drag layout.

View File

@@ -1,21 +1,22 @@
package forge.gui.framework;
import forge.Singletons;
import forge.gui.bazaar.CBazaarUI;
import forge.gui.bazaar.VBazaarUI;
import forge.gui.deckeditor.CDeckEditorUI;
import forge.gui.deckeditor.VDeckEditorUI;
import forge.gui.home.CHomeUI;
import forge.gui.home.VHomeUI;
import forge.gui.match.CMatchUI;
import forge.gui.match.VMatchUI;
import forge.gui.toolbox.FOptionPane;
import forge.gui.toolbox.FSkin;
import forge.gui.toolbox.FSkin.SkinImage;
import forge.gui.workshop.CWorkshopUI;
import forge.gui.workshop.VWorkshopUI;
import forge.assets.FSkinProp;
import forge.properties.FileLocation;
import forge.properties.NewConstants;
import forge.properties.ForgeConstants;
import forge.screens.bazaar.CBazaarUI;
import forge.screens.bazaar.VBazaarUI;
import forge.screens.deckeditor.CDeckEditorUI;
import forge.screens.deckeditor.VDeckEditorUI;
import forge.screens.home.CHomeUI;
import forge.screens.home.VHomeUI;
import forge.screens.match.CMatchUI;
import forge.screens.match.VMatchUI;
import forge.screens.workshop.CWorkshopUI;
import forge.screens.workshop.VWorkshopUI;
import forge.toolbox.FOptionPane;
import forge.toolbox.FSkin;
import forge.toolbox.FSkin.SkinImage;
import java.io.File;
@@ -28,7 +29,7 @@ public enum FScreen {
VHomeUI.SINGLETON_INSTANCE,
CHomeUI.SINGLETON_INSTANCE,
"Home",
FSkin.getIcon(FSkin.InterfaceIcons.ICO_FAVICON),
FSkin.getIcon(FSkinProp.ICO_FAVICON),
false,
"Exit Forge",
null),
@@ -36,103 +37,103 @@ public enum FScreen {
VMatchUI.SINGLETON_INSTANCE,
CMatchUI.SINGLETON_INSTANCE,
"Game",
FSkin.getIcon(FSkin.DockIcons.ICO_ALPHASTRIKE), //TODO: Create icon for match screen
FSkin.getIcon(FSkinProp.ICO_ALPHASTRIKE), //TODO: Create icon for match screen
true,
"Concede Game",
NewConstants.MATCH_LAYOUT_FILE),
ForgeConstants.MATCH_LAYOUT_FILE),
WORKSHOP_SCREEN(
VWorkshopUI.SINGLETON_INSTANCE,
CWorkshopUI.SINGLETON_INSTANCE,
"Workshop",
FSkin.getIcon(FSkin.DockIcons.ICO_SETTINGS), //TODO: Create icon for workshop screen
FSkin.getIcon(FSkinProp.ICO_SETTINGS), //TODO: Create icon for workshop screen
false,
"Back to Home",
NewConstants.WORKSHOP_LAYOUT_FILE),
ForgeConstants.WORKSHOP_LAYOUT_FILE),
DECK_EDITOR_CONSTRUCTED(
VDeckEditorUI.SINGLETON_INSTANCE,
CDeckEditorUI.SINGLETON_INSTANCE,
"Deck Editor",
FSkin.getImage(FSkin.EditorImages.IMG_PACK),
FSkin.getImage(FSkinProp.IMG_PACK),
false,
"Back to Home",
NewConstants.EDITOR_LAYOUT_FILE),
ForgeConstants.EDITOR_LAYOUT_FILE),
DECK_EDITOR_ARCHENEMY(
VDeckEditorUI.SINGLETON_INSTANCE,
CDeckEditorUI.SINGLETON_INSTANCE,
"Scheme Deck Editor",
FSkin.getImage(FSkin.EditorImages.IMG_PACK),
FSkin.getImage(FSkinProp.IMG_PACK),
true,
"Close Editor",
NewConstants.EDITOR_LAYOUT_FILE),
ForgeConstants.EDITOR_LAYOUT_FILE),
DECK_EDITOR_COMMANDER(
VDeckEditorUI.SINGLETON_INSTANCE,
CDeckEditorUI.SINGLETON_INSTANCE,
"Commander Deck Editor",
FSkin.getImage(FSkin.EditorImages.IMG_PACK),
FSkin.getImage(FSkinProp.IMG_PACK),
true,
"Close Editor",
NewConstants.EDITOR_LAYOUT_FILE),
ForgeConstants.EDITOR_LAYOUT_FILE),
DECK_EDITOR_PLANECHASE(
VDeckEditorUI.SINGLETON_INSTANCE,
CDeckEditorUI.SINGLETON_INSTANCE,
"Planar Deck Editor",
FSkin.getImage(FSkin.EditorImages.IMG_PACK),
FSkin.getImage(FSkinProp.IMG_PACK),
true,
"Close Editor",
NewConstants.EDITOR_LAYOUT_FILE),
ForgeConstants.EDITOR_LAYOUT_FILE),
DECK_EDITOR_VANGUARD(
VDeckEditorUI.SINGLETON_INSTANCE,
CDeckEditorUI.SINGLETON_INSTANCE,
"Vanguard Deck Editor",
FSkin.getImage(FSkin.EditorImages.IMG_PACK),
FSkin.getImage(FSkinProp.IMG_PACK),
true,
"Close Editor",
NewConstants.EDITOR_LAYOUT_FILE),
ForgeConstants.EDITOR_LAYOUT_FILE),
DECK_EDITOR_DRAFT(
VDeckEditorUI.SINGLETON_INSTANCE,
CDeckEditorUI.SINGLETON_INSTANCE,
"Draft Deck Editor",
FSkin.getImage(FSkin.EditorImages.IMG_PACK),
FSkin.getImage(FSkinProp.IMG_PACK),
true,
"Close Editor",
NewConstants.EDITOR_LAYOUT_FILE),
ForgeConstants.EDITOR_LAYOUT_FILE),
DECK_EDITOR_SEALED(
VDeckEditorUI.SINGLETON_INSTANCE,
CDeckEditorUI.SINGLETON_INSTANCE,
"Sealed Deck Editor",
FSkin.getImage(FSkin.EditorImages.IMG_PACK),
FSkin.getImage(FSkinProp.IMG_PACK),
true,
"Close Editor",
NewConstants.EDITOR_LAYOUT_FILE),
ForgeConstants.EDITOR_LAYOUT_FILE),
DECK_EDITOR_QUEST(
VDeckEditorUI.SINGLETON_INSTANCE,
CDeckEditorUI.SINGLETON_INSTANCE,
"Quest Deck Editor",
FSkin.getImage(FSkin.EditorImages.IMG_PACK),
FSkin.getImage(FSkinProp.IMG_PACK),
true,
"Close Editor",
NewConstants.EDITOR_LAYOUT_FILE),
ForgeConstants.EDITOR_LAYOUT_FILE),
QUEST_CARD_SHOP(
VDeckEditorUI.SINGLETON_INSTANCE,
CDeckEditorUI.SINGLETON_INSTANCE,
"Spell Shop",
FSkin.getIcon(FSkin.QuestIcons.ICO_BOOK),
FSkin.getIcon(FSkinProp.ICO_QUEST_BOOK),
true,
"Leave Shop",
NewConstants.EDITOR_LAYOUT_FILE),
ForgeConstants.EDITOR_LAYOUT_FILE),
DRAFTING_PROCESS(
VDeckEditorUI.SINGLETON_INSTANCE,
CDeckEditorUI.SINGLETON_INSTANCE,
"Draft",
FSkin.getImage(FSkin.ZoneImages.IMG_HAND),
FSkin.getImage(FSkinProp.IMG_ZONE_HAND),
true,
"Leave Draft",
NewConstants.EDITOR_LAYOUT_FILE),
ForgeConstants.EDITOR_LAYOUT_FILE),
QUEST_BAZAAR(
VBazaarUI.SINGLETON_INSTANCE,
CBazaarUI.SINGLETON_INSTANCE,
"Bazaar",
FSkin.getIcon(FSkin.QuestIcons.ICO_BOTTLES),
FSkin.getIcon(FSkinProp.ICO_QUEST_BOTTLES),
true,
"Leave Bazaar",
null);

View File

@@ -1,9 +1,9 @@
package forge.gui.framework;
import forge.Singletons;
import forge.gui.toolbox.FAbsolutePositioner;
import forge.properties.FileLocation;
import forge.properties.NewConstants;
import forge.properties.ForgeConstants;
import forge.toolbox.FAbsolutePositioner;
import forge.util.CollectionSuppliers;
import forge.util.ThreadUtil;
import forge.util.maps.HashMapOfLists;
@@ -16,6 +16,7 @@ import javax.xml.stream.*;
import javax.xml.stream.events.Attribute;
import javax.xml.stream.events.StartElement;
import javax.xml.stream.events.XMLEvent;
import java.awt.*;
import java.io.*;
import java.util.Collection;
@@ -65,7 +66,7 @@ public final class SLayoutIO {
final Rectangle normalBounds = window.getNormalBounds();
final FileLocation file = NewConstants.WINDOW_LAYOUT_FILE;
final FileLocation file = ForgeConstants.WINDOW_LAYOUT_FILE;
final String fWriteTo = file.userPrefLoc;
final XMLOutputFactory out = XMLOutputFactory.newInstance();
FileOutputStream fos = null;
@@ -105,7 +106,7 @@ public final class SLayoutIO {
public static void loadWindowLayout() {
final FFrame window = FView.SINGLETON_INSTANCE.getFrame();
final XMLInputFactory inputFactory = XMLInputFactory.newInstance();
final FileLocation file = NewConstants.WINDOW_LAYOUT_FILE;
final FileLocation file = ForgeConstants.WINDOW_LAYOUT_FILE;
boolean usedCustomPrefsFile = false;
FileInputStream fis = null;
try {

View File

@@ -1,9 +1,10 @@
package forge.gui.framework;
import forge.assets.FSkinProp;
import forge.gui.MouseUtil;
import forge.gui.toolbox.FSkin;
import forge.gui.toolbox.FSkin.SkinCursor;
import forge.gui.toolbox.FSkin.SkinnedLayeredPane;
import forge.toolbox.FSkin;
import forge.toolbox.FSkin.SkinCursor;
import forge.toolbox.FSkin.SkinnedLayeredPane;
import forge.view.FView;
import javax.swing.*;
@@ -47,11 +48,11 @@ public final class SRearrangingUtil {
private static List<IVDoc<? extends ICDoc>> docsToMove = new ArrayList<IVDoc<? extends ICDoc>>();
private static IVDoc<? extends ICDoc> srcSelectedDoc = null;
private static final SkinCursor CUR_L = FSkin.getCursor(FSkin.LayoutImages.IMG_CUR_L, 16, 16, "CUR_L");
private static final SkinCursor CUR_T = FSkin.getCursor(FSkin.LayoutImages.IMG_CUR_T, 16, 16, "CUR_T");
private static final SkinCursor CUR_B = FSkin.getCursor(FSkin.LayoutImages.IMG_CUR_B, 16, 16, "CUR_B");
private static final SkinCursor CUR_R = FSkin.getCursor(FSkin.LayoutImages.IMG_CUR_R, 16, 16, "CUR_R");
private static final SkinCursor CUR_TAB = FSkin.getCursor(FSkin.LayoutImages.IMG_CUR_TAB, 16, 16, "CUR_TAB");
private static final SkinCursor CUR_L = FSkin.getCursor(FSkinProp.IMG_CUR_L, 16, 16, "CUR_L");
private static final SkinCursor CUR_T = FSkin.getCursor(FSkinProp.IMG_CUR_T, 16, 16, "CUR_T");
private static final SkinCursor CUR_B = FSkin.getCursor(FSkinProp.IMG_CUR_B, 16, 16, "CUR_B");
private static final SkinCursor CUR_R = FSkin.getCursor(FSkinProp.IMG_CUR_R, 16, 16, "CUR_R");
private static final SkinCursor CUR_TAB = FSkin.getCursor(FSkinProp.IMG_CUR_TAB, 16, 16, "CUR_TAB");
private static final MouseListener MAD_REARRANGE = new MouseAdapter() {
@Override

View File

@@ -2,8 +2,8 @@ package forge.gui.framework;
import forge.gui.FNetOverlay;
import forge.gui.MouseUtil;
import forge.gui.toolbox.FAbsolutePositioner;
import forge.gui.toolbox.FOverlay;
import forge.toolbox.FAbsolutePositioner;
import forge.toolbox.FOverlay;
import forge.view.FDialog;
import forge.view.FFrame;
import forge.view.FNavigationBar;

View File

@@ -1,14 +1,15 @@
package forge.gui.toolbox.itemmanager;
package forge.itemmanager;
import forge.Singletons;
import forge.game.GameFormat;
import forge.gui.GuiUtils;
import forge.gui.home.quest.DialogChooseSets;
import forge.gui.toolbox.itemmanager.filters.*;
import forge.item.PaperCard;
import forge.itemmanager.filters.*;
import forge.model.FModel;
import forge.quest.QuestWorld;
import forge.screens.home.quest.DialogChooseSets;
import javax.swing.*;
import java.util.List;
/**
@@ -52,7 +53,7 @@ public class CardManager extends ItemManager<PaperCard> {
GuiUtils.addSeparator(menu); //separate from current search item
JMenu fmt = GuiUtils.createMenu("Format");
for (final GameFormat f : Singletons.getModel().getFormats()) {
for (final GameFormat f : FModel.getFormats()) {
GuiUtils.addMenuItem(fmt, f.getName(), null, new Runnable() {
@Override
public void run() {
@@ -85,7 +86,7 @@ public class CardManager extends ItemManager<PaperCard> {
});
JMenu world = GuiUtils.createMenu("Quest world");
for (final QuestWorld w : Singletons.getModel().getWorlds()) {
for (final QuestWorld w : FModel.getWorlds()) {
GuiUtils.addMenuItem(world, w.getName(), null, new Runnable() {
@Override
public void run() {

View File

@@ -1,26 +1,31 @@
package forge.gui.toolbox.itemmanager;
package forge.itemmanager;
import forge.UiCommand;
import forge.Singletons;
import forge.assets.FSkinProp;
import forge.deck.DeckBase;
import forge.deck.io.DeckPreferences;
import forge.game.GameFormat;
import forge.game.GameType;
import forge.gui.GuiUtils;
import forge.gui.deckeditor.CDeckEditorUI;
import forge.gui.deckeditor.DeckProxy;
import forge.gui.deckeditor.SEditorIO;
import forge.gui.deckeditor.controllers.ACEditorBase;
import forge.gui.deckeditor.controllers.CEditorLimited;
import forge.gui.deckeditor.controllers.CEditorQuest;
import forge.deck.DeckProxy;
import forge.gui.framework.FScreen;
import forge.gui.home.quest.DialogChooseSets;
import forge.gui.toolbox.FOptionPane;
import forge.gui.toolbox.FSkin;
import forge.gui.toolbox.itemmanager.filters.*;
import forge.gui.toolbox.itemmanager.views.*;
import forge.item.InventoryItem;
import forge.itemmanager.ColumnDef;
import forge.itemmanager.ItemColumn;
import forge.itemmanager.ItemManagerConfig;
import forge.itemmanager.filters.*;
import forge.itemmanager.views.*;
import forge.model.FModel;
import forge.quest.QuestWorld;
import forge.screens.deckeditor.CDeckEditorUI;
import forge.screens.deckeditor.SEditorIO;
import forge.screens.deckeditor.controllers.ACEditorBase;
import forge.screens.deckeditor.controllers.CEditorLimited;
import forge.screens.deckeditor.controllers.CEditorQuest;
import forge.screens.home.quest.DialogChooseSets;
import forge.toolbox.FOptionPane;
import forge.toolbox.FSkin;
import org.apache.commons.lang3.StringUtils;
@@ -43,10 +48,10 @@ import java.util.Set;
*/
@SuppressWarnings("serial")
public final class DeckManager extends ItemManager<DeckProxy> {
private static final FSkin.SkinIcon icoDelete = FSkin.getIcon(FSkin.InterfaceIcons.ICO_DELETE);
private static final FSkin.SkinIcon icoDeleteOver = FSkin.getIcon(FSkin.InterfaceIcons.ICO_DELETE_OVER);
private static final FSkin.SkinIcon icoEdit = FSkin.getIcon(FSkin.InterfaceIcons.ICO_EDIT);
private static final FSkin.SkinIcon icoEditOver = FSkin.getIcon(FSkin.InterfaceIcons.ICO_EDIT_OVER);
private static final FSkin.SkinIcon icoDelete = FSkin.getIcon(FSkinProp.ICO_DELETE);
private static final FSkin.SkinIcon icoDeleteOver = FSkin.getIcon(FSkinProp.ICO_DELETE_OVER);
private static final FSkin.SkinIcon icoEdit = FSkin.getIcon(FSkinProp.ICO_EDIT);
private static final FSkin.SkinIcon icoEditOver = FSkin.getIcon(FSkinProp.ICO_EDIT_OVER);
private final GameType gametype;
private UiCommand cmdDelete, cmdSelect;
@@ -83,11 +88,11 @@ public final class DeckManager extends ItemManager<DeckProxy> {
boolean wasStringOnly = (this.getConfig() == ItemManagerConfig.STRING_ONLY);
boolean isStringOnly = (config0 == ItemManagerConfig.STRING_ONLY);
Map<ColumnDef, ItemColumn> colOverrides = null;
Map<ColumnDef, ItemTableColumn> colOverrides = null;
if (config0.getCols().containsKey(ColumnDef.DECK_ACTIONS)) {
ItemColumn column = new ItemColumn(config0.getCols().get(ColumnDef.DECK_ACTIONS));
ItemTableColumn column = new ItemTableColumn(new ItemColumn(config0.getCols().get(ColumnDef.DECK_ACTIONS)));
column.setCellRenderer(new DeckActionsRenderer());
colOverrides = new HashMap<ColumnDef, ItemColumn>();
colOverrides = new HashMap<ColumnDef, ItemTableColumn>();
colOverrides.put(ColumnDef.DECK_ACTIONS, column);
}
super.setup(config0, colOverrides);
@@ -155,7 +160,7 @@ public final class DeckManager extends ItemManager<DeckProxy> {
menu.add(folder);
JMenu fmt = GuiUtils.createMenu("Format");
for (final GameFormat f : Singletons.getModel().getFormats()) {
for (final GameFormat f : FModel.getFormats()) {
GuiUtils.addMenuItem(fmt, f.getName(), null, new Runnable() {
@Override
public void run() {
@@ -188,7 +193,7 @@ public final class DeckManager extends ItemManager<DeckProxy> {
});
JMenu world = GuiUtils.createMenu("Quest world");
for (final QuestWorld w : Singletons.getModel().getWorlds()) {
for (final QuestWorld w : FModel.getWorlds()) {
GuiUtils.addMenuItem(world, w.getName(), null, new Runnable() {
@Override
public void run() {
@@ -217,7 +222,7 @@ public final class DeckManager extends ItemManager<DeckProxy> {
switch (this.gametype) {
case Quest:
screen = FScreen.DECK_EDITOR_QUEST;
editorCtrl = new CEditorQuest(Singletons.getModel().getQuest());
editorCtrl = new CEditorQuest(FModel.getQuest());
break;
case Constructed:
screen = FScreen.DECK_EDITOR_CONSTRUCTED;
@@ -226,11 +231,11 @@ public final class DeckManager extends ItemManager<DeckProxy> {
break;
case Sealed:
screen = FScreen.DECK_EDITOR_SEALED;
editorCtrl = new CEditorLimited(Singletons.getModel().getDecks().getSealed(), screen);
editorCtrl = new CEditorLimited(FModel.getDecks().getSealed(), screen);
break;
case Draft:
screen = FScreen.DECK_EDITOR_DRAFT;
editorCtrl = new CEditorLimited(Singletons.getModel().getDecks().getDraft(), screen);
editorCtrl = new CEditorLimited(FModel.getDecks().getDraft(), screen);
break;
default:
@@ -266,7 +271,7 @@ public final class DeckManager extends ItemManager<DeckProxy> {
break;
case Quest:
deck.deleteFromStorage();
Singletons.getModel().getQuest().save();
FModel.getQuest().save();
break;
default:
throw new UnsupportedOperationException("Delete not implemneted for game type = " + gametype.toString());

View File

@@ -15,22 +15,27 @@
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
package forge.gui.toolbox.itemmanager;
package forge.itemmanager;
import com.google.common.base.Predicate;
import com.google.common.base.Predicates;
import com.google.common.collect.Iterables;
import forge.UiCommand;
import forge.assets.FSkinProp;
import forge.gui.GuiUtils;
import forge.gui.toolbox.*;
import forge.gui.toolbox.FSkin.Colors;
import forge.gui.toolbox.FSkin.SkinIcon;
import forge.gui.toolbox.FSkin.SkinnedCheckBox;
import forge.gui.toolbox.FSkin.SkinnedPanel;
import forge.gui.toolbox.itemmanager.filters.ItemFilter;
import forge.gui.toolbox.itemmanager.views.*;
import forge.item.InventoryItem;
import forge.itemmanager.ColumnDef;
import forge.itemmanager.IItemManager;
import forge.itemmanager.ItemManagerConfig;
import forge.itemmanager.ItemManagerModel;
import forge.itemmanager.filters.ItemFilter;
import forge.itemmanager.views.*;
import forge.toolbox.*;
import forge.toolbox.FSkin.Colors;
import forge.toolbox.FSkin.SkinIcon;
import forge.toolbox.FSkin.SkinnedCheckBox;
import forge.toolbox.FSkin.SkinnedPanel;
import forge.util.Aggregates;
import forge.util.ItemPool;
import forge.util.ReflectionUtil;
@@ -55,7 +60,7 @@ import java.util.Map.Entry;
* the generic type
*/
@SuppressWarnings("serial")
public abstract class ItemManager<T extends InventoryItem> extends JPanel {
public abstract class ItemManager<T extends InventoryItem> extends JPanel implements IItemManager<T> {
private ItemPool<T> pool;
private final ItemManagerModel<T> model;
private Predicate<? super T> filterPredicate = null;
@@ -99,7 +104,7 @@ public abstract class ItemManager<T extends InventoryItem> extends JPanel {
.fontSize(12)
.build();
private static final SkinIcon VIEW_OPTIONS_ICON = FSkin.getIcon(FSkin.DockIcons.ICO_SETTINGS).resize(20, 20);
private static final SkinIcon VIEW_OPTIONS_ICON = FSkin.getIcon(FSkinProp.ICO_SETTINGS).resize(20, 20);
private final FLabel btnViewOptions = new FLabel.Builder()
.hoverable().selectable(true)
.icon(VIEW_OPTIONS_ICON).iconScaleAuto(false)
@@ -297,7 +302,7 @@ public abstract class ItemManager<T extends InventoryItem> extends JPanel {
public void setup(ItemManagerConfig config0) {
this.setup(config0, null);
}
public void setup(ItemManagerConfig config0, Map<ColumnDef, ItemColumn> colOverrides) {
public void setup(ItemManagerConfig config0, Map<ColumnDef, ItemTableColumn> colOverrides) {
this.config = config0;
this.setWantUnique(config0.getUniqueCardsOnly());
for (ItemView<T> view : this.views) {

View File

@@ -15,9 +15,9 @@
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
package forge.gui.toolbox.itemmanager;
package forge.itemmanager;
import forge.gui.toolbox.FSkin.SkinnedScrollPane;
import forge.toolbox.FSkin.SkinnedScrollPane;
import javax.swing.*;
import javax.swing.border.Border;

View File

@@ -1,7 +1,7 @@
package forge.gui.toolbox.itemmanager;
package forge.itemmanager;
import forge.gui.toolbox.itemmanager.filters.ItemFilter;
import forge.item.InventoryItem;
import forge.itemmanager.filters.ItemFilter;
import javax.swing.*;

View File

@@ -1,15 +1,16 @@
package forge.gui.toolbox.itemmanager.filters;
package forge.itemmanager.filters;
import com.google.common.base.Predicate;
import com.google.common.base.Predicates;
import forge.card.CardRules;
import forge.gui.toolbox.itemmanager.ItemManager;
import forge.gui.toolbox.itemmanager.SItemManagerUtil;
import forge.gui.toolbox.itemmanager.SItemManagerUtil.StatTypes;
import forge.gui.toolbox.itemmanager.SpellShopManager;
import forge.item.PaperCard;
import forge.itemmanager.ItemManager;
import forge.itemmanager.SpellShopManager;
import forge.itemmanager.SItemManagerUtil.StatTypes;
import javax.swing.*;
import java.util.ArrayList;
import java.util.List;
@@ -45,8 +46,8 @@ public class CardCMCFilter extends StatTypeFilter<PaperCard> {
protected final Predicate<PaperCard> buildPredicate() {
final List<Predicate<CardRules>> cmcs = new ArrayList<Predicate<CardRules>>();
for (SItemManagerUtil.StatTypes s : buttonMap.keySet()) {
if (s.predicate != null && buttonMap.get(s).getSelected()) {
for (StatTypes s : buttonMap.keySet()) {
if (s.predicate != null && buttonMap.get(s).isSelected()) {
cmcs.add(s.predicate);
}
}

View File

@@ -1,11 +1,12 @@
package forge.gui.toolbox.itemmanager.filters;
package forge.itemmanager.filters;
import com.google.common.base.Predicate;
import com.google.common.base.Predicates;
import forge.card.CardRules;
import forge.card.CardRulesPredicates;
import forge.gui.toolbox.itemmanager.ItemManager;
import forge.item.PaperCard;
import forge.itemmanager.ItemManager;
/**
* TODO: Write javadoc for this type.

View File

@@ -1,18 +1,16 @@
package forge.gui.toolbox.itemmanager.filters;
package forge.itemmanager.filters;
import com.google.common.base.Predicate;
import forge.gui.toolbox.itemmanager.ItemManager;
import forge.gui.toolbox.itemmanager.SFilterUtil;
import forge.gui.toolbox.itemmanager.SItemManagerUtil.StatTypes;
import forge.gui.toolbox.itemmanager.SpellShopManager;
import forge.item.PaperCard;
import forge.itemmanager.ItemManager;
import forge.itemmanager.SFilterUtil;
import forge.itemmanager.SpellShopManager;
import forge.itemmanager.SItemManagerUtil.StatTypes;
import javax.swing.*;
/**
* TODO: Write javadoc for this type.
*
*/
public class CardColorFilter extends StatTypeFilter<PaperCard> {
public CardColorFilter(ItemManager<? super PaperCard> itemManager0) {
super(itemManager0);

View File

@@ -1,15 +1,13 @@
package forge.gui.toolbox.itemmanager.filters;
package forge.itemmanager.filters;
import com.google.common.base.Predicate;
import forge.game.GameFormat;
import forge.gui.toolbox.itemmanager.ItemManager;
import forge.gui.toolbox.itemmanager.SFilterUtil;
import forge.item.PaperCard;
/**
* TODO: Write javadoc for this type.
*
*/
import forge.game.GameFormat;
import forge.item.PaperCard;
import forge.itemmanager.ItemManager;
import forge.itemmanager.SFilterUtil;
public class CardFormatFilter extends FormatFilter<PaperCard> {
public CardFormatFilter(ItemManager<? super PaperCard> itemManager0) {
super(itemManager0);

View File

@@ -1,11 +1,12 @@
package forge.gui.toolbox.itemmanager.filters;
package forge.itemmanager.filters;
import com.google.common.base.Predicate;
import com.google.common.base.Predicates;
import forge.card.CardRules;
import forge.card.CardRulesPredicates;
import forge.gui.toolbox.itemmanager.ItemManager;
import forge.item.PaperCard;
import forge.itemmanager.ItemManager;
/**
* TODO: Write javadoc for this type.

View File

@@ -1,18 +1,15 @@
package forge.gui.toolbox.itemmanager.filters;
package forge.itemmanager.filters;
import forge.Singletons;
import forge.game.GameFormat;
import forge.gui.toolbox.itemmanager.ItemManager;
import forge.item.PaperCard;
import forge.itemmanager.ItemManager;
import forge.model.FModel;
import forge.quest.QuestWorld;
import java.util.HashSet;
import java.util.Set;
/**
* TODO: Write javadoc for this type.
*
*/
public class CardQuestWorldFilter extends CardFormatFilter {
private final Set<QuestWorld> questWorlds = new HashSet<QuestWorld>();
@@ -42,7 +39,7 @@ public class CardQuestWorldFilter extends CardFormatFilter {
}
public static boolean canAddQuestWorld(QuestWorld questWorld, ItemFilter<PaperCard> existingFilter) {
if (questWorld.getFormat() == null && Singletons.getModel().getQuest().getMainFormat() == null) {
if (questWorld.getFormat() == null && FModel.getQuest().getMainFormat() == null) {
return false; //must have format
}
return existingFilter == null || !((CardQuestWorldFilter)existingFilter).questWorlds.contains(questWorld);
@@ -86,7 +83,7 @@ public class CardQuestWorldFilter extends CardFormatFilter {
GameFormat format = w.getFormat();
if (format == null) {
//assumes that no world other than the main world will have a null format
format = Singletons.getModel().getQuest().getMainFormat();
format = FModel.getQuest().getMainFormat();
}
return format;
}

View File

@@ -1,24 +1,23 @@
package forge.gui.toolbox.itemmanager.filters;
package forge.itemmanager.filters;
import com.google.common.base.Predicate;
import forge.UiCommand;
import forge.gui.toolbox.FComboBoxWrapper;
import forge.gui.toolbox.FLabel;
import forge.gui.toolbox.FTextField;
import forge.gui.toolbox.LayoutHelper;
import forge.gui.toolbox.itemmanager.ItemManager;
import forge.gui.toolbox.itemmanager.SFilterUtil;
import forge.item.InventoryItem;
import forge.item.PaperCard;
import forge.itemmanager.ItemManager;
import forge.itemmanager.SFilterUtil;
import forge.toolbox.FComboBoxWrapper;
import forge.toolbox.FLabel;
import forge.toolbox.FTextField;
import forge.toolbox.LayoutHelper;
import javax.swing.*;
import java.awt.event.ItemEvent;
import java.awt.event.ItemListener;
/**
* TODO: Write javadoc for this type.
*
*/
public class CardSearchFilter extends TextSearchFilter<PaperCard> {
private FComboBoxWrapper<String> cbSearchMode;
private FLabel btnName, btnType, btnText;
@@ -33,9 +32,9 @@ public class CardSearchFilter extends TextSearchFilter<PaperCard> {
copy.getWidget(); //initialize widget
copy.txtSearch.setText(this.txtSearch.getText());
copy.cbSearchMode.setSelectedIndex(this.cbSearchMode.getSelectedIndex());
copy.btnName.setSelected(this.btnName.getSelected());
copy.btnType.setSelected(this.btnType.getSelected());
copy.btnText.setSelected(this.btnText.getSelected());
copy.btnName.setSelected(this.btnName.isSelected());
copy.btnType.setSelected(this.btnType.isSelected());
copy.btnText.setSelected(this.btnText.isSelected());
return copy;
}
@@ -102,15 +101,15 @@ public class CardSearchFilter extends TextSearchFilter<PaperCard> {
return SFilterUtil.buildTextFilter(
txtSearch.getText(),
cbSearchMode.getSelectedIndex() != 0,
btnName.getSelected(),
btnType.getSelected(),
btnText.getSelected());
btnName.isSelected(),
btnType.isSelected(),
btnText.isSelected());
}
@Override
protected <U extends InventoryItem> boolean showUnsupportedItem(U item) {
//fallback to regular item text filter if item not PaperCard
boolean result = btnName.getSelected() && SFilterUtil.buildItemTextFilter(txtSearch.getText()).apply(item);
boolean result = btnName.isSelected() && SFilterUtil.buildItemTextFilter(txtSearch.getText()).apply(item);
if (cbSearchMode.getSelectedIndex() != 0) { //invert result if needed
result = !result;
}

Some files were not shown because too many files have changed in this diff Show More