pickmanager on sequence and alignment position, vamsas pick broadcast and refactor...
[jalview.git] / src / jalview / gui / FeatureSettings.java
index 7e817af..de61be3 100755 (executable)
@@ -37,7 +37,7 @@ public class FeatureSettings
     extends JPanel
 {
   DasSourceBrowser dassourceBrowser;
-  jalview.io.DasSequenceFeatureFetcher dasFeatureFetcher;
+  jalview.ws.DasSequenceFeatureFetcher dasFeatureFetcher;
   JPanel settingsPane = new JPanel();
   JPanel dasSettingsPane = new JPanel();
 
@@ -132,13 +132,13 @@ public class FeatureSettings
       {
         if (!fs.resettingTable && !fs.handlingUpdate) {
           fs.handlingUpdate=true;
-          fs.resetTable(null); // groups may be added with new seuqence feature types only
+          fs.resetTable(null); // new groups may be added with new seuqence feature types only
           fs.handlingUpdate=false;
         }
       }
-      
+
     });
-    
+
     frame = new JInternalFrame();
     frame.setContentPane(this);
     Desktop.addInternalFrame(frame, "Sequence Feature Settings", 400, 450);
@@ -157,7 +157,7 @@ public class FeatureSettings
    * true when Feature Settings are updating from feature renderer
    */
   private boolean handlingUpdate=false;
-  
+
   /**
    * contains a float[3] for each feature type string. created by setTableData
    */
@@ -198,9 +198,9 @@ public class FeatureSettings
           if (!allGroups.contains(group))
           {
             allGroups.addElement(group);
-            if (checkGroupState(group))
+            if (group!=null)
             {
-              // continue; // skip this group's feature - we've done it already ? 
+              checkGroupState(group);
             }
           }
         }
@@ -212,13 +212,13 @@ public class FeatureSettings
         index++;
       }
     }
-    
+
     resetTable(null);
 
     validate();
   }
   /**
-   * 
+   *
    * @param group
    * @return true if group has been seen before and is already added to set.
    */
@@ -228,7 +228,7 @@ public class FeatureSettings
     {
       visible = ( (Boolean) fr.featureGroups.get(group)).booleanValue();
         } else {
-        visible=true; // new group is always made visible 
+        visible=true; // new group is always made visible
       }
 
       if (groupPanel == null)
@@ -250,7 +250,7 @@ public class FeatureSettings
 
       if (alreadyAdded)
       {
-        
+
         return true;
       }
 
@@ -277,8 +277,12 @@ public class FeatureSettings
       return false;
   }
   boolean resettingTable=false;
-  void resetTable(String[] groupChanged)
+  synchronized void resetTable(String[] groupChanged)
   {
+    if (resettingTable==true)
+    {
+      return;
+    }
     resettingTable=true;
     typeWidth=new Hashtable();
     // TODO: change avWidth calculation to 'per-sequence' average and use long rather than float
@@ -314,7 +318,8 @@ public class FeatureSettings
         if (group == null || fr.featureGroups.get(group) == null ||
             ( (Boolean) fr.featureGroups.get(group)).booleanValue())
         {
-          checkGroupState(group);
+          if (group!=null)
+            checkGroupState(group);
           type = tmpfeatures[index].getType();
           if (!visibleChecks.contains(type))
           {
@@ -563,16 +568,16 @@ public class FeatureSettings
     boolean sort=false;
     for (int i=0;i<width.length; i++) {
       //awidth = (float[]) typeWidth.get(data[i][0]);
-      if (width[i]==0) 
+      if (width[i]==0)
       {
         width[i] = fr.getOrder(data[i][0].toString());
         if (width[i]<0)
         {
           width[i] = fr.setOrder(data[i][0].toString(), i/data.length);
         }
-      } else { 
+      } else {
         width[i] /=max; // normalize
-        fr.setOrder(data[i][0].toString(), width[i]); // store for later 
+        fr.setOrder(data[i][0].toString(), width[i]); // store for later
       }
       if (i>0)
         sort = sort || width[i-1]>width[i];
@@ -580,7 +585,7 @@ public class FeatureSettings
     if (sort)
       jalview.util.QuickSort.sort(width, data);
     // update global priority order
-    
+
     updateFeatureRenderer(data,false);
     table.repaint();
   }
@@ -603,11 +608,6 @@ public class FeatureSettings
   {
     fr.setFeaturePriority(data, visibleNew);
     af.alignPanel.paintAlignment(true);
-
-    if (af.alignPanel.overviewPanel != null)
-    {
-      af.alignPanel.overviewPanel.updateOverviewImage();
-    }
   }
 
   int selectedRow = -1;
@@ -778,7 +778,7 @@ public class FeatureSettings
     }
 
     dasFeatureFetcher =
-        new jalview.io.DasSequenceFeatureFetcher(
+        new jalview.ws.DasSequenceFeatureFetcher(
             dataset,
             this,
             selectedSources);
@@ -804,6 +804,17 @@ public class FeatureSettings
     fetchDAS.setEnabled(true);
     cancelDAS.setEnabled(false);
   }
+  public void noDasSourceActive()
+  {
+    JOptionPane.showInternalConfirmDialog(Desktop.desktop,
+            "No das sources were selected.\n"
+            + "Please select some sources and\n"
+            +" try again.",
+            "No Sources Selected",
+            JOptionPane.DEFAULT_OPTION,
+            JOptionPane.INFORMATION_MESSAGE);
+    complete();
+  }
 
   /////////////////////////////////////////////////////////////////////////
   // http://java.sun.com/docs/books/tutorial/uiswing/components/table.html
@@ -918,6 +929,7 @@ public class FeatureSettings
       return this;
     }
   }
+
 }
 
 class ColorEditor