19.01.2015 Aufrufe

Projektgruppe Visual Analytics - Medieninformatik und Multimedia ...

Projektgruppe Visual Analytics - Medieninformatik und Multimedia ...

Projektgruppe Visual Analytics - Medieninformatik und Multimedia ...

MEHR ANZEIGEN
WENIGER ANZEIGEN

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.

Hurra! Ihre Datei wurde hochgeladen und ist bereit für die Veröffentlichung.

Erfolgreich gespeichert!

Leider ist etwas schief gelaufen!