Projektgruppe Visual Analytics - Medieninformatik und Multimedia ...
Projektgruppe Visual Analytics - Medieninformatik und Multimedia ...
Projektgruppe Visual Analytics - Medieninformatik und Multimedia ...
Sie wollen auch ein ePaper? Erhöhen Sie die Reichweite Ihrer Titel.
YUMPU macht aus Druck-PDFs automatisch weboptimierte ePaper, die Google liebt.
188 Kapitel 10 Implementierung<br />
Um die Funktion des Drag and Drop auch für Touch nachzubilden, implementiert die<br />
Klasse Touch die statische Methode DoDragAndDrop. Diese Methode ist der Methode<br />
DoDragDrop von der DragDrop-Klasse aus WPF sehr ähnlich, es wird lediglich ein<br />
zusätzlicher Parameter vom Typ Point übergeben, welcher die Mitte des zu ziehenden<br />
Elementes relativ zum TaP-Window angibt. Die Methode erstellt ein DragObject,<br />
fügt es in das Fenster ein <strong>und</strong> setzt es an die Position des übergebenen Points. Das<br />
DragObject „haftet“ sich dann an den Finger, bzw. bei Maussteuerung an die Maus.<br />
Wird der Finger oder der Mauszeiger verschoben, führt das DragObject einen HitTest<br />
durch <strong>und</strong> findet dadurch heraus, welches WPF-Element unter ihm liegt. Dieses Element<br />
wird dann mit dem Element des vorherigen HitTests verglichen. Wenn das neue<br />
Element dem alten entspricht, wird ein DragOver-Event abgefeuert. Sind dies beiden<br />
Elemente jedoch verschieden, wird beim alten Element ein DragLeave-Event <strong>und</strong> beim<br />
neuen Element ein DragEnter-Event abgefeuert. Bei einem DragOver-Event überprüft<br />
das darunter liegende Element, ob ein Drop auf ihm möglich ist. Wenn es nicht möglich<br />
ist, wird das Drag-Objekt auf halbdurchsichtig gesetzt, ansonsten bleibt die visuelle<br />
Erscheinung unverändert. Eine Anforderung ist es, dass die WPF-Events genutzt werden<br />
sollen. Da diese Klassen jedoch zum WPF-Framework gehören <strong>und</strong> als internal<br />
deklariert sind, lassen sich deren Objektinstanzen nur per Reflection erzeugen. Dies<br />
wird durch die Methode CreateDragEventArgs geregelt.<br />
10.4.5 DragObject<br />
Eine Instanz der Klasse DragObject ist eine visuelle Repräsentation eines zu ziehenden<br />
Elementes. Der DataContext des DragObjects ist dabei stets der gleiche, den auch<br />
das Element hatte, bei dem der Drag and Drop gestartet wurde. Die Funktion<br />
TouchMove des DragObjects sorgt für die Auslösung der in der Klassenbeschreibung<br />
der Klasse Touch (siehe 10.4.4) erwähnten Drag-Events, sodass die optisch unter dem<br />
DragObject liegenden Elemente das darüber schwebende Element bemerken. Im Fall<br />
eines erfolgreichen Drops wird dann der DataContext des DragObjects für die weitere<br />
Datenverarbeitung verwendet.<br />
10.5 Implementierung der Datenbankanbindung<br />
Damit die Anwendung unabhängig von der Art der Datenbank arbeiten kann,<br />
benutzen <strong>und</strong> liefern alle Methoden Instanzen der Online Analytical Processing-<br />
Abstraktionsschicht zurück. Die Metadaten der Datenbank werden beim ersten Aufruf<br />
nahezu komplett geladen. Ausnahme hierbei sind die Knoten, da es hiervon eine sehr<br />
große Anzahl geben kann. Für alle weiteren Metadaten <strong>und</strong> Abfragen gibt es vier<br />
öffentliche Methoden, welche im Folgenden genauer erklärt werden.