ref #7095 Style enhancements
authorPatrick Plitzner <p.plitzner@bgbm.org>
Fri, 26 Jan 2018 09:40:06 +0000 (10:40 +0100)
committerPatrick Plitzner <p.plitzner@bgbm.org>
Fri, 26 Jan 2018 09:40:06 +0000 (10:40 +0100)
eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/workingSet/matrix/CharacterMatrix.java

index ee69eba117846e437c74d5b39173415b02887ac3..7f5e2c8f4ede3f4bcb8a97780b07e8a1420868b7 100644 (file)
@@ -68,6 +68,7 @@ import org.eclipse.nebula.widgets.nattable.grid.layer.ColumnHeaderLayer;
 import org.eclipse.nebula.widgets.nattable.grid.layer.CornerLayer;
 import org.eclipse.nebula.widgets.nattable.grid.layer.DefaultRowHeaderDataLayer;
 import org.eclipse.nebula.widgets.nattable.grid.layer.GridLayer;
+import org.eclipse.nebula.widgets.nattable.grid.layer.config.DefaultRowStyleConfiguration;
 import org.eclipse.nebula.widgets.nattable.hideshow.ColumnHideShowLayer;
 import org.eclipse.nebula.widgets.nattable.hideshow.RowHideShowLayer;
 import org.eclipse.nebula.widgets.nattable.layer.CompositeLayer;
@@ -76,6 +77,8 @@ import org.eclipse.nebula.widgets.nattable.layer.ILayer;
 import org.eclipse.nebula.widgets.nattable.layer.ILayerListener;
 import org.eclipse.nebula.widgets.nattable.layer.cell.ColumnOverrideLabelAccumulator;
 import org.eclipse.nebula.widgets.nattable.layer.cell.ILayerCell;
+import org.eclipse.nebula.widgets.nattable.layer.config.DefaultColumnHeaderStyleConfiguration;
+import org.eclipse.nebula.widgets.nattable.layer.config.DefaultRowHeaderStyleConfiguration;
 import org.eclipse.nebula.widgets.nattable.layer.event.ILayerEvent;
 import org.eclipse.nebula.widgets.nattable.persistence.PersistenceHelper;
 import org.eclipse.nebula.widgets.nattable.persistence.command.DisplayPersistenceDialogCommand;
@@ -86,10 +89,17 @@ import org.eclipse.nebula.widgets.nattable.persistence.gui.PersistenceDialog;
 import org.eclipse.nebula.widgets.nattable.reorder.ColumnReorderLayer;
 import org.eclipse.nebula.widgets.nattable.reorder.RowReorderLayer;
 import org.eclipse.nebula.widgets.nattable.selection.SelectionLayer;
+import org.eclipse.nebula.widgets.nattable.selection.config.DefaultSelectionStyleConfiguration;
 import org.eclipse.nebula.widgets.nattable.selection.event.CellSelectionEvent;
 import org.eclipse.nebula.widgets.nattable.sort.SortHeaderLayer;
 import org.eclipse.nebula.widgets.nattable.sort.config.SingleClickSortConfiguration;
+import org.eclipse.nebula.widgets.nattable.style.BorderStyle;
+import org.eclipse.nebula.widgets.nattable.style.BorderStyle.LineStyleEnum;
+import org.eclipse.nebula.widgets.nattable.style.CellStyleAttributes;
 import org.eclipse.nebula.widgets.nattable.style.DisplayMode;
+import org.eclipse.nebula.widgets.nattable.style.HorizontalAlignmentEnum;
+import org.eclipse.nebula.widgets.nattable.style.Style;
+import org.eclipse.nebula.widgets.nattable.style.VerticalAlignmentEnum;
 import org.eclipse.nebula.widgets.nattable.summaryrow.FixedSummaryRowLayer;
 import org.eclipse.nebula.widgets.nattable.summaryrow.SummaryRowLayer;
 import org.eclipse.nebula.widgets.nattable.tree.ITreeRowModel;
