Project

General

Profile

Download (5.58 KB) Statistics
| Branch: | Tag: | Revision:
1
/**
2
* Copyright (C) 2017 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.view.e4;
10

    
11
import java.util.Set;
12

    
13
import javax.annotation.PreDestroy;
14

    
15
import org.eclipse.e4.ui.di.PersistState;
16
import org.eclipse.e4.ui.model.application.ui.basic.MPart;
17
import org.eclipse.jface.viewers.IStructuredSelection;
18
import org.eclipse.jface.viewers.StructuredSelection;
19
import org.eclipse.jface.viewers.Viewer;
20
import org.eclipse.ui.IEditorPart;
21

    
22
import eu.etaxonomy.cdm.api.conversation.ConversationHolder;
23
import eu.etaxonomy.cdm.api.conversation.IConversationEnabled;
24
import eu.etaxonomy.cdm.hibernate.HibernateProxyHelper;
25
import eu.etaxonomy.cdm.model.common.CdmBase;
26
import eu.etaxonomy.cdm.model.taxon.Taxon;
27
import eu.etaxonomy.cdm.model.taxon.TaxonRelationship;
28
import eu.etaxonomy.cdm.model.taxon.TaxonRelationshipType;
29
import eu.etaxonomy.cdm.persistence.hibernate.CdmDataChangeMap;
30
import eu.etaxonomy.taxeditor.editor.ITaxonEditor;
31
import eu.etaxonomy.taxeditor.model.AbstractUtility;
32
import eu.etaxonomy.taxeditor.model.IDirtyMarkable;
33
import eu.etaxonomy.taxeditor.operation.IPostOperationEnabled;
34
import eu.etaxonomy.taxeditor.workbench.WorkbenchUtility;
35
import eu.etaxonomy.taxeditor.workbench.part.ISelectionElementEditingPart;
36

    
37
/**
38
 * @author pplitzner
39
 * @since Aug 10, 2017
40
 *
41
 */
42
public abstract class AbstractCdmEditorPartE4
43
        implements IConversationEnabled, IDirtyMarkable, ISelectionElementEditingPart, IPostOperationEnabled{
44

    
45
    protected Viewer viewer;
46

    
47
    protected MPart selectionProvidingPart;
48

    
49
    /** {@inheritDoc} */
50
    @Override
51
    public void changed(Object object) {
52
        if(selectionProvidingPart!=null){
53
            Object part = selectionProvidingPart.getObject();
54
            if(part instanceof IDirtyMarkable){
55
                ((IDirtyMarkable) part).changed(object);
56
            }
57
            else {
58
                IEditorPart editor = AbstractUtility.getActiveEditor();
59
                if (editor != null && editor instanceof IDirtyMarkable) {
60
                    ((IDirtyMarkable) editor).changed(object);
61
                }
62
            }
63
        }
64
    }
65

    
66
    public Viewer getViewer() {
67
        return viewer;
68
    }
69

    
70
    protected void showViewer(IStructuredSelection selection, MPart activePart, Viewer viewer){
71
        if(viewer!=null){
72
            Object element = selection.getFirstElement();
73
            if(selection.getFirstElement()!=null){
74
            	if (element instanceof Taxon){
75
                	Taxon taxon = HibernateProxyHelper.deproxy(element, Taxon.class);
76
                	if (taxon.isMisapplication()){
77
                		Object part = createPartObject(activePart);
78
                		 if(part instanceof ITaxonEditor){
79
                			 Taxon accepted = ((ITaxonEditor) part).getTaxon();
80

    
81
//                			Taxon accepted= ((ITaxonEditor)activePart).getTaxon();
82
                			Set<TaxonRelationship> rels =  taxon.getTaxonRelations(accepted);
83

    
84
                			 if (rels.iterator().hasNext()){
85
                				 TaxonRelationship rel = rels.iterator().next();
86
                				 if (rel.getType().equals(TaxonRelationshipType.MISAPPLIED_NAME_FOR())){
87
        	        				 viewer.setInput(rel);
88

    
89
        	        				 return;
90
                				 }
91
                			 }
92
                		}
93

    
94

    
95
                	}
96
                }
97
            	viewer.setInput(element);
98

    
99

    
100
            }
101
            selectionProvidingPart = activePart;
102
        }
103
    }
104

    
105
    protected Object createPartObject(MPart activePart) {
106
        Object partObject = activePart;
107
        Object wrappedPart = WorkbenchUtility.getE4WrappedPart(activePart);
108
        if(wrappedPart!=null){
109
            partObject = wrappedPart;
110
        }
111
        return partObject;
112
    }
113

    
114
    protected void showEmptyPage() {
115
        if(viewer!=null){
116
            viewer.setInput(null);
117
        }
118
        selectionProvidingPart = null;
119
    }
120

    
121
    protected IStructuredSelection createSelection(Object selection) {
122
        if(selection==null){
123
            return null;
124
        }
125
        IStructuredSelection structuredSelection;
126
        if(!(selection instanceof IStructuredSelection)){
127
            structuredSelection = new StructuredSelection(selection);
128
        }
129
        else{
130
            structuredSelection = (IStructuredSelection) selection;
131
        }
132
        return structuredSelection;
133
    }
134

    
135
    /**
136
     * {@inheritDoc}
137
     */
138
    @Override
139
    public ConversationHolder getConversationHolder() {
140
        if(selectionProvidingPart != null && selectionProvidingPart instanceof IConversationEnabled) {
141
            return ((IConversationEnabled) selectionProvidingPart).getConversationHolder();
142
        }
143
        return null;
144
    }
145

    
146
    /**
147
     * {@inheritDoc}
148
     */
149
    @Override
150
    public boolean postOperation(CdmBase objectAffectedByOperation) {
151
        changed(objectAffectedByOperation);
152
        return true;
153
    }
154

    
155
    /**
156
     * {@inheritDoc}
157
     */
158
    @Override
159
    public boolean onComplete() {
160
        viewer.refresh();
161
        return true;
162
    }
163

    
164
    /**
165
     * {@inheritDoc}
166
     */
167
    @Override
168
    public Object getSelectionProvidingPart() {
169
        return selectionProvidingPart;
170
    }
171

    
172
    @PreDestroy
173
    private void dispose() {
174
    }
175

    
176
    @PersistState
177
    private void persistState(){
178

    
179
    }
180

    
181
    /**
182
     * {@inheritDoc}
183
     */
184
    @Override
185
    public void update(CdmDataChangeMap arg0) {
186
    }
187

    
188
    /**
189
     * {@inheritDoc}
190
     */
191
    @Override
192
    public void forceDirty() {
193
    }
194

    
195
    protected abstract String getViewName();
196

    
197
}
(2-2/2)