X-Git-Url: https://git.argeo.org/?a=blobdiff_plain;f=org.argeo.cms.ui%2Fsrc%2Forg%2Fargeo%2Fcms%2Fui%2Fviewers%2FAbstractPageViewer.java;h=ef24ee0d5021fd729ab8fe3a9b055c3aa9c5e896;hb=633a8acd189cc22f06944d278879601189be1bc8;hp=004bd943531aa9854c318ac184cecd7a03c3f776;hpb=be5b6f089e1562db7344d70ff019c3f564b308c7;p=lgpl%2Fargeo-commons.git diff --git a/org.argeo.cms.ui/src/org/argeo/cms/ui/viewers/AbstractPageViewer.java b/org.argeo.cms.ui/src/org/argeo/cms/ui/viewers/AbstractPageViewer.java index 004bd9435..ef24ee0d5 100644 --- a/org.argeo.cms.ui/src/org/argeo/cms/ui/viewers/AbstractPageViewer.java +++ b/org.argeo.cms.ui/src/org/argeo/cms/ui/viewers/AbstractPageViewer.java @@ -11,9 +11,8 @@ import javax.jcr.RepositoryException; import javax.jcr.Session; import javax.security.auth.Subject; -import org.apache.commons.logging.Log; -import org.apache.commons.logging.LogFactory; -import org.argeo.cms.ui.CmsEditable; +import org.argeo.api.cms.CmsEditable; +import org.argeo.api.cms.CmsLog; import org.argeo.cms.ui.widgets.ScrolledPage; import org.argeo.jcr.JcrException; import org.eclipse.jface.viewers.ContentViewer; @@ -33,7 +32,7 @@ import org.xml.sax.SAXParseException; public abstract class AbstractPageViewer extends ContentViewer implements Observer { private static final long serialVersionUID = 5438688173410341485L; - private final static Log log = LogFactory.getLog(AbstractPageViewer.class); + private final static CmsLog log = CmsLog.getLog(AbstractPageViewer.class); private final boolean readOnly; /** The basis for the layouts, typically a ScrolledPage. */ @@ -120,7 +119,7 @@ public abstract class AbstractPageViewer extends ContentViewer implements Observ } } - protected void layoutPage() { + public void layoutPage() { if (page != null) page.layout(true, true); } @@ -164,7 +163,8 @@ public abstract class AbstractPageViewer extends ContentViewer implements Observ mouseListener = null; refresh(getControl()); // layout(getControl()); - layoutPage(); + if (!getControl().isDisposed()) + layoutPage(); } catch (RepositoryException e) { throw new JcrException("Cannot refresh", e); } @@ -198,9 +198,9 @@ public abstract class AbstractPageViewer extends ContentViewer implements Observ } part.startEditing(); + edited = part; updateContent(part); prepare(part, caretPosition); - edited = part; edited.getControl().addFocusListener(new FocusListener() { private static final long serialVersionUID = 6883521812717097017L; @@ -239,8 +239,12 @@ public abstract class AbstractPageViewer extends ContentViewer implements Observ save(edited); edited.stopEditing(); - updateContent(edited); - layout(((EditablePart) edited).getControl()); + EditablePart editablePart = edited; + Control control = ((EditablePart) edited).getControl(); + edited = null; + // TODO make edited state management more robust + updateContent(editablePart); + layout(control); } catch (RepositoryException e) { throw new JcrException("Cannot stop editing", e); } finally {