blob: 4ac3c333a4ef278e6af3699a0c7dbb2a8fe7672f [file] [log] [blame]
/*******************************************************************************
* <copyright>
*
* Copyright (c) 2005, 2010 SAP AG.
* 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:
* SAP AG - initial API, implementation and documentation
*
* </copyright>
*
*******************************************************************************/
package org.eclipse.graphiti.services;
import java.util.List;
import org.eclipse.emf.ecore.EObject;
import org.eclipse.emf.ecore.util.EcoreUtil;
import org.eclipse.graphiti.mm.Property;
import org.eclipse.graphiti.mm.pictograms.Diagram;
import org.eclipse.graphiti.mm.pictograms.PictogramElement;
import org.eclipse.graphiti.mm.pictograms.PictogramLink;
import org.eclipse.graphiti.tb.IToolBehaviorProvider;
/**
* The interface ILinkService provides services for the link handling between
* the graphical representation (pictogram elements) and the domain model
* (business objects).
*
* @noimplement This interface is not intended to be implemented by clients.
* @noextend This interface is not intended to be extended by clients.
*/
public interface ILinkService {
/**
* Returns all business objects which are linked to the given pictogram
* element.<br>
* Note: Identity of domain or business objects is determined by default
* using the method
* {@link EcoreUtil#equals(org.eclipse.emf.ecore.EObject, org.eclipse.emf.ecore.EObject)}
* , which relies on the compared EMF objects having different IDs or
* attributes. The way Graphiti used to compare EMF business objects can be
* changed by overriding
* {@link IToolBehaviorProvider#equalsBusinessObjects(Object, Object)}.
*
* @param pictogramElement
* The pictogram element for which to return the business
* objects.
* @return The business objects which are linked to the given pictogram
* element. Can be empty but not null.
*/
EObject[] getAllBusinessObjectsForLinkedPictogramElement(PictogramElement pictogramElement);
/**
* Returns the first of possibly several business objects which are linked
* to the given pictogram element. This is a convenience method for
* {@link #getAllBusinessObjectsForLinkedPictogramElement(PictogramElement)}
* , because in many use cases only a single business object is linked.<br>
* Note: Identity of domain or business objects is determined by default
* using the method
* {@link EcoreUtil#equals(org.eclipse.emf.ecore.EObject, org.eclipse.emf.ecore.EObject)}
* , which relies on the compared EMF objects having different IDs or
* attributes. The way Graphiti used to compare EMF business objects can be
* changed by overriding
* {@link IToolBehaviorProvider#equalsBusinessObjects(Object, Object)}.
*
* @param pictogramElement
* The pictogram element for which to return the business
* objects.
* @return The first of possibly several business objects which are linked
* to the given pictogram element. Can be null.
*/
EObject getBusinessObjectForLinkedPictogramElement(PictogramElement pictogramElement);
/**
* Returns the pictogram link referencing the given pictogram element.
*
* @param pictogramElement
* the pictogram element
* @return the pictogram link referencing the given pictogram element
*/
PictogramLink getLinkForPictogramElement(PictogramElement pictogramElement);
/**
* Gets all pictogram elements which references the given business object.<br>
* Note: Identity of domain or business objects is determined by default
* using the method
* {@link EcoreUtil#equals(org.eclipse.emf.ecore.EObject, org.eclipse.emf.ecore.EObject)}
* , which relies on the compared EMF objects having different IDs or
* attributes. The way Graphiti used to compare EMF business objects can be
* changed by overriding
* {@link IToolBehaviorProvider#equalsBusinessObjects(Object, Object)}.
*
* @param diagram
* the diagram
* @param eObject
* the referenced business object
* @return all pictogram elements in the diagram which references the given
* business object
*/
List<PictogramElement> getPictogramElements(Diagram diagram, EObject eObject);
/**
* Gets all pictogram elements which references at least one of the given
* business objects.<br>
* Note: Identity of domain or business objects is determined by default
* using the method
* {@link EcoreUtil#equals(org.eclipse.emf.ecore.EObject, org.eclipse.emf.ecore.EObject)}
* , which relies on the compared EMF objects having different IDs or
* attributes. The way Graphiti used to compare EMF business objects can be
* changed by overriding
* {@link IToolBehaviorProvider#equalsBusinessObjects(Object, Object)}.
*
* @param diagram
* the diagram
* @param eObjects
* the referenced business objects
* @param onlyActive
* if true, then only active pictogram elements of the diagram
* will be considered; if false all pictogram elements will be
* considered
* @return all (active) pictogram elements in the diagram which have at
* least one reference to one of the business objects
*/
List<PictogramElement> getPictogramElements(Diagram diagram, List<EObject> eObjects, boolean onlyActive);
/**
* Checks existence and value of the link property to a given pictogram
* element. It is intended to use this property to be able to disinguish
* multiple pictogram elements linked to same domain model object.
*
* @param pictogramElement
* the pictogram element
* @param propertyValue
* the value to check against the property
* @return true if link property exists an has the given value; false if not
*/
boolean hasLinkProperty(PictogramElement pictogramElement, String propertyValue);
/**
* Adds or modifies the link property to a given pictogram element. It is
* intended to use this property to be able to disinguish multiple pictogram
* elements linked to same domain model object.
*
* @param pictogramElement
* the pictogram element
* @param propertyValue
* the new value for the link property
*/
void setLinkProperty(PictogramElement pictogramElement, String propertyValue);
/**
* Gets the link property to a given pictogram element.
*
* @param pictogramElement
* the pictogram element
* @return the link property
*/
Property getLinkProperty(PictogramElement pictogramElement);
}