blob: f6ae640346476d2daeab80aa146675414aea0194 [file] [log] [blame]
/*********************************************************************
* Copyright (c) 2005, 2019 SAP SE
*
* This program and the accompanying materials are made
* available under the terms of the Eclipse Public License 2.0
* which is available at https://www.eclipse.org/legal/epl-2.0/
*
* Contributors:
* SAP SE - initial API, implementation and documentation
* mwenz - Bug 415884 - Cannot query size of a multi-line text
* Aurelien Pupier - Bug 499720 - DefaultConnectionEditPolicy doesn't support scroll
*
* SPDX-License-Identifier: EPL-2.0
**********************************************************************/
package org.eclipse.graphiti.ui.internal.services;
import java.util.List;
import org.eclipse.draw2d.geometry.Point;
import org.eclipse.draw2d.geometry.Rectangle;
import org.eclipse.gef.EditPart;
import org.eclipse.gef.EditPartViewer;
import org.eclipse.gef.GraphicalEditPart;
import org.eclipse.graphiti.datatypes.IDimension;
import org.eclipse.graphiti.mm.algorithms.styles.Font;
import org.eclipse.graphiti.mm.pictograms.Connection;
import org.eclipse.graphiti.ui.internal.util.draw2d.ChopboxAnchorFixed;
/**
* @noimplement This interface is not intended to be implemented by clients.
* @noextend This class is not intended to be subclassed by clients.
*/
public interface IGefService {
/**
* Selects the EditPart for the given model Object.
*
* @param viewer
* The viewer, which contains the EditParts.
* @param modelObject
* The model Object, which EditPart to select.
*/
void selectEditPart(EditPartViewer viewer, Object modelObject);
/**
* Returns the translation between the coordinate-systems of EditParts. It
* will translate from the coordinate-system of the source EditPart to the
* coordinate-system of the target EditPart. Both EditParts must be an
* instance of GraphicalEditPart. Otherwise it throws an Exception.
*
* @param source
* The EditPart with the source coordinate-system.
* @param target
* The EditPart with the target coordinate-system.
* @return Returns the translation between the coordinate-systems of
* EditParts.
*/
Point calculateTranslation(EditPart source, EditPart target);
/**
* Returns the layout constraint for the given EditPart. It returns null, if
* the constraint can not be determined, for example because the child has
* no parent or the parent has no LayoutManager.
*
* @param editPart
* The EditPart for which to return the layout constraint.
* @return Returns the layout constraint for the given EditPart.
*/
Object getLayoutConstraint(EditPart editPart);
/**
* @param viewer
* @param location
* : the absolute location for the whole RootEditpart (if any,
* the scroll should be considered)
* @param includeConnections
* @return
*/
EditPart findEditPartAt(EditPartViewer viewer, Point location, boolean includeConnections);
/**
* Computes EditParts of the connections and related ConnectionDecorators
* which live inside the containment hierarchy of the given edit part.
*
* @param ep
* the EditPart whose inner connection and ConnectionDecorators
* should be computed
* @returns List of EditParts (connection and Decorator) which live in
* EditPart
*/
List<EditPart> getConnectionsContainedInEditPart(EditPart ep);
/**
* @param c
* @param d
* @return
*/
Point getConnectionPointAt(Connection c, double d);
/**
* This method has to be kept in sync with
* {@link ChopboxAnchorFixed#getLocation(Point)}.
*/
Point getChopboxLocationOnBox(Point reference, Rectangle box);
/**
* @param c
* @param absDistance
* absDistance > 0 means distance from beginning. absDistance < 0
* means distance from connection end.
* @return
*/
Point getAbsolutePointOnConnection(Connection c, double distance);
Point getDistantPoint(Point start, Point end, double distance);
Point getDistantPoint(int startX, int startY, int endX, int endY, double distance);
/**
* @param startX
* @param startY
* @param endX
* @param endY
* @param d
* @return
*/
Point getPointAt(int startX, int startY, int endX, int endY, double d);
Point getPointAt(Point start, Point end, double d);
double getDistance(Point[] points);
/**
* Calculates and returns the size of the text ignoring any new line
* characters in the string.
*
* @param text
* @param font
*
* @return the size of the text
*
* @see #calculateTextSize(String, Font, boolean)
*/
IDimension calculateTextSize(String text, Font font);
/**
* Calculates and returns the size of the text.
*
* @param text
* @param font
* @param handleMultiline
* Defines if line breaks in the string should be used in the
* calculation of the size or not. In case <code>true</code>, a
* new line character in the string will increase the size of the
* returned dimensions by one line, in case <code>false</code> a
* new line character will be ignored.
*
* @return the size of the text
*/
IDimension calculateTextSize(String text, Font font, boolean handleMultiline);
/**
* @param draw2dPoints
*/
void mirrorArray(Point[] draw2dPoints);
/**
* Provides the direct children of the edit part.
*
* @param editPart
* @return the direct child edit parts
*/
public List<EditPart> getEditPartChildren(EditPart editPart);
/**
* Provides the source connections of the graphical edit part.
*
* @param graphicalEditPart
* @return the source connections of the graphical edit part
*/
public List<GraphicalEditPart> getSourceConnections(GraphicalEditPart graphicalEditPart);
/**
* Provides the target connections of the graphical edit part.
*
* @param graphicalEditPart
* @return the target connections of the graphical edit part
*/
public List<GraphicalEditPart> getTargetConnections(GraphicalEditPart graphicalEditPart);
/**
* Provides the selected edit parts of the viewer.
*
* @param editPartViewer
* @return the selected edit parts of the viewer
*/
public List<EditPart> getSelectedEditParts(EditPartViewer editPartViewer);
}