/**
*
*/
package org.javabuilders.swt.samples;
import java.beans.PropertyChangeEvent;
import java.beans.PropertyChangeListener;
import java.beans.PropertyChangeSupport;
import java.io.BufferedInputStream;
import java.io.BufferedReader;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.Reader;
import org.eclipse.core.databinding.observable.Realm;
import org.eclipse.jface.databinding.swt.SWTObservables;
import org.eclipse.swt.SWT;
import org.eclipse.swt.events.SelectionEvent;
import org.eclipse.swt.events.SelectionListener;
import org.eclipse.swt.graphics.Font;
import org.eclipse.swt.widgets.Display;
import org.eclipse.swt.widgets.Event;
import org.eclipse.swt.widgets.Listener;
import org.eclipse.swt.widgets.Menu;
import org.eclipse.swt.widgets.MenuItem;
import org.eclipse.swt.widgets.MessageBox;
import org.eclipse.swt.widgets.Shell;
import org.eclipse.swt.widgets.TabItem;
import org.eclipse.swt.widgets.Text;
import org.javabuilders.BuildResult;
import org.javabuilders.annotations.DoInBackground;
import org.javabuilders.event.BackgroundEvent;
import org.javabuilders.swt.SwtJavaBuilder;
/**
* @author Jacek Furmankiewcz
*
*/
public class SWTSamplesShell {
private Shell shell;
private MenuItem saveMenu;
private String yaml;
private Text source;
private WidgetComposite widgets;
private SashComposite sash;
private PropertyChangeSupport changeSupport = new PropertyChangeSupport(this);
private BuildResult result = SwtJavaBuilder.build(this);
private SWTSamplesShell() throws Exception {
InputStream stream = SWTSamplesShell.class.getResourceAsStream(this.getClass().getSimpleName() + ".yaml");
BufferedReader in = new BufferedReader(new InputStreamReader(stream));
StringBuilder builder = new StringBuilder();
String line = in.readLine();
while (line != null) {
builder.append(line).append("\n");
line = in.readLine();
}
setYaml(builder.toString());
}
public void addPropertyChangeListener(String propertyName,
PropertyChangeListener listener) {
changeSupport.addPropertyChangeListener(propertyName, listener);
}
public void removePropertyChangeListener(String propertyName,
PropertyChangeListener listener) {
changeSupport.removePropertyChangeListener(propertyName, listener);
}
@DoInBackground
private void save(BackgroundEvent evt) {
evt.setProgressMessage("Saving some data from SWT on a background thread....");
try {
Thread.sleep(5000);
} catch (InterruptedException e) {}
}
public void setYaml(String yaml) {
String old = this.yaml;
this.yaml = yaml;
changeSupport.firePropertyChange("yaml",old, yaml);
}
public String getYaml() {
return yaml;
}
/**
* @param args
*/
public static void main(String[] args) {
try {
final Display display = Display.getDefault();
Realm.runWithDefault(SWTObservables.getRealm(display), new Runnable() {
public void run() {
try {
Shell shell = new SWTSamplesShell().shell;
shell.open();
while (!shell.isDisposed())
if (!display.readAndDispatch())
display.sleep();
display.dispose();
} catch (Exception e) {
e.printStackTrace();
}
}
});
} catch (Exception e) {
e.printStackTrace();
}
}
}