blob: 5d55c9d6c9856cb05a480dee73ad3e3e3308faf7 [file] [log] [blame]
//------------------------------------------------------------------------------
// Copyright (c) 2005, 2006 IBM Corporation 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 implementation
//------------------------------------------------------------------------------
package org.eclipse.epf.diagram.model;
import org.eclipse.draw2d.geometry.Point;
import org.eclipse.emf.common.notify.Adapter;
import org.eclipse.emf.common.util.EList;
import org.eclipse.epf.uma.GraphNode;
/**
* The diagram node
*
* @author Phong Nguyen Le
* @since 1.0
* @model abstract="true"
*/
public interface Node extends LinkedObject {
/**
* Gets location of this node
*
* @model transient="true"
*/
Point getLocation();
/**
* Gets width
*
* @model default="-1" transient="true"
*/
int getWidth();
/**
* Gets height
*
* @return the height
* @model default="-1" transient="true"
*/
int getHeight();
/**
* Sets the value of the '{@link org.eclipse.epf.diagram.model.Node#getHeight <em>Height</em>}' attribute.
* <!-- begin-user-doc --> <!-- end-user-doc -->
* @param value the new value of the '<em>Height</em>' attribute.
* @see #getHeight()
* @generated
*/
void setHeight(int value);
/**
* Sets the value of the '{@link org.eclipse.epf.diagram.model.Node#getWidth <em>Width</em>}' attribute.
* <!-- begin-user-doc --> <!-- end-user-doc -->
* @param value the new value of the '<em>Width</em>' attribute.
* @see #getWidth()
* @generated
*/
void setWidth(int value);
/**
* Sets the value of the '{@link org.eclipse.epf.diagram.model.Node#getLocation <em>Location</em>}' attribute.
* <!-- begin-user-doc --> <!-- end-user-doc -->
* @param value the new value of the '<em>Location</em>' attribute.
* @see #getLocation()
* @generated
*/
void setLocation(Point value);
/**
* Gets incoming links
*
* @model type="Link" opposite="target" lower="0"
*/
EList getIncomingConnections();
/**
* Gets outgoing links
*
* @model type="Link" containment="true" opposite="source" lower="0"
*/
EList getOutgoingConnections();
/**
* Checks if this node is read-only
*
* @model
*/
boolean isReadOnly();
/**
* Sets the value of the '{@link org.eclipse.epf.diagram.model.Node#isReadOnly <em>Read Only</em>}' attribute.
* <!-- begin-user-doc --> <!-- end-user-doc -->
* @param value the new value of the '<em>Read Only</em>' attribute.
* @see #isReadOnly()
* @generated
*/
void setReadOnly(boolean value);
/**
* Gets the diagram of this node
*
* @return
*/
Diagram getDiagram();
/**
* Sets diagram for this node
*
* @param diagram
*/
void setDiagram(Diagram diagram);
/**
* Gets the GraphNode associated with this node.
*
* @return
*/
GraphNode getGraphNode();
/**
* Gets the type of method element adapter. Method element adapter is a node
* internal {@link Adapter adapter} that is listening on changes of linked
* method element or its wrapper to update the node accordingly.
*
* @return the class of the method element adapter of this node
*/
Class getMethodElementAdapterType();
/**
* This method is used to set the UMA diagram for the new node so it can
* find the GraphNode for the linked method element.
*
* @param umaDiagram
*/
void setUMADiagram(org.eclipse.epf.uma.Diagram umaDiagram);
/**
* Sets the graph node that is the container of the
* {@link #getGraphNode() linked graph node}
*
* @param umaContainer
*/
void setUMAContainer(GraphNode umaContainer);
/**
* Adds the given consumer to the consumer list of this node.
*
* @param consumer
*/
void addConsumer(Object consumer);
/**
* Removes the given consumer from the consumer list of this node. Disposes
* the node if it does not have any more consumer after this call. Disposing
* a node will take care of removing this node's listener from the UMA
* object and all the adapters that had been added to the adapter list of
* this node.
*
* @param consumer
*/
void removeConsumer(Object consumer);
}