--- /dev/null
+package org.argeo.docbook.ui;
+
+import javax.jcr.Node;
+
+import org.argeo.cms.ui.CmsEditable;
+import org.argeo.cms.ui.viewers.Section;
+import org.eclipse.swt.widgets.Composite;
+
+/**
+ * Manages hardcoded sections as an arbitrary hierarchy under the main section,
+ * which contains no text and no title.
+ */
+public class CustomDbkEditor extends AbstractDbkViewer {
+ private static final long serialVersionUID = 656302500183820802L;
+
+ protected CustomDbkEditor(Composite parent, int style, Node textNode, CmsEditable cmsEditable) {
+ this(new Section(parent, style, textNode), style, cmsEditable);
+ }
+
+ protected CustomDbkEditor(Section parent, int style, CmsEditable cmsEditable) {
+ super(parent, style, cmsEditable);
+ }
+
+}
import javax.jcr.Property;
import javax.jcr.RepositoryException;
-import org.argeo.cms.CmsException;
import org.argeo.cms.text.TextInterpreter;
+import org.argeo.jcr.Jcr;
+import org.argeo.jcr.JcrException;
+import org.argeo.jcr.JcrxType;
/** Based on HTML with a few Wiki-like shortcuts. */
public class DbkTextInterpreter implements TextInterpreter {
String raw = convertToStorage(node, content);
validateBeforeStoring(raw);
Node jcrText;
- if (!node.hasNode(DocBookNames.JCR_XMLTEXT))
- jcrText = node.addNode(DocBookNames.JCR_XMLTEXT, DocBookTypes.XMLTEXT);
+ if (!node.hasNode(Jcr.JCR_XMLTEXT))
+ jcrText = node.addNode(Jcr.JCR_XMLTEXT, JcrxType.JCRX_XMLTEXT);
else
- jcrText = node.getNode(DocBookNames.JCR_XMLTEXT);
- jcrText.setProperty(DocBookNames.JCR_XMLCHARACTERS, raw);
+ jcrText = node.getNode(Jcr.JCR_XMLTEXT);
+ jcrText.setProperty(Jcr.JCR_XMLCHARACTERS, raw);
} else {
- throw new CmsException("Don't know how to interpret " + node);
+ throw new IllegalArgumentException("Don't know how to interpret " + node);
}
} else {// property
Property property = (Property) item;
}
// item.getSession().save();
} catch (RepositoryException e) {
- throw new CmsException("Cannot set content on " + item, e);
+ throw new JcrException("Cannot set content on " + item, e);
}
}
String raw = raw(item);
return convertFromStorage(item, raw);
} catch (RepositoryException e) {
- throw new CmsException("Cannot get " + item + " for edit", e);
+ throw new JcrException("Cannot get " + item + " for edit", e);
}
}
if (item instanceof Node) {
Node node = (Node) item;
if (node.isNodeType(DocBookTypes.PARA)) {
- Node jcrText = node.getNode(DocBookNames.JCR_XMLTEXT);
- String txt = jcrText.getProperty(DocBookNames.JCR_XMLCHARACTERS).getString();
+ Node jcrText = node.getNode(Jcr.JCR_XMLTEXT);
+ String txt = jcrText.getProperty(Jcr.JCR_XMLCHARACTERS).getString();
// TODO make it more robust
txt = txt.replace("\n", "").replace("\t", "");
return txt;
} else {
- throw new CmsException("Don't know how to interpret " + node);
+ throw new IllegalArgumentException("Don't know how to interpret " + node);
}
} else {// property
Property property = (Property) item;
return property.getString();
}
} catch (RepositoryException e) {
- throw new CmsException("Cannot get " + item + " content", e);
+ throw new JcrException("Cannot get " + item + " content", e);
}
}
--- /dev/null
+package org.argeo.docbook.ui;
+
+import javax.jcr.Node;
+
+import org.argeo.jcr.JcrxApi;
+
+/** Utilities around DocBook. */
+public class DbkUtils {
+ public static String getTitle(Node node) {
+ return JcrxApi.getXmlValue(node, DocBookTypes.TITLE);
+ }
+
+ /** Singleton. */
+ private DbkUtils() {
+ }
+}
public final static String DBK_MEDIAOBJECT = "dbk:mediaobject";
// ATTRIBUTES
- // TODO centralise
- public final static String JCR_XMLTEXT = "jcr:xmltext";
- public final static String JCR_XMLCHARACTERS = "jcr:xmlcharacters";
+// public final static String JCR_XMLTEXT = "jcr:xmltext";
+// public final static String JCR_XMLCHARACTERS = "jcr:xmlcharacters";
public final static String DBK_ROLE = "dbk:role";
}
public interface DocBookTypes {
public final static String BOOK = "dbk:book";
public final static String ARTICLE = "dbk:article";
+ public final static String TITLE = "dbk:title";
public final static String SECTION = "dbk:section";
public final static String PARA = "dbk:para";
- public final static String XMLTEXT = "dbk:xmltext";
+// public final static String XMLTEXT = "dbk:xmltext";
public final static String MEDIAOBJECT = "dbk:mediaobject";
public final static String IMAGEOBJECT = "dbk:imageobject";
import org.argeo.cms.text.TextSection;
import org.argeo.cms.ui.CmsEditable;
import org.argeo.cms.ui.util.CmsUiUtils;
+import org.argeo.jcr.Jcr;
+import org.argeo.jcr.JcrxType;
import org.eclipse.swt.widgets.Composite;
/** Text editor where sections and subsections can be managed by the user. */
@Override
protected void initModel(Node textNode) throws RepositoryException {
if (isFlat()) {
- textNode.addNode(DocBookNames.DBK_PARA, DocBookTypes.PARA)
- .addNode(DocBookNames.JCR_XMLTEXT, DocBookTypes.XMLTEXT)
- .setProperty(DocBookNames.JCR_XMLCHARACTERS, "Hello World!");
+ textNode.addNode(DocBookNames.DBK_PARA, DocBookTypes.PARA).addNode(Jcr.JCR_XMLTEXT, JcrxType.JCRX_XMLTEXT)
+ .setProperty(Jcr.JCR_XMLCHARACTERS, "");
}
// else
// textNode.setProperty(DocBookNames.DBK_TITLE, textNode.getName());
mixin
+ dbk:phrase (dbk:phrase) = dbk:phrase *
+ dbk:replaceable (dbk:replaceable) = dbk:replaceable *
- + jcr:xmltext (dbk:xmltext) = dbk:xmltext *
+ + jcr:xmltext (jcrx:xmltext) = jcrx:xmltext *
[argeodbk:markupInlines]
mixin
[dbk:alt] > argeodbk:base
+ dbk:inlinemediaobject (dbk:inlinemediaobject) = dbk:inlinemediaobject *
- + jcr:xmltext (dbk:xmltext) = dbk:xmltext *
+ + jcr:xmltext (jcrx:xmltext) = jcrx:xmltext *
[dbk:anchor] > argeodbk:base
+ dbk:annotation (dbk:annotation) = dbk:annotation *
+ dbk:mediaobject (dbk:mediaobject) = dbk:mediaobject *
+ dbk:remark (dbk:remark) = dbk:remark *
- + jcr:xmltext (dbk:xmltext) = dbk:xmltext *
+ + jcr:xmltext (jcrx:xmltext) = jcrx:xmltext *
- dbk:class (String)
- dbk:lang (String)
- dbk:onclick (String)
+ dbk:info (dbk:info) = dbk:info
+ dbk:videodata (dbk:videodata) = dbk:videodata
-[dbk:xmltext] > nt:base
- - jcr:xmlcharacters (String)
-
[dbk:xref] > argeodbk:base, argeodbk:linkingAttributes
- dbk:endterm (Reference)
- dbk:xrefstyle (String)