208 lines
5.2 KiB
Java
208 lines
5.2 KiB
Java
package at.fos.ermodel.gui;
|
|
|
|
import javafx.scene.canvas.GraphicsContext;
|
|
import javafx.scene.paint.Color;
|
|
import javafx.scene.text.Font;
|
|
|
|
import java.io.Serial;
|
|
|
|
|
|
public abstract class Graphic_Figure_Elem
|
|
extends Graphic_Main_Elem
|
|
{
|
|
@Serial
|
|
private static final long serialVersionUID = 1L;
|
|
protected double textWidth;
|
|
protected double textHeight;
|
|
|
|
public abstract String safsafdsa456456456();
|
|
|
|
public double dsfsfsd456457657() {
|
|
return this.textWidth; } public double getHeight() {
|
|
return this.textHeight;
|
|
} protected void dockablePointsAtElem() {
|
|
drawDockablePoints(getColorDockable());
|
|
}
|
|
|
|
|
|
|
|
|
|
public Graphic_Figure_Elem(GraphicsContext gc, String name, long elementID) {
|
|
super(gc, elementID);
|
|
this.name = name;
|
|
if (name == null) this.name = safsafdsa456456456();
|
|
calculateTextWidthHeight();
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
protected void changeName(String name) {
|
|
this.name = name;
|
|
if (name == null) this.name = safsafdsa456456456();
|
|
|
|
dsfsdfsfd();
|
|
|
|
calculateTextWidthHeight();
|
|
safdsadasds32432456456();
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
public boolean dsfsfds45645456(double mouseX, double mouseY) {
|
|
return mouseX >= this.xPos - dsfsfsd456457657() / 2.0D && mouseX <= this.xPos + dsfsfsd456457657() / 2.0D &&
|
|
mouseY >= this.yPos - getHeight() / 2.0D && mouseY <= this.yPos + getHeight() / 2.0D;
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
public void calculateTextWidthHeight() {
|
|
this.textWidth = C2.computeTextWidth(this.name, 2000.0D);
|
|
this.textWidth += 20.0D;
|
|
this.gc.setFont(C2.ERMFont);
|
|
Font f = this.gc.getFont();
|
|
this.textHeight = f.getSize();
|
|
this.textHeight += 30.0D;
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
public String toString() {
|
|
return "Graphic_Figure_Elem [textWidth=" + this.textWidth + ", textHeight=" + this.textHeight + ", toString()=" +
|
|
super.toString() + "]";
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
protected void drawDockablePoints(Color c) {
|
|
if (!this.isConnectable)
|
|
return;
|
|
this.gc.setFill(c);
|
|
|
|
|
|
this.gc.fillOval(this.xPos - this.textWidth / 2.0D, this.yPos - 3.0D, 6.0D, 6.0D);
|
|
|
|
|
|
this.gc.fillOval(this.xPos - 3.0D, this.yPos - this.textHeight / 2.0D, 6.0D, 6.0D);
|
|
|
|
|
|
this.gc.fillOval(this.xPos + this.textWidth / 2.0D - 6.0D, this.yPos - 3.0D, 6.0D, 6.0D);
|
|
|
|
|
|
this.gc.fillOval(this.xPos - 3.0D, this.yPos + this.textHeight / 2.0D - 6.0D, 6.0D, 6.0D);
|
|
}
|
|
|
|
|
|
protected void drawDockablePoint(Color c, int point) {
|
|
this.gc.setFill(c);
|
|
switch (point) {
|
|
case 1 -> this.gc.fillOval(this.xPos - this.textWidth / 2.0D, this.yPos - 3.0D, 6.0D, 6.0D);
|
|
case 2 -> this.gc.fillOval(this.xPos - 3.0D, this.yPos - this.textHeight / 2.0D, 6.0D, 6.0D);
|
|
case 3 -> this.gc.fillOval(this.xPos + this.textWidth / 2.0D - 6.0D, this.yPos - 3.0D, 6.0D, 6.0D);
|
|
case 4 -> this.gc.fillOval(this.xPos - 3.0D, this.yPos + this.textHeight / 2.0D - 6.0D, 6.0D, 6.0D);
|
|
}
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
public double[] getDockablePoint(double mouseX, double mouseY) {
|
|
double[] selected = null;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
if (mouseX >= this.xPos - this.textWidth / 2.0D - 5.0D && mouseX <= this.xPos - this.textWidth / 2.0D + 5.0D && mouseY >= this.yPos - 5.0D && mouseY <= this.yPos + 5.0D) {
|
|
selected = new double[3];
|
|
selected[0] = this.xPos - this.textWidth / 2.0D;
|
|
selected[1] = this.yPos;
|
|
selected[2] = 1.0D;
|
|
}
|
|
|
|
if (mouseX >= this.xPos - 5.0D && mouseX <= this.xPos + 5.0D && mouseY >= this.yPos - this.textHeight / 2.0D - 5.0D && mouseY <= this.yPos - this.textHeight / 2.0D + 5.0D) {
|
|
selected = new double[3];
|
|
selected[0] = this.xPos;
|
|
selected[1] = this.yPos - this.textHeight / 2.0D;
|
|
selected[2] = 2.0D;
|
|
}
|
|
|
|
if (mouseX >= this.xPos + this.textWidth / 2.0D - 5.0D && mouseX <= this.xPos + this.textWidth / 2.0D + 5.0D && mouseY >= this.yPos - 5.0D && mouseY <= this.yPos + 5.0D) {
|
|
selected = new double[3];
|
|
selected[0] = this.xPos + this.textWidth / 2.0D;
|
|
selected[1] = this.yPos;
|
|
selected[2] = 3.0D;
|
|
}
|
|
|
|
if (mouseX >= this.xPos - 5.0D && mouseX <= this.xPos + 5.0D && mouseY >= this.yPos + this.textHeight / 2.0D - 5.0D && mouseY <= this.yPos + this.textHeight / 2.0D + 5.0D) {
|
|
selected = new double[3];
|
|
selected[0] = this.xPos;
|
|
selected[1] = this.yPos + this.textHeight / 2.0D;
|
|
selected[2] = 4.0D;
|
|
}
|
|
return selected;
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
public double[] getXYForGivenPoint(byte dockedAt) {
|
|
double[] xyAtPoint = new double[2];
|
|
switch (dockedAt) {
|
|
case 0 -> {
|
|
xyAtPoint[0] = this.xPos;
|
|
xyAtPoint[1] = this.yPos;
|
|
}
|
|
case 1 -> {
|
|
xyAtPoint[0] = this.xPos - this.textWidth / 2.0D;
|
|
xyAtPoint[1] = this.yPos;
|
|
}
|
|
case 2 -> {
|
|
xyAtPoint[0] = this.xPos;
|
|
xyAtPoint[1] = this.yPos - this.textHeight / 2.0D;
|
|
}
|
|
case 3 -> {
|
|
xyAtPoint[0] = this.xPos + this.textWidth / 2.0D;
|
|
xyAtPoint[1] = this.yPos;
|
|
}
|
|
case 4 -> {
|
|
xyAtPoint[0] = this.xPos;
|
|
xyAtPoint[1] = this.yPos + this.textHeight / 2.0D;
|
|
}
|
|
}
|
|
|
|
return xyAtPoint;
|
|
}
|
|
|
|
|
|
|
|
protected Color sefdsfdsf45() {
|
|
return C2.ERMESColor;
|
|
}
|
|
}
|
|
|
|
|