validCharWidth moved to viewport
[jalview.git] / src / jalview / gui / AlignViewport.java
index 6627941..d4ba5ea 100755 (executable)
@@ -43,7 +43,7 @@ public class AlignViewport
     int endRes;\r
     int startSeq;\r
     int endSeq;\r
-    boolean showFullId = false;\r
+    boolean showJVSuffix = true;\r
     boolean showText = true;\r
     boolean showColourText = false;\r
     boolean showBoxes = true;\r
@@ -61,9 +61,9 @@ public class AlignViewport
     SequenceGroup selectionGroup;\r
     int charHeight;\r
     int charWidth;\r
-    int chunkWidth;\r
-    int chunkHeight;\r
-    Font font = new Font("SansSerif", Font.PLAIN, 10);\r
+    boolean validCharWidth;\r
+    int wrappedWidth;\r
+    Font font;\r
     AlignmentI alignment;\r
     ColumnSelection colSel = new ColumnSelection();\r
     int threshold;\r
@@ -72,12 +72,22 @@ public class AlignViewport
     boolean scaleAboveWrapped = false;\r
     boolean scaleLeftWrapped = true;\r
     boolean scaleRightWrapped = true;\r
+    boolean hasHiddenColumns = false;\r
+    boolean hasHiddenRows = false;\r
+\r
+    boolean cursorMode = false;\r
+\r
+    // The following vector holds the features which are\r
+    // currently visible, in the correct order or rendering\r
+    Hashtable featuresDisplayed = null;\r
+\r
 \r
     /** DOCUMENT ME!! */\r
     public Vector vconsensus;\r
     AlignmentAnnotation consensus;\r
     AlignmentAnnotation conservation;\r
     AlignmentAnnotation quality;\r
+    boolean autoCalculateConsensus = true;\r
 \r
     /** DOCUMENT ME!! */\r
     public int ConsPercGaps = 25; // JBPNote : This should be a scalable property!\r
@@ -87,6 +97,19 @@ public class AlignViewport
 \r
     boolean ignoreGapsInConsensusCalculation = false;\r
 \r
