define the visualization of empty elements through the content property
Signed-off-by: Florian Thienel <florian@thienel.org>
diff --git a/org.eclipse.vex.core/src/org/eclipse/vex/core/internal/css/Styles.java b/org.eclipse.vex.core/src/org/eclipse/vex/core/internal/css/Styles.java
index cee1f51..2840bda 100644
--- a/org.eclipse.vex.core/src/org/eclipse/vex/core/internal/css/Styles.java
+++ b/org.eclipse.vex.core/src/org/eclipse/vex/core/internal/css/Styles.java
@@ -197,7 +197,7 @@
*/
public List<String> getTextualContent(final INode node) {
final List<String> content = new ArrayList<String>();
- for (LexicalUnit lexicalUnit : contentLexicalUnits) {
+ for (final LexicalUnit lexicalUnit : contentLexicalUnits) {
switch (lexicalUnit.getLexicalUnitType()) {
case LexicalUnit.SAC_STRING_VALUE:
// content: "A String"
@@ -224,19 +224,17 @@
});
break;
}
- lexicalUnit = lexicalUnit.getNextLexicalUnit();
}
return content;
}
public List<IPropertyContent> getAllContent(final INode node) {
final List<IPropertyContent> allContent = new ArrayList<IPropertyContent>();
- for (LexicalUnit lexicalUnit : contentLexicalUnits) {
+ for (final LexicalUnit lexicalUnit : contentLexicalUnits) {
final IPropertyContent content = getContent(lexicalUnit, node);
if (content != null) {
allContent.add(content);
}
- lexicalUnit = lexicalUnit.getNextLexicalUnit();
}
return allContent;
}
diff --git a/org.eclipse.vex.core/src/org/eclipse/vex/core/internal/visualization/CssBasedBoxModelBuilder.java b/org.eclipse.vex.core/src/org/eclipse/vex/core/internal/visualization/CssBasedBoxModelBuilder.java
index 0ac6a4b..cfc17ef 100644
--- a/org.eclipse.vex.core/src/org/eclipse/vex/core/internal/visualization/CssBasedBoxModelBuilder.java
+++ b/org.eclipse.vex.core/src/org/eclipse/vex/core/internal/visualization/CssBasedBoxModelBuilder.java
@@ -248,7 +248,7 @@
}
private IStructuralBox visualizeStructuralElementWithNoContentAllowed(final Styles styles, final IElement element) {
- return paragraph(styles, nodeTag(element, styles));
+ return paragraph(styles, visualizeInlineElementWithNoContentAllowed(element, styles));
}
private <P extends IParentBox<IStructuralBox>> P visualizeChildrenAsStructure(final INode node, final Styles styles, final Iterable<VisualizeResult> childrenResults, final P parentBox) {
@@ -361,7 +361,7 @@
public IInlineBox visit(final IElement element) {
if (isElementWithNoContentAllowed(element)) {
return nodeReference(element,
- frame(surroundWithInlinePseudoElements(inlineContainer(visualizeEmptyInlineElementWithNoContentAllowed(element, styles)), element, styles), styles));
+ frame(surroundWithInlinePseudoElements(inlineContainer(visualizeInlineElementWithNoContentAllowed(element, styles)), element, styles), styles));
}
final InlineContainer inlineElementContent = surroundWithInlineMarkers(element, styles,
@@ -423,8 +423,11 @@
}
}
- private static IInlineBox visualizeEmptyInlineElementWithNoContentAllowed(final INode node, final Styles styles) {
- return nodeTag(node, styles);
+ private static IInlineBox visualizeInlineElementWithNoContentAllowed(final INode node, final Styles styles) {
+ if (!styles.isContentDefined()) {
+ return nodeTag(node, styles);
+ }
+ return visualizeContentProperty(node, styles, inlineContainer());
}
private static IInlineBox visualizeText(final IContent content, final ContentRange textRange, final INode parentNode, final Styles styles) {
diff --git a/org.eclipse.vex.core/src/org/eclipse/vex/core/internal/widget/VisualizationController.java b/org.eclipse.vex.core/src/org/eclipse/vex/core/internal/widget/VisualizationController.java
index 373b199..f1cfa4c 100644
--- a/org.eclipse.vex.core/src/org/eclipse/vex/core/internal/widget/VisualizationController.java
+++ b/org.eclipse.vex.core/src/org/eclipse/vex/core/internal/widget/VisualizationController.java
@@ -31,6 +31,7 @@
private final IDocumentListener documentListener = new IDocumentListener() {
@Override
public void attributeChanged(final AttributeChangeEvent event) {
+ visualization.rebuildContentRange(event.getParent(), event.getParent().getRange());
}
@Override
diff --git a/org.eclipse.vex.ui/src/org/eclipse/vex/ui/boxview/BoxDemoView.java b/org.eclipse.vex.ui/src/org/eclipse/vex/ui/boxview/BoxDemoView.java
index 593ca3b..4253f81 100644
--- a/org.eclipse.vex.ui/src/org/eclipse/vex/ui/boxview/BoxDemoView.java
+++ b/org.eclipse.vex.ui/src/org/eclipse/vex/ui/boxview/BoxDemoView.java
@@ -58,6 +58,7 @@
import org.eclipse.vex.core.provisional.dom.ContentRange;
import org.eclipse.vex.core.provisional.dom.IContent;
import org.eclipse.vex.core.provisional.dom.IDocument;
+import org.eclipse.vex.core.provisional.dom.IElement;
import org.w3c.css.sac.CSSException;
import org.w3c.css.sac.InputSource;
@@ -247,7 +248,8 @@
}
public void insertAnchor() {
- boxWidget.insertElement(ANCHOR);
+ final IElement anchor = boxWidget.insertElement(ANCHOR);
+ anchor.setAttribute("id", Double.toHexString(Math.random()));
}
public void insertComment() {