diff --git a/dlight.sendto/src/org/netbeans/modules/dlight/sendto/action/DynamicMenu.java b/dlight.sendto/src/org/netbeans/modules/dlight/sendto/action/DynamicMenu.java --- a/dlight.sendto/src/org/netbeans/modules/dlight/sendto/action/DynamicMenu.java +++ b/dlight.sendto/src/org/netbeans/modules/dlight/sendto/action/DynamicMenu.java @@ -49,10 +49,12 @@ import javax.swing.AbstractAction; import javax.swing.Action; import javax.swing.JMenu; +import javax.swing.JPopupMenu; import javax.swing.JPopupMenu.Separator; import javax.swing.SwingUtilities; import org.openide.util.Exceptions; import org.openide.util.ImageUtilities; +import org.openide.util.Lookup; import org.openide.util.NbBundle; /** @@ -66,9 +68,12 @@ private final Object countersLock = new Object(); private final List actions = new ArrayList(); private int vcount = 0; + Lookup actionContext; + boolean init; - public DynamicMenu(String name) { + public DynamicMenu(String name, Lookup actionContext) { super(name); + this.actionContext = actionContext; add(validating); } @@ -81,6 +86,15 @@ } } + @Override + public JPopupMenu getPopupMenu() { + if (!init) { + MenuConstructor.start(this, actionContext); + init = true; + } + return super.getPopupMenu(); + } + private void refresh() { try { SwingUtilities.invokeAndWait(new Runnable() { @@ -153,14 +167,14 @@ public void actionPerformed(ActionEvent e) { } }; - validating = - new AbstractAction(NbBundle.getMessage(DynamicMenu.class, "ValidatingAction.text"), // NOI18N - ImageUtilities.loadImageIcon("org/netbeans/modules/dlight/sendto/resources/wait.png", false)) { // NOI18N + validating + = new AbstractAction(NbBundle.getMessage(DynamicMenu.class, "ValidatingAction.text"), // NOI18N + ImageUtilities.loadImageIcon("org/netbeans/modules/dlight/sendto/resources/wait.png", false)) { // NOI18N - @Override - public void actionPerformed(ActionEvent e) { - } - }; + @Override + public void actionPerformed(ActionEvent e) { + } + }; emptyAction.setEnabled(false); validating.setEnabled(false); } diff --git a/dlight.sendto/src/org/netbeans/modules/dlight/sendto/action/MenuConstructor.java b/dlight.sendto/src/org/netbeans/modules/dlight/sendto/action/MenuConstructor.java --- a/dlight.sendto/src/org/netbeans/modules/dlight/sendto/action/MenuConstructor.java +++ b/dlight.sendto/src/org/netbeans/modules/dlight/sendto/action/MenuConstructor.java @@ -53,8 +53,20 @@ */ public class MenuConstructor { - static DynamicMenu constructMenu(Lookup actionContext) { - final DynamicMenu menu = new DynamicMenu(NbBundle.getMessage(MenuConstructor.class, "SendToMenuName")); // NOI18N +// static DynamicMenu constructMenu(Lookup actionContext) { +// final DynamicMenu menu = new DynamicMenu(NbBundle.getMessage(MenuConstructor.class, "SendToMenuName")); // NOI18N +// final List configs = ConfigurationsRegistry.getConfigurations(); +// +// if (configs == null) { +// menu.setEmpty(); +// } else { +// MenuUpdator.start(menu, actionContext, configs); +// } +// +// return menu; +// } + + static void start(DynamicMenu menu, Lookup actionContext) { final List configs = ConfigurationsRegistry.getConfigurations(); if (configs == null) { @@ -62,7 +74,5 @@ } else { MenuUpdator.start(menu, actionContext, configs); } - - return menu; } } diff --git a/dlight.sendto/src/org/netbeans/modules/dlight/sendto/action/MenuMetaAction.java b/dlight.sendto/src/org/netbeans/modules/dlight/sendto/action/MenuMetaAction.java --- a/dlight.sendto/src/org/netbeans/modules/dlight/sendto/action/MenuMetaAction.java +++ b/dlight.sendto/src/org/netbeans/modules/dlight/sendto/action/MenuMetaAction.java @@ -42,14 +42,11 @@ package org.netbeans.modules.dlight.sendto.action; import java.awt.event.ActionEvent; -import java.io.IOException; import java.util.Collection; import javax.swing.AbstractAction; import javax.swing.Action; import javax.swing.JMenu; import javax.swing.JMenuItem; -import javax.swing.text.JTextComponent; -import org.netbeans.api.editor.EditorRegistry; import org.openide.awt.ActionID; import org.openide.awt.ActionReference; import org.openide.awt.ActionReferences; @@ -60,6 +57,7 @@ import org.openide.util.ContextAwareAction; import org.openide.util.HelpCtx; import org.openide.util.Lookup; +import org.openide.util.NbBundle; import org.openide.util.actions.Presenter; import org.openide.util.actions.SystemAction; @@ -100,7 +98,7 @@ @Override public Action createContextAwareInstance(Lookup actionContext) { - return new MenuWrapperAction(actionContext, MenuConstructor.constructMenu(actionContext)); + return new MenuWrapperAction(actionContext, new DynamicMenu(NbBundle.getMessage(MenuConstructor.class, "SendToMenuName"), actionContext)); } private static class MenuWrapperAction extends AbstractAction implements Presenter.Popup {