Project

General

Profile

Download (5.4 KB) Statistics
| Branch: | Tag: | Revision:
1
/**
2
* Copyright (C) 2007 EDIT
3
* European Distributed Institute of Taxonomy
4
* http://www.e-taxonomy.eu
5
*
6
* The contents of this file are subject to the Mozilla Public License Version 1.1
7
* See LICENSE.TXT at the top of this package for the full license terms.
8
*/
9

    
10
package eu.etaxonomy.taxeditor.view;
11

    
12
import java.util.Collection;
13

    
14
import org.eclipse.core.runtime.IProgressMonitor;
15
import org.eclipse.jface.action.GroupMarker;
16
import org.eclipse.jface.action.MenuManager;
17
import org.eclipse.jface.viewers.ArrayContentProvider;
18
import org.eclipse.jface.viewers.IBaseLabelProvider;
19
import org.eclipse.jface.viewers.ISelection;
20
import org.eclipse.jface.viewers.TableViewer;
21
import org.eclipse.jface.viewers.Viewer;
22
import org.eclipse.swt.SWT;
23
import org.eclipse.swt.events.FocusAdapter;
24
import org.eclipse.swt.events.FocusEvent;
25
import org.eclipse.swt.layout.FillLayout;
26
import org.eclipse.swt.widgets.Composite;
27
import org.eclipse.swt.widgets.Control;
28
import org.eclipse.swt.widgets.Menu;
29
import org.eclipse.ui.IMemento;
30
import org.eclipse.ui.IWorkbenchActionConstants;
31
import org.eclipse.ui.IWorkbenchPart;
32

    
33
import eu.etaxonomy.cdm.model.common.CdmBase;
34
import eu.etaxonomy.cdm.persistence.hibernate.CdmDataChangeMap;
35
import eu.etaxonomy.taxeditor.model.ContextListenerAdapter;
36
import eu.etaxonomy.taxeditor.model.IContextListener;
37
import eu.etaxonomy.taxeditor.store.CdmStore;
38

    
39
/**
40
 * @author n.hoffmann
41
 * @created Feb 16, 2011
42
 * @version 1.0
43
 */
