[vassalengine-svn-trunk] [vassalengine-svn] SF.net SVN: vassalengine: [3700] VASSAL-src/trunk/src/V
Brought to you by:
rodneykinney,
uckelman
From: <uck...@us...> - 2008-05-31 18:57:37
|
Revision: 3700 http://vassalengine.svn.sourceforge.net/vassalengine/?rev=3700&view=rev Author: uckelman Date: 2008-05-31 11:57:42 -0700 (Sat, 31 May 2008) Log Message: ----------- Merged uckelman-current 3695:HEAD. Added minimal javadoc to VASSAL.tools.menu. Don't build duplicate menus in EditorWindow on MacOSX; instead, use markers to find where to place items in the File and Help menus. Separator visibility for groups needed to take into account adjacent groups. Modified Paths: -------------- VASSAL-src/trunk/src/VASSAL/build/module/documentation/BrowserHelpFile.java VASSAL-src/trunk/src/VASSAL/build/module/documentation/HelpFile.java VASSAL-src/trunk/src/VASSAL/build/module/documentation/Tutorial.java VASSAL-src/trunk/src/VASSAL/launch/EditorWindow.java VASSAL-src/trunk/src/VASSAL/launch/PlayerWindow.java VASSAL-src/trunk/src/VASSAL/tools/menu/AbstractParent.java VASSAL-src/trunk/src/VASSAL/tools/menu/AbstractProxy.java VASSAL-src/trunk/src/VASSAL/tools/menu/CheckBoxMenuItemProxy.java VASSAL-src/trunk/src/VASSAL/tools/menu/ChildProxy.java VASSAL-src/trunk/src/VASSAL/tools/menu/Functor.java VASSAL-src/trunk/src/VASSAL/tools/menu/MacOSXMenuManager.java VASSAL-src/trunk/src/VASSAL/tools/menu/MenuBarProxy.java VASSAL-src/trunk/src/VASSAL/tools/menu/MenuItemProxy.java VASSAL-src/trunk/src/VASSAL/tools/menu/MenuManager.java VASSAL-src/trunk/src/VASSAL/tools/menu/MenuMarker.java VASSAL-src/trunk/src/VASSAL/tools/menu/MenuProxy.java VASSAL-src/trunk/src/VASSAL/tools/menu/ParentProxy.java VASSAL-src/trunk/src/VASSAL/tools/menu/SeparatorProxy.java Modified: VASSAL-src/trunk/src/VASSAL/build/module/documentation/BrowserHelpFile.java =================================================================== --- VASSAL-src/trunk/src/VASSAL/build/module/documentation/BrowserHelpFile.java 2008-05-31 18:24:40 UTC (rev 3699) +++ VASSAL-src/trunk/src/VASSAL/build/module/documentation/BrowserHelpFile.java 2008-05-31 18:57:42 UTC (rev 3700) @@ -212,12 +212,13 @@ public void addTo(Buildable parent) { launchItem = new MenuItemProxy(launch); - MenuManager.getInstance().addToSection("Documentation", launchItem); + MenuManager.getInstance().addToSection("Documentation.Module", launchItem); launch.setEnabled(true); } public void removeFrom(Buildable parent) { - MenuManager.getInstance().removeFromSection("Documentation", launchItem); + MenuManager.getInstance() + .removeFromSection("Documentation.Module", launchItem); launch.setEnabled(false); } Modified: VASSAL-src/trunk/src/VASSAL/build/module/documentation/HelpFile.java =================================================================== --- VASSAL-src/trunk/src/VASSAL/build/module/documentation/HelpFile.java 2008-05-31 18:24:40 UTC (rev 3699) +++ VASSAL-src/trunk/src/VASSAL/build/module/documentation/HelpFile.java 2008-05-31 18:57:42 UTC (rev 3700) @@ -237,12 +237,13 @@ public void addTo(Buildable b) { launchItem = new MenuItemProxy(launch); - MenuManager.getInstance().addToSection("Documentation", launchItem); + MenuManager.getInstance().addToSection("Documentation.Module", launchItem); launch.setEnabled(true); } public void removeFrom(Buildable b) { - MenuManager.getInstance().removeFromSection("Documentation", launchItem); + MenuManager.getInstance() + .removeFromSection("Documentation.Module", launchItem); launch.setEnabled(false); } Modified: VASSAL-src/trunk/src/VASSAL/build/module/documentation/Tutorial.java =================================================================== --- VASSAL-src/trunk/src/VASSAL/build/module/documentation/Tutorial.java 2008-05-31 18:24:40 UTC (rev 3699) +++ VASSAL-src/trunk/src/VASSAL/build/module/documentation/Tutorial.java 2008-05-31 18:57:42 UTC (rev 3700) @@ -195,9 +195,8 @@ protected MenuItemProxy launchItem; public void addTo(Buildable parent) { -// item = ((Documentation) parent).getHelpMenu().add(launch); launchItem = new MenuItemProxy(launch); - MenuManager.getInstance().addToSection("Documentation", launchItem); + MenuManager.getInstance().addToSection("Documentation.Module", launchItem); final String key = "viewedTutorial" + getConfigureName(); //$NON-NLS-1$ hasViewedTutorial = new BooleanConfigurer(key, null, Boolean.FALSE); @@ -206,10 +205,8 @@ } public void removeFrom(Buildable parent) { -// if (item != null) { -// ((Documentation) parent).getHelpMenu().remove(item); -// } - MenuManager.getInstance().removeFromSection("Documentation", launchItem); + MenuManager.getInstance() + .removeFromSection("Documentation.Module", launchItem); } public Class[] getAllowableConfigureComponents() { Modified: VASSAL-src/trunk/src/VASSAL/launch/EditorWindow.java =================================================================== --- VASSAL-src/trunk/src/VASSAL/launch/EditorWindow.java 2008-05-31 18:24:40 UTC (rev 3699) +++ VASSAL-src/trunk/src/VASSAL/launch/EditorWindow.java 2008-05-31 18:57:42 UTC (rev 3700) @@ -53,6 +53,7 @@ import VASSAL.configure.ValidationReportDialog; import VASSAL.i18n.Resources; import VASSAL.tools.ErrorLog; +import VASSAL.tools.menu.ChildProxy; import VASSAL.tools.menu.MenuBarProxy; import VASSAL.tools.menu.MenuManager; import VASSAL.tools.menu.MenuProxy; @@ -103,15 +104,18 @@ final MenuBarProxy mb = mm.getMenuBarProxyFor(this); // file menu - final MenuProxy fileMenu = - new MenuProxy(Resources.getString("General.file")); - - fileMenu.add(mm.addKey("Editor.save")); - fileMenu.add(mm.addKey("Editor.save_as")); - - if (!Info.isMacOSX()) { + if (Info.isMacOSX()) { + mm.addToSection("Editor.File", mm.addKey("Editor.save")); + mm.addToSection("Editor.File", mm.addKey("Editor.save_as")); + } + else { + final MenuProxy fileMenu = + new MenuProxy(Resources.getString("General.file")); + fileMenu.add(mm.addKey("Editor.save")); + fileMenu.add(mm.addKey("Editor.save_as")); fileMenu.addSeparator(); fileMenu.add(mm.addKey("General.quit")); + mb.add(fileMenu); } // edit menu @@ -125,7 +129,7 @@ editMenu.addSeparator(); editMenu.add(mm.addKey("Editor.ModuleEditor.properties")); editMenu.add(mm.addKey("Editor.ModuleEditor.translate")); - + // tools menu final MenuProxy toolsMenu = new MenuProxy(Resources.getString("General.tools")); @@ -133,23 +137,30 @@ toolsMenu.add(mm.addKey("create_module_updater")); toolsMenu.add(mm.addKey("Editor.ModuleEditor.update_saved")); + if (Info.isMacOSX()) { + mm.addToSection("Editor.MenuBar", editMenu); + mm.addToSection("Editor.MenuBar", toolsMenu); + } + else { + mb.add(editMenu); + mb.add(toolsMenu); + } + // help menu - final MenuProxy helpMenu = - new MenuProxy(Resources.getString("General.help")); - - helpMenu.add(mm.addKey("General.help")); - helpMenu.add(mm.addKey("Editor.ModuleEditor.reference_manual")); - - if (!Info.isMacOSX()) { + if (Info.isMacOSX()) { + mm.addToSection("Documentation.VASSAL", + mm.addKey("Editor.ModuleEditor.reference_manual")); + } + else { + final MenuProxy helpMenu = + new MenuProxy(Resources.getString("General.help")); + helpMenu.add(mm.addKey("General.help")); + helpMenu.add(mm.addKey("Editor.ModuleEditor.reference_manual")); helpMenu.addSeparator(); helpMenu.add(mm.addKey("AboutScreen.about_vassal")); + mb.add(helpMenu); } - mb.add(fileMenu); - mb.add(editMenu); - mb.add(toolsMenu); - mb.add(helpMenu); - final int mask = Toolkit.getDefaultToolkit().getMenuShortcutKeyMask(); saveAction = new SaveAction() { @@ -240,6 +251,16 @@ pack(); } + protected MenuProxy findMenuProxy(String name, MenuBarProxy mb) { + for (ChildProxy<?> c : mb.getChildren()) { + if (c instanceof MenuProxy) { + final MenuProxy m = (MenuProxy) c; + if (name.equals(m.getText())) return m; + } + } + return null; + } + /* * Each component must Save, SaveAs and close itself */ Modified: VASSAL-src/trunk/src/VASSAL/launch/PlayerWindow.java =================================================================== --- VASSAL-src/trunk/src/VASSAL/launch/PlayerWindow.java 2008-05-31 18:24:40 UTC (rev 3699) +++ VASSAL-src/trunk/src/VASSAL/launch/PlayerWindow.java 2008-05-31 18:57:42 UTC (rev 3700) @@ -77,7 +77,11 @@ fileMenu.add(mm.addKey("BasicLogger.begin_logfile")); fileMenu.add(mm.addKey("BasicLogger.end_logfile")); - if (!Info.isMacOSX()) { + if (Info.isMacOSX()) { + fileMenu.add(mm.addMarker("Editor.File.start")); + fileMenu.add(mm.addMarker("Editor.File.end")); + } + else { fileMenu.addSeparator(); fileMenu.add(mm.addKey("Prefs.edit_preferences")); fileMenu.addSeparator(); @@ -89,12 +93,14 @@ // help menu final MenuProxy helpMenu = new MenuProxy(Resources.getString("General.help")); - + + helpMenu.add(mm.addMarker("Documentation.VASSAL.start")); helpMenu.add(mm.addKey("General.help")); + helpMenu.add(mm.addMarker("Documentation.VASSAL.end")); helpMenu.addSeparator(); - helpMenu.add(mm.addMarker("Documentation.start")); - helpMenu.add(mm.addMarker("Documentation.end")); + helpMenu.add(mm.addMarker("Documentation.Module.start")); + helpMenu.add(mm.addMarker("Documentation.Module.end")); helpMenu.add(mm.addKey("Documentation.about_module")); @@ -115,6 +121,8 @@ mm.addAction("AboutScreen.about_vassal", AboutVASSAL.getAction()); mb.add(fileMenu); + mb.add(mm.addMarker("Editor.MenuBar.start")); + mb.add(mm.addMarker("Editor.MenuBar.end")); mb.add(helpMenu); setJMenuBar(mm.getMenuBarFor(this)); Modified: VASSAL-src/trunk/src/VASSAL/tools/menu/AbstractParent.java =================================================================== --- VASSAL-src/trunk/src/VASSAL/tools/menu/AbstractParent.java 2008-05-31 18:24:40 UTC (rev 3699) +++ VASSAL-src/trunk/src/VASSAL/tools/menu/AbstractParent.java 2008-05-31 18:57:42 UTC (rev 3700) @@ -23,6 +23,10 @@ import java.util.List; import javax.swing.JComponent; +/** + * @author Joel Uckelman + * @since 3.1.0 + */ public abstract class AbstractParent<T extends JComponent> extends AbstractProxy<T> implements ParentProxy { Modified: VASSAL-src/trunk/src/VASSAL/tools/menu/AbstractProxy.java =================================================================== --- VASSAL-src/trunk/src/VASSAL/tools/menu/AbstractProxy.java 2008-05-31 18:24:40 UTC (rev 3699) +++ VASSAL-src/trunk/src/VASSAL/tools/menu/AbstractProxy.java 2008-05-31 18:57:42 UTC (rev 3700) @@ -9,6 +9,10 @@ import java.util.List; import javax.swing.JComponent; +/** + * @author Joel Uckelman + * @since 3.1.0 + */ public abstract class AbstractProxy<T extends JComponent> implements ChildProxy<T> { protected final List<WeakReference<T>> peers = Modified: VASSAL-src/trunk/src/VASSAL/tools/menu/CheckBoxMenuItemProxy.java =================================================================== --- VASSAL-src/trunk/src/VASSAL/tools/menu/CheckBoxMenuItemProxy.java 2008-05-31 18:24:40 UTC (rev 3699) +++ VASSAL-src/trunk/src/VASSAL/tools/menu/CheckBoxMenuItemProxy.java 2008-05-31 18:57:42 UTC (rev 3700) @@ -25,6 +25,10 @@ import javax.swing.Action; import javax.swing.JCheckBoxMenuItem; +/** + * @author Joel Uckelman + * @since 3.1.0 + */ public class CheckBoxMenuItemProxy extends AbstractProxy<JCheckBoxMenuItem> implements ItemListener { Modified: VASSAL-src/trunk/src/VASSAL/tools/menu/ChildProxy.java =================================================================== --- VASSAL-src/trunk/src/VASSAL/tools/menu/ChildProxy.java 2008-05-31 18:24:40 UTC (rev 3699) +++ VASSAL-src/trunk/src/VASSAL/tools/menu/ChildProxy.java 2008-05-31 18:57:42 UTC (rev 3700) @@ -21,6 +21,10 @@ import javax.swing.JComponent; +/** + * @author Joel Uckelman + * @since 3.1.0 + */ public interface ChildProxy<T extends JComponent> { public ParentProxy getParent(); Modified: VASSAL-src/trunk/src/VASSAL/tools/menu/Functor.java =================================================================== --- VASSAL-src/trunk/src/VASSAL/tools/menu/Functor.java 2008-05-31 18:24:40 UTC (rev 3699) +++ VASSAL-src/trunk/src/VASSAL/tools/menu/Functor.java 2008-05-31 18:57:42 UTC (rev 3700) @@ -19,6 +19,10 @@ package VASSAL.tools.menu; +/** + * @author Joel Uckelman + * @since 3.1.0 + */ interface Functor<T> { public void apply(T peer); } Modified: VASSAL-src/trunk/src/VASSAL/tools/menu/MacOSXMenuManager.java =================================================================== --- VASSAL-src/trunk/src/VASSAL/tools/menu/MacOSXMenuManager.java 2008-05-31 18:24:40 UTC (rev 3699) +++ VASSAL-src/trunk/src/VASSAL/tools/menu/MacOSXMenuManager.java 2008-05-31 18:57:42 UTC (rev 3700) @@ -29,6 +29,10 @@ import com.apple.eawt.ApplicationAdapter; import com.apple.eawt.ApplicationEvent; +/** + * @author Joel Uckelman + * @since 3.1.0 + */ public class MacOSXMenuManager extends MenuManager { private final MenuBarProxy menuBar = new MenuBarProxy(); @@ -118,108 +122,4 @@ super.addAction(key, action); } } - -/* - @Override - public JMenu createMenu(String text) { - return new MasterJMenu(text); - } - - @Override - public JMenuItem createMenuItem(Action action) { - return new MasterJMenuItem(action); - } - - @Override - public JCheckBoxMenuItem createCheckBoxMenuItem(Action action) { - return new MasterJCheckBoxMenuItem(action); - } - - @Override - public JRadioButtonMenuItem createRadioButtonMenuItem(Action action) { - return new MasterJRadioButtonMenuItem(action); - } - - @Override - public JSeparator createSeparator() { - return new MasterJSeparator(); - } - - @Override - public JMenuItem addKey(String key) { - // don't reserve slots for Quit, Preferences, or About on Macs - if ("General.quit".equals(key) || - "Prefs.edit_preferences".equals(key) || - "AboutScreen.about_vassal".equals(key)) - return null; - - return super.addKey(key); - } - - @Override - public void addAction(String key, final Action action) { - // Quit, Preferences, and About go on the special application menu - - if ("General.quit".equals(key)) { - final Application app = Application.getApplication(); - app.addApplicationListener(new ApplicationAdapter() { - @Override - public void handleQuit(ApplicationEvent e) { - e.setHandled(false); - action.actionPerformed(null); - } - }); - - // no need to track enabled state, quit is always active - } - else if ("Prefs.edit_preferences".equals(key)) { - final Application app = Application.getApplication(); - app.addApplicationListener(new ApplicationAdapter() { - @Override - public void handlePreferences(ApplicationEvent e) { - e.setHandled(true); - action.actionPerformed(null); - } - }); - - app.addPreferencesMenuItem(); - app.setEnabledPreferencesMenu(action.isEnabled()); - - // track the enabled state of the prefs action - action.addPropertyChangeListener(new PropertyChangeListener() { - public void propertyChange(PropertyChangeEvent e) { - if ("enabled".equals(e.getPropertyName())) { - app.setEnabledPreferencesMenu((Boolean) e.getNewValue()); - } - } - }); - } - else if ("AboutScreen.about_vassal".equals(key)) { - final Application app = Application.getApplication(); - app.addApplicationListener(new ApplicationAdapter() { - @Override - public void handleAbout(ApplicationEvent e) { - e.setHandled(true); - action.actionPerformed(null); - } - }); - - app.addAboutMenuItem(); - app.setEnabledAboutMenu(action.isEnabled()); - - // track the enabled state of the prefs action - action.addPropertyChangeListener(new PropertyChangeListener() { - public void propertyChange(PropertyChangeEvent e) { - if ("enabled".equals(e.getPropertyName())) { - app.setEnabledAboutMenu((Boolean) e.getNewValue()); - } - } - }); - } - else { - // this is not one of the special actions - super.addAction(key, action); - } - } -*/ } Modified: VASSAL-src/trunk/src/VASSAL/tools/menu/MenuBarProxy.java =================================================================== --- VASSAL-src/trunk/src/VASSAL/tools/menu/MenuBarProxy.java 2008-05-31 18:24:40 UTC (rev 3699) +++ VASSAL-src/trunk/src/VASSAL/tools/menu/MenuBarProxy.java 2008-05-31 18:57:42 UTC (rev 3700) @@ -20,8 +20,13 @@ package VASSAL.tools.menu; import java.lang.ref.WeakReference; +import javax.swing.JComponent; import javax.swing.JMenuBar; +/** + * @author Joel Uckelman + * @since 3.1.0 + */ public class MenuBarProxy extends AbstractParent<JMenuBar> { /* @@ -50,8 +55,8 @@ final JMenuBar mb = new JMenuBar(); for (ChildProxy<?> child : children) { - if (child instanceof MenuMarker) continue; - mb.add(child.createPeer()); + final JComponent peer = child.createPeer(); + if (peer != null) mb.add(peer); } /* Modified: VASSAL-src/trunk/src/VASSAL/tools/menu/MenuItemProxy.java =================================================================== --- VASSAL-src/trunk/src/VASSAL/tools/menu/MenuItemProxy.java 2008-05-31 18:24:40 UTC (rev 3699) +++ VASSAL-src/trunk/src/VASSAL/tools/menu/MenuItemProxy.java 2008-05-31 18:57:42 UTC (rev 3700) @@ -23,6 +23,10 @@ import javax.swing.Action; import javax.swing.JMenuItem; +/** + * @author Joel Uckelman + * @since 3.1.0 + */ public class MenuItemProxy extends AbstractProxy<JMenuItem> { protected Action action; Modified: VASSAL-src/trunk/src/VASSAL/tools/menu/MenuManager.java =================================================================== --- VASSAL-src/trunk/src/VASSAL/tools/menu/MenuManager.java 2008-05-31 18:24:40 UTC (rev 3699) +++ VASSAL-src/trunk/src/VASSAL/tools/menu/MenuManager.java 2008-05-31 18:57:42 UTC (rev 3700) @@ -27,6 +27,10 @@ import javax.swing.JFrame; import javax.swing.JMenuBar; +/** + * @author Joel Uckelman + * @since 3.1.0 + */ public abstract class MenuManager { protected static MenuManager instance; @@ -47,6 +51,8 @@ private Map<String,List<MenuItemProxy>> actionLocations = new HashMap<String,List<MenuItemProxy>>(); + private Map<String,MenuMarker> markers = new HashMap<String,MenuMarker>(); + public MenuItemProxy addKey(String key) { List<MenuItemProxy> items = actionLocations.get(key); if (items == null) { @@ -55,7 +61,7 @@ } final MenuItemProxy item = new MenuItemProxy(); - items.add(item); + items.add(item); return item; } @@ -77,36 +83,36 @@ } public MenuMarker getMarker(String key) { - final List<MenuItemProxy> items = actionLocations.get(key); - if (items != null && items.size() > 0) { - final MenuItemProxy mip = items.get(0); - if (mip instanceof MenuMarker) return (MenuMarker) mip; - } - return null; + return markers.get(key); } public MenuMarker addMarker(String key) { - List<MenuItemProxy> items = actionLocations.get(key); - if (items == null) { - items = new ArrayList<MenuItemProxy>(); - actionLocations.put(key, items); - } - final MenuMarker marker = new MenuMarker(); - items.add(marker); + markers.put(key, marker); return marker; } public void addToSection(String key, ChildProxy<?> item) { final MenuMarker start = getMarker(key + ".start"); final MenuMarker end = getMarker(key + ".end"); - final MenuProxy parent = (MenuProxy) end.getParent(); + final ParentProxy parent = end.getParent(); + final int startPos = parent.getIndex(start); final int endPos = parent.getIndex(end); - // create the separator if this is the first item - if (startPos + 1 == endPos) { - parent.insertSeparator(endPos+1); + // do separator check if this is the first item in the group + if (parent instanceof MenuProxy && startPos + 1 == endPos) { + // check from the end of the group to the next visible item + // and insert a separator if that item is not one + if (nextVisibleItemNotASeparator(end)) { + ((MenuProxy) parent).insertSeparator(endPos+1); + } + + // check from the start of the group to the previous visible + // item and insert a separator if that item is not one + if (prevVisibleItemNotASeparator(start)) { + ((MenuProxy) parent).insertSeparator(startPos); + } } // insert the item between the markers @@ -116,16 +122,72 @@ public void removeFromSection(String key, ChildProxy<?> item) { final MenuMarker start = getMarker(key + ".start"); final MenuMarker end = getMarker(key + ".end"); - final MenuProxy parent = (MenuProxy) end.getParent(); + final ParentProxy parent = end.getParent(); // remove the item parent.remove(item); + + // do separator check if this was the last item in the group + if (parent instanceof MenuProxy) { + final int startPos = parent.getIndex(start); + final int endPos = parent.getIndex(end); + if (startPos + 1 == endPos) { + if (visibleItemBefore(start)) { + // if we have a group on each side, or before but not after; + // remove our top separator + parent.remove(startPos-1); + } + else if (visibleItemAfter(end)) { + // we have a group after, but none before; + // remove our bottom separator + parent.remove(endPos+1); + } + // otherwise, we were the sole group, our parent has no visible + // items now + } + } + } + + private boolean visibleItemAfter(ChildProxy<?> child) { + final ParentProxy parent = child.getParent(); + final int count = parent.getChildCount(); + for (int i = parent.getIndex(child) + 1; i < count; i++) { + final ChildProxy<?> c = parent.getChild(i); + if (!(c instanceof MenuMarker)) return true; + } + return false; + } + + private boolean visibleItemBefore(ChildProxy<?> child) { + final ParentProxy parent = child.getParent(); + for (int i = parent.getIndex(child) - 1; i >= 0; i++) { + final ChildProxy<?> c = parent.getChild(i); + if (!(c instanceof MenuMarker)) return true; + } + return false; + } + + private boolean nextVisibleItemNotASeparator(ChildProxy<?> child) { + final ParentProxy parent = child.getParent(); + final int count = parent.getChildCount(); + for (int i = parent.getIndex(child) + 1; i < count; i++) { + final ChildProxy<?> c = parent.getChild(i); + if (c instanceof MenuMarker) continue; - // remove the separator if this was the last item - final int startPos = parent.getIndex(start); - final int endPos = parent.getIndex(end); - if (startPos + 1 == endPos) { - parent.remove(endPos+1); + return !(c instanceof SeparatorProxy); } + return false; } + + private boolean prevVisibleItemNotASeparator(ChildProxy<?> child) { + final ParentProxy parent = child.getParent(); + for (int i = parent.getIndex(child) - 1; i >= 0; i--) { + final ChildProxy<?> c = parent.getChild(i); + if (c instanceof MenuMarker) continue; + + return !(c instanceof SeparatorProxy); + } + return false; + } + } Modified: VASSAL-src/trunk/src/VASSAL/tools/menu/MenuMarker.java =================================================================== --- VASSAL-src/trunk/src/VASSAL/tools/menu/MenuMarker.java 2008-05-31 18:24:40 UTC (rev 3699) +++ VASSAL-src/trunk/src/VASSAL/tools/menu/MenuMarker.java 2008-05-31 18:57:42 UTC (rev 3700) @@ -19,11 +19,24 @@ package VASSAL.tools.menu; -import javax.swing.JMenuItem; +import javax.swing.JComponent; -public class MenuMarker extends MenuItemProxy { - @Override - public JMenuItem createPeer() { - throw new UnsupportedOperationException(); +/** + * @author Joel Uckelman + * @since 3.1.0 + */ +public class MenuMarker implements ChildProxy<JComponent> { + protected ParentProxy parent; + + public ParentProxy getParent() { + return parent; } + + public void setParent(ParentProxy parent) { + this.parent = parent; + } + + public JComponent createPeer() { + return null; + } } Modified: VASSAL-src/trunk/src/VASSAL/tools/menu/MenuProxy.java =================================================================== --- VASSAL-src/trunk/src/VASSAL/tools/menu/MenuProxy.java 2008-05-31 18:24:40 UTC (rev 3699) +++ VASSAL-src/trunk/src/VASSAL/tools/menu/MenuProxy.java 2008-05-31 18:57:42 UTC (rev 3700) @@ -20,8 +20,13 @@ package VASSAL.tools.menu; import java.lang.ref.WeakReference; +import javax.swing.JComponent; import javax.swing.JMenu; +/** + * @author Joel Uckelman + * @since 3.1.0 + */ public class MenuProxy extends AbstractParent<JMenu> { private String text; @@ -43,6 +48,10 @@ return sep; } + public String getText() { + return text; + } + public void setText(final String text) { this.text = text; @@ -58,8 +67,8 @@ final JMenu menu = new JMenu(text); for (ChildProxy<?> child : children) { - if (child instanceof MenuMarker) continue; - menu.add(child.createPeer()); + final JComponent peer = child.createPeer(); + if (peer != null) menu.add(peer); } peers.add(new WeakReference<JMenu>(menu, queue)); Modified: VASSAL-src/trunk/src/VASSAL/tools/menu/ParentProxy.java =================================================================== --- VASSAL-src/trunk/src/VASSAL/tools/menu/ParentProxy.java 2008-05-31 18:24:40 UTC (rev 3699) +++ VASSAL-src/trunk/src/VASSAL/tools/menu/ParentProxy.java 2008-05-31 18:57:42 UTC (rev 3700) @@ -19,6 +19,10 @@ package VASSAL.tools.menu; +/** + * @author Joel Uckelman + * @since 3.1.0 + */ public interface ParentProxy { public void add(ChildProxy<?> child); Modified: VASSAL-src/trunk/src/VASSAL/tools/menu/SeparatorProxy.java =================================================================== --- VASSAL-src/trunk/src/VASSAL/tools/menu/SeparatorProxy.java 2008-05-31 18:24:40 UTC (rev 3699) +++ VASSAL-src/trunk/src/VASSAL/tools/menu/SeparatorProxy.java 2008-05-31 18:57:42 UTC (rev 3700) @@ -22,6 +22,10 @@ import java.lang.ref.WeakReference; import javax.swing.JSeparator; +/** + * @author Joel Uckelman + * @since 3.1.0 + */ public class SeparatorProxy extends AbstractProxy<JSeparator> { @Override public JSeparator createPeer() { This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. ------------------------------------------------------------------------- This SF.net email is sponsored by: Microsoft Defy all challenges. Microsoft(R) Visual Studio 2008. http://clk.atdmt.com/MRT/go/vse0120000070mrt/direct/01/ _______________________________________________ vassalengine-svn mailing list vas...@li... https://lists.sourceforge.net/lists/listinfo/vassalengine-svn |