new ajax api methods for linking existing jmol viewers with sequences in an alignframe
[jalview.git] / src / jalview / gui / AlignFrame.java
index 18465e1..ca4a48b 100755 (executable)
@@ -30,6 +30,7 @@ import javax.swing.*;
 import javax.swing.event.MenuEvent;
 
 import jalview.analysis.*;
+import jalview.bin.Cache;
 import jalview.commands.*;
 import jalview.datamodel.*;
 import jalview.io.*;
@@ -514,16 +515,14 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener,
   /* Set up intrinsic listeners for dynamically generated GUI bits. */
   private void addServiceListeners()
   {
-    final java.beans.PropertyChangeListener thisListener, thatListener;
-    // Do this once to get current state
-    BuildWebServiceMenu();
-    Desktop.discoverer
-            .addPropertyChangeListener(thisListener = new java.beans.PropertyChangeListener()
+    final java.beans.PropertyChangeListener thisListener;
+    Desktop.instance.addJalviewPropertyChangeListener("services",
+            thisListener = new java.beans.PropertyChangeListener()
             {
               public void propertyChange(PropertyChangeEvent evt)
               {
-                // System.out.println("Discoverer property change.");
-                if (evt.getPropertyName().equals("services"))
+                // // System.out.println("Discoverer property change.");
+                // if (evt.getPropertyName().equals("services"))
                 {
                   SwingUtilities.invokeLater(new Runnable()
                   {
@@ -531,45 +530,28 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener,
                     @Override
                     public void run()
                     {
-                      System.err.println("Change support: build services again.");
+                      System.err
+                              .println("Rebuild WS Menu for service change");
                       BuildWebServiceMenu();
                     }
-                    
+
                   });
                 }
               }
             });
-    jalview.ws.jws2.Jws2Discoverer.getDiscoverer()
-            .addPropertyChangeListener(
-                    thatListener = new java.beans.PropertyChangeListener()
-                    {
-                      public void propertyChange(PropertyChangeEvent evt)
-                      {
-                        SwingUtilities.invokeLater(new Runnable()
-                        {
-
-                          @Override
-                          public void run()
-                          {
-                            System.err.println("Change support: build services again.");
-                            BuildWebServiceMenu();
-                          }
-                          
-                        });
-                        }
-                    });
     addInternalFrameListener(new javax.swing.event.InternalFrameAdapter()
     {
       public void internalFrameClosed(
               javax.swing.event.InternalFrameEvent evt)
       {
-        // System.out.println("deregistering discoverer listener");
-        Desktop.discoverer.removePropertyChangeListener(thisListener);
-        jalview.ws.jws2.Jws2Discoverer.getDiscoverer()
-                .removePropertyChangeListener(thatListener);
+        System.out.println("deregistering discoverer listener");
+        Desktop.instance.removeJalviewPropertyChangeListener("services",
+                thisListener);
         closeMenuItem_actionPerformed(true);
       };
     });
+    // Finally, build the menu once to get current service state
+    BuildWebServiceMenu();
   }
 
   public void setGUINucleotide(boolean nucleotide)
@@ -619,7 +601,7 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener,
     annotationPanelMenuItem.setState(av.showAnnotation);
     viewBoxesMenuItem.setSelected(av.showBoxes);
     viewTextMenuItem.setSelected(av.showText);
-    showUnconservedMenuItem.setSelected(av.showUnconserved);
+    showNonconservedMenuItem.setSelected(av.showUnconserved);
     showGroupConsensus.setSelected(av.showGroupConsensus);
     showGroupConservation.setSelected(av.showGroupConservation);
     showConsensusHistogram.setSelected(av.showConsensusHistogram);
@@ -1561,15 +1543,18 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener,
     if (viewport.hasHiddenColumns)
     {
       hiddenColumns = new Vector();
-      int hiddenOffset = viewport.getSelectionGroup().getStartRes();
+      int hiddenOffset = viewport.getSelectionGroup().getStartRes(), hiddenCutoff = viewport
+              .getSelectionGroup().getEndRes();
       for (int i = 0; i < viewport.getColumnSelection().getHiddenColumns()
               .size(); i++)
       {
         int[] region = (int[]) viewport.getColumnSelection()
                 .getHiddenColumns().elementAt(i);
-
-        hiddenColumns.addElement(new int[]
-        { region[0] - hiddenOffset, region[1] - hiddenOffset });
+        if (region[0] >= hiddenOffset && region[1] <= hiddenCutoff)
+        {
+          hiddenColumns.addElement(new int[]
+          { region[0] - hiddenOffset, region[1] - hiddenOffset });
+        }
       }
     }
 
@@ -3847,7 +3832,9 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener,
       // object broker mechanism.
       Vector wsmenu = new Vector();
       final IProgressIndicator af = this;
-      if ((Discoverer.services != null) && (Discoverer.services.size() > 0))
+      if (Cache.getDefault("SHOW_JWS1_SERVICES", true)
+              && Discoverer.services != null
+              && (Discoverer.services.size() > 0))
       {
         // TODO: refactor to allow list of AbstractName/Handler bindings to be
         // stored or retrieved from elsewhere
@@ -3905,6 +3892,7 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener,
       }
 
       // TODO: move into separate menu builder class.
+      if (Cache.getDefault("SHOW_JWS2_SERVICES", true))
       {
         Jws2Discoverer jws2servs = Jws2Discoverer.getDiscoverer();
         if (jws2servs != null)
@@ -3913,13 +3901,9 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener,
           {
             JMenu jws2men = new JMenu("Jalview 2 Services");
             jws2servs.attachWSMenuEntry(jws2men, this);
-            wsmenu.add(jws2men);
-          }
-          else
-          {
-            if (!jws2servs.isRunning())
+            for (int i = 0, iSize = jws2men.getMenuComponentCount(); i < iSize; i++)
             {
-              new Thread(jws2servs).start();
+              wsmenu.add(jws2men.getMenuComponent(i));
             }
           }
         }
@@ -3963,8 +3947,11 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener,
    */
   private void build_urlServiceMenu(JMenu webService)
   {
-    jalview.ws.EnfinEnvision2OneWay.getInstance().attachWSMenuEntry(
-            webService, this);
+    if (Cache.getDefault("SHOW_ENFIN_SERVICES", true))
+    {
+      jalview.ws.EnfinEnvision2OneWay.getInstance().attachWSMenuEntry(
+              webService, this);
+    }
   }
 
   /*
@@ -4634,7 +4621,7 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener,
    */
   protected void showUnconservedMenuItem_actionPerformed(ActionEvent e)
   {
-    viewport.setShowUnconserved(showUnconservedMenuItem.getState());
+    viewport.setShowUnconserved(showNonconservedMenuItem.getState());
     alignPanel.paintAlignment(true);
   }
 
@@ -4717,9 +4704,8 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener,
       // set view properties for each group
       for (int g = 0; g < gps.length; g++)
       {
-        gps[g].setShowunconserved(viewport.getShowUnconserved());
-        gps[g].setIncludeAllConsSymbols(viewport
-                .isIncludeAllConsensusSymbols());
+        gps[g].setShowNonconserved(viewport.getShowUnconserved());
+        gps[g].setshowSequenceLogo(viewport.isShowSequenceLogo());
         viewport.alignment.addGroup(gps[g]);
         Color col = new Color((int) (Math.random() * 255), (int) (Math
                 .random() * 255), (int) (Math.random() * 255));