Project

General

Profile

Download (5.93 KB) Statistics
| Branch: | Tag: | Revision:
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.editor.view.checklist.e4;
10

    
11
import java.util.Arrays;
12
import java.util.Collection;
13
import java.util.List;
14
import java.util.Map;
15
import java.util.UUID;
16

    
17
import javax.annotation.PostConstruct;
18
import javax.inject.Inject;
19

    
20
import org.eclipse.core.runtime.IProgressMonitor;
21
import org.eclipse.e4.core.contexts.ContextInjectionFactory;
22
import org.eclipse.e4.core.contexts.IEclipseContext;
23
import org.eclipse.e4.ui.di.Persist;
24
import org.eclipse.e4.ui.model.application.ui.MDirtyable;
25
import org.eclipse.e4.ui.model.application.ui.basic.MPart;
26
import org.eclipse.e4.ui.workbench.modeling.ESelectionService;
27
import org.eclipse.swt.custom.StackLayout;
28
import org.eclipse.swt.widgets.Composite;
29

    
30
import eu.etaxonomy.cdm.api.conversation.ConversationHolder;
31
import eu.etaxonomy.cdm.api.conversation.IConversationEnabled;
32
import eu.etaxonomy.cdm.api.service.IDescriptionService;
33
import eu.etaxonomy.cdm.api.service.ITaxonNodeService;
34
import eu.etaxonomy.cdm.api.service.UpdateResult;
35
import eu.etaxonomy.cdm.api.service.dto.TaxonDistributionDTO;
36
import eu.etaxonomy.cdm.model.common.CdmBase;
37
import eu.etaxonomy.cdm.persistence.hibernate.CdmDataChangeMap;
38
import eu.etaxonomy.taxeditor.model.IDirtyMarkable;
39
import eu.etaxonomy.taxeditor.model.IPartContentHasDetails;
40
import eu.etaxonomy.taxeditor.model.IPartContentHasSupplementalData;
41
import eu.etaxonomy.taxeditor.session.ICdmEntitySession;
42
import eu.etaxonomy.taxeditor.session.ICdmEntitySessionEnabled;
43
import eu.etaxonomy.taxeditor.store.CdmStore;
44
import eu.etaxonomy.taxeditor.workbench.part.IE4SavablePart;
45

    
46
/**
47
 * @author k.luther
48
 * @since 28.11.2018
49
 *
50
 */
51
public class DistributionEditorPart implements IE4SavablePart, IConversationEnabled, IDirtyMarkable,
52
ICdmEntitySessionEnabled, IPartContentHasSupplementalData, IPartContentHasDetails{
53

    
54
    private static final List<String> TAXONNODE_PROPERTY_PATH = Arrays.asList(new String[] {
55
            "taxon", //$NON-NLS-1$
56
            "taxon.name", //$NON-NLS-1$
57
            "taxon.name.rank",//$NON-NLS-1$
58
            "taxon.descriptions", //$NON-NLS-1$
59
            "taxon.descriptions.descriptionElements", //$NON-NLS-1$
60
            "taxon.descriptions.descriptionElements.feature", //$NON-NLS-1$
61
            "taxon.descriptions.descriptionElements.sources", //$NON-NLS-1$
62
            "taxon.descriptions.descriptionElements.media" //$NON-NLS-1$
63
    });
64

    
65
    private List<TaxonDistributionDTO> taxonList;
66
    private Collection<UpdateResult> updateResults;
67

    
68
    private ConversationHolder conversation;
69

    
70
    private ICdmEntitySession cdmEntitySession;
71

    
72
    @Inject
73
    private ESelectionService selService;
74

    
75
    @Inject
76
    private MDirtyable dirty;
77

    
78
    @Inject
79
    private MPart thisPart;
80

    
81
    private DistributionEditor editor;
82

    
83
    private StackLayout stackLayout;
84

    
85
    @PostConstruct
86
    public void create(Composite parent, IEclipseContext context) {
87
        if(CdmStore.isActive() && conversation==null){
88
            conversation = CdmStore.createConversation();
89
        }
90
        if(cdmEntitySession == null){
91
            cdmEntitySession = CdmStore.getCurrentSessionManager().newSession(this, true);
92
        }
93
        else{
94
            return;
95
        }
96
        stackLayout = new StackLayout();
97
        parent.setLayout(stackLayout);
98
        editor = new DistributionEditor(parent, this);
99
//        Label label = new Label(parent, SWT.NONE);
100
//        label.setText(Messages.CharacterMatrixPart_LOADING_MATRIX);
101
   //     stackLayout.topControl = label;
102
        ContextInjectionFactory.inject(editor, context);
103
    }
104

    
105
    public void init(UUID parentTaxonUuid) {
106
        this.taxonList = CdmStore.getService(ITaxonNodeService.class).getTaxonDistributionDTOForSubtree(parentTaxonUuid, TAXONNODE_PROPERTY_PATH);
107

    
108
        if(taxonList!=null){
109
            editor.loadDistributions(taxonList);
110
            editor.createTable();
111
            editor.pack();
112
            stackLayout.topControl = editor;
113
            editor.getParent().layout();
114
        }
115
    }
116
    public ESelectionService getSelectionService() {
117
        return selService;
118
    }
119

    
120

    
121
    public DistributionEditor getEditor() {
122
        return editor;
123
    }
124

    
125
    /**
126
     * {@inheritDoc}
127
     */
128
    @Override
129
    public void update(CdmDataChangeMap changeEvents) {
130
        // TODO Auto-generated method stub
131

    
132
    }
133

    
134
    /**
135
     * {@inheritDoc}
136
     */
137
    @Override
138
    public ICdmEntitySession getCdmEntitySession() {
139
        // TODO Auto-generated method stub
140
        return null;
141
    }
142

    
143
    /**
144
     * {@inheritDoc}
145
     */
146
    @Override
147
    public <T extends CdmBase> Collection<T> getRootEntities() {
148
        // TODO Auto-generated method stub
149
        return null;
150
    }
151

    
152
    /**
153
     * {@inheritDoc}
154
     */
155
    @Override
156
    public Map<Object, List<String>> getPropertyPathsMap() {
157
        // TODO Auto-generated method stub
158
        return null;
159
    }
160

    
161
    /**
162
     * {@inheritDoc}
163
     */
164
    @Override
165
    public void changed(Object element) {
166
        // TODO Auto-generated method stub
167

    
168
    }
169

    
170
    /**
171
     * {@inheritDoc}
172
     */
173
    @Override
174
    public void forceDirty() {
175
        // TODO Auto-generated method stub
176

    
177
    }
178

    
179
    /**
180
     * {@inheritDoc}
181
     */
182
    @Override
183
    public ConversationHolder getConversationHolder() {
184
        // TODO Auto-generated method stub
185
        return null;
186
    }
187

    
188
    @Persist
189
    @Override
190
    public void save(IProgressMonitor monitor) {
191
        //save distributions
192
      CdmStore.getService(IDescriptionService.class).saveDescriptionElement(editor.getDistributions());
193

    
194
      conversation.commit();
195
      updateResults = null;
196
      dirty.setDirty(false);
197
    }
198

    
199
    /**
200
     * {@inheritDoc}
201
     */
202
    @Override
203
    public boolean isDirty() {
204
        return this.dirty.isDirty();
205
    }
206

    
207
    public void setDirty() {
208
        this.dirty.setDirty(true);
209
    }
210

    
211
}
(12-12/16)