Project

General

Profile

Download (7.93 KB) Statistics
| Branch: | Tag: | Revision:
1
/**
2
 * Copyright (C) 2014 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.Arrays;
13
import java.util.Collection;
14
import java.util.HashMap;
15
import java.util.HashSet;
16
import java.util.List;
17
import java.util.Map;
18
import java.util.Set;
19
import java.util.UUID;
20

    
21
import org.apache.commons.lang.StringUtils;
22
import org.eclipse.jface.viewers.CheckboxTreeViewer;
23
import org.eclipse.swt.widgets.Composite;
24

    
25
import eu.etaxonomy.cdm.api.service.IVocabularyService;
26
import eu.etaxonomy.cdm.model.common.CdmBase;
27
import eu.etaxonomy.cdm.model.common.TermType;
28
import eu.etaxonomy.cdm.model.common.TermVocabulary;
29
import eu.etaxonomy.cdm.model.metadata.PreferencePredicate;
30
import eu.etaxonomy.cdm.persistence.dto.TermVocabularyDto;
31
import eu.etaxonomy.taxeditor.l10n.Messages;
32
import eu.etaxonomy.taxeditor.preference.PreferencesUtil;
33
import eu.etaxonomy.taxeditor.session.ICdmEntitySession;
34
import eu.etaxonomy.taxeditor.session.ICdmEntitySessionEnabled;
35
import eu.etaxonomy.taxeditor.store.CdmStore;
36

    
37
/**
38
 * @author a.oppermann
39
 * @date 21.07.2014
40
 *
41
 */