44
public abstract class AbstractAccountViewPart<T> extends AbstractCdmViewPart {
45

    
46
	private class ContextListener extends ContextListenerAdapter{
47

    
48
		/* (non-Javadoc)
49
		 * @see eu.etaxonomy.taxeditor.model.IContextListener#contextStop(org.eclipse.ui.IMemento, org.eclipse.core.runtime.IProgressMonitor)
50
		 */
51
		@Override
52
		public void contextStop(IMemento memento, IProgressMonitor monitor) {
53
			monitor.subTask("Shutting down User View");
54
			viewer.setInput(null);
55
		}
56

    
57
		/* (non-Javadoc)
58
		 * @see eu.etaxonomy.taxeditor.model.IContextListener#contextStart(org.eclipse.ui.IMemento, org.eclipse.core.runtime.IProgressMonitor)
59
		 */
60
		@Override
61
		public void contextStart(IMemento memento, IProgressMonitor monitor) {
62
			monitor.subTask("Initiating User View");
63
			viewer.setInput(getInput());
64
		}
65
	}
66

    
67
	protected TableViewer viewer;
68

    
69
	private IContextListener contextListener;
70

    
71
	/* (non-Javadoc)
72
	 * @see org.eclipse.ui.part.WorkbenchPart#createPartControl(org.eclipse.swt.widgets.Composite)
73
	 */
74
	/** {@inheritDoc} */
75
	@Override
76
	public void createPartControl(Composite parent) {
77
		contextListener = new ContextListener();
78
		CdmStore.getContextManager().addContextListener(contextListener);
79

    
80
		FillLayout fillLayout = new FillLayout();
81
		fillLayout.marginWidth = 0;
82
		fillLayout.marginHeight = 0;
83
		fillLayout.type = SWT.VERTICAL;
84
		parent.setLayout(fillLayout);
85

    
86
		viewer = new TableViewer(parent, SWT.MULTI | SWT.H_SCROLL
87
				| SWT.V_SCROLL | SWT.FULL_SELECTION);
88

    
89
		getSite().setSelectionProvider(viewer);
90

    
91
		createColumns(viewer);
92

    
93
		MenuManager menuMgr = new MenuManager();
94
		menuMgr.add(new GroupMarker(IWorkbenchActionConstants.MB_ADDITIONS));
95
		getSite().registerContextMenu(menuMgr, viewer);
96

    
97
		Control control = viewer.getControl();
98
		Menu menu = menuMgr.createContextMenu(control);
99
		control.setMenu(menu);
100

    
101
		viewer.setContentProvider(new ArrayContentProvider());
102
		viewer.setLabelProvider(getLabelProvider());
103

    
104
		if(CdmStore.isActive()){
105
			viewer.setInput(getInput());
106
		}
107

    
108

    
109
		this.addListenerObject(new FocusAdapter() {
110
			/* (non-Javadoc)
111
			 * @see org.eclipse.swt.events.FocusAdapter#focusGained(org.eclipse.swt.events.FocusEvent)
112
			 */
113
			@Override
114
			public void focusGained(FocusEvent e) {
115
				super.focusGained(e);
116
				getConversationHolder().bind();
117
				if (!viewer.getControl().isDisposed()){
118
				    viewer.getControl().setFocus();
119
				}
120
			}
121
		});
122
	}
123

    
124
	/**
125
	 * @return
126
	 */
127
	protected abstract IBaseLabelProvider getLabelProvider();
128

    
129
	/**
130
	 * @param viewer2
131
	 */
132
	protected abstract void createColumns(TableViewer viewer);
133

    
134
	/**
135
	 * @return the contextListener
136
	 */
137
	public IContextListener getContextListener() {
138
		if(contextListener == null){
139
			throw new IllegalStateException("Context listener was not initialized");
140
		}
141
		return contextListener;
142
	}
143

    
144
	/* (non-Javadoc)
145
	 * @see eu.etaxonomy.cdm.persistence.hibernate.ICdmPostDataChangeObserver#update(eu.etaxonomy.cdm.persistence.hibernate.CdmDataChangeMap)
146
	 */
147
	@Override
148
	public void update(CdmDataChangeMap changeEvents) {
149
		// data changes can only be generate here at the moment
150
	}
151

    
152
	/* (non-Javadoc)
153
	 * @see eu.etaxonomy.taxeditor.operation.IPostOperationEnabled#postOperation(eu.etaxonomy.cdm.model.common.CdmBase)
154
	 */
155
	@Override
156
	public boolean postOperation(CdmBase objectAffectedByOperation) {
157
		if(CdmStore.isActive()){
158
			viewer.setInput(getInput());
159
			viewer.refresh();
160
		}
161

    
162
		return true;
163
	}
164

    
165
	/**
166
	 * @return
167
	 */
168
	public abstract Collection getInput();
169

    
170
	/* (non-Javadoc)
171
	 * @see org.eclipse.ui.part.WorkbenchPart#dispose()
172
	 */
173
	@Override
174
	public void dispose() {
175
		CdmStore.getContextManager().removeContextListener(getContextListener());
176
		super.dispose();
177
	}
178

    
179

    
180
	@Override
181
	public void selectionChanged(IWorkbenchPart part, ISelection selection) {
182
		// TODO Auto-generated method stub
183

    
184
	}
185

    
186
	@Override
187
	public Viewer getViewer() {
188
		return viewer;
189
	}
190

    
191
	@Override
192
	public void createViewer(Composite parent) {
193
		// TODO Auto-generated method stub
194

    
195
	}
196

    
197
	@Override
198
	public void changed(Object object) {
199
		// do nothing
200
	}
201

    
202

    
203
	@Override
204
	public boolean onComplete() {
205
		return true;
206
	}
207

    
208
}
(1-1/9)