]> gerrit.simantics Code Review - simantics/platform.git/blobdiff - bundles/org.simantics.diagram/src/org/simantics/diagram/elements/TextNode.java
Sync git svn branch with SVN repository r33269.
[simantics/platform.git] / bundles / org.simantics.diagram / src / org / simantics / diagram / elements / TextNode.java
index ed8df095a72b587f297002fcc3ecca9d80852e04..96cd573cc626860a43d51775d7cb20106ca98a3b 100644 (file)
@@ -11,8 +11,6 @@
  *******************************************************************************/\r
 package org.simantics.diagram.elements;\r
 \r
-import gnu.trove.list.array.TIntArrayList;\r
-\r
 import java.awt.AlphaComposite;\r
 import java.awt.BasicStroke;\r
 import java.awt.Color;\r
@@ -42,6 +40,7 @@ import java.text.AttributedString;
 import java.util.ArrayList;\r
 import java.util.Arrays;\r
 import java.util.Hashtable;\r
+import java.util.List;\r
 \r
 import org.simantics.datatypes.literal.RGB;\r
 import org.simantics.db.layer0.variable.RVI;\r
@@ -62,15 +61,17 @@ import org.simantics.scenegraph.g2d.events.MouseEvent.MouseClickEvent;
 import org.simantics.scenegraph.g2d.events.MouseEvent.MouseDoubleClickedEvent;\r
 import org.simantics.scenegraph.g2d.events.MouseEvent.MouseDragBegin;\r
 import org.simantics.scenegraph.g2d.events.MouseEvent.MouseMovedEvent;\r
+import org.simantics.scenegraph.g2d.events.NodeEventHandler;\r
 import org.simantics.scenegraph.g2d.events.command.CommandEvent;\r
 import org.simantics.scenegraph.g2d.events.command.Commands;\r
-import org.simantics.scenegraph.g2d.events.NodeEventHandler;\r
 import org.simantics.scenegraph.utils.GeometryUtils;\r
 import org.simantics.scenegraph.utils.NodeUtil;\r
 import org.simantics.scl.runtime.function.Function1;\r
 import org.simantics.scl.runtime.function.Function2;\r
 import org.simantics.ui.colors.Colors;\r
 import org.simantics.ui.dnd.LocalObjectTransferable;\r
+import org.simantics.ui.dnd.MultiTransferable;\r
+import org.simantics.ui.dnd.PlaintextTransfer;\r
 import org.simantics.ui.fonts.Fonts;\r
 import org.simantics.utils.threads.AWTThread;\r
 \r
@@ -82,6 +83,8 @@ import com.lowagie.text.pdf.PdfFormField;
 import com.lowagie.text.pdf.PdfWriter;\r
 import com.lowagie.text.pdf.TextField;\r
 \r
+import gnu.trove.list.array.TIntArrayList;\r
+\r
 \r
 /**\r
  * TextNode which supports in-line editing.\r
@@ -1858,9 +1861,19 @@ public class TextNode extends G2DNode implements IDynamicSelectionPainterNode, L
         if (isHovering()\r
                 && (isControlDown(e) || isShiftDown(e))\r
                 && e.context instanceof NodeEventHandler\r
-                && dataRVI != null)\r
+                && (dataRVI != null || text != null))\r
         {\r
-            e.transferable = new LocalObjectTransferable(dataRVI);\r
+            List<Transferable> trs = new ArrayList<>(2);\r
+            if (dataRVI != null) {\r
+                trs.add(new LocalObjectTransferable(dataRVI));\r
+                trs.add(new PlaintextTransfer(dataRVI.toString()));\r
+            } else if (text != null && !text.isEmpty()) {\r
+                trs.add(new PlaintextTransfer(text));\r
+            }\r
+            if (!trs.isEmpty()) {\r
+                e.transferable = new MultiTransferable(trs);\r
+                return true;\r
+            }\r
         }\r
         return false;\r
     }\r
@@ -1930,7 +1943,7 @@ public class TextNode extends G2DNode implements IDynamicSelectionPainterNode, L
     @Override\r
     public int getEventMask() {\r
         return EventTypes.KeyPressedMask | EventTypes.MouseMovedMask | EventTypes.MouseButtonPressedMask\r
-                | EventTypes.MouseClickMask | EventTypes.CommandMask;\r
+                | EventTypes.MouseClickMask | EventTypes.MouseDragBeginMask | EventTypes.CommandMask;\r
     }\r
 \r
     private MouseEvent lastMouseEvent = null;\r