add support for the color property
Signed-off-by: Florian Thienel <florian@thienel.org>
diff --git a/org.eclipse.vex.core/src/org/eclipse/vex/core/internal/boxes/BoxFactory.java b/org.eclipse.vex.core/src/org/eclipse/vex/core/internal/boxes/BoxFactory.java
index 007a8f3..a52e25c 100644
--- a/org.eclipse.vex.core/src/org/eclipse/vex/core/internal/boxes/BoxFactory.java
+++ b/org.eclipse.vex.core/src/org/eclipse/vex/core/internal/boxes/BoxFactory.java
@@ -130,17 +130,19 @@
return inlineContainer;
}
- public static TextContent textContent(final IContent content, final ContentRange range, final FontSpec font) {
+ public static TextContent textContent(final IContent content, final ContentRange range, final FontSpec font, final Color color) {
final TextContent textContent = new TextContent();
textContent.setContent(content, range);
textContent.setFont(font);
+ textContent.setColor(color);
return textContent;
}
- public static StaticText staticText(final String text, final FontSpec font) {
+ public static StaticText staticText(final String text, final FontSpec font, final Color color) {
final StaticText staticText = new StaticText();
staticText.setText(text);
staticText.setFont(font);
+ staticText.setColor(color);
return staticText;
}
diff --git a/org.eclipse.vex.core/src/org/eclipse/vex/core/internal/boxes/StaticText.java b/org.eclipse.vex.core/src/org/eclipse/vex/core/internal/boxes/StaticText.java
index d0984ce..0f5f0fe 100644
--- a/org.eclipse.vex.core/src/org/eclipse/vex/core/internal/boxes/StaticText.java
+++ b/org.eclipse.vex.core/src/org/eclipse/vex/core/internal/boxes/StaticText.java
@@ -10,6 +10,7 @@
*******************************************************************************/
package org.eclipse.vex.core.internal.boxes;
+import org.eclipse.vex.core.internal.core.Color;
import org.eclipse.vex.core.internal.core.FontMetrics;
import org.eclipse.vex.core.internal.core.FontResource;
import org.eclipse.vex.core.internal.core.FontSpec;
@@ -30,6 +31,7 @@
private String text;
private FontSpec fontSpec;
+ private Color color;
private final CharSequenceSplitter splitter = new CharSequenceSplitter();
@@ -115,6 +117,15 @@
layoutValid = false;
}
+ public Color getColor() {
+ return color;
+ }
+
+ public void setColor(final Color color) {
+ this.color = color;
+ layoutValid = false;
+ }
+
@Override
public void accept(final IBoxVisitor visitor) {
visitor.visit(this);
@@ -155,6 +166,7 @@
@Override
public void paint(final Graphics graphics) {
applyFont(graphics);
+ graphics.setColor(graphics.getColor(color));
graphics.drawString(getText(), 0, 0);
}
@@ -171,6 +183,9 @@
if (!hasEqualFont((StaticText) other)) {
return false;
}
+ if (!hasEqualColor((StaticText) other)) {
+ return false;
+ }
return true;
}
@@ -186,6 +201,16 @@
return true;
}
+ private boolean hasEqualColor(final StaticText other) {
+ if (color != null && !color.equals(other.color)) {
+ return false;
+ }
+ if (color == null && other.color != null) {
+ return false;
+ }
+ return true;
+ }
+
@Override
public boolean join(final IInlineBox other) {
if (!canJoin(other)) {
@@ -225,6 +250,7 @@
tail.setText("");
}
tail.setFont(fontSpec);
+ tail.setColor(color);
tail.setParent(parent);
return tail;
}
diff --git a/org.eclipse.vex.core/src/org/eclipse/vex/core/internal/boxes/TextContent.java b/org.eclipse.vex.core/src/org/eclipse/vex/core/internal/boxes/TextContent.java
index 9d900b2..d8bd501 100644
--- a/org.eclipse.vex.core/src/org/eclipse/vex/core/internal/boxes/TextContent.java
+++ b/org.eclipse.vex.core/src/org/eclipse/vex/core/internal/boxes/TextContent.java
@@ -38,6 +38,7 @@
private IPosition endPosition;
private FontSpec fontSpec;
+ private Color color;
private final CharSequenceSplitter splitter = new CharSequenceSplitter();
@@ -141,6 +142,15 @@
invalidateLayout();
}
+ public Color getColor() {
+ return color;
+ }
+
+ public void setColor(final Color color) {
+ this.color = color;
+ invalidateLayout();
+ }
+
@Override
public void accept(final IBoxVisitor visitor) {
visitor.visit(this);
@@ -181,6 +191,7 @@
@Override
public void paint(final Graphics graphics) {
applyFont(graphics);
+ graphics.setForeground(graphics.getColor(color));
graphics.drawString(getText(), 0, 0);
}
@@ -225,6 +236,9 @@
if (!hasEqualFont((TextContent) other)) {
return false;
}
+ if (!hasEqualColor((TextContent) other)) {
+ return false;
+ }
return true;
}
@@ -250,6 +264,16 @@
return true;
}
+ private boolean hasEqualColor(final TextContent other) {
+ if (color != null && !color.equals(other.color)) {
+ return false;
+ }
+ if (color == null && other.color != null) {
+ return false;
+ }
+ return true;
+ }
+
@Override
public boolean join(final IInlineBox other) {
if (!canJoin(other)) {
@@ -291,6 +315,7 @@
final TextContent tail = new TextContent();
tail.setContent(content, new ContentRange(splittingOffset, endPosition.getOffset()));
tail.setFont(fontSpec);
+ tail.setColor(color);
tail.setParent(parent);
return tail;
}
diff --git a/org.eclipse.vex.core/src/org/eclipse/vex/core/internal/visualization/CssBoxFactory.java b/org.eclipse.vex.core/src/org/eclipse/vex/core/internal/visualization/CssBoxFactory.java
index 63ba386..4920774 100644
--- a/org.eclipse.vex.core/src/org/eclipse/vex/core/internal/visualization/CssBoxFactory.java
+++ b/org.eclipse.vex.core/src/org/eclipse/vex/core/internal/visualization/CssBoxFactory.java
@@ -53,6 +53,7 @@
final TextContent textContent = new TextContent();
textContent.setContent(content, range);
textContent.setFont(font(styles));
+ textContent.setColor(styles.getColor());
return textContent;
}
@@ -60,6 +61,7 @@
final StaticText staticText = new StaticText();
staticText.setText(text);
staticText.setFont(font(styles));
+ staticText.setColor(styles.getColor());
return staticText;
}
diff --git a/org.eclipse.vex.core/src/org/eclipse/vex/core/internal/visualization/InlineElementVisualization.java b/org.eclipse.vex.core/src/org/eclipse/vex/core/internal/visualization/InlineElementVisualization.java
index cd7f8be..844b6d1 100644
--- a/org.eclipse.vex.core/src/org/eclipse/vex/core/internal/visualization/InlineElementVisualization.java
+++ b/org.eclipse.vex.core/src/org/eclipse/vex/core/internal/visualization/InlineElementVisualization.java
@@ -20,6 +20,7 @@
import org.eclipse.vex.core.internal.boxes.InlineContainer;
import org.eclipse.vex.core.internal.boxes.Margin;
import org.eclipse.vex.core.internal.boxes.Padding;
+import org.eclipse.vex.core.internal.core.Color;
import org.eclipse.vex.core.internal.core.FontSpec;
import org.eclipse.vex.core.provisional.dom.IElement;
@@ -44,7 +45,7 @@
if (element.hasChildren()) {
visualizeChildrenInline(element.children(), container);
} else {
- container.appendChild(staticText(" ", TIMES_NEW_ROMAN));
+ container.appendChild(staticText(" ", TIMES_NEW_ROMAN, Color.BLACK));
}
return container;
}
diff --git a/org.eclipse.vex.core/src/org/eclipse/vex/core/internal/visualization/ParagraphVisualization.java b/org.eclipse.vex.core/src/org/eclipse/vex/core/internal/visualization/ParagraphVisualization.java
index d7e7292..e55c497 100644
--- a/org.eclipse.vex.core/src/org/eclipse/vex/core/internal/visualization/ParagraphVisualization.java
+++ b/org.eclipse.vex.core/src/org/eclipse/vex/core/internal/visualization/ParagraphVisualization.java
@@ -20,6 +20,7 @@
import org.eclipse.vex.core.internal.boxes.Margin;
import org.eclipse.vex.core.internal.boxes.Padding;
import org.eclipse.vex.core.internal.boxes.Paragraph;
+import org.eclipse.vex.core.internal.core.Color;
import org.eclipse.vex.core.internal.core.FontSpec;
import org.eclipse.vex.core.provisional.dom.IElement;
@@ -56,7 +57,7 @@
private Paragraph visualizeEmptyElement(final IElement element) {
final Paragraph paragraph = paragraph();
- paragraph.appendChild(staticText(" ", TIMES_NEW_ROMAN));
+ paragraph.appendChild(staticText(" ", TIMES_NEW_ROMAN, Color.BLACK));
return paragraph;
}
}
diff --git a/org.eclipse.vex.core/src/org/eclipse/vex/core/internal/visualization/TextVisualization.java b/org.eclipse.vex.core/src/org/eclipse/vex/core/internal/visualization/TextVisualization.java
index 6d846f5..2487556 100644
--- a/org.eclipse.vex.core/src/org/eclipse/vex/core/internal/visualization/TextVisualization.java
+++ b/org.eclipse.vex.core/src/org/eclipse/vex/core/internal/visualization/TextVisualization.java
@@ -13,6 +13,7 @@
import static org.eclipse.vex.core.internal.boxes.BoxFactory.textContent;
import org.eclipse.vex.core.internal.boxes.IInlineBox;
+import org.eclipse.vex.core.internal.core.Color;
import org.eclipse.vex.core.internal.core.FontSpec;
import org.eclipse.vex.core.provisional.dom.IText;
@@ -22,6 +23,6 @@
@Override
public IInlineBox visit(final IText text) {
- return textContent(text.getContent(), text.getRange(), TIMES_NEW_ROMAN);
+ return textContent(text.getContent(), text.getRange(), TIMES_NEW_ROMAN, Color.BLACK);
}
}