blob: 2d005967418478d23de7840036459f3e5f5252e8 [file] [log] [blame]
/*******************************************************************************
* Copyright (c) 2004, 2007 Boeing.
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License v1.0
* which accompanies this distribution, and is available at
* http://www.eclipse.org/legal/epl-v10.html
*
* Contributors:
* Boeing - initial API and implementation
*******************************************************************************/
package org.eclipse.osee.framework.ui.data.model.editor.part;
import java.util.List;
import org.eclipse.draw2d.ChopboxAnchor;
import org.eclipse.draw2d.ConnectionAnchor;
import org.eclipse.draw2d.geometry.Rectangle;
import org.eclipse.gef.ConnectionEditPart;
import org.eclipse.gef.DragTracker;
import org.eclipse.gef.EditPart;
import org.eclipse.gef.EditPolicy;
import org.eclipse.gef.GraphicalEditPart;
import org.eclipse.gef.NodeEditPart;
import org.eclipse.gef.Request;
import org.eclipse.gef.commands.Command;
import org.eclipse.gef.editpolicies.LayoutEditPolicy;
import org.eclipse.gef.requests.CreateRequest;
import org.eclipse.gef.tools.DragEditPartsTracker;
import org.eclipse.osee.framework.ui.data.model.editor.model.ConnectionModel;
import org.eclipse.osee.framework.ui.data.model.editor.model.NodeModel;
/**
* @author Roberto E. Escobar
*/
public abstract class NodeModelEditPart extends BaseEditPart implements NodeEditPart {
private ChopboxAnchor anchor;
public NodeModelEditPart(NodeModel model) {
super(model);
}
public boolean canDeleteFromDiagram() {
return true;
}
protected void createEditPolicies() {
super.createEditPolicies();
installEditPolicy(EditPolicy.SELECTION_FEEDBACK_ROLE, null);
installEditPolicy(EditPolicy.LAYOUT_ROLE, new LayoutEditPolicy() {
protected EditPolicy createChildEditPolicy(EditPart child) {
return null;
}
protected Command getCreateCommand(CreateRequest request) {
return null;
}
protected Command getDeleteDependantCommand(Request request) {
return null;
}
protected Command getMoveChildrenCommand(Request request) {
return null;
}
});
}
public DragTracker getDragTracker(Request request) {
return new DragEditPartsTracker(this);
}
protected NodeModel getNodeModel() {
return (NodeModel) getModel();
}
@SuppressWarnings("unchecked")
protected List<ConnectionModel> getModelSourceConnections() {
return getNodeModel().getSourceConnections();
}
@SuppressWarnings("unchecked")
protected List<ConnectionModel> getModelTargetConnections() {
return getNodeModel().getTargetConnections();
}
public ConnectionAnchor getSourceConnectionAnchor(ConnectionEditPart connection) {
if (anchor == null) anchor = new ChopboxAnchor(getFigure());
return anchor;
}
public ConnectionAnchor getSourceConnectionAnchor(Request request) {
if (anchor == null) anchor = new ChopboxAnchor(getFigure());
return anchor;
}
public ConnectionAnchor getTargetConnectionAnchor(ConnectionEditPart connection) {
if (anchor == null) anchor = new ChopboxAnchor(getFigure());
return anchor;
}
public ConnectionAnchor getTargetConnectionAnchor(Request request) {
if (anchor == null) anchor = new ChopboxAnchor(getFigure());
return anchor;
}
/* (non-Javadoc)
* @see org.eclipse.osee.framework.ui.data.model.editor.part.BaseEditPart#handleModelChanged(java.lang.Object)
*/
@Override
protected void handleModelEvent(Object msg) {
refreshVisuals();
}
protected void refreshVisuals() {
super.refreshVisuals();
Rectangle constraint = new Rectangle(0, 0, -1, -1);
constraint.setLocation(getNodeModel().getLocation());
constraint.width = getNodeModel().getWidth();
((GraphicalEditPart) getParent()).setLayoutConstraint(this, getFigure(), constraint);
}
}