X-Git-Url: http://source.jalview.org/gitweb/?a=blobdiff_plain;f=src%2Fjalview%2Fgui%2FScalePanel.java;h=87e72dc4d34d97e0cc2225cd03bb95a7d20e27a2;hb=9807ea8cc4e867378c52d51b832168d4bc611d29;hp=19b26c8217a7f710becb1868385987d8b4dcadbd;hpb=bb72a052b1308e9d6d28fc97dd458c6e11f116e8;p=jalview.git diff --git a/src/jalview/gui/ScalePanel.java b/src/jalview/gui/ScalePanel.java index 19b26c8..87e72dc 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; @@ -50,25 +50,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 +59,80 @@ 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(); + } + }); + 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(); + } + }); + 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(); + } + }); + 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 +141,10 @@ public class ScalePanel extends JPanel sg.setStartRes(res); sg.setEndRes(res); + av.setSelectionGroup(sg); } - av.setSelectionGroup(sg); + ap.repaint(); } @@ -113,19 +153,12 @@ 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(); + int res = (evt.getX() / av.getCharWidth()) + av.getStartRes(); - if (av.getColumnSelection() != null) - { - for (int i = 0; i < av.getColumnSelection().size(); i++) - { - ap.annotationPanel.addEditableColumn(av.getColumnSelection() - .columnAt(i)); - } - } + if(av.hasHiddenColumns) + res = av.getColumnSelection().adjustForHiddenColumns(res); if (!stretchingGroup) { @@ -154,10 +187,12 @@ 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(); + int res = (evt.getX() / av.getCharWidth()) + av.getStartRes(); + + if(av.hasHiddenColumns) + res = av.getColumnSelection().adjustForHiddenColumns(res); if (res < min) { @@ -194,7 +229,6 @@ public class ScalePanel extends JPanel if ((i < sg.getStartRes()) || (i > sg.getEndRes())) { av.getColumnSelection().removeElement(i); - ap.annotationPanel.removeEditableColumn(res); } else { @@ -206,6 +240,35 @@ public class ScalePanel extends JPanel } } + public void mouseEntered(MouseEvent evt){} + public void mouseExited(MouseEvent 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= startx) && (sel <= endx)) { @@ -264,7 +329,7 @@ public class ScalePanel extends JPanel { if ((i % 10) == 0) { - gg.drawString(String.valueOf(i), + gg.drawString(String.valueOf(av.getColumnSelection().adjustForHiddenColumns(i)), (i - startx - 1) * av.charWidth, y); gg.drawLine((int) (((i - startx - 1) * av.charWidth) + (av.charWidth / 2)), y + 2, @@ -279,5 +344,32 @@ public class ScalePanel extends JPanel (av.charWidth / 2)), y + (fm.getDescent() * 2)); } } + + if (av.hasHiddenColumns) + { + gg.setColor(Color.blue); + int res; + for (int i = 0; i < av.getColumnSelection().getHiddenColumns().size(); i++) + { + res = av.getColumnSelection().findHiddenRegionPosition( i )-startx; + + gg.fillPolygon(new int[] { res*av.charWidth - 4, + res*av.charWidth + 4, + res*av.charWidth }, + new int[] + { + y-av.charHeight/2 , y-av.charHeight/2 , + y + 8 + }, 3); + + } + + if (reveal != null && reveal[0] > startx && reveal[0] < endx) + { + gg.drawString("Reveal Columns", reveal[0] * av.charWidth, 0); + } + } + + } }