diff options
author | Roman Kennke <roman@kennke.org> | 2006-12-01 23:20:28 +0000 |
---|---|---|
committer | Roman Kennke <roman@kennke.org> | 2006-12-01 23:20:28 +0000 |
commit | 5b46b46ff3fdcc16a7420b55fb57b804fb1eb3e3 (patch) | |
tree | 9f58c640a500e2ca3d5b32bf156de925184fb253 /gnu/javax | |
parent | be31fc91967c4a8d6e62a36b303498563dabc67a (diff) | |
download | classpath-5b46b46ff3fdcc16a7420b55fb57b804fb1eb3e3.tar.gz |
2006-12-01 Roman Kennke <kennke@aicas.com>
* javax/swing/text/html/HTML.java
(Attribute.DYNAMIC_CLASS): New field.
(Attribute.PSEUDO_CLASS): New field.
* javax/swing/text/html/HTMLDocument.java
(HTMLReader.CharacterAction.start): Initialize anchor with link
pseudo attribute.
(updateSpecialClass): New helper method. Updates the dynamic
or pseudo class for anchor tags.
* javax/swing/text/html/HTMLEditorKit.java
(LinkController.lastAnchorElement): New field. For tracking
enter/exit of anchors.
(LinkController.activateLink): Set pseudo class to 'visited'.
(LinkController.mouseMoved): Added support for tracking
the 'hover' dynamic class.
* javax/swing/text/html/InlineView.java
(changedUpdate): Fetch new properties.
* javax/swing/text/html/StyleSheet.java
(attributeSetToMap): New helper method.
(getRule): Also append dynamic and pseudo class to key.
(resolveStyle): Resolve style based generally on all attributes.
* javax/swing/text/html/TableView.java
(RowView.layoutMajorAxis): Make sure the grid is valid.
(updateGrid): Made package private.
* gnu/javax/swing/text/html/css/Selector.java
(calculateSpecificity): Added support for dynamic and pseudo classes.
(matches): Changed to operate on general attributes.
Added support for dynamic and pseudo classes.
Diffstat (limited to 'gnu/javax')
-rw-r--r-- | gnu/javax/swing/text/html/css/Selector.java | 17 |
1 files changed, 14 insertions, 3 deletions
diff --git a/gnu/javax/swing/text/html/css/Selector.java b/gnu/javax/swing/text/html/css/Selector.java index b8128233b..210df3a7b 100644 --- a/gnu/javax/swing/text/html/css/Selector.java +++ b/gnu/javax/swing/text/html/css/Selector.java @@ -38,6 +38,7 @@ exception statement from your version. */ package gnu.javax.swing.text.html.css; +import java.util.Map; import java.util.StringTokenizer; /** @@ -98,7 +99,7 @@ public class Selector * @return <code>true</code> when this selector matches the element path, * <code>false</code> otherwise */ - public boolean matches(String[] tags, String[] pathClasses, String[] pathIds) + public boolean matches(String[] tags, Map[] attributes) { // TODO: This implements class, id and descendent matching. These are // the most commonly used selector matchers in CSS together with HTML. @@ -119,15 +120,22 @@ public class Selector boolean tagMatch = false; for (; tagIndex < numTags && tagMatch == false; tagIndex++) { + Object pathClass = attributes[tagIndex].get("class"); + // Try pseudo class too. + Object pseudoClass = attributes[tagIndex].get("_pseudo"); + Object dynClass = attributes[tagIndex].get("_dynamic"); + Object pathId = attributes[tagIndex].get("id"); String tag = elements[j]; String clazz = classes[j]; String id = ids[j]; tagMatch = tag.equals("") || tag.equals("*") || tag.equals(tags[tagIndex]); tagMatch = tagMatch && (clazz.equals("*") - || clazz.equals(pathClasses[tagIndex])); + || clazz.equals(dynClass) + || clazz.equals(pseudoClass) + || clazz.equals(pathClass)); tagMatch = tagMatch && (id.equals("*") - || id.equals(pathIds[tagIndex])); + || id.equals(pathId)); // For the last element in the selector we must not look // further. if (j == 0) @@ -190,6 +198,9 @@ public class Selector { String sel = selector[i]; int clazzIndex = sel.indexOf('.'); + // Try pseudo class too. + if (clazzIndex == -1) + clazzIndex = sel.indexOf(':'); int idIndex = sel.indexOf('#'); String clazz; if (clazzIndex == -1) |