Project

General

Profile

Download (5.9 KB) Statistics
| Branch: | Tag: | Revision:
1
package eu.etaxonomy.taxeditor.editor.view.derivate;
2

    
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;
17

    
18
import eu.etaxonomy.cdm.api.conversation.ConversationHolder;
19
import eu.etaxonomy.cdm.api.conversation.IConversationEnabled;
20
import eu.etaxonomy.cdm.api.facade.DerivedUnitFacadeCacheStrategy;
21
import eu.etaxonomy.cdm.model.occurrence.SpecimenOrObservationBase;
22
import eu.etaxonomy.cdm.persistence.hibernate.CdmDataChangeMap;
23
import eu.etaxonomy.taxeditor.model.IDirtyMarkableSelectionProvider;
24
import eu.etaxonomy.taxeditor.model.IPartContentHasDetails;
25
import eu.etaxonomy.taxeditor.model.IPartContentHasFactualData;
26
import eu.etaxonomy.taxeditor.model.IPartContentHasSupplementalData;
27
import eu.etaxonomy.taxeditor.store.CdmStore;
28
import eu.etaxonomy.taxeditor.ui.campanula.derivatesearch.DerivateLabelProvider;
29

    
30
/**
31
 * Displays the derivate hierarchy of all derivates belonging to a taxon.
32
 *
33
 */
34
public class DerivateView extends EditorPart implements IPartContentHasFactualData, IDirtyMarkableSelectionProvider, IConversationEnabled, IPartContentHasDetails, IPartContentHasSupplementalData {
35

    
36
	/** Constant <code>ID="eu.etaxonomy.taxeditor.editor.view.desc"{trunked}</code> */
37
	public static final String ID = "eu.etaxonomy.taxeditor.editor.view.derivate.DerivateView";
38

    
39
	private ConversationHolder conversation;
40

    
41
	protected TreeViewer viewer;
42

    
43
	private SpecimenOrObservationBase<DerivedUnitFacadeCacheStrategy> derivate;
44

    
45
    private boolean isDirty;
46

    
47
    /* (non-Javadoc)
48
     * @see org.eclipse.ui.part.WorkbenchPart#createPartControl(org.eclipse.swt.widgets.Composite)
49
     */
50
    @Override
51
    public void createPartControl(Composite parent) {
52
        viewer = new TreeViewer(new Tree(parent, SWT.MULTI | SWT.H_SCROLL | SWT.V_SCROLL | SWT.FULL_SELECTION));
53
        viewer.setContentProvider(new DerivateContentProvider());
54
        viewer.setLabelProvider(new DerivateLabelProvider());
55
        viewer.setAutoExpandLevel(AbstractTreeViewer.ALL_LEVELS);
56
        // Propagate selection from viewer
57
        getSite().setSelectionProvider(viewer);
58

    
59
        //create context menu
60
        MenuManager menuManager = new MenuManager();
61

    
62
        getSite().registerContextMenu(menuManager, viewer);
63

    
64
        Control control = viewer.getControl();
65
        Menu menu = menuManager.createContextMenu(control);
66

    
67
        control.setMenu(menu);
68

    
69

    
70
        viewer.setInput(getEditorInput());
71
    }
72

    
73
    /* (non-Javadoc)
74
     * @see org.eclipse.ui.part.EditorPart#doSave(org.eclipse.core.runtime.IProgressMonitor)
75
     */
76
    @Override
77
    public void doSave(IProgressMonitor monitor) {
78
        monitor.beginTask("Saving Derivates", 3);
79
        if (!conversation.isBound()) {
80
            conversation.bind();
81
        }
82
        monitor.worked(1);
83

    
84
        // commit the conversation and start a new transaction immediately
85
        conversation.commit(true);
86
        monitor.worked(1);
87

    
88
        this.setDirty(false);
89
        monitor.worked(1);
90
        monitor.done();
91
        firePropertyChange(PROP_DIRTY);
92
    }
93

    
94
    /* (non-Javadoc)
95
     * @see org.eclipse.ui.part.EditorPart#doSaveAs()
96
     */
97
    @Override
98
    public void doSaveAs() {
99
        // TODO Auto-generated method stub
100

    
101
    }
102

    
103
    /* (non-Javadoc)
104
     * @see org.eclipse.ui.part.EditorPart#getTitleToolTip()
105
     */
106
    @Override
107
    public String getTitleToolTip() {
108
        // TODO Auto-generated method stub
109
        return "Derivate View";
110
    }
111

    
112
    /* (non-Javadoc)
113
     * @see org.eclipse.ui.part.EditorPart#init(org.eclipse.ui.IEditorSite, org.eclipse.ui.IEditorInput)
114
     */
115
    @Override
116
    public void init(IEditorSite site, IEditorInput input) throws PartInitException {
117
        conversation = CdmStore.createConversation();
118
        setSite(site);
119
        setInput(input);
120
        if(input instanceof DerivateViewEditorInput){
121
            derivate = ((DerivateViewEditorInput) input).getDerivate();
122
        }
123
        else{
124
            throw new PartInitException("Invalid Input: Must be DerivateViewEditorInput");
125
        }
126
    }
127

    
128
    /* (non-Javadoc)
129
     * @see org.eclipse.ui.part.EditorPart#isDirty()
130
     */
131
    @Override
132
    public boolean isDirty() {
133
        return isDirty;
134
    }
135

    
136
    /**
137
     * @param isDirty the isDirty to set
138
     */
139
    public void setDirty(boolean isDirty) {
140
        this.isDirty = isDirty;
141
    }
142

    
143
    /* (non-Javadoc)
144
     * @see org.eclipse.ui.part.EditorPart#isSaveAsAllowed()
145
     */
146
    @Override
147
    public boolean isSaveAsAllowed() {
148
        // TODO Auto-generated method stub
149
        return false;
150
    }
151

    
152

    
153
    /* (non-Javadoc)
154
     * @see org.eclipse.ui.part.WorkbenchPart#setFocus()
155
     */
156
    @Override
157
    public void setFocus() {
158
        // TODO Auto-generated method stub
159

    
160
    }
161

    
162
    /* (non-Javadoc)
163
     * @see eu.etaxonomy.cdm.persistence.hibernate.ICdmPostDataChangeObserver#update(eu.etaxonomy.cdm.persistence.hibernate.CdmDataChangeMap)
164
     */
165
    @Override
166
    public void update(CdmDataChangeMap changeEvents) {
167
        // TODO Auto-generated method stub
168

    
169
    }
170

    
171
    /* (non-Javadoc)
172
     * @see eu.etaxonomy.cdm.api.conversation.IConversationEnabled#getConversationHolder()
173
     */
174
    @Override
175
    public ConversationHolder getConversationHolder() {
176
        return conversation;
177
    }
178

    
179
    /* (non-Javadoc)
180
     * @see eu.etaxonomy.taxeditor.model.IDirtyMarkableSelectionProvider#changed(java.lang.Object)
181
     */
182
    @Override
183
    public void changed(Object element) {
184
        firePropertyChange(IEditorPart.PROP_DIRTY);
185
        viewer.setInput(getEditorInput());
186
        setDirty(true);
187
    }
188

    
189
}
(4-4/5)