harmony-commits mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Apache Wiki <wikidi...@apache.org>
Subject [Harmony Wiki] Update of "Drag and Drop" by AlexeiFedotov
Date Wed, 26 Mar 2008 17:21:18 GMT
Dear Wiki user,

You have subscribed to a wiki page or wiki category on "Harmony Wiki" for change notification.

The following page has been changed by AlexeiFedotov:
http://wiki.apache.org/harmony/Drag_and_Drop

------------------------------------------------------------------------------
  ==== Data structure ====
  The picture below illustrates the structure of the intermediate data.
  
+ attachment:data.png
+ 
  Diagram legend:
     * Triangle: ancestor
     * Black diamond: owner
     * Solid line arrow: reference
     * Line without arrow: bidirectional reference
     * Dashed line arrow: dependency/usage
+    * Asterisk: one-to-many relationship
  
+ ==== Drag-and-drop subsystem ====
+ The diagram below shows the relationship between public API and implementation classes.
The classes that have “Win” prefix are for Windows platform, on other platforms there
should be similar platform-specific classes.
  
+ attachment:classes.png
+ 
+ ==== Event handling and threads ====
+ The following figure gives an overview of the message routing and thread interaction in
Harmony implementation on Windows.
+ 
+ attachment:events.png
+ 
+ ==== The things which are missing and/or wanted ====
+ Cross-platform
+    * Clipboard events: flavors changed, ownership lost
+    * Drag source: setCursor() – use custom cursors for copy, link or cut operations.
+    * Drop target: acceptDrag() and rejectDrag()
+    * Drop target for lightweight components: track for mouse enter/exit, post appropriate
events
+    * Drag-and-drop: detect local (in-process) transfer and do it in simplified way
+    * System flavor map: add system locale’s default charset to the list of available charsets
+ Windows
+    * Handle clipboard messages
+    * Use cached copy of transfer data if the clipboard contents wasn’t changed
+ Linux (X11)
+ Support system selection
+    * Get data from selection
+    * Take/revoke the ownership on selection
+    * Provide selection data for other applications
+    * Multi-format data handling
+    * Time-out detection and handling
+    *  Selections are
+      * PRIMARY – for simple applications
+      * CLIPBOARD – for fully functional copy & paste
+      * Xdnd – for drag-and-drop operations
+ 
+ Support drag-and-drop (Xdnd)
+    * State machine for Xdnd protocol
+    * Implement AWT drag-and-drop peers, post the events to event queue
+    * Time-out detection and handling
+ 
+ Implement data conversion from/to native formats
+ 
+ Please refer to http://www.freedesktop.org/wiki/Standards for X11-related standards and
specifications.
+ 
- === Drag and Drop Development Plan ===
+ === DnD Development Plan ===
  
  ==== AWT/Windows (6w) ====
     * Implement, support with tests and debug unimplemented methods of the following classes:
@@ -55, +99 @@

     * Implement DnD support and write corresponding tests for 46 components.
     * Implement and debug mouse tracking.
  
- ==== AWT/Linux (3w) ====
- ==== Swing/Linux (3w) ====
- 

Mime
View raw message