blob: 403ca007997ff65ebb354a01109479053976fe18 [file] [log] [blame]
/*******************************************************************************
* <copyright>
*
* Copyright (c) 2005, 2012 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:
* Kiril Mitov - initial API, implementation and documentation
*
* </copyright>
*
*******************************************************************************/
package org.eclipse.jpt.jpadiagrameditor.ui.internal.provider;
import org.eclipse.graphiti.mm.algorithms.Polygon;
import org.eclipse.graphiti.mm.algorithms.Polyline;
import org.eclipse.graphiti.mm.algorithms.Text;
import org.eclipse.graphiti.mm.algorithms.styles.LineStyle;
import org.eclipse.graphiti.mm.pictograms.Connection;
import org.eclipse.graphiti.mm.pictograms.ConnectionDecorator;
import org.eclipse.graphiti.mm.pictograms.Diagram;
import org.eclipse.graphiti.mm.pictograms.FreeFormConnection;
import org.eclipse.graphiti.services.Graphiti;
import org.eclipse.graphiti.util.IColorConstant;
import org.eclipse.jpt.jpadiagrameditor.ui.internal.util.JPAEditorConstants;
import org.eclipse.jpt.jpadiagrameditor.ui.internal.util.JPAEditorUtil;
import org.eclipse.swt.graphics.Point;
public class JPAEditorImageCreator implements IJPAEditorImageCreator {
public Polyline createConnectionLine(Diagram d, Connection connection) {
Polyline polyline = Graphiti.getGaService().createPolyline(connection);
polyline.setForeground(Graphiti.getGaService().manageColor(d, JPAEditorConstants.CONNECTION_LINE_COLOR));
polyline.setLineWidth(JPAEditorConstants.CONNECTION_LINE_WIDTH);
return polyline;
}
public Polyline createIsAConnectionLine(Diagram d, Connection connection) {
Polyline polyline = Graphiti.getGaService().createPolyline(connection);
polyline.setForeground(Graphiti.getGaService().manageColor(d, JPAEditorConstants.IS_A_CONNECTION_LINE_COLOR));
polyline.setLineWidth(JPAEditorConstants.IS_A_CONNECTION_LINE_WIDTH);
polyline.setLineStyle(LineStyle.DASH);
return polyline;
}
public Polyline createHasReferenceConnectionLine(Diagram d, Connection connection) {
Polyline polyline = Graphiti.getGaService().createPolyline(connection);
polyline.setForeground(Graphiti.getGaService().manageColor(d, JPAEditorConstants.EMBEDDED_CONNECTION_LINE_COLOR));
polyline.setLineWidth(JPAEditorConstants.EMBEDDED_CONNECTION_LINE_WIDTH);
polyline.setLineStyle(LineStyle.DASHDOTDOT);
return polyline;
}
public ConnectionDecorator createCardinalityConnectionDecorator(Diagram d, Connection c, String text, double location) {
ConnectionDecorator textDecorator = Graphiti.getPeService().createConnectionDecorator(c, true, location, true);
Text txt = Graphiti.getGaService().createDefaultText(d, textDecorator);
txt.setLineWidth(JPAEditorConstants.CONNECTION_LINE_WIDTH);
txt.setValue(text);
Graphiti.getGaService().manageColor(c.getParent(), IColorConstant.BLACK);
Point pt = JPAEditorUtil.recalcTextDecoratorPosition((FreeFormConnection)c, textDecorator);
Graphiti.getGaService().setLocation(txt, pt.x, pt.y, false);
return textDecorator;
}
public ConnectionDecorator createArrowConnectionDecorator(Connection connection, double location) {
ConnectionDecorator cd = Graphiti.getPeService().createConnectionDecorator(connection, false, location, true);
Polygon arrow = Graphiti.getGaService().createPolygon(cd, new int[] { 11, 3, 0, 0, 11, -3, 11, 3 });
arrow.setForeground(Graphiti.getGaService().manageColor(connection.getParent(), JPAEditorConstants.CONNECTION_LINE_COLOR));
arrow.setLineWidth(JPAEditorConstants.CONNECTION_LINE_WIDTH);
arrow.setFilled(true);
return cd;
}
public ConnectionDecorator createIsAArrowConnectionDecorator(Connection connection, double location) {
ConnectionDecorator cd = Graphiti.getPeService().createConnectionDecorator(connection, false, location, true);
Polygon arrow = Graphiti.getGaService().createPolygon(cd, new int[] { 11, 6, 0, 0, 11, -6, 11, 6 });
arrow.setForeground(Graphiti.getGaService().manageColor(connection.getParent(), JPAEditorConstants.IS_A_CONNECTION_LINE_COLOR));
arrow.setBackground(Graphiti.getGaService().manageColor(connection.getParent(), JPAEditorConstants.IS_A_ARROW_COLOR));
arrow.setLineWidth(JPAEditorConstants.CONNECTION_LINE_WIDTH);
arrow.setFilled(true);
return cd;
}
public ConnectionDecorator createHasReferenceStartConnectionDecorator(Connection connection, double location) {
ConnectionDecorator cd = Graphiti.getPeService().createConnectionDecorator(connection, false, location, true);
Polygon arrow = Graphiti.getGaService().createPolygon(cd, new int[] { 0, 0, -5, 3, -10, 0, -5, -3, 0, 0 });
arrow.setForeground(Graphiti.getGaService().manageColor(connection.getParent(), JPAEditorConstants.EMBEDDED_CONNECTION_LINE_COLOR));
arrow.setBackground(Graphiti.getGaService().manageColor(connection.getParent(), JPAEditorConstants.EMBEDDED_CONNECTION_LINE_COLOR));
arrow.setLineWidth(JPAEditorConstants.CONNECTION_LINE_WIDTH);
arrow.setFilled(true);
return cd;
}
public ConnectionDecorator createManyEndWithArrowDecorator(Connection connection, double location) {
ConnectionDecorator cd = Graphiti.getPeService().createConnectionDecorator(connection, false, location, true);
Polygon arrow = Graphiti.getGaService().createPolygon(cd, new int[] { -2, 7, 6, 0, -2, -7, 6, 0, 20, 3, 20, -3, 7, 0});
arrow.setForeground(Graphiti.getGaService().manageColor(connection.getParent(), JPAEditorConstants.CONNECTION_LINE_COLOR));
arrow.setBackground(Graphiti.getGaService().manageColor(connection.getParent(), JPAEditorConstants.CONNECTION_LINE_COLOR));
arrow.setLineWidth(JPAEditorConstants.CONNECTION_LINE_WIDTH);
arrow.setFilled(true);
return cd;
}
public ConnectionDecorator createManyEndDecorator(Connection connection, double location, boolean isEmbedded) {
ConnectionDecorator cd = Graphiti.getPeService().createConnectionDecorator(connection, false, location, true);
Polyline arrow = Graphiti.getGaService().createPolyline(cd, new int[] { 0, 7, 8, 0, 0, -7 });
arrow.setForeground(Graphiti.getGaService().manageColor(connection.getParent(), isEmbedded ? JPAEditorConstants.EMBEDDED_CONNECTION_LINE_COLOR
:JPAEditorConstants.CONNECTION_LINE_COLOR));
arrow.setLineWidth(JPAEditorConstants.CONNECTION_LINE_WIDTH);
return cd;
}
public ConnectionDecorator createManyStartDecorator(Connection connection, double location) {
ConnectionDecorator cd = Graphiti.getPeService().createConnectionDecorator(connection, false, location, true);
Polyline arrow = Graphiti.getGaService().createPolyline(cd, new int[] {0, 7, -8, 0, 0, -7 });
arrow.setForeground(Graphiti.getGaService().manageColor(connection.getParent(), JPAEditorConstants.CONNECTION_LINE_COLOR));
arrow.setLineWidth(JPAEditorConstants.CONNECTION_LINE_WIDTH);
return cd;
}
}