Use propertyListener for alignment edits
authoramwaterhouse <Andrew Waterhouse>
Thu, 1 Sep 2005 13:20:56 +0000 (13:20 +0000)
committeramwaterhouse <Andrew Waterhouse>
Thu, 1 Sep 2005 13:20:56 +0000 (13:20 +0000)
12 files changed:
src/jalview/appletgui/AlignFrame.java
src/jalview/appletgui/AlignViewport.java
src/jalview/appletgui/AlignmentPanel.java
src/jalview/appletgui/AnnotationPanel.java
src/jalview/appletgui/CutAndPasteTransfer.java
src/jalview/appletgui/PairwiseAlignPanel.java
src/jalview/appletgui/SeqPanel.java
src/jalview/gui/AlignFrame.java
src/jalview/gui/AlignViewport.java
src/jalview/gui/AlignmentPanel.java
src/jalview/gui/RedundancyPanel.java
src/jalview/gui/SeqPanel.java

index 56efb03..5641846 100755 (executable)
@@ -39,24 +39,6 @@ public class AlignFrame
   public static final int NEW_WINDOW_HEIGHT = 500;\r
   jalview.bin.JalviewLite applet;\r
 \r
-  public AlignFrame(AlignmentI al)\r
-  {\r
-    this.applet = null;\r
-    viewport = new AlignViewport(al, null);\r
-    alignPanel = new AlignmentPanel(this, viewport);\r
-    add(alignPanel);\r
-    alignPanel.validate();\r
-\r
-    this.addWindowListener(new WindowAdapter()\r
-    {\r
-      public void windowClosing(WindowEvent e)\r
-      {\r
-        closeMenuItem_actionPerformed(null);\r
-      }\r
-    });\r
-\r
-  }\r
-\r
 \r
   public AlignFrame(AlignmentI al, jalview.bin.JalviewLite applet)\r
   {\r
@@ -91,6 +73,15 @@ public class AlignFrame
       }\r
     }\r
 \r
+    String param = applet.getParameter("sortBy");\r
+    if(param!=null)\r
+    {\r
+      if (param.equalsIgnoreCase("Id"))\r
+        sortIDMenuItem_actionPerformed(null);\r
+      else if (param.equalsIgnoreCase("Pairwise Identity"))\r
+        sortPairwiseMenuItem_actionPerformed(null);\r
+    }\r
+\r
     this.addWindowListener(new WindowAdapter()\r
     {\r
       public void windowClosing(WindowEvent e)\r
@@ -99,13 +90,21 @@ public class AlignFrame
           }\r
     });\r
 \r
-\r
-\r
+    viewport.addPropertyChangeListener(new java.beans.PropertyChangeListener()\r
+    {\r
+     public void propertyChange(java.beans.PropertyChangeEvent evt)\r
+     {\r
+       if (evt.getPropertyName().equals("alignment"))\r
+       {\r
+         alignmentChanged();\r
+       }\r
+     }\r
+   });\r
   }\r
 \r
   public void inputText_actionPerformed(ActionEvent e)\r
   {\r
-    CutAndPasteTransfer cap = new CutAndPasteTransfer(true);\r
+    CutAndPasteTransfer cap = new CutAndPasteTransfer(true, applet);\r
     Frame frame = new Frame();\r
     frame.add(cap);\r
     jalview.bin.JalviewLite.addFrame(frame, "Cut & Paste Input", 500, 500);\r
@@ -113,7 +112,7 @@ public class AlignFrame
 \r
   protected void outputText_actionPerformed(ActionEvent e)\r
   {\r
-    CutAndPasteTransfer cap = new CutAndPasteTransfer(false);\r
+    CutAndPasteTransfer cap = new CutAndPasteTransfer(false, applet);\r
     Frame frame = new Frame();\r
     frame.add(cap);\r
     jalview.bin.JalviewLite.addFrame(frame,\r
@@ -172,7 +171,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
   protected void redoMenuItem_actionPerformed(ActionEvent e)\r
@@ -180,10 +179,7 @@ public class AlignFrame
     HistoryItem hi = (HistoryItem) redoList.pop();\r
     restoreHistoryItem(hi);\r
     updateEditMenuBar();\r
-    viewport.updateConsensus();\r
-    resetAllColourSchemes();\r
-    alignPanel.repaint();\r
-    alignPanel.repaint();\r
+    viewport.firePropertyChange("alignment", null, viewport.getAlignment().getSequences());\r
   }\r
 \r
   // used by undo and redo\r
@@ -227,9 +223,7 @@ public class AlignFrame
 \r
     updateEditMenuBar();\r
 \r
-    viewport.updateConsensus();\r
-    viewport.updateConservation();\r
-    alignPanel.repaint();\r
+    viewport.firePropertyChange("alignment", null, viewport.getAlignment().getSequences());\r
   }\r
 \r
   public void moveSelectedSequences(boolean up)\r
@@ -420,10 +414,7 @@ public class AlignFrame
       {\r
         viewport.setEndSeq(viewport.alignment.getHeight());\r
         viewport.alignment.getWidth();\r
-        viewport.updateConservation();\r
-        viewport.updateConsensus();\r
-        resetAllColourSchemes();\r
-        alignPanel.repaint();\r
+        viewport.firePropertyChange("alignment", null, viewport.getAlignment().getSequences());\r
       }\r
 \r
     }\r
