Project

General

Profile

Download (5.02 KB) Statistics
| Branch: | Tag: | Revision:
1
// $Id$
2
/**
3
* Copyright (C) 2007 EDIT
4
* European Distributed Institute of Taxonomy
5
* http://www.e-taxonomy.eu
6
*
7
* The contents of this file are subject to the Mozilla Public License Version 1.1
8
* See LICENSE.TXT at the top of this package for the full license terms.
9
*/
10

    
11
package eu.etaxonomy.taxeditor.editor.view.concept;
12

    
13
import java.util.Map.Entry;
14

    
15
import org.eclipse.jface.action.GroupMarker;
16
import org.eclipse.jface.action.MenuManager;
17
import org.eclipse.jface.viewers.ISelection;
18
import org.eclipse.jface.viewers.IStructuredSelection;
19
import org.eclipse.jface.viewers.ListViewer;
20
import org.eclipse.jface.viewers.StructuredSelection;
21
import org.eclipse.jface.viewers.Viewer;
22
import org.eclipse.jface.viewers.ViewerSorter;
23
import org.eclipse.swt.widgets.Composite;
24
import org.eclipse.swt.widgets.Control;
25
import org.eclipse.swt.widgets.Menu;
26
import org.eclipse.ui.IEditorInput;
27
import org.eclipse.ui.IEditorPart;
28
import org.eclipse.ui.IWorkbenchActionConstants;
29
import org.eclipse.ui.IWorkbenchPart;
30

    
31
import eu.etaxonomy.cdm.model.taxon.Taxon;
32
import eu.etaxonomy.cdm.model.taxon.TaxonRelationship;
33
import eu.etaxonomy.taxeditor.bulkeditor.BulkEditor;
34
import eu.etaxonomy.taxeditor.editor.Messages;
35
import eu.etaxonomy.taxeditor.editor.MultiPageTaxonEditor;
36
import eu.etaxonomy.taxeditor.editor.TaxonEditorInput;
37
import eu.etaxonomy.taxeditor.editor.key.AbstractGraphKeyEditor;
38
import eu.etaxonomy.taxeditor.model.AbstractUtility;
39
import eu.etaxonomy.taxeditor.model.IPartContentHasDetails;
40
import eu.etaxonomy.taxeditor.model.IPartContentHasSupplementalData;
41
import eu.etaxonomy.taxeditor.model.LineSelection;
42
import eu.etaxonomy.taxeditor.view.AbstractCdmEditorViewPart;
43
import eu.etaxonomy.taxeditor.view.detail.DetailsViewPart;
44
import eu.etaxonomy.taxeditor.view.supplementaldata.SupplementalDataViewPart;
45

    
46
/**
47
 * @author n.hoffmann
48
 * @created Jan 24, 2011
49
 * @version 1.0
50
 */
51
public class ConceptViewPart extends AbstractCdmEditorViewPart 
52
implements IPartContentHasDetails, IPartContentHasSupplementalData{
53

    
54
	public static final String ID = "eu.etaxonomy.taxeditor.editor.view.concept"; //$NON-NLS-1$
55

    
56
	private ConceptRelationViewer viewer;
57

    
58
	@Override
59
	protected void selectionChanged_internal(IWorkbenchPart part, ISelection selection) {
60
		if(part == this){
61
		    return;
62
		}
63
		if(AbstractUtility.getActiveEditor() == null){
64
			showEmptyPage();
65
			return;
66
		}
67
		
68
        if (part instanceof DetailsViewPart || part instanceof SupplementalDataViewPart) {
69
            // do not show empty page as these views are also used to edit the
70
            // description selected in this view
71
            return;
72
        }
73
        else if(part instanceof BulkEditor && selection instanceof LineSelection){
74
			if(((LineSelection) selection).getFirstElement() instanceof Taxon){
75
				showViewer(part, (LineSelection) selection);
76
			}
77
			else{
78
				showEmptyPage();
79
			}
80
			return;
81
		}
82
		else if(part instanceof AbstractGraphKeyEditor){
83
			showEmptyPage();
84
			return;
85
		}
86
		else if(part instanceof MultiPageTaxonEditor){
87
			if(! part.equals(this.part)){
88
				IEditorInput input = ((IEditorPart) part).getEditorInput();
89
				showViewer(part, new StructuredSelection(input));
90
			}
91
		}
92
		else {
93
		    showEmptyPage();
94
		}
95

    
96
	}
97
	
98
	@Override
99
	protected String createPartTitle(Object selectedObject) {
100
		if(selectedObject instanceof TaxonEditorInput){
101
			return super.createPartTitle(((TaxonEditorInput) selectedObject).getTaxon());
102
		}
103
		return super.createPartTitle(selectedObject);
104
	}
105

    
106
	@Override
107
	public boolean onComplete() {
108
		return true;
109
	}
110

    
111
	@Override
112
	public Viewer getViewer() {
113
		return viewer;
114
	}
115

    
116
	@Override
117
	public void createViewer(Composite parent) {
118
		viewer = new ConceptRelationViewer(parent);
119

    
120
		viewer.setContentProvider(new ConceptContentProvider());
121
		viewer.setLabelProvider(new ConceptLabelProvider());
122

    
123

    
124
		viewer.setSorter(new ViewerSorter());
125

    
126
		getSite().setSelectionProvider(viewer);
127

    
128
		createMenu();
129
	}
130

    
131
	private void createMenu(){
132
		MenuManager menuManager = new MenuManager();
133
		menuManager.add(new GroupMarker(IWorkbenchActionConstants.MB_ADDITIONS));
134

    
135
		getSite().registerContextMenu(menuManager, viewer);
136

    
137
		Control control = viewer.getControl();
138
		Menu menu = menuManager.createContextMenu(control);
139

    
140
		control.setMenu(menu);
141
	}
142

    
143
	@Override
144
	public void changed(Object object) {
145
		getViewer().refresh();
146
		super.changed(object);
147
	}
148

    
149
	private class ConceptRelationViewer extends ListViewer {
150

    
151
		public ConceptRelationViewer(Composite parent) {
152
			super(parent);
153
		} 
154
		
155
		@Override
156
		public ISelection getSelection() {
157
			ISelection selection = super.getSelection();
158
			if(selection instanceof IStructuredSelection && !selection.isEmpty()){
159
				Object firstElement = ((IStructuredSelection) selection).getFirstElement();
160
				TaxonRelationship taxonRelationship = ((Entry<TaxonRelationship, Taxon>)firstElement).getKey();
161
				return new StructuredSelection(taxonRelationship);
162
				
163
			}
164
			return selection;
165
		}
166
		
167
		@Override
168
		public void setSelection(ISelection selection) {
169
			super.setSelection(selection);
170
		}
171

    
172
	}
173

    
174
	@Override
175
	protected String getViewName() {
176
		return Messages.ConceptViewPart_VIEWER_NAME;
177
	}
178

    
179
}
(3-3/3)