Project

General

Profile

« Previous | Next » 

Revision 4f25e642

Added by Katja Luther over 5 years ago

ref #7063: add vocabulary selection for distribution editor and area selection in editor

View differences:

eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/preference/wizard/AvailableDistributionPage.java
8 8
 */
9 9
package eu.etaxonomy.taxeditor.preference.wizard;
10 10

  
11
import java.util.ArrayList;
12 11
import java.util.Arrays;
13 12
import java.util.Collection;
14 13
import java.util.HashMap;
14
import java.util.HashSet;
15 15
import java.util.List;
16 16
import java.util.Map;
17 17
import java.util.Set;
......
24 24
import org.eclipse.jface.viewers.StyledString.Styler;
25 25
import org.eclipse.jface.viewers.TreePath;
26 26
import org.eclipse.jface.viewers.ViewerComparator;
27
import org.eclipse.jface.wizard.WizardPage;
28 27
import org.eclipse.swt.SWT;
29 28
import org.eclipse.swt.graphics.TextStyle;
30 29
import org.eclipse.swt.layout.GridData;
......
32 31
import org.eclipse.swt.widgets.Composite;
33 32
import org.eclipse.swt.widgets.Display;
34 33

  
35
import eu.etaxonomy.cdm.api.service.ITermService;
36 34
import eu.etaxonomy.cdm.api.service.IVocabularyService;
37 35
import eu.etaxonomy.cdm.model.common.CdmBase;
38
import eu.etaxonomy.cdm.model.common.DefinedTermBase;
39
import eu.etaxonomy.cdm.model.common.TermType;
40 36
import eu.etaxonomy.cdm.model.common.TermVocabulary;
41 37
import eu.etaxonomy.taxeditor.editor.definedterm.TermContentProvider;
42 38
import eu.etaxonomy.taxeditor.editor.definedterm.TermLabelProvider;
......
50 46
 * @date 21.07.2014
51 47
 *
52 48
 */
