import jalview.analysis.*;\r
import jalview.datamodel.*;\r
import java.util.Vector;\r
-\r
-public class SequenceGroup{\r
- String groupName;\r
- boolean isSelected;\r
- boolean displayBoxes;\r
- boolean displayText;\r
- boolean colourText;\r
- boolean display;\r
- Conservation conserve;\r
- Vector aaFrequency;\r
- boolean aaFrequencyValid = false;\r
- public Vector sequences = new Vector();\r
- int width = -1;\r
- public ColourSchemeI cs;\r
-\r
-\r
- public SequenceGroup() {\r
+import java.awt.*;\r
+\r
+public class SequenceGroup\r
+{\r
+ String groupName;\r
+ Conservation conserve;\r
+ Vector aaFrequency;\r
+ boolean displayBoxes;\r
+ boolean displayText;\r
+ boolean colourText;\r
+ public Vector sequences = new Vector();\r
+ int width = -1;\r
+ public ColourSchemeI cs;\r
+ int startRes = 0;\r
+ int endRes = 0;\r
+ Color outlineColour = Color.black;\r
+\r
+ public SequenceGroup()\r
+ {\r
groupName = "Group";\r
- this.isSelected = false;\r
this.displayBoxes = true;\r
this.displayText = true;\r
this.colourText = false;\r
- this.display = true;\r
- cs = new ZappoColourScheme();\r
+ cs = null;\r
}\r
\r
- public SequenceGroup( String groupName, ColourSchemeI scheme, boolean isSelected,\r
- boolean displayBoxes, boolean displayText,\r
- boolean colourText,\r
- boolean display) {\r
+ public SequenceGroup(String groupName, ColourSchemeI scheme,\r
+ boolean displayBoxes, boolean displayText,\r
+ boolean colourText,\r
+ int start,\r
+ int end)\r
+ {\r
\r
this.groupName = groupName;\r
- this.isSelected = isSelected;\r
this.displayBoxes = displayBoxes;\r
this.displayText = displayText;\r
this.colourText = colourText;\r
- this.display = display;\r
this.cs = scheme;\r
+ startRes = start;\r
+ endRes = end;\r
+ }\r
+\r
+ public boolean adjustForRemoveLeft(int col)\r
+ {\r
+ // return value is true if the group still exists\r
+ if(startRes>=col)\r
+ startRes = startRes - col;\r
+ if(endRes>=col)\r
+ {\r
+ endRes = endRes - col;\r
+ if(startRes>endRes)\r
+ startRes = 0;\r
+ }\r
+ else\r
+ {\r
+ // must delete this group!!\r
+ return false;\r
+ }\r
+\r
+ return true;\r
+ }\r
+\r
+ public boolean adjustForRemoveRight(int col)\r
+ {\r
+\r
+ if(startRes>col)\r
+ {\r
+ // delete this group\r
+ return false;\r
+ }\r
+\r
+ if(endRes>=col)\r
+ endRes = col;\r
+\r
+ return true;\r
}\r
\r
+\r
public String getName()\r
{\r
return groupName;\r
{\r
groupName = name;\r
}\r
- public Conservation getConservation() {\r
- return conserve;\r
+\r
+ public Conservation getConservation()\r
+ {\r
+ return conserve;\r
}\r
+\r
public void setConservation(Conservation c)\r
- { conserve = c; }\r
+ {\r
+ conserve = c;\r
+ }\r
\r
- public void addSequence(SequenceI s) {\r
- sequences.addElement(s);\r
+ public void addSequence(SequenceI s)\r
+ {\r
+ if(!sequences.contains(s))\r
+ sequences.addElement(s);\r
+\r
+\r
+ if(cs!=null)\r
+ cs.setConsensus( AAFrequency.calculate(sequences, 0, getWidth()) );\r
+\r
+ if(cs instanceof ConservationColourScheme)\r
+ recalcConservation();\r
}\r
\r
- public void deleteSequence(SequenceI s) {\r
+ void recalcConservation()\r
+ {\r
+ Conservation c = new Conservation(groupName,\r
+ ResidueProperties.propHash, 3,\r
+ sequences, 0, getWidth());\r
+ c.calculate();\r
+ c.verdict(false, 25);\r
+ ConservationColourScheme ccs = (ConservationColourScheme)cs;\r
+ ccs.conserve = c;\r
+ }\r
+\r
+ public void addOrRemove(SequenceI s)\r
+ {\r
+ if(sequences.contains(s))\r
+ deleteSequence(s);\r
+ else\r
+ addSequence(s);\r
+ }\r
+\r
+ public void deleteSequence(SequenceI s)\r
+ {\r
sequences.removeElement(s);\r
+\r
+ if(cs!=null)\r
+ cs.setConsensus( AAFrequency.calculate(sequences, 0, getWidth()) );\r
+\r
+ if(cs instanceof ConservationColourScheme)\r
+ recalcConservation();\r
}\r
\r
- public void setColourText(boolean state) {\r
+\r
+ public int getStartRes()\r
+ {\r
+ return startRes;\r
+ }\r
+\r
+ public int getEndRes()\r
+ {\r
+ return endRes;\r
+ }\r
+\r
+ public void setStartRes(int i)\r
+ {\r
+ startRes = i;\r
+ }\r
+\r
+ public void setEndRes(int i)\r
+ {\r
+ endRes = i;\r
+ }\r
+\r
+ public int getSize()\r
+ {\r
+ return sequences.size();\r
+ }\r
+\r
+ public SequenceI getSequenceAt(int i)\r
+ {\r
+ return (SequenceI) sequences.elementAt(i);\r
+ }\r
+\r
+ public void setColourText(boolean state)\r
+ {\r
colourText = state;\r
}\r
- public boolean getColourText() {\r
+\r
+ public boolean getColourText()\r
+ {\r
return colourText;\r
}\r
\r
- public void setDisplayText(boolean state) {\r
+ public void setDisplayText(boolean state)\r
+ {\r
displayText = state;\r
}\r
\r
- public boolean getDisplayText() {\r
+ public boolean getDisplayText()\r
+ {\r
return displayText;\r
}\r
\r
- public void setDisplayBoxes(boolean state) {\r
+ public void setDisplayBoxes(boolean state)\r
+ {\r
displayBoxes = state;\r
}\r
\r
- public boolean getDisplayBoxes() {\r
+ public boolean getDisplayBoxes()\r
+ {\r
return displayBoxes;\r
}\r
\r
- public int getSize() {\r
- return sequences.size();\r
- }\r
- public SequenceI getSequenceAt(int i) {\r
- return (SequenceI)sequences.elementAt(i);\r
- }\r
-\r
- public Vector getAAFrequency() {\r
- if (aaFrequency == null || aaFrequencyValid == false) {\r
- aaFrequency = AAFrequency.calculate(sequences,0,getWidth());\r
- aaFrequencyValid = true;\r
- }\r
- return aaFrequency;\r
- }\r
-\r
- public int getWidth()\r
+ public int getWidth()\r
+ {\r
+ // MC This needs to get reset when characters are inserted and deleted\r
+ for (int i = 0; i < sequences.size(); i++)\r
{\r
- // MC This needs to get reset when characters are inserted and deleted\r
- for (int i = 0; i < sequences.size(); i++)\r
- {\r
- SequenceI seq = (SequenceI) sequences.elementAt(i);\r
- if (seq.getLength() > width)\r
- width = seq.getLength();\r
- }\r
- return width;\r
+ SequenceI seq = (SequenceI) sequences.elementAt(i);\r
+ if (seq.getLength() > width)\r
+ width = seq.getLength();\r
}\r
-}\r
+ return width;\r
+ }\r
\r
\r
+ public void setOutlineColour(Color c)\r
+ {\r
+ outlineColour = c;\r
+ }\r
+ public Color getOutlineColour()\r
+ {\r
+ return outlineColour;\r
+ }\r
+}\r