/* * JBoss, Home of Professional Open Source. * * See the LEGAL.txt file distributed with this work for information regarding copyright ownership and licensing. * * See the AUTHORS.txt file distributed with this work for a full listing of individual contributors. */ package org.teiid.designer.diagram.ui.part; import java.util.List; import org.eclipse.draw2d.ColorConstants; import org.eclipse.draw2d.geometry.Point; /** * @since 8.0 */ public class RelationalDropEditPartHelper extends DropEditPartHelper { private DiagramEditPart editPart; private boolean hilited = false; public RelationalDropEditPartHelper(DiagramEditPart editPart) { super(); this.editPart = editPart; } @Override public void drop(Point dropPoint, List dropList) { super.drop(dropPoint, dropList); } @Override public Point getLastHoverPoint() { return super.getLastHoverPoint(); } @Override public void hilite(boolean hilite) { if (hilite && !hilited) { hilited = true; editPart.hiliteBackground(ColorConstants.lightGreen); } else if (!hilite && hilited) { editPart.hiliteBackground(null); hilited = false; } } @Override public void setLastHoverPoint(Point lastHoverPoint) { super.setLastHoverPoint(lastHoverPoint); } @Override public boolean allowsDrop(Object target, List dropList) { return false; // return canCreateAssociation(dropList); } // private List getEObjectList(List dropList) { // if( editPart.getModelObject() instanceof Diagram ) // return Collections.EMPTY_LIST; // // List eObjs = new ArrayList(dropList.size() + 1); // for( Iterator iter = dropList.iterator(); iter.hasNext(); ) { // Object nextObj = iter.next(); // if( nextObj instanceof EObject ) { // eObjs.add(nextObj); // } else { // return Collections.EMPTY_LIST; // } // } // eObjs.add(editPart.getModelObject()); // // return eObjs; // } // private boolean canCreateAssociation(List dropList) { // boolean canCreate = false; // // if( !isDiagramReadOnly() && isPackageDiagram() ) { // List selectedEObjects = getEObjectList(dropList);; // if( selectedEObjects.size() > 1 ) { // try { // Collection descriptors = ModelerCore.getModelEditor().getNewAssociationDescriptors(selectedEObjects); // if( descriptors.size() == 1 ) { // AssociationDescriptor theDescriptor = (AssociationDescriptor)descriptors.iterator().next(); // // if( theDescriptor.isAmbiguous() ) { // DiagramUiConstants.Util.log( // IStatus.INFO, // "HiliteDndNodeSelectionEditPolicy.canCreateAssociation() The Association Descriptor is AMBIGUOUS"); //$NON-NLS-1$ // } // // if( theDescriptor.isComplete() ) // canCreate = true; // } else { // Iterator iter = descriptors.iterator(); // AssociationDescriptor theDescriptor = null; // while( iter.hasNext() ) { // theDescriptor = (AssociationDescriptor)iter.next(); // if( theDescriptor.isAmbiguous() ) { // DiagramUiConstants.Util.log( // IStatus.INFO, // "HiliteDndNodeSelectionEditPolicy.canCreateAssociation() The Association Descriptor is AMBIGUOUS"); //$NON-NLS-1$ // } // // if( theDescriptor.isComplete() ) // canCreate = true; // // if( canCreate ) { // break; // } // } // } // } catch (ModelerCoreException theException) { // DiagramUiConstants.Util.log( // IStatus.ERROR, // "HiliteDndNodeSelectionEditPolicy.canCreateAssociation() ERROR getting New Association Descriptors"); //$NON-NLS-1$ // } // } // } // return canCreate; // } // // protected boolean isDiagramReadOnly() { // Diagram diagram = ((DiagramViewer)editPart.getViewer()).getEditor().getDiagram(); // // return ModelObjectUtilities.isReadOnly(diagram); // } // // private boolean isPackageDiagram() { // boolean result = false; // Diagram diagram = ((DiagramViewer)editPart.getViewer()).getEditor().getDiagram(); // if( diagram != null && // diagram.getType() != null && // diagram.getType().equals(PluginConstants.PACKAGE_DIAGRAM_TYPE_ID)) // result = true; // // return result; // } }