deweese     2003/07/16 10:09:24

  Modified:    resources/org/apache/batik/apps/svgbrowser/resources
                        GUI.properties
               sources/org/apache/batik/apps/svgbrowser
                        JSVGViewerFrame.java
               sources/org/apache/batik/util/gui/resource MenuFactory.java
  Log:
  Enabled the Rhino JavaScript Debugger in Squiggle (when it is available
  on the class path).
  
  Revision  Changes    Path
  1.58      +7 -2      
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.57
  retrieving revision 1.58
  diff -u -r1.57 -r1.58
  --- GUI.properties    24 Mar 2003 16:43:50 -0000      1.57
  +++ GUI.properties    16 Jul 2003 17:09:23 -0000      1.58
  @@ -288,7 +288,7 @@
   
   
   # Tools menu ################
  -Tools = Monitor DOMViewer
  +Tools = Monitor DOMViewer ScriptDebugger
   Tools.type = MENU
   Tools.text = Tools
   Tools.mnemonic = T
  @@ -306,6 +306,11 @@
   DOMViewer.mnemonic    = D
   DOMViewer.action      = DOMViewerAction
   DOMViewer.accelerator = Ctrl+D
  +
  +ScriptDebugger.type        = ITEM
  +ScriptDebugger.text        = Script Debugger...
  +ScriptDebugger.mnemonic    = S
  +ScriptDebugger.action      = ToggleDebuggerAction
   
   
   # Help menu ##################
  
  
  
  1.97      +112 -2    
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.96
  retrieving revision 1.97
  diff -u -r1.96 -r1.97
  --- JSVGViewerFrame.java      16 Jul 2003 00:46:49 -0000      1.96
  +++ JSVGViewerFrame.java      16 Jul 2003 17:09:24 -0000      1.97
  @@ -12,6 +12,7 @@
   import java.awt.Color;
   import java.awt.Cursor;
   import java.awt.Dimension;
  +import java.awt.Event;
   import java.awt.Font;
   import java.awt.Graphics2D;
   import java.awt.Rectangle;
  @@ -30,6 +31,8 @@
   import java.awt.geom.Point2D;
   import java.awt.image.BufferedImage;
   import java.awt.print.PrinterException;
  +import java.beans.PropertyChangeListener;
  +import java.beans.PropertyChangeEvent;
   import java.io.BufferedOutputStream;
   import java.io.File;
   import java.io.FileOutputStream;
  @@ -37,6 +40,8 @@
   import java.io.InputStream;
   import java.io.OutputStream;
   import java.io.Reader;
  +import java.lang.reflect.Constructor;
  +import java.lang.reflect.Method;
   import java.net.MalformedURLException;
   import java.util.HashMap;
   import java.util.Iterator;
  @@ -57,6 +62,7 @@
   import javax.swing.JFileChooser;
   import javax.swing.JFrame;
   import javax.swing.JMenuBar;
  +import javax.swing.JMenu;
   import javax.swing.JOptionPane;
   import javax.swing.JPanel;
   import javax.swing.JRadioButtonMenuItem;
  @@ -124,6 +130,9 @@
   import org.w3c.dom.css.ViewCSS;
   import org.w3c.dom.svg.SVGDocument;
   
  +import org.mozilla.javascript.Context;
  +import org.mozilla.javascript.ContextListener;
  +
   /**
    * This class represents a SVG viewer swing frame.
    *
  @@ -165,6 +174,83 @@
           }
       }
   
  +    static JFrame debuggerFrame = null;
  +    static Class  debuggerClass = null;
  +    static Method clearAllBreakpoints = null;
  +    static Method scriptGo = null;
  +    static Method setExitAction = null;
  +    static {
  +        try {
  +            debuggerClass = JSVGViewerFrame.class.getClassLoader().loadClass
  +                ("org.mozilla.javascript.tools.debugger.Main");
  +            clearAllBreakpoints = debuggerClass.getMethod
  +                ("clearAllBreakpoints", null);
  +            scriptGo = debuggerClass.getMethod
  +                ("go", null);
  +            setExitAction = debuggerClass.getMethod
  +                ("setExitAction", new Class[] {Runnable.class});
  +        } catch (Throwable t) {
  +            debuggerClass = null;
  +            clearAllBreakpoints = null;
  +            scriptGo = null;
  +            setExitAction = null;
  +        }
  +    }
  +
  +    public static void showDebugger() {
  +        if (debuggerClass == null) return;
  +        if (debuggerFrame == null) {
  +            try {
  +                Constructor c = debuggerClass.getConstructor
  +                    (new Class [] { String.class });
  +                debuggerFrame = (JFrame)c.newInstance
  +                    (new Object[] { "Rhino JavaScript Debugger" });
  +                // Customize the menubar a bit, disable menu
  +                // items that can't be used and change 'Exit' to 'Close'.
  +                JMenuBar menuBar = debuggerFrame.getJMenuBar();
  +                JMenu    menu    = menuBar.getMenu(0);
  +                menu.getItem(0).setEnabled(false); // Open...
  +                menu.getItem(1).setEnabled(false); // Run...
  +                menu.getItem(3).setText
  +                    (Resources.getString("Close.text")); // Exit -> "Close"
  +                menu.getItem(3).setAccelerator
  +                    (KeyStroke.getKeyStroke(KeyEvent.VK_W, Event.CTRL_MASK));
  +
  +                debuggerFrame.setSize(600, 460);
  +                debuggerFrame.pack();
  +                WindowAdapter wa = new WindowAdapter() {
  +                        public void windowClosing(WindowEvent e) {
  +                            hideDebugger();
  +                        }};
  +                setExitAction.invoke(debuggerFrame, 
  +                                     new Object [] { new Runnable() {
  +                                             public void run() {
  +                                                 hideDebugger();
  +                                             }}});
  +                debuggerFrame.addWindowListener(wa);
  +            } catch (Throwable t) {
  +                t.printStackTrace();
  +                return;
  +            }
  +        }
  +        if (debuggerFrame != null) {
  +            debuggerFrame.setVisible(true);
  +            Context.addContextListener((ContextListener)debuggerFrame);
  +        }
  +    }
  +
  +    public static void hideDebugger() {
  +        if (debuggerFrame == null)
  +            return;
  +        Context.removeContextListener((ContextListener)debuggerFrame);
  +        debuggerFrame.setVisible(false);
  +        try {
  +            clearAllBreakpoints.invoke(debuggerFrame, null);
  +            scriptGo.invoke(debuggerFrame, null);
  +        } catch (Throwable t) {
  +        }
  +    }
  +
       /**
        * The gui resources file name
        */
  @@ -203,6 +289,7 @@
       public final static String FIND_DIALOG_ACTION = "FindDialogAction";
       public final static String THUMBNAIL_DIALOG_ACTION = "ThumbnailDialogAction";
       public final static String FLUSH_ACTION = "FlushAction";
  +    public final static String TOGGLE_DEBUGGER_ACTION = "ToggleDebuggerAction";
   
       /**
        * The cursor indicating that an operation is pending.
  @@ -514,6 +601,7 @@
           listeners.put(FIND_DIALOG_ACTION, new FindDialogAction());
           listeners.put(THUMBNAIL_DIALOG_ACTION, new ThumbnailDialogAction());
           listeners.put(FLUSH_ACTION, new FlushAction());
  +        listeners.put(TOGGLE_DEBUGGER_ACTION, new ToggleDebuggerAction());
   
           JPanel p = null;
           try {
  @@ -1035,7 +1123,7 @@
       }
   
       /**
  -     * To go forward to the previous document
  +     * To go forward to the next document
        */
       public class ForwardAction extends    AbstractAction
                                  implements JComponentModifier {
  @@ -1363,6 +1451,28 @@
               svgCanvas.flush();
               // Force redraw...
               svgCanvas.setRenderingTransform(svgCanvas.getRenderingTransform());
  +        }
  +    }
  +
  +    /**
  +     * To toggle visiblity of JavaScript Debugger.
  +     */
  +    public class ToggleDebuggerAction extends AbstractAction {
  +        public ToggleDebuggerAction() {
  +            super("Toggle Debugger Action");
  +            if (debuggerClass == null)
  +                setEnabled(false);
  +        }
  +
  +        public void actionPerformed(ActionEvent e) {
  +            if (debuggerClass == null) {
  +                setEnabled(false);
  +                return;
  +            }
  +            if ((debuggerFrame == null) || !debuggerFrame.isShowing())
  +                showDebugger();
  +            else
  +                hideDebugger();
           }
       }
   
  
  
  
  1.5       +16 -15    
