/*******************************************************************************
 * Copyright (c) 2004 Elias Volanakis.
 * All rights reserved. This program and the accompanying materials
 * are made available under the terms of the Common Public License v1.0
 * which accompanies this distribution, and is available at
 * http://www.eclipse.org/legal/cpl-v10.html
 *
 * Contributors:
 *    Elias Volanakis - initial API and implementation
 *******************************************************************************/
package bilab.notebook.model.commands;

import org.eclipse.gef.commands.Command;

import bilab.notebook.model.Connection;

/**
 * A command to disconnect (remove) a connection from its endpoints.
 * The command can be undone or redone.
 * @author Elias Volanakis
 */
public class ConnectionDeleteCommand extends Command {

/** Connection instance to disconnect. */
private final Connection connection;

/** 
 * Create a command that will disconnect a connection from its endpoints.
 * @param conn the connection instance to disconnect (non-null)
 * @throws IllegalArgumentException if conn is null
 */ 
public ConnectionDeleteCommand(Connection conn) {
	if (conn == null) {
		throw new IllegalArgumentException();
	}
	setLabel("connection deletion");
	this.connection = conn;
}


/* (non-Javadoc)
 * @see org.eclipse.gef.commands.Command#execute()
 */
public void execute() {
	connection.disconnect();
}

/* (non-Javadoc)
 * @see org.eclipse.gef.commands.Command#undo()
 */
public void undo() {
	connection.reconnect();
}
}
