package org.insightech.er.editor.controller.editpart.outline.sequence;
import java.beans.PropertyChangeEvent;
import org.eclipse.draw2d.ColorConstants;
import org.eclipse.gef.DragTracker;
import org.eclipse.gef.EditPolicy;
import org.eclipse.gef.Request;
import org.eclipse.gef.RequestConstants;
import org.eclipse.gef.tools.SelectEditPartTracker;
import org.eclipse.jface.dialogs.IDialogConstants;
import org.eclipse.swt.widgets.TreeItem;
import org.eclipse.ui.PlatformUI;
import org.insightech.er.Activator;
import org.insightech.er.ImageKey;
import org.insightech.er.db.DBManager;
import org.insightech.er.db.DBManagerFactory;
import org.insightech.er.editor.controller.command.diagram_contents.not_element.sequence.EditSequenceCommand;
import org.insightech.er.editor.controller.editpart.DeleteableEditPart;
import org.insightech.er.editor.controller.editpart.outline.AbstractOutlineEditPart;
import org.insightech.er.editor.controller.editpolicy.not_element.sequence.SequenceComponentEditPolicy;
import org.insightech.er.editor.model.ERDiagram;
import org.insightech.er.editor.model.diagram_contents.not_element.sequence.Sequence;
import org.insightech.er.editor.view.dialog.outline.sequence.SequenceDialog;
public class SequenceOutlineEditPart extends AbstractOutlineEditPart implements
DeleteableEditPart {
public void propertyChange(PropertyChangeEvent evt) {
}
/**
* {@inheritDoc}
*/
@Override
protected void refreshOutlineVisuals() {
Sequence sequence = (Sequence) this.getModel();
if (!DBManagerFactory.getDBManager(this.getDiagram()).isSupported(
DBManager.SUPPORT_SEQUENCE)) {
((TreeItem) getWidget()).setForeground(ColorConstants.lightGray);
} else {
((TreeItem) getWidget()).setForeground(ColorConstants.black);
}
this.setWidgetText(this.getDiagram().filter(sequence.getName()));
this.setWidgetImage(Activator.getImage(ImageKey.SEQUENCE));
}
/**
* {@inheritDoc}
*/
@Override
public void performRequest(Request request) {
try {
Sequence sequence = (Sequence) this.getModel();
ERDiagram diagram = this.getDiagram();
if (request.getType().equals(RequestConstants.REQ_OPEN)) {
SequenceDialog dialog = new SequenceDialog(PlatformUI
.getWorkbench().getActiveWorkbenchWindow().getShell(),
sequence, diagram);
if (dialog.open() == IDialogConstants.OK_ID) {
EditSequenceCommand command = new EditSequenceCommand(
diagram, sequence, dialog.getResult());
this.execute(command);
}
}
super.performRequest(request);
} catch (Exception e) {
Activator.showExceptionDialog(e);
}
}
/**
* {@inheritDoc}
*/
@Override
protected void createEditPolicies() {
this.installEditPolicy(EditPolicy.COMPONENT_ROLE,
new SequenceComponentEditPolicy());
}
/**
* {@inheritDoc}
*/
@Override
public DragTracker getDragTracker(Request req) {
return new SelectEditPartTracker(this);
}
public boolean isDeleteable() {
return true;
}
}