X-Git-Url: http://source.jalview.org/gitweb/?a=blobdiff_plain;f=src%2Fjalview%2Fgui%2FScalePanel.java;h=416b787a55345db36469c1a54d7c204754a65b49;hb=cb5d856b1304448cae13a333cbd9017f81520d90;hp=b3d7cda24aa4d1e132b5d53781a686280ec4326b;hpb=df9b85c1cf39894039018499fe802406cc37f209;p=jalview.git diff --git a/src/jalview/gui/ScalePanel.java b/src/jalview/gui/ScalePanel.java index b3d7cda..416b787 100755 --- a/src/jalview/gui/ScalePanel.java +++ b/src/jalview/gui/ScalePanel.java @@ -1,428 +1,514 @@ -/* - * 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(res> av.alignment.getWidth()) - { - res = av.alignment.getWidth()-1; - } - - 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> av.alignment.getWidth()) - { - res = av.alignment.getWidth()-1; - } - - 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