[jbosstools-commits] JBoss Tools SVN: r13179 - in trunk/as/plugins/org.jboss.ide.eclipse.as.ui: jbossui/org/jboss/tools/as/wst/server/ui and 1 other directory.

jbosstools-commits at lists.jboss.org jbosstools-commits at lists.jboss.org
Thu Jan 22 03:00:43 EST 2009


Author: rob.stryker at jboss.com
Date: 2009-01-22 03:00:42 -0500 (Thu, 22 Jan 2009)
New Revision: 13179

Added:
   trunk/as/plugins/org.jboss.ide.eclipse.as.ui/jbossui/org/jboss/tools/as/wst/server/ui/ServersDropAdapter.java
   trunk/as/plugins/org.jboss.ide.eclipse.as.ui/jbossui/org/jboss/tools/as/wst/server/ui/ServersViewDropAdapterAssistant.java
Modified:
   trunk/as/plugins/org.jboss.ide.eclipse.as.ui/jbossui/org/jboss/tools/as/wst/server/ui/ServersView.java
   trunk/as/plugins/org.jboss.ide.eclipse.as.ui/plugin.xml
Log:
JBIDE-3608 - add DND support to CNF servers view

Added: trunk/as/plugins/org.jboss.ide.eclipse.as.ui/jbossui/org/jboss/tools/as/wst/server/ui/ServersDropAdapter.java
===================================================================
--- trunk/as/plugins/org.jboss.ide.eclipse.as.ui/jbossui/org/jboss/tools/as/wst/server/ui/ServersDropAdapter.java	                        (rev 0)
+++ trunk/as/plugins/org.jboss.ide.eclipse.as.ui/jbossui/org/jboss/tools/as/wst/server/ui/ServersDropAdapter.java	2009-01-22 08:00:42 UTC (rev 13179)
@@ -0,0 +1,325 @@
+/*******************************************************************************
+ * Copyright (c) 2003, 2008 IBM Corporation and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * IBM Corporation - initial API and implementation
+ * ken.ryall at nokia.com - 157506 drop from external sources does not work on Linux/Mac
+ *******************************************************************************/
+package org.jboss.tools.as.wst.server.ui;
+
+import java.util.HashMap;
+import java.util.LinkedHashSet;
+import java.util.Map;
+import java.util.Set;
+
+import org.eclipse.core.runtime.IStatus;
+import org.eclipse.jface.util.LocalSelectionTransfer;
+import org.eclipse.jface.viewers.IStructuredSelection;
+import org.eclipse.jface.viewers.StructuredViewer;
+import org.eclipse.swt.dnd.DND;
+import org.eclipse.swt.dnd.DropTargetEvent;
+import org.eclipse.swt.dnd.FileTransfer;
+import org.eclipse.swt.dnd.Transfer;
+import org.eclipse.swt.dnd.TransferData;
+import org.eclipse.swt.graphics.Rectangle;
+import org.eclipse.swt.widgets.Item;
+import org.eclipse.ui.internal.navigator.NavigatorPlugin;
+import org.eclipse.ui.internal.navigator.dnd.CommonDropAdapterDescriptor;
+import org.eclipse.ui.internal.navigator.dnd.CommonDropDescriptorManager;
+import org.eclipse.ui.internal.navigator.dnd.NavigatorPluginDropAction;
+import org.eclipse.ui.navigator.CommonDragAdapter;
+import org.eclipse.ui.navigator.CommonDragAdapterAssistant;
+import org.eclipse.ui.navigator.CommonDropAdapterAssistant;
+import org.eclipse.ui.navigator.CommonViewer;
+import org.eclipse.ui.navigator.INavigatorContentService;
+import org.eclipse.ui.navigator.INavigatorDnDService;
+import org.eclipse.ui.part.PluginDropAdapter;
+import org.eclipse.ui.part.PluginTransfer;
+
+/*
+ * THIS CLASS IS A CLONE of CommonDropAdapter.
+ * It is necessary because dragged items must be acceptable children.
+ * Stupid restriction
+ * 
+ * I use a delegate and push all methods to the delegate, 
+ * even the ones I override. 
+ * 
+ * https://bugs.eclipse.org/bugs/show_bug.cgi?id=261606
+ * 
+ * Maybe one day they'll fix that ;) 
+ */
+
+/**
+ * Provides an implementation of {@link PluginDropAdapter} which uses the
+ * extensions provided by the associated {@link INavigatorContentService}.
+ * 
+ * <p>
+ * Clients should not need to create an instance of this class unless they are
+ * creating their own custom viewer. Otherwise, {@link CommonViewer} configures
+ * its drop adapter automatically.
+ * </p>
+ *  
+ * 
+ * @see INavigatorDnDService
+ * @see CommonDragAdapter
+ * @see CommonDragAdapterAssistant
+ * @see CommonDropAdapterAssistant
+ * @see CommonViewer
+ * @since 3.2
+ */
+public final class ServersDropAdapter extends PluginDropAdapter {
+	private static final Transfer[] SUPPORTED_DROP_TRANSFERS = new Transfer[] {
+		LocalSelectionTransfer.getTransfer(), FileTransfer.getInstance(),
+		PluginTransfer.getInstance() };
+	private final INavigatorContentService contentService;
+	private final INavigatorDnDService dndService;
+	
+	public ServersDropAdapter(INavigatorContentService aContentService,
+			StructuredViewer aStructuredViewer) {
+		super(aStructuredViewer);
+		contentService = aContentService;
+		dndService = contentService.getDnDService();
+	}
+
+	public Transfer[] getSupportedDropTransfers() {
+		return SUPPORTED_DROP_TRANSFERS;
+	}
+
+	public void dragEnter(DropTargetEvent event) {
+		super.dragEnter(event);
+
+		for (int i = 0; i < event.dataTypes.length; i++) {
+			if (LocalSelectionTransfer.getTransfer().isSupportedType(
+					event.dataTypes[i])) {
+				event.currentDataType = event.dataTypes[i]; 
+				return;
+			}
+		}
+
+		for (int i = 0; i < event.dataTypes.length; i++) {
+			if (FileTransfer.getInstance().isSupportedType(event.dataTypes[i])) {
+				event.currentDataType = event.dataTypes[i];
+				event.detail = DND.DROP_COPY; 
+				return;
+			}
+		}
+
+		for (int i = 0; i < event.dataTypes.length; i++) {
+			if (PluginTransfer.getInstance()
+					.isSupportedType(event.dataTypes[i])) {
+				event.currentDataType = event.dataTypes[i]; 
+				return;
+			}
+		}
+
+		event.detail = DND.DROP_NONE; 
+
+	}
+
+	public void dragLeave(DropTargetEvent event) {
+		super.dragLeave(event);
+		if (LocalSelectionTransfer.getTransfer().isSupportedType(
+				event.currentDataType)) {
+			event.data = NavigatorPluginDropAction
+					.createTransferData(contentService);
+		}
+	}
+
+	/*
+	 * Changed from CommonDropAdapter to extract the findCommonDropAdapterAssistant section
+	 * since I do not like the impl in dnd service
+	 */
+	public void drop(DropTargetEvent event) {
+		// Must validate the drop here because on some platforms (Linux, Mac) the event 
+		// is not populated with the correct currentDataType until the drop actually
+		// happens, and validateDrop sets the currentTransfer based on that.  The 
+		// call to validateDrop in dragAccept is too early.
+		validateDrop(getCurrentTarget(), getCurrentOperation(), event.currentDataType);
+		if (PluginTransfer.getInstance().isSupportedType(event.currentDataType)) {
+			super.drop(event);
+		} else {
+
+			Object target = getCurrentTarget() != null ? 
+							getCurrentTarget() : getViewer().getInput();
+							
+			CommonDropAdapterAssistant[] assistants = 
+				findCommonDropAdapterAssistants(target, getCurrentTransfer());
+			System.out.println("got " +assistants.length + " assistants: " + assistants);
+			IStatus valid = null;
+			for (int i = 0; i < assistants.length; i++) {
+				try {
+					valid = assistants[i].validateDrop(getCurrentTarget(),
+							getCurrentOperation(), getCurrentTransfer());
+					System.out.println("assistant " + i + "=" + assistants[i] + " returns " + valid);
+					if (valid != null && valid.isOK()) {
+						assistants[i].handleDrop(null, event,
+								getCurrentTarget());
+	                    event.detail = DND.DROP_NONE;
+						return;
+					} 
+				} catch (Throwable t) {
+					NavigatorPlugin.logError(0, t.getMessage(), t);
+				}
+			}
+            event.detail = DND.DROP_NONE;
+		}
+	}
+
+	/*
+	 * Changed from CommonDropAdapter to extract the findCommonDropAdapterAssistant section
+	 * since I do not like the impl in dnd service
+	 */
+	public boolean validateDrop(Object aDropTarget, int theDropOperation,
+			TransferData theTransferData) {
+		boolean result = false;
+		IStatus valid = null;
+		if (super.validateDrop(aDropTarget, theDropOperation, theTransferData)) {
+			result = true; 
+		} else {
+			Object target = aDropTarget != null ? aDropTarget : getViewer().getInput();
+			CommonDropAdapterAssistant[] assistants = 
+					findCommonDropAdapterAssistants(target,
+							theTransferData);
+			for (int i = 0; i < assistants.length; i++) {
+				try { 
+					valid = assistants[i].validateDrop(target,
+							theDropOperation, theTransferData); 
+					System.out.println("assistant " + i + "=" + assistants[i] + " returns " + valid);
+				} catch (Throwable t) {
+					NavigatorPlugin.logError(0, t.getMessage(), t);
+				}
+				if (valid != null && valid.isOK()) {
+					result = true;
+					break;
+				}
+			}
+		}
+		setScrollExpandEnabled(true);
+		System.out.println("validate returns " + result);
+		return result;
+
+	}
+
+	public Rectangle getBounds(Item item) {
+		return super.getBounds(item);
+	}
+
+	public int getCurrentLocation() {
+		return super.getCurrentLocation();
+	}
+
+	public int getCurrentOperation() {
+		return super.getCurrentOperation();
+	}
+
+	public Object getCurrentTarget() {
+		return super.getCurrentTarget();
+	}
+
+	/*
+	 * (non-Javadoc)
+	 * 
+	 * @see org.eclipse.ui.part.PluginDropAdapter#getCurrentTransfer()
+	 */
+	public TransferData getCurrentTransfer() {
+		return super.getCurrentTransfer();
+	}
+	
+    /**
+     * Returns the position of the given event's coordinates relative to its target.
+     * The position is determined to be before, after, or on the item, based on
+     * some threshold value.
+     *
+     * @param event the event
+     * @return one of the <code>LOCATION_* </code>constants defined in this class
+     */
+    protected int determineLocation(DropTargetEvent event) {
+        if (!(event.item instanceof Item)) {
+            return LOCATION_NONE;
+        }
+        return LOCATION_ON;
+    }
+
+    
+	private CommonDropAdapterAssistant[] findCommonDropAdapterAssistants(
+			Object aDropTarget, TransferData theTransferType) {
+		CommonDropAdapterAssistant[] result = 
+				findCommonDropAdapterAssistants2(aDropTarget, theTransferType);
+		return result;
+	}
+	
+	
+	
+	/*
+	 * Stolen from DND Service
+	 */
+	
+	private static final CommonDropAdapterAssistant[] NO_ASSISTANTS = new CommonDropAdapterAssistant[0];
+	private final Map dropAssistants = new HashMap();
+	
+	public CommonDropAdapterAssistant[] findCommonDropAdapterAssistants2(
+			Object aDropTarget, TransferData aTransferType) {
+ 
+		// TODO Make sure descriptors are sorted by priority 
+		CommonDropAdapterDescriptor[] descriptors = CommonDropDescriptorManager
+				.getInstance().findCommonDropAdapterAssistants(aDropTarget,
+						contentService);
+
+		if (descriptors.length == 0) {
+			return NO_ASSISTANTS;
+		}
+		if (LocalSelectionTransfer.getTransfer().isSupportedType(aTransferType)  
+						&& LocalSelectionTransfer.getTransfer().getSelection() instanceof IStructuredSelection) {
+			return getAssistants(descriptors);
+		} 
+		return getAssistantsByTransferData(descriptors, aTransferType);
+	}
+	
+	private CommonDropAdapterAssistant[] getAssistants(CommonDropAdapterDescriptor[] descriptors) {
+		Set assistants = new LinkedHashSet(); 
+		for (int i = 0; i < descriptors.length; i++) {
+			assistants.add(getAssistant(descriptors[i]));
+		}  
+		return (CommonDropAdapterAssistant[]) assistants
+				.toArray(new CommonDropAdapterAssistant[assistants.size()]);
+	}
+	
+	private CommonDropAdapterAssistant[] getAssistantsByTransferData(
+			CommonDropAdapterDescriptor[] descriptors,
+			TransferData aTransferType) {
+
+		Set assistants = new LinkedHashSet();
+		for (int i = 0; i < descriptors.length; i++) {
+			CommonDropAdapterAssistant asst = getAssistant(descriptors[i]);
+			if (asst.isSupportedType(aTransferType)) {
+				assistants.add(asst);
+			}
+		}
+		return (CommonDropAdapterAssistant[]) assistants
+				.toArray(new CommonDropAdapterAssistant[assistants.size()]);
+
+	}
+
+	private CommonDropAdapterAssistant getAssistant(
+			CommonDropAdapterDescriptor descriptor) {
+		CommonDropAdapterAssistant asst = (CommonDropAdapterAssistant) dropAssistants
+				.get(descriptor);
+		if (asst != null) {
+			return asst;
+		}
+		synchronized (dropAssistants) {
+			asst = (CommonDropAdapterAssistant) dropAssistants.get(descriptor);
+			if (asst == null) {
+				dropAssistants.put(descriptor, (asst = descriptor
+						.createDropAssistant()));
+				asst.init(contentService);
+			}
+		}
+		return asst;
+	}
+
+}

