Thanks for the suggestion. The problem with this approach is the swing
components will not be scalable. 
I have created a class that extends AbstractGraphicsNode to display the
swing component.

public class SwingGraphicsNode
extends AbstractGraphicsNode
implements GraphicsNodeMouseListener,
           GraphicsNodeKeyListener,
           GraphicsNodeChangeListener {

JButton fButton = null;

public SwingGraphicsNode() {
        //Test code
        fButton = new JButton("Button");
        setPointerEventType(ALL);
    }

    public void paint(Graphics2D g2d) {
        primitivePaint(g2d);
    }

    public void primitivePaint(Graphics2D g2d) {
        Rectangle2D bounds = getBounds();
        g = g2d.create();
        g.translate((int)bounds.getX(), (int)bounds.getY());
        fButton.getModel().setPressed(true);
        fButton.paint(g);
   }

   //The mouse events are registered in Bridge Extension class
   //Think that mousePressed is called whenever mouse is pressed on the
respective button       
   public void mousePressed(GraphicsNodeMouseEvent evt) {
        // TODO Auto-generated method stub
        System.out.println("[mouse pressed]");
        //fButton.getModel().setPressed(true);
        fButton.setForeground(Color.RED);
        fButton.setBackground(Color.GREEN);
        Rectangle2D bounds = getBounds();
        fButton.repaint();
        setVisible(false);
        setVisible(true);
  }
}

The button's foreground and background color are changed only when mouse
button is released. I expected that the color of the button will change
immediately when the mouse button is pressed.

Any issues in the program? Any workarounds? Glad to know.



-----Original Message-----
From: Tonny Kohar [mailto:[EMAIL PROTECTED]
Sent: Wednesday, January 19, 2005 9:16 PM
To: 'batik-dev@xml.apache.org'
Subject: Re: Mix SVG and Swing components


Hi,

>   I am required to add Swing components to the SVG canvas. I want to use
the
> batik extensions.
>  The trouble I am facing is in the actual rendering class:

> The output I am getting in the JSVGCanvas is a static version of
JTextField.
> I cannot enter characters or do anything with it. 
> Any ideas? I believe if I can access JSVGCanvas or the related class where
> the components are being rendered, then I can directly add my swing
> component to it. But couldn't get how to get it. Batik developers pls.
help.

I do not know how to solve your problem, but as far as I know the batik
GVT part is render the SVG stuff into Image that will be painted into
the JSVGCanvas. The package org.apache.batik.gvt.renderer is where the
rendering stuff.

How about extending JSVGCanvas or its parent paintComponent method and
adding your textField there. Or maybe wrap JSVGCanvas and your textfield
into custom component and using Java JComponent layer or z-order
capability.

Regards
Tonny Kohar
-- 
Sketsa 
SVG Graphics Editor
http://www.kiyut.com



---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]
************************************************************************** 
This email (including any attachments) is intended for the sole use of the
intended recipient/s and may contain material that is CONFIDENTIAL AND
PRIVATE COMPANY INFORMATION. Any review or reliance by others or copying or
distribution or forwarding of any or all of the contents in this message is
STRICTLY PROHIBITED. If you are not the intended recipient, please contact
the sender by email and delete all copies; your cooperation in this regard
is appreciated.
**************************************************************************

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

Reply via email to