Author: rombert
Date: Sat Feb 20 21:03:57 2016
New Revision: 1731458

URL: http://svn.apache.org/viewvc?rev=1731458&view=rev
Log:
SLING-4046 - Keyboard shortcuts do not work on content structure

Switch 'Convert to ...' action to be commands.

Added:
    
sling/trunk/tooling/ide/eclipse-ui/src/org/apache/sling/ide/eclipse/ui/wizards/ConvertToBundleProjectHandler.java
      - copied, changed from r1731455, 
sling/trunk/tooling/ide/eclipse-ui/src/org/apache/sling/ide/eclipse/ui/wizards/ConvertToBundleAction.java
    
sling/trunk/tooling/ide/eclipse-ui/src/org/apache/sling/ide/eclipse/ui/wizards/ConvertToContentProjectHandler.java
      - copied, changed from r1731455, 
sling/trunk/tooling/ide/eclipse-ui/src/org/apache/sling/ide/eclipse/ui/wizards/ConvertToContentPackageAction.java
Removed:
    
sling/trunk/tooling/ide/eclipse-ui/src/org/apache/sling/ide/eclipse/ui/wizards/ConvertToBundleAction.java
    
sling/trunk/tooling/ide/eclipse-ui/src/org/apache/sling/ide/eclipse/ui/wizards/ConvertToContentPackageAction.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=1731458&r1=1731457&r2=1731458&view=diff
==============================================================================
--- sling/trunk/tooling/ide/eclipse-ui/plugin.xml (original)
+++ sling/trunk/tooling/ide/eclipse-ui/plugin.xml Sat Feb 20 21:03:57 2016
@@ -342,30 +342,77 @@
             label="Sling Console">
       </consoleFactory>
    </extension>
+   
    <extension
-         point="org.eclipse.ui.popupMenus">
-      <objectContribution
-            objectClass="org.eclipse.core.resources.IProject"
-            adaptable="true"
-            id="org.apache.sling.ide.eclipse.ui.pluginProjectToolSet">
-
-         <action
-            label="Convert to Content Project..."
-            
class="org.apache.sling.ide.eclipse.ui.wizards.ConvertToContentPackageAction"
-            menubarPath="org.eclipse.ui.projectConfigure/additions"
-            enablesFor="+"
-            
id="org.apache.sling.ide.eclipse.ui.wizards.ConvertToContentPackageAction">
-       </action>
-         <action
-            label="Convert to Bundle Project..."
-            
class="org.apache.sling.ide.eclipse.ui.wizards.ConvertToBundleAction"
-            menubarPath="org.eclipse.ui.projectConfigure/additions"
-            enablesFor="+"
-            id="org.apache.sling.ide.eclipse.ui.wizards.ConvertToBundleAction">
-       </action>
-      </objectContribution>
-         
-   </extension>
+               point="org.eclipse.ui.menus">
+               <menuContribution
+           locationURI="popup:org.eclipse.ui.projectConfigure?after=additions">
+           <command
+                 
commandId="org.apache.sling.ide.eclipse.ui.wizards.convertToContentProjectCommand"
+                 label="Convert to Content Project...">
+                 <!-- 
+                   don't enable for sling.content or sling.bundle projects 
+                   Described in depth at 
http://help.eclipse.org/luna/index.jsp?topic=%2Forg.eclipse.platform.doc.isv%2Fguide%2Fworkbench_cmd_expressions.htm
+                 -->
+                 <visibleWhen
+                       checkEnabled="false">
+                        <iterate ifEmpty="false">
+                          <instanceof 
value="org.eclipse.core.resources.IProject"/>
+                          <not>
+                                 <or>
+                               <test
+                                               
property="org.eclipse.wst.common.project.facet.core.projectFacet" 
+                                               value="sling.content"/>
+                               <test
+                                               
property="org.eclipse.wst.common.project.facet.core.projectFacet" 
+                                               value="sling.bundle"/>
+                                 </or>
+                               </not>
+                        </iterate>
+                 </visibleWhen>
+           </command>
+           <command
+                 
commandId="org.apache.sling.ide.eclipse.ui.wizards.convertToBundleProjectCommand"
+                 label="Convert to Bundle Project...">
+                 <!-- 
+                       don't enable for sling.content or sling.bundle projects
+                       but require the Java nature
+                -->
+                 <visibleWhen
+                       checkEnabled="false">
+                        <iterate ifEmpty="false">
+                          <instanceof 
value="org.eclipse.core.resources.IProject"/>
+                          <test 
property="org.eclipse.core.resources.projectNature"
+                                       
value="org.eclipse.jdt.core.javanature"/>
+                          <not>
+                                 <or>
+                               <test
+                                               
property="org.eclipse.wst.common.project.facet.core.projectFacet" 
+                                               value="sling.content"/>
+                               <test
+                                               
property="org.eclipse.wst.common.project.facet.core.projectFacet" 
+                                               value="sling.bundle"/>
+                                 </or>
+                               </not>
+                        </iterate>
+                 </visibleWhen>                 
+           </command>
+               </menuContribution>
+       </extension>
+       
+       <extension
+             point="org.eclipse.ui.commands">
+             <command
+                
id="org.apache.sling.ide.eclipse.ui.wizards.convertToBundleProjectCommand"
+                
defaultHandler="org.apache.sling.ide.eclipse.ui.wizards.ConvertToBundleProjectHandler"
+                name="Convert to Bundle Project...">
+             </command>
+             <command
+                
id="org.apache.sling.ide.eclipse.ui.wizards.convertToContentProjectCommand"
+                
defaultHandler="org.apache.sling.ide.eclipse.ui.wizards.ConvertToContentProjectHandler"
+                name="Convert to Content Project...">
+             </command>
+       </extension>
 
    <extension
          point="org.eclipse.ui.popupMenus">

