TreePanel takes viewport
[jalview.git] / src / jalview / gui / AlignFrame.java
index efe8e63..46b2cc5 100755 (executable)
@@ -68,6 +68,17 @@ public class AlignFrame
   {\r
     viewport = new AlignViewport(al);\r
 \r
+    if(viewport.vconsensus==null)\r
+    {\r
+      //Out of memory caluclating consensus.\r
+      BLOSUM62Colour.setEnabled(false);\r
+      PIDColour.setEnabled(false);\r
+      conservationMenuItem.setEnabled(false);\r
+      modifyConservation.setEnabled(false);\r
+      abovePIDThreshold.setEnabled(false);\r
+      modifyPID.setEnabled(false);\r
+    }\r
+\r
     alignPanel = new AlignmentPanel(this, viewport);\r
     alignPanel.annotationPanel.adjustPanelHeight();\r
     alignPanel.annotationSpaceFillerHolder.setPreferredSize(alignPanel.\r
@@ -76,21 +87,27 @@ public class AlignFrame
         getPreferredSize());\r
     alignPanel.setAnnotationVisible(viewport.getShowAnnotation());\r
 \r
+    String sortby = jalview.bin.Cache.getDefault("SORT_ALIGNMENT", "No sort");\r
+\r
+    if(sortby.equals("Id"))\r
+      sortIDMenuItem_actionPerformed(null);\r
+    else if(sortby.equals("Pairwise Identity"))\r
+      sortPairwiseMenuItem_actionPerformed(null);\r
+\r
     getContentPane().add(alignPanel, java.awt.BorderLayout.CENTER);\r
 \r
-    addInternalFrameListener(new InternalFrameAdapter()\r
+    viewport.addPropertyChangeListener(new PropertyChangeListener()\r
     {\r
-      public void internalFrameActivated(InternalFrameEvent evt)\r
-      {\r
-        javax.swing.SwingUtilities.invokeLater(new Runnable()\r
-        {\r
-          public void run()\r
-          {\r
-            alignPanel.requestFocus();\r
-          }\r
-        });\r
-      }\r
-    });\r
+     public void propertyChange(PropertyChangeEvent evt)\r
+     {\r
+       if (evt.getPropertyName().equals("alignment"))\r
+       {\r
+         alignmentChanged();\r
+       }\r
+     }\r
+   });\r
+\r
+\r
     addServiceListeners();\r
   }\r
 \r
@@ -410,7 +427,7 @@ public class AlignFrame
     redoList.push(new HistoryItem(hi.getDescription(), viewport.alignment,\r
                                   HistoryItem.HIDE));\r
     restoreHistoryItem(hi);\r
