X-Git-Url: http://source.jalview.org/gitweb/?a=blobdiff_plain;f=src%2Fjalview%2Fgui%2FScalePanel.java;h=e9082b88cc761f024cc6a48279f55d8172fb28fd;hb=4e37dfef4e89b0f123a60dea64cf088cb80c5d89;hp=19b26c8217a7f710becb1868385987d8b4dcadbd;hpb=bb72a052b1308e9d6d28fc97dd458c6e11f116e8;p=jalview.git diff --git a/src/jalview/gui/ScalePanel.java b/src/jalview/gui/ScalePanel.java index 19b26c8..e9082b8 100755 --- a/src/jalview/gui/ScalePanel.java +++ b/src/jalview/gui/ScalePanel.java @@ -32,7 +32,7 @@ import javax.swing.*; * @author $author$ * @version $Revision$ */ -public class ScalePanel extends JPanel +public class ScalePanel extends JPanel implements MouseMotionListener, MouseListener { protected int offy = 4; @@ -43,6 +43,7 @@ public class ScalePanel extends JPanel 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) @@ -50,25 +51,8 @@ public class ScalePanel extends JPanel this.av = av; this.ap = ap; - addMouseListener(new MouseAdapter() - { - public void mousePressed(MouseEvent evt) - { - doMousePressed(evt); - } - - public void mouseReleased(MouseEvent evt) - { - doMouseReleased(evt); - } - }); - addMouseMotionListener(new MouseMotionAdapter() - { - public void mouseDragged(MouseEvent evt) - { - doMouseDragged(evt); - } - }); + addMouseListener(this); + addMouseMotionListener(this); } /** @@ -76,24 +60,87 @@ public class ScalePanel extends JPanel * * @param evt DOCUMENT ME! */ - public void doMousePressed(MouseEvent evt) + public void mousePressed(MouseEvent evt) { - int x = evt.getX(); - int res = (x / av.getCharWidth()) + av.getStartRes(); - SequenceGroup sg = null; + 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 (av.getColumnSelection().contains(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); - ap.annotationPanel.removeEditableColumn(res); + av.setSelectionGroup(null); + } } else { av.getColumnSelection().addElement(res); - sg = new SequenceGroup(); + SequenceGroup sg = new SequenceGroup(); for (int i = 0; i < av.alignment.getSequences().size(); i++) { @@ -102,9 +149,10 @@ public class ScalePanel extends JPanel sg.setStartRes(res); sg.setEndRes(res); + av.setSelectionGroup(sg); } - av.setSelectionGroup(sg); + ap.repaint(); } @@ -113,19 +161,14 @@ public class ScalePanel extends JPanel * * @param evt DOCUMENT ME! */ - public void doMouseReleased(MouseEvent evt) + public void mouseReleased(MouseEvent evt) { - int x = evt.getX(); - int res = (x / av.getCharWidth()) + av.getStartRes(); + mouseDragging = false; - if (av.getColumnSelection() != null) - { - for (int i = 0; i < av.getColumnSelection().size(); i++) - { - ap.annotationPanel.addEditableColumn(av.getColumnSelection() - .columnAt(i)); - } - } + int res = (evt.getX() / av.getCharWidth()) + av.getStartRes(); + + if(av.hasHiddenColumns) + res = av.getColumnSelection().adjustForHiddenColumns(res); if (!stretchingGroup) { @@ -154,10 +197,14 @@ public class ScalePanel extends JPanel * * @param evt DOCUMENT ME! */ - public void doMouseDragged(MouseEvent evt) + public void mouseDragged(MouseEvent evt) { - int x = evt.getX(); - int res = (x / av.getCharWidth()) + av.getStartRes(); + mouseDragging = true; + + int res = (evt.getX() / av.getCharWidth()) + av.getStartRes(); + + if(av.hasHiddenColumns) + res = av.getColumnSelection().adjustForHiddenColumns(res); if (res < min) { @@ -169,6 +216,7 @@ public class ScalePanel extends JPanel max = res; } + SequenceGroup sg = av.getSelectionGroup(); if (sg != null) @@ -184,7 +232,7 @@ public class ScalePanel extends JPanel { sg.setEndRes(res); } - else if (res < sg.getStartRes()) + if (res < sg.getStartRes()) { sg.setStartRes(res); } @@ -194,7 +242,6 @@ public class ScalePanel extends JPanel if ((i < sg.getStartRes()) || (i > sg.getEndRes())) { av.getColumnSelection().removeElement(i); - ap.annotationPanel.removeEditableColumn(res); } else { @@ -206,6 +253,50 @@ public class ScalePanel extends JPanel } } + 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