Copied: 
sling/trunk/tooling/ide/eclipse-ui/src/org/apache/sling/ide/eclipse/ui/wizards/ConvertToBundleProjectHandler.java
 (from r1731455, 
sling/trunk/tooling/ide/eclipse-ui/src/org/apache/sling/ide/eclipse/ui/wizards/ConvertToBundleAction.java)
URL: 
http://svn.apache.org/viewvc/sling/trunk/tooling/ide/eclipse-ui/src/org/apache/sling/ide/eclipse/ui/wizards/ConvertToBundleProjectHandler.java?p2=sling/trunk/tooling/ide/eclipse-ui/src/org/apache/sling/ide/eclipse/ui/wizards/ConvertToBundleProjectHandler.java&p1=sling/trunk/tooling/ide/eclipse-ui/src/org/apache/sling/ide/eclipse/ui/wizards/ConvertToBundleAction.java&r1=1731455&r2=1731458&rev=1731458&view=diff
==============================================================================
--- 
sling/trunk/tooling/ide/eclipse-ui/src/org/apache/sling/ide/eclipse/ui/wizards/ConvertToBundleAction.java
 (original)
+++ 
sling/trunk/tooling/ide/eclipse-ui/src/org/apache/sling/ide/eclipse/ui/wizards/ConvertToBundleProjectHandler.java
 Sat Feb 20 21:03:57 2016
@@ -18,19 +18,20 @@ package org.apache.sling.ide.eclipse.ui.
 
 import java.lang.reflect.InvocationTargetException;
 import java.util.ArrayList;
-import java.util.Iterator;
 import java.util.LinkedList;
 import java.util.List;
 
 import org.apache.sling.ide.eclipse.core.ConfigurationHelper;
 import org.apache.sling.ide.eclipse.core.internal.ProjectHelper;
+import org.eclipse.core.commands.AbstractHandler;
+import org.eclipse.core.commands.ExecutionEvent;
+import org.eclipse.core.commands.ExecutionException;
 import org.eclipse.core.resources.IFile;
 import org.eclipse.core.resources.IProject;
 import org.eclipse.core.resources.ResourcesPlugin;
 import org.eclipse.core.runtime.CoreException;
 import org.eclipse.core.runtime.IProgressMonitor;
 import org.eclipse.jdt.core.IJavaProject;
-import org.eclipse.jface.action.IAction;
 import org.eclipse.jface.dialogs.MessageDialog;
 import org.eclipse.jface.operation.IRunnableWithProgress;
 import org.eclipse.jface.viewers.ISelection;
@@ -38,30 +39,17 @@ import org.eclipse.jface.viewers.IStruct
 import org.eclipse.jface.wizard.WizardDialog;
 import org.eclipse.swt.custom.BusyIndicator;
 import org.eclipse.swt.widgets.Display;
-import org.eclipse.ui.IObjectActionDelegate;
-import org.eclipse.ui.IWorkbenchPart;
 import org.eclipse.ui.PlatformUI;
+import org.eclipse.ui.handlers.HandlerUtil;
 