-    resetAllColourSchemes();\r
+    viewport.firePropertyChange("alignment", null, viewport.getAlignment().getSequences());\r
   }\r
 \r
   /**\r
@@ -423,9 +440,7 @@ public class AlignFrame
     HistoryItem hi = (HistoryItem) redoList.pop();\r
     restoreHistoryItem(hi);\r
     updateEditMenuBar();\r
-    viewport.updateConsensus();\r
-    resetAllColourSchemes();\r
-    alignPanel.repaint();\r
+    viewport.firePropertyChange("alignment", null, viewport.getAlignment().getSequences());\r
   }\r
 \r
   // used by undo and redo\r
@@ -470,9 +485,6 @@ public class AlignFrame
 \r
     updateEditMenuBar();\r
 \r
-    viewport.updateConsensus();\r
-    viewport.updateConservation();\r
-    alignPanel.repaint();\r
     viewport.firePropertyChange("alignment", null,\r
                                 viewport.getAlignment().getSequences());\r
   }\r
@@ -701,20 +713,17 @@ public class AlignFrame
       }\r
       else\r
       {\r
-        viewport.firePropertyChange("alignment", null,\r
-                                    viewport.getAlignment().getSequences());\r
         viewport.setEndSeq(viewport.alignment.getHeight());\r
         viewport.alignment.getWidth();\r
-        viewport.updateConservation();\r
-        viewport.updateConsensus();\r
-        alignPanel.repaint();\r
+        viewport.firePropertyChange("alignment", null, viewport.getAlignment().getSequences());\r
       }\r
     }\r
     catch (Exception ex)\r
     {\r
+        // could be anything being pasted in here\r
     }\r
 \r
-    // could be anything being pasted in here\r
+\r
   }\r
 \r
   /**\r
@@ -779,13 +788,10 @@ public class AlignFrame
     viewport.setSelectionGroup(null);\r
     viewport.alignment.deleteGroup(sg);\r
 \r
-    if (seqsdeleted)\r
-    {\r
-      viewport.firePropertyChange("alignment", null,\r
+    viewport.firePropertyChange("alignment", null,\r
                                   viewport.getAlignment().getSequences());\r
-    }\r
 \r
-    viewport.resetSeqLimits(alignPanel.seqPanel.seqCanvas.getHeight());\r
+\r
 \r
     if (viewport.getAlignment().getHeight() < 1)\r
     {\r
@@ -797,10 +803,6 @@ public class AlignFrame
       {\r
       }\r
     }\r
-\r
-    viewport.updateConservation();\r
-    viewport.updateConsensus();\r
-    alignPanel.repaint();\r
   }\r
 \r
   /**\r
@@ -909,7 +911,7 @@ public class AlignFrame
         }\r
       }\r
 \r
-      alignPanel.repaint();\r
+      viewport.firePropertyChange("alignment", null, viewport.getAlignment().getSequences());\r
     }\r
   }\r
 \r
@@ -947,7 +949,7 @@ public class AlignFrame
         }\r
       }\r
 \r
-      alignPanel.repaint();\r
+      viewport.firePropertyChange("alignment", null, viewport.getAlignment().getSequences());\r
     }\r
   }\r
 \r
@@ -970,10 +972,7 @@ public class AlignFrame
 \r
     viewport.setStartRes(seq.findIndex(startRes)-1);\r
 \r
-    resetAllColourSchemes();\r
-    viewport.updateConservation();\r
-    viewport.updateConsensus();\r
-    alignPanel.repaint();\r
+   viewport.firePropertyChange("alignment", null, viewport.getAlignment().getSequences());\r
   }\r
 \r
   /**\r
@@ -1035,40 +1034,45 @@ public class AlignFrame
 \r
     viewport.setStartRes(seq.findIndex(startRes)-1);\r
 \r
-\r
-    viewport.updateConservation();\r
-    viewport.updateConsensus();\r
-    resetAllColourSchemes();\r
-    alignPanel.repaint();\r
+    viewport.firePropertyChange("alignment", null, viewport.getAlignment().getSequences());\r
   }\r
 \r
+ public void alignmentChanged()\r
+ {\r
+   if(viewport.vconsensus!=null)\r
+   {\r
+     viewport.updateConsensus();\r
+     viewport.updateConservation();\r
+   }\r
+   resetAllColourSchemes();\r
+   alignPanel.repaint();\r
+ }\r
 \r
   void resetAllColourSchemes()\r
   {\r
     ColourSchemeI cs = viewport.globalColourScheme;\r
     if(cs!=null)\r
     {\r
-        cs.setConsensus(viewport.vconsensus);\r
-        if(cs.conservationApplied())\r
-        {\r
-          Alignment al = (Alignment) viewport.alignment;\r
-          Conservation c = new Conservation("All",\r
-                                            ResidueProperties.propHash, 3,\r
-                                            al.getSequences(), 0,\r
-                                            al.getWidth() - 1);\r
-          c.calculate();\r
-          c.verdict(false, viewport.ConsPercGaps);\r
+      if (cs instanceof ClustalxColourScheme)\r
+      {\r
+        ( (ClustalxColourScheme) viewport.getGlobalColourScheme()).\r
+            resetClustalX(viewport.alignment.getSequences(),\r
+                          viewport.alignment.getWidth());\r
+      }\r
 \r
-          cs.setConservation(c);\r
-        }\r
-    }\r
+      cs.setConsensus(viewport.vconsensus);\r
+      if (cs.conservationApplied())\r
+      {\r
+        Alignment al = (Alignment) viewport.alignment;\r
+        Conservation c = new Conservation("All",\r
+                                          ResidueProperties.propHash, 3,\r
+                                          al.getSequences(), 0,\r
+                                          al.getWidth() - 1);\r
+        c.calculate();\r
+        c.verdict(false, viewport.ConsPercGaps);\r
 \r
-    if(viewport.getGlobalColourScheme()!=null\r
-       && viewport.getGlobalColourScheme() instanceof ClustalxColourScheme)\r
-    {\r
-      ((ClustalxColourScheme)viewport.getGlobalColourScheme()).\r
-          resetClustalX(viewport.alignment.getSequences(),\r
-                        viewport.alignment.getWidth());\r
+        cs.setConservation(c);\r
+      }\r
     }\r
 \r
     int s, sSize = viewport.alignment.getGroups().size();\r
@@ -1079,9 +1083,7 @@ public class AlignFrame
       {\r
         ((ClustalxColourScheme)sg.cs).resetClustalX(sg.sequences, sg.getWidth());\r
       }\r
-\r
       sg.recalcConservation();\r
-\r
     }\r
   }\r
 \r
@@ -1109,9 +1111,7 @@ public class AlignFrame
       }\r
     }\r
 \r
-    viewport.updateConservation();\r
-    viewport.updateConsensus();\r
-    alignPanel.repaint();\r
+    alignmentChanged();\r
   }\r
 \r
   /**\r