Bekannte Probleme
- Im Eckendialog sollen eigentlich die Graphen zentriert um die Ecke um die es geht
dargestellt werden. Das klappt noch nicht so wie ich mir das vorstelle.
Die bearbeitete Ecke soll im Zentrum zu sehen sein.
Offene Punkte GED
- Export:
- Export in ein Vektorformat.
Die Perl-Version konnte den Graphen als Postscript-Datei exportieren, etwas
vergleichbares ist für die Java Implementierung geplant: Export in ein
Vektorgrafikformat.
- Export des Graphen als LaTeX-Datei, dies konnte die Perlversion bereits und muss
nur adaptiert werden.
- Grafische Oberfläche:
- Ecken-Bearbeitungsdialog ggf. auch zweispalttig.
- Kanten-Bearbeitungsdialog: Graph testweise nach rechts unten.
- Canvas:
- Canvasgröße mit Speichern und beim Laden herstellen, wenn das Fenster
zu klein ist. Oder generell?
- Größe der Canvas per Menüauswahl setzbar (für Präsentationen etc.).
- Im Menü Canvasgröße auf individuelles Maß setzen mit kleinem Dialog.
- Canvas mit Scrollbalken darstellen?
- Graph#maximizeGraphRespectingAspectRatio() auch direkt in der Oberfläche
verwenden, neues Icon!
-
Ev. Graphen an die Größe der Canvas anpassen im Ecken- und Kanten-Dialog. Einmal
nach dem Pack, aber auch bei Änderungen an der Größe. Ev. per Listener?
Muss aber auch nicht, auch so macht es eine gute Figur.
- Eigenschaften von mehreren Kanten mit dem Kantenauswahlmenü ändern:
Erst Kanten auswählen, dann Eigenschaften setzen.
-
Menüs:
- Alle Ecken Radius ändern - macht das Sinn? Auf Default und Radius
ändern?
- Alle Ecken Farbe ändern - macht das Sinn? Auf Default und Farbe
ändern?
- Laden GED 1 und 2
- Ecke in Kante hinein setzen (neue Ecke, zwei neue Kanten dazu mit,
gleichen Eigenschaften, alte Kante weg).
- Liniengraphen bilden
- Rahmen aufziehen und alle Ecken darin löschen / bearbeiten.
- Auswahl von Ecken mit gestrichelten Kreisen darum darstellen in
Radius * 1.25 Abstand oder so?
- Ecke ins Gitter einrasten ins Eckenmenü (mit snap in Grid kann man sie
einfach verschieben, aber kann ich trotzdem einbauen).
- Möglichkeit, die Beschriftung einer Ecke mit der Maus zu versetzen.
- Label, Gewicht, Kapazität und Fluss per Maus bewegbar machen.
- Bei Rechtsklick in freie Fläche dort Submenü zum Erzeugen von Graphen
mit diesem Mittelpunkt anbieten: Kreise, Kn, ... mit Radius um diesen
Punkt wählbar. Genau wie im Menü für den Mittelpunkt der Bildfläche.
- Bei Alle Ecken auf Gitter legen hinterher testen, ob zwei Ekcen die
gleichen Koordinaten haben und wenn ja, den Benutzer warnen.
- Graphen im Uhrzeigersinn und entgegengesetzt um den Mittelpunkt drehen.
Vielleicht auch in festen Winkeln. Oder eingebbar.
- Funktionalität, die Sinn macht aus dem GraphPanel in Graph verlegen,
analog zu vertexIntersctsWithOtherVertex()
- Schneller Zugriff auf die letzten 10 gespeicherten Dateien über das Menü.
Dazu ist dann allerdings ein SessionManager nötig, der sich dies über die
verschiedenen Starts von GED merkt.
- Unter der Haube:
- Logging aller Aktionen einbauen, das ist in der Logik eingebaut, da passiert
aber nicht viel! GraphPanel etc. auch loggen...
- Geändertmarker richtig anzeigen (setChange, speichern, laden...)
- Noch fehlendes:
- ged3-Form, alt Loader weiter refakturieren!
- Den Graphen in seinen Liniengraphen (oder Kantengraphen) wandeln lassen, dies
konnte die Perlversion bereits und muss nur adaptiert werden.
- Testabdeckung der Graphenklassen, also alles unterhalb von
de.duehl.math.graph.ged.graph
mit Ausnahme von
de.duehl.math.graph.ged.graph.io
.
- Laden und Speichern .ged einbauen
- Laden und Speichern .ged2 einbauen
- Laden nach automatischer Endung Format erkennen.
- Fehlende Kanteneigenschaften einfügen (welche wären das?).
- Geplante Refakturierungen:
- Generelles Refactoring, alle Klassen sichten.
- de.duehl.swing.ui.dialogs.ErrorDialog von ModalDialogBase erben lassen!
- Color aus Basics nutzen?
- Alle in Klassen enthaltenen Enums in eigene Klassen extrahieren!
- Funktionalität aus der Logik in den Graphen verlegbar?
- Alle Sourcedateien auf TODO absuchen.
- Grundlegende Überlegungen:
- Graphen im Format des Dumps unter dem Menüpunkt Extra, Graphen als Textausgabe
ansehen auch einlesen.
-
Eventuell könnte der Graph als solcher oder auch zu Teilen von allgemeineren
Klassen erben. Dann hätte man
GedVertex extends Vertex
und dergleichen.
Problem bei der jetzigen Darstellung, bei List<GedVertex> ist das nicht
kompatibel zu List<Vertex>.
- Line durch neue PixelLine ersetzen. die Pixelklassen nach Swing...
Allerdings gibt es da schon eine...
- Decorator-Pattern für Graphen verwenden... ?
Dann ließe er sich elegant für alle Einsatzzwecke abwandeln und man könnte ihn
auch direkt im Algorithmus verwenden.
Allerdings hapert es bei Listen von Klassen...
- Layer? man könnte dann rechts verwalten welche angezeigt werden sollen
und hätte für jeden Layer einen Graphen.
- Zeichnen von Mehrfachkanten als Kreisbögen. Per Option in den Metadaten des
Graphen.
Im GraphPainter bei der Kantendarstellung dann erst alle Kanten
sammeln, die zwischen je zwei Ecken verlaufen, Radien und so selbst bestimmen.
Siehe ShortTestCodes.graphicalUserInterface.DrawArc.
Achtung, dann muss natürlich auch sowas wie Rechtsklick angepasst werden.
- Schlingen erlauben? Darstellung an Eckenradius anpassen und ermitteln,
wo der größte freie Winkel durch die Kanten an dieser Ecke sind und
diesen mit der oder den Schlingen füllen.
Achtung, dann muss natürlich auch sowas wie Rechtsklick angepasst
werden.
- Wenn alles andere fertig ist, kann über Animation nachgedacht werden.
Das läuft dann als eigene Historie, in die bestimmt Graphen gespeichert werden.
Eine Animationsverwaltung mit kleinen Bildern der Graphen wie im Perlprogramm
sollte dann
folgen.
So ähnlich wie der EdgeDeleteDialog.
- Generelle Behandlung von Algorithmen überlegen, Schnittstelle Algorithm?
- Beispielagorithmus schreiben, der zu jedem Zwischenstand einen Graphen
speichert. Ggf. sogar als Animation.
DFS oder BFS oder so.
- Farbalgorithmen aus meiner Diplomarbeit von C++ nach Java übertragen
und auf Graphen anwendbar machen.
- Test auf plättbaren Graphen einbauen. (Muss K5 oder K3,3 als
Subgraphen finden. Ob es da schnelle Algorithmen gibt?)
- GED als Android-App?
- Dokumentation:
- Hilfeseiten mit Texten und Bildern erstellen, die im Programm mit F1 angezeigt
werden kann, sobald GED weiter ist, so dass diese nicht dauernd
überarbeitet werden müssen.
Buttons im Text abbilden.
- Nach den ganzen Beispielgraphen auf der GED-Seite schauen.
Wenn ich die nicht mehr habe, nachbauen!
- Von Zeit zu Zeit Webseite und diese Texte synchron halten.