ref #8562: add admin preference page for multilanguage support
[taxeditor.git] / eu.etaxonomy.taxeditor.store / src / main / java / eu / etaxonomy / taxeditor / preference / wizard / AbstractTermSelectionWizardPage.java
index bf3e7b76cc3807bb123e638d182dd043cb9516f4..370189e3f65212e5014c27f5aa23fdcce71d92b0 100755 (executable)
@@ -12,23 +12,21 @@ package eu.etaxonomy.taxeditor.preference.wizard;
 import java.util.ArrayList;
 import java.util.Arrays;
 import java.util.List;
-import java.util.UUID;
 
-import org.apache.commons.lang.StringUtils;
-import org.eclipse.jface.layout.GridLayoutFactory;
 import org.eclipse.jface.viewers.CheckboxTreeViewer;
 import org.eclipse.jface.wizard.WizardPage;
 import org.eclipse.swt.SWT;
+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 eu.etaxonomy.cdm.api.service.ITermService;
 import eu.etaxonomy.cdm.api.service.IVocabularyService;
-import eu.etaxonomy.cdm.model.common.DefinedTermBase;
-import eu.etaxonomy.cdm.model.common.TermType;
-import eu.etaxonomy.cdm.model.common.TermVocabulary;
+import eu.etaxonomy.cdm.model.metadata.CdmPreference;
+import eu.etaxonomy.cdm.model.term.TermType;
 import eu.etaxonomy.cdm.persistence.dto.AbstractTermDto;
-import eu.etaxonomy.cdm.persistence.dto.TermDto;
 import eu.etaxonomy.cdm.persistence.dto.TermVocabularyDto;
 import eu.etaxonomy.taxeditor.editor.definedterm.DefinedTermSorter;
 import eu.etaxonomy.taxeditor.editor.definedterm.TermDtoContentProvider;
@@ -40,18 +38,18 @@ import eu.etaxonomy.taxeditor.store.CdmStore;
  * @since 04.06.2018
  *
  */
-public abstract class AbstractTermSelectionWizardPage extends WizardPage {
+public abstract class AbstractTermSelectionWizardPage<T extends AbstractTermDto> extends WizardPage {
 
     protected CheckBoxTreeComposite treeComposite;
     private List<TermVocabularyDto> vocabularies = new ArrayList<>();
     boolean localPref;
+    protected CdmPreference pref;
+    protected boolean override;
 
     protected TermType type;
 
     protected AbstractTermSelectionWizardPage(String pageName, TermType type) {
         super(pageName);
-        // TODO check if configuration exists
-       // CdmStore.getCurrentSessionManager().bindNullSession();
         this.type = type;
 
     }
@@ -62,13 +60,13 @@ public abstract class AbstractTermSelectionWizardPage extends WizardPage {
         treeComposite = new CheckBoxTreeComposite(parent, new TermDtoContentProvider(), new TermDtoLabelProvider(), SWT.NONE);
         treeComposite.getViewer().setComparator(new DefinedTermSorter());
         rememberCheckedValues(getCheckedValuesFromPreferences());
-        GridLayoutFactory.fillDefaults().applyTo(treeComposite);
+        treeComposite.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true, 1, 1));
         setControl(treeComposite);
     }
 
     protected abstract String getCheckedValuesFromPreferences();
 
-    protected CheckboxTreeViewer getViewer(){
+    public CheckboxTreeViewer getViewer(){
         return treeComposite.getViewer();
     }
 
@@ -81,14 +79,19 @@ public abstract class AbstractTermSelectionWizardPage extends WizardPage {
     }
 
     protected void setVocabularies(List<TermVocabularyDto> vocs) {
+
         vocabularies = vocs;
     }
 
+    public CdmPreference getPreference() {
+        return pref;
+    }
+
     protected void rememberCheckedValues(String checkedValues) {
         initialiseVocabularies();
 
         treeComposite.getViewer().setInput(getVocabularies());
-
+        List<T> termsFromStringValues = null;
         if (checkedValues != null && checkedValues != "") { //$NON-NLS-1$
             String[] listChecked = checkedValues.split(";"); //$NON-NLS-1$
             String[] listCheckedComma = checkedValues.split(","); //$NON-NLS-1$
@@ -99,44 +102,22 @@ public abstract class AbstractTermSelectionWizardPage extends WizardPage {
             if (listCheckedComma != null && checkedValues.contains(",")){ //$NON-NLS-1$
                 checked = Arrays.asList(listCheckedComma);
             }
-            List<AbstractTermDto> termsFromStringValues = getTermsFromStringValues(checked);
-            treeComposite.setCheckedElements(termsFromStringValues.toArray());
-
-        }else{
-            List<AbstractTermDto> termsFromStringValues = getTermsFromStringValues(new ArrayList<String>());
-            treeComposite.setCheckedElements(termsFromStringValues.toArray());
-        }
-    }
-
-    protected List<AbstractTermDto> getTermsFromStringValues(List<String> listValue) {
-        List<AbstractTermDto> termlist = new ArrayList<>();
-        ITermService termService = CdmStore.getService(ITermService.class);
-        for (String s : listValue) {
-            if (!StringUtils.isBlank(s)){
-                UUID uuid = UUID.fromString(s);
-
-                DefinedTermBase definedTermBase = termService.load(uuid);
-                if(definedTermBase != null){
-                    termlist.add(TermDto.fromTerm(definedTermBase, true));
-                }else{
-                    IVocabularyService vocabularyService = CdmStore.getService(IVocabularyService.class);
-                    TermVocabulary termVocabulary = vocabularyService.load(uuid);
-                    if (termVocabulary != null){
-                        termlist.add(new TermVocabularyDto(uuid, termVocabulary.getRepresentations()));
-                    }
-                }
+            termsFromStringValues = getTermsFromStringValues(checked);
+            if (termsFromStringValues != null){
+                treeComposite.setCheckedElements(termsFromStringValues.toArray());
             }
+
         }
-        if (listValue.isEmpty()){
-            List<DefinedTermBase> terms = CdmStore.getTermManager().getPreferredTerms(type);
-            for (DefinedTermBase term: terms){
-                termlist.add(TermDto.fromTerm(term, true));
+        if (termsFromStringValues == null){
+            termsFromStringValues = getTermsFromStringValues(new ArrayList<String>());
+            if (termsFromStringValues != null){
+                treeComposite.setCheckedElements(termsFromStringValues.toArray());
             }
         }
-
-        return termlist;
     }
 
+
+
     protected void initialiseVocabularies() {
         if (getVocabularies() != null) {
             getVocabularies().clear();
@@ -149,5 +130,33 @@ public abstract class AbstractTermSelectionWizardPage extends WizardPage {
 
     protected abstract List<TermVocabularyDto> getVocabulariesFromPreference();
 
+    /**
+     * @param listValue
+     * @return
+     */
+    protected abstract List<T> getTermsFromStringValues(List<String> listValue);
+
+    protected Button createAllowOverrideButton(Composite parent) {
+       Button activateCheckButton = new Button(parent, SWT.CHECK);
+       if (localPref){
+           activateCheckButton.setText("Override");
+           activateCheckButton.setSelection(override);
+       }else{
+           activateCheckButton.setText("Allow Override");
+           activateCheckButton.setSelection(override);
+       }
+
+
+
+        activateCheckButton.addSelectionListener(new SelectionAdapter(){
+                @Override
+                public void widgetSelected(SelectionEvent e) {
+                    pref.setAllowOverride(activateCheckButton.getSelection());
+                    override = activateCheckButton.getSelection();
+
+                }
+            });
+        return activateCheckButton;
+    }
 
 }