// $Id$
/**
-* Copyright (C) 2007 EDIT
-* European Distributed Institute of Taxonomy
-* http://www.e-taxonomy.eu
-*
-* The contents of this file are subject to the Mozilla Public License Version 1.1
-* See LICENSE.TXT at the top of this package for the full license terms.
-*/
+ * Copyright (C) 2007 EDIT
+ * European Distributed Institute of Taxonomy
+ * http://www.e-taxonomy.eu
+ *
+ * The contents of this file are subject to the Mozilla Public License Version 1.1
+ * See LICENSE.TXT at the top of this package for the full license terms.
+ */
package eu.etaxonomy.taxeditor.view;
import eu.etaxonomy.cdm.model.common.CdmBase;
import eu.etaxonomy.cdm.persistence.hibernate.CdmDataChangeMap;
import eu.etaxonomy.taxeditor.model.AbstractUtility;
-import eu.etaxonomy.taxeditor.model.IDirtyMarkableSelectionProvider;
+import eu.etaxonomy.taxeditor.model.IDirtyMarkable;
import eu.etaxonomy.taxeditor.operation.IPostOperationEnabled;
+import eu.etaxonomy.taxeditor.session.ICdmEntitySession;
+import eu.etaxonomy.taxeditor.session.ICdmEntitySessionEnabled;
/**
* <p>Abstract AbstractCdmViewPart class.</p>
* @created Jun 15, 2010
* @version 1.0
*/
-public abstract class AbstractCdmViewPart extends ViewPart implements ISelectionListener, IPostOperationEnabled, IConversationEnabled, IDirtyMarkableSelectionProvider{
+public abstract class AbstractCdmViewPart extends ViewPart implements ISelectionListener, IPostOperationEnabled, IConversationEnabled, ICdmEntitySessionEnabled, IDirtyMarkable{
- protected ISelectionService selectionService;
+ protected ISelectionService selectionService;
- public static IStructuredSelection EMPTY_SELECTION = new StructuredSelection();
+ public static IStructuredSelection EMPTY_SELECTION = new StructuredSelection();
- protected IWorkbenchPart part;
+ protected IWorkbenchPart part;
private PageBook pageBook;
- private Label emptySelectionLabel;
+ private Label emptySelectionLabel;
- private Composite viewerComposite;
+ private Composite viewerComposite;
- /** {@inheritDoc} */
- @Override
- public void createPartControl(Composite parent) {
- selectionService = getSite().getWorkbenchWindow().getSelectionService();
- selectionService.addSelectionListener(this);
+ /** {@inheritDoc} */
+ @Override
+ public void createPartControl(Composite parent) {
+ selectionService = getSite().getWorkbenchWindow().getSelectionService();
+ selectionService.addSelectionListener(this);
- pageBook = new PageBook(parent, SWT.NULL);
- //create viewerComposite
- viewerComposite = new SashForm(pageBook, SWT.HORIZONTAL);
- createViewer(viewerComposite);
+ pageBook = new PageBook(parent, SWT.NULL);
+ //create viewerComposite
+ viewerComposite = new SashForm(pageBook, SWT.HORIZONTAL);
+ createViewer(viewerComposite);
- // Page 2: Nothing selected
+ // Page 2: Nothing selected
emptySelectionLabel = new Label(pageBook, SWT.TOP + SWT.LEFT + SWT.WRAP);
setInitialSelection();
- }
-
- /**
- *
- */
- private void setInitialSelection() {
- selectionChanged(AbstractUtility.getActivePart(), getInitialSelection());
- }
-
- /**
- * <p>getInitialSelection</p>
- *
- * @return a {@link org.eclipse.jface.viewers.ISelection} object.
- */
- protected ISelection getInitialSelection() {
- return selectionService.getSelection();
- }
-
- /**
- * <p>showEmptyPage</p>
- */
- public void showEmptyPage(){
- pageBook.showPage(emptySelectionLabel);
- }
+ }
+
+ /**
+ *
+ */
+ private void setInitialSelection() {
+ selectionChanged(AbstractUtility.getActivePart(), getInitialSelection());
+ }
+
+ /**
+ * <p>getInitialSelection</p>
+ *
+ * @return a {@link org.eclipse.jface.viewers.ISelection} object.
+ */
+ protected ISelection getInitialSelection() {
+ return selectionService.getSelection();
+ }
+
+ /**
+ * <p>showEmptyPage</p>
+ */
+ public void showEmptyPage(){
+ pageBook.showPage(emptySelectionLabel);
+ }
/**
* <p>showViewer</p>
* @param selection a {@link org.eclipse.jface.viewers.ISelection} object.
*/
public void showViewer(IWorkbenchPart part, IStructuredSelection selection){
- this.part = part;
+ this.part = part;
- Object element = selection.getFirstElement();
+ Object element = selection.getFirstElement();
- getViewer().setInput(element);
+ getViewer().setInput(element);
- showViewer();
+ showViewer();
}
/**
*/
public abstract Viewer getViewer();
- /**
- * <p>showViewer</p>
- */
- public void showViewer(){
- pageBook.showPage(viewerComposite);
+ /**
+ * <p>showViewer</p>
+ */
+ public void showViewer(){
+ pageBook.showPage(viewerComposite);
+ }
+
+ public void setEnabled(boolean enabled){
+ pageBook.setEnabled(enabled);
}
- public void setEnabled(boolean enabled){
- pageBook.setEnabled(enabled);
- }
-
- /** {@inheritDoc} */
- @Override
- public void setFocus() {
- if(getConversationHolder() != null){
- getConversationHolder().bind();
- }
- getViewer().getControl().setFocus();
- }
-
- /**
- * <p>createViewer</p>
- *
- * @param parent a {@link org.eclipse.swt.widgets.Composite} object.
- */
- public abstract void createViewer(Composite parent);
-
- /** {@inheritDoc} */
- @Override
+ /** {@inheritDoc} */
+ @Override
+ public void setFocus() {
+ if(getConversationHolder() != null){
+ getConversationHolder().bind();
+ }
+ if(getCdmEntitySession() != null){
+ getCdmEntitySession().bind();
+ }
+ getViewer().getControl().setFocus();
+ }
+
+ /**
+ * <p>createViewer</p>
+ *
+ * @param parent a {@link org.eclipse.swt.widgets.Composite} object.
+ */
+ public abstract void createViewer(Composite parent);
+
+ /** {@inheritDoc} */
+ @Override
public boolean postOperation(CdmBase objectAffectedByOperation) {
- changed(objectAffectedByOperation);
- return true;
- }
+ changed(objectAffectedByOperation);
+ return true;
+ }
- /** {@inheritDoc} */
- @Override
+ /** {@inheritDoc} */
+ @Override
public abstract void changed(Object object);
- /**
- * <p>getConversationHolder</p>
- *
- * @return a {@link eu.etaxonomy.cdm.api.conversation.ConversationHolder} object.
- */
- @Override
+ /**
+ * <p>getConversationHolder</p>
+ *
+ * @return a {@link eu.etaxonomy.cdm.api.conversation.ConversationHolder} object.
+ */
+ @Override
public ConversationHolder getConversationHolder() {
- if(part != null && part instanceof IConversationEnabled) {
+ if(part != null && part instanceof IConversationEnabled) {
return ((IConversationEnabled) part).getConversationHolder();
}
- return null;
- }
+ return null;
+ }
+
+ @Override
+ public ICdmEntitySession getCdmEntitySession() {
+ if(part != null && part instanceof ICdmEntitySessionEnabled) {
+ return ((ICdmEntitySessionEnabled) part).getCdmEntitySession();
+ }
+ return null;
+ }
- /** {@inheritDoc} */
- @Override
+ /** {@inheritDoc} */
+ @Override
public void update(CdmDataChangeMap changeEvents) {
- }
+ }
+
+ /** {@inheritDoc} */
+ @Override
+ public void dispose() {
+ selectionService.removeSelectionListener(this);
+ super.dispose();
+ }
- /** {@inheritDoc} */
- @Override
- public void dispose() {
- selectionService.removeSelectionListener(this);
- super.dispose();
- }
+ /* (non-Javadoc)
+ * @see eu.etaxonomy.taxeditor.model.IDirtyMarkableSelectionProvider#forceDirty()
+ */
+ @Override
+ public void forceDirty() {
+ changed(null);
+ }
}