@@ -97,11 +107,15 @@ import org.eclipse.nebula.widgets.nattable.tree.TreeLayer;
 import org.eclipse.nebula.widgets.nattable.tree.command.TreeCollapseAllCommand;
 import org.eclipse.nebula.widgets.nattable.tree.command.TreeExpandAllCommand;
 import org.eclipse.nebula.widgets.nattable.ui.menu.AbstractHeaderMenuConfiguration;
+import org.eclipse.nebula.widgets.nattable.ui.menu.HeaderMenuConfiguration;
 import org.eclipse.nebula.widgets.nattable.ui.menu.PopupMenuBuilder;
+import org.eclipse.nebula.widgets.nattable.util.GUIHelper;
 import org.eclipse.nebula.widgets.nattable.viewport.ViewportLayer;
 import org.eclipse.swt.SWT;
 import org.eclipse.swt.events.SelectionAdapter;
 import org.eclipse.swt.events.SelectionEvent;
+import org.eclipse.swt.graphics.Color;
+import org.eclipse.swt.graphics.FontData;
 import org.eclipse.swt.layout.GridData;
 import org.eclipse.swt.layout.GridLayout;
 import org.eclipse.swt.layout.RowLayout;
@@ -132,11 +146,13 @@ import eu.etaxonomy.taxeditor.editor.workingSet.matrix.categorical.CategoricalDa
 import eu.etaxonomy.taxeditor.editor.workingSet.matrix.quantitative.QuantitativeDataCellEditor;
 import eu.etaxonomy.taxeditor.editor.workingSet.matrix.quantitative.QuantitativeDataDisplayConverter;
 import eu.etaxonomy.taxeditor.editor.workingSet.matrix.supplementalInfo.SupplementalInfoDisplayConverter;
+import eu.etaxonomy.taxeditor.model.ColorResources;
 import eu.etaxonomy.taxeditor.model.DescriptionHelper;
 import eu.etaxonomy.taxeditor.model.IDirtyMarkable;
 import eu.etaxonomy.taxeditor.model.IPartContentHasDetails;
 import eu.etaxonomy.taxeditor.model.ImageResources;
 import eu.etaxonomy.taxeditor.model.MessagingUtils;
+import eu.etaxonomy.taxeditor.preference.Resources;
 import eu.etaxonomy.taxeditor.session.ICdmEntitySession;
 import eu.etaxonomy.taxeditor.session.ICdmEntitySessionEnabled;
 import eu.etaxonomy.taxeditor.store.CdmStore;
@@ -392,6 +408,51 @@ ICdmEntitySessionEnabled{
                 }
             }
         });
