Bug 407554 - All context menus in scout explorer are disabled in Kepler
M7
https://bugs.eclipse.org/bugs/show_bug.cgi?id=407554
Change-Id: Ib57b397e0858e31ec847b3cc6b92e9e73bd609e5
Reviewed-on: https://git.eclipse.org/r/12638
Reviewed-by: Matthias Villiger <mvi@bsiag.com>
IP-Clean: Matthias Villiger <mvi@bsiag.com>
Tested-by: Matthias Villiger <mvi@bsiag.com>
diff --git a/org.eclipse.scout.sdk.ui/src/org/eclipse/scout/sdk/ui/action/AbstractScoutHandler.java b/org.eclipse.scout.sdk.ui/src/org/eclipse/scout/sdk/ui/action/AbstractScoutHandler.java
index d64f8f9..99c9a95 100644
--- a/org.eclipse.scout.sdk.ui/src/org/eclipse/scout/sdk/ui/action/AbstractScoutHandler.java
+++ b/org.eclipse.scout.sdk.ui/src/org/eclipse/scout/sdk/ui/action/AbstractScoutHandler.java
@@ -17,14 +17,14 @@
import org.eclipse.core.commands.ExecutionException;
import org.eclipse.jdt.core.IJavaElement;
import org.eclipse.jface.resource.ImageDescriptor;
-import org.eclipse.jface.viewers.ISelection;
import org.eclipse.jface.viewers.IStructuredSelection;
+import org.eclipse.scout.sdk.ui.internal.ScoutSdkUi;
+import org.eclipse.scout.sdk.ui.view.outline.IScoutExplorerPart;
import org.eclipse.scout.sdk.ui.view.outline.pages.IPage;
import org.eclipse.scout.sdk.util.type.TypeUtility;
import org.eclipse.scout.sdk.workspace.IScoutBundle;
import org.eclipse.scout.sdk.workspace.type.ScoutTypeUtility;
import org.eclipse.swt.widgets.Shell;
-import org.eclipse.ui.handlers.HandlerUtil;
public abstract class AbstractScoutHandler extends AbstractHandler implements IScoutHandler {
private String m_label;
@@ -137,21 +137,23 @@
@SuppressWarnings("unchecked")
@Override
public final Object execute(ExecutionEvent event) throws ExecutionException {
- ISelection selection = HandlerUtil.getActiveWorkbenchWindow(event).getActivePage().getSelection();
- if (selection instanceof IStructuredSelection) {
- Shell shell = HandlerUtil.getActiveShell(event);
- IStructuredSelection strucSelection = (IStructuredSelection) selection;
+ IScoutExplorerPart explorer = ScoutSdkUi.getExplorer(false);
+ if (explorer != null) {
+ IStructuredSelection selection = explorer.getSelection();
+ if (selection != null && explorer.getSite() != null) {
+ Shell shell = explorer.getSite().getShell();
- IPage[] selectedPages = new IPage[strucSelection.size()];
+ IPage[] selectedPages = new IPage[selection.size()];
- // iterator can only contain IPage's. this is ensured by the MenuVisibilityTester class
- Iterator<IPage> it = strucSelection.iterator();
- int index = 0;
- while (it.hasNext()) {
- selectedPages[index++] = it.next();
+ // iterator can only contain IPage's. this is ensured by the MenuVisibilityTester class
+ Iterator<IPage> it = selection.iterator();
+ int index = 0;
+ while (it.hasNext()) {
+ selectedPages[index++] = it.next();
+ }
+
+ return execute(shell, selectedPages, event);
}
-
- return execute(shell, selectedPages, event);
}
return null;
}
diff --git a/org.eclipse.scout.sdk.ui/src/org/eclipse/scout/sdk/ui/menu/MenuVisibilityTester.java b/org.eclipse.scout.sdk.ui/src/org/eclipse/scout/sdk/ui/menu/MenuVisibilityTester.java
index 49648b8..11e0e5a 100644
--- a/org.eclipse.scout.sdk.ui/src/org/eclipse/scout/sdk/ui/menu/MenuVisibilityTester.java
+++ b/org.eclipse.scout.sdk.ui/src/org/eclipse/scout/sdk/ui/menu/MenuVisibilityTester.java
@@ -91,6 +91,8 @@
IScoutHandler currentMenu = ScoutMenuContributionItemFactory.getMenuInstance(currentMenuClass);
if (currentMenu == null) return false; // no instance could be created -> do not show the menu
+ cmd.setHandler(currentMenu);
+
// check for multi select
if (!currentMenu.isMultiSelectSupported() && selectedNodes.length > 1) return false;
diff --git a/org.eclipse.scout.sdk.ui/src/org/eclipse/scout/sdk/ui/view/outline/IScoutExplorerPart.java b/org.eclipse.scout.sdk.ui/src/org/eclipse/scout/sdk/ui/view/outline/IScoutExplorerPart.java
index 7f32a00..1ec76db 100644
--- a/org.eclipse.scout.sdk.ui/src/org/eclipse/scout/sdk/ui/view/outline/IScoutExplorerPart.java
+++ b/org.eclipse.scout.sdk.ui/src/org/eclipse/scout/sdk/ui/view/outline/IScoutExplorerPart.java
@@ -12,13 +12,25 @@
import org.eclipse.jface.viewers.IStructuredSelection;
import org.eclipse.scout.sdk.ui.view.outline.pages.IPage;
+import org.eclipse.ui.IWorkbenchPartSite;
/**
- * <h3>IScoutExplorerPart</h3> ...
+ * <h3>IScoutExplorerPart</h3>
*/
public interface IScoutExplorerPart {
/**
+ * Returns the site for this workbench part. The site can be <code>null</code> while the workbench part is being
+ * initialized. After
+ * the initialization is complete, this value must be non-<code>null</code> for the remainder of the part's life
+ * cycle.
+ *
+ * @return The part site; this value may be <code>null</code> if the part
+ * has not yet been initialized
+ */
+ IWorkbenchPartSite getSite();
+
+ /**
* gets the current selection of the scout explorer tree.
*
* @return The structured selection of the tree.