blob: 1c0122a41dffc79ed59629c0e6093b62daa84112 [file] [log] [blame]
/*******************************************************************************
* Copyright (c) 2016 Fundación Tecnalia Research & Innovation and KPIT Technologies.
*
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License v2.0
* which accompanies this distribution, and is available at
* https://www.eclipse.org/org/documents/epl-2.0/EPL-2.0.html
*
* SPDX-License-Identifier: EPL-2.0
*
* Contributors:
* Huascar Espinoza(Tecnalia) - initial API and implementation
* Alejandra Ruíz(Tecnalia) - initial API and implementation
* Idoya Del Río(Tecnalia) - initial API and implementation
* Mari Carmen Palacios(Tecnalia) - initial API and implementation
* Angel López(Tecnalia) - initial API and implementation
* Jan Mauersberger(KPIT)- LayoutUtil implementation
* Sascha Baumgart(KPIT)- LayoutUtil implementation
*******************************************************************************/
package org.eclipse.opencert.gsn.figures;
import org.eclipse.draw2d.Figure;
import org.eclipse.draw2d.Graphics;
import org.eclipse.draw2d.geometry.Dimension;
import org.eclipse.draw2d.geometry.Point;
import org.eclipse.draw2d.geometry.PointList;
import org.eclipse.draw2d.geometry.Rectangle;
import org.eclipse.gmf.runtime.draw2d.ui.figures.WrappingLabel;
public class GSNGoal extends Figure {
//says if the element is related with any entity abstraction extension
private int shape;
//sets the visibility of the element
private boolean visibility;
public GSNGoal(){
this.setShape(0);
this.setVisibility(false);
this.setMinimumSize(new Dimension(80,60));
}
@Override
public void paint(Graphics graphics) {
Rectangle r = getBounds();
if(visibility){
Point p1=new Point(r.x+15*r.width/18,r.y+3*r.height/18);
Point p2=new Point(r.x+16*r.width/18,r.y+3*r.height/18);
Point p3=new Point(r.x+16*r.width/18,r.y+4*r.height/18);
Point p4=new Point(r.x+15*r.width/18,r.y+4*r.height/18);
Point p5 =new Point(r.x+17*r.width/18,r.y+4*r.height/18);
Point p6=new Point(r.x+15*r.width/18,r.y+6*r.height/18);
Point p7=new Point(r.x+17*r.width/18,r.y+6*r.height/18);
PointList pointList = new PointList();
pointList.addPoint(p1);
pointList.addPoint(p2);
pointList.addPoint(p3);
pointList.addPoint(p4);
pointList.addPoint(p5);
pointList.addPoint(p6);
pointList.addPoint(p7);
// Fill the shape
graphics.fillPolygon(pointList);
// Draw the outline
graphics.setLineWidth(1);
graphics.drawLine(p1, p2);
graphics.drawLine(p2, p3);
graphics.drawLine(p1, p4);
graphics.drawLine(p4, p5);
graphics.drawLine(p5, p7);
graphics.drawLine(p6, p7);
graphics.drawLine(p6, p4);
}
graphics.setLineWidth(0);
//undefined element status
if (getShape()==0){
// Define the points of a parallelogram
Point p1 = new Point(r.x, r.y);
Point p2 = new Point(r.x + r.width, r.y);
Point p3 = new Point(r.x, r.y+r.height);
Point p4 = new Point(r.x + r.width, r.y + r.height);
PointList pointList = new PointList();
pointList.addPoint(p1);
pointList.addPoint(p2);
pointList.addPoint(p3);
pointList.addPoint(p4);
// Fill the shape
graphics.fillPolygon(pointList);
// Draw the outline
graphics.drawLine(p1, p2);
graphics.drawLine(p1, p3);
graphics.drawLine(p3, p4);
graphics.drawLine(p2, p4);
}
else{
// Define the points of a parallelogram
Point p1 = new Point(r.x, r.y);
Point p2 = new Point(r.x + r.width, r.y);
Point p3 = new Point(r.x, r.y+3*r.height/4);
Point p4 = new Point(r.x + r.width, r.y + 3*r.height/4);
PointList pointList = new PointList();
pointList.addPoint(p1);
pointList.addPoint(p2);
pointList.addPoint(p3);
pointList.addPoint(p4);
//undeveloped element status
if(getShape()==1){
Point p5 = new Point(r.x+r.width/2, r.y+3*r.height/4);
Point p6 = new Point(r.x + 5*r.width/8, r.y+7*r.height/8);
Point p7 = new Point(r.x+r.width/2, r.y + r.height);
Point p8 = new Point(r.x + 3*r.width/8, r.y + 7*r.height/8);
pointList.addPoint(p5);
pointList.addPoint(p6);
pointList.addPoint(p7);
pointList.addPoint(p8);
// Fill the shape
graphics.fillPolygon(pointList);
// Draw the outline
graphics.drawLine(p1, p2);
graphics.drawLine(p1, p3);
graphics.drawLine(p3, p4);
graphics.drawLine(p2, p4);
// Draw the outline
graphics.drawLine(p5, p6);
graphics.drawLine(p6, p7);
graphics.drawLine(p7, p8);
graphics.drawLine(p5, p8);
}
//uninstantiated element status
else if(getShape()==2){
Point p5 = new Point(r.x+r.width/2, r.y+3*r.height/4);
Point p6 = new Point(r.x + 5*r.width/8, r.y+7*r.height/8);
Point p7 = new Point(r.x+r.width/2, r.y + r.height);
Point p8 = new Point(r.x + 3*r.width/8, r.y + 7*r.height/8);
pointList.addPoint(p5);
pointList.addPoint(p6);
pointList.addPoint(p7);
pointList.addPoint(p8);
// Fill the shape
graphics.fillPolygon(pointList);
// Draw the outline
graphics.drawLine(p1, p2);
graphics.drawLine(p1, p3);
graphics.drawLine(p3, p4);
graphics.drawLine(p2, p4);
// Draw the outline
graphics.drawLine(p5, p6);
graphics.drawLine(p6, p8);
graphics.drawLine(p5, p8);
}
//undeveloped and uninstantiated element status
else if(getShape()==3){
Point p5 = new Point(r.x+r.width/2, r.y+3*r.height/4);
Point p6 = new Point(r.x + 5*r.width/8, r.y+7*r.height/8);
Point p7 = new Point(r.x+r.width/2, r.y + r.height);
Point p8 = new Point(r.x + 3*r.width/8, r.y + 7*r.height/8);
pointList.addPoint(p5);
pointList.addPoint(p6);
pointList.addPoint(p7);
pointList.addPoint(p8);
// Fill the shape
graphics.fillPolygon(pointList);
// Draw the outline
graphics.drawLine(p1, p2);
graphics.drawLine(p1, p3);
graphics.drawLine(p3, p4);
graphics.drawLine(p2, p4);
// Draw the outline
graphics.drawLine(p5, p6);
graphics.drawLine(p6, p7);
graphics.drawLine(p7, p8);
graphics.drawLine(p5, p8);
graphics.drawLine(p6, p8);
}
else if(getShape()==4){
Point p5=new Point(r.x+6*r.width/16,r.y+12*r.height/16);
Point p6=new Point(r.x+7*r.width/16,r.y+12*r.height/16);
Point p7=new Point(r.x+7*r.width/16,r.y+13*r.height/16);
Point p8=new Point(r.x+6*r.width/16,r.y+13*r.height/16);
Point p9 =new Point(r.x+10*r.width/16,r.y+13*r.height/16);
Point p10=new Point(r.x+6*r.width/16,r.y+15*r.height/16);
Point p11=new Point(r.x+10*r.width/16,r.y+15*r.height/16);
Point p12=new Point(r.x+9*r.width/16,r.y+r.height);
Point p13=new Point(r.x+9*r.width/16,r.y+15*r.height/16);
Point p14=new Point(r.x+10*r.width/16,r.y+r.height);
pointList = new PointList();
pointList.addPoint(p5);
pointList.addPoint(p6);
pointList.addPoint(p7);
pointList.addPoint(p8);
pointList.addPoint(p9);
pointList.addPoint(p10);
pointList.addPoint(p11);
pointList.addPoint(p12);
pointList.addPoint(p13);
pointList.addPoint(p14);
// Fill the shape
graphics.fillPolygon(pointList);
graphics.drawLine(p1, p2);
graphics.drawLine(p1, p3);
graphics.drawLine(p3, p4);
graphics.drawLine(p2, p4);
graphics.drawLine(p5, p6);
graphics.drawLine(p6, p7);
graphics.drawLine(p5, p8);
graphics.drawLine(p8, p9);
graphics.drawLine(p9, p11);
graphics.drawLine(p10, p11);
graphics.drawLine(p10, p8);
graphics.drawLine(p12, p13);
graphics.drawLine(p12, p14);
graphics.drawLine(p14, p11);
}
}
// Move the first label to the center of the parallelogram
WrappingLabel label = (WrappingLabel) getChildren().get(0);
LayoutUtil.moveToCenterAndUp(label, this, graphics);
label.paint(graphics);
// Move the second label to the center of the parallelogram
label = (WrappingLabel) getChildren().get(1);
LayoutUtil.moveToCenterAndDown(label, this, graphics);
label.paint(graphics);
}
public void setShape(int shape) {
this.shape = shape;
}
public int getShape() {
return shape;
}
public void setVisibility(boolean p) {
this.visibility = p;
}
public boolean getVisibility() {
return visibility;
}
}