Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- package master.detail.binding.test;
- import java.beans.PropertyChangeListener;
- import java.beans.PropertyChangeSupport;
- import org.eclipse.core.databinding.DataBindingContext;
- import org.eclipse.core.databinding.UpdateValueStrategy;
- import org.eclipse.core.databinding.beans.BeansObservables;
- import org.eclipse.core.databinding.observable.value.IValueChangeListener;
- import org.eclipse.core.databinding.observable.value.ValueChangeEvent;
- import org.eclipse.jface.databinding.swt.SWTObservables;
- import org.eclipse.jface.databinding.viewers.IViewerObservableValue;
- import org.eclipse.jface.databinding.viewers.ViewersObservables;
- import org.eclipse.jface.viewers.IStructuredContentProvider;
- import org.eclipse.jface.viewers.ITableLabelProvider;
- import org.eclipse.jface.viewers.LabelProvider;
- import org.eclipse.jface.viewers.TableViewer;
- import org.eclipse.jface.viewers.Viewer;
- import org.eclipse.swt.SWT;
- import org.eclipse.swt.graphics.Image;
- import org.eclipse.swt.layout.RowLayout;
- import org.eclipse.swt.widgets.Composite;
- import org.eclipse.swt.widgets.Label;
- import org.eclipse.ui.ISharedImages;
- import org.eclipse.ui.PlatformUI;
- import org.eclipse.ui.part.ViewPart;
- public class View extends ViewPart {
- class Model {
- PropertyChangeSupport changes = new PropertyChangeSupport(this);
- Model2 model2;
- public Model(Model2 model2) {
- this.model2 = model2;
- }
- public void addPropertyChangeListener(PropertyChangeListener listener) {
- changes.addPropertyChangeListener(listener);
- }
- public void addPropertyChangeListener(String propertyName,
- PropertyChangeListener listener) {
- changes.addPropertyChangeListener(propertyName, listener);
- }
- public void removePropertyChangeListener(PropertyChangeListener listener) {
- changes.removePropertyChangeListener(listener);
- }
- public void removePropertyChangeListener(String propertyName,
- PropertyChangeListener listener) {
- changes.removePropertyChangeListener(propertyName, listener);
- }
- public Model2 getModel2() {
- return model2;
- }
- public void setModel2(Model2 model2) {
- Model2 old = this.model2;
- this.model2 = model2;
- changes.firePropertyChange("model2", old, model2);
- }
- @Override
- public String toString() {
- return "model2: " + model2.getText();
- }
- }
- class Model2 {
- PropertyChangeSupport changes = new PropertyChangeSupport(this);
- String text;
- public Model2(String text) {
- this.text = text;
- }
- public void addPropertyChangeListener(PropertyChangeListener listener) {
- changes.addPropertyChangeListener(listener);
- }
- public void addPropertyChangeListener(String propertyName,
- PropertyChangeListener listener) {
- changes.addPropertyChangeListener(propertyName, listener);
- }
- public String getText() {
- return text;
- }
- public void removePropertyChangeListener(PropertyChangeListener listener) {
- changes.removePropertyChangeListener(listener);
- }
- public void removePropertyChangeListener(String propertyName,
- PropertyChangeListener listener) {
- changes.removePropertyChangeListener(propertyName, listener);
- }
- public void setText(String text) {
- String old = this.text;
- this.text = text;
- changes.firePropertyChange("text", old, text);
- }
- @Override
- public String toString() {
- return text;
- }
- }
- /**
- * The content provider class is responsible for providing objects to the
- * view. It can wrap existing objects in adapters or simply return objects
- * as-is. These objects may be sensitive to the current input of the view,
- * or ignore it and always show the same content (like Task List, for
- * example).
- */
- class ViewContentProvider implements IStructuredContentProvider {
- public void dispose() {
- }
- public Object[] getElements(Object parent) {
- if (parent instanceof Object[]) {
- return (Object[]) parent;
- }
- return new Object[0];
- }
- public void inputChanged(Viewer v, Object oldInput, Object newInput) {
- }
- }
- class ViewLabelProvider extends LabelProvider implements ITableLabelProvider {
- public Image getColumnImage(Object obj, int index) {
- return getImage(obj);
- }
- public String getColumnText(Object obj, int index) {
- return getText(obj);
- }
- public Image getImage(Object obj) {
- return PlatformUI.getWorkbench().getSharedImages()
- .getImage(ISharedImages.IMG_OBJ_ELEMENT);
- }
- }
- public static final String ID = "master.detail.binding.test.view";
- PropertyChangeSupport changes = new PropertyChangeSupport(this);
- String text;
- private Label selection;
- private TableViewer viewer;
- public void addPropertyChangeListener(PropertyChangeListener listener) {
- changes.addPropertyChangeListener(listener);
- }
- public void addPropertyChangeListener(String propertyName,
- PropertyChangeListener listener) {
- changes.addPropertyChangeListener(propertyName, listener);
- }
- /**
- * This is a callback that will allow us to create the viewer and initialize
- * it.
- */
- public void createPartControl(Composite parent) {
- viewer = new TableViewer(parent, SWT.MULTI | SWT.H_SCROLL | SWT.V_SCROLL);
- viewer.setContentProvider(new ViewContentProvider());
- viewer.setLabelProvider(new ViewLabelProvider());
- // Provide the input to the ContentProvider
- viewer.setInput(new Model[] { new Model(new Model2("One")),
- new Model(new Model2("Two")), new Model(new Model2("Three")) });
- selection = new Label(parent, SWT.NONE);
- DataBindingContext ctx = new DataBindingContext();
- IViewerObservableValue ssel = ViewersObservables
- .observeSinglePostSelection(viewer);
- ctx.bindValue(BeansObservables.observeDetailValue(ssel, "model2.text",
- String.class), BeansObservables.observeValue(this, "text"),
- new UpdateValueStrategy(UpdateValueStrategy.POLICY_UPDATE),
- new UpdateValueStrategy(UpdateValueStrategy.POLICY_UPDATE));
- ctx.bindValue(SWTObservables.observeText(selection),
- BeansObservables.observeDetailValue(ssel, "model2.text", String.class),
- new UpdateValueStrategy(UpdateValueStrategy.POLICY_NEVER),
- new UpdateValueStrategy(UpdateValueStrategy.POLICY_UPDATE));
- ssel.addValueChangeListener(new IValueChangeListener() {
- @Override
- public void handleValueChange(ValueChangeEvent event) {
- System.out.println(event.diff.getNewValue());
- }
- });
- }
- public void removePropertyChangeListener(PropertyChangeListener listener) {
- changes.removePropertyChangeListener(listener);
- }
- public void removePropertyChangeListener(String propertyName,
- PropertyChangeListener listener) {
- changes.removePropertyChangeListener(propertyName, listener);
- }
- /**
- * Passing the focus request to the viewer's control.
- */
- public void setFocus() {
- viewer.getControl().setFocus();
- }
- public String getText() {
- return text;
- }
- public void setText(String text) {
- String old = this.text;
- this.text = text;
- changes.firePropertyChange("text", old, text);
- System.out.println("setText(\"" + text + "\")");
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement