ref #7502 Show boolean properties in checkboxes
authorPatrick Plitzner <p.plitzner@bgbm.org>
Fri, 5 Oct 2018 10:27:18 +0000 (12:27 +0200)
committerPatrick Plitzner <p.plitzner@bgbm.org>
Fri, 5 Oct 2018 10:27:33 +0000 (12:27 +0200)
eu.etaxonomy.taxeditor.bulkeditor/src/main/java/eu/etaxonomy/taxeditor/bulkeditor/e4/BulkEditorConfigLabelAccumulator.java
eu.etaxonomy.taxeditor.bulkeditor/src/main/java/eu/etaxonomy/taxeditor/bulkeditor/e4/BulkEditorE4Composite.java
eu.etaxonomy.taxeditor.bulkeditor/src/main/java/eu/etaxonomy/taxeditor/bulkeditor/input/AbstractBulkEditorInput.java
eu.etaxonomy.taxeditor.bulkeditor/src/main/java/eu/etaxonomy/taxeditor/bulkeditor/input/AgentEditorInput.java
eu.etaxonomy.taxeditor.bulkeditor/src/main/java/eu/etaxonomy/taxeditor/bulkeditor/input/NameEditorInput.java
eu.etaxonomy.taxeditor.bulkeditor/src/main/java/eu/etaxonomy/taxeditor/bulkeditor/input/OccurrenceEditorInput.java
eu.etaxonomy.taxeditor.bulkeditor/src/main/java/eu/etaxonomy/taxeditor/bulkeditor/input/ReferenceEditorInput.java
eu.etaxonomy.taxeditor.bulkeditor/src/main/java/eu/etaxonomy/taxeditor/bulkeditor/input/TaxonEditorInput.java

index 798d4b2d11e15aa7a15dfa739c7683bd83a62f7c..923ea903b92c140a8e0c68009369b89be3b5b786 100644 (file)
@@ -10,6 +10,7 @@ package eu.etaxonomy.taxeditor.bulkeditor.e4;
 
 import org.eclipse.nebula.widgets.nattable.NatTable;
 import org.eclipse.nebula.widgets.nattable.data.ListDataProvider;
+import org.eclipse.nebula.widgets.nattable.grid.data.DefaultColumnHeaderDataProvider;
 import org.eclipse.nebula.widgets.nattable.layer.LabelStack;
 import org.eclipse.nebula.widgets.nattable.layer.cell.IConfigLabelAccumulator;
 
