# This patch file was generated by NetBeans IDE # Following Index: paths are relative to: /data/work/src/netbeans-vcs # This patch can be applied using context Tools: Patch action on respective folder. # It uses platform neutral UTF-8 encoding and \n newlines. # Above lines and this line are ignored by the patching process. Index: openide.loaders/apichanges.xml --- openide.loaders/apichanges.xml Base (BASE) +++ openide.loaders/apichanges.xml Locally Modified (Based On LOCAL) @@ -109,6 +109,22 @@ + + + lookup(DataObject.class) fallback + + + + + +

+ In FileSystemAction.createMenu(boolean popUp, Lookup lookup) + fallback on .lookup(DataObject.class) in case the given lookup + contains no nodes. +

+
+ +
DataEditorSupport.create(...., Callable<Pane>) Index: openide.loaders/manifest.mf --- openide.loaders/manifest.mf Base (BASE) +++ openide.loaders/manifest.mf Locally Modified (Based On LOCAL) @@ -1,6 +1,6 @@ Manifest-Version: 1.0 OpenIDE-Module: org.openide.loaders -OpenIDE-Module-Specification-Version: 7.23 +OpenIDE-Module-Specification-Version: 7.24 OpenIDE-Module-Localizing-Bundle: org/openide/loaders/Bundle.properties OpenIDE-Module-Provides: org.netbeans.modules.templates.v1_0 OpenIDE-Module-Layer: org/netbeans/modules/openide/loaders/layer.xml Index: openide.loaders/src/org/openide/actions/FileSystemAction.java --- openide.loaders/src/org/openide/actions/FileSystemAction.java Base (BASE) +++ openide.loaders/src/org/openide/actions/FileSystemAction.java Locally Modified (Based On LOCAL) @@ -95,12 +95,21 @@ n = WindowManager.getDefault ().getRegistry ().getActivatedNodes (); } - Map> fsSet = new HashMap>(); - - if (n != null) { - for (Node node : n) { + List l = new LinkedList(); + if(n == null || n.length == 0) { + l.addAll(lookup.lookupAll(DataObject.class)); + } else { + for(Node node : n) { DataObject obj = node.getCookie(DataObject.class); + if(obj != null) { + l.add(obj); + } + } + } + + if (!l.isEmpty()) { + for (DataObject obj : l) { while (obj instanceof DataShadow) obj = ((DataShadow) obj).getOriginal(); if (obj != null) { Index: openide.loaders/test/unit/src/org/openide/actions/FileSystemActionTest.java --- openide.loaders/test/unit/src/org/openide/actions/FileSystemActionTest.java Base (BASE) +++ openide.loaders/test/unit/src/org/openide/actions/FileSystemActionTest.java Locally Modified (Based On LOCAL) @@ -42,18 +42,22 @@ package org.openide.actions; +import java.awt.event.ActionEvent; import java.io.IOException; import java.util.prefs.Preferences; import javax.swing.Action; -import javax.swing.JComponent; +import javax.swing.JMenuItem; import org.netbeans.junit.NbTestCase; import org.openide.awt.DynamicMenuContent; import org.openide.filesystems.FileObject; import org.openide.filesystems.FileUtil; +import org.openide.filesystems.LocalFileSystem; import org.openide.loaders.DataFolder; +import org.openide.util.HelpCtx; import org.openide.util.Lookup; import org.openide.util.NbPreferences; import org.openide.util.actions.Presenter; +import org.openide.util.actions.SystemAction; import org.openide.util.lookup.Lookups; /** @@ -87,4 +91,35 @@ DynamicMenuContent submenu2 = (DynamicMenuContent)pm.getMenuPresenter(); assertEquals("One action", 1, submenu2.getMenuPresenters().length); } + + public void testCreateMenu() throws IOException { + TestFS fs = new TestFS(); + FileObject fo = fs.getRoot(); + + // create menu for a lookup containg a node + Lookup lkp = Lookups.singleton(DataFolder.findFolder(fo).getNodeDelegate()); + JMenuItem[] item = FileSystemAction.createMenu(true, lkp); + assertTrue(item.length > 0); + + // create menu for a lookup containg a DataObject + lkp = Lookups.singleton(DataFolder.findFolder(fo)); + item = FileSystemAction.createMenu(true, lkp); + assertTrue(item.length > 0); } + + private class TestFS extends LocalFileSystem { + @Override + public SystemAction[] getActions() { + return new SystemAction[] { + new testFSAction() + }; + } + private class testFSAction extends SystemAction implements Presenter.Menu, Presenter.Popup { + @Override public String getName() { return ""; } + @Override public HelpCtx getHelpCtx() { return null; } + @Override public void actionPerformed(ActionEvent ev) { } + @Override public JMenuItem getMenuPresenter() { return new JMenuItem(); } + @Override public JMenuItem getPopupPresenter() { return new JMenuItem(); } + } + } +} \ No newline at end of file