ref #7502 Add table settings to search bar
[taxeditor.git] / eu.etaxonomy.taxeditor.bulkeditor / src / main / java / eu / etaxonomy / taxeditor / bulkeditor / e4 / BulkEditorE4Composite.java
index b23b9834349ba0e6a7f4cb299fe2e6de5bf6103a..50a9eecbf684b2e813de2f2a901835bada4b7e5d 100644 (file)
@@ -56,6 +56,7 @@ 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.painter.cell.ImagePainter;
 import org.eclipse.nebula.widgets.nattable.selection.RowSelectionModel;
 import org.eclipse.nebula.widgets.nattable.selection.RowSelectionProvider;
 import org.eclipse.nebula.widgets.nattable.sort.SortHeaderLayer;
@@ -83,6 +84,7 @@ import eu.etaxonomy.cdm.model.description.SpecimenDescription;
 import eu.etaxonomy.taxeditor.bulkeditor.BulkEditorQuery;
 import eu.etaxonomy.taxeditor.bulkeditor.input.AbstractBulkEditorInput;
 import eu.etaxonomy.taxeditor.l10n.Messages;
+import eu.etaxonomy.taxeditor.model.ImageResources;
 
 /**
  *
@@ -119,6 +121,7 @@ public class BulkEditorE4Composite extends Composite {
     private ListDataProvider<CdmBase> bodyDataProvider;
 
     private BulkEditorE4 bulkEditor;
+    private BulkEditorSearchE4 bulkEditorSearch;
 
 
     public BulkEditorE4Composite(BulkEditorE4 bulkEditor, Composite parent, int style) {
@@ -144,7 +147,7 @@ public class BulkEditorE4Composite extends Composite {
 
         input.getPropertyKeys().forEach(key->columnList.add(key));
 
-           new BulkEditorSearchE4(this, topComposite, SWT.NONE);
+           bulkEditorSearch = new BulkEditorSearchE4(this, topComposite, SWT.NONE);
            //layout needed because the search bar is added after @PostConstuct method
            topComposite.getParent().layout();
 
@@ -166,6 +169,7 @@ public class BulkEditorE4Composite extends Composite {
         selectionProvider.addSelectionChangedListener(selectionChangedListener);
 
         bottomComposite.layout();
+
        }
 
        private void createTable(){
@@ -194,12 +198,12 @@ public class BulkEditorE4Composite extends Composite {
         dataLayer.setColumnPercentageSizing(0, true);
         dataLayer.setColumnWidthPercentageByPosition(0, 45);
         for(int i=1;i<columnList.size();i++){
-//            if(bulkEditor.getEditorInput().isBooleanProperty(columnList.get(i))){
-//                dataLayer.setColumnWidthByPosition(i, 20);
-//            }
-//            else{
+            if(bulkEditor.getEditorInput().isCacheProperty(columnList.get(i))){
+                dataLayer.setColumnWidthByPosition(i, 16);
+            }
+            else{
                 dataLayer.setColumnWidthByPosition(i, 100);
-//            }
+            }
         }
 
         //column
@@ -217,6 +221,8 @@ public class BulkEditorE4Composite extends Composite {
                         columnPropertyAccessor,
                         configRegistry,
                         columnHeaderDataLayer));
+        columnHeaderDataLayer.setConfigLabelAccumulator(
+                new BulkEditorConfigLabelAccumulatorHeader(colHeaderDataProvider, bulkEditor.getEditorInput()));
         //row
         DataLayer rowHeaderDataLayer = new DataLayer(rowHeaderDataProvider);
         RowHeaderLayer rowHeaderLayer = new RowHeaderLayer(rowHeaderDataLayer,
@@ -232,7 +238,6 @@ public class BulkEditorE4Composite extends Composite {
         GridLayer gridLayer = new GridLayer(bodyLayer, sortHeaderLayer,
                 rowHeaderLayer, cornerLayer, false);//set autoconfigure to false to get rid of the single click editing
         natTable = new NatTable(bottomComposite, gridLayer, false);
-        natTable.setConfigRegistry(configRegistry);
 
         //full row selection
         bodyLayer.getSelectionLayer().setSelectionModel(new RowSelectionModel<CdmBase>(bodyLayer.getSelectionLayer(), bodyDataProvider, new IRowIdAccessor<CdmBase>() {
@@ -242,12 +247,13 @@ public class BulkEditorE4Composite extends Composite {
             }
         }));
 
-        dataLayer.setConfigLabelAccumulator(new BulkEditorConfigLabelAccumulator(natTable, bodyDataProvider,
-                colHeaderDataProvider,
+        dataLayer.setConfigLabelAccumulator(new BulkEditorConfigLabelAccumulator(bodyDataProvider, colHeaderDataProvider,
                 bulkEditor.getEditorInput()));
 
+        natTable.setConfigRegistry(configRegistry);
+
         //add tooltip to table
-        new BulkEditorTooltip(natTable);
+        new BulkEditorTooltip(natTable, colHeaderDataProvider);
        }
 
        private void configureTable(){
@@ -284,24 +290,6 @@ 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
@@ -338,6 +326,39 @@ public class BulkEditorE4Composite extends Composite {
 
         //add default configuration because autoconfigure is set to false in constructor
         natTable.addConfiguration(new DefaultNatTableStyleConfiguration());
+
+        //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,
+                        BulkEditorConfigLabelAccumulatorHeader.BOOLEAN_COLUMN);
+
+                configRegistry.registerConfigAttribute(
+                        CellConfigAttributes.DISPLAY_CONVERTER,
+                        new DefaultBooleanDisplayConverter(),
+                        DisplayMode.NORMAL,
+                        BulkEditorConfigLabelAccumulatorHeader.BOOLEAN_COLUMN);
+            }
+        });
+
+        natTable.addConfiguration(new AbstractRegistryConfiguration() {
+            @Override
+            public void configureRegistry(IConfigRegistry configRegistry) {
+                configRegistry.registerConfigAttribute(
+                        CellConfigAttributes.CELL_PAINTER,
+                        new ImagePainter(ImageResources.getImage(ImageResources.LOCK_ICON)),
+                        DisplayMode.NORMAL,
+                        BulkEditorConfigLabelAccumulatorHeader.CACHE_COLUMN);
+            }
+        });
+
+        //register handler for view configuration menu
+        natTable.registerCommandHandler(bulkEditorSearch.getDisplayPersistenceDialogCommandHandler());
+
         natTable.configure();
        }
 
@@ -421,4 +442,8 @@ public class BulkEditorE4Composite extends Composite {
         }
     }
 
+    NatTable getNatTable() {
+        return natTable;
+    }
+
 }