blob: aa7a64bb2a3a102a08fa00c567a129ef4d0daf2e [file] [log] [blame]
//------------------------------------------------------------------------------
// Copyright (c) 2005, 2006 IBM Corporation and others.
// 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:
// IBM Corporation - initial implementation
//------------------------------------------------------------------------------
package org.eclipse.epf.authoring.gef.edit;
import org.eclipse.draw2d.Label;
import org.eclipse.epf.authoring.gef.figures.Images;
import org.eclipse.epf.diagram.model.ActivityDetailDiagram;
import org.eclipse.epf.diagram.model.LinkedObject;
import org.eclipse.epf.diagram.model.NamedNode;
import org.eclipse.epf.diagram.model.Node;
import org.eclipse.epf.diagram.model.RoleNode;
import org.eclipse.epf.diagram.model.TaskNode;
import org.eclipse.epf.diagram.model.WorkProductDescriptorNode;
import org.eclipse.epf.library.edit.util.TngUtil;
import org.eclipse.epf.uma.Artifact;
import org.eclipse.epf.uma.Deliverable;
import org.eclipse.epf.uma.Outcome;
import org.eclipse.epf.uma.WorkProduct;
import org.eclipse.epf.uma.WorkProductDescriptor;
import org.eclipse.gef.EditPolicy;
import org.eclipse.gef.tools.DirectEditManager;
import org.eclipse.jface.viewers.TextCellEditor;
import org.eclipse.swt.graphics.Image;
/**
* EditPart for WorkBreakdown Elements in an Activity.
*
* @author Phong Nguyen Le
* @since 1.0
*/
public class DescriptorNodeEditPart extends NamedNodeEditPart {
public DescriptorNodeEditPart(NamedNode model) {
super(model);
}
/**
* @see org.eclipse.epf.authoring.gef.edit.NamedNodeEditPart#getImage()
*/
protected Image getImage() {
Object model = getModel();
if (model instanceof RoleNode) {
if(((Node)model).getDiagram() instanceof ActivityDetailDiagram)
return Images.ROLE_DESCRIPTOR_16;
return Images.ROLE;
} else if (model instanceof TaskNode) {
if(((Node)model).getDiagram() instanceof ActivityDetailDiagram)
return Images.TASK_DESCRIPTOR_16;
return Images.TASK_DESCRIPTOR;
} else if (model instanceof WorkProductDescriptorNode) {
if(((Node)model).getDiagram() instanceof ActivityDetailDiagram)
return Images.WORK_PRODUCT_DESCRIPTOR_16;
WorkProductDescriptor wpd = (WorkProductDescriptor) ((LinkedObject) model)
.getObject();
WorkProduct wp = wpd.getWorkProduct();
if (wp instanceof Artifact) {
return Images.WORK_PRODUCT_DESCRIPTOR_16;
} else if (wp instanceof Deliverable) {
return Images.DELIVERABLE;
} else if (wp instanceof Outcome) {
return Images.OUTCOME;
}
return Images.WORK_PRODUCT_DESCRIPTOR_16;
}
return null;
}
/**
* @see org.eclipse.epf.authoring.gef.edit.NamedNodeEditPart#createDirectEditPolicy() *
*/
protected DirectEditManager createDirectEditManager() {
Label l = (Label) getFigure();
return new ValidatingDirectEditManager(this, TextCellEditor.class,
new LabelTextCellEditorLocator(l), l) {
protected String validate(String txt) {
Object obj = getEditPart().getModel();
if (obj instanceof WorkProductDescriptorNode) {
Node node = (Node) obj;
Object e = node.getObject();
return TngUtil.checkWorkProductDescriptorPresentationName(
e, txt, node.getDiagram().getSuppression());
}
if (obj instanceof TaskNode) {
Node node = (Node) obj;
Object e = node.getObject();
return TngUtil.checkWorkBreakdownElementPresentationName(e,
txt, node.getDiagram().getSuppression());
}
if (obj instanceof RoleNode) {
Node node = (Node) obj;
Object e = node.getObject();
return TngUtil.checkRoleDescriptorPresentationName(e, txt, node.getDiagram().getSuppression());
}
return super.validate(txt);
}
};
}
protected void refreshSourceConnections() {
super.refreshSourceConnections();
}
protected void createEditPolicies() {
super.createEditPolicies();
installEditPolicy(EditPolicy.COMPONENT_ROLE, null);
}
protected DirectEditManager getDirectEditManager() {
return null;
}
}