use of org.eclipse.nebula.widgets.nattable.examples.fixtures.ColumnStructureUpdatesExampleGridLayer 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;
}
Aggregations