+    boolean isDataset = false;\r
+\r
+    boolean antiAlias = false;\r
+\r
+    boolean padGaps = false;\r
+\r
+\r
+    public AlignViewport(AlignmentI al, boolean dataset)\r
+    {\r
+      isDataset = dataset;\r
+      setAlignment(al);\r
+      init();\r
+    }\r
     /**\r
      * Creates a new AlignViewport object.\r
      *\r
@@ -95,26 +118,29 @@ public class AlignViewport
     public AlignViewport(AlignmentI al)\r
     {\r
         setAlignment(al);\r
+        init();\r
+    }\r
+\r
+    void init()\r
+    {\r
         this.startRes = 0;\r
-        this.endRes = al.getWidth() - 1;\r
+        this.endRes = alignment.getWidth() - 1;\r
         this.startSeq = 0;\r
-        this.endSeq = al.getHeight() - 1;\r
+        this.endSeq = alignment.getHeight() - 1;\r
 \r
-        updateFromPreferences();\r
-    }\r
+      antiAlias = Cache.getDefault("ANTI_ALIAS", false);\r
 \r
-    /**\r
-     * DOCUMENT ME!\r
-     */\r
-    public void updateFromPreferences()\r
-    {\r
-      showFullId = Cache.getDefault("SHOW_FULL_ID", true);\r
+      showJVSuffix = Cache.getDefault("SHOW_JVSUFFIX", true);\r
       showAnnotation = Cache.getDefault("SHOW_ANNOTATIONS", true);\r
       showConservation = Cache.getDefault("SHOW_CONSERVATION", true);\r
 \r
       showQuality = Cache.getDefault("SHOW_QUALITY", true);\r
       showIdentity = Cache.getDefault("SHOW_IDENTITY", true);\r
 \r
+      autoCalculateConsensus = Cache.getDefault("AUTO_CALC_CONSENSUS", true);\r
+\r
+      padGaps = Cache.getDefault("PAD_GAPS", false);\r
+\r
        String fontName = Cache.getDefault("FONT_NAME", "SansSerif");\r
        String fontStyle = Cache.getDefault("FONT_STYLE", Font.PLAIN + "") ;\r
        String fontSize = Cache.getDefault("FONT_SIZE", "10");\r
@@ -138,8 +164,11 @@ public class AlignViewport
 \r
         // We must set conservation and consensus before setting colour,\r
         // as Blosum and Clustal require this to be done\r
-        updateConservation();\r
-        updateConsensus();\r
+        if(vconsensus==null && !isDataset)\r
+        {\r
+          updateConservation();\r
+          updateConsensus();\r
+        }\r
 \r
         if (jalview.bin.Cache.getProperty("DEFAULT_COLOUR") != null)\r
         {\r
@@ -166,16 +195,24 @@ public class AlignViewport
      *\r
      * @param b DOCUMENT ME!\r
      */\r
-    public void showSequenceFeatures(boolean b)\r
+    public void setShowSequenceFeatures(boolean b)\r
     {\r
         showSequenceFeatures = b;\r
     }\r
 \r
+    public boolean getShowSequenceFeatures()\r
+    {\r
+      return showSequenceFeatures;\r
+    }\r
+\r
     /**\r
      * DOCUMENT ME!\r
      */\r
     public void updateConservation()\r
     {\r
+      if(alignment.isNucleotide())\r
+          return;\r
+\r
       try{\r
         Conservation cons = new jalview.analysis.Conservation("All",\r
             jalview.schemes.ResidueProperties.propHash, 3,\r
@@ -253,7 +290,7 @@ public class AlignViewport
                                                  ConsPercGaps + "% gaps",\r
                                                  annotations, 0f, // cons.qualityRange[0].floatValue(),\r
                                                  11f, // cons.qualityRange[1].floatValue()\r
-                                                 1);\r
+                                                 AlignmentAnnotation.BAR_GRAPH);\r
 \r
           if (showConservation)\r
           {\r
@@ -265,7 +302,7 @@ public class AlignViewport
                                             qannotations,\r
                                             cons.qualityRange[0].floatValue(),\r
                                             cons.qualityRange[1].floatValue(),\r
-                                            1);\r
+                                            AlignmentAnnotation.BAR_GRAPH);\r
 \r
           if (showQuality)\r
           {\r
@@ -281,12 +318,19 @@ public class AlignViewport
       }\r
       catch (OutOfMemoryError error)\r
       {\r
-        javax.swing.JOptionPane.showInternalMessageDialog(Desktop.desktop,\r
-            "Out of memory calculating conservation!!"\r
-            +\r
-            "\nSee help files for increasing Java Virtual Machine memory."\r
-            , "Out of memory",\r
-            javax.swing.JOptionPane.WARNING_MESSAGE);\r
+        javax.swing.SwingUtilities.invokeLater(new Runnable()\r
+        {\r
+          public void run()\r
+          {\r
+            javax.swing.JOptionPane.showInternalMessageDialog(Desktop.desktop,\r
+                "Out of memory calculating conservation!!"\r
+                +\r
+                "\nSee help files for increasing Java Virtual Machine memory."\r
+                , "Out of memory",\r
+                javax.swing.JOptionPane.WARNING_MESSAGE);\r
+          }\r
+        });\r
+\r
         System.out.println("Conservation calculation: " + error);\r
         System.gc();\r
 \r
@@ -349,7 +393,7 @@ public class AlignViewport
         if (consensus == null)\r
         {\r
           consensus = new AlignmentAnnotation("Consensus", "PID",\r
-                                              annotations, 0f, 100f, 1);\r
+                                              annotations, 0f, 100f,AlignmentAnnotation.BAR_GRAPH);\r
 \r
           if (showIdentity)\r
           {\r
@@ -366,12 +410,20 @@ public class AlignViewport
 \r
       }catch(OutOfMemoryError error)\r
       {\r
-        javax.swing.JOptionPane.showInternalMessageDialog(Desktop.desktop,\r
-            "Out of memory calculating consensus!!"\r
-            +\r
-            "\nSee help files for increasing Java Virtual Machine memory."\r
-            , "Out of memory",\r
-            javax.swing.JOptionPane.WARNING_MESSAGE);\r
+        javax.swing.SwingUtilities.invokeLater(new Runnable()\r
+        {\r
+          public void run()\r
+          {\r
+            javax.swing.JOptionPane.showInternalMessageDialog(Desktop.desktop,\r
+                "Out of memory calc45ulating consensus!!"\r
+                +\r
+                "\nSee help files for increasing Java Virtual Machine memory."\r
+                , "Out of memory",\r
+                javax.swing.JOptionPane.WARNING_MESSAGE);\r
+          }\r
+        });\r
+\r
+\r
         System.out.println("Consensus calculation: " + error);\r
         System.gc();\r
       }\r
@@ -573,6 +625,7 @@ public class AlignViewport
         java.awt.FontMetrics fm = c.getFontMetrics(font);\r
         setCharHeight(fm.getHeight());\r
         setCharWidth(fm.charWidth('M'));\r
+        validCharWidth = true;\r
     }\r
 \r
     /**\r
@@ -630,9 +683,9 @@ public class AlignViewport
      *\r
      * @param w DOCUMENT ME!\r
      */\r
-    public void setChunkWidth(int w)\r
+    public void setWrappedWidth(int w)\r
     {\r
-        this.chunkWidth = w;\r
+        this.wrappedWidth = w;\r
     }\r
 \r
     /**\r
@@ -640,30 +693,11 @@ public class AlignViewport
      *\r
      * @return DOCUMENT ME!\r
      */\r
-    public int getChunkWidth()\r
+    public int getWrappedWidth()\r
     {\r
-        return chunkWidth;\r
+        return wrappedWidth;\r
     }\r
 \r
-    /**\r
-     * DOCUMENT ME!\r
-     *\r
-     * @param h DOCUMENT ME!\r
-     */\r
-    public void setChunkHeight(int h)\r
-    {\r
-        this.chunkHeight = h;\r
-    }\r
-\r
-    /**\r
-     * DOCUMENT ME!\r
-     *\r
-     * @return DOCUMENT ME!\r
-     */\r
-    public int getChunkHeight()\r
-    {\r
-        return chunkHeight;\r
-    }\r
 \r
     /**\r
      * DOCUMENT ME!\r
@@ -930,9 +964,9 @@ public class AlignViewport
      *\r
      * @return DOCUMENT ME!\r
      */\r
-    public boolean getShowFullId()\r
+    public boolean getShowJVSuffix()\r
     {\r
-        return showFullId;\r
+        return showJVSuffix;\r
     }\r
 \r
     /**\r
@@ -940,11 +974,12 @@ public class AlignViewport
      *\r
      * @param b DOCUMENT ME!\r
      */\r
-    public void setShowFullId(boolean b)\r
+    public void setShowJVSuffix(boolean b)\r
     {\r
-        showFullId = b;\r
+        showJVSuffix = b;\r
     }\r
 \r
+\r
     /**\r
      * DOCUMENT ME!\r
      *\r
@@ -1067,11 +1102,39 @@ public class AlignViewport
       {\r
         globalColourScheme.setThreshold(globalColourScheme.getThreshold(), ignoreGapsInConsensusCalculation);\r
       }\r
-\r
     }\r
 \r
     public boolean getIgnoreGapsConsensus()\r
     {\r
      return ignoreGapsInConsensusCalculation;\r
     }\r
+\r
+    public void setDataset(boolean b)\r
+    {\r
+      isDataset = b;\r
+    }\r
+\r
+    public boolean isDataset()\r
+    {\r
+      return isDataset;\r
+    }\r
+\r
+    public void hideSequence(SequenceI seq)\r
+    {\r
+      alignment.getHiddenSequences().hideSequence(seq);\r
+      hasHiddenRows = true;\r
+    }\r
+\r
+    public void showSequence(int index)\r
+    {\r
+      alignment.getHiddenSequences().showSequence(index);\r
+\r
+      if(alignment.getHiddenSequences().getSize()<1)\r
+        hasHiddenRows = false;\r
+    }\r
+\r
+    public int adjustForHiddenSeqs(int alignmentIndex)\r
+    {\r
+      return alignment.getHiddenSequences().adjustForHiddenSeqs(alignmentIndex);\r
+    }\r
 }\r