/*************************************************** * * cismet GmbH, Saarbruecken, Germany * * ... and it just works. * ****************************************************/ /* * To change this template, choose Tools | Templates * and open the template in the editor. */ package de.cismet.cids.navigator.utils; import Sirius.navigator.types.treenode.DefaultMetaTreeNode; import Sirius.navigator.types.treenode.ObjectTreeNode; import Sirius.server.middleware.types.MetaClass; import Sirius.server.middleware.types.MetaObject; import java.awt.Component; import java.awt.HeadlessException; import java.awt.datatransfer.DataFlavor; import java.awt.dnd.DropTarget; import java.awt.dnd.DropTargetDropEvent; import java.util.ArrayList; import java.util.Collection; import de.cismet.cids.dynamics.CidsBean; /** * DOCUMENT ME! * * @author thorsten * @version $Revision$, $Date$ */ public abstract class AbstractCidsBeanDropTarget extends DropTarget { //~ Instance fields -------------------------------------------------------- DataFlavor fromNavigatorNode = new DataFlavor(DataFlavor.javaJVMLocalObjectMimeType + ";class=" + DefaultMetaTreeNode.class.getName(), "a DefaultMetaTreeNode"); // NOI18N DataFlavor fromNavigatorCollection = new DataFlavor(DataFlavor.javaJVMLocalObjectMimeType + ";class=" + java.util.Collection.class.getName(), "a java.util.Collection of Sirius.navigator.types.treenode.DefaultMetaTreeNode objects"); // NOI18N private final org.apache.log4j.Logger log = org.apache.log4j.Logger.getLogger(this.getClass()); //~ Constructors ----------------------------------------------------------- /** * Creates a new AbstractCidsBeanDropTarget object. * * @param c DOCUMENT ME! * * @throws HeadlessException DOCUMENT ME! */ public AbstractCidsBeanDropTarget(final Component c) throws HeadlessException { super(); setComponent(c); } //~ Methods ---------------------------------------------------------------- @Override public synchronized void drop(final DropTargetDropEvent dtde) { log.info("dropped Cidsbeans"); // NOI18N try { final ArrayList<CidsBean> beans = new ArrayList<CidsBean>(); if (dtde.getTransferable().isDataFlavorSupported(fromNavigatorNode) && dtde.getTransferable().isDataFlavorSupported(fromNavigatorCollection)) { try { final Object object = dtde.getTransferable().getTransferData(fromNavigatorCollection); if (object instanceof Collection) { final Collection c = (Collection)object; for (final Object o : c) { if (o instanceof ObjectTreeNode) { final ObjectTreeNode otn = (ObjectTreeNode)o; final MetaObject mo = otn.getMetaObject(); beans.add(mo.getBean()); } } } } catch (Throwable t) { log.fatal("Drop Problems occurred", t); // NOI18N } } else { log.fatal("Wrong transferable"); // NOI18N } beansDropped(beans); } catch (Throwable ups) { log.error("Problem during the DnD Opertaion", ups); // NOI18N } } /** * DOCUMENT ME! * * @param beans DOCUMENT ME! */ public abstract void beansDropped(ArrayList<CidsBean> beans); }