Project

General

Profile

Download (4.14 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.preference.menu;
10

    
11
import java.util.List;
12

    
13
import org.eclipse.jface.preference.BooleanFieldEditor;
14
import org.eclipse.jface.preference.ComboFieldEditor;
15

    
16
import eu.etaxonomy.cdm.api.application.ICdmRepository;
17
import eu.etaxonomy.cdm.api.service.IPreferenceService;
18
import eu.etaxonomy.cdm.model.metadata.CdmPreference;
19
import eu.etaxonomy.cdm.model.metadata.CdmPreference.PrefKey;
20
import eu.etaxonomy.cdm.model.metadata.PreferencePredicate;
21
import eu.etaxonomy.cdm.model.metadata.PreferenceSubject;
22
import eu.etaxonomy.cdm.model.name.NomenclaturalCode;
23
import eu.etaxonomy.taxeditor.model.NomenclaturalCodeHelper;
24
import eu.etaxonomy.taxeditor.preference.IPreferenceKeys;
25
import eu.etaxonomy.taxeditor.preference.PreferencesUtil;
26
import eu.etaxonomy.taxeditor.store.CdmStore;
27

    
28
/**
29
 * <p>
30
 * NomenclaturalCodePreferences class.
31
 * </p>
32
 *
33
 * @author p.ciardelli
34
 * @created 16.09.2008
35
 */
36
public class NomenclaturalCodePreferences extends FieldEditorPreferencePageE4 {
37

    
38
	@Override
39
	protected void createFieldEditors() {
40
	    PreferencesUtil.setPreferredNomenclaturalCode(null, false);
41
	    if (getPreferenceStore().getBoolean(IPreferenceKeys.ALLOW_OVERRIDE_NOMENCLATURAL_CODE_KEY)) {
42
	        addField(new ComboFieldEditor(
43
				IPreferenceKeys.PREFERRED_NOMENCLATURAL_CODE_KEY,
44
				"Available Codes", getLabelAndValues(),
45
				getFieldEditorParent()));
46

    
47
            addField(new BooleanFieldEditor(
48
                    IPreferenceKeys.OVERRIDE_NOMENCLATURAL_CODE_KEY,
49
                    "Use local nomenclatural code",
50
                    getFieldEditorParent()));
51
        } else {
52
            setDescription("The CDM settings don't allow to set the nomenclatural code locally. If you need to make local settings, please ask an administrator.");
53
        }
54

    
55
	}
56

    
57
	/**
58
	 * @return
59
	 */
60
	private String[][] getLabelAndValues() {
61
		List<NomenclaturalCode> supportedCodes = NomenclaturalCodeHelper
62
				.getSupportedCodes();
63
		String[][] labelAndValues = new String[supportedCodes.size()][2];
64
		for (int i = 0; i < supportedCodes.size(); i++) {
65
			labelAndValues[i][0] = NomenclaturalCodeHelper
66
					.getDescription(supportedCodes.get(i));
67
			labelAndValues[i][1] = PreferencesUtil
68
					.getPreferenceKey(supportedCodes.get(i));
69
		}
70
		return labelAndValues;
71
	}
72

    
73
	/**
74
	 * {@inheritDoc}
75
	 *
76
	 * Initialize the preference page
77
	 */
78
    @Override
79
    public void init() {
80
        super.init();
81
	      ICdmRepository controller = CdmStore.getCurrentApplicationConfiguration();
82
          if (controller != null){
83
              IPreferenceService service = controller.getPreferenceService();
84
              PrefKey key = CdmPreference.NewKey(PreferenceSubject.NewDatabaseInstance(), PreferencePredicate.NomenclaturalCode);
85
              CdmPreference pref = service.find(key);
86
              getPreferenceStore().setValue(IPreferenceKeys.ALLOW_OVERRIDE_NOMENCLATURAL_CODE_KEY, pref == null? true : pref.isAllowOverride());
87
          }
88

    
89
	    if (getPreferenceStore().getBoolean(IPreferenceKeys.ALLOW_OVERRIDE_NOMENCLATURAL_CODE_KEY)) {
90
	        setDescription("Choose which nomenclatural code you would like to use in your local application for scientific names unless otherwise specified.");
91
	    }else{
92
	        setDescription("The CDM settings don't allow to set the nomenclatural code locally. If you need to make local settings, please ask an administrator.");
93

    
94
	    }
95
	}
96

    
97
	@Override
98
	 public boolean performOk() {
99

    
100
		boolean result = super.performOk();
101
//		if (result){
102
//			String value = getPreferenceStore().getString(IPreferenceKeys.PREFERRED_NOMENCLATURAL_CODE_KEY);
103
//			CdmPreference pref = CdmPreference.NewDatabaseInstance( PreferencePredicate.NomenclaturalCode, value);
104
//			ICdmRepository controller = CdmStore.getCurrentApplicationConfiguration();
105
//			if (controller == null){
106
//				return false;
107
//			}
108
//			IPreferenceService service = controller.getPreferenceService();
109
//			service.set(pref);
110
//		}
111
        return result;
112
    }
113

    
114
}
(14-14/21)