Project

General

Profile

Download (4.5 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
import org.eclipse.jface.preference.FieldEditorPreferencePage;
16
import org.eclipse.ui.IWorkbench;
17
import org.eclipse.ui.IWorkbenchPreferencePage;
18

    
19
import eu.etaxonomy.cdm.api.application.ICdmApplicationConfiguration;
20
import eu.etaxonomy.cdm.api.service.IPreferenceService;
21
import eu.etaxonomy.cdm.model.metadata.CdmPreference;
22
import eu.etaxonomy.cdm.model.metadata.CdmPreference.PrefKey;
23
import eu.etaxonomy.cdm.model.metadata.PreferencePredicate;
24
import eu.etaxonomy.cdm.model.metadata.PreferenceSubject;
25
import eu.etaxonomy.cdm.model.name.NomenclaturalCode;
26
import eu.etaxonomy.taxeditor.model.NomenclaturalCodeHelper;
27
import eu.etaxonomy.taxeditor.preference.IPreferenceKeys;
28
import eu.etaxonomy.taxeditor.preference.PreferencesUtil;
29
import eu.etaxonomy.taxeditor.store.CdmStore;
30
import eu.etaxonomy.taxeditor.store.internal.TaxeditorStorePlugin;
31

    
32
/**
33
 * <p>
34
 * NomenclaturalCodePreferences class.
35
 * </p>
36
 *
37
 * @author p.ciardelli
38
 * @created 16.09.2008
39
 */
40
public class NomenclaturalCodePreferences extends FieldEditorPreferencePage
41
		implements IWorkbenchPreferencePage {
42

    
43
	@Override
44
	protected void createFieldEditors() {
45
	    PreferencesUtil.setPreferredNomenclaturalCode(null, false);
46
	    if (getPreferenceStore().getBoolean(IPreferenceKeys.ALLOW_OVERRIDE_NOMENCLATURAL_CODE_KEY)) {
47
	        addField(new ComboFieldEditor(
48
				IPreferenceKeys.PREFERRED_NOMENCLATURAL_CODE_KEY,
49
				"Available Codes", getLabelAndValues(),
50
				getFieldEditorParent()));
51

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

    
60
	}
61

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

    
78
	/**
79
	 * {@inheritDoc}
80
	 *
81
	 * Initialize the preference page
82
	 */
83
	@Override
84
    public void init(IWorkbench workbench) {
85

    
86
	        setPreferenceStore(TaxeditorStorePlugin.getDefault()
87
				.getPreferenceStore());
88

    
89
	      ICdmApplicationConfiguration controller = CdmStore.getCurrentApplicationConfiguration();
90
          if (controller != null){
91
              IPreferenceService service = controller.getPreferenceService();
92
              PrefKey key = CdmPreference.NewKey(PreferenceSubject.NewDatabaseInstance(), PreferencePredicate.NomenclaturalCode);
93
              CdmPreference pref = service.find(key);
94
              getPreferenceStore().setValue(IPreferenceKeys.ALLOW_OVERRIDE_NOMENCLATURAL_CODE_KEY, pref == null? true : pref.isAllowOverride());
95
          }
96

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

    
102
	    }
103
	}
104

    
105
	@Override
106
	 public boolean performOk() {
107

    
108
		boolean result = super.performOk();
109
//		if (result){
110
//			String value = getPreferenceStore().getString(IPreferenceKeys.PREFERRED_NOMENCLATURAL_CODE_KEY);
111
//			CdmPreference pref = CdmPreference.NewDatabaseInstance( PreferencePredicate.NomenclaturalCode, value);
112
//			ICdmApplicationConfiguration controller = CdmStore.getCurrentApplicationConfiguration();
113
//			if (controller == null){
114
//				return false;
115
//			}
116
//			IPreferenceService service = controller.getPreferenceService();
117
//			service.set(pref);
118
//		}
119
        return result;
120
    }
121

    
122
}
(13-13/20)