Open JirkaDellOro opened 4 years ago
Die Idee war, dass Panels und Views nur logische Einheiten sind mit dem der Content des Editor UI sich ordnen lassen. Ich schätze allerdings dass es funktioniert und vielleicht den Code etwas simpler macht. Für GoldenLayout müsste man nur kleine Änderungen vornehmen, denke Ich. Der GL-Container wird nur mit content befüllt, heisst wenn View und/oder Panel von HTMLElement erbt, dann müsste man den Container mit den children befüllen.
Der Editor wurde refaktoriert.
export abstract class View {
public dom: HTMLElement;
protected contextMenu: Electron.Menu;
private container: GoldenLayout.Container;
...
}
export abstract class Panel extends View {
protected goldenLayout: GoldenLayout;
private views: View[] = [];
...
}
Panel ist jetzt also von View abgeleitet. View verwaltet weiter ein HTMLElement, nun aber auch einen GoldeLayout.Container. Panel verwaltet mehrere View und jeweils eine eigene komplette GoldenLayout-Instanz. View könnte immer noch von HTMLElement abgeleitet werden und dom eleminiert, derzeit scheint diese Form aber Trennung und Zusammenspiel von GoldenLayout und DOM besser sichtbar zu machen.
Da soll sich Marius nochmal Gedanken machen. GoldenLayout wurde gerade auf TypeScript portiert und JQuery eliminiert, genau das, was eigentlich sein Thesisthema war. Nun kann er mit Verbesserungen und Erweiterungen des Editors auf höherer Ebene ansetzen.
Derzeit sieht die Implementation der View-Klasse so aus:
Spricht etwas dagegen, sie von HTMLDivElement abzuleiten? Dann könnten Events wahrscheinlich durch den View weiter geleitet werden.
In dem Zusammenhang stellt sich die Frage, ob es sinnvoll wäre Panel von einem HTMLElement abzuleiten. Views könnten dann vielleicht einfach Kinder dessen sein und Events durchlaufen. Würde das im Zusammenhang mit GoldenLayout funktionieren?