Project

General

Profile

Download (6.79 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 java.util.ArrayList;
12
import java.util.List;
13

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

    
24
import eu.etaxonomy.cdm.model.metadata.CdmPreference;
25
import eu.etaxonomy.cdm.model.metadata.PreferencePredicate;
26
import eu.etaxonomy.cdm.model.metadata.PublishEnum;
27
import eu.etaxonomy.taxeditor.l10n.Messages;
28
import eu.etaxonomy.taxeditor.preference.menu.CdmPreferencePage;
29

    
30
/**
31
 * @author k.luther
32
 * @since 08.01.2019
33
 *
34
 */
35
public class PublishFlagLocalPreference extends CdmPreferencePage {
36

    
37
    protected PublishEnum publishBehaviour;
38

    
39
    protected Combo publishFlagBehaviour;
40
    protected CdmPreference pref = null;
41
    Button allowOverrideButton;
42

    
43
    protected boolean allowOverride;
44
    private boolean override = true;
45

    
46

    
47
   @Override
48
   public void init() {
49
       super.init();
50

    
51

    
52
   }
53
    /**
54
     * {@inheritDoc}
55
     */
56
    @Override
57
    protected Control createContents(Composite parent) {
58
        getValues();
59
        pref = PreferencesUtil.getPreferenceFromDB(PreferencePredicate.DefaultBehaviourForPublishFlag);
60
        if (pref == null){
61
            pref = CdmPreference.NewTaxEditorInstance(PreferencePredicate.DefaultBehaviourForPublishFlag, PreferencePredicate.DefaultBehaviourForPublishFlag.getDefaultValue().toString());
62
        }
63
        allowOverride = pref.isAllowOverride();
64
        Composite composite = createComposite(parent);
65

    
66
        if (!allowOverride && !isAdminPreference){
67
            final CLabel description = new CLabel(composite, SWT.NULL);
68
            description.setText(Messages.PublishFlagPreference_description_not_allowed);
69
            description.setLayoutData(createTextGridData());
70
            return composite;
71
        }
72

    
73

    
74
//        description.setText(Messages.PublishFlagPreference_description);
75
//        description.setLayoutData(createTextGridData());
76
//        publishFlagBehaviour = new Combo(composite, SWT.READ_ONLY);
77
        List<String> enumValues = new ArrayList();
78

    
79
        publishFlagBehaviour = createCombo(composite, PublishEnum.values(), PreferencePredicate.DefaultBehaviourForPublishFlag, Messages.PublishFlagPreference_description, isAdminPreference);
80

    
81
//        publishFlagBehaviour.setFont(parent.getFont());
82
//        for(PublishEnum display: PublishEnum.values()){
83
//            if (pref.getValue().equals(display.getKey())){
84
//                publishFlagBehaviour.add(display.getLabel() + " (Default)");
85
//            }
86
//            else
87
//        }
88

    
89
        publishFlagBehaviour.addSelectionListener(new SelectionListener() {
90

    
91
            @Override
92
            public void widgetSelected(SelectionEvent e) {
93
                setApply(true);
94
                if (!publishFlagBehaviour.getText().startsWith(Messages.Preference_Use_Default)){
95
                    publishBehaviour = (PublishEnum)publishFlagBehaviour.getData(publishFlagBehaviour.getText());
96
                }else{
97
                    publishBehaviour = null;
98
                }
99
                if (isAdminPreference){
100
                    allowOverrideButton.setSelection(allowOverride);
101
                }
102
            }
103

    
104
            @Override
105
            public void widgetDefaultSelected(SelectionEvent e) {
106
                // TODO Auto-generated method stub
107

    
108
            }
109
        });
110
        if (this.isAdminPreference){
111
            allowOverrideButton = createAllowOverrideButton(composite);
112
            allowOverrideButton.setText(Messages.GeneralPreference_override);
113
            allowOverrideButton.setSelection(allowOverride);
114
            allowOverrideButton.addSelectionListener(new SelectionAdapter(){
115
                @Override
116
                public void widgetSelected(SelectionEvent e) {
117
                    allowOverride = !allowOverride;
118
                    setApply(true);
119
                    }
120
            });
121
        }
122
        int index = 0;
123

    
124
        if(publishBehaviour==null){
125
            publishFlagBehaviour.select(0);
126
        }
127
        else{
128
            for (String itemLabel : publishFlagBehaviour.getItems()){
129
                if (itemLabel.startsWith(publishBehaviour.getLabel())){
130
                    publishFlagBehaviour.select(index);
131
                    break;
132
                }
133
                index++;
134
            }
135
        }
136

    
137
        return composite;
138

    
139
    }
140

    
141

    
142
    @Override
143
    public boolean performOk() {
144
        if (publishBehaviour != null){
145
            String text = publishFlagBehaviour.getText();
146
            for (PublishEnum display: PublishEnum.values()){
147
                if (text.startsWith(display.getLabel())){
148
                    text = display.getKey();
149
                    break;
150
                }
151
            }
152
            PreferencesUtil.setStringValue(PreferencePredicate.DefaultBehaviourForPublishFlag.getKey(), text);
153
            if (pref == null || !pref.getValue().equals(text)){
154
                PreferencesUtil.setBooleanValue(PreferencesUtil.prefOverrideKey(PreferencePredicate.DefaultBehaviourForPublishFlag.getKey()), true);
155
            }
156
        }else{
157
            PreferencesUtil.setBooleanValue(PreferencesUtil.prefOverrideKey(PreferencePredicate.DefaultBehaviourForPublishFlag.getKey()), false);
158
        }
159
        return true;
160
    }
161

    
162
    @Override
163
    public void getValues(){
164
        publishBehaviour = null;
165
        try{
166
            String publishString = PreferencesUtil.getStringValue(PreferencePredicate.DefaultBehaviourForPublishFlag.getKey(), true);
167

    
168
            if (publishString != null){
169
                publishBehaviour = PublishEnum.valueOf(publishString);
170
            }
171
        }catch (IllegalArgumentException e){
172
            publishBehaviour = PublishEnum.InheritFromParent;
173
        }
174

    
175
        override = PreferencesUtil.getBooleanValue(PreferencesUtil.prefOverrideKey(PreferencePredicate.DefaultBehaviourForPublishFlag.getKey()));
176
        if (!override){
177
            publishBehaviour = null;
178
        }
179
    }
180

    
181
    @Override
182
    protected void performDefaults() {
183
        publishBehaviour = null;
184
        allowOverride = true;
185
        int index = 0;
186

    
187
        for (String itemLabel : publishFlagBehaviour.getItems()){
188
            if (itemLabel.startsWith(Messages.Preference_Use_Default)){
189
                publishFlagBehaviour.select(index);
190
                break;
191
            }
192
            index++;
193
        }
194
        allowOverrideButton.setSelection(allowOverride);
195
        super.performDefaults();
196
    }
197

    
198

    
199
}
(38-38/52)