42
public class AvailableDistributionPage extends AbstractTermSelectionWizardPage implements ICdmEntitySessionEnabled {
43

    
44
    /**
45
     * @param pageName
46
     */
47
    protected AvailableDistributionPage(String pageName) {
48
        super(pageName, TermType.NamedArea);
49
        this.localPref = true;
50

    
51
    }
52

    
53
    /** {@inheritDoc} */
54
    @Override
55
    public void createControl(Composite parent) {
56
        //IPreferenceStore preferenceStore = PreferencesUtil.getPreferenceStore();
57

    
58
        setTitle(Messages.AvailableDistributionPage_PAGE_TITLE);
59
        setDescription(Messages.AvailableDistributionPage_PAGE_DESCRIPTION);
60

    
61
        super.createControl(parent);
62
    }
63

    
64
    @Override
65
    protected String getCheckedValuesFromPreferences() {
66
        return PreferencesUtil.getStringValue(PreferencesUtil.DISTRIBUTION_AREA_OCCURENCE_STATUS);
67
    }
68

    
69
    @Override
70
    protected String getGrayedValuesFromPreferences() {
71
        return PreferencesUtil.getStringValue(PreferencesUtil.DISTRIBUTION_AREA_OCCURENCE_STATUS_GRAYED);
72
    }
73

    
74
    private boolean checkNoneChecked() {
75

    
76
        if (getViewer().getCheckedElements().length == 0) {
77
            setMessage(Messages.AvailableDistributionPage_CHECK_MESSAGE, WARNING);
78
            return true;
79
        } else {
80
            setMessage(null);
81
            return false;
82
        }
83
    }
84

    
85

    
86
    /**
87
    *
88
    * @param path
89
    * @param checked
90
    */
91
   private void checkChildren(final Object element, final boolean checked) {
92
       if (element == null) {
93
           return;
94
       }
95

    
96
       if (getViewer().isExpandable(element)){
97
           getViewer().expandToLevel(element, CheckboxTreeViewer.ALL_LEVELS);
98
           getViewer().setSubtreeChecked(element, checked);
99

    
100
           getViewer().setChecked(element, checked);
101
           if (getViewer().getGrayed(element)){
102
               getViewer().setGrayChecked(element, !checked);
103
           }
104
//           if (element instanceof NamedAreaWrapper){
105
//               NamedAreaWrapper baseElement = new NamedAreaWrapper(((NamedAreaWrapper)element).getNamedArea(), true, ((NamedAreaWrapper)element).parent);
106
//               ((CheckboxTreeViewer)getViewer()).setChecked(baseElement, !checked);
107
//               ((CheckboxTreeViewer)getViewer()).setGrayed(element, checked);
108
//           }
109

    
110
       }else{
111
           getViewer().setChecked(element, checked);
112
           getViewer().setGrayed(element, false);
113
       }
114

    
115
   }
116
   /**
117
   *
118
   * @param path
119
   * @param checked
120
   */
121
  private void grayParents(final Object element, boolean checked) {
122
      DistributionContentProvider tcp = new DistributionContentProvider();
123

    
124
      if (element == null) {
125
          return;
126
      }
127
   //   final Object element = path.getLastSegment();
128
      Object parent = tcp.getParent(element);
129
      if (parent != null) {
130

    
131
          boolean allUnchecked = true;
132
          boolean allChecked = true;
133
          //if element is checked then the parent should be grayed if it is unchecked it have to be computed whether the parent should be checked
134
//          if (checked){
135
//              if (!((CheckboxTreeViewer)getViewer()).getChecked(parent)){
136
//                  ((CheckboxTreeViewer)getViewer()).setGrayChecked(parent, true);
137
//              }
138
//
139
//          }else{
140
              for (final Object fieldElement : tcp.getChildren(parent)) {
141
                  allChecked = allChecked && getViewer().getChecked(fieldElement);
142
                  allUnchecked = allUnchecked && !getViewer().getChecked(fieldElement);
143
                  allUnchecked = allUnchecked && !getViewer().getGrayed(fieldElement);
144
              }
145
              if (allUnchecked) {
146
//                  if (!((CheckboxTreeViewer)getViewer()).getChecked(parent)){
147
                      getViewer().setChecked(parent, false);
148
                      getViewer().setGrayed(parent, false);
149
//                  }else{
150
//                      checked = true;
151
//                  }
152
              } else if (allChecked){
153
                  getViewer().setChecked(parent, true);
154
                  getViewer().setGrayed(parent, false);
155
              }else {
156
//                if (!((CheckboxTreeViewer)getViewer()).getChecked(parent)){
157
                    getViewer().setGrayChecked(parent, true);
158
                    getViewer().setChecked(parent, true);
159
//                }
160
                checked = true;
161

    
162
              }
163
//          }
164
        grayParents(parent, checked);
165
      }
166
  }
167

    
168
    @Override
169
    public void dispose() {
170
        CdmStore.getCurrentSessionManager().dispose(this);
171
        super.dispose();
172
    }
173
    /* (non-Javadoc)
174
     * @see eu.etaxonomy.taxeditor.session.ICdmEntitySessionEnabled#getCdmEntitySession()
175
     */
176
    @Override
177
    public ICdmEntitySession getCdmEntitySession() {
178
        return CdmStore.getCurrentSessionManager().getNullSession();
179
    }
180

    
181
    /* (non-Javadoc)
182
     * @see eu.etaxonomy.taxeditor.session.ICdmEntitySessionEnabled#getRootEntities()
183
     */
184
    @Override
185
    public <T extends CdmBase> Collection<T> getRootEntities() {
186
        return null;
187
    }
188

    
189
    /* (non-Javadoc)
190
     * @see eu.etaxonomy.taxeditor.session.ICdmEntitySessionEnabled#getPropertyPathsMap()
191
     */
192
    @Override
193
    public Map<Object, List<String>> getPropertyPathsMap() {
194
        Map<Object, List<String>> propertyPathsMap = new HashMap<Object, List<String>>();
195
        List<String> termsPropertyPaths = Arrays.asList(new String[] {
196
                "includes" //$NON-NLS-1$
197
        });
198
        propertyPathsMap.put("includes", termsPropertyPaths); //$NON-NLS-1$
199
        propertyPathsMap.put("terms", termsPropertyPaths); //$NON-NLS-1$
200
        return propertyPathsMap;
201
    }
202

    
203
    @Override
204
    protected  List<TermVocabularyDto> getVocabulariesFromPreference(){
205
        List<TermVocabularyDto> vocs = new ArrayList<>();
206

    
207
        if (PreferencesUtil.getPreferenceFromDB(PreferencePredicate.AvailableDistributionAreaVocabularies) == null && PreferencesUtil.getStringValue(PreferencesUtil.DISTRIBUTION_VOCABULARIES) == null){
208
            vocs = CdmStore.getService(IVocabularyService.class).findVocabularyDtoByTermType(type);
209
        }else{
210
            String vocString = PreferencesUtil.getStringValue(PreferencesUtil.DISTRIBUTION_VOCABULARIES);
211

    
212
            String[] arrayVocs = vocString.split(";"); //$NON-NLS-1$
213

    
214
            Set<UUID> uuidVocs = new HashSet();
215
            for (String voc: arrayVocs){
216
                if (!StringUtils.isBlank(voc)){
217
                    uuidVocs.add(UUID.fromString(voc));
218
                }
219
            }
220
            List<TermVocabulary> tempVocs = CdmStore.getService(IVocabularyService.class).find(uuidVocs);
221
            for (TermVocabulary voc: tempVocs){
222
                vocs.add(new TermVocabularyDto(voc.getUuid(), voc.getRepresentations()));
223
            }
224

    
225
        }
226
        return vocs;
227
    }
228

    
229

    
230

    
231
}
(5-5/14)