wyszukiwarka google

ContentStream

sobota, 18 lutego 2012

Kurs Flex 3 - Drag and Drop

Technika Drag and Drop, czyli "przeciągnij i upuść" jest powszechnie stosowana w interfejsach graficznych w aplikacjach komputerowych. Nastomiast nie dotyczyło to aplikacji sieciowych, aż do momentu wprowadzenia przez Adobe bogatych aplikacji internetowych. Obecnie tę technikę możemy zastosować w wielu językach programowania, np. w Javie. Technika ta polega na zaznaczeniu obiektu, przeciągając go na inny obiekt i upuszczając na niego. Wszystkie komponenty Flex'a obsługują tę operację. Warto wspomnieć, że komponenty oparte na listach, posiadają odpowiednie atrybuty do obsługi Drag and Drop:
  • DataGrid,
  • HorizontalList,
  • List,
  • PrintDataGrid,
  • TileList,
  • Tree.


Oznacza to łatwiejszą pracę z tymi kontrolkami, gdyż wystarczy dodać tylko jedną wartość atrybutu.
Operację przeciągania i upuszczania możemy podzielić na trzy etapy:
  1. Inicjalizacja - klikamy na element i przesuwamy go, trzymając wciśnięty przycisk myszki. Element jest inicjatorem przeciągania.
  2. Przeciąganie - trzymając wciśnięty przycisk myszki, przesuwamy jej wskaźnik po ekranie. Flex wyświetla obraz zwany obiektem zastępczym, a przypisany niewidoczny obiekt, zwany źródłem przeciągania, przechowuje dane powiązane z elementem.
  3. Upuszczanie - przesuwamy wkaźnik myszki nad inny komponent, do którego możemy upuścić element. W ten sposób dane zostają dołączone do nowego komponentu.
Dla przykładu skorzystamy z dwóch kontrolek List i dostawcy danych użytych w szóstym komponencie, a także użyjemy następujące dwie właściwości:
  • dragEnabled - określa, czy kontrolka może być inicjatorem przeciągania. Jeżeli jej wartość ustawimy na true, to możemy przeciągnąć elementy z tego komponentu.
  • dropEnabled - określa, czy kontrolka może być celem upuszczania. Jeżeli jej wartość ustawimy na true, to możemy upuszczać elementy do tego komponentu.
Dodatkowo możemy użyć właściwości dragMoveEnabled. Jeżeli jej wartość ustwimy na true, to przeciągane elementy z kontrolki, która jest inicjatorem, zostaną usunięte.
 <mx:List id="list1" dataProvider="{array1}" labelField="data"
  dragEnabled="true" dragMoveEnabled="true"/>

 <mx:List id="list2" dropEnabled="true" labelField="data" />

Na rysunku poniżej widzimy przeciągnięty element.

[kliknij na obrazek aby powiększyć]

Jak wcześniej było wspomniane, podczas przeciągania zostaje utworzony obiekt zastępczy, czyli obraz podczepiony pod wskaźnik myszki. Oznacza to, że w tym miejscu nie możemy upuścić elementu. W tym samym momencie został utworzony obiekt dragSource, w którym są przechowywane dane w formacie items.

Następnie, przesunięcie elementu nad drugą listę spowoduje, że obiektu zastępczego nie będzie, oznacza to, że w tej kontrolce mamy możliwość upuszczenia elementu.

[kliknij na obrazek aby powiększyć]

A tak wygląda kontrolka, do której upuściliśmy element i tym samym dodaliśmy go do komponentu.

[kliknij na obrazek aby powiększyć]







W kolejnych częściach kursu:

Brak komentarzy:

Prześlij komentarz