@@ -22,14 +23,19 @@ import eu.etaxonomy.taxeditor.bulkeditor.input.AbstractBulkEditorInput;
  *
  */
 public class BulkEditorConfigLabelAccumulator implements IConfigLabelAccumulator {
+
+    public static final String BOOLEAN_COLUMN = "boolean_column";
+
     private ListDataProvider<CdmBase> dataProvider;
     private AbstractBulkEditorInput input;
     private NatTable natTable;
+    private DefaultColumnHeaderDataProvider colHeaderDataProvider;
 
     public BulkEditorConfigLabelAccumulator(NatTable natTable, ListDataProvider<CdmBase> dataProvider,
-            AbstractBulkEditorInput input) {
+            DefaultColumnHeaderDataProvider colHeaderDataProvider, AbstractBulkEditorInput input) {
         super();
         this.dataProvider = dataProvider;
+        this.colHeaderDataProvider = colHeaderDataProvider;
         this.input = input;
         this.natTable = natTable;
     }
@@ -40,6 +46,9 @@ public class BulkEditorConfigLabelAccumulator implements IConfigLabelAccumulator
         if(rowPosition<0){
             return;
         }
+        if(input.isBooleanProperty(colHeaderDataProvider.getColumnHeaderLabel(columnPosition))){
+            configLabels.addLabel(BOOLEAN_COLUMN);
+        }
         CdmBase rowObject = dataProvider.getRowObject(rowPosition);
         if(input.getMergeCandidates().contains(rowObject)){
             configLabels.addLabel(BulkEditorE4Composite.LABEL_CANDIDATE);
index 70feb9b620982785d222338dfbb19d74b7f96b68..b23b9834349ba0e6a7f4cb299fe2e6de5bf6103a 100644 (file)
@@ -30,12 +30,14 @@ import org.eclipse.nebula.widgets.nattable.command.VisualRefreshCommand;
 import org.eclipse.nebula.widgets.nattable.command.VisualRefreshCommandHandler;
 import org.eclipse.nebula.widgets.nattable.config.AbstractRegistryConfiguration;
 import org.eclipse.nebula.widgets.nattable.config.AbstractUiBindingConfiguration;
+import org.eclipse.nebula.widgets.nattable.config.CellConfigAttributes;
 import org.eclipse.nebula.widgets.nattable.config.ConfigRegistry;
 import org.eclipse.nebula.widgets.nattable.config.DefaultNatTableStyleConfiguration;
 import org.eclipse.nebula.widgets.nattable.config.IConfigRegistry;
 import org.eclipse.nebula.widgets.nattable.config.IEditableRule;
 import org.eclipse.nebula.widgets.nattable.data.IRowIdAccessor;
 import org.eclipse.nebula.widgets.nattable.data.ListDataProvider;
+import org.eclipse.nebula.widgets.nattable.data.convert.DefaultBooleanDisplayConverter;
 import org.eclipse.nebula.widgets.nattable.edit.EditConfigAttributes;
 import org.eclipse.nebula.widgets.nattable.edit.action.MouseEditAction;
 import org.eclipse.nebula.widgets.nattable.edit.config.DefaultEditConfiguration;
@@ -53,6 +55,7 @@ import org.eclipse.nebula.widgets.nattable.grid.layer.RowHeaderLayer;
 import org.eclipse.nebula.widgets.nattable.layer.AbstractLayer;
 import org.eclipse.nebula.widgets.nattable.layer.DataLayer;
 import org.eclipse.nebula.widgets.nattable.layer.stack.DefaultBodyLayerStack;
+import org.eclipse.nebula.widgets.nattable.painter.cell.CheckBoxPainter;
 import org.eclipse.nebula.widgets.nattable.selection.RowSelectionModel;
 import org.eclipse.nebula.widgets.nattable.selection.RowSelectionProvider;
 import org.eclipse.nebula.widgets.nattable.sort.SortHeaderLayer;
@@ -169,9 +172,8 @@ public class BulkEditorE4Composite extends Composite {
            ConfigRegistry configRegistry = new ConfigRegistry();
            //property map
         Map<String, String> propertyToLabels = new HashMap<>();
-        for(String columnLabel:columnList){
-            propertyToLabels.put(columnLabel, columnLabel);
-        }
+        columnList.forEach(columnLabel->propertyToLabels.put(columnLabel, columnLabel));
+
         String[] propertyNames = columnList.toArray(columnList.toArray(new String[columnList.size()]));
         //sorted list
         SortedList<CdmBase> sortedList = new SortedList<>(bulkEditor.getEditorInput().getModel(), bulkEditor.getEditorInput().getTitleComparator());
@@ -192,7 +194,12 @@ public class BulkEditorE4Composite extends Composite {
         dataLayer.setColumnPercentageSizing(0, true);
         dataLayer.setColumnWidthPercentageByPosition(0, 45);
         for(int i=1;i<columnList.size();i++){
-            dataLayer.setColumnWidthByPosition(i, 100);
+//            if(bulkEditor.getEditorInput().isBooleanProperty(columnList.get(i))){
+//                dataLayer.setColumnWidthByPosition(i, 20);
+//            }
+//            else{
+                dataLayer.setColumnWidthByPosition(i, 100);
+//            }
         }
 
         //column
@@ -235,8 +242,9 @@ public class BulkEditorE4Composite extends Composite {
             }
         }));
 
-        //add label to deduplication rows
-        dataLayer.setConfigLabelAccumulator(new BulkEditorConfigLabelAccumulator(natTable, bodyDataProvider, bulkEditor.getEditorInput()));
+        dataLayer.setConfigLabelAccumulator(new BulkEditorConfigLabelAccumulator(natTable, bodyDataProvider,
+                colHeaderDataProvider,
+                bulkEditor.getEditorInput()));
 
         //add tooltip to table
         new BulkEditorTooltip(natTable);
@@ -276,6 +284,24 @@ public class BulkEditorE4Composite extends Composite {
             }
         });
 
+        //show boolean values as check boxes
+        natTable.addConfiguration(new AbstractRegistryConfiguration() {
+            @Override
+            public void configureRegistry(IConfigRegistry configRegistry) {
+                configRegistry.registerConfigAttribute(
+                        CellConfigAttributes.CELL_PAINTER,
+                        new CheckBoxPainter(),
+                        DisplayMode.NORMAL,
+                        BulkEditorConfigLabelAccumulator.BOOLEAN_COLUMN);
+
+                configRegistry.registerConfigAttribute(
+                        CellConfigAttributes.DISPLAY_CONVERTER,
+                        new DefaultBooleanDisplayConverter(),
+                        DisplayMode.NORMAL,
+                        BulkEditorConfigLabelAccumulator.BOOLEAN_COLUMN);
+            }
+        });
+
         //+++CONTEXT MENU+++
         menuService.registerContextMenu(natTable, "eu.etaxonomy.taxeditor.bulkeditor.popupmenu.bulkeditor"); //$NON-NLS-1$
         // get the menu registered by EMenuService
