+ private void dragEnterPlainText(DropTargetDragEvent dtde, IDnDContext dp) {\r
+ try {\r
+ DataFlavor flavor = DataFlavor.getTextPlainUnicodeFlavor();\r
+ String flavorCharset = flavor.getParameter("charset");\r
+ Transferable t = dtde.getTransferable();\r
+ InputStream in = (InputStream) t.getTransferData(flavor);\r
+ String data = FileUtils.getContents(in, Charset.forName(flavorCharset));\r
+\r
+ List<IDragItem> items = new ArrayList<>();\r
+ Session session = Simantics.getSession();\r
+ Optional<Variable> v = JsonUtils.tryParseJsonPropertyVariable(session, data);\r
+ if (v.isPresent()) {\r
+ items.addAll( toDragItems( session.syncRequest(VariableReferences.variablesToReferences(model, Collections.singletonList(v.get()))) ) );\r
+ }\r
+\r
+ if (items.isEmpty()) {\r
+ dtde.rejectDrag();\r
+ } else {\r
+ // Accept, make sure it is Link\r
+ for (IDragItem i : items)\r
+ dp.add(i);\r
+ dtde.acceptDrag( DnDConstants.ACTION_LINK );\r
+ }\r
+ } catch (UnsupportedFlavorException e) {\r
+ throw new RuntimeException(e);\r
+ } catch (IOException e) {\r
+ ErrorLogger.defaultLogError(e);\r
+ dtde.rejectDrag();\r
+ } catch (DatabaseException e) {\r
+ ErrorLogger.defaultLogError(e);\r
+ dtde.rejectDrag();\r
+ }\r
+ }\r
+\r