X-Git-Url: http://source.jalview.org/gitweb/?a=blobdiff_plain;f=src%2Fjalview%2Fgui%2FAlignFrame.java;h=0b84e9b08e498f8f5d62f7a9903d778c2bbdd33f;hb=60541afc96ff3a4f5b79b78009922f373cbc29c3;hp=4fa840858477186647d2338223c3ab48555273a3;hpb=04e88679fd837e9fe36d186e5eacdd5f13a89927;p=jalview.git diff --git a/src/jalview/gui/AlignFrame.java b/src/jalview/gui/AlignFrame.java index 4fa8408..0b84e9b 100644 --- a/src/jalview/gui/AlignFrame.java +++ b/src/jalview/gui/AlignFrame.java @@ -131,6 +131,7 @@ import java.awt.event.MouseEvent; import java.awt.print.PageFormat; import java.awt.print.PrinterJob; import java.beans.PropertyChangeEvent; +import java.beans.PropertyChangeListener; import java.io.File; import java.io.FileWriter; import java.io.PrintWriter; @@ -413,10 +414,24 @@ public class AlignFrame extends GAlignFrame if (Desktop.getDesktopPane() != null) { this.setDropTarget(new java.awt.dnd.DropTarget(this, this)); - if (!Platform.isJS()) + PropertyChangeListener serviceListener = (Platform.isJS() ? null + : addServiceListeners()); + addInternalFrameListener(new javax.swing.event.InternalFrameAdapter() { - addServiceListeners(); - } + @Override + public void internalFrameClosed( + javax.swing.event.InternalFrameEvent evt) + { + // System.out.println("deregistering discoverer listener"); + if (serviceListener != null) + { + Desktop.getInstance().removeJalviewPropertyChangeListener( + "services", serviceListener); + } + closeMenuItem_actionPerformed(true); + } + }); + setGUINucleotide(); } @@ -833,43 +848,30 @@ public class AlignFrame extends GAlignFrame } /* Set up intrinsic listeners for dynamically generated GUI bits. */ - private void addServiceListeners() + private PropertyChangeListener addServiceListeners() { - final java.beans.PropertyChangeListener thisListener; - Desktop.getInstance().addJalviewPropertyChangeListener("services", - thisListener = new java.beans.PropertyChangeListener() - { - @Override - public void propertyChange(PropertyChangeEvent evt) - { - { - SwingUtilities.invokeLater(new Runnable() - { - - @Override - public void run() - { - System.err.println( - "Rebuild WS Menu for service change"); - BuildWebServiceMenu(); - } - - }); - } - } - }); - addInternalFrameListener(new javax.swing.event.InternalFrameAdapter() + PropertyChangeListener serviceListener = new PropertyChangeListener() { @Override - public void internalFrameClosed( - javax.swing.event.InternalFrameEvent evt) + public void propertyChange(PropertyChangeEvent evt) { - // System.out.println("deregistering discoverer listener"); - Desktop.getInstance().removeJalviewPropertyChangeListener("services", - thisListener); - closeMenuItem_actionPerformed(true); + { + SwingUtilities.invokeLater(new Runnable() + { + + @Override + public void run() + { + System.err.println("Rebuild WS Menu for service change"); + BuildWebServiceMenu(); + } + }); + } } - }); + }; + + Desktop.getInstance().addJalviewPropertyChangeListener("services", + serviceListener); // Finally, build the menu once to get current service state new Thread(new Runnable() { @@ -879,6 +881,7 @@ public class AlignFrame extends GAlignFrame BuildWebServiceMenu(); } }).start(); + return serviceListener; } /**