Hello,
 
I thing i get the problem. The application uses SymbolEventListener and 
MouseListener from the Swing Component. And the MouseListener listen to 
mouseMoved... everyTime when mouseMoved the Location from the Mouse is captured 
and the application tries to find a Node on this position.... If a node was 
found, the element for this node is located and then some action is made... Now 
i use only EventListener from Batik and the Link problem does not accure 
anymore...
 
The only problem is that do not know why....? I hate it if an error does not 
accure anymore, but i can't explain why ?!
 
I mean sometimes a NPE in public GraphicsNode nodeHitAt(Point2D p) in the class 
org.apache.batik.gvt.CompositeGraphicsNode occured. This method calls this 
method... and in this method a NPE occures....
 
    public Rectangle2D getSensitiveBounds() {
        if (sensitiveBounds != null)
            return sensitiveBounds;
 
        // System.out.println("sensitiveBoundsBounds are null");
        int i=0;
        while(sensitiveBounds == null && i < count){
            sensitiveBounds =
                children[i++].getTransformedSensitiveBounds(IDENTITY);
        }
 
        while (i<count) {
            Rectangle2D cgb = 
children[i++].getTransformedSensitiveBounds(IDENTITY);
            if (cgb != null) {
                if (sensitiveBounds == null)
                    // another thread has set the geometry bounds to null,
                    // need to recall this function
                    return getSensitiveBounds();  ==> line 407 !!
 
                sensitiveBounds.add(cgb); ==> NPE can't tell why ?! ==> line 
409 !!
            }
        }
 
        return sensitiveBounds;
    }
 
Perhaps someone could tell me why....
 
This happens... it seems that the sensitiveBounds is null for a while, as long 
as this happens the method is called again... and then its not null anymore 
but, not really ?! 
 
[AWT-EventQueue-0] WARN AGComponent - java.lang.NullPointerException

java.lang.NullPointerException

at 
org.apache.batik.gvt.CompositeGraphicsNode.getSensitiveBounds(CompositeGraphicsNode.java:409)

at 
org.apache.batik.gvt.CompositeGraphicsNode.getSensitiveBounds(CompositeGraphicsNode.java:407)

at 
org.apache.batik.gvt.CompositeGraphicsNode.getSensitiveBounds(CompositeGraphicsNode.java:407)

at 
org.apache.batik.gvt.CompositeGraphicsNode.getSensitiveBounds(CompositeGraphicsNode.java:407)

at 
org.apache.batik.gvt.CompositeGraphicsNode.getSensitiveBounds(CompositeGraphicsNode.java:407)

at 
org.apache.batik.gvt.CompositeGraphicsNode.getSensitiveBounds(CompositeGraphicsNode.java:407)

at 
org.apache.batik.gvt.CompositeGraphicsNode.getSensitiveBounds(CompositeGraphicsNode.java:407)

at 
org.apache.batik.gvt.CompositeGraphicsNode.getSensitiveBounds(CompositeGraphicsNode.java:407)

at 
org.apache.batik.gvt.CompositeGraphicsNode.getSensitiveBounds(CompositeGraphicsNode.java:407)

at 
org.apache.batik.gvt.CompositeGraphicsNode.getSensitiveBounds(CompositeGraphicsNode.java:407)

at 
org.apache.batik.gvt.CompositeGraphicsNode.getTransformedSensitiveBounds(CompositeGraphicsNode.java:435)

at 
org.apache.batik.gvt.CompositeGraphicsNode.getSensitiveBounds(CompositeGraphicsNode.java:397)

at 
org.apache.batik.gvt.CompositeGraphicsNode.nodeHitAt(CompositeGraphicsNode.java:490)

at at.pke.ag.AGComponent.getHitNode(AGComponent.java:4687)

at at.pke.ag.AGComponent$SymbolInteractor.mouseMoved(AGComponent.java:5437)

at java.awt.AWTEventMulticaster.mouseMoved(AWTEventMulticaster.java:272)

at java.awt.AWTEventMulticaster.mouseMoved(AWTEventMulticaster.java:271)

at java.awt.AWTEventMulticaster.mouseMoved(AWTEventMulticaster.java:271)

at java.awt.AWTEventMulticaster.mouseMoved(AWTEventMulticaster.java:271)

at java.awt.AWTEventMulticaster.mouseMoved(AWTEventMulticaster.java:271)

at java.awt.Component.processMouseMotionEvent(Component.java:5562)

at javax.swing.JComponent.processMouseMotionEvent(JComponent.java:3153)

at java.awt.Component.processEvent(Component.java:5286)

at java.awt.Container.processEvent(Container.java:1966)

at java.awt.Component.dispatchEventImpl(Component.java:3984)

at java.awt.Container.dispatchEventImpl(Container.java:2024)

at java.awt.Component.dispatchEvent(Component.java:3819)

at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4212)

at java.awt.LightweightDispatcher.processMouseEvent(Container.java:3905)

at java.awt.LightweightDispatcher.dispatchEvent(Container.java:3822)

at java.awt.Container.dispatchEventImpl(Container.java:2010)

at java.awt.Window.dispatchEventImpl(Window.java:1791)

at java.awt.Component.dispatchEvent(Component.java:3819)

at java.awt.EventQueue.dispatchEvent(EventQueue.java:463)

at 
java.awt.EventDispatchThread.pumpOneEventForHierarchy(EventDispatchThread.java:242)

at 
java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:163)

at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:157)

at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:149)

at java.awt.EventDispatchThread.run(EventDispatchThread.java:110)

 
Mit freundlichen Grüßen Michael Kerschbaum

 

DI (FH) Michael Kerschbaum

PKE Electronics AG

Zentrale Wien / Entwicklung

Computerstraße 6

A - 1101 Wien

TEL: +43 (0) 50 150 - 1210

[EMAIL PROTECTED]

www.pke.at <http://www.pke.at/>  

 

Aktiengesellschaft mit dem Sitz in Wien

Firmenbuchnummer 103264i

HG Wien, DVR 0159701

Johann Helf - Vorsitzender des Vorstandes

Bruno Faustka - Mitglied des Vorstandes

Christian Prelz - Vorsitzender des Aufsichtsrates

 

________________________________

Von: Kerschbaum Michael [mailto:[EMAIL PROTECTED] 
Gesendet: Mittwoch, 06. August 2008 15:30
An: [email protected]
Betreff: AW: Xlink Problem


Hello,
 
I tried this but no real success...
 
Okay i will explain what i do...
 
At creation time of the application i call that ... where AGUserAgent 
implements SVGUserAgent...
 
svgUserAgent = new AGUserAgent(this);
 
then when the user wants to load an SVG...
 
1.)Load a SVG Document..by
2.)On the do documentLoadingCompleted event i create an Instance of a Object i 
call SymbolManager.. this object parses some information within the SVG 
Document like we call "custProps",....  and creates Symbol objects, every 
Symbol has an Element (org.w3c.dom).. for this symbols i add EventListener... 
like
 
...
 public void addSymbolListeners(SVGOMElement elt) {
  elt.addEventListener(SVGConstants.SVG_MOUSEOUT_EVENT_TYPE, symbolListener,
    false);
  elt.addEventListener(SVGConstants.SVG_MOUSEOVER_EVENT_TYPE, symbolListener,
    false);
 }
 
... 
 
at this code it tried useCapture , true and false.... no real dífference...
 
this is the only code where i add Event Listeners
 
We also have "Layers" , for that we use the "layerMember", and some elements 
are not visible... when they have a not currently displayed Layer...
 
for that i use the code
 
...
 for (int i = 0; i < layerMembers.size(); i++) {
   Element elt = (Element) layerMembers.get(i);
   if (elt != null) {
 
    if (visible) {
         elt.removeAttributeNS(null, "visibility");
         elt.setAttributeNS(null, "pointer-events", "all");
     }
    else {
     elt.setAttributeNS(null, "visibility", "hidden");
     elt.setAttributeNS(null, "pointer-events", "none");
    }
....
 
If the application is in that situation, that the Links are not regocnized and 
the Events Listerns do not call the handleEvent... mostly it helps that i 
change the visibity of one layer... after this code was executed everythings 
seems to be normal ... but not 100 % sure.. ?!
 
Mit freundlichen Grüßen Michael Kerschbaum

 

DI (FH) Michael Kerschbaum

PKE Electronics AG

Zentrale Wien / Entwicklung

Computerstraße 6

A - 1101 Wien

TEL: +43 (0) 50 150 - 1210

[EMAIL PROTECTED]

www.pke.at <http://www.pke.at/>  

 

Aktiengesellschaft mit dem Sitz in Wien

Firmenbuchnummer 103264i

HG Wien, DVR 0159701

Johann Helf - Vorsitzender des Vorstandes

Bruno Faustka - Mitglied des Vorstandes

Christian Prelz - Vorsitzender des Aufsichtsrates

 

________________________________

Von: [EMAIL PROTECTED] [mailto:[EMAIL PROTECTED] 
Gesendet: Mittwoch, 06. August 2008 14:28
An: [email protected]
Cc: [email protected]
Betreff: Re: Xlink Problem



Hi Kerschbaum,

"Kerschbaum Michael " <[EMAIL PROTECTED]> wrote on 08/06/2008 07:54:08 AM:

> I have still some problems. Currently with links in an SVG File. 
> When we define a link via xlink into a nother svg File, sometimes 
> the area for this link is not recognized as link (normally the mouse
> courser changed, and when you click on the area the link is exectued
> via the openLink method in the SVGUserAgent interface) 
>   
> I looks like that sometimes the Elements in the SVG Tree does not 
> react on Events . e.g. 

   My guess is that you have an event listener somewhere high in the tree 
(like the root SVG node) and you are listening during the 'bubble' phase 
of event propagation.  Since the Anchor captures the event to change 
the cursor and handle clicks it never bubbles back to the root of the 
SVG document.  So the simplest solution would be to change your event 
listener to listen during the 'capture' phase of event propagation 
(see the DOM level 2 Events Spec). 

>   
> SVGConstants.SVG_MOUSEOUT_EVENT_TYPE
> SVGConstants.SVG_MOUSEOVER_EVENT_TYPE 
>   
> because when this happens the handleEvent Method is never called. 
>   
> We defined the link ... like 
>   
> .... 
> <g id="group4975-140" v:layerMember="0">
>    
>    <g id="group4976-141" v:layerMember="0">
>     
>     <rect x="0" y="597" width="326.25" height="63" class="st15" />
>     <a xlink:href="LAGEPLAN.svg" xmlns:xlink="http://www.w3.org/1999/xlink";>
>      <g id="shape4978-144" transform="translate(256.5,-33.3529)"> 
>   
> ... 
>   
> When this happens i still get MouseEvents on my JSVGComponent.... 
> but no events from org.w3c.dom.events.EventListener... ?! There is 
> no error in the console and no exception is thrown ?!... 
>   
> Mit freundlichen Grüßen Michael Kerschbaum 
>   
> DI (FH) Michael Kerschbaum 
> PKE Electronics AG 
> Zentrale Wien / Entwicklung 
> Computerstraße 6 
> A - 1101 Wien 
> TEL: +43 (0) 50 150 - 1210 
> [EMAIL PROTECTED] 
> www.pke.at 
>   
> Aktiengesellschaft mit dem Sitz in Wien 
> Firmenbuchnummer 103264i 
> HG Wien, DVR 0159701 
> Johann Helf - Vorsitzender des Vorstandes 
> Bruno Faustka - Mitglied des Vorstandes 
> Christian Prelz - Vorsitzender des Aufsichtsrates 
>  [attachment "test.zip" deleted by Thomas E. DeWeese/449433/EKC] 
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: [EMAIL PROTECTED]
> For additional commands, e-mail: [EMAIL PROTECTED] 

Reply via email to