Skip to main content
summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorChristoph Caks2016-08-26 12:48:44 +0000
committerChristoph Caks2016-08-26 12:54:15 +0000
commit8b9e09148076ef1d49a8857994eea82e3d5ca9a1 (patch)
tree2089da6f2fc13137d79973b9caec6ca3d6081a92
parent0d3b5dbce156dbad17687e532ab1a6b48ddcac4e (diff)
downloadorg.eclipse.efxclipse-8b9e09148076ef1d49a8857994eea82e3d5ca9a1.tar.gz
org.eclipse.efxclipse-8b9e09148076ef1d49a8857994eea82e3d5ca9a1.tar.xz
org.eclipse.efxclipse-8b9e09148076ef1d49a8857994eea82e3d5ca9a1.zip
refs #17
-rw-r--r--bundles/runtime/org.eclipse.fx.ui.controls/src/org/eclipse/fx/ui/controls/styledtext/skin/StyledTextSkin.java39
1 files changed, 39 insertions, 0 deletions
diff --git a/bundles/runtime/org.eclipse.fx.ui.controls/src/org/eclipse/fx/ui/controls/styledtext/skin/StyledTextSkin.java b/bundles/runtime/org.eclipse.fx.ui.controls/src/org/eclipse/fx/ui/controls/styledtext/skin/StyledTextSkin.java
index aacb245f5..c2e13b5d0 100644
--- a/bundles/runtime/org.eclipse.fx.ui.controls/src/org/eclipse/fx/ui/controls/styledtext/skin/StyledTextSkin.java
+++ b/bundles/runtime/org.eclipse.fx.ui.controls/src/org/eclipse/fx/ui/controls/styledtext/skin/StyledTextSkin.java
@@ -28,6 +28,7 @@ import org.eclipse.fx.ui.controls.styledtext.StyledTextArea.LineLocation;
import org.eclipse.fx.ui.controls.styledtext.StyledTextContent.TextChangeListener;
import org.eclipse.fx.ui.controls.styledtext.TextChangedEvent;
import org.eclipse.fx.ui.controls.styledtext.TextChangingEvent;
+import org.eclipse.fx.ui.controls.styledtext.TextSelection;
import org.eclipse.fx.ui.controls.styledtext.behavior.StyledTextBehavior;
import org.eclipse.fx.ui.controls.styledtext.internal.ContentView;
import org.eclipse.fx.ui.controls.styledtext.internal.FXBindUtil;
@@ -64,7 +65,9 @@ import javafx.scene.Node;
import javafx.scene.control.SkinBase;
import javafx.scene.control.TextInputDialog;
import javafx.scene.input.ContextMenuEvent;
+import javafx.scene.input.DataFormat;
import javafx.scene.input.MouseEvent;
+import javafx.scene.input.TransferMode;
import javafx.scene.layout.HBox;
import javafx.scene.layout.Priority;
import javafx.scene.layout.Region;
@@ -417,6 +420,42 @@ public class StyledTextSkin extends SkinBase<StyledTextArea> {
});
this.content.lineHeightProperty().bind(getSkinnable().fixedLineHeightProperty());
+
+ this.content.setOnDragOver(e -> {
+ Point2D coords = new Point2D(e.getX(), e.getY());
+ Optional<Integer> lineIndex = content.getLineIndex(coords);
+
+ if (lineIndex.isPresent()) {
+ if (lineIndex.get() != -1) {
+ e.acceptTransferModes(TransferMode.ANY);
+ updateInsertionMarkerIndex(lineIndex.get());
+ }
+ }
+ else {
+ updateInsertionMarkerIndex(-1);
+ }
+
+ e.consume();
+ });
+
+ this.content.setOnDragDropped(e -> {
+
+ if (e.getDragboard().hasContent(DataFormat.PLAIN_TEXT)) {
+
+ String insert = e.getDragboard().getString();
+
+ Point2D coords = new Point2D(e.getX(), e.getY());
+ Optional<Integer> lineIndex = content.getLineIndex(coords);
+ if (lineIndex.isPresent() && lineIndex.get() != -1) {
+ getSkinnable().getContent().replaceTextRange(lineIndex.get(), 0, insert);
+ getSkinnable().setCaretOffset(lineIndex.get() + insert.length());
+ getSkinnable().setSelection(new TextSelection(lineIndex.get(), insert.length()));
+ updateInsertionMarkerIndex(-1);
+ e.setDropCompleted(true);
+ }
+ }
+ e.consume();
+ });
}
public Optional<TextNode> findTextNode(Point2D screenLocation) {

Back to the top