Project

General

Profile

Download (5.65 KB) Statistics
| Branch: | Tag: | Revision:
1
/**
2
* Copyright (C) 2007 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

    
10
package eu.etaxonomy.taxeditor.view.detail;
11

    
12
import org.eclipse.core.runtime.IProgressMonitor;
13
import org.eclipse.jface.viewers.ISelection;
14
import org.eclipse.jface.viewers.IStructuredSelection;
15
import org.eclipse.jface.viewers.TreeNode;
16
import org.eclipse.jface.viewers.Viewer;
17
import org.eclipse.swt.widgets.Composite;
18
import org.eclipse.ui.IEditorPart;
19
import org.eclipse.ui.IMemento;
20
import org.eclipse.ui.IWorkbenchPart;
21

    
22
import eu.etaxonomy.cdm.api.conversation.IConversationEnabled;
23
import eu.etaxonomy.cdm.hibernate.HibernateProxyHelper;
24
import eu.etaxonomy.cdm.model.common.CdmBase;
25
import eu.etaxonomy.cdm.model.description.Feature;
26
import eu.etaxonomy.cdm.model.occurrence.SpecimenOrObservationBase;
27
import eu.etaxonomy.taxeditor.Messages;
28
import eu.etaxonomy.taxeditor.model.AbstractUtility;
29
import eu.etaxonomy.taxeditor.model.FeatureNodeContainer;
30
import eu.etaxonomy.taxeditor.model.IContextListener;
31
import eu.etaxonomy.taxeditor.model.IPartContentHasDetails;
32
import eu.etaxonomy.taxeditor.model.IPartContentHasSupplementalData;
33
import eu.etaxonomy.taxeditor.view.AbstractCdmEditorViewPart;
34

    
35
/**
36
 * <p>DetailsViewPart class.</p>
37
 *
38
 * @author n.hoffmann
39
 * @created Jun 10, 2010
40
 * @version 1.0
41
 */
42
public class DetailsViewPart extends AbstractCdmEditorViewPart implements IPartContentHasSupplementalData, IContextListener{
43

    
44
	/** Constant <code>ID="eu.etaxonomy.taxeditor.editor.forms.det"{trunked}</code> */
45
	public static String ID = "eu.etaxonomy.taxeditor.view.detail"; //$NON-NLS-1$
46

    
47
	private DetailsViewer viewer;
48

    
49
	/** {@inheritDoc} */
50
	@Override
51
	public void createViewer(Composite parent) {
52

    
53
		viewer = new DetailsViewer(parent, this);
54
		getSite().setSelectionProvider(viewer);
55
	}
56

    
57
	@Override
58
    protected void selectionChanged_internal(IWorkbenchPart part, ISelection selection){
59
	    if(AbstractUtility.getActiveEditor() == null && !(AbstractUtility.getActivePart() instanceof IConversationEnabled)){
60
            showEmptyPage();
61
            return;
62
        }
63

    
64
	    if(AbstractUtility.getActiveEditor() == null &&
65
	            selection instanceof IStructuredSelection && ((IStructuredSelection) selection).getFirstElement() !=null){
66
	        //special case where the details view still open with details about the closed object #5495
67
	        showEmptyPage();
68
	        return;
69
	    }
70
        if(part == this){
71
            return;
72
        }
73

    
74
        if(!(selection instanceof IStructuredSelection)){
75
            return;
76
        }
77

    
78
        IStructuredSelection structuredSelection = (IStructuredSelection) selection;
79

    
80
        if((part instanceof IEditorPart) || (part instanceof IPartContentHasDetails)) {
81
            if(structuredSelection.size() != 1){
82
                showEmptyPage();
83
                return;
84
            }
85

    
86
            // do not show details for feature nodes TODO really?
87
            if(structuredSelection.getFirstElement() instanceof FeatureNodeContainer){
88
                // do show the map for distributions
89
                Feature feature = ((FeatureNodeContainer) ((IStructuredSelection) selection).getFirstElement()).getFeature();
90
                if(!feature.equals(Feature.DISTRIBUTION())){
91
                    showEmptyPage();
92
                    return;
93
                }
94
            }
95
            showViewer(part, structuredSelection);
96
        }else{
97
            showEmptyPage();
98
        }
99
	}
100

    
101
	@Override
102
	protected String getViewName(){
103
	    return Messages.DetailsViewPart_VIEWER_NAME;
104
	}
105

    
106
	@Override
107
	protected String createPartTitle(Object selectedObject){
108
	    if(selectedObject!=null){
109
	        if(selectedObject instanceof TreeNode){
110
	            selectedObject = ((TreeNode) selectedObject).getValue();
111
	        }
112
	        if(selectedObject instanceof SpecimenOrObservationBase){
113
	            return getViewName()+": "+HibernateProxyHelper.deproxy(selectedObject, SpecimenOrObservationBase.class).getRecordBasis(); //$NON-NLS-1$
114
	        }
115
	        if(selectedObject instanceof CdmBase){
116
	            return getViewName()+": "+HibernateProxyHelper.deproxy(selectedObject, CdmBase.class).getClass().getSimpleName(); //$NON-NLS-1$
117
	        }
118
	        return getViewName()+": "+selectedObject.getClass().getSimpleName(); //$NON-NLS-1$
119
	    }
120
	    return getViewName();
121
	}
122

    
123
	@Override
124
	public void showEmptyPage() {
125
	    viewer.setSelection(null);
126
	    super.showEmptyPage();
127
	}
128

    
129
	/** {@inheritDoc} */
130
	@Override
131
	public boolean postOperation(CdmBase objectAffectedByOperation) {
132

    
133
		viewer.setInput(objectAffectedByOperation);
134

    
135
		return super.postOperation(objectAffectedByOperation);
136
	}
137

    
138

    
139
	/** {@inheritDoc} */
140
	@Override
141
	public Viewer getViewer() {
142
		return viewer;
143
	}
144

    
145

    
146
	/** {@inheritDoc} */
147
	@Override
148
	public void dispose() {
149
		selectionService.removePostSelectionListener(this);
150
		super.dispose();
151

    
152
	}
153

    
154
	@Override
155
    public boolean onComplete() {
156
		return true;
157
	}
158

    
159
    /**
160
     * {@inheritDoc}
161
     */
162
    @Override
163
    public void contextAboutToStop(IMemento memento, IProgressMonitor monitor) {
164
    }
165

    
166
    /**
167
     * {@inheritDoc}
168
     */
169
    @Override
170
    public void contextStop(IMemento memento, IProgressMonitor monitor) {
171
        showEmptyPage();
172
    }
173

    
174
    /**
175
     * {@inheritDoc}
176
     */
177
    @Override
178
    public void contextStart(IMemento memento, IProgressMonitor monitor) {
179
    }
180

    
181
    /**
182
     * {@inheritDoc}
183
     */
184
    @Override
185
    public void contextRefresh(IProgressMonitor monitor) {
186
    }
187

    
188
    /**
189
     * {@inheritDoc}
190
     */
191
    @Override
192
    public void workbenchShutdown(IMemento memento, IProgressMonitor monitor) {
193
    }
194

    
195

    
196

    
197
}
(2-2/3)