Project

General

Profile

Download (4.67 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.layout.GridLayout;
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

    
54
	@Override
55
	protected Control createContents(Composite parent) {
56
//	    PreferencesUtil.setPreferredNomenclaturalCode(null, false);
57
	    ICdmRepository controller = CdmStore.getCurrentApplicationConfiguration();
58
        if (controller != null){
59
            IPreferenceService service = controller.getPreferenceService();
60
            PrefKey key = CdmPreference.NewKey(PreferenceSubject.NewDatabaseInstance(), PreferencePredicate.NomenclaturalCode);
61
            CdmPreference pref = service.find(key);
62
            if (pref != null){
63
                actualCode = pref.getValue();
64

    
65
            }else{
66
                actualCode = PreferencesUtil.getPreferenceKey(PreferencesUtil.getPreferredNomenclaturalCode());
67
            }
68
        }
69
	    Composite composite = new Composite(parent, SWT.NULL);
70
        composite.setLayout(new GridLayout());
71
        final CLabel description = new CLabel(composite, SWT.NULL);
72
        description.setText(Messages.NomenclaturalCodePreferences_description);
73
        nomenclaturalCode= new Combo(composite, SWT.READ_ONLY);
74
        nomenclaturalCode.setText(Messages.NomenclaturalCodePreferences_available_codes);
75

    
76

    
77

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

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

    
103

    
104
            }
105
        });
106

    
107
        return composite;
108

    
109
	}
110

    
111
	/**
112
	 * @return
113
	 */
114
	private Map<String, String> getLabelAndValues() {
115
		List<NomenclaturalCode> supportedCodes = NomenclaturalCodeHelper
116
				.getSupportedCodes();
117
		labelAndValues = new HashMap<>();
118
		for (int i = 0; i < supportedCodes.size(); i++) {
119
			labelAndValues.put(PreferencesUtil.getPreferenceKey(supportedCodes.get(i)), NomenclaturalCodeHelper
120
                    .getDescription(supportedCodes.get(i))) ;
121

    
122
		}
123
		return labelAndValues;
124
	}
125

    
126
	/**
127
	 * {@inheritDoc}
128
	 *
129
	 * Initialize the preference page
130
	 */
131
    @Override
132
    public void init() {
133
        super.init();
134
        if(!CdmStore.isActive()){
135
            return;
136
        }
137

    
138

    
139

    
140
	}
141

    
142
	@Override
143
	 public boolean performOk() {
144

    
145
	    if (actualCode != null){
146
	        PreferencesUtil.setPreferredNomenclaturalCode(actualCode, false);
147
	    }
148

    
149
        return true;
150
    }
151

    
152
}
(10-10/13)