Project

General

Profile

Download (4.65 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

    
58
	    Composite composite = new Composite(parent, SWT.NULL);
59
        composite.setLayout(new GridLayout());
60
        final CLabel description = new CLabel(composite, SWT.NULL);
61
        description.setText(Messages.NomenclaturalCodePreferences_description);
62
        nomenclaturalCode= new Combo(composite, SWT.READ_ONLY);
63
        nomenclaturalCode.setText(Messages.NomenclaturalCodePreferences_available_codes);
64

    
65

    
66

    
67
        nomenclaturalCode.setFont(parent.getFont());
68
        getLabelAndValues();
69
        keyAndIndex = new HashMap<>();
70
        Integer index = 0;
71
        for (String key: labelAndValues.keySet()) {
72
            nomenclaturalCode.add(labelAndValues.get(key));
73
            keyAndIndex.put(key, index);
74
            index++;
75
        }
76
        index = keyAndIndex.get(actualCode);
77
        nomenclaturalCode.select(index);
78

    
79
        nomenclaturalCode.addSelectionListener(new SelectionAdapter() {
80
            @Override
81
            public void widgetSelected(SelectionEvent evt) {
82
                String name = nomenclaturalCode.getText();
83
                for (Entry<String, String> label:labelAndValues.entrySet()){
84
                    if (label.getValue().equals(name)){
85
                        actualCode = label.getKey();
86
                    }
87
                }
88
//                actualCode = labelAndValues.get(name);;
89

    
90

    
91
            }
92
        });
93

    
94
        return composite;
95

    
96
	}
97

    
98
	/**
99
	 * @return
100
	 */
101
	private Map<String, String> getLabelAndValues() {
102
		List<NomenclaturalCode> supportedCodes = NomenclaturalCodeHelper
103
				.getSupportedCodes();
104
		labelAndValues = new HashMap<>();
105
		for (int i = 0; i < supportedCodes.size(); i++) {
106
			labelAndValues.put(PreferencesUtil.getPreferenceKey(supportedCodes.get(i)), NomenclaturalCodeHelper
107
                    .getDescription(supportedCodes.get(i))) ;
108

    
109
		}
110
		return labelAndValues;
111
	}
112

    
113
	/**
114
	 * {@inheritDoc}
115
	 *
116
	 * Initialize the preference page
117
	 */
118
    @Override
119
    public void init() {
120
        super.init();
121
        if(!CdmStore.isActive()){
122
            return;
123
        }
124
	      ICdmRepository controller = CdmStore.getCurrentApplicationConfiguration();
125
          if (controller != null){
126
              IPreferenceService service = controller.getPreferenceService();
127
              PrefKey key = CdmPreference.NewKey(PreferenceSubject.NewDatabaseInstance(), PreferencePredicate.NomenclaturalCode);
128
              CdmPreference pref = service.find(key);
129
              if (pref != null){
130
                  actualCode = pref.getValue();
131

    
132
              }else{
133
                  actualCode = PreferencesUtil.getPreferenceKey(PreferencesUtil.getPreferredNomenclaturalCode());
134
              }
135
          }
136

    
137

    
138
	}
139

    
140
	@Override
141
	 public boolean performOk() {
142

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

    
147
        return true;
148
    }
149

    
150
}
(9-9/12)