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;
* @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;
}
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();
}
}
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$
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();
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;
+ }
}