Index: DialogVisualizerWrapper.java =================================================================== RCS file: /cvs/vcscore/src/org/netbeans/modules/vcscore/commands/DialogVisualizerWrapper.java,v retrieving revision 1.1 diff -u -r1.1 DialogVisualizerWrapper.java --- DialogVisualizerWrapper.java 2 Dec 2003 17:36:43 -0000 1.1 +++ DialogVisualizerWrapper.java 14 Apr 2005 22:08:28 -0000 @@ -13,7 +13,12 @@ package org.netbeans.modules.vcscore.commands; +import java.awt.AWTEvent; +import java.awt.EventQueue; +import java.awt.Toolkit; import java.awt.event.ActionListener; +import java.awt.event.InvocationEvent; +import java.util.Iterator; import org.netbeans.api.vcs.commands.CommandTask; @@ -246,12 +251,64 @@ return null; } - /** - * @param args the command line arguments - * - public static void main(String args[]) { - new DialogVisualizerWrapper(new javax.swing.JFrame(), true).show(); + private WrapperQueue wrapperQueue; + + public void show() { + controlThePump(); + super.show(); + } + + public void dispose() { + super.dispose(); + wrapperQueue.release(); + } + + private void controlThePump() { + EventQueue queue = Toolkit.getDefaultToolkit().getSystemEventQueue(); + //System.out.println("controlThePump(): queue = "+queue); + this.wrapperQueue = new WrapperQueue(); + queue.push(wrapperQueue); + } + + private class WrapperQueue extends EventQueue { + + private java.util.List ignoredEvents = new java.util.ArrayList(); + + protected void dispatchEvent(AWTEvent theEvent) { + if (ignore(theEvent)) { + synchronized (ignoredEvents) { + ignoredEvents.add(theEvent); + } + } else { + super.dispatchEvent(theEvent); + } + } + + public void release() { + pop(); + EventQueue queue = Toolkit.getDefaultToolkit().getSystemEventQueue(); + for (Iterator it = ignoredEvents.iterator(); it.hasNext(); ) { + AWTEvent event = (AWTEvent) it.next(); + queue.postEvent(event); + //System.out.println("POST Event: "+event); + } + } + + private boolean ignore(AWTEvent event) { + //System.out.println("HAVE Event: "+event); + if (event instanceof InvocationEvent) { + InvocationEvent ie = (InvocationEvent) event; + String ids = ie.paramString(); + if (ids.indexOf("javax.swing") >= 0 || ids.indexOf("java.awt") >= 0 || + ids.indexOf("DialogVisualizerWrapper") >= 0) { + return false; + } else { + //System.out.println("IGNORED Event: "+event); + return true; + } + } + return false; + } } - */ }