ref #8256: add table of all status preferences in preference page
[taxeditor.git] / eu.etaxonomy.taxeditor.store / src / main / java / eu / etaxonomy / taxeditor / preference / wizard / AvailableDistributionPerAreaStatusWizard.java
1 /**
2 * Copyright (C) 2018 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.wizard;
10
11 import java.util.ArrayList;
12 import java.util.List;
13
14 import org.eclipse.jface.wizard.IWizardPage;
15 import org.eclipse.jface.wizard.Wizard;
16
17 import eu.etaxonomy.cdm.api.conversation.ConversationHolder;
18 import eu.etaxonomy.cdm.api.conversation.IConversationEnabled;
19 import eu.etaxonomy.cdm.model.metadata.CdmPreference;
20 import eu.etaxonomy.cdm.model.metadata.PreferencePredicate;
21 import eu.etaxonomy.cdm.persistence.hibernate.CdmDataChangeMap;
22 import eu.etaxonomy.taxeditor.event.EventUtility;
23 import eu.etaxonomy.taxeditor.event.WorkbenchEventConstants;
24 import eu.etaxonomy.taxeditor.l10n.Messages;
25 import eu.etaxonomy.taxeditor.preference.CdmPreferenceCache;
26 import eu.etaxonomy.taxeditor.preference.PreferencesUtil;
27 import eu.etaxonomy.taxeditor.store.CdmStore;
28
29 /**
30 * @author k.luther
31 * @since 05.10.2018
32 *
33 */
34 public class AvailableDistributionPerAreaStatusWizard extends Wizard implements IConversationEnabled{
35 private ConversationHolder conversation;
36 private final AvailableDistributionPerAreaStatusPage aPage;
37 List<CdmPreference> prefs;
38
39 public AvailableDistributionPerAreaStatusWizard() {
40 setWindowTitle(Messages.AvailableDistributionStatusWizard_WIZARD_TITLE);
41 // TODO if preferenceStore has elements checked load elements in wizard
42 CdmPreferenceCache cache = CdmPreferenceCache.instance();
43 prefs = new ArrayList<>();
44 cache.getAllTaxEditorDBPreferences();
45 List<CdmPreference> distrPrefs = cache.getAllForPredicate(PreferencePredicate.AvailableDistributionStatus.getKey());
46 if (distrPrefs != null){
47 prefs.addAll(distrPrefs);
48 }
49 if (prefs == null || prefs.isEmpty()) {
50 prefs = new ArrayList();
51 prefs.add(CdmPreference.NewTaxEditorInstance(PreferencePredicate.AvailableDistributionStatus, null));
52 }
53 aPage = new AvailableDistributionPerAreaStatusPage(Messages.AvailableDistributionStatusWizard_PAGE_TITLE, prefs, false);
54
55 }
56
57 @Override
58 public void addPages() {
59 addPage(aPage);
60 }
61
62 @Override
63 public IWizardPage getPage(String pageName) {
64
65 return aPage;
66 }
67
68 @Override
69 public int getPageCount() {
70 return 1;
71 }
72
73 @Override
74 public IWizardPage[] getPages() {
75 IWizardPage[] pages = new IWizardPage[1];
76 pages [0] = aPage;
77 return pages;
78 }
79
80 @Override
81 public String getWindowTitle() {
82
83 return Messages.AvailableDistributionStatusWizard_WINDOW_TITLE;
84 }
85
86 @Override
87 public boolean performCancel() {
88 // TODO Auto-generated method stub
89 return true;
90 }
91
92 @Override
93 public boolean performFinish() {
94 aPage.refreshActualPrefernce();
95 PreferencesUtil.setPreferencesToDB(aPage.perAreaPreferences);
96 PreferencesUtil.setPreferenceToDB(aPage.pref);
97
98 // PreferencesUtil.setBooleanValue(PreferencesUtil.createOverridePreferenceString(PreferencePredicate.AvailableDistributionStatus.getKey()), aPage.override);
99 PreferencesUtil.firePreferencesChanged(this.getClass());
100 EventUtility.postEvent(WorkbenchEventConstants.REFRESH_DISTRIBUTION_PREFERENCES, true);
101 return true;
102 }
103
104 @Override
105 public void update(CdmDataChangeMap changeEvents) {
106
107 }
108
109 @Override
110 public ConversationHolder getConversationHolder() {
111 if (conversation == null) {
112 conversation = CdmStore.createConversation();
113 }
114 return conversation;
115 }
116
117 }