add button to select default source in distribution editor
authorKatja Luther <k.luther@bgbm.org>
Thu, 18 Oct 2018 12:52:12 +0000 (14:52 +0200)
committerKatja Luther <k.luther@bgbm.org>
Thu, 18 Oct 2018 12:52:12 +0000 (14:52 +0200)
eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/l10n/Messages.java
eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/l10n/messages.properties
eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/l10n/messages_de.properties
eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/view/checklist/ChecklistLabelProvider.java
eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/view/checklist/e4/ChecklistEditorE4.java
eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/view/checklist/e4/DistributionEditingSupportE4.java
eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/view/checklist/e4/DistributionEditorColumnViewerEditorActivationStrategy.java [new file with mode: 0755]
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/editor/definedterm/operation/DeleteTermBaseOperation.java
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/preference/PreferencesUtil.java
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/preference/wizard/AvailableDistributionStatusWizard.java
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/preference/wizard/AvailableDistributionWizard.java

index 0f15a21eede5c5c0c152d3339da7df5a583fd189..311395b9ffb008c9f4e7f2b0fec818d74ce7f148 100644 (file)
@@ -287,6 +287,9 @@ public class Messages extends NLS {
     public static String DescriptiveDataSetComposite_TAXON_FILTER;
     public static String DescriptiveDataSetEditor_DELETE_FAIL_MESSAGE;
     public static String DescriptiveDataSetEditor_DELETE_FAIL_TITLE;
+    public static String ChecklistEditor_DEFAULT_SOURCE;
+    public static String ChecklistEditor_DEFAULT_SOURCE_TOOLTIP;
+    public static String ChecklistEditor_SEARCH_TOOLTIP;
     static {
         // initialize resource bundle
         NLS.initializeMessages(BUNDLE_NAME, Messages.class);
index 0b5dbdca0f717eaba6c007a487307181b2e4bc31..c65a5535c670c7b6feac9ebb8fd8d4ee9d67d7a9 100644 (file)
@@ -266,4 +266,6 @@ DescriptiveDataSetEditor_DELETE_FAIL_MESSAGE=You can only select top level eleme
 DescriptiveDataSetEditor_DELETE_FAIL_TITLE=Could not delete
 ChooseFromMultipleAcceptedTaxaDialog_CHOOSE_ACCEPTED_TAXON=Choose accepted taxon
 ChooseFromMultipleAcceptedTaxaDialog_CHOOSE_ACCEPTED_TAXON_MESSAGE=The taxon is related with multiple accepted taxa. Please choose the one you want to open.
-
+ChecklistEditor_DEFAULT_SOURCE=Choose Source
+ChecklistEditor_DEFAULT_SOURCE_TOOLTIP=Choose a source which is added to every new distribution.
+ChecklistEditor_SEARCH_TOOLTIP=Textfilter for Taxa
index 58ccf9bda219fe3a069cf19e34a912cde85038ca..8bd2041c924bfa7e3e6d4ec8eca2ce9e245bd3a2 100644 (file)
@@ -266,4 +266,6 @@ DescriptiveDataSetEditor_DELETE_FAIL_MESSAGE=Es k
 DescriptiveDataSetEditor_DELETE_FAIL_TITLE=Löschen fehlgesschlagen
 ChooseFromMultipleAcceptedTaxaDialog_CHOOSE_ACCEPTED_TAXON=Akzeptiertes Taxon wählen
 ChooseFromMultipleAcceptedTaxaDialog_CHOOSE_ACCEPTED_TAXON_MESSAGE=Das Taxon ist mit mehreren akzeptierten Taxa verknüpft. Bitte wählen sie, welches sie öffnen möchten.
-
+ChecklistEditor_DEFAULT_SOURCE=Quelle auswählen
+ChecklistEditor_DEFAULT_SOURCE_TOOLTIP=Wählen Sie eine Quelle aus, die jeder neu angelegten Verbreitung zugefügt wird.
+ChecklistEditor_SEARCH_TOOLTIP=Textfilter auf Taxa
\ No newline at end of file
index 6e5950d36837fc0e82c665fc382db009d2497637..42fee9652994ad6c756789246b3f57edfadc7554 100644 (file)
@@ -26,17 +26,18 @@ import org.eclipse.swt.graphics.Image;
 
 import eu.etaxonomy.cdm.api.service.IDescriptionService;
 import eu.etaxonomy.cdm.api.service.IVocabularyService;
-import eu.etaxonomy.cdm.common.CdmUtils;
 import eu.etaxonomy.cdm.hibernate.HibernateProxyHelper;
 import eu.etaxonomy.cdm.model.common.DefinedTermBase;
 import eu.etaxonomy.cdm.model.common.Language;
 import eu.etaxonomy.cdm.model.common.OrderedTermBase;
 import eu.etaxonomy.cdm.model.common.OrderedTermComparator;
+import eu.etaxonomy.cdm.model.common.Representation;
 import eu.etaxonomy.cdm.model.common.TermIdInVocabularyComparator;
 import eu.etaxonomy.cdm.model.common.TermLanguageComparator;
 import eu.etaxonomy.cdm.model.common.TermVocabulary;
 import eu.etaxonomy.cdm.model.description.DescriptionElementBase;
 import eu.etaxonomy.cdm.model.description.Distribution;
+import eu.etaxonomy.cdm.model.description.PresenceAbsenceTerm;
 import eu.etaxonomy.cdm.model.description.TaxonDescription;
 import eu.etaxonomy.cdm.model.name.TaxonName;
 import eu.etaxonomy.cdm.model.taxon.Taxon;
@@ -87,9 +88,7 @@ public class ChecklistLabelProvider extends LabelProvider implements ITableLabel
     public String getColumnText(Object element, int columnIndex) {
        // descriptionService = CdmStore.getService(IDescriptionService.class);
         Taxon taxon = (Taxon) element;
-        //TODO load areas by this list
 
-       // List<TaxonDescription> listTaxonDescriptions = descriptionService.listTaxonDescriptions(taxon, null, null, null, null, null, DESC_INIT_STRATEGY);;
         Set<TaxonDescription> listTaxonDescriptions = taxon.getDescriptions();
         TaxonName nonViralName = HibernateProxyHelper.deproxy(taxon.getName());
 
@@ -99,18 +98,6 @@ public class ChecklistLabelProvider extends LabelProvider implements ITableLabel
             taxonName = (nonViralName != null) ? nonViralName.getNameCache() : null;
             return (taxonName != null) ? taxonName : DEFAULT_ENTRY;
 
- //       case 1:
-//            String authorship = null;
-//            authorship = (nonViralName != null) ? nonViralName.getAuthorshipCache() : null;
-//            return (authorship != null) ? authorship : DEFAULT_ENTRY;
-//        case 2:
-//            String ref = null;
-//            if (taxon.getName() != null) {
-//                INomenclaturalReference nomenclaturalReference = HibernateProxyHelper.deproxy(
-//                        nonVirlaName.getNomenclaturalReference(), Reference.class);
-//                ref = (nomenclaturalReference != null) ? nomenclaturalReference.getAbbrevTitleCache() : null;
-//            }
-//            return (ref != null) ? ref : DEFAULT_ENTRY;
         case 1:
             if (PreferencesUtil.isShowRankInChecklistEditor()){
                 String rank = null;
@@ -127,41 +114,28 @@ public class ChecklistLabelProvider extends LabelProvider implements ITableLabel
             for (TaxonDescription td : listTaxonDescriptions) {
                 for (DescriptionElementBase deb : td.getElements()) {
                     if (deb instanceof Distribution) {
-
-
                         Distribution distribution = HibernateProxyHelper.deproxy(deb, Distribution.class);
                         if (distribution.getArea() != null){
                             if ( editor.getAreaPosition().get(distribution.getArea().getUuid()) != null && columnIndex == editor.getAreaPosition().get(distribution.getArea().getUuid())){
+                                if (distribution.getStatus() == null){
+                                    return DEFAULT_ENTRY;
+                                }
+                                PresenceAbsenceTerm term = distribution.getStatus();
+                                Representation rep = distribution.getStatus().getPreferredRepresentation(CdmStore.getDefaultLanguage());
+                                String label = rep.getAbbreviatedLabel();
+                                if (label == null){
+                                    label = rep.getLabel();
+                                }
+                                if (label == null){
+                                    distribution.getStatus().getTitleCache();
+                                }
                                 if (PreferencesUtil.isShowSymbolInChecklistEditor()){
-                                    return (distribution.getStatus().getSymbol() != null)?distribution.getStatus().getSymbol():CdmUtils.Nz(distribution.getStatus().getTitleCache());
+                                    return (distribution.getStatus().getSymbol() != null)?distribution.getStatus().getSymbol():label;
                                 }else{
-                                    return (distribution.getStatus().getTitleCache() != null)?distribution.getStatus().getTitleCache():DEFAULT_ENTRY;
+                                    return (label != null)?label:DEFAULT_ENTRY;
                                 }
                             }
                         }
-//                        String area = null;
-//                        if (distribution.getArea() != null ){
-//                            if (PreferencesUtil.isShowIdInVocabularyInChecklistEditor()){
-//                                if (distribution.getArea().getIdInVocabulary() != null){
-//                                    area = distribution.getArea().getIdInVocabulary();
-//                                } else{
-//                                    area = distribution.getArea().getTitleCache();
-//                                }
-//                            }else{
-//                                area = distribution.getArea().getTitleCache();
-//                            }
-//
-//                        }else{
-//                            continue;
-//                        }
-//
-//                        if(editor.getViewer() != null){
-//                             TableColumn column = viewer.getTable().getColumn(columnIndex);
-//                             if (area.equalsIgnoreCase(column.getText())) {
-//
-//                            }
-//
-//                        }
                     }
                 }
             }
index 14f11b21386d297e0eb37830274bb91ec544bf7d..f89ce33d04500eb494faa4fbfa12afe836260048 100644 (file)
@@ -9,6 +9,7 @@
 
 package eu.etaxonomy.taxeditor.editor.view.checklist.e4;
 
+
 import java.util.ArrayList;
 import java.util.Arrays;
 import java.util.Collection;
@@ -45,10 +46,10 @@ import org.eclipse.swt.events.SelectionAdapter;
 import org.eclipse.swt.events.SelectionEvent;
 import org.eclipse.swt.layout.GridData;
 import org.eclipse.swt.layout.GridLayout;
+import org.eclipse.swt.widgets.Button;
 import org.eclipse.swt.widgets.Composite;
+import org.eclipse.swt.widgets.Display;
 import org.eclipse.swt.widgets.Label;
-import org.eclipse.swt.widgets.Menu;
-import org.eclipse.swt.widgets.MenuItem;
 import org.eclipse.swt.widgets.Table;
 import org.eclipse.swt.widgets.TableColumn;
 import org.eclipse.swt.widgets.Text;
@@ -60,6 +61,8 @@ import eu.etaxonomy.cdm.api.conversation.ConversationHolder;
 import eu.etaxonomy.cdm.api.conversation.IConversationEnabled;
 import eu.etaxonomy.cdm.api.service.ITaxonNodeService;
 import eu.etaxonomy.cdm.model.common.DefinedTermBase;
+import eu.etaxonomy.cdm.model.common.Representation;
+import eu.etaxonomy.cdm.model.reference.Reference;
 import eu.etaxonomy.cdm.model.taxon.Classification;
 import eu.etaxonomy.cdm.model.taxon.Taxon;
 import eu.etaxonomy.cdm.model.taxon.TaxonNode;
@@ -75,6 +78,7 @@ import eu.etaxonomy.taxeditor.editor.view.checklist.ChecklistLabelProvider;
 import eu.etaxonomy.taxeditor.editor.view.checklist.filter.ChecklistEditorFilter;
 import eu.etaxonomy.taxeditor.editor.view.checklist.listener.ChecklistFocusListener;
 import eu.etaxonomy.taxeditor.editor.view.checklist.listener.ChecklistModifyListener;
+import eu.etaxonomy.taxeditor.model.AbstractUtility;
 import eu.etaxonomy.taxeditor.model.IDirtyMarkable;
 import eu.etaxonomy.taxeditor.model.IPartContentHasDetails;
 import eu.etaxonomy.taxeditor.model.IPartContentHasSupplementalData;
@@ -83,6 +87,9 @@ import eu.etaxonomy.taxeditor.preference.Resources;
 import eu.etaxonomy.taxeditor.preference.wizard.AvailableDistributionWizard;
 import eu.etaxonomy.taxeditor.store.CdmStore;
 import eu.etaxonomy.taxeditor.store.StoreUtil;
+import eu.etaxonomy.taxeditor.ui.dialog.selection.ReferenceSelectionDialog;
+import eu.etaxonomy.taxeditor.ui.element.CdmFormFactory;
+import eu.etaxonomy.taxeditor.ui.selection.EntitySelectionElement;
 import eu.etaxonomy.taxeditor.workbench.part.IE4SavablePart;
 
 /**
@@ -141,10 +148,17 @@ public class ChecklistEditorE4 implements  IConversationEnabled,
     private Map<UUID, Integer> areaPosition= new HashMap();
 
     private ToolItem toolItem;
+    private ToolItem toolItem2;
        private ChecklistDropdownSelectionListenerE4 dropListener;
        private Text searchText;
+       private EntitySelectionElement<Reference> defaultReferenceSelection;
+
+       private Reference defaultSource = null;
 
-       public Map<UUID, Integer> getAreaPosition() {
+       public Reference getDefaultSource() {
+        return defaultSource;
+    }
+    public Map<UUID, Integer> getAreaPosition() {
         return areaPosition;
     }
     /**
@@ -175,11 +189,12 @@ public class ChecklistEditorE4 implements  IConversationEnabled,
         taxonNodeService = CdmStore.getService(ITaxonNodeService.class);
         filter = new ChecklistEditorFilter();
         createTopComposite(parent);
+      // createToolbar(parent);
         viewer = new TableViewer(parent, SWT.MULTI | SWT.H_SCROLL | SWT.V_SCROLL | SWT.FULL_SELECTION);
 
         //the focuzsCellManager should return the distribution!!!
         TableViewerFocusCellManager focusCellManager = new TableViewerFocusCellManager(viewer, new FocusCellOwnerDrawHighlighter (viewer));
-        TableViewerEditor.create(viewer, focusCellManager, new ColumnViewerEditorActivationStrategy(viewer), TableViewerEditor.KEYBOARD_ACTIVATION);
+        TableViewerEditor.create(viewer, focusCellManager, new ColumnViewerEditorActivationStrategy(viewer), TableViewerEditor.DEFAULT);
 
 
 //        viewer.addSelectionChangedListener(new ISelectionChangedListener() {
@@ -213,6 +228,9 @@ public class ChecklistEditorE4 implements  IConversationEnabled,
 
         viewer.setContentProvider(new ChecklistContentProvider());
         viewer.setLabelProvider(this.labelProvider);
+//        selectionChangedListener = (event -> selService.setSelection(event.getSelection()));
+//        viewer.addSelectionChangedListener(selectionChangedListener);
+
         comparator = new ChecklistEditorComparator();
         viewer.setComparator(comparator);
         final ModifyListener modifyListener = new ChecklistModifyListener(viewer, filter, searchText);
@@ -221,7 +239,7 @@ public class ChecklistEditorE4 implements  IConversationEnabled,
         searchText.addModifyListener(modifyListener);
         createGridDataForViewerLayout();
         createStatusBar(parent);
-        createToolbar(parent);
+
     }
 
     /**
@@ -234,17 +252,30 @@ public class ChecklistEditorE4 implements  IConversationEnabled,
         parent.setLayout(gridLayout);
 
        searchText = createSearchBar(parent);
-
+      // createSetDefaultReferenceButton(parent);
 
        // getSite().setSelectionProvider(viewer);
 
+    }
 
 
+    /**
+     * @param parent
+     * @return
+     */
+    private void createSetDefaultReferenceButton(Composite parent) {
+        CdmFormFactory cdmFormFactory = new CdmFormFactory(Display.getCurrent());
+        defaultReferenceSelection = cdmFormFactory.createSelectionElement(Reference.class,
+                        null, "Default Source Reference", null,
+                        EntitySelectionElement.DELETABLE, SWT.NULL);
+
 
 
-    }
 
-       private void createGridDataForViewerLayout() {
+
+        return;
+    }
+    private void createGridDataForViewerLayout() {
                GridData gridData = new GridData();
                gridData.verticalAlignment = GridData.FILL;
         gridData.horizontalSpan = 3;
@@ -259,12 +290,70 @@ public class ChecklistEditorE4 implements  IConversationEnabled,
      * @return
      */
     private Text createSearchBar(Composite parent) {
-        Label searchLabel = new Label(parent, SWT.NONE);
-        searchLabel.setText(Messages.ChecklistEditor_SEARCH);
+
+
+
+//        FillLayout fillLayout = new FillLayout();
+//
+//        fillLayout.type = SWT.VERTICAL;
+//        parent.setLayoutData(fillLayout);
+//        Label searchLabel = new Label(parent, SWT.NONE);
+//        searchLabel.setText(Messages.ChecklistEditor_SEARCH);
+//        GridData gridDataLabel = new GridData();
+//        gridDataLabel.horizontalSpan =1;
+//        searchLabel.setLayoutData(gridDataLabel);
         final Text searchText = new Text(parent, SWT.BORDER | SWT.SEARCH | SWT.ICON_SEARCH | SWT.CANCEL);
-        searchText.setLayoutData(new GridData(GridData.GRAB_HORIZONTAL | GridData.HORIZONTAL_ALIGN_FILL));
+        GridData gridData = new GridData(GridData.GRAB_HORIZONTAL | GridData.HORIZONTAL_ALIGN_FILL);
+
+        searchText.setLayoutData(gridData);
         searchText.setForeground(EditorUtil.getColor(Resources.SEARCH_VIEW_FOREGROUND));
         searchText.setText(TYPE_FILTER_TEXT);
+        searchText.setToolTipText(Messages.ChecklistEditor_SEARCH_TOOLTIP);
+
+
+      //  Composite buttons = new Composite(parent, SWT.NONE);
+        //buttons.setLayoutData(new GridData(GridData.GRAB_HORIZONTAL ));
+        Button button1 = new Button(parent, SWT.PUSH );
+        GridData gridData2 = new GridData();
+        gridData2.horizontalSpan = 1;
+        button1.setLayoutData(gridData2);
+
+
+        button1.setText(Messages.ChecklistEditor_DIST_STATUS);
+        button1.setToolTipText(Messages.ChecklistEditor_DIST_STATUS_TOOLTIP);
+        button1.addSelectionListener(new SelectionAdapter() {
+            @Override
+            public void widgetSelected(SelectionEvent event) {
+                AvailableDistributionWizard availableDistributionWizard = new AvailableDistributionWizard();
+                WizardDialog dialog = new WizardDialog(StoreUtil.getShell(),
+                        availableDistributionWizard);
+
+                int open = dialog.open();
+                if(open == 0){
+                    reload();
+                }
+            }
+        });
+
+        Button button2 = new Button(parent, SWT.PUSH );
+        GridData gridData3 = new GridData();
+        gridData2.horizontalSpan = 1;
+        button2.setLayoutData(gridData3);
+
+
+        button2.setText(Messages.ChecklistEditor_DEFAULT_SOURCE);
+        button2.setToolTipText(Messages.ChecklistEditor_DEFAULT_SOURCE_TOOLTIP);
+        button2.addSelectionListener(new SelectionAdapter() {
+
+            @Override
+            public void widgetSelected(SelectionEvent event) {
+                defaultSource = ReferenceSelectionDialog.select(AbstractUtility.getShell(), null);
+
+            }
+
+        });
+
+        parent.pack();
         return searchText;
     }
 
@@ -272,9 +361,11 @@ public class ChecklistEditorE4 implements  IConversationEnabled,
      * @param parent
      */
     private void createToolbar(Composite parent) {
-        ToolBar toolBar = new ToolBar(parent, SWT.NONE);
+        ToolBar toolBar = new ToolBar(parent, SWT.BORDER);
       //  toolItem = new ToolItem(toolBar, SWT.DROP_DOWN | SWT.BORDER);
-        toolItem = new ToolItem(toolBar, SWT.BUTTON1);
+
+        toolItem = new ToolItem(toolBar, SWT.PUSH| SWT.BORDER);
+
 
         toolItem.setText(Messages.ChecklistEditor_DIST_STATUS);
         toolItem.setToolTipText(Messages.ChecklistEditor_DIST_STATUS_TOOLTIP);
@@ -293,19 +384,24 @@ public class ChecklistEditorE4 implements  IConversationEnabled,
                 }
             }
         });
+        toolItem2 = new ToolItem(toolBar, SWT.PUSH | SWT.BORDER);
+
+
+        toolItem2.setText(Messages.ChecklistEditor_DEFAULT_SOURCE);
+        toolItem2.setToolTipText(Messages.ChecklistEditor_DEFAULT_SOURCE_TOOLTIP);
+        //createToolbarItems();
+      //  toolItem.addSelectionListener(dropListener);
+        toolItem2.addSelectionListener(new SelectionAdapter() {
+            @Override
+            public void widgetSelected(SelectionEvent event) {
+                defaultSource = ReferenceSelectionDialog.select(AbstractUtility.getShell(), null);
+            }
+        });
+
         toolBar.pack();
     }
 
-       private void createToolbarItems() {
-           SortedSet<DefinedTermBase> termsList = getLabelProvider().getNamedAreas(false);
-               dropListener = new ChecklistDropdownSelectionListenerE4(toolItem, this, termsList);
 
-        for (DefinedTermBase<DefinedTermBase> term : termsList) {
-            if(term!=null){
-                dropListener.add(term);
-            }
-        }
-       }
 
     private void createStatusBar(Composite composite) {
         GridData gridData = new GridData();
@@ -401,24 +497,31 @@ public class ChecklistEditorE4 implements  IConversationEnabled,
                 if(term != null){
                    // restoreColumnWidth.put(columnIndex, PreferencesUtil.getPreferenceStore().getBoolean(term.getUuid().toString()));
                     areaPosition.put(term.getUuid(), columnIndex);
+                    Representation rep = term.getPreferredRepresentation(CdmStore.getDefaultLanguage());
+                    String label = rep.getAbbreviatedLabel() != null ? rep.getAbbreviatedLabel(): rep.getLabel();
+                    if (label == null){
+                        term.getTitleCache();
+                    }
                     if (PreferencesUtil.isShowIdInVocabularyInChecklistEditor()){
                         if (term.getIdInVocabulary() != null){
                             titles.add(term.getIdInVocabulary());
                         } else{
-                            titles.add(term.getTitleCache());
+                            titles.add(label);
                         }
                     }else if (PreferencesUtil.isShowSymbol1InChecklistEditor()){
                         if (term.getSymbol() != null){
                             titles.add(term.getSymbol());
                         } else{
-                            titles.add(term.getTitleCache());
+                            titles.add(label);
                         }
                     }else if (PreferencesUtil.isShowSymbol2InChecklistEditor()){
                         if (term.getSymbol2() != null){
                             titles.add(term.getSymbol2());
                         } else{
-                            titles.add(term.getTitleCache());
+                            titles.add(label);
                         }
+                    }else{
+                        titles.add(label);
                     }
                     bounds.add(200);
                     columnIndex++;
@@ -610,8 +713,12 @@ public class ChecklistEditorE4 implements  IConversationEnabled,
            boolean isNew = true;
 
            Integer position = areaPosition.get(term.getUuid());
+           Representation rep = term.getPreferredRepresentation(CdmStore.getDefaultLanguage());
 
-           String termLable = term.getTitleCache();;
+           String termLable = rep.getAbbreviatedLabel();
+           if (termLable == null){
+               termLable = rep.getLabel();
+           }
             if (PreferencesUtil.isShowIdInVocabularyInChecklistEditor()){
                 if (term.getIdInVocabulary() != null){
                     termLable = term.getIdInVocabulary();
@@ -626,33 +733,11 @@ public class ChecklistEditorE4 implements  IConversationEnabled,
                 TableViewerColumn column= addTableViewerColumn(termLable, 200, position, term);
             }
 
-           // acitivateNewColumnInDropDownMenu(term);
-       }
-
-
 
-//     for(DefinedTermBase term:terms.values()){
-//             int count = viewer.getTable().getColumnCount();
-//
-//             //add new terms
-//             for (TableColumn column: columns){
-//                 if (terms.){
-//                     break;
-//                 }
-//             }
-//
-////                   String termLable = term.getTitleCache();;
-////                   if (PreferencesUtil.isShowIdInVocabularyInChecklistEditor()){
-////                           if (term.getIdInVocabulary() != null){
-////                                   termLable = term.getIdInVocabulary();
-////                   }
-////                   }
-////                   addTableViewerColumn(termLable, 200, count);
-////                   acitivateNewColumnInDropDownMenu(term);
-    // }
+       }
 
         viewer.setLabelProvider(labelProvider);
-//        getService().schedule(new ChecklistJob(LOADING_TAXA, selectedTaxonNodes), Job.LONG);
+
         table.setRedraw(true);
        viewer.refresh();
     }
@@ -673,33 +758,9 @@ public class ChecklistEditorE4 implements  IConversationEnabled,
         }
 
     }
