Project

General

Profile

Download (4.62 KB) Statistics
| Branch: | Tag: | Revision:
1
/**
2
* Copyright (C) 2019 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;
10

    
11
import org.eclipse.swt.SWT;
12
import org.eclipse.swt.custom.CLabel;
13
import org.eclipse.swt.events.SelectionAdapter;
14
import org.eclipse.swt.events.SelectionEvent;
15
import org.eclipse.swt.events.SelectionListener;
16
import org.eclipse.swt.widgets.Button;
17
import org.eclipse.swt.widgets.Combo;
18
import org.eclipse.swt.widgets.Composite;
19
import org.eclipse.swt.widgets.Control;
20

    
21
import eu.etaxonomy.cdm.model.metadata.CdmPreference;
22
import eu.etaxonomy.cdm.model.metadata.PreferencePredicate;
23
import eu.etaxonomy.cdm.model.metadata.PublishEnum;
24
import eu.etaxonomy.taxeditor.l10n.Messages;
25
import eu.etaxonomy.taxeditor.preference.menu.CdmPreferencePage;
26

    
27
/**
28
 * @author k.luther
29
 * @since 08.01.2019
30
 *
31
 */
32
public class PublishFlagLocalPreference extends CdmPreferencePage {
33

    
34
    protected PublishEnum publishBehaviour;
35

    
36
    protected Combo publishFlagBehaviour;
37
    protected CdmPreference pref = null;
38

    
39
    protected boolean allowOverride;
40

    
41

    
42
   @Override
43
   public void init() {
44
       super.init();
45

    
46

    
47
   }
48
    /**
49
     * {@inheritDoc}
50
     */
51
    @Override
52
    protected Control createContents(Composite parent) {
53
        getValues();
54
        pref = PreferencesUtil.getPreferenceFromDB(PreferencePredicate.DefaultBehaviourForPublishFlag);
55
        if (pref == null){
56
            pref = CdmPreference.NewTaxEditorInstance(PreferencePredicate.DefaultBehaviourForPublishFlag, PreferencePredicate.DefaultBehaviourForPublishFlag.getDefaultValue().toString());
57
        }
58
        allowOverride = pref.isAllowOverride();
59
        Composite composite = createComposite(parent);
60
        final CLabel description = new CLabel(composite, SWT.NULL);
61
        if (!allowOverride && !isAdminPreference){
62
            description.setText(Messages.PublishFlagPreference_description_not_allowed);
63
            description.setLayoutData(createTextGridData());
64
            return composite;
65
        }
66

    
67

    
68
        description.setText(Messages.PublishFlagPreference_description);
69
        description.setLayoutData(createTextGridData());
70
        publishFlagBehaviour = new Combo(composite, SWT.READ_ONLY);
71

    
72
        publishFlagBehaviour.setFont(parent.getFont());
73
        for(PublishEnum display: PublishEnum.values()){
74
            publishFlagBehaviour.add(display.getLabel());
75
        }
76

    
77
        publishFlagBehaviour.addSelectionListener(new SelectionListener() {
78

    
79
            @Override
80
            public void widgetSelected(SelectionEvent e) {
81
                setApply(true);
82
            }
83

    
84
            @Override
85
            public void widgetDefaultSelected(SelectionEvent e) {
86
                // TODO Auto-generated method stub
87

    
88
            }
89
        });
90
        Button allowOverrideButton = createAllowOverrideButton(composite);
91
        allowOverrideButton.setText(Messages.GeneralPreference_override);
92
        allowOverrideButton.setSelection(allowOverride);
93
        allowOverrideButton.addSelectionListener(new SelectionAdapter(){
94
            @Override
95
            public void widgetSelected(SelectionEvent e) {
96
                allowOverride = !allowOverride;
97
                setApply(true);
98
                }
99
        });
100

    
101
        int index = 0;
102

    
103

    
104
        for (String itemLabel : publishFlagBehaviour.getItems()){
105
            if (itemLabel.equalsIgnoreCase(publishBehaviour.getLabel())){
106
                publishFlagBehaviour.select(index);
107
                break;
108
            }
109
            index++;
110
        }
111

    
112
        return composite;
113

    
114
    }
115

    
116

    
117
    @Override
118
    public boolean performOk() {
119
        if (publishFlagBehaviour != null){
120
            String text = publishFlagBehaviour.getText();
121
            for (PublishEnum display: PublishEnum.values()){
122
                if (display.getLabel().equals(text)){
123
                    text = display.getKey();
124
                    break;
125
                }
126
            }
127
            PreferencesUtil.setStringValue(PreferencePredicate.DefaultBehaviourForPublishFlag.getKey(), text);
128
            PreferencesUtil.setBooleanValue(PreferencesUtil.prefOverrideKey(PreferencePredicate.DefaultBehaviourForPublishFlag.getKey()), allowOverride);
129
        }
130
        return true;
131
    }
132

    
133
    @Override
134
    public void getValues(){
135

    
136
        try{
137
            publishBehaviour = PublishEnum.valueOf(PreferencesUtil.getStringValue(PreferencePredicate.DefaultBehaviourForPublishFlag.getKey(), true));
138
        }catch (IllegalArgumentException e){
139
            publishBehaviour = PublishEnum.InheritFromParent;
140
        }
141
    }
142

    
143

    
144
}
(29-29/41)