53
public class AvailableDistributionPage extends WizardPage implements ICdmEntitySessionEnabled {
54

  
55
    private CheckboxTreeViewer viewer;
56

  
57
    private Set<TermVocabulary<DefinedTermBase>> vocabularies;
49
public class AvailableDistributionPage extends AbstractAreaSelectionWizard implements ICdmEntitySessionEnabled {
58 50

  
59 51
    /**
60 52
     * @param pageName
61 53
     */
62 54
    protected AvailableDistributionPage(String pageName) {
63 55
        super(pageName);
64
        // TODO check if configuration exists
65
        CdmStore.getCurrentSessionManager().bindNullSession();
56

  
66 57
    }
67 58

  
68 59
    /*
......
76 67
    @Override
77 68
    public void createControl(Composite parent) {
78 69
        IPreferenceStore preferenceStore = PreferencesUtil.getPreferenceStore();
70

  
79 71
        String checkedValues = preferenceStore.getString(PreferencesUtil.DISTRIBUTION_AREA_OCCURENCE_STATUS);
80 72
        String grayedValues = preferenceStore.getString(PreferencesUtil.DISTRIBUTION_AREA_OCCURENCE_STATUS_GRAYED);
81 73
        setTitle("Select areas for Distribution Editor");
......
83 75
                + "you have to select the areas which you like to see.");
84 76
        Composite composite = new Composite(parent, SWT.NULL);
85 77
        composite.setLayout(new GridLayout());
86
        viewer = new CheckboxTreeViewer(composite, SWT.NULL);
87
        viewer.getTree().setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true));
88
        viewer.setContentProvider(new TermContentProvider());
78
        setViewer(new CheckboxTreeViewer(composite, SWT.NULL));
79
        ((CheckboxTreeViewer)getViewer()).getTree().setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true));
80
        getViewer().setContentProvider(new TermContentProvider());
89 81
        Styler styler = new Styler() {
90 82
            @Override
91 83
            public void applyStyles(TextStyle textStyle) {
92 84
                textStyle.foreground = Display.getCurrent().getSystemColor(SWT.COLOR_BLACK);
93 85
            }
94 86
        };
95
        viewer.setLabelProvider(new TermLabelProvider(styler));
96
        viewer.setComparator(new ViewerComparator());
97
        viewer.addCheckStateListener(new ICheckStateListener() {
87
        getViewer().setLabelProvider(new TermLabelProvider(styler));
88
        getViewer().setComparator(new ViewerComparator());
89
        ((CheckboxTreeViewer)getViewer()).addCheckStateListener(new ICheckStateListener() {
98 90

  
99 91
            private boolean ignoreCheckEvent = false;
100 92

  
......
127 119
    }
128 120

  
129 121

  
130
    protected List<TermVocabulary<DefinedTermBase>> initialiseVocabularies() {
131
        if (vocabularies != null) {
132
            vocabularies.clear();
133
        }
134
        List<TermVocabulary<DefinedTermBase>> vocs = CdmStore.getService(IVocabularyService.class).findByTermType(
135
                TermType.NamedArea, null);
136 122

  
137
        return vocs;
138
    }
139 123

  
140
    private void rememberCheckedValues(String checkedValues, String grayedValues) {
141
        viewer.setInput(initialiseVocabularies());
142 124

  
143
        if (grayedValues != null && grayedValues != "") {
144
            String[] listGrayed = grayedValues.split(",");
145
            ArrayList listGrayedTerms = new ArrayList();
146
            getTermsFromStringValues(listGrayed, listGrayedTerms);
147
            for(Object element : listGrayedTerms){
148
                if(element != null){
149
                    viewer.setGrayChecked(element, true);
150
                }
151
            }
152
        }
153
        if (checkedValues != null && checkedValues != "") {
154
            String[] listChecked = checkedValues.split(",");
155
            ArrayList<DefinedTermBase<?>> listCheckedTerms = new ArrayList<DefinedTermBase<?>>();
156
            getTermsFromStringValues(listChecked, listCheckedTerms);
157
            for(Object element : listCheckedTerms){
158
                if(element != null){
159
                    viewer.setChecked(element, true);
160
                }
161
            }
162
        }
163
    }
164

  
165
    /**
166
     * @param split
167
     * @param termlist
168
     */
169
    private void getTermsFromStringValues(String[] split, ArrayList termlist) {
170
        List<String> listValue = Arrays.asList(split);
171
        for (String s : listValue) {
172
            UUID uuid = UUID.fromString(s);
173
            ITermService termService = CdmStore.getService(ITermService.class);
174
            DefinedTermBase definedTermBase = termService.load(uuid);
175
            if(definedTermBase != null){
176
                termlist.add(definedTermBase);
177
            }else{
178
                IVocabularyService vocabularyService = CdmStore.getService(IVocabularyService.class);
179
                TermVocabulary termVocabulary = vocabularyService.load(uuid);
180
                termlist.add(termVocabulary);
181
            }
182
        }
183
    }
184 125

  
185 126
    private boolean checkNoneChecked() {
186 127

  
187
        if (viewer.getCheckedElements().length == 0) {
128
        if (((CheckboxTreeViewer)getViewer()).getCheckedElements().length == 0) {
188 129
            setMessage("Please check at least one item", WARNING);
189 130
            return true;
190 131
        } else {
......
193 134
        }
194 135
    }
195 136

  
196
    /**
197
     * @return the viewer
198
     */
199
    public CheckboxTreeViewer getViewer() {
200
        return viewer;
201
    }
202 137

  
203 138
    /**
204 139
     *
......
215 150
            boolean allChecked = true;
216 151
            boolean allUnchecked = true;
217 152
            for (final Object fieldElement : tcp.getChildren(treeElement)) {
218
                allChecked = allChecked && this.viewer.getChecked(fieldElement);
219
                allUnchecked = allUnchecked && !this.viewer.getChecked(fieldElement);
153
                allChecked = allChecked && ((CheckboxTreeViewer)getViewer()).getChecked(fieldElement);
154
                allUnchecked = allUnchecked && !((CheckboxTreeViewer)getViewer()).getChecked(fieldElement);
220 155
            }
221 156
            if (allUnchecked) {
222
                this.viewer.setChecked(treeElement, false);
223
                this.viewer.setGrayed(treeElement, false);
157
                ((CheckboxTreeViewer)getViewer()).setChecked(treeElement, false);
158
                ((CheckboxTreeViewer)getViewer()).setGrayed(treeElement, false);
224 159
            } else if (allChecked) {
225
                this.viewer.setChecked(treeElement, true);
226
                this.viewer.setGrayed(treeElement, false);
160
                ((CheckboxTreeViewer)getViewer()).setChecked(treeElement, true);
161
                ((CheckboxTreeViewer)getViewer()).setGrayed(treeElement, false);
227 162
            } else if (!allUnchecked && !allChecked) {
228
                this.viewer.setChecked(treeElement, true);
229
                this.viewer.setGrayed(treeElement, true);
163
                ((CheckboxTreeViewer)getViewer()).setChecked(treeElement, true);
164
                ((CheckboxTreeViewer)getViewer()).setGrayed(treeElement, true);
230 165
            }
231 166
        }
232 167
        checkParents(path.getParentPath());
......
268 203
       }
269 204
    //   final Object element = path.getLastSegment();
270 205
       if (element != null) {
271
           this.viewer.setChecked(element, checked);
272
           this.viewer.setGrayed(element, false);
206
           ((CheckboxTreeViewer)getViewer()).setChecked(element, checked);
207
           ((CheckboxTreeViewer)getViewer()).setGrayed(element, false);
273 208
           int length = tcp.getChildren(element).length;
274 209
           if(length>1){
275
               this.viewer.expandToLevel(element, CheckboxTreeViewer.ALL_LEVELS);
276
               this.viewer.setSubtreeChecked(element, checked);
210
               ((CheckboxTreeViewer)getViewer()).expandToLevel(element, CheckboxTreeViewer.ALL_LEVELS);
211
               ((CheckboxTreeViewer)getViewer()).setSubtreeChecked(element, checked);
277 212
           }
278 213
       }
279 214
   }
......
294 229
          boolean allChecked = true;
295 230
          boolean allUnchecked = true;
296 231
          for (final Object fieldElement : tcp.getChildren(parent)) {
297
              allChecked = allChecked && this.viewer.getChecked(fieldElement);
298
              allUnchecked = allUnchecked && !this.viewer.getChecked(fieldElement);
232
              allChecked = allChecked && ((CheckboxTreeViewer)getViewer()).getChecked(fieldElement);
233
              allUnchecked = allUnchecked && !((CheckboxTreeViewer)getViewer()).getChecked(fieldElement);
299 234
          }
300 235
          if (allUnchecked) {
301
              this.viewer.setChecked(parent, false);
302
              this.viewer.setGrayed(parent, false);
236
              ((CheckboxTreeViewer)getViewer()).setChecked(parent, false);
237
              ((CheckboxTreeViewer)getViewer()).setGrayed(parent, false);
303 238
          } else if (allChecked) {
304
              this.viewer.setChecked(parent, true);
305
              this.viewer.setGrayed(parent, false);
239
              ((CheckboxTreeViewer)getViewer()).setChecked(parent, true);
240
              ((CheckboxTreeViewer)getViewer()).setGrayed(parent, false);
306 241
          } else if (!allUnchecked && !allChecked) {
307
              this.viewer.setChecked(parent, true);
308
              this.viewer.setGrayed(parent, true);
242
              ((CheckboxTreeViewer)getViewer()).setChecked(parent, true);
243
              ((CheckboxTreeViewer)getViewer()).setGrayed(parent, true);
309 244
          }
310 245

  
311 246
        grayParents(tcp.getParent(parent));
......
346 281
        propertyPathsMap.put("terms", termsPropertyPaths);
347 282
        return propertyPathsMap;
348 283
    }
284
    @Override
285
    protected void initialiseVocabularies() {
286
        if (getVocabularies() != null) {
287
            getVocabularies().clear();
288
        }
289
        String vocString = PreferencesUtil.getPreferenceStore().getString(PreferencesUtil.DISTRIBUTION_VOCABULARIES);
290
        String[] arrayVocs = vocString.split(",");
291

  
292
        Set<UUID> uuidVocs = new HashSet();
293
        for (String voc: arrayVocs){
294
            uuidVocs.add(UUID.fromString(voc));
295
        }
296

  
297
        List<TermVocabulary> vocs = CdmStore.getService(IVocabularyService.class).find(uuidVocs);
298

  
299
        setVocabularies(vocs);
300
    }
301

  
302

  
349 303

  
350 304
}

Also available in: Unified diff