Modified: trunk/as/plugins/org.jboss.ide.eclipse.as.ui/jbossui/org/jboss/tools/as/wst/server/ui/ServersView.java
===================================================================
--- trunk/as/plugins/org.jboss.ide.eclipse.as.ui/jbossui/org/jboss/tools/as/wst/server/ui/ServersView.java	2009-01-22 07:05:06 UTC (rev 13178)
+++ trunk/as/plugins/org.jboss.ide.eclipse.as.ui/jbossui/org/jboss/tools/as/wst/server/ui/ServersView.java	2009-01-22 08:00:42 UTC (rev 13179)
@@ -10,15 +10,69 @@
  *******************************************************************************/
 package org.jboss.tools.as.wst.server.ui;
 
+import org.eclipse.swt.SWT;
+import org.eclipse.swt.dnd.DND;
+import org.eclipse.swt.widgets.Composite;
+import org.eclipse.ui.IMemento;
+import org.eclipse.ui.IViewSite;
+import org.eclipse.ui.PartInitException;
+import org.eclipse.ui.navigator.CommonDragAdapter;
+import org.eclipse.ui.navigator.CommonDropAdapter;
 import org.eclipse.ui.navigator.CommonNavigator;
+import org.eclipse.ui.navigator.CommonViewer;
 /**
  * A view of servers, their modules, and status.
  */
 public class ServersView extends CommonNavigator {
+	
 	/**
 	 * ServersView constructor comment.
 	 */
 	public ServersView() {
 		super();
 	}
+	
+	/*
+	 *  Stuff that shouldn't even be here but CNF is kinda lame
+	 *  Must override currently to overcome the bug below: 
+	 *  
+	 *  https://bugs.eclipse.org/bugs/show_bug.cgi?id=261606
+	 */
+	private IMemento memento;
+	
+	public void init(IViewSite aSite, IMemento aMemento)
+	throws PartInitException {
+		this.memento = memento;
+		super.init(aSite, aMemento);
+	}
+	
+	protected CommonViewer createCommonViewer(Composite aParent) {
+		CommonViewer aViewer = new CommonViewerExtension(getViewSite().getId(), aParent,
+				SWT.MULTI | SWT.H_SCROLL | SWT.V_SCROLL);
+		initListeners(aViewer);
+		aViewer.getNavigatorContentService().restoreState(memento);
+		return aViewer;
+	}
+
+	
+	public class CommonViewerExtension extends CommonViewer {
+		public CommonViewerExtension(String aViewerId, Composite aParent, int aStyle) {
+			super(aViewerId, aParent, aStyle);
+		}
+		
+		protected void initDragAndDrop() {
+			/* Handle Drag and Drop */
+			int operations = DND.DROP_COPY | DND.DROP_MOVE;
+	
+			CommonDragAdapter dragAdapter = new CommonDragAdapter(
+					getNavigatorContentService(), this);
+			addDragSupport(operations, dragAdapter.getSupportedDragTransfers(),
+					dragAdapter);
+	
+			ServersDropAdapter dropAdapter = new ServersDropAdapter(
+					getNavigatorContentService(), this);
+			addDropSupport(operations, dropAdapter.getSupportedDropTransfers(),
+					dropAdapter);
+		}
+	}
 }
