Sonntag, 22. Mai 2011

Programming with Haiku, Lektion 20: Drag & Drop

Die 20. Folge in DarkWyrms C++ Kurs beschäftigt sich mit der Unterstützung von Drag & Drop. Ein Feature, dass in Haiku sehr groß geschrieben wird, ermöglicht es doch oft einen schnellen und intuitiven Datenaustausch zwischen Programmen.

Es werden zwei Arten von Drag & Drop unterschieden: Simple drag & drop und Negotiated drag & drop.
Wie der Name schon vermuten lässt, ist die erste Variante relativ einfach umzusetzen. Um fallen gelassene Objekte zu verarbeiten, bedarf es nur eines kleinen Zusatz in der MessageReceived() Methode des entsprechenden BViews. Damit man auch Objekte aus dem eigenen Programm herausziehen kann, muss die Methode MouseDown() implementiert werden, in der eine entsprechende BMessage generiert wird, die dann per DragMessage() verschickt wird. Alles übrige erledigt das System für einen.

Die zweite Variante des Drag & Drop ist dagegen einigermaßen kompliziert, da es bei den Verhandlungen ("negotiate") zu einigem Hin und Her zwischen Sender und Empfänger kommt. Dabei schickt der Sender zuerst eine BMessage in welchem Format er die Daten zur Verfügung stellen kann und wie diese Daten verschickt werden sollen. In sogenannten Aktionen können Daten entweder kopiert, verschoben oder verlinkt übergeben, oder einfach nur gelöscht werden. Der Empfänger antwortet mit einer BMessage wie er es denn gern hätte, der Sender wertet diese BMessage aus, bereitet die Daten entsprechend auf und verschickt sie mit einer weiteren BMessage. Der Empfänger zieht sich die Daten aus dieser BMessage oder öffnet die dort angegebene Datei, falls der Datenaustausch auf diese Weise erfolgen soll.

Alle Folgen von "Programming with Haiku" können in Darkwyrm's Library nachgeschlagen werden.

Keine Kommentare:

Kommentar veröffentlichen