ref #5922 Change order in supplemental data view (cont.)
[taxeditor.git] / eu.etaxonomy.taxeditor.store / src / main / java / eu / etaxonomy / taxeditor / view / AbstractAccountViewPart.java
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 viewer.getControl().setFocus();
118 }
119 });
120 }
121
122 /**
123 * @return
124 */
125 protected abstract IBaseLabelProvider getLabelProvider();
126
127 /**
128 * @param viewer2
129 */
130 protected abstract void createColumns(TableViewer viewer);
131
132 /**
133 * @return the contextListener
134 */
135 public IContextListener getContextListener() {
136 if(contextListener == null){
137 throw new IllegalStateException("Context listener was not initialized");
138 }
139 return contextListener;
140 }
141
142 /* (non-Javadoc)
143 * @see eu.etaxonomy.cdm.persistence.hibernate.ICdmPostDataChangeObserver#update(eu.etaxonomy.cdm.persistence.hibernate.CdmDataChangeMap)
144 */
145 @Override
146 public void update(CdmDataChangeMap changeEvents) {
147 // data changes can only be generate here at the moment
148 }
149
150 /* (non-Javadoc)
151 * @see eu.etaxonomy.taxeditor.operation.IPostOperationEnabled#postOperation(eu.etaxonomy.cdm.model.common.CdmBase)
152 */
153 @Override
154 public boolean postOperation(CdmBase objectAffectedByOperation) {
155 if(CdmStore.isActive()){
156 viewer.setInput(getInput());
157 viewer.refresh();
158 }
159
160 return true;
161 }
162
163 /**
164 * @return
165 */
166 public abstract Collection getInput();
167
168 /* (non-Javadoc)
169 * @see org.eclipse.ui.part.WorkbenchPart#dispose()
170 */
171 @Override
172 public void dispose() {
173 CdmStore.getContextManager().removeContextListener(getContextListener());
174 super.dispose();
175 }
176
177
178 @Override
179 public void selectionChanged(IWorkbenchPart part, ISelection selection) {
180 // TODO Auto-generated method stub
181
182 }
183
184 @Override
185 public Viewer getViewer() {
186 return viewer;
187 }
188
189 @Override
190 public void createViewer(Composite parent) {
191 // TODO Auto-generated method stub
192
193 }
194
195 @Override
196 public void changed(Object object) {
197 // do nothing
198 }
199
200
201 @Override
202 public boolean onComplete() {
203 return true;
204 }
205
206 }