boolean showConservation = true;\r
boolean showQuality = true;\r
boolean showConsensus = true;\r
+ boolean upperCasebold = false;\r
\r
boolean colourAppliesToAllGroups = true;\r
ColourSchemeI globalColourScheme = null;\r
\r
// The following vector holds the features which are\r
// currently visible, in the correct order or rendering\r
- Hashtable featuresDisplayed;\r
+ public Hashtable featuresDisplayed;\r
\r
boolean hasHiddenColumns = false;\r
boolean hasHiddenRows = false;\r
boolean showHiddenMarkers = true;\r
\r
\r
- public Vector vconsensus;\r
+ public Hashtable [] hconsensus;\r
AlignmentAnnotation consensus;\r
AlignmentAnnotation conservation;\r
AlignmentAnnotation quality;\r
\r
jalview.bin.JalviewLite applet;\r
\r
+ Hashtable sequenceColours;\r
+\r
boolean MAC = false;\r
\r
public AlignViewport(AlignmentI al, JalviewLite applet)\r
{\r
showConsensus = Boolean.valueOf(param).booleanValue();\r
}\r
+\r
+ param = applet.getParameter("upperCase");\r
+ if (param != null)\r
+ {\r
+ if(param.equalsIgnoreCase("bold"))\r
+ upperCasebold = true;\r
+ }\r
+\r
}\r
// We must set conservation and consensus before setting colour,\r
// as Blosum and Clustal require this to be done\r
globalColourScheme = ColourSchemeProperty.getColour(alignment, colour);\r
if (globalColourScheme != null)\r
{\r
- globalColourScheme.setConsensus(vconsensus);\r
+ globalColourScheme.setConsensus(hconsensus);\r
}\r
}\r
\r
\r
public void updateConsensus()\r
{\r
- Annotation[] annotations = new Annotation[alignment.getWidth()];\r
-\r
// this routine prevents vconsensus becoming a new object each time\r
// consenus is calculated. Important for speed of Blosum62\r
// and PID colouring of alignment\r
- if (vconsensus == null)\r
- {\r
- vconsensus = alignment.getAAFrequency();\r
- }\r
- else\r
- {\r
- Vector temp = alignment.getAAFrequency();\r
- vconsensus.removeAllElements();\r
- Enumeration e = temp.elements();\r
- while (e.hasMoreElements())\r
- {\r
- vconsensus.addElement(e.nextElement());\r
- }\r
- }\r
- Hashtable hash = null;\r
- for (int i = 0; i < alignment.getWidth(); i++)\r
+ int aWidth = alignment.getWidth();\r
+\r
+ Annotation[] annotations = new Annotation[aWidth];\r
+\r
+ hconsensus = new Hashtable[aWidth];\r
+ AAFrequency.calculate(alignment.getSequencesArray(),\r
+ 0, aWidth,\r
+ hconsensus);\r
+\r
+ for (int i = 0; i < aWidth; i++)\r
{\r
- hash = (Hashtable) vconsensus.elementAt(i);\r
float value = 0;\r
if(ignoreGapsInConsensusCalculation)\r
- value = ((Float)hash.get("pid_nogaps")).floatValue();\r
+ value = ((Float)hconsensus[i].get(AAFrequency.PID_NOGAPS)).floatValue();\r
else\r
- value = ((Float)hash.get("pid_gaps")).floatValue();\r
+ value = ((Float)hconsensus[i].get(AAFrequency.PID_GAPS)).floatValue();\r
\r
- String maxRes = hash.get("maxResidue").toString();\r
- String mouseOver = hash.get("maxResidue") + " ";\r
+ String maxRes = hconsensus[i].get(AAFrequency.MAXRESIDUE).toString();\r
+ String mouseOver = maxRes;\r
if (maxRes.length() > 1)\r
{\r
mouseOver = "[" + maxRes + "] ";\r
}\r
\r
if(globalColourScheme!=null)\r
- globalColourScheme.setConsensus(vconsensus);\r
+ globalColourScheme.setConsensus(hconsensus);\r
\r
}\r
/**\r
java.awt.FontMetrics fm = nullFrame.getGraphics().getFontMetrics(font);\r
setCharHeight(fm.getHeight());\r
charWidth = fm.charWidth('M');\r
+\r
+ if(upperCasebold)\r
+ {\r
+ Font f2 = new Font(f.getName(), Font.BOLD, f.getSize());\r
+ fm = nullFrame.getGraphics().getFontMetrics(f2);\r
+ charWidth = fm.stringWidth("MMMMMMMMMMM") / 10;\r
+ }\r
}\r
\r
public Font getFont()\r
// object. Refactoring of Cigar and alignment view representation should\r
// be done to remove redundancy.\r
CigarArray aligview = getViewAsCigars(selectedOnly);\r
- if (aligview!=null)\r
- return new AlignmentView(aligview);\r
+ if (aligview!=null) {\r
+ return new AlignmentView(aligview,\r
+ (selectedOnly && selectionGroup!=null) ? selectionGroup.getStartRes() : 0);\r
+ }\r
return null;\r
}\r
/**\r
showHiddenMarkers = show;\r
}\r
\r
+ public Color getSequenceColour(SequenceI seq)\r
+ {\r
+ if (sequenceColours == null || !sequenceColours.containsKey(seq))\r
+ return Color.white;\r
+ else\r
+ return (Color) sequenceColours.get(seq);\r
+ }\r
+\r
+ public void setSequenceColour(SequenceI seq, Color col)\r
+ {\r
+ if (sequenceColours == null)\r
+ sequenceColours = new Hashtable();\r
+\r
+ if (col == null)\r
+ sequenceColours.remove(seq);\r
+ else\r
+ sequenceColours.put(seq, col);\r
+ }\r
\r
}\r