private void fire(Object e) { if (!ignoreEvents) { setIgnoreEvents(true); try { // XXX this could be prettier... if (logger.isLoggable(Level.FINE)) { logger.fine("Event received: " + e); // NOI18N } if (e instanceof EventObject && ((EventObject) e).getSource() instanceof Component) { wizardPage.userInputReceived((Component) ((EventObject) e).getSource(), e); } else if (e instanceof TreeSelectionEvent) { logger.fine("Looking for a tree for a tree selection event"); // NOI18N TreeSelectionModel mdl = (TreeSelectionModel) ((TreeSelectionEvent) e).getSource(); for (Iterator i = listenedTo.iterator(); i.hasNext(); ) { Object o = i.next(); if (o instanceof JTree && ((JTree) o).getSelectionModel() == mdl) { if (logger.isLoggable(Level.FINE)) { logger.fine(" found it: " + o); // NOI18N } wizardPage.userInputReceived((Component) o, e); break; } } } else if (e instanceof DocumentEvent) { logger.fine("Looking for a JTextComponent for a DocumentEvent"); // NOI18N Document document = ((DocumentEvent) e).getDocument(); for (Iterator i = listenedTo.iterator(); i.hasNext(); ) { Object o = i.next(); if (o instanceof JTextComponent && ((JTextComponent) o).getDocument() == document) { if (logger.isLoggable(Level.FINE)) { logger.fine(" found it: " + o); // NOI18N } wizardPage.userInputReceived((Component) o, e); break; } } } else if (e instanceof ListSelectionEvent) { logger.fine("Looking for a JList or JTable for a ListSelectionEvent"); // NOI18N ListSelectionModel model = (ListSelectionModel) ((ListSelectionEvent) e).getSource(); for (Iterator i = listenedTo.iterator(); i.hasNext(); ) { Object o = i.next(); if (o instanceof JList && ((JList) o).getSelectionModel() == model) { if (logger.isLoggable(Level.FINE)) { logger.fine(" found it: " + o); // NOI18N } wizardPage.userInputReceived((Component) o, e); break; } else if (o instanceof JTable && ((JTable) o).getSelectionModel() == model) { if (logger.isLoggable(Level.FINE)) { logger.fine(" found it: " + o); // NOI18N } wizardPage.userInputReceived((Component) o, e); break; } } } else { wizardPage.userInputReceived(null, e); } } finally { setIgnoreEvents(false); } } }