mirror of
https://github.com/Card-Forge/forge.git
synced 2025-11-16 10:48:00 +00:00
TokenViewer Deck "editor"
This commit is contained in:
@@ -103,7 +103,7 @@ public class TokenDb implements ITokenDatabase {
|
||||
|
||||
@Override
|
||||
public List<PaperToken> getAllTokens() {
|
||||
return null;
|
||||
return new ArrayList<>(tokensByName.values());
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -123,6 +123,6 @@ public class TokenDb implements ITokenDatabase {
|
||||
|
||||
@Override
|
||||
public Iterator<PaperToken> iterator() {
|
||||
return null;
|
||||
return tokensByName.values().iterator();
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,7 +1,5 @@
|
||||
package forge.gui.framework;
|
||||
|
||||
import java.io.File;
|
||||
|
||||
import forge.Singletons;
|
||||
import forge.assets.FSkinProp;
|
||||
import forge.properties.FileLocation;
|
||||
@@ -21,6 +19,8 @@ import forge.toolbox.FSkin;
|
||||
import forge.toolbox.FSkin.SkinImage;
|
||||
import forge.view.FView;
|
||||
|
||||
import java.io.File;
|
||||
|
||||
/**
|
||||
* Definitions for Forge screens
|
||||
*/
|
||||
@@ -115,6 +115,16 @@ public class FScreen {
|
||||
"Close Editor",
|
||||
ForgeConstants.EDITOR_LAYOUT_FILE,
|
||||
false);
|
||||
public static final FScreen TOKEN_VIEWER = new FScreen(
|
||||
VDeckEditorUI.SINGLETON_INSTANCE,
|
||||
CDeckEditorUI.SINGLETON_INSTANCE,
|
||||
"Token Viewer",
|
||||
FSkin.getImage(FSkinProp.IMG_PACK),
|
||||
true,
|
||||
"Close Viewer",
|
||||
ForgeConstants.EDITOR_LAYOUT_FILE,
|
||||
false);
|
||||
|
||||
public static final FScreen DECK_EDITOR_QUEST = new FScreen(
|
||||
VDeckEditorUI.SINGLETON_INSTANCE,
|
||||
CDeckEditorUI.SINGLETON_INSTANCE,
|
||||
|
||||
@@ -0,0 +1,28 @@
|
||||
package forge.itemmanager;
|
||||
|
||||
import forge.item.PaperToken;
|
||||
import forge.itemmanager.filters.ItemFilter;
|
||||
import forge.screens.match.controllers.CDetailPicture;
|
||||
|
||||
import javax.swing.*;
|
||||
|
||||
public class TokenManager extends ItemManager<PaperToken> {
|
||||
public TokenManager(final CDetailPicture cDetailPicture, final boolean wantUnique0) {
|
||||
super(PaperToken.class, cDetailPicture, wantUnique0);
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void addDefaultFilters() {
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
protected ItemFilter<PaperToken> createSearchFilter() {
|
||||
return null;
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void buildAddFilterMenu(JMenu menu) {
|
||||
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,171 @@
|
||||
package forge.screens.deckeditor.controllers;
|
||||
|
||||
|
||||
import forge.deck.DeckBase;
|
||||
import forge.gui.framework.DragCell;
|
||||
import forge.gui.framework.FScreen;
|
||||
import forge.item.PaperToken;
|
||||
import forge.itemmanager.TokenManager;
|
||||
import forge.model.FModel;
|
||||
import forge.screens.deckeditor.views.*;
|
||||
import forge.screens.home.quest.CSubmenuQuestDecks;
|
||||
import forge.screens.match.controllers.CDetailPicture;
|
||||
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
|
||||
public class CEditorTokenViewer extends ACEditorBase<PaperToken, DeckBase> {
|
||||
|
||||
private DragCell allDecksParent = null;
|
||||
private DragCell deckGenParent = null;
|
||||
private DragCell probsParent = null;
|
||||
|
||||
private final List<PaperToken> fullCatalogCards = FModel.getMagicDb().getAllTokens().getAllTokens();
|
||||
|
||||
// remember changed gui elements
|
||||
private String CCTabLabel = new String();
|
||||
private String CCAddLabel = new String();
|
||||
private String CDTabLabel = new String();
|
||||
private String CDRemLabel = new String();
|
||||
private String prevRem4Label = null;
|
||||
private String prevRem4Tooltip = null;
|
||||
private Runnable prevRem4Cmd = null;
|
||||
|
||||
/**
|
||||
* Child controller for quest card shop UI.
|
||||
*
|
||||
*/
|
||||
public CEditorTokenViewer(final CDetailPicture cDetailPicture) {
|
||||
super(FScreen.TOKEN_VIEWER, cDetailPicture);
|
||||
|
||||
final TokenManager catalogManager = new TokenManager(getCDetailPicture(), false);
|
||||
final TokenManager deckManager = new TokenManager(cDetailPicture, false);
|
||||
catalogManager.setCaption("All Tokens");
|
||||
catalogManager.setAlwaysNonUnique(true);
|
||||
this.setCatalogManager(catalogManager);
|
||||
this.setDeckManager(deckManager);
|
||||
}
|
||||
|
||||
//=========== Overridden from ACEditorBase
|
||||
|
||||
@Override
|
||||
protected ACEditorBase.CardLimit getCardLimit() {
|
||||
return ACEditorBase.CardLimit.None;
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void onAddItems(Iterable<Map.Entry<PaperToken, Integer>> items, boolean toAlternate) {
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void onRemoveItems(Iterable<Map.Entry<PaperToken, Integer>> items, boolean toAlternate) {
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void buildAddContextMenu(ACEditorBase.EditorContextMenuBuilder cmb) {
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void buildRemoveContextMenu(ACEditorBase.EditorContextMenuBuilder cmb) {
|
||||
}
|
||||
|
||||
/*
|
||||
* (non-Javadoc)
|
||||
*
|
||||
* @see forge.gui.deckeditor.ACEditorBase#resetTables()
|
||||
*/
|
||||
@Override
|
||||
public void resetTables() {
|
||||
}
|
||||
|
||||
/*
|
||||
* (non-Javadoc)
|
||||
*
|
||||
* @see forge.gui.deckeditor.ACEditorBase#getController()
|
||||
*/
|
||||
@Override
|
||||
public DeckController<DeckBase> getDeckController() {
|
||||
return null;
|
||||
}
|
||||
|
||||
/* (non-Javadoc)
|
||||
* @see forge.gui.deckeditor.ACEditorBase#show(forge.Command)
|
||||
*/
|
||||
@SuppressWarnings("serial")
|
||||
@Override
|
||||
public void update() {
|
||||
resetUI();
|
||||
|
||||
CCTabLabel = VCardCatalog.SINGLETON_INSTANCE.getTabLabel().getText();
|
||||
VCardCatalog.SINGLETON_INSTANCE.getTabLabel().setText("All tokens");
|
||||
|
||||
this.getBtnAdd().setVisible(false);
|
||||
this.getBtnRemove().setVisible(false);
|
||||
|
||||
this.getBtnAddBasicLands().setVisible(false);
|
||||
|
||||
VProbabilities.SINGLETON_INSTANCE.getTabLabel().setVisible(false);
|
||||
|
||||
prevRem4Label = this.getBtnRemove4().getText();
|
||||
prevRem4Tooltip = this.getBtnRemove4().getToolTipText();
|
||||
prevRem4Cmd = this.getBtnRemove4().getCommand();
|
||||
|
||||
VCurrentDeck.SINGLETON_INSTANCE.getPnlHeader().setVisible(false);
|
||||
|
||||
this.getCatalogManager().setPool(fullCatalogCards);
|
||||
this.getDeckManager().setPool((Iterable<PaperToken>) null);
|
||||
|
||||
this.getBtnRemove4().setVisible(false);
|
||||
|
||||
|
||||
deckGenParent = removeTab(VDeckgen.SINGLETON_INSTANCE);
|
||||
allDecksParent = removeTab(VAllDecks.SINGLETON_INSTANCE);
|
||||
probsParent = removeTab(VProbabilities.SINGLETON_INSTANCE);
|
||||
}
|
||||
|
||||
/* (non-Javadoc)
|
||||
* @see forge.gui.deckeditor.controllers.ACEditorBase#canSwitchAway()
|
||||
*/
|
||||
@Override
|
||||
public boolean canSwitchAway(boolean isClosing) {
|
||||
FModel.getQuest().save();
|
||||
return true;
|
||||
}
|
||||
|
||||
/* (non-Javadoc)
|
||||
* @see forge.gui.deckeditor.controllers.ACEditorBase#resetUIChanges()
|
||||
*/
|
||||
@Override
|
||||
public void resetUIChanges() {
|
||||
CSubmenuQuestDecks.SINGLETON_INSTANCE.update();
|
||||
|
||||
|
||||
this.getCatalogManager().getPnlButtons().add(this.getBtnAdd4());
|
||||
|
||||
this.getBtnRemove4().setText(prevRem4Label);
|
||||
this.getBtnRemove4().setToolTipText(prevRem4Tooltip);
|
||||
this.getBtnRemove4().setCommand(prevRem4Cmd);
|
||||
|
||||
VCardCatalog.SINGLETON_INSTANCE.getTabLabel().setText(CCTabLabel);
|
||||
VCurrentDeck.SINGLETON_INSTANCE.getTabLabel().setText(CDTabLabel);
|
||||
|
||||
this.getBtnAdd().setText(CCAddLabel);
|
||||
this.getBtnRemove().setText(CDRemLabel);
|
||||
|
||||
//TODO: Remove filter for SItemManagerUtil.StatTypes.PACK
|
||||
|
||||
//Re-add tabs
|
||||
if (deckGenParent != null) {
|
||||
deckGenParent.addDoc(VDeckgen.SINGLETON_INSTANCE);
|
||||
}
|
||||
if (allDecksParent != null) {
|
||||
allDecksParent.addDoc(VAllDecks.SINGLETON_INSTANCE);
|
||||
}
|
||||
if (probsParent != null) {
|
||||
probsParent.addDoc(VProbabilities.SINGLETON_INSTANCE);
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
@@ -1,5 +1,6 @@
|
||||
package forge.screens.home.settings;
|
||||
|
||||
import forge.GuiBase;
|
||||
import forge.Singletons;
|
||||
import forge.UiCommand;
|
||||
import forge.ai.AiProfileUtil;
|
||||
@@ -13,6 +14,8 @@ import forge.player.GamePlayerUtil;
|
||||
import forge.properties.ForgeConstants;
|
||||
import forge.properties.ForgePreferences;
|
||||
import forge.properties.ForgePreferences.FPref;
|
||||
import forge.screens.deckeditor.CDeckEditorUI;
|
||||
import forge.screens.deckeditor.controllers.CEditorTokenViewer;
|
||||
import forge.sound.SoundSystem;
|
||||
import forge.toolbox.FComboBox;
|
||||
import forge.toolbox.FComboBoxPanel;
|
||||
@@ -190,6 +193,20 @@ public enum CSubmenuPreferences implements ICDoc {
|
||||
}
|
||||
});
|
||||
|
||||
view.getBtnClearImageCache().setCommand(new UiCommand() {
|
||||
@Override
|
||||
public void run() {
|
||||
CSubmenuPreferences.this.clearImageCache();
|
||||
}
|
||||
});
|
||||
|
||||
view.getBtnTokenPreviewer().setCommand(new UiCommand() {
|
||||
@Override
|
||||
public void run() {
|
||||
CSubmenuPreferences.this.openTokenPreviewer();
|
||||
}
|
||||
});
|
||||
|
||||
view.getBtnResetJavaFutureCompatibilityWarnings().setCommand(new UiCommand() {
|
||||
@Override
|
||||
public void run() {
|
||||
@@ -292,6 +309,20 @@ public enum CSubmenuPreferences implements ICDoc {
|
||||
}
|
||||
}
|
||||
|
||||
private void clearImageCache() {
|
||||
try {
|
||||
GuiBase.getInterface().clearImageCache();
|
||||
} catch(final Exception e) {
|
||||
System.out.println("Unable to clear cache: " + e.toString());
|
||||
}
|
||||
}
|
||||
|
||||
private void openTokenPreviewer() {
|
||||
Singletons.getControl().setCurrentScreen(FScreen.TOKEN_VIEWER);
|
||||
CDeckEditorUI.SINGLETON_INSTANCE.setEditorController(
|
||||
new CEditorTokenViewer(CDeckEditorUI.SINGLETON_INSTANCE.getCDetailPicture()));
|
||||
}
|
||||
|
||||
private void openContentDirectory() {
|
||||
try {
|
||||
if (Desktop.isDesktopSupported()) {
|
||||
|
||||
@@ -56,6 +56,9 @@ public enum VSubmenuPreferences implements IVSubmenu<CSubmenuPreferences> {
|
||||
private final FLabel btnUserProfileUI = new FLabel.Builder().opaque(true).hoverable(true).text(localizer.getMessage("btnUserProfileUI")).build();
|
||||
private final FLabel btnContentDirectoryUI = new FLabel.Builder().opaque(true).hoverable(true).text(localizer.getMessage("btnContentDirectoryUI")).build();
|
||||
private final FLabel btnResetJavaFutureCompatibilityWarnings = new FLabel.Builder().opaque(true).hoverable(true).text(localizer.getMessage("btnResetJavaFutureCompatibilityWarnings")).build();
|
||||
private final FLabel btnClearImageCache = new FLabel.Builder().opaque(true).hoverable(true).text(localizer.getMessage("btnClearImageCache")).build();
|
||||
private final FLabel btnTokenPreviewer = new FLabel.Builder().opaque(true).hoverable(true).text(localizer.getMessage("btnTokenPreviewer")).build();
|
||||
|
||||
private final FLabel btnPlayerName = new FLabel.Builder().opaque(true).hoverable(true).text("").build();
|
||||
|
||||
private final JCheckBox cbRemoveSmall = new OptionsCheckBox(localizer.getMessage("cbRemoveSmall"));
|
||||
@@ -143,6 +146,8 @@ public enum VSubmenuPreferences implements IVSubmenu<CSubmenuPreferences> {
|
||||
pnlPrefs.add(btnDeleteWorkshopUI, twoButtonConstraints2);
|
||||
pnlPrefs.add(btnUserProfileUI, twoButtonConstraints1);
|
||||
pnlPrefs.add(btnContentDirectoryUI, twoButtonConstraints2);
|
||||
pnlPrefs.add(btnClearImageCache, twoButtonConstraints1);
|
||||
pnlPrefs.add(btnTokenPreviewer, twoButtonConstraints2);
|
||||
|
||||
// General Configuration
|
||||
pnlPrefs.add(new SectionLabel(localizer.getMessage("GeneralConfiguration")), sectionConstraints);
|
||||
@@ -781,6 +786,9 @@ public enum VSubmenuPreferences implements IVSubmenu<CSubmenuPreferences> {
|
||||
|
||||
public final FLabel getBtnUserProfileUI() { return btnUserProfileUI; }
|
||||
|
||||
public final FLabel getBtnClearImageCache() { return btnClearImageCache; }
|
||||
public final FLabel getBtnTokenPreviewer() { return btnTokenPreviewer; }
|
||||
|
||||
public final FLabel getBtnResetJavaFutureCompatibilityWarnings() {
|
||||
return btnResetJavaFutureCompatibilityWarnings;
|
||||
}
|
||||
|
||||
@@ -13,6 +13,8 @@ btnDeleteWorkshopUI = Reset Workshop Layout
|
||||
btnUserProfileUI = Open User Directory
|
||||
btnContentDirectoryUI = Open Content Directory
|
||||
btnResetJavaFutureCompatibilityWarnings = Reset Java Compatibility Warnings
|
||||
btnClearImageCache = Clear Image Cache
|
||||
btnTokenPreviewer = Token Previewer
|
||||
btnCopyToClipboard= Copy to Clipboard
|
||||
cbRemoveSmall = Remove Small Creatures
|
||||
cbCardBased = Include Card-based Deck Generation
|
||||
|
||||
Reference in New Issue
Block a user