Project

General

Profile

Download (7.31 KB) Statistics
| Branch: | Tag: | Revision:
1
// $Id$
2
/**
3
* Copyright (C) 2013 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
package eu.etaxonomy.taxeditor.editor.view.dataimport;
11

    
12
import java.util.Collection;
13

    
14
import org.eclipse.core.runtime.IProgressMonitor;
15
import org.eclipse.jface.action.MenuManager;
16
import org.eclipse.jface.viewers.TableViewer;
17
import org.eclipse.swt.SWT;
18
import org.eclipse.swt.widgets.Composite;
19
import org.eclipse.swt.widgets.Control;
20
import org.eclipse.swt.widgets.Menu;
21
import org.eclipse.swt.widgets.Table;
22
import org.eclipse.swt.widgets.TableItem;
23
import org.eclipse.ui.IEditorInput;
24
import org.eclipse.ui.IEditorSite;
25
import org.eclipse.ui.IMemento;
26
import org.eclipse.ui.PartInitException;
27
import org.eclipse.ui.part.EditorPart;
28

    
29
import eu.etaxonomy.cdm.api.conversation.ConversationHolder;
30
import eu.etaxonomy.cdm.api.conversation.IConversationEnabled;
31
import eu.etaxonomy.cdm.model.common.IIdentifiableEntity;
32
import eu.etaxonomy.cdm.persistence.hibernate.CdmDataChangeMap;
33
import eu.etaxonomy.taxeditor.model.IContextListener;
34
import eu.etaxonomy.taxeditor.model.IDirtyMarkableSelectionProvider;
35
import eu.etaxonomy.taxeditor.model.IPartContentHasDetails;
36
import eu.etaxonomy.taxeditor.model.IPartContentHasFactualData;
37
import eu.etaxonomy.taxeditor.model.IPartContentHasSupplementalData;
38
import eu.etaxonomy.taxeditor.store.CdmStore;
39

    
40
/**
41
 * Editor which shows a list of "data" that can be imported into the CDM
42
 * @author pplitzner
43
 * @date 20.09.2013
44
 *
45
 */
