use of org.eclipse.nebula.widgets.nattable.dataset.NumberValues in project nebula.widgets.nattable by eclipse.
the class _5124_SummaryRowPositionGridExample method createNumberValueList.
private List<NumberValues> createNumberValueList() {
List<NumberValues> result = new ArrayList<>();
for (int i = 0; i < 25; i++) {
NumberValues nv = new NumberValues();
nv.setColumnOneNumber(5);
nv.setColumnTwoNumber(4);
nv.setColumnThreeNumber(3);
nv.setColumnFourNumber(1);
nv.setColumnFiveNumber(1);
result.add(nv);
nv = new NumberValues();
nv.setColumnOneNumber(1);
nv.setColumnTwoNumber(1);
nv.setColumnThreeNumber(2);
nv.setColumnFourNumber(2);
nv.setColumnFiveNumber(3);
result.add(nv);
nv = new NumberValues();
nv.setColumnOneNumber(1);
nv.setColumnTwoNumber(2);
nv.setColumnThreeNumber(2);
nv.setColumnFourNumber(3);
nv.setColumnFiveNumber(3);
result.add(nv);
nv = new NumberValues();
nv.setColumnOneNumber(1);
nv.setColumnTwoNumber(2);
nv.setColumnThreeNumber(4);
nv.setColumnFourNumber(4);
nv.setColumnFiveNumber(3);
result.add(nv);
nv = new NumberValues();
nv.setColumnOneNumber(5);
nv.setColumnTwoNumber(4);
nv.setColumnThreeNumber(4);
nv.setColumnFourNumber(4);
nv.setColumnFiveNumber(7);
result.add(nv);
}
return result;
}
use of org.eclipse.nebula.widgets.nattable.dataset.NumberValues in project nebula.widgets.nattable by eclipse.
the class _5124_SummaryRowPositionGridExample method createExampleControl.
@Override
public Control createExampleControl(Composite parent) {
Composite panel = new Composite(parent, SWT.NONE);
GridLayout layout = new GridLayout();
layout.verticalSpacing = 20;
panel.setLayout(layout);
// property names of the NumberValues class
String[] propertyNames = { "columnOneNumber", "columnTwoNumber", "columnThreeNumber", "columnFourNumber", "columnFiveNumber" };
// mapping from property to label, needed for column header labels
Map<String, String> propertyToLabelMap = new HashMap<>();
propertyToLabelMap.put("columnOneNumber", "Column 1");
propertyToLabelMap.put("columnTwoNumber", "Column 2");
propertyToLabelMap.put("columnThreeNumber", "Column 3");
propertyToLabelMap.put("columnFourNumber", "Column 4");
propertyToLabelMap.put("columnFiveNumber", "Column 5");
IColumnPropertyAccessor<NumberValues> cpa = new ReflectiveColumnPropertyAccessor<>(propertyNames);
IDataProvider dataProvider = new ListDataProvider<>(createNumberValueList(), cpa);
ConfigRegistry configRegistry = new ConfigRegistry();
// Summary row on top
// The summary row is within the grid so it can be placed BETWEEN
// column header and body
// The body itself is a CompositeLayer with 1 column and 2 rows
// The first row is the SummaryRowLayer configured as standalone
// The second row is the body layer stack
// for correct rendering of the row header you should use the
// FixedSummaryRowHeaderLayer which is adding the correct labels and
// shows a special configurable label for the summary row
final SummaryRowGridLayer gridLayerWithSummary = new SummaryRowGridLayer(dataProvider, configRegistry, propertyNames, propertyToLabelMap, true);
NatTable natTable = new NatTable(panel, gridLayerWithSummary, false);
GridDataFactory.fillDefaults().grab(true, true).applyTo(natTable);
natTable.setConfigRegistry(configRegistry);
natTable.addConfiguration(new DefaultNatTableStyleConfiguration());
natTable.addConfiguration(new DebugMenuConfiguration(natTable));
natTable.configure();
// Summary row at bottom
// The grid doesn't contain a summary row
// Instead create a CompositeLayer 1 column 2 rows
// first row = GridLayer
// second row = FixedGridSummaryRowLayer
final SummaryRowGridLayer gridLayer = new SummaryRowGridLayer(dataProvider, configRegistry, propertyNames, propertyToLabelMap, false);
// since the summary row should stay at a fixed position we need to add
// a new composite row
// this is necessary as also the row header cell needs to be fixed
// create a standalone summary row
// for a grid this is the FixedGridSummaryRowLayer
FixedSummaryRowLayer summaryRowLayer = new FixedSummaryRowLayer(gridLayer.getBodyDataLayer(), gridLayer, configRegistry, false);
summaryRowLayer.addConfiguration(new ExampleSummaryRowGridConfiguration(gridLayer.getBodyDataLayer().getDataProvider()));
summaryRowLayer.setSummaryRowLabel("\u2211");
// create a composition that has the grid on top and the summary row on
// the bottom
CompositeLayer composite = new CompositeLayer(1, 2);
composite.setChildLayer("GRID", gridLayer, 0, 0);
composite.setChildLayer(SUMMARY_REGION, summaryRowLayer, 0, 1);
natTable = new NatTable(panel, composite, false);
GridDataFactory.fillDefaults().grab(true, true).applyTo(natTable);
// configure a painter that renders a line on top of the summary row
// this is necessary because the CompositeLayerPainter does not render
// lines on the top of a region
natTable.addOverlayPainter(new IOverlayPainter() {
@Override
public void paintOverlay(GC gc, ILayer layer) {
// render a line on top of the summary row
Color beforeColor = gc.getForeground();
gc.setForeground(GUIHelper.COLOR_GRAY);
int gridBorderY = gridLayer.getHeight() - 1;
gc.drawLine(0, gridBorderY, layer.getWidth() - 1, gridBorderY);
gc.setForeground(beforeColor);
}
});
natTable.setConfigRegistry(configRegistry);
natTable.addConfiguration(new DefaultNatTableStyleConfiguration());
natTable.addConfiguration(new DebugMenuConfiguration(natTable));
natTable.configure();
return panel;
}
use of org.eclipse.nebula.widgets.nattable.dataset.NumberValues in project nebula.widgets.nattable by eclipse.
the class _306_CalculatedFormulaDataExample method createNumberValues.
private NumberValues createNumberValues() {
NumberValues nv = new NumberValues();
// the value which should be used as 100%
nv.setColumnOneNumber(100);
// the value 1 for calculation
nv.setColumnTwoNumber(20);
// the value 2 for calculation
nv.setColumnThreeNumber(30);
// the NumberValues object
return nv;
}
use of org.eclipse.nebula.widgets.nattable.dataset.NumberValues in project nebula.widgets.nattable by eclipse.
the class CalculatingSummaryRowConfiguration method createNumberValues.
private NumberValues createNumberValues() {
NumberValues nv = new NumberValues();
// the value which should be used as 100%
nv.setColumnOneNumber(100);
// the value 1 for calculation
nv.setColumnTwoNumber(20);
// the value 2 for calculation
nv.setColumnThreeNumber(30);
// the NumberValues object
return nv;
}
use of org.eclipse.nebula.widgets.nattable.dataset.NumberValues in project nebula.widgets.nattable by eclipse.
the class _774_MultiExportExample method createExampleControl.
@Override
public Control createExampleControl(Composite parent) {
Composite panel = new Composite(parent, SWT.NONE);
GridLayout layout = new GridLayout();
layout.marginHeight = 0;
layout.marginWidth = 0;
panel.setLayout(layout);
GridDataFactory.fillDefaults().grab(true, true).applyTo(panel);
Composite gridPanel = new Composite(panel, SWT.NONE);
gridPanel.setLayout(new GridLayout());
GridDataFactory.fillDefaults().grab(true, true).applyTo(gridPanel);
Composite buttonPanel = new Composite(panel, SWT.NONE);
buttonPanel.setLayout(new GridLayout());
GridDataFactory.fillDefaults().grab(true, false).applyTo(buttonPanel);
// property names of the Person class
String[] propertyNames = { "firstName", "lastName", "gender", "married", "birthday" };
// mapping from property to label, needed for column header labels
Map<String, String> propertyToLabelMap = new HashMap<>();
propertyToLabelMap.put("firstName", "Firstname");
propertyToLabelMap.put("lastName", "Lastname");
propertyToLabelMap.put("gender", "Gender");
propertyToLabelMap.put("married", "Married");
propertyToLabelMap.put("birthday", "Birthday");
GridLayer grid = createGrid(propertyNames, propertyToLabelMap, PersonService.getPersons(5));
final NatTable natTable = new NatTable(gridPanel, grid, false);
// add labels to show that alignment configurations are also exported
// correctly
final ColumnOverrideLabelAccumulator columnLabelAccumulator = new ColumnOverrideLabelAccumulator(grid.getBodyLayer());
((AbstractLayer) grid.getBodyLayer()).setConfigLabelAccumulator(columnLabelAccumulator);
columnLabelAccumulator.registerColumnOverrides(0, COLUMN_ONE_LABEL);
columnLabelAccumulator.registerColumnOverrides(1, COLUMN_TWO_LABEL);
natTable.addConfiguration(new AbstractRegistryConfiguration() {
@Override
public void configureRegistry(IConfigRegistry configRegistry) {
Style style = new Style();
style.setAttributeValue(CellStyleAttributes.HORIZONTAL_ALIGNMENT, HorizontalAlignmentEnum.LEFT);
style.setAttributeValue(CellStyleAttributes.VERTICAL_ALIGNMENT, VerticalAlignmentEnum.TOP);
configRegistry.registerConfigAttribute(CellConfigAttributes.CELL_STYLE, style, DisplayMode.NORMAL, COLUMN_ONE_LABEL);
style = new Style();
style.setAttributeValue(CellStyleAttributes.HORIZONTAL_ALIGNMENT, HorizontalAlignmentEnum.RIGHT);
style.setAttributeValue(CellStyleAttributes.VERTICAL_ALIGNMENT, VerticalAlignmentEnum.BOTTOM);
configRegistry.registerConfigAttribute(CellConfigAttributes.CELL_STYLE, style, DisplayMode.NORMAL, COLUMN_TWO_LABEL);
}
});
// adding this configuration adds the styles and the painters to use
natTable.addConfiguration(new DefaultNatTableStyleConfiguration());
natTable.addConfiguration(new AbstractRegistryConfiguration() {
@Override
public void configureRegistry(IConfigRegistry configRegistry) {
configRegistry.registerConfigAttribute(ExportConfigAttributes.EXPORTER, new HSSFExcelExporter());
configRegistry.registerConfigAttribute(ExportConfigAttributes.DATE_FORMAT, "dd.MM.yyyy");
// register a custom formatter to the body of the grid
// you could also implement different formatter for different
// columns by using the label mechanism
configRegistry.registerConfigAttribute(ExportConfigAttributes.EXPORT_FORMATTER, new ExampleExportFormatter(), DisplayMode.NORMAL, GridRegion.BODY);
configRegistry.registerConfigAttribute(ExportConfigAttributes.EXPORT_FORMATTER, new IExportFormatter() {
@Override
public Object formatForExport(ILayerCell cell, IConfigRegistry configRegistry) {
// string for export
return cell.getDataValue();
}
}, DisplayMode.NORMAL, GridRegion.ROW_HEADER);
}
});
natTable.configure();
GridDataFactory.fillDefaults().grab(true, true).applyTo(natTable);
// property names of the NumberValues class
String[] numberPropertyNames = { "columnOneNumber", "columnTwoNumber", "columnThreeNumber", "columnFourNumber", "columnFiveNumber" };
// mapping from property to label, needed for column header labels
Map<String, String> numberPropertyToLabelMap = new HashMap<>();
numberPropertyToLabelMap.put("columnOneNumber", "Value One");
numberPropertyToLabelMap.put("columnTwoNumber", "Value Two");
numberPropertyToLabelMap.put("columnThreeNumber", "Value Three");
numberPropertyToLabelMap.put("columnFourNumber", "Value Four");
numberPropertyToLabelMap.put("columnFiveNumber", "Value Five");
List<NumberValues> valuesToShow = new ArrayList<>();
valuesToShow.add(createNumberValues());
valuesToShow.add(createNumberValues());
valuesToShow.add(createNumberValues());
valuesToShow.add(createNumberValues());
valuesToShow.add(createNumberValues());
final NatTable numberNatTable = new NatTable(gridPanel, createGrid(numberPropertyNames, numberPropertyToLabelMap, valuesToShow), false);
// adding this configuration adds the styles and the painters to use
numberNatTable.addConfiguration(new DefaultNatTableStyleConfiguration());
numberNatTable.addConfiguration(new AbstractRegistryConfiguration() {
@Override
public void configureRegistry(IConfigRegistry configRegistry) {
// register a custom formatter to the body of the grid
// you could also implement different formatter for different
// columns by using the label mechanism
configRegistry.registerConfigAttribute(ExportConfigAttributes.EXPORT_FORMATTER, new IExportFormatter() {
@Override
public Object formatForExport(ILayerCell cell, IConfigRegistry configRegistry) {
// default conversion to string for export
return cell.getDataValue();
}
}, DisplayMode.NORMAL, GridRegion.BODY);
configRegistry.registerConfigAttribute(ExportConfigAttributes.EXPORT_FORMATTER, new IExportFormatter() {
@Override
public Object formatForExport(ILayerCell cell, IConfigRegistry configRegistry) {
// default conversion to string for export
return cell.getDataValue();
}
}, DisplayMode.NORMAL, GridRegion.ROW_HEADER);
}
});
numberNatTable.configure();
GridDataFactory.fillDefaults().grab(true, true).applyTo(numberNatTable);
Button addColumnButton = new Button(buttonPanel, SWT.PUSH);
addColumnButton.setText("Export");
addColumnButton.addSelectionListener(new SelectionAdapter() {
@Override
public void widgetSelected(SelectionEvent e) {
// get the ILayerExporter that is registered for the persons
// table, otherwise the exporter registered there would have no
// effect. For multi table export the ILayerExporter specified
// in the method call is used always
ILayerExporter exporter = natTable.getConfigRegistry().getConfigAttribute(ExportConfigAttributes.EXPORTER, DisplayMode.NORMAL);
Map<String, NatTable> export = new HashMap<>();
export.put("Persons", natTable);
export.put("Numbers", numberNatTable);
new NatExporter(Display.getCurrent().getActiveShell()).exportMultipleNatTables(exporter, export);
}
});
return panel;
}
Aggregations