+ class ViewDragListener implements DragSourceListener {
+ public void dragFinished(DragSourceEvent event) {
+ System.out.println("Finished Drag");
+ }
+
+ public void dragSetData(DragSourceEvent event) {
+ System.out.println("dragSetData: " + event);
+ IStructuredSelection selection = (IStructuredSelection) viewer
+ .getSelection();
+ if (selection.getFirstElement() instanceof ExecutionModulesContentProvider.FlowNode) {
+ if (TextTransfer.getInstance().isSupportedType(event.dataType)) {
+ ExecutionModulesContentProvider.FlowNode flowNode = (ExecutionModulesContentProvider.FlowNode) selection
+ .getFirstElement();
+ RealizedFlow rf = nodeAsRealizedFlow(flowNode);
+ Properties props = new Properties();
+ realizedFlowAsProperties(props, rf);
+ props.setProperty("agentId", flowNode
+ .getExecutionModuleNode().getAgentNode().getAgent()
+ .getAgentUuid());
+
+ ByteArrayOutputStream out = new ByteArrayOutputStream();
+ try {
+ props.store(out, "");
+ event.data = new String(out.toByteArray());
+ } catch (IOException e) {
+ throw new SlcException("Cannot transfor realized flow",
+ e);
+ } finally {
+ IOUtils.closeQuietly(out);
+ }
+ }
+ }
+ }
+
+ public void dragStart(DragSourceEvent event) {
+ System.out.println("Start Drag");
+ }
+
+ private RealizedFlow nodeAsRealizedFlow(
+ ExecutionModulesContentProvider.FlowNode flowNode) {
+ RealizedFlow rf = new RealizedFlow();
+ rf.setModuleName(flowNode.getExecutionModuleNode().getDescriptor()
+ .getName());
+ rf.setModuleVersion(flowNode.getExecutionModuleNode()
+ .getDescriptor().getVersion());
+ ExecutionFlowDescriptor efd = new ExecutionFlowDescriptor();
+ efd.setName(flowNode.getFlowName());
+ rf.setFlowDescriptor(efd);
+ return rf;
+ }
+
+ private void realizedFlowAsProperties(Properties props, RealizedFlow rf) {
+ props.setProperty("moduleName", rf.getModuleName());
+ props.setProperty("moduleVersion", rf.getModuleVersion());
+ props.setProperty("flowName", rf.getFlowDescriptor().getName());
+ }