Cairngorm events dispatch problem

Hi,
We are developing a Flex 3 AIR application on Cairngorm and
LCDS 2.6. The problem is some Cairngorm events don't get fired
which results in null reference errors. But when we put an Alert is
starts working. Can you suggest any solution and reason why its
happening.
Thanks,
Oleg

One thing that will cause events to appear not to fire is
when you forget to instantiate your controller somewhere on your
mxml file. The events will dispatch, but the command won't get
executed.
Another one - if you create custom events and override the
constructor, you have to to call super(MyController.EVENT_TYPE) or
else your event doesn't get bound to the command.

Similar Messages

  • Adobe AIR Event Dispatcher Problem

    I have created an AIR application, I have removed an component and  again i added the same component. That time the event dispatcher of the removed component is been called again and again.How to resolve this problem. Urgent Reply ASAP......

    The only idea that comes to mind is to keep the file on the dvd, then have your app install (copy) it on first launch.
    Thanks for adding the bug.  For others affected by this, please visit the bug and add your vote.  All feedback is appreciated!
    https://bugbase.adobe.com/index.cfm?event=bug&id=2938315
    Chris

  • Cairngorm Event Dispatcher

    I am facing one issue w.r,to event handling. In our Application, We are trying to update Operation. For this, we will select the values from the datagrid and click “update” button, it will popup in the new TitleWindow to modify the values and save. While clicking the update button, we are dispatching a Cairngorm event which will send the primary key to the database and retrieve the particular record in an Object.
    We created an object in UtilModelLocator and save the retrieved value in this Object in “result” method in a corresponding Event's Command; the values are not populated in the TitleWindow. It seems that, the both operation (1. Update Event 2. TitleWindow) are running simultaneously. So, the title window is not updated with the new values since the event operation is also in progress.
    We would like to modify it as; the title window will get fired only after the event operation is done completely.
    Could you please suggest us any solution to handle this issue?

    Hi,
    I tried dispatching the serachEvent in result method of the DeleteCommand but it seems that, it is not dispatching perfectly.
    Can we dispatch any Cairngorm events in another Cairngorm event result method?
    Regards,
    Sriivasan S

  • Event dispatching problem

    I have a panel with a button. The panel have a MouseMotionListener registered, but when the mouse is over the button the MouseEvent stop to go to the panel and go to the button. How can i let the panel understand to "keep the event also for me" ?
    This solution seems not optimal ....
    //my button class
    protected void processMouseMotionEvent(MouseEvent ev)
    MouseEvent trick=new MouseEvent((Component)ev.getSource(),ev.getID(),ev.getWhen(),ev.getModifiers(),this.getX()+ev.getX(),this.getY()+ev.getY(),ev.getClickCount(),true,ev.getButton());
    this.getParent().dispatchEvent(trick);
    super.processMouseMotionEvent(ev);
    Suggestions?
    Thanks in advance.
    -Marco Bagnaresi

    I'm no expert but I would have thought that the best way to do this would be to have your panel listening for mouse events on the button aswell.

  • Event Dispatch Problem With Classes

    I have a custom Timer class that pops up an inactivity alert
    after 3 minutes. The user can then choose 'yes' if they are still
    editing a record or 'no' if they are done. If they do not respond
    within 2 minutes of the alert it assumes 'no'.
    A 'yes' refreshes the timer and closes the alert.
    A 'no' kicks them out of the edit state in the component that
    the timer is called from.
    The logic of the timer is working fine but it doesn't seem to
    be sending the event to the component that called it so clicking
    'no' (or remaining inactive) does nothing. I feel like I'm missing
    something really simple or just misunderstanding the
    eventDispatcher function. Advice please??
    Code From LockTimer class:
    public class LockTimer extends Sprite
    private var threeMinuteTimer:Timer;
    private var twoMinuteTimer:Timer;
    public function LockTimer()
    // creates a new threeMinute Timer
    threeMinuteTimer = new Timer(1000, 180);
    twoMinuteTimer = new Timer(1000, 120);
    // designates listeners for the interval and completion
    events
    threeMinuteTimer.addEventListener(TimerEvent.TIMER, onTick);
    threeMinuteTimer.addEventListener(TimerEvent.TIMER_COMPLETE,
    onTimerComplete);
    twoMinuteTimer.addEventListener(TimerEvent.TIMER, onTick);
    twoMinuteTimer.addEventListener(TimerEvent.TIMER_COMPLETE,
    onTimerCompleteB);
    // starts the timer ticking
    threeMinuteTimer.start();
    public function refresh():void{
    restart(threeMinuteTimer);
    twoMinuteTimer.reset();
    private function onTick(evt:TimerEvent):void{}
    private function onTimerComplete(evt:TimerEvent):void{
    //trace("first timer");
    Alert.show('You have been inactive for several minutes. Are
    you still editing this record?', 'Inactivity Alert',
    Alert.YES|Alert.NO, null, alertListener,null, Alert.YES);
    twoMinuteTimer.start();
    private function onTimerCompleteB(evt:TimerEvent):void{
    //trace('second timer');
    //Alert.show('TIME UP', 'Inactivity Alert', Alert.OK);
    dispatchEvent(new Event("timeUp",true));
    private function restart(tim:Timer):void{
    tim.reset();
    tim.start();
    private function alertListener(eventObj:CloseEvent):void{
    // Check to see if the YES button was pressed.
    if (eventObj.detail==Alert.YES) {
    refresh();
    }else{
    //exit edit mode
    //Alert.show('TIME UP', 'Inactivity Alert', Alert.OK);
    dispatchEvent(new Event("timeUp",true));
    Code From Component:
    private var theTimer:LockTimer;
    private function initializeHandler(event:Event):void{
    addEventListener("timeUp",timeUpHandler);
    private function timeUpHandler(event:Event):void{
    Alert.show('TIME UP', 'Inactivity Alert', Alert.OK);
    //editDone();
    }

    so here is what i had to do to make this work:
    1. I had to attach the listener to theTimer rather than the
    component
    2. I had to initiate the LockTimer constructor outside of the
    function
    3. I had to call the handler initialization function from the
    component MXML
    below is the revised code (with excess cut out)
    <?xml version="1.0" encoding="utf-8"?>
    <mx:HDividedBox xmlns:mx="
    http://www.adobe.com/2006/mxml"
    width="780" height="515" liveDragging="true"
    creationComplete="initializeHandler()">
    <mx:Script>
    <![CDATA[
    import mx.controls.Text;
    import mx.rpc.events.FaultEvent;
    import mx.rpc.events.ResultEvent;
    import mx.controls.Alert;
    import classes.LockTimer;
    public static const millisecondsPerMinute:int = 1000 * 60;
    public static const millisecondsPerHour:int = 1000 * 60 *
    60;
    public static const millisecondsPerDay:int = 1000 * 60 * 60
    * 24;
    //IMPORTANT!!!////////////////
    private var theTimer:LockTimer=new LockTimer();
    private function initializeHandler():void{
    theTimer.addEventListener("timeUp",timeUpHandler);
    private function timeUpHandler(event:Event):void{
    editDone();
    private function refreshLock(theLock:int):void{
    var theTime:Date=new Date();
    if(theLock==1){
    theTimer.refresh();
    theTime.setTime(theTime.getTime() +
    (millisecondsPerMinute*5));
    }else if(theLock==0){
    theTime.setTime(theTime.getTime());
    }else{
    return;
    form1.request.firmlockedTime=String(theTime.valueOf());
    form1.request.firmisLocked=String(theLock);
    private function editIt():void{
    //see if it's being edited
    if(checkLock()){
    //if its being edited send a message
    Alert.show('This record is currently being edited by another
    user. Please try again later.', 'Record Locked',
    mx.controls.Alert.OK);
    }else{
    theTimer.startMe();
    refreshLock(1);
    form1.send();
    currentState="AdminEdit";
    private function editDone():void{
    refreshLock(0);
    form1.send();
    currentState="Admin";
    ]]>
    </mx:Script>
    </mx:HDividedBox>

  • Server side function not get called after dispatching cairngorm event second time on same page

    Hi All,
    I am facing a urgent issue regarding cairngorm event. Actually my page contain 3 button add,delete,save
    and  clicking of any button I do the respected functionality. For ex:
    I click the add button & on clicking of add button I fire a cairngorm evnt & after getting response from server side that the record is added
    I displayed a message that the record is added & update the data source.
    After addition of the record , with out going to other page if I perform the same functionaly(Like adding another record) on same page the cairngorm
    event not call the server side function  -  after debugging I find out that cairngorm event  reach to the corresponding excutecommand function & called that function  but it is not calling my server side function & I also din't get any error message .
    I dont know why  the server side function not get called?. similarly if I try for delete or update case the same things happend. Only for the first time it works properly but not for the second  time.
    Could any of  you please tell me why the cairngorm event not calling the server side function.
    Thank you for your kind assistance.
    Regards,
    Ujjwal

    Okay, well I think I've worked out the problem.
    In ASP.NET we would typically bind repeating controls such as DataLists and Repeaters manually using <i>Control</i>.DataBind(), because we're usually using a separate class library containing collections for our objects. Seems the SAP Table control doesn't like this approach.
    I changed the code so that the databinding is specified on the control, and call the Page's DataBind() method and it all worked fine.
    One tip: because the collection I used to bind to is in a separate class library, I receieved a <i>BC306523: Reference required to assembly MyAssemblyName...</i> message, even though I had a reference to the assembly in my project and the DLL is being properly deployed. To fix this, you must include the following directive at the top of the component's ASCX file:
    <%@ Assembly Name="AssemblyName" %>

  • Not Running on the Event Dispatch thread, but UI still freezes

    The environment: I am currently working on an application that requires some heavy lifting in response to user input on a UI. To do this I am using a version of SwingWorker that was backported from java 1.6 to java 1.5 in conjunction with a slew of custom threads.
    The problem: I am currently running into an issue where I am not operating on the Event Dispatch thread (checked by doing a javax.swing.SwingUtilities.isEventDispatchThread()) but the UI is still freezing during this section. The operation involves a loop with about 2000 iterations and contains several file accesses. I have thought about how to make a new thread to perform the same operation, but I do not see how it would be any different since as it is I am not on the EDT. The call is being made from doInBackground and specifically the piece that is slowing things down is the File Accesses (2 for every iteration of the loop). At this point I am not sure how to go about resolving the issue. Any one have any suggestions?

    I am not operating on the Event Dispatch threadThat is the problem. Use multiple threads for GUI, which should delegates to the EDT, and your app logic.

  • Event Dispatch Thread Hangs, what is wrong?

    The Event Dispatch Thread Hangs when showing a modal dialog while running a
    SwingWorker Thread.
    I have included my code at the bottom of the page. There are three classes. I have posted a bug report to red hat. But I want to make sure my code is correct.
    My test case just puts the SwingWorker to sleep
    but the problem occurs if I do something real, like connect to a database, etc.
    Also I have tried little different variations of the logic calling
    setVisible(true)/(false) in different places and the same problem occurs.
    It seems to work with Sun JDK, note I am using IcedTea with Fedora Core 8.
    Version-Release number of selected component (if applicable):
    [szakrews@tuxtel ~]$ java -version
    java version "1.7.0"
    IcedTea Runtime Environment (build 1.7.0-b21)
    IcedTea Client VM (build 1.7.0-b21, mixed mode)How reproducible:
    Every couple times.
    javac TestClass2
    java TestClass2eventually it will hang. If it doesn't try again.
    You don't have to wait for the program to finish either.
    The program runs the Dialog 10 times but it never works or fails in the middle, it will either work or fail from the first dialog displayed.
    I have included a thread dump. That is about the most informative information I can get. Neither tracing nor writing a custom ThreadQueue or Drawing Manager to trace events produces any helpful information.
    Actual results:
    The JProccessBar won't move, and the SwingWorker finishes but the done() method is never run. The PROGRAM is not hung however because if I close the dialog then it will continue.
    Expected results:
    The JProccessBar should always move and the SwingWorker should always run the done() method.
    Additional info:
    java thread dump after freeze, taken with kill -s SIGQUIT <pid>
    2008-06-25 12:25:50
    Full thread dump IcedTea Client VM (1.7.0-b21 mixed mode):
    "DestroyJavaVM" prio=10 tid=0x938afc00 nid=0x1419 waiting on condition
    [0x00000000..0x0018a074]
       java.lang.Thread.State: RUNNABLE
    "AWT-EventQueue-0" prio=10 tid=0x938ae400 nid=0x1429 in Object.wait()
    [0x07f96000..0x07f96f04]
       java.lang.Thread.State: WAITING (on object monitor)
            at java.lang.Object.wait(Native Method)
            - waiting on <0x96748f80> (a java.awt.EventQueue)
            at java.lang.Object.wait(Object.java:503)
            at java.awt.EventQueue.getNextEvent(EventQueue.java:485)
            - locked <0x96748f80> (a java.awt.EventQueue)
            at
    java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:248)
            at
    java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:201)
            at
    java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:195)
            at java.awt.Dialog$1.run(Dialog.java:1073)
            at java.awt.Dialog$3.run(Dialog.java:1127)
            at java.security.AccessController.doPrivileged(Native Method)
            at java.awt.Dialog.show(Dialog.java:1125)
            at java.awt.Component.show(Component.java:1456)
            at java.awt.Component.setVisible(Component.java:1408)
            at java.awt.Window.setVisible(Window.java:871)
            at java.awt.Dialog.setVisible(Dialog.java:1012)
            at net.xtel.production.WaitDialog.showWaitDialog(WaitDialog.java:72)
            at net.xtel.production.WaitDialog.showWaitDialog(WaitDialog.java:102)
            at TestClass2.showWait(TestClass2.java:79)
            at TestClass2.createAndShowGUI(TestClass2.java:126)
            at TestClass2.access$0(TestClass2.java:114)
            at TestClass2$3.run(TestClass2.java:138)
            at java.awt.event.InvocationEvent.dispatch(InvocationEvent.java:227)
            at java.awt.EventQueue.dispatchEvent(EventQueue.java:603)
            at
    java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:276)
            at
    java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:201)
            at
    java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:191)
            at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:186)
            at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:178)
            at java.awt.EventDispatchThread.run(EventDispatchThread.java:139)
    "AWT-Shutdown" prio=10 tid=0x938ad000 nid=0x1428 in Object.wait()
    [0x03ea7000..0x03ea7f84]
       java.lang.Thread.State: WAITING (on object monitor)
            at java.lang.Object.wait(Native Method)
            - waiting on <0x96749268> (a java.lang.Object)
            at java.lang.Object.wait(Object.java:503)
            at sun.awt.AWTAutoShutdown.run(AWTAutoShutdown.java:281)
            - locked <0x96749268> (a java.lang.Object)
            at java.lang.Thread.run(Thread.java:675)
    "AWT-XAWT" daemon prio=10 tid=0x938a8400 nid=0x1423 runnable
    [0x02ccc000..0x02ccd104]
       java.lang.Thread.State: RUNNABLE
            at sun.awt.X11.XToolkit.waitForEvents(Native Method)
            at sun.awt.X11.XToolkit.run(XToolkit.java:550)
            at sun.awt.X11.XToolkit.run(XToolkit.java:525)
            at java.lang.Thread.run(Thread.java:675)
    "Java2D Disposer" daemon prio=10 tid=0x93854000 nid=0x1421 in Object.wait()
    [0x07aea000..0x07aead84]
       java.lang.Thread.State: WAITING (on object monitor)
            at java.lang.Object.wait(Native Method)
            - waiting on <0x966e7010> (a java.lang.ref.ReferenceQueue$Lock)
            at java.lang.ref.ReferenceQueue.remove(ReferenceQueue.java:134)
            - locked <0x966e7010> (a java.lang.ref.ReferenceQueue$Lock)
            at java.lang.ref.ReferenceQueue.remove(ReferenceQueue.java:150)
            at sun.java2d.Disposer.run(Disposer.java:143)
            at java.lang.Thread.run(Thread.java:675)
    "Low Memory Detector" daemon prio=10 tid=0x93c15000 nid=0x141f runnable
    [0x00000000..0x00000000]
       java.lang.Thread.State: RUNNABLE
    "CompilerThread0" daemon prio=10 tid=0x93c13400 nid=0x141e waiting on condition
    [0x00000000..0x03a8a954]
       java.lang.Thread.State: RUNNABLE
    "Signal Dispatcher" daemon prio=10 tid=0x93c11c00 nid=0x141d waiting on
    condition [0x00000000..0x00000000]
       java.lang.Thread.State: RUNNABLE
    "Finalizer" daemon prio=10 tid=0x095e7000 nid=0x141c in Object.wait()
    [0x005d2000..0x005d3004]
       java.lang.Thread.State: WAITING (on object monitor)
            at java.lang.Object.wait(Native Method)
            - waiting on <0x966e71d8> (a java.lang.ref.ReferenceQueue$Lock)
            at java.lang.ref.ReferenceQueue.remove(ReferenceQueue.java:134)
            - locked <0x966e71d8> (a java.lang.ref.ReferenceQueue$Lock)
            at java.lang.ref.ReferenceQueue.remove(ReferenceQueue.java:150)
            at java.lang.ref.Finalizer$FinalizerThread.run(Finalizer.java:177)
    "Reference Handler" daemon prio=10 tid=0x095e2400 nid=0x141b in Object.wait()
    [0x00581000..0x00582084]
       java.lang.Thread.State: WAITING (on object monitor)
            at java.lang.Object.wait(Native Method)
            - waiting on <0x966e7260> (a java.lang.ref.Reference$Lock)
            at java.lang.Object.wait(Object.java:503)
            at java.lang.ref.Reference$ReferenceHandler.run(Reference.java:134)
            - locked <0x966e7260> (a java.lang.ref.Reference$Lock)
    "VM Thread" prio=10 tid=0x095dec00 nid=0x141a runnable
    "VM Periodic Task Thread" prio=10 tid=0x93c17400 nid=0x1420 waiting on condition
    JNI global references: 836
    Heap
    def new generation   total 960K, used 152K [0x93f40000, 0x94040000, 0x966a0000)
      eden space 896K,   9% used [0x93f40000, 0x93f56148, 0x94020000)
      from space 64K, 100% used [0x94020000, 0x94030000, 0x94030000)
      to   space 64K,   0% used [0x94030000, 0x94030000, 0x94040000)
    tenured generation   total 4096K, used 1088K [0x966a0000, 0x96aa0000, 0xb3f40000)
       the space 4096K,  26% used [0x966a0000, 0x967b01b0, 0x967b0200, 0x96aa0000)
    compacting perm gen  total 12288K, used 9169K [0xb3f40000, 0xb4b40000, 0xb7f40000)
       the space 12288K,  74% used [0xb3f40000, 0xb4834740, 0xb4834800, 0xb4b40000)
    No shared spaces configured.CLASS1:
    import java.awt.Dimension;
    import java.awt.Toolkit;
    import java.awt.event.ActionEvent;
    import java.awt.event.ActionListener;
    import java.awt.event.WindowAdapter;
    import java.awt.event.WindowEvent;
    import java.sql.SQLException;
    import java.util.concurrent.ExecutionException;
    import javax.swing.JButton;
    import javax.swing.JFrame;
    import javax.swing.JOptionPane;
    import javax.swing.JPanel;
    import javax.swing.RepaintManager;
    import javax.swing.SwingUtilities;
    import javax.swing.UIManager;
    import javax.swing.UnsupportedLookAndFeelException;
    public class TestClass2 extends JFrame implements ActionListener {
            /** Action Command for <code>searchbtn</code> */
            public static final String SEARCH_BTN_ACTION = "search_btn_action";
             * Constructor.
            public TestClass2() {
                    setSize(650, 350);
                    Dimension screenSize = Toolkit.getDefaultToolkit().getScreenSize();
                    setLocation(screenSize.width / 2 - getSize().width / 2,
                                    screenSize.height / 2 - getSize().height / 2);
                    setDefaultCloseOperation(JFrame.DO_NOTHING_ON_CLOSE);
                    addWindowListener(new WindowAdapter() {
                            @Override
                            public void windowClosing(WindowEvent e) {
                                    exit();
                    JPanel panel = new JPanel();
                    add(panel);
                    setVisible(true);
            @Override
            public void actionPerformed(ActionEvent e) {
                    if (e.getActionCommand().equals(SEARCH_BTN_ACTION)) {
                            JOptionPane.showMessageDialog(this, "Button Pressed");
            public void showWait() {
                    try {
                            WaitDialog.showWaitDialog(this, "Testing...", new SwingWorkerInterface(){
                                    @Override
                                    public Object workToDo() throws Throwable {
                                            Thread.currentThread().sleep(3000);
                                            return null;
                    } catch (InterruptedException e) {
                            // TODO Auto-generated catch block
                            e.printStackTrace();
                    } catch (ExecutionException e) {
                            // TODO Auto-generated catch block
                            e.printStackTrace();
             * Exits the program.
            public void exit(){
                    System.exit(0);
             * Create the GUI and show it. For thread safety, this method should be
             * invoked from the event-dispatching thread.
             * @throws UnsupportedLookAndFeelException
             * @throws IllegalAccessException
             * @throws InstantiationException
             * @throws ClassNotFoundException
             * @throws NullInstanceVariableException
             * @throws SQLException
            private static void createAndShowGUI() {
                    // set look and feel
                    try{
                            UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());
                            // Create instance of the ProductCatalog
                            TestClass2 root = new TestClass2();
                            for(int i = 0; i < 10; i++){
                                    root.showWait();
                    }catch(Exception e){
                            e.printStackTrace();
             * @param args
             *            this program does not use arguments
            public static void main(String[] args) {
                    SwingUtilities.invokeLater(new Runnable() {
                            public void run() {
                                    createAndShowGUI();
    }CLASS 2:
    import java.awt.Component;
    import java.awt.Frame;
    import java.awt.event.WindowAdapter;
    import java.awt.event.WindowEvent;
    import java.util.concurrent.ExecutionException;
    import javax.swing.JDialog;
    import javax.swing.JFrame;
    import javax.swing.JLabel;
    import javax.swing.JOptionPane;
    import javax.swing.JPanel;
    import javax.swing.JProgressBar;
    import javax.swing.SwingWorker;
    public class WaitDialog extends JDialog {
            private boolean disposed = false;
            private boolean displayed = false;
            private WorkerThread worker = null;
            WaitDialog(Frame parent, String text, SwingWorkerInterface in){
                    super(parent, true);
                    worker = new WorkerThread(in);
                    setDefaultCloseOperation(JFrame.DO_NOTHING_ON_CLOSE);
                    addWindowListener(new WindowAdapter() {
                            @Override
                            public void windowOpened(WindowEvent e) {
                                    worker.execute();
                            @Override
                            public void windowClosing(WindowEvent e) {
                                    disposeWaitDialog();
                    this.setResizable(false);
                    JLabel message = new JLabel();
                    message.setText(text);
                    JProgressBar pb = new JProgressBar();
                    pb.setIndeterminate(true);
                    // set size and location
                    setSize(200, 100);
                    setLocationRelativeTo(parent);
                    JPanel panel = new JPanel();
                    panel.add(message);
                    panel.add(pb);
                    add(panel);
            public void showWaitDialog(){
                    if(displayed == true){
                            return;
                    if(disposed == true){
                            disposed = false;
                            return;
                    disposed = false;
                    displayed = true;
                    setVisible(true);
            public void disposeWaitDialog(){
                    if(disposed == true){
                            return;
                    if(displayed == true){
                            displayed = false;
                            setVisible(false);
                            return;
                    disposed = true;
                    displayed = false;
            public static Object showWaitDialog(Component parent, String text, SwingWorkerInterface in) throws InterruptedException, ExecutionException {
                    WaitDialog waitDialog = null;
                    if (parent == null) {
                            waitDialog = new WaitDialog(JOptionPane.getRootFrame(), text, in);
                    } else {
                            waitDialog = new WaitDialog(JOptionPane.getFrameForComponent(parent), text, in);
                    while(!waitDialog.worker.isDone()){
                            System.out.println("about to show");
                            waitDialog.showWaitDialog();
                            System.out.println("done showing");
                    waitDialog.dispose();
                    return waitDialog.worker.get();
            class WorkerThread extends SwingWorker<Throwable, Void> {
                    private SwingWorkerInterface in = null;
                    WorkerThread(SwingWorkerInterface in){
                            this.in = in;
                    public Throwable doInBackground(){
                                    try {
                                            System.out.println("about to do work");
                                            in.workToDo();
                                            System.out.println("done work no exception");
                                    } catch (Throwable e) {
                                            System.out.println("done work with exception");
                                            return e;
                                    return null;
                    public void done(){
                                    System.out.println("about to dispose");
                                    disposeWaitDialog();
                                    System.out.println("disposed");
    }CLASS 3:
    public interface SwingWorkerInterface {
            public Object workToDo() throws Throwable;
    }

    There's nothing directly wrong with it, but it will
    prevent other threads acquiring the class lock - but
    that may be what you want.True. Although the typical case for code that looks like this would be to use wait--usually the various threads in question require the same lock, so you have to use wait in order for the waiting thread to give it up and allow the other thread to do its work. Hard to say for sure though what he's doing.
    Also, if loading is all that the other thread does, and you're waiting for that thread to die, use join. But then, if that's the case, and you're only waiting for a single other thread, then you might as well just put it all in one thread, as already indicated.

  • Information Regarding :Exception occurred during event dispatching

    Hi,
    I frequently get this exception when I click a button in a dialog and it opens up another frame of window. The exception trace includes java internal classes and my program classes line numbers. I have searched the net but could not get any concrete answer.
    Is this problem in java packages or should we take care of something in our code to avoid such exceptions.
    Below is the exception trace..........................
    Exception occurred during event dispatching:
    java.lang.NullPointerException
    at javax.swing.plaf.basic.BasicTableUI.paintCell(BasicTableUI.java:1141)
    at javax.swing.plaf.basic.BasicTableUI.paintCells(BasicTableUI.java:1051)
    at javax.swing.plaf.basic.BasicTableUI.paint(BasicTableUI.java:974)
    at javax.swing.plaf.ComponentUI.update(ComponentUI.java:142)
    at javax.swing.JComponent.paintComponent(JComponent.java:541)
    at javax.swing.JComponent.paint(JComponent.java:808)
    at javax.swing.JComponent.paintWithOffscreenBuffer(JComponent.java:4795)
    at javax.swing.JComponent.paintDoubleBuffered(JComponent.java:4748)
    at javax.swing.JComponent._paintImmediately(JComponent.java:4692)
    at javax.swing.JComponent.paintImmediately(JComponent.java:4495)
    at javax.swing.RepaintManager.paintDirtyRegions(RepaintManager.java:409)
    at javax.swing.SystemEventQueueUtilities$ComponentWorkRequest.run(SystemEventQueueUtilities.java:117)
    at java.awt.event.InvocationEvent.dispatch(InvocationEvent.java:178)
    at java.awt.EventQueue.dispatchEvent(EventQueue.java:454)
    at java.awt.EventDispatchThread.pumpOneEventForHierarchy(EventDispatchThread.java:201)
    at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:151)
    at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:141)
    at java.awt.Dialog$1.run(Dialog.java:540)
    at java.awt.Dialog.show(Dialog.java:561)
    at java.awt.Component.show(Component.java:1192)
    at java.awt.Component.setVisible(Component.java:1147)
    at com.mycomp.example.DialogView.showWindow(DialogView.java:91)
    at com.mycomp.example.showWindow(StatusController.java:83)
    at com.mycomp.example.handleOk(ExampleController.java:842)
    at javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:1786)
    at javax.swing.AbstractButton$ForwardActionEvents.actionPerformed(AbstractButton.java:1839)
    at javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:420)
    at javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:258)
    at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(BasicButtonListener.java:245)
    at java.awt.Component.processMouseEvent(Component.java:5159)
    at java.awt.Component.processEvent(Component.java:4956)
    at java.awt.Container.processEvent(Container.java:1569)
    at java.awt.Component.dispatchEventImpl(Component.java:3674)
    at java.awt.Container.dispatchEventImpl(Container.java:1627)
    Thanks in advance.

    Hi All,
    Thanks for the replies and information posted by you.
    Below is some code snippet: ( complete code posting is difficult) ;-)
    Dialog1 is open, clicking on button say start it hides the current Dialog1 and opens the status dialog for Dialog1.
    Also, we are making the current Thread to sleep to avoid flickering.
    dialog1.hideWindow(); // Hide current window...
    Thread.currentThread().sleep(5); // sleep to avoid flickering..
    statusDialog.showWindow(); // to display status window..
    I will check and try to do modifications as per your suggestions.
    Thanks.

  • JFileChooser : Exception occurred during event dispatching

    Hi,
    I'm having problems with sorting in 'Details' view of JFileChooser. I'm getting the following NullPointerException when I try to sort by clicking on the header of the JTable which I get in 'Details' view of a JFileChooser.
    Exception occurred during event dispatching:
    java.lang.NullPointerException
    at java.awt.EventQueue.isDispatchThread(Unknown Source)
    at javax.swing.SwingUtilities.isEventDispatchThread(Unknown Source)
    at javax.swing.JComponent.revalidate(Unknown Source)
    at javax.swing.JTable.resizeAndRepaint(Unknown Source)
    at javax.swing.JTable.sortedTableChanged(Unknown Source)
    at javax.swing.JTable.sorterChanged(Unknown Source)
    at javax.swing.RowSorter.fireRowSorterChanged(Unknown Source)
    at javax.swing.RowSorter.fireRowSorterChanged(Unknown Source)
    at javax.swing.DefaultRowSorter.sort(Unknown Source)
    at sun.swing.FilePane$DetailsTableRowSorter.access$1301(Unknown Source)
    at sun.swing.FilePane$DetailsTableRowSorter$1.call(Unknown Source)
    at sun.swing.FilePane$DetailsTableRowSorter$1.call(Unknown Source)
    at java.util.concurrent.FutureTask$Sync.innerRun(Unknown Source)
    at java.util.concurrent.FutureTask.run(Unknown Source)
    at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(Unknown Source)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
    at sun.awt.shell.Win32ShellFolderManager2$ComInvoker$3.run(Unknown Source)
    at java.lang.Thread.run(Unknown Source)
    Any operation performed in the JFileChooser after this exception will generate the same exception & no action is performed. I'm using Java 1.6.0_24. Strangely, this is happening only in client-server mode. Staand-alone is working fine.
    Please provide some urgent inputs to this problem
    Thanks
    Dilip

    Thanks 4 d reply mKorbel, I'm not creating a TableModel. I'm just creating a JFileChooser as shown below.
    JFileChooser fileChooser = new JFileChooser(location);
    fileChooser.setFileSelectionMode(JFileChooser.FILES_ONLY);
    fileChooser.setMultiSelectionEnabled(false);
    fileChooser.setDialogTitle("Choose File");
    if (fileChooser.showOpenDialog(null) == JFileChooser.APPROVE_OPTION)
    Now, the scenario is to bringup the FileChooser, go to Details view, apply sort on any column. This action creates the mentioned NullPointerException.

  • JTabbedPane: Exception occurred during event dispatching:

    Hi,
    I have a JTabbedPane where the tabs can be added dynamically by the method:
    private void addNewTab(JTable aTable) throws java.lang.NullPointerException
    final JTable t = aTable;
    Thread addTab = new Thread()
    public void run()
    JScrollPane scroller = new JScrollPane();
    JTable table;
    if (t==null)
    table = new JTable(columns, 0);
    else
    table = t;
    table.setColumnsEditable(colEditable);
    cachedTables.addElement(table);
    scroller.getViewport().setView(table);
    jtp.insertTab("Tab " + cachedTables.size(), null, scroller, "Tab", cachedTables.size()-1);
    jtp.updateUI();
    SwingUtilities.invokeLater(new Runnable()
    public void run()
    jtp.setSelectedIndex(cachedTables.size()-1);
    jtp.validate();
    addTab.start();
    The problem is that occasionally (20% of the times) I receive this exception:
    Exception occurred during event dispatching:
    java.lang.NullPointerException
         at javax.swing.plaf.basic.BasicTabbedPaneUI.rotateInsets(BasicTabbedPaneUI.java:1159)
         at javax.swing.plaf.basic.BasicTabbedPaneUI.getTabAreaInsets(BasicTabbedPaneUI.java:951)
         at javax.swing.plaf.basic.BasicTabbedPaneUI.calculateTabAreaHeight(BasicTabbedPaneUI.java:924)
         at javax.swing.plaf.basic.BasicTabbedPaneUI.paintContentBorder(BasicTabbedPaneUI.java:637)
         at javax.swing.plaf.basic.BasicTabbedPaneUI.paint(BasicTabbedPaneUI.java:358)
         at javax.swing.plaf.ComponentUI.update(ComponentUI.java:39)
         at javax.swing.JComponent.paintComponent(JComponent.java:395)
         at javax.swing.JComponent.paint(JComponent.java:687)
         at javax.swing.JComponent.paintChildren(JComponent.java:498)
         at javax.swing.JComponent.paint(JComponent.java:696)
         at javax.swing.JComponent.paintWithBuffer(JComponent.java:3878)
         at javax.swing.JComponent._paintImmediately(JComponent.java:3821)
         at javax.swing.JComponent.paintImmediately(JComponent.java:3672)
         at javax.swing.RepaintManager.paintDirtyRegions(RepaintManager.java:370)
         at javax.swing.SystemEventQueueUtilities$ComponentWorkRequest.run(SystemEventQueueUtilities.java:124)
         at java.awt.event.InvocationEvent.dispatch(InvocationEvent.java:154)
         at java.awt.EventQueue.dispatchEvent(EventQueue.java:337)
         at java.awt.EventDispatchThread.pumpOneEventForHierarchy(EventDispatchThread.java:131)
         at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:98)
         at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:93)
         at java.awt.EventDispatchThread.run(EventDispatchThread.java:85)
    Does none know, how I can solve the problem?
    Thanks,
    Diego.

    Fix the NullPointerException. The stack trace tells you the line that caused the problem.

  • Exception occurred during event dispatching

    I'm facing a problem with dispatchCustomEvent() method while clicking a button on oracle form. The code is given below:
    package oracle.forms.finalbutton;
    import java.awt.*;
    import java.awt.event.*;
    import java.util.StringTokenizer;
    import javax.swing.JButton;
    import oracle.forms.ui.CustomEvent;
    import oracle.forms.ui.VBean;
    import oracle.forms.ui.VButton;
    import oracle.ewt.button.PushButton;
    import oracle.forms.handler.IHandler;
    import oracle.forms.properties.ID;
    import oracle.forms.properties.Property;
    public class FinalButton extends VBean implements ActionListener
    public final static ID WBP = ID.registerProperty("BUTTONPRESSED");
    private IHandler m_handler;
    protected JButton b1 ;
    public FinalButton()
    super();
    b1 = new JButton("");
    b1.setActionCommand("push");
    b1.addActionListener(this);
    add(b1) ;
    public void actionPerformed(ActionEvent e) {
    CustomEvent ce = new CustomEvent(m_handler, WBP);
    // new URLProcess("http://rsb.info.nih.gov/ij/images/ct.dcm");
    new URLProcess("http://localhost/Sunset.jpg");
    dispatchCustomEvent(ce);
    public void init(IHandler handler)
    m_handler = handler;
    super.init(handler);
    The exception message thrown is given in the subject of this message. Now I need to know the details regarding event dispatching. Please someone help me.
    Thanks
    Rashed

    Hi
    Thanks...actually I want to click a button on Oracle Form and below is the actionPerformed method code:
    public void actionPerformed(ActionEvent e) {
    CustomEvent ce = new CustomEvent(m_handler, WBP);
    new URLProcess("http://rsb.info.nih.gov/ij/images/ct.dcm");
    dispatchCustomEvent(ce);
    I think my way of event dispatching isn't right. I need to instantiate an object of the class
    URLProcess on click event. Could you please let me know how can I get around the problem?
    Rashed

  • "Exception occurred during event dispatching". Help me, Please!

    Hi, All:
    when I runing my program, often catch below exception, I couldn't found where I'm wrong, and Why?
    Could you please, give the below exception and
    my code a quick search, and tell me how I to do it, and Why?
    sincerely
    yoursUrey
    Exception occurred during event dispatching:
    java.lang.NullPointerException
    at javax.swing.plaf.basic.BasicTableUI.paintCell(BasicTableUI.java:987)
    at javax.swing.plaf.basic.BasicTableUI.paintCells(BasicTableUI.java:917)
    at javax.swing.plaf.basic.BasicTableUI.paint(BasicTableUI.java:858)
    at javax.swing.plaf.ComponentUI.update(ComponentUI.java:39)
    at javax.swing.JComponent.paintComponent(JComponent.java:395)
    at javax.swing.JComponent.paint(JComponent.java:687)
    at javax.swing.JComponent.paintChildren(JComponent.java:498)
    at javax.swing.JComponent.paint(JComponent.java:696)
    at javax.swing.JViewport.paint(JViewport.java:668)
    at javax.swing.JComponent.paintWithBuffer(JComponent.java:3878)
    at javax.swing.JComponent._paintImmediately(JComponent.java:3821)
    at javax.swing.JComponent.paintImmediately(JComponent.java:3672)
    at javax.swing.RepaintManager.paintDirtyRegions(RepaintManager.java:370)
    at javax.swing.SystemEventQueueUtilities$ComponentWorkRequest.run(System
    EventQueueUtilities.java:124)
    at java.awt.event.InvocationEvent.dispatch(InvocationEvent.java:154)
    at java.awt.EventQueue.dispatchEvent(EventQueue.java:337)
    at java.awt.EventDispatchThread.pumpOneEventForHierarchy(EventDispatchTh
    read.java:131)
    at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThre
    ad.java:98)
    at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:93)
    at java.awt.EventDispatchThread.run(EventDispatchThread.java:85)
    Exception occurred during event dispatching:
    java.lang.NullPointerException
    at javax.swing.plaf.basic.BasicTableUI.paintCell(BasicTableUI.java:987)
    at javax.swing.plaf.basic.BasicTableUI.paintCells(BasicTableUI.java:917)
    at javax.swing.plaf.basic.BasicTableUI.paint(BasicTableUI.java:858)
    at javax.swing.plaf.ComponentUI.update(ComponentUI.java:39)
    at javax.swing.JComponent.paintComponent(JComponent.java:395)
    at javax.swing.JComponent.paint(JComponent.java:687)
    at javax.swing.JComponent.paintChildren(JComponent.java:498)
    at javax.swing.JComponent.paint(JComponent.java:696)
    at javax.swing.JViewport.paint(JViewport.java:668)
    at javax.swing.JComponent.paintWithBuffer(JComponent.java:3878)
    at javax.swing.JComponent._paintImmediately(JComponent.java:3821)
    at javax.swing.JComponent.paintImmediately(JComponent.java:3672)
    at javax.swing.RepaintManager.paintDirtyRegions(RepaintManager.java:370)
    at javax.swing.SystemEventQueueUtilities$ComponentWorkRequest.run(System
    EventQueueUtilities.java:124)
    at java.awt.event.InvocationEvent.dispatch(InvocationEvent.java:154)
    at java.awt.EventQueue.dispatchEvent(EventQueue.java:337)
    at java.awt.EventDispatchThread.pumpOneEventForHierarchy(EventDispatchTh
    read.java:131)
    at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThre
    ad.java:98)
    at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:93)
    at java.awt.EventDispatchThread.run(EventDispatchThread.java:85)
    * the code of sort part *
    class TableMouseAdapter extends MouseAdapter{
    public void mouseClicked(MouseEvent env){
    Cursor headerCursor = tableHeader.getCursor();
    String cursorName = headerCursor.getName();
    Debug.println("Cursor Name : "+cursorName);
    TableColumnModel colModel = treeTable.getColumnModel();
    selectedColumnIndex = colModel.getColumnIndexAtX(env.getX());
    boolean isLeftMouse = SwingUtilities.isLeftMouseButton(env);
    if(isLeftMouse){
    if(cursorName.equalsIgnoreCase("Default Cursor")){
    if(env.getClickCount() == 2){
    // Sort the project of that column.
    model.sort(selectedColumnIndex);
    }else if(cursorName.equalsIgnoreCase("East Resize Cursor")){
    if(env.getClickCount() == 2){
    Debug.println("XLocation : "+env.getX());
    selectedColumnIndex = colModel.getColumnIndexAtX(env.getX()-10);
    Debug.println("Column index : "+selectedColumnIndex);
    if(selectedColumnIndex>0){
    // resize the width of this column.
    Vector columnValues = getColumnValues(selectedColumnIndex);
    int maxColumnWidth = getMaxColumnWidth(columnValues, selectedColumnIndex);
    resetColumnWidth(colModel, selectedColumnIndex, maxColumnWidth);
    //>> ******** the sort of the model in TableMouseAdapter
    public void sort(int columnIndex){
    this.sortColumnIndex = columnIndex;
    (new Thread(new ProjectSort(root))).start();
    //<< ******** the sort of the model in TableMouseAdapter
    //>>********** the sort thread run method ********************************
    public void run(){
    // Get the sorter from the stack, if the stack size is 0
    // then create a new sorter for the tree-table.
    MergeSort sorter = getSizeSorter();
    if( sorter == null )
    return ;
    // Set is Ascending sort or not ,
    if(oldSortColumn == sortColumnIndex){
    if(isSortAscending){
    isSortAscending = false;
    }else isSortAscending = true;
    }else {isSortAscending = false;}
    // if sort the tree table could not disply its originality node.
    // it would be disply its sort node
    isNeedOriginalityNode = false;
    sortNode(sorter, node);
    // when sort is over, then push the sort to the stack,
    // for to used at next time.
    recycleSorter(sorter);
    oldSortColumn = sortColumnIndex;
    // After the sort, you need to update the UI, and send the update
    // event to the EventCenter.
    treeTableView.getTreeTable().updateUI();
    EventCenter.broadcast(treeTableView.getTreeTable(), EventCenter.UPDATE, treeTableView.updateHashData());
    //<<********** the sort thread run method ********************************
    //>>********** the updateUI of the treeTableView.getTreeTable() *************
    public void updateUI() {
    TreePath selecedPath= null;
    if(tree!=null){
    selecedPath = tree.getSelectionPath();
    try{
    if(tree != null) {
    tree.updateUI();
    super.updateUI();
    // Use the tree's default foreground and background colors in the
    // table.
    LookAndFeel.installColorsAndFont(this, "Tree.background",
    "Tree.foreground", "Tree.font");
    if(tree != null && selecedPath!=null) {
    //Set the seleted path after updateUI.
    tree.setSelectionPath(selecedPath);
    }catch(Exception exp){ exp.printStackTrace(); };
    //<<********** the updateUI of the treeTableView.getTreeTable() *************

    Dear, turingcomplete :
    Thanks for your help, I was changed the thread in my code, my problem was moved.
    thank you again
    sincerely
    yours Urey

  • Exception occurred during event dispatching: ArrayIndexOutOfBoundsException

    Java GUI app that runs fine in NT, ported over to Linux (sparc), recompiled and I get the following traceback when I run it, happens whenever I generate a SWING event. JDK 1.3.0. I have the same problem with the swingset sample app as well:
    Exception occurred during event dispatching:
    java.lang.ArrayIndexOutOfBoundsException: -1017
         at java.awt.Toolkit$SelectiveAWTEventListener.eventDispatched(Toolkit.java:1485)
         at java.awt.Toolkit.notifyAWTEventListeners(Toolkit.java:1355)
         at java.awt.Component.dispatchEventImpl(Component.java:2509)
         at java.awt.Container.dispatchEventToSelf(Container.java:1233)
         at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:2449)
         at java.awt.LightweightDispatcher.trackMouseEnterExit(Container.java:2314)
         at java.awt.LightweightDispatcher.processMouseEvent(Container.java:2189)     at java.awt.LightweightDispatcher.dispatchEvent(Container.java:2125)
         at java.awt.Container.dispatchEventImpl(Container.java:1200)
         at java.awt.Window.dispatchEventImpl(Window.java:912)
         at java.awt.Component.dispatchEvent(Component.java:2499)
         at java.awt.EventQueue.dispatchEvent(EventQueue.java:333)
         at java.awt.EventDispatchThread.pumpOneEvent(EventDispatchThread.java:103)
         at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:93)
         at java.awt.EventDispatchThread.run(EventDispatchThread.java:84)
    Here is also a small sample piece of code that makes it happen too. Whever I "hover" over the button this occurs.
    public class Test
    public static void
    main(String[] argv)
    throws Exception
    // set up GUI
    JFrame frame = new JFrame();
    frame.setBounds(0, 0, 100, 100);
    JPanel panel = new JPanel();
    frame.getContentPane().add(panel);
    panel.setLayout(new BorderLayout());
    panel.add(new JButton("Push me"), BorderLayout.NORTH);
    panel.add(new JLabel("Hello world"), BorderLayout.CENTER);
    frame.pack();
    frame.setVisible(true);
    return;

    In the case of this problem, it happens EVERY TIME I run the application (and happens with Swingset too) and it DOES affect the application. I can't click on buttons, etc. All swing events seem to generate this trace back. I tried recompiling all the code thinking I might have a bad class file or something, but to no avail. Could this be a version mis-match? I'm running Linux 6.2.

  • ..this method should be invoked from the event-dispatching thread?

    I see this (the title that is) in every single Java demo/example program on this (Sun's) site. However, I just tend to
    public static void main(String[] args){
       new whateverTheClassIsCalled();
    }And I've seen this approach on other sites and other example programs.
    So what exactly is better about this;
        public static void main(String[] args) {
            //Schedule a job for the event-dispatching thread:
            //creating and showing this application's GUI.
            javax.swing.SwingUtilities.invokeLater(new Runnable() {
                public void run() {
                    createAndShowGUI();
        }where createAndShowGUI() sets and packs the frame. I just do all this in the class constructor (when it's a JFrame!)
    So what does all this thread dispatching stuff mean, why should I use it etc etc.
    tia.

    Is it just me? For some reason it rubs me the wrong way that swing isn't thread safe. From what I've read, my understanding is that its safe to modify swing components from other threads as long as they haven't asked to be painted. If you don't do paint(), pack() or setVisible(true) until the end of your initialization, you will be safe.
    The reason for not being thread safe is almost certainly performance. Swing is slow enough as it is. Since the vast majority of Swing activity takes place in response to events and thus is on the EDT, there usually isn't a problem.
    This is a serious nuisance in network and database programs where multiple threads are used. I end up using invokeLater a lot in those cases, but never for initialization. Sun has only started to recomment that recently.
    Note that the fireXXX methods do not put the event on the EDT, these simply create Event objects and send them to Listeners. If they are executed off the EDT the Listeners will get called off the EDT.

Maybe you are looking for