You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@sling.apache.org by ro...@apache.org on 2016/02/20 22:09:02 UTC
svn commit: r1731465 - in /sling/trunk/tooling/ide/eclipse-ui: plugin.xml
src/org/apache/sling/ide/eclipse/ui/actions/JcrNewNodeAction.java
src/org/apache/sling/ide/eclipse/ui/actions/JcrNewNodeHandler.java
Author: rombert
Date: Sat Feb 20 21:09:02 2016
New Revision: 1731465
URL: http://svn.apache.org/viewvc?rev=1731465&view=rev
Log:
SLING-4046 - Keyboard shortcuts do not work on content structure
Convert the new node action to a handler.
Added:
sling/trunk/tooling/ide/eclipse-ui/src/org/apache/sling/ide/eclipse/ui/actions/JcrNewNodeHandler.java
- copied, changed from r1731464, sling/trunk/tooling/ide/eclipse-ui/src/org/apache/sling/ide/eclipse/ui/actions/JcrNewNodeAction.java
Removed:
sling/trunk/tooling/ide/eclipse-ui/src/org/apache/sling/ide/eclipse/ui/actions/JcrNewNodeAction.java
Modified:
sling/trunk/tooling/ide/eclipse-ui/plugin.xml
Modified: sling/trunk/tooling/ide/eclipse-ui/plugin.xml
URL: http://svn.apache.org/viewvc/sling/trunk/tooling/ide/eclipse-ui/plugin.xml?rev=1731465&r1=1731464&r2=1731465&view=diff
==============================================================================
--- sling/trunk/tooling/ide/eclipse-ui/plugin.xml (original)
+++ sling/trunk/tooling/ide/eclipse-ui/plugin.xml Sat Feb 20 21:09:02 2016
@@ -440,6 +440,20 @@
</visibleWhen>
</command>
</menuContribution>
+
+ <!-- 'New' actions -->
+ <menuContribution
+ locationURI="popup:common.new.menu?after=new">
+ <command
+ commandId="org.apache.sling.ide.eclipse.ui.actions.jcrNewNodeHandler"
+ icon="icons/obj16/sling_misc.gif"
+ label="&Node">
+ <visibleWhen
+ checkEnabled="false">
+ <reference definitionId="org.apache.sling.ide.eclipse.jcrNode"/>
+ </visibleWhen>
+ </command>
+ </menuContribution>
<!-- Other actions -->
<menuContribution
@@ -524,6 +538,11 @@
defaultHandler="org.apache.sling.ide.eclipse.ui.actions.JcrNodeImportContentHandler"
name="Import JCR content from server...">
</command>
+ <command
+ id="org.apache.sling.ide.eclipse.ui.actions.jcrNewNodeHandler"
+ defaultHandler="org.apache.sling.ide.eclipse.ui.actions.JcrNewNodeHandler"
+ name="Import JCR content from server...">
+ </command>
</extension>
<extension
@@ -559,60 +578,6 @@
</activeWhen>
</handler>
</extension>
-
- <extension
- point="org.eclipse.ui.popupMenus">
- <objectContribution
- adaptable="true"
- id="org.apache.sling.ide.eclipse.ui.pluginDomNodeToolSet"
- objectClass="org.apache.sling.ide.eclipse.ui.nav.model.JcrNode">
- <!-- explicitly adding the 'New' / common.new.menu as this does not show up for JcrNodes otherwise-->
- <menu
- id="common.new.menu"
- label="New"
- path="group.new">
- <separator
- name="jcr">
- </separator>
- </menu>
- <action
- class="org.apache.sling.ide.eclipse.ui.actions.JcrNewNodeAction"
- icon="icons/obj16/sling_misc.gif"
- id="org.apache.sling.ide.eclipse.ui.nav.NewJcrNodeAction"
- label="&Node..."
- menubarPath="common.new.menu/jcr">
- </action>
- <visibility>
- <objectState
- name="domNode"
- value="true">
- </objectState>
- </visibility>
- </objectContribution>
- </extension>
-
- <extension
- id="org.apache.sling.ide.eclipse.ui.pluginNonJcrNodeToolSet"
- point="org.eclipse.ui.popupMenus">
- <objectContribution
- adaptable="true"
- id="org.apache.sling.ide.eclipse.ui.pluginNonJcrNodeToolSet"
- objectClass="org.apache.sling.ide.eclipse.ui.nav.model.JcrNode">
- <action
- class="org.apache.sling.ide.eclipse.ui.actions.JcrNewNodeAction"
- icon="icons/obj16/sling_misc.gif"
- id="org.apache.sling.ide.eclipse.ui.nav.NewNonJcrNodeAction"
- label="Node..."
- menubarPath="common.new.menu/jcr">
- </action>
- <visibility>
- <objectState
- name="nonDomNode"
- value="true">
- </objectState>
- </visibility>
- </objectContribution>
- </extension>
<extension
point="org.eclipse.ui.decorators">
Copied: sling/trunk/tooling/ide/eclipse-ui/src/org/apache/sling/ide/eclipse/ui/actions/JcrNewNodeHandler.java (from r1731464, sling/trunk/tooling/ide/eclipse-ui/src/org/apache/sling/ide/eclipse/ui/actions/JcrNewNodeAction.java)
URL: http://svn.apache.org/viewvc/sling/trunk/tooling/ide/eclipse-ui/src/org/apache/sling/ide/eclipse/ui/actions/JcrNewNodeHandler.java?p2=sling/trunk/tooling/ide/eclipse-ui/src/org/apache/sling/ide/eclipse/ui/actions/JcrNewNodeHandler.java&p1=sling/trunk/tooling/ide/eclipse-ui/src/org/apache/sling/ide/eclipse/ui/actions/JcrNewNodeAction.java&r1=1731464&r2=1731465&rev=1731465&view=diff
==============================================================================
--- sling/trunk/tooling/ide/eclipse-ui/src/org/apache/sling/ide/eclipse/ui/actions/JcrNewNodeAction.java (original)
+++ sling/trunk/tooling/ide/eclipse-ui/src/org/apache/sling/ide/eclipse/ui/actions/JcrNewNodeHandler.java Sat Feb 20 21:09:02 2016
@@ -20,40 +20,41 @@ import javax.jcr.nodetype.NodeType;
import org.apache.sling.ide.eclipse.core.ServerUtil;
import org.apache.sling.ide.eclipse.ui.internal.Activator;
+import org.apache.sling.ide.eclipse.ui.internal.SelectionUtils;
import org.apache.sling.ide.eclipse.ui.nav.model.JcrNode;
import org.apache.sling.ide.transport.NodeTypeRegistry;
import org.apache.sling.ide.transport.Repository;
import org.apache.sling.ide.transport.RepositoryException;
+import org.eclipse.core.commands.AbstractHandler;
+import org.eclipse.core.commands.ExecutionEvent;
+import org.eclipse.core.commands.ExecutionException;
import org.eclipse.core.runtime.IStatus;
-import org.eclipse.jface.action.IAction;
import org.eclipse.jface.dialogs.MessageDialog;
import org.eclipse.jface.viewers.ISelection;
-import org.eclipse.jface.viewers.IStructuredSelection;
import org.eclipse.swt.SWT;
import org.eclipse.swt.widgets.Shell;
-import org.eclipse.ui.IObjectActionDelegate;
-import org.eclipse.ui.IWorkbenchPart;
+import org.eclipse.ui.handlers.HandlerUtil;
-public class JcrNewNodeAction implements IObjectActionDelegate {
+public class JcrNewNodeHandler extends AbstractHandler {
- private ISelection selection;
- private Shell shell;
private boolean doNotAskAgain;
- public JcrNewNodeAction() {
- }
-
- @Override
- public void run(IAction action) {
- if (selection==null || !(selection instanceof IStructuredSelection)) {
- return;
+ @Override
+ public Object execute(ExecutionEvent event) throws ExecutionException {
+
+ ISelection sel = HandlerUtil.getCurrentSelection(event);
+
+ JcrNode node = SelectionUtils.getFirst(sel, JcrNode.class);
+ if ( node == null ) {
+ return null;
}
- IStructuredSelection ss = (IStructuredSelection)selection;
- JcrNode node = (JcrNode) ss.getFirstElement();
+
+ Shell shell = HandlerUtil.getActiveShell(event);
+
if (!node.canCreateChild()) {
MessageDialog.openInformation(shell, "Cannot create node",
"Node is not covered by the workspace filter as defined in filter.xml");
- return;
+ return null;
}
Repository repository = ServerUtil.getDefaultRepository(node.getProject());
NodeTypeRegistry ntManager = (repository==null) ? null : repository.getNodeTypeRegistry();
@@ -72,7 +73,7 @@ public class JcrNewNodeAction implements
};
int choice = dialog.open();
if (choice <= 0) {
- return;
+ return null;
}
if (choice==1) {
doNotAskAgain = true;
@@ -83,30 +84,21 @@ public class JcrNewNodeAction implements
final NodeType nodeType = node.getNodeType();
if (nodeType!=null && nodeType.getName()!=null && nodeType.getName().equals("nt:file")) {
MessageDialog.openInformation(shell, "Cannot create node", "Node of type nt:file cannot have children");
- return;
+ return null;
}
try {
final NewNodeDialog nnd = new NewNodeDialog(shell, node, ntManager);
if (nnd.open() == IStatus.OK) {
node.createChild(nnd.getValue(), nnd.getChosenNodeType());
- return;
+ return null;
}
} catch (RepositoryException e1) {
Activator.getDefault().getPluginLogger().warn(
"Could not open NewNodeDialog due to "+e1, e1);
}
+ return null;
}
- @Override
- public void selectionChanged(IAction action, ISelection selection) {
- this.selection = selection;
- }
-
- @Override
- public void setActivePart(IAction action, IWorkbenchPart targetPart) {
- this.shell = targetPart.getSite().getWorkbenchWindow().getShell();
- }
-
}