JirkaDellOro / FUDGE

Furtwangen University Didactic Game Editor
https://jirkadelloro.github.io/FUDGE
MIT License
33 stars 27 forks source link

View extends HTMLDivElement? #179

Open JirkaDellOro opened 4 years ago

JirkaDellOro commented 4 years ago

Derzeit sieht die Implementation der View-Klasse so aus:

export abstract class View {
    config: GoldenLayout.ComponentConfig;
    parentPanel: Panel;
    content: HTMLElement;
 ...
    this.content = document.createElement("div");
...
}

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?

AkikoOsaka commented 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.

JirkaDellOro commented 4 years ago

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.

JirkaDellOro commented 3 years ago

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.