X-Git-Url: https://git.argeo.org/?a=blobdiff_plain;f=publishing%2Forg.argeo.publishing.ui%2Fsrc%2Forg%2Fargeo%2Fdocbook%2Fui%2FAbstractDbkViewer.java;h=f2fa79903b2e65a09e80f3984b77843480e220dd;hb=458ef7a014567bef226a340de803b44b4ec51f62;hp=814cfb3415e129dcdc28164e27ad72f03d7f78ed;hpb=44909f08709dd0bde1284e203a2495f03a613ed8;p=gpl%2Fargeo-suite.git diff --git a/publishing/org.argeo.publishing.ui/src/org/argeo/docbook/ui/AbstractDbkViewer.java b/publishing/org.argeo.publishing.ui/src/org/argeo/docbook/ui/AbstractDbkViewer.java index 814cfb3..f2fa799 100644 --- a/publishing/org.argeo.publishing.ui/src/org/argeo/docbook/ui/AbstractDbkViewer.java +++ b/publishing/org.argeo.publishing.ui/src/org/argeo/docbook/ui/AbstractDbkViewer.java @@ -19,9 +19,6 @@ import javax.jcr.Session; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; -import org.argeo.cms.text.Paragraph; -import org.argeo.cms.text.TextInterpreter; -import org.argeo.cms.text.TextSection; import org.argeo.cms.ui.CmsEditable; import org.argeo.cms.ui.util.CmsUiUtils; import org.argeo.cms.ui.viewers.AbstractPageViewer; @@ -75,6 +72,7 @@ public abstract class AbstractDbkViewer extends AbstractPageViewer implements Ke private boolean showMainTitle = true; private Integer maxMediaWidth = null; + private String defaultSectionStyle; protected AbstractDbkViewer(Section parent, int style, CmsEditable cmsEditable) { super(parent, style, cmsEditable); @@ -106,18 +104,32 @@ public abstract class AbstractDbkViewer extends AbstractPageViewer implements Ke CmsUiUtils.clear(section); Node node = section.getNode(); TextSection textSection = (TextSection) section; + String style = node.hasProperty(DbkAttr.role.name()) ? node.getProperty(DbkAttr.role.name()).getString() + : getDefaultSectionStyle(); + if (style != null) + CmsUiUtils.style(textSection, style); + + // Title + Node titleNode = null; + // We give priority to ./title vs ./info/title, like the DocBook XSL if (node.hasNode(DbkType.title.get())) { + titleNode = node.getNode(DbkType.title.get()); + } else if (node.hasNode(DbkType.info.get() + '/' + DbkType.title.get())) { + titleNode = node.getNode(DbkType.info.get() + '/' + DbkType.title.get()); + } + + if (titleNode != null) { boolean showTitle = getMainSection() == section ? showMainTitle : true; if (showTitle) { if (section.getHeader() == null) section.createHeader(); - Node titleNode = node.getNode(DbkType.title.get()); DocBookSectionTitle title = newSectionTitle(textSection, titleNode); title.setLayoutData(CmsUiUtils.fillWidth()); updateContent(title); } } + // content for (NodeIterator ni = node.getNodes(); ni.hasNext();) { Node child = ni.nextNode(); SectionPart sectionPart = null; @@ -127,13 +139,19 @@ public abstract class AbstractDbkViewer extends AbstractPageViewer implements Ke // Node imageDataNode = child.getNode(DbkType.imageobject.get()).getNode(DbkType.imagedata.get()); // sectionPart = newImg(textSection, imageDataNode); // } + } else if (isDbk(child, DbkType.info)) { + // TODO enrich UI based on info + } else if (isDbk(child, DbkType.title)) { + // already managed } else if (isDbk(child, para)) { sectionPart = newParagraph(textSection, child); - } else { + } else if (isDbk(child, DbkType.section)) { sectionPart = newSectionPart(textSection, child); // if (sectionPart == null) // throw new IllegalArgumentException("Unsupported node " + child); // TODO list node types in exception + } else { + throw new IllegalArgumentException("Unsupported node type for "+child); } if (sectionPart != null && sectionPart instanceof Control) ((Control) sectionPart).setLayoutData(CmsUiUtils.fillWidth()); @@ -143,7 +161,7 @@ public abstract class AbstractDbkViewer extends AbstractPageViewer implements Ke for (NodeIterator ni = section.getNode().getNodes(DbkType.section.get()); ni.hasNext();) { Node child = ni.nextNode(); if (isDbk(child, DbkType.section)) { - TextSection newSection = new TextSection(section, SWT.NONE, child); + TextSection newSection = newTextSection(section, child); newSection.setLayoutData(CmsUiUtils.fillWidth()); refresh(newSection); } @@ -155,6 +173,11 @@ public abstract class AbstractDbkViewer extends AbstractPageViewer implements Ke // section.layout(true, true); } + /** To be overridden in order to provide additional SectionPart types */ + protected TextSection newTextSection(Section section, Node node) { + return new TextSection(section, SWT.NONE, node); + } + /** To be overridden in order to provide additional SectionPart types */ protected SectionPart newSectionPart(TextSection textSection, Node node) { return null; @@ -258,7 +281,7 @@ public abstract class AbstractDbkViewer extends AbstractPageViewer implements Ke if (title == getEdited()) title.setText(textInterpreter.read(title.getNode())); else - title.setText(textInterpreter.raw(title.getNode())); + title.setText(textInterpreter.readSimpleHtml(title.getNode())); } } @@ -946,6 +969,14 @@ public abstract class AbstractDbkViewer extends AbstractPageViewer implements Ke this.showMainTitle = showMainTitle; } + public String getDefaultSectionStyle() { + return defaultSectionStyle; + } + + public void setDefaultSectionStyle(String defaultSectionStyle) { + this.defaultSectionStyle = defaultSectionStyle; + } + // FILE UPLOAD LISTENER private class FUL implements FileUploadListener { public void uploadProgress(FileUploadEvent event) {