/******************************************************************************* * Copyright (c) 2000, 2010, 2012 IBM Corporation, Gerhardt Informatics Kft. 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: * IBM Corporation - initial API and implementation * Gerhardt Informatics Kft. - GEFGWT port *******************************************************************************/ package org.eclipse.gef; /** * A specialization of {@link GraphicalEditPart GraphicalEditPart} for * representing connections. ConnectionEditParts must join a <I>source</I> and * <I>target</I> EditPart. Its Figure is typically a line between two "nodes", * with possible decorations on that line. * <P> * In GEF, ConnectionEditParts are <EM><I>structural features</I></EM> of their * source and target "nodes", which are EditParts. However, the model does not * have this requirement. The application may store the connection model in any * way, or there may even be no real model. The burden is on the source and * target EditPart to obtain their appropriate connections in the methods * {@link org.eclipse.gef.editparts.AbstractGraphicalEditPart#getModelSourceConnections() * getModelSourceConnections()} and * {@link org.eclipse.gef.editparts.AbstractGraphicalEditPart#getModelTargetConnections() * getModelTargetConnections()}. How this is done is application specific. * <P> * Since ConnectionEditParts are features of their node EditPart, it is those * EditParts that must create and manage the connection. Creation is performed * by whichever end happens to "intialize" itself first. Therefore an end always * looks first in the * {@link org.eclipse.gef.EditPartViewer#getEditPartRegistry() EditPartRegistry} * to see if the connection was already created by the other end. * <P> * ConnectionEditParts are EditParts, and therefore can have children. This is a * common way to implement labels and other selectable decorations on * connections. Similarly, a ConnectionEditPart can also be a "node", meaning it * can serve as the source or target of some other ConnectionEditPart. This * makes connection to connection possible. * <P> * IMPORTANT: The need to display something as a line does not automatically * mean that a ConnectionEditPart is required. There are several situations in * which ConnectionEditParts should not be used. You should use * ConnectionEditParts in general if: * <UL> * <LI>The connection should be selectable by the user independant of its * "nodes". * <LI>The connection can be deleted, leaving the source and target intact. * <LI>The connection cannot exist without a source and target. A instance of * when this is <B>not</B> true is <I>assocations</I>. Associations are * top-level object that are children of the diagram. They are probably only * valid if they have a source and target, but many applications allow you to * create things in any order. * </UL> */ public interface ConnectionEditPart extends GraphicalEditPart { /** * @return the EditPart at the <i>source</i> end of this connection. */ EditPart getSource(); /** * @return the EditPart at the <i>target</i> end of this connection. */ EditPart getTarget(); /** * Sets the <i>source</i> of this connection. * * @param source * the source of this connection */ void setSource(EditPart source); /** * Sets the<i>target</i> of this connection. * * @param target * the target of this connection */ void setTarget(EditPart target); }