@@ -489,10 +480,7 @@ public class AlignFrame
       catch (Exception ex)\r
       {}\r
     }\r
-    viewport.updateConservation();\r
-    viewport.updateConsensus();\r
-    resetAllColourSchemes();\r
-    alignPanel.repaint();\r
+    viewport.firePropertyChange("alignment", null, viewport.getAlignment().getSequences());\r
 \r
   }\r
 \r
@@ -562,8 +550,7 @@ public class AlignFrame
           viewport.alignment.deleteGroup(sg);\r
         }\r
       }\r
-      resetAllColourSchemes();\r
-      alignPanel.repaint();\r
+      viewport.firePropertyChange("alignment", null, viewport.getAlignment().getSequences());\r
     }\r
   }\r
 \r
@@ -590,8 +577,7 @@ public class AlignFrame
           viewport.alignment.deleteGroup(sg);\r
         }\r
       }\r
-      resetAllColourSchemes();\r
-      alignPanel.repaint();\r
+      viewport.firePropertyChange("alignment", null, viewport.getAlignment().getSequences());\r
     }\r
 \r
   }\r
@@ -611,10 +597,7 @@ public class AlignFrame
 \r
     viewport.setStartRes(seq.findIndex(startRes)-1);\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 removeAllGapsMenuItem_actionPerformed(ActionEvent e)\r
@@ -665,8 +648,13 @@ public class AlignFrame
     }\r
 \r
     viewport.setStartRes(seq.findIndex(startRes)-1);\r
-    viewport.updateConservation();\r
+    viewport.firePropertyChange("alignment", null, viewport.getAlignment().getSequences());\r
+  }\r
+\r
+  public void alignmentChanged()\r
+  {\r
     viewport.updateConsensus();\r
+    viewport.updateConservation ();\r
     resetAllColourSchemes();\r
     alignPanel.repaint();\r
   }\r
@@ -676,27 +664,26 @@ public class AlignFrame
     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
@@ -707,9 +694,7 @@ public class AlignFrame
       {\r
         ((ClustalxColourScheme)sg.cs).resetClustalX(sg.sequences, sg.getWidth());\r
       }\r
-\r
       sg.recalcConservation();\r
-\r
     }\r
   }\r
 \r
@@ -1100,7 +1085,7 @@ public class AlignFrame
     if (viewport.getSelectionGroup().getSize() > 1)\r
     {\r
       Frame frame = new Frame();\r
-      frame.add(new PairwiseAlignPanel(viewport));\r
+      frame.add(new PairwiseAlignPanel(alignPanel));\r
       jalview.bin.JalviewLite.addFrame(frame, "Pairwise Alignment", 600, 500);\r
     }\r
   }\r
