Download
Getting Started
Members
Projects
Community
Marketplace
Events
Planet Eclipse
Newsletter
Videos
Participate
Report a Bug
Forums
Mailing Lists
Wiki
IRC
How to Contribute
Working Groups
Automotive
Internet of Things
LocationTech
Long-Term Support
PolarSys
Science
OpenMDM
More
Community
Marketplace
Events
Planet Eclipse
Newsletter
Videos
Participate
Report a Bug
Forums
Mailing Lists
Wiki
IRC
How to Contribute
Working Groups
Automotive
Internet of Things
LocationTech
Long-Term Support
PolarSys
Science
OpenMDM
Toggle navigation
Bugzilla – Attachment 125307 Details for
Bug 263511
[DataBinding] Editable TableViewer Validation Status Provider
Home
|
New
|
Browse
|
Search
|
[?]
|
Reports
|
Requests
|
Help
|
Log In
[x]
|
Terms of Use
|
Copyright Agent
[patch]
Updated snippet
TestApp.java (text/plain), 7.25 KB, created by
Matthew Hall
on 2009-02-10 15:52:24 EST
(
hide
)
Description:
Updated snippet
Filename:
MIME Type:
Creator:
Matthew Hall
Created:
2009-02-10 15:52:24 EST
Size:
7.25 KB
patch
obsolete
>package de.eiswind.paris.client.core.databinding.validation; > >import java.beans.PropertyChangeSupport; >import java.util.ArrayList; >import java.util.Collection; >import java.util.List; > >import org.eclipse.core.databinding.AggregateValidationStatus; >import org.eclipse.core.databinding.DataBindingContext; >import org.eclipse.core.databinding.beans.BeansObservables; >import org.eclipse.core.databinding.observable.ObservableTracker; >import org.eclipse.core.databinding.observable.Realm; >import org.eclipse.core.databinding.observable.list.WritableList; >import org.eclipse.core.databinding.observable.map.IObservableMap; >import org.eclipse.core.databinding.observable.value.IObservableValue; >import org.eclipse.core.databinding.validation.MultiValidator; >import org.eclipse.core.databinding.validation.ValidationStatus; >import org.eclipse.core.runtime.IStatus; >import org.eclipse.core.runtime.Status; >import org.eclipse.jface.databinding.swt.SWTObservables; >import org.eclipse.jface.databinding.swt.WidgetProperties; >import org.eclipse.jface.databinding.viewers.ObservableListContentProvider; >import org.eclipse.jface.databinding.viewers.ObservableMapLabelProvider; >import org.eclipse.jface.databinding.viewers.ObservableValueEditingSupport; >import org.eclipse.jface.viewers.CellEditor; >import org.eclipse.jface.viewers.ColumnViewer; >import org.eclipse.jface.viewers.TableViewer; >import org.eclipse.jface.viewers.TableViewerColumn; >import org.eclipse.jface.viewers.TextCellEditor; >import org.eclipse.jface.viewers.ViewerCell; >import org.eclipse.swt.SWT; >import org.eclipse.swt.layout.GridData; >import org.eclipse.swt.layout.GridLayout; >import org.eclipse.swt.widgets.Composite; >import org.eclipse.swt.widgets.Display; >import org.eclipse.swt.widgets.Label; >import org.eclipse.swt.widgets.Shell; >import org.eclipse.swt.widgets.Table; > >public class TestApp { > > private Table table; > protected Shell shell; > > private List<Bean> model = new ArrayList<Bean>(); > private TableViewer tableViewer; > private TableViewerColumn col; > private Label label; > > public class MyTableViewerValidator extends MultiValidator { > private TableViewer viewer; > private IObservableMap[] columns; > > public MyTableViewerValidator(TableViewer tableViewer, > IObservableMap[] cols) { > super(); > columns = cols; > viewer = tableViewer; > } > > @SuppressWarnings("unchecked") > protected IStatus validate() { > System.out.println("validateok"); > IStatus status = ValidationStatus.ok(); > for (IObservableMap map : columns) { > ObservableTracker.getterCalled(map); > } > > for (Object o : (Collection) viewer.getInput()) { > Bean bean2 = (Bean) o; > > if (bean2.getMsg() == null || bean2.getMsg().length() == 0) { > status = new Status(Status.ERROR, "mmm", "Must enter Text"); > } > > } > > return status; > } > } > > public class Bean { > private PropertyChangeSupport propertySupport = new PropertyChangeSupport( > this); > > private String msg; > > public String getMsg() { > return msg; > } > > public void setMsg(String msg) { > propertySupport.firePropertyChange("msg", this.msg, this.msg = msg); > > } > > public void addPropertyChangeListener( > java.beans.PropertyChangeListener listener) { > propertySupport.addPropertyChangeListener(listener); > } > > public void addPropertyChangeListener(String property, > java.beans.PropertyChangeListener listener) { > propertySupport.addPropertyChangeListener(property, listener); > } > > public void removePropertyChangeListener( > java.beans.PropertyChangeListener listener) { > propertySupport.removePropertyChangeListener(listener); > } > > public void removePropertyChangeListener(String property, > java.beans.PropertyChangeListener listener) { > propertySupport.removePropertyChangeListener(property, listener); > } > } > > public class MyInlineTextEditingSupport extends > ObservableValueEditingSupport { > private TextCellEditor cellEditor; > private String propertyName; > > public MyInlineTextEditingSupport(ColumnViewer typeCol, > TextCellEditor editor, DataBindingContext dbc, > String propertyName) { > super(typeCol, dbc); > this.cellEditor = editor; > this.propertyName = propertyName; > } > > 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, propertyName); > } > } > > public static void main(String[] args) { > Display display = Display.getDefault(); > Realm.runWithDefault(SWTObservables.getRealm(display), new Runnable() { > public void run() { > try { > TestApp window = new TestApp(); > window.open(); > } catch (Exception e) { > e.printStackTrace(); > } > } > }); > } > > public void open() { > final Display display = Display.getDefault(); > createModel(); > createContents(); > shell.open(); > shell.layout(); > while (!shell.isDisposed()) { > if (!display.readAndDispatch()) > display.sleep(); > } > } > > private void createModel() { > Bean b = new Bean(); > model.add(b); > > } > > protected void createContents() { > shell = new Shell(); > shell.setLayout(new GridLayout()); > shell.setSize(500, 375); > shell.setText("SWT Application"); > > label = new Label(shell, SWT.NONE); > label.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, false)); > label.setText("Label"); > > tableViewer = new TableViewer(shell, SWT.BORDER); > table = tableViewer.getTable(); > table.setLinesVisible(true); > table.setHeaderVisible(true); > table.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true)); > > col = new TableViewerColumn(tableViewer, SWT.NONE); > col.getColumn().setWidth(100); > initDataBindings(); > > // > } > > protected DataBindingContext initDataBindings() { > // > ObservableListContentProvider tableViewerContentProviderList = new ObservableListContentProvider(); > tableViewer.setContentProvider(tableViewerContentProviderList); > // > IObservableMap[] tableViewerLabelProviderMaps = BeansObservables > .observeMaps(tableViewerContentProviderList.getKnownElements(), > Bean.class, new String[] { "msg" }); > tableViewer.setLabelProvider(new ObservableMapLabelProvider( > tableViewerLabelProviderMaps)); > // > WritableList modelWritableList = new WritableList(model, Bean.class); > tableViewer.setInput(modelWritableList); > // > DataBindingContext bindingContext = new DataBindingContext(); > TextCellEditor infoValueEditor = new TextCellEditor( > (Composite) tableViewer.getControl()); > MyInlineTextEditingSupport textSupp = new MyInlineTextEditingSupport( > tableViewer, infoValueEditor, bindingContext, "msg"); > col.setEditingSupport(textSupp); > // > bindingContext.addValidationStatusProvider(new MyTableViewerValidator( > tableViewer, tableViewerLabelProviderMaps)); > > IObservableValue aggregateValidationStatus = new AggregateValidationStatus( > bindingContext, AggregateValidationStatus.MAX_SEVERITY); > bindingContext.bindValue(WidgetProperties.text().observe(label), > aggregateValidationStatus); > return bindingContext; > } > >}
You cannot view the attachment while viewing its details because your browser does not support IFRAMEs.
View the attachment on a separate page
.
View Attachment As Diff
View Attachment As Raw
Actions:
View
|
Diff
Attachments on
bug 263511
:
125158
| 125307 |
127077