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/5.0/Drag and drop support"

< Scout‎ | HowTo‎ | 5.0
(Created page with "{{ScoutPage|cat=HowTo 5.0}} 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 un...")
 
m (Steps)
 
(One intermediate revision by the same user not shown)
Line 9: Line 9:
 
*Click on one of the newly added methods to open the source code at the correct position.<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>
 
*Add two new methods<br>'''getConfiguredDropType()'''<br>'''getConfiguredDragType()'''<br>to define what type of objects your drag and drop handlers support.<br>
 +
{{note|Advanced Properties|You can find these two options under the Advanced Properties of the table too but it is only possible to select one drag and drop type with the Scout Object Properties view.}}
 
<pre>    @Override
 
<pre>    @Override
 
     protected int getConfiguredDragType() {
 
     protected int getConfiguredDragType() {
Line 15: Line 16:
 
   
 
   
 
     @Override
 
     @Override
    @ConfigProperty("DRAG_AND_DROP_TYPE")
 
    @Order(190.0)
 
    @ConfigPropertyValue("0")
 
 
     protected int getConfiguredDropType() {
 
     protected int getConfiguredDropType() {
 
       return TYPE_TEXT_TRANSFER | TYPE_FILE_TRANSFER | TYPE_IMAGE_TRANSFER | TYPE_JAVA_ELEMENT_TRANSFER;
 
       return TYPE_TEXT_TRANSFER | TYPE_FILE_TRANSFER | TYPE_IMAGE_TRANSFER | TYPE_JAVA_ELEMENT_TRANSFER;
 
     }
 
     }
</pre>
+
</pre><br>
 
*Add code to '''execDrag()''' to create an appropriate TransferObject<br>
 
*Add code to '''execDrag()''' to create an appropriate TransferObject<br>
 
<pre>    @Override
 
<pre>    @Override

Latest revision as of 04:07, 14 April 2015

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
  • In the Scout Object Properties under Advanced Operations add the following methods:
    execDrag()
    execDrop()
    If you want to also add support for copying using Ctrl-C, you can also add execCopy()
    DragAndDropAddingMethods.png
  • Click on one of the newly added methods to open the source code at the correct position.
  • Add two new methods
    getConfiguredDropType()
    getConfiguredDragType()
    to define what type of objects your drag and drop handlers support.
Note.png
Advanced Properties
You can find these two options under the Advanced Properties of the table too but it is only possible to select one drag and drop type with the Scout Object Properties view.
    @Override
    protected int getConfiguredDragType() {
      return TYPE_TEXT_TRANSFER;
    }
 
    @Override
    protected int getConfiguredDropType() {
      return TYPE_TEXT_TRANSFER | TYPE_FILE_TRANSFER | TYPE_IMAGE_TRANSFER | TYPE_JAVA_ELEMENT_TRANSFER;
    }

  • Add code to execDrag() to create an appropriate TransferObject
    @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());
    }
  • Add code to execDrop() to handle the appropriate TransferObjects. You need to treat each TransferObject type that getConfiguredDropType() returns
    @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");
      }
    }
  • If you added execCopy(), the easiest way to implement this is probably to just forward it to execDrag()
    @Override
    protected TransferObject execCopy(List<? extends ITableRow> rows) throws ProcessingException {
      return execDrag((List<ITableRow>) rows);
    }


Back to the top