Project

General

Profile

Download (7.75 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
    private boolean checkNoneChecked() {
70

    
71
        if (getViewer().getCheckedElements().length == 0) {
72
            setMessage(Messages.AvailableDistributionPage_CHECK_MESSAGE, WARNING);
73
            return true;
74
        } else {
75
            setMessage(null);
76
            return false;
77
        }
78
    }
79

    
80

    
81
    /**
82
    *
83
    * @param path
84
    * @param checked
85
    */
86
   private void checkChildren(final Object element, final boolean checked) {
87
       if (element == null) {
88
           return;
89
       }
90

    
91
       if (getViewer().isExpandable(element)){
92
           getViewer().expandToLevel(element, CheckboxTreeViewer.ALL_LEVELS);
93
           getViewer().setSubtreeChecked(element, checked);
94

    
95
           getViewer().setChecked(element, checked);
96
           if (getViewer().getGrayed(element)){
97
               getViewer().setGrayChecked(element, !checked);
98
           }
99
//           if (element instanceof NamedAreaWrapper){
100
//               NamedAreaWrapper baseElement = new NamedAreaWrapper(((NamedAreaWrapper)element).getNamedArea(), true, ((NamedAreaWrapper)element).parent);
101
//               ((CheckboxTreeViewer)getViewer()).setChecked(baseElement, !checked);
102
//               ((CheckboxTreeViewer)getViewer()).setGrayed(element, checked);
103
//           }
104

    
105
       }else{
106
           getViewer().setChecked(element, checked);
107
           getViewer().setGrayed(element, false);
108
       }
109

    
110
   }
111
   /**
112
   *
113
   * @param path
114
   * @param checked
115
   */
116
  private void grayParents(final Object element, boolean checked) {
117
      DistributionContentProvider tcp = new DistributionContentProvider();
118

    
119
      if (element == null) {
120
          return;
121
      }
122
   //   final Object element = path.getLastSegment();
123
      Object parent = tcp.getParent(element);
124
      if (parent != null) {
125

    
126
          boolean allUnchecked = true;
127
          boolean allChecked = true;
128
          //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
129
//          if (checked){
130
//              if (!((CheckboxTreeViewer)getViewer()).getChecked(parent)){
131
//                  ((CheckboxTreeViewer)getViewer()).setGrayChecked(parent, true);
132
//              }
133
//
134
//          }else{
135
              for (final Object fieldElement : tcp.getChildren(parent)) {
136
                  allChecked = allChecked && getViewer().getChecked(fieldElement);
137
                  allUnchecked = allUnchecked && !getViewer().getChecked(fieldElement);
138
                  allUnchecked = allUnchecked && !getViewer().getGrayed(fieldElement);
139
              }
140
              if (allUnchecked) {
141
//                  if (!((CheckboxTreeViewer)getViewer()).getChecked(parent)){
142
                      getViewer().setChecked(parent, false);
143
                      getViewer().setGrayed(parent, false);
144
//                  }else{
145
//                      checked = true;
146
//                  }
147
              } else if (allChecked){
148
                  getViewer().setChecked(parent, true);
149
                  getViewer().setGrayed(parent, false);
150
              }else {
151
//                if (!((CheckboxTreeViewer)getViewer()).getChecked(parent)){
152
                    getViewer().setGrayChecked(parent, true);
153
                    getViewer().setChecked(parent, true);
154
//                }
155
                checked = true;
156

    
157
              }
158
//          }
159
        grayParents(parent, checked);
160
      }
161
  }
162

    
163
    @Override
164
    public void dispose() {
165
        CdmStore.getCurrentSessionManager().dispose(this);
166
        super.dispose();
167
    }
168
    /* (non-Javadoc)
169
     * @see eu.etaxonomy.taxeditor.session.ICdmEntitySessionEnabled#getCdmEntitySession()
170
     */
171
    @Override
172
    public ICdmEntitySession getCdmEntitySession() {
173
        return CdmStore.getCurrentSessionManager().getNullSession();
174
    }
175

    
176
    /* (non-Javadoc)
177
     * @see eu.etaxonomy.taxeditor.session.ICdmEntitySessionEnabled#getRootEntities()
178
     */
179
    @Override
180
    public <T extends CdmBase> Collection<T> getRootEntities() {
181
        return null;
182
    }
183

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

    
198
    @Override
199
    protected  List<TermVocabularyDto> getVocabulariesFromPreference(){
200
        List<TermVocabularyDto> vocs = new ArrayList<>();
201

    
202
        if (PreferencesUtil.getPreferenceFromDB(PreferencePredicate.AvailableDistributionAreaVocabularies) == null && PreferencesUtil.getStringValue(PreferencesUtil.DISTRIBUTION_VOCABULARIES) == null){
203
            vocs = CdmStore.getService(IVocabularyService.class).findVocabularyDtoByTermType(type);
204
        }else{
205
            String vocString = PreferencesUtil.getStringValue(PreferencesUtil.DISTRIBUTION_VOCABULARIES);
206

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

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

    
220
        }
221
        return vocs;
222
    }
223

    
224

    
225

    
226
}
(5-5/14)