015600a06cf733315ddf18b5d01168c285a0bffb
[taxeditor.git] / eu.etaxonomy.taxeditor.editor / src / main / java / eu / etaxonomy / taxeditor / editor / view / concept / ConceptViewPart.java
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.MultiPageTaxonEditor;
35 import eu.etaxonomy.taxeditor.editor.key.AbstractGraphKeyEditor;
36 import eu.etaxonomy.taxeditor.model.AbstractUtility;
37 import eu.etaxonomy.taxeditor.model.IPartContentHasDetails;
38 import eu.etaxonomy.taxeditor.model.IPartContentHasSupplementalData;
39 import eu.etaxonomy.taxeditor.model.LineSelection;
40 import eu.etaxonomy.taxeditor.view.AbstractCdmEditorViewPart;
41
42 /**
43 * @author n.hoffmann
44 * @created Jan 24, 2011
45 * @version 1.0
46 */
47 public class ConceptViewPart extends AbstractCdmEditorViewPart
48 implements IPartContentHasDetails, IPartContentHasSupplementalData{
49
50 public static final String ID = "eu.etaxonomy.taxeditor.editor.view.concept";
51
52 private ConceptRelationViewer viewer;
53
54 @Override
55 protected void selectionChanged_internal(IWorkbenchPart part, ISelection selection) {
56 if(part == this){
57 return;
58 }
59 if(AbstractUtility.getActiveEditor() == null){
60 showEmptyPage();
61 return;
62 }
63
64 if(part instanceof BulkEditor && selection instanceof LineSelection){
65 if(((LineSelection) selection).getFirstElement() instanceof Taxon){
66 showViewer(part, (LineSelection) selection);
67 }
68 else{
69 showEmptyPage();
70 }
71 return;
72 }
73
74 else if(part instanceof AbstractGraphKeyEditor){
75 showEmptyPage();
76 return;
77 }
78
79 else if(part instanceof MultiPageTaxonEditor){
80 if(! part.equals(this.part)){
81 IEditorInput input = ((IEditorPart) part).getEditorInput();
82 showViewer(part, new StructuredSelection(input));
83 }
84 else{
85 showViewer();
86 }
87 }
88 else {
89 showEmptyPage();
90 }
91
92 }
93
94 @Override
95 public boolean onComplete() {
96 return true;
97 }
98
99 @Override
100 public Viewer getViewer() {
101 return viewer;
102 }
103
104 @Override
105 public void createViewer(Composite parent) {
106 viewer = new ConceptRelationViewer(parent);
107
108 viewer.setContentProvider(new ConceptContentProvider());
109 viewer.setLabelProvider(new ConceptLabelProvider());
110
111
112 viewer.setSorter(new ViewerSorter());
113
114 getSite().setSelectionProvider(viewer);
115
116 createMenu();
117 }
118
119 private void createMenu(){
120 MenuManager menuManager = new MenuManager();
121 menuManager.add(new GroupMarker(IWorkbenchActionConstants.MB_ADDITIONS));
122
123 getSite().registerContextMenu(menuManager, viewer);
124
125 Control control = viewer.getControl();
126 Menu menu = menuManager.createContextMenu(control);
127
128 control.setMenu(menu);
129 }
130
131 @Override
132 public void changed(Object object) {
133 getViewer().refresh();
134 super.changed(object);
135 }
136
137 private class ConceptRelationViewer extends ListViewer {
138
139 public ConceptRelationViewer(Composite parent) {
140 super(parent);
141 }
142
143 @Override
144 public ISelection getSelection() {
145 ISelection selection = super.getSelection();
146 if(selection instanceof IStructuredSelection && !selection.isEmpty()){
147 Object firstElement = ((IStructuredSelection) selection).getFirstElement();
148 TaxonRelationship taxonRelationship = ((Entry<TaxonRelationship, Taxon>)firstElement).getKey();
149 return new StructuredSelection(taxonRelationship);
150
151 }
152 return selection;
153 }
154
155 @Override
156 public void setSelection(ISelection selection) {
157 super.setSelection(selection);
158 }
159
160 }
161
162 }