-    private void acitivateNewColumnInDropDownMenu(DefinedTermBase term) {
-               Menu menu = dropListener.getMenu();
-               MenuItem[] items = menu.getItems();
-               for(MenuItem item: items){
-                       if(item.getText().equalsIgnoreCase(term.getTitleCache())){
-                               item.setSelection(true);
-                               PreferencesUtil.getPreferenceStore().setValue(term.getUuid().toString(), true);
-                       }
-               }
-       }
 
-       private void hideDistributionColumns(Collection<DefinedTermBase> oldTerms) {
-               TableColumn[] columns = viewer.getTable().getColumns();
-       for(int i=4; i<columns.length; i++){
-               //remove all columns
-               columns[i].dispose();
-               Menu menu = dropListener.getMenu();
-               int itemCount = menu.getItemCount();
-               MenuItem item = menu.getItem(i-3);
-               item.setSelection(false);
-       }
-       if(oldTerms != null){
-               for(DefinedTermBase term : oldTerms){
-                       PreferencesUtil.getPreferenceStore().setValue(term.getUuid().toString(), false);
-               }
-       }
-       }
+
+
 
     /**
      * <p>
@@ -781,6 +842,7 @@ public class ChecklistEditorE4 implements  IConversationEnabled,
     public void changed(Object element) {
         if (element != null) {
             viewer.update(element, null);
+
             if (element instanceof Taxon){
                 checklistEditorInput.addTaxonToSave((Taxon)element);
             }
index c600837f55abb5decc28558ab453854d10e22a31..762c27921c29182296f0770e1bb95f70c694cca3 100644 (file)
@@ -2,9 +2,13 @@ package eu.etaxonomy.taxeditor.editor.view.checklist.e4;
 
 import java.util.ArrayList;
 import java.util.Arrays;
+import java.util.Collection;
+import java.util.Comparator;
 import java.util.List;
+import java.util.Map;
 import java.util.Set;
 import java.util.SortedSet;
+import java.util.UUID;
 
 import javax.inject.Inject;
 
@@ -15,6 +19,7 @@ import org.eclipse.jface.viewers.ArrayContentProvider;
 import org.eclipse.jface.viewers.CellEditor;
 import org.eclipse.jface.viewers.ComboBoxViewerCellEditor;
 import org.eclipse.jface.viewers.EditingSupport;
+import org.eclipse.jface.viewers.ICellEditorListener;
 import org.eclipse.jface.viewers.ISelection;
 import org.eclipse.jface.viewers.ISelectionChangedListener;
 import org.eclipse.jface.viewers.LabelProvider;
@@ -25,8 +30,11 @@ import org.eclipse.swt.widgets.Composite;
 import org.eclipse.swt.widgets.TableColumn;
 
 import eu.etaxonomy.cdm.model.common.DefinedTermBase;
+import eu.etaxonomy.cdm.model.common.OrderedTermComparator;
+import eu.etaxonomy.cdm.model.common.Representation;
 import eu.etaxonomy.cdm.model.common.TermType;
 import eu.etaxonomy.cdm.model.description.DescriptionElementBase;
+import eu.etaxonomy.cdm.model.description.DescriptionElementSource;
 import eu.etaxonomy.cdm.model.description.Distribution;
 import eu.etaxonomy.cdm.model.description.PresenceAbsenceTerm;
 import eu.etaxonomy.cdm.model.description.TaxonDescription;
@@ -63,11 +71,21 @@ public final class DistributionEditingSupportE4 extends EditingSupport {
                   public String getText(Object element) {
                     if (element instanceof PresenceAbsenceTerm) {
                         PresenceAbsenceTerm  status = (PresenceAbsenceTerm)element;
+                        Representation rep = status.getPreferredRepresentation(CdmStore.getDefaultLanguage());
+                        String label = null;
+                        if (rep != null){
+                            label = rep.getAbbreviatedLabel();
+                        if (label == null){
+                            label = rep.getLabel();
+                        }
+                        }else{
+                            label = status.getTitleCache();
+                        }
                         String result = null;
                         if (PreferencesUtil.isShowSymbolInChecklistEditor() && !StringUtils.isBlank(status.getSymbol())){
-                                result = status.getTitleCache() + "("+ status.getSymbol()+")";
+                                result = label + "("+ status.getSymbol()+")";
                         }else{
-                                result = status.getTitleCache();
+                                result = label;
                         }
                         return result;
                     }
@@ -78,13 +96,39 @@ public final class DistributionEditingSupportE4 extends EditingSupport {
         cellEditor.setContentProvider(new ArrayContentProvider());
 
 
-        List<DefinedTermBase<?>> inputAll = new ArrayList<>();
+        List<DefinedTermBase> inputAll = new ArrayList<>();
         PresenceAbsenceTerm noneTerm = PresenceAbsenceTerm.NewInstance();
         noneTerm.setTitleCache(" ", true);
         inputAll.add(noneTerm);
-        List<DefinedTermBase<?>> input = CdmStore.getTermManager().getPreferredTerms(TermType.PresenceAbsenceTerm);
-        inputAll.addAll(1, input);
+        Collection<DefinedTermBase> input = CdmStore.getTermManager().getPreferredTerms(TermType.PresenceAbsenceTerm);
+        List<DefinedTermBase> inputList = new ArrayList(input);
+        Comparator<DefinedTermBase> comp = new OrderedTermComparator<>();
+       // Collections.sort(inputList, comp);
+        inputAll.addAll(1,inputList);
+
+
         cellEditor.setInput(inputAll);
+        cellEditor.addListener(new ICellEditorListener() {
+
+            @Override
+            public void applyEditorValue() {
+                // TODO Auto-generated method stub
+
+            }
+
+            @Override
+            public void cancelEditor() {
+                // TODO Auto-generated method stub
+
+            }
+
+            @Override
+            public void editorValueChanged(boolean oldValidState, boolean newValidState) {
+                fireStateChanged(cellEditor.getValue());
+
+            }
+
+        });
 
 
     }
@@ -100,7 +144,7 @@ public final class DistributionEditingSupportE4 extends EditingSupport {
     }
 
     @Override
-    protected Object getValue(Object element) {
+    protected PresenceAbsenceTerm getValue(Object element) {
         if (element instanceof Taxon) {
             Taxon taxon = (Taxon) element;
             String result = null;
@@ -113,15 +157,17 @@ public final class DistributionEditingSupportE4 extends EditingSupport {
             }
 
            //fireStateChanged(distributionForColumn);
-            return result;
+            return null;
         }
         return null;
     }
 
-    protected void fireStateChanged(Distribution dist) {
+
+
+    protected void fireStateChanged(Object dist) {
        if (dist!= null){
                ISelection selection = new StructuredSelection(dist);
-//             selService.setSelection(selection);
+               selService.setSelection(selection);
        }
     }
 
@@ -171,15 +217,17 @@ public final class DistributionEditingSupportE4 extends EditingSupport {
             for (DescriptionElementBase deb : td.getElements()) {
                 if (deb instanceof Distribution) {
                     Distribution distribution = (Distribution) deb;
+                    UUID areaUuid = null;
+                    for (Map.Entry<UUID,Integer> entry: editor.getAreaPosition().entrySet()){
+                        if (entry.getValue().intValue()== columnIndex){
+                            areaUuid = entry.getKey();
+                            break;
+                        }
+                    }
                     if (distribution.getArea() != null){
-                        if (PreferencesUtil.isShowIdInVocabularyInChecklistEditor()){
-                            if (column.getText().equalsIgnoreCase(distribution.getArea().getIdInVocabulary())) {
-                                return distribution;
-                            }
-                        }else{
-                            if (column.getText().equalsIgnoreCase(distribution.getArea().getTitleCache())) {
-                                return distribution;
-                            }
+                        if (distribution.getArea().getUuid().equals(areaUuid)){
+                            return distribution;
+
                         }
                     }
                 }
@@ -200,6 +248,10 @@ public final class DistributionEditingSupportE4 extends EditingSupport {
                 if (areaIndex == columnIndex){
                     NamedArea area = (NamedArea) term;
                     Distribution distribution = Distribution.NewInstance(area, occurenceStatus);
+                    if (editor.getDefaultSource() != null){
+                        DescriptionElementSource source = DescriptionElementSource.NewPrimarySourceInstance(editor.getDefaultSource(), "");
+                        distribution.addSource(source);
+                    }
                     Set<TaxonDescription> descriptions = taxon.getDescriptions();
                     if (!descriptions.isEmpty()) {
                         for (TaxonDescription desc : descriptions) {
diff --git a/eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/view/checklist/e4/DistributionEditorColumnViewerEditorActivationStrategy.java b/eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/view/checklist/e4/DistributionEditorColumnViewerEditorActivationStrategy.java
new file mode 100755 (executable)
index 0000000..decdb1a
--- /dev/null
@@ -0,0 +1,74 @@
+/**
+* Copyright (C) 2018 EDIT
+* European Distributed Institute of Taxonomy
+* http://www.e-taxonomy.eu
+*
+* The contents of this file are subject to the Mozilla Public License Version 1.1
+* See LICENSE.TXT at the top of this package for the full license terms.
+*/
+package eu.etaxonomy.taxeditor.editor.view.checklist.e4;
+
+import org.eclipse.jface.viewers.ColumnViewer;
+import org.eclipse.jface.viewers.ColumnViewerEditorActivationStrategy;
+import org.eclipse.jface.viewers.ViewerCell;
+import org.eclipse.swt.events.KeyEvent;
+import org.eclipse.swt.events.KeyListener;
+
+/**
+ * @author k.luther
+ * @since 17.10.2018
+ *
+ */
+public class DistributionEditorColumnViewerEditorActivationStrategy extends ColumnViewerEditorActivationStrategy {
+
+    private KeyListener customkeyboardActivationListener;
+    /**
+     * @param viewer
+     */
+    public DistributionEditorColumnViewerEditorActivationStrategy(ColumnViewer viewer) {
+        super(viewer);
+        // TODO Auto-generated constructor stub
+    }
+
+    /**
+     * Enable activation of cell editors by keyboard
+     *
+     * @param enable
+     *            <code>true</code> to enable
+     */
+    @Override
+    public void setEnableEditorActivationWithKeyboard(boolean enable) {
+        super.setEnableEditorActivationWithKeyboard(enable);
+        if (enable) {
+            if (customkeyboardActivationListener == null) {
+                customkeyboardActivationListener = new KeyListener() {
+
+                    @Override
+                    public void keyPressed(KeyEvent e) {
+
+                    }
+
+                    @Override
+                    public void keyReleased(KeyEvent e) {
+                        ViewerCell cell = getFocusCell();
+
+//                        if (cell != null) {
+//                        getViewer().getColumnViewerEditor().handleEditorActivationEvent(new ColumnViewerEditorActivationEvent(
+//                                cell, e));
+//                        }
+                    }
+
+                };
+                getViewer().getControl().addKeyListener(customkeyboardActivationListener);
+            }
+        }
+    }
+
+    /**
+     * @return the cell holding the current focus
+     */
+    private ViewerCell getFocusCell() {
+        return getViewer().getColumnViewerEditor().getFocusCell();
+    }
+
+}
index f29d141bafed86b17b85a094d969e27230c1f153..88ad2da27aa7d06e9b871469782aa1fcf65e8bae 100644 (file)
@@ -28,6 +28,7 @@ import eu.etaxonomy.taxeditor.operation.AbstractPostTaxonOperation;
 import eu.etaxonomy.taxeditor.operation.IPostOperationEnabled;\r
 import eu.etaxonomy.taxeditor.store.CdmStore;\r
 import eu.etaxonomy.taxeditor.store.StoreUtil;\r
