Search in sources :

Example 6 with NumberValues

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;
}
Also used : ArrayList(java.util.ArrayList) NumberValues(org.eclipse.nebula.widgets.nattable.dataset.NumberValues)

Example 7 with NumberValues

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;
}
Also used : ListDataProvider(org.eclipse.nebula.widgets.nattable.data.ListDataProvider) Composite(org.eclipse.swt.widgets.Composite) HashMap(java.util.HashMap) IOverlayPainter(org.eclipse.nebula.widgets.nattable.painter.IOverlayPainter) ILayer(org.eclipse.nebula.widgets.nattable.layer.ILayer) Color(org.eclipse.swt.graphics.Color) IDataProvider(org.eclipse.nebula.widgets.nattable.data.IDataProvider) CompositeLayer(org.eclipse.nebula.widgets.nattable.layer.CompositeLayer) NumberValues(org.eclipse.nebula.widgets.nattable.dataset.NumberValues) FixedSummaryRowLayer(org.eclipse.nebula.widgets.nattable.summaryrow.FixedSummaryRowLayer) ReflectiveColumnPropertyAccessor(org.eclipse.nebula.widgets.nattable.data.ReflectiveColumnPropertyAccessor) ConfigRegistry(org.eclipse.nebula.widgets.nattable.config.ConfigRegistry) IConfigRegistry(org.eclipse.nebula.widgets.nattable.config.IConfigRegistry) GridLayout(org.eclipse.swt.layout.GridLayout) DefaultNatTableStyleConfiguration(org.eclipse.nebula.widgets.nattable.config.DefaultNatTableStyleConfiguration) NatTable(org.eclipse.nebula.widgets.nattable.NatTable) DebugMenuConfiguration(org.eclipse.nebula.widgets.nattable.ui.menu.DebugMenuConfiguration) GC(org.eclipse.swt.graphics.GC)

Example 8 with NumberValues

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;
}
Also used : NumberValues(org.eclipse.nebula.widgets.nattable.dataset.NumberValues)

Example 9 with NumberValues

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;
}
Also used : NumberValues(org.eclipse.nebula.widgets.nattable.dataset.NumberValues)

Example 10 with NumberValues

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;
}
Also used : AbstractLayer(org.eclipse.nebula.widgets.nattable.layer.AbstractLayer) ILayerExporter(org.eclipse.nebula.widgets.nattable.export.ILayerExporter) HashMap(java.util.HashMap) AbstractRegistryConfiguration(org.eclipse.nebula.widgets.nattable.config.AbstractRegistryConfiguration) ArrayList(java.util.ArrayList) NatExporter(org.eclipse.nebula.widgets.nattable.export.NatExporter) GridLayout(org.eclipse.swt.layout.GridLayout) Button(org.eclipse.swt.widgets.Button) DefaultNatTableStyleConfiguration(org.eclipse.nebula.widgets.nattable.config.DefaultNatTableStyleConfiguration) SelectionEvent(org.eclipse.swt.events.SelectionEvent) Style(org.eclipse.nebula.widgets.nattable.style.Style) NatTable(org.eclipse.nebula.widgets.nattable.NatTable) ColumnOverrideLabelAccumulator(org.eclipse.nebula.widgets.nattable.layer.cell.ColumnOverrideLabelAccumulator) Composite(org.eclipse.swt.widgets.Composite) SelectionAdapter(org.eclipse.swt.events.SelectionAdapter) ILayerCell(org.eclipse.nebula.widgets.nattable.layer.cell.ILayerCell) NumberValues(org.eclipse.nebula.widgets.nattable.dataset.NumberValues) IConfigRegistry(org.eclipse.nebula.widgets.nattable.config.IConfigRegistry) IExportFormatter(org.eclipse.nebula.widgets.nattable.export.IExportFormatter) GridLayer(org.eclipse.nebula.widgets.nattable.grid.layer.GridLayer) HSSFExcelExporter(org.eclipse.nebula.widgets.nattable.extension.poi.HSSFExcelExporter) Map(java.util.Map) HashMap(java.util.HashMap)

Aggregations

NumberValues (org.eclipse.nebula.widgets.nattable.dataset.NumberValues)22 ArrayList (java.util.ArrayList)10 NatTable (org.eclipse.nebula.widgets.nattable.NatTable)6 DefaultNatTableStyleConfiguration (org.eclipse.nebula.widgets.nattable.config.DefaultNatTableStyleConfiguration)6 IConfigRegistry (org.eclipse.nebula.widgets.nattable.config.IConfigRegistry)5 IDataProvider (org.eclipse.nebula.widgets.nattable.data.IDataProvider)5 ListDataProvider (org.eclipse.nebula.widgets.nattable.data.ListDataProvider)5 ReflectiveColumnPropertyAccessor (org.eclipse.nebula.widgets.nattable.data.ReflectiveColumnPropertyAccessor)5 ConfigRegistry (org.eclipse.nebula.widgets.nattable.config.ConfigRegistry)4 HashMap (java.util.HashMap)3 ViewportLayer (org.eclipse.nebula.widgets.nattable.viewport.ViewportLayer)3 GridLayout (org.eclipse.swt.layout.GridLayout)3 Composite (org.eclipse.swt.widgets.Composite)3 CompositeLayer (org.eclipse.nebula.widgets.nattable.layer.CompositeLayer)2 DataLayer (org.eclipse.nebula.widgets.nattable.layer.DataLayer)2 FixedSummaryRowLayer (org.eclipse.nebula.widgets.nattable.summaryrow.FixedSummaryRowLayer)2 Map (java.util.Map)1 AbstractRegistryConfiguration (org.eclipse.nebula.widgets.nattable.config.AbstractRegistryConfiguration)1 PositionCoordinate (org.eclipse.nebula.widgets.nattable.coordinate.PositionCoordinate)1 AutomaticSpanningDataProvider (org.eclipse.nebula.widgets.nattable.data.AutomaticSpanningDataProvider)1