From: <jde...@us...> - 2006-06-08 11:45:55
|
Revision: 1054 Author: jdempsey Date: 2006-06-08 03:18:09 -0700 (Thu, 08 Jun 2006) ViewCVS: http://svn.sourceforge.net/pcgen/?rev=1054&view=rev Log Message: ----------- Fix for bug #1443258 - Edit in current text field lost when switching characters - copy revision #1053 from 5.10.x to trunk ViewCVS Links: ------------- http://svn.sourceforge.net/pcgen/?rev=1053&view=rev Modified Paths: -------------- Trunk/pcgen/code/src/java/pcgen/gui/tabs/InfoClasses.java Trunk/pcgen/code/src/java/pcgen/gui/tabs/InfoDescription.java Trunk/pcgen/code/src/java/pcgen/gui/tabs/InfoFeats.java Trunk/pcgen/code/src/java/pcgen/gui/tabs/InfoGear.java Trunk/pcgen/code/src/java/pcgen/gui/tabs/InfoSkills.java Trunk/pcgen/code/src/java/pcgen/gui/tabs/InfoSummary.java Modified: Trunk/pcgen/code/src/java/pcgen/gui/tabs/InfoClasses.java =================================================================== --- Trunk/pcgen/code/src/java/pcgen/gui/tabs/InfoClasses.java 2006-06-08 09:50:49 UTC (rev 1053) +++ Trunk/pcgen/code/src/java/pcgen/gui/tabs/InfoClasses.java 2006-06-08 10:18:09 UTC (rev 1054) @@ -754,7 +754,7 @@ { hpButton.addActionListener(new HpButtonActionListener()); } - experience.addFocusListener(new ExperienceBoxFocusAdapter()); + experience.setInputVerifier(new ExperienceBoxInputVerifier()); availableTable.getSelectionModel().addListSelectionListener(new AvailableListSelectionListener()); selectedTable.getSelectionModel().addListSelectionListener(new SelectedListSelectionListener()); availableTable.addMouseListener(new JTreeTableMouseAdapter(availableTable, new AvailableClickHandler(), false)); @@ -2175,22 +2175,19 @@ } } - private class ExperienceBoxFocusAdapter extends FocusAdapter + private class ExperienceBoxInputVerifier extends InputVerifier { - private boolean isProcessingExperienceFocusLost = false; - - public void focusLost(FocusEvent evt) + public boolean shouldYieldFocus(JComponent input) { - // - // for some reason this gets processed twice, want to ignore the second (and subsequent) - // - if (!isProcessingExperienceFocusLost) - { - isProcessingExperienceFocusLost = true; - experienceFocusLost(); - isProcessingExperienceFocusLost = false; - } + boolean valueOk = verify(input); + experienceFocusLost(); + return valueOk; } + + public boolean verify(JComponent input) + { + return true; + } } private class HpButtonActionListener implements ActionListener Modified: Trunk/pcgen/code/src/java/pcgen/gui/tabs/InfoDescription.java =================================================================== --- Trunk/pcgen/code/src/java/pcgen/gui/tabs/InfoDescription.java 2006-06-08 09:50:49 UTC (rev 1053) +++ Trunk/pcgen/code/src/java/pcgen/gui/tabs/InfoDescription.java 2006-06-08 10:18:09 UTC (rev 1054) @@ -198,10 +198,6 @@ private NoteTreeNode rootTreeNode; private PortraitChooser portrait; -// private FocusAdapter ageAdapter = null; -// private FocusAdapter htAdapter = null; -// private FocusAdapter wtAdapter = null; -// private FocusAdapter playerNameAdapter = null; private WholeNumberField ageText = new WholeNumberField(0, 0); private boolean textIsDirty = false; @@ -1108,14 +1104,6 @@ } }); - txtName.addFocusListener(new FocusAdapter() - { - public void focusLost(FocusEvent evt) - { - txtName_Changed(); - } - }); - randName.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent evt) @@ -1133,29 +1121,41 @@ } }); - FocusListener fl = new FocusAdapter() + InputVerifier inputVerify = new InputVerifier() + { + public boolean shouldYieldFocus(JComponent input) { - public void focusLost(FocusEvent evt) - { - updateTextFields(); - } - }; - - skinText.addFocusListener(fl); - hairColorText.addFocusListener(fl); - hairStyleText.addFocusListener(fl); - eyeColorText.addFocusListener(fl); - speechPatternText.addFocusListener(fl); - phobiaText.addFocusListener(fl); - interestsText.addFocusListener(fl); - catchPhraseText.addFocusListener(fl); - personality1Text.addFocusListener(fl); - personality2Text.addFocusListener(fl); - fregionText.addFocusListener(fl); - residenceText.addFocusListener(fl); - locationText.addFocusListener(fl); - birthplaceText.addFocusListener(fl); - + boolean valueOk = verify(input); + updateTextFields(input); + return valueOk; + } + + public boolean verify(JComponent input) + { + return true; + } + }; + skinText.setInputVerifier(inputVerify); + hairColorText.setInputVerifier(inputVerify); + hairStyleText.setInputVerifier(inputVerify); + eyeColorText.setInputVerifier(inputVerify); + speechPatternText.setInputVerifier(inputVerify); + phobiaText.setInputVerifier(inputVerify); + interestsText.setInputVerifier(inputVerify); + catchPhraseText.setInputVerifier(inputVerify); + personality1Text.setInputVerifier(inputVerify); + personality2Text.setInputVerifier(inputVerify); + fregionText.setInputVerifier(inputVerify); + residenceText.setInputVerifier(inputVerify); + locationText.setInputVerifier(inputVerify); + birthplaceText.setInputVerifier(inputVerify); + ageText.setInputVerifier(inputVerify); + htText.setInputVerifier(inputVerify); + wtText.setInputVerifier(inputVerify); + playerNameText.setInputVerifier(inputVerify); + txtName.setInputVerifier(inputVerify); + + checkAll.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent evt) @@ -1181,42 +1181,6 @@ } }); - ageText.addFocusListener(new FocusAdapter() - { - public void focusLost(FocusEvent evt) - { - pc.setDirty(true); - pc.setAge(Delta.parseInt("0" + ageText.getText())); - updateDisplayedAge(); - } - }); - - htText.addFocusListener(new FocusAdapter() - { - public void focusLost(FocusEvent evt) - { - pc.setDirty(true); - pc.setHeight(Globals.getGameModeUnitSet().convertHeightFromUnitSet(Delta.parseDouble("0" + htText.getText()))); - } - }); - - wtText.addFocusListener(new FocusAdapter() - { - public void focusLost(FocusEvent evt) - { - pc.setDirty(true); - pc.setWeight(Globals.getGameModeUnitSet().convertWeightFromUnitSet(Delta.parseDouble("0" + wtText.getText()))); - } - }); - - playerNameText.addFocusListener(new FocusAdapter() - { - public void focusLost(FocusEvent evt) - { - pc.setPlayersName(playerNameText.getText()); - } - }); - MouseListener ml = new MouseAdapter() { public void mousePressed(MouseEvent e) @@ -1947,7 +1911,7 @@ if (x > -1) { - ((NoteItem) pc.getNotesList().get(x)).setValue(dataText.getText()); + pc.getNotesList().get(x).setValue(dataText.getText()); pc.setDirty(true); } else if (currentItem == bioNote) @@ -2004,6 +1968,98 @@ pc.setWeight(Globals.getGameModeUnitSet().convertWeightFromUnitSet(Delta.parseDouble("0" + wtText.getText()))); } + /** + * Update the value of the supplied field. Normally called as part of an + * InputVerify action + * @param input The field being modified. + */ + private void updateTextFields(JComponent input) + { + if (input == skinText) + { + pc.setSkinColor(skinText.getText()); + } + else if (input == hairColorText) + { + pc.setHairColor(hairColorText.getText()); + } + else if (input == hairStyleText) + { + pc.setHairStyle(hairStyleText.getText()); + } + else if (input == eyeColorText) + { + pc.setEyeColor(eyeColorText.getText()); + } + else if (input == speechPatternText) + { + pc.setSpeechTendency(speechPatternText.getText()); + } + else if (input == phobiaText) + { + pc.setPhobias(phobiaText.getText()); + } + else if (input == interestsText) + { + pc.setInterests(interestsText.getText()); + } + else if (input == catchPhraseText) + { + pc.setCatchPhrase(catchPhraseText.getText()); + } + else if (input == personality1Text) + { + pc.setTrait1(personality1Text.getText()); + } + else if (input == personality2Text) + { + pc.setTrait2(personality2Text.getText()); + } + else if (input == residenceText) + { + pc.setResidence(residenceText.getText()); + } + else if (input == locationText) + { + pc.setLocation(locationText.getText()); + } + else if (input == birthplaceText) + { + pc.setBirthplace(birthplaceText.getText()); + } + else if (input == birthdayText) + { + pc.setBirthday(birthdayText.getText()); + } + else if (input == ageText) + { + pc.setDirty(true); + pc.setAge(Delta.parseInt("0" + ageText.getText())); + updateDisplayedAge(); + } + else if (input == htText) + { + pc.setDirty(true); + pc.setHeight(Globals.getGameModeUnitSet().convertHeightFromUnitSet( + Delta.parseDouble("0" + htText.getText()))); + } + else if (input == wtText) + { + pc.setDirty(true); + pc.setWeight(Globals.getGameModeUnitSet().convertWeightFromUnitSet( + Delta.parseDouble("0" + wtText.getText()))); + } + else if (input == playerNameText) + { + pc.setPlayersName(playerNameText.getText()); + } + else if (input == txtName) + { + pc.setName(txtName.getText()); + PCGen_Frame1.forceUpdate_PlayerTabs(); + } + } + // Notes popup menu listener private class NotePopupListener extends MouseAdapter { Modified: Trunk/pcgen/code/src/java/pcgen/gui/tabs/InfoFeats.java =================================================================== --- Trunk/pcgen/code/src/java/pcgen/gui/tabs/InfoFeats.java 2006-06-08 09:50:49 UTC (rev 1053) +++ Trunk/pcgen/code/src/java/pcgen/gui/tabs/InfoFeats.java 2006-06-08 10:18:09 UTC (rev 1054) @@ -51,6 +51,7 @@ import javax.swing.BorderFactory; import javax.swing.DefaultListSelectionModel; +import javax.swing.InputVerifier; import javax.swing.JButton; import javax.swing.JCheckBox; import javax.swing.JComponent; @@ -900,10 +901,11 @@ } else { - numFeatsField.addFocusListener(new FocusAdapter() + numFeatsField.setInputVerifier(new InputVerifier() { - public void focusLost(FocusEvent evt) + public boolean shouldYieldFocus(JComponent input) { + boolean valueOk = verify(input); if (numFeatsField.getText().length() > 0) { if (pc != null) @@ -914,10 +916,15 @@ } else if (pc != null) { -// numFeatsField.setText(String.valueOf(pc.getFeats())); showRemainingFeatPoints(); } + return valueOk; } + + public boolean verify(JComponent input) + { + return true; + } }); } viewAvailComboBox.addActionListener(new ActionListener() Modified: Trunk/pcgen/code/src/java/pcgen/gui/tabs/InfoGear.java =================================================================== --- Trunk/pcgen/code/src/java/pcgen/gui/tabs/InfoGear.java 2006-06-08 09:50:49 UTC (rev 1053) +++ Trunk/pcgen/code/src/java/pcgen/gui/tabs/InfoGear.java 2006-06-08 10:18:09 UTC (rev 1054) @@ -58,6 +58,7 @@ import javax.swing.BorderFactory; import javax.swing.DefaultComboBoxModel; import javax.swing.DefaultListSelectionModel; +import javax.swing.InputVerifier; import javax.swing.JButton; import javax.swing.JCheckBox; import javax.swing.JComponent; @@ -1664,24 +1665,31 @@ private void initActionListeners() { - gold.addFocusListener(new FocusAdapter() + gold.setInputVerifier(new InputVerifier() + { + public boolean shouldYieldFocus(JComponent input) { - public void focusLost(FocusEvent evt) + boolean valueOk = verify(input); + if (gold.getText().length() > 0) { - if (gold.getText().length() > 0) + if (pc != null) { - if (pc != null) - { - pc.setDirty(true); - pc.setGold(gold.getText()); - } + pc.setDirty(true); + pc.setGold(gold.getText()); } - else if (pc != null) - { - gold.setText(pc.getGold().toString()); - } } - }); + else if (pc != null) + { + gold.setText(pc.getGold().toString()); + } + return valueOk; + } + + public boolean verify(JComponent input) + { + return true; + } + }); addComponentListener(new ComponentAdapter() { public void componentShown(ComponentEvent evt) Modified: Trunk/pcgen/code/src/java/pcgen/gui/tabs/InfoSkills.java =================================================================== --- Trunk/pcgen/code/src/java/pcgen/gui/tabs/InfoSkills.java 2006-06-08 09:50:49 UTC (rev 1053) +++ Trunk/pcgen/code/src/java/pcgen/gui/tabs/InfoSkills.java 2006-06-08 10:18:09 UTC (rev 1054) @@ -55,6 +55,7 @@ import javax.swing.BorderFactory; import javax.swing.DefaultComboBoxModel; import javax.swing.DefaultListSelectionModel; +import javax.swing.InputVerifier; import javax.swing.JButton; import javax.swing.JComponent; import javax.swing.JLabel; @@ -922,13 +923,21 @@ } } - private void currCharClassSkillPntsFocusLost() + /** + * Action a user requested change in the number of skill points for + * the current class level. + */ + private void currCharClassSkillPntsChanged() { final PlayerCharacter currentPC = pc; currentPC.setDirty(true); PCClass aClass = this.getSelectedPCClass(); PCLevelInfo pcl = getSelectedLevelInfo(currentPC); + if (pcl == null) + { + return; + } int skillPool = pcl.getSkillPointsRemaining(); if (currCharClassSkillPnts.getText().length() > 0) @@ -1406,12 +1415,19 @@ } else { - totalSkillPointsLeft.addFocusListener(new FocusAdapter() + totalSkillPointsLeft.setInputVerifier(new InputVerifier() { - public void focusLost(FocusEvent evt) + public boolean shouldYieldFocus(JComponent input) { - totalSkillPointsLeftFocusLost(); + boolean valueOk = verify(input); + totalSkillPointsLeftChanged(); + return valueOk; } + + public boolean verify(JComponent input) + { + return true; + } }); } Utility.buildConstraints(gridBagConstraints2, 3, 2, 1, 1, 5, 5); @@ -1422,12 +1438,19 @@ if (currCharClassSkillPnts != null) { - currCharClassSkillPnts.addFocusListener(new FocusAdapter() + currCharClassSkillPnts.setInputVerifier(new InputVerifier() { - public void focusLost(FocusEvent evt) + public boolean shouldYieldFocus(JComponent input) { - currCharClassSkillPntsFocusLost(); + boolean valueOk = verify(input); + currCharClassSkillPntsChanged(); + return valueOk; } + + public boolean verify(JComponent input) + { + return true; + } }); Utility.buildConstraints(gridBagConstraints2, 3, 3, 1, 1, 5, 5); @@ -1809,7 +1832,11 @@ } } - private void totalSkillPointsLeftFocusLost() + /** + * Action a user request to change the total number of skill points + * remaining. + */ + private void totalSkillPointsLeftChanged() { final PlayerCharacter currentPC = pc; currentPC.setDirty(true); @@ -1826,6 +1853,10 @@ currentPC.setSkillPoints(anInt); final int x = currentPC.getClassList().size(); + if (x == 0) + { + return; + } final int y = anInt / x; PCClass aClass; Modified: Trunk/pcgen/code/src/java/pcgen/gui/tabs/InfoSummary.java =================================================================== --- Trunk/pcgen/code/src/java/pcgen/gui/tabs/InfoSummary.java 2006-06-08 09:50:49 UTC (rev 1053) +++ Trunk/pcgen/code/src/java/pcgen/gui/tabs/InfoSummary.java 2006-06-08 10:18:09 UTC (rev 1054) @@ -49,6 +49,7 @@ import javax.swing.BorderFactory; import javax.swing.BoxLayout; import javax.swing.DefaultComboBoxModel; +import javax.swing.InputVerifier; import javax.swing.JButton; import javax.swing.JCheckBox; import javax.swing.JComponent; @@ -74,8 +75,6 @@ import javax.swing.table.TableColumn; import pcgen.core.Constants; -import pcgen.core.Equipment; -import pcgen.core.EquipmentList; import pcgen.core.GameMode; import pcgen.core.Globals; import pcgen.core.PCClass; @@ -88,7 +87,6 @@ import pcgen.core.StatList; import pcgen.core.pclevelinfo.PCLevelInfo; import pcgen.core.prereq.PrereqHandler; -import pcgen.core.utils.CoreUtility; import pcgen.core.utils.MessageType; import pcgen.core.utils.ShowMessageDelegate; import pcgen.gui.CharacterInfo; @@ -339,10 +337,11 @@ * The listener for when the PC name has been changed so the * PC can be updated. */ - private FocusAdapter pcNameAdapter = new FocusAdapter() + private InputVerifier pcNameInputVerify = new InputVerifier() { - public void focusLost(FocusEvent evt) + public boolean shouldYieldFocus(JComponent input) { + boolean valueOk = verify(input); final String entry = pcNameText.getText(); if ((entry != null) && (!entry.equals(pc.getName()))) @@ -350,24 +349,37 @@ pc.setName(entry); PCGen_Frame1.forceUpdate_PlayerTabs(); } + return valueOk; } + + public boolean verify(JComponent input) + { + return true; + } }; /** * The listener for when the player name has been changed so the * PC can be updated. */ - private FocusAdapter playerNameAdapter = new FocusAdapter() + private InputVerifier playerNameInputVerify = new InputVerifier() { - public void focusLost(FocusEvent evt) + public boolean shouldYieldFocus(JComponent input) { + boolean valueOk = verify(input); String entry = playerNameText.getText(); if ((entry != null) && (!entry.equals(pc.getPlayersName()))) { pc.setPlayersName(entry); } + return valueOk; } + + public boolean verify(JComponent input) + { + return true; + } }; /** @@ -418,17 +430,24 @@ * The listener for when the PC tab name has been changed so the * PC can be updated. */ - private FocusAdapter tabNameAdapter = new FocusAdapter() + private InputVerifier tabNameInputVerify = new InputVerifier() { - public void focusLost(FocusEvent evt) + public boolean shouldYieldFocus(JComponent input) { + boolean valueOk = verify(input); String entry = tabNameText.getText(); if ((entry != null) && (!entry.equals(pc.getTabName()))) { pc.setTabName(entry); } + return valueOk; } + + public boolean verify(JComponent input) + { + return true; + } }; private JButton abilitiesButton; @@ -1517,7 +1536,7 @@ c.anchor = GridBagConstraints.WEST; gridbag.setConstraints(tabNameText, c); northPanel.add(tabNameText); - tabNameText.addFocusListener(tabNameAdapter); + tabNameText.setInputVerifier(tabNameInputVerify); Utility.buildConstraints(c, 0, 3, 1, 1, 0, 0); c.fill = GridBagConstraints.NONE; @@ -1532,7 +1551,7 @@ c.anchor = GridBagConstraints.WEST; gridbag.setConstraints(playerNameText, c); northPanel.add(playerNameText); - playerNameText.addFocusListener(playerNameAdapter); + playerNameText.setInputVerifier(playerNameInputVerify); // Layout the second column Utility.buildConstraints(c, 3, 0, 1, 1, 0, 0); @@ -2040,14 +2059,14 @@ */ private void startListeners() { - pcNameText.addFocusListener(pcNameAdapter); + pcNameText.setInputVerifier(pcNameInputVerify); randName.addActionListener(randNameListener); alignmentComboBox.addActionListener(alignmentListener); raceComboBox.addActionListener(raceListener); raceComboBox.addFocusListener(raceFocusListener); classComboBox.addActionListener(classListener); - tabNameText.addFocusListener(tabNameAdapter); - playerNameText.addFocusListener(playerNameAdapter); + tabNameText.setInputVerifier(tabNameInputVerify); + playerNameText.setInputVerifier(playerNameInputVerify); lvlDownButton.addActionListener(levelCmdListener); lvlUpButton.addActionListener(levelCmdListener); @@ -2291,14 +2310,14 @@ */ private void stopListeners() { - pcNameText.removeFocusListener(pcNameAdapter); + pcNameText.setInputVerifier(null); randName.removeActionListener(randNameListener); alignmentComboBox.removeActionListener(alignmentListener); raceComboBox.removeActionListener(raceListener); raceComboBox.removeFocusListener(raceFocusListener); classComboBox.removeActionListener(classListener); - tabNameText.removeFocusListener(tabNameAdapter); - playerNameText.removeFocusListener(playerNameAdapter); + tabNameText.setInputVerifier(null); + playerNameText.setInputVerifier(null); lvlDownButton.removeActionListener(levelCmdListener); lvlUpButton.removeActionListener(levelCmdListener); This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |