]> git.argeo.org Git - lgpl/argeo-commons.git/blob - org.argeo.cms.ux/src/org/argeo/cms/ux/acr/ContentCmsEditable.java
Prepare next development cycle
[lgpl/argeo-commons.git] / org.argeo.cms.ux / src / org / argeo / cms / ux / acr / ContentCmsEditable.java
1 package org.argeo.cms.ux.acr;
2
3 import org.argeo.api.acr.Content;
4 import org.argeo.api.acr.spi.ContentProvider;
5 import org.argeo.api.acr.spi.ProvidedContent;
6 import org.argeo.api.acr.spi.ProvidedSession;
7 import org.argeo.api.cms.ux.CmsEditable;
8 import org.argeo.cms.acr.CmsContent;
9 import org.argeo.cms.ux.AbstractCmsEditable;
10
11 /** {@link CmsEditable} semantics for a {@link Content}. */
12 public class ContentCmsEditable extends AbstractCmsEditable {
13
14 private final boolean canEdit;
15 /** The path of this content, relative to its content provider. */
16 private final String relativePath;
17 private final ProvidedSession session;
18 private final ContentProvider provider;
19
20 public ContentCmsEditable(Content content) {
21 ProvidedContent providedContent = (ProvidedContent) content;
22 canEdit = providedContent.canEdit();
23 session = providedContent.getSession();
24 provider = providedContent.getProvider();
25 relativePath = CmsContent.relativize(provider.getMountPath(), content.getPath());
26 }
27
28 @Override
29 public Boolean canEdit() {
30 return canEdit;
31 }
32
33 @Override
34 public Boolean isEditing() {
35 return provider.isOpenForEdit(session, relativePath);
36 }
37
38 @Override
39 public void startEditing() {
40 provider.openForEdit(session, relativePath);
41 }
42
43 @Override
44 public void stopEditing() {
45 provider.freeze(session, relativePath);
46 }
47
48 }