X-Git-Url: http://source.jalview.org/gitweb/?a=blobdiff_plain;f=src%2Fjalview%2Fgui%2FScalePanel.java;h=3842b996266761a5e8d9edb4562e8f8564a4e6ec;hb=db93a1adcbe0a4eaaf06e0a70ade0d6c5c1961c3;hp=e9082b88cc761f024cc6a48279f55d8172fb28fd;hpb=f0ea7e292e26e7cec19720be39b143d261f53821;p=jalview.git diff --git a/src/jalview/gui/ScalePanel.java b/src/jalview/gui/ScalePanel.java index e9082b8..3842b99 100755 --- a/src/jalview/gui/ScalePanel.java +++ b/src/jalview/gui/ScalePanel.java @@ -1,415 +1,586 @@ -/* - * 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.gui; - -import jalview.datamodel.*; - -import java.awt.*; -import java.awt.event.*; - -import javax.swing.*; - - -/** - * DOCUMENT ME! - * - * @author $author$ - * @version $Revision$ - */ -public class ScalePanel extends JPanel implements MouseMotionListener, MouseListener -{ - protected int offy = 4; - - /** DOCUMENT ME!! */ - public int width; - protected AlignViewport av; - AlignmentPanel ap; - boolean stretchingGroup = false; - int min; //used by mouseDragged to see if user - int max; //used by mouseDragged to see if user - boolean mouseDragging = false; - - // wants to delete columns - public ScalePanel(AlignViewport av, AlignmentPanel ap) - { - this.av = av; - this.ap = ap; - - addMouseListener(this); - addMouseMotionListener(this); - } - - /** - * DOCUMENT ME! - * - * @param evt DOCUMENT ME! - */ - public void mousePressed(MouseEvent evt) - { - int x = (evt.getX() / av.getCharWidth()) + av.getStartRes(); - final int res; - - if(av.hasHiddenColumns) - res = av.getColumnSelection().adjustForHiddenColumns(x); - else - res = x; - - min = res; - max = res; - - /* if(reveal != null && SwingUtilities.isRightMouseButton(evt)) - { - JPopupMenu pop = new JPopupMenu(); - JMenuItem item = new JMenuItem("Reveal"); - item.addActionListener(new ActionListener() - { - public void actionPerformed(ActionEvent e) - { - av.getColumnSelection().revealHiddenColumns(reveal[0], av); - reveal = null; - ap.repaint(); - if(ap.overviewPanel != null) - ap.overviewPanel.updateOverviewImage(); - } - }); - pop.add(item); - - if(av.getColumnSelection().hiddenColumns.size()>1) - { - item = new JMenuItem("Reveal All"); - item.addActionListener(new ActionListener() - { - public void actionPerformed(ActionEvent e) - { - av.getColumnSelection().revealAllHiddenColumns(av); - reveal = null; - ap.repaint(); - if(ap.overviewPanel != null) - ap.overviewPanel.updateOverviewImage(); - } - }); - pop.add(item); - } - - pop.show(this, evt.getX(), evt.getY()); - - } - else*/ - if (av.getColumnSelection().contains(res)) - { - /* if( SwingUtilities.isRightMouseButton(evt)) - { - JPopupMenu pop = new JPopupMenu(); - JMenuItem item = new JMenuItem("Hide Columns"); - item.addActionListener(new ActionListener() - { - public void actionPerformed(ActionEvent e) - { - av.getColumnSelection().hideColumns(res, av); - ap.repaint(); - if(ap.overviewPanel != null) - ap.overviewPanel.updateOverviewImage(); - } - }); - pop.add(item); - pop.show(this, evt.getX(), evt.getY()); - - } - else*/ - { - av.getColumnSelection().removeElement(res); - av.setSelectionGroup(null); - } - } - else - { - av.getColumnSelection().addElement(res); - SequenceGroup sg = new SequenceGroup(); - - for (int i = 0; i < av.alignment.getSequences().size(); i++) - { - sg.addSequence(av.alignment.getSequenceAt(i), false); - } - - sg.setStartRes(res); - sg.setEndRes(res); - av.setSelectionGroup(sg); - } - - - ap.repaint(); - } - - /** - * DOCUMENT ME! - * - * @param evt DOCUMENT ME! - */ - public void mouseReleased(MouseEvent evt) - { - mouseDragging = false; - - int res = (evt.getX() / av.getCharWidth()) + av.getStartRes(); - - if(av.hasHiddenColumns) - res = av.getColumnSelection().adjustForHiddenColumns(res); - - if (!stretchingGroup) - { - ap.repaint(); - - return; - } - - SequenceGroup sg = av.getSelectionGroup(); - - if (res > sg.getStartRes()) - { - sg.setEndRes(res); - } - else if (res < sg.getStartRes()) - { - sg.setStartRes(res); - } - - stretchingGroup = false; - ap.repaint(); - } - - /** - * DOCUMENT ME! - * - * @param evt DOCUMENT ME! - */ - public void mouseDragged(MouseEvent evt) - { - mouseDragging = true; - - int res = (evt.getX() / av.getCharWidth()) + av.getStartRes(); - - if(av.hasHiddenColumns) - res = av.getColumnSelection().adjustForHiddenColumns(res); - - if (res < min) - { - min = res; - } - - if (res > max) - { - max = res; - } - - - SequenceGroup sg = av.getSelectionGroup(); - - if (sg != null) - { - stretchingGroup = true; - - if (!av.getColumnSelection().contains(res)) - { - av.getColumnSelection().addElement(res); - } - - if (res > sg.getStartRes()) - { - sg.setEndRes(res); - } - if (res < sg.getStartRes()) - { - sg.setStartRes(res); - } - - for (int i = min; i <= max; i++) - { - if ((i < sg.getStartRes()) || (i > sg.getEndRes())) - { - av.getColumnSelection().removeElement(i); - } - else - { - av.getColumnSelection().addElement(i); - } - } - - ap.repaint(); - } - } - - public void mouseEntered(MouseEvent evt) - { - if(mouseDragging) - ap.seqPanel.scrollCanvas(null); - } - - public void mouseExited(MouseEvent evt) - { - if(mouseDragging) - ap.seqPanel.scrollCanvas(evt); - } - - public void mouseClicked(MouseEvent evt){} - - public void mouseMoved(MouseEvent evt) - { - if(!av.hasHiddenColumns) - return; - - int res = (evt.getX() / av.getCharWidth()) + av.getStartRes(); - - res = av.getColumnSelection().adjustForHiddenColumns(res); - - reveal = null; - for(int i=0; i