package org.argeo.docbook.ui; import javax.jcr.Node; import org.argeo.cms.ui.util.CmsUiUtils; import org.argeo.cms.ui.viewers.EditablePart; import org.argeo.cms.ui.viewers.Section; import org.argeo.cms.ui.widgets.TextStyles; import org.argeo.docbook.DbkType; import org.eclipse.swt.SWT; import org.eclipse.swt.widgets.Composite; import org.eclipse.swt.widgets.Control; /** An editable section. */ public class TextSection extends Section { private static final long serialVersionUID = -8625209546243220689L; private String defaultTextStyle = DbkType.para.name(); private String titleStyle; private final boolean flat; private boolean titleReadOnly = false; private final int level; public TextSection(Composite parent, int style, Node node) { this(parent, findSection(parent), style, node); } public TextSection(TextSection section, int style, Node node) { this(section, section.getParentSection(), style, node); } private TextSection(Composite parent, Section parentSection, int style, Node node) { super(parent, parentSection, style, node); flat = SWT.FLAT == (style & SWT.FLAT); if (parentSection instanceof TextSection) { level = ((TextSection) parentSection).getLevel() + 1; } else { level = 0; } CmsUiUtils.style(this, DbkType.section.name()); } public String getDefaultTextStyle() { return defaultTextStyle; } public boolean isFlat() { return flat; } /** The level of this section, similar to h1, h2, etc. in HTML. */ public int getLevel() { return level; } public String getTitleStyle() { if (titleStyle != null) return titleStyle; // TODO make base H styles configurable // Integer relativeDepth = getRelativeDepth(); // System.out.println("Level: " + getLevel()); return "h" + (getLevel() + 1); } public void setDefaultTextStyle(String defaultTextStyle) { this.defaultTextStyle = defaultTextStyle; } public void setTitleStyle(String titleStyle) { this.titleStyle = titleStyle; } public boolean isTitleReadOnly() { return titleReadOnly; } public void setTitleReadOnly(boolean titleReadOnly) { this.titleReadOnly = titleReadOnly; } }