X-Git-Url: http://secure.phpeclipse.com diff --git a/net.sourceforge.phpeclipse.ui/src/net/sourceforge/phpeclipse/ui/ExternalStorageDocumentProvider.java b/net.sourceforge.phpeclipse.ui/src/net/sourceforge/phpeclipse/ui/ExternalStorageDocumentProvider.java new file mode 100644 index 0000000..56c01ad --- /dev/null +++ b/net.sourceforge.phpeclipse.ui/src/net/sourceforge/phpeclipse/ui/ExternalStorageDocumentProvider.java @@ -0,0 +1,62 @@ +package net.sourceforge.phpeclipse.ui; + +import java.io.ByteArrayInputStream; +import java.io.IOException; +import java.io.InputStream; + +import net.sourceforge.phpeclipse.PHPeclipsePlugin; +import net.sourceforge.phpeclipse.builder.ExternalEditorInput; +import net.sourceforge.phpeclipse.builder.FileStorage; + +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.IDocument; +import org.eclipse.ui.editors.text.StorageDocumentProvider; + +/** + * @author ed + * @version 1.0, May 19, 2003 + */ +public class ExternalStorageDocumentProvider extends StorageDocumentProvider { + + /* + * (non-Javadoc) + * + * @see org.eclipse.ui.texteditor.AbstractDocumentProvider#doSaveDocument(org.eclipse.core.runtime.IProgressMonitor, + * java.lang.Object, org.eclipse.jface.text.IDocument, boolean) + */ + protected void doSaveDocument(IProgressMonitor monitor, Object element, + IDocument document, boolean overwrite) throws CoreException { + if (element instanceof ExternalEditorInput) { + ExternalEditorInput external = (ExternalEditorInput) element; + FileStorage storage = (FileStorage) external.getStorage(); + String encoding = getEncoding(element); + if (encoding == null) + encoding = getDefaultEncoding(); + try { + InputStream stream = new ByteArrayInputStream(document.get() + .getBytes(encoding)); + try { + // inform about the upcoming content change + fireElementStateChanging(element); + storage.setContents(stream, overwrite, true, monitor); + } catch (RuntimeException e) { + // inform about failure + fireElementStateChangeFailed(element); + throw e; + } + } catch (IOException e) { + IStatus s = new Status(IStatus.ERROR, + PHPeclipsePlugin.PLUGIN_ID, IStatus.OK, e.getMessage(), + e); + throw new CoreException(s); + } + + } else { + super.doSaveDocument(monitor, element, document, overwrite); + } + } + +}