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.
Difference between revisions of "Scout/HowTo/5.0/Drag and drop support"
(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 | ||
− | |||
− | |||
− | |||
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() - 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.
@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); }