From: <jde...@us...> - 2012-06-25 23:16:04
|
Revision: 16899 http://pcgen.svn.sourceforge.net/pcgen/?rev=16899&view=rev Author: jdempsey Date: 2012-06-25 23:15:58 +0000 (Mon, 25 Jun 2012) Log Message: ----------- Fix bug: Abilities Tab - Tree collapses after a selection is made * Restore choice display. Issue#: CODE-1300 Modified Paths: -------------- Trunk/pcgen/code/src/java/pcgen/gui2/facade/CharacterAbilities.java Trunk/pcgen/code/src/java/pcgen/gui2/tabs/ability/AbilityTreeTableModel.java Modified: Trunk/pcgen/code/src/java/pcgen/gui2/facade/CharacterAbilities.java =================================================================== --- Trunk/pcgen/code/src/java/pcgen/gui2/facade/CharacterAbilities.java 2012-06-25 13:20:18 UTC (rev 16898) +++ Trunk/pcgen/code/src/java/pcgen/gui2/facade/CharacterAbilities.java 2012-06-25 23:15:58 UTC (rev 16899) @@ -891,6 +891,7 @@ { updateAbilityCategoryTodo(cat); fireAbilityCatSelectionUpdated(cat); + refreshChoices(cat); } }); } @@ -913,6 +914,24 @@ }); } + /** + * Signal that any ability that could have choices has been modified. This + * ensures that the choice display is up to date. + * @param category The ability category being refreshed. + */ + protected void refreshChoices(Category<Ability> category) + { + DefaultListFacade<AbilityFacade> listFacade = abilityListMap.get(category); + for (AbilityFacade abilityFacade : listFacade) + { + Ability ability = (Ability) abilityFacade; + if (ability.getSafe(ObjectKey.MULTIPLE_ALLOWED)) + { + listFacade.modifyElement(ability); + } + } + } + private boolean checkAbilityQualify(final Ability anAbility, AbilityCategory theCategory) { Modified: Trunk/pcgen/code/src/java/pcgen/gui2/tabs/ability/AbilityTreeTableModel.java =================================================================== --- Trunk/pcgen/code/src/java/pcgen/gui2/tabs/ability/AbilityTreeTableModel.java 2012-06-25 13:20:18 UTC (rev 16898) +++ Trunk/pcgen/code/src/java/pcgen/gui2/tabs/ability/AbilityTreeTableModel.java 2012-06-25 23:15:58 UTC (rev 16899) @@ -262,6 +262,11 @@ public void elementModified(ListEvent<AbilityFacade> e) { //Logging.errorPrint("Modifying " + category + " - " + e.getElement()); + MutableTreeNode oldNode = (MutableTreeNode) getChildAt(e.getIndex()); + DefaultTreeTableNode node = buildAbilityNode(e.getElement()); + node.setUserObject(e.getElement()); + insertNodeInto(node, this, e.getIndex()); + removeNodeFromParent(oldNode); } } This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <jde...@us...> - 2012-06-26 22:27:13
|
Revision: 16904 http://pcgen.svn.sourceforge.net/pcgen/?rev=16904&view=rev Author: jdempsey Date: 2012-06-26 22:27:06 +0000 (Tue, 26 Jun 2012) Log Message: ----------- Fix bug: Abilities/Feats - Prereqs met doesn't update till you re-click on the category Issue#: CODE-1302 Modified Paths: -------------- Trunk/pcgen/code/src/java/pcgen/gui2/filter/FilteredTreeViewTable.java Trunk/pcgen/code/src/java/pcgen/gui2/tabs/AbilityChooserTab.java Modified: Trunk/pcgen/code/src/java/pcgen/gui2/filter/FilteredTreeViewTable.java =================================================================== --- Trunk/pcgen/code/src/java/pcgen/gui2/filter/FilteredTreeViewTable.java 2012-06-26 07:50:31 UTC (rev 16903) +++ Trunk/pcgen/code/src/java/pcgen/gui2/filter/FilteredTreeViewTable.java 2012-06-26 22:27:06 UTC (rev 16904) @@ -67,6 +67,7 @@ public void refilter() { filteredModel.refilter(); + updateDisplay(); } public void setContext(C context) Modified: Trunk/pcgen/code/src/java/pcgen/gui2/tabs/AbilityChooserTab.java =================================================================== --- Trunk/pcgen/code/src/java/pcgen/gui2/tabs/AbilityChooserTab.java 2012-06-26 07:50:31 UTC (rev 16903) +++ Trunk/pcgen/code/src/java/pcgen/gui2/tabs/AbilityChooserTab.java 2012-06-26 22:27:06 UTC (rev 16904) @@ -672,6 +672,7 @@ { AbilityCategoryFacade category = (AbilityCategoryFacade) categoryTable.getValueAt(index, 0); character.addAbility(category, (AbilityFacade) data); + availableTreeViewPanel.refilter(); } } @@ -716,6 +717,7 @@ if (category instanceof AbilityCategoryFacade) { character.removeAbility((AbilityCategoryFacade) category, (AbilityFacade) data); + availableTreeViewPanel.refilter(); } } } This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <jde...@us...> - 2012-06-26 23:59:47
|
Revision: 16910 http://pcgen.svn.sourceforge.net/pcgen/?rev=16910&view=rev Author: jdempsey Date: 2012-06-26 23:59:40 +0000 (Tue, 26 Jun 2012) Log Message: ----------- Fix bug: Skills preview pane does render correctly in some corner-cases Issue#: CODE-1275 Modified Paths: -------------- Trunk/pcgen/code/src/java/pcgen/gui2/facade/CharacterFacadeImpl.java Trunk/pcgen/code/src/java/pcgen/gui2/tabs/skill/SkillTreeViewModel.java Modified: Trunk/pcgen/code/src/java/pcgen/gui2/facade/CharacterFacadeImpl.java =================================================================== --- Trunk/pcgen/code/src/java/pcgen/gui2/facade/CharacterFacadeImpl.java 2012-06-26 23:43:13 UTC (rev 16909) +++ Trunk/pcgen/code/src/java/pcgen/gui2/facade/CharacterFacadeImpl.java 2012-06-26 23:59:40 UTC (rev 16910) @@ -1584,6 +1584,10 @@ hpRef.setReference(theCharacter.hitPoints()); updateScorePurchasePool(true); + if (charLevelsFacade != null) + { + charLevelsFacade.fireSkillBonusEvent(this, 0, true); + } } /** @@ -1663,6 +1667,10 @@ score.setReference(StatAnalysis.getTotalStatFor(theCharacter, (PCStat) stat)); } } + if (charLevelsFacade != null) + { + charLevelsFacade.fireSkillBonusEvent(this, 0, true); + } } /* (non-Javadoc) Modified: Trunk/pcgen/code/src/java/pcgen/gui2/tabs/skill/SkillTreeViewModel.java =================================================================== --- Trunk/pcgen/code/src/java/pcgen/gui2/tabs/skill/SkillTreeViewModel.java 2012-06-26 23:43:13 UTC (rev 16909) +++ Trunk/pcgen/code/src/java/pcgen/gui2/tabs/skill/SkillTreeViewModel.java 2012-06-26 23:59:40 UTC (rev 16910) @@ -32,6 +32,8 @@ import pcgen.core.facade.CharacterFacade; import pcgen.core.facade.CharacterLevelFacade; import pcgen.core.facade.CharacterLevelsFacade; +import pcgen.core.facade.CharacterLevelsFacade.CharacterLevelEvent; +import pcgen.core.facade.CharacterLevelsFacade.SkillBonusListener; import pcgen.core.facade.SkillFacade; import pcgen.core.facade.util.DefaultListFacade; import pcgen.core.facade.util.ListFacade; @@ -48,7 +50,7 @@ * @author Connor Petty <cpm...@us...> */ public class SkillTreeViewModel implements TreeViewModel<SkillFacade>, - DataView<SkillFacade> + DataView<SkillFacade>, SkillBonusListener { private static final List<? extends DataViewColumn> columns = Arrays.asList( @@ -85,11 +87,13 @@ { this.table = ftvt; ftvt.setTreeViewModel(this); + levels.addSkillBonusListener(this); } public void uninstall() { table = null; + levels.removeSkillBonusListener(this); } @Override @@ -153,6 +157,15 @@ } /** + * {@inheritDoc} + */ + @Override + public void skillBonusChanged(CharacterLevelEvent e) + { + table.refreshModelData(); + } + + /** * Create a TreeViewPath for the skill and paths but trimming off the final * path if it is empty. * @param pobj The skill This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <jde...@us...> - 2012-08-29 09:54:32
|
Revision: 17089 http://pcgen.svn.sourceforge.net/pcgen/?rev=17089&view=rev Author: jdempsey Date: 2012-08-29 09:54:23 +0000 (Wed, 29 Aug 2012) Log Message: ----------- Fix bug: Conversion/input problem in height and weight between imperial/metric Issue#: CODE-1550 Modified Paths: -------------- Trunk/pcgen/code/src/java/pcgen/gui2/facade/CharacterFacadeImpl.java Trunk/pcgen/code/src/java/pcgen/gui2/prefs/LanguagePanel.java Modified: Trunk/pcgen/code/src/java/pcgen/gui2/facade/CharacterFacadeImpl.java =================================================================== --- Trunk/pcgen/code/src/java/pcgen/gui2/facade/CharacterFacadeImpl.java 2012-08-27 15:55:21 UTC (rev 17088) +++ Trunk/pcgen/code/src/java/pcgen/gui2/facade/CharacterFacadeImpl.java 2012-08-29 09:54:23 UTC (rev 17089) @@ -2040,8 +2040,10 @@ @Override public void setHeight(int height) { + int heightInInches = + Globals.getGameModeUnitSet().convertHeightFromUnitSet(height); heightRef.setReference(height); - theCharacter.setHeight(height); + theCharacter.setHeight(heightInInches); } /** @@ -2059,8 +2061,11 @@ @Override public void setWeight(int weight) { + int weightInPounds = + (int) Globals.getGameModeUnitSet().convertWeightFromUnitSet( + weight); weightRef.setReference(weight); - theCharacter.setWeight(weight); + theCharacter.setWeight(weightInPounds); } /* (non-Javadoc) Modified: Trunk/pcgen/code/src/java/pcgen/gui2/prefs/LanguagePanel.java =================================================================== --- Trunk/pcgen/code/src/java/pcgen/gui2/prefs/LanguagePanel.java 2012-08-27 15:55:21 UTC (rev 17088) +++ Trunk/pcgen/code/src/java/pcgen/gui2/prefs/LanguagePanel.java 2012-08-29 09:54:23 UTC (rev 17089) @@ -88,6 +88,7 @@ private JRadioButton langSystem; private JComboBoxEx unitSetType = new JComboBoxEx(); private String origLanguage; + private String origUnitSet; /** * Create a new LanguagePanel @@ -146,11 +147,6 @@ this.add(label); Utility.buildConstraints(c, 0, line++, 3, 1, 0, 0); - label = new JLabel(LanguageBundle.getString("in_Prefs_restartInfo")); - gridbag.setConstraints(label, c); - this.add(label); - - Utility.buildConstraints(c, 0, line++, 3, 1, 0, 0); label = new JLabel(""); gridbag.setConstraints(label, c); this.add(label); @@ -177,6 +173,11 @@ gridbag.setConstraints(unitSetType, c); this.add(unitSetType); + Utility.buildConstraints(c, 0, line++, 3, 1, 0, 0); + label = new JLabel(LanguageBundle.getString("in_Prefs_restartInfo")); + gridbag.setConstraints(label, c); + this.add(label); + Utility.buildConstraints(c, 5, line, 1, 1, 1, 1); c.fill = GridBagConstraints.BOTH; label = new JLabel(" "); @@ -245,6 +246,8 @@ langSystem.setSelected(true); } + origUnitSet = SettingsHandler.getGame().getUnitSet() + .getDisplayName(); if (unitSetType.getItemCount() > 0) { unitSetType.setSelectedIndex(0); @@ -340,6 +343,14 @@ boolean needsRestart = !langCountry[0].equals(origLanguage); + String unitSet = (String) unitSetType.getSelectedItem(); + if (unitSet == null) + { + unitSet = ""; + } + + needsRestart |= !unitSet.equals(origUnitSet); + return needsRestart; } This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <jde...@us...> - 2012-09-02 00:06:49
|
Revision: 17106 http://pcgen.svn.sourceforge.net/pcgen/?rev=17106&view=rev Author: jdempsey Date: 2012-09-02 00:06:42 +0000 (Sun, 02 Sep 2012) Log Message: ----------- Fix bug: HD Edit Box - Editable Field is too squished to see numbers correctly Issue#: CODE-1336 Modified Paths: -------------- Trunk/pcgen/code/src/java/pcgen/gui2/dialog/CharacterHPDialog.java Trunk/pcgen/code/src/java/pcgen/gui2/util/table/IntegerEditor.java Modified: Trunk/pcgen/code/src/java/pcgen/gui2/dialog/CharacterHPDialog.java =================================================================== --- Trunk/pcgen/code/src/java/pcgen/gui2/dialog/CharacterHPDialog.java 2012-09-01 12:34:41 UTC (rev 17105) +++ Trunk/pcgen/code/src/java/pcgen/gui2/dialog/CharacterHPDialog.java 2012-09-02 00:06:42 UTC (rev 17106) @@ -114,7 +114,7 @@ table.setDefaultRenderer(JButton.class, new Renderer()); table.setDefaultEditor(JButton.class, new Editor()); table.setCellSelectionEnabled(false); - table.setFocusable(false); + table.setRowHeight(new IntegerEditor(1,10).getPreferredSize().height); JTableHeader header = table.getTableHeader(); header.setReorderingAllowed(false); Modified: Trunk/pcgen/code/src/java/pcgen/gui2/util/table/IntegerEditor.java =================================================================== --- Trunk/pcgen/code/src/java/pcgen/gui2/util/table/IntegerEditor.java 2012-09-01 12:34:41 UTC (rev 17105) +++ Trunk/pcgen/code/src/java/pcgen/gui2/util/table/IntegerEditor.java 2012-09-02 00:06:42 UTC (rev 17106) @@ -44,6 +44,7 @@ import java.awt.event.ActionEvent; import java.awt.event.KeyEvent; import java.awt.Component; +import java.awt.Dimension; import java.awt.Toolkit; import java.text.NumberFormat; import java.text.ParseException; @@ -226,4 +227,17 @@ return false; } + /** + * @return The optimal size for this cell editor. + */ + public Dimension getPreferredSize() + { + Component comp = getComponent(); + if (comp != null) + { + return comp.getPreferredSize(); + } + + return new Dimension(40, 25); + } } This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <jde...@us...> - 2012-09-07 09:17:26
|
Revision: 17152 http://pcgen.svn.sourceforge.net/pcgen/?rev=17152&view=rev Author: jdempsey Date: 2012-09-07 09:17:14 +0000 (Fri, 07 Sep 2012) Log Message: ----------- Panes to remember position between uses Issue#: CODE-1347 Modified Paths: -------------- Trunk/pcgen/code/src/java/pcgen/gui2/dialog/PreferencesDialog.java Trunk/pcgen/code/src/java/pcgen/gui2/kits/KitPanel.java Trunk/pcgen/code/src/java/pcgen/gui2/sources/AdvancedSourceSelectionPanel.java Trunk/pcgen/code/src/java/pcgen/gui2/tabs/AbilityChooserTab.java Trunk/pcgen/code/src/java/pcgen/gui2/tabs/CharacterSheetInfoTab.java Trunk/pcgen/code/src/java/pcgen/gui2/tabs/ClassInfoTab.java Trunk/pcgen/code/src/java/pcgen/gui2/tabs/CompanionInfoTab.java Trunk/pcgen/code/src/java/pcgen/gui2/tabs/DescriptionInfoTab.java Trunk/pcgen/code/src/java/pcgen/gui2/tabs/DomainInfoTab.java Trunk/pcgen/code/src/java/pcgen/gui2/tabs/EquipInfoTab.java Trunk/pcgen/code/src/java/pcgen/gui2/tabs/PurchaseInfoTab.java Trunk/pcgen/code/src/java/pcgen/gui2/tabs/RaceInfoTab.java Trunk/pcgen/code/src/java/pcgen/gui2/tabs/SkillInfoTab.java Trunk/pcgen/code/src/java/pcgen/gui2/tabs/TempBonusInfoTab.java Trunk/pcgen/code/src/java/pcgen/gui2/tabs/TemplateInfoTab.java Trunk/pcgen/code/src/java/pcgen/gui2/tabs/spells/SpellBooksTab.java Trunk/pcgen/code/src/java/pcgen/gui2/tabs/spells/SpellsKnownTab.java Trunk/pcgen/code/src/java/pcgen/gui2/tabs/spells/SpellsPreparedTab.java Trunk/pcgen/code/src/java/pcgen/gui2/tools/ChooserPane.java Trunk/pcgen/code/src/java/pcgen/gui2/tools/FlippingSplitPane.java Trunk/pcgen/code/src/java/pcgen/gui2/tools/Utilities.java Modified: Trunk/pcgen/code/src/java/pcgen/gui2/dialog/PreferencesDialog.java =================================================================== --- Trunk/pcgen/code/src/java/pcgen/gui2/dialog/PreferencesDialog.java 2012-09-07 07:33:41 UTC (rev 17151) +++ Trunk/pcgen/code/src/java/pcgen/gui2/dialog/PreferencesDialog.java 2012-09-07 09:17:14 UTC (rev 17152) @@ -410,7 +410,7 @@ // Build the split pane splitPane = new FlippingSplitPane(JSplitPane.HORIZONTAL_SPLIT, - settingsScroll, settingsPanel); + settingsScroll, settingsPanel, "Prefs"); splitPane.setOneTouchExpandable(true); splitPane.setDividerSize(10); Modified: Trunk/pcgen/code/src/java/pcgen/gui2/kits/KitPanel.java =================================================================== --- Trunk/pcgen/code/src/java/pcgen/gui2/kits/KitPanel.java 2012-09-07 07:33:41 UTC (rev 17151) +++ Trunk/pcgen/code/src/java/pcgen/gui2/kits/KitPanel.java 2012-09-07 09:17:14 UTC (rev 17152) @@ -91,6 +91,7 @@ */ public KitPanel(CharacterFacade character) { + super("kit"); this.character = character; this.availableTable = new FilteredTreeViewTable<Object, KitFacade>(); this.selectedTable = new FilteredTreeViewTable<Object, KitFacade>(); @@ -105,7 +106,7 @@ private void initComponents() { - FlippingSplitPane topPane = new FlippingSplitPane(); + FlippingSplitPane topPane = new FlippingSplitPane("kitTop"); setTopComponent(topPane); setOrientation(VERTICAL_SPLIT); Modified: Trunk/pcgen/code/src/java/pcgen/gui2/sources/AdvancedSourceSelectionPanel.java =================================================================== --- Trunk/pcgen/code/src/java/pcgen/gui2/sources/AdvancedSourceSelectionPanel.java 2012-09-07 07:33:41 UTC (rev 17151) +++ Trunk/pcgen/code/src/java/pcgen/gui2/sources/AdvancedSourceSelectionPanel.java 2012-09-07 09:17:14 UTC (rev 17152) @@ -122,8 +122,8 @@ private void initComponents() { - FlippingSplitPane mainPane = new FlippingSplitPane(JSplitPane.VERTICAL_SPLIT); - FlippingSplitPane topPane = new FlippingSplitPane(); + FlippingSplitPane mainPane = new FlippingSplitPane(JSplitPane.VERTICAL_SPLIT, "advSrcMain"); + FlippingSplitPane topPane = new FlippingSplitPane("advSrcTop"); topPane.setResizeWeight(0.6); JPanel panel = new JPanel(new BorderLayout()); panel.add(new JLabel(LanguageBundle.getString("in_src_gameLabel")), BorderLayout.WEST); //$NON-NLS-1$ Modified: Trunk/pcgen/code/src/java/pcgen/gui2/tabs/AbilityChooserTab.java =================================================================== --- Trunk/pcgen/code/src/java/pcgen/gui2/tabs/AbilityChooserTab.java 2012-09-07 07:33:41 UTC (rev 17151) +++ Trunk/pcgen/code/src/java/pcgen/gui2/tabs/AbilityChooserTab.java 2012-09-07 09:17:14 UTC (rev 17152) @@ -96,6 +96,7 @@ public AbilityChooserTab() { + super("ability"); this.availableTreeViewPanel = new FilteredTreeViewTable<CharacterFacade, AbilityFacade>(); this.selectedTreeViewPanel = new JTreeTable(); this.categoryTable = new JTable(); @@ -137,7 +138,8 @@ FlippingSplitPane topPane = new FlippingSplitPane(JSplitPane.HORIZONTAL_SPLIT, true, availPanel, - selPanel); + selPanel, + "abilityTop"); setTopComponent(topPane); @@ -161,7 +163,7 @@ filterPanel.add(categoryBar, BorderLayout.NORTH); filterPanel.add(new JScrollPane(categoryTable), BorderLayout.CENTER); - FlippingSplitPane bottomPane = new FlippingSplitPane(JSplitPane.HORIZONTAL_SPLIT); + FlippingSplitPane bottomPane = new FlippingSplitPane(JSplitPane.HORIZONTAL_SPLIT, "abilityBottom"); bottomPane.setLeftComponent(filterPanel); bottomPane.setRightComponent(infoPane); setBottomComponent(bottomPane); Modified: Trunk/pcgen/code/src/java/pcgen/gui2/tabs/CharacterSheetInfoTab.java =================================================================== --- Trunk/pcgen/code/src/java/pcgen/gui2/tabs/CharacterSheetInfoTab.java 2012-09-07 07:33:41 UTC (rev 17151) +++ Trunk/pcgen/code/src/java/pcgen/gui2/tabs/CharacterSheetInfoTab.java 2012-09-07 09:17:14 UTC (rev 17152) @@ -90,6 +90,7 @@ @SuppressWarnings("serial") public CharacterSheetInfoTab() { + super("CharSheet"); this.csheet = new CharacterSheetPanel(); this.sheetBox = new JComboBox(); this.equipSetTable = TableUtils.createDefaultTable(); @@ -117,7 +118,7 @@ }); box.add(sheetBox); panel.add(box, BorderLayout.NORTH); - FlippingSplitPane subPane = new FlippingSplitPane(); + FlippingSplitPane subPane = new FlippingSplitPane("CharSheetLeft"); subPane.setOrientation(VERTICAL_SPLIT); equipSetTable.getTableHeader().setReorderingAllowed(false); JScrollPane pane = TableUtils.createRadioBoxSelectionPane(equipSetTable, equipSetRowTable); Modified: Trunk/pcgen/code/src/java/pcgen/gui2/tabs/ClassInfoTab.java =================================================================== --- Trunk/pcgen/code/src/java/pcgen/gui2/tabs/ClassInfoTab.java 2012-09-07 07:33:41 UTC (rev 17151) +++ Trunk/pcgen/code/src/java/pcgen/gui2/tabs/ClassInfoTab.java 2012-09-07 09:17:14 UTC (rev 17152) @@ -109,6 +109,7 @@ public ClassInfoTab() { + super("Class"); this.availableTable = new FilteredTreeViewTable<Object, ClassFacade>(); this.classTable = TableUtils.createDefaultTable(); this.addButton = new JButton(); @@ -122,7 +123,7 @@ private void initComponents() { - FlippingSplitPane topPane = new FlippingSplitPane(); + FlippingSplitPane topPane = new FlippingSplitPane("ClassTop"); setTopComponent(topPane); setOrientation(VERTICAL_SPLIT); Modified: Trunk/pcgen/code/src/java/pcgen/gui2/tabs/CompanionInfoTab.java =================================================================== --- Trunk/pcgen/code/src/java/pcgen/gui2/tabs/CompanionInfoTab.java 2012-09-07 07:33:41 UTC (rev 17151) +++ Trunk/pcgen/code/src/java/pcgen/gui2/tabs/CompanionInfoTab.java 2012-09-07 09:17:14 UTC (rev 17152) @@ -89,6 +89,7 @@ public CompanionInfoTab() { + super("Companion"); this.companionsTable = new JTreeTable() { Modified: Trunk/pcgen/code/src/java/pcgen/gui2/tabs/DescriptionInfoTab.java =================================================================== --- Trunk/pcgen/code/src/java/pcgen/gui2/tabs/DescriptionInfoTab.java 2012-09-07 07:33:41 UTC (rev 17151) +++ Trunk/pcgen/code/src/java/pcgen/gui2/tabs/DescriptionInfoTab.java 2012-09-07 09:17:14 UTC (rev 17152) @@ -84,6 +84,7 @@ */ public DescriptionInfoTab() { + super("Desc"); this.portraitPane = new PortraitInfoPane(); this.bioPane = new BiographyInfoPane(); this.histPane = new CampaignHistoryInfoPane(); Modified: Trunk/pcgen/code/src/java/pcgen/gui2/tabs/DomainInfoTab.java =================================================================== --- Trunk/pcgen/code/src/java/pcgen/gui2/tabs/DomainInfoTab.java 2012-09-07 07:33:41 UTC (rev 17151) +++ Trunk/pcgen/code/src/java/pcgen/gui2/tabs/DomainInfoTab.java 2012-09-07 09:17:14 UTC (rev 17152) @@ -98,6 +98,7 @@ public DomainInfoTab() { + super("Domain"); this.deityTable = new FilteredTreeViewTable<Object, DeityFacade>(); this.domainTable = new JDynamicTable(); this.domainRowHeaderTable = TableUtils.createDefaultTable(); @@ -134,7 +135,7 @@ box.add(Box.createHorizontalGlue()); panel.add(box, BorderLayout.SOUTH); - FlippingSplitPane splitPane = new FlippingSplitPane(); + FlippingSplitPane splitPane = new FlippingSplitPane("DomainTop"); splitPane.setLeftComponent(panel); panel = new JPanel(new BorderLayout()); @@ -160,7 +161,7 @@ splitPane.setRightComponent(panel); setTopComponent(splitPane); - splitPane = new FlippingSplitPane(); + splitPane = new FlippingSplitPane("DomainBottom"); splitPane.setLeftComponent(deityInfo); splitPane.setRightComponent(domainInfo); setBottomComponent(splitPane); Modified: Trunk/pcgen/code/src/java/pcgen/gui2/tabs/EquipInfoTab.java =================================================================== --- Trunk/pcgen/code/src/java/pcgen/gui2/tabs/EquipInfoTab.java 2012-09-07 07:33:41 UTC (rev 17151) +++ Trunk/pcgen/code/src/java/pcgen/gui2/tabs/EquipInfoTab.java 2012-09-07 09:17:14 UTC (rev 17152) @@ -128,6 +128,7 @@ public EquipInfoTab() { + super("Equip"); this.equipmentTable = new JDynamicTable(); this.equipViewBox = new JComboBox(EquipView.values()); this.infoPane = new InfoPane(); @@ -173,7 +174,7 @@ setOrientation(HORIZONTAL_SPLIT); - FlippingSplitPane splitPane = new FlippingSplitPane(VERTICAL_SPLIT); + FlippingSplitPane splitPane = new FlippingSplitPane(VERTICAL_SPLIT, "EquipMain"); JPanel panel = new JPanel(new BorderLayout()); Modified: Trunk/pcgen/code/src/java/pcgen/gui2/tabs/PurchaseInfoTab.java =================================================================== --- Trunk/pcgen/code/src/java/pcgen/gui2/tabs/PurchaseInfoTab.java 2012-09-07 07:33:41 UTC (rev 17151) +++ Trunk/pcgen/code/src/java/pcgen/gui2/tabs/PurchaseInfoTab.java 2012-09-07 09:17:14 UTC (rev 17152) @@ -141,6 +141,7 @@ */ public PurchaseInfoTab() { + super("Purchase"); this.availableTable = new FilteredTreeViewTable<CharacterFacade, EquipmentFacade>(); this.purchasedTable = new FilteredTreeViewTable<CharacterFacade, EquipmentFacade>(); this.autoResizeBox = new JCheckBox(); @@ -163,7 +164,7 @@ private void initComponents() { setOrientation(VERTICAL_SPLIT); - FlippingSplitPane splitPane = new FlippingSplitPane(); + FlippingSplitPane splitPane = new FlippingSplitPane("PurchaseTop"); splitPane.setOrientation(HORIZONTAL_SPLIT); {// Top Left panel FilterBar<CharacterFacade, EquipmentFacade> filterBar = new FilterBar<CharacterFacade, EquipmentFacade>(); @@ -240,7 +241,7 @@ splitPane.setRightComponent(panel); } setTopComponent(splitPane); - splitPane = new FlippingSplitPane(); + splitPane = new FlippingSplitPane("PurchaseBottom"); splitPane.setOrientation(HORIZONTAL_SPLIT); {// Bottom Left Panel JPanel panel = new JPanel(); Modified: Trunk/pcgen/code/src/java/pcgen/gui2/tabs/RaceInfoTab.java =================================================================== --- Trunk/pcgen/code/src/java/pcgen/gui2/tabs/RaceInfoTab.java 2012-09-07 07:33:41 UTC (rev 17151) +++ Trunk/pcgen/code/src/java/pcgen/gui2/tabs/RaceInfoTab.java 2012-09-07 09:17:14 UTC (rev 17152) @@ -93,6 +93,7 @@ public RaceInfoTab() { + super("Race"); this.raceTable = new FilteredTreeViewTable<Object, RaceFacade>(); this.selectedTable = new FilteredTreeViewTable<Object, RaceFacade>(); this.infoPane = new InfoPane(LanguageBundle.getString("in_irRaceInfo")); //$NON-NLS-1$ @@ -105,7 +106,7 @@ private void initComponents() { - FlippingSplitPane topPane = new FlippingSplitPane(); + FlippingSplitPane topPane = new FlippingSplitPane("RaceTop"); setTopComponent(topPane); setOrientation(VERTICAL_SPLIT); Modified: Trunk/pcgen/code/src/java/pcgen/gui2/tabs/SkillInfoTab.java =================================================================== --- Trunk/pcgen/code/src/java/pcgen/gui2/tabs/SkillInfoTab.java 2012-09-07 07:33:41 UTC (rev 17151) +++ Trunk/pcgen/code/src/java/pcgen/gui2/tabs/SkillInfoTab.java 2012-09-07 09:17:14 UTC (rev 17152) @@ -95,6 +95,7 @@ public SkillInfoTab() { + super("Skill"); this.skillTable = new FilteredTreeViewTable<CharacterFacade, SkillFacade>(); this.skillcostTable = new JTable(); this.skillpointTable = new JTable(); @@ -156,10 +157,11 @@ FlippingSplitPane topPane = new FlippingSplitPane(JSplitPane.HORIZONTAL_SPLIT, true, availPanel, - selScrollPane); + selScrollPane, + "SkillTop"); setTopComponent(topPane); - FlippingSplitPane bottomPane = new FlippingSplitPane(JSplitPane.HORIZONTAL_SPLIT); + FlippingSplitPane bottomPane = new FlippingSplitPane(JSplitPane.HORIZONTAL_SPLIT, "SkillBottom"); bottomPane.setLeftComponent(tablePanel); tablePanel.setPreferredSize(new Dimension(650, 100)); bottomPane.setRightComponent(infoPane); Modified: Trunk/pcgen/code/src/java/pcgen/gui2/tabs/TempBonusInfoTab.java =================================================================== --- Trunk/pcgen/code/src/java/pcgen/gui2/tabs/TempBonusInfoTab.java 2012-09-07 07:33:41 UTC (rev 17151) +++ Trunk/pcgen/code/src/java/pcgen/gui2/tabs/TempBonusInfoTab.java 2012-09-07 09:17:14 UTC (rev 17152) @@ -100,6 +100,7 @@ */ public TempBonusInfoTab() { + super("TempBonus"); this.availableTable = new FilteredTreeViewTable<CharacterFacade, TempBonusFacade>(); this.selectedTable = new FilteredTreeViewTable<CharacterFacade, TempBonusFacade>(); this.addButton = new JButton(); @@ -110,7 +111,7 @@ private void initComponents() { - FlippingSplitPane topPane = new FlippingSplitPane(); + FlippingSplitPane topPane = new FlippingSplitPane("TempBonusTop"); setTopComponent(topPane); setOrientation(VERTICAL_SPLIT); Modified: Trunk/pcgen/code/src/java/pcgen/gui2/tabs/TemplateInfoTab.java =================================================================== --- Trunk/pcgen/code/src/java/pcgen/gui2/tabs/TemplateInfoTab.java 2012-09-07 07:33:41 UTC (rev 17151) +++ Trunk/pcgen/code/src/java/pcgen/gui2/tabs/TemplateInfoTab.java 2012-09-07 09:17:14 UTC (rev 17152) @@ -81,6 +81,7 @@ public TemplateInfoTab() { + super("Template"); this.availableTable = new FilteredTreeViewTable<CharacterFacade, TemplateFacade>(); this.selectedTable = new FilteredTreeViewTable<CharacterFacade, TemplateFacade>(); this.addButton = new JButton(); @@ -92,7 +93,7 @@ private void initComponents() { - FlippingSplitPane topPane = new FlippingSplitPane(); + FlippingSplitPane topPane = new FlippingSplitPane("TemplateTop"); setTopComponent(topPane); setOrientation(VERTICAL_SPLIT); Modified: Trunk/pcgen/code/src/java/pcgen/gui2/tabs/spells/SpellBooksTab.java =================================================================== --- Trunk/pcgen/code/src/java/pcgen/gui2/tabs/spells/SpellBooksTab.java 2012-09-07 07:33:41 UTC (rev 17151) +++ Trunk/pcgen/code/src/java/pcgen/gui2/tabs/spells/SpellBooksTab.java 2012-09-07 09:17:14 UTC (rev 17152) @@ -68,6 +68,7 @@ public SpellBooksTab() { + super("SpellBooks"); this.availableTable = new JTreeViewTable<SuperNode>(); this.selectedTable = new JTreeViewTable<SuperNode>(); this.addButton = new JButton(); @@ -80,7 +81,7 @@ private void initComponents() { - FlippingSplitPane upperPane = new FlippingSplitPane(); + FlippingSplitPane upperPane = new FlippingSplitPane("SpellBooksTop"); Box box = Box.createVerticalBox(); JScrollPane pane = new JScrollPane(availableTable); pane.setPreferredSize(new Dimension(250, 300)); @@ -122,7 +123,7 @@ upperPane.setResizeWeight(0); setTopComponent(upperPane); - FlippingSplitPane bottomPane = new FlippingSplitPane(); + FlippingSplitPane bottomPane = new FlippingSplitPane("SpellBooksBottom"); bottomPane.setLeftComponent(spellsPane); bottomPane.setRightComponent(classPane); setBottomComponent(bottomPane); Modified: Trunk/pcgen/code/src/java/pcgen/gui2/tabs/spells/SpellsKnownTab.java =================================================================== --- Trunk/pcgen/code/src/java/pcgen/gui2/tabs/spells/SpellsKnownTab.java 2012-09-07 07:33:41 UTC (rev 17151) +++ Trunk/pcgen/code/src/java/pcgen/gui2/tabs/spells/SpellsKnownTab.java 2012-09-07 09:17:14 UTC (rev 17152) @@ -72,6 +72,7 @@ public SpellsKnownTab() { + super("SpellsKnown"); this.availableTable = new JTreeViewTable<SuperNode>(); this.selectedTable = new JTreeViewTable<SuperNode>(); this.addButton = new JButton(); @@ -86,7 +87,7 @@ private void initComponents() { - FlippingSplitPane upperPane = new FlippingSplitPane(); + FlippingSplitPane upperPane = new FlippingSplitPane("SpellsKnownTop"); Box box = Box.createVerticalBox(); JScrollPane pane = new JScrollPane(availableTable); pane.setPreferredSize(new Dimension(250, 300)); @@ -159,7 +160,7 @@ upperPane.setResizeWeight(0); setTopComponent(upperPane); - FlippingSplitPane bottomPane = new FlippingSplitPane(); + FlippingSplitPane bottomPane = new FlippingSplitPane("SpellsKnownBottom"); bottomPane.setLeftComponent(spellsPane); bottomPane.setRightComponent(classPane); setBottomComponent(bottomPane); Modified: Trunk/pcgen/code/src/java/pcgen/gui2/tabs/spells/SpellsPreparedTab.java =================================================================== --- Trunk/pcgen/code/src/java/pcgen/gui2/tabs/spells/SpellsPreparedTab.java 2012-09-07 07:33:41 UTC (rev 17151) +++ Trunk/pcgen/code/src/java/pcgen/gui2/tabs/spells/SpellsPreparedTab.java 2012-09-07 09:17:14 UTC (rev 17152) @@ -72,6 +72,7 @@ public SpellsPreparedTab() { + super("SpellsPrepared"); this.availableTable = new JTreeViewTable<SuperNode>(); this.selectedTable = new JTreeViewTable<SuperNode>(); this.addMMSpellButton = new JButton(); @@ -88,7 +89,7 @@ private void initComponents() { - FlippingSplitPane upperPane = new FlippingSplitPane(); + FlippingSplitPane upperPane = new FlippingSplitPane("SpellsPreparedTop"); Box box = Box.createVerticalBox(); JScrollPane pane = new JScrollPane(availableTable); pane.setPreferredSize(new Dimension(250, 300)); @@ -137,7 +138,7 @@ upperPane.setResizeWeight(0); setTopComponent(upperPane); - FlippingSplitPane bottomPane = new FlippingSplitPane(); + FlippingSplitPane bottomPane = new FlippingSplitPane("SpellsPreparedBottom"); bottomPane.setLeftComponent(spellsPane); bottomPane.setRightComponent(classPane); setBottomComponent(bottomPane); Modified: Trunk/pcgen/code/src/java/pcgen/gui2/tools/ChooserPane.java =================================================================== --- Trunk/pcgen/code/src/java/pcgen/gui2/tools/ChooserPane.java 2012-09-07 07:33:41 UTC (rev 17151) +++ Trunk/pcgen/code/src/java/pcgen/gui2/tools/ChooserPane.java 2012-09-07 09:17:14 UTC (rev 17152) @@ -35,7 +35,8 @@ public ChooserPane() { - this.subSplitPane = new FlippingSplitPane(VERTICAL_SPLIT); + super("Chooser"); + this.subSplitPane = new FlippingSplitPane(VERTICAL_SPLIT, "ChooserRight"); this.infoPane = new InfoPane(); subSplitPane.setBottomComponent(infoPane); Modified: Trunk/pcgen/code/src/java/pcgen/gui2/tools/FlippingSplitPane.java =================================================================== --- Trunk/pcgen/code/src/java/pcgen/gui2/tools/FlippingSplitPane.java 2012-09-07 07:33:41 UTC (rev 17151) +++ Trunk/pcgen/code/src/java/pcgen/gui2/tools/FlippingSplitPane.java 2012-09-07 09:17:14 UTC (rev 17152) @@ -26,6 +26,7 @@ import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.awt.event.MouseEvent; + import javax.swing.AbstractAction; import javax.swing.JCheckBoxMenuItem; import javax.swing.JMenu; @@ -34,8 +35,11 @@ import javax.swing.JSplitPane; import javax.swing.plaf.SplitPaneUI; import javax.swing.plaf.basic.BasicSplitPaneUI; + +import pcgen.gui2.UIPropertyContext; import pcgen.gui2.util.event.PopupMouseAdapter; import pcgen.system.LanguageBundle; +import pcgen.system.PropertyContext; /** * <code>FlippingSplitPane</code> is an improved version of @@ -73,16 +77,22 @@ */ public class FlippingSplitPane extends JSplitPane { + /** Preferences key for storing the preferred divider location. */ + private static final String DIVIDER_LOC_PREF_KEY = "location"; //$NON-NLS-1$ - static final long serialVersionUID = -6343545558990369582L; + private static final long serialVersionUID = 735390251967305647L; + private final LockAction lockAction = new LockAction(); private JPopupMenu popupMenu = null; + private PropertyContext baseContext; + private final String prefsKey; /** * Creates a new <code>FlippingSplitPane</code>. Panes begin as unlocked */ - public FlippingSplitPane() + public FlippingSplitPane(String prefsKey) { + this.prefsKey = prefsKey; initComponent(); } @@ -90,10 +100,11 @@ * Creates a new <code>FlippingSplitPane</code>. Panes begin as unlocked, and * otherwise take the defaults of {@link JSplitPane#JSplitPane(int)}. */ - public FlippingSplitPane(int newOrientation) + public FlippingSplitPane(int newOrientation, String prefsKey) { super(newOrientation); + this.prefsKey = prefsKey; initComponent(); } @@ -101,10 +112,12 @@ * Creates a new <code>FlippingSplitPane</code>. Panes begin as unlocked, and * otherwise take the defaults of {@link JSplitPane#JSplitPane(int, boolean)}. */ - public FlippingSplitPane(int newOrientation, boolean newContinuousLayout) + public FlippingSplitPane(int newOrientation, boolean newContinuousLayout, + String prefsKey) { super(newOrientation, newContinuousLayout); + this.prefsKey = prefsKey; initComponent(); } @@ -114,10 +127,11 @@ * Component)}. */ public FlippingSplitPane(int newOrientation, Component newLeftComponent, - Component newRightComponent) + Component newRightComponent, String prefsKey) { super(newOrientation, newLeftComponent, newRightComponent); + this.prefsKey = prefsKey; initComponent(); } @@ -128,14 +142,15 @@ */ public FlippingSplitPane(int newOrientation, boolean newContinuousLayout, Component newLeftComponent, - Component newRightComponent) + Component newRightComponent, String prefsKey) { super(newOrientation, newContinuousLayout, newLeftComponent, newRightComponent); + this.prefsKey = prefsKey; initComponent(); } - + /** * <code>setContinuousLayout</code> recursively calls {@link * JSplitPane#setContinuousLayout(boolean)} on <code>FlippingSplitPane</code> @@ -158,6 +173,16 @@ newContinuousLayout); } + private void setInitialDividerLocation() + { + PropertyContext context = baseContext.createChildContext(prefsKey); + int location = context.getInt(DIVIDER_LOC_PREF_KEY, -1); + if (location >= 0) + { + setDividerLocation(location); + } + } + /** * <code>setDividerLocation</code> calls {@link JSplitPane#setDividerLocation(int)} * unless the <code>FlippingSplitPane</code> is locked. @@ -167,6 +192,8 @@ @Override public void setDividerLocation(int location) { + PropertyContext context = baseContext.createChildContext(prefsKey); + context.setInt(DIVIDER_LOC_PREF_KEY, (Integer) location); if (isLocked()) { super.setDividerLocation(getLastDividerLocation()); @@ -455,6 +482,8 @@ ((BasicSplitPaneUI) anUi).getDivider().addMouseListener(new PopupListener()); } setResizeWeight(0.5); + baseContext = UIPropertyContext.createContext("dividerPrefs"); + setInitialDividerLocation(); } private class LockAction extends AbstractAction Modified: Trunk/pcgen/code/src/java/pcgen/gui2/tools/Utilities.java =================================================================== --- Trunk/pcgen/code/src/java/pcgen/gui2/tools/Utilities.java 2012-09-07 07:33:41 UTC (rev 17151) +++ Trunk/pcgen/code/src/java/pcgen/gui2/tools/Utilities.java 2012-09-07 09:17:14 UTC (rev 17152) @@ -82,25 +82,6 @@ super(); } - public static FlippingSplitPane createDefaultFlippingSplitPane() - { - FlippingSplitPane pane = new FlippingSplitPane(); - pane.setContinuousLayout(true); - pane.setOneTouchExpandable(true); - pane.setDividerSize(7); - return pane; - } - - public static FlippingSplitPane createDefaultDualFlippingSplitPane() - { - FlippingSplitPane pane = new FlippingSplitPane(); - pane.setRightComponent(new FlippingSplitPane(JSplitPane.VERTICAL_SPLIT)); - pane.setContinuousLayout(true); - pane.setOneTouchExpandable(true); - pane.setDividerSize(7); - return pane; - } - /** * Work around bug in W32; it returns false even on right-mouse * clicks. This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <jde...@us...> - 2012-09-07 09:35:07
|
Revision: 17154 http://pcgen.svn.sourceforge.net/pcgen/?rev=17154&view=rev Author: jdempsey Date: 2012-09-07 09:34:56 +0000 (Fri, 07 Sep 2012) Log Message: ----------- Add default button to dialog frames Issue#: CODE-1585 Modified Paths: -------------- Trunk/pcgen/code/src/java/pcgen/gui2/PCGenFrame.java Trunk/pcgen/code/src/java/pcgen/gui2/dialog/TipOfTheDay.java Modified: Trunk/pcgen/code/src/java/pcgen/gui2/PCGenFrame.java =================================================================== --- Trunk/pcgen/code/src/java/pcgen/gui2/PCGenFrame.java 2012-09-07 09:30:46 UTC (rev 17153) +++ Trunk/pcgen/code/src/java/pcgen/gui2/PCGenFrame.java 2012-09-07 09:34:56 UTC (rev 17154) @@ -1548,6 +1548,7 @@ aFrame.getContentPane().add(jPanel, BorderLayout.SOUTH); aFrame.setSize(new Dimension(700, 500)); aFrame.setLocationRelativeTo(this); + aFrame.getRootPane().setDefaultButton(jClose); aFrame.setVisible(true); } Modified: Trunk/pcgen/code/src/java/pcgen/gui2/dialog/TipOfTheDay.java =================================================================== --- Trunk/pcgen/code/src/java/pcgen/gui2/dialog/TipOfTheDay.java 2012-09-07 09:30:46 UTC (rev 17153) +++ Trunk/pcgen/code/src/java/pcgen/gui2/dialog/TipOfTheDay.java 2012-09-07 09:34:56 UTC (rev 17154) @@ -157,6 +157,7 @@ tipText = new JLabelPane(); tipText.setBorder(null); + tipText.setFocusable(false); tipText.addHyperlinkListener(new Hyperactive()); final JScrollPane pane = new JScrollPane(tipText); @@ -194,6 +195,7 @@ panel.add(actions, BorderLayout.SOUTH); setContentPane(panel); + getRootPane().setDefaultButton(btnClose); addWindowListener(new WindowAdapter() { This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <jde...@us...> - 2012-09-08 13:48:35
|
Revision: 17181 http://pcgen.svn.sourceforge.net/pcgen/?rev=17181&view=rev Author: jdempsey Date: 2012-09-08 13:48:29 +0000 (Sat, 08 Sep 2012) Log Message: ----------- Assign F1 accelerator to the Docs Modified Paths: -------------- Trunk/pcgen/code/src/java/pcgen/gui2/PCGenActionMap.java Trunk/pcgen/code/src/java/pcgen/gui2/tools/PCGenAction.java Modified: Trunk/pcgen/code/src/java/pcgen/gui2/PCGenActionMap.java =================================================================== --- Trunk/pcgen/code/src/java/pcgen/gui2/PCGenActionMap.java 2012-09-08 12:20:27 UTC (rev 17180) +++ Trunk/pcgen/code/src/java/pcgen/gui2/PCGenActionMap.java 2012-09-08 13:48:29 UTC (rev 17181) @@ -1009,7 +1009,7 @@ public DocsHelpAction() { - super("mnuHelpDocumentation", HELP_DOCS_COMMAND, Icons.Help16); + super("mnuHelpDocumentation", HELP_DOCS_COMMAND, "F1", Icons.Help16); } @Override Modified: Trunk/pcgen/code/src/java/pcgen/gui2/tools/PCGenAction.java =================================================================== --- Trunk/pcgen/code/src/java/pcgen/gui2/tools/PCGenAction.java 2012-09-08 12:20:27 UTC (rev 17180) +++ Trunk/pcgen/code/src/java/pcgen/gui2/tools/PCGenAction.java 2012-09-08 13:48:29 UTC (rev 17181) @@ -24,8 +24,10 @@ import java.awt.event.ActionEvent; import java.awt.event.InputEvent; import java.util.StringTokenizer; + import javax.swing.AbstractAction; import javax.swing.KeyStroke; + import pcgen.system.LanguageBundle; public class PCGenAction extends AbstractAction @@ -100,7 +102,11 @@ { iShortCut = menuShortcutKeyMask | InputEvent.SHIFT_MASK; } - + else if (aString.matches("F[0-9]+")) + { + iShortCut = 0; + } + if (aTok.hasMoreTokens()) { // get the second argument This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <jde...@us...> - 2012-09-11 09:34:34
|
Revision: 17232 http://pcgen.svn.sourceforge.net/pcgen/?rev=17232&view=rev Author: jdempsey Date: 2012-09-11 09:34:24 +0000 (Tue, 11 Sep 2012) Log Message: ----------- Fix bug: Cannot override level up HP Issue#: CODE-1601 Modified Paths: -------------- Trunk/pcgen/code/src/java/pcgen/gui2/PCGenFrame.java Added Paths: ----------- Trunk/pcgen/code/src/java/pcgen/gui2/dialog/PostLevelUpDialog.java Modified: Trunk/pcgen/code/src/java/pcgen/gui2/PCGenFrame.java =================================================================== --- Trunk/pcgen/code/src/java/pcgen/gui2/PCGenFrame.java 2012-09-11 09:10:55 UTC (rev 17231) +++ Trunk/pcgen/code/src/java/pcgen/gui2/PCGenFrame.java 2012-09-11 09:34:24 UTC (rev 17232) @@ -44,10 +44,7 @@ import java.lang.reflect.InvocationTargetException; import java.util.ArrayList; import java.util.Collection; -import java.util.HashMap; -import java.util.Iterator; import java.util.List; -import java.util.Map; import java.util.Observer; import java.util.logging.LogRecord; @@ -63,18 +60,13 @@ import javax.swing.JLabel; import javax.swing.JOptionPane; import javax.swing.JPanel; -import javax.swing.JScrollPane; -import javax.swing.JTable; import javax.swing.KeyStroke; import javax.swing.SwingConstants; import javax.swing.SwingUtilities; import javax.swing.WindowConstants; import javax.swing.filechooser.FileFilter; -import javax.swing.table.DefaultTableModel; -import javax.swing.table.JTableHeader; import org.apache.commons.lang.StringUtils; -import org.apache.commons.lang.mutable.MutableInt; import org.lobobrowser.html.HtmlRendererContext; import org.lobobrowser.html.gui.HtmlPanel; import org.lobobrowser.html.test.SimpleHtmlRendererContext; @@ -85,11 +77,8 @@ import pcgen.core.Globals; import pcgen.core.facade.CampaignFacade; import pcgen.core.facade.CharacterFacade; -import pcgen.core.facade.CharacterLevelFacade; -import pcgen.core.facade.CharacterLevelsFacade; import pcgen.core.facade.CharacterStubFacade; import pcgen.core.facade.ChooserFacade; -import pcgen.core.facade.ClassFacade; import pcgen.core.facade.CompanionFacade; import pcgen.core.facade.DataSetFacade; import pcgen.core.facade.DefaultReferenceFacade; @@ -103,6 +92,7 @@ import pcgen.core.utils.ShowMessageDelegate; import pcgen.gui2.dialog.AboutDialog; import pcgen.gui2.dialog.ChooserDialog; +import pcgen.gui2.dialog.PostLevelUpDialog; import pcgen.gui2.dialog.TipOfTheDay; import pcgen.gui2.sources.SourceSelectionDialog; import pcgen.gui2.tabs.InfoTabbedPane; @@ -110,7 +100,6 @@ import pcgen.gui2.tools.Utility; import pcgen.gui2.util.ShowMessageGuiObserver; import pcgen.gui2.util.SwingWorker; -import pcgen.gui2.util.table.TableCellUtilities; import pcgen.io.PCGFile; import pcgen.persistence.PersistenceManager; import pcgen.persistence.SourceFileLoader; @@ -1312,88 +1301,7 @@ @Override public void showLevelUpInfo(CharacterFacade character, int oldLevel) { - CharacterLevelsFacade levels = character.getCharacterLevelsFacade(); - //level-class-hp gained-hp rolled-skill points-abilities? - int size = levels.getSize(); - if (size - oldLevel + 1 < 1) - { - return; - } - Object[][] data = new Object[size - oldLevel + 1][5]; - Map<ClassFacade, MutableInt> classLevelMap = new HashMap<ClassFacade, MutableInt>(); - int gainedTotal = 0; - int rolledTotal = 0; - int pointTotal = 0; - for (int i = oldLevel; i < size; i++) - { - CharacterLevelFacade level = levels.getElementAt(i); - Object[] dataRow = data[i - oldLevel]; - dataRow[0] = i + 1; - ClassFacade c = levels.getClassTaken(level); - dataRow[1] = c; - if (!classLevelMap.containsKey(c)) - { - classLevelMap.put(c, new MutableInt(0)); - } - classLevelMap.get(c).increment(); - gainedTotal += (Integer) (dataRow[2] = levels.getHPGained(level)); - rolledTotal += (Integer) (dataRow[3] = levels.getHPRolled(level)); - pointTotal += (Integer) (dataRow[4] = levels.getGainedSkillPoints(level)); - } - size -= oldLevel; - data[size][0] = LanguageBundle.getString("in_sumTotal"); //$NON-NLS-1$ - StringBuilder builder = new StringBuilder(); - Iterator<ClassFacade> classes = classLevelMap.keySet().iterator(); - while (classes.hasNext()) - { - ClassFacade c = classes.next(); - builder.append(c.getAbbrev()).append(' '); - builder.append('(').append(classLevelMap.get(c)).append(')'); - if (classes.hasNext()) - { - builder.append(", "); - } - } - data[size][1] = builder; - data[size][2] = gainedTotal; - data[size][3] = rolledTotal; - data[size][4] = pointTotal; - Object[] columns = new Object[] - { - LanguageBundle.getString("in_level"), //$NON-NLS-1$ - LanguageBundle.getString("in_classString"), //$NON-NLS-1$ - LanguageBundle.getString("in_luGainedHp"), //$NON-NLS-1$ - LanguageBundle.getString("in_luRolledHp"), //$NON-NLS-1$ - LanguageBundle.getString("in_luSkillPoints") //$NON-NLS-1$ - }; - DefaultTableModel model = new DefaultTableModel(data, columns) - { - - @Override - public Class<?> getColumnClass(int columnIndex) - { - switch (columnIndex) - { - case 2: - case 3: - case 4: - return Integer.class; - default: - return Object.class; - } - } - - }; - JTable table = new JTable(model); - table.setFocusable(false); - table.setCellSelectionEnabled(false); - table.setPreferredScrollableViewportSize(table.getPreferredSize()); - table.getColumnModel().getColumn(0).setCellRenderer(new TableCellUtilities.AlignRenderer(SwingConstants.RIGHT)); - JTableHeader header = table.getTableHeader(); - header.setReorderingAllowed(false); - header.setResizingAllowed(false); - JScrollPane pane = new JScrollPane(table); - JOptionPane.showMessageDialog(this, pane, LanguageBundle.getString("in_luTitle"), JOptionPane.PLAIN_MESSAGE); //$NON-NLS-1$ + PostLevelUpDialog.showPostLevelUpDialog(this, character, oldLevel); } /** @@ -1514,6 +1422,7 @@ final PropertyContext context = PCGenSettings.getInstance(); final JDialog aFrame = new JDialog(this, title, true); final JButton jClose = new JButton(LanguageBundle.getString("in_close")); //$NON-NLS-1$ + jClose.setMnemonic(LanguageBundle.getMnemonic("in_mn_close")); //$NON-NLS-1$ final JPanel jPanel = new JPanel(); final JCheckBox jCheckBox = new JCheckBox(LanguageBundle.getString("in_licShowOnLoad")); //$NON-NLS-1$ jPanel.add(jCheckBox); @@ -1572,6 +1481,7 @@ SwingConstants.CENTER); final JCheckBox jCheckBox1 = new JCheckBox(LanguageBundle.getString("in_licShowOnLoad")); //$NON-NLS-1$ final JButton jClose = new JButton(LanguageBundle.getString("in_close")); //$NON-NLS-1$ + jClose.setMnemonic(LanguageBundle.getMnemonic("in_mn_close")); //$NON-NLS-1$ jPanel1.setLayout(new BorderLayout()); jPanel1.add(jLabel1, BorderLayout.NORTH); @@ -1632,6 +1542,7 @@ final JDialog aFrame = new JDialog(this, title, true); final JButton jClose = new JButton(LanguageBundle.getString("in_close")); //$NON-NLS-1$ + jClose.setMnemonic(LanguageBundle.getMnemonic("in_mn_close")); //$NON-NLS-1$ final JPanel jPanel = new JPanel(); final JCheckBox jCheckBox = new JCheckBox(LanguageBundle.getString("in_licShowOnLoad")); //$NON-NLS-1$ jPanel.add(jCheckBox); Added: Trunk/pcgen/code/src/java/pcgen/gui2/dialog/PostLevelUpDialog.java =================================================================== --- Trunk/pcgen/code/src/java/pcgen/gui2/dialog/PostLevelUpDialog.java (rev 0) +++ Trunk/pcgen/code/src/java/pcgen/gui2/dialog/PostLevelUpDialog.java 2012-09-11 09:34:24 UTC (rev 17232) @@ -0,0 +1,335 @@ +/* + * PostLevelUpDialog.java + * Copyright James Dempsey, 2012 + * + * 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 11/09/2012 7:16:42 AM + * + * $Id$ + */ +package pcgen.gui2.dialog; + +import java.awt.BorderLayout; +import java.awt.Component; +import java.awt.Container; +import java.awt.Frame; +import java.awt.event.ActionEvent; +import java.awt.event.ActionListener; +import java.awt.event.WindowAdapter; +import java.awt.event.WindowEvent; +import java.util.HashMap; +import java.util.Iterator; +import java.util.Map; + +import javax.swing.Box; +import javax.swing.JButton; +import javax.swing.JDialog; +import javax.swing.JOptionPane; +import javax.swing.JScrollPane; +import javax.swing.JSpinner; +import javax.swing.JTable; +import javax.swing.SpinnerNumberModel; +import javax.swing.table.AbstractTableModel; +import javax.swing.table.JTableHeader; +import javax.swing.table.TableCellEditor; +import javax.swing.table.TableCellRenderer; + +import org.apache.commons.lang.math.NumberUtils; +import org.apache.commons.lang.mutable.MutableInt; + +import pcgen.core.facade.CharacterFacade; +import pcgen.core.facade.CharacterLevelFacade; +import pcgen.core.facade.CharacterLevelsFacade; +import pcgen.core.facade.CharacterLevelsFacade.CharacterLevelEvent; +import pcgen.core.facade.CharacterLevelsFacade.HitPointListener; +import pcgen.core.facade.ClassFacade; +import pcgen.gui2.tools.Utility; +import pcgen.gui2.util.table.TableCellUtilities.SpinnerEditor; +import pcgen.gui2.util.table.TableCellUtilities.SpinnerRenderer; +import pcgen.system.LanguageBundle; + +/** + * The Class <code>PostLevelUpDialog</code> provides a display of the results + * of levelling up a character. + * + * <br/> + * Last Editor: $Author$ + * Last Edited: $Date$ + * + * @author James Dempsey <jde...@us...> + * @version $Revision$ + */ +@SuppressWarnings("serial") +public class PostLevelUpDialog extends JDialog implements ActionListener +{ + + private final CharacterLevelsFacade levels; + private final LevelTableModel tableModel; + private final int oldLevel; + private int numLevels; + + private PostLevelUpDialog(Frame frame, CharacterFacade character, int oldLevel) + { + super(frame, true); + this.oldLevel = oldLevel; + this.levels = character.getCharacterLevelsFacade(); + numLevels = character.getCharacterLevelsFacade().getSize() - oldLevel; + this.tableModel = new LevelTableModel(); + initComponents(); + pack(); + } + + /** + * Display the post levelling dialog for a character. This will display a + * list of levels just added along with the hit points and skill points + * gained. The hit points gained may be edited. + * + * @param parent The component we should appear above. + * @param character The character that has been levelled up. + * @param oldLevel The character's level before the level up action. + */ + public static void showPostLevelUpDialog(Component parent, + CharacterFacade character, int oldLevel) + { + int size = character.getCharacterLevelsFacade().getSize(); + if (size - oldLevel + 1 < 1) + { + return; + } + + Frame frame = JOptionPane.getFrameForComponent(parent); + PostLevelUpDialog dialog = + new PostLevelUpDialog(frame, character, oldLevel); + dialog.setLocationRelativeTo(frame); + dialog.setVisible(true); + } + + private void initComponents() + { + setDefaultCloseOperation(DISPOSE_ON_CLOSE); + + Container pane = getContentPane(); + pane.setLayout(new BorderLayout()); + JTable table = new JTable(tableModel) + { + + @Override + public TableCellEditor getCellEditor(int row, int column) + { + if (column == LevelTableModel.COL_ROLLED_HP && row < numLevels) + {//TODO: the max roll should be calculated in a different manner + String hd = levels.getClassTaken(levels.getElementAt(row+oldLevel)).getHD(); + int max = NumberUtils.toInt(hd); + return new SpinnerEditor(new SpinnerNumberModel(1,1,max,1)); + } + return super.getCellEditor(row, column); + } + + /** + * {@inheritDoc} + */ + @Override + public TableCellRenderer getCellRenderer(int row, int column) + { + if (column == LevelTableModel.COL_ROLLED_HP && row < numLevels) + { + return new SpinnerRenderer(); + } + return super.getCellRenderer(row, column); + } + + }; + table.setCellSelectionEnabled(false); + table.setRowHeight(new JSpinner().getPreferredSize().height); + JTableHeader header = table.getTableHeader(); + header.setReorderingAllowed(false); + + JScrollPane scrollPane = new JScrollPane(table); + pane.add(scrollPane, BorderLayout.CENTER); + + Box box = Box.createHorizontalBox(); + box.add(Box.createHorizontalGlue()); + JButton button = new JButton(LanguageBundle.getString("in_close")); //$NON-NLS-1$ + button.setMnemonic(LanguageBundle.getMnemonic("in_mn_close")); //$NON-NLS-1$ + button.setActionCommand("Close"); //$NON-NLS-1$ + button.addActionListener(this); + box.add(button); + pane.add(box, BorderLayout.SOUTH); + addWindowListener(new WindowAdapter() + { + + @Override + public void windowClosed(WindowEvent e) + { + //Make sure to remove the listeners so that the garbage collector can + //dispose of this dialog and prevent a memory leak + levels.removeHitPointListener(tableModel); + } + + }); + + Utility.installEscapeCloseOperation(this); + } + + @Override + public void actionPerformed(ActionEvent e) + { + // Close the dialog + dispose(); + } + + private class LevelTableModel extends AbstractTableModel implements HitPointListener + { + public static final int COL_LEVEL = 0; + public static final int COL_CLASS = 1; + public static final int COL_GAINED_HP = 2; + public static final int COL_ROLLED_HP = 3; + public static final int COL_SKILL_POINTS = 4; + + private final Object[] columns; + private final Object[][] data; + private Map<ClassFacade, MutableInt> classLevelMap; + + public LevelTableModel() + { + columns = new Object[] + { + LanguageBundle.getString("in_level"), //$NON-NLS-1$ + LanguageBundle.getString("in_classString"), //$NON-NLS-1$ + LanguageBundle.getString("in_luGainedHp"), //$NON-NLS-1$ + LanguageBundle.getString("in_luRolledHp"), //$NON-NLS-1$ + LanguageBundle.getString("in_luSkillPoints") //$NON-NLS-1$ + }; + + data = new Object[numLevels + 1][5]; + classLevelMap = new HashMap<ClassFacade, MutableInt>(); + int gainedTotal = 0; + int rolledTotal = 0; + int pointTotal = 0; + for (int i = oldLevel; i < numLevels+oldLevel; i++) + { + CharacterLevelFacade level = levels.getElementAt(i); + Object[] dataRow = data[i - oldLevel]; + dataRow[COL_LEVEL] = i + 1; + ClassFacade classFacade = levels.getClassTaken(level); + dataRow[COL_CLASS] = classFacade; + if (!classLevelMap.containsKey(classFacade)) + { + classLevelMap.put(classFacade, new MutableInt(0)); + } + classLevelMap.get(classFacade).increment(); + gainedTotal += (Integer) (dataRow[COL_GAINED_HP] = levels.getHPGained(level)); + rolledTotal += (Integer) (dataRow[COL_ROLLED_HP] = levels.getHPRolled(level)); + pointTotal += (Integer) (dataRow[COL_SKILL_POINTS] = levels.getGainedSkillPoints(level)); + } + data[numLevels][COL_LEVEL] = LanguageBundle.getString("in_sumTotal"); //$NON-NLS-1$ + StringBuilder builder = new StringBuilder(); + Iterator<ClassFacade> classes = classLevelMap.keySet().iterator(); + while (classes.hasNext()) + { + ClassFacade c = classes.next(); + builder.append(c.getAbbrev()).append(' '); + builder.append('(').append(classLevelMap.get(c)).append(')'); + if (classes.hasNext()) + { + builder.append(", "); //$NON-NLS-1$ + } + } + data[numLevels][COL_CLASS] = builder; + data[numLevels][COL_GAINED_HP] = gainedTotal; + data[numLevels][COL_ROLLED_HP] = rolledTotal; + data[numLevels][COL_SKILL_POINTS] = pointTotal; + + levels.addHitPointListener(this); + } + + @Override + public int getRowCount() + { + return numLevels+1; + } + + @Override + public int getColumnCount() + { + return columns.length; + } + + @Override + public boolean isCellEditable(int rowIndex, int columnIndex) + { + switch (columnIndex) + { + case COL_ROLLED_HP: + return rowIndex < numLevels; + default: + return false; + } + } + + @Override + public Class<?> getColumnClass(int columnIndex) + { + switch (columnIndex) + { + case COL_GAINED_HP: + case COL_ROLLED_HP: + case COL_SKILL_POINTS: + return Integer.class; + default: + return Object.class; + } + } + + @Override + public String getColumnName(int column) + { + return columns[column].toString(); + } + + @Override + public Object getValueAt(int rowIndex, int columnIndex) + { + return data[rowIndex][columnIndex]; + } + + @Override + public void setValueAt(Object aValue, int rowIndex, int columnIndex) + { + CharacterLevelFacade level = levels.getElementAt(rowIndex+oldLevel); + levels.setHPRolled(level, (Integer) aValue); + } + + @Override + public void hitPointsChanged(CharacterLevelEvent e) + { + int gainedTotal = 0; + int rolledTotal = 0; + for (int i = oldLevel; i < numLevels+oldLevel; i++) + { + CharacterLevelFacade level = levels.getElementAt(i); + Object[] dataRow = data[i - oldLevel]; + gainedTotal += (Integer) (dataRow[COL_GAINED_HP] = levels.getHPGained(level)); + rolledTotal += (Integer) (dataRow[COL_ROLLED_HP] = levels.getHPRolled(level)); + } + data[numLevels][COL_GAINED_HP] = gainedTotal; + data[numLevels][COL_ROLLED_HP] = rolledTotal; + fireTableRowsUpdated(0, data.length); + } + + } + +} Property changes on: Trunk/pcgen/code/src/java/pcgen/gui2/dialog/PostLevelUpDialog.java ___________________________________________________________________ Added: svn:keywords + Date Author Revision Id Added: svn:eol-style + native This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <jde...@us...> - 2012-09-12 12:10:51
|
Revision: 17246 http://pcgen.svn.sourceforge.net/pcgen/?rev=17246&view=rev Author: jdempsey Date: 2012-09-12 12:10:45 +0000 (Wed, 12 Sep 2012) Log Message: ----------- Fix bug: Additional description fields not saved * Fields were saved but not restored on load. * Make field display immediate after new field added. Issue#: CODE-1577 Modified Paths: -------------- Trunk/pcgen/code/src/java/pcgen/gui2/facade/DescriptionFacadeImpl.java Trunk/pcgen/code/src/java/pcgen/gui2/tabs/bio/BiographyInfoPane.java Modified: Trunk/pcgen/code/src/java/pcgen/gui2/facade/DescriptionFacadeImpl.java =================================================================== --- Trunk/pcgen/code/src/java/pcgen/gui2/facade/DescriptionFacadeImpl.java 2012-09-12 10:47:34 UTC (rev 17245) +++ Trunk/pcgen/code/src/java/pcgen/gui2/facade/DescriptionFacadeImpl.java 2012-09-12 12:10:45 UTC (rev 17246) @@ -115,18 +115,18 @@ notes.addElement(item); } - birthday = new DefaultReferenceFacade<String>(); - location = new DefaultReferenceFacade<String>(); - city = new DefaultReferenceFacade<String>(); - region = new DefaultReferenceFacade<String>(); - birthplace = new DefaultReferenceFacade<String>(); - personalityTrait1 = new DefaultReferenceFacade<String>(); - personalityTrait2 = new DefaultReferenceFacade<String>(); - phobias = new DefaultReferenceFacade<String>(); - interests = new DefaultReferenceFacade<String>(); - catchPhrase = new DefaultReferenceFacade<String>(); - hairStyle = new DefaultReferenceFacade<String>(); - speechPattern = new DefaultReferenceFacade<String>(); + birthday = new DefaultReferenceFacade<String>(theCharacter.getSafeStringFor(StringKey.BIRTHDAY)); + location = new DefaultReferenceFacade<String>(theCharacter.getSafeStringFor(StringKey.LOCATION)); + city = new DefaultReferenceFacade<String>(theCharacter.getResidence()); + region = new DefaultReferenceFacade<String>(theCharacter.getRegionString()); + birthplace = new DefaultReferenceFacade<String>(theCharacter.getBirthplace()); + personalityTrait1 = new DefaultReferenceFacade<String>(theCharacter.getSafeStringFor(StringKey.TRAIT1)); + personalityTrait2 = new DefaultReferenceFacade<String>(theCharacter.getSafeStringFor(StringKey.TRAIT2)); + phobias = new DefaultReferenceFacade<String>(theCharacter.getSafeStringFor(StringKey.PHOBIAS)); + interests = new DefaultReferenceFacade<String>(theCharacter.getSafeStringFor(StringKey.INTERESTS)); + catchPhrase = new DefaultReferenceFacade<String>(theCharacter.getSafeStringFor(StringKey.CATCH_PHRASE)); + hairStyle = new DefaultReferenceFacade<String>(theCharacter.getSafeStringFor(StringKey.HAIR_STYLE)); + speechPattern = new DefaultReferenceFacade<String>(theCharacter.getSafeStringFor(StringKey.SPEECH_TENDENCY)); customBiographyFields = new DefaultListFacade<BiographyField>(); addCharacterCustomFields(); } Modified: Trunk/pcgen/code/src/java/pcgen/gui2/tabs/bio/BiographyInfoPane.java =================================================================== --- Trunk/pcgen/code/src/java/pcgen/gui2/tabs/bio/BiographyInfoPane.java 2012-09-12 10:47:34 UTC (rev 17245) +++ Trunk/pcgen/code/src/java/pcgen/gui2/tabs/bio/BiographyInfoPane.java 2012-09-12 12:10:45 UTC (rev 17246) @@ -274,7 +274,7 @@ customFieldMap.put(field, bioItem); bioItem.addComponents(itemsPanel); bioItem.install(detailsPane); - detailsPane.invalidate(); + detailsPane.validate(); detailsScroll.setPreferredSize(itemsPanel.getPreferredSize()); detailsScroll.repaint(); } This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <jde...@us...> - 2012-09-15 00:51:07
|
Revision: 17270 http://pcgen.svn.sourceforge.net/pcgen/?rev=17270&view=rev Author: jdempsey Date: 2012-09-15 00:51:00 +0000 (Sat, 15 Sep 2012) Log Message: ----------- Fix bug: UI - Create Monster Window not sized properly Issue#: CODE-1611 Modified Paths: -------------- Trunk/pcgen/code/src/java/pcgen/gui2/PCGenActionMap.java Trunk/pcgen/code/src/java/pcgen/gui2/PCGenFrame.java Trunk/pcgen/code/src/java/pcgen/gui2/dialog/AboutDialog.java Trunk/pcgen/code/src/java/pcgen/gui2/dialog/CharacterHPDialog.java Trunk/pcgen/code/src/java/pcgen/gui2/dialog/DIWarningDialog.java Trunk/pcgen/code/src/java/pcgen/gui2/dialog/ExportDialog.java Trunk/pcgen/code/src/java/pcgen/gui2/dialog/KitSelectionDialog.java Trunk/pcgen/code/src/java/pcgen/gui2/dialog/PostLevelUpDialog.java Trunk/pcgen/code/src/java/pcgen/gui2/dialog/PreferencesDialog.java Trunk/pcgen/code/src/java/pcgen/gui2/dialog/PrintPreviewDialog.java Trunk/pcgen/code/src/java/pcgen/gui2/dialog/RandomNameDialog.java Trunk/pcgen/code/src/java/pcgen/gui2/prefs/NewPurchaseMethodDialog.java Trunk/pcgen/code/src/java/pcgen/gui2/tabs/CompanionInfoTab.java Trunk/pcgen/code/src/java/pcgen/gui2/tabs/SummaryInfoTab.java Trunk/pcgen/code/src/java/pcgen/gui2/tabs/summary/LanguageTableModel.java Trunk/pcgen/code/src/java/pcgen/gui2/tools/Utility.java Modified: Trunk/pcgen/code/src/java/pcgen/gui2/PCGenActionMap.java =================================================================== --- Trunk/pcgen/code/src/java/pcgen/gui2/PCGenActionMap.java 2012-09-14 18:49:32 UTC (rev 17269) +++ Trunk/pcgen/code/src/java/pcgen/gui2/PCGenActionMap.java 2012-09-15 00:51:00 UTC (rev 17270) @@ -331,7 +331,7 @@ KitSelectionDialog kitDialog = new KitSelectionDialog(frame, frame .getSelectedCharacterRef().getReference()); - kitDialog.setLocationRelativeTo(frame); + Utility.setDialogRelativeLocation(frame, kitDialog); kitDialog.setVisible(true); } @@ -424,7 +424,7 @@ { dialog = new DebugDialog(frame); } - dialog.setLocationRelativeTo(frame); + Utility.setDialogRelativeLocation(frame, dialog); dialog.setVisible(true); } @@ -447,7 +447,7 @@ { dialog = new ConsoleDialog(frame); } - dialog.setLocationRelativeTo(frame); + Utility.setDialogRelativeLocation(frame, dialog); dialog.setVisible(true); } Modified: Trunk/pcgen/code/src/java/pcgen/gui2/PCGenFrame.java =================================================================== --- Trunk/pcgen/code/src/java/pcgen/gui2/PCGenFrame.java 2012-09-14 18:49:32 UTC (rev 17269) +++ Trunk/pcgen/code/src/java/pcgen/gui2/PCGenFrame.java 2012-09-15 00:51:00 UTC (rev 17270) @@ -1270,7 +1270,7 @@ public void showTipsOfTheDay() { TipOfTheDay tips = new TipOfTheDay(this); - tips.setLocationRelativeTo(this); + Utility.setDialogRelativeLocation(this, tips); tips.setVisible(true); } @@ -1283,7 +1283,7 @@ { sourceSelectionDialog = new SourceSelectionDialog(this); } - sourceSelectionDialog.setLocationRelativeTo(this); + Utility.setDialogRelativeLocation(this, sourceSelectionDialog); sourceSelectionDialog.setVisible(true); } @@ -1441,7 +1441,7 @@ public boolean showGeneralChooser(ChooserFacade chooserFacade) { ChooserDialog dialog = new ChooserDialog(this, chooserFacade); - dialog.setLocationRelativeTo(this); + Utility.setDialogRelativeLocation(this, dialog); dialog.setVisible(true); return dialog.isCommitted(); } @@ -1604,6 +1604,7 @@ aFrame.getContentPane().add(jPanel, BorderLayout.SOUTH); aFrame.setSize(new Dimension(700, 500)); aFrame.setLocationRelativeTo(this); + Utility.setDialogRelativeLocation(this, aFrame); aFrame.getRootPane().setDefaultButton(jClose); Utility.installEscapeCloseOperation(aFrame); aFrame.setVisible(true); @@ -1670,7 +1671,7 @@ aFrame.getContentPane().add(jPanel3, BorderLayout.SOUTH); aFrame.setSize(new Dimension(456, 176)); - aFrame.setLocationRelativeTo(this); + Utility.setDialogRelativeLocation(this, aFrame); aFrame.setVisible(true); } @@ -1756,7 +1757,7 @@ aFrame.getContentPane().add(htmlPanel, BorderLayout.CENTER); aFrame.getContentPane().add(jPanel, BorderLayout.SOUTH); aFrame.setSize(new Dimension(505, size)); - aFrame.setLocationRelativeTo(this); + Utility.setDialogRelativeLocation(this, aFrame); aFrame.setVisible(true); } Modified: Trunk/pcgen/code/src/java/pcgen/gui2/dialog/AboutDialog.java =================================================================== --- Trunk/pcgen/code/src/java/pcgen/gui2/dialog/AboutDialog.java 2012-09-14 18:49:32 UTC (rev 17269) +++ Trunk/pcgen/code/src/java/pcgen/gui2/dialog/AboutDialog.java 2012-09-15 00:51:00 UTC (rev 17270) @@ -79,7 +79,7 @@ getContentPane().add(new MainAbout(), BorderLayout.CENTER); pack(); setDefaultCloseOperation(WindowConstants.DISPOSE_ON_CLOSE); - setLocationRelativeTo(frame); + Utility.setDialogRelativeLocation(frame, this); Utility.installEscapeCloseOperation(this); } Modified: Trunk/pcgen/code/src/java/pcgen/gui2/dialog/CharacterHPDialog.java =================================================================== --- Trunk/pcgen/code/src/java/pcgen/gui2/dialog/CharacterHPDialog.java 2012-09-14 18:49:32 UTC (rev 17269) +++ Trunk/pcgen/code/src/java/pcgen/gui2/dialog/CharacterHPDialog.java 2012-09-15 00:51:00 UTC (rev 17270) @@ -82,7 +82,7 @@ { Frame frame = JOptionPane.getFrameForComponent(parent); CharacterHPDialog dialog = new CharacterHPDialog(frame, character); - dialog.setLocationRelativeTo(frame); + Utility.setDialogRelativeLocation(frame, dialog); dialog.setVisible(true); } Modified: Trunk/pcgen/code/src/java/pcgen/gui2/dialog/DIWarningDialog.java =================================================================== --- Trunk/pcgen/code/src/java/pcgen/gui2/dialog/DIWarningDialog.java 2012-09-14 18:49:32 UTC (rev 17269) +++ Trunk/pcgen/code/src/java/pcgen/gui2/dialog/DIWarningDialog.java 2012-09-15 00:51:00 UTC (rev 17270) @@ -38,7 +38,7 @@ import javax.swing.JScrollPane; import javax.swing.JTextArea; -import pcgen.gui.utils.Utility; +import pcgen.gui2.tools.Utility; import pcgen.system.LanguageBundle; /** @@ -82,7 +82,7 @@ this.introText = introText; initComponents(); - setLocationRelativeTo(parent); + Utility.setDialogRelativeLocation(parent, this); } /** Modified: Trunk/pcgen/code/src/java/pcgen/gui2/dialog/ExportDialog.java =================================================================== --- Trunk/pcgen/code/src/java/pcgen/gui2/dialog/ExportDialog.java 2012-09-14 18:49:32 UTC (rev 17269) +++ Trunk/pcgen/code/src/java/pcgen/gui2/dialog/ExportDialog.java 2012-09-15 00:51:00 UTC (rev 17270) @@ -100,7 +100,7 @@ public static void showExportDialog(PCGenFrame parent) { ExportDialog dialog = new ExportDialog(parent); - dialog.setLocationRelativeTo(parent); + Utility.setDialogRelativeLocation(parent, dialog); dialog.setVisible(true); } Modified: Trunk/pcgen/code/src/java/pcgen/gui2/dialog/KitSelectionDialog.java =================================================================== --- Trunk/pcgen/code/src/java/pcgen/gui2/dialog/KitSelectionDialog.java 2012-09-14 18:49:32 UTC (rev 17269) +++ Trunk/pcgen/code/src/java/pcgen/gui2/dialog/KitSelectionDialog.java 2012-09-15 00:51:00 UTC (rev 17270) @@ -70,6 +70,7 @@ setTitle(LanguageBundle.getString("in_mnuSourcesLoadSelect")); //$NON-NLS-1$ this.buttonPanel = new JPanel(); this.closeButton = new JButton(LanguageBundle.getString("in_close")); //$NON-NLS-1$ + this.closeButton.setMnemonic(LanguageBundle.getMnemonic("in_mn_close")); //$NON-NLS-1$ this.kitPanel = new KitPanel(character); setDefaultCloseOperation(JDialog.HIDE_ON_CLOSE); initComponents(); Modified: Trunk/pcgen/code/src/java/pcgen/gui2/dialog/PostLevelUpDialog.java =================================================================== --- Trunk/pcgen/code/src/java/pcgen/gui2/dialog/PostLevelUpDialog.java 2012-09-14 18:49:32 UTC (rev 17269) +++ Trunk/pcgen/code/src/java/pcgen/gui2/dialog/PostLevelUpDialog.java 2012-09-15 00:51:00 UTC (rev 17270) @@ -113,7 +113,7 @@ Frame frame = JOptionPane.getFrameForComponent(parent); PostLevelUpDialog dialog = new PostLevelUpDialog(frame, character, oldLevel); - dialog.setLocationRelativeTo(frame); + Utility.setDialogRelativeLocation(frame, dialog); dialog.setVisible(true); } Modified: Trunk/pcgen/code/src/java/pcgen/gui2/dialog/PreferencesDialog.java =================================================================== --- Trunk/pcgen/code/src/java/pcgen/gui2/dialog/PreferencesDialog.java 2012-09-14 18:49:32 UTC (rev 17269) +++ Trunk/pcgen/code/src/java/pcgen/gui2/dialog/PreferencesDialog.java 2012-09-15 00:51:00 UTC (rev 17270) @@ -154,7 +154,7 @@ settingsTree.setSelectionRow(1); pack(); - setLocationRelativeTo(getParent()); + Utility.setDialogRelativeLocation(getParent(), this); } public static void show(JFrame frame) Modified: Trunk/pcgen/code/src/java/pcgen/gui2/dialog/PrintPreviewDialog.java =================================================================== --- Trunk/pcgen/code/src/java/pcgen/gui2/dialog/PrintPreviewDialog.java 2012-09-14 18:49:32 UTC (rev 17269) +++ Trunk/pcgen/code/src/java/pcgen/gui2/dialog/PrintPreviewDialog.java 2012-09-15 00:51:00 UTC (rev 17270) @@ -96,7 +96,7 @@ public static void showPrintPreviewDialog(PCGenFrame frame) { JDialog dialog = new PrintPreviewDialog(frame); - dialog.setLocationRelativeTo(frame); + Utility.setDialogRelativeLocation(frame, dialog); dialog.setVisible(true); } Modified: Trunk/pcgen/code/src/java/pcgen/gui2/dialog/RandomNameDialog.java =================================================================== --- Trunk/pcgen/code/src/java/pcgen/gui2/dialog/RandomNameDialog.java 2012-09-14 18:49:32 UTC (rev 17269) +++ Trunk/pcgen/code/src/java/pcgen/gui2/dialog/RandomNameDialog.java 2012-09-15 00:51:00 UTC (rev 17270) @@ -71,7 +71,7 @@ initUserInterface(); pack(); setDefaultCloseOperation(WindowConstants.HIDE_ON_CLOSE); - setLocationRelativeTo(frame); + Utility.setDialogRelativeLocation(frame, this); cancelled = false; Utility.installEscapeCloseOperation(this); Modified: Trunk/pcgen/code/src/java/pcgen/gui2/prefs/NewPurchaseMethodDialog.java =================================================================== --- Trunk/pcgen/code/src/java/pcgen/gui2/prefs/NewPurchaseMethodDialog.java 2012-09-14 18:49:32 UTC (rev 17269) +++ Trunk/pcgen/code/src/java/pcgen/gui2/prefs/NewPurchaseMethodDialog.java 2012-09-15 00:51:00 UTC (rev 17270) @@ -26,6 +26,7 @@ import pcgen.cdom.base.Constants; import pcgen.core.utils.MessageType; import pcgen.core.utils.ShowMessageDelegate; +import pcgen.gui2.tools.Utility; import javax.swing.*; import java.awt.*; @@ -60,7 +61,7 @@ { super(parent, modal); initComponents(); - setLocationRelativeTo(parent); // centre on parent + Utility.setDialogRelativeLocation(parent, this); } /** Creates new form JDialog @@ -71,7 +72,7 @@ { super(parent, modal); initComponents(); - setLocationRelativeTo(parent); // centre on parent + Utility.setDialogRelativeLocation(parent, this); } public String getEnteredName() Modified: Trunk/pcgen/code/src/java/pcgen/gui2/tabs/CompanionInfoTab.java =================================================================== --- Trunk/pcgen/code/src/java/pcgen/gui2/tabs/CompanionInfoTab.java 2012-09-14 18:49:32 UTC (rev 17269) +++ Trunk/pcgen/code/src/java/pcgen/gui2/tabs/CompanionInfoTab.java 2012-09-15 00:51:00 UTC (rev 17270) @@ -528,7 +528,7 @@ String type = (String) selectedElement; companionDialog.setCharacter(character); companionDialog.setCompanionType(type); - companionDialog.setLocationRelativeTo(CompanionInfoTab.this); + Utility.setDialogRelativeLocation(CompanionInfoTab.this, companionDialog); companionDialog.setVisible(true); } cancelCellEditing(); Modified: Trunk/pcgen/code/src/java/pcgen/gui2/tabs/SummaryInfoTab.java =================================================================== --- Trunk/pcgen/code/src/java/pcgen/gui2/tabs/SummaryInfoTab.java 2012-09-14 18:49:32 UTC (rev 17269) +++ Trunk/pcgen/code/src/java/pcgen/gui2/tabs/SummaryInfoTab.java 2012-09-15 00:51:00 UTC (rev 17270) @@ -105,6 +105,7 @@ import pcgen.gui2.tabs.summary.LanguageTableModel; import pcgen.gui2.tabs.summary.StatTableModel; import pcgen.gui2.tools.Icons; +import pcgen.gui2.tools.Utility; import pcgen.gui2.util.FacadeComboBoxModel; import pcgen.gui2.util.SignIcon; import pcgen.gui2.util.SignIcon.Sign; @@ -1346,7 +1347,7 @@ CharacterStatsPanel charStatsPanel = new CharacterStatsPanel(null); SinglePrefDialog prefsDialog = new SinglePrefDialog(parent, charStatsPanel); charStatsPanel.setParent(prefsDialog); - prefsDialog.setLocationRelativeTo(parent); + Utility.setDialogRelativeLocation(parent, prefsDialog); prefsDialog.setVisible(true); character.refreshRollMethod(); } @@ -1372,7 +1373,7 @@ { KitSelectionDialog kitDialog = new KitSelectionDialog(frame, character); - kitDialog.setLocationRelativeTo(frame); + Utility.setDialogRelativeLocation(frame, kitDialog); kitDialog.setVisible(true); } Modified: Trunk/pcgen/code/src/java/pcgen/gui2/tabs/summary/LanguageTableModel.java =================================================================== --- Trunk/pcgen/code/src/java/pcgen/gui2/tabs/summary/LanguageTableModel.java 2012-09-14 18:49:32 UTC (rev 17269) +++ Trunk/pcgen/code/src/java/pcgen/gui2/tabs/summary/LanguageTableModel.java 2012-09-15 00:51:00 UTC (rev 17270) @@ -49,6 +49,7 @@ import pcgen.gui2.UIPropertyContext; import pcgen.gui2.dialog.LanguageChooserDialog; import pcgen.gui2.tabs.Utilities; +import pcgen.gui2.tools.Utility; import pcgen.gui2.util.SignIcon.Sign; import pcgen.gui2.util.table.TableCellUtilities; import pcgen.system.LanguageBundle; @@ -263,7 +264,7 @@ LanguageChooserFacade chooser = choosers.getElementAt( table.getEditingRow() - languages.getSize()); LanguageChooserDialog dialog = new LanguageChooserDialog(frame, chooser); - dialog.setLocationRelativeTo(frame); + Utility.setDialogRelativeLocation(frame, dialog); dialog.setVisible(true); } else Modified: Trunk/pcgen/code/src/java/pcgen/gui2/tools/Utility.java =================================================================== --- Trunk/pcgen/code/src/java/pcgen/gui2/tools/Utility.java 2012-09-14 18:49:32 UTC (rev 17269) +++ Trunk/pcgen/code/src/java/pcgen/gui2/tools/Utility.java 2012-09-15 00:51:00 UTC (rev 17270) @@ -26,6 +26,7 @@ import java.awt.Dimension; import java.awt.GraphicsEnvironment; import java.awt.GridBagConstraints; +import java.awt.Point; import java.awt.Rectangle; import java.awt.Toolkit; import java.awt.event.ActionEvent; @@ -188,7 +189,10 @@ */ public static void resizeDialogToScreen(JDialog dialog) { - Rectangle screenBounds = dialog.getGraphicsConfiguration().getBounds(); + // Get the maximum window size to account for taskbars etc + Rectangle screenBounds = + GraphicsEnvironment.getLocalGraphicsEnvironment() + .getMaximumWindowBounds(); final Dimension dialogSize = dialog.getSize(); @@ -203,8 +207,58 @@ } dialog.setSize(dialogSize); } - + /** + * Centres the dialog over the component ensuring that the dialog will be + * within the usable area of the screen (i.e. excluding native task bars, + * menus bars etc). + * + * @param parent The component over which the dialog should be centred. + * @param dialog The dialog to be positioned. + */ + public static void setDialogRelativeLocation(Component parent, JDialog dialog) + { + // First make sure it is not too big + Utility.resizeDialogToScreen(dialog); + + // Get the maximum window size to account for taskbars etc + Rectangle screenBounds = + GraphicsEnvironment.getLocalGraphicsEnvironment() + .getMaximumWindowBounds(); + Point centreOfParent = + new Point(parent.getX() + (parent.getWidth() / 2), + parent.getY() + (parent.getHeight() / 2)); + // Default to centre of parent + Point location = + new Point(centreOfParent.x - (dialog.getWidth() / 2), + centreOfParent.y - (dialog.getHeight() / 2)); + // Adjust so it fits on the screen + if (location.x + dialog.getWidth() > screenBounds.width + + screenBounds.x) + { + location.x -= + (location.x + dialog.getWidth()) + - (screenBounds.width + screenBounds.x); + } + if (location.x < screenBounds.x) + { + location.x = screenBounds.x; + } + if (location.y + dialog.getHeight() > screenBounds.height + + screenBounds.y) + { + location.y -= + (location.y + dialog.getHeight()) + - (screenBounds.height + screenBounds.y); + } + if (location.y < screenBounds.y) + { + location.y = screenBounds.y; + } + dialog.setLocation(location); + } + + /** * Centers a <code>JFrame</code> to the screen. * * @param frame JFrame frame to center This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <jde...@us...> - 2012-09-15 12:01:26
|
Revision: 17279 http://pcgen.svn.sourceforge.net/pcgen/?rev=17279&view=rev Author: jdempsey Date: 2012-09-15 12:01:20 +0000 (Sat, 15 Sep 2012) Log Message: ----------- Fix bug: Equipping Tab - Equipping gear deselects container/location Issue#: CODE-1603 Modified Paths: -------------- Trunk/pcgen/code/src/java/pcgen/gui2/tabs/equip/EquipmentModel.java Trunk/pcgen/code/src/java/pcgen/gui2/tabs/equip/EquipmentModels.java Trunk/pcgen/code/src/java/pcgen/gui2/tabs/equip/EquipmentTableModel.java Trunk/pcgen/code/src/java/pcgen/gui2/util/JTreeTable.java Modified: Trunk/pcgen/code/src/java/pcgen/gui2/tabs/equip/EquipmentModel.java =================================================================== --- Trunk/pcgen/code/src/java/pcgen/gui2/tabs/equip/EquipmentModel.java 2012-09-15 09:42:27 UTC (rev 17278) +++ Trunk/pcgen/code/src/java/pcgen/gui2/tabs/equip/EquipmentModel.java 2012-09-15 12:01:20 UTC (rev 17279) @@ -55,8 +55,15 @@ import pcgen.gui2.util.JTreeTable; /** + * The parent model for the selected panel. Maps the various equipment sets for + * a character. * + * <br/> + * Last Editor: $Author: $ + * Last Edited: $Date: $ + * * @author Connor Petty <cpm...@us...> + * @version $Revision: $ */ public class EquipmentModel implements ListListener<EquipmentSetFacade>, ReferenceListener<EquipmentSetFacade>, TableModelListener Modified: Trunk/pcgen/code/src/java/pcgen/gui2/tabs/equip/EquipmentModels.java =================================================================== --- Trunk/pcgen/code/src/java/pcgen/gui2/tabs/equip/EquipmentModels.java 2012-09-15 09:42:27 UTC (rev 17278) +++ Trunk/pcgen/code/src/java/pcgen/gui2/tabs/equip/EquipmentModels.java 2012-09-15 12:01:20 UTC (rev 17279) @@ -26,6 +26,7 @@ import java.awt.event.ActionListener; import java.util.ArrayList; import java.util.List; + import javax.swing.AbstractAction; import javax.swing.AbstractCellEditor; import javax.swing.JButton; @@ -42,9 +43,9 @@ import javax.swing.table.DefaultTableModel; import javax.swing.table.JTableHeader; import javax.swing.table.TableCellEditor; + import pcgen.base.util.HashMapToList; import pcgen.base.util.MapToList; -import pcgen.cdom.base.Constants; import pcgen.core.facade.CharacterFacade; import pcgen.core.facade.EquipmentFacade; import pcgen.core.facade.EquipmentListFacade; @@ -63,8 +64,16 @@ import pcgen.system.LanguageBundle; /** + * The container for equipping data for a character. It holds references to the + * models for both the left and right tables of gear. It also contains the + * processing to manage equipping and unequipping actions. * + * <br/> + * Last Editor: $Author: $ + * Last Edited: $Date: $ + * * @author Connor Petty <cpm...@us...> + * @version $Revision: $ */ public class EquipmentModels { Modified: Trunk/pcgen/code/src/java/pcgen/gui2/tabs/equip/EquipmentTableModel.java =================================================================== --- Trunk/pcgen/code/src/java/pcgen/gui2/tabs/equip/EquipmentTableModel.java 2012-09-15 09:42:27 UTC (rev 17278) +++ Trunk/pcgen/code/src/java/pcgen/gui2/tabs/equip/EquipmentTableModel.java 2012-09-15 12:01:20 UTC (rev 17279) @@ -29,6 +29,18 @@ import pcgen.core.facade.event.ListEvent; import pcgen.gui2.filter.FilteredListFacadeTableModel; +/** + * The model for the Equip View table. It shows a flat list of the equipment which + * is either equipped, unequipped or of all gear owned. Each instance relates to + * one type of view. + * + * <br/> + * Last Editor: $Author: $ + * Last Edited: $Date: $ + * + * @author Connor Petty <cpm...@us...> + * @version $Revision: $ + */ public class EquipmentTableModel extends FilteredListFacadeTableModel<EquipmentFacade> implements EquipmentListListener { Modified: Trunk/pcgen/code/src/java/pcgen/gui2/util/JTreeTable.java =================================================================== --- Trunk/pcgen/code/src/java/pcgen/gui2/util/JTreeTable.java 2012-09-15 09:42:27 UTC (rev 17278) +++ Trunk/pcgen/code/src/java/pcgen/gui2/util/JTreeTable.java 2012-09-15 12:01:20 UTC (rev 17279) @@ -55,6 +55,8 @@ import javax.swing.tree.DefaultTreeSelectionModel; import javax.swing.tree.TreeCellRenderer; import javax.swing.tree.TreePath; +import javax.swing.tree.TreeSelectionModel; + import pcgen.gui2.util.table.SortableTableModel; import pcgen.gui2.util.treetable.DefaultSortableTreeTableModel; import pcgen.gui2.util.treetable.SortableTreeTableModel; @@ -470,7 +472,13 @@ @Override public void run() { + TreeSelectionModel selModel = tree.getSelectionModel(); + TreePath leadSelectionPath = selModel.getLeadSelectionPath(); fireTableDataChanged(); + if (leadSelectionPath != null) + { + selModel.setSelectionPath(leadSelectionPath); + } } }); This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <jde...@us...> - 2012-09-19 11:11:09
|
Revision: 17361 http://pcgen.svn.sourceforge.net/pcgen/?rev=17361&view=rev Author: jdempsey Date: 2012-09-19 11:10:58 +0000 (Wed, 19 Sep 2012) Log Message: ----------- Fix bug: Error switching to a character with companion Issue#: CODE-1641 Modified Paths: -------------- Trunk/pcgen/code/src/java/pcgen/gui2/facade/CompanionSupportFacadeImpl.java Trunk/pcgen/code/src/java/pcgen/gui2/tabs/CompanionInfoTab.java Modified: Trunk/pcgen/code/src/java/pcgen/gui2/facade/CompanionSupportFacadeImpl.java =================================================================== --- Trunk/pcgen/code/src/java/pcgen/gui2/facade/CompanionSupportFacadeImpl.java 2012-09-19 10:40:09 UTC (rev 17360) +++ Trunk/pcgen/code/src/java/pcgen/gui2/facade/CompanionSupportFacadeImpl.java 2012-09-19 11:10:58 UTC (rev 17361) @@ -268,16 +268,7 @@ CharacterFacadeImpl compFacadeImpl = (CharacterFacadeImpl) companion; CompanionList compList = keyToCompanionListMap.get(companionType); Race compRace = (Race) compFacadeImpl.getRaceRef().getReference(); - FollowerOption followerOpt = null; - Map<FollowerOption, CDOMObject> fMap = theCharacter.getAvailableFollowers(compList.getKeyName(), null); - for (FollowerOption fOpt : fMap.keySet()) - { - if (compRace == fOpt.getRace()) - { - followerOpt = fOpt; - break; - } - } + FollowerOption followerOpt = getFollowerOpt(compList, compRace); if (followerOpt == null) { Logging.errorPrint("Unable to find follower option for companion " //$NON-NLS-1$ @@ -322,6 +313,21 @@ updateCompanionTodo(companionType); } + private FollowerOption getFollowerOpt(CompanionList compList, Race compRace) + { + FollowerOption followerOpt = null; + Map<FollowerOption, CDOMObject> fMap = theCharacter.getAvailableFollowers(compList.getKeyName(), null); + for (FollowerOption fOpt : fMap.keySet()) + { + if (compRace == fOpt.getRace()) + { + followerOpt = fOpt; + break; + } + } + return followerOpt; + } + /** * {@inheritDoc} */ @@ -365,7 +371,19 @@ if (file.equals(character.getFileRef().getReference()) && name.equals(character.getNameRef().getReference())) { + String companionType = delegate.getCompanionType(); delegate.setCompanionFacade(character); + if (character.getMaster() == null) + { + CompanionList compList = keyToCompanionListMap.get(companionType); + final Follower newMaster = + new Follower(theCharacter.getFileName(), theCharacter.getName(), compList); + FollowerOption followerOpt = + getFollowerOpt(compList, (Race) character + .getRaceRef().getReference()); + newMaster.setAdjustment(followerOpt.getAdjustment()); + ((CharacterFacadeImpl)character).getTheCharacter().setMaster(newMaster); + } return; } } Modified: Trunk/pcgen/code/src/java/pcgen/gui2/tabs/CompanionInfoTab.java =================================================================== --- Trunk/pcgen/code/src/java/pcgen/gui2/tabs/CompanionInfoTab.java 2012-09-19 10:40:09 UTC (rev 17360) +++ Trunk/pcgen/code/src/java/pcgen/gui2/tabs/CompanionInfoTab.java 2012-09-19 11:10:58 UTC (rev 17361) @@ -74,6 +74,7 @@ import pcgen.system.ConfigurationSettings; import pcgen.system.LanguageBundle; import pcgen.util.Comparators; +import pcgen.util.Logging; /** * @@ -945,6 +946,12 @@ { String type = companion.getCompanionType(); int index = Collections.binarySearch(types, type, Comparators.toStringIgnoreCaseCollator()); + if (index < 0) + { + Logging.errorPrint("Unable to add companion " + companion + + " as the type " + type + " could not be found."); + return; + } CompanionTypeNode child = (CompanionTypeNode) getChildAt(index); child.addCompanion(companion, silently); } This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <jde...@us...> - 2012-10-02 21:44:33
|
Revision: 17597 http://pcgen.svn.sourceforge.net/pcgen/?rev=17597&view=rev Author: jdempsey Date: 2012-10-02 21:44:27 +0000 (Tue, 02 Oct 2012) Log Message: ----------- Fix bug: Item search doesn't reset scroll. * Only scroll for text searching, not other filtering Issue#: CODE-1517 Modified Paths: -------------- Trunk/pcgen/code/src/java/pcgen/gui2/filter/FilterHandler.java Trunk/pcgen/code/src/java/pcgen/gui2/filter/FilteredTreeViewTable.java Trunk/pcgen/code/src/java/pcgen/gui2/filter/SearchFilterPanel.java Trunk/pcgen/code/src/java/pcgen/gui2/tabs/AbilityChooserTab.java Trunk/pcgen/code/src/java/pcgen/gui2/tabs/DomainInfoTab.java Trunk/pcgen/code/src/java/pcgen/gui2/tabs/equip/EquipmentModels.java Modified: Trunk/pcgen/code/src/java/pcgen/gui2/filter/FilterHandler.java =================================================================== --- Trunk/pcgen/code/src/java/pcgen/gui2/filter/FilterHandler.java 2012-10-02 21:23:45 UTC (rev 17596) +++ Trunk/pcgen/code/src/java/pcgen/gui2/filter/FilterHandler.java 2012-10-02 21:44:27 UTC (rev 17597) @@ -31,4 +31,8 @@ public void setSearchEnabled(boolean enable); + /** + * Scroll the table being filtered to the top row. + */ + public void scrollToTop(); } Modified: Trunk/pcgen/code/src/java/pcgen/gui2/filter/FilteredTreeViewTable.java =================================================================== --- Trunk/pcgen/code/src/java/pcgen/gui2/filter/FilteredTreeViewTable.java 2012-10-02 21:23:45 UTC (rev 17596) +++ Trunk/pcgen/code/src/java/pcgen/gui2/filter/FilteredTreeViewTable.java 2012-10-02 21:44:27 UTC (rev 17597) @@ -71,6 +71,12 @@ updateDisplay(); } + @Override + public void scrollToTop() + { + this.scrollRectToVisible(new Rectangle(getCellRect(0, 0, true))); + } + public void setContext(C context) { this.context = context; Modified: Trunk/pcgen/code/src/java/pcgen/gui2/filter/SearchFilterPanel.java =================================================================== --- Trunk/pcgen/code/src/java/pcgen/gui2/filter/SearchFilterPanel.java 2012-10-02 21:23:45 UTC (rev 17596) +++ Trunk/pcgen/code/src/java/pcgen/gui2/filter/SearchFilterPanel.java 2012-10-02 21:44:27 UTC (rev 17597) @@ -91,6 +91,7 @@ String text = searchField.getText(); filterHandler.setSearchEnabled(text != null && text.length() > 0); filterHandler.refilter(); + filterHandler.scrollToTop(); } @Override Modified: Trunk/pcgen/code/src/java/pcgen/gui2/tabs/AbilityChooserTab.java =================================================================== --- Trunk/pcgen/code/src/java/pcgen/gui2/tabs/AbilityChooserTab.java 2012-10-02 21:23:45 UTC (rev 17596) +++ Trunk/pcgen/code/src/java/pcgen/gui2/tabs/AbilityChooserTab.java 2012-10-02 21:44:27 UTC (rev 17597) @@ -796,6 +796,12 @@ } @Override + public void scrollToTop() + { + // do nothing + } + + @Override public void setSearchEnabled(boolean enable) { //do nothing as there is no search bar Modified: Trunk/pcgen/code/src/java/pcgen/gui2/tabs/DomainInfoTab.java =================================================================== --- Trunk/pcgen/code/src/java/pcgen/gui2/tabs/DomainInfoTab.java 2012-10-02 21:23:45 UTC (rev 17596) +++ Trunk/pcgen/code/src/java/pcgen/gui2/tabs/DomainInfoTab.java 2012-10-02 21:44:27 UTC (rev 17597) @@ -462,6 +462,12 @@ } @Override + public void scrollToTop() + { + // do nothing + } + + @Override public void setSearchEnabled(boolean enable) { } Modified: Trunk/pcgen/code/src/java/pcgen/gui2/tabs/equip/EquipmentModels.java =================================================================== --- Trunk/pcgen/code/src/java/pcgen/gui2/tabs/equip/EquipmentModels.java 2012-10-02 21:23:45 UTC (rev 17596) +++ Trunk/pcgen/code/src/java/pcgen/gui2/tabs/equip/EquipmentModels.java 2012-10-02 21:44:27 UTC (rev 17597) @@ -181,6 +181,12 @@ //do nothing } + @Override + public void scrollToTop() + { + // do nothing + } + } private class EquipViewHandler extends AbstractAction This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <jde...@us...> - 2012-10-06 23:33:55
|
Revision: 17657 http://pcgen.svn.sourceforge.net/pcgen/?rev=17657&view=rev Author: jdempsey Date: 2012-10-06 23:33:49 +0000 (Sat, 06 Oct 2012) Log Message: ----------- Fix bug: URLs in Source Info Pane do not work Issue#: CODE-1721 Modified Paths: -------------- Trunk/pcgen/code/src/java/pcgen/gui2/sources/AdvancedSourceSelectionPanel.java Trunk/pcgen/code/src/java/pcgen/gui2/tools/InfoPane.java Modified: Trunk/pcgen/code/src/java/pcgen/gui2/sources/AdvancedSourceSelectionPanel.java =================================================================== --- Trunk/pcgen/code/src/java/pcgen/gui2/sources/AdvancedSourceSelectionPanel.java 2012-10-06 23:07:24 UTC (rev 17656) +++ Trunk/pcgen/code/src/java/pcgen/gui2/sources/AdvancedSourceSelectionPanel.java 2012-10-06 23:33:49 UTC (rev 17657) @@ -25,6 +25,7 @@ import java.awt.Dimension; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; +import java.io.IOException; import java.util.Arrays; import java.util.Collections; import java.util.List; @@ -41,6 +42,8 @@ import javax.swing.JTree; import javax.swing.SwingConstants; import javax.swing.border.EmptyBorder; +import javax.swing.event.HyperlinkEvent; +import javax.swing.event.HyperlinkListener; import javax.swing.event.ListSelectionEvent; import javax.swing.event.ListSelectionListener; import javax.swing.tree.DefaultMutableTreeNode; @@ -48,6 +51,7 @@ import org.apache.commons.lang.StringUtils; +import pcgen.cdom.base.Constants; import pcgen.core.facade.CampaignFacade; import pcgen.core.facade.GameModeFacade; import pcgen.core.facade.SourceSelectionFacade; @@ -56,6 +60,9 @@ import pcgen.core.facade.util.DefaultListFacade; import pcgen.core.facade.util.ListFacade; import pcgen.core.facade.util.ListFacades; +import pcgen.core.utils.MessageType; +import pcgen.core.utils.ShowMessageDelegate; +import pcgen.gui.utils.BrowserLauncher; import pcgen.gui2.PCGenFrame; import pcgen.gui2.UIPropertyContext; import pcgen.gui2.filter.FilterBar; @@ -75,6 +82,7 @@ import pcgen.gui2.util.treeview.TreeViewPath; import pcgen.system.FacadeFactory; import pcgen.system.LanguageBundle; +import pcgen.util.Logging; /** * @@ -194,6 +202,7 @@ topPane.setRightComponent(selPanel); mainPane.setTopComponent(topPane); + new SourceLinkAction().install(); infoPane.setPreferredSize(new Dimension(800, 150)); mainPane.setBottomComponent(infoPane); mainPane.setResizeWeight(0.7); @@ -698,5 +707,59 @@ } } + + /** + * The Class <code>SourceLinkAction</code> acts on the user clicking on hyperlinks + * in the source info pane. + */ + private class SourceLinkAction + implements HyperlinkListener + { + + /** + * Create a new instance. + */ + public SourceLinkAction() + { + } + + /** + * Attach the handler to the on-screen field. + */ + public void install() + { + infoPane.addHyperlinkListener(this); + } + + /** + * Detach the handler from the on-screen field. + */ + public void uninstall() + { + infoPane.removeHyperlinkListener(this); + } + + @Override + public void hyperlinkUpdate(HyperlinkEvent e) + { + if (e.getEventType() == HyperlinkEvent.EventType.ACTIVATED) + { + try + { + BrowserLauncher.openURL(e.getURL()); + } + catch (IOException e1) + { + Logging.errorPrint("Failed to open URL " //$NON-NLS-1$ + + e.getURL() + " due to ", e1); //$NON-NLS-1$ + ShowMessageDelegate.showMessageDialog(LanguageBundle + .getFormattedString("in_Src_browser", e //$NON-NLS-1$ + .getURL().toString()), Constants.APPLICATION_NAME, + MessageType.ERROR); + } + } + } + + } } Modified: Trunk/pcgen/code/src/java/pcgen/gui2/tools/InfoPane.java =================================================================== --- Trunk/pcgen/code/src/java/pcgen/gui2/tools/InfoPane.java 2012-10-06 23:07:24 UTC (rev 17656) +++ Trunk/pcgen/code/src/java/pcgen/gui2/tools/InfoPane.java 2012-10-06 23:33:49 UTC (rev 17657) @@ -28,6 +28,7 @@ import javax.swing.JTextPane; import javax.swing.ScrollPaneConstants; import javax.swing.border.TitledBorder; +import javax.swing.event.HyperlinkListener; import javax.swing.text.BadLocationException; import javax.swing.text.Document; import javax.swing.text.EditorKit; @@ -107,4 +108,24 @@ textPane.setDocument(newDoc); } + /** + * Adds a hyperlink listener for notification of any changes, for example when a + * link is selected and entered. + * + * @param linkListener The listener. + */ + public void addHyperlinkListener(HyperlinkListener linkListener) + { + textPane.addHyperlinkListener(linkListener); + } + + /** + * Removes a hyperlink listener. + * @param linkListener The listener. + */ + public void removeHyperlinkListener(HyperlinkListener linkListener) + { + textPane.removeHyperlinkListener(linkListener); + } + } This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <jde...@us...> - 2012-10-07 12:33:37
|
Revision: 17663 http://pcgen.svn.sourceforge.net/pcgen/?rev=17663&view=rev Author: jdempsey Date: 2012-10-07 12:33:30 +0000 (Sun, 07 Oct 2012) Log Message: ----------- Fix bug: Language Box fails to refresh when Languages added via Skill (By increasing skill ranks and using the chooser there). Issue#: CODE-1391 Modified Paths: -------------- Trunk/pcgen/code/src/java/pcgen/gui2/facade/CharacterFacadeImpl.java Trunk/pcgen/code/src/java/pcgen/gui2/util/treetable/AbstractTreeTableModel.java Modified: Trunk/pcgen/code/src/java/pcgen/gui2/facade/CharacterFacadeImpl.java =================================================================== --- Trunk/pcgen/code/src/java/pcgen/gui2/facade/CharacterFacadeImpl.java 2012-10-07 12:00:52 UTC (rev 17662) +++ Trunk/pcgen/code/src/java/pcgen/gui2/facade/CharacterFacadeImpl.java 2012-10-07 12:33:30 UTC (rev 17663) @@ -63,6 +63,10 @@ import pcgen.cdom.enumeration.SkillCost; import pcgen.cdom.enumeration.StringKey; import pcgen.cdom.enumeration.Type; +import pcgen.cdom.facet.DataFacetChangeEvent; +import pcgen.cdom.facet.DataFacetChangeListener; +import pcgen.cdom.facet.FacetLibrary; +import pcgen.cdom.facet.LanguageFacet; import pcgen.cdom.helper.ClassSource; import pcgen.cdom.inst.PCClassLevel; import pcgen.cdom.reference.CDOMDirectSingleRef; @@ -264,6 +268,7 @@ private int lastExportCharSerial = 0; private PlayerCharacter lastExportChar = null; + private LanguageListener langListener; /** * Create a new character facade for an existing character. @@ -287,6 +292,7 @@ */ public void closeCharacter() { + FacetLibrary.getFacet(LanguageFacet.class).removeDataFacetChangeListener(langListener); characterAbilities.closeCharacter(); charLevelsFacade.closeCharacter(); GMBus.send(new PCClosedMessage(null, theCharacter)); @@ -413,6 +419,8 @@ numBonusLang = new DefaultReferenceFacade<Integer>(0); numSkillLang = new DefaultReferenceFacade<Integer>(0); refreshLanguageList(); + langListener = new LanguageListener(); + FacetLibrary.getFacet(LanguageFacet.class).addDataFacetChangeListener(langListener); purchasedEquip.addListListener(spellSupportFacade); purchasedEquip.addEquipmentListListener(spellSupportFacade); @@ -571,7 +579,6 @@ public void addAbility(AbilityCategoryFacade category, AbilityFacade ability) { characterAbilities.addAbility(category, ability); - refreshLanguageList(); refreshKitList(); refreshTemplates(); refreshAvailableTempBonuses(); @@ -587,7 +594,6 @@ public void removeAbility(AbilityCategoryFacade category, AbilityFacade ability) { characterAbilities.removeAbility(category, ability); - refreshLanguageList(); refreshKitList(); companionSupportFacade.refreshCompanionData(); } @@ -731,7 +737,6 @@ { characterAbilities.rebuildAbilityLists(); companionSupportFacade.refreshCompanionData(); - refreshLanguageList(); refreshKitList(); refreshTemplates(); refreshAvailableTempBonuses(); @@ -2414,7 +2419,6 @@ /** * Regenerate the character's list of languages. - * TODO: This needs to be invoked after a rank of speak language is added or removed to trigger the todo */ void refreshLanguageList() { @@ -2525,9 +2529,6 @@ choiceManager.getChoices(theCharacter, availLangs, selLangs); selLangs.remove(lang); choiceManager.applyChoices(theCharacter, selLangs); - - // Update list on character facade - refreshLanguageList(); } /** @@ -2697,8 +2698,6 @@ Logging.log(Logging.ERROR, "CharacterFacadeImpl @ setHanded to "+((Handed) handedness).name()); //$NON-NLS-1$ this.handedness.setReference(handedness); theCharacter.setHanded((Handed) handedness); - // XXX Needed? copied from #setGender - refreshLanguageList(); } /* (non-Javadoc) @@ -4275,4 +4274,38 @@ return charges; } + + /** + * The Class <code>LanguageListener</code> tracks adding and removal of + * languages to the character. + */ + public class LanguageListener implements DataFacetChangeListener<Language> + { + /** + * {@inheritDoc} + */ + @Override + public void dataAdded(DataFacetChangeEvent<Language> dfce) + { + if (dfce.getCharID() != theCharacter.getCharID()) + { + return; + } + refreshLanguageList(); + } + + /** + * {@inheritDoc} + */ + @Override + public void dataRemoved(DataFacetChangeEvent<Language> dfce) + { + if (dfce.getCharID() != theCharacter.getCharID()) + { + return; + } + refreshLanguageList(); + } + + } } Modified: Trunk/pcgen/code/src/java/pcgen/gui2/util/treetable/AbstractTreeTableModel.java =================================================================== --- Trunk/pcgen/code/src/java/pcgen/gui2/util/treetable/AbstractTreeTableModel.java 2012-10-07 12:00:52 UTC (rev 17662) +++ Trunk/pcgen/code/src/java/pcgen/gui2/util/treetable/AbstractTreeTableModel.java 2012-10-07 12:33:30 UTC (rev 17663) @@ -91,6 +91,6 @@ @Override public Object getValueAt(Object node, int column) { - return ((TreeTableNode)node).getValueAt(column); + return node == null ? null : ((TreeTableNode)node).getValueAt(column); } } This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <jde...@us...> - 2012-10-14 05:14:13
|
Revision: 17787 http://pcgen.svn.sourceforge.net/pcgen/?rev=17787&view=rev Author: jdempsey Date: 2012-10-14 05:14:06 +0000 (Sun, 14 Oct 2012) Log Message: ----------- Add some extra telemetry and detach some listeners Issue#: CODE-1709 Modified Paths: -------------- Trunk/pcgen/code/src/java/pcgen/gui2/dialog/DebugDialog.java Trunk/pcgen/code/src/java/pcgen/gui2/facade/CharacterFacadeImpl.java Trunk/pcgen/code/src/java/pcgen/gui2/tabs/AbilitiesInfoTab.java Modified: Trunk/pcgen/code/src/java/pcgen/gui2/dialog/DebugDialog.java =================================================================== --- Trunk/pcgen/code/src/java/pcgen/gui2/dialog/DebugDialog.java 2012-10-13 23:14:56 UTC (rev 17786) +++ Trunk/pcgen/code/src/java/pcgen/gui2/dialog/DebugDialog.java 2012-10-14 05:14:06 UTC (rev 17787) @@ -29,6 +29,7 @@ import java.lang.management.MemoryMXBean; import java.lang.management.MemoryUsage; import java.text.DecimalFormat; +import java.text.MessageFormat; import java.util.logging.Handler; import java.util.logging.LogRecord; import javax.swing.BorderFactory; @@ -192,6 +193,8 @@ if ("COLLECT".equals(e.getActionCommand())) { memoryBean.gc(); + Logging.log(Logging.INFO, MessageFormat.format("Memory used after manual GC, Heap: {0}, Non heap: {1}", + memoryBean.getHeapMemoryUsage().getUsed(), memoryBean.getNonHeapMemoryUsage().getUsed())); } else { Modified: Trunk/pcgen/code/src/java/pcgen/gui2/facade/CharacterFacadeImpl.java =================================================================== --- Trunk/pcgen/code/src/java/pcgen/gui2/facade/CharacterFacadeImpl.java 2012-10-13 23:14:56 UTC (rev 17786) +++ Trunk/pcgen/code/src/java/pcgen/gui2/facade/CharacterFacadeImpl.java 2012-10-14 05:14:06 UTC (rev 17787) @@ -486,6 +486,14 @@ pc.setCalcEquipSetId(id); } + // Detach listeners from old set + if (equipSet.getReference() != null) + { + EquipmentListFacade equippedItems = equipSet.getReference().getEquippedItems(); + equippedItems.removeListListener(this); + equippedItems.removeEquipmentListListener(this); + } + // Make facades for each root equipset. List<EquipmentSetFacade> eqSetList = new ArrayList<EquipmentSetFacade>(); EquipmentSetFacade currSet = null; Modified: Trunk/pcgen/code/src/java/pcgen/gui2/tabs/AbilitiesInfoTab.java =================================================================== --- Trunk/pcgen/code/src/java/pcgen/gui2/tabs/AbilitiesInfoTab.java 2012-10-13 23:14:56 UTC (rev 17786) +++ Trunk/pcgen/code/src/java/pcgen/gui2/tabs/AbilitiesInfoTab.java 2012-10-14 05:14:06 UTC (rev 17787) @@ -110,7 +110,6 @@ } typeMap.get(type).categoryList.addElement(category); } - activeCategories.addListListener(this); selectedTitle = tabs.get(0).title; } @@ -229,6 +228,7 @@ public void install() { + activeCategories.addListListener(this); for (TabInfo tabInfo : tabs) { addTab(tabInfo.title); @@ -244,6 +244,7 @@ abilityTab.storeState(typeMap.get(selectedTitle).tabData); removeChangeListener(this); removeAll(); + activeCategories.removeListListener(this); isInstalled = false; } This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <jde...@us...> - 2012-10-14 11:49:11
|
Revision: 17793 http://pcgen.svn.sourceforge.net/pcgen/?rev=17793&view=rev Author: jdempsey Date: 2012-10-14 11:49:05 +0000 (Sun, 14 Oct 2012) Log Message: ----------- Switch views to be recorded by index. Split out preferences for spells tables so that they are not shared. Ensure all ability tabs use their own views. Issue#: CODE-1622 Modified Paths: -------------- Trunk/pcgen/code/src/java/pcgen/gui2/tabs/spells/SpellBooksTab.java Trunk/pcgen/code/src/java/pcgen/gui2/tabs/spells/SpellNodeDataView.java Trunk/pcgen/code/src/java/pcgen/gui2/tabs/spells/SpellTreeViewModel.java Trunk/pcgen/code/src/java/pcgen/gui2/tabs/spells/SpellsKnownTab.java Trunk/pcgen/code/src/java/pcgen/gui2/tabs/spells/SpellsPreparedTab.java Trunk/pcgen/code/src/java/pcgen/gui2/util/JTreeViewTable.java Modified: Trunk/pcgen/code/src/java/pcgen/gui2/tabs/spells/SpellBooksTab.java =================================================================== --- Trunk/pcgen/code/src/java/pcgen/gui2/tabs/spells/SpellBooksTab.java 2012-10-14 11:45:40 UTC (rev 17792) +++ Trunk/pcgen/code/src/java/pcgen/gui2/tabs/spells/SpellBooksTab.java 2012-10-14 11:49:05 UTC (rev 17793) @@ -329,8 +329,8 @@ public TreeViewModelHandler(CharacterFacade character) { - availableModel = new SpellTreeViewModel(character.getSpellSupport().getKnownSpellNodes(), false); - selectedModel = new SpellTreeViewModel(character.getSpellSupport().getBookSpellNodes(), true); + availableModel = new SpellTreeViewModel(character.getSpellSupport().getKnownSpellNodes(), false, "SpellBooksAva"); + selectedModel = new SpellTreeViewModel(character.getSpellSupport().getBookSpellNodes(), true, "SpellBooksSel"); } public void install() Modified: Trunk/pcgen/code/src/java/pcgen/gui2/tabs/spells/SpellNodeDataView.java =================================================================== --- Trunk/pcgen/code/src/java/pcgen/gui2/tabs/spells/SpellNodeDataView.java 2012-10-14 11:45:40 UTC (rev 17792) +++ Trunk/pcgen/code/src/java/pcgen/gui2/tabs/spells/SpellNodeDataView.java 2012-10-14 11:49:05 UTC (rev 17793) @@ -14,10 +14,12 @@ { private final List<? extends DataViewColumn> columns; + private final String prefsKey; - public SpellNodeDataView(boolean initiallyVisible) + public SpellNodeDataView(boolean initiallyVisible, String prefsKey) { super(); + this.prefsKey = prefsKey; columns = Arrays.asList(new DefaultDataViewColumn("School", String.class, initiallyVisible), new DefaultDataViewColumn("Subschool", String.class, initiallyVisible), new DefaultDataViewColumn("Descriptors", String.class, initiallyVisible), @@ -62,7 +64,7 @@ @Override public String getPrefsKey() { - return "SpellTree"; //$NON-NLS-1$ + return prefsKey; } } Modified: Trunk/pcgen/code/src/java/pcgen/gui2/tabs/spells/SpellTreeViewModel.java =================================================================== --- Trunk/pcgen/code/src/java/pcgen/gui2/tabs/spells/SpellTreeViewModel.java 2012-10-14 11:45:40 UTC (rev 17792) +++ Trunk/pcgen/code/src/java/pcgen/gui2/tabs/spells/SpellTreeViewModel.java 2012-10-14 11:49:05 UTC (rev 17793) @@ -45,12 +45,14 @@ private final SpellNodeDataView dataView; private final ListFacade<? extends SuperNode> spellNodes; private final ListFacade<SpellTreeView> treeViews; + private final String prefsKey; - public SpellTreeViewModel(ListFacade<? extends SuperNode> spellNodes, boolean showcolumns) + public SpellTreeViewModel(ListFacade<? extends SuperNode> spellNodes, boolean showcolumns, String prefsKey) { this.spellNodes = spellNodes; + this.prefsKey = prefsKey; this.treeViews = new DefaultListFacade<SpellTreeView>(Arrays.asList(SpellTreeView.values())); - this.dataView = new SpellNodeDataView(showcolumns); + this.dataView = new SpellNodeDataView(showcolumns, prefsKey); } @Override Modified: Trunk/pcgen/code/src/java/pcgen/gui2/tabs/spells/SpellsKnownTab.java =================================================================== --- Trunk/pcgen/code/src/java/pcgen/gui2/tabs/spells/SpellsKnownTab.java 2012-10-14 11:45:40 UTC (rev 17792) +++ Trunk/pcgen/code/src/java/pcgen/gui2/tabs/spells/SpellsKnownTab.java 2012-10-14 11:49:05 UTC (rev 17793) @@ -417,8 +417,8 @@ public TreeViewModelHandler(CharacterFacade character) { - availableModel = new SpellTreeViewModel(character.getSpellSupport().getAvailableSpellNodes(), false); - selectedModel = new SpellTreeViewModel(character.getSpellSupport().getAllKnownSpellNodes(), true); + availableModel = new SpellTreeViewModel(character.getSpellSupport().getAvailableSpellNodes(), false, "SpellsKnownAva"); + selectedModel = new SpellTreeViewModel(character.getSpellSupport().getAllKnownSpellNodes(), true, "SpellsKnownSel"); } public void install() Modified: Trunk/pcgen/code/src/java/pcgen/gui2/tabs/spells/SpellsPreparedTab.java =================================================================== --- Trunk/pcgen/code/src/java/pcgen/gui2/tabs/spells/SpellsPreparedTab.java 2012-10-14 11:45:40 UTC (rev 17792) +++ Trunk/pcgen/code/src/java/pcgen/gui2/tabs/spells/SpellsPreparedTab.java 2012-10-14 11:49:05 UTC (rev 17793) @@ -438,8 +438,8 @@ public TreeViewModelHandler(CharacterFacade character) { - availableModel = new SpellTreeViewModel(character.getSpellSupport().getKnownSpellNodes(), false); - selectedModel = new SpellTreeViewModel(character.getSpellSupport().getPreparedSpellNodes(), true); + availableModel = new SpellTreeViewModel(character.getSpellSupport().getKnownSpellNodes(), false, "SpellsPrepAva"); + selectedModel = new SpellTreeViewModel(character.getSpellSupport().getPreparedSpellNodes(), true, "SpellsPrepSel"); } public void install() Modified: Trunk/pcgen/code/src/java/pcgen/gui2/util/JTreeViewTable.java =================================================================== --- Trunk/pcgen/code/src/java/pcgen/gui2/util/JTreeViewTable.java 2012-10-14 11:45:40 UTC (rev 17792) +++ Trunk/pcgen/code/src/java/pcgen/gui2/util/JTreeViewTable.java 2012-10-14 11:49:05 UTC (rev 17793) @@ -71,6 +71,7 @@ import pcgen.system.PropertyContext; import pcgen.util.CollectionMaps; import pcgen.util.ListMap; +import pcgen.util.Logging; /** * This class is a reimplementation of JTreeViewPane @@ -91,6 +92,8 @@ public class JTreeViewTable<T> extends JTreeTable implements PropertyChangeListener { + /** The preferences key for the selected tree view index. */ + private static final String VIEW_INDEX_PREFS_KEY = "viewIdx"; private final DynamicTableColumnModelListener listener = new DynamicTableColumnModelListener() { @@ -398,9 +401,35 @@ PropertyContext context = baseContext.createChildContext( this.viewModel.getDataView().getPrefsKey()); - context.setProperty("view", view.getViewName()); //$NON-NLS-1$ + + int index = getIndex(viewModel.getTreeViews(), view); + if (index >= 0) + { + context.setInt(VIEW_INDEX_PREFS_KEY, index); //$NON-NLS-1$ + } } + /** + * get the index of the view. + * @param treeViews The list of tree views. + * @param view The view to be found + * @return The index or -1 if not found. + */ + private int getIndex(ListFacade<? extends TreeView<T>> treeViews, + TreeView<? super T> view) + { + for (int i = 0; i < treeViews.getSize(); i++) + { + TreeView<T> treeView = treeViews.getElementAt(i); + if (treeView.equals(view)) + { + return i; + } + } + Logging.errorPrint("Unable to find view " + view + " in " + treeViews); + return -1; + } + public TreeViewModel<?> getTreeViewModel() { return viewModel; @@ -409,16 +438,11 @@ public void setTreeViewModel(TreeViewModel<T> viewModel) { ListFacade<? extends TreeView<T>> views = viewModel.getTreeViews(); - TreeView<? super T> startingView = views.getElementAt(viewModel.getDefaultTreeViewIndex()); PropertyContext context = baseContext.createChildContext( viewModel.getDataView().getPrefsKey()); - String viewName = context.initProperty("view", startingView.getViewName()); - startingView = findViewByName(views, viewName); - if (treetableModel != null && treetableModel.getSelectedTreeView() != null) - { - startingView = treetableModel.getSelectedTreeView(); - } + int viewIndex = context.initInt(VIEW_INDEX_PREFS_KEY, viewModel.getDefaultTreeViewIndex()); + TreeView<? super T> startingView = views.getElementAt(viewIndex); DataView<T> dataView = viewModel.getDataView(); final TreeViewTableModel<T> model = createDefaultTreeViewTableModel(dataView); this.treetableModel = model; @@ -494,19 +518,18 @@ public void elementsChanged(ListEvent<TreeView<T>> e) { ListFacade<? extends TreeView<T>> views = viewModel.getTreeViews(); - TreeView<? super T> startingView = - views.getElementAt(viewModel.getDefaultTreeViewIndex()); PropertyContext context = baseContext.createChildContext(viewModel.getDataView() .getPrefsKey()); - String viewName = - context.initProperty("view", startingView.getViewName()); + int viewIndex = context.initInt(VIEW_INDEX_PREFS_KEY, viewModel.getDefaultTreeViewIndex()); + TreeView<? super T> startingView = + views.getElementAt(viewIndex); group = new ButtonGroup(); removeAll(); for (TreeView<T> treeview : views) { JMenuItem item = new JRadioButtonMenuItem(new ChangeViewAction(treeview)); - item.setSelected(treeview.getViewName().equals(viewName)); + item.setSelected(startingView == treeview); group.add(item); add(item); } This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <jde...@us...> - 2012-10-14 20:50:41
|
Revision: 17794 http://pcgen.svn.sourceforge.net/pcgen/?rev=17794&view=rev Author: jdempsey Date: 2012-10-14 20:50:35 +0000 (Sun, 14 Oct 2012) Log Message: ----------- Fix bug: Skill sort order not sticking Issue#: CODE-1622 Modified Paths: -------------- Trunk/pcgen/code/src/java/pcgen/gui2/tabs/skill/SkillTreeViewModel.java Trunk/pcgen/code/src/java/pcgen/gui2/util/JTreeViewTable.java Modified: Trunk/pcgen/code/src/java/pcgen/gui2/tabs/skill/SkillTreeViewModel.java =================================================================== --- Trunk/pcgen/code/src/java/pcgen/gui2/tabs/skill/SkillTreeViewModel.java 2012-10-14 11:49:05 UTC (rev 17793) +++ Trunk/pcgen/code/src/java/pcgen/gui2/tabs/skill/SkillTreeViewModel.java 2012-10-14 20:50:35 UTC (rev 17794) @@ -25,6 +25,8 @@ import java.util.List; import javax.swing.ListSelectionModel; +import javax.swing.event.ListSelectionEvent; +import javax.swing.event.ListSelectionListener; import org.apache.commons.lang.StringUtils; @@ -52,7 +54,7 @@ * @author Connor Petty <cpm...@us...> */ public class SkillTreeViewModel implements TreeViewModel<SkillFacade>, - DataView<SkillFacade>, SkillBonusListener + DataView<SkillFacade>, SkillBonusListener, ListSelectionListener { private static final List<? extends DataViewColumn> columns = Arrays.asList( @@ -90,12 +92,14 @@ this.table = ftvt; ftvt.setTreeViewModel(this); levels.addSkillBonusListener(this); + selectionModel.addListSelectionListener(this); } public void uninstall() { table = null; levels.removeSkillBonusListener(this); + selectionModel.removeListSelectionListener(this); } @Override @@ -304,4 +308,26 @@ } }; + + /** + * {@inheritDoc} + */ + @Override + public void valueChanged(ListSelectionEvent arg0) + { + if (arg0.getValueIsAdjusting()) + { + return; + } + + if (table.getSelectedTreeView() == COST_NAME + || table.getSelectedTreeView() == COST_TYPE_NAME) + { + table.setTreeViewModel(this); + } + else + { + table.refreshModelData(); + } + } } Modified: Trunk/pcgen/code/src/java/pcgen/gui2/util/JTreeViewTable.java =================================================================== --- Trunk/pcgen/code/src/java/pcgen/gui2/util/JTreeViewTable.java 2012-10-14 11:49:05 UTC (rev 17793) +++ Trunk/pcgen/code/src/java/pcgen/gui2/util/JTreeViewTable.java 2012-10-14 20:50:35 UTC (rev 17794) @@ -471,6 +471,14 @@ } /** + * @return The currently selected tree view. + */ + public TreeView<? super T> getSelectedTreeView() + { + return treetableModel.getSelectedTreeView(); + } + + /** * Find the named view. * @param views The list of TreeViews. * @param viewName The name of the desired view. This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <jde...@us...> - 2012-10-19 21:58:06
|
Revision: 17885 http://pcgen.svn.sourceforge.net/pcgen/?rev=17885&view=rev Author: jdempsey Date: 2012-10-19 21:57:59 +0000 (Fri, 19 Oct 2012) Log Message: ----------- Fix bug: File->Save As fails for master with companion not loaded Issue#: CODE-1769 Modified Paths: -------------- Trunk/pcgen/code/src/java/pcgen/gui2/PCGenFrame.java Trunk/pcgen/code/src/java/pcgen/gui2/facade/CompanionSupportFacadeImpl.java Modified: Trunk/pcgen/code/src/java/pcgen/gui2/PCGenFrame.java =================================================================== --- Trunk/pcgen/code/src/java/pcgen/gui2/PCGenFrame.java 2012-10-19 21:38:56 UTC (rev 17884) +++ Trunk/pcgen/code/src/java/pcgen/gui2/PCGenFrame.java 2012-10-19 21:57:59 UTC (rev 17885) @@ -948,13 +948,24 @@ } } - character.setFile(file); - prepareForSave(character, false); - if (!CharacterManager.saveCharacter(character)) + try { - return showSaveCharacterChooser(character); + character.setFile(file); + prepareForSave(character, false); + if (!CharacterManager.saveCharacter(character)) + { + return showSaveCharacterChooser(character); + } + return true; } - return true; + catch (Exception e) + { + Logging.errorPrint("Error saving character to new file " + file, e); //$NON-NLS-1$ + delegate.showErrorMessage( + Constants.APPLICATION_NAME, + LanguageBundle.getFormattedString( + "in_saveFailMsg", file.getName())); //$NON-NLS-1$ + } } return false; } Modified: Trunk/pcgen/code/src/java/pcgen/gui2/facade/CompanionSupportFacadeImpl.java =================================================================== --- Trunk/pcgen/code/src/java/pcgen/gui2/facade/CompanionSupportFacadeImpl.java 2012-10-19 21:38:56 UTC (rev 17884) +++ Trunk/pcgen/code/src/java/pcgen/gui2/facade/CompanionSupportFacadeImpl.java 2012-10-19 21:57:59 UTC (rev 17885) @@ -139,11 +139,14 @@ { CharacterFacade companion = CharacterManager.getCharacterMatching(delegate); - CharacterFacadeImpl compFacadeImpl = - (CharacterFacadeImpl) companion; - Follower follower = - compFacadeImpl.getTheCharacter().getMaster(); - follower.setFileName(newFile.getAbsolutePath()); + if (companion != null) + { + CharacterFacadeImpl compFacadeImpl = + (CharacterFacadeImpl) companion; + Follower follower = + compFacadeImpl.getTheCharacter().getMaster(); + follower.setFileName(newFile.getAbsolutePath()); + } } } This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <jde...@us...> - 2012-10-20 22:21:06
|
Revision: 17915 http://pcgen.svn.sourceforge.net/pcgen/?rev=17915&view=rev Author: jdempsey Date: 2012-10-20 22:20:58 +0000 (Sat, 20 Oct 2012) Log Message: ----------- Fix bug: Animal Companion does not level up after master level up Issue#: CODE-1774 Modified Paths: -------------- Trunk/pcgen/code/src/java/pcgen/gui2/facade/CompanionSupportFacadeImpl.java Trunk/pcgen/code/src/java/pcgen/gui2/tabs/CompanionInfoTab.java Modified: Trunk/pcgen/code/src/java/pcgen/gui2/facade/CompanionSupportFacadeImpl.java =================================================================== --- Trunk/pcgen/code/src/java/pcgen/gui2/facade/CompanionSupportFacadeImpl.java 2012-10-20 22:13:13 UTC (rev 17914) +++ Trunk/pcgen/code/src/java/pcgen/gui2/facade/CompanionSupportFacadeImpl.java 2012-10-20 22:20:58 UTC (rev 17915) @@ -167,6 +167,8 @@ if (compFacade instanceof CharacterFacadeImpl) { CharacterFacadeImpl compFacadeImpl = (CharacterFacadeImpl) compFacade; + PlayerCharacter pc = compFacadeImpl.getTheCharacter(); + pc.setMaster(pc.getMaster()); compFacadeImpl.refreshClassLevelModel(); compFacadeImpl.postLevellingUpdates(); } Modified: Trunk/pcgen/code/src/java/pcgen/gui2/tabs/CompanionInfoTab.java =================================================================== --- Trunk/pcgen/code/src/java/pcgen/gui2/tabs/CompanionInfoTab.java 2012-10-20 22:13:13 UTC (rev 17914) +++ Trunk/pcgen/code/src/java/pcgen/gui2/tabs/CompanionInfoTab.java 2012-10-20 22:20:58 UTC (rev 17915) @@ -60,6 +60,7 @@ import pcgen.gui2.tabs.models.HtmlSheetSupport; import pcgen.gui2.tools.FlippingSplitPane; import pcgen.gui2.tools.Utility; +import pcgen.gui2.util.DisplayAwareTab; import pcgen.gui2.util.JTreeTable; import pcgen.gui2.util.JTreeViewTable; import pcgen.gui2.util.treetable.AbstractTreeTableModel; @@ -80,7 +81,7 @@ * * @author Connor Petty <cpm...@us...> */ -public class CompanionInfoTab extends FlippingSplitPane implements CharacterInfoTab, TodoHandler +public class CompanionInfoTab extends FlippingSplitPane implements CharacterInfoTab, TodoHandler, DisplayAwareTab { private final JTreeTable companionsTable; @@ -182,6 +183,17 @@ return new TabTitle(LanguageBundle.getString("in_companions")); //$NON-NLS-1$ } + /** + * {@inheritDoc} + */ + @Override + public void tabSelected() + { + // Refresh the character sheet as we have been displayed. + LoadButtonAndSheetHandler action = (LoadButtonAndSheetHandler) loadButton.getAction(); + action.showCompanion(false); + } + private class TreeExpansionHandler implements TreeExpansionListener { @@ -289,7 +301,7 @@ } } - private void showCompanion(boolean switchTabs) + void showCompanion(boolean switchTabs) { CompanionFacade companion = getSelectedCompanion(); if (companion == null) This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <jde...@us...> - 2012-10-26 11:07:25
|
Revision: 18022 http://pcgen.svn.sourceforge.net/pcgen/?rev=18022&view=rev Author: jdempsey Date: 2012-10-26 11:07:13 +0000 (Fri, 26 Oct 2012) Log Message: ----------- Hide unused menu items Issue#: CODE-1801 Modified Paths: -------------- Trunk/pcgen/code/src/java/pcgen/gui2/PCGenMenuBar.java Trunk/pcgen/code/src/java/pcgen/gui2/PCGenToolBar.java Modified: Trunk/pcgen/code/src/java/pcgen/gui2/PCGenMenuBar.java =================================================================== --- Trunk/pcgen/code/src/java/pcgen/gui2/PCGenMenuBar.java 2012-10-26 04:22:00 UTC (rev 18021) +++ Trunk/pcgen/code/src/java/pcgen/gui2/PCGenMenuBar.java 2012-10-26 11:07:13 UTC (rev 18022) @@ -152,7 +152,7 @@ private JMenu createHelpMenu() { JMenu menu = new JMenu(actionMap.get(PCGenActionMap.HELP_COMMAND)); - menu.add(new JMenuItem(actionMap.get(PCGenActionMap.HELP_CONTEXT_COMMAND))); + //menu.add(new JMenuItem(actionMap.get(PCGenActionMap.HELP_CONTEXT_COMMAND))); menu.add(new JMenuItem(actionMap.get(PCGenActionMap.HELP_DOCS_COMMAND))); menu.addSeparator(); menu.add(new JMenuItem(actionMap.get(PCGenActionMap.HELP_OGL_COMMAND))); Modified: Trunk/pcgen/code/src/java/pcgen/gui2/PCGenToolBar.java =================================================================== --- Trunk/pcgen/code/src/java/pcgen/gui2/PCGenToolBar.java 2012-10-26 04:22:00 UTC (rev 18021) +++ Trunk/pcgen/code/src/java/pcgen/gui2/PCGenToolBar.java 2012-10-26 11:07:13 UTC (rev 18022) @@ -56,9 +56,9 @@ addSeparator(); add(ToolBarUtilities.createToolBarButton(actionMap.get(PCGenActionMap.PREFERENCES_COMMAND))); - addSeparator(); + // addSeparator(); - add(ToolBarUtilities.createToolBarButton(actionMap.get(PCGenActionMap.HELP_CONTEXT_COMMAND))); + // add(ToolBarUtilities.createToolBarButton(actionMap.get(PCGenActionMap.HELP_CONTEXT_COMMAND))); } } This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <jde...@us...> - 2013-02-09 11:53:21
|
Revision: 19403 http://sourceforge.net/p/pcgen/code/19403 Author: jdempsey Date: 2013-02-09 11:53:17 +0000 (Sat, 09 Feb 2013) Log Message: ----------- Inventory > Equipment available list does not remember column settings Issue#: CODE-1815 Modified Paths: -------------- Trunk/pcgen/code/src/java/pcgen/gui2/tabs/DomainInfoTab.java Trunk/pcgen/code/src/java/pcgen/gui2/tabs/EquipInfoTab.java Trunk/pcgen/code/src/java/pcgen/gui2/util/JDynamicTable.java Modified: Trunk/pcgen/code/src/java/pcgen/gui2/tabs/DomainInfoTab.java =================================================================== --- Trunk/pcgen/code/src/java/pcgen/gui2/tabs/DomainInfoTab.java 2013-02-09 01:38:20 UTC (rev 19402) +++ Trunk/pcgen/code/src/java/pcgen/gui2/tabs/DomainInfoTab.java 2013-02-09 11:53:17 UTC (rev 19403) @@ -100,7 +100,7 @@ { super("Domain"); this.deityTable = new FilteredTreeViewTable<Object, DeityFacade>(); - this.domainTable = new JDynamicTable(); + this.domainTable = new JDynamicTable("DomainList"); this.domainRowHeaderTable = TableUtils.createDefaultTable(); this.selectedDeity = new JLabel(); this.selectDeity = new JButton(); Modified: Trunk/pcgen/code/src/java/pcgen/gui2/tabs/EquipInfoTab.java =================================================================== --- Trunk/pcgen/code/src/java/pcgen/gui2/tabs/EquipInfoTab.java 2013-02-09 01:38:20 UTC (rev 19402) +++ Trunk/pcgen/code/src/java/pcgen/gui2/tabs/EquipInfoTab.java 2013-02-09 11:53:17 UTC (rev 19403) @@ -129,7 +129,7 @@ public EquipInfoTab() { super("Equip"); - this.equipmentTable = new JDynamicTable(); + this.equipmentTable = new JDynamicTable("EquipList"); this.equipViewBox = new JComboBox(EquipView.values()); this.infoPane = new InfoPane(); this.equipmentSetTable = new JTreeTable() Modified: Trunk/pcgen/code/src/java/pcgen/gui2/util/JDynamicTable.java =================================================================== --- Trunk/pcgen/code/src/java/pcgen/gui2/util/JDynamicTable.java 2013-02-09 01:38:20 UTC (rev 19402) +++ Trunk/pcgen/code/src/java/pcgen/gui2/util/JDynamicTable.java 2013-02-09 11:53:17 UTC (rev 19403) @@ -22,7 +22,10 @@ import java.awt.Container; import java.awt.event.ActionEvent; +import java.beans.PropertyChangeEvent; +import java.beans.PropertyChangeListener; import java.util.List; + import javax.swing.AbstractAction; import javax.swing.JButton; import javax.swing.JCheckBoxMenuItem; @@ -33,15 +36,17 @@ import javax.swing.event.TableColumnModelEvent; import javax.swing.table.TableColumn; import javax.swing.table.TableColumnModel; + +import pcgen.gui2.UIPropertyContext; import pcgen.gui2.util.event.DynamicTableColumnModelListener; import pcgen.gui2.util.table.DefaultDynamicTableColumnModel; import pcgen.gui2.util.table.DynamicTableColumnModel; +import pcgen.system.PropertyContext; /** - * * @author Connor Petty <cpm...@us...> */ -public class JDynamicTable extends JTableEx +public class JDynamicTable extends JTableEx implements PropertyChangeListener { private final DynamicTableColumnModelListener listener = new DynamicTableColumnModelListener() @@ -71,7 +76,19 @@ private final JButton cornerButton = new JButton(new CornerAction()); private DynamicTableColumnModel dynamicColumnModel = null; private JPopupMenu menu = new JPopupMenu(); + private final PropertyContext baseContext; + private final String prefsKey; + /** + * Create a new instance of JDynamicTable + * @param prefsKey The key for storage of use preferences for the table. + */ + public JDynamicTable(String prefsKey) + { + this.prefsKey = prefsKey; + baseContext = UIPropertyContext.createContext("tablePrefs"); + } + @Override protected void configureEnclosingScrollPane() { @@ -153,8 +170,27 @@ this.dynamicColumnModel.removeDynamicTableColumnModelListener(listener); } this.dynamicColumnModel = columnModel; + + PropertyContext viewPrefsContext = + baseContext.createChildContext(prefsKey); + PropertyContext colWidthCtx = viewPrefsContext.createChildContext("width"); //$NON-NLS-1$ + PropertyContext colVisibleCtx = viewPrefsContext.createChildContext("visible"); //$NON-NLS-1$ + for (int i = 0; i < columnModel.getColumnCount(); i++) + { + TableColumn column = columnModel.getColumn(i); + String colKey = + normalisePrefsKey(column.getHeaderValue().toString()); + column.setPreferredWidth(colWidthCtx.initInt(colKey, 75)); + columnModel.setVisible( + column, + colVisibleCtx.initBoolean(colKey, + columnModel.isVisible(column))); + column.addPropertyChangeListener(this); + } + columnModel.addDynamicTableColumnModelListener(listener); super.setColumnModel(columnModel); + List<TableColumn> columns = columnModel.getAvailableColumns(); menu.removeAll(); if (!columns.isEmpty()) @@ -171,6 +207,30 @@ } } + private String normalisePrefsKey(String origKey) + { + return origKey.replaceAll("[^\\w\\.]", "_"); //$NON-NLS-1$ //$NON-NLS-2$ + } + + /** + * {@inheritDoc} + */ + @Override + public void propertyChange(PropertyChangeEvent evt) + { + if (isShowing() && "width".equals(evt.getPropertyName()) //$NON-NLS-1$ + && evt.getSource() instanceof TableColumn) + { + TableColumn col = (TableColumn) evt.getSource(); + PropertyContext context = + baseContext.createChildContext(prefsKey) + .createChildContext("width"); //$NON-NLS-1$ + String colKey = col.getHeaderValue().toString(); + context.setInt(normalisePrefsKey(colKey), + (Integer) evt.getNewValue()); + } + } + private class CornerAction extends AbstractAction { @@ -208,6 +268,11 @@ public void actionPerformed(ActionEvent e) { dynamicColumnModel.setVisible(column, visible = !visible); + PropertyContext context = + baseContext.createChildContext(prefsKey) + .createChildContext("visible"); //$NON-NLS-1$ + context.setBoolean(normalisePrefsKey(column.getHeaderValue() + .toString()), visible); } } This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <cpm...@us...> - 2013-02-09 23:54:23
|
Revision: 19414 http://sourceforge.net/p/pcgen/code/19414 Author: cpmeister Date: 2013-02-09 23:54:17 +0000 (Sat, 09 Feb 2013) Log Message: ----------- General UI Code Cleanup - refactored table column preference handling Issue#: CODE-2058 - fixed domain table column issues Issue#: CODE-2060 - domains now have proper selection color Issue#: CODE-2061 Modified Paths: -------------- Trunk/pcgen/code/src/java/pcgen/gui2/tabs/DomainInfoTab.java Trunk/pcgen/code/src/java/pcgen/gui2/tabs/EquipInfoTab.java Trunk/pcgen/code/src/java/pcgen/gui2/util/JDynamicTable.java Trunk/pcgen/code/src/java/pcgen/gui2/util/JTableSortingHeader.java Trunk/pcgen/code/src/java/pcgen/gui2/util/JTreeViewTable.java Added Paths: ----------- Trunk/pcgen/code/src/java/pcgen/gui2/tools/PrefTableColumnModel.java Modified: Trunk/pcgen/code/src/java/pcgen/gui2/tabs/DomainInfoTab.java =================================================================== --- Trunk/pcgen/code/src/java/pcgen/gui2/tabs/DomainInfoTab.java 2013-02-09 23:50:53 UTC (rev 19413) +++ Trunk/pcgen/code/src/java/pcgen/gui2/tabs/DomainInfoTab.java 2013-02-09 23:54:17 UTC (rev 19414) @@ -41,6 +41,7 @@ import javax.swing.event.ListSelectionEvent; import javax.swing.event.ListSelectionListener; import javax.swing.table.DefaultTableCellRenderer; +import javax.swing.table.TableColumn; import pcgen.core.facade.CharacterFacade; import pcgen.core.facade.DeityFacade; @@ -67,7 +68,9 @@ import pcgen.gui2.tabs.models.QualifiedTreeCellRenderer; import pcgen.gui2.tools.FlippingSplitPane; import pcgen.gui2.tools.InfoPane; +import pcgen.gui2.tools.PrefTableColumnModel; import pcgen.gui2.util.JDynamicTable; +import pcgen.gui2.util.table.DynamicTableColumnModel; import pcgen.gui2.util.table.TableUtils; import pcgen.gui2.util.treeview.DataView; import pcgen.gui2.util.treeview.DataViewColumn; @@ -100,7 +103,7 @@ { super("Domain"); this.deityTable = new FilteredTreeViewTable<Object, DeityFacade>(); - this.domainTable = new JDynamicTable("DomainList"); + this.domainTable = new JDynamicTable(); this.domainRowHeaderTable = TableUtils.createDefaultTable(); this.selectedDeity = new JLabel(); this.selectDeity = new JButton(); @@ -145,8 +148,11 @@ dbar.addDisplayableFilter(qFilterButton); domainFilter = dbar; panel.add(dbar, BorderLayout.NORTH); + selectionModel = domainTable.getSelectionModel(); selectionModel.setSelectionMode(ListSelectionModel.SINGLE_SELECTION); + domainTable.setAutoCreateColumnsFromModel(false); + domainTable.setColumnModel(createDomainColumnModel()); JScrollPane scrollPane = TableUtils.createCheckBoxSelectionPane(domainTable, domainRowHeaderTable); panel.add(scrollPane, BorderLayout.CENTER); @@ -168,6 +174,18 @@ setResizeWeight(.65); } + public DynamicTableColumnModel createDomainColumnModel() + { + PrefTableColumnModel model = new PrefTableColumnModel("DomainList", 1); + TableColumn column = new TableColumn(0); + column.setHeaderValue(LanguageBundle.getString("in_domains")); //$NON-NLS-1$ + model.addColumn(column, true, 150); + column = new TableColumn(1); + column.setHeaderValue(LanguageBundle.getString("in_source")); //$NON-NLS-1$ + model.addColumn(column, true, 150); + return model; + } + @Override public Hashtable<Object, Object> createModels(CharacterFacade character) { @@ -264,7 +282,7 @@ { setForeground(UIPropertyContext.getNotQualifiedColor()); } - else + else if (!isSelected) { setForeground(UIPropertyContext.getQualifiedColor()); } @@ -393,12 +411,12 @@ } } } - + public void install() { deityTable.addActionListener(this); } - + public void uninstall() { deityTable.removeActionListener(this); @@ -406,12 +424,11 @@ } - private class QualifiedFilterHandler + private class QualifiedFilterHandler { private final Filter<Object, DomainFacade> qFilter = new Filter<Object, DomainFacade>() { - @Override public boolean accept(Object context, DomainFacade element) { @@ -430,8 +447,9 @@ { qFilterButton.setFilter(qFilter); } + } - + private class DomainTableHandler implements FilterHandler { @@ -556,7 +574,6 @@ private final ListListener<DomainFacade> listListener = new ListListener<DomainFacade>() { - @Override public void elementAdded(ListEvent<DomainFacade> e) { @@ -624,19 +641,6 @@ } @Override - public String getColumnName(int column) - { - switch (column) - { - case 0: - return LanguageBundle.getString("in_domains"); //$NON-NLS-1$ - case 1: - return LanguageBundle.getString("in_source"); //$NON-NLS-1$ - } - return null; - } - - @Override public boolean isCellEditable(int rowIndex, int columnIndex) { if (columnIndex >= 0) @@ -714,8 +718,8 @@ public List<?> getData(DeityFacade obj) { return Arrays.asList(obj.getAlignment(), - infoFactory.getDomains(obj), infoFactory.getPantheons(obj), - obj.getSource()); + infoFactory.getDomains(obj), infoFactory.getPantheons(obj), + obj.getSource()); } @Override @@ -737,12 +741,12 @@ private enum DeityTreeView implements TreeView<DeityFacade> { + NAME("in_deity"), //$NON-NLS-1$ ALIGNMENT_NAME("in_alignmentDeity"), //$NON-NLS-1$ DOMAIN_NAME("in_domainDeity"), //$NON-NLS-1$ PANTHEON_NAME("in_pantheonDeity"), //$NON-NLS-1$ SOURCE_NAME("in_sourceDeity"); //$NON-NLS-1$ - private String name; private DeityTreeView(String name) @@ -771,8 +775,8 @@ } return paths; case ALIGNMENT_NAME: - return Collections.singletonList(new TreeViewPath<DeityFacade>(pobj, - pobj.getAlignment())); + return Collections.singletonList(new TreeViewPath<DeityFacade>(pobj, + pobj.getAlignment())); case PANTHEON_NAME: for (String pantheon : pobj.getPantheons()) { @@ -780,8 +784,8 @@ } return paths; case SOURCE_NAME: - return Collections.singletonList(new TreeViewPath<DeityFacade>(pobj, - pobj.getSourceForNodeDisplay())); + return Collections.singletonList(new TreeViewPath<DeityFacade>(pobj, + pobj.getSourceForNodeDisplay())); default: throw new InternalError(); } Modified: Trunk/pcgen/code/src/java/pcgen/gui2/tabs/EquipInfoTab.java =================================================================== --- Trunk/pcgen/code/src/java/pcgen/gui2/tabs/EquipInfoTab.java 2013-02-09 23:50:53 UTC (rev 19413) +++ Trunk/pcgen/code/src/java/pcgen/gui2/tabs/EquipInfoTab.java 2013-02-09 23:54:17 UTC (rev 19414) @@ -76,6 +76,7 @@ import pcgen.gui2.tabs.models.CharacterComboBoxModel; import pcgen.gui2.tools.FlippingSplitPane; import pcgen.gui2.tools.InfoPane; +import pcgen.gui2.tools.PrefTableColumnModel; import pcgen.gui2.util.JDynamicTable; import pcgen.gui2.util.JTreeTable; import pcgen.gui2.util.SortMode; @@ -129,7 +130,7 @@ public EquipInfoTab() { super("Equip"); - this.equipmentTable = new JDynamicTable("EquipList"); + this.equipmentTable = new JDynamicTable(); this.equipViewBox = new JComboBox(EquipView.values()); this.infoPane = new InfoPane(); this.equipmentSetTable = new JTreeTable() @@ -274,26 +275,23 @@ private DynamicTableColumnModel createEquipmentColumnModel() { - DefaultDynamicTableColumnModel model = new DefaultDynamicTableColumnModel(1); + PrefTableColumnModel model = new PrefTableColumnModel("EquipList",1); + TableColumn column = new TableColumn(0); column.setHeaderValue(LanguageBundle.getString("in_nameLabel")); //$NON-NLS-1$ - model.addColumn(column); + model.addColumn(column, true, 150); column = new TableColumn(1); column.setHeaderValue(LanguageBundle.getString("in_type")); //$NON-NLS-1$ - model.addColumn(column); - model.setVisible(column, true); + model.addColumn(column, true, 75); column = new TableColumn(2); column.setHeaderValue(LanguageBundle.getString("in_equipLocationAbbrev")); //$NON-NLS-1$ - model.addColumn(column); - model.setVisible(column, true); + model.addColumn(column, true, 75); column = new TableColumn(3); column.setHeaderValue(LanguageBundle.getString("in_equipQuantityAbbrev")); //$NON-NLS-1$ - model.addColumn(column); - model.setVisible(column, true); + model.addColumn(column, true, 75); column = new TableColumn(4); column.setHeaderValue(LanguageBundle.getString("in_equipWeightAbbrev")); //$NON-NLS-1$ - model.addColumn(column); - model.setVisible(column, true); + model.addColumn(column, true, 75); return model; } Added: Trunk/pcgen/code/src/java/pcgen/gui2/tools/PrefTableColumnModel.java =================================================================== --- Trunk/pcgen/code/src/java/pcgen/gui2/tools/PrefTableColumnModel.java (rev 0) +++ Trunk/pcgen/code/src/java/pcgen/gui2/tools/PrefTableColumnModel.java 2013-02-09 23:54:17 UTC (rev 19414) @@ -0,0 +1,98 @@ +/* + * PrefTableColumnModel.java + * Copyright 2013 Connor Petty <cpm...@us...> + * + * 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 Feb 9, 2013, 11:24:18 AM + */ +package pcgen.gui2.tools; + +import java.beans.PropertyChangeEvent; +import javax.swing.table.TableColumn; +import pcgen.gui2.UIPropertyContext; +import pcgen.gui2.util.table.DefaultDynamicTableColumnModel; +import pcgen.system.PropertyContext; +import pcgen.util.Logging; + +/** + * This is a type of DynamicTableColumnModel which links each of the added columns + * to a PropertyContext to allow for a persistence of column properties across + * program executions. + * @author Connor Petty <cpm...@us...> + */ +public class PrefTableColumnModel extends DefaultDynamicTableColumnModel +{ + + private final PropertyContext colWidthCtx; + private final PropertyContext colVisibleCtx; + + public PrefTableColumnModel(String prefKey, int offset) + { + super(offset); + PropertyContext baseContext = UIPropertyContext.createContext("tablePrefs"); //$NON-NLS-1$ + PropertyContext viewPrefsContext = baseContext.createChildContext(prefKey); + colWidthCtx = viewPrefsContext.createChildContext("width"); //$NON-NLS-1$ + colVisibleCtx = viewPrefsContext.createChildContext("visible"); //$NON-NLS-1$ + } + + private String normalisePrefsKey(String origKey) + { + return origKey.replaceAll("[^\\w\\.]", "_"); //$NON-NLS-1$ //$NON-NLS-2$ + } + + /** + * Adds a new column to this column model along with the default state of the column + * when no preferences are found for it. These preferences are stored using each column's identifier + * <code>TableColumn.getIdentifier</code> as the preference key that column. If no identifier is set + * the columns header value is used instead. + * <br> Note: For the case of always visible columns, i.e. the first + * <code>offset</code> number of columns added to the model, the default visibility parameter does nothing. + * @param column the column to add + * @param defaultVisibility the visibility of this column in the absence of an existing preference + * @param defaultWidth the width of the column in the absence of an existing preference + */ + public void addColumn(TableColumn column, boolean defaultVisibility, int defaultWidth) + { + String prefsKey = normalisePrefsKey(column.getIdentifier().toString()); + int width = colWidthCtx.initInt(prefsKey, defaultWidth); + boolean visibility = colVisibleCtx.getBoolean(prefsKey, defaultVisibility); + + column.setPreferredWidth(width); + addColumn(column); + setVisible(column, visibility); + } + + @Override + public void propertyChange(PropertyChangeEvent evt) + { + super.propertyChange(evt); + String name = evt.getPropertyName(); + if ("width".equals(name)) + { + TableColumn col = (TableColumn) evt.getSource(); + String colKey = col.getIdentifier().toString(); + colWidthCtx.setInt(normalisePrefsKey(colKey), (Integer) evt.getNewValue()); + } + } + + @Override + public void setVisible(TableColumn column, boolean visible) + { + String colKey = column.getIdentifier().toString(); + colVisibleCtx.setBoolean(normalisePrefsKey(colKey), visible); + super.setVisible(column, visible); + } +} Modified: Trunk/pcgen/code/src/java/pcgen/gui2/util/JDynamicTable.java =================================================================== --- Trunk/pcgen/code/src/java/pcgen/gui2/util/JDynamicTable.java 2013-02-09 23:50:53 UTC (rev 19413) +++ Trunk/pcgen/code/src/java/pcgen/gui2/util/JDynamicTable.java 2013-02-09 23:54:17 UTC (rev 19414) @@ -22,10 +22,7 @@ import java.awt.Container; import java.awt.event.ActionEvent; -import java.beans.PropertyChangeEvent; -import java.beans.PropertyChangeListener; import java.util.List; - import javax.swing.AbstractAction; import javax.swing.JButton; import javax.swing.JCheckBoxMenuItem; @@ -36,17 +33,15 @@ import javax.swing.event.TableColumnModelEvent; import javax.swing.table.TableColumn; import javax.swing.table.TableColumnModel; - -import pcgen.gui2.UIPropertyContext; import pcgen.gui2.util.event.DynamicTableColumnModelListener; import pcgen.gui2.util.table.DefaultDynamicTableColumnModel; import pcgen.gui2.util.table.DynamicTableColumnModel; -import pcgen.system.PropertyContext; /** + * * @author Connor Petty <cpm...@us...> */ -public class JDynamicTable extends JTableEx implements PropertyChangeListener +public class JDynamicTable extends JTableEx { private final DynamicTableColumnModelListener listener = new DynamicTableColumnModelListener() @@ -76,19 +71,7 @@ private final JButton cornerButton = new JButton(new CornerAction()); private DynamicTableColumnModel dynamicColumnModel = null; private JPopupMenu menu = new JPopupMenu(); - private final PropertyContext baseContext; - private final String prefsKey; - /** - * Create a new instance of JDynamicTable - * @param prefsKey The key for storage of use preferences for the table. - */ - public JDynamicTable(String prefsKey) - { - this.prefsKey = prefsKey; - baseContext = UIPropertyContext.createContext("tablePrefs"); - } - @Override protected void configureEnclosingScrollPane() { @@ -170,27 +153,8 @@ this.dynamicColumnModel.removeDynamicTableColumnModelListener(listener); } this.dynamicColumnModel = columnModel; - - PropertyContext viewPrefsContext = - baseContext.createChildContext(prefsKey); - PropertyContext colWidthCtx = viewPrefsContext.createChildContext("width"); //$NON-NLS-1$ - PropertyContext colVisibleCtx = viewPrefsContext.createChildContext("visible"); //$NON-NLS-1$ - for (int i = 0; i < columnModel.getColumnCount(); i++) - { - TableColumn column = columnModel.getColumn(i); - String colKey = - normalisePrefsKey(column.getHeaderValue().toString()); - column.setPreferredWidth(colWidthCtx.initInt(colKey, 75)); - columnModel.setVisible( - column, - colVisibleCtx.initBoolean(colKey, - columnModel.isVisible(column))); - column.addPropertyChangeListener(this); - } - columnModel.addDynamicTableColumnModelListener(listener); super.setColumnModel(columnModel); - List<TableColumn> columns = columnModel.getAvailableColumns(); menu.removeAll(); if (!columns.isEmpty()) @@ -207,30 +171,6 @@ } } - private String normalisePrefsKey(String origKey) - { - return origKey.replaceAll("[^\\w\\.]", "_"); //$NON-NLS-1$ //$NON-NLS-2$ - } - - /** - * {@inheritDoc} - */ - @Override - public void propertyChange(PropertyChangeEvent evt) - { - if (isShowing() && "width".equals(evt.getPropertyName()) //$NON-NLS-1$ - && evt.getSource() instanceof TableColumn) - { - TableColumn col = (TableColumn) evt.getSource(); - PropertyContext context = - baseContext.createChildContext(prefsKey) - .createChildContext("width"); //$NON-NLS-1$ - String colKey = col.getHeaderValue().toString(); - context.setInt(normalisePrefsKey(colKey), - (Integer) evt.getNewValue()); - } - } - private class CornerAction extends AbstractAction { @@ -268,11 +208,6 @@ public void actionPerformed(ActionEvent e) { dynamicColumnModel.setVisible(column, visible = !visible); - PropertyContext context = - baseContext.createChildContext(prefsKey) - .createChildContext("visible"); //$NON-NLS-1$ - context.setBoolean(normalisePrefsKey(column.getHeaderValue() - .toString()), visible); } } Modified: Trunk/pcgen/code/src/java/pcgen/gui2/util/JTableSortingHeader.java =================================================================== --- Trunk/pcgen/code/src/java/pcgen/gui2/util/JTableSortingHeader.java 2013-02-09 23:50:53 UTC (rev 19413) +++ Trunk/pcgen/code/src/java/pcgen/gui2/util/JTableSortingHeader.java 2013-02-09 23:54:17 UTC (rev 19414) @@ -109,12 +109,12 @@ setModel(defaultModel); } Icon icon = null; - TableColumn currentColumn = jTable.getColumn(value); + int modelIndex = jTable.convertColumnIndexToModel(column); List<? extends SortingPriority> list = getTable().getSortingPriority(); if (!list.isEmpty()) { SortingPriority order = list.get(0); - if (order.getColumn() == currentColumn.getModelIndex()) + if (order.getColumn() == modelIndex) { switch (order.getMode()) { Modified: Trunk/pcgen/code/src/java/pcgen/gui2/util/JTreeViewTable.java =================================================================== --- Trunk/pcgen/code/src/java/pcgen/gui2/util/JTreeViewTable.java 2013-02-09 23:50:53 UTC (rev 19413) +++ Trunk/pcgen/code/src/java/pcgen/gui2/util/JTreeViewTable.java 2013-02-09 23:54:17 UTC (rev 19414) @@ -59,6 +59,7 @@ import pcgen.core.facade.event.ListListener; import pcgen.core.facade.util.ListFacade; import pcgen.gui2.UIPropertyContext; +import pcgen.gui2.tools.PrefTableColumnModel; import pcgen.gui2.util.event.DynamicTableColumnModelListener; import pcgen.gui2.util.table.DefaultDynamicTableColumnModel; import pcgen.gui2.util.table.DynamicTableColumnModel; @@ -88,16 +89,15 @@ * @author Connor Petty <cpm...@us...> */ @SuppressWarnings("serial") -public class JTreeViewTable<T> extends JTreeTable implements PropertyChangeListener +public class JTreeViewTable<T> extends JTreeTable { - /** Preferences jey for the width of the tree view column. */ + /** Preferences key for the width of the tree view column. */ private static final String TREE_VIEW_COL_PREFS_KEY = "TreeView"; /** The preferences key for the selected tree view index. */ private static final String VIEW_INDEX_PREFS_KEY = "viewIdx"; private final DynamicTableColumnModelListener listener = new DynamicTableColumnModelListener() { - @Override public void availableColumnAdded(TableColumnModelEvent event) { @@ -140,36 +140,6 @@ /** * {@inheritDoc} */ - @Override - public void propertyChange(PropertyChangeEvent evt) - { - if (isShowing() && "width".equals(evt.getPropertyName()) //$NON-NLS-1$ - && evt.getSource() instanceof TableColumn) - { - TableColumn col = (TableColumn) evt.getSource(); -// Logging.errorPrint("new width of " + evt.getNewValue() + " for " -// + this.viewModel.getDataView().getPrefsKey() + "." -// + normalisePrefsKey(col.getHeaderValue().toString()) + " from " -// + evt.getOldValue()); - PropertyContext context = - baseContext.createChildContext( - this.viewModel.getDataView().getPrefsKey()) - .createChildContext("width"); //$NON-NLS-1$ - String colKey = col.getHeaderValue().toString(); - if (colKey.equals(treetableModel.getSelectedTreeView().getViewName())) - { - colKey = TREE_VIEW_COL_PREFS_KEY; - } - context.setInt(normalisePrefsKey(colKey), (Integer) evt.getNewValue()); - } - - } - - private String normalisePrefsKey(String origKey) - { - return origKey.replaceAll("[^\\w\\.]", "_"); //$NON-NLS-1$ //$NON-NLS-2$ - } - protected <TM> TreeViewTableModel<TM> createDefaultTreeViewTableModel(DataView<TM> dataView) { return new TreeViewTableModel<TM>(dataView); @@ -190,32 +160,13 @@ @SuppressWarnings("unchecked") ListMap<Visibility, TableColumn, List<TableColumn>> listMap = CollectionMaps.createListMap(HashMap.class, ArrayList.class); - PropertyContext viewPrefsContext = - baseContext.createChildContext(this.viewModel.getDataView() - .getPrefsKey()); - PropertyContext colWidthCtx = viewPrefsContext.createChildContext("width"); //$NON-NLS-1$ - PropertyContext colVisibleCtx = viewPrefsContext.createChildContext("visible"); //$NON-NLS-1$ int index = 1; for (DataViewColumn column : dataView.getDataColumns()) { TableColumn tableColumn = new TableColumn(index++); tableColumn.setHeaderValue(column.getName()); - String prefsKey = - normalisePrefsKey(tableColumn.getHeaderValue().toString()); Visibility vis = column.getVisibility(); - if (vis != Visibility.ALWAYS_VISIBLE) - { - boolean showCol = - colVisibleCtx.initBoolean(prefsKey, - vis == Visibility.INITIALLY_VISIBLE); - vis = - showCol ? Visibility.INITIALLY_VISIBLE - : Visibility.INITIALLY_INVISIBLE; - } listMap.add(vis, tableColumn); - - tableColumn.setPreferredWidth(colWidthCtx.initInt(prefsKey, 75)); - tableColumn.addPropertyChangeListener(this); } List<TableColumn> columns = listMap.get(Visibility.ALWAYS_VISIBLE); @@ -223,17 +174,17 @@ { columns = Collections.emptyList(); } - DynamicTableColumnModel model = new DefaultDynamicTableColumnModel(columns.size() + 1); + + PrefTableColumnModel model = new PrefTableColumnModel(this.viewModel.getDataView().getPrefsKey(), + columns.size() + 1); TableColumn viewColumn = new TableColumn(); viewColumn.setHeaderValue(startingView.getViewName()); - model.addColumn(viewColumn); - viewColumn.setPreferredWidth(colWidthCtx.initInt( - normalisePrefsKey(TREE_VIEW_COL_PREFS_KEY), 150)); - viewColumn.addPropertyChangeListener(this); + viewColumn.setIdentifier(TREE_VIEW_COL_PREFS_KEY); + model.addColumn(viewColumn, true, 150); for (TableColumn column : columns) { - model.addColumn(column); + model.addColumn(column, true, 75); } columns = listMap.get(Visibility.INITIALLY_VISIBLE); @@ -241,8 +192,7 @@ { for (TableColumn column : columns) { - model.addColumn(column); - model.setVisible(column, true); + model.addColumn(column, true, 75); } } @@ -251,7 +201,7 @@ { for (TableColumn column : columns) { - model.addColumn(column); + model.addColumn(column, false, 75); } } return model; @@ -399,15 +349,15 @@ protected void setTreeView(TreeView<? super T> view) { - TableColumn viewColumn = getColumn(treetableModel.getSelectedTreeView().getViewName()); + TableColumn viewColumn = getColumn(TREE_VIEW_COL_PREFS_KEY); treetableModel.setSelectedTreeView(view); viewColumn.setHeaderValue(view.getViewName()); sortModel(); getTableHeader().repaint(); PropertyContext context = baseContext.createChildContext( - this.viewModel.getDataView().getPrefsKey()); - + this.viewModel.getDataView().getPrefsKey()); + int index = getIndex(viewModel.getTreeViews(), view); if (index >= 0) { @@ -422,7 +372,7 @@ * @return The index or -1 if not found. */ private int getIndex(ListFacade<? extends TreeView<T>> treeViews, - TreeView<? super T> view) + TreeView<? super T> view) { for (int i = 0; i < treeViews.getSize(); i++) { @@ -446,7 +396,7 @@ ListFacade<? extends TreeView<T>> views = viewModel.getTreeViews(); PropertyContext context = baseContext.createChildContext( - viewModel.getDataView().getPrefsKey()); + viewModel.getDataView().getPrefsKey()); int viewIndex = context.initInt(VIEW_INDEX_PREFS_KEY, viewModel.getDefaultTreeViewIndex()); TreeView<? super T> startingView = views.getElementAt(viewIndex); DataView<T> dataView = viewModel.getDataView(); @@ -466,7 +416,6 @@ setColumnModel(createTableColumnModel(startingView, dataView)); SwingUtilities.invokeLater(new Runnable() { - @Override public void run() { @@ -483,15 +432,15 @@ { return treetableModel.getSelectedTreeView(); } - + /** - * Find the named view. + * Find the named view. * @param views The list of TreeViews. * @param viewName The name of the desired view. * @return The matching view, or the first one if none match. */ private TreeView<? super T> findViewByName( - ListFacade<? extends TreeView<T>> views, String viewName) + ListFacade<? extends TreeView<T>> views, String viewName) { for (TreeView<T> treeView : views) { @@ -534,7 +483,7 @@ ListFacade<? extends TreeView<T>> views = viewModel.getTreeViews(); PropertyContext context = baseContext.createChildContext(viewModel.getDataView() - .getPrefsKey()); + .getPrefsKey()); int viewIndex = context.initInt(VIEW_INDEX_PREFS_KEY, viewModel.getDefaultTreeViewIndex()); TreeView<? super T> startingView = views.getElementAt(viewIndex); @@ -593,12 +542,6 @@ public void actionPerformed(ActionEvent e) { dynamicColumnModel.setVisible(column, visible = !visible); - PropertyContext context = - baseContext.createChildContext( - viewModel.getDataView().getPrefsKey()) - .createChildContext("visible"); //$NON-NLS-1$ - context.setBoolean(normalisePrefsKey(column.getHeaderValue() - .toString()), visible); } } @@ -663,7 +606,7 @@ protected void maybeShowPopup(MouseEvent e) { if (e.isPopupTrigger() && getTrackedColumn().getHeaderValue() - == treetableModel.getSelectedTreeView().getViewName()) + == treetableModel.getSelectedTreeView().getViewName()) { TableColumnModel columnmodel = getColumnModel(); Rectangle rect = getHeaderRect(columnmodel.getColumnIndexAtX(e.getX())); This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <cpm...@us...> - 2013-02-10 01:25:08
|
Revision: 19416 http://sourceforge.net/p/pcgen/code/19416 Author: cpmeister Date: 2013-02-10 01:25:05 +0000 (Sun, 10 Feb 2013) Log Message: ----------- Filters now remember state Issue#: CODE-1511 Modified Paths: -------------- Trunk/pcgen/code/src/java/pcgen/gui2/filter/FilterButton.java Trunk/pcgen/code/src/java/pcgen/gui2/tabs/AbilityChooserTab.java Trunk/pcgen/code/src/java/pcgen/gui2/tabs/ClassInfoTab.java Trunk/pcgen/code/src/java/pcgen/gui2/tabs/DomainInfoTab.java Trunk/pcgen/code/src/java/pcgen/gui2/tabs/PurchaseInfoTab.java Trunk/pcgen/code/src/java/pcgen/gui2/tabs/RaceInfoTab.java Trunk/pcgen/code/src/java/pcgen/gui2/tabs/SkillInfoTab.java Trunk/pcgen/code/src/java/pcgen/gui2/tabs/TemplateInfoTab.java Modified: Trunk/pcgen/code/src/java/pcgen/gui2/filter/FilterButton.java =================================================================== --- Trunk/pcgen/code/src/java/pcgen/gui2/filter/FilterButton.java 2013-02-10 00:58:24 UTC (rev 19415) +++ Trunk/pcgen/code/src/java/pcgen/gui2/filter/FilterButton.java 2013-02-10 01:25:05 UTC (rev 19416) @@ -24,6 +24,9 @@ import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import javax.swing.JToggleButton; +import org.apache.commons.lang.StringUtils; +import pcgen.gui2.UIPropertyContext; +import pcgen.system.PropertyContext; /** * This class represents a simple filter represented as a toggle button. When the button is selected @@ -38,10 +41,23 @@ private FilterHandler filterHandler; private Filter<C, E> filter; + private PropertyContext filterContext; - public FilterButton() + public FilterButton(String prefKey) { + this(prefKey, false); + } + + public FilterButton(String prefKey, boolean defaultSelectedState) + { + if (StringUtils.isEmpty(prefKey)) + { + throw new NullPointerException("prefKey cannot be null"); + } addActionListener(this); + PropertyContext baseContext = UIPropertyContext.createContext("filterPrefs"); + filterContext = baseContext.createChildContext(prefKey); + setSelected(filterContext.initBoolean("active", defaultSelectedState)); } @Override @@ -73,6 +89,7 @@ public void actionPerformed(ActionEvent e) { filterHandler.refilter(); + filterContext.setBoolean("active", isSelected()); } } Modified: Trunk/pcgen/code/src/java/pcgen/gui2/tabs/AbilityChooserTab.java =================================================================== --- Trunk/pcgen/code/src/java/pcgen/gui2/tabs/AbilityChooserTab.java 2013-02-10 00:58:24 UTC (rev 19415) +++ Trunk/pcgen/code/src/java/pcgen/gui2/tabs/AbilityChooserTab.java 2013-02-10 01:25:05 UTC (rev 19416) @@ -106,7 +106,7 @@ this.addButton = new JButton(); this.removeButton = new JButton(); this.categoryBar = new FilterBar<CharacterFacade, AbilityCategoryFacade>(); - this.qFilterButton = new FilterButton<CharacterFacade, AbilityFacade>(); + this.qFilterButton = new FilterButton<CharacterFacade, AbilityFacade>("AbilityQualified"); initComponents(); } @@ -145,10 +145,10 @@ setTopComponent(topPane); - FilterButton<CharacterFacade, AbilityCategoryFacade> gainedFilterButton = new FilterButton<CharacterFacade, AbilityCategoryFacade>(); + FilterButton<CharacterFacade, AbilityCategoryFacade> gainedFilterButton = + new FilterButton<CharacterFacade, AbilityCategoryFacade>("AbilityGained", true); gainedFilterButton.setText(LanguageBundle.getString("in_gained")); //$NON-NLS-1$ gainedFilterButton.setEnabled(true); - gainedFilterButton.setSelected(true); gainedFilterButton.setFilter(new Filter<CharacterFacade, AbilityCategoryFacade>() { @Override @@ -600,12 +600,12 @@ public void restoreState(Hashtable<?, ?> state) { //AbilityTransferHandler handler = (AbilityTransferHandler) state.get(AbilityTransferHandler.class); - + ((CategoryFilterHandler) state.get(CategoryFilterHandler.class)).install(); + ((AbilityFilterHandler) state.get(AbilityFilterHandler.class)).install(); categoryTable.setModel((CategoryTableModel) state.get(CategoryTableModel.class)); categoryTable.setSelectionModel((ListSelectionModel) state.get(ListSelectionModel.class)); //selectedTreeViewPanel.setTransferHandler(handler); //availableTreeViewPanel.setTransferHandler(handler); - selectedTreeViewPanel.setTreeTableModel((AbilityTreeTableModel) state.get(AbilityTreeTableModel.class)); ((AvailableAbilityTreeViewModel) state.get(AvailableAbilityTreeViewModel.class)).install(); selectedTreeViewPanel.setTreeCellRenderer((AbilityRenderer) state.get(AbilityRenderer.class)); @@ -613,12 +613,10 @@ addButton.setAction((AddAction) state.get(AddAction.class)); removeButton.setAction((RemoveAction) state.get(RemoveAction.class)); ((InfoHandler) state.get(InfoHandler.class)).install(); - ((CategoryFilterHandler) state.get(CategoryFilterHandler.class)).install(); ((CategoryTableModel) state.get(CategoryTableModel.class)).install(); ((AddAction) state.get(AddAction.class)).install(); ((RemoveAction) state.get(RemoveAction.class)).install(); - ((AbilityFilterHandler) state.get(AbilityFilterHandler.class)).install(); - + ensureCategorySelected(); } Modified: Trunk/pcgen/code/src/java/pcgen/gui2/tabs/ClassInfoTab.java =================================================================== --- Trunk/pcgen/code/src/java/pcgen/gui2/tabs/ClassInfoTab.java 2013-02-10 00:58:24 UTC (rev 19415) +++ Trunk/pcgen/code/src/java/pcgen/gui2/tabs/ClassInfoTab.java 2013-02-10 01:25:05 UTC (rev 19416) @@ -117,7 +117,7 @@ this.tabTitle = new TabTitle("in_clClass"); //$NON-NLS-1$ this.infoPane = new InfoPane(LanguageBundle.getString("in_clInfo")); //$NON-NLS-1$ this.spinner = new JSpinner(new SpinnerNumberModel(1, 1, 50, 1)); - this.qFilterButton = new FilterButton<Object, ClassFacade>(); + this.qFilterButton = new FilterButton<Object, ClassFacade>("ClassQualified"); initComponents(); } @@ -302,12 +302,12 @@ addButton.setAction(addClassAction); removeButton.setAction(removeClassAction); + ((QualifiedFilterHandler) state.get(QualifiedFilterHandler.class)).install(); availableTable.setTreeViewModel((ClassTreeViewModel) state.get(ClassTreeViewModel.class)); availableTable.setTreeCellRenderer((QualifiedTreeCellRenderer) state.get(QualifiedTreeCellRenderer.class)); ((InfoHandler) state.get(InfoHandler.class)).install(); ((AddClassAction) state.get(AddClassAction.class)).install(); - ((QualifiedFilterHandler) state.get(QualifiedFilterHandler.class)).install(); setSelectedClass((ClassFacade) state.get(SELECTED_CLASS)); } Modified: Trunk/pcgen/code/src/java/pcgen/gui2/tabs/DomainInfoTab.java =================================================================== --- Trunk/pcgen/code/src/java/pcgen/gui2/tabs/DomainInfoTab.java 2013-02-10 00:58:24 UTC (rev 19415) +++ Trunk/pcgen/code/src/java/pcgen/gui2/tabs/DomainInfoTab.java 2013-02-10 01:25:05 UTC (rev 19416) @@ -110,7 +110,7 @@ this.selectedDomain = new JLabel(); this.deityInfo = new InfoPane("in_deityInfo"); //$NON-NLS-1$ this.domainInfo = new InfoPane("in_domainInfo"); //$NON-NLS-1$ - this.qFilterButton = new FilterButton<Object, DomainFacade>(); + this.qFilterButton = new FilterButton<Object, DomainFacade>("DomainQualified"); initComponents(); } Modified: Trunk/pcgen/code/src/java/pcgen/gui2/tabs/PurchaseInfoTab.java =================================================================== --- Trunk/pcgen/code/src/java/pcgen/gui2/tabs/PurchaseInfoTab.java 2013-02-10 00:58:24 UTC (rev 19415) +++ Trunk/pcgen/code/src/java/pcgen/gui2/tabs/PurchaseInfoTab.java 2013-02-10 01:25:05 UTC (rev 19416) @@ -170,7 +170,8 @@ FilterBar<CharacterFacade, EquipmentFacade> filterBar = new FilterBar<CharacterFacade, EquipmentFacade>(); {// Filters filterBar.addDisplayableFilter(new SearchFilterPanel()); - FilterButton<CharacterFacade, EquipmentFacade> premadeFilter = new FilterButton<CharacterFacade, EquipmentFacade>(); + FilterButton<CharacterFacade, EquipmentFacade> premadeFilter = + new FilterButton<CharacterFacade, EquipmentFacade>("EqQualified");//$NON-NLS-1$ premadeFilter.setText(LanguageBundle.getString("in_igQualFilter")); //$NON-NLS-1$ premadeFilter.setFilter(new Filter<CharacterFacade, EquipmentFacade>() { @@ -182,7 +183,8 @@ } }); - FilterButton<CharacterFacade, EquipmentFacade> customFilter = new FilterButton<CharacterFacade, EquipmentFacade>(); + FilterButton<CharacterFacade, EquipmentFacade> customFilter = + new FilterButton<CharacterFacade, EquipmentFacade>("EqAffordable");//$NON-NLS-1$ customFilter.setText(LanguageBundle.getString("in_igAffordFilter")); //$NON-NLS-1$ customFilter.setFilter(new Filter<CharacterFacade, EquipmentFacade>() { @@ -437,6 +439,7 @@ @Override public void restoreModels(Hashtable<?, ?> state) { + ((EquipmentFilterHandler) state.get(EquipmentFilterHandler.class)).install(); ((AvailableTreeViewModel) state.get(AvailableTreeViewModel.class)).install(); availableTable.setTreeCellRenderer((EquipmentRenderer) state.get(EquipmentRenderer.class)); purchasedTable.setTreeViewModel((TreeViewModel<EquipmentFacade>) state.get(PurchasedTreeViewModel.class)); @@ -451,7 +454,6 @@ allowDebt.setAction((AllowDebtAction) state.get(AllowDebtAction.class)); ((EquipInfoHandler) state.get(EquipInfoHandler.class)).install(); - ((EquipmentFilterHandler) state.get(EquipmentFilterHandler.class)).install(); ((EquipmentTransferHandler) state.get(EquipmentTransferHandler.class)).install(); ((UseAutoResizeAction) state.get(UseAutoResizeAction.class)).install(); ((AddAction) state.get(AddAction.class)).install(); Modified: Trunk/pcgen/code/src/java/pcgen/gui2/tabs/RaceInfoTab.java =================================================================== --- Trunk/pcgen/code/src/java/pcgen/gui2/tabs/RaceInfoTab.java 2013-02-10 00:58:24 UTC (rev 19415) +++ Trunk/pcgen/code/src/java/pcgen/gui2/tabs/RaceInfoTab.java 2013-02-10 01:25:05 UTC (rev 19416) @@ -95,8 +95,8 @@ this.infoPane = new InfoPane(LanguageBundle.getString("in_irRaceInfo")); //$NON-NLS-1$ this.selectRaceButton = new JButton(); this.removeButton = new JButton(); - this.qFilterButton = new FilterButton<Object, RaceFacade>(); - this.noRacialHdFilterButton = new FilterButton<Object, RaceFacade>(); + this.qFilterButton = new FilterButton<Object, RaceFacade>("RaceQualified"); + this.noRacialHdFilterButton = new FilterButton<Object, RaceFacade>("RaceNoHD"); initComponents(); } @@ -188,6 +188,8 @@ @Override public void restoreModels(Hashtable<?, ?> state) { + ((QualifiedFilterHandler) state.get(QualifiedFilterHandler.class)).install(); + ((NoRacialHdFilterHandler) state.get(NoRacialHdFilterHandler.class)).install(); raceTable.setTreeViewModel((RaceTreeViewModel) state.get(Models.AvailableViewModel)); selectedTable.setTreeViewModel((RaceTreeViewModel) state.get(Models.SelectedViewModel)); ((RaceDataView) state.get(Models.AvailableDataModel)).install(); @@ -195,9 +197,7 @@ ((InfoHandler) state.get(InfoHandler.class)).install(); ((SelectRaceAction) state.get(SelectRaceAction.class)).install(); ((RemoveRaceAction) state.get(RemoveRaceAction.class)).install(); - ((QualifiedFilterHandler) state.get(QualifiedFilterHandler.class)).install(); - ((NoRacialHdFilterHandler) state.get(NoRacialHdFilterHandler.class)).install(); - + raceTable.setTreeCellRenderer((QualifiedTreeCellRenderer) state.get(QualifiedTreeCellRenderer.class)); selectedTable.setTreeCellRenderer((QualifiedTreeCellRenderer) state.get(QualifiedTreeCellRenderer.class)); selectRaceButton.setAction((SelectRaceAction) state.get(SelectRaceAction.class)); Modified: Trunk/pcgen/code/src/java/pcgen/gui2/tabs/SkillInfoTab.java =================================================================== --- Trunk/pcgen/code/src/java/pcgen/gui2/tabs/SkillInfoTab.java 2013-02-10 00:58:24 UTC (rev 19415) +++ Trunk/pcgen/code/src/java/pcgen/gui2/tabs/SkillInfoTab.java 2013-02-10 01:25:05 UTC (rev 19416) @@ -100,8 +100,8 @@ this.skillcostTable = new JTable(); this.skillpointTable = new JTable(); this.infoPane = new InfoPane(); - this.cFilterButton = new FilterButton<CharacterFacade, SkillFacade>(); - this.trainedFilterButton = new FilterButton<CharacterFacade, SkillFacade>(); + this.cFilterButton = new FilterButton<CharacterFacade, SkillFacade>("SkillQualified"); + this.trainedFilterButton = new FilterButton<CharacterFacade, SkillFacade>("SkillTrained"); this.tabTitle = new TabTitle("in_skills"); //$NON-NLS-1$ this.htmlPane = new JEditorPane(); initComponents(); @@ -203,11 +203,12 @@ @Override public void restoreModels(Hashtable<?, ?> state) { + ((FilterHandler) state.get(FilterHandler.class)).install(); skillpointTable.setModel((SkillPointTableModel) state.get(SkillPointTableModel.class)); skillpointTable.setSelectionModel((ListSelectionModel) state.get(ListSelectionModel.class)); skillcostTable.setModel((SkillCostTableModel) state.get(SkillCostTableModel.class)); skillTable.setDefaultEditor(Float.class, (SkillRankSpinnerEditor) state.get(SkillRankSpinnerEditor.class)); - ((FilterHandler) state.get(FilterHandler.class)).install(); + ((SkillTreeViewModel) state.get(SkillTreeViewModel.class)).install(skillTable); ((InfoHandler) state.get(InfoHandler.class)).install(); ((LevelSelectionHandler) state.get(LevelSelectionHandler.class)).install(); Modified: Trunk/pcgen/code/src/java/pcgen/gui2/tabs/TemplateInfoTab.java =================================================================== --- Trunk/pcgen/code/src/java/pcgen/gui2/tabs/TemplateInfoTab.java 2013-02-10 00:58:24 UTC (rev 19415) +++ Trunk/pcgen/code/src/java/pcgen/gui2/tabs/TemplateInfoTab.java 2013-02-10 01:25:05 UTC (rev 19416) @@ -88,7 +88,7 @@ this.addButton = new JButton(); this.removeButton = new JButton(); this.infoPane = new InfoPane("in_irTemplateInfo"); //$NON-NLS-1$ - this.qFilterButton = new FilterButton<CharacterFacade, TemplateFacade>(); + this.qFilterButton = new FilterButton<CharacterFacade, TemplateFacade>("TemplateQualified"); initComponents(); } @@ -176,6 +176,7 @@ @Override public void restoreModels(Hashtable<?, ?> state) { + ((QualifiedFilterHandler) state.get(QualifiedFilterHandler.class)).install(); availableTable.setTreeViewModel((TemplateTreeViewModel) state.get(Models.AvailableModel)); selectedTable.setTreeViewModel((TemplateTreeViewModel) state.get(Models.SelectedModel)); ((TemplateDataView) state.get(Models.AvailableDataView)).install(); @@ -183,8 +184,7 @@ ((InfoHandler) state.get(Models.InfoHandler)).install(); ((AddAction) state.get(Models.AddAction)).install(); ((RemoveAction) state.get(Models.RemoveAction)).install(); - ((QualifiedFilterHandler) state.get(QualifiedFilterHandler.class)).install(); - + addButton.setAction((AddAction) state.get(Models.AddAction)); removeButton.setAction((RemoveAction) state.get(Models.RemoveAction)); availableTable.setTreeCellRenderer((QualifiedTreeCellRenderer) state.get(Models.TemplateRenderer)); @@ -345,7 +345,6 @@ private final Filter<CharacterFacade, TemplateFacade> qFilter = new Filter<CharacterFacade, TemplateFacade>() { - @Override public boolean accept(CharacterFacade context, TemplateFacade element) { This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |