You are viewing a plain text version of this content. The canonical link for it is here.
Posted to batik-dev@xmlgraphics.apache.org by tk...@apache.org on 2001/05/16 15:23:26 UTC
cvs commit: xml-batik/sources/org/apache/batik/swing/svg SVGDocumentLoaderAdapter.java
tkormann 01/05/16 06:23:24
Modified: resources/org/apache/batik/apps/svgbrowser/resources
GUI.properties
sources/org/apache/batik/apps/svgbrowser
JSVGViewerFrame.java ThumbnailDialog.java
sources/org/apache/batik/swing/svg
SVGDocumentLoaderAdapter.java
Log:
Improve Thumbnail even though no interaction is allowed at this time.
Revision Changes Path
1.27 +3 -3 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.26
retrieving revision 1.27
diff -u -r1.26 -r1.27
--- GUI.properties 2001/05/16 12:32:42 1.26
+++ GUI.properties 2001/05/16 13:23:01 1.27
@@ -9,7 +9,7 @@
# The viewer's GUI resources.
#
# Author: stephane@hillion.org
-# $Id: GUI.properties,v 1.26 2001/05/16 12:32:42 deweese Exp $
+# $Id: GUI.properties,v 1.27 2001/05/16 13:23:01 tkormann Exp $
#
ViewSource.width = 750
@@ -152,9 +152,9 @@
# View menu ################
-#View = ResetTransform ZoomIn ZoomOut - PreviousTransform NextTransform SetTransform - ThumbnailDialog ViewSource
+View = ResetTransform ZoomIn ZoomOut - PreviousTransform NextTransform SetTransform - ThumbnailDialog ViewSource
-View = ResetTransform ZoomIn ZoomOut - PreviousTransform NextTransform SetTransform - ViewSource
+#View = ResetTransform ZoomIn ZoomOut - PreviousTransform NextTransform SetTransform - ViewSource
View.type = MENU
View.text = View
1.42 +3 -4 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.41
retrieving revision 1.42
diff -u -r1.41 -r1.42
--- JSVGViewerFrame.java 2001/05/16 12:33:12 1.41
+++ JSVGViewerFrame.java 2001/05/16 13:23:12 1.42
@@ -133,7 +133,7 @@
* This class represents a SVG viewer swing frame.
*
* @author <a href="mailto:stephane@hillion.org">Stephane Hillion</a>
- * @version $Id: JSVGViewerFrame.java,v 1.41 2001/05/16 12:33:12 deweese Exp $
+ * @version $Id: JSVGViewerFrame.java,v 1.42 2001/05/16 13:23:12 tkormann Exp $
*/
public class JSVGViewerFrame
extends JFrame
@@ -1249,7 +1249,6 @@
findDialog.setLocation(fr.x + (fr.width - td.width) / 2,
fr.y + (fr.height - td.height) / 2);
}
- findDialog.pack();
findDialog.show();
}
}
@@ -1261,14 +1260,14 @@
public ThumbnailDialogAction() {}
public void actionPerformed(ActionEvent e) {
if (thumbnailDialog == null) {
- thumbnailDialog = new ThumbnailDialog(JSVGViewerFrame.this, svgCanvas);
+ thumbnailDialog
+ = new ThumbnailDialog(JSVGViewerFrame.this, svgCanvas);
thumbnailDialog.pack();
Rectangle fr = getBounds();
Dimension td = thumbnailDialog.getSize();
thumbnailDialog.setLocation(fr.x + (fr.width - td.width) / 2,
fr.y + (fr.height - td.height) / 2);
}
- thumbnailDialog.pack();
thumbnailDialog.show();
}
}
1.2 +93 -24 xml-batik/sources/org/apache/batik/apps/svgbrowser/ThumbnailDialog.java
Index: ThumbnailDialog.java
===================================================================
RCS file: /home/cvs/xml-batik/sources/org/apache/batik/apps/svgbrowser/ThumbnailDialog.java,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -r1.1 -r1.2
--- ThumbnailDialog.java 2001/05/15 15:57:37 1.1
+++ ThumbnailDialog.java 2001/05/16 13:23:15 1.2
@@ -11,25 +11,37 @@
import java.awt.BorderLayout;
import java.awt.Dimension;
import java.awt.Frame;
+import java.awt.geom.AffineTransform;
+import java.awt.event.ComponentAdapter;
+import java.awt.event.ComponentEvent;
+import java.awt.event.WindowAdapter;
+import java.awt.event.WindowEvent;
+
import java.util.Locale;
import java.util.ResourceBundle;
import javax.swing.JDialog;
+import org.apache.batik.bridge.ViewBox;
import org.apache.batik.swing.JSVGCanvas;
+import org.apache.batik.swing.gvt.GVTTreeRendererAdapter;
import org.apache.batik.swing.gvt.GVTTreeRendererEvent;
-import org.apache.batik.swing.gvt.GVTTreeRendererListener;
+import org.apache.batik.swing.svg.SVGDocumentLoaderAdapter;
+import org.apache.batik.swing.svg.SVGDocumentLoaderEvent;
import org.apache.batik.util.gui.resource.ResourceManager;
+import org.w3c.dom.svg.SVGDocument;
+import org.w3c.dom.svg.SVGSVGElement;
+
/**
* This class represents a Dialog that displays a Thumbnail of the current SVG
* document.
*
* @author <a href="mailto:tkormann@apache.org">Thierry Kormann</a>
- * @version $Id: ThumbnailDialog.java,v 1.1 2001/05/15 15:57:37 tkormann Exp $
+ * @version $Id: ThumbnailDialog.java,v 1.2 2001/05/16 13:23:15 tkormann Exp $
*/
-public class ThumbnailDialog extends JDialog implements GVTTreeRendererListener {
+public class ThumbnailDialog extends JDialog {
/**
* The resource file name
@@ -58,6 +70,9 @@
/** The canvas that displays the thumbnail. */
protected JSVGCanvas svgThumbnailCanvas;
+ /** A flag bit that indicates a document has been loaded. */
+ protected boolean documentChanged;
+
/**
* Constructs a new <tt>ThumbnailDialog</tt> for the specified canvas.
*
@@ -65,51 +80,105 @@
*/
public ThumbnailDialog(Frame owner, JSVGCanvas svgCanvas) {
super(owner, resources.getString("Dialog.title"));
+
+ addWindowListener(new ThumbnailListener());
+
+ // register listeners to maintain consistency
this.svgCanvas = svgCanvas;
- svgThumbnailCanvas = new JSVGCanvas();
+ svgCanvas.addGVTTreeRendererListener(new ThumbnailGVTListener());
+ svgCanvas.addSVGDocumentLoaderListener(new ThumbnailDocumentListener());
+
+ // create the thumbnail
+ svgThumbnailCanvas = new JSVGCanvas(null, false, false);
svgThumbnailCanvas.setPreferredSize(new Dimension(150, 150));
+
+ svgThumbnailCanvas.setEnableZoomInteractor(false);
+ svgThumbnailCanvas.setEnableImageZoomInteractor(false);
+ svgThumbnailCanvas.setEnablePanInteractor(false);
+ svgThumbnailCanvas.setEnableRotateInteractor(false);
+
+ svgThumbnailCanvas.addComponentListener(new ThumbnailComponentListener());
+
getContentPane().add(svgThumbnailCanvas, BorderLayout.CENTER);
- svgCanvas.addGVTTreeRendererListener(this);
}
/**
- * Called when a rendering is in its preparing phase.
+ * Updates the thumbnail component.
*/
- public void gvtRenderingPrepare(GVTTreeRendererEvent e) {
- System.out.println("gvtRenderingPrepare");
+ protected void updateThumbnailGraphicsNode() {
svgThumbnailCanvas.setGraphicsNode(svgCanvas.getGraphicsNode());
+ updateThumbnailRenderingTransform();
}
/**
- * Called when a rendering started.
+ * Updates the thumbnail component rendering transform.
*/
- public void gvtRenderingStarted(GVTTreeRendererEvent e) {
- System.out.println("gvtRenderingStarted");
- svgThumbnailCanvas.setGraphicsNode(svgCanvas.getGraphicsNode());
+ protected void updateThumbnailRenderingTransform() {
+ SVGDocument svgDocument = svgCanvas.getSVGDocument();
+ if (svgDocument != null) {
+ SVGSVGElement elt = svgDocument.getRootElement();
+ Dimension dim = svgThumbnailCanvas.getSize();
+
+ AffineTransform Tx
+ = ViewBox.getViewTransform(null, elt, dim.width, dim.height);
+ svgThumbnailCanvas.setRenderingTransform(Tx);
+ }
}
/**
- * Called when a rendering was completed.
+ * Used to determine whether or not the GVT tree of the thumbnail has to be
+ * updated.
*/
- public void gvtRenderingCompleted(GVTTreeRendererEvent e) {
- System.out.println("gvtRenderingCompleted");
- svgThumbnailCanvas.setGraphicsNode(svgCanvas.getGraphicsNode());
+ protected class ThumbnailDocumentListener extends SVGDocumentLoaderAdapter {
+
+ public void documentLoadingStarted(SVGDocumentLoaderEvent e) {
+ documentChanged = true;
+ }
}
/**
- * Called when a rendering was cancelled.
+ * Used to update the overlay and/or the GVT tree of the thumbnail.
*/
- public void gvtRenderingCancelled(GVTTreeRendererEvent e) {
- System.out.println("gvtRenderingCancelled");
- svgThumbnailCanvas.setGraphicsNode(svgCanvas.getGraphicsNode());
+ protected class ThumbnailGVTListener extends GVTTreeRendererAdapter {
+
+ public void gvtRenderingCompleted(GVTTreeRendererEvent e) {
+ if (documentChanged) {
+ updateThumbnailGraphicsNode();
+ documentChanged = false;
+ }
+ }
+
+ public void gvtRenderingCancelled(GVTTreeRendererEvent e) {
+ svgThumbnailCanvas.setGraphicsNode(null);
+ svgThumbnailCanvas.setRenderingTransform(new AffineTransform());
+ }
+
+ public void gvtRenderingFailed(GVTTreeRendererEvent e) {
+ svgThumbnailCanvas.setGraphicsNode(null);
+ svgThumbnailCanvas.setRenderingTransform(new AffineTransform());
+ }
}
/**
- * Called when a rendering failed.
+ * Used the first time the thumbnail dialog is shown to make visible the
+ * current GVT tree being displayed by the original SVG component.
*/
- public void gvtRenderingFailed(GVTTreeRendererEvent e) {
- System.out.println("gvtRenderingFailed");
- svgThumbnailCanvas.setGraphicsNode(svgCanvas.getGraphicsNode());
+ protected class ThumbnailListener extends WindowAdapter {
+
+ public void windowOpened(WindowEvent evt) {
+ updateThumbnailGraphicsNode();
+ }
+ }
+
+ /**
+ * Used to allow the SVG document being displayed by the thumbnail to be
+ * resized properly.
+ */
+ protected class ThumbnailComponentListener extends ComponentAdapter {
+
+ public void componentResized(ComponentEvent e) {
+ updateThumbnailRenderingTransform();
+ }
}
}
1.2 +3 -3 xml-batik/sources/org/apache/batik/swing/svg/SVGDocumentLoaderAdapter.java
Index: SVGDocumentLoaderAdapter.java
===================================================================
RCS file: /home/cvs/xml-batik/sources/org/apache/batik/swing/svg/SVGDocumentLoaderAdapter.java,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -r1.1 -r1.2
--- SVGDocumentLoaderAdapter.java 2001/04/13 17:09:09 1.1
+++ SVGDocumentLoaderAdapter.java 2001/05/16 13:23:21 1.2
@@ -9,11 +9,11 @@
package org.apache.batik.swing.svg;
/**
- * An adapter class that represents a listener to the SVGDocumentLoaderEvent
- * events.
+ * An adapter class that represents a listener to the
+ * <tt>SVGDocumentLoaderEvent</tt> events.
*
* @author <a href="mailto:tkormann@apache.org">Thierry Kormann</a>
- * @version $Id: SVGDocumentLoaderAdapter.java,v 1.1 2001/04/13 17:09:09 tkormann Exp $
+ * @version $Id: SVGDocumentLoaderAdapter.java,v 1.2 2001/05/16 13:23:21 tkormann Exp $
*/
public abstract class SVGDocumentLoaderAdapter
implements SVGDocumentLoaderListener {
---------------------------------------------------------------------
To unsubscribe, e-mail: batik-dev-unsubscribe@xml.apache.org
For additional commands, e-mail: batik-dev-help@xml.apache.org