Refactory: Remove UI from core plugin.
[phpeclipse.git] / net.sourceforge.phpeclipse / src / net / sourceforge / phpdt / internal / corext / textmanipulation / TextBufferFactory.java
diff --git a/net.sourceforge.phpeclipse/src/net/sourceforge/phpdt/internal/corext/textmanipulation/TextBufferFactory.java b/net.sourceforge.phpeclipse/src/net/sourceforge/phpdt/internal/corext/textmanipulation/TextBufferFactory.java
deleted file mode 100644 (file)
index b78e53a..0000000
+++ /dev/null
@@ -1,204 +0,0 @@
-/*
- * (c) Copyright IBM Corp. 2000, 2001.
- * All Rights Reserved.
- */
-package net.sourceforge.phpdt.internal.corext.textmanipulation;
-
-import java.io.BufferedInputStream;
-import java.io.IOException;
-import java.io.InputStream;
-import java.io.InputStreamReader;
-import java.util.HashMap;
-import java.util.Map;
-
-import net.sourceforge.phpdt.internal.corext.util.IOCloser;
-import net.sourceforge.phpdt.internal.ui.PHPStatusConstants;
-import net.sourceforge.phpeclipse.PHPeclipsePlugin;
-
-import org.eclipse.core.resources.IFile;
-import org.eclipse.core.resources.IWorkspaceRunnable;
-import org.eclipse.core.resources.ResourcesPlugin;
-import org.eclipse.core.runtime.CoreException;
-import org.eclipse.core.runtime.IProgressMonitor;
-import org.eclipse.core.runtime.IStatus;
-import org.eclipse.core.runtime.Status;
-import org.eclipse.jface.text.Document;
-import org.eclipse.jface.text.IDocument;
-import org.eclipse.jface.text.source.IAnnotationModel;
-import org.eclipse.jface.util.Assert;
-import org.eclipse.ui.part.FileEditorInput;
-import org.eclipse.ui.texteditor.IDocumentProvider;
-
-/* package */class TextBufferFactory {
-
-       private IDocumentProvider fDocumentProvider;
-
-       private Map fFileValueMap;
-
-       private Map fBufferValueMap;
-
-       private static class Value {
-               TextBuffer buffer;
-
-               FileEditorInput input;
-
-               IDocument document;
-
-               IAnnotationModel annotationModel;
-
-               int references;
-
-               public Value(TextBuffer b, FileEditorInput i, IDocument d,
-                               IAnnotationModel m) {
-                       buffer = b;
-                       input = i;
-                       document = d;
-                       annotationModel = m;
-               }
-       }
-
-       public TextBufferFactory() {
-               // XXX http://dev.eclipse.org/bugs/show_bug.cgi?id=5170
-               // Need way to map a file to a document without knowing any kind of
-               // document provider.
-               this(PHPeclipsePlugin.getDefault().getCompilationUnitDocumentProvider());
-       }
-
-       public TextBufferFactory(IDocumentProvider provider) {
-               fDocumentProvider = provider;
-               Assert.isNotNull(fDocumentProvider);
-               fFileValueMap = new HashMap(5);
-               fBufferValueMap = new HashMap(5);
-       }
-
-       public TextBuffer acquire(IFile file) throws CoreException {
-               FileEditorInput input = new FileEditorInput(file);
-
-               Value value = (Value) fFileValueMap.get(input);
-               if (value != null) {
-                       value.references++;
-                       return value.buffer;
-               }
-
-               fDocumentProvider.connect(input);
-               IDocument document = fDocumentProvider.getDocument(input);
-               IAnnotationModel annotationModel = fDocumentProvider
-                               .getAnnotationModel(input);
-               annotationModel.connect(document);
-               value = new Value(new TextBuffer(document), input, document,
-                               annotationModel);
-               fFileValueMap.put(input, value);
-               fBufferValueMap.put(value.buffer, value);
-               value.references++;
-               return value.buffer;
-       }
-
-       public void release(TextBuffer buffer) {
-               final Value value = (Value) fBufferValueMap.get(buffer);
-               if (value == null)
-                       return;
-
-               value.references--;
-               if (value.references == 0) {
-                       buffer.release();
-                       value.annotationModel.disconnect(value.document);
-                       fDocumentProvider.disconnect(value.input);
-                       fFileValueMap.remove(value.input);
-                       fBufferValueMap.remove(buffer);
-               }
-       }
-
-       public void commitChanges(TextBuffer buffer, boolean force,
-                       IProgressMonitor pm) throws CoreException {
-               final Value value = (Value) fBufferValueMap.get(buffer);
-               if (value == null)
-                       return;
-
-               boolean save = force || fDocumentProvider.mustSaveDocument(value.input);
-               if (save) {
-                       IWorkspaceRunnable action = new IWorkspaceRunnable() {
-                               public void run(IProgressMonitor pm) throws CoreException {
-                                       fDocumentProvider.aboutToChange(value.input);
-                                       fDocumentProvider.saveDocument(pm, value.input,
-                                                       value.document, true);
-                               }
-                       };
-                       try {
-                               ResourcesPlugin.getWorkspace().run(action, pm);
-                       } finally {
-                               fDocumentProvider.changed(value.input);
-                       }
-               }
-       }
-
-       public TextBuffer create(IFile file) throws CoreException {
-               FileEditorInput input = new FileEditorInput(file);
-               IDocument document = fDocumentProvider.getDocument(input);
-               if (document != null) {
-                       return new TextBuffer(new Document(document.get()));
-               } else {
-                       return createFromFile(file);
-               }
-       }
-
-       private TextBuffer createFromFile(IFile file) throws CoreException {
-               IDocument document;
-               // Fix for http://dev.eclipse.org/bugs/show_bug.cgi?id=19319
-               InputStream stream = file.getContents();
-               InputStreamReader in = null;
-               try {
-                       document = new Document();
-                       in = new InputStreamReader(new BufferedInputStream(stream),
-                                       ResourcesPlugin.getEncoding());
-                       StringBuffer buffer = new StringBuffer();
-                       char[] readBuffer = new char[2048];
-                       int n = in.read(readBuffer);
-                       while (n > 0) {
-                               buffer.append(readBuffer, 0, n);
-                               n = in.read(readBuffer);
-                       }
-                       document.set(buffer.toString());
-                       return new TextBuffer(document);
-               } catch (IOException x) {
-                       IStatus s = new Status(IStatus.ERROR, PHPeclipsePlugin
-                                       .getPluginId(), PHPStatusConstants.INTERNAL_ERROR, x
-                                       .getMessage(), x);
-                       throw new CoreException(s);
-               } finally {
-                       IOCloser.perform(in, stream);
-               }
-       }
-
-       public TextBuffer create(String content) {
-               return new TextBuffer(new Document(content));
-       }
-
-       public void save(TextBuffer buffer, IProgressMonitor pm)
-                       throws CoreException {
-               Value value = (Value) fBufferValueMap.get(buffer);
-               if (value == null)
-                       throwNotManaged();
-               fDocumentProvider.saveDocument(pm, value.input, value.document, true);
-       }
-
-       public void aboutToChange(TextBuffer buffer) throws CoreException {
-               Value value = (Value) fBufferValueMap.get(buffer);
-               if (value == null)
-                       throwNotManaged();
-               fDocumentProvider.aboutToChange(value.input);
-       }
-
-       public void changed(TextBuffer buffer) throws CoreException {
-               Value value = (Value) fBufferValueMap.get(buffer);
-               if (value == null)
-                       throwNotManaged();
-               fDocumentProvider.changed(value.input);
-       }
-
-       private void throwNotManaged() throws CoreException {
-               IStatus s = new Status(IStatus.ERROR, PHPeclipsePlugin.getPluginId(),
-                               PHPStatusConstants.INTERNAL_ERROR, TextManipulationMessages
-                                               .getString("TextBufferFactory.bufferNotManaged"), null); //$NON-NLS-1$
-               throw new CoreException(s);
-       }
-}