hillion 01/09/28 08:40:08
Modified: resources/org/apache/batik/apps/svgbrowser/resources
GUI.properties
sources/org/apache/batik/apps/svgbrowser
JSVGViewerFrame.java
sources/org/apache/batik/css AbstractViewCSS.java
sources/org/apache/batik/dom AbstractAttr.java
sources/org/apache/batik/dom/svg SVGDOMImplementation.java
SVGExternalResourcesRequiredSupport.java
SVGOMDocument.java
SVGOMFEConvolveMatrixElement.java
sources/org/apache/batik/util SVGConstants.java
Added: sources/org/apache/batik/dom/svg SVGOMAnimatedBoolean.java
Log:
- Applied the bug # 3389 patch (UI for aternate style-sheets).
- Preliminary tests with live attribute values in SVG DOM.
Revision Changes Path
1.31 +12 -4
xml-batik/resources/org/apache/batik/apps/svgbrowser/resources/GUI.properties
Index: GUI.properties
===================================================================
RCS file:
/home/cvs/xml-batik/resources/org/apache/batik/apps/svgbrowser/resources/GUI.properties,v
retrieving revision 1.30
retrieving revision 1.31
diff -u -r1.30 -r1.31
--- GUI.properties 2001/07/18 22:04:53 1.30
+++ GUI.properties 2001/09/28 15:40:08 1.31
@@ -9,7 +9,7 @@
# The viewer's GUI resources.
#
# Author: [EMAIL PROTECTED]
-# $Id: GUI.properties,v 1.30 2001/07/18 22:04:53 deweese Exp $
+# $Id: GUI.properties,v 1.31 2001/09/28 15:40:08 hillion Exp $
#
ViewSource.width = 750
@@ -159,10 +159,8 @@
# View menu ################
-View = ResetTransform ZoomIn ZoomOut - PreviousTransform NextTransform SetTransform
- ThumbnailDialog ViewSource
+View = ResetTransform ZoomIn ZoomOut - UseStylesheet - PreviousTransform
NextTransform SetTransform - ThumbnailDialog ViewSource
-#View = ResetTransform ZoomIn ZoomOut - PreviousTransform NextTransform
SetTransform - ViewSource
-
View.type = MENU
View.text = View
View.mnemonic = V
@@ -194,6 +192,16 @@
ZoomOut.mnemonic = O
ZoomOut.action = ZoomOutAction
ZoomOut.accelerator = Ctrl+O
+
+UseStylesheet = DefaultStylesheet
+UseStylesheet.type = MENU
+UseStylesheet.text = Use Stylesheet
+UseStylesheet.icon = resources/blank.gif
+UseStylesheet.action = UseStylesheetAction
+
+DefaultStylesheet.type = RADIO
+DefaultStylesheet.text = Default
+DefaultStylesheet.selected = true
PreviousTransform.type = ITEM
PreviousTransform.text = Previous Transform
1.52 +110 -1
xml-batik/sources/org/apache/batik/apps/svgbrowser/JSVGViewerFrame.java
Index: JSVGViewerFrame.java
===================================================================
RCS file:
/home/cvs/xml-batik/sources/org/apache/batik/apps/svgbrowser/JSVGViewerFrame.java,v
retrieving revision 1.51
retrieving revision 1.52
diff -u -r1.51 -r1.52
--- JSVGViewerFrame.java 2001/09/19 11:16:37 1.51
+++ JSVGViewerFrame.java 2001/09/28 15:40:08 1.52
@@ -61,6 +61,7 @@
import javax.swing.AbstractAction;
import javax.swing.Action;
import javax.swing.BorderFactory;
+import javax.swing.ButtonGroup;
import javax.swing.JCheckBoxMenuItem;
import javax.swing.JComponent;
import javax.swing.JDialog;
@@ -69,6 +70,7 @@
import javax.swing.JMenuBar;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
+import javax.swing.JRadioButtonMenuItem;
import javax.swing.JScrollPane;
import javax.swing.JTextArea;
import javax.swing.JToolBar;
@@ -78,8 +80,13 @@
import javax.swing.text.Document;
import javax.swing.text.PlainDocument;
+import org.apache.batik.dom.StyleSheetProcessingInstruction;
+
import org.apache.batik.dom.svg.SVGOMDocument;
+import org.apache.batik.dom.util.HashTable;
+import org.apache.batik.dom.util.DOMUtilities;
+
import org.apache.batik.swing.gvt.AbstractImageZoomInteractor;
import org.apache.batik.swing.gvt.AbstractPanInteractor;
import org.apache.batik.swing.gvt.AbstractRotateInteractor;
@@ -129,7 +136,15 @@
import org.apache.batik.xml.XMLUtilities;
import org.w3c.dom.Element;
+import org.w3c.dom.Node;
+import org.w3c.dom.NodeList;
+import org.w3c.dom.ProcessingInstruction;
+import org.w3c.dom.stylesheets.DocumentStyle;
+import org.w3c.dom.stylesheets.StyleSheetList;
+
+import org.w3c.dom.css.CSSStyleSheet;
+
import org.w3c.dom.css.ViewCSS;
import org.w3c.dom.svg.SVGDocument;
@@ -138,7 +153,7 @@
* This class represents a SVG viewer swing frame.
*
* @author <a href="mailto:[EMAIL PROTECTED]">Stephane Hillion</a>
- * @version $Id: JSVGViewerFrame.java,v 1.51 2001/09/19 11:16:37 vhardy Exp $
+ * @version $Id: JSVGViewerFrame.java,v 1.52 2001/09/28 15:40:08 hillion Exp $
*/
public class JSVGViewerFrame
extends JFrame
@@ -175,6 +190,7 @@
public final static String ZOOM_OUT_ACTION = "ZoomOutAction";
public final static String PREVIOUS_TRANSFORM_ACTION =
"PreviousTransformAction";
public final static String NEXT_TRANSFORM_ACTION = "NextTransformAction";
+ public final static String USE_STYLESHEET_ACTION = "UseStylesheetAction";
public final static String STOP_ACTION = "StopAction";
public final static String MONITOR_ACTION = "MonitorAction";
public final static String DOM_VIEWER_ACTION = "DOMViewerAction";
@@ -262,6 +278,12 @@
new NextTransformAction();
/**
+ * The use (author) stylesheet action
+ */
+ protected UseStylesheetAction useStylesheetAction =
+ new UseStylesheetAction();
+
+ /**
* The debug flag.
*/
protected boolean debug;
@@ -372,6 +394,7 @@
listeners.put(PREVIOUS_TRANSFORM_ACTION, previousTransformAction);
listeners.put(NEXT_TRANSFORM_ACTION, nextTransformAction);
+ listeners.put(USE_STYLESHEET_ACTION, useStylesheetAction);
listeners.put(STOP_ACTION, stopAction);
listeners.put(MONITOR_ACTION, new MonitorAction());
listeners.put(DOM_VIEWER_ACTION, new DOMViewerAction());
@@ -1142,6 +1165,90 @@
}
/**
+ * To apply the selected author stylesheet
+ */
+ public class UseStylesheetAction extends AbstractAction
+ implements JComponentModifier {
+
+ List components = new LinkedList();
+
+ public UseStylesheetAction() {}
+
+ public void actionPerformed(ActionEvent e) {
+ }
+
+ public void addJComponent(JComponent c) {
+ components.add(c);
+ c.setEnabled(false);
+ }
+
+ protected void update() {
+ Iterator it = components.iterator();
+ if (it.hasNext()) {
+
+ JComponent stylesheetMenu = (JComponent)it.next();
+ stylesheetMenu.removeAll();
+ stylesheetMenu.setEnabled(false);
+
+ SVGDocument doc = svgCanvas.getSVGDocument();
+ NodeList children = doc.getChildNodes();
+ ButtonGroup buttonGroup = new ButtonGroup();
+ HashTable stylesheetTitles = new HashTable();
+
+ // !!! The traversal should be recursive
+ for (int ix=0; ix < children.getLength(); ix++) {
+ Node n = children.item(ix);
+ if (n.getNodeType() == Node.PROCESSING_INSTRUCTION_NODE &&
+ n instanceof StyleSheetProcessingInstruction) {
+
+ String data = ((ProcessingInstruction)n).getData();
+
+ HashTable attrs = new HashTable();
+ attrs.put("alternate", "no");
+
+ DOMUtilities.parseStyleSheetPIData(data, attrs);
+ final String title = (String)attrs.get("title");
+
+ // If no title is specified, then the stylesheet should
+ // always be applied
+
+ // If the title has already been found, then it is part
+ // of a group, and no new menu option is needed
+ if (title != null && stylesheetTitles.get(title) == null) {
+ stylesheetTitles.put(title, title);
+
+ JRadioButtonMenuItem button;
+ button = new JRadioButtonMenuItem(title);
+ if (((String)attrs.get("alternate")).equals("no")) {
+ button.setSelected(true);
+ }
+ button.addActionListener
+ (new java.awt.event.ActionListener() {
+ public void actionPerformed (ActionEvent e) {
+ SVGDocument doc =
svgCanvas.getSVGDocument();
+ StyleSheetList l;
+ l = ((DocumentStyle)doc).getStyleSheets();
+ for (int i = 0; i < l.getLength(); i++) {
+ CSSStyleSheet ss;
+ ss = (CSSStyleSheet)l.item(i);
+
ss.setDisabled(!title.equals(ss.getTitle()));
+ }
+ ((SVGOMDocument)doc).clearViewCSS();
+ svgCanvas.setSVGDocument(doc);
+ }
+ });
+
+ buttonGroup.add(button);
+ stylesheetMenu.add(button);
+ stylesheetMenu.setEnabled(true);
+ }
+ }
+ }
+ }
+ }
+ }
+
+ /**
* To stop the current processing.
*/
public class StopAction extends AbstractAction
@@ -1363,6 +1470,8 @@
transformHistory = new TransformHistory();
previousTransformAction.update();
nextTransformAction.update();
+
+ useStylesheetAction.update();
}
/**
1.16 +8 -5 xml-batik/sources/org/apache/batik/css/AbstractViewCSS.java
Index: AbstractViewCSS.java
===================================================================
RCS file: /home/cvs/xml-batik/sources/org/apache/batik/css/AbstractViewCSS.java,v
retrieving revision 1.15
retrieving revision 1.16
diff -u -r1.15 -r1.16
--- AbstractViewCSS.java 2001/06/19 14:27:18 1.15
+++ AbstractViewCSS.java 2001/09/28 15:40:08 1.16
@@ -44,7 +44,7 @@
* {@link org.w3c.dom.css.ViewCSS} interface.
*
* @author <a href="mailto:[EMAIL PROTECTED]">Stephane Hillion</a>
- * @version $Id: AbstractViewCSS.java,v 1.15 2001/06/19 14:27:18 hillion Exp $
+ * @version $Id: AbstractViewCSS.java,v 1.16 2001/09/28 15:40:08 hillion Exp $
*/
public abstract class AbstractViewCSS implements ViewCSS {
@@ -362,10 +362,13 @@
CSSOMRuleList authorRules = new CSSOMRuleList();
StyleSheetList l = ((DocumentStyle)document).getStyleSheets();
for (int i = 0; i < l.getLength(); i++) {
- addMatchingRules(((CSSStyleSheet)l.item(i)).getCssRules(),
- e,
- pe,
- authorRules);
+ CSSStyleSheet ss = (CSSStyleSheet)l.item(i);
+ if (!ss.getDisabled()) {
+ addMatchingRules(((CSSStyleSheet)l.item(i)).getCssRules(),
+ e,
+ pe,
+ authorRules);
+ }
}
authorRules = sortRules(authorRules, e, pe);
for (int i = 0; i < authorRules.getLength(); i++) {
1.5 +5 -5 xml-batik/sources/org/apache/batik/dom/AbstractAttr.java
Index: AbstractAttr.java
===================================================================
RCS file: /home/cvs/xml-batik/sources/org/apache/batik/dom/AbstractAttr.java,v
retrieving revision 1.4
retrieving revision 1.5
diff -u -r1.4 -r1.5
--- AbstractAttr.java 2001/09/27 09:57:13 1.4
+++ AbstractAttr.java 2001/09/28 15:40:08 1.5
@@ -20,7 +20,7 @@
* This class implements the {@link org.w3c.dom.Attr} interface.
*
* @author <a href="mailto:[EMAIL PROTECTED]">Stephane Hillion</a>
- * @version $Id: AbstractAttr.java,v 1.4 2001/09/27 09:57:13 hillion Exp $
+ * @version $Id: AbstractAttr.java,v 1.5 2001/09/28 15:40:08 hillion Exp $
*/
public abstract class AbstractAttr extends AbstractParentNode implements Attr {
/**
@@ -124,17 +124,17 @@
removeChild(n);
}
+ String val = (nodeValue == null) ? "" : nodeValue;
+
// Create and append a new child.
- n = getOwnerDocument().createTextNode((nodeValue == null)
- ? ""
- : nodeValue);
+ n = getOwnerDocument().createTextNode(val);
appendChild(n);
if (ownerElement != null) {
ownerElement.fireDOMAttrModifiedEvent(nodeName,
this,
s,
- nodeValue,
+ val,
MutationEvent.MODIFICATION);
}
}
1.15 +7 -1
xml-batik/sources/org/apache/batik/dom/svg/SVGDOMImplementation.java
Index: SVGDOMImplementation.java
===================================================================
RCS file:
/home/cvs/xml-batik/sources/org/apache/batik/dom/svg/SVGDOMImplementation.java,v
retrieving revision 1.14
retrieving revision 1.15
diff -u -r1.14 -r1.15
--- SVGDOMImplementation.java 2001/09/12 16:57:07 1.14
+++ SVGDOMImplementation.java 2001/09/28 15:40:08 1.15
@@ -54,7 +54,7 @@
* It provides support the SVG 1.0 documents.
*
* @author <a href="mailto:[EMAIL PROTECTED]">Stephane Hillion</a>
- * @version $Id: SVGDOMImplementation.java,v 1.14 2001/09/12 16:57:07 hillion Exp $
+ * @version $Id: SVGDOMImplementation.java,v 1.15 2001/09/28 15:40:08 hillion Exp $
*/
public class SVGDOMImplementation
extends AbstractDOMImplementation
@@ -216,6 +216,7 @@
String title = (String)attrs.get("title");
String media = (String)attrs.get("media");
String href = (String)attrs.get("href");
+ String alternate = (String)attrs.get("alternate");
SVGOMDocument doc = (SVGOMDocument)n.getOwnerDocument();
URL url = new URL(doc.getURLObject(), href);
@@ -231,6 +232,11 @@
CSSDocumentHandler.createParser());
CSSDocumentHandler.parseStyleSheet(ss, url.toString());
+ if (title == null || alternate.equals("no")) {
+ ss.setDisabled (false);
+ } else {
+ ss.setDisabled (true);
+ }
return ss;
} catch (Exception e) {
}
1.3 +17 -7
xml-batik/sources/org/apache/batik/dom/svg/SVGExternalResourcesRequiredSupport.java
Index: SVGExternalResourcesRequiredSupport.java
===================================================================
RCS file:
/home/cvs/xml-batik/sources/org/apache/batik/dom/svg/SVGExternalResourcesRequiredSupport.java,v
retrieving revision 1.2
retrieving revision 1.3
diff -u -r1.2 -r1.3
--- SVGExternalResourcesRequiredSupport.java 2001/09/10 12:26:07 1.2
+++ SVGExternalResourcesRequiredSupport.java 2001/09/28 15:40:08 1.3
@@ -8,23 +8,33 @@
package org.apache.batik.dom.svg;
-import org.w3c.dom.Element;
+import org.apache.batik.util.SVGConstants;
+
import org.w3c.dom.svg.SVGAnimatedBoolean;
-import org.w3c.dom.svg.SVGExternalResourcesRequired;
/**
* Provides support for the SVGExternalResourcesRequired interface.
*
* @author <a href="mailto:[EMAIL PROTECTED]">Stephane Hillion</a>
- * @version $Id: SVGExternalResourcesRequiredSupport.java,v 1.2 2001/09/10 12:26:07
hillion Exp $
+ * @version $Id: SVGExternalResourcesRequiredSupport.java,v 1.3 2001/09/28 15:40:08
hillion Exp $
*/
-public class SVGExternalResourcesRequiredSupport {
+public class SVGExternalResourcesRequiredSupport implements SVGConstants {
+
+ private final static String ATTR_NAME =
SVG_EXTERNAL_RESOURCES_REQUIRED_ATTRIBUTE;
/**
* To implement {@link
- * SVGExternalResourcesRequired#getExternalResourcesRequired()}.
+ * org.w3c.dom.svg.SVGExternalResourcesRequired#getExternalResourcesRequired()}.
*/
- public static SVGAnimatedBoolean getExternalResourcesRequired(Element elt) {
- throw new RuntimeException("!!! TODO getExternalResourcesRequired()");
+ public static SVGAnimatedBoolean getExternalResourcesRequired(AbstractElement
elt) {
+ LiveAttributeValue lav;
+ lav = elt.getLiveAttributeValue(null, ATTR_NAME);
+ if (lav == null) {
+ lav = new SVGOMAnimatedBoolean(elt, null, ATTR_NAME,
+ elt.getAttributeNodeNS(null, ATTR_NAME),
+ "false");
+ elt.putLiveAttributeValue(null, ATTR_NAME, lav);
+ }
+ return (SVGAnimatedBoolean)lav;
}
}
1.39 +8 -1 xml-batik/sources/org/apache/batik/dom/svg/SVGOMDocument.java
Index: SVGOMDocument.java
===================================================================
RCS file: /home/cvs/xml-batik/sources/org/apache/batik/dom/svg/SVGOMDocument.java,v
retrieving revision 1.38
retrieving revision 1.39
diff -u -r1.38 -r1.39
--- SVGOMDocument.java 2001/09/12 16:57:07 1.38
+++ SVGOMDocument.java 2001/09/28 15:40:08 1.39
@@ -69,7 +69,7 @@
* This class implements {@link SVGDocument}.
*
* @author <a href="mailto:[EMAIL PROTECTED]">Stephane Hillion</a>
- * @version $Id: SVGOMDocument.java,v 1.38 2001/09/12 16:57:07 hillion Exp $
+ * @version $Id: SVGOMDocument.java,v 1.39 2001/09/28 15:40:08 hillion Exp $
*/
public class SVGOMDocument
extends AbstractDocument
@@ -439,6 +439,13 @@
(impl.getUserAgentStyleSheet());
}
return defaultView;
+ }
+
+ /**
+ * Clears the view CSS.
+ */
+ public void clearViewCSS() {
+ defaultView = null;
}
// DocumentCSS ////////////////////////////////////////////////////////////
1.9 +11 -2
xml-batik/sources/org/apache/batik/dom/svg/SVGOMFEConvolveMatrixElement.java
Index: SVGOMFEConvolveMatrixElement.java
===================================================================
RCS file:
/home/cvs/xml-batik/sources/org/apache/batik/dom/svg/SVGOMFEConvolveMatrixElement.java,v
retrieving revision 1.8
retrieving revision 1.9
diff -u -r1.8 -r1.9
--- SVGOMFEConvolveMatrixElement.java 2001/09/10 12:26:08 1.8
+++ SVGOMFEConvolveMatrixElement.java 2001/09/28 15:40:08 1.9
@@ -25,7 +25,7 @@
* This class implements {@link SVGFEConvolveMatrixElement}.
*
* @author <a href="mailto:[EMAIL PROTECTED]">Stephane Hillion</a>
- * @version $Id: SVGOMFEConvolveMatrixElement.java,v 1.8 2001/09/10 12:26:08
hillion Exp $
+ * @version $Id: SVGOMFEConvolveMatrixElement.java,v 1.9 2001/09/28 15:40:08
hillion Exp $
*/
public class SVGOMFEConvolveMatrixElement
extends SVGOMFilterPrimitiveStandardAttributes
@@ -150,7 +150,16 @@
* org.w3c.dom.svg.SVGFEConvolveMatrixElement#getPreserveAlpha()}.
*/
public SVGAnimatedBoolean getPreserveAlpha() {
- throw new RuntimeException("!!! TODO: getPreserveAlpha()");
+ LiveAttributeValue lav;
+ lav = getLiveAttributeValue(null, SVG_PRESERVE_ALPHA_ATTRIBUTE);
+ if (lav == null) {
+ lav = new SVGOMAnimatedBoolean
+ (this, null, SVG_PRESERVE_ALPHA_ATTRIBUTE,
+ getAttributeNodeNS(null, SVG_PRESERVE_ALPHA_ATTRIBUTE),
+ "false");
+ putLiveAttributeValue(null, SVG_PRESERVE_ALPHA_ATTRIBUTE, lav);
+ }
+ return (SVGAnimatedBoolean)lav;
}
/**
1.3 +85 -28
xml-batik/sources/org/apache/batik/dom/svg/SVGOMAnimatedBoolean.java
1.59 +2 -1 xml-batik/sources/org/apache/batik/util/SVGConstants.java
Index: SVGConstants.java
===================================================================
RCS file: /home/cvs/xml-batik/sources/org/apache/batik/util/SVGConstants.java,v
retrieving revision 1.58
retrieving revision 1.59
diff -u -r1.58 -r1.59
--- SVGConstants.java 2001/09/10 13:17:20 1.58
+++ SVGConstants.java 2001/09/28 15:40:08 1.59
@@ -14,7 +14,7 @@
* @author <a href="mailto:[EMAIL PROTECTED]">Thierry Kormann</a>
* @author <a href="[EMAIL PROTECTED]">Vincent Hardy</a>
* @author <a href="mailto:[EMAIL PROTECTED]">Stephane Hillion</a>
- * @version $Id: SVGConstants.java,v 1.58 2001/09/10 13:17:20 hillion Exp $
+ * @version $Id: SVGConstants.java,v 1.59 2001/09/28 15:40:08 hillion Exp $
*/
public interface SVGConstants extends CSSConstants {
@@ -163,6 +163,7 @@
String SVG_ELEVATION_ATTRIBUTE = "elevation";
String SVG_ENABLE_BACKGROUND_ATTRIBUTE = CSS_ENABLE_BACKGROUND_PROPERTY;
String SVG_EXPONENT_ATTRIBUTE = "exponent";
+ String SVG_EXTERNAL_RESOURCES_REQUIRED_ATTRIBUTE = "externalResourcesRequired";
String SVG_FILL_ATTRIBUTE = CSS_FILL_PROPERTY;
String SVG_FILL_OPACITY_ATTRIBUTE = CSS_FILL_OPACITY_PROPERTY;
String SVG_FILL_RULE_ATTRIBUTE = CSS_FILL_RULE_PROPERTY;
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]