From: <jde...@us...> - 2011-01-12 08:02:02
|
Revision: 14348 http://pcgen.svn.sourceforge.net/pcgen/?rev=14348&view=rev Author: jdempsey Date: 2011-01-12 08:01:55 +0000 (Wed, 12 Jan 2011) Log Message: ----------- New UI - Add Generate Rolls button Modified Paths: -------------- sandbox/cdomui/code/src/java/pcgen/core/facade/CharacterFacade.java sandbox/cdomui/code/src/java/pcgen/gui2/facade/CharacterFacadeImpl.java sandbox/cdomui/code/src/java/pcgen/gui2/prefs/CharacterStatsPanel.java sandbox/cdomui/code/src/java/pcgen/gui2/tabs/SummaryInfoTab.java Added Paths: ----------- sandbox/cdomui/code/src/java/pcgen/gui2/dialog/SinglePrefDialog.java Modified: sandbox/cdomui/code/src/java/pcgen/core/facade/CharacterFacade.java =================================================================== --- sandbox/cdomui/code/src/java/pcgen/core/facade/CharacterFacade.java 2011-01-10 21:25:23 UTC (rev 14347) +++ sandbox/cdomui/code/src/java/pcgen/core/facade/CharacterFacade.java 2011-01-12 08:01:55 UTC (rev 14348) @@ -402,4 +402,13 @@ public ReferenceFacade<Integer> getTotalHPRef(); + /** + * @return A reference to the stat roll method for the character + */ + public ReferenceFacade<Integer> getRollMethodRef(); + + /** + * Notify that the roll method may have changed. + */ + public void refreshRollMethod(); } Added: sandbox/cdomui/code/src/java/pcgen/gui2/dialog/SinglePrefDialog.java =================================================================== --- sandbox/cdomui/code/src/java/pcgen/gui2/dialog/SinglePrefDialog.java (rev 0) +++ sandbox/cdomui/code/src/java/pcgen/gui2/dialog/SinglePrefDialog.java 2011-01-12 08:01:55 UTC (rev 14348) @@ -0,0 +1,124 @@ +/* + * SinglePrefDialog.java + * Copyright James Dempsey, 2010 + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + * + * Created on 29 Dec 2010 + * + * $$Id$$ + */ +package pcgen.gui2.dialog; + +import java.awt.BorderLayout; +import java.awt.FlowLayout; +import java.awt.event.ActionEvent; +import java.awt.event.ActionListener; + +import javax.swing.JButton; +import javax.swing.JDialog; +import javax.swing.JFrame; +import javax.swing.JPanel; + +import pcgen.core.SettingsHandler; +import pcgen.gui2.prefs.PCGenPrefsPanel; +import pcgen.system.LanguageBundle; + +/** + * The Class <code>SinglePrefDialog</code> displays a single + * preference panel to the user. + * + * <br/> + * Last Editor: $Author$ + * Last Edited: $Date$ + * + * @author James Dempsey <jde...@us...> + * @version $Revision$ + */ +public class SinglePrefDialog extends JDialog +{ + private PCGenPrefsPanel prefsPanel; + private JPanel controlPanel; + + /** + * Create a new modal SinglePrefDialog to display a particular panel. + * + * @param parent The parent frame, used for positioning and to be modal + * @param prefsPanel The panel to be displayed. + */ + public SinglePrefDialog(JFrame parent, PCGenPrefsPanel prefsPanel) + { + super(parent, prefsPanel.getTitle(), true); + + this.prefsPanel = prefsPanel; + + initComponents(); + + this.getContentPane().setLayout(new BorderLayout()); + this.getContentPane().add(prefsPanel, BorderLayout.CENTER); + this.getContentPane().add(controlPanel, BorderLayout.SOUTH); + + prefsPanel.applyOptionValuesToControls(); + + pack(); + } + + private void initComponents() + { + // Build the control panel (OK/Cancel buttons) + controlPanel = new JPanel(); + controlPanel.setLayout(new FlowLayout(FlowLayout.RIGHT)); + + JButton okButton = new JButton(LanguageBundle.getString("in_ok")); + okButton.setMnemonic(LanguageBundle.getMnemonic("in_mn_ok")); + controlPanel.add(okButton); + okButton.addActionListener(new ActionListener() + { + public void actionPerformed(ActionEvent evt) + { + okButtonActionPerformed(); + } + }); + + JButton cancelButton = + new JButton(LanguageBundle.getString("in_cancel")); + cancelButton.setMnemonic(LanguageBundle.getMnemonic("in_mn_cancel")); + controlPanel.add(cancelButton); + cancelButton.addActionListener(new ActionListener() + { + public void actionPerformed(ActionEvent evt) + { + cancelButtonActionPerformed(); + } + }); + } + + private void cancelButtonActionPerformed() + { + setVisible(false); + this.dispose(); + } + + private void okButtonActionPerformed() + { + prefsPanel.setOptionsBasedOnControls(); + setVisible(false); + + SettingsHandler.writeOptionsProperties(null); + + this.dispose(); + } + +} Property changes on: sandbox/cdomui/code/src/java/pcgen/gui2/dialog/SinglePrefDialog.java ___________________________________________________________________ Added: svn:keywords + Date Author Revision Id Added: svn:eol-style + native Modified: sandbox/cdomui/code/src/java/pcgen/gui2/facade/CharacterFacadeImpl.java =================================================================== --- sandbox/cdomui/code/src/java/pcgen/gui2/facade/CharacterFacadeImpl.java 2011-01-10 21:25:23 UTC (rev 14347) +++ sandbox/cdomui/code/src/java/pcgen/gui2/facade/CharacterFacadeImpl.java 2011-01-12 08:01:55 UTC (rev 14348) @@ -145,6 +145,7 @@ private DefaultReferenceFacade<Integer> numBonusLang; private DefaultReferenceFacade<Integer> numSkillLang; private DefaultReferenceFacade<Integer> hpRef; + private DefaultReferenceFacade<Integer> rollMethodRef; private String selectedGender; @@ -226,6 +227,9 @@ xpForNextlevel = new DefaultReferenceFacade<Integer>(pc.minXPForNextECL()); hpRef = new DefaultReferenceFacade<Integer>(0); + GameMode game = (GameMode) dataSet.getGameMode(); + rollMethodRef = new DefaultReferenceFacade<Integer>(game.getRollMethod()); + statTotalLabelText = new DefaultReferenceFacade<String>(); statTotalText = new DefaultReferenceFacade<String>(); todoList = new DefaultListFacade<TodoFacade>(); @@ -1924,4 +1928,17 @@ return hpRef; } + public ReferenceFacade<Integer> getRollMethodRef() + { + return rollMethodRef; + } + + public void refreshRollMethod() + { + GameMode game = (GameMode) dataSet.getGameMode(); + rollMethodRef.setReference(game.getRollMethod()); + + updateScorePurchasePool(false); + } + } Modified: sandbox/cdomui/code/src/java/pcgen/gui2/prefs/CharacterStatsPanel.java =================================================================== --- sandbox/cdomui/code/src/java/pcgen/gui2/prefs/CharacterStatsPanel.java 2011-01-10 21:25:23 UTC (rev 14347) +++ sandbox/cdomui/code/src/java/pcgen/gui2/prefs/CharacterStatsPanel.java 2011-01-12 08:01:55 UTC (rev 14348) @@ -542,4 +542,12 @@ } } + /** + * @param parent the parent to set + */ + public void setParent(JDialog parent) + { + this.parent = parent; + } + } Modified: sandbox/cdomui/code/src/java/pcgen/gui2/tabs/SummaryInfoTab.java =================================================================== --- sandbox/cdomui/code/src/java/pcgen/gui2/tabs/SummaryInfoTab.java 2011-01-10 21:25:23 UTC (rev 14347) +++ sandbox/cdomui/code/src/java/pcgen/gui2/tabs/SummaryInfoTab.java 2011-01-12 08:01:55 UTC (rev 14348) @@ -82,6 +82,8 @@ import pcgen.gui2.UIPropertyContext; import pcgen.gui2.dialog.CharacterHPDialog; import pcgen.gui2.dialog.RandomNameDialog; +import pcgen.gui2.dialog.SinglePrefDialog; +import pcgen.gui2.prefs.CharacterStatsPanel; import pcgen.gui2.tabs.summary.ClassLevelTableModel; import pcgen.gui2.tabs.summary.InfoPaneHandler; import pcgen.gui2.tabs.summary.LanguageTableModel; @@ -292,7 +294,6 @@ generateRollsButton.setText(LanguageBundle.getString("in_sumGenerate_Rolls")); statTotalPanel.add(generateRollsButton); rollMethodButton.setText(LanguageBundle.getString("in_sumRoll_Method")); - rollMethodButton.setEnabled(false); statTotalPanel.add(rollMethodButton); statsPanel.add(statTotalPanel); @@ -752,6 +753,8 @@ (JFrame) SwingUtilities.getWindowAncestor(this))); stateTable.put(Models.ClassLevelTableModel, new ClassLevelTableModel(character)); stateTable.put(Models.GenerateRollsAction, new GenerateRollsAction(character)); + stateTable.put(Models.RollMethodAction, new RollMethodAction( + (JFrame) SwingUtilities.getWindowAncestor(this), character)); stateTable.put(Models.AddLevelsAction, new AddLevelsAction(character)); stateTable.put(Models.RemoveLevelsAction, new RemoveLevelsAction(character)); stateTable.put(Models.StatTableModel, new StatTableModel(character)); @@ -792,6 +795,7 @@ ClassComboBoxRenderer, ClassLevelTableModel, GenerateRollsAction, + RollMethodAction, AddLevelsAction, RemoveLevelsAction, StatTableModel, @@ -825,6 +829,7 @@ ((LabelHandler) state.get(Models.StatTotalHandler)).uninstall(); ((TodoListHandler) state.get(Models.TodoListHandler)).uninstall(); ((GenerateRollsAction) state.get(Models.GenerateRollsAction)).uninstall(); + ((RollMethodAction) state.get(Models.RollMethodAction)).uninstall(); ((HPHandler) state.get(Models.HPHandler)).uninstall(); } @@ -844,6 +849,7 @@ ((LabelHandler) state.get(Models.StatTotalHandler)).install(); ((TodoListHandler) state.get(Models.TodoListHandler)).install(); ((GenerateRollsAction) state.get(Models.GenerateRollsAction)).install(); + ((RollMethodAction) state.get(Models.RollMethodAction)).install(); ((HPHandler) state.get(Models.HPHandler)).install(); genderComboBox.setModel((ComboBoxModel) state.get(Models.GenderComboBoxModel)); @@ -857,6 +863,8 @@ random.setAction((Action) state.get(Models.RandomNameAction)); GenerateRollsAction genRollsAction = (GenerateRollsAction) state.get(Models.GenerateRollsAction); generateRollsButton.setAction(genRollsAction); + RollMethodAction rollMethodAction = (RollMethodAction) state.get(Models.RollMethodAction); + rollMethodButton.setAction(rollMethodAction); // Logging.errorPrint("Set action. Eanbled: " + genRollsAction.isEnabled()); // genRollsAction.update(); // Logging.errorPrint(">Set action. Eanbled: " + genRollsAction.isEnabled()); @@ -1026,7 +1034,7 @@ * Handler for actions from the generate rolls button. Also defines * the appearance of the button. */ - private class GenerateRollsAction extends AbstractAction implements ListListener<CharacterLevelFacade> + private class GenerateRollsAction extends AbstractAction implements ListListener<CharacterLevelFacade>, ReferenceListener<Integer> { private CharacterFacade character; @@ -1047,7 +1055,8 @@ // Listen to the total levels character.getCharacterLevelsFacade().addListListener(this); - //TODO: Needs to listen to the roll method + // Listen to the roll method + character.getRollMethodRef().addReferenceListener(this); } /** @@ -1057,6 +1066,7 @@ public void uninstall() { character.getCharacterLevelsFacade().removeListListener(this); + character.getRollMethodRef().removeReferenceListener(this); } /* (non-Javadoc) @@ -1099,8 +1109,58 @@ update(); } + public void referenceChanged(ReferenceEvent<Integer> e) + { + update(); + } + } + /** + * Handler for actions from the generate rolls button. Also defines + * the appearance of the button. + */ + private class RollMethodAction extends AbstractAction + { + private JFrame parent; + private CharacterFacade character; + + public RollMethodAction(JFrame parent, CharacterFacade character) + { + putValue(NAME, LanguageBundle.getString("in_sumRoll_Method")); + this.parent = parent; + this.character = character; + } + + /** + * Attach the handler to the screen button. e.g. When the character is + * made active. + */ + public void install() + { + } + + /** + * Detach the handler from the on screen button. e.g. when the + * character is no longer being displayed. + */ + public void uninstall() + { + } + + /* (non-Javadoc) + * @see java.awt.event.ActionListener#actionPerformed(java.awt.event.ActionEvent) + */ + public void actionPerformed(ActionEvent e) + { + CharacterStatsPanel charStatsPanel = new CharacterStatsPanel(null); + SinglePrefDialog prefsDialog = new SinglePrefDialog(parent, charStatsPanel); + charStatsPanel.setParent(prefsDialog); + prefsDialog.setVisible(true); + character.refreshRollMethod(); + } + } + private class AddLevelsAction extends AbstractAction { This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |