Project

General

Profile

Download (5.29 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.MultiPageTaxonEditor;
34
import eu.etaxonomy.taxeditor.editor.TaxonEditorInput;
35
import eu.etaxonomy.taxeditor.editor.key.AbstractGraphKeyEditor;
36
import eu.etaxonomy.taxeditor.editor.l10n.Messages;
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
import eu.etaxonomy.taxeditor.workbench.WorkbenchUtility;
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 workbenchPart, ISelection selection) {
60
		if(part == this){
61
		    return;
62
		}
63
        Object part = workbenchPart;
64
        Object wrappedPart = WorkbenchUtility.getE4WrappedPart(part);
65
        if(wrappedPart!=null){
66
            part = wrappedPart;
67
        }
68
		if(AbstractUtility.getActiveE4Editor() == null){
69
			showEmptyPage();
70
			return;
71
		}
72

    
73
        if (part instanceof DetailsViewPart || part instanceof SupplementalDataViewPart) {
74
            // do not show empty page as these views are also used to edit the
75
            // description selected in this view
76
            return;
77
        }
78
        else if(part instanceof BulkEditor && selection instanceof LineSelection){
79
			if(((LineSelection) selection).getFirstElement() instanceof Taxon){
80
				showViewer(part, (LineSelection) selection);
81
			}
82
			else{
83
				showEmptyPage();
84
			}
85
			return;
86
		}
87
		else if(part instanceof AbstractGraphKeyEditor){
88
			showEmptyPage();
89
			return;
90
		}
91
		else if(part instanceof MultiPageTaxonEditor){
92
			if(! part.equals(this.part)){
93
				IEditorInput input = ((IEditorPart) part).getEditorInput();
94
				showViewer(part, new StructuredSelection(input));
95
			}
96
		}
97
		else {
98
		    showEmptyPage();
99
		}
100

    
101
	}
102

    
103
	@Override
104
	protected String createPartTitle(Object selectedObject) {
105
		if(selectedObject instanceof TaxonEditorInput){
106
			return super.createPartTitle(((TaxonEditorInput) selectedObject).getTaxon());
107
		}
108
		return super.createPartTitle(selectedObject);
109
	}
110

    
111
	@Override
112
	public boolean onComplete() {
113
		return true;
114
	}
115

    
116
	@Override
117
	public Viewer getViewer() {
118
		return viewer;
119
	}
120

    
121
	@Override
122
	public void createViewer(Composite parent) {
123
		viewer = new ConceptRelationViewer(parent);
124

    
125
		viewer.setContentProvider(new ConceptContentProvider());
126
		viewer.setLabelProvider(new ConceptLabelProvider());
127

    
128

    
129
		viewer.setSorter(new ViewerSorter());
130

    
131
		getSite().setSelectionProvider(viewer);
132

    
133
		createMenu();
134
	}
135

    
136
	private void createMenu(){
137
		MenuManager menuManager = new MenuManager();
138
		menuManager.add(new GroupMarker(IWorkbenchActionConstants.MB_ADDITIONS));
139

    
140
		getSite().registerContextMenu(menuManager, viewer);
141

    
142
		Control control = viewer.getControl();
143
		Menu menu = menuManager.createContextMenu(control);
144
		menuManager.setRemoveAllWhenShown(true);
145

    
146
		control.setMenu(menu);
147
	}
148

    
149
	@Override
150
	public void changed(Object object) {
151
		getViewer().refresh();
152
		super.changed(object);
153
	}
154

    
155
	private class ConceptRelationViewer extends ListViewer {
156

    
157
		public ConceptRelationViewer(Composite parent) {
158
			super(parent);
159
		}
160

    
161
		@Override
162
		public ISelection getSelection() {
163
			ISelection selection = super.getSelection();
164
			if(selection instanceof IStructuredSelection && !selection.isEmpty()){
165
				Object firstElement = ((IStructuredSelection) selection).getFirstElement();
166
				TaxonRelationship taxonRelationship = ((Entry<TaxonRelationship, Taxon>)firstElement).getKey();
167
				return new StructuredSelection(taxonRelationship);
168

    
169
			}
170
			return selection;
171
		}
172

    
173
		@Override
174
		public void setSelection(ISelection selection) {
175
			super.setSelection(selection);
176
		}
177

    
178
	}
179

    
180
	@Override
181
	protected String getViewName() {
182
		return Messages.ConceptViewPart_VIEWER_NAME;
183
	}
184

    
185
}
(3-3/3)