Skip to main content


Eclipse Community Forums
Forum Search:

Search      Help    Register    Login    Home
Home » Eclipse Projects » JFace » Table viewer & cell editor & input change listner
Table viewer & cell editor & input change listner [message #527986] Sun, 18 April 2010 09:26
Andrew  is currently offline Andrew Friend
Messages: 43
Registered: December 2009
Member
Hello all,
I'm newbie to databinding.
I've got a table viewer with a cell editor.
I'd like to listen to changes of editable data in the viewer.
For example i need to calculate max and min value of viewer input after input changes with cell editor or send viewer input to other view if input has changed.
How can I do that?

class Data extends Model {
	List<DataValues> values = = new ArrayList<DataValues>();
	...

	public void setValues(List<SensorValue> values) {    
	    firePropertyChange("values", this.values, this.values = values);
	}
	...

}

class DataValues extends Model {
	private Float value;
	
	...

	public void setValue(Float value) {
	    firePropertyChange("value", this.value, this.value = value);
	}
	...
}


class Viewer extends ViewPart {
..

public WritableValue data = new WritableValue(null, Data.class);
..

public void createPartControl(Composite parent) {
	...
	bindingContext = new DataBindingContext();
	Table t = new Table(parent, SWT.NONE; 
	TableViewer viewer = new TableViewer(t);
	ObservableListContentProvider contentProvider = new ObservableListContentProvider();
    	viewer.setContentProvider(contentProvider);
	...
	IObservableList valuesOfData = MasterDetailObservables.detailList(data, BeanProperties.list(
    	  "values", DataValues.class).listFactory(), DataValues.class);
	
	TableViewerColumn columnValue = new TableViewerColumn(viewer, SWT.NONE);
	columnValue.setEditingSupport(new ValueEditingSupport(viewer, bindingContext));

	initLabelProvider(columnValue, "value", contentProvider);

	viewer.setInput(valuesOfData);
	initModel();

}

private initModel() {
	Data d = new Data();
	List<DataValues> dataList = new ArrayList<DataValues>();
	dataList.add(...);
	d.setValues(dataList);
	data.setValue(d);
}

private void initLabelProvider(final TableViewerColumn column, final String propertyName,
      ObservableListContentProvider contentProvider) {
	column.setLabelProvider(new ObservableMapCellLabelProvider(Properties.observeEach(contentProvider
      .getKnownElements(), BeanProperties.values(new String[] {propertyName}))) {
		...	
		 public void update(ViewerCell cell) {
        		super.update(cell);
			...
		}
		...	
	}
}

private class ValueEditingSupport extends ObservableValueEditingSupport {
  private CellEditor cellEditor;

  public ValueEditingSupport(ColumnViewer viewer, DataBindingContext dbc) {
    super(viewer, dbc);
    cellEditor = new TextCellEditor((Composite) viewer.getControl());
  }

  protected CellEditor getCellEditor(Object element) {
    return cellEditor;
  }

  protected IObservableValue doCreateCellEditorObservable(CellEditor cellEditor) {

    return SWTObservables.observeText(cellEditor.getControl(), SWT.Modify);
  }

  protected IObservableValue doCreateElementObservable(Object element, ViewerCell cell) {
    return BeansObservables.observeValue(element, "value");
  }
}

}
Previous Topic:Table viewer & cell editor & input change listner
Next Topic:TreeViewer refresh() collapse problem-- SWT
Goto Forum:
  


Current Time: Thu Apr 25 01:38:10 GMT 2024

Powered by FUDForum. Page generated in 0.03179 seconds
.:: Contact :: Home ::.

Powered by: FUDforum 3.0.2.
Copyright ©2001-2010 FUDforum Bulletin Board Software

Back to the top