make groups from selection
[jalview.git] / src / jalview / appletgui / AlignFrame.java
index 07c717c..74f12ef 100755 (executable)
@@ -26,6 +26,7 @@ import java.awt.*;
 import java.awt.event.*;
 
 import jalview.analysis.*;
+import jalview.bin.JalviewLite;
 import jalview.commands.*;
 import jalview.datamodel.*;
 import jalview.io.*;
@@ -175,6 +176,10 @@ public class AlignFrame extends EmbmenuFrame implements ActionListener,
       }
       viewport.showSequenceFeatures = true;
       sequenceFeatures.setState(true);
+      if (viewport.featureSettings!=null)
+      {
+        viewport.featureSettings.refreshTable();
+      }
       alignPanel.paintAlignment(true);
     }
 
@@ -646,6 +651,10 @@ public class AlignFrame extends EmbmenuFrame implements ActionListener,
     {
       delete_actionPerformed();
     }
+    else if (source == grpsFromSelection)
+    {
+      makeGrpsFromSelection_actionPerformed();
+    }
     else if (source == deleteGroups)
     {
       deleteGroups_actionPerformed();
@@ -1590,7 +1599,36 @@ public class AlignFrame extends EmbmenuFrame implements ActionListener,
       this.setVisible(false);
     }
   }
-
+  protected void makeGrpsFromSelection_actionPerformed()
+  {
+    if (viewport.getSelectionGroup() != null)
+    {
+      SequenceGroup[] gps = jalview.analysis.Grouping.makeGroupsFrom(
+              viewport.getSequenceSelection(), viewport.getAlignmentView(
+                      true).getSequenceStrings(viewport.getGapCharacter()),
+              viewport.alignment.getGroups());
+      viewport.alignment.deleteAllGroups();
+      viewport.sequenceColours = null;
+      viewport.setSelectionGroup(null);
+      // set view properties for each group
+      for (int g = 0; g < gps.length; g++)
+      {
+        // gps[g].setShowunconserved(viewport.getShowUnconserved());
+        gps[g].setIncludeAllConsSymbols(viewport.isIncludeAllConsensusSymbols());
+        viewport.alignment.addGroup(gps[g]);
+        Color col = new Color((int) (Math.random() * 255), (int) (Math
+                .random() * 255), (int) (Math.random() * 255));
+        col = col.brighter();
+        for (Enumeration sq = gps[g].getSequences(null).elements(); sq
+                .hasMoreElements(); viewport.setSequenceColour(
+                (SequenceI) sq.nextElement(), col))
+          ;
+      }
+      PaintRefresher.Refresh(this, viewport.getSequenceSetId());
+      // alignPanel.updateAnnotation();
+      alignPanel.paintAlignment(true);
+    }
+  }
   protected void deleteGroups_actionPerformed()
   {
     viewport.alignment.deleteAllGroups();
@@ -2356,10 +2394,11 @@ public class AlignFrame extends EmbmenuFrame implements ActionListener,
     class AboutPanel extends Canvas
     {
       String version;
-
-      public AboutPanel(String version)
+      String builddate;
+      public AboutPanel(String version, String builddate)
       {
         this.version = version;
+        this.builddate = builddate;
       }
 
       public void paint(Graphics g)
@@ -2375,6 +2414,8 @@ public class AlignFrame extends EmbmenuFrame implements ActionListener,
         // lite and application
         g.setFont(new Font("Helvetica", Font.BOLD, 14));
         g.drawString("JalviewLite - Release " + version, x, y += fh);
+        g.setFont(new Font("Helvetica", Font.BOLD, 12));
+        g.drawString("Build date: "+builddate, x, y += fh);
         g.setFont(new Font("Helvetica", Font.PLAIN, 12));
         g
                 .drawString(
@@ -2397,30 +2438,8 @@ public class AlignFrame extends EmbmenuFrame implements ActionListener,
       }
     }
 
-    String version = "test";
-    java.net.URL url = getClass().getResource("/.build_properties");
-    if (url != null)
-    {
-      try
-      {
-        BufferedReader reader = new BufferedReader(new InputStreamReader(
-                url.openStream()));
-        String line;
-        while ((line = reader.readLine()) != null)
-        {
-          if (line.indexOf("VERSION") > -1)
-          {
-            version = line.substring(line.indexOf("=") + 1);
-          }
-        }
-      } catch (Exception ex)
-      {
-        ex.printStackTrace();
-      }
-    }
-
     Frame frame = new Frame();
-    frame.add(new AboutPanel(version));
+    frame.add(new AboutPanel(JalviewLite.getVersion(), JalviewLite.getBuildDate()));
     jalview.bin.JalviewLite.addFrame(frame, "Jalview", 580, 220);
 
   }
@@ -2581,6 +2600,8 @@ public class AlignFrame extends EmbmenuFrame implements ActionListener,
 
   MenuItem deleteGroups = new MenuItem();
 
+  MenuItem grpsFromSelection= new MenuItem();
+
   MenuItem delete = new MenuItem();
 
   MenuItem copy = new MenuItem();
@@ -2759,6 +2780,8 @@ public class AlignFrame extends EmbmenuFrame implements ActionListener,
     nucleotideColour.addActionListener(this);
     deleteGroups.setLabel("Undefine Groups");
     deleteGroups.addActionListener(this);
+    grpsFromSelection.setLabel("Make Groups for selection");
+    grpsFromSelection.addActionListener(this);
     copy.setLabel("Copy");
     copy.addActionListener(this);
     cut.setLabel("Cut");
@@ -2948,7 +2971,9 @@ public class AlignFrame extends EmbmenuFrame implements ActionListener,
     selectMenu.add(deselectAllSequenceMenuItem);
     selectMenu.add(invertSequenceMenuItem);
     selectMenu.add(invertColSel);
+    selectMenu.add(grpsFromSelection);
     selectMenu.add(deleteGroups);
+    
   }
 
   MenuItem featureSettings = new MenuItem();