Project

General

Profile

Download (5.82 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.StructuredSelection;
7
import org.eclipse.jface.viewers.TreeViewer;
8
import org.eclipse.swt.SWT;
9
import org.eclipse.swt.widgets.Composite;
10
import org.eclipse.swt.widgets.Control;
11
import org.eclipse.swt.widgets.Menu;
12
import org.eclipse.swt.widgets.Tree;
13
import org.eclipse.ui.IEditorInput;
14
import org.eclipse.ui.IEditorPart;
15
import org.eclipse.ui.IEditorSite;
16
import org.eclipse.ui.PartInitException;
17
import org.eclipse.ui.part.EditorPart;
18

    
19
import eu.etaxonomy.cdm.api.conversation.ConversationHolder;
20
import eu.etaxonomy.cdm.api.conversation.IConversationEnabled;
21
import eu.etaxonomy.cdm.model.occurrence.FieldUnit;
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 boolean isDirty;
44

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

    
57
        //create context menu
58
        MenuManager menuManager = new MenuManager();
59

    
60
        getSite().registerContextMenu(menuManager, viewer);
61

    
62
        Control control = viewer.getControl();
63
        Menu menu = menuManager.createContextMenu(control);
64

    
65
        control.setMenu(menu);
66

    
67
        IEditorInput editorInput = getEditorInput();
68
        viewer.setInput(editorInput);
69
        if(editorInput instanceof DerivateViewEditorInput){
70
            FieldUnit fieldUnit = ((DerivateViewEditorInput) editorInput).getFieldUnit();
71
            setPartName(fieldUnit.toString());
72
            viewer.setSelection(new StructuredSelection(fieldUnit));
73
        }
74
    }
75

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

    
87
        // commit the conversation and start a new transaction immediately
88
        conversation.commit(true);
89
        monitor.worked(1);
90

    
91
        this.setDirty(false);
92
        monitor.worked(1);
93
        monitor.done();
94
        firePropertyChange(PROP_DIRTY);
95
    }
96

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

    
104
    }
105

    
106
    /* (non-Javadoc)
107
     * @see org.eclipse.ui.part.EditorPart#getTitleToolTip()
108
     */
109
    @Override
110
    public String getTitleToolTip() {
111
        return "Derivate View";
112
    }
113

    
114
    /* (non-Javadoc)
115
     * @see org.eclipse.ui.part.EditorPart#init(org.eclipse.ui.IEditorSite, org.eclipse.ui.IEditorInput)
116
     */
117
    @Override
118
    public void init(IEditorSite site, IEditorInput input) throws PartInitException {
119
        conversation = CdmStore.createConversation();
120
        setSite(site);
121
        setInput(input);
122
    }
123

    
124
    /* (non-Javadoc)
125
     * @see org.eclipse.ui.part.EditorPart#isDirty()
126
     */
127
    @Override
128
    public boolean isDirty() {
129
        return isDirty;
130
    }
131

    
132
    /**
133
     * @param isDirty the isDirty to set
134
     */
135
    public void setDirty(boolean isDirty) {
136
        this.isDirty = isDirty;
137
    }
138

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

    
148

    
149
    /* (non-Javadoc)
150
     * @see org.eclipse.ui.part.WorkbenchPart#setFocus()
151
     */
152
    @Override
153
    public void setFocus() {
154
        // TODO Auto-generated method stub
155

    
156
    }
157

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

    
165
    }
166

    
167
    /* (non-Javadoc)
168
     * @see eu.etaxonomy.cdm.api.conversation.IConversationEnabled#getConversationHolder()
169
     */
170
    @Override
171
    public ConversationHolder getConversationHolder() {
172
        return conversation;
173
    }
174

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

    
185
}
(4-4/5)