三、删除结点时删除连接线
public class DeleteHelloWorldCommand extends Command {
private DiagramRootContent content;
private HelloWorldModel model;
private List<AbstractConnectionModel> inputs = new ArrayList<AbstractConnectionModel>();
private List<AbstractConnectionModel> outs = new ArrayList<AbstractConnectionModel>();
public DeleteHelloWorldCommand(DiagramRootContent content,
HelloWorldModel model) {
super();
this.content = content;
this.model = model;
inputs.addAll(model.getInputs());
outs.addAll(model.getOutputs());
}
@Override
public void execute() {
for (AbstractConnectionModel connection : inputs) {
connection.deattachSource();
connection.deattachTarget();
}
for (AbstractConnectionModel connection : outs) {
connection.deattachSource();
connection.deattachTarget();
}
content.removeChild(model);
}
@Override
public void undo() {
for (AbstractConnectionModel connection : inputs) {
connection.attachSource();
connection.attachTarget();
}
for (AbstractConnectionModel connection : outs) {
connection.attachSource();
connection.attachTarget();
}
content.addChild(model);
}
}
四、删除连接线
installEditPolicy(EditPolicy.CONNECTION_ROLE, new DeleteConnectionEditPolicy());
public class DeleteConnectionCommand extends Command {
private AbstractConnectionModel connection;
public DeleteConnectionCommand(AbstractConnectionModel connection) {
super();
this.connection = connection;
}
@Override
public void execute() {
connection.deattachSource();
connection.deattachTarget();
}
@Override
public void undo() {
connection.attachSource();
connection.attachTarget();
}
}
public class DeleteConnectionEditPolicy extends ConnectionEditPolicy {
@Override
protected Command getDeleteCommand(GroupRequest request) {
DeleteConnectionCommand command = new DeleteConnectionCommand((AbstractConnectionModel) getHost()
.getModel());
return command;
}
}