+
+        applyStyles();
+    }
+
+    private void applyStyles(){
+        // NOTE: Getting the colors and fonts from the GUIHelper ensures that
+        // they are disposed properly (required by SWT)
+        DefaultNatTableStyleConfiguration natTableConfiguration = new DefaultNatTableStyleConfiguration();
+        natTableConfiguration.bgColor = GUIHelper.getColor(249, 172, 7);
+        natTableConfiguration.fgColor = GUIHelper.getColor(30, 76, 19);
+        natTableConfiguration.hAlign = HorizontalAlignmentEnum.LEFT;
+        natTableConfiguration.vAlign = VerticalAlignmentEnum.TOP;
+
+        // Setup even odd row colors - row colors override the NatTable default
+        // colors
+        DefaultRowStyleConfiguration rowStyleConfiguration = new DefaultRowStyleConfiguration();
+        rowStyleConfiguration.oddRowBgColor = ColorResources.getColor(Resources.COLOR_LIST_ODD);
+        rowStyleConfiguration.evenRowBgColor = ColorResources.getColor(Resources.COLOR_LIST_EVEN);
+
+        // Setup selection styling
+        DefaultSelectionStyleConfiguration selectionStyle = new DefaultSelectionStyleConfiguration();
+//        selectionStyle.selectionFont = GUIHelper.getFont(new FontData("Verdana", 8, SWT.NORMAL));
+//        selectionStyle.selectionBgColor = GUIHelper.getColor(217, 232, 251);
+//        selectionStyle.selectionFgColor = GUIHelper.COLOR_BLACK;
+        selectionStyle.anchorBorderStyle = new BorderStyle(1, GUIHelper.COLOR_DARK_GRAY, LineStyleEnum.SOLID);
+//        selectionStyle.anchorBgColor = GUIHelper.getColor(65, 113, 43);
+        selectionStyle.selectedHeaderBgColor = GUIHelper.getColor(156, 209, 103);
+
+        // Add all style configurations to NatTable
+        natTable.addConfiguration(natTableConfiguration);
+        natTable.addConfiguration(rowStyleConfiguration);
+        natTable.addConfiguration(selectionStyle);
+
+        // Column/Row header style and custom painters
+        DefaultRowHeaderStyleConfiguration rowHeaderConfig = new DefaultRowHeaderStyleConfiguration();
+        Color rowColumnColor = GUIHelper.getColor(230, 255, 255);
+        rowHeaderConfig.bgColor = rowColumnColor;
+        natTable.addConfiguration(rowHeaderConfig);
+        DefaultColumnHeaderStyleConfiguration columnHeaderStyle = new DefaultColumnHeaderStyleConfiguration();
+        columnHeaderStyle.bgColor = rowColumnColor;
+        columnHeaderStyle.font = GUIHelper.getFont(new FontData("Verdana", 8, SWT.BOLD));
+        natTable.addConfiguration(columnHeaderStyle);
+
+        // Add popup menu - build your own popup menu using the PopupMenuBuilder
+        natTable.addConfiguration(new HeaderMenuConfiguration(natTable));
     }
 
     private void toggleTreeFlat(boolean isTree, Button btnToggleFlat, Button btnToggleTree, Button btnCollapseAll, Button btnExpandAll) {
@@ -611,6 +672,9 @@ ICdmEntitySessionEnabled{
             }
         });
 
+        Style cellStyle = new Style();
+        cellStyle.setAttributeValue(CellStyleAttributes.HORIZONTAL_ALIGNMENT, HorizontalAlignmentEnum.LEFT);
+
         // add custom configuration for data conversion and add column labels to viewport layer
         viewportLayer.addConfiguration(new AbstractRegistryConfiguration() {
             @Override
@@ -621,21 +685,41 @@ ICdmEntitySessionEnabled{
                         new SupplementalInfoDisplayConverter(),
                         DisplayMode.NORMAL,
                         TAXON_COLUMN);
+                configRegistry.registerConfigAttribute(
+                        CellConfigAttributes.CELL_STYLE,
+                        cellStyle,
+                        DisplayMode.NORMAL,
+                        TAXON_COLUMN);
                 configRegistry.registerConfigAttribute(
                         CellConfigAttributes.DISPLAY_CONVERTER,
                         new SupplementalInfoDisplayConverter(),
                         DisplayMode.NORMAL,
                         COLLECTOR_COLUMN);
+                configRegistry.registerConfigAttribute(
+                        CellConfigAttributes.CELL_STYLE,
+                        cellStyle,
+                        DisplayMode.NORMAL,
+                        COLLECTOR_COLUMN);
                 configRegistry.registerConfigAttribute(
                         CellConfigAttributes.DISPLAY_CONVERTER,
                         new SupplementalInfoDisplayConverter(),
                         DisplayMode.NORMAL,
                         IDENTIFIER_COLUMN);
+                configRegistry.registerConfigAttribute(
+                        CellConfigAttributes.CELL_STYLE,
+                        cellStyle,
+                        DisplayMode.NORMAL,
+                        IDENTIFIER_COLUMN);
                 configRegistry.registerConfigAttribute(
                         CellConfigAttributes.DISPLAY_CONVERTER,
                         new SupplementalInfoDisplayConverter(),
                         DisplayMode.NORMAL,
                         COUNTRY_COLUMN);
+                configRegistry.registerConfigAttribute(
+                        CellConfigAttributes.CELL_STYLE,
+                        cellStyle,
+                        DisplayMode.NORMAL,
+                        COUNTRY_COLUMN);
                 features.forEach(feature->registerColumnConfiguration(feature, configRegistry));
             }