blob: 78c997b8dae93707901e17542216298c2f1082a4 [file] [log] [blame]
///*******************************************************************************
// * Copyright (c) 2006, 2007 IBM Corporation and others.
// * All rights reserved. This program and the accompanying materials
// * are made available under the terms of the Eclipse Public License v1.0
// * which accompanies this distribution, and is available at
// * http://www.eclipse.org/legal/epl-v10.html
// *
// * Contributors:
// * IBM Corporation - initial API and implementation
// *******************************************************************************/
//
//package org.eclipse.ui.tests.manual;
//
//import java.beans.PropertyChangeListener;
//import java.beans.PropertyChangeSupport;
//
//import org.eclipse.core.databinding.DataBindingContext;
//import org.eclipse.core.databinding.beans.BeansObservables;
//import org.eclipse.core.databinding.observable.Realm;
//import org.eclipse.core.databinding.observable.value.IObservableValue;
//import org.eclipse.core.runtime.Assert;
//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.core.runtime.SubMonitor;
//import org.eclipse.jface.databinding.swt.SWTObservables;
//import org.eclipse.jface.dialogs.MessageDialog;
//import org.eclipse.jface.layout.GridDataFactory;
//import org.eclipse.jface.layout.GridLayoutFactory;
//import org.eclipse.jface.resource.ImageDescriptor;
//import org.eclipse.jface.window.IShellProvider;
//import org.eclipse.swt.SWT;
//import org.eclipse.swt.events.DisposeEvent;
//import org.eclipse.swt.events.DisposeListener;
//import org.eclipse.swt.widgets.Button;
//import org.eclipse.swt.widgets.Composite;
//import org.eclipse.swt.widgets.Group;
//import org.eclipse.swt.widgets.Label;
//import org.eclipse.swt.widgets.Text;
//import org.eclipse.ui.IEditorInput;
//import org.eclipse.ui.IEditorSite;
//import org.eclipse.ui.IFileEditorInput;
//import org.eclipse.ui.ISaveablePart;
//import org.eclipse.ui.ISaveablesSource;
//import org.eclipse.ui.PartInitException;
//import org.eclipse.ui.PlatformUI;
//import org.eclipse.ui.Saveable;
//import org.eclipse.ui.internal.WorkbenchMessages;
//import org.eclipse.ui.internal.WorkbenchPlugin;
//import org.eclipse.ui.part.EditorPart;
//import org.eclipse.ui.progress.IJobRunnable;
//
///**
// * @since 3.3
// *
// */
//public class TestBackgroundSaveEditor extends EditorPart implements
// ISaveablesSource {
//
// public class MySaveable extends Saveable {
//
// PropertyChangeSupport changeSupport = new PropertyChangeSupport(this);
//
// private boolean dirty;
//
// public void doSave(IProgressMonitor monitor) throws CoreException {
// SubMonitor subMonitor = SubMonitor.convert(monitor, 2);
// IJobRunnable runnable = doSave(subMonitor.newChild(1), getSite());
// if (runnable!=null) {
// runnable.run(subMonitor.newChild(1));
// }
// monitor.done();
// }
//
// public IJobRunnable doSave(IProgressMonitor monitor,
// IShellProvider shellProvider) throws CoreException {
// monitor.beginTask("Saving in the foreground",
// data.foregroundSaveTime);
// data.setOutput("");
// for (int i = 0; i < data.foregroundSaveTime; i++) {
// if (monitor.isCanceled()) {
// return null;
// }
// try {
// Thread.sleep(1000);
// } catch (InterruptedException e) {
// Thread.currentThread().interrupt();
// }
// data.setOutput(data.getInput().substring(0,
// Math.min(i, data.getInput().length())));
// monitor.worked(1);
// }
// if (data.throwExceptionInForeground) {
// throw new CoreException(new Status(IStatus.ERROR,
// "org.eclipse.ui.tests",
// "Saving in the foreground failed"));
// }
// monitor.done();
// if (!data.saveInBackground) {
// data.setOutput(data.getInput());
// setDirty(false);
// return null;
// }
// IJobRunnable result = new IJobRunnable() {
// public IStatus run(IProgressMonitor monitor) {
// monitor.beginTask("Saving in the background",
// data.backgroundSaveTime);
// for (int i = 0; i < data.backgroundSaveTime; i++) {
// if (monitor.isCanceled()) {
// return Status.CANCEL_STATUS;
// }
// try {
// Thread.sleep(1000);
// } catch (InterruptedException e) {
// Thread.currentThread().interrupt();
// }
// data.setOutput(data.getInput().substring(
// 0,
// Math.min(i + data.foregroundSaveTime, data
// .getInput().length())));
// monitor.worked(1);
// }
// if (data.throwExceptionInBackground) {
// return new Status(IStatus.ERROR,
// "org.eclipse.ui.tests",
// "Saving in the background failed");
// }
// data.setOutput(data.getInput());
// setDirty(false);
// monitor.done();
// return Status.OK_STATUS;
// }
// };
// return result;
// }
//
// public boolean equals(Object object) {
// return this == object;
// }
//
// public ImageDescriptor getImageDescriptor() {
// return input.getImageDescriptor();
// }
//
// public String getName() {
// return input.getName();
// }
//
// public String getToolTipText() {
// return input.getToolTipText();
// }
//
// public int hashCode() {
// return System.identityHashCode(this);
// }
//
// public boolean isDirty() {
// return dirty;
// }
//
// public void setDirty(boolean dirty) {
// firePropertyChange("dirty", new Boolean(this.dirty), new Boolean(
// this.dirty = dirty));
// getSite().getShell().getDisplay().syncExec(new Runnable(){
// public void run() {
// TestBackgroundSaveEditor.this
// .firePropertyChange(ISaveablePart.PROP_DIRTY);
// }});
// }
//
// public void addPropertyChangeListener(String propertyName,
// PropertyChangeListener listener) {
// changeSupport.addPropertyChangeListener(propertyName, listener);
// }
//
// void firePropertyChange(String propertyName, Object oldValue,
// Object newValue) {
// changeSupport.firePropertyChange(propertyName, oldValue, newValue);
// }
//
// public void removePropertyChangeListener(String propertyName,
// PropertyChangeListener listener) {
// changeSupport.removePropertyChangeListener(propertyName, listener);
// }
// }
//
// private MySaveable mySaveable;
// private Text inputText;
// private IEditorInput input;
//
// public TestBackgroundSaveEditor() {
// mySaveable = new MySaveable();
// }
//
// public void createPartControl(Composite parent) {
// Realm realm = SWTObservables.getRealm(parent.getDisplay());
// final DataBindingContext dbc = new DataBindingContext(realm);
// parent.addDisposeListener(new DisposeListener() {
// public void widgetDisposed(DisposeEvent e) {
// dbc.dispose();
// }
// });
//
// final IObservableValue inputObservable = BeansObservables.observeValue(
// realm, data, "input");
// final IObservableValue outputObservable = BeansObservables
// .observeValue(realm, data, "output");
//
// createInputGroup(parent, dbc, inputObservable);
// createOptionsGroup(parent, realm, dbc);
// createOutputGroup(parent, dbc, outputObservable);
//
// GridLayoutFactory.swtDefaults().numColumns(3).equalWidth(true)
// .generateLayout(parent);
// }
//
// private void createOutputGroup(Composite parent,
// final DataBindingContext dbc,
// final IObservableValue outputObservable) {
// Group outputGroup = new Group(parent, SWT.NONE);
// outputGroup.setText("Output");
// Text outputText = new Text(outputGroup, SWT.BORDER | SWT.READ_ONLY
// | SWT.MULTI);
// GridDataFactory.fillDefaults().grab(true, true).applyTo(outputText);
// dbc.bindValue(SWTObservables.observeText(outputText, SWT.NONE),
// outputObservable, null, null);
// GridLayoutFactory.swtDefaults().generateLayout(outputGroup);
// }
//
// private void createOptionsGroup(Composite parent, Realm realm,
// final DataBindingContext dbc) {
// Group optionsGroup = new Group(parent, SWT.NONE);
// optionsGroup.setText("Options");
//
// Button dirtyButton = new Button(optionsGroup, SWT.CHECK);
// new Label(optionsGroup, SWT.NONE).setText("Editor is dirty");
// IObservableValue dirtyObservable = BeansObservables.observeValue(realm,
// mySaveable, "dirty");
// dbc.bindValue(SWTObservables.observeSelection(dirtyButton),
// dirtyObservable, null, null);
// // IObservableValue inputAndOutputDiffer = new ComputedValue(realm) {
// // protected Object calculate() {
// // return new Boolean(!Util.equals(inputObservable.getValue(),
// // outputObservable.getValue()));
// // }
// // };
// // dbc.bindValue(dirtyObservable, inputAndOutputDiffer, null);
//
// Button saveInBackgroundButton = new Button(optionsGroup, SWT.CHECK);
// new Label(optionsGroup, SWT.NONE)
// .setText("Do part of the save in the background");
// dbc.bindValue(SWTObservables.observeSelection(saveInBackgroundButton),
// BeansObservables.observeValue(realm, data, "saveInBackground"),
// null, null);
//
// Button foregroundExceptionButton = new Button(optionsGroup, SWT.CHECK);
// new Label(optionsGroup, SWT.NONE)
// .setText("Throw exception while saving in the foreground");
// dbc.bindValue(SWTObservables
// .observeSelection(foregroundExceptionButton), BeansObservables
// .observeValue(realm, data, "throwExceptionInForeground"), null, null);
//
// Button backgroundExceptionButton = new Button(optionsGroup, SWT.CHECK);
// new Label(optionsGroup, SWT.NONE)
// .setText("Throw exception while saving in the background");
// dbc.bindValue(SWTObservables
// .observeSelection(backgroundExceptionButton), BeansObservables
// .observeValue(realm, data, "throwExceptionInBackground"), null, null);
//
// new Label(optionsGroup, SWT.NONE).setText("Foreground save time:");
// Text optionsForegroundTime = new Text(optionsGroup, SWT.BORDER);
// dbc.bindValue(SWTObservables.observeText(optionsForegroundTime,
// SWT.Modify), BeansObservables.observeValue(realm, data,
// "foregroundSaveTime"), null, null);
//
// new Label(optionsGroup, SWT.NONE).setText("Background save time:");
// Text optionsBackgroundTime = new Text(optionsGroup, SWT.BORDER);
// dbc.bindValue(SWTObservables.observeText(optionsBackgroundTime,
// SWT.Modify), BeansObservables.observeValue(realm, data,
// "backgroundSaveTime"), null, null);
//
// GridLayoutFactory.swtDefaults().numColumns(2).generateLayout(
// optionsGroup);
// }
//
// private void createInputGroup(Composite parent,
// final DataBindingContext dbc, final IObservableValue inputObservable) {
// Group inputGroup = new Group(parent, SWT.NONE);
// inputGroup.setText("Input");
//
// inputText = new Text(inputGroup, SWT.BORDER | SWT.MULTI);
// dbc.bindValue(SWTObservables.observeText(inputText, SWT.Modify),
// inputObservable, null, null);
//
// GridLayoutFactory.swtDefaults().generateLayout(inputGroup);
// }
//
// public void doSave(IProgressMonitor monitor) {
// try {
// mySaveable.doSave(monitor);
// } catch (CoreException e) {
// String title = "Save failed";
// WorkbenchPlugin.log(title, new Status(IStatus.WARNING,
// PlatformUI.PLUGIN_ID, 0, title, e));
// MessageDialog.openError(getSite().getShell(),
// WorkbenchMessages.Error, title + ':' + e.getMessage());
// }
// }
//
// public void doSaveAs() {
// Assert.isTrue(false, "Should not be called");
// }
//
// public void init(IEditorSite site, IEditorInput input)
// throws PartInitException {
// if (!(input instanceof IFileEditorInput))
// throw new PartInitException(
// "Invalid Input: Must be IFileEditorInput");
// setSite(site);
// setInput(input);
// this.input = input;
// }
//
// public boolean isDirty() {
// return mySaveable.isDirty();
// }
//
// public boolean isSaveAsAllowed() {
// return false;
// }
//
// public void setFocus() {
// inputText.setFocus();
// }
//
// public static class Data {
// PropertyChangeSupport changeSupport = new PropertyChangeSupport(this);
// public String input = "";
// public String output = "";
// public String buffer;
// public boolean saveInBackground;
// public boolean throwExceptionInForeground;
// public boolean throwExceptionInBackground;
// public int foregroundSaveTime;
// public int backgroundSaveTime;
//
// public String getOutput() {
// return output;
// }
//
// public void setOutput(String output) {
// firePropertyChange("output", this.output, this.output = output);
// }
//
// public void addPropertyChangeListener(String propertyName,
// PropertyChangeListener listener) {
// changeSupport.addPropertyChangeListener(propertyName, listener);
// }
//
// void firePropertyChange(String propertyName, Object oldValue,
// Object newValue) {
// changeSupport.firePropertyChange(propertyName, oldValue, newValue);
// }
//
// public void removePropertyChangeListener(String propertyName,
// PropertyChangeListener listener) {
// changeSupport.removePropertyChangeListener(propertyName, listener);
// }
//
// /**
// * @return Returns the input.
// */
// public String getInput() {
// return input;
// }
//
// /**
// * @param input
// * The input to set.
// */
// public void setInput(String input) {
// this.input = input;
// }
//
// /**
// * @return Returns the buffer.
// */
// public String getBuffer() {
// return buffer;
// }
//
// /**
// * @param buffer
// * The buffer to set.
// */
// public void setBuffer(String buffer) {
// this.buffer = buffer;
// }
//
// /**
// * @return Returns the saveInBackground.
// */
// public boolean isSaveInBackground() {
// return saveInBackground;
// }
//
// /**
// * @param saveInBackground
// * The saveInBackground to set.
// */
// public void setSaveInBackground(boolean saveInBackground) {
// this.saveInBackground = saveInBackground;
// }
//
// /**
// * @return Returns the throwExceptionInForeground.
// */
// public boolean isThrowExceptionInForeground() {
// return throwExceptionInForeground;
// }
//
// /**
// * @param throwExceptionInForeground
// * The throwExceptionInForeground to set.
// */
// public void setThrowExceptionInForeground(
// boolean throwExceptionInForeground) {
// this.throwExceptionInForeground = throwExceptionInForeground;
// }
//
// /**
// * @return Returns the throwExceptionInBackground.
// */
// public boolean isThrowExceptionInBackground() {
// return throwExceptionInBackground;
// }
//
// /**
// * @param throwExceptionInBackground
// * The throwExceptionInBackground to set.
// */
// public void setThrowExceptionInBackground(
// boolean throwExceptionInBackground) {
// this.throwExceptionInBackground = throwExceptionInBackground;
// }
//
// /**
// * @return Returns the foregroundSaveTime.
// */
// public int getForegroundSaveTime() {
// return foregroundSaveTime;
// }
//
// /**
// * @param foregroundSaveTime
// * The foregroundSaveTime to set.
// */
// public void setForegroundSaveTime(int foregroundSaveTime) {
// this.foregroundSaveTime = foregroundSaveTime;
// }
//
// /**
// * @return Returns the backgroundSaveTime.
// */
// public int getBackgroundSaveTime() {
// return backgroundSaveTime;
// }
//
// /**
// * @param backgroundSaveTime
// * The backgroundSaveTime to set.
// */
// public void setBackgroundSaveTime(int backgroundSaveTime) {
// this.backgroundSaveTime = backgroundSaveTime;
// }
// }
//
// private Data data = new Data();
//
// public Saveable[] getActiveSaveables() {
// return new Saveable[] { mySaveable };
// }
//
// public Saveable[] getSaveables() {
// return new Saveable[] { mySaveable };
// }
//
//}