Introduce Argeo Publishing.
[gpl/argeo-suite.git] / publishing / org.argeo.publishing.ui / src / org / argeo / cms / text / StandardTextEditor.java
diff --git a/publishing/org.argeo.publishing.ui/src/org/argeo/cms/text/StandardTextEditor.java b/publishing/org.argeo.publishing.ui/src/org/argeo/cms/text/StandardTextEditor.java
new file mode 100644 (file)
index 0000000..f0f5042
--- /dev/null
@@ -0,0 +1,46 @@
+package org.argeo.cms.text;
+
+import static javax.jcr.Property.JCR_TITLE;
+
+import javax.jcr.Node;
+import javax.jcr.Property;
+import javax.jcr.RepositoryException;
+
+import org.argeo.cms.ui.CmsEditable;
+import org.argeo.cms.ui.util.CmsUiUtils;
+import org.argeo.cms.ui.viewers.Section;
+import org.eclipse.swt.widgets.Composite;
+
+/** Text editor where sections and subsections can be managed by the user. */
+public class StandardTextEditor extends AbstractTextViewer {
+       private static final long serialVersionUID = 6049661610883342325L;
+
+       public StandardTextEditor(Composite parent, int style, Node textNode,
+                       CmsEditable cmsEditable) throws RepositoryException {
+               super(new TextSection(parent, style, textNode), style, cmsEditable);
+               refresh();
+               getMainSection().setLayoutData(CmsUiUtils.fillWidth());
+       }
+
+       @Override
+       protected void initModel(Node textNode) throws RepositoryException {
+               if (isFlat())
+                       textNode.addNode(CMS_P).addMixin(CmsTypes.CMS_STYLED);
+               else
+                       textNode.setProperty(JCR_TITLE, textNode.getName());
+       }
+
+       @Override
+       protected Boolean isModelInitialized(Node textNode)
+                       throws RepositoryException {
+               return textNode.hasProperty(Property.JCR_TITLE)
+                               || textNode.hasNode(CMS_P)
+                               || (!isFlat() && textNode.hasNode(CMS_H));
+       }
+
+       @Override
+       public Section getMainSection() {
+               // TODO Auto-generated method stub
+               return super.getMainSection();
+       }
+}