Project

General

Profile

Download (5.89 KB) Statistics
| Branch: | Tag: | Revision:
1
/**
2
 * Copyright (C) 2007 EDIT
3
 * European Distributed Institute of Taxonomy
4
 * http://www.e-taxonomy.eu
5
 *
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.
8
 */
9
package eu.etaxonomy.taxeditor.databaseAdmin.preferencePage;
10

    
11
import java.util.HashMap;
12
import java.util.List;
13
import java.util.Map;
14
import java.util.Map.Entry;
15

    
16
import org.eclipse.swt.SWT;
17
import org.eclipse.swt.custom.CLabel;
18
import org.eclipse.swt.events.SelectionAdapter;
19
import org.eclipse.swt.events.SelectionEvent;
20
import org.eclipse.swt.widgets.Button;
21
import org.eclipse.swt.widgets.Combo;
22
import org.eclipse.swt.widgets.Composite;
23
import org.eclipse.swt.widgets.Control;
24

    
25
import eu.etaxonomy.cdm.api.application.ICdmRepository;
26
import eu.etaxonomy.cdm.api.service.IPreferenceService;
27
import eu.etaxonomy.cdm.model.metadata.CdmPreference;
28
import eu.etaxonomy.cdm.model.metadata.CdmPreference.PrefKey;
29
import eu.etaxonomy.cdm.model.metadata.PreferencePredicate;
30
import eu.etaxonomy.cdm.model.metadata.PreferenceSubject;
31
import eu.etaxonomy.cdm.model.name.NomenclaturalCode;
32
import eu.etaxonomy.taxeditor.l10n.Messages;
33
import eu.etaxonomy.taxeditor.model.NomenclaturalCodeHelper;
34
import eu.etaxonomy.taxeditor.preference.PreferencesUtil;
35
import eu.etaxonomy.taxeditor.preference.menu.CdmPreferencePage;
36
import eu.etaxonomy.taxeditor.store.CdmStore;
37

    
38
/**
39
 * <p>
40
 * NomenclaturalCodePreferences class.
41
 * </p>
42
 *
43
 * @author k.luther
44
 * @created 14.09.2018
45
 */
46
public class NomenclaturalCodePreferences extends CdmPreferencePage implements IE4AdminPreferencePage{
47

    
48
    NomenclaturalCode actualCode = null;
49
    Map<NomenclaturalCode, String>  labelAndValues;
50
    Map<NomenclaturalCode, Integer> keyAndIndex;
51
    Combo nomenclaturalCode;
52
    Button allowOverrideButton;
53
    boolean allowOverride;
54

    
55

    
56
	@Override
57
	protected Control createContents(Composite parent) {
58
//	    PreferencesUtil.setPreferredNomenclaturalCode(null, false);
59
	    ICdmRepository controller = CdmStore.getCurrentApplicationConfiguration();
60
        if (controller != null){
61
            IPreferenceService service = controller.getPreferenceService();
62
            PrefKey key = CdmPreference.NewKey(PreferenceSubject.NewDatabaseInstance(), PreferencePredicate.NomenclaturalCode);
63
            CdmPreference pref = service.find(key);
64
            if (pref != null){
65
                actualCode = NomenclaturalCode.fromString(pref.getValue());
66
                allowOverride = pref.isAllowOverride();
67
            }else{
68
                actualCode = NomenclaturalCode.fromString(PreferencePredicate.NomenclaturalCode.getDefaultValue().toString());
69
                allowOverride = true;
70
            }
71

    
72
        }
73

    
74
	    Composite composite = createComposite(parent);
75

    
76
        final CLabel description = new CLabel(composite, SWT.NULL);
77
        description.setText(Messages.NomenclaturalCodePreferences_description);
78
        description.setLayoutData(createTextGridData());
79
        nomenclaturalCode= new Combo(composite, SWT.READ_ONLY);
80
        nomenclaturalCode.setText(Messages.NomenclaturalCodePreferences_available_codes);
81

    
82

    
83

    
84
        nomenclaturalCode.setFont(parent.getFont());
85
        getLabelAndValues();
86
        keyAndIndex = new HashMap<>();
87
        Integer index = 0;
88
        for (NomenclaturalCode key: labelAndValues.keySet()) {
89
            nomenclaturalCode.add(labelAndValues.get(key));
90
            keyAndIndex.put(key, index);
91
            index++;
92
        }
93
        index = keyAndIndex.get(actualCode);
94
        if(index!=null){
95
            nomenclaturalCode.select(index);
96
        }
97

    
98
        nomenclaturalCode.addSelectionListener(new SelectionAdapter() {
99
            @Override
100
            public void widgetSelected(SelectionEvent evt) {
101
                setApply(true);
102
                String name = nomenclaturalCode.getText();
103
                for (Entry<NomenclaturalCode, String> label:labelAndValues.entrySet()){
104
                    if (label.getValue().equals(name)){
105
                        actualCode = label.getKey();
106
                    }
107
                }
108
            }
109
        });
110
        Button allowOverrideButton = createAllowOverrideButton(composite);
111
        allowOverrideButton.setText(Messages.GeneralPreference_allowOverride);
112
        allowOverrideButton.setSelection(allowOverride);
113
        allowOverrideButton.addSelectionListener(new SelectionAdapter(){
114
            @Override
115
            public void widgetSelected(SelectionEvent e) {
116
                allowOverride = allowOverrideButton.getSelection();
117
                setApply(true);
118
            }
119
        });
120

    
121
        return composite;
122

    
123
	}
124

    
125
	/**
126
	 * @return
127
	 */
128
	private Map<NomenclaturalCode, String> getLabelAndValues() {
129
		List<NomenclaturalCode> supportedCodes = NomenclaturalCodeHelper
130
				.getSupportedCodes();
131
		labelAndValues = new HashMap<>();
132
		for (int i = 0; i < supportedCodes.size(); i++) {
133
			labelAndValues.put(supportedCodes.get(i), NomenclaturalCodeHelper
134
                    .getDescription(supportedCodes.get(i))) ;
135

    
136
		}
137
		return labelAndValues;
138
	}
139

    
140
	/**
141
	 * {@inheritDoc}
142
	 *
143
	 * Initialize the preference page
144
	 */
145
    @Override
146
    public void init() {
147
        super.init();
148
        if(!CdmStore.isActive()){
149
            return;
150
        }
151

    
152

    
153

    
154
	}
155

    
156
	@Override
157
	 public boolean performOk() {
158
	    if (!isApply()){
159
            return true;
160
        }
161
	    CdmPreference pref = CdmPreference.NewDatabaseInstance(PreferencePredicate.NomenclaturalCode, actualCode.toString());
162
	    pref.setAllowOverride(allowOverride);
163
	    PreferencesUtil.setPreferredNomenclaturalCode(pref);
164

    
165
        return true;
166
    }
167

    
168
	@Override
169
	protected void performDefaults() {
170
	    actualCode = (NomenclaturalCode)PreferencePredicate.NomenclaturalCode.getDefaultValue();
171
	    allowOverride = true;
172
	    Integer index = keyAndIndex.get(actualCode);
173
        if(index!=null){
174
            nomenclaturalCode.select(index);
175
        }
176
        allowOverrideButton.setSelection(allowOverride);
177
	    super.performDefaults();
178
	}
179

    
180
}
(10-10/13)