index 4b4d74d..40d3dd4 100755 (executable)
@@ -74,6 +74,14 @@ public class AlignViewport
   boolean scaleLeftWrapped = true;\r
   boolean scaleRightWrapped = true;\r
 \r
+  public Vector vconsensus;\r
+  AlignmentAnnotation consensus;\r
+  AlignmentAnnotation conservation;\r
+  AlignmentAnnotation quality;\r
+\r
+  public int ConsPercGaps = 25; // JBPNote : This should be a scalable property!\r
+\r
+  private java.beans.PropertyChangeSupport changeSupport = new java.beans.PropertyChangeSupport(this);\r
 \r
   boolean ignoreGapsInConsensusCalculation = false;\r
 \r
@@ -139,12 +147,6 @@ public class AlignViewport
     showSequenceFeatures = b;\r
   }\r
 \r
-  public Vector vconsensus;\r
-  AlignmentAnnotation consensus;\r
-  AlignmentAnnotation conservation;\r
-  AlignmentAnnotation quality;\r
-\r
-  public int ConsPercGaps = 25; // JBPNote : This should be a scalable property!\r
 \r
   public void updateConservation()\r
   {\r
@@ -662,9 +664,44 @@ public class AlignViewport
           ignoreGapsInConsensusCalculation);\r
 \r
     }\r
+  }\r
+\r
+  /**\r
+   * Property change listener for changes in alignment\r
+   *\r
+   * @param listener DOCUMENT ME!\r
+   */\r
+  public void addPropertyChangeListener(\r
+      java.beans.PropertyChangeListener listener)\r
+  {\r
+      changeSupport.addPropertyChangeListener(listener);\r
+  }\r
 \r
+  /**\r
+   * DOCUMENT ME!\r
+   *\r
+   * @param listener DOCUMENT ME!\r
+   */\r
+  public void removePropertyChangeListener(\r
+      java.beans.PropertyChangeListener listener)\r
+  {\r
+      changeSupport.removePropertyChangeListener(listener);\r
   }\r
 \r
+  /**\r
+   * Property change listener for changes in alignment\r
+   *\r
+   * @param prop DOCUMENT ME!\r
+   * @param oldvalue DOCUMENT ME!\r
+   * @param newvalue DOCUMENT ME!\r
+   */\r
+  public void firePropertyChange(String prop, Object oldvalue, Object newvalue)\r
+  {\r
+      changeSupport.firePropertyChange(prop, oldvalue, newvalue);\r
+  }\r
+\r
+\r
+\r
   public boolean getIgnoreGapsConsensus()\r
   {\r
     return ignoreGapsInConsensusCalculation;\r
index 1930866..cf383ac 100755 (executable)
@@ -172,6 +172,9 @@ public class AlignmentPanel
     hscrollFillerPanel.setSize(d);\r
 \r
     alignFrame.pack();\r
+\r
+    if(overviewPanel!=null)\r
+          overviewPanel.updateOverviewImage();\r
   }\r
 \r
   public void setIdWidth(int w, int h)\r
@@ -465,13 +468,8 @@ public class AlignmentPanel
     idPanel.idCanvas.setSize(d.width, seqPanel.seqCanvas.getSize().height);\r
     annotationSpaceFillerHolder.setSize(d.width,\r
                                         annotationPanel.getSize().height);\r
-    alabels.setSize(d.width, annotationPanel.getSize().height);\r
 \r
-    alabels.repaint();\r
-    idPanel.idCanvas.repaint();\r
-    seqPanel.seqCanvas.repaint();\r
-    scalePanel.repaint();\r
-    annotationPanel.repaint();\r
+    alabels.setSize(d.width, annotationPanel.getSize().height);\r
 \r
     if (av.getWrapAlignment())\r
     {\r
@@ -487,5 +485,11 @@ public class AlignmentPanel
       setScrollValues(av.getStartRes(), av.getStartSeq());\r
     }\r
 \r