46
public abstract class DataImportEditor<T extends IIdentifiableEntity> extends EditorPart implements IPartContentHasFactualData, IDirtyMarkableSelectionProvider,
47
IConversationEnabled, IPartContentHasDetails, IPartContentHasSupplementalData, IContextListener{
48

    
49
    private ConversationHolder conversation;
50

    
51
    private TableViewer tableViewer;
52

    
53
    /**
54
     * Constructs a new DataImportEditor and registers it to listen to context changes
55
     */
56
    public DataImportEditor() {
57
        CdmStore.getContextManager().addContextListener(this);
58
    }
59

    
60
    /* (non-Javadoc)
61
     * @see org.eclipse.ui.part.WorkbenchPart#createPartControl(org.eclipse.swt.widgets.Composite)
62
     */
63
    @Override
64
    public void createPartControl(Composite parent) {
65

    
66
        Table table = new Table(parent, SWT.BORDER | SWT.MULTI | SWT.FULL_SELECTION);
67
        table.setHeaderVisible(true);//TODO: set header title as BioCase query
68
        table.setLinesVisible(true);
69
        tableViewer = new TableViewer(table);
70

    
71
        // Propagate selection from viewer
72
        getSite().setSelectionProvider(tableViewer);
73

    
74
        //create context menu
75
        MenuManager menuManager = new MenuManager();
76
        getSite().registerContextMenu(menuManager, tableViewer);
77
        Control control = tableViewer.getControl();
78
        Menu menu = menuManager.createContextMenu(control);
79
        control.setMenu(menu);
80
    }
81

    
82
    /* (non-Javadoc)
83
     * @see org.eclipse.ui.part.WorkbenchPart#setFocus()
84
     */
85
    @Override
86
    public void setFocus() {
87
        //make sure to bind again if maybe in another view the conversation was unbound
88
        if(!conversation.isBound()){
89
            conversation.bind();
90
        }
91
    }
92

    
93

    
94
    /* (non-Javadoc)
95
     * @see org.eclipse.ui.texteditor.AbstractTextEditor#init(org.eclipse.ui.IEditorSite, org.eclipse.ui.IEditorInput)
96
     */
97
    @Override
98
    public void init(IEditorSite site, IEditorInput input) throws PartInitException {
99
        setSite(site);
100
        setInput(input);
101
        setPartName(input.getName());
102
        setTitleToolTip(input.getName());
103
        conversation = ((DataImportEditorInput<T>)input).getConversationHolder();
104
    }
105

    
106
    /* (non-Javadoc)
107
     * @see eu.etaxonomy.taxeditor.annotatedlineeditor.AnnotatedLineEditor#dispose()
108
     */
109
    @Override
110
    public void dispose() {
111
        super.dispose();
112
        CdmStore.getContextManager().removeContextListener(this);
113
    }
114

    
115
    /* (non-Javadoc)
116
     * @see eu.etaxonomy.taxeditor.model.IContextListener#contextAboutToStop(org.eclipse.ui.IMemento, org.eclipse.core.runtime.IProgressMonitor)
117
     */
118
    @Override
119
    public void contextAboutToStop(IMemento memento, IProgressMonitor monitor) {
120
        //nothing
121
    }
122

    
123
    /* (non-Javadoc)
124
     * @see eu.etaxonomy.taxeditor.model.IContextListener#contextStop(org.eclipse.ui.IMemento, org.eclipse.core.runtime.IProgressMonitor)
125
     */
126
    @Override
127
    public void contextStop(IMemento memento, IProgressMonitor monitor) {
128
        //nothing
129
    }
130

    
131
    /* (non-Javadoc)
132
     * @see eu.etaxonomy.taxeditor.model.IContextListener#contextStart(org.eclipse.ui.IMemento, org.eclipse.core.runtime.IProgressMonitor)
133
     */
134
    @Override
135
    public void contextStart(IMemento memento, IProgressMonitor monitor) {
136
        //nothing
137
    }
138

    
139
    /* (non-Javadoc)
140
     * @see eu.etaxonomy.taxeditor.model.IContextListener#contextRefresh(org.eclipse.core.runtime.IProgressMonitor)
141
     */
142
    @Override
143
    public void contextRefresh(IProgressMonitor monitor) {
144
        IEditorInput editorInput = getEditorInput();
145
        setInput(editorInput);
146
        if(editorInput instanceof DataImportEditorInput){
147
            tableViewer.getTable().removeAll();
148
            Collection<T> results = ((DataImportEditorInput<T>) editorInput).getResults();
149
            if(results!=null){
150
                for(T specimen:results){
151
                    TableItem tableItem = new TableItem(tableViewer.getTable(), SWT.NONE);
152
                    tableItem.setText(specimen.generateTitle());
153
                    tableItem.setData(specimen);
154
                }
155
            }
156
        }
157
    }
158

    
159
    /* (non-Javadoc)
160
     * @see eu.etaxonomy.taxeditor.model.IContextListener#workbenchShutdown(org.eclipse.ui.IMemento, org.eclipse.core.runtime.IProgressMonitor)
161
     */
162
    @Override
163
    public void workbenchShutdown(IMemento memento, IProgressMonitor monitor) {
164
        if(conversation!=null &&!conversation.isClosed()) {
165
            conversation.close();
166
        }
167
    }
168

    
169
    /* (non-Javadoc)
170
     * @see eu.etaxonomy.cdm.persistence.hibernate.ICdmPostDataChangeObserver#update(eu.etaxonomy.cdm.persistence.hibernate.CdmDataChangeMap)
171
     */
172
    @Override
173
    public void update(CdmDataChangeMap changeEvents) {
174
        //nothing
175
    }
176

    
177
    /* (non-Javadoc)
178
     * @see eu.etaxonomy.cdm.api.conversation.IConversationEnabled#getConversationHolder()
179
     */
180
    @Override
181
    public ConversationHolder getConversationHolder() {
182
        return conversation;
183
    }
184

    
185
    /* (non-Javadoc)
186
     * @see eu.etaxonomy.taxeditor.model.IDirtyMarkableSelectionProvider#changed(java.lang.Object)
187
     */
188
    @Override
189
    public void changed(Object element) {
190
        // cannot be changed
191
    }
192

    
193
    /* (non-Javadoc)
194
     * @see org.eclipse.ui.part.EditorPart#doSave(org.eclipse.core.runtime.IProgressMonitor)
195
     */
196
    @Override
197
    public void doSave(IProgressMonitor monitor) {
198
    }
199

    
200
    /* (non-Javadoc)
201
     * @see org.eclipse.ui.part.EditorPart#doSaveAs()
202
     */
203
    @Override
204
    public void doSaveAs() {
205
    }
206

    
207
    /* (non-Javadoc)
208
     * @see org.eclipse.ui.part.EditorPart#isDirty()
209
     */
210
    @Override
211
    public boolean isDirty() {
212
        return false;
213
    }
214

    
215
    /* (non-Javadoc)
216
     * @see org.eclipse.ui.part.EditorPart#isSaveAsAllowed()
217
     */
218
    @Override
219
    public boolean isSaveAsAllowed() {
220
        return false;
221
    }
222

    
223
}
(1-1/9)