X-Git-Url: https://git.argeo.org/?p=gpl%2Fargeo-suite.git;a=blobdiff_plain;f=publishing%2Forg.argeo.publishing.ui%2Fsrc%2Forg%2Fargeo%2Fdocbook%2Fui%2FAbstractDbkViewer.java;h=8e18b3232b29782cfa570a967ec9b860a05bc928;hp=044b675d3f0e530cd98cc4c73e9a7e36c0121e9d;hb=d3a20494b99046cd9f67491064333ba56fbe5772;hpb=9df6aa1957222703ed0ce39a731b87a61c9699b9 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 044b675..8e18b32 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; @@ -112,34 +109,51 @@ public abstract class AbstractDbkViewer extends AbstractPageViewer implements Ke 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; if (isDbk(child, DbkType.mediaobject)) { - sectionPart = newImg(textSection, child); -// if (child.hasNode(DbkType.imageobject.get())) { -// Node imageDataNode = child.getNode(DbkType.imageobject.get()).getNode(DbkType.imagedata.get()); -// sectionPart = newImg(textSection, imageDataNode); -// } + if (child.hasNode(DbkType.imageobject.get())) { + sectionPart = newImg(textSection, child); + } else if (child.hasNode(DbkType.videoobject.get())) { + sectionPart = newVideo(textSection, child); + } else { + throw new IllegalArgumentException("Unsupported media object " + child); + } + } 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()); @@ -202,6 +216,34 @@ public abstract class AbstractDbkViewer extends AbstractPageViewer implements Ke } } + protected DbkVideo newVideo(TextSection parent, Node node) { + try { +// node.getSession(); +// Composite wrapper = new Composite(parent, SWT.NONE); +// new Label(wrapper,SWT.NONE).setText("TEST"); + DbkVideo video = new DbkVideo(parent, SWT.BORDER, node); + GridData gd; + if (maxMediaWidth != null) { + gd = new GridData(SWT.CENTER, SWT.FILL, false, false); + // TODO, manage size + gd.widthHint = maxMediaWidth; + gd.heightHint = (int) (gd.heightHint * 0.5625); +// img.setPreferredSize(new Point(maxMediaWidth, 0)); + } else { + gd = new GridData(SWT.CENTER, SWT.FILL, false, false); + gd.widthHint = video.getWidth(); + gd.heightHint = video.getHeight(); +// gd = new GridData(video.getWidth(),video.getHeight()); + } +// wrapper.setLayoutData(gd); + video.setLayoutData(gd); + updateContent(video); + return null; + } catch (RepositoryException e) { + throw new JcrException("Cannot add new image " + node, e); + } + } + protected DocBookSectionTitle newSectionTitle(TextSection parent, Node titleNode) throws RepositoryException { int style = parent.getStyle(); Composite titleParent = newSectionHeader(parent); @@ -261,6 +303,9 @@ public abstract class AbstractDbkViewer extends AbstractPageViewer implements Ke } else if (part instanceof DbkImg) { DbkImg editableImage = (DbkImg) part; imageManager.load(partNode, part.getControl(), editableImage.getPreferredImageSize()); + } else if (part instanceof DbkVideo) { + DbkVideo video = (DbkVideo) part; + video.load(part.getControl()); } } else if (part instanceof DocBookSectionTitle) { DocBookSectionTitle title = (DocBookSectionTitle) part; @@ -269,7 +314,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())); } }