merge-update from trunk
[taxeditor.git] / eu.etaxonomy.taxeditor.editor / src / main / java / eu / etaxonomy / taxeditor / editor / view / media / MediaViewPart.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.media;
12
13 import org.eclipse.jface.action.GroupMarker;
14 import org.eclipse.jface.action.MenuManager;
15 import org.eclipse.jface.viewers.ISelection;
16 import org.eclipse.jface.viewers.IStructuredSelection;
17 import org.eclipse.jface.viewers.StructuredSelection;
18 import org.eclipse.jface.viewers.TreeNode;
19 import org.eclipse.jface.viewers.TreeViewer;
20 import org.eclipse.jface.viewers.Viewer;
21 import org.eclipse.swt.SWT;
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.swt.widgets.Tree;
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.occurrence.SpecimenOrObservationBase;
32 import eu.etaxonomy.taxeditor.bulkeditor.BulkEditor;
33 import eu.etaxonomy.taxeditor.editor.EditorUtil;
34 import eu.etaxonomy.taxeditor.editor.MultiPageTaxonEditor;
35 import eu.etaxonomy.taxeditor.editor.view.derivate.DerivateView;
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.view.AbstractCdmEditorViewPart;
40
41 /**
42 * <p>MediaViewPart class.</p>
43 *
44 * @author n.hoffmann
45 * @created Jun 15, 2010
46 * @version 1.0
47 */
48 public class MediaViewPart extends AbstractCdmEditorViewPart implements IPartContentHasDetails, IPartContentHasSupplementalData {
49
50 /** Constant <code>ID="eu.etaxonomy.taxeditor.editor.view.medi"{trunked}</code> */
51 public static final String ID = "eu.etaxonomy.taxeditor.editor.view.media";
52
53 private TreeViewer viewer;
54
55 /*
56 * (non-Javadoc)
57 * @see eu.etaxonomy.taxeditor.model.AbstractCdmViewPart#createViewer(org.eclipse.swt.widgets.Composite)
58 */
59 /** {@inheritDoc} */
60 @Override
61 public void createViewer(Composite parent) {
62
63 viewer = new TreeViewer(new Tree(parent, SWT.MULTI | SWT.H_SCROLL
64 | SWT.V_SCROLL | SWT.FULL_SELECTION));
65
66 viewer.setContentProvider(new MediaContentProvider());
67 viewer.setLabelProvider(new MediaLabelProvider());
68 viewer.setAutoExpandLevel(2);
69
70 // Propagate selection from viewer
71 getSite().setSelectionProvider(viewer);
72
73 // Add context menu to tree
74 MenuManager menuMgr = new MenuManager();
75 menuMgr.add(new GroupMarker(IWorkbenchActionConstants.MB_ADDITIONS));
76 getSite().registerContextMenu(menuMgr, viewer);
77
78 Control control = viewer.getControl();
79 Menu menu = menuMgr.createContextMenu(control);
80 control.setMenu(menu);
81
82 }
83
84 /* (non-Javadoc)
85 * @see eu.etaxonomy.taxeditor.model.AbstractCdmViewPart#getInitialSelection()
86 */
87 /** {@inheritDoc} */
88 @Override
89 protected ISelection getInitialSelection() {
90 if(getEditor() != null){
91 return new StructuredSelection(getEditor().getEditorInput());
92 }
93
94 return super.getInitialSelection();
95 }
96
97 /** {@inheritDoc} */
98 @Override
99 protected void selectionChanged_internal(IWorkbenchPart part, ISelection selection) {
100 if(AbstractUtility.getActiveEditor() == null){
101 showEmptyPage();
102 return;
103 }
104
105 if(part instanceof MultiPageTaxonEditor){
106 IEditorInput input = ((IEditorPart) part).getEditorInput();
107 showViewer(part, new StructuredSelection(input));
108 }
109
110 else if(part instanceof BulkEditor && selection instanceof IStructuredSelection){
111 showViewer(part, (IStructuredSelection) selection);
112 }
113
114 else if(part instanceof DerivateView){
115 TreeNode treeNode = EditorUtil.getTreeNodeOfSelection(selection);
116 if(treeNode!=null){
117 showViewer(part, new StructuredSelection(treeNode.getValue()));
118 }
119 }
120 }
121
122 /** {@inheritDoc} */
123 @Override
124 public void changed(Object object) {
125 viewer.refresh();
126 //TODO: should be replaced with the possibility to set views dirty
127 // when we move to Eclipse 4
128 if(part instanceof BulkEditor && !(object instanceof SpecimenOrObservationBase<?>)){
129 ((BulkEditor) part).forceDirty();
130 }
131 super.changed(object);
132 }
133
134 /** {@inheritDoc} */
135 @Override
136 public Viewer getViewer() {
137 return viewer;
138 }
139
140 /**
141 * <p>onComplete</p>
142 *
143 * @return a boolean.
144 */
145 @Override
146 public boolean onComplete() {
147 return true;
148 }
149 }