From f1ec1da068d3a1e8fa5a35f5297c3b3451be4ce9 Mon Sep 17 00:00:00 2001 From: 7Durandal7 <7durandal7@cardforge.org> Date: Fri, 11 May 2012 02:37:49 +0000 Subject: [PATCH] Refactored some of the new code for a general open dialog. Dock now has new button "Open Layout" along with old button with original function "Revert Layout" --- .../forge/gui/match/controllers/CDock.java | 27 ++++++++++++-- .../java/forge/gui/match/views/VDock.java | 9 ++++- src/main/java/forge/gui/toolbox/FSkin.java | 1 + .../forge/gui/toolbox/SaveOpenDialog.java | 36 +++++++++++++++---- 4 files changed, 63 insertions(+), 10 deletions(-) diff --git a/src/main/java/forge/gui/match/controllers/CDock.java b/src/main/java/forge/gui/match/controllers/CDock.java index 43199d149c3..502fdb1e07e 100644 --- a/src/main/java/forge/gui/match/controllers/CDock.java +++ b/src/main/java/forge/gui/match/controllers/CDock.java @@ -42,6 +42,7 @@ import forge.gui.framework.ICDoc; import forge.gui.framework.SIOUtil; import forge.gui.match.views.VDock; import forge.gui.toolbox.SaveOpenDialog; +import forge.gui.toolbox.SaveOpenDialog.Filetypes; import forge.item.CardPrinted; import forge.properties.NewConstants; import forge.view.FView; @@ -67,18 +68,33 @@ public enum CDock implements ICDoc { public void endTurn() { Singletons.getModel().getGameState().getPhaseHandler().autoPassToCleanup(); } - + private void revertLayout() { SOverlayUtils.genericOverlay(); FView.SINGLETON_INSTANCE.getPnlContent().removeAll(); + + final SwingWorker w = new SwingWorker() { + @Override + public Void doInBackground() { + SIOUtil.loadLayout(new File(SIOUtil.FILE_DEFAULT)); + SOverlayUtils.hideOverlay(); + return null; + } + }; + w.execute(); + } + + private void openLayout() { + SOverlayUtils.genericOverlay(); + FView.SINGLETON_INSTANCE.getPnlContent().removeAll(); final SwingWorker w = new SwingWorker() { @Override public Void doInBackground() { - SaveOpenDialog dlgSave = new SaveOpenDialog(); + SaveOpenDialog dlgOpen = new SaveOpenDialog(); File LoadFile = new File(SIOUtil.FILE_PREFERRED); - LoadFile = dlgSave.OpenXMLDialog(LoadFile); + LoadFile = dlgOpen.OpenDialog(LoadFile, null); SIOUtil.loadLayout(LoadFile); SOverlayUtils.hideOverlay(); @@ -208,6 +224,11 @@ public enum CDock implements ICDoc { .addMouseListener(new MouseAdapter() { @Override public void mousePressed(final MouseEvent e) { revertLayout(); } }); + + VDock.SINGLETON_INSTANCE.getBtnOpenLayout() + .addMouseListener(new MouseAdapter() { @Override + public void mousePressed(final MouseEvent e) { + openLayout(); } }); } /* (non-Javadoc) diff --git a/src/main/java/forge/gui/match/views/VDock.java b/src/main/java/forge/gui/match/views/VDock.java index 8f232ea2699..8e544903904 100644 --- a/src/main/java/forge/gui/match/views/VDock.java +++ b/src/main/java/forge/gui/match/views/VDock.java @@ -60,7 +60,9 @@ public enum VDock implements IVDoc { private final JLabel btnViewDeckList = new DockButton(FSkin.getIcon(FSkin.DockIcons.ICO_DECKLIST), "View Deck List"); private final JLabel btnRevertLayout = - new DockButton(FSkin.getIcon(FSkin.DockIcons.ICO_REVERTLAYOUT), "Open Layout"); + new DockButton(FSkin.getIcon(FSkin.DockIcons.ICO_REVERTLAYOUT), "Revert Layout"); + private final JLabel btnOpenLayout = + new DockButton(FSkin.getIcon(FSkin.DockIcons.ICO_OPENLAYOUT), "Open Layout"); //========= Overridden methods @@ -79,6 +81,7 @@ public enum VDock implements IVDoc { pnl.add(btnEndTurn); pnl.add(btnViewDeckList); pnl.add(btnRevertLayout); + pnl.add(btnOpenLayout); } /* (non-Javadoc) @@ -147,6 +150,10 @@ public enum VDock implements IVDoc { public JLabel getBtnRevertLayout() { return btnRevertLayout; } + + public JLabel getBtnOpenLayout() { + return btnOpenLayout; + } //========= Custom class handling /** diff --git a/src/main/java/forge/gui/toolbox/FSkin.java b/src/main/java/forge/gui/toolbox/FSkin.java index f7b9428b8b7..9bec76bf2a0 100644 --- a/src/main/java/forge/gui/toolbox/FSkin.java +++ b/src/main/java/forge/gui/toolbox/FSkin.java @@ -214,6 +214,7 @@ public enum FSkin { ICO_ENDTURN (new int[] {320, 640, 80, 80}), /** */ ICO_CONCEDE (new int[] {240, 640, 80, 80}), /** */ ICO_REVERTLAYOUT (new int[] {400, 720, 80, 80}), /** */ + ICO_OPENLAYOUT (new int[] {480, 640, 80, 80}), ICO_DECKLIST (new int[] {400, 640, 80, 80}); private int[] coords; diff --git a/src/main/java/forge/gui/toolbox/SaveOpenDialog.java b/src/main/java/forge/gui/toolbox/SaveOpenDialog.java index 370b37628a2..3d39e696f7b 100644 --- a/src/main/java/forge/gui/toolbox/SaveOpenDialog.java +++ b/src/main/java/forge/gui/toolbox/SaveOpenDialog.java @@ -35,21 +35,45 @@ public class SaveOpenDialog extends JPanel { private JFileChooser fc; + + /** + * Enum to contain information for filetype filtering in the open/save dialog. + * Add more entries to enum as needed. + * + * + */ + public enum Filetypes { + LAYOUT ("Layout File", "xml"); + + private final String TypeName; + private final String TypeExtension; + Filetypes(String Name, String Extension) { + this.TypeName = Name; + this.TypeExtension = Extension; + } + } + public SaveOpenDialog() { fc = new JFileChooser(); } /** - * Shows the open dialog for xml files (layouts). If no file selected, returns default. - * + * Shows the open dialog for files. If no file selected, returns default. Pass null + * to Type and Extension to allow all files to be viewed/opened. + * @param defFileName pass the default file to use, also determines directory + * @param type label to tell what type of file to filter + * * */ - public File OpenXMLDialog(File defFileName) { + public File OpenDialog(File defFileName, Filetypes type) { File RetFile = defFileName; fc.setCurrentDirectory(defFileName); - fc.setAcceptAllFileFilterUsed(false); - FileFilter filter = new FileNameExtensionFilter("Layout Files", "xml"); - fc.addChoosableFileFilter(filter); + + if (type!=null) { + fc.setAcceptAllFileFilterUsed(false); + FileFilter filter = new FileNameExtensionFilter(type.TypeName, type.TypeExtension); + fc.addChoosableFileFilter(filter); + } int RetValue = fc.showOpenDialog(getParent());