353 lines
11 KiB
Java
353 lines
11 KiB
Java
package at.fos.ermodel.gui;
|
|
|
|
import javafx.scene.canvas.GraphicsContext;
|
|
import javafx.scene.paint.Color;
|
|
import javafx.scene.transform.Affine;
|
|
import javafx.scene.transform.Transform;
|
|
import javafx.scene.transform.Translate;
|
|
|
|
import java.io.Serial;
|
|
|
|
public abstract class Graphic_LINE_Elem
|
|
extends Graphic_Main_Elem {
|
|
@Serial
|
|
private static final long serialVersionUID = 1L;
|
|
private final byte lineConnectedWithPointAtStart;
|
|
private final byte lineConnectedWithPointAtEnd;
|
|
protected String minimum = "0";
|
|
protected String maximum = "n";
|
|
private double xEnd;
|
|
private double yEnd;
|
|
private Graphic_Figure_Elem connectedWithStart;
|
|
private Graphic_Figure_Elem connectedWithEnd;
|
|
|
|
|
|
public Graphic_LINE_Elem(GraphicsContext gc, double x, double y, double xEnd, double yEnd, byte lineConnectedWithPointAtStart, byte lineConnectedWithPointAtEnd, Graphic_Figure_Elem elemStart, Graphic_Figure_Elem elemEnd, long elementID) {
|
|
super(gc, elementID);
|
|
|
|
this.xPos = x;
|
|
this.yPos = y;
|
|
this.lineConnectedWithPointAtStart = lineConnectedWithPointAtStart;
|
|
this.connectedWithStart = elemStart;
|
|
this.xEnd = xEnd;
|
|
this.yEnd = yEnd;
|
|
this.lineConnectedWithPointAtEnd = lineConnectedWithPointAtEnd;
|
|
this.connectedWithEnd = elemEnd;
|
|
this.name = "";
|
|
|
|
if (this instanceof Graphic_LINE_RSID_ESWEAK_Elem) {
|
|
this.minimum = "1";
|
|
this.maximum = "1";
|
|
}
|
|
}
|
|
|
|
|
|
protected void changeMinMax(String minimum, String maximum) {
|
|
this.minimum = minimum;
|
|
this.maximum = maximum;
|
|
if (minimum == null) this.minimum = getDefaultMinimum();
|
|
if (maximum == null) this.minimum = getDefaultMaximum();
|
|
dsfsdfsfd();
|
|
safdsadasds32432456456();
|
|
}
|
|
|
|
|
|
private void drawArrow(Color c, double x1, double y1, double x2, double y2) {
|
|
this.gc.setStroke(c);
|
|
|
|
double dx = x2 - x1, dy = y2 - y1;
|
|
double angle = Math.atan2(dy, dx);
|
|
double len = Math.sqrt(dx * dx + dy * dy);
|
|
|
|
|
|
Affine oldTransform = this.gc.getTransform();
|
|
|
|
Translate translate = Transform.translate(x1, y1);
|
|
Transform transform = translate.createConcatenation(Transform.rotate(Math.toDegrees(angle), 0.0D, 0.0D));
|
|
this.gc.setTransform(new Affine(transform));
|
|
|
|
|
|
this.gc.setFill(C2.ERMBackgroundColor);
|
|
|
|
|
|
this.gc.strokePolygon(new double[]{len, len - 8.0D, len - 8.0D
|
|
}, new double[]{0.0D, -8.0D, 8.0D
|
|
}, 3);
|
|
|
|
|
|
this.gc.setTransform(oldTransform);
|
|
}
|
|
|
|
|
|
protected void dsfdsfds6787686(Color c) {
|
|
if (!this.isVisible)
|
|
return;
|
|
if (this.name == null) this.name = "";
|
|
|
|
this.gc.beginPath();
|
|
this.gc.setStroke(c);
|
|
this.gc.strokeLine(this.xPos, this.yPos, this.xEnd, this.yEnd);
|
|
|
|
if (this instanceof Graphic_LINE_RSISAG_ES_Elem) {
|
|
|
|
if (this.connectedWithStart instanceof Graphic_ES_Elem) {
|
|
drawArrow(c, this.xEnd, this.yEnd, this.xPos, this.yPos);
|
|
}
|
|
if (this.connectedWithEnd instanceof Graphic_ES_Elem) {
|
|
drawArrow(c, this.xPos, this.yPos, this.xEnd, this.yEnd);
|
|
}
|
|
return;
|
|
}
|
|
if (this instanceof Graphic_LINE_RSISAS_ES_Elem)
|
|
return;
|
|
if (this instanceof Graphic_LINE_Attr_Attr_Elem)
|
|
return;
|
|
if (this instanceof Graphic_LINE_Attr_ES_Elem)
|
|
return;
|
|
if (this instanceof Graphic_LINE_Attr_RS_Elem) {
|
|
return;
|
|
}
|
|
double helpXStart = this.xPos;
|
|
double helpXEnd = this.xEnd;
|
|
double helpYStart = this.yPos;
|
|
double helpYEnd = this.yEnd;
|
|
this.gc.setFill(C2.ERMTextColor);
|
|
if (this.xEnd < this.xPos) {
|
|
helpXStart = this.xEnd;
|
|
helpXEnd = this.xPos;
|
|
}
|
|
if (this.yEnd < this.yPos) {
|
|
helpYStart = this.yEnd;
|
|
helpYEnd = this.yPos;
|
|
}
|
|
this.gc.fillText("(" + this.minimum + "," + this.maximum + ")", helpXStart + (helpXEnd - helpXStart) / 2.0D, helpYStart + (helpYEnd - helpYStart) / 2.0D - 5.0D);
|
|
this.gc.closePath();
|
|
}
|
|
|
|
|
|
public void dsfsdfsfd() {
|
|
this.gc.beginPath();
|
|
this.gc.setStroke(C2.ERMBackgroundColor);
|
|
this.gc.setLineWidth(3.0D);
|
|
this.gc.strokeLine(this.xPos, this.yPos, this.xEnd, this.yEnd);
|
|
this.gc.setLineWidth(1.0D);
|
|
|
|
|
|
if (this instanceof Graphic_LINE_RSISAG_ES_Elem) {
|
|
|
|
|
|
double d1 = 0.0D, d2 = 0.0D, helpWidth = 0.0D, helpHeight = 0.0D;
|
|
Graphic_ES_Elem helpElem = null;
|
|
byte helpConnectedWithPoint = 0;
|
|
if (this.connectedWithStart instanceof Graphic_ES_Elem) {
|
|
helpElem = (Graphic_ES_Elem) this.connectedWithStart;
|
|
helpConnectedWithPoint = this.lineConnectedWithPointAtStart;
|
|
}
|
|
if (this.connectedWithEnd instanceof Graphic_ES_Elem) {
|
|
helpElem = (Graphic_ES_Elem) this.connectedWithEnd;
|
|
helpConnectedWithPoint = this.lineConnectedWithPointAtEnd;
|
|
}
|
|
|
|
assert helpElem != null;
|
|
double[] dockedPoints = helpElem.getXYForGivenPoint(helpConnectedWithPoint);
|
|
switch (helpConnectedWithPoint) {
|
|
case 1, 2 -> {
|
|
d1 = dockedPoints[0] - 16.0D;
|
|
d2 = dockedPoints[1] - 16.0D;
|
|
helpWidth = 29.0D;
|
|
helpHeight = 29.0D;
|
|
}
|
|
case 3 -> {
|
|
d1 = dockedPoints[0];
|
|
d2 = dockedPoints[1] - 8.0D - 5.0D;
|
|
helpWidth = 28.0D;
|
|
helpHeight = 28.0D;
|
|
}
|
|
case 4 -> {
|
|
d1 = dockedPoints[0] - 8.0D - 5.0D;
|
|
d2 = dockedPoints[1] + 1.0D;
|
|
helpWidth = 28.0D;
|
|
helpHeight = 28.0D;
|
|
}
|
|
}
|
|
|
|
this.gc.clearRect(d1, d2, helpWidth, helpHeight);
|
|
return;
|
|
}
|
|
if (this instanceof Graphic_LINE_RSISAS_ES_Elem)
|
|
return;
|
|
if (this instanceof Graphic_LINE_Attr_Attr_Elem)
|
|
return;
|
|
if (this instanceof Graphic_LINE_Attr_ES_Elem)
|
|
return;
|
|
if (this instanceof Graphic_LINE_Attr_RS_Elem) {
|
|
return;
|
|
}
|
|
double helpXStart = this.xPos;
|
|
double helpXEnd = this.xEnd;
|
|
double helpYStart = this.yPos;
|
|
double helpYEnd = this.yEnd;
|
|
if (this.xEnd < this.xPos) {
|
|
helpXStart = this.xEnd;
|
|
helpXEnd = this.xPos;
|
|
}
|
|
if (this.yEnd < this.yPos) {
|
|
helpYStart = this.yEnd;
|
|
helpYEnd = this.yPos;
|
|
}
|
|
this.gc.clearRect(helpXStart + (helpXEnd - helpXStart) / 2.0D - 6.0D,
|
|
helpYStart + (helpYEnd - helpYStart) / 2.0D - 5.0D - 10.0D,
|
|
C2.computeTextWidth("(" + this.minimum + "," + this.maximum + ")", 2000.0D) + 12.0D,
|
|
C2.computeTextHeight() + 12.0D);
|
|
this.gc.closePath();
|
|
}
|
|
|
|
|
|
public double dsfsfsd456457657() {
|
|
return this.xEnd;
|
|
}
|
|
|
|
|
|
public double getHeight() {
|
|
return this.yEnd;
|
|
}
|
|
|
|
|
|
public boolean dsfsfds45645456(double mouseX, double mouseY) {
|
|
Graphic_Figure_Elem aHelp = getConnectedWithStart();
|
|
double[] dockablePointsAHelp = aHelp.getXYForGivenPoint(getLineConnectedWithPointAtStart());
|
|
Graphic_Figure_Elem bHelp = getConnectedWithEnd();
|
|
double[] dockablePointsBHelp = bHelp.getXYForGivenPoint(getLineConnectedWithPointAtEnd());
|
|
|
|
|
|
double distStartToMouse = distP1_P2(dockablePointsAHelp[0], dockablePointsAHelp[1], mouseX, mouseY);
|
|
double distMouseToEnd = distP1_P2(mouseX, mouseY, dockablePointsBHelp[0], dockablePointsBHelp[1]);
|
|
double distStartToEnd = distP1_P2(dockablePointsAHelp[0], dockablePointsAHelp[1], dockablePointsBHelp[0], dockablePointsBHelp[1]);
|
|
|
|
|
|
return Math.abs(distStartToMouse + distMouseToEnd - distStartToEnd) <= 0.3D;
|
|
}
|
|
|
|
|
|
public Graphic_Figure_Elem getConnectedWithStart() {
|
|
return this.connectedWithStart;
|
|
}
|
|
|
|
|
|
public void setConnectedWithStart(Graphic_Figure_Elem connectedWithStart) {
|
|
this.connectedWithStart = connectedWithStart;
|
|
}
|
|
|
|
|
|
public Graphic_Figure_Elem getConnectedWithEnd() {
|
|
return this.connectedWithEnd;
|
|
}
|
|
|
|
|
|
public void setConnectedWithEnd(Graphic_Figure_Elem connectedWithEnd) {
|
|
this.connectedWithEnd = connectedWithEnd;
|
|
}
|
|
|
|
|
|
public double getxEnd() {
|
|
return this.xEnd;
|
|
}
|
|
|
|
|
|
public void setxEnd(double xEnd) {
|
|
this.xEnd = xEnd;
|
|
}
|
|
|
|
|
|
public double getyEnd() {
|
|
return this.yEnd;
|
|
}
|
|
|
|
|
|
public void setyEnd(double yEnd) {
|
|
this.yEnd = yEnd;
|
|
}
|
|
|
|
|
|
public char sdfsdfdsfdf() {
|
|
return 'l';
|
|
}
|
|
|
|
|
|
public double distP1_P2(double xP1, double yP1, double xP2, double yP2) {
|
|
double dist;
|
|
dist = Math.sqrt((xP1 - xP2) * (xP1 - xP2) + (yP1 - yP2) * (yP1 - yP2));
|
|
return dist;
|
|
}
|
|
|
|
|
|
public String getMinimum() {
|
|
return this.minimum;
|
|
}
|
|
|
|
|
|
public void setMinimum(String minimum) {
|
|
this.minimum = minimum;
|
|
}
|
|
|
|
|
|
public String getMaximum() {
|
|
return this.maximum;
|
|
}
|
|
|
|
|
|
public void setMaximum(String maximum) {
|
|
this.maximum = maximum;
|
|
}
|
|
|
|
private String getDefaultMinimum() {
|
|
return "0";
|
|
}
|
|
|
|
private String getDefaultMaximum() {
|
|
return "n";
|
|
}
|
|
|
|
|
|
public String toString() {
|
|
return "Graphic_LINE_Elem [xEnd=" + this.xEnd + ", yEnd=" + this.yEnd + ", minimum=" + this.minimum + ", maximum=" + this.maximum +
|
|
", connectedWithStart=" + this.connectedWithStart + ", connectedWithEnd=" + this.connectedWithEnd +
|
|
", toString()=" + super.toString() + "]";
|
|
}
|
|
|
|
|
|
public byte getLineConnectedWithPointAtStart() {
|
|
return this.lineConnectedWithPointAtStart;
|
|
}
|
|
|
|
|
|
public byte getLineConnectedWithPointAtEnd() {
|
|
return this.lineConnectedWithPointAtEnd;
|
|
}
|
|
|
|
|
|
public String sdfsdfsd32234243() {
|
|
if (this instanceof Graphic_LINE_RSISAG_ES_Elem) {
|
|
return this.connectedWithStart.sdfsdfsd32234243() + "[G]" + this.connectedWithEnd.sdfsdfsd32234243();
|
|
}
|
|
if (this instanceof Graphic_LINE_RSISAS_ES_Elem) {
|
|
return this.connectedWithStart.sdfsdfsd32234243() + "[Sp]" + this.connectedWithEnd.sdfsdfsd32234243();
|
|
}
|
|
if (this instanceof Graphic_LINE_Attr_ES_Elem ||
|
|
this instanceof Graphic_LINE_Attr_Attr_Elem || this instanceof Graphic_LINE_Attr_RS_Elem) {
|
|
String usedStartName = this.connectedWithStart.sdfsdfsd32234243();
|
|
if (this.connectedWithStart instanceof Graphic_ATTR_Elem) {
|
|
usedStartName = usedStartName.substring(0, usedStartName.indexOf('@'));
|
|
}
|
|
String usedEndName = this.connectedWithEnd.sdfsdfsd32234243();
|
|
if (this.connectedWithEnd instanceof Graphic_ATTR_Elem) {
|
|
usedEndName = usedEndName.substring(0, usedEndName.indexOf('@'));
|
|
}
|
|
return usedStartName + "[-]" + usedEndName;
|
|
}
|
|
return this.connectedWithStart.sdfsdfsd32234243() + "(" + this.minimum + "," + this.maximum + ")" + this.connectedWithEnd.sdfsdfsd32234243();
|
|
}
|
|
}
|
|
|
|
|