-public class ConvertToBundleAction implements IObjectActionDelegate {
-
-       private ISelection fSelection;
-
-       /*
-        * (non-Javadoc)
-        * 
-        * @see 
org.eclipse.ui.IObjectActionDelegate#setActivePart(org.eclipse.jface.action.IAction,
-        *      org.eclipse.ui.IWorkbenchPart)
-        */
-       public void setActivePart(IAction action, IWorkbenchPart targetPart) {
-       }
-
-       /*
-        * (non-Javadoc)
-        * 
-        * @see 
org.eclipse.ui.IActionDelegate#run(org.eclipse.jface.action.IAction)
-        */
-       public void run(IAction action) {
-               if (fSelection instanceof IStructuredSelection) {
+public class ConvertToBundleProjectHandler extends AbstractHandler {
+    
+    @Override
+    public Object execute(ExecutionEvent event) throws ExecutionException {
+        
+        ISelection selection = HandlerUtil.getCurrentSelection(event);
+        
+               if (selection instanceof IStructuredSelection) {
                        List<IProject> applicableProjects = new LinkedList<>();
                        IProject[] allProjects = 
ResourcesPlugin.getWorkspace().getRoot().getProjects();
                        for (IProject p : allProjects) {
@@ -69,7 +57,7 @@ public class ConvertToBundleAction imple
                                        applicableProjects.add(p);
                                }
                        }
-                       Object[] elems = ((IStructuredSelection) 
fSelection).toArray();
+                       Object[] elems = ((IStructuredSelection) 
selection).toArray();
                        List<IProject> initialSelection = new 
ArrayList<>(elems.length);
 
                        for (Object elem : elems) {
@@ -100,12 +88,12 @@ public class ConvertToBundleAction imple
                        });
                        if (dialog.getReturnCode()!=WizardDialog.OK) {
                                // user did not click OK
-                               return;
+                               return null;
                        }
                        final List<IProject> selectedProjects = 
wizard.getSelectedProjects();
                        if (selectedProjects == null || 
selectedProjects.size()==0) {
                                // no project was selected
-                               return;
+                           return null;
                        }
                        IRunnableWithProgress r = new IRunnableWithProgress() {
                                
@@ -131,44 +119,8 @@ public class ConvertToBundleAction imple
                                                e.getMessage());
                        }
                }
-       }
-
-       /*
-        * (non-Javadoc)
-        * 
-        * @see 
org.eclipse.ui.IActionDelegate#selectionChanged(org.eclipse.jface.action.IAction,
-        *      org.eclipse.jface.viewers.ISelection)
-        */
-       public void selectionChanged(IAction action, ISelection selection) {
-               fSelection = selection;
-               if (selection instanceof IStructuredSelection) {
-                       final IStructuredSelection iss = (IStructuredSelection) 
selection;
-                       Iterator<?> it = iss.iterator();
-                       if (!it.hasNext()) {
-                               action.setEnabled(false);
-                               return;
-                       }
-                       while(it.hasNext()) {
-                               Object elem = it.next();
-                               if (elem!=null && (elem instanceof IProject)) {
-                                       final IProject project = (IProject) 
elem;
-                                       if 
(ProjectHelper.isBundleProject(project) || 
ProjectHelper.isContentProject(project)) {
-                                               action.setEnabled(false);
-                                               return;
-                                       } else {
-                                           // SLING-3651 : always show action -
-                                           //              allows to provide 
more filter detail infos
-                                               continue;
-                                       }
-                               } else {
-                                       action.setEnabled(false);
-                                       return;
-                               }
-                       }
-                       action.setEnabled(true);
-               } else {
-                       action.setEnabled(false);
-               }
+               
+               return null;
        }
 
        public Display getDisplay() {

Copied: 
sling/trunk/tooling/ide/eclipse-ui/src/org/apache/sling/ide/eclipse/ui/wizards/ConvertToContentProjectHandler.java
 (from r1731455, 
sling/trunk/tooling/ide/eclipse-ui/src/org/apache/sling/ide/eclipse/ui/wizards/ConvertToContentPackageAction.java)
URL: 
http://svn.apache.org/viewvc/sling/trunk/tooling/ide/eclipse-ui/src/org/apache/sling/ide/eclipse/ui/wizards/ConvertToContentProjectHandler.java?p2=sling/trunk/tooling/ide/eclipse-ui/src/org/apache/sling/ide/eclipse/ui/wizards/ConvertToContentProjectHandler.java&p1=sling/trunk/tooling/ide/eclipse-ui/src/org/apache/sling/ide/eclipse/ui/wizards/ConvertToContentPackageAction.java&r1=1731455&r2=1731458&rev=1731458&view=diff
==============================================================================
--- 
sling/trunk/tooling/ide/eclipse-ui/src/org/apache/sling/ide/eclipse/ui/wizards/ConvertToContentPackageAction.java
 (original)
+++ 
sling/trunk/tooling/ide/eclipse-ui/src/org/apache/sling/ide/eclipse/ui/wizards/ConvertToContentProjectHandler.java
 Sat Feb 20 21:03:57 2016
@@ -18,11 +18,13 @@ package org.apache.sling.ide.eclipse.ui.
 
 import java.lang.reflect.InvocationTargetException;
 import java.util.Arrays;
-import java.util.Iterator;
 
 import org.apache.sling.ide.eclipse.core.ConfigurationHelper;
 import org.apache.sling.ide.eclipse.core.internal.ProjectHelper;
 import org.apache.sling.ide.eclipse.ui.internal.Activator;
+import org.eclipse.core.commands.AbstractHandler;
+import org.eclipse.core.commands.ExecutionEvent;
+import org.eclipse.core.commands.ExecutionException;
 import org.eclipse.core.resources.IContainer;
 import org.eclipse.core.resources.IFolder;
 import org.eclipse.core.resources.IProject;
@@ -31,7 +33,6 @@ import org.eclipse.core.runtime.CoreExce
 import org.eclipse.core.runtime.IProgressMonitor;
 import org.eclipse.core.runtime.IStatus;
 import org.eclipse.core.runtime.Status;
-import org.eclipse.jface.action.IAction;
 import org.eclipse.jface.dialogs.MessageDialog;
 import org.eclipse.jface.operation.IRunnableWithProgress;
 import org.eclipse.jface.resource.ImageDescriptor;
@@ -40,38 +41,24 @@ import org.eclipse.jface.viewers.IStruct
 import org.eclipse.jface.viewers.Viewer;
 import org.eclipse.jface.viewers.ViewerFilter;
 import org.eclipse.swt.widgets.Display;
-import org.eclipse.ui.IObjectActionDelegate;
-import org.eclipse.ui.IWorkbenchPart;
 import org.eclipse.ui.PlatformUI;
 import org.eclipse.ui.dialogs.ContainerSelectionDialog;
 import org.eclipse.ui.dialogs.ElementTreeSelectionDialog;
 import org.eclipse.ui.dialogs.ISelectionStatusValidator;
+import org.eclipse.ui.handlers.HandlerUtil;
 import org.eclipse.ui.model.BaseWorkbenchContentProvider;
 import org.eclipse.ui.model.IWorkbenchAdapter;
 import org.eclipse.ui.model.WorkbenchLabelProvider;
 
-public class ConvertToContentPackageAction implements IObjectActionDelegate {
+public class ConvertToContentProjectHandler extends AbstractHandler {
+    
+    @Override
+    public Object execute(ExecutionEvent event) throws ExecutionException {
+        
+        ISelection selection = HandlerUtil.getCurrentSelection(event);
 
-    private ISelection fSelection;
-
-    /*
-     * (non-Javadoc)
-     * 
-     * @see
-     * org.eclipse.ui.IObjectActionDelegate#setActivePart(org.eclipse.jface.
-     * action.IAction, org.eclipse.ui.IWorkbenchPart)
-     */
-    public void setActivePart(IAction action, IWorkbenchPart targetPart) {
-    }
-
-    /*
-     * (non-Javadoc)
-     * 
-     * @see 
org.eclipse.ui.IActionDelegate#run(org.eclipse.jface.action.IAction)
-     */
-    public void run(IAction action) {
-        if (fSelection instanceof IStructuredSelection) {
-            final IProject project = (IProject) ((IStructuredSelection) 
fSelection)
+        if (selection instanceof IStructuredSelection) {
+            final IProject project = (IProject) ((IStructuredSelection) 
selection)
                     .getFirstElement();
 
             ElementTreeSelectionDialog dialog = new ElementTreeSelectionDialog(
@@ -195,45 +182,8 @@ public class ConvertToContentPackageActi
                 }
             }
         }
-    }
-
-    /*
-     * (non-Javadoc)
-     * 
-     * @see
-     * org.eclipse.ui.IActionDelegate#selectionChanged(org.eclipse.jface.action
-     * .IAction, org.eclipse.jface.viewers.ISelection)
-     */
-    public void selectionChanged(IAction action, ISelection selection) {
-        fSelection = selection;
-        if (selection instanceof IStructuredSelection) {
-            final IStructuredSelection iss = (IStructuredSelection) selection;
-            Iterator<?> it = iss.iterator();
-            if (!it.hasNext()) {
-                action.setEnabled(false);
-                return;
-            }
-            while (it.hasNext()) {
-                Object elem = it.next();
-                if (elem != null && (elem instanceof IProject)) {
-                    final IProject project = (IProject) elem;
-                    if (ProjectHelper.isContentProject(project) || 
ProjectHelper.isBundleProject(project)) {
-                        action.setEnabled(false);
-                        return;
-                    } else {
-                        // SLING-3651 : always show action -
-                        //              allows to provide more filter detail 
infos
-                        continue;
-                    }
-                } else {
-                    action.setEnabled(false);
-                    return;
-                }
-            }
-            action.setEnabled(true);
-        } else {
-            action.setEnabled(false);
-        }
+        
+        return null;
     }
 
     public Display getDisplay() {


Reply via email to