Prima di mettere in pratica il tutto vorrei capire bene come funziona (non mi piace copiare e incollare

)
La classe CustomEvent è stata creata per poter usufruire della variabile fire, e questo è chiaro.
Ho dei problemi a capire il funzionamento del terzo blocco, quelo da inserire nelle classi che devono farsi sentire (finestraprincipale?).
Dalla classe principale Programma, chiamando
this.finestraPrincipale.addMyEventListener(this); vuol dire che tutti gli eventi di finestraPrincipale saranno ascoltati dalla classe Programma?
Per quanto riguarda il metodo launchEvent hai detto che è da annegare nelle classi che devono farsi sentire, (quindi nel nostro caso parliamo di finestraprincipale??).
Però non riesco a capirlo... sembra che crei un solo evento e poi scateni tutti gli eventi registrati in precedenza. Ma se io ho il classico JButton come e a cosa lo associo per farlo funzionare?
Nell'istruzione
CustomEvent event = new CustomEvent(this,fire); il this serve solo come source perchè la classe CustomEvent estende EventObject che si inizializza con un Oggetto Sorgente (visto che poi differenziamo gli eventi tramite il getFire e non il getSource() )?