Hallo,
ich möchte gerne einen Entscheidungsbaum in einer Web-GUI erstellen. Hierfür habe ich einen Elternknoten und eben die Kinder davon...
Ich stehe nun gerade vor dem Problem, wie ich die Kinder anordnen kann, sodass es korrekt aussieht.
Ich habe dabei folgende Informationen von den Elementen:
- width
- x (Position der X-Achse)
- y
- height
Ich denke folgende Infos sind noch notwendig für die Kinder:
- definierte Breite (bspw. 60px)
- definierter Space zwischen den Kinder (bspw. 20px).
Was ich nun benötige, ist eine Funktion, die mir die Positionen (X-Achse) der Kinder ermittelt, abhängig von der Anzahl an Kindern, sodass alles schön zentriert ist und nicht mehr Elemente auf der rechten oder linken Seite sind...
Im Endeffekte, will ich die grünen generieren:
Folgenden Code habe ich bisher, aber es ist nicht korrekt - die Elemente fangen links an, passen aber nicht wirklich.
Kurze Info: am Anfang erstelle ich immer einen "Else" - Zweig, anschließend dann die "If / Else" - Zweige...
Irgendwas stimmt nicht mit meiner Logik....
ich möchte gerne einen Entscheidungsbaum in einer Web-GUI erstellen. Hierfür habe ich einen Elternknoten und eben die Kinder davon...
Ich stehe nun gerade vor dem Problem, wie ich die Kinder anordnen kann, sodass es korrekt aussieht.
Ich habe dabei folgende Informationen von den Elementen:
- width
- x (Position der X-Achse)
- y
- height
Ich denke folgende Infos sind noch notwendig für die Kinder:
- definierte Breite (bspw. 60px)
- definierter Space zwischen den Kinder (bspw. 20px).
Was ich nun benötige, ist eine Funktion, die mir die Positionen (X-Achse) der Kinder ermittelt, abhängig von der Anzahl an Kindern, sodass alles schön zentriert ist und nicht mehr Elemente auf der rechten oder linken Seite sind...
Im Endeffekte, will ich die grünen generieren:
Folgenden Code habe ich bisher, aber es ist nicht korrekt - die Elemente fangen links an, passen aber nicht wirklich.
Kurze Info: am Anfang erstelle ich immer einen "Else" - Zweig, anschließend dann die "If / Else" - Zweige...
Java:
/**
* Erstellt dem Tree
* @param diagramElementBefore
* @return
*/
private DiagramElement createDiagramBranchTree(DiagramElement diagramElementBefore) {
int numberOfBranch = diagramElementBefore.getAutomationElement().getDecisionComponent().getIfBranchList().size() + 1;
int widthBranchElement = 100; // in Pixel
int spaceBetweenElement = 20;
int widthTotalAllBranches = ((widthBranchElement + spaceBetweenElement) * numberOfBranch);
int widthToLeft = (widthTotalAllBranches / 2) - (diagramElementBefore.getWidth() / 2);
// Else Tree als erstes erstellen
diagramElementBefore.getAutomationElement().getDecisionComponent().getElseBranch();
createDiagramBranchElement(diagramElementBefore, diagramElementBefore.getAutomationElement().getDecisionComponent().getElseBranch(), widthToLeft, widthBranchElement);
// If Tree erstellen
for(DecisionBranch decisionBranch : diagramElementBefore.getAutomationElement().getDecisionComponent().getIfBranchList()) {
widthToLeft = widthToLeft + widthBranchElement;
createDiagramBranchElement(diagramElementBefore, decisionBranch, widthToLeft, widthBranchElement);
}
}
private DiagramElement createDiagramBranchElement(DiagramElement diagramElementBefore, DecisionBranch decisionBranch, int x, int widthBranchElement) {
DiagramElement newDiagramElement = new DiagramElement();
newDiagramElement.setHeight(20); // definierte Höhe
newDiagramElement.setWidth(widthBranchElement);
newDiagramElement.setX(diagramElementBefore.getX() - x);
newDiagramElement.setY(diagramElementBefore.getY() + diagramElementBefore.getHeight() + 30); // definierter Abstand zum Elternknoten
return newDiagramElement;
}
Irgendwas stimmt nicht mit meiner Logik....