Project

General

Profile

Download (5.6 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

    
32
import eu.etaxonomy.taxeditor.model.AbstractUtility;
33
import eu.etaxonomy.taxeditor.model.IDirtyMarkable;
34
import eu.etaxonomy.taxeditor.operation.IPostOperationEnabled;
35
import eu.etaxonomy.taxeditor.workbench.WorkbenchUtility;
36
import eu.etaxonomy.taxeditor.workbench.part.ISelectionElementEditingPart;
37

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

    
46
    protected Viewer viewer;
47

    
48
    protected MPart selectionProvidingPart;
49

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

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

    
81
                			 if (rels.iterator().hasNext()){
82
                				 TaxonRelationship rel = rels.iterator().next();
83
                				 if (rel.getType().equals(TaxonRelationshipType.MISAPPLIED_NAME_FOR())){
84
        	        				 viewer.setInput(rel);
85
        	        				 
86
        	        				 return;
87
                				 }
88
                			 }
89
                		}
90

    
91

    
92
                	}
93
                }
94
            	viewer.setInput(element);
95
               
96
                
97
            }
98
            selectionProvidingPart = activePart;
99
        }
100
    }
101

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

    
111
    protected void showEmptyPage() {
112
        if(viewer!=null){
113
            viewer.setInput(null);
114
        }
115
        selectionProvidingPart = null;
116
    }
117

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

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

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

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

    
161
    /**
162
     * {@inheritDoc}
163
     */
164
    @Override
165
    public Object getSelectionProvidingPart() {
166
        return selectionProvidingPart;
167
    }
168

    
169
    @PreDestroy
170
    private void dispose() {
171
    }
172

    
173
    @PersistState
174
    private void persistState(){
175

    
176
    }
177

    
178
    /**
179
     * {@inheritDoc}
180
     */
181
    @Override
182
    public void update(CdmDataChangeMap arg0) {
183
    }
184

    
185
    /**
186
     * {@inheritDoc}
187
     */
188
    @Override
189
    public void forceDirty() {
190
    }
191

    
192
    protected abstract String getViewName();
193

    
194
}
(2-2/2)