index c8c4c3c1d1f817713100f28428b09270801f74ea..a1efe169096090effa1d5186e1704ed2175c1116 100644 (file)
@@ -152,6 +152,13 @@ public abstract class AbstractBulkEditorInput<T extends CdmBase> extends CdmEnti
         return null;
     }
 
+    public boolean isBooleanProperty(String property) {
+        if(property.equals(PROPERTY_PROTECTED_TITLECACHE)){
+            return true;
+        }
+        return false;
+    }
+
        public Comparator<T> getTitleComparator(){
            return new TitleCacheComparator();
        }
index 60bbb8c23222f661eb4c4176c47c48475488bbd7..b66b31e89bfcdc484e6b6e4ca5c42863f328684b 100644 (file)
@@ -94,6 +94,14 @@ public class AgentEditorInput extends AbstractBulkEditorInput<TeamOrPersonBase>
            return super.getPropertyValue(cdmBase, property);
        }
 
+       @Override
+       public boolean isBooleanProperty(String property) {
+           if(property.equals(PROPERTY_TEAM_HAS_MORE_MEMBERS)){
+               return true;
+           }
+           return super.isBooleanProperty(property);
+       }
+
     @Override
     public String getName() {
                return BulkEditorInputType.AGENT.label;
index 06363dea27d8771d19c8397295d7fda4bff06cfe..5e31420e16bd706b61f809b720f45cfd80f9c47a 100644 (file)
@@ -98,6 +98,15 @@ public class NameEditorInput extends AbstractBulkEditorInput<TaxonName> {
            return super.getPropertyValue(cdmBase, property);
        }
 
+       @Override
+       public boolean isBooleanProperty(String property) {
+           if(property.equals(PROPERTY_PROTECT_NAME_CACHE)
+                   || property.equals(PROPERTY_PROTECT_AUTHORSHIP_CACHE)){
+               return true;
+           }
+           return super.isBooleanProperty(property);
+       }
+
     @Override
     public String getName() {
                return BulkEditorInputType.NAME.label;
index 43e99fc3d30cca66655578e3056a5d81da22b963..137f0706dbf67e6d9b7b874ebea137873a14eb7c 100644 (file)
@@ -104,6 +104,14 @@ public class OccurrenceEditorInput extends AbstractBulkEditorInput<SpecimenOrObs
         return super.getPropertyValue(cdmBase, property);
     }
 
+    @Override
+    public boolean isBooleanProperty(String property) {
+        if(property.equals(PROPERTY_PUBLISH)){
+            return true;
+        }
+        return super.isBooleanProperty(property);
+    }
+
     private Object getCollector(SpecimenOrObservationBase<?> cdmBase) {
         if(cdmBase.isInstanceOf(FieldUnit.class)){
             GatheringEvent gatheringEvent = HibernateProxyHelper.deproxy(cdmBase, FieldUnit.class).getGatheringEvent();
index d22376f7720a4b6881b32ca2044a1625bcea1593..d607b16cf589f6b058075d223b2094ad824e68de 100644 (file)
@@ -76,6 +76,14 @@ public class ReferenceEditorInput extends AbstractBulkEditorInput<Reference> {
         return super.getPropertyValue(cdmBase, property);
     }
 
+    @Override
+    public boolean isBooleanProperty(String property) {
+        if(property.equals(PROPERTY_PROTECT_NOMENCLATURAL_CACHE)){
+            return true;
+        }
+        return super.isBooleanProperty(property);
+    }
+
     @Override
     public String getName() {
                return BulkEditorInputType.REFERENCE.label;
index d29c57c83fedc9b98421411562c35a85bb189a83..de4dc9a0c0b314c522ae9751b9d4758bf53b0b61 100644 (file)
@@ -56,6 +56,14 @@ public class TaxonEditorInput extends AbstractBulkEditorInput<TaxonBase>{
         return super.getPropertyValue(cdmBase, property);\r
     }\r
 \r
+    @Override\r
+    public boolean isBooleanProperty(String property) {\r
+        if(property.equals(PROPERTY_PUBLISH)){\r
+            return true;\r
+        }\r
+        return super.isBooleanProperty(property);\r
+    }\r
+\r
     @Override\r
        public String getName() {\r
                return BulkEditorInputType.TAXON.label;\r