xml-batik/sources/org/apache/batik/util/gui/resource/MenuFactory.java
  
  Index: MenuFactory.java
  ===================================================================
  RCS file: 
/home/cvs/xml-batik/sources/org/apache/batik/util/gui/resource/MenuFactory.java,v
  retrieving revision 1.4
  retrieving revision 1.5
  diff -u -r1.4 -r1.5
  --- MenuFactory.java  11 Apr 2003 13:59:33 -0000      1.4
  +++ MenuFactory.java  16 Jul 2003 17:09:24 -0000      1.5
  @@ -290,6 +290,21 @@
       protected void initializeJMenuItem(JMenuItem item, String name)
        throws ResourceFormatException,
               MissingListenerException {
  +        // Action
  +     try {
  +         Action a = actions.getAction(getString(name+ACTION_SUFFIX));
  +         if (a == null) {
  +             throw new MissingListenerException("", "Action",
  +                                                   name+ACTION_SUFFIX);
  +         }
  +         item.setAction(a);
  +            item.setText(getString(name+TEXT_SUFFIX));
  +         if (a instanceof JComponentModifier) {
  +             ((JComponentModifier)a).addJComponent(item);
  +         }
  +     } catch (MissingResourceException e) {
  +     }
  +
        // Icon
        try {
            String s = getString(name+ICON_SUFFIX);
  @@ -326,20 +341,6 @@
                            bundle.getClass().getName(),
                            name+ACCELERATOR_SUFFIX);
                }
  -         }
  -     } catch (MissingResourceException e) {
  -     }
  -
  -        // Action
  -     try {
  -         Action a = actions.getAction(getString(name+ACTION_SUFFIX));
  -         if (a == null) {
  -             throw new MissingListenerException("", "Action",
  -                                                   name+ACTION_SUFFIX);
  -         }
  -         item.addActionListener(a);
  -         if (a instanceof JComponentModifier) {
  -             ((JComponentModifier)a).addJComponent(item);
            }
        } catch (MissingResourceException e) {
        }
  
  
  

---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to