refactory: added UI removed from core plugin.
[phpeclipse.git] / net.sourceforge.phpeclipse.ui / src / net / sourceforge / phpdt / internal / ui / text / java / JavaFormattingStrategy.java
diff --git a/net.sourceforge.phpeclipse.ui/src/net/sourceforge/phpdt/internal/ui/text/java/JavaFormattingStrategy.java b/net.sourceforge.phpeclipse.ui/src/net/sourceforge/phpdt/internal/ui/text/java/JavaFormattingStrategy.java
new file mode 100644 (file)
index 0000000..0fd345d
--- /dev/null
@@ -0,0 +1,57 @@
+/*
+ * (c) Copyright IBM Corp. 2000, 2001. All Rights Reserved.
+ */
+package net.sourceforge.phpdt.internal.ui.text.java;
+
+import net.sourceforge.phpdt.core.ICodeFormatter;
+import net.sourceforge.phpdt.core.ToolFactory;
+import net.sourceforge.phpdt.internal.corext.codemanipulation.StubUtility;
+import net.sourceforge.phpdt.internal.corext.util.Strings;
+import net.sourceforge.phpdt.internal.ui.preferences.CodeFormatterPreferencePage;
+
+import org.eclipse.jface.text.IDocument;
+import org.eclipse.jface.text.formatter.IFormattingStrategy;
+import org.eclipse.jface.text.source.ISourceViewer;
+
+public class JavaFormattingStrategy implements IFormattingStrategy {
+
+       private String fInitialIndentation;
+
+       private ISourceViewer fViewer;
+
+       public JavaFormattingStrategy(ISourceViewer viewer) {
+               fViewer = viewer;
+       }
+
+       /**
+        * @see IFormattingStrategy#formatterStarts(String)
+        */
+       public void formatterStarts(String initialIndentation) {
+               fInitialIndentation = initialIndentation;
+       }
+
+       /**
+        * @see IFormattingStrategy#formatterStops()
+        */
+       public void formatterStops() {
+       }
+
+       /**
+        * @see IFormattingStrategy#format(String, boolean, String, int[])
+        */
+       public String format(String content, boolean isLineStart,
+                       String indentation, int[] positions) {
+               ICodeFormatter formatter = ToolFactory.createCodeFormatter();
+
+               IDocument doc = fViewer.getDocument();
+               String lineDelimiter = StubUtility.getLineDelimiterFor(doc);
+
+               int indent = 0;
+               if (fInitialIndentation != null) {
+                       indent = Strings.computeIndent(fInitialIndentation,
+                                       CodeFormatterPreferencePage.getTabSize());
+               }
+
+               return formatter.format(content, indent, positions, lineDelimiter);
+       }
+}
\ No newline at end of file