CdmModelCacher : added recursive search in super classes
[taxeditor.git] / eu.etaxonomy.taxeditor.store / src / main / java / eu / etaxonomy / taxeditor / view / AbstractCdmViewPart.java
index 7c6def7f4f6fa17ecc166a504d41633fd2199d58..770423be9125c75a0553abd69e4986bb0c25e021 100644 (file)
@@ -1,12 +1,12 @@
 // $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;
 
@@ -29,8 +29,10 @@ import eu.etaxonomy.cdm.api.conversation.IConversationEnabled;
 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>
@@ -39,59 +41,59 @@ import eu.etaxonomy.taxeditor.operation.IPostOperationEnabled;
  * @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>
@@ -100,13 +102,13 @@ public abstract class AbstractCdmViewPart extends ViewPart implements ISelection
      * @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();
     }
 
     /**
@@ -116,68 +118,87 @@ public abstract class AbstractCdmViewPart extends ViewPart implements ISelection
      */
     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);
+    }
 }