Project

General

Profile

Download (5.5 KB) Statistics
| Branch: | Tag: | Revision:
1
// $Id$
2
/**
3
* Copyright (C) 2007 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

    
11
package eu.etaxonomy.taxeditor.view;
12

    
13
import java.util.Collection;
14

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

    
34
import eu.etaxonomy.cdm.api.conversation.ConversationHolder;
35
import eu.etaxonomy.cdm.model.common.CdmBase;
36
import eu.etaxonomy.cdm.persistence.hibernate.CdmDataChangeMap;
37
import eu.etaxonomy.taxeditor.model.ContextListenerAdapter;
38
import eu.etaxonomy.taxeditor.model.IContextListener;
39
import eu.etaxonomy.taxeditor.store.CdmStore;
40

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

    
48
	private class ContextListener extends ContextListenerAdapter{
49

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

    
59
		/* (non-Javadoc)
60
		 * @see eu.etaxonomy.taxeditor.model.IContextListener#contextStart(org.eclipse.ui.IMemento, org.eclipse.core.runtime.IProgressMonitor)
61
		 */
62
		@Override
63
		public void contextStart(IMemento memento, IProgressMonitor monitor) {
64
			monitor.subTask("Initiating User View");
65
			viewer.setInput(getInput());
66
		}
67
	}
68
	
69
	private ConversationHolder conversation;
70
	
71
	protected TableViewer viewer;
72
	
73
	private IContextListener contextListener;
74
	
75
	/* (non-Javadoc)
76
	 * @see org.eclipse.ui.part.WorkbenchPart#createPartControl(org.eclipse.swt.widgets.Composite)
77
	 */
78
	/** {@inheritDoc} */
79
	@Override
80
	public void createPartControl(Composite parent) {
81
		contextListener = new ContextListener();
82
		CdmStore.getContextManager().addContextListener(contextListener);
83
		
84
		FillLayout fillLayout = new FillLayout();
85
		fillLayout.marginWidth = 0;
86
		fillLayout.marginHeight = 0;
87
		fillLayout.type = SWT.VERTICAL;	
88
		parent.setLayout(fillLayout);
89
		
90
		viewer = new TableViewer(parent, SWT.MULTI | SWT.H_SCROLL
91
				| SWT.V_SCROLL | SWT.FULL_SELECTION);
92
		
93
		getSite().setSelectionProvider(viewer);
94
		
95
		createColumns(viewer);
96
		
97
		MenuManager menuMgr = new MenuManager();
98
		menuMgr.add(new GroupMarker(IWorkbenchActionConstants.MB_ADDITIONS));
99
		getSite().registerContextMenu(menuMgr, viewer);
100

    
101
		Control control = viewer.getControl();
102
		Menu menu = menuMgr.createContextMenu(control);
103
		control.setMenu(menu);	
104
		
105
		viewer.setContentProvider(new ArrayContentProvider());
106
		viewer.setLabelProvider(getLabelProvider());
107
				
108
		if(CdmStore.isActive()){
109
			viewer.setInput(getInput());
110
		}
111
		
112
		
113
		this.addListenerObject(new FocusAdapter() {
114
			/* (non-Javadoc)
115
			 * @see org.eclipse.swt.events.FocusAdapter#focusGained(org.eclipse.swt.events.FocusEvent)
116
			 */
117
			@Override
118
			public void focusGained(FocusEvent e) {
119
				super.focusGained(e);
120
				getConversationHolder().bind();
121
				viewer.getControl().setFocus();
122
			}
123
		});
124
	}
125
	
126
	/**
127
	 * @return
128
	 */
129
	protected abstract IBaseLabelProvider getLabelProvider();
130

    
131
	/**
132
	 * @param viewer2
133
	 */
134
	protected abstract void createColumns(TableViewer viewer);
135
	
136
	/**
137
	 * @return the contextListener
138
	 */
139
	public IContextListener getContextListener() {
140
		if(contextListener == null){
141
			throw new IllegalStateException("Context listener was not initialized");
142
		}
143
		return contextListener;
144
	}
145
	
146
	/* (non-Javadoc)
147
	 * @see eu.etaxonomy.cdm.persistence.hibernate.ICdmPostDataChangeObserver#update(eu.etaxonomy.cdm.persistence.hibernate.CdmDataChangeMap)
148
	 */
149
	@Override
150
	public void update(CdmDataChangeMap changeEvents) {
151
		// data changes can only be generate here at the moment
152
	}
153

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

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

    
181
	
182
	@Override
183
	public void selectionChanged(IWorkbenchPart part, ISelection selection) {
184
		// TODO Auto-generated method stub
185
		
186
	}
187

    
188
	@Override
189
	public Viewer getViewer() {
190
		return viewer;
191
	}
192

    
193
	@Override
194
	public void createViewer(Composite parent) {
195
		// TODO Auto-generated method stub
196
		
197
	}
198

    
199
	@Override
200
	public void changed(Object object) {
201
		// do nothing
202
	}
203
	
204

    
205
	@Override
206
	public boolean onComplete() {
207
		return true;
208
	}
209

    
210
}
(1-1/5)