performed javacscript:fix and worked on documentation
[taxeditor.git] / taxeditor-store / src / main / java / eu / etaxonomy / taxeditor / model / AbstractCdmViewPart.java
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.model;
12
13 import org.eclipse.jface.viewers.ISelection;
14 import org.eclipse.jface.viewers.IStructuredSelection;
15 import org.eclipse.jface.viewers.Viewer;
16 import org.eclipse.swt.SWT;
17 import org.eclipse.swt.custom.SashForm;
18 import org.eclipse.swt.widgets.Composite;
19 import org.eclipse.swt.widgets.Label;
20 import org.eclipse.ui.ISelectionListener;
21 import org.eclipse.ui.ISelectionService;
22 import org.eclipse.ui.IWorkbenchPart;
23 import org.eclipse.ui.part.PageBook;
24 import org.eclipse.ui.part.ViewPart;
25
26 import eu.etaxonomy.cdm.api.conversation.ConversationHolder;
27 import eu.etaxonomy.cdm.api.conversation.IConversationEnabled;
28 import eu.etaxonomy.cdm.model.common.CdmBase;
29 import eu.etaxonomy.cdm.persistence.hibernate.CdmDataChangeMap;
30 import eu.etaxonomy.taxeditor.operations.IPostOperationEnabled;
31 import eu.etaxonomy.taxeditor.store.StoreUtil;
32
33 /**
34 * <p>Abstract AbstractCdmViewPart class.</p>
35 *
36 * @author n.hoffmann
37 * @created Jun 15, 2010
38 * @version 1.0
39 */
40 public abstract class AbstractCdmViewPart extends ViewPart implements ISelectionListener, IPostOperationEnabled, IConversationEnabled, IDirtyMarkableSelectionProvider{
41
42 protected ISelectionService selectionService;
43
44 protected IWorkbenchPart part;
45
46 private PageBook pageBook;
47
48 private Label emptySelectionLabel;
49
50 private Composite viewerComposite;
51
52 /** {@inheritDoc} */
53 @Override
54 public void createPartControl(Composite parent) {
55 selectionService = getSite().getWorkbenchWindow().getSelectionService();
56 selectionService.addSelectionListener(this);
57
58 pageBook = new PageBook(parent, SWT.NULL);
59 createViewerComposite(pageBook);
60 createViewer(viewerComposite);
61
62 // Page 2: Nothing selected
63 emptySelectionLabel = new Label(pageBook, SWT.TOP + SWT.LEFT + SWT.WRAP);
64
65 setInitialSelection();
66 }
67
68 /**
69 *
70 */
71 private void setInitialSelection() {
72 selectionChanged(StoreUtil.getActivePart(), getInitialSelection());
73 }
74
75 /**
76 * <p>getInitialSelection</p>
77 *
78 * @return a {@link org.eclipse.jface.viewers.ISelection} object.
79 */
80 protected ISelection getInitialSelection() {
81 return selectionService.getSelection();
82 }
83
84 private void createViewerComposite(Composite parent) {
85
86 viewerComposite = new SashForm(parent, SWT.HORIZONTAL);
87
88
89 }
90
91 /**
92 * <p>showEmptyPage</p>
93 */
94 public void showEmptyPage(){
95 pageBook.showPage(emptySelectionLabel);
96 }
97
98 /**
99 * <p>showViewer</p>
100 *
101 * @param part a {@link org.eclipse.ui.IWorkbenchPart} object.
102 * @param selection a {@link org.eclipse.jface.viewers.ISelection} object.
103 */
104 public void showViewer(IWorkbenchPart part, ISelection selection){
105
106
107 this.part = part;
108
109 IStructuredSelection structuredSelection = (IStructuredSelection) selection;
110
111 getViewer().setInput(structuredSelection.getFirstElement());
112
113 showViewer();
114 }
115
116 /**
117 * <p>getViewer</p>
118 *
119 * @return a {@link org.eclipse.jface.viewers.Viewer} object.
120 */
121 public abstract Viewer getViewer();
122
123 /**
124 * <p>showViewer</p>
125 */
126 public void showViewer(){
127 pageBook.showPage(viewerComposite);
128 }
129
130
131 /** {@inheritDoc} */
132 @Override
133 public void setFocus() {
134 if(getConversationHolder() != null){
135 getConversationHolder().bind();
136 }
137 getViewer().getControl().setFocus();
138 }
139
140 /**
141 * <p>createViewer</p>
142 *
143 * @param parent a {@link org.eclipse.swt.widgets.Composite} object.
144 */
145 public abstract void createViewer(Composite parent);
146
147 /** {@inheritDoc} */
148 public boolean postOperation(CdmBase objectAffectedByOperation) {
149 changed(objectAffectedByOperation);
150 return true;
151 }
152
153 /** {@inheritDoc} */
154 public abstract void changed(Object object);
155
156 /**
157 * <p>getConversationHolder</p>
158 *
159 * @return a {@link eu.etaxonomy.cdm.api.conversation.ConversationHolder} object.
160 */
161 public ConversationHolder getConversationHolder() {
162 if(part != null)
163 return ((IConversationEnabled) part).getConversationHolder();
164
165 return null;
166 }
167
168 /** {@inheritDoc} */
169 public void update(CdmDataChangeMap changeEvents) {
170 // TODO Auto-generated method stub
171
172 }
173
174 /** {@inheritDoc} */
175 @Override
176 public void dispose() {
177 selectionService.removeSelectionListener(this);
178 super.dispose();
179 }
180 }