feature group state and type order preference storage/retrieval.
[jalview.git] / src / jalview / gui / Jalview2XML.java
index ba2364a..b6e6041 100755 (executable)
@@ -751,11 +751,14 @@ public class Jalview2XML
         setting.setDisplay(
             av.featuresDisplayed.containsKey(renderOrder[ro])
             );
-
+        float rorder=ap.seqPanel.seqCanvas.getFeatureRenderer().getOrder(renderOrder[ro]);
+        if (rorder>-1) {
+          setting.setOrder(rorder);
+        }
         fs.addSetting(setting);
         settingsAdded.addElement(renderOrder[ro]);
       }
-
+      
       //Make sure we save none displayed feature settings
       Enumeration en =
           ap.seqPanel.seqCanvas.getFeatureRenderer().featureColours.keys();
@@ -774,11 +777,29 @@ public class Jalview2XML
             );
 
         setting.setDisplay(false);
-
+        float rorder = ap.seqPanel.seqCanvas.getFeatureRenderer().getOrder(key);
+        if (rorder>-1) 
+        {
+          setting.setOrder(rorder);
+        }
         fs.addSetting(setting);
         settingsAdded.addElement(key);
       }
-
+      en = ap.seqPanel.seqCanvas.getFeatureRenderer().featureGroups.keys();
+      Vector groupsAdded=new Vector(); 
+      while (en.hasMoreElements())
+      {
+        String grp = en.nextElement().toString();
+        if (groupsAdded.contains(grp)) 
+        {
+          continue;
+        }
+        Group g = new Group();
+        g.setName(grp);
+        g.setDisplay(((Boolean)ap.seqPanel.seqCanvas.getFeatureRenderer().featureGroups.get(grp)).booleanValue());
+        fs.addGroup(g);
+        groupsAdded.addElement(grp);
+      }
       jms.setFeatureSettings(fs);
 
     }
@@ -1698,9 +1719,11 @@ public class Jalview2XML
         af.alignPanel.seqPanel.seqCanvas.getFeatureRenderer().setColour(setting.
             getType(),
             new java.awt.Color(setting.getColour()));
-
         renderOrder[fs] = setting.getType();
-
+        if (setting.hasOrder())
+          af.alignPanel.seqPanel.seqCanvas.getFeatureRenderer().setOrder(setting.getType(), setting.getOrder());
+        else
+          af.alignPanel.seqPanel.seqCanvas.getFeatureRenderer().setOrder(setting.getType(), fs/jms.getFeatureSettings().getSettingCount());
         if (setting.getDisplay())
         {
           af.viewport.featuresDisplayed.put(
@@ -1709,8 +1732,15 @@ public class Jalview2XML
       }
       af.alignPanel.seqPanel.seqCanvas.getFeatureRenderer().renderOrder =
           renderOrder;
+      Hashtable fgtable;
+      af.alignPanel.seqPanel.seqCanvas.getFeatureRenderer().featureGroups = fgtable=new Hashtable();
+      for (int gs=0;gs<jms.getFeatureSettings().getGroupCount(); gs++) 
+      {
+        Group grp = jms.getFeatureSettings().getGroup(gs);
+        fgtable.put(grp.getName(), new Boolean(grp.getDisplay()));
+      }
     }
-
+    
     if (view.getHiddenColumnsCount() > 0)
     {
       for (int c = 0; c < view.getHiddenColumnsCount(); c++)