Skip to main content

Notice: this Wiki will be going read only early in 2024 and edits will no longer be possible. Please see: https://gitlab.eclipse.org/eclipsefdn/helpdesk/-/wikis/Wiki-shutdown-plan for the plan.

Jump to: navigation, search

Difference between revisions of "Scout/HowTo/4.0/Drag and drop support"

< Scout‎ | HowTo‎ | 4.0
(Steps)
(Replaced content with "The Scout documentation has been moved to https://eclipsescout.github.io/.")
 
Line 1: Line 1:
{{ScoutPage|cat=HowTo 4.0}}
+
The Scout documentation has been moved to https://eclipsescout.github.io/.
 
+
This how-to describes how to add support for drag and drop to your tables.
+
 
+
= Steps  =
+
 
+
*Select the table<br>
+
*In the Scout Object Properties under Advanced Operations add the following methods:<br>'''execDrag()'''<br>'''execDrop()'''<br> If you want to also add support for copying using Ctrl-C, you can also add '''execCopy()'''<br>[[Image:DragAndDropAddingMethods.png]]<br>
+
*Click on one of the newly added methods to open the source code at the correct position.<br>
+
*Add two new methods<br>'''getConfiguredDropType()'''<br>'''getConfiguredDragType()'''<br>to define what type of objects your drag and drop handlers support.<br>
+
<pre>    @Override
+
    protected int getConfiguredDragType() {
+
      return TYPE_TEXT_TRANSFER;
+
    }
+
+
    @Override
+
    @ConfigProperty("DRAG_AND_DROP_TYPE")
+
    @Order(190.0)
+
    @ConfigPropertyValue("0")
+
    protected int getConfiguredDropType() {
+
      return TYPE_TEXT_TRANSFER | TYPE_FILE_TRANSFER | TYPE_IMAGE_TRANSFER | TYPE_JAVA_ELEMENT_TRANSFER;
+
    }
+
</pre>
+
*Add code to '''execDrag()''' to create an appropriate TransferObject<br>
+
<pre>    @Override
+
    protected TransferObject execDrag(List<ITableRow> rows) throws ProcessingException {
+
      StringBuilder result = new StringBuilder();
+
+
      for (ITableRow row : rows) {
+
        if (!result.toString().equals("")) {
+
          result.append("; ");
+
        }
+
        result.append(getTable().getShortNameColumn().getValue(row) + " " + getTable().getNameColumn().getValue(row));
+
      }
+
      return new TextTransferObject(result.toString());
+
    }
+
</pre>
+
*Add code to '''execDrop()''' to handle the appropriate TransferObjects. You need to treat each TransferObject type that getConfiguredDropType() returns<br>
+
<pre>    @Override
+
    protected void execDrop(ITableRow row, TransferObject t) throws ProcessingException {
+
      if (t.isText() && (t instanceof TextTransferObject)) {
+
        String text = ((TextTransferObject) t).getPlainText();
+
        // split text at "; " to get seperate lines
+
        // treat each line according to business logic
+
        System.out.println("Dropped text: " + text);
+
      }
+
      else if (t.isFileList()) {
+
        List<File> o = ((FileListTransferObject) t).getFiles();
+
        for (int i = 0; i < o.size(); ++i) {
+
          // handle content of o[i]
+
          System.out.println("Dropped file: " + o.get(i).getName());
+
        }
+
      }
+
      else if (t.isImage()) {
+
        System.out.println("Dropped image");
+
      }
+
      else if (t.isLocalObject()) {
+
        System.out.println("Dropped local object");
+
      }
+
      else {
+
        System.out.println("Dropped other stuff");
+
      }
+
    }
+
</pre>
+
*If you added '''execCopy()''', the easiest way to implement this is probably to just forward it to execDrag()
+
<pre>    @Override
+
    protected TransferObject execCopy(List<? extends ITableRow> rows) throws ProcessingException {
+
      return execDrag((List<ITableRow>) rows);
+
    }
+
</pre>
+
<br>
+

Latest revision as of 07:36, 18 March 2024

The Scout documentation has been moved to https://eclipsescout.github.io/.

Back to the top