+    alabels.repaint();\r
+    idPanel.idCanvas.repaint();\r
+    seqPanel.seqCanvas.repaint();\r
+    scalePanel.repaint();\r
+    annotationPanel.repaint();\r
+\r
   }\r
 }\r
index c6d3b4e..6399b1c 100755 (executable)
@@ -192,6 +192,8 @@ public class AnnotationPanel
 \r
   public void paint(Graphics g)\r
   {\r
+    g.setColor(Color.white);\r
+    g.fillRect(0,0, getSize().width, getSize().height);\r
     imgWidth = (av.endRes - av.startRes + 1) * av.charWidth;\r
 \r
     if (image == null || imgWidth != image.getWidth(this))\r
index 46f3d70..f8c3756 100755 (executable)
@@ -29,9 +29,11 @@ import jalview.jbappletgui.*;
 public class CutAndPasteTransfer\r
     extends GCutAndPasteTransfer\r
 {\r
-  public CutAndPasteTransfer(boolean forImport)\r
+  jalview.bin.JalviewLite applet;\r
+  public CutAndPasteTransfer(boolean forImport, jalview.bin.JalviewLite mainApplet)\r
   {\r
     super();\r
+    applet = mainApplet;\r
 \r
     if (!forImport)\r
     {\r
@@ -76,7 +78,7 @@ public class CutAndPasteTransfer
 \r
     if (sequences != null)\r
     {\r
-      AlignFrame af = new AlignFrame(new Alignment(sequences));\r
+      AlignFrame af = new AlignFrame(new Alignment(sequences), applet);\r
       jalview.bin.JalviewLite.addFrame(af, "Cut & Paste input - " + format,\r
                                        AlignFrame.NEW_WINDOW_WIDTH,\r
                                        AlignFrame.NEW_WINDOW_HEIGHT);\r
index 55cf2cc..0ff2708 100755 (executable)
@@ -31,16 +31,16 @@ public class PairwiseAlignPanel
     extends GPairwiseAlignPanel\r
 {\r
   Vector sequences = new Vector();\r
-  AlignViewport av;\r
+  AlignmentPanel ap;\r
 \r
-  public PairwiseAlignPanel(AlignViewport av)\r
+  public PairwiseAlignPanel(AlignmentPanel ap)\r
   {\r
     super();\r
-    this.av = av;\r
-    float scores[][] = new float[av.getAlignment().getHeight()][av.getAlignment().\r
+    this.ap = ap;\r
+    float scores[][] = new float[ap.av.alignment.getHeight()][ap.av.alignment.\r
         getHeight()];\r
     double totscore = 0;\r
-    int count = av.getSelectionGroup().getSize();\r
+    int count = ap.av.getSelectionGroup().getSize();\r
 \r
     int acount = 0;\r
     for (int i = 1; i < count; i++)\r
@@ -48,8 +48,8 @@ public class PairwiseAlignPanel
       for (int j = 0; j < i; j++)\r
       {\r
         acount++;\r
-        AlignSeq as = new AlignSeq(av.getSelectionGroup().getSequenceAt(i),\r
-                                   av.getSelectionGroup().getSequenceAt(j),\r
+        AlignSeq as = new AlignSeq(ap.av.getSelectionGroup().getSequenceAt(i),\r
+                                   ap.av.getSelectionGroup().getSequenceAt(j),\r
                                    "pep");\r
 \r
         as.calcScoreMatrix();\r
@@ -88,7 +88,7 @@ public class PairwiseAlignPanel
       seq[i] = (Sequence) sequences.elementAt(i);\r
     }\r
 \r
-    AlignFrame af = new AlignFrame(new Alignment(seq));\r
+    AlignFrame af = new AlignFrame(new Alignment(seq), ap.alignFrame.applet);\r
     jalview.bin.JalviewLite.addFrame(af, "Pairwise Aligned Sequences",\r
                                      AlignFrame.NEW_WINDOW_WIDTH,\r
                                      AlignFrame.NEW_WINDOW_HEIGHT);\r
index d7f11bb..fb11579 100755 (executable)
@@ -459,105 +459,7 @@ public class SeqPanel
         ap.alignFrame.updateEditMenuBar();\r
     }\r
 \r
-    av.updateConservation();\r
-    av.updateConsensus();\r
-\r
-\r
-    //Does the edit affect any groups?\r
-    //////////////////////////////\r
-    Vector groupsToUpdate = new Vector();\r
-    SequenceGroup sg = av.getSelectionGroup();\r
-\r
-    int s, g, gSize = av.alignment.getGroups().size();\r
-    if (sg != null)\r
-    {\r
-      groupsToUpdate.addElement(av.getSelectionGroup());\r
-      int sSize = sg.getSize();\r
-      for (s = 0; s < sSize; s++)\r
-      {\r
-        SequenceI seq = sg.getSequenceAt(s);\r
-\r
-        for (g = 0; g < gSize; g++)\r
-        {\r
-          SequenceGroup sg2 = (SequenceGroup) av.alignment.getGroups().\r
-              elementAt(\r
-                  g);\r
-          if (sg2.sequences.contains(seq))\r
-          {\r
-            if (!groupsToUpdate.contains(sg2))\r
-              groupsToUpdate.addElement(sg2);\r
-            continue;\r
-          }\r
-        }\r
-      }\r
-    }\r
-    else\r
-    {\r
-      SequenceI seq = av.alignment.getSequenceAt(startseq);\r
-      for (g = 0; g < gSize; g++)\r
-      {\r
-        SequenceGroup sg2 = (SequenceGroup) av.alignment.getGroups().elementAt(\r
-            g);\r
-        if (sg2.sequences.contains(seq))\r
-        {\r
-          if (!groupsToUpdate.contains(sg2))\r
-            groupsToUpdate.addElement(sg2);\r
-          continue;\r
-        }\r
-      }\r
-    }\r
-\r
-    gSize = groupsToUpdate.size();\r
-    for (g = 0; g < gSize; g++)\r
-    {\r
-      ( (SequenceGroup) groupsToUpdate.elementAt(g)).recalcConservation();\r
-    }\r
-    ////End of updating groups\r
-      //////////////////////////////////////////\r
-\r
-\r
-    // Y O Y CLUSTALX\r
-    ColourSchemeI cs = av.getGlobalColourScheme();\r
-\r
-    if (av.getSelectionGroup() != null)\r
-    {\r
-        av.getSelectionGroup().recalcConservation();\r
-    }\r
-\r
-    if(cs!=null)\r
-    {\r
-      if (cs.conservationApplied())\r
-      {\r
-        jalview.analysis.Conservation c = new jalview.analysis.Conservation("All",\r
-                                          ResidueProperties.propHash, 3,\r
-                                          av.alignment.getSequences(),\r
-                                          0, av.alignment.getWidth() - 1);\r
-        c.calculate();\r
-        c.verdict(false, av.ConsPercGaps);\r
-\r
-        if (cs instanceof ClustalxColourScheme)\r
-        {\r
-          ((ClustalxColourScheme)cs).\r
-              resetClustalX(av.alignment.getSequences(),\r
-                                av.alignment.getWidth());\r
-          cs.setConservation(c);\r
-          av.setGlobalColourScheme(cs);\r
-        }\r
-        else\r
-        {\r
-          cs.setConservation(c);\r
-          av.setGlobalColourScheme(cs);\r
-        }\r
-\r
-      }\r
-\r
-      if (cs instanceof ClustalxColourScheme)\r
-      {\r
-        ( (ClustalxColourScheme) cs).resetClustalX(av.alignment.getSequences(),\r
-                                                   av.alignment.getWidth());\r
-        av.setGlobalColourScheme(cs);\r
-      }\r
-        }\r
+    av.firePropertyChange("alignment", null,av.getAlignment().getSequences());\r
   }\r
 \r
 //////////////////////////////////////////\r
index ada2421..4b28166 100755 (executable)
@@ -76,21 +76,26 @@ 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
     addServiceListeners();\r
   }\r
 \r
@@ -410,7 +415,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 +428,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 +473,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,21 +701,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
-        resetAllColourSchemes();\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
@@ -786,7 +782,6 @@ public class AlignFrame
                                   viewport.getAlignment().getSequences());\r
     }\r
 \r
-    viewport.resetSeqLimits(alignPanel.seqPanel.seqCanvas.getHeight());\r
 \r
     if (viewport.getAlignment().getHeight() < 1)\r
     {\r
@@ -798,11 +793,6 @@ public class AlignFrame
       {\r
       }\r
     }\r
-\r
-    viewport.updateConservation();\r
-    viewport.updateConsensus();\r
-    resetAllColourSchemes();\r
-    alignPanel.repaint();\r
   }\r
 \r
   /**\r
@@ -911,8 +901,7 @@ public class AlignFrame
         }\r
       }\r
 \r
-      resetAllColourSchemes();\r
-      alignPanel.repaint();\r
+      viewport.firePropertyChange("alignment", null, viewport.getAlignment().getSequences());\r
     }\r
   }\r
 \r
@@ -950,8 +939,7 @@ public class AlignFrame
         }\r
       }\r
 \r
-      resetAllColourSchemes();\r
-      alignPanel.repaint();\r
+      viewport.firePropertyChange("alignment", null, viewport.getAlignment().getSequences());\r
     }\r
   }\r
 \r
@@ -974,10 +962,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
@@ -1040,39 +1025,42 @@ public class AlignFrame
     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
+   viewport.updateConsensus();\r
+   viewport.updateConservation();\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
@@ -1083,9 +1071,7 @@ public class AlignFrame
       {\r
         ((ClustalxColourScheme)sg.cs).resetClustalX(sg.sequences, sg.getWidth());\r
       }\r
-\r
       sg.recalcConservation();\r
-\r
     }\r
   }\r
 \r
@@ -1113,9 +1099,7 @@ public class AlignFrame
       }\r
     }\r
 \r
-    viewport.updateConservation();\r
-    viewport.updateConsensus();\r
-    alignPanel.repaint();\r
+    alignmentChanged();\r
   }\r
 \r
   /**\r
index f951792..ea974d5 100755 (executable)
@@ -851,15 +851,6 @@ public class AlignViewport
         return colSel;\r
     }\r
 \r
-    /**\r
-     * DOCUMENT ME!\r
-     *\r
-     * @param height DOCUMENT ME!\r
-     */\r
-    public void resetSeqLimits(int height)\r
-    {\r
-        setEndSeq(height / getCharHeight());\r
-    }\r
 \r
     /**\r
      * DOCUMENT ME!\r
index ae61383..19f50d0 100755 (executable)
@@ -171,7 +171,7 @@ public class AlignmentPanel extends GAlignmentPanel
         }\r
 \r
         if(overviewPanel!=null)\r
-          overviewPanel.updateOverviewImage();\r
+          overviewPanel.setBoxPosition();\r
 \r
         repaint();\r
     }\r
index 17b5dfa..3901b1f 100755 (executable)
@@ -75,8 +75,7 @@ public class RedundancyPanel extends GSliderPanel
     {\r
         float threshold = slider.getValue();\r
         Vector del;\r
-        HistoryItem it;\r
-        historyList.push(it = new HistoryItem("Remove redundancy",\r
+        historyList.push(new HistoryItem("Remove redundancy",\r
                     ap.av.alignment, HistoryItem.HIDE));\r
 \r
         if ((historyList.size() == 1) ||\r
@@ -127,9 +126,9 @@ public class RedundancyPanel extends GSliderPanel
             }\r
         }\r
 \r
-        ap.av.firePropertyChange("alignment", null,\r
-            ap.av.getAlignment().getSequences());\r
-        ap.av.resetSeqLimits(ap.seqPanel.seqCanvas.getHeight());\r
+        ap.av.firePropertyChange("alignment", null, ap.av.getAlignment().getSequences());\r
+        af.updateEditMenuBar();\r
+\r
 \r
         if (ap.av.getAlignment().getHeight() < 1)\r
         {\r
@@ -141,11 +140,6 @@ public class RedundancyPanel extends GSliderPanel
             {\r
             }\r
         }\r
-\r
-        ap.av.updateConservation();\r
-        ap.av.updateConsensus();\r
-        af.updateEditMenuBar();\r
-        ap.repaint();\r
     }\r
 \r
     /**\r
index 62d95ea..8146be0 100755 (executable)
@@ -585,98 +585,8 @@ public class SeqPanel extends JPanel
         ap.alignFrame.updateEditMenuBar();\r
       }\r
 \r
-      av.updateConservation();\r
-      av.updateConsensus();\r
+      av.firePropertyChange("alignment", null,av.getAlignment().getSequences());\r
 \r
-      //Does the edit affect any groups?\r
-      //////////////////////////////\r
-      Vector groupsToUpdate = new Vector();\r
-      SequenceGroup sg = av.getSelectionGroup();\r
-\r
-      int s, g, gSize = av.alignment.getGroups().size();\r
-      if (sg != null)\r
-      {\r
-        groupsToUpdate.addElement(av.getSelectionGroup());\r
-        int sSize = sg.getSize();\r
-        for (s = 0; s < sSize; s++)\r
-        {\r
-          SequenceI seq = sg.getSequenceAt(s);\r
-\r
-          for (g = 0; g < gSize; g++)\r
-          {\r
-            SequenceGroup sg2 = (SequenceGroup) av.alignment.getGroups().\r
-                elementAt(\r
-                    g);\r
-            if (sg2.sequences.contains(seq))\r
-            {\r
-              if (!groupsToUpdate.contains(sg2))\r
-                groupsToUpdate.addElement(sg2);\r
-              continue;\r
-            }\r
-          }\r
-        }\r
-      }\r
-      else\r
-      {\r
-        SequenceI seq = av.alignment.getSequenceAt(startseq);\r
-        for (g = 0; g < gSize; g++)\r
-        {\r
-          SequenceGroup sg2 = (SequenceGroup) av.alignment.getGroups().elementAt(\r
-              g);\r
-          if (sg2.sequences.contains(seq))\r
-          {\r
-            if (!groupsToUpdate.contains(sg2))\r
-              groupsToUpdate.addElement(sg2);\r
-            continue;\r
-          }\r
-        }\r
-      }\r
-\r
-      gSize = groupsToUpdate.size();\r
-      for (g = 0; g < gSize; g++)\r
-      {\r
-        ( (SequenceGroup) groupsToUpdate.elementAt(g)).recalcConservation();\r
-      }\r
-      ////End of updating groups\r
-      //////////////////////////////////////////\r
-\r
-        // Y O Y CLUSTALX\r
-        ColourSchemeI cs = av.getGlobalColourScheme();\r
-        if(cs!=null)\r
-        {\r
-          if (cs.conservationApplied())\r
-          {\r
-            Conservation c = new Conservation("All",\r
-                                              ResidueProperties.propHash, 3,\r
-                                              av.alignment.getSequences(),\r
-                                              0, av.alignment.getWidth() - 1);\r
-            c.calculate();\r
-            c.verdict(false, av.ConsPercGaps);\r
-\r
-            if (cs instanceof ClustalxColourScheme)\r
-            {\r
-              ((ClustalxColourScheme)cs).\r
-                  resetClustalX(av.alignment.getSequences(),\r
-                                av.alignment.getWidth());\r
-\r
-              cs.setConservation(c);\r
-              av.setGlobalColourScheme(cs);\r
-            }\r
-            else\r
-            {\r
-              cs.setConservation(c);\r
-              av.setGlobalColourScheme(cs);\r
-            }\r
-\r
-          }\r
-\r
-          if (cs instanceof ClustalxColourScheme)\r
-          {\r
-            ( (ClustalxColourScheme) cs).resetClustalX(av.alignment.getSequences(),\r
-                                                       av.alignment.getWidth());\r
-            av.setGlobalColourScheme(cs);\r
-          }\r
-        }\r
     }\r
 \r
     /**\r