fix #8648: simplify name details view
[taxeditor.git] / eu.etaxonomy.taxeditor.store / src / main / java / eu / etaxonomy / taxeditor / preference / PublishFlagLocalPreference.java
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 Button allowOverrideButton;
39
40 protected boolean allowOverride;
41 private boolean override = true;
42
43
44 @Override
45 public void init() {
46 super.init();
47
48
49 }
50 /**
51 * {@inheritDoc}
52 */
53 @Override
54 protected Control createContents(Composite parent) {
55 getValues();
56 pref = PreferencesUtil.getPreferenceFromDB(PreferencePredicate.DefaultBehaviourForPublishFlag);
57 if (pref == null){
58 pref = CdmPreference.NewTaxEditorInstance(PreferencePredicate.DefaultBehaviourForPublishFlag, PreferencePredicate.DefaultBehaviourForPublishFlag.getDefaultValue().toString());
59 }
60 allowOverride = pref.isAllowOverride();
61 Composite composite = createComposite(parent);
62
63 if (!allowOverride && !isAdminPreference){
64 final CLabel description = new CLabel(composite, SWT.NULL);
65 description.setText(Messages.PublishFlagPreference_description_not_allowed);
66 description.setLayoutData(createTextGridData());
67 return composite;
68 }
69
70 publishFlagBehaviour = createCombo(composite, PublishEnum.values(), PreferencePredicate.DefaultBehaviourForPublishFlag, Messages.PublishFlagPreference_description, isAdminPreference);
71 publishFlagBehaviour.addSelectionListener(new SelectionListener() {
72
73 @Override
74 public void widgetSelected(SelectionEvent e) {
75 setApply(true);
76 if (!publishFlagBehaviour.getText().startsWith(Messages.Preference_Use_Default)){
77 publishBehaviour = (PublishEnum)publishFlagBehaviour.getData(publishFlagBehaviour.getText());
78 }else{
79 publishBehaviour = null;
80 }
81
82 }
83
84 @Override
85 public void widgetDefaultSelected(SelectionEvent e) {
86 // TODO Auto-generated method stub
87
88 }
89 });
90 if (this.isAdminPreference){
91 allowOverrideButton = createAllowOverrideButton(composite);
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 if(publishBehaviour==null){
104 publishFlagBehaviour.select(0);
105 }
106 else{
107 for (String itemLabel : publishFlagBehaviour.getItems()){
108 if (itemLabel.startsWith(publishBehaviour.getLabel())){
109 publishFlagBehaviour.select(index);
110 break;
111 }
112 index++;
113 }
114 }
115
116 return composite;
117
118 }
119
120
121 @Override
122 public boolean performOk() {
123 if (isApply()){
124 if (publishBehaviour != null){
125 String text = publishFlagBehaviour.getText();
126 for (PublishEnum display: PublishEnum.values()){
127 if (text.startsWith(display.getLabel())){
128 text = display.getKey();
129 break;
130 }
131 }
132 PreferencesUtil.setStringValue(PreferencePredicate.DefaultBehaviourForPublishFlag.getKey(), text);
133 if (pref == null || !pref.getValue().equals(text)){
134 PreferencesUtil.setBooleanValue(PreferencesUtil.prefOverrideKey(PreferencePredicate.DefaultBehaviourForPublishFlag.getKey()), true);
135 }
136 }else{
137 PreferencesUtil.setBooleanValue(PreferencesUtil.prefOverrideKey(PreferencePredicate.DefaultBehaviourForPublishFlag.getKey()), false);
138 }
139 }
140 return true;
141 }
142
143 @Override
144 public void getValues(){
145 publishBehaviour = null;
146 try{
147 String publishString = PreferencesUtil.getStringValue(PreferencePredicate.DefaultBehaviourForPublishFlag.getKey(), true);
148
149 if (publishString != null){
150 publishBehaviour = PublishEnum.valueOf(publishString);
151 }
152 }catch (IllegalArgumentException e){
153 publishBehaviour = PublishEnum.InheritFromParent;
154 }
155
156 override = PreferencesUtil.getBooleanValue(PreferencesUtil.prefOverrideKey(PreferencePredicate.DefaultBehaviourForPublishFlag.getKey()));
157 if (!override){
158 publishBehaviour = null;
159 }
160 }
161
162 @Override
163 protected void performDefaults() {
164 publishBehaviour = null;
165 allowOverride = true;
166 int index = 0;
167
168 for (String itemLabel : publishFlagBehaviour.getItems()){
169 if (itemLabel.startsWith(Messages.Preference_Use_Default)){
170 publishFlagBehaviour.select(index);
171 break;
172 }
173 index++;
174 }
175 if (isAdminPreference){
176 allowOverrideButton.setSelection(allowOverride);
177 }
178 setApply(true);
179 super.performDefaults();
180 }
181
182
183
184 }