\ No newline at end of file

Added: trunk/as/plugins/org.jboss.ide.eclipse.as.ui/jbossui/org/jboss/tools/as/wst/server/ui/ServersViewDropAdapterAssistant.java
===================================================================
--- trunk/as/plugins/org.jboss.ide.eclipse.as.ui/jbossui/org/jboss/tools/as/wst/server/ui/ServersViewDropAdapterAssistant.java	                        (rev 0)
+++ trunk/as/plugins/org.jboss.ide.eclipse.as.ui/jbossui/org/jboss/tools/as/wst/server/ui/ServersViewDropAdapterAssistant.java	2009-01-22 08:00:42 UTC (rev 13179)
@@ -0,0 +1,193 @@
+package org.jboss.tools.as.wst.server.ui;
+
+import java.util.Collections;
+import java.util.Iterator;
+import java.util.List;
+
+import org.eclipse.core.resources.IProject;
+import org.eclipse.core.runtime.CoreException;
+import org.eclipse.core.runtime.IProgressMonitor;
+import org.eclipse.core.runtime.IStatus;
+import org.eclipse.core.runtime.Platform;
+import org.eclipse.core.runtime.Status;
+import org.eclipse.jface.action.Action;
+import org.eclipse.jface.viewers.ISelection;
+import org.eclipse.jface.viewers.IStructuredSelection;
+import org.eclipse.jface.viewers.StructuredSelection;
+import org.eclipse.swt.dnd.DropTargetEvent;
+import org.eclipse.swt.dnd.FileTransfer;
+import org.eclipse.swt.dnd.TransferData;
+import org.eclipse.swt.widgets.Shell;
+import org.eclipse.ui.activities.WorkbenchActivityHelper;
+import org.eclipse.ui.internal.Workbench;
+import org.eclipse.ui.navigator.CommonDropAdapter;
+import org.eclipse.ui.navigator.CommonDropAdapterAssistant;
+import org.eclipse.ui.part.ResourceTransfer;
+import org.eclipse.ui.views.navigator.LocalSelectionTransfer;
+import org.eclipse.wst.server.core.IModule;
+import org.eclipse.wst.server.core.IModuleArtifact;
+import org.eclipse.wst.server.core.IModuleType;
+import org.eclipse.wst.server.core.IServer;
+import org.eclipse.wst.server.core.IServerWorkingCopy;
+import org.eclipse.wst.server.core.ServerUtil;
+import org.eclipse.wst.server.core.internal.ServerPlugin;
+import org.eclipse.wst.server.ui.internal.EclipseUtil;
+import org.eclipse.wst.server.ui.internal.ServerUIPlugin;
+import org.eclipse.wst.server.ui.internal.actions.RunOnServerActionDelegate;
+
+public class ServersViewDropAdapterAssistant extends CommonDropAdapterAssistant {
+
+	@SuppressWarnings("unchecked") private List fElements;
+
+	public ServersViewDropAdapterAssistant() {
+		super();
+	}
+	protected void doInit() {
+	}
+
+	public IStatus validatePluginTransferDrop(
+			IStructuredSelection aDragSelection, Object aDropTarget) {
+		initializeSelection(aDragSelection);
+		return internalValidate(aDropTarget, fElements);
+	}
+
+	public IStatus validateDrop(Object target, int operation,
+			TransferData transferType) {
+		if (LocalSelectionTransfer.getInstance().isSupportedType(transferType)) {
+			ISelection s = LocalSelectionTransfer.getInstance().getSelection();
+			initializeSelection(s);
+			return internalValidate(target, fElements);
+		}
+		return Status.CANCEL_STATUS;
+	}
+
+	protected void initializeSelection(ISelection s) {
+		if (fElements != null)
+			return;
+		if (!(s instanceof IStructuredSelection)) {
+			fElements= Collections.EMPTY_LIST;
+			return;
+		}
+		fElements = ((IStructuredSelection) s).toList();
+	}
+	
+	@SuppressWarnings("unchecked")
+	protected IStatus internalValidate(Object target, List elements) {
+		if( target instanceof IServer ) {
+			IServer server = (IServer)target;
+			Object next;
+			if( elements != null ) {
+				Iterator i = elements.iterator();
+				while(i.hasNext() ) {
+					next = i.next();
+					IModuleArtifact[] moduleArtifacts = ServerPlugin.getModuleArtifacts(next);
+					if (moduleArtifacts != null && moduleArtifacts.length > 0 ) {
+						for( int j = 0; j < moduleArtifacts.length; j++ ) {
+							if( moduleArtifacts[j] != null && moduleArtifacts[j].getModule() != null ) {
+								IModuleType[] moduleTypes = server.getServerType().getRuntimeType().getModuleTypes();
+								if (ServerUtil.isSupportedModule(moduleTypes, moduleArtifacts[j].getModule().getModuleType())) {
+									return Status.OK_STATUS;
+								}
+							}
+						}
+					}
+				}
+			}
+		}
+		clear();
+		return Status.CANCEL_STATUS;
+	}
+
+	public IStatus handleDrop(CommonDropAdapter dropAdapter,
+			DropTargetEvent dropTargetEvent, Object target) {
+		return internalHandleDrop(target, fElements);
+	}
+	
+	public IStatus handlePluginTransferDrop(
+			IStructuredSelection aDragSelection, Object aDropTarget) {
+		return internalHandleDrop(aDropTarget, fElements);
+	}
+
+	protected IStatus internalHandleDrop(Object target, List elements) {
+		boolean b = false;
+		if( target instanceof IServer ) {
+			b = true;
+			if( fElements != null ) {
+				Iterator iterator = elements.iterator();
+				while (iterator.hasNext()) {
+					Object data2 = iterator.next();
+					if (!doSel((IServer)target, data2))
+						b = false;
+				}
+			}
+		}
+		clear();
+		return b ? Status.OK_STATUS : Status.CANCEL_STATUS;
+	}
+	
+	private void clear() {
+		fElements = null;
+	}
+
+	protected boolean doSel(IServer server, Object data) {
+		// check if the selection is a project (module) that we can add to the server
+		IProject project = (IProject) Platform.getAdapterManager().getAdapter(data, IProject.class);
+		if (project != null) {
+			IModule[] modules = ServerUtil.getModules(project);
+			if (modules != null && modules.length == 1) {
+				try {
+					IServerWorkingCopy wc = server.createWorkingCopy();
+					IModule[] parents = wc.getRootModules(modules[0], null);
+					if (parents == null || parents.length == 0)
+						return false;
+					
+					if (ServerUtil.containsModule(server, parents[0], null))
+						return false;
+					
+					IModule[] add = new IModule[] { parents[0] };
+					if (wc.canModifyModules(add, null, null).getSeverity() != IStatus.ERROR) {
+						wc.modifyModules(modules, null, null);
+						wc.save(false, null);
+						return true;
+					}
+				} catch (final CoreException ce) {
+					final Shell shell = Workbench.getInstance().getActiveWorkbenchWindow().getShell(); 
+					shell.getDisplay().asyncExec(new Runnable() {
+						public void run() {
+							EclipseUtil.openError(shell, ce.getLocalizedMessage());
+						}
+					});
+					return true;
+				}
+			}
+		}
+		
+		// otherwise, try Run on Server
+		final IServer finalServer = server;
+		RunOnServerActionDelegate ros = new RunOnServerActionDelegate() {
+			public IServer getServer(IModule module, IModuleArtifact moduleArtifact, IProgressMonitor monitor) throws CoreException {
+				if (!ServerUIPlugin.isCompatibleWithLaunchMode(finalServer, launchMode))
+					return null;
+				
+				if (!ServerUtil.containsModule(finalServer, module, monitor)) {
+					IServerWorkingCopy wc = finalServer.createWorkingCopy();
+					try {
+						ServerUtil.modifyModules(wc, new IModule[] { module }, new IModule[0], monitor);
+						wc.save(false, monitor);
+					} catch (CoreException ce) {
+						throw ce;
+					}
+				}
+				
+				return finalServer;
+			}
+		};
+		Action action = new Action() {
+			//
+		};
+		ros.selectionChanged(action, new StructuredSelection(data));
+		
+		ros.run(action);
+		return true;
+	}
+}

Modified: trunk/as/plugins/org.jboss.ide.eclipse.as.ui/plugin.xml
===================================================================
--- trunk/as/plugins/org.jboss.ide.eclipse.as.ui/plugin.xml	2009-01-22 07:05:06 UTC (rev 13178)
+++ trunk/as/plugins/org.jboss.ide.eclipse.as.ui/plugin.xml	2009-01-22 08:00:42 UTC (rev 13179)
@@ -347,6 +347,14 @@
              </or>
             </enablement>
 	      </actionProvider>
+       <dropAssistant
+             class="org.jboss.tools.as.wst.server.ui.ServersViewDropAdapterAssistant"
+             id="org.jboss.tools.as.wst.server.ui.ServersView.DropAssistant">
+          <possibleDropTargets>
+             <instanceof
+                   value="org.eclipse.wst.server.core.IServer">
+             </instanceof></possibleDropTargets>
+       </dropAssistant>
 	   </navigatorContent>
 	</extension>
 	<extension




More information about the jbosstools-commits mailing list