package org.insightech.er.editor.view.action.line;
import java.util.ArrayList;
import java.util.List;
import org.eclipse.gef.ConnectionEditPart;
import org.eclipse.gef.EditPart;
import org.eclipse.gef.GraphicalViewer;
import org.eclipse.gef.commands.Command;
import org.eclipse.gef.editparts.AbstractConnectionEditPart;
import org.eclipse.swt.widgets.Event;
import org.insightech.er.ResourceString;
import org.insightech.er.editor.ERDiagramEditor;
import org.insightech.er.editor.controller.command.diagram_contents.element.connection.DefaultLineCommand;
import org.insightech.er.editor.controller.editpart.element.node.IResizable;
import org.insightech.er.editor.controller.editpart.element.node.NodeElementEditPart;
import org.insightech.er.editor.model.diagram_contents.element.connection.ConnectionElement;
import org.insightech.er.editor.view.action.AbstractBaseSelectionAction;
public class DefaultLineAction extends AbstractBaseSelectionAction {
public static final String ID = DefaultLineAction.class.getName();
public DefaultLineAction(ERDiagramEditor editor) {
super(ID, ResourceString.getResourceString("action.title.default"),
editor);
}
/**
* {@inheritDoc}
*/
@Override
protected List<Command> getCommand(EditPart editPart, Event event) {
List<Command> commandList = new ArrayList<Command>();
if (editPart instanceof IResizable) {
NodeElementEditPart nodeElementEditPart = (NodeElementEditPart) editPart;
for (Object obj : nodeElementEditPart.getSourceConnections()) {
AbstractConnectionEditPart connectionEditPart = (AbstractConnectionEditPart) obj;
if (connectionEditPart.getSource() != connectionEditPart
.getTarget()) {
commandList.add(new DefaultLineCommand(this.getDiagram(),
(ConnectionElement) connectionEditPart.getModel()));
}
}
} else if (editPart instanceof AbstractConnectionEditPart) {
AbstractConnectionEditPart connectionEditPart = (AbstractConnectionEditPart) editPart;
if (connectionEditPart.getSource() != connectionEditPart
.getTarget()) {
commandList.add(new DefaultLineCommand(this.getDiagram(),
(ConnectionElement) connectionEditPart.getModel()));
}
}
return commandList;
}
@Override
protected boolean calculateEnabled() {
GraphicalViewer viewer = this.getGraphicalViewer();
for (Object object : viewer.getSelectedEditParts()) {
if (object instanceof ConnectionEditPart) {
return true;
} else if (object instanceof NodeElementEditPart) {
NodeElementEditPart nodeElementEditPart = (NodeElementEditPart) object;
if (!nodeElementEditPart.getSourceConnections().isEmpty()) {
return true;
}
}
}
return false;
}
}