*/
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;
/**
* @since 04.06.2018
*
*/
-public abstract class AbstractTermSelectionWizardPage extends WizardPage {
+public abstract class AbstractTermSelectionWizardPage<T extends AbstractTermDto> extends WizardPage {
- private ColumnViewer viewer;
- private List<TermVocabulary<DefinedTermBase>> vocabularies = new ArrayList<>();
+ protected CheckBoxTreeComposite treeComposite;
+ private List<TermVocabularyDto> vocabularies = new ArrayList<>();
boolean localPref;
- List<TermBase> listCheckedTerms = new ArrayList<>();
- List<TermBase> 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<TermVocabulary<DefinedTermBase>> getVocabularies() {
+ public List<TermVocabularyDto> getVocabularies() {
return vocabularies;
}
- public void addVocabularies(TermVocabulary<DefinedTermBase> vocabulary) {
+ public void addVocabularies(TermVocabularyDto vocabulary) {
this.vocabularies.add(vocabulary);
}
+ protected void setVocabularies(List<TermVocabularyDto> vocs) {
- /**
- * @param vocs
- */
- protected void setVocabularies(List<TermVocabulary<DefinedTermBase>> vocs) {
- for (TermVocabulary voc:vocs){
- vocabularies.add(voc);
- }
- }
-
- public List<TermBase> getListCheckedTerms() {
- return listCheckedTerms;
+ vocabularies = vocs;
}
- public List<TermBase> 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<String> listGrayed = Arrays.asList(arrayGrayed);
- if (listGrayedTerms == null){
- listGrayedTerms = new ArrayList();
- }
- getTermsFromStringValues(listGrayed, this.listGrayedTerms);
- }
+ 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$
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<String> listValue, List<TermBase> 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<String>());
+ if (termsFromStringValues != null){
+ treeComposite.setCheckedElements(termsFromStringValues.toArray());
}
}
}
+
protected void initialiseVocabularies() {
if (getVocabularies() != null) {
getVocabularies().clear();
}
- List<TermVocabulary<DefinedTermBase>> vocs = new ArrayList<>();
- if (localPref){
- vocs = getVocabulariesFromPreference();
+ List<TermVocabularyDto> vocs = new ArrayList<>();
+ vocs = CdmStore.getService(IVocabularyService.class).findVocabularyDtoByTermType(type);
- }else{
- vocs = CdmStore.getService(IVocabularyService.class).findByTermType(
- type, null);
- }
setVocabularies(vocs);
}
- protected abstract List<TermVocabulary<DefinedTermBase>> getVocabulariesFromPreference();
+ 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;
+ }
+
}