From: <cpm...@us...> - 2010-05-30 22:44:12
|
Revision: 12022 http://pcgen.svn.sourceforge.net/pcgen/?rev=12022&view=rev Author: cpmeister Date: 2010-05-30 22:44:05 +0000 (Sun, 30 May 2010) Log Message: ----------- [UI TODO] Tab name should be blank and name used until the user chooses to enter something Modified Paths: -------------- sandbox/cdomui/code/src/java/pcgen/gui2/CharacterTabs.java sandbox/cdomui/code/src/java/pcgen/system/CharacterManager.java Modified: sandbox/cdomui/code/src/java/pcgen/gui2/CharacterTabs.java =================================================================== --- sandbox/cdomui/code/src/java/pcgen/gui2/CharacterTabs.java 2010-05-30 22:01:14 UTC (rev 12021) +++ sandbox/cdomui/code/src/java/pcgen/gui2/CharacterTabs.java 2010-05-30 22:44:05 UTC (rev 12022) @@ -30,7 +30,9 @@ import javax.swing.JTabbedPane; import javax.swing.event.ChangeEvent; import javax.swing.event.ChangeListener; +import org.apache.commons.lang.StringUtils; import pcgen.core.facade.CharacterFacade; +import pcgen.core.facade.ReferenceFacade; import pcgen.core.facade.event.ListEvent; import pcgen.core.facade.event.ListListener; import pcgen.core.facade.event.ReferenceEvent; @@ -51,7 +53,7 @@ private final PCGenFrame frame; //This holds the list of characters as well as the order in which they are displayed private final List<CharacterFacade> characters; - private final Map<CharacterFacade, TabNameListener> listenerMap; + private final Map<CharacterFacade, TabNameHandler> listenerMap; private final InfoTabbedPane infoTabbedPane; private final JPopupMenu popupMenu; @@ -60,7 +62,7 @@ this.frame = frame; this.characters = new ArrayList<CharacterFacade>(); this.infoTabbedPane = new InfoTabbedPane(); - this.listenerMap = new HashMap<CharacterFacade, TabNameListener>(); + this.listenerMap = new HashMap<CharacterFacade, TabNameHandler>(); this.popupMenu = new JPopupMenu(); initComponents(); } @@ -85,10 +87,16 @@ private void addCharacter(CharacterFacade character) { characters.add(character); - addTab(character.getTabNameRef().getReference()); - TabNameListener listener = new TabNameListener(character); - listenerMap.put(character, listener); - character.getTabNameRef().addReferenceListener(listener); + ReferenceFacade<String> tabNameRef = character.getTabNameRef(); + if (StringUtils.isNotEmpty(tabNameRef.getReference())) + { + addTab(tabNameRef.getReference()); + } + else + { + addTab(character.getNameRef().getReference()); + } + listenerMap.put(character, new TabNameHandler(character)); } private void removeCharacter(CharacterFacade character) @@ -96,8 +104,7 @@ int index = characters.indexOf(character); characters.remove(index); removeTabAt(index); - TabNameListener listener = listenerMap.remove(character); - character.getTabNameRef().removeReferenceListener(listener); + listenerMap.remove(character).removeListeners(); } public void referenceChanged(ReferenceEvent<CharacterFacade> e) @@ -135,7 +142,7 @@ removeAll(); for (CharacterFacade character : characters) { - TabNameListener listener = listenerMap.remove(character); + TabNameHandler listener = listenerMap.remove(character); character.getTabNameRef().removeReferenceListener(listener); } characters.clear(); @@ -146,19 +153,49 @@ infoTabbedPane.clearStateMap(); } - private class TabNameListener implements ReferenceListener<String> + private class TabNameHandler implements ReferenceListener<String> { private CharacterFacade character; + private ReferenceFacade<String> tabNameRef; + private ReferenceFacade<String> nameRef; - public TabNameListener(CharacterFacade character) + public TabNameHandler(CharacterFacade character) { this.character = character; + this.tabNameRef = character.getTabNameRef(); + this.nameRef = character.getNameRef(); + + tabNameRef.addReferenceListener(this); + nameRef.addReferenceListener(this); } + public void removeListeners() + { + tabNameRef.removeReferenceListener(this); + nameRef.removeReferenceListener(this); + } + public void referenceChanged(ReferenceEvent<String> e) { - setTitleAt(characters.indexOf(character), e.getNewReference()); + if (e.getSource() == nameRef) + { + if (StringUtils.isEmpty(tabNameRef.getReference())) + { + setTitleAt(characters.indexOf(character), e.getNewReference()); + } + } + else + { + if (StringUtils.isNotEmpty(e.getNewReference())) + { + setTitleAt(characters.indexOf(character), e.getNewReference()); + } + else + { + setTitleAt(characters.indexOf(character), nameRef.getReference()); + } + } } } Modified: sandbox/cdomui/code/src/java/pcgen/system/CharacterManager.java =================================================================== --- sandbox/cdomui/code/src/java/pcgen/system/CharacterManager.java 2010-05-30 22:01:14 UTC (rev 12021) +++ sandbox/cdomui/code/src/java/pcgen/system/CharacterManager.java 2010-05-30 22:44:05 UTC (rev 12022) @@ -60,7 +60,6 @@ CharacterFacade character = new CharacterMock(dataset); String name = createNewCharacterName(); character.setName(name); - character.setTabName(name); characters.addElement(character); return character; } This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |