X-Git-Url: https://git.argeo.org/?a=blobdiff_plain;f=org.argeo.cms.ui%2Fsrc%2Forg%2Fargeo%2Fcms%2Fui%2Fviewers%2FAbstractPageViewer.java;h=004bd943531aa9854c318ac184cecd7a03c3f776;hb=be5b6f089e1562db7344d70ff019c3f564b308c7;hp=e23e3ba7957320a67cdd82cb0d5de5f18c4561be;hpb=4f6cfbd6862813e917883ea93e13ee95edc1c024;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 e23e3ba79..004bd9435 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 @@ -13,7 +13,6 @@ import javax.security.auth.Subject; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; -import org.argeo.cms.CmsException; import org.argeo.cms.ui.CmsEditable; import org.argeo.cms.ui.widgets.ScrolledPage; import org.argeo.jcr.JcrException; @@ -75,8 +74,8 @@ public abstract class AbstractPageViewer extends ContentViewer implements Observ initModel(node); node.getSession().save(); } - } catch (Exception e) { - throw new CmsException("Cannot initialize model", e); + } catch (RepositoryException e) { + throw new JcrException("Cannot initialize model", e); } } @@ -121,6 +120,16 @@ public abstract class AbstractPageViewer extends ContentViewer implements Observ } } + protected void layoutPage() { + if (page != null) + page.layout(true, true); + } + + protected void showControl(Control control) { + if (page != null && (page instanceof ScrolledPage)) + ((ScrolledPage) page).showControl(control); + } + @Override public void update(Observable o, Object arg) { if (o == cmsEditable) @@ -154,9 +163,10 @@ public abstract class AbstractPageViewer extends ContentViewer implements Observ else mouseListener = null; refresh(getControl()); - layout(getControl()); + // layout(getControl()); + layoutPage(); } catch (RepositoryException e) { - throw new CmsException("Cannot refresh", e); + throw new JcrException("Cannot refresh", e); } return null; }); @@ -192,6 +202,7 @@ public abstract class AbstractPageViewer extends ContentViewer implements Observ prepare(part, caretPosition); edited = part; edited.getControl().addFocusListener(new FocusListener() { + private static final long serialVersionUID = 6883521812717097017L; @Override public void focusLost(FocusEvent event) { @@ -204,8 +215,9 @@ public abstract class AbstractPageViewer extends ContentViewer implements Observ }); layout(part.getControl()); + showControl(part.getControl()); } catch (RepositoryException e) { - throw new CmsException("Cannot edit " + part, e); + throw new JcrException("Cannot edit " + part, e); } } @@ -262,14 +274,14 @@ public abstract class AbstractPageViewer extends ContentViewer implements Observ if (parent.getParent() != null) return findDataParent(parent.getParent()); else - throw new CmsException("No data parent found"); + throw new IllegalStateException("No data parent found"); } // UTILITIES /** Check whether the edited part is in a proper state */ protected void checkEdited() { if (edited == null || (edited instanceof Widget) && ((Widget) edited).isDisposed()) - throw new CmsException("Edited should not be null or disposed at this stage"); + throw new IllegalStateException("Edited should not be null or disposed at this stage"); } /** Persist all changes. */ @@ -302,7 +314,7 @@ public abstract class AbstractPageViewer extends ContentViewer implements Observ res = Subject.getSubject(accessControlContext); } if (res == null) - throw new CmsException("No subject associated with this viewer"); + throw new IllegalStateException("No subject associated with this viewer"); return res; }