提交 8a3df58e 编写于 作者: S serge-rider 提交者: Serge Rider

Entity editor: context menu on empty list fix

上级 e2ed99c2
...@@ -131,9 +131,12 @@ public class NavigatorUtils { ...@@ -131,9 +131,12 @@ public class NavigatorUtils {
return result; return result;
} }
public static void addContextMenu(final IWorkbenchSite workbenchSite, final Viewer viewer) public static void addContextMenu(final IWorkbenchSite workbenchSite, final Viewer viewer) {
{ addContextMenu(workbenchSite, viewer, viewer);
MenuManager menuMgr = createContextMenu(workbenchSite, viewer, null); }
public static void addContextMenu(final IWorkbenchSite workbenchSite, final Viewer viewer, ISelectionProvider selectionProvider) {
MenuManager menuMgr = createContextMenu(workbenchSite, viewer, selectionProvider, null);
if (workbenchSite instanceof IWorkbenchPartSite) { if (workbenchSite instanceof IWorkbenchPartSite) {
((IWorkbenchPartSite)workbenchSite).registerContextMenu(menuMgr, viewer); ((IWorkbenchPartSite)workbenchSite).registerContextMenu(menuMgr, viewer);
} else if (workbenchSite instanceof IPageSite) { } else if (workbenchSite instanceof IPageSite) {
...@@ -141,7 +144,11 @@ public class NavigatorUtils { ...@@ -141,7 +144,11 @@ public class NavigatorUtils {
} }
} }
public static MenuManager createContextMenu(final IWorkbenchSite workbenchSite, final Viewer viewer, final IMenuListener menuListener) public static MenuManager createContextMenu(final IWorkbenchSite workbenchSite, final Viewer viewer, final IMenuListener menuListener) {
return createContextMenu(workbenchSite, viewer, viewer, menuListener);
}
public static MenuManager createContextMenu(final IWorkbenchSite workbenchSite, final Viewer viewer, final ISelectionProvider selectionProvider, final IMenuListener menuListener)
{ {
final Control control = viewer.getControl(); final Control control = viewer.getControl();
final MenuManager menuMgr = new MenuManager(); final MenuManager menuMgr = new MenuManager();
...@@ -188,8 +195,8 @@ public class NavigatorUtils { ...@@ -188,8 +195,8 @@ public class NavigatorUtils {
manager.add(new Separator()); manager.add(new Separator());
final IStructuredSelection selection = (IStructuredSelection)viewer.getSelection(); final ISelection selection = selectionProvider.getSelection();
final DBNNode selectedNode = getSelectedNode(viewer); final DBNNode selectedNode = getSelectedNode(selectionProvider);
if (selectedNode != null && !selectedNode.isLocked() && workbenchSite != null) { if (selectedNode != null && !selectedNode.isLocked() && workbenchSite != null) {
addSetDefaultObjectAction(workbenchSite, manager, selectedNode); addSetDefaultObjectAction(workbenchSite, manager, selectedNode);
} }
...@@ -205,8 +212,11 @@ public class NavigatorUtils { ...@@ -205,8 +212,11 @@ public class NavigatorUtils {
if (selectedNode != null && !selectedNode.isLocked() && workbenchSite != null) { if (selectedNode != null && !selectedNode.isLocked() && workbenchSite != null) {
manager.add(new Separator()); manager.add(new Separator());
// Add properties button // Add properties button
if (PreferencesUtil.hasPropertiesContributors(selection.getFirstElement()) && selection.getFirstElement() instanceof DBNResource) { if (selection instanceof IStructuredSelection) {
manager.add(ActionUtils.makeCommandContribution(workbenchSite, IWorkbenchCommandConstants.FILE_PROPERTIES)); Object firstElement = ((IStructuredSelection) selection).getFirstElement();
if (PreferencesUtil.hasPropertiesContributors(firstElement) && firstElement instanceof DBNResource) {
manager.add(ActionUtils.makeCommandContribution(workbenchSite, IWorkbenchCommandConstants.FILE_PROPERTIES));
}
} }
if (selectedNode.isPersisted()) { if (selectedNode.isPersisted()) {
......
...@@ -81,7 +81,7 @@ public abstract class NodeListControl extends ObjectListControl<DBNNode> impleme ...@@ -81,7 +81,7 @@ public abstract class NodeListControl extends ObjectListControl<DBNNode> impleme
this.selectionProvider = new NodeSelectionProvider(super.getSelectionProvider()); this.selectionProvider = new NodeSelectionProvider(super.getSelectionProvider());
// Add context menu // Add context menu
NavigatorUtils.addContextMenu(workbenchSite, getItemsViewer()); NavigatorUtils.addContextMenu(workbenchSite, getItemsViewer(), this.selectionProvider);
setDoubleClickHandler(event -> { setDoubleClickHandler(event -> {
// Run default node action // Run default node action
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册