X-Git-Url: https://dev.e-taxonomy.eu/gitweb/taxeditor.git/blobdiff_plain/0c7f7de706cf544d43ff88dd70e06681c5c6ce59..30ab88dd1436260d3cc5a3a12b051b291bfbad7c:/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/preference/wizard/AbstractTermSelectionWizardPage.java diff --git a/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/preference/wizard/AbstractTermSelectionWizardPage.java b/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/preference/wizard/AbstractTermSelectionWizardPage.java old mode 100755 new mode 100644 index 903f225ac..370189e3f --- a/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/preference/wizard/AbstractTermSelectionWizardPage.java +++ b/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/preference/wizard/AbstractTermSelectionWizardPage.java @@ -8,22 +8,29 @@ */ 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.viewers.ColumnViewer; +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.TermBase; -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.TermVocabularyDto; +import eu.etaxonomy.taxeditor.editor.definedterm.DefinedTermSorter; +import eu.etaxonomy.taxeditor.editor.definedterm.TermDtoContentProvider; +import eu.etaxonomy.taxeditor.editor.definedterm.TermDtoLabelProvider; import eu.etaxonomy.taxeditor.store.CdmStore; /** @@ -31,79 +38,60 @@ import eu.etaxonomy.taxeditor.store.CdmStore; * @since 04.06.2018 * */ -public abstract class AbstractTermSelectionWizardPage extends WizardPage { +public abstract class AbstractTermSelectionWizardPage extends WizardPage { - private ColumnViewer viewer; - private List> vocabularies = new ArrayList<>(); + protected CheckBoxTreeComposite treeComposite; + private List vocabularies = new ArrayList<>(); boolean localPref; - List listCheckedTerms = new ArrayList<>(); - List listGrayedTerms = new ArrayList<>(); + protected CdmPreference pref; + protected boolean override; - TermType type; + protected TermType type; - /** - * @param pageName - */ protected AbstractTermSelectionWizardPage(String pageName, TermType type) { super(pageName); - // TODO check if configuration exists - CdmStore.getCurrentSessionManager().bindNullSession(); this.type = type; + } - /** - * {@inheritDoc} - */ @Override - public abstract void createControl(Composite parent) ; - - public ColumnViewer getViewer() { - return viewer; + public void createControl(Composite parent){ + parent.setLayout(new GridLayout()); + treeComposite = new CheckBoxTreeComposite(parent, new TermDtoContentProvider(), new TermDtoLabelProvider(), SWT.NONE); + treeComposite.getViewer().setComparator(new DefinedTermSorter()); + rememberCheckedValues(getCheckedValuesFromPreferences()); + treeComposite.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true, 1, 1)); + setControl(treeComposite); } - public void setViewer(ColumnViewer viewer) { - this.viewer = viewer; + protected abstract String getCheckedValuesFromPreferences(); + + public CheckboxTreeViewer getViewer(){ + return treeComposite.getViewer(); } - public List> getVocabularies() { + public List getVocabularies() { return vocabularies; } - public void addVocabularies(TermVocabulary vocabulary) { + public void addVocabularies(TermVocabularyDto vocabulary) { this.vocabularies.add(vocabulary); } + protected void setVocabularies(List vocs) { - /** - * @param vocs - */ - protected void setVocabularies(List> vocs) { - for (TermVocabulary voc:vocs){ - vocabularies.add(voc); - } - } - - public List getListCheckedTerms() { - return listCheckedTerms; + vocabularies = vocs; } - public List getListGrayedTerms() { - return listGrayedTerms; + public CdmPreference getPreference() { + return pref; } - protected void rememberCheckedValues(String checkedValues, String grayedValues) { + protected void rememberCheckedValues(String checkedValues) { initialiseVocabularies(); - getViewer().setInput(getVocabularies()); - - if (grayedValues != null && grayedValues != "") { //$NON-NLS-1$ - String[] arrayGrayed = grayedValues.split(";"); //$NON-NLS-1$ - List listGrayed = Arrays.asList(arrayGrayed); - if (listGrayedTerms == null){ - listGrayedTerms = new ArrayList(); - } - getTermsFromStringValues(listGrayed, this.listGrayedTerms); - } + treeComposite.getViewer().setInput(getVocabularies()); + List termsFromStringValues = null; if (checkedValues != null && checkedValues != "") { //$NON-NLS-1$ String[] listChecked = checkedValues.split(";"); //$NON-NLS-1$ String[] listCheckedComma = checkedValues.split(","); //$NON-NLS-1$ @@ -114,53 +102,61 @@ public abstract class AbstractTermSelectionWizardPage extends WizardPage { if (listCheckedComma != null && checkedValues.contains(",")){ //$NON-NLS-1$ checked = Arrays.asList(listCheckedComma); } - if (listCheckedTerms == null){ - listCheckedTerms = new ArrayList(); + termsFromStringValues = getTermsFromStringValues(checked); + if (termsFromStringValues != null){ + treeComposite.setCheckedElements(termsFromStringValues.toArray()); } - getTermsFromStringValues(checked, listCheckedTerms); } - } - - /** - * @param split - * @param termlist - */ - private void getTermsFromStringValues(List listValue, List termlist) { - - for (String s : listValue) { - if (!StringUtils.isBlank(s)){ - UUID uuid = UUID.fromString(s); - ITermService termService = CdmStore.getService(ITermService.class); - DefinedTermBase definedTermBase = termService.load(uuid); - if(definedTermBase != null){ - termlist.add(definedTermBase); - }else{ - IVocabularyService vocabularyService = CdmStore.getService(IVocabularyService.class); - TermVocabulary termVocabulary = vocabularyService.load(uuid); - termlist.add(termVocabulary); - } + if (termsFromStringValues == null){ + termsFromStringValues = getTermsFromStringValues(new ArrayList()); + if (termsFromStringValues != null){ + treeComposite.setCheckedElements(termsFromStringValues.toArray()); } } } + protected void initialiseVocabularies() { if (getVocabularies() != null) { getVocabularies().clear(); } - List> vocs = new ArrayList<>(); - if (localPref){ - vocs = getVocabulariesFromPreference(); + List vocs = new ArrayList<>(); + vocs = CdmStore.getService(IVocabularyService.class).findVocabularyDtoByTermType(type); - }else{ - vocs = CdmStore.getService(IVocabularyService.class).findByTermType( - type, null); - } setVocabularies(vocs); } - protected abstract List> getVocabulariesFromPreference(); + protected abstract List getVocabulariesFromPreference(); + + /** + * @param listValue + * @return + */ + protected abstract List getTermsFromStringValues(List 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; + } + }