/*************************************************** * * cismet GmbH, Saarbruecken, Germany * * ... and it just works. * ****************************************************/ package Sirius.navigator.ui.tree; import Sirius.navigator.types.treenode.DefaultMetaTreeNode; import Sirius.navigator.ui.ComponentRegistry; import Sirius.server.middleware.types.Node; import java.awt.datatransfer.DataFlavor; import java.awt.dnd.DropTarget; import java.awt.dnd.DropTargetDragEvent; import java.awt.dnd.DropTargetDropEvent; import java.awt.dnd.DropTargetEvent; import java.awt.dnd.DropTargetListener; import java.util.Collection; import javax.swing.JOptionPane; import de.cismet.cismap.commons.util.DnDUtils; import de.cismet.tools.gui.StaticSwingTools; /** * DOCUMENT ME! * * @author thorsten * @version $Revision$, $Date$ */ public class WorkingSpace extends SearchResultsTreePanel implements DropTargetListener { //~ Instance fields -------------------------------------------------------- DataFlavor nodesFlavor = new DataFlavor(DataFlavor.javaJVMLocalObjectMimeType + ";class=" // NOI18N + java.util.Collection.class.getName(), "a java.util.Collection of Sirius.navigator.types.treenode.DefaultMetaTreeNode objects"); //~ Constructors ----------------------------------------------------------- /** * Creates a new WorkingSpace object. * * @param workingSpaceTree DOCUMENT ME! */ public WorkingSpace(final WorkingSpaceTree workingSpaceTree) { super(workingSpaceTree); new DropTarget(this, this); } /** * Creates a new WorkingSpace object. * * @param workingSpaceTree DOCUMENT ME! * @param advancedLayout DOCUMENT ME! */ public WorkingSpace(final WorkingSpaceTree workingSpaceTree, final boolean advancedLayout) { super(workingSpaceTree, advancedLayout); new DropTarget(this, this); } //~ Methods ---------------------------------------------------------------- @Override public void dragEnter(final DropTargetDragEvent dtde) { } @Override public void dragOver(final DropTargetDragEvent dtde) { } @Override public void dropActionChanged(final DropTargetDragEvent dtde) { } @Override public void dragExit(final DropTargetEvent dte) { } @Override public void drop(final DropTargetDropEvent dtde) { if (dtde.getTransferable().isDataFlavorSupported(nodesFlavor)) { // Drop von MetaObjects try { final Object object = dtde.getTransferable().getTransferData(nodesFlavor); if (object instanceof Collection) { final Collection c = (Collection)object; final DefaultMetaTreeNode[] type = new DefaultMetaTreeNode[0]; final DefaultMetaTreeNode[] draggedTreeNodes = (DefaultMetaTreeNode[])c.toArray(type); if ((draggedTreeNodes != null) && (draggedTreeNodes.length > 0)) { final Node[] draggedNodes = new Node[draggedTreeNodes.length]; for (int i = 0; i < draggedTreeNodes.length; i++) { draggedNodes[i] = draggedTreeNodes[i].getNode(); } ComponentRegistry.getRegistry().getWorkingSpaceTree().setResultNodes(draggedNodes, true, null); dtde.acceptDrop(dtde.getDropAction()); } } } catch (Throwable t) { t.printStackTrace(); } } } }