/******************************************************************************* * Copyright 2005-2006, CHISEL Group, University of Victoria, Victoria, BC, Canada * and IBM Corporation. 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: * The Chisel Group, University of Victoria *******************************************************************************/ package net.sourceforge.tagsea.core.ui.internal.waypoints; import net.sourceforge.tagsea.core.IWaypoint; import net.sourceforge.tagsea.core.ui.tags.TagNameTransfer; import org.eclipse.core.runtime.IAdaptable; import org.eclipse.jface.viewers.Viewer; import org.eclipse.jface.viewers.ViewerDropAdapter; import org.eclipse.swt.dnd.DND; import org.eclipse.swt.dnd.DropTargetEvent; import org.eclipse.swt.dnd.TransferData; /** * Drop adapter for the waypoint view. Accepts tag name transfers * @author Del Myers */ public class WaypointTableViewDropAdapter extends ViewerDropAdapter { /** * @param viewer */ public WaypointTableViewDropAdapter(Viewer viewer) { super(viewer); } /* (non-Javadoc) * @see org.eclipse.jface.viewers.ViewerDropAdapter#performDrop(java.lang.Object) */ @Override public boolean performDrop(Object data) { IWaypoint waypoint = (IWaypoint) ((IAdaptable) getCurrentTarget()).getAdapter(IWaypoint.class); if (data instanceof String[]) { for (String name : ((String[])data)) { waypoint.addTag(name); } } return true; } /* (non-Javadoc) * @see org.eclipse.jface.viewers.ViewerDropAdapter#dragEnter(org.eclipse.swt.dnd.DropTargetEvent) */ @Override public void dragEnter(DropTargetEvent event) { event.detail = DND.DROP_COPY; super.dragEnter(event); } /* (non-Javadoc) * @see org.eclipse.jface.viewers.ViewerDropAdapter#validateDrop(java.lang.Object, int, org.eclipse.swt.dnd.TransferData) */ @Override public boolean validateDrop(Object target, int operation, TransferData transferType) { boolean okay = (TagNameTransfer.getInstance().isSupportedType(transferType)); if (okay = (target instanceof IAdaptable)) { okay = ((IAdaptable)target).getAdapter(IWaypoint.class) != null; } return okay; } }