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