package org.nightlabs.jfire.reporting.admin.parameter.ui.editpolicy; import org.eclipse.draw2d.ConnectionAnchor; import org.eclipse.draw2d.IFigure; import org.eclipse.gef.EditPart; import org.eclipse.gef.GraphicalEditPart; import org.eclipse.gef.Request; import org.eclipse.gef.RequestConstants; import org.eclipse.gef.editpolicies.GraphicalEditPolicy; import org.nightlabs.jfire.reporting.admin.parameter.ui.editpart.AbstractNodeReportEditPart; import org.nightlabs.jfire.reporting.admin.parameter.ui.figure.AbstractInputNodeFigure; /** * @author Daniel.Mazurek [at] NightLabs [dot] de * */ public class ContainerHighlightEditPolicy extends GraphicalEditPolicy { private AbstractNodeReportEditPart reportEditPart; public ContainerHighlightEditPolicy(AbstractNodeReportEditPart reportEditPart) { this.reportEditPart = reportEditPart; } @Override public void eraseTargetFeedback(Request request){ if (getContainerFigure() instanceof AbstractInputNodeFigure) { ((AbstractInputNodeFigure)getContainerFigure()).setInputHighlight(null); } } private IFigure getContainerFigure(){ return ((GraphicalEditPart)getHost()).getFigure(); } @Override public EditPart getTargetEditPart(Request request){ return request.getType().equals(RequestConstants.REQ_SELECTION_HOVER) ? getHost() : null; } protected void showHighlight(Request request){ if (getContainerFigure() instanceof AbstractInputNodeFigure) { ConnectionAnchor anchor = reportEditPart.getTargetConnectionAnchor(request); if (anchor != null) ((AbstractInputNodeFigure)getContainerFigure()).setInputHighlight(reportEditPart.mapConnectionAnchorToParameterID(anchor)); else ((AbstractInputNodeFigure)getContainerFigure()).setInputHighlight(reportEditPart.mapConnectionAnchorToParameterID(null)); } } @Override public void showTargetFeedback(Request request){ if(request.getType().equals(RequestConstants.REQ_MOVE) || request.getType().equals(RequestConstants.REQ_ADD) || request.getType().equals(RequestConstants.REQ_CLONE) || request.getType().equals(RequestConstants.REQ_CONNECTION_START) || request.getType().equals(RequestConstants.REQ_CONNECTION_END) || request.getType().equals(RequestConstants.REQ_CREATE) ) showHighlight(request); } }