/* * 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.util; import org.eclipse.gef.EditPart; import org.eclipse.gef.editpolicies.SelectionEditPolicy; import org.teiid.designer.diagram.ui.connection.NodeConnectionEditPart; import org.teiid.designer.diagram.ui.editor.DiagramViewer; import org.teiid.designer.diagram.ui.model.DiagramModelNode; import org.teiid.designer.diagram.ui.part.DiagramEditPart; /** * @author blafond To change the template for this generated type comment go to Window>Preferences>Java>Code Generation>Code and * Comments * * @since 8.0 */ public class DiagramNodeSelectionEditPolicy extends SelectionEditPolicy { private boolean activating = false; @Override public void activate() { this.activating = true; super.activate(); this.activating = false; } /* (non-Javadoc) * @see org.eclipse.gef.editpolicies.SelectionEditPolicy#hideSelection() */ @Override protected void hideSelection() { if (getHost().getViewer() instanceof DiagramViewer && getHost().getViewer().getSelectedEditParts().size() == 1 && !isActivating()) ((DiagramViewer)getHost().getViewer()).getSelectionHandler().hiliteDependencies(null); } public boolean isActivating() { return this.activating; } /* (non-Javadoc) * @see org.eclipse.gef.editpolicies.SelectionEditPolicy#showSelection() */ @Override protected void showSelection() { final EditPart targetEditPart = getHost(); if (!(targetEditPart instanceof NodeConnectionEditPart) && targetEditPart.getViewer() instanceof DiagramViewer) ((DiagramViewer)targetEditPart.getViewer()).getSelectionHandler().clearConnectionHilites(); if (targetEditPart instanceof DiagramEditPart) { final DiagramEditPart selectedPart = (DiagramEditPart)targetEditPart; if (!selectedPart.isSelectablePart()) { selectedPart.getViewer().deselect(selectedPart); final DiagramEditPart parentPart = selectedPart.getPrimaryParent(); selectedPart.getViewer().select(parentPart); } } // String debugMessage = " +++----- >>> DiagramNodeSelctionPolicy.showSelection(editPart): EditPart = " + // targetEditPart; // System.out.println(debugMessage); if (getHost().getViewer() instanceof DiagramViewer && getHost().getViewer().getSelectedEditParts().size() == 1) if (targetEditPart instanceof DiagramEditPart) { final DiagramEditPart selectedPart = (DiagramEditPart)targetEditPart; final Object diagramNodeModelObject = selectedPart.getModel(); if (diagramNodeModelObject != null && diagramNodeModelObject instanceof DiagramModelNode) { final Object actualModelObject = ((DiagramModelNode)diagramNodeModelObject).getModelObject(); if (actualModelObject != null && !isActivating()) ((DiagramViewer)getHost().getViewer()).getSelectionHandler().hiliteDependencies(actualModelObject); } } else if (targetEditPart instanceof NodeConnectionEditPart && !isActivating()) ((DiagramViewer)getHost().getViewer()).getSelectionHandler().hiliteDependencies(targetEditPart); } }