Project

General

Profile

Download (5.02 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.editor.view.concept;
11

    
12
import java.util.Map.Entry;
13

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

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

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

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

    
55
	private ConceptRelationViewer viewer;
56

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

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

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

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

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

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

    
122

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

    
125
		getSite().setSelectionProvider(viewer);
126

    
127
		createMenu();
128
	}
129

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

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

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

    
139
		control.setMenu(menu);
140
	}
141

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

    
148
	private class ConceptRelationViewer extends ListViewer {
149

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

    
171
	}
172

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

    
178
}
(3-3/3)