2 * Copyright (C) 2019 EDIT
3 * European Distributed Institute of Taxonomy
4 * http://www.e-taxonomy.eu
6 * The contents of this file are subject to the Mozilla Public License Version 1.1
7 * See LICENSE.TXT at the top of this package for the full license terms.
9 package eu
.etaxonomy
.taxeditor
.preference
;
11 import org
.apache
.commons
.lang
.StringUtils
;
12 import org
.eclipse
.jface
.layout
.GridLayoutFactory
;
13 import org
.eclipse
.swt
.events
.SelectionAdapter
;
14 import org
.eclipse
.swt
.events
.SelectionEvent
;
15 import org
.eclipse
.swt
.events
.SelectionListener
;
16 import org
.eclipse
.swt
.widgets
.Button
;
17 import org
.eclipse
.swt
.widgets
.Combo
;
18 import org
.eclipse
.swt
.widgets
.Composite
;
19 import org
.eclipse
.swt
.widgets
.Control
;
21 import eu
.etaxonomy
.cdm
.api
.application
.ICdmRepository
;
22 import eu
.etaxonomy
.cdm
.ext
.geo
.CondensedDistributionRecipe
;
23 import eu
.etaxonomy
.cdm
.model
.metadata
.CdmPreference
;
24 import eu
.etaxonomy
.cdm
.model
.metadata
.CdmPreference
.PrefKey
;
25 import eu
.etaxonomy
.cdm
.model
.metadata
.PreferencePredicate
;
26 import eu
.etaxonomy
.cdm
.model
.metadata
.PreferenceSubject
;
27 import eu
.etaxonomy
.taxeditor
.l10n
.Messages
;
28 import eu
.etaxonomy
.taxeditor
.preference
.menu
.CdmPreferencePage
;
29 import eu
.etaxonomy
.taxeditor
.store
.CdmStore
;
36 public class DistributionGeneralPreference
extends CdmPreferencePage
implements SelectionListener
{
37 protected CdmPreference preferenceCondensedDistribtionRecipe
;
38 protected boolean isAllowOverrideCondensedDistributionRecipe
;
39 protected boolean isOverrideCondensedDistributionRecipe
;
40 Combo comboDistributionStringRecipe
;
41 Button allowOverrideDistributionStringRecipe
;
42 protected CondensedDistributionRecipe recipe
;
46 protected Control
createContents(Composite parent
) {
48 Composite composite
= createComposite(parent
);
49 comboDistributionStringRecipe
= createCombo(composite
, CondensedDistributionRecipe
.values(), PreferencePredicate
.CondensedDistributionRecipe
, "Condensed Distribution String recipe", isAdminPreference
);
51 // GridData gridData = new GridData(GridData.BEGINNING, GridData.CENTER, true, false);
52 // gridData.horizontalIndent = 9;
53 // comboDistributionStringRecipe.setLayoutData(gridData);
54 GridLayoutFactory
.fillDefaults();
56 comboDistributionStringRecipe
.addSelectionListener(this);
57 // comboDistributionStringRecipe.setEnabled((isExportCondensedDistribution != null && isExportCondensedDistribution )|| (isExportCondensedDistribution == null) && Boolean.valueOf(preferenceIsExportCondensedDistribution.getValue()));
60 for (String itemLabel
: comboDistributionStringRecipe
.getItems()) {
61 if (itemLabel
.startsWith(Messages
.Preference_Use_Default
) && recipe
== null){
62 comboDistributionStringRecipe
.select(index
);
65 if (itemLabel
.equals(recipe
.getLabel())) {
66 comboDistributionStringRecipe
.select(index
);
72 if (isAdminPreference
){
73 allowOverrideDistributionStringRecipe
= createAllowOverrideButton(composite
);
74 allowOverrideDistributionStringRecipe
.setSelection(this.preferenceCondensedDistribtionRecipe
!= null?
this.preferenceCondensedDistribtionRecipe
.isAllowOverride(): true);
75 allowOverrideDistributionStringRecipe
.addSelectionListener(new SelectionAdapter() {
77 public void widgetSelected(SelectionEvent e
) {
79 isAllowOverrideCondensedDistributionRecipe
= !isAllowOverrideCondensedDistributionRecipe
;
83 comboDistributionStringRecipe
.setEnabled(isAllowOverrideCondensedDistributionRecipe
);
91 protected void getValues(){
92 isAdminPreference
= false;
93 ICdmRepository controller
;
94 controller
= CdmStore
.getCurrentApplicationConfiguration();
95 PrefKey key
= CdmPreference
.NewKey(PreferenceSubject
.NewDatabaseInstance(), PreferencePredicate
.CondensedDistributionRecipe
);
96 preferenceCondensedDistribtionRecipe
= controller
.getPreferenceService().find(key
);
98 if (preferenceCondensedDistribtionRecipe
!= null ){
99 isAllowOverrideCondensedDistributionRecipe
= preferenceCondensedDistribtionRecipe
.isAllowOverride();
101 preferenceCondensedDistribtionRecipe
= CdmPreference
.NewDatabaseInstance(PreferencePredicate
.CondensedDistributionRecipe
,
102 PreferencePredicate
.CondensedDistributionRecipe
.getDefaultValue() != null? PreferencePredicate
.CondensedDistributionRecipe
.getDefaultValue().toString(): null);
103 isAllowOverrideCondensedDistributionRecipe
= true;
106 isOverrideCondensedDistributionRecipe
= PreferencesUtil
.getBooleanValue(
107 PreferencesUtil
.prefOverrideKey(PreferencePredicate
.CondensedDistributionRecipe
.getKey()), true) != null? PreferencesUtil
.getBooleanValue(
108 PreferencesUtil
.prefOverrideKey(PreferencePredicate
.CondensedDistributionRecipe
.getKey()), true):false;
110 if (isAllowOverrideCondensedDistributionRecipe
&& isOverrideCondensedDistributionRecipe
){
111 String configString
= PreferencesUtil
.getStringValue(PreferencePredicate
.CondensedDistributionRecipe
.getKey(), true);
112 if (StringUtils
.isNotBlank(configString
)){
113 recipe
= CondensedDistributionRecipe
.valueOf(configString
);
116 if (preferenceCondensedDistribtionRecipe
.getValue() != null){
117 recipe
= CondensedDistributionRecipe
.valueOf(preferenceCondensedDistribtionRecipe
.getValue());
123 public void widgetSelected(SelectionEvent e
) {
125 if (e
.getSource().equals(this.comboDistributionStringRecipe
)){
126 int selIndex
= comboDistributionStringRecipe
.getSelectionIndex();
128 isOverrideCondensedDistributionRecipe
= false;
130 isOverrideCondensedDistributionRecipe
= true;
132 recipe
= (CondensedDistributionRecipe
) comboDistributionStringRecipe
.getData(comboDistributionStringRecipe
.getText());
139 public void widgetDefaultSelected(SelectionEvent e
) {
140 // TODO Auto-generated method stub
145 public boolean performOk() {
150 if(isOverrideCondensedDistributionRecipe
){
151 PreferencesUtil
.setStringValue(PreferencePredicate
.CondensedDistributionRecipe
.getKey(), recipe
.getKey());
152 PreferencesUtil
.setBooleanValue(PreferencesUtil
.prefOverrideKey(PreferencePredicate
.CondensedDistributionRecipe
.getKey()), isOverrideCondensedDistributionRecipe
);
154 PreferencesUtil
.setBooleanValue( PreferencesUtil
.prefOverrideKey(PreferencePredicate
.CondensedDistributionRecipe
.getKey()), isOverrideCondensedDistributionRecipe
);