From cb6e87ce3f635d1605e1d663e15f5ef390a166dc Mon Sep 17 00:00:00 2001 From: Doublestrike Date: Wed, 14 Dec 2011 11:03:41 +0000 Subject: [PATCH] Deck editor enabled in home screen. Also, decks can now be directly edited in constructed mode sub menu. --- .gitattributes | 1 + .../java/forge/control/ControlHomeUI.java | 48 +++++++++++++++++++ .../control/home/ControlConstructed.java | 14 +++--- .../java/forge/view/home/HomeTopLevel.java | 27 +++++++---- .../java/forge/view/home/ViewConstructed.java | 20 ++++---- 5 files changed, 83 insertions(+), 27 deletions(-) create mode 100644 src/main/java/forge/control/ControlHomeUI.java diff --git a/.gitattributes b/.gitattributes index 0c9495defaa..e3dc0c6ed37 100644 --- a/.gitattributes +++ b/.gitattributes @@ -10758,6 +10758,7 @@ src/main/java/forge/card/trigger/TriggerUnequip.java svneol=native#text/plain src/main/java/forge/card/trigger/TriggerUntaps.java svneol=native#text/plain src/main/java/forge/card/trigger/package-info.java svneol=native#text/plain src/main/java/forge/control/ControlAllUI.java -text +src/main/java/forge/control/ControlHomeUI.java -text src/main/java/forge/control/ControlMatchUI.java -text src/main/java/forge/control/ControlWinLose.java -text src/main/java/forge/control/home/ControlConstructed.java -text diff --git a/src/main/java/forge/control/ControlHomeUI.java b/src/main/java/forge/control/ControlHomeUI.java new file mode 100644 index 00000000000..5a07dbd0da6 --- /dev/null +++ b/src/main/java/forge/control/ControlHomeUI.java @@ -0,0 +1,48 @@ +package forge.control; + +import forge.Command; +import forge.deck.Deck; +import forge.game.GameType; +import forge.gui.deckeditor.DeckEditorCommon; +import forge.view.home.HomeTopLevel; + +/** + * TODO: Write javadoc for this type. + * + */ +public class ControlHomeUI { + private HomeTopLevel view; + + /** @param v0   HomeTopLevel */ + public ControlHomeUI(HomeTopLevel v0) { + view = v0; + } + + /** @param d0   Deck*/ + public void showDeckEditor(Deck d0) { + GameType gt = GameType.Constructed; + DeckEditorCommon editor = new DeckEditorCommon(gt); + + final Command exit = new Command() { + private static final long serialVersionUID = -9133358399503226853L; + + @Override + public void execute() { + view.getConstructedController().updateDeckNames(); + } + }; + + editor.show(exit); + + if (d0 != null) { + editor.getCustomMenu().showDeck(d0, gt); + } + + editor.setVisible(true); + } + + /** */ + public void exit() { + System.exit(0); + } +} diff --git a/src/main/java/forge/control/home/ControlConstructed.java b/src/main/java/forge/control/home/ControlConstructed.java index 1830b9820d4..394ea475a7f 100644 --- a/src/main/java/forge/control/home/ControlConstructed.java +++ b/src/main/java/forge/control/home/ControlConstructed.java @@ -55,6 +55,7 @@ public class ControlConstructed { this.view = v0; // Reference values for colors, needed for deck generation classes. + // TODO enum me or get from another enum colorVals = new HashMap(); colorVals.put("Random", "AI"); colorVals.put("Black", "black"); @@ -410,7 +411,7 @@ public class ControlConstructed { } /** Fired when start button is pressed; checks various conditions from lists and starts game. */ - public void launch() { + public void start() { String[] humanSelected = oa2sa(currentHumanSelection.getSelectedValues()); String[] aiSelected = oa2sa(currentAISelection.getSelectedValues()); @@ -466,12 +467,8 @@ public class ControlConstructed { return themeNames.toArray(); } - /** - * Array of pre-constructed deck names, usually used in list boxes. - * - * @return Object[] - */ - public Object[] getDeckNames() { + /** */ + public void updateDeckNames() { deckNames = new ArrayList(); deckNames.add(0, "Random"); @@ -483,7 +480,8 @@ public class ControlConstructed { // No pre-constructed decks? if (deckNames.size() == 1) { deckNames = new ArrayList(); } - return deckNames.toArray(); + view.getLstDecksHuman().setListData(deckNames.toArray()); + view.getLstDecksAI().setListData(deckNames.toArray()); } /** diff --git a/src/main/java/forge/view/home/HomeTopLevel.java b/src/main/java/forge/view/home/HomeTopLevel.java index a305da81882..b2e00a500f9 100644 --- a/src/main/java/forge/view/home/HomeTopLevel.java +++ b/src/main/java/forge/view/home/HomeTopLevel.java @@ -28,6 +28,8 @@ import javax.swing.JPanel; import net.miginfocom.swing.MigLayout; import forge.AllZone; +import forge.control.ControlHomeUI; +import forge.control.home.ControlConstructed; import forge.control.home.ControlDraft; import forge.view.toolbox.FButton; import forge.view.toolbox.FPanel; @@ -47,6 +49,7 @@ public class HomeTopLevel extends FPanel { private FSkin skin; private String constraints; private String imgDirAddress; + private ControlHomeUI control; private ViewConstructed constructed; private ViewSealed sealed; @@ -126,13 +129,13 @@ public class HomeTopLevel extends FPanel { btnEditor = new FButton(); btnEditor.setAction(new AbstractAction() { - public void actionPerformed(ActionEvent arg0) { showDeckEditor(); } + public void actionPerformed(ActionEvent arg0) { control.showDeckEditor(null); } }); btnEditor.setText("Deck Editor"); btnExit = new FButton(); btnExit.setAction(new AbstractAction() { - public void actionPerformed(ActionEvent arg0) { exit(); } + public void actionPerformed(ActionEvent arg0) { control.exit(); } }); btnExit.setText("Exit"); @@ -152,6 +155,8 @@ public class HomeTopLevel extends FPanel { pnlMenu.add(btnEditor, constraints); pnlMenu.add(btnExit, constraints); + control = new ControlHomeUI(this); + // Open "constructed" menu on first run. showConstructedMenu(); } @@ -216,14 +221,6 @@ public class HomeTopLevel extends FPanel { pnlContent.repaint(); } - public void showDeckEditor() { - - } - - private void exit() { - System.exit(0); - } - /** @return String */ public String getImgDirAddress() { return imgDirAddress; @@ -244,6 +241,11 @@ public class HomeTopLevel extends FPanel { return new ImageIcon(imgDirAddress + "btnStart_Up.png"); } + /** @return ControlConstructed */ + public ControlConstructed getConstructedController() { + return constructed.getController(); + } + /** @return ControlDraft */ public ControlDraft getDraftController() { return draft.getController(); @@ -263,4 +265,9 @@ public class HomeTopLevel extends FPanel { quest = new ViewQuest(this); showQuestMenu(); } + + /** @return ControlHomeUI */ + public ControlHomeUI getController() { + return control; + } } diff --git a/src/main/java/forge/view/home/ViewConstructed.java b/src/main/java/forge/view/home/ViewConstructed.java index 34a3c34ec01..1f9b2cd55f8 100644 --- a/src/main/java/forge/view/home/ViewConstructed.java +++ b/src/main/java/forge/view/home/ViewConstructed.java @@ -19,6 +19,7 @@ import javax.swing.Timer; import net.miginfocom.swing.MigLayout; import forge.AllZone; import forge.control.home.ControlConstructed; +import forge.deck.Deck; import forge.view.toolbox.FSkin; /** @@ -52,7 +53,6 @@ public class ViewConstructed extends JPanel { skin = AllZone.getSkin(); control = new ControlConstructed(this); - // Assemble JLists with arrays from above. lstColorsHuman = new JList(); lstColorsHuman.setListData(control.oa2sa(control.getColorNames())); @@ -60,10 +60,7 @@ public class ViewConstructed extends JPanel { lstColorsAI.setListData(control.oa2sa(control.getColorNames())); lstDecksHuman = new JList(); - lstDecksHuman.setListData(control.oa2sa(control.getDeckNames())); - lstDecksAI = new JList(); - lstDecksAI.setListData(control.oa2sa(control.getDeckNames())); lstThemesHuman = new JList(); lstThemesHuman.setListData(control.oa2sa(control.getThemeNames())); @@ -81,12 +78,14 @@ public class ViewConstructed extends JPanel { btnHumanDeckList = new SubButton(); btnHumanDeckList.setAction(new AbstractAction() { public void actionPerformed(ActionEvent arg0) { - ViewConstructed.this.control.viewDeckList("Human"); + String s = lstDecksHuman.getSelectedValue().toString(); + Deck d = AllZone.getDeckManager().getDeck(s); + parentView.getController().showDeckEditor(d); } }); btnHumanDeckList.setFont(skin.getFont1().deriveFont(Font.PLAIN, 13)); - btnHumanDeckList.setText("View selected deck"); + btnHumanDeckList.setText("Edit selected deck"); btnHumanDeckList.setVerticalTextPosition(SwingConstants.CENTER); // Add components @@ -108,11 +107,13 @@ public class ViewConstructed extends JPanel { btnAIDeckList = new SubButton(); btnAIDeckList.setAction(new AbstractAction() { public void actionPerformed(ActionEvent arg0) { - ViewConstructed.this.control.viewDeckList("Computer"); + String s = lstDecksAI.getSelectedValue().toString(); + Deck d = AllZone.getDeckManager().getDeck(s); + parentView.getController().showDeckEditor(d); } }); btnAIDeckList.setFont(skin.getFont1().deriveFont(Font.PLAIN, 13)); - btnAIDeckList.setText("View selected deck"); + btnAIDeckList.setText("Edit selected deck"); // Add components this.add(new JScrollPane(lstColorsAI), constraints + ", gapleft 3%"); @@ -141,7 +142,7 @@ public class ViewConstructed extends JPanel { JButton btnStart = new JButton(); btnStart.setAction(new AbstractAction() { @Override - public void actionPerformed(ActionEvent arg0) { control.launch(); } + public void actionPerformed(ActionEvent arg0) { control.start(); } }); btnStart.setRolloverEnabled(true); btnStart.setPressedIcon(parentView.getStartButtonDown()); @@ -162,6 +163,7 @@ public class ViewConstructed extends JPanel { // When all components have been added, add listeners. control.addListeners(); + control.updateDeckNames(); } // For some reason, MigLayout has sizing problems with a JLabel next to a JList.