]> gerrit.simantics Code Review - simantics/platform.git/blobdiff - bundles/org.simantics.scl.ui/src/org/simantics/scl/ui/editor/MatchingBracketsEditStrategy.java
Migrated source code from Simantics SVN
[simantics/platform.git] / bundles / org.simantics.scl.ui / src / org / simantics / scl / ui / editor / MatchingBracketsEditStrategy.java
diff --git a/bundles/org.simantics.scl.ui/src/org/simantics/scl/ui/editor/MatchingBracketsEditStrategy.java b/bundles/org.simantics.scl.ui/src/org/simantics/scl/ui/editor/MatchingBracketsEditStrategy.java
new file mode 100755 (executable)
index 0000000..5a9b12e
--- /dev/null
@@ -0,0 +1,39 @@
+package org.simantics.scl.ui.editor;\r
+\r
+import org.eclipse.jface.text.DocumentCommand;\r
+import org.eclipse.jface.text.IAutoEditStrategy;\r
+import org.eclipse.jface.text.IDocument;\r
+\r
+public class MatchingBracketsEditStrategy implements IAutoEditStrategy {\r
+\r
+       char justAddedClosingBracket = (char)0;\r
+       \r
+       public void customizeDocumentCommand(IDocument d, DocumentCommand c) {\r
+               if (c.length == 0 && c.text != null) {\r
+                       if(c.text.equals("(")) {\r
+                               c.text = "()";\r
+                               justAddedClosingBracket = ')';\r
+                       }\r
+                       else if(c.text.equals("[")) {\r
+                               c.text = "[]";\r
+                               justAddedClosingBracket = ']';\r
+                       }\r
+                       else {\r
+                               if(c.text.length() == 1 && c.text.charAt(0) == justAddedClosingBracket) {\r
+                                       c.text = "";\r
+                                       c.shiftsCaret = false;\r
+                                       c.caretOffset = c.offset+1;\r
+                               }\r
+                               justAddedClosingBracket = (char)0;\r
+                               return;\r
+                       }\r
+                       \r
+                       // Puts caret between brackets\r
+                       c.caretOffset = c.offset+1;\r
+                       c.shiftsCaret = false;                  \r
+               }               \r
+               else\r
+                       justAddedClosingBracket = (char)0;\r
+       }\r
+       \r
+}\r