projects
/
lgpl
/
argeo-commons.git
/ blobdiff
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Improve form framework.
[lgpl/argeo-commons.git]
/
org.argeo.cms.ui
/
src
/
org
/
argeo
/
cms
/
ui
/
viewers
/
AbstractPageViewer.java
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 1445fed33a82caf7186c9b77f8a238ba5e5809c9..e23e3ba7957320a67cdd82cb0d5de5f18c4561be 100644
(file)
--- 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
@@
-16,6
+16,7
@@
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.cms.CmsException;
import org.argeo.cms.ui.CmsEditable;
import org.argeo.cms.ui.widgets.ScrolledPage;
+import org.argeo.jcr.JcrException;
import org.eclipse.jface.viewers.ContentViewer;
import org.eclipse.jface.viewers.ISelection;
import org.eclipse.jface.viewers.StructuredSelection;
import org.eclipse.jface.viewers.ContentViewer;
import org.eclipse.jface.viewers.ISelection;
import org.eclipse.jface.viewers.StructuredSelection;
@@
-190,13
+191,25
@@
public abstract class AbstractPageViewer extends ContentViewer implements Observ
updateContent(part);
prepare(part, caretPosition);
edited = part;
updateContent(part);
prepare(part, caretPosition);
edited = part;
+ edited.getControl().addFocusListener(new FocusListener() {
+
+ @Override
+ public void focusLost(FocusEvent event) {
+ stopEditing(true);
+ }
+
+ @Override
+ public void focusGained(FocusEvent event) {
+ }
+ });
+
layout(part.getControl());
} catch (RepositoryException e) {
throw new CmsException("Cannot edit " + part, e);
}
}
layout(part.getControl());
} catch (RepositoryException e) {
throw new CmsException("Cannot edit " + part, e);
}
}
- pr
ivate void stopEditing(Boolean save) throws RepositoryException
{
+ pr
otected void stopEditing(Boolean save)
{
if (edited instanceof Widget && ((Widget) edited).isDisposed()) {
edited = null;
return;
if (edited instanceof Widget && ((Widget) edited).isDisposed()) {
edited = null;
return;
@@
-209,32
+222,29
@@
public abstract class AbstractPageViewer extends ContentViewer implements Observ
return;
}
return;
}
- if (save)
- save(edited);
+ try {
+ if (save)
+ save(edited);
- edited.stopEditing();
- updateContent(edited);
- layout(((EditablePart) edited).getControl());
- edited = null;
+ edited.stopEditing();
+ updateContent(edited);
+ layout(((EditablePart) edited).getControl());
+ } catch (RepositoryException e) {
+ throw new JcrException("Cannot stop editing", e);
+ } finally {
+ edited = null;
+ }
}
// METHODS AVAILABLE TO EXTENDING CLASSES
protected void saveEdit() {
}
// METHODS AVAILABLE TO EXTENDING CLASSES
protected void saveEdit() {
- try {
- if (edited != null)
- stopEditing(true);
- } catch (RepositoryException e) {
- throw new CmsException("Cannot stop editing", e);
- }
+ if (edited != null)
+ stopEditing(true);
}
protected void cancelEdit() {
}
protected void cancelEdit() {
- try {
- if (edited != null)
- stopEditing(false);
- } catch (RepositoryException e) {
- throw new CmsException("Cannot cancel editing", e);
- }
+ if (edited != null)
+ stopEditing(false);
}
/** Layout this controls from the related base page. */
}
/** Layout this controls from the related base page. */