--- /dev/null
+/*
+ * Created on 06.09.2003
+ *
+ */
+package net.sourceforge.phpeclipse.builder;
+
+import java.io.ByteArrayInputStream;
+import java.io.IOException;
+import java.io.InputStream;
+
+import net.sourceforge.phpeclipse.PHPeclipsePlugin;
+
+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);
+ }
+ }
+
+}
+