use of org.eclipse.nebula.widgets.nattable.config.ConfigRegistry in project nebula.widgets.nattable by eclipse.
the class ColumnStructureUpdatesGridExample method createExampleControl.
/**
* NOTE - Glazed {@link EventList} class is thread ready but not thread
* safe.
*/
@Override
public Control createExampleControl(Composite parent) {
EventList<PricingDataBean> eventList = GlazedLists.eventList(PricingDataBeanGenerator.getData(10));
this.rowObjectsGlazedList = GlazedLists.threadSafeList(eventList);
Map<String, String> propertyToLabelMap = populateColHeaderPropertiesToLabelsMap();
String[] propertyNames = propertyToLabelMap.keySet().toArray(ArrayUtil.STRING_TYPE_ARRAY);
ConfigRegistry configRegistry = new ConfigRegistry();
final ColumnStructureUpdatesExampleGridLayer<PricingDataBean> glazedListsGridLayer = new ColumnStructureUpdatesExampleGridLayer<>(this.rowObjectsGlazedList, propertyNames, propertyToLabelMap, configRegistry, true);
final NatTable natTable = new NatTable(parent, glazedListsGridLayer, false);
natTable.addConfiguration(new DefaultNatTableStyleConfiguration());
natTable.setConfigRegistry(configRegistry);
natTable.getConfigRegistry().registerConfigAttribute(EditConfigAttributes.CELL_EDITABLE_RULE, IEditableRule.ALWAYS_EDITABLE, DisplayMode.EDIT, "ODD_BODY");
natTable.getConfigRegistry().registerConfigAttribute(EditConfigAttributes.CELL_EDITABLE_RULE, IEditableRule.ALWAYS_EDITABLE, DisplayMode.EDIT, "EVEN_BODY");
natTable.configure();
glazedListsGridLayer.bodyDataProvider.setColumnCount(2);
Composite composite = new Composite(parent, SWT.NONE);
composite.setLayout(new GridLayout(2, false));
Button button = new Button(composite, SWT.PUSH);
button.setText("Clear list, add 6 items, Change column count");
button.addSelectionListener(new SelectionListener() {
@Override
public void widgetDefaultSelected(SelectionEvent e) {
}
@Override
public void widgetSelected(SelectionEvent e) {
ColumnStructureUpdatesGridExample.this.rowObjectsGlazedList.getReadWriteLock().writeLock().lock();
try {
ColumnStructureUpdatesGridExample.this.rowObjectsGlazedList.clear();
ColumnStructureUpdatesGridExample.this.rowObjectsGlazedList.add(new PricingDataBean());
glazedListsGridLayer.bodyDataProvider.setColumnCount(8);
ColumnStructureUpdatesGridExample.this.rowObjectsGlazedList.add(new PricingDataBean());
ColumnStructureUpdatesGridExample.this.rowObjectsGlazedList.add(new PricingDataBean());
ColumnStructureUpdatesGridExample.this.rowObjectsGlazedList.add(new PricingDataBean());
ColumnStructureUpdatesGridExample.this.rowObjectsGlazedList.add(new PricingDataBean());
ColumnStructureUpdatesGridExample.this.rowObjectsGlazedList.add(new PricingDataBean());
ColumnStructureUpdatesGridExample.this.rowObjectsGlazedList.add(new PricingDataBean());
ColumnStructureUpdatesGridExample.this.rowObjectsGlazedList.add(new PricingDataBean());
ColumnStructureUpdatesGridExample.this.rowObjectsGlazedList.add(new PricingDataBean());
ColumnStructureUpdatesGridExample.this.rowObjectsGlazedList.add(new PricingDataBean());
} finally {
ColumnStructureUpdatesGridExample.this.rowObjectsGlazedList.getReadWriteLock().writeLock().unlock();
}
}
});
return natTable;
}
use of org.eclipse.nebula.widgets.nattable.config.ConfigRegistry in project nebula.widgets.nattable by eclipse.
the class Real_time_data_updates method createExampleControl.
/**
* @see GlazedListsGridLayer to see the required stack setup. Basically the
* {@link DataLayer} needs to be wrapped up with a
* {@link GlazedListsEventLayer} and the backing list needs to be an
* {@link EventList}
*/
@Override
public Control createExampleControl(Composite parent) {
this.eventList = GlazedLists.eventList(RowDataListFixture.getList(this.defaultDatasetSize));
ConfigRegistry configRegistry = new ConfigRegistry();
GlazedListsGridLayer<RowDataFixture> glazedListsGridLayer = new GlazedListsGridLayer<>(this.eventList, RowDataListFixture.getPropertyNames(), RowDataListFixture.getPropertyToLabelMap(), configRegistry);
this.nattable = new NatTable(parent, glazedListsGridLayer, false);
this.nattable.setConfigRegistry(configRegistry);
this.nattable.addConfiguration(new DefaultNatTableStyleConfiguration());
this.nattable.addConfiguration(new SingleClickSortConfiguration());
SelectionLayer selectionLayer = glazedListsGridLayer.getBodyLayerStack().getSelectionLayer();
ListDataProvider<RowDataFixture> bodyDataProvider = glazedListsGridLayer.getBodyDataProvider();
// Select complete rows
RowOnlySelectionConfiguration<RowDataFixture> selectionConfig = new RowOnlySelectionConfiguration<>();
selectionLayer.addConfiguration(selectionConfig);
this.nattable.addConfiguration(new RowOnlySelectionBindings());
// Preserve selection on updates and sort
selectionLayer.setSelectionModel(new RowSelectionModel<>(selectionLayer, bodyDataProvider, new IRowIdAccessor<RowDataFixture>() {
@Override
public Serializable getRowId(RowDataFixture rowObject) {
return rowObject.getSecurity_id();
}
}));
this.nattable.configure();
// Layout widgets
parent.setLayout(new GridLayout(1, true));
this.nattable.setLayoutData(new GridData(GridData.FILL, GridData.FILL, true, true));
setupTextArea(parent);
setupButtons(parent);
return this.nattable;
}
Aggregations