X-Git-Url: http://source.jalview.org/gitweb/?a=blobdiff_plain;f=src%2Fjalview%2Fappletgui%2FScalePanel.java;h=af226f3e0a96a267812213f787c789a1ca8e58ea;hb=7e129811d6ff01074428462284dffc2a6c2395a4;hp=24460ba27ab23eaeaa2650c59ccf24ef663eef77;hpb=99c58ee0ae2a848f982552e53feaf6d5cb9925e5;p=jalview.git diff --git a/src/jalview/appletgui/ScalePanel.java b/src/jalview/appletgui/ScalePanel.java index 24460ba..af226f3 100755 --- a/src/jalview/appletgui/ScalePanel.java +++ b/src/jalview/appletgui/ScalePanel.java @@ -1,33 +1,35 @@ /* -* Jalview - A Sequence Alignment Editor and Viewer -* Copyright (C) 2005 AM Waterhouse, J Procter, G Barton, M Clamp, S Searle -* -* This program is free software; you can redistribute it and/or -* modify it under the terms of the GNU General Public License -* as published by the Free Software Foundation; either version 2 -* of the License, or (at your option) any later version. -* -* This program is distributed in the hope that it will be useful, -* but WITHOUT ANY WARRANTY; without even the implied warranty of -* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -* GNU General Public License for more details. -* -* You should have received a copy of the GNU General Public License -* along with this program; if not, write to the Free Software -* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA -*/ + * Jalview - A Sequence Alignment Editor and Viewer + * Copyright (C) 2005 AM Waterhouse, J Procter, G Barton, M Clamp, S Searle + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License + * as published by the Free Software Foundation; either version 2 + * of the License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA + */ package jalview.appletgui; -import jalview.datamodel.*; import java.awt.*; import java.awt.event.*; -public class ScalePanel extends Panel +import jalview.datamodel.*; + +public class ScalePanel + extends Panel { protected int offy = 4; - public int width; + public int width; protected AlignViewport av; AlignmentPanel ap; @@ -37,7 +39,7 @@ public class ScalePanel extends Panel public ScalePanel(AlignViewport av, AlignmentPanel ap) { setLayout(null); - this.av = av; + this.av = av; this.ap = ap; addMouseListener(new MouseAdapter() @@ -46,6 +48,7 @@ public class ScalePanel extends Panel { doMousePressed(evt); } + public void mouseReleased(MouseEvent evt) { doMouseReleased(evt); @@ -62,21 +65,25 @@ public class ScalePanel extends Panel } - - public void doMousePressed(MouseEvent evt) { + public void doMousePressed(MouseEvent evt) + { int x = evt.getX(); - int res = x/av.getCharWidth() + av.getStartRes(); + int res = x / av.getCharWidth() + av.getStartRes(); SequenceGroup sg = null; if (av.getColumnSelection().contains(res)) + { av.getColumnSelection().removeElement(res); + } else { av.getColumnSelection().addElement(res); sg = new SequenceGroup(); for (int i = 0; i < av.alignment.getSequences().size(); i++) - sg.addSequence(av.alignment.getSequenceAt(i)); + { + sg.addSequence(av.alignment.getSequenceAt(i), false); + } sg.setStartRes(res); sg.setEndRes(res); @@ -89,41 +96,53 @@ public class ScalePanel extends Panel public void doMouseReleased(MouseEvent evt) { - if(!stretchingGroup) + if (!stretchingGroup) + { return; + } int x = evt.getX(); - int res = x/av.getCharWidth() + av.getStartRes(); + int res = x / av.getCharWidth() + av.getStartRes(); - if (! av.getColumnSelection().contains(res)) - av.getColumnSelection().addElement(res); + if (!av.getColumnSelection().contains(res)) + { + av.getColumnSelection().addElement(res); + } - SequenceGroup sg = av.getSelectionGroup(); + SequenceGroup sg = av.getSelectionGroup(); - if(res>sg.getStartRes()) - sg.setEndRes(res); - else if(res sg.getStartRes()) + { + sg.setEndRes(res); + } + else if (res < sg.getStartRes()) + { + sg.setStartRes(res); + } - stretchingGroup = false; - ap.repaint(); + stretchingGroup = false; + ap.repaint(); } public void doMouseDragged(MouseEvent evt) { int x = evt.getX(); - int res = x/av.getCharWidth() + av.getStartRes(); + int res = x / av.getCharWidth() + av.getStartRes(); SequenceGroup sg = av.getSelectionGroup(); - if(sg!=null) + if (sg != null) { stretchingGroup = true; if (res > sg.getStartRes()) + { sg.setEndRes(res); + } else if (res < sg.getStartRes()) + { sg.setStartRes(res); + } - ap.annotationPanel.addEditableColumn(res); + ap.annotationPanel.addEditableColumn(res); ap.repaint(); } } @@ -135,60 +154,65 @@ public class ScalePanel extends Panel public void paint(Graphics g) { - drawScale(g, av.getStartRes(), av.getEndRes(), getSize().width, getSize().height); + drawScale(g, av.getStartRes(), av.getEndRes(), getSize().width, + getSize().height); } // scalewidth will normally be screenwidth, - public void drawScale(Graphics gg, int startx, int endx, int width, int height) + public void drawScale(Graphics gg, int startx, int endx, int width, + int height) { gg.setFont(av.getFont()); //Fill in the background gg.setColor(Color.white); - gg.fillRect(0,0,width, height); + gg.fillRect(0, 0, width, height); gg.setColor(Color.black); - //Fill the selected columns ColumnSelection cs = av.getColumnSelection(); - gg.setColor(new Color(220,0,0)); - for (int i=0; i= startx && sel <= endx) - gg.fillRect((sel-startx)*av.charWidth,0,av.charWidth, getSize().height); + int sel = cs.columnAt(i); + if (sel >= startx && sel <= endx) + { + gg.fillRect( (sel - startx) * av.charWidth, 0, av.charWidth, + getSize().height); + } } - // Draw the scale numbers gg.setColor(Color.black); - int scalestartx = (startx/10) * 10; + int scalestartx = (startx / 10) * 10; FontMetrics fm = gg.getFontMetrics(av.getFont()); - int y = av.charHeight -fm.getDescent(); + int y = av.charHeight - fm.getDescent(); - if(scalestartx%10==0) - scalestartx+=5; + if (scalestartx % 10 == 0) + { + scalestartx += 5; + } - for (int i=scalestartx;i < endx; i+= 5) + for (int i = scalestartx; i < endx; i += 5) { - if(i%10==0) + if (i % 10 == 0) { gg.drawString(String.valueOf(i), (i - startx - 1) * av.charWidth, y); gg.drawLine( (int) ( (i - startx - 1) * av.charWidth + av.charWidth / 2), - y+2, + y + 2, (int) ( (i - startx - 1) * av.charWidth + av.charWidth / 2), - y+fm.getDescent()*2); + y + fm.getDescent() * 2); } else + { gg.drawLine( (int) ( (i - startx - 1) * av.charWidth + av.charWidth / 2), - y+fm.getDescent(), + y + fm.getDescent(), (int) ( (i - startx - 1) * av.charWidth + av.charWidth / 2), - y+fm.getDescent()*2); - + y + fm.getDescent() * 2); + } } } - }