+import eu.etaxonomy.taxeditor.store.internal.TaxeditorStorePlugin;\r
 \r
 /**\r
  * @author l.morris\r
@@ -69,12 +70,20 @@ public class DeleteTermBaseOperation extends AbstractPostTaxonOperation {
 \r
                        DeleteResult result =   CdmStore.getService(IVocabularyService.class).delete(termBase.getUuid());\r
                        if (!result.isOk()){\r
-                               StringBuffer errorString = new StringBuffer();\r
-                               for (Exception e:result.getExceptions()){\r
-                                       errorString.append(e.getMessage() + System.lineSeparator());\r
-                               }\r
-                               MessageDialog.openWarning(null, "Delete failed", errorString.toString());\r
-                       }\r
+                StringBuffer errorString = new StringBuffer();\r
+                for (Exception e:result.getExceptions()){\r
+                    errorString.append(e.getMessage() + System.lineSeparator());\r
+                }\r
+                if (result.isAbort()){\r
+                    MessageDialog.openWarning(null, "Delete failed", errorString.toString());\r
+                }else{\r
+                    if (result.getExceptions().iterator().hasNext()){\r
+                        MessagingUtils.errorDialog("Delete failed", this.getClass(),null, TaxeditorStorePlugin.PLUGIN_ID, result.getExceptions().iterator().next(), true);\r
+                    }else{\r
+                        MessageDialog.openWarning(null, "Delete failed", errorString.toString());\r
+                    }\r
+                }\r
+            }\r
 \r
                } else if (termBase instanceof DefinedTermBase) {\r
 \r
@@ -99,7 +108,15 @@ public class DeleteTermBaseOperation extends AbstractPostTaxonOperation {
                 for (Exception e:result.getExceptions()){\r
                     errorString.append(e.getMessage() + System.lineSeparator());\r
                 }\r
-                MessageDialog.openWarning(null, "Delete failed", errorString.toString());\r
+                if (result.isAbort()){\r
+                    MessageDialog.openWarning(null, "Delete failed", errorString.toString());\r
+                }else{\r
+                    if (result.getExceptions().iterator().hasNext()){\r
+                        MessagingUtils.errorDialog("Delete failed", this.getClass(),null, TaxeditorStorePlugin.PLUGIN_ID, result.getExceptions().iterator().next(), true);\r
+                    }else{\r
+                        MessageDialog.openWarning(null, "Delete failed", errorString.toString());\r
+                    }\r
+                }\r
             }\r
                }\r
 \r
index 9c46e6ae04e8ac9d4e7a875513c40ac9f77e7dd7..5198de1bfa5751974318490483ee35b342d1186d 100644 (file)
@@ -272,7 +272,7 @@ public class PreferencesUtil implements IPreferenceKeys {
         try{
             if(CdmStore.isActive()){
                 controller = CdmStore.getCurrentApplicationConfiguration();
-                PrefKey key = CdmPreference.NewKey(PreferenceSubject.NewDatabaseInstance(), predicate);
+                PrefKey key = CdmPreference.NewKey(PreferenceSubject.NewTaxEditorInstance(), predicate);
                 pref = controller.getPreferenceService().find(key);
             }
         }catch(Exception e){
index f71c5910455b1efb8f2848165b71a8d407adf43d..4daec9f20fee5137f5b2349582d94b1659746906 100755 (executable)
@@ -22,7 +22,6 @@ import eu.etaxonomy.cdm.api.conversation.IConversationEnabled;
 import eu.etaxonomy.cdm.model.common.DefinedTermBase;
 import eu.etaxonomy.cdm.model.metadata.CdmPreference;
 import eu.etaxonomy.cdm.model.metadata.PreferencePredicate;
-import eu.etaxonomy.cdm.model.metadata.PreferenceSubject;
 import eu.etaxonomy.cdm.persistence.hibernate.CdmDataChangeMap;
 import eu.etaxonomy.taxeditor.preference.PreferencesUtil;
 import eu.etaxonomy.taxeditor.store.CdmStore;
@@ -125,10 +124,11 @@ public class AvailableDistributionStatusWizard extends Wizard implements IConver
                 }
             }
            String saveCheckedElements = StringUtils.join(listUIIDChecked, ";");
-           pref = CdmPreference.NewInstance(PreferenceSubject.NewTaxEditorInstance(), PreferencePredicate.AvailableDistributionStatus, saveCheckedElements);
+           pref = CdmPreference.NewTaxEditorInstance(PreferencePredicate.AvailableDistributionStatus, saveCheckedElements);
 
            PreferencesUtil.setPreferenceToDB(pref);
            CdmStore.getTermManager().setPreferredTerms(preferredTerms, aPage.getVocabularies().get(0).getTerms());
+           PreferencesUtil.firePreferencesChanged(this.getClass());
            return true;
     }
 
index 350d8bc0b1952b052cd059695c951716202f65bd..64d732182f89c41c5a34390c14489ad2000b0171 100644 (file)
@@ -84,7 +84,7 @@ public class AvailableDistributionWizard extends Wizard implements IConversation
             IPreferenceStore preferenceStore = PreferencesUtil.getPreferenceStore();
             //ToDo, if whole vocabulary is selected, save the vocabulary not all areas
 
-            PreferencesUtil.setPreferredNamedAreasForDistributionEditor(saveCheckedElements, saveGrayedElements, false);
+           // PreferencesUtil.setPreferredNamedAreasForDistributionEditor(saveCheckedElements, saveGrayedElements, false);
             preferenceStore.setValue(PreferencesUtil.DISTRIBUTION_AREA_OCCURENCE_STATUS, saveCheckedElements);
             preferenceStore.setValue(PreferencesUtil.DISTRIBUTION_AREA_OCCURENCE_STATUS_GRAYED, saveGrayedElements);
             return true;