Project

General

Profile

Download (5.4 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.model.common.CdmBase;
35
import eu.etaxonomy.cdm.persistence.hibernate.CdmDataChangeMap;
36
import eu.etaxonomy.taxeditor.model.ContextListenerAdapter;
37
import eu.etaxonomy.taxeditor.model.IContextListener;
38
import eu.etaxonomy.taxeditor.store.CdmStore;
39

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

    
47
	private class ContextListener extends ContextListenerAdapter{
48

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

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

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

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

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

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

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

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

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

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

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

    
207
}
(1-1/9)