6 | | * This task is about the Drag'N'Drop base implementation. Sophie 2.0 should be able to provide a relatively complex DnD behavior. |
| 6 | * This task is about the base Drag'N'Drop implementation. Sophie 2.0 should be able to provide a relatively complex DnD behavior. In addition the DND implementation should be consistent to behave properly with the Scene and VisualElements. What is more, the DND is tightly connected with the clipboard. |
| 7 | * The DND allows three main operations: |
| 8 | * COPY |
| 9 | * MOVE |
| 10 | * LINK |
| 11 | * While performing these operations the mouse cursor should change accordingly. Generally they are invoked by keyboard combinations that include the cntrl and shift keys. There is also a default operation that is invoked by just dragging without another key pressed. |
| 12 | * The clipboard allows the following operations: |
| 13 | * CUT |
| 14 | * COPY |
| 15 | * PASTE |
| 16 | * These are performed by keyboard combinations as follow: CUT - cntrl + x; COPY - cntrl + c; PASTE - cntrl + v; |
| 17 | * General requirements for all the revisions should combine the following things: |
| 18 | * DnD and Clipboard should allow the user to manipulate data and transfer it in and outside sophie. What is more, it should allow transfering data between several opened Sophies. |
| 19 | * For an overview of DnD transfers inside Sophie 2.0 you can use the following table: http://spreadsheets.google.com/ccc?key=p-0Oq38E1aysuTs69KE68Nw&hl=en |
| 20 | * Another such table should be provided for the Clipboard behavior. |
| 21 | * DnD and Clipboard should be able to transfer the following things (some more may be added later): |
| 22 | * Strings |
| 23 | * Serialized objects |
| 24 | * Files |
| 25 | * Sophie Objects: |
| 26 | * Resourses - generally speaking. |
| 27 | * Frames (Image, Text, Media frames) |
| 28 | * Pages |
| 29 | * Embedded books |
| 30 | * etc. |
| 31 | * May include the buttons that are dragable (for resizing the Page, moving the Frame etc.) - this is optional since we already have some implementaion for dragging these buttons. |
9 | | * Think of the following scenarios of a DND functionalities: |
10 | | * DnD for resources: |
11 | | * media resources - audio, video, images etc. (may include things like flash in a later revision). |
12 | | * text resources - txt, rtf. |
13 | | * html resources. |
14 | | * content - text content should be processes when dragged to a text frame for example. |
15 | | * DnD into UI components: |
16 | | * text frames - should be able to process text dragging and dropping. |
17 | | * image frames - should be able to accept DnD of image content. |
18 | | * media frames - should be able to accept DnD of media files. |
19 | | * palletes: |
20 | | * Resource palette: |
21 | | * Should process dropping of files. |
22 | | * User should be able to drag files outside Sophie 2.0. |
23 | | * Same applies to Page templates palette, Plug-in palette, Books palette, Pages palette, Book templates palette etc. |
24 | | * Things should be dragged into palettes and out of, or just transfer things from one palette to another |
25 | | (from Page palette to Page templates palette should create a template |
26 | | for the page that is dragged and dropped in the templates palette.) . |
27 | | * work areas - should process dragging of frame templates, resources (resulting in creating an appropriate frame). |
28 | | * books desktop - should process creating a book from a template by dropping that template, should be able to export a book template by dragging it to the book templates. |
29 | | * All of the things mentioned should be made possible. The person should decide on whether some library should be used or another one should be written. |
30 | | * provide a way to actually test the drag and drop functionalities. |
31 | | * implement at least 3 DnD scenarios from the table that follows. |
32 | | * A description in a wiki page should be created, explaining how to use the library and how things work. |
33 | | * Examine the following table => http://spreadsheets.google.com/ccc?key=p-0Oq38E1aysuTs69KE68Nw&hl=en |
34 | | * decide what could added. |
35 | | * decide if there is something to remove. |
36 | | * Unit test for the base implementation. |
| 34 | * For the current revision we will consider implementing a base Clipboard functionality. This include the following: |
| 35 | * base Clipboard library that support the clipboard operations. |
| 36 | * It should allow transfering plain text: |
| 37 | * from the text frame to the Clipboard. |
| 38 | * from the Clipboard into a text frame. |
| 39 | * from the Clipboard outside Sophie 2.0 - in another text control: |
| 40 | * for example into a browser or a text editor. |
| 41 | * Optional transfers (if there is time left): |
| 42 | * transfers of images from and to Sophie 2.0: |
| 43 | * this is connected with the Image frames. |
| 44 | * A module containing the base library should be created. |
| 45 | * Use cases from above should be implemented into other modules. |
| 46 | |