1 package org
.argeo
.cms
.ux
.acr
;
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
.ContentUtils
;
9 import org
.argeo
.cms
.ux
.AbstractCmsEditable
;
11 /** {@link CmsEditable} semantics for a {@link Content}. */
12 public class ContentCmsEditable
extends AbstractCmsEditable
{
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
;
20 public ContentCmsEditable(Content content
) {
21 ProvidedContent providedContent
= (ProvidedContent
) content
;
22 canEdit
= providedContent
.canEdit();
23 session
= providedContent
.getSession();
24 provider
= providedContent
.getProvider();
25 relativePath
= ContentUtils
.relativize(provider
.getMountPath(), content
.getPath());
29 public Boolean
canEdit() {
34 public Boolean
isEditing() {
35 return provider
.isOpenForEdit(session
, relativePath
);
39 public void startEditing() {
40 provider
.openForEdit(session
, relativePath
);
44 public void stopEditing() {
45 provider
.freeze(session
, relativePath
);