Rework:VerwendungMultivalent
From Wiki
| « Architektur MVB | Übersicht | Daffuser Preferences » |
Allgemeines
Um herauszufinden, wie auf den Baum zugegriffen werden kann, hat es sich als sehr sinnvoll herausgestellt, die Klasse
multivalent.std.search
anzusehen. Die Klasse ist sehr aufgeräumt, benutzt viele Funktionen und zeigt insbesondere, wie über den Baum iteriert und einzelne Elemente verändert werden können.
Verwendungsbeispiele Multivalent-Browser
Öffnen des Multivalent-Browsers mit einer URL
Dispatcher.sendEvent(new MVBEvent(this,"open","MeineURLHier"));
Der Multivalent-Browser erwartet als Übergabewert der URL einen String.
Intern: Wie schickt man semantische Events an den Browser?
br.eventq(command, argument)
Ein einfacher semantischer Event besteht aus nur einem Befehl. Alle Events, die es gibt, existieren als Konstanten. Sie sind verstreut über alle möglichen Klassen des Multivalent-Browsers und fangen mit "MSG_" an. Um alle möglichen semantischen Events zu finden, ist es empfehlenswert eine Suche über den Sourcecode mit "MSG_" durchzuführen.
Es folgen beispielhaft einige der wichtigsten Events:
Event: Zoom
br.eventq(Zoom.MSG_SET, zoomstufe)
Event: Prev page
br.eventq(multivalent.std.ui.Multipage.MSG_PREVPAGE, zoomstufe)
Event: Next page
br.eventq(multivalent.std.ui.Multipage.MSG_NEXTPAGE, zoomstufe)
Event: Open URL
br.eventq(Document.MSG_OPEN, URI.create(url));
Intern: Wie bekommt man den aktuell selektierten Dokumentteil?
br.getSelectionSpan().isSet()
Mit diesem Befehl kann man überprüfen, ob der Benutzer im Browser etwas markiert hat.
br.getSelectionSpan()
Danach kann man die Markierung mit Rückgabewert Span auslesen.
Intern: Wie wendet man ein Behaviour auf den DocTree an?
BackgroundSpan newspan = (BackgroundSpan) Behavior.getInstance("Annotation",
"multivalent.std.span.BackgroundSpan", null,
doc.getLayer("PERSONAL")));
newspan.setColor(Color.RED); // newspan.setGroup(group);
newspan.move(br.getSelectionSpan());
Die vorangehenden Zeilen ermöglichen es, den Hintergrund einer Textstelle zu verändern. Es wird zuerst eine neue Instanz des BackgroundSpan-Behaviours erstellt. Dieser soll auf dem Layer "PERSONAL" liegen. Bei einem BackgroundSpan hat man die Möglichkeit, die Hintergrundfarbe zu setzen. Dies geschieht über .setColor(Color.RED). Im letzten Schritt verknüpft man den DocTree mit dem neuen Layer über .move(br.getSelectionSpan());. In diesem Fall würde durch br.getSelectionSpan() das augenblicklich markierte Element gefärbt werden.
Bei sehr vielen Markierungungen sollte man
newspan.moveq(br.getSelectionSpan());
verwenden. moveq steht für "move quick" und bedeutet, dass der Browser nicht nach jeder Einfügeoperation die Darstellung aktualisiert.
Intern: Wie erstellt man eine neue Notiz?
INode root = br_.getRoot();
Document doc = (Document) root.findBFS("content");
HashMap mymap = new HashMap();
mymap.put("width", "500");
mymap.put("height", "500");
mymap.put("background", "white");
mymap.put("text", "meintitel");
mymap.put("color", "green");
Behavior.getInstance("Note", "multivalent.std.Note", mymap,doc.getLayer("PERSONAL"));
Auch wenn es hier ein wenig komplizierter mit den Attributen aussieht, ist das Hinzufügen einer Notiz dennoch leichter. Man muss sie nicht mehr in einen bestimmten Teil des Baumes einhängen.
Intern: Wie löscht man den Inhalt eines Layers?
Document Doc = (Document) br.getRoot().findBFS("content");
doc.getLayer("PERSONAL").clear();
Dieser Befehl löscht alle Behaviours aus dem Layer "PERSONAL"
| « Architektur MVB | Übersicht | Daffuser Preferences » |
