3 import jalview.datamodel.*;
\r
4 import jalview.schemes.*;
\r
7 public class DrawableSequence implements SequenceI {
\r
8 protected boolean fastDraw = true;
\r
9 protected Color color = Color.black;
\r
11 protected SequenceI sequence;
\r
13 ColourSchemeI cs = null;
\r
15 public DrawableSequence(SequenceI s) {
\r
21 public DrawableSequence(String name,String seq, int start, int end) {
\r
22 sequence = new Sequence(name,seq,start,end);
\r
27 private void _init() {
\r
31 public void setColourScheme(ColourSchemeI cs) {
\r
35 public Color getResidueBoxColour(int i) {
\r
36 Color c = cs.findColour( sequence.getSequence(i,i+1),i,null);
\r
40 public void drawSequence(Graphics g,int start, int end, int x1, int y1, int width, int height,boolean showScores, boolean displayBoxes, boolean displayText) {
\r
42 if (displayBoxes == true) {
\r
43 drawBoxes(g,start,end,x1,y1,width, height);
\r
45 if (displayText == true) {
\r
46 drawText(g,start,end,x1,y1,width,height);
\r
50 public void drawBoxes(Graphics g,int start, int end, int x1, int y1, int width, int height) {
\r
52 int length = getSequence().length();
\r
54 Color currentColor = Color.white;
\r
57 int curWidth = width;
\r
59 while (i <= end && i < length) {
\r
60 Color c = getResidueBoxColour(i);
\r
62 if (c != currentColor || c != null) {
\r
63 g.fillRect(x1+width*(curStart-start),y1,curWidth,height);
\r
76 g.fillRect(x1+width*(curStart-start),y1,curWidth,height);
\r
79 public void drawText(Graphics g, int start, int end, int x1, int y1, int width, int height) {
\r
81 g.setColor(Color.black);
\r
82 System.out.println("drawablesequence is drawing");
\r
83 // Need to find the sequence position here.
\r
87 if (end < getSequence().length()) {
\r
88 s = getSequence().substring(start,end+1);
\r
90 s = getSequence().substring(start);
\r
92 System.out.println(s+" "+x1+" "+y1);
\r
93 g.drawString(s,x1,y1+height-pady);
\r
96 for (int i=start; i <= end; i++) {
\r
99 if (i < end && i < getSequence().length()) {
\r
100 s = getSequence().substring(i,i+1);
\r
102 s = getSequence().substring(i,i+1);
\r
106 g.drawString(s,x1+width*(i-start),y1+height-pady);
\r
113 public int getPosition(int res) {
\r
118 public int getResidue(int pos) {
\r
123 // SequenceI methods
\r
125 public void setName(String name) {
\r
126 sequence.setName(name);
\r
128 public String getName() {
\r
129 return sequence.getName();
\r
131 public String getDisplayId() {
\r
132 return sequence.getDisplayId();
\r
135 public void setStart(int start) {
\r
136 sequence.setStart(start);
\r
138 public int getStart() {
\r
139 return sequence.getStart();
\r
142 public void setEnd(int end) {
\r
143 sequence.setEnd(end);
\r
145 public int getEnd() {
\r
146 return sequence.getEnd();
\r
149 public int getLength() {
\r
150 return sequence.getLength();
\r
153 public void setSequence(String seq) {
\r
154 sequence.setSequence(seq);
\r
156 public String getSequence() {
\r
157 return sequence.getSequence();
\r
159 public String getSequence(int start,int end) {
\r
160 return sequence.getSequence(start,end);
\r
162 public char getCharAt(int i) {
\r
163 return sequence.getCharAt(i);
\r
166 public void setDescription(String desc) {
\r
167 sequence.setDescription(desc);
\r
169 public String getDescription() {
\r
170 return sequence.getDescription();
\r
173 public int findIndex(int pos) {
\r
174 return sequence.findIndex(pos);
\r
176 public int findPosition(int i) {
\r
177 return sequence.findPosition(i);
\r
181 public void deleteCharAt(int i) {
\r
182 sequence.deleteCharAt(i);
\r
185 public void insertCharAt(int i,char c) {
\r
186 sequence.insertCharAt(i,c);
\r
190 public void insertCharAt(int i,char c,boolean chop) {
\r
191 sequence.insertCharAt(i,c,chop);
\r
194 public Color getColor() {
\r
198 public void setColor(Color c) {
\r