⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 connectioncreatecommand.java

📁 mywork是rcp开发的很好的例子
💻 JAVA
字号:
/******************************************************************************* * Copyright (c) 2004, 2005 Elias Volanakis 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:�*����Elias Volanakis - initial API and implementation�*******************************************************************************/package net.sf.freenote.commands;import java.util.Iterator;import net.sf.freenote.model.Connection;import net.sf.freenote.model.Shape;import org.eclipse.gef.commands.Command;/** * A command to create a connection between two shapes. * The command can be undone or redone. * <p> * This command is designed to be used together with a GraphicalNodeEditPolicy. * To use this command properly, following steps are necessary: * </p> * <ol> * <li>Create a subclass of GraphicalNodeEditPolicy.</li> * <li>Override the <tt>getConnectionCreateCommand(...)</tt> method,  * to create a new instance of this class and put it into the CreateConnectionRequest.</li> * <li>Override the <tt>getConnectionCompleteCommand(...)</tt>  method, * to obtain the Command from the ConnectionRequest, call setTarget(...) to set the * target endpoint of the connection and return this command instance.</li> * </ol> * @see net.sf.freenote.parts.ShapeEditPart#createEditPolicies() for an * 			 example of the above procedure. * @see org.eclipse.gef.editpolicies.GraphicalNodeEditPolicy * @author Elias Volanakis */public class ConnectionCreateCommand extends Command {/** The connection instance. */private Connection connection;/** The desired line style for the connection (dashed or solid). */private final int lineStyle;/** Start endpoint for the connection. */private final Shape source;/** Target endpoint for the connection. */private Shape target;/** *	Instantiate a command that can create a connection between two shapes. * @param source the source endpoint (a non-null Shape instance) * @param lineStyle the desired line style. See Connection#setLineStyle(int) for details * @throws IllegalArgumentException if source is null * @see Connection#setLineStyle(int) */public ConnectionCreateCommand(Shape source, int lineStyle) {	if (source == null) {		throw new IllegalArgumentException();	}	setLabel("connection creation");	this.source = source;	this.lineStyle = lineStyle;}/* (non-Javadoc) * @see org.eclipse.gef.commands.Command#canExecute() */public boolean canExecute() {	// disallow source -> source connections	if (source.equals(target)) {		return false;	}	// return false, if the source -> target connection exists already	for (Iterator iter = source.getSourceConnections().iterator(); iter.hasNext();) {		Connection conn = (Connection) iter.next();		if (conn.getTarget().equals(target)) {			return false;		}	}	return true;}/* (non-Javadoc) * @see org.eclipse.gef.commands.Command#execute() */public void execute() {	// create a new connection between source and target	connection = new Connection(source, target);	// use the supplied line style	connection.setLineStyle(lineStyle);}/* (non-Javadoc) * @see org.eclipse.gef.commands.Command#redo() */public void redo() {	connection.reconnect();}/** * Set the target endpoint for the connection. * @param target that target endpoint (a non-null Shape instance) * @throws IllegalArgumentException if target is null */public void setTarget(Shape target) {	if (target == null) {		throw new IllegalArgumentException();	}	this.target = target;}/* (non-Javadoc) * @see org.eclipse.gef.commands.Command#undo() */public void undo() {	connection.disconnect();}}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -