1 package eu
.etaxonomy
.taxeditor
.editor
.view
.derivate
;
3 import org
.eclipse
.core
.runtime
.IProgressMonitor
;
4 import org
.eclipse
.jface
.action
.MenuManager
;
5 import org
.eclipse
.jface
.viewers
.AbstractTreeViewer
;
6 import org
.eclipse
.jface
.viewers
.TreeViewer
;
7 import org
.eclipse
.swt
.SWT
;
8 import org
.eclipse
.swt
.widgets
.Composite
;
9 import org
.eclipse
.swt
.widgets
.Control
;
10 import org
.eclipse
.swt
.widgets
.Menu
;
11 import org
.eclipse
.swt
.widgets
.Tree
;
12 import org
.eclipse
.ui
.IEditorInput
;
13 import org
.eclipse
.ui
.IEditorPart
;
14 import org
.eclipse
.ui
.IEditorSite
;
15 import org
.eclipse
.ui
.PartInitException
;
16 import org
.eclipse
.ui
.part
.EditorPart
;
18 import eu
.etaxonomy
.cdm
.api
.conversation
.ConversationHolder
;
19 import eu
.etaxonomy
.cdm
.api
.conversation
.IConversationEnabled
;
20 import eu
.etaxonomy
.cdm
.persistence
.hibernate
.CdmDataChangeMap
;
21 import eu
.etaxonomy
.taxeditor
.model
.IDirtyMarkableSelectionProvider
;
22 import eu
.etaxonomy
.taxeditor
.model
.IPartContentHasDetails
;
23 import eu
.etaxonomy
.taxeditor
.model
.IPartContentHasFactualData
;
24 import eu
.etaxonomy
.taxeditor
.model
.IPartContentHasSupplementalData
;
25 import eu
.etaxonomy
.taxeditor
.store
.CdmStore
;
26 import eu
.etaxonomy
.taxeditor
.ui
.campanula
.derivatesearch
.DerivateLabelProvider
;
29 * Displays the derivate hierarchy of all derivates belonging to a taxon.
32 public class DerivateView
extends EditorPart
implements IPartContentHasFactualData
, IDirtyMarkableSelectionProvider
, IConversationEnabled
, IPartContentHasDetails
, IPartContentHasSupplementalData
{
34 /** Constant <code>ID="eu.etaxonomy.taxeditor.editor.view.desc"{trunked}</code> */
35 public static final String ID
= "eu.etaxonomy.taxeditor.editor.view.derivate.DerivateView";
37 private ConversationHolder conversation
;
39 protected TreeViewer viewer
;
41 private boolean isDirty
;
44 * @see org.eclipse.ui.part.WorkbenchPart#createPartControl(org.eclipse.swt.widgets.Composite)
47 public void createPartControl(Composite parent
) {
48 viewer
= new TreeViewer(new Tree(parent
, SWT
.MULTI
| SWT
.H_SCROLL
| SWT
.V_SCROLL
| SWT
.FULL_SELECTION
));
49 viewer
.setContentProvider(new DerivateContentProvider());
50 viewer
.setLabelProvider(new DerivateLabelProvider());
51 viewer
.setAutoExpandLevel(AbstractTreeViewer
.ALL_LEVELS
);
52 // Propagate selection from viewer
53 getSite().setSelectionProvider(viewer
);
56 MenuManager menuManager
= new MenuManager();
58 getSite().registerContextMenu(menuManager
, viewer
);
60 Control control
= viewer
.getControl();
61 Menu menu
= menuManager
.createContextMenu(control
);
63 control
.setMenu(menu
);
65 IEditorInput editorInput
= getEditorInput();
66 viewer
.setInput(editorInput
);
67 if(editorInput
instanceof DerivateViewEditorInput
){
68 setPartName(((DerivateViewEditorInput
) editorInput
).getFieldUnit().toString());
73 * @see org.eclipse.ui.part.EditorPart#doSave(org.eclipse.core.runtime.IProgressMonitor)
76 public void doSave(IProgressMonitor monitor
) {
77 monitor
.beginTask("Saving Derivates", 3);
78 if (!conversation
.isBound()) {
83 // commit the conversation and start a new transaction immediately
84 conversation
.commit(true);
90 firePropertyChange(PROP_DIRTY
);
94 * @see org.eclipse.ui.part.EditorPart#doSaveAs()
97 public void doSaveAs() {
98 // TODO Auto-generated method stub
103 * @see org.eclipse.ui.part.EditorPart#getTitleToolTip()
106 public String
getTitleToolTip() {
107 return "Derivate View";
111 * @see org.eclipse.ui.part.EditorPart#init(org.eclipse.ui.IEditorSite, org.eclipse.ui.IEditorInput)
114 public void init(IEditorSite site
, IEditorInput input
) throws PartInitException
{
115 conversation
= CdmStore
.createConversation();
121 * @see org.eclipse.ui.part.EditorPart#isDirty()
124 public boolean isDirty() {
129 * @param isDirty the isDirty to set
131 public void setDirty(boolean isDirty
) {
132 this.isDirty
= isDirty
;
136 * @see org.eclipse.ui.part.EditorPart#isSaveAsAllowed()
139 public boolean isSaveAsAllowed() {
140 // TODO Auto-generated method stub
146 * @see org.eclipse.ui.part.WorkbenchPart#setFocus()
149 public void setFocus() {
150 // TODO Auto-generated method stub
155 * @see eu.etaxonomy.cdm.persistence.hibernate.ICdmPostDataChangeObserver#update(eu.etaxonomy.cdm.persistence.hibernate.CdmDataChangeMap)
158 public void update(CdmDataChangeMap changeEvents
) {
159 // TODO Auto-generated method stub
164 * @see eu.etaxonomy.cdm.api.conversation.IConversationEnabled#getConversationHolder()
167 public ConversationHolder
getConversationHolder() {
172 * @see eu.etaxonomy.taxeditor.model.IDirtyMarkableSelectionProvider#changed(java.lang.Object)
175 public void changed(Object element
) {
176 viewer
.setInput(getEditorInput());
178 firePropertyChange(IEditorPart
.PROP_DIRTY
);