Project

General

Profile

Download (5.34 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
    String actualCode = null;
49
    Map<String, String>  labelAndValues;
50
    Map<String, Integer> keyAndIndex;
51
    Combo nomenclaturalCode;
52

    
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 = pref.getValue();
66

    
67
            }else{
68
                actualCode = PreferencesUtil.getPreferenceKey(PreferencesUtil.getPreferredNomenclaturalCode());
69
            }
70
            allowOverride = pref.isAllowOverride();
71
        }
72

    
73
	    Composite composite = createComposite(parent);
74

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

    
81

    
82

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

    
97
        nomenclaturalCode.addSelectionListener(new SelectionAdapter() {
98
            @Override
99
            public void widgetSelected(SelectionEvent evt) {
100
                String name = nomenclaturalCode.getText();
101
                for (Entry<String, String> label:labelAndValues.entrySet()){
102
                    if (label.getValue().equals(name)){
103
                        actualCode = label.getKey();
104
                    }
105
                }
106
//                actualCode = labelAndValues.get(name);;
107

    
108

    
109
            }
110
        });
111
        Button allowOverrideButton = createAllowOverrideButton(composite);
112
        allowOverrideButton.setText(Messages.GeneralPreference_allowOverride);
113
        allowOverrideButton.setSelection(allowOverride);
114
        allowOverrideButton.addSelectionListener(new SelectionAdapter(){
115
            @Override
116
            public void widgetSelected(SelectionEvent e) {
117
                allowOverride = allowOverrideButton.getSelection();
118
            }
119
        });
120

    
121
        return composite;
122

    
123
	}
124

    
125
	/**
126
	 * @return
127
	 */
128
	private Map<String, 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(PreferencesUtil.getPreferenceKey(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

    
159
	    if (actualCode != null){
160
	        CdmPreference pref = CdmPreference.NewDatabaseInstance(PreferencePredicate.NomenclaturalCode, actualCode);
161
	        pref.setAllowOverride(allowOverride);
162
	        PreferencesUtil.setPreferredNomenclaturalCode(pref);
163
	    }
164

    
165
        return true;
166
    }
167

    
168
}
(10-10/13)