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=1b8a237cfcadc14c1642d84cb6661a4e132c5f72;hp=8a527793a3d47ade95684c5e73d092dc996e6919;hb=4f4e2b4985cc4cc910da83398e8a9cd37645ef9c;hpb=682b5baf9a60b9772c1e13ba76dc0744be077b13 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 8a52779..1b8a237 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 @@ -4,6 +4,7 @@ import static org.argeo.cms.ui.util.CmsUiUtils.fillWidth; import java.util.ArrayList; import java.util.Iterator; +import java.util.List; import java.util.Map; import java.util.Observer; @@ -16,7 +17,6 @@ import javax.jcr.nodetype.NodeType; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; -import org.argeo.cms.CmsException; import org.argeo.cms.text.Paragraph; import org.argeo.cms.text.SectionTitle; import org.argeo.cms.text.TextInterpreter; @@ -35,6 +35,7 @@ import org.argeo.cms.ui.widgets.EditableImage; import org.argeo.cms.ui.widgets.EditableText; import org.argeo.cms.ui.widgets.Img; import org.argeo.cms.ui.widgets.StyledControl; +import org.argeo.jcr.JcrException; import org.argeo.jcr.JcrUtils; import org.eclipse.rap.fileupload.FileDetails; import org.eclipse.rap.fileupload.FileUploadEvent; @@ -75,7 +76,7 @@ public abstract class AbstractDbkViewer extends AbstractPageViewer implements Ke if (getCmsEditable().canEdit()) { fileUploadListener = new FUL(); - styledTools = new DbkContextMenu(this, parent.getDisplay()); + styledTools = new DbkContextMenu(this, parent.getShell()); } this.mainSection = parent; initModelIfNeeded(mainSection.getNode()); @@ -115,7 +116,7 @@ public abstract class AbstractDbkViewer extends AbstractPageViewer implements Ke } else { sectionPart = newSectionPart(textSection, child); if (sectionPart == null) - throw new CmsException("Unsupported node " + child); + throw new IllegalArgumentException("Unsupported node " + child); // TODO list node types in exception } if (sectionPart instanceof Control) @@ -135,7 +136,7 @@ public abstract class AbstractDbkViewer extends AbstractPageViewer implements Ke for (Section s : section.getSubSections().values()) refresh(s); } - // section.layout(); + // section.layout(true, true); } /** To be overridden in order to provide additional SectionPart types */ @@ -174,14 +175,26 @@ public abstract class AbstractDbkViewer extends AbstractPageViewer implements Ke protected DocBookSectionTitle newSectionTitle(TextSection parent, Node titleNode) throws RepositoryException { int style = parent.getStyle(); + Composite titleParent = newSectionHeader(parent); if (parent.isTitleReadOnly()) style = style | SWT.READ_ONLY; - DocBookSectionTitle title = new DocBookSectionTitle(parent.getHeader(), style, titleNode); + DocBookSectionTitle title = new DocBookSectionTitle(titleParent, style, titleNode); updateContent(title); title.setMouseListener(getMouseListener()); return title; } + /** + * To be overridden in order to provide additional processing at the section + * level. + * + * @return the parent to use for the {@link DocBookSectionTitle}, by default + * {@link Section#getHeader()} + */ + protected Composite newSectionHeader(TextSection section) { + return section.getHeader(); + } + protected DocBookSectionTitle prepareSectionTitle(Section newSection, String titleText) throws RepositoryException { Node sectionNode = newSection.getNode(); Node titleNode; @@ -274,7 +287,7 @@ public abstract class AbstractDbkViewer extends AbstractPageViewer implements Ke currentParagraphN = newNode; } } - // TODO or rather return the created paragarphs? + // TODO or rather return the created paragraphs? layout(toLayout.toArray(new Control[toLayout.size()])); } persistChanges(et.getNode()); @@ -287,7 +300,7 @@ public abstract class AbstractDbkViewer extends AbstractPageViewer implements Ke } else if (part instanceof PropertyPart) { saveLine(((PropertyPart) part).getProperty(), line); } else { - throw new CmsException("Unsupported part " + part); + throw new IllegalArgumentException("Unsupported part " + part); } } @@ -320,12 +333,17 @@ public abstract class AbstractDbkViewer extends AbstractPageViewer implements Ke void setParagraphStyle(Paragraph paragraph, String style) { try { Node paragraphNode = paragraph.getNode(); - paragraphNode.setProperty(DocBookNames.DBK_ROLE, style); + if (style == null) {// default + if (paragraphNode.hasProperty(DocBookNames.DBK_ROLE)) + paragraphNode.getProperty(DocBookNames.DBK_ROLE).remove(); + } else { + paragraphNode.setProperty(DocBookNames.DBK_ROLE, style); + } persistChanges(paragraphNode); updateContent(paragraph); - layout(paragraph); + layoutPage(); } catch (RepositoryException e1) { - throw new CmsException("Cannot set style " + style + " on " + paragraph, e1); + throw new JcrException("Cannot set style " + style + " on " + paragraph, e1); } } @@ -340,7 +358,7 @@ public abstract class AbstractDbkViewer extends AbstractPageViewer implements Ke ((Control) paragraph).dispose(); layout(section); } catch (RepositoryException e1) { - throw new CmsException("Cannot delete " + paragraph, e1); + throw new JcrException("Cannot delete " + paragraph, e1); } } @@ -409,7 +427,7 @@ public abstract class AbstractDbkViewer extends AbstractPageViewer implements Ke edit(paragraph, 0); } } catch (RepositoryException e) { - throw new CmsException("Cannot split " + getEdited(), e); + throw new JcrException("Cannot split " + getEdited(), e); } } @@ -432,7 +450,7 @@ public abstract class AbstractDbkViewer extends AbstractPageViewer implements Ke Paragraph previousParagraph = paragraphMergedWithPrevious(paragraph, previousNode); edit(previousParagraph, previousTxt.length()); } catch (RepositoryException e) { - throw new CmsException("Cannot stop editing", e); + throw new JcrException("Cannot stop editing", e); } } @@ -461,7 +479,7 @@ public abstract class AbstractDbkViewer extends AbstractPageViewer implements Ke paragraphMergedWithNext(paragraph, removed); edit(paragraph, txt.length()); } catch (RepositoryException e) { - throw new CmsException("Cannot stop editing", e); + throw new JcrException("Cannot stop editing", e); } } @@ -497,7 +515,7 @@ public abstract class AbstractDbkViewer extends AbstractPageViewer implements Ke } } } catch (RepositoryException e) { - throw new CmsException("Cannot upload", e); + throw new JcrException("Cannot upload", e); } } @@ -572,7 +590,7 @@ public abstract class AbstractDbkViewer extends AbstractPageViewer implements Ke persistChanges(previousSectionN); } } catch (RepositoryException e) { - throw new CmsException("Cannot deepen " + getEdited(), e); + throw new JcrException("Cannot deepen " + getEdited(), e); } } @@ -641,7 +659,7 @@ public abstract class AbstractDbkViewer extends AbstractPageViewer implements Ke persistChanges(mergedNode); } } catch (RepositoryException e) { - throw new CmsException("Cannot undeepen " + getEdited(), e); + throw new JcrException("Cannot undeepen " + getEdited(), e); } } @@ -806,8 +824,10 @@ public abstract class AbstractDbkViewer extends AbstractPageViewer implements Ke edit(composite, source.toDisplay(point)); } else if (e.button == 3) { EditablePart composite = findDataParent((Control) e.getSource()); - if (styledTools != null) - styledTools.show(composite, new Point(e.x, e.y)); + if (styledTools != null) { + List styles = getAvailableStyles(composite); + styledTools.show(composite, new Point(e.x, e.y), styles); + } } } } @@ -817,6 +837,10 @@ public abstract class AbstractDbkViewer extends AbstractPageViewer implements Ke } } + protected List getAvailableStyles(EditablePart editablePart) { + return new ArrayList<>(); + } + // FILE UPLOAD LISTENER private class FUL implements FileUploadListener { public void uploadProgress(FileUploadEvent event) { @@ -824,7 +848,7 @@ public abstract class AbstractDbkViewer extends AbstractPageViewer implements Ke } public void uploadFailed(FileUploadEvent event) { - throw new CmsException("Upload failed " + event, event.getException()); + throw new RuntimeException("Upload failed " + event, event.getException()); } public void uploadFinished(FileUploadEvent event) {