Author: rob.stryker(a)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(a)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