You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@sling.apache.org by st...@apache.org on 2014/06/04 18:23:01 UTC

svn commit: r1600324 - in /sling/trunk/tooling/ide/eclipse-ui/src/org/apache/sling/ide/eclipse/ui/internal: ServersActionModeFiddlerActionDelegate.java refresh.png

Author: stefanegli
Date: Wed Jun  4 16:23:01 2014
New Revision: 1600324

URL: http://svn.apache.org/r1600324
Log:
SLING-3638 : adding 'clean and publish' action on a server - this will do an PUBLISH_CLEAN underneath, and is enabled when a server is selected (at the moment)

Added:
    sling/trunk/tooling/ide/eclipse-ui/src/org/apache/sling/ide/eclipse/ui/internal/refresh.png   (with props)
Modified:
    sling/trunk/tooling/ide/eclipse-ui/src/org/apache/sling/ide/eclipse/ui/internal/ServersActionModeFiddlerActionDelegate.java

Modified: sling/trunk/tooling/ide/eclipse-ui/src/org/apache/sling/ide/eclipse/ui/internal/ServersActionModeFiddlerActionDelegate.java
URL: http://svn.apache.org/viewvc/sling/trunk/tooling/ide/eclipse-ui/src/org/apache/sling/ide/eclipse/ui/internal/ServersActionModeFiddlerActionDelegate.java?rev=1600324&r1=1600323&r2=1600324&view=diff
==============================================================================
--- sling/trunk/tooling/ide/eclipse-ui/src/org/apache/sling/ide/eclipse/ui/internal/ServersActionModeFiddlerActionDelegate.java (original)
+++ sling/trunk/tooling/ide/eclipse-ui/src/org/apache/sling/ide/eclipse/ui/internal/ServersActionModeFiddlerActionDelegate.java Wed Jun  4 16:23:01 2014
@@ -16,13 +16,30 @@
  */
 package org.apache.sling.ide.eclipse.ui.internal;
 
+import java.util.Iterator;
+import java.util.LinkedList;
+import java.util.List;
+
+import org.eclipse.core.runtime.IAdaptable;
+import org.eclipse.jface.action.Action;
+import org.eclipse.jface.action.ActionContributionItem;
 import org.eclipse.jface.action.IAction;
+import org.eclipse.jface.action.IContributionItem;
+import org.eclipse.jface.dialogs.MessageDialog;
+import org.eclipse.jface.resource.ImageDescriptor;
 import org.eclipse.jface.util.IPropertyChangeListener;
 import org.eclipse.jface.util.PropertyChangeEvent;
+import org.eclipse.jface.viewers.DecorationOverlayIcon;
+import org.eclipse.jface.viewers.IDecoration;
 import org.eclipse.jface.viewers.ISelection;
+import org.eclipse.jface.viewers.IStructuredSelection;
+import org.eclipse.swt.widgets.Shell;
 import org.eclipse.ui.IActionBars;
 import org.eclipse.ui.IViewActionDelegate;
 import org.eclipse.ui.IViewPart;
+import org.eclipse.wst.server.core.IServer;
+import org.eclipse.wst.server.ui.internal.ImageResource;
+import org.eclipse.wst.server.ui.internal.Messages;
 
 /** prototype for changing icons and tooltip in the wst servers view - tbd properly **/
 public class ServersActionModeFiddlerActionDelegate implements
@@ -34,6 +51,11 @@ public class ServersActionModeFiddlerAct
 	private IPropertyChangeListener debugTooltipListener;
 	private IPropertyChangeListener disconnectTooltipListener;
 
+	private List<IAction> prependedToolbarActions = new LinkedList<IAction>();
+	private List<IAction> appendedToolbarActions = new LinkedList<IAction>();
+    private IServer server;
+    private Action cleanAction;
+	
 	@Override
 	public void run(IAction action) {
 
@@ -41,6 +63,13 @@ public class ServersActionModeFiddlerAct
 
 	@Override
 	public void selectionChanged(IAction action, ISelection selection) {
+	    if (selection!=null && (selection instanceof IStructuredSelection) &&
+	            (((IStructuredSelection)selection).getFirstElement() instanceof IServer)) {
+            server = (IServer)(((IStructuredSelection)selection).getFirstElement());
+            cleanAction.setEnabled(true);
+	    } else {
+	        cleanAction.setEnabled(false);
+	    }
 		action.setEnabled(true);
 		final IAction serverRunAction = actionBars.getGlobalActionHandler("org.eclipse.wst.server.run");
 		final IAction serverDebugAction = actionBars.getGlobalActionHandler("org.eclipse.wst.server.debug");
@@ -53,6 +82,13 @@ public class ServersActionModeFiddlerAct
 		serverDebugAction.setHoverImageDescriptor(SharedImages.DEBUG_CONNECT);
 		stopRunAction.setHoverImageDescriptor(SharedImages.DISCONNECT);
 		
+		for (Iterator it = appendedToolbarActions.iterator(); it.hasNext();) {
+            IAction appendedAction = (IAction) it.next();
+            if (!actionAdded(appendedAction)) {
+                actionBars.getToolBarManager().add(appendedAction);
+            }
+        }
+		
 		final String runText = "Connect to server in run mode";
 		if (runTooltipListener==null) {
 			runTooltipListener = new IPropertyChangeListener() {
@@ -105,10 +141,59 @@ public class ServersActionModeFiddlerAct
 		
 	}
 
-	@Override
+	private boolean actionAdded(IAction action) {
+        IContributionItem[] items = actionBars.getToolBarManager().getItems();
+        for (int i = 0; i < items.length; i++) {
+            IContributionItem iContributionItem = items[i];
+            final String id = iContributionItem.getId();
+            if (id==null) {
+                continue;
+            }
+            if (id.equals(action.getId())) {
+                return true;
+            }
+        }
+        return false;
+    }
+
+    @Override
 	public void init(IViewPart view) {
 		this.view = view;
 		actionBars = view.getViewSite().getActionBars();
+		initToolbarContributedActions();
+		for (Iterator it = prependedToolbarActions.iterator(); it.hasNext();) {
+            IAction action = (IAction) it.next();
+            final ActionContributionItem contribution = new ActionContributionItem(action);
+            actionBars.getToolBarManager().add(contribution);
+        }
 	}
 
+    private void initToolbarContributedActions() {
+        cleanAction = new Action("Clean Publish...", IAction.AS_PUSH_BUTTON) {
+            public void run() {
+                if (MessageDialog.openConfirm(view.getSite().getShell(), Messages.defaultDialogTitle, Messages.dialogPublishClean)) {
+                    IAdaptable info = new IAdaptable() {
+                        public Object getAdapter(Class adapter) {
+                            if (Shell.class.equals(adapter))
+                                return view.getSite().getShell();
+                            if (String.class.equals(adapter))
+                                return "user";
+                            return null;
+                        }
+                    };
+                    
+                    server.publish(IServer.PUBLISH_CLEAN, null, info, null);
+                }
+            }
+        };
+        cleanAction.setText("Clean Publish...");
+        cleanAction.setToolTipText("Clean and Publish...");
+        ImageDescriptor cleanAndPublishImageDesc = new DecorationOverlayIcon(
+                ImageResource.getImageDescriptor(ImageResource.IMG_ELCL_PUBLISH).createImage(), 
+                ImageDescriptor.createFromFile(SharedImages.class, "refresh.png"), IDecoration.BOTTOM_RIGHT);
+        cleanAction.setImageDescriptor(cleanAndPublishImageDesc);
+        cleanAction.setId("org.apache.sling.ide.eclipse.ui.actions.ClearAction");  
+        appendedToolbarActions.add(cleanAction);
+    }
+
 }

Added: sling/trunk/tooling/ide/eclipse-ui/src/org/apache/sling/ide/eclipse/ui/internal/refresh.png
URL: http://svn.apache.org/viewvc/sling/trunk/tooling/ide/eclipse-ui/src/org/apache/sling/ide/eclipse/ui/internal/refresh.png?rev=1600324&view=auto
==============================================================================
Binary file - no diff available.

Propchange: sling/trunk/tooling/ide/eclipse-ui/src/org/apache/sling/ide/eclipse/ui/internal/refresh.png
------------------------------------------------------------------------------
    svn:mime-type = application/octet-stream