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 hi...@apache.org on 2001/05/02 15:12:33 UTC

cvs commit: xml-batik/sources/org/apache/batik/swing/gvt AbstractResetTransformInteractor.java JGVTComponent.java

hillion     01/05/02 06:12:33

  Modified:    sources/org/apache/batik/apps/svgbrowser
                        JSVGViewerFrame.java
               sources/org/apache/batik/swing JSVGCanvas.java
               sources/org/apache/batik/swing/gvt JGVTComponent.java
  Added:       sources/org/apache/batik/swing/gvt
                        AbstractResetTransformInteractor.java
  Log:
  - Added an interactor and a method to reset the rendering transform on
    a JGVTComponent,
  - interactors, events and text selection are now enabled by default.
  
  Revision  Changes    Path
  1.28      +3 -18     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.27
  retrieving revision 1.28
  diff -u -r1.27 -r1.28
  --- JSVGViewerFrame.java	2001/05/02 06:07:00	1.27
  +++ JSVGViewerFrame.java	2001/05/02 13:12:25	1.28
  @@ -129,7 +129,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.27 2001/05/02 06:07:00 vhardy Exp $
  + * @version $Id: JSVGViewerFrame.java,v 1.28 2001/05/02 13:12:25 hillion Exp $
    */
   public class JSVGViewerFrame
       extends    JFrame
  @@ -311,11 +311,6 @@
       protected String userStyleSheetURI;
   
       /**
  -     * The initial transform applied to the document.
  -     */
  -    protected AffineTransform initialTransform;
  -
  -    /**
        * The initial frame title.
        */
       protected String title;
  @@ -549,11 +544,6 @@
               }
           });
   
  -        // Interactors initialization ///////////////////////////////////////
  -        svgCanvas.setEnableZoomInteractor(true);
  -        svgCanvas.setEnableImageZoomInteractor(true);
  -        svgCanvas.setEnablePanInteractor(true);
  -        svgCanvas.setEnableRotateInteractor(true);
       }
   
       /**
  @@ -991,9 +981,7 @@
           public ResetTransformAction() {}
           public void actionPerformed(ActionEvent e) {
               svgCanvas.setFragmentIdentifier(null);
  -            if (initialTransform != null) {
  -                svgCanvas.setRenderingTransform(initialTransform);
  -            }
  +            svgCanvas.resetRenderingTransform();
           }
       }
   
  @@ -1337,7 +1325,6 @@
                   domViewer = null;
               }
           }
  -        initialTransform = null;
           stopAction.update(false);
           svgCanvas.setCursor(DEFAULT_CURSOR);
           String s = ((SVGOMDocument)svgDocument).getURLObject().toString();
  @@ -1495,9 +1482,7 @@
           }
           statusBar.setMainMessage("");
           statusBar.setMessage(resources.getString("Message.done"));
  -        if (initialTransform == null) {
  -            initialTransform = svgCanvas.getRenderingTransform();
  -        }
  +
           stopAction.update(false);
           svgCanvas.setCursor(DEFAULT_CURSOR);
   
  
  
  
  1.21      +100 -42   xml-batik/sources/org/apache/batik/swing/JSVGCanvas.java
  
  Index: JSVGCanvas.java
  ===================================================================
  RCS file: /home/cvs/xml-batik/sources/org/apache/batik/swing/JSVGCanvas.java,v
  retrieving revision 1.20
  retrieving revision 1.21
  diff -u -r1.20 -r1.21
  --- JSVGCanvas.java	2001/03/26 16:13:29	1.20
  +++ JSVGCanvas.java	2001/05/02 13:12:29	1.21
  @@ -10,15 +10,19 @@
   
   import java.awt.Dimension;
   import java.awt.event.InputEvent;
  +import java.awt.event.KeyEvent;
   import java.awt.event.MouseEvent;
   
   import java.beans.PropertyChangeEvent;
   import java.beans.PropertyChangeListener;
   import java.beans.PropertyChangeSupport;
   
  +import java.util.List;
  +
   import org.apache.batik.swing.gvt.Interactor;
   import org.apache.batik.swing.gvt.AbstractImageZoomInteractor;
   import org.apache.batik.swing.gvt.AbstractPanInteractor;
  +import org.apache.batik.swing.gvt.AbstractResetTransformInteractor;
   import org.apache.batik.swing.gvt.AbstractRotateInteractor;
   import org.apache.batik.swing.gvt.AbstractZoomInteractor;
   import org.apache.batik.swing.svg.JSVGComponent;
  @@ -29,13 +33,13 @@
    *
    * @author <a href="mailto:tkormann@apache.org">Thierry Kormann</a>
    * @author <a href="mailto:stephane@hillion.org">Stephane Hillion</a>
  - * @version $Id: JSVGCanvas.java,v 1.20 2001/03/26 16:13:29 tkormann Exp $
  + * @version $Id: JSVGCanvas.java,v 1.21 2001/05/02 13:12:29 hillion Exp $
    */
   public class JSVGCanvas extends JSVGComponent {
   
       /**
        * An interactor to perform a zoom.
  -     * <p>Bind: BUTTON1 + CTRL Key</p>
  +     * <p>Binding: BUTTON1 + CTRL Key</p>
        */
       protected Interactor zoomInteractor = new AbstractZoomInteractor() {
           public boolean startInteraction(InputEvent ie) {
  @@ -49,7 +53,7 @@
   
       /**
        * An interactor to perform a realtime zoom.
  -     * <p>Bind: BUTTON3 + SHIFT Key</p>
  +     * <p>Binding: BUTTON3 + SHIFT Key</p>
        */
       protected Interactor imageZoomInteractor
           = new AbstractImageZoomInteractor() {
  @@ -64,7 +68,7 @@
   
       /**
        * An interactor to perform a translation.
  -     * <p>Bind: BUTTON1 + SHIFT Key</p>
  +     * <p>Binding: BUTTON1 + SHIFT Key</p>
        */
       protected Interactor panInteractor = new AbstractPanInteractor() {
           public boolean startInteraction(InputEvent ie) {
  @@ -78,7 +82,7 @@
   
       /**
        * An interactor to perform a rotation.
  -     * <p>Bind: BUTTON3 + CTRL Key</p>
  +     * <p>Binding: BUTTON3 + CTRL Key</p>
        */
       protected Interactor rotateInteractor = new AbstractRotateInteractor() {
           public boolean startInteraction(InputEvent ie) {
  @@ -91,28 +95,52 @@
       };
   
       /**
  +     * An interactor to reset the rendering transform.
  +     * <p>Binding: CTRL+T</p>
  +     */
  +    protected Interactor resetTransformInteractor =
  +        new AbstractResetTransformInteractor() {
  +        public boolean startInteraction(InputEvent ie) {
  +            int mods = ie.getModifiers();
  +            if (ie.getID() != KeyEvent.KEY_PRESSED) {
  +                return false;
  +            }
  +            int key = ((KeyEvent)ie).getKeyCode();
  +            return
  +                key == KeyEvent.VK_T &&
  +                (mods & ie.CTRL_MASK) != 0;
  +        }
  +    };
  +
  +    /**
        * This flag bit indicates whether or not the zoom interactor is
  -     * enable. True means the zoom interactor is functional.
  +     * enabled. True means the zoom interactor is functional.
        */
  -    private boolean isZoomInteractorEnable = false;
  +    private boolean isZoomInteractorEnabled = true;
   
       /**
        * This flag bit indicates whether or not the image zoom interactor is
  -     * enable. True means the image zoom interactor is functional.
  +     * enabled. True means the image zoom interactor is functional.
        */
  -    private boolean isImageZoomInteractorEnable = false;
  +    private boolean isImageZoomInteractorEnabled = true;
   
       /**
        * This flag bit indicates whether or not the pan interactor is
  -     * enable. True means the pan interactor is functional.
  +     * enabled. True means the pan interactor is functional.
        */
  -    private boolean isPanInteractorEnable = false;
  +    private boolean isPanInteractorEnabled = true;
   
       /**
        * This flag bit indicates whether or not the rotate interactor is
  -     * enable. True means the rotate interactor is functional.
  +     * enabled. True means the rotate interactor is functional.
  +     */
  +    private boolean isRotateInteractorEnabled = true;
  +
  +    /**
  +     * This flag bit indicates whether or not the reset transform interactor is
  +     * enabled. True means the reset transform interactor is functional.
        */
  -    private boolean isRotateInteractorEnable = false;
  +    private boolean isResetTransformInteractorEnabled = true;
   
       /**
        * The <tt>PropertyChangeSupport</tt> used to fire
  @@ -129,7 +157,7 @@
        * Creates a new JSVGCanvas.
        */
       public JSVGCanvas() {
  -        this(null, false, false);
  +        this(null, true, true);
       }
   
       /**
  @@ -144,6 +172,13 @@
           super(ua, eventsEnabled, selectableText);
           setPreferredSize(new Dimension(200, 200));
           setMinimumSize(new Dimension(100, 100));
  +
  +        List intl = getInteractors();
  +        intl.add(zoomInteractor);
  +        intl.add(imageZoomInteractor);
  +        intl.add(panInteractor);
  +        intl.add(rotateInteractor);
  +        intl.add(resetTransformInteractor);
       }
   
       /**
  @@ -189,18 +224,18 @@
       }
   
       /**
  -     * Determines whether zoom interactor is enabled or not.
  +     * Determines whether the zoom interactor is enabled or not.
        */
       public void setEnableZoomInteractor(boolean b) {
  -        if (isZoomInteractorEnable != b) {
  -            boolean oldValue = isZoomInteractorEnable;
  -            isZoomInteractorEnable = b;
  -            if (isZoomInteractorEnable) {
  +        if (isZoomInteractorEnabled != b) {
  +            boolean oldValue = isZoomInteractorEnabled;
  +            isZoomInteractorEnabled = b;
  +            if (isZoomInteractorEnabled) {
                   getInteractors().add(zoomInteractor);
               } else {
                   getInteractors().remove(zoomInteractor);
               }
  -            pcs.firePropertyChange("setEnableZoomInteractor", oldValue, b);
  +            pcs.firePropertyChange("enableZoomInteractor", oldValue, b);
           }
       }
   
  @@ -208,22 +243,22 @@
        * Returns true if the zoom interactor is enabled, false otherwise.
        */
       public boolean getEnableZoomInteractor() {
  -        return isZoomInteractorEnable;
  +        return isZoomInteractorEnabled;
       }
   
       /**
  -     * Determines whether image zoom interactor is enabled or not.
  +     * Determines whether the image zoom interactor is enabled or not.
        */
       public void setEnableImageZoomInteractor(boolean b) {
  -        if (isImageZoomInteractorEnable != b) {
  -            boolean oldValue = isImageZoomInteractorEnable;
  -            isImageZoomInteractorEnable = b;
  -            if (isImageZoomInteractorEnable) {
  +        if (isImageZoomInteractorEnabled != b) {
  +            boolean oldValue = isImageZoomInteractorEnabled;
  +            isImageZoomInteractorEnabled = b;
  +            if (isImageZoomInteractorEnabled) {
                   getInteractors().add(imageZoomInteractor);
               } else {
                   getInteractors().remove(imageZoomInteractor);
               }
  -            pcs.firePropertyChange("setEnableImageZoomInteractor", oldValue, b);
  +            pcs.firePropertyChange("enableImageZoomInteractor", oldValue, b);
           }
       }
   
  @@ -231,22 +266,22 @@
        * Returns true if the image zoom interactor is enabled, false otherwise.
        */
       public boolean getEnableImageZoomInteractor() {
  -        return isImageZoomInteractorEnable;
  +        return isImageZoomInteractorEnabled;
       }
   
       /**
  -     * Determines whether pan interactor is enabled or not.
  +     * Determines whether the pan interactor is enabled or not.
        */
       public void setEnablePanInteractor(boolean b) {
  -        if (isPanInteractorEnable != b) {
  -            boolean oldValue = isPanInteractorEnable;
  -            isPanInteractorEnable = b;
  -            if (isPanInteractorEnable) {
  +        if (isPanInteractorEnabled != b) {
  +            boolean oldValue = isPanInteractorEnabled;
  +            isPanInteractorEnabled = b;
  +            if (isPanInteractorEnabled) {
                   getInteractors().add(panInteractor);
               } else {
                   getInteractors().remove(panInteractor);
               }
  -            pcs.firePropertyChange("setEnablePanInteractor", oldValue, b);
  +            pcs.firePropertyChange("enablePanInteractor", oldValue, b);
           }
       }
   
  @@ -254,22 +289,22 @@
        * Returns true if the pan interactor is enabled, false otherwise.
        */
       public boolean getEnablePanInteractor() {
  -        return isPanInteractorEnable;
  +        return isPanInteractorEnabled;
       }
   
       /**
  -     * Determines whether rotate interactor is enabled or not.
  +     * Determines whether the rotate interactor is enabled or not.
        */
       public void setEnableRotateInteractor(boolean b) {
  -        if (isRotateInteractorEnable != b) {
  -            boolean oldValue = isRotateInteractorEnable;
  -            isRotateInteractorEnable = b;
  -            if (isRotateInteractorEnable) {
  +        if (isRotateInteractorEnabled != b) {
  +            boolean oldValue = isRotateInteractorEnabled;
  +            isRotateInteractorEnabled = b;
  +            if (isRotateInteractorEnabled) {
                   getInteractors().add(rotateInteractor);
               } else {
                   getInteractors().remove(rotateInteractor);
               }
  -            pcs.firePropertyChange("setEnableRotateInteractor", oldValue, b);
  +            pcs.firePropertyChange("enableRotateInteractor", oldValue, b);
           }
       }
   
  @@ -277,7 +312,30 @@
        * Returns true if the rotate interactor is enabled, false otherwise.
        */
       public boolean getEnableRotateInteractor() {
  -        return isRotateInteractorEnable;
  +        return isRotateInteractorEnabled;
  +    }
  +
  +    /**
  +     * Determines whether the reset transform interactor is enabled or not.
  +     */
  +    public void setEnableResetTransformInteractor(boolean b) {
  +        if (isResetTransformInteractorEnabled != b) {
  +            boolean oldValue = isResetTransformInteractorEnabled;
  +            isResetTransformInteractorEnabled = b;
  +            if (isResetTransformInteractorEnabled) {
  +                getInteractors().add(resetTransformInteractor);
  +            } else {
  +                getInteractors().remove(resetTransformInteractor);
  +            }
  +            pcs.firePropertyChange("enableResetTransformInteractor", oldValue, b);
  +        }
  +    }
  +
  +    /**
  +     * Returns true if the reset transform interactor is enabled, false otherwise.
  +     */
  +    public boolean getEnableResetTransformInteractor() {
  +        return isRotateInteractorEnabled;
       }
   
       /**
  
  
  
  1.11      +8 -1      xml-batik/sources/org/apache/batik/swing/gvt/JGVTComponent.java
  
  Index: JGVTComponent.java
  ===================================================================
  RCS file: /home/cvs/xml-batik/sources/org/apache/batik/swing/gvt/JGVTComponent.java,v
  retrieving revision 1.10
  retrieving revision 1.11
  diff -u -r1.10 -r1.11
  --- JGVTComponent.java	2001/04/23 12:19:36	1.10
  +++ JGVTComponent.java	2001/05/02 13:12:32	1.11
  @@ -52,7 +52,7 @@
    * This class represents a component which can display a GVT tree.
    *
    * @author <a href="mailto:stephane@hillion.org">Stephane Hillion</a>
  - * @version $Id: JGVTComponent.java,v 1.10 2001/04/23 12:19:36 tkormann Exp $
  + * @version $Id: JGVTComponent.java,v 1.11 2001/05/02 13:12:32 hillion Exp $
    */
   public class JGVTComponent extends JComponent {
   
  @@ -229,6 +229,13 @@
        */
       public BufferedImage getOffScreen() {
           return image;
  +    }
  +
  +    /**
  +     * Resets the rendering transform to its initial value.
  +     */
  +    public void resetRenderingTransform() {
  +        renderingTransform = initialTransform;
       }
   
       /**
  
  
  
  1.1                  xml-batik/sources/org/apache/batik/swing/gvt/AbstractResetTransformInteractor.java
  
  Index: AbstractResetTransformInteractor.java
  ===================================================================
  /*****************************************************************************
   * Copyright (C) The Apache Software Foundation. All rights reserved.        *
   * ------------------------------------------------------------------------- *
   * This software is published under the terms of the Apache Software License *
   * version 1.1, a copy of which has been included with this distribution in  *
   * the LICENSE file.                                                         *
   *****************************************************************************/
  
  package org.apache.batik.swing.gvt;
  
  import java.awt.event.InputEvent;
  import java.awt.event.KeyEvent;
  import java.awt.event.MouseEvent;
  
  /**
   * This class represents an interactor which reset the rendering transform
   * of the associated document.
   *
   * @author <a href="mailto:stephane@hillion.org">Stephane Hillion</a>
   * @version $Id: AbstractResetTransformInteractor.java,v 1.1 2001/05/02 13:12:32 hillion Exp $
   */
  public abstract class AbstractResetTransformInteractor implements Interactor {
      
      /**
       * Whether the interactor has finished.
       */
      protected boolean finished = true;
  
      /**
       * Tells whether the interaction has finished.
       */
      public boolean endInteraction() {
          return finished;
      }
  
      // KeyListener //////////////////////////////////////////////////////////
  
      /**
       * Invoked when a key has been typed.
       * This event occurs when a key press is followed by a key release.
       */
      public void keyTyped(KeyEvent e) {
          resetTransform(e);
      }
          
      /**
       * Invoked when a key has been pressed.
       */
      public void keyPressed(KeyEvent e) {
          resetTransform(e);
      }
  
      /**
       * Invoked when a key has been released.
       */
      public void keyReleased(KeyEvent e) {
          resetTransform(e);
      }
  
      // MouseListener ///////////////////////////////////////////////////////
          
      /**
       * Invoked when the mouse has been clicked on a component.
       */
      public void mouseClicked(MouseEvent e) {
          resetTransform(e);
      }
  
      /**
       * Invoked when a mouse button has been pressed on a component.
       */
      public void mousePressed(MouseEvent e) {
          resetTransform(e);
      }
  
      /**
       * Invoked when a mouse button has been released on a component.
       */
      public void mouseReleased(MouseEvent e) {
          resetTransform(e);
      }
  
      /**
       * Invoked when the mouse enters a component.
       */
      public void mouseEntered(MouseEvent e) {
          resetTransform(e);
      }
  
      /**
       * Invoked when the mouse exits a component.
       */
      public void mouseExited(MouseEvent e) {
          resetTransform(e);
      }
  
      // MouseMotionListener /////////////////////////////////////////////////
  
      /**
       * Invoked when a mouse button is pressed on a component and then 
       * dragged.  Mouse drag events will continue to be delivered to
       * the component where the first originated until the mouse button is
       * released (regardless of whether the mouse position is within the
       * bounds of the component).
       */
      public void mouseDragged(MouseEvent e) {
          resetTransform(e);
      }
  
      /**
       * Invoked when the mouse button has been moved on a component
       * (with no buttons no down).
       */
      public void mouseMoved(MouseEvent e) {
          resetTransform(e);
      }
  
      /**
       * Resets the associated component's transform.
       */
      protected void resetTransform(InputEvent e) {
          JGVTComponent c = (JGVTComponent)e.getSource();
          c.resetRenderingTransform();
          finished = true;
      }
  }
  
  
  

---------------------------------------------------------------------
To unsubscribe, e-mail: batik-dev-unsubscribe@xml.apache.org
For additional commands, e-mail: batik-dev-help@xml.apache.org