2 * Copyright (C) 2014 EDIT
3 * European Distributed Institute of Taxonomy
4 * http://www.e-taxonomy.eu
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.
9 package eu
.etaxonomy
.taxeditor
.preference
;
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
.layout
.GridData
;
17 import org
.eclipse
.swt
.layout
.GridLayout
;
18 import org
.eclipse
.swt
.widgets
.Button
;
19 import org
.eclipse
.swt
.widgets
.Combo
;
20 import org
.eclipse
.swt
.widgets
.Composite
;
21 import org
.eclipse
.swt
.widgets
.Control
;
22 import org
.eclipse
.swt
.widgets
.Event
;
23 import org
.eclipse
.swt
.widgets
.Label
;
24 import org
.eclipse
.swt
.widgets
.Listener
;
26 import eu
.etaxonomy
.cdm
.model
.metadata
.CdmPreference
;
27 import eu
.etaxonomy
.cdm
.model
.metadata
.PreferencePredicate
;
28 import eu
.etaxonomy
.cdm
.model
.metadata
.TermDisplayEnum
;
29 import eu
.etaxonomy
.taxeditor
.l10n
.Messages
;
30 import eu
.etaxonomy
.taxeditor
.preference
.menu
.CdmPreferencePage
;
31 import eu
.etaxonomy
.taxeditor
.ui
.element
.CommandHandlerButton
;
38 public class ChecklistEditorGeneralPreference
extends CdmPreferencePage
implements SelectionListener
{
40 protected boolean isEditorActivated
;
41 protected boolean allowOverrideActivated
;
42 protected boolean overrideActivated
;
44 protected boolean isShowRank
;
45 protected boolean isSortByVocabularyOrder
;
46 protected String displayStatus
;
47 protected String displayArea
;
48 protected boolean ownDescriptionForDistributionEditor
;
49 protected boolean allowOverrideOwnDescriptionForDistributionEditor
;
50 protected boolean overrideOwnDescriptionForDistributionEditor
;
51 protected boolean allowOverrideAreaVoc
;
52 protected boolean overrideAreaVoc
;
53 protected boolean allowOverrideRank
;
54 protected boolean overrideRank
;
55 protected boolean allowOverrideOrderAreas
;
56 protected boolean overrideOrderAreas
;
57 protected boolean allowOverrideAreaDisplay
;
58 protected boolean overrideAreaDisplay
;
59 protected boolean allowOverrideStatusDisplay
;
60 protected boolean overrideStatusDisplay
;
62 protected boolean allowOverrideStatus
;
63 Combo statusDisplaySelectionCombo
;
64 Combo areaDisplaySelectionCombo
;
66 protected String commandHandlerString
;
67 protected String commandHandlerStringStatus
;
71 protected CdmPreference distributionEditorPref
;
73 protected boolean isAllowOverride
;
76 protected Control
createContents(Composite parent
) {
78 Composite composite
= new Composite(parent
, SWT
.NULL
);
79 composite
.setLayout(new GridLayout());
81 if (isAllowOverride
|| isAdminPreference
){
82 Composite activateComp
= createComposite(composite
);
84 final Button activateCheckButton
= new Button(activateComp
, SWT
.CHECK
);
85 activateCheckButton
.setText(Messages
.ChecklistEditorGeneralPreference_enable
);
86 activateCheckButton
.setSelection(isEditorActivated
);
87 activateCheckButton
.addSelectionListener(new SelectionAdapter(){
89 public void widgetSelected(SelectionEvent e
) {
91 isEditorActivated
= activateCheckButton
.getSelection();
92 if(!isAdminPreference
){
93 overrideActivated
= true;
96 if(isEditorActivated
){
97 child
.setVisible(true);
98 child
.setEnabled(true);
100 child
.setVisible(false);
101 child
.setEnabled(false);
106 Button allowOverrideActivatedButton
= createAllowOverrideButton(activateComp
);
107 if (isAdminPreference
){
108 allowOverrideActivatedButton
.setSelection(allowOverrideActivated
);
109 allowOverrideActivatedButton
.addSelectionListener(new SelectionAdapter(){
111 public void widgetSelected(SelectionEvent e
) {
113 allowOverrideActivated
= allowOverrideActivatedButton
.getSelection();
117 allowOverrideActivatedButton
.setSelection(overrideActivated
);
118 allowOverrideActivatedButton
.addSelectionListener(new SelectionAdapter(){
120 public void widgetSelected(SelectionEvent e
) {
122 overrideActivated
= allowOverrideActivatedButton
.getSelection();
128 child
= createComposite(composite
);
130 child
.setVisible(isEditorActivated
);
131 Label separator
= new Label(child
, SWT
.HORIZONTAL
| SWT
.SEPARATOR
);
132 GridData sepGrid
= createTextGridData();
134 GridData textGrid
= createTextGridData();
135 textGrid
.verticalSpan
= 2;
136 separator
.setLayoutData(sepGrid
);
139 final Button activateRankButton
= new Button(child
, SWT
.CHECK
);
140 activateRankButton
.setText(Messages
.ChecklistEditorGeneralPreference_show_rank
);
141 activateRankButton
.setSelection(isShowRank
);
142 activateRankButton
.addSelectionListener(new SelectionAdapter(){
144 public void widgetSelected(SelectionEvent e
) {
146 isShowRank
= activateRankButton
.getSelection();
149 Button allowOverrideRankButton
= createAllowOverrideButton(child
);
150 if (isAdminPreference
){
151 allowOverrideRankButton
.setSelection(allowOverrideRank
);
152 allowOverrideRankButton
.addSelectionListener(new SelectionAdapter(){
154 public void widgetSelected(SelectionEvent e
) {
156 allowOverrideRank
= allowOverrideRankButton
.getSelection();
160 allowOverrideRankButton
.setSelection(overrideRank
);
161 allowOverrideRankButton
.addSelectionListener(new SelectionAdapter(){
163 public void widgetSelected(SelectionEvent e
) {
165 overrideRank
= allowOverrideRankButton
.getSelection();
168 if (!allowOverrideRank
){
169 activateRankButton
.setEnabled(false);
170 allowOverrideRankButton
.setEnabled(false);
175 final Button sortNamedAreaByVocabularyOrder
= new Button(child
, SWT
.CHECK
);
176 sortNamedAreaByVocabularyOrder
.setText(Messages
.ChecklistEditorGeneralPreference_sort_areas
);
177 sortNamedAreaByVocabularyOrder
.setSelection(isSortByVocabularyOrder
);
178 sortNamedAreaByVocabularyOrder
.addSelectionListener(new SelectionAdapter(){
180 public void widgetSelected(SelectionEvent e
) {
182 isSortByVocabularyOrder
= sortNamedAreaByVocabularyOrder
.getSelection();
185 Button allowOverrideOrderAreasButton
= createAllowOverrideButton(child
);
186 if (isAdminPreference
){
187 allowOverrideOrderAreasButton
.setSelection(allowOverrideOrderAreas
);
188 allowOverrideOrderAreasButton
.addSelectionListener(new SelectionAdapter(){
190 public void widgetSelected(SelectionEvent e
) {
192 allowOverrideOrderAreas
= allowOverrideOrderAreasButton
.getSelection();
196 allowOverrideOrderAreasButton
.setSelection(overrideOrderAreas
);
197 allowOverrideOrderAreasButton
.addSelectionListener(new SelectionAdapter(){
199 public void widgetSelected(SelectionEvent e
) {
201 overrideOrderAreas
= allowOverrideOrderAreasButton
.getSelection();
204 if (!allowOverrideOrderAreas
){
205 sortNamedAreaByVocabularyOrder
.setEnabled(false);
206 allowOverrideOrderAreasButton
.setEnabled(false);
210 final Button ownDescription
= new Button(child
, SWT
.CHECK
);
211 ownDescription
.setText(Messages
.ChecklistEditorGeneralPreference_own_Description
);
212 ownDescription
.setToolTipText(Messages
.ChecklistEditorGeneralPreference_own_DescriptionToolTip
);
213 ownDescription
.setSelection(ownDescriptionForDistributionEditor
);
214 ownDescription
.addSelectionListener(new SelectionAdapter(){
216 public void widgetSelected(SelectionEvent e
) {
218 ownDescriptionForDistributionEditor
= ownDescription
.getSelection();
221 Button allowOverrideDescription
= createAllowOverrideButton(child
);
222 if (isAdminPreference
){
223 allowOverrideDescription
.setSelection(allowOverrideOwnDescriptionForDistributionEditor
);
224 allowOverrideDescription
.addSelectionListener(new SelectionAdapter(){
226 public void widgetSelected(SelectionEvent e
) {
228 allowOverrideOwnDescriptionForDistributionEditor
= allowOverrideDescription
.getSelection();
232 allowOverrideDescription
.setSelection(overrideOwnDescriptionForDistributionEditor
);
233 allowOverrideDescription
.addSelectionListener(new SelectionAdapter(){
235 public void widgetSelected(SelectionEvent e
) {
237 overrideOwnDescriptionForDistributionEditor
= allowOverrideDescription
.getSelection();
240 if (!allowOverrideOwnDescriptionForDistributionEditor
){
241 ownDescription
.setEnabled(false);
242 allowOverrideDescription
.setEnabled(false);
247 separator
= new Label(child
, SWT
.HORIZONTAL
| SWT
.SEPARATOR
);
248 separator
.setLayoutData(sepGrid
);
252 final CLabel description
= new CLabel(child
, SWT
.NULL
);
253 description
.setText(Messages
.ChecklistEditorGeneralPreference_Configure_display_of_Areas
);
254 description
.setLayoutData(textGrid
);
256 GridData gridData
= new GridData();
257 gridData
= new GridData(GridData
.BEGINNING
, GridData
.CENTER
, true, false);
258 //gridData.horizontalIndent = 5;
261 areaDisplaySelectionCombo
= new Combo(child
, SWT
.BORDER
| SWT
.READ_ONLY
);
262 areaDisplaySelectionCombo
.setLayoutData(gridData
);
264 for(TermDisplayEnum display
: TermDisplayEnum
.values()){
265 areaDisplaySelectionCombo
.add(display
.getLabel());
268 if (PreferencesUtil
.getStringValue(EditorPreferencePredicate
.DistributionEditorActivated
.getKey()) != null){
269 TermDisplayEnum areaDisplay
;
271 if (displayArea
!= null){
272 areaDisplay
= TermDisplayEnum
.valueOf(displayArea
);
274 areaDisplay
= TermDisplayEnum
.Title
;
276 }catch(IllegalArgumentException e
){
277 areaDisplay
= TermDisplayEnum
.Title
;
279 for (String itemLabel
: areaDisplaySelectionCombo
.getItems()){
280 if (itemLabel
.equalsIgnoreCase(areaDisplay
.getLabel())){
281 areaDisplaySelectionCombo
.select(index
);
287 areaDisplaySelectionCombo
.addSelectionListener(this);
288 Button allowOverrideOrderAreaDisplayButton
= createAllowOverrideButton(child
);
289 if (isAdminPreference
){
290 allowOverrideOrderAreaDisplayButton
.setSelection(allowOverrideAreaDisplay
);
291 allowOverrideOrderAreaDisplayButton
.addSelectionListener(new SelectionAdapter(){
293 public void widgetSelected(SelectionEvent e
) {
295 allowOverrideAreaDisplay
= allowOverrideOrderAreaDisplayButton
.getSelection();
299 allowOverrideOrderAreaDisplayButton
.setSelection(overrideAreaDisplay
);
300 allowOverrideOrderAreaDisplayButton
.addSelectionListener(new SelectionAdapter(){
302 public void widgetSelected(SelectionEvent e
) {
304 overrideAreaDisplay
= allowOverrideOrderAreaDisplayButton
.getSelection();
307 if (!allowOverrideAreaDisplay
){
308 areaDisplaySelectionCombo
.setEnabled(false);
309 allowOverrideOrderAreaDisplayButton
.setEnabled(false);
313 final CLabel descriptionStatus
= new CLabel(child
, SWT
.NULL
);
314 descriptionStatus
.setText(Messages
.ChecklistEditorGeneralPreference_Configure_display_of_Status
);
315 descriptionStatus
.setLayoutData(textGrid
);
319 statusDisplaySelectionCombo
= new Combo(child
, SWT
.BORDER
| SWT
.READ_ONLY
);
320 statusDisplaySelectionCombo
.setLayoutData(gridData
);
322 for(TermDisplayEnum display
: TermDisplayEnum
.values()){
323 statusDisplaySelectionCombo
.add(display
.getLabel());
326 if (displayStatus
!= null){
327 TermDisplayEnum statusDisplay
= TermDisplayEnum
.valueOf(displayStatus
);
328 for (String itemLabel
: statusDisplaySelectionCombo
.getItems()){
329 if (itemLabel
.equalsIgnoreCase(statusDisplay
.getLabel())){
330 statusDisplaySelectionCombo
.select(index
);
337 statusDisplaySelectionCombo
.addSelectionListener(this);
338 Button allowOverrideOrderStatusDisplayButton
= createAllowOverrideButton(child
);
339 if (isAdminPreference
){
340 allowOverrideOrderStatusDisplayButton
.setSelection(allowOverrideStatusDisplay
);
341 allowOverrideOrderStatusDisplayButton
.addSelectionListener(new SelectionAdapter(){
343 public void widgetSelected(SelectionEvent e
) {
345 allowOverrideStatusDisplay
= allowOverrideOrderStatusDisplayButton
.getSelection();
349 allowOverrideOrderStatusDisplayButton
.setSelection(overrideStatusDisplay
);
350 allowOverrideOrderStatusDisplayButton
.addSelectionListener(new SelectionAdapter(){
352 public void widgetSelected(SelectionEvent e
) {
354 overrideStatusDisplay
= allowOverrideOrderStatusDisplayButton
.getSelection();
357 if (!allowOverrideStatusDisplay
){
358 statusDisplaySelectionCombo
.setEnabled(false);
359 allowOverrideOrderStatusDisplayButton
.setEnabled(false);
364 final CLabel labelStatus
= new CLabel(child
, SWT
.NULL
);
365 labelStatus
.setText(Messages
.DistributionAdminPreferences_SELECT_STATUS
);
366 labelStatus
.setLayoutData(textGrid
);
368 final CommandHandlerButton button_openStatusWizard
= new CommandHandlerButton(child
, SWT
.PUSH
,
369 commandHandlerStringStatus
);
371 button_openStatusWizard
.setText(Messages
.Distribution_status_selection
);
372 button_openStatusWizard
.addListener(SWT
.Selection
, new Listener() {
374 public void handleEvent(Event e
) {
384 final CLabel label
= new CLabel(child
, SWT
.NULL
);
385 label
.setText(Messages
.ChecklistEditorGeneralPreference_open_wizard
);
386 label
.setLayoutData(textGrid
);
388 final CommandHandlerButton button_openSelectAreas
= new CommandHandlerButton(child
, SWT
.PUSH
,
389 commandHandlerString
);
390 button_openSelectAreas
.setText(Messages
.ChecklistEditorGeneralPreference_open_distribution_selection
);
395 if(isEditorActivated
){
396 child
.setEnabled(true);
398 child
.setEnabled(false);
400 if (!isAdminPreference
){
401 if (!allowOverrideAreaVoc
){
402 button_openSelectAreas
.setButtonEnabled(false);
404 if (!allowOverrideStatus
){
405 button_openStatusWizard
.setButtonEnabled(false);
409 Label label
= new Label(composite
, SWT
.NONE
);
410 label
.setText("The CDM settings don't allow to set the preferences for using the distribution editor locally. If you need to make local settings, please ask an administrator.");
426 public boolean performOk() {
427 if (isAllowOverride
){
429 PreferencesUtil
.setBooleanValue(EditorPreferencePredicate
.DistributionEditorActivated
.getKey(), isEditorActivated
);
430 PreferencesUtil
.setBooleanValue(PreferencesUtil
.prefOverrideKey(EditorPreferencePredicate
.DistributionEditorActivated
.getKey()), overrideActivated
);
431 PreferencesUtil
.setSortNamedAreasByOrderInVocabulary(isSortByVocabularyOrder
);
432 PreferencesUtil
.setBooleanValue(PreferencesUtil
.prefOverrideKey(EditorPreferencePredicate
.AreasSortedByIdInVocabulary
.getKey()), overrideOrderAreas
);
433 PreferencesUtil
.setShowRankInChecklistEditor(isShowRank
);
434 PreferencesUtil
.setBooleanValue(PreferencesUtil
.prefOverrideKey(EditorPreferencePredicate
.ShowRankInDistributionEditor
.getKey()), overrideRank
);
435 PreferencesUtil
.setDisplayStatusInChecklistEditor(displayStatus
);
436 PreferencesUtil
.setBooleanValue(PreferencesUtil
.prefOverrideKey(EditorPreferencePredicate
.DisplayOfStatus
.getKey()), overrideStatusDisplay
);
437 PreferencesUtil
.setAreaDisplayInChecklistEditor(displayArea
);
438 PreferencesUtil
.setBooleanValue(PreferencesUtil
.prefOverrideKey(EditorPreferencePredicate
.DisplayOfAreasInDistributionEditor
.getKey()), overrideAreaDisplay
);
439 PreferencesUtil
.setOwnDescriptionForChecklistEditor(ownDescriptionForDistributionEditor
);
440 PreferencesUtil
.setBooleanValue(PreferencesUtil
.prefOverrideKey(EditorPreferencePredicate
.OwnDescriptionForDistributionEditor
.getKey()), overrideOwnDescriptionForDistributionEditor
);
453 public void widgetSelected(SelectionEvent e
) {
455 if (e
.getSource().equals(statusDisplaySelectionCombo
)){
456 String text
= statusDisplaySelectionCombo
.getText();
457 for (TermDisplayEnum display
: TermDisplayEnum
.values()){
458 if (display
.getLabel().equals(text
)){
459 displayStatus
= display
.getKey();
464 if (e
.getSource().equals(areaDisplaySelectionCombo
)){
465 String text
= areaDisplaySelectionCombo
.getText();
466 for (TermDisplayEnum display
: TermDisplayEnum
.values()){
467 if (display
.getLabel().equals(text
)){
468 displayArea
= display
.getKey();
480 public void widgetDefaultSelected(SelectionEvent e
) {
481 // TODO Auto-generated method stub
490 public void getValues() {
491 isAdminPreference
= false;
492 setPreferenceStore(PreferencesUtil
.getPreferenceStore());
493 distributionEditorPref
= PreferencesUtil
.getPreferenceFromDB(EditorPreferencePredicate
.DistributionEditorActivated
);
496 if (distributionEditorPref
!= null){
497 isAllowOverride
= distributionEditorPref
.isAllowOverride();
498 boolean test
= PreferencesUtil
.getBooleanValue(EditorPreferencePredicate
.DistributionEditorActivated
.getKey());
499 if (isAllowOverride
&& PreferencesUtil
.getBooleanValue(EditorPreferencePredicate
.DistributionEditorActivated
.getKey())){
500 isEditorActivated
= PreferencesUtil
.getBooleanValue(EditorPreferencePredicate
.DistributionEditorActivated
.getKey());
502 isEditorActivated
= Boolean
.valueOf(distributionEditorPref
.getValue());
505 isEditorActivated
= PreferencesUtil
.getBooleanValue(EditorPreferencePredicate
.DistributionEditorActivated
.getKey());
506 isAllowOverride
= true;
509 CdmPreference prefStatus
= PreferencesUtil
.getPreferenceFromDB(PreferencePredicate
.AvailableDistributionAreaVocabularies
);
510 allowOverrideAreaVoc
= prefStatus
!= null?prefStatus
.isAllowOverride():false;
512 prefStatus
= PreferencesUtil
.getPreferenceFromDB(PreferencePredicate
.AvailableDistributionStatus
);
513 allowOverrideStatus
= prefStatus
!= null?prefStatus
.isAllowOverride():false;
515 CdmPreference pref
= PreferencesUtil
.getPreferenceFromDB(EditorPreferencePredicate
.DisplayOfAreasInDistributionEditor
);
517 this.allowOverrideAreaDisplay
= pref
.isAllowOverride();
518 if (allowOverrideAreaDisplay
){
519 displayArea
= PreferencesUtil
.getStringValue(EditorPreferencePredicate
.DisplayOfAreasInDistributionEditor
.getKey());
521 displayArea
= pref
.getValue();
524 displayArea
= PreferencesUtil
.getStringValue(EditorPreferencePredicate
.DisplayOfAreasInDistributionEditor
.getKey());
525 this.allowOverrideAreaDisplay
= true;
528 pref
= PreferencesUtil
.getPreferenceFromDB(EditorPreferencePredicate
.DisplayOfStatus
);
530 this.allowOverrideStatusDisplay
= pref
.isAllowOverride();
531 if (allowOverrideStatusDisplay
){
532 displayStatus
= PreferencesUtil
.displayStatusInChecklistEditor();
534 this.displayStatus
= pref
.getValue();
537 displayStatus
= PreferencesUtil
.displayStatusInChecklistEditor();
538 this.allowOverrideStatusDisplay
= true;
541 pref
= PreferencesUtil
.getPreferenceFromDB(EditorPreferencePredicate
.AreasSortedByIdInVocabulary
);
544 this.allowOverrideOrderAreas
= pref
.isAllowOverride();
545 if (allowOverrideOrderAreas
){
546 isSortByVocabularyOrder
= PreferencesUtil
.isSortNamedAreaByOrderInVocabulary();
548 this.isSortByVocabularyOrder
= Boolean
.valueOf(pref
.getValue().toString());
551 isSortByVocabularyOrder
= PreferencesUtil
.isSortNamedAreaByOrderInVocabulary();
552 this.allowOverrideOrderAreas
= true;
555 pref
= PreferencesUtil
.getPreferenceFromDB(EditorPreferencePredicate
.ShowRankInDistributionEditor
);
558 allowOverrideRank
= pref
.isAllowOverride();
559 if (allowOverrideRank
){
560 isShowRank
= PreferencesUtil
.isShowRankInChecklistEditor();
562 this.isShowRank
= Boolean
.valueOf(pref
.getValue().toString());
565 isShowRank
= PreferencesUtil
.isShowRankInChecklistEditor();
566 this.allowOverrideRank
= true;
569 pref
= PreferencesUtil
.getPreferenceFromDB(EditorPreferencePredicate
.OwnDescriptionForDistributionEditor
);
572 allowOverrideOwnDescriptionForDistributionEditor
= pref
.isAllowOverride();
573 if (allowOverrideOwnDescriptionForDistributionEditor
){
574 ownDescriptionForDistributionEditor
= PreferencesUtil
.isOwnDescriptionForChecklistEditor();
576 ownDescriptionForDistributionEditor
= Boolean
.valueOf(pref
.getValue().toString());
579 ownDescriptionForDistributionEditor
= PreferencesUtil
.isShowRankInChecklistEditor();
580 ownDescriptionForDistributionEditor
= true;
584 commandHandlerString
= "eu.etaxonomy.taxeditor.store.open.OpenDistributionEditorWizardHandler";
585 commandHandlerStringStatus
= "eu.etaxonomy.taxeditor.store.open.OpenDistributionStatusWizardHandler";