*******************************************************************************/\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
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
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
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
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
@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