mirror of
https://github.com/Card-Forge/forge.git
synced 2025-11-16 18:58:00 +00:00
TokenViewer Deck "editor"
This commit is contained in:
@@ -103,7 +103,7 @@ public class TokenDb implements ITokenDatabase {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public List<PaperToken> getAllTokens() {
|
public List<PaperToken> getAllTokens() {
|
||||||
return null;
|
return new ArrayList<>(tokensByName.values());
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@@ -123,6 +123,6 @@ public class TokenDb implements ITokenDatabase {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public Iterator<PaperToken> iterator() {
|
public Iterator<PaperToken> iterator() {
|
||||||
return null;
|
return tokensByName.values().iterator();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,7 +1,5 @@
|
|||||||
package forge.gui.framework;
|
package forge.gui.framework;
|
||||||
|
|
||||||
import java.io.File;
|
|
||||||
|
|
||||||
import forge.Singletons;
|
import forge.Singletons;
|
||||||
import forge.assets.FSkinProp;
|
import forge.assets.FSkinProp;
|
||||||
import forge.properties.FileLocation;
|
import forge.properties.FileLocation;
|
||||||
@@ -21,6 +19,8 @@ import forge.toolbox.FSkin;
|
|||||||
import forge.toolbox.FSkin.SkinImage;
|
import forge.toolbox.FSkin.SkinImage;
|
||||||
import forge.view.FView;
|
import forge.view.FView;
|
||||||
|
|
||||||
|
import java.io.File;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Definitions for Forge screens
|
* Definitions for Forge screens
|
||||||
*/
|
*/
|
||||||
@@ -115,6 +115,16 @@ public class FScreen {
|
|||||||
"Close Editor",
|
"Close Editor",
|
||||||
ForgeConstants.EDITOR_LAYOUT_FILE,
|
ForgeConstants.EDITOR_LAYOUT_FILE,
|
||||||
false);
|
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(
|
public static final FScreen DECK_EDITOR_QUEST = new FScreen(
|
||||||
VDeckEditorUI.SINGLETON_INSTANCE,
|
VDeckEditorUI.SINGLETON_INSTANCE,
|
||||||
CDeckEditorUI.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;
|
package forge.screens.home.settings;
|
||||||
|
|
||||||
|
import forge.GuiBase;
|
||||||
import forge.Singletons;
|
import forge.Singletons;
|
||||||
import forge.UiCommand;
|
import forge.UiCommand;
|
||||||
import forge.ai.AiProfileUtil;
|
import forge.ai.AiProfileUtil;
|
||||||
@@ -13,6 +14,8 @@ import forge.player.GamePlayerUtil;
|
|||||||
import forge.properties.ForgeConstants;
|
import forge.properties.ForgeConstants;
|
||||||
import forge.properties.ForgePreferences;
|
import forge.properties.ForgePreferences;
|
||||||
import forge.properties.ForgePreferences.FPref;
|
import forge.properties.ForgePreferences.FPref;
|
||||||
|
import forge.screens.deckeditor.CDeckEditorUI;
|
||||||
|
import forge.screens.deckeditor.controllers.CEditorTokenViewer;
|
||||||
import forge.sound.SoundSystem;
|
import forge.sound.SoundSystem;
|
||||||
import forge.toolbox.FComboBox;
|
import forge.toolbox.FComboBox;
|
||||||
import forge.toolbox.FComboBoxPanel;
|
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() {
|
view.getBtnResetJavaFutureCompatibilityWarnings().setCommand(new UiCommand() {
|
||||||
@Override
|
@Override
|
||||||
public void run() {
|
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() {
|
private void openContentDirectory() {
|
||||||
try {
|
try {
|
||||||
if (Desktop.isDesktopSupported()) {
|
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 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 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 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 FLabel btnPlayerName = new FLabel.Builder().opaque(true).hoverable(true).text("").build();
|
||||||
|
|
||||||
private final JCheckBox cbRemoveSmall = new OptionsCheckBox(localizer.getMessage("cbRemoveSmall"));
|
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(btnDeleteWorkshopUI, twoButtonConstraints2);
|
||||||
pnlPrefs.add(btnUserProfileUI, twoButtonConstraints1);
|
pnlPrefs.add(btnUserProfileUI, twoButtonConstraints1);
|
||||||
pnlPrefs.add(btnContentDirectoryUI, twoButtonConstraints2);
|
pnlPrefs.add(btnContentDirectoryUI, twoButtonConstraints2);
|
||||||
|
pnlPrefs.add(btnClearImageCache, twoButtonConstraints1);
|
||||||
|
pnlPrefs.add(btnTokenPreviewer, twoButtonConstraints2);
|
||||||
|
|
||||||
// General Configuration
|
// General Configuration
|
||||||
pnlPrefs.add(new SectionLabel(localizer.getMessage("GeneralConfiguration")), sectionConstraints);
|
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 getBtnUserProfileUI() { return btnUserProfileUI; }
|
||||||
|
|
||||||
|
public final FLabel getBtnClearImageCache() { return btnClearImageCache; }
|
||||||
|
public final FLabel getBtnTokenPreviewer() { return btnTokenPreviewer; }
|
||||||
|
|
||||||
public final FLabel getBtnResetJavaFutureCompatibilityWarnings() {
|
public final FLabel getBtnResetJavaFutureCompatibilityWarnings() {
|
||||||
return btnResetJavaFutureCompatibilityWarnings;
|
return btnResetJavaFutureCompatibilityWarnings;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -13,6 +13,8 @@ btnDeleteWorkshopUI = Reset Workshop Layout
|
|||||||
btnUserProfileUI = Open User Directory
|
btnUserProfileUI = Open User Directory
|
||||||
btnContentDirectoryUI = Open Content Directory
|
btnContentDirectoryUI = Open Content Directory
|
||||||
btnResetJavaFutureCompatibilityWarnings = Reset Java Compatibility Warnings
|
btnResetJavaFutureCompatibilityWarnings = Reset Java Compatibility Warnings
|
||||||
|
btnClearImageCache = Clear Image Cache
|
||||||
|
btnTokenPreviewer = Token Previewer
|
||||||
btnCopyToClipboard= Copy to Clipboard
|
btnCopyToClipboard= Copy to Clipboard
|
||||||
cbRemoveSmall = Remove Small Creatures
|
cbRemoveSmall = Remove Small Creatures
|
||||||
cbCardBased = Include Card-based Deck Generation
|
cbCardBased = Include Card-based Deck Generation
|
||||||
|
|||||||
Reference in New Issue
Block a user