3 * Copyright (C) 2007 EDIT
4 * European Distributed Institute of Taxonomy
5 * http://www.e-taxonomy.eu
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.
11 package eu
.etaxonomy
.taxeditor
.model
;
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
;
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
.operation
.IPostOperationEnabled
;
31 import eu
.etaxonomy
.taxeditor
.store
.StoreUtil
;
34 * <p>Abstract AbstractCdmViewPart class.</p>
37 * @created Jun 15, 2010
40 public abstract class AbstractCdmViewPart
extends ViewPart
implements ISelectionListener
, IPostOperationEnabled
, IConversationEnabled
, IDirtyMarkableSelectionProvider
{
42 protected ISelectionService selectionService
;
44 protected IWorkbenchPart part
;
46 private PageBook pageBook
;
48 private Label emptySelectionLabel
;
50 private Composite viewerComposite
;
54 public void createPartControl(Composite parent
) {
55 selectionService
= getSite().getWorkbenchWindow().getSelectionService();
56 selectionService
.addSelectionListener(this);
58 pageBook
= new PageBook(parent
, SWT
.NULL
);
59 createViewerComposite(pageBook
);
60 createViewer(viewerComposite
);
62 // Page 2: Nothing selected
63 emptySelectionLabel
= new Label(pageBook
, SWT
.TOP
+ SWT
.LEFT
+ SWT
.WRAP
);
65 setInitialSelection();
71 private void setInitialSelection() {
72 selectionChanged(StoreUtil
.getActivePart(), getInitialSelection());
76 * <p>getInitialSelection</p>
78 * @return a {@link org.eclipse.jface.viewers.ISelection} object.
80 protected ISelection
getInitialSelection() {
81 return selectionService
.getSelection();
84 private void createViewerComposite(Composite parent
) {
85 viewerComposite
= new SashForm(parent
, SWT
.HORIZONTAL
);
89 * <p>showEmptyPage</p>
91 public void showEmptyPage(){
92 pageBook
.showPage(emptySelectionLabel
);
98 * @param part a {@link org.eclipse.ui.IWorkbenchPart} object.
99 * @param selection a {@link org.eclipse.jface.viewers.ISelection} object.
101 public void showViewer(IWorkbenchPart part
, ISelection selection
){
104 IStructuredSelection structuredSelection
= (IStructuredSelection
) selection
;
106 getViewer().setInput(structuredSelection
.getFirstElement());
114 * @return a {@link org.eclipse.jface.viewers.Viewer} object.
116 public abstract Viewer
getViewer();
121 public void showViewer(){
122 pageBook
.showPage(viewerComposite
);
128 public void setFocus() {
129 if(getConversationHolder() != null){
130 getConversationHolder().bind();
132 getViewer().getControl().setFocus();
136 * <p>createViewer</p>
138 * @param parent a {@link org.eclipse.swt.widgets.Composite} object.
140 public abstract void createViewer(Composite parent
);
143 public boolean postOperation(CdmBase objectAffectedByOperation
) {
144 changed(objectAffectedByOperation
);
149 public abstract void changed(Object object
);
152 * <p>getConversationHolder</p>
154 * @return a {@link eu.etaxonomy.cdm.api.conversation.ConversationHolder} object.
156 public ConversationHolder
getConversationHolder() {
158 return ((IConversationEnabled
) part
).getConversationHolder();
164 public void update(CdmDataChangeMap changeEvents
) {
165 // TODO Auto-generated method stub
171 public void dispose() {
172 selectionService
.removeSelectionListener(this);