import java.util.ArrayList;
import java.util.Iterator;
+import java.util.List;
import java.util.Map;
import java.util.Observer;
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;
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;
if (getCmsEditable().canEdit()) {
fileUploadListener = new FUL();
- styledTools = new DbkContextMenu(this, parent.getDisplay());
+ styledTools = new DbkContextMenu(this, parent.getShell());
}
this.mainSection = parent;
initModelIfNeeded(mainSection.getNode());
} 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)
for (Section s : section.getSubSections().values())
refresh(s);
}
- // section.layout();
+ // section.layout(true, true);
}
/** To be overridden in order to provide additional SectionPart types */
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;
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());
} else if (part instanceof PropertyPart) {
saveLine(((PropertyPart) part).getProperty(), line);
} else {
- throw new CmsException("Unsupported part " + part);
+ throw new IllegalArgumentException("Unsupported part " + part);
}
}
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);
}
}
((Control) paragraph).dispose();
layout(section);
} catch (RepositoryException e1) {
- throw new CmsException("Cannot delete " + paragraph, e1);
+ throw new JcrException("Cannot delete " + paragraph, e1);
}
}
edit(paragraph, 0);
}
} catch (RepositoryException e) {
- throw new CmsException("Cannot split " + getEdited(), e);
+ throw new JcrException("Cannot split " + getEdited(), e);
}
}
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);
}
}
paragraphMergedWithNext(paragraph, removed);
edit(paragraph, txt.length());
} catch (RepositoryException e) {
- throw new CmsException("Cannot stop editing", e);
+ throw new JcrException("Cannot stop editing", e);
}
}
}
}
} catch (RepositoryException e) {
- throw new CmsException("Cannot upload", e);
+ throw new JcrException("Cannot upload", e);
}
}
persistChanges(previousSectionN);
}
} catch (RepositoryException e) {
- throw new CmsException("Cannot deepen " + getEdited(), e);
+ throw new JcrException("Cannot deepen " + getEdited(), e);
}
}
persistChanges(mergedNode);
}
} catch (RepositoryException e) {
- throw new CmsException("Cannot undeepen " + getEdited(), e);
+ throw new JcrException("Cannot undeepen " + getEdited(), e);
}
}
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<String> styles = getAvailableStyles(composite);
+ styledTools.show(composite, new Point(e.x, e.y), styles);
+ }
}
}
}
}
}
+ protected List<String> getAvailableStyles(EditablePart editablePart) {
+ return new ArrayList<>();
+ }
+
// FILE UPLOAD LISTENER
private class FUL implements FileUploadListener {
public void uploadProgress(FileUploadEvent event) {
}
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) {