2 * Copyright (C) 2020 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
.eclipse
.swt
.SWT
;
12 import org
.eclipse
.swt
.events
.SelectionAdapter
;
13 import org
.eclipse
.swt
.events
.SelectionEvent
;
14 import org
.eclipse
.swt
.events
.SelectionListener
;
15 import org
.eclipse
.swt
.layout
.GridData
;
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
;
20 import org
.eclipse
.swt
.widgets
.Label
;
22 import eu
.etaxonomy
.cdm
.model
.metadata
.CdmPreference
;
23 import eu
.etaxonomy
.cdm
.model
.metadata
.CdmPreference
.PrefKey
;
24 import eu
.etaxonomy
.cdm
.model
.metadata
.PreferencePredicate
;
25 import eu
.etaxonomy
.cdm
.model
.metadata
.PreferenceSubject
;
26 import eu
.etaxonomy
.taxeditor
.l10n
.Messages
;
27 import eu
.etaxonomy
.taxeditor
.preference
.menu
.CdmPreferencePage
;
33 public class IOPreferences
extends CdmPreferencePage
implements SelectionListener
{
35 protected Boolean isShowIOMenu
;
36 protected CdmPreference showIOMenuPref
;
37 protected boolean isAllowOverrideShowIOMenu
;
38 protected boolean isOverrideShowIOMenu
;
40 protected Combo showIOMenuButton
;
41 protected Button allowOverrideShowIOMenuButton
;
44 protected Control
createContents(Composite parent
) {
46 final Composite composite
= createComposite(parent
);
48 GridData gridData
= createTextGridData();
49 if (!isAdminPreference
&& showIOMenuPref
!= null && !showIOMenuPref
.isAllowOverride() ) {
50 Label label
= new Label(composite
, SWT
.NONE
);
52 "The CDM settings don't allow to set the preferences for using the distribution editor locally. If you need to make local settings, please ask an administrator.");
53 this.setDefaultButtonActivated(false);
55 Label separator
= new Label(composite
, SWT
.HORIZONTAL
| SWT
.SEPARATOR
);
56 separator
.setLayoutData(gridData
);
57 separator
.setVisible(false);
58 showIOMenuButton
= createBooleanCombo(composite
, SHOW
, DO_NOT_SHOW
, PreferencePredicate
.ShowImportExportMenu
, "Show Export/Import Menu",
62 for (String itemLabel
: showIOMenuButton
.getItems()) {
63 if (isShowIOMenu
== null && itemLabel
.startsWith(Messages
.Preference_Use_Default
)) {
64 showIOMenuButton
.select(index
);
67 if (isShowIOMenu
!= null && itemLabel
.equals(SHOW
) && isShowIOMenu
){
68 showIOMenuButton
.select(index
);
71 if (isShowIOMenu
!= null && itemLabel
.equals(DO_NOT_SHOW
) && !isShowIOMenu
){
72 showIOMenuButton
.select(index
);
78 showIOMenuButton
.addSelectionListener(this);
81 if (isAdminPreference
){
82 allowOverrideShowIOMenuButton
= createAllowOverrideButton(composite
);
83 allowOverrideShowIOMenuButton
.addSelectionListener(new SelectionAdapter(){
85 public void widgetSelected(SelectionEvent e
) {
86 isAllowOverrideShowIOMenu
= allowOverrideShowIOMenuButton
.getSelection();
90 allowOverrideShowIOMenuButton
.setSelection(isAllowOverrideShowIOMenu
);
93 if(!isAdminPreference
){
94 if (!isAllowOverrideShowIOMenu
){
95 showIOMenuButton
.setEnabled(false);
104 public boolean performOk() {
109 if (isAllowOverrideShowIOMenu
){
110 if (isShowIOMenu
!= null){
111 PreferencesUtil
.setBooleanValue(PreferencePredicate
.ShowImportExportMenu
.getKey(), isShowIOMenu
);
113 PreferencesUtil
.setBooleanValue(PreferencesUtil
.prefOverrideKey(PreferencePredicate
.ShowImportExportMenu
.getKey()), isOverrideShowIOMenu
);
122 protected void getValues(){
123 isAdminPreference
= false;
125 CdmPreferenceCache cache
= CdmPreferenceCache
.instance();
126 isOverrideShowIOMenu
= PreferencesUtil
.getBooleanValue(PreferencesUtil
.prefOverrideKey(PreferencePredicate
.ShowImportExportMenu
.getKey()), true) != null?
127 PreferencesUtil
.getBooleanValue(PreferencesUtil
.prefOverrideKey(PreferencePredicate
.ShowImportExportMenu
.getKey()), true): false;
128 if (isOverrideShowIOMenu
){
129 isShowIOMenu
= PreferencesUtil
.getBooleanValue(PreferencePredicate
.ShowImportExportMenu
.getKey(), true);
133 PrefKey key
= CdmPreference
.NewKey(PreferenceSubject
.NewTaxEditorInstance(), PreferencePredicate
.ShowImportExportMenu
);
134 showIOMenuPref
= cache
.findBestMatching(key
);
135 if (showIOMenuPref
!= null){
136 isAllowOverrideShowIOMenu
= showIOMenuPref
.isAllowOverride();
138 isAllowOverrideShowIOMenu
= true;
144 public void widgetSelected(SelectionEvent e
) {
146 if (e
.getSource().equals(this.showIOMenuButton
)) {
147 String text
= showIOMenuButton
.getText();
148 if (text
.startsWith(Messages
.Preference_Use_Default
)){
149 isOverrideShowIOMenu
= false;
152 }else if (text
.equals(SHOW
)){
154 isOverrideShowIOMenu
= true;
157 isShowIOMenu
= false;
158 isOverrideShowIOMenu
= true;
164 protected void performDefaults() {
165 isOverrideShowIOMenu
= false;
171 protected void setSelections(){
172 if (isShowIOMenu
== null || (!isOverrideShowIOMenu
&& !isAdminPreference
)){
173 showIOMenuButton
.select(0);
176 showIOMenuButton
.select(1);
178 showIOMenuButton
.select(2);
181 if (isAdminPreference
){
182 allowOverrideShowIOMenuButton
.setSelection(isAllowOverrideShowIOMenu
);
187 public void widgetDefaultSelected(SelectionEvent e
) {
188 // TODO Auto-generated method stub