]> git.argeo.org Git - lgpl/argeo-commons.git/blobdiff - org.argeo.cms/src/org/argeo/cms/viewers/AbstractPageViewer.java
Merge security.ui bundle in the cms.ui.workbench bundle
[lgpl/argeo-commons.git] / org.argeo.cms / src / org / argeo / cms / viewers / AbstractPageViewer.java
index abdeb0d619b21bc011053e66747385b1b3c4ad82..b52f76be52f5afe769c436d5cdbed3e5dfc0b11f 100644 (file)
@@ -16,6 +16,8 @@ import org.eclipse.jface.viewers.ContentViewer;
 import org.eclipse.jface.viewers.ISelection;
 import org.eclipse.jface.viewers.StructuredSelection;
 import org.eclipse.swt.SWT;
+import org.eclipse.swt.events.FocusEvent;
+import org.eclipse.swt.events.FocusListener;
 import org.eclipse.swt.events.MouseAdapter;
 import org.eclipse.swt.events.MouseListener;
 import org.eclipse.swt.widgets.Composite;
@@ -36,29 +38,11 @@ public abstract class AbstractPageViewer extends ContentViewer implements
        private final CmsEditable cmsEditable;
 
        private MouseListener mouseListener;
+       private FocusListener focusListener;
 
        private EditablePart edited;
        private ISelection selection = StructuredSelection.EMPTY;
 
-       // FIXME Added by BSinou to manage non-section Composite.
-       // Is it the correct method?
-       @Deprecated
-       protected AbstractPageViewer(Composite parent, int style,
-                       CmsEditable cmsEditable) {
-               // read only at UI level
-               readOnly = SWT.READ_ONLY == (style & SWT.READ_ONLY);
-
-               this.cmsEditable = cmsEditable == null ? CmsEditable.NON_EDITABLE
-                               : cmsEditable;
-               if (this.cmsEditable instanceof Observable)
-                       ((Observable) this.cmsEditable).addObserver(this);
-
-               if (cmsEditable.canEdit()) {
-                       mouseListener = createMouseListener();
-               }
-               page = findPage(parent);
-       }
-
        protected AbstractPageViewer(Section parent, int style,
                        CmsEditable cmsEditable) {
                // read only at UI level
@@ -71,6 +55,7 @@ public abstract class AbstractPageViewer extends ContentViewer implements
 
                if (cmsEditable.canEdit()) {
                        mouseListener = createMouseListener();
+                       focusListener = createFocusListener();
                }
                page = findPage(parent);
        }
@@ -107,6 +92,21 @@ public abstract class AbstractPageViewer extends ContentViewer implements
                };
        }
 
+       /** Create (retrieve) the FocusListener to use. */
+       protected FocusListener createFocusListener() {
+               return new FocusListener() {
+                       private static final long serialVersionUID = 1L;
+
+                       @Override
+                       public void focusLost(FocusEvent event) {
+                       }
+
+                       @Override
+                       public void focusGained(FocusEvent event) {
+                       }
+               };
+       }
+
        protected Composite findPage(Composite composite) {
                if (composite instanceof ScrolledPage) {
                        return (ScrolledPage) composite;
@@ -260,6 +260,7 @@ public abstract class AbstractPageViewer extends ContentViewer implements
        /** Persist all changes. */
        protected void persistChanges(Session session) throws RepositoryException {
                session.save();
+               session.refresh(false);
                // TODO notify that changes have been persisted
        }
 
@@ -293,6 +294,10 @@ public abstract class AbstractPageViewer extends ContentViewer implements
                return mouseListener;
        }
 
+       public FocusListener getFocusListener() {
+               return focusListener;
+       }
+
        public CmsEditable getCmsEditable() {
                return cmsEditable;
        }
@@ -301,5 +306,4 @@ public abstract class AbstractPageViewer extends ContentViewer implements
        public ISelection getSelection() {
                return selection;
        }
-
-}
+}
\ No newline at end of file