ViA - Visualisieren von Algorithmen

Links:


So stelle ich mir die einzelnen Grafikobjekte vor:

Nun noch die einzelnen Layouts für die Grafikfenster (alles klickable Images):

Liste jede Liste ordnet sich in der Mitte des Fensters von links nach rechts an. Ist die Zeile voll, sollte es auf der nächsten Zeile weitergehen
Doppel-Liste die Doppel-Liste verhält sich wie die einfache Liste, nur daß Elemente mit zwei Pfeilen verbunden sind. Wie sollten die Doppel-Pfeile gezeichnet werden? Übereinander (wie bei mir) oder irgendwie diagonal?
Binär-Baum der Binär-Baum ordnet sich von mitte-oben symmetrisch nach unten hin an.
Stack der Stack wächst von unten nach oben. Es werden die Randbegrenzungen gezeichnet. Stack ist, wie alle anderen Obejekte auch, eine Form des Layouts. Es ist also möglich, dem Fenster eine Stack-Struktur zu übergeben, das diese dann zum Zeichnen auffordert und dann darstellt. Vielleicht werden nur die Element im Package definiert und ein Interface für die Layoutstrategien. Damit wird das System flexibler.
Queue die Queue nutzt die selben Elemente wie der Stack, es gibt aber zusätzlich ein Ende. Die zwei Balken werden automatisch gezeichnet.
Baum der allgemeine Baum wird wie der binäre von oben nach unten aufgebaut. Er hat immer ein nichtleeres Kopfelement. Außerdem ist eine verschiedene Anzahl "Kinder-Knoten" von Knoten zu Knoten möglich.
Graph so sieht ein Graph-Layout aus. Es ist das komplizierteste. Es können auch mehrere Köpfe definiert werden. Die Verbindungen werden auf den Mittelpunktsgeraden zwischen den Rechtecken gezeichnet. Mein Problem ist aber, wie ich die Objekte platzsparend, aber auch nicht zu dicht gedrängt darstelle. Hier brauche ich sicher Hilfe.

Allgemein sollen die Applets so aussehen:

Das Quasi-HTML:

Überall, wo Text anders als mit Standardschrift augegeben werden soll, möchte ich das Quasi-HTML benutzen. Es wird als ganz normaler String an ein Objekt übergeben, daß diese Quasi-HTML verarbeiten kann. Es werden hier vorerst die Beschreibungsliste (HTMLStringList.class) und die einzelnen Grafik-Elemente sein. Ein Label für den gebrauch in anderen Anwendungen kann auch leicht geschrieben werden. Es gilt folgender Syntax:

[<body bgcolor=######>]{[Token_1]...[Text]...[Token_n][Text][/Token_n]...[Text]...[/Token_1]}*

In Worten:

Es sind folgende Token geplant:

<i> </i> Kursive Schrift
<b> </b> Fett Schrift
<u> </u> Unterstreichen
<face=String> </face> Setzen der Schriftart *
<size=##> </size> Setzen der Schriftgröße (## ist von 01..99)
<color=######> </color> Setzen der Schriftfarbe (###### ist der Hex-Code eines RGB-Wertes)
<body bgcolor=######> -- Setzen der Hintergrundfarbe (###### ist der Hex-Code eines RGB-Wertes)

* Folgende Schriften sollten möglich sein: Dialog, Helvetica, TimesRoman, Courier, DialogInput, ZapfDingbats

Beispiele:

<i>Text1 <b>Text2</b> Text3</i> Text1 Text2 Text3
<color=ff0000>Text1</color> <u>Text2</u> Text1 Text2
<face=Courier>Text1<size=16> Text2</size></face> Text1 Text2

Vorgehensweise:

Ich schlage bei der Programmierung folgende Vorgehensweise vor.

Jeder legt in seinem AFS-Verzeichnis ein Verzeichnis ViA an. Dort haben dann alle anderen Guppenmitglieder Zugriff. Gesammelt werden alle Klassen bei mir. Ebenso sollten die Applets hier über eine Seite, die jeder verändern darf zugänglich gemacht werden. Die Quellcodes werden auch gegenseitig zugänglich gemacht, aber jeder in seinem Verzeichnis. Es darf aber nur derjenige den Quellcode verändern, der auch für diesen Teil der Software zuständig ist. Wenn was geändert werden soll, dann muß eine Anfrage an den Autor gestellt werden. Das wird sicherlich meine Grafikbibo betreffen. Damit will ich verhindern, daß es mehrere inkompatible Versionen gibt. Nach Java-Richtlinien werden ich das Package edu.tucz.via nennen. Die Doku wird auch irgendwann mal hier veröffentlicht.

folgende Verzeichnisse sind eingerichtet:

wer nicht weiß, wie AFS-Rechte gesetzt werden: FAQ zum AFS oder mich fragen.

Ich habe auch eine AFS-Gruppe (chu:vias) mit folgenden Nutzern eingerichtet: igrdb, fje, guido, pegu, pra, chu

Hier geht es zu den TestApplets

© Chris Huebsch