-
FEATURED COMPONENTS
First time here? Check out the FAQ!
Orignial message at:
https://sourceforge.net/forum/message.php?msg_id=3692698
By: the-e-factory
Hi, it seems that the onClose event is not send to the window? Also the default behavior that the window gets detached isn't the case? or do did I missed something?
thanks
ps I use the ZK 1.2rc2: nice job!!
<?xml version="1.0" encoding="UTF-8"?>
<?page title="Test window"?>
<zk>
<window title="Test window" border="normal" id="win" > <button label="Make testwindow" onClick="makeTestWindow()"/>
<zscript>
public class TestWindow extends Window {
public TestWindow(){
makeLayout();
}
private void makeLayout() {
this.setTitle("testwindow");
this.setWidth("150px");
this.setHeight("150px");
this.setClosable(true);
this.setBorder("normal");
}
}
void makeTestWindow(){
Window testwindow = new TestWindow();
//testwindow.setId("testid");
testwindow.addEventListener("onClose", new EventListener(){
public void onEvent(Event e) {
//System.out.println(e.getName());
win.appendChild(new Label("labbel added"));
e.getTarget().setVisible(false);
}
public boolean isAsap() {
return true;
}
});
win.appendChild(testwindow);
}
</zscript>
</window>
</zk>
Orignial message at:
https://sourceforge.net/forum/message.php?msg_id=3693422
By: henrichen
There are two problems in your code:
1. Each event listener would be called if defined or added. I mean each of them.
While your onClose listener is called, the default onClose method defined in Window is also called (and detach the window). The programmer is supposed to call event.stopPropagation() to stop the event from propagate to the next event listener and stop right there. So, then add a event.stopPropagation() in your event listener...Here comes the second problem.
2. The event listener is called in a predefined sequence. The current sequence is 1)onXxx defined in zuml page 2) the onXxx method defined in java class 3) the dynamically added event listener into the component 4) the dyanmically added event listener into the page that the component belongs to. Add stopPropagation() in your code would not work since the onClose method defined in the window is already called.
I have propose a feature request to change the calling sequence
http://sourceforge.net/tracker/index.php?func=detail&aid=1472734&group_id=152762
&atid=785194
In the mean time, the work around is to define your onClose in Window as an Attribute (instead of an added event listener) and remember to call
event.stopPropagation() to stop the default Window onClose() method being called.
Still another workaround is to override onClose() method in your TestWindow class and the called event handling method would be your onClose() method.
/henri
Orignial message at:
https://sourceforge.net/forum/message.php?msg_id=3693961
By: the-e-factory
Hi, thanks for the good explanation !!
I changed the code, override the onClose method of the Testwindow class. I hope I did it the good way, but it seems that still the event is not processed ?.
<?xml version="1.0" encoding="UTF-8"?>
<?page title="Test window"?>
<zk>
<window title="Test window" border="normal" id="win" > <button label="Make testwindow" onClick="makeTestWindow()"/>
<zscript>
public class TestWindow extends Window {
public TestWindow(){
makeLayout();
}
public void onClose(){
//System.out.println("in the onclose method");
//this.appendChild(new Label("labbel added"));
//this.setVisible(false);
this.detach();
}
private void makeLayout() {
this.setTitle("testwindow");
this.setWidth("150px");
this.setHeight("150px");
this.setClosable(true);
this.setBorder("normal");
}
}
void makeTestWindow(){
Window testwindow = new TestWindow();
testwindow.setId("testid");
win.appendChild(testwindow);
}
</zscript>
</window>
</zk>
Orignial message at:
https://sourceforge.net/forum/message.php?msg_id=3695277
By: henrichen
I tried your example, it works for me. Try comment out the this.detach() in onClose(), the TestWindow would not disappear when click the close button. It proves that the onClose() in TestWindow was called and the onClose() in Window is NOT called.
Or add win.appendChild(new Label("close button clicked")); in your onClose(), you will see this label attached when you click the close button.
Note that you cannot try this example in our demo site which we forbidden new class definition for security reason.
/henri
Orignial message at:
https://sourceforge.net/forum/message.php?msg_id=3695600
By: the-e-factory
Yes, I noticed the same, but do you also have the Unique id issue when You push the makeTestwindow button again, after the window is detached. Normally the id gets relaesed from the IdSpace also when the window/component gets detached, so you can use the same id again ?
Thanks,
Eduard
Orignial message at:
https://sourceforge.net/forum/message.php?msg_id=3695624
By: henrichen
No, I don't have that "Unique" id issue. I can close it and push the button to create it again. No problem.
/henri
Orignial message at:
https://sourceforge.net/forum/message.php?msg_id=3695737
By: the-e-factory
Then I have a problem !! What could be the cause of my id issue: I use the 1.2rc2.
The fact is that it works also on my local installation of the zkdemo ?? (paste the code in a "Source" window and push try it) When I want to load the page from my appl I have this error. I use the same web.xml and zk.xml as the zkdemo (ofcourse changed the update-uri/auEngine to my appl), same tomcat, same libraries etc
Do you have an idee where my problem is located?
many thanks!!
Orignial message at:
https://sourceforge.net/forum/message.php?msg_id=3695754
By: the-e-factory
Hi,
I just use the zkdemo web.xml en zk.xml as they are for my appl, and this works, so can I asume that I don't have to change the udate-uri and auEngine to point out to my appl webroot ?
thanks
Orignial message at:
https://sourceforge.net/forum/message.php?msg_id=3695795
By: henrichen
Be honest, I have not idea why it is so. Something weird.
/henri
Orignial message at:
https://sourceforge.net/forum/message.php?msg_id=3695805
By: henrichen
Oh, the update-uri is neutral to your application root page. The browser need that uri to send correct pattern of Ajax url request to the DHtmlLayoutServlet (the servlet that handle the Ajax requests). There is no need to change that.
However, things is still strange if you simply change that uri and suffer the "unique id" issue. I will try here by changing that uri.
/henri
Orignial message at:
https://sourceforge.net/forum/message.php?msg_id=3695812
By: henrichen
Hi Eduard,
I have changed the update uri to /zkau1 and tried your example. It still works for me. Maybe you want to try the lastest nightly distribution? That is the version I tried on my PC.
/henri
Asked: 2006-04-18 17:31:06 +0800
Seen: 1,102 times
Last updated: Apr 20 '06