3 import jalview.datamodel.*;
\r
5 import java.awt.event.*;
\r
6 import javax.swing.*;
\r
8 public class ScalePanel extends JPanel
\r
11 protected ScaleCanvas scaleCanvas;
\r
16 protected AlignViewport av;
\r
19 boolean stretchingGroup = false;
\r
21 public ScalePanel(AlignViewport av, AlignmentPanel ap)
\r
26 scaleCanvas = new ScaleCanvas(av);
\r
27 setLayout(new BorderLayout());
\r
28 add(scaleCanvas, BorderLayout.CENTER);
\r
29 addMouseListener(new MouseAdapter()
\r
31 public void mousePressed(MouseEvent evt)
\r
33 doMousePressed(evt);
\r
35 public void mouseReleased(MouseEvent evt)
\r
37 doMouseReleased(evt);
\r
41 addMouseMotionListener(new MouseMotionAdapter()
\r
43 public void mouseDragged(MouseEvent evt)
\r
45 doMouseDragged(evt);
\r
51 public Dimension getMinimumSize() {
\r
52 return scaleCanvas.getMinimumSize();
\r
55 public Dimension getPreferredSize() {
\r
56 return scaleCanvas.getPreferredSize();
\r
59 public void doMousePressed(MouseEvent evt) {
\r
61 int res = x/av.getCharWidth() + av.getStartRes();
\r
62 SequenceGroup sg = null;
\r
64 if (av.getColumnSelection().contains(res))
\r
65 av.getColumnSelection().removeElement(res);
\r
68 av.getColumnSelection().addElement(res);
\r
70 sg = new SequenceGroup();
\r
71 for (int i = 0; i < av.alignment.getSequences().size(); i++)
\r
72 sg.addSequence(av.alignment.getSequenceAt(i));
\r
74 sg.setStartRes(res);
\r
77 av.setRubberbandGroup(sg);
\r
81 public void doMouseReleased(MouseEvent evt)
\r
83 if(!stretchingGroup)
\r
87 int res = x/av.getCharWidth() + av.getStartRes();
\r
89 if (! av.getColumnSelection().contains(res))
\r
90 av.getColumnSelection().addElement(res);
\r
92 SequenceGroup sg = av.getRubberbandGroup();
\r
94 if(res>sg.getStartRes())
\r
96 else if(res<sg.getStartRes())
\r
97 sg.setStartRes(res);
\r
99 stretchingGroup = false;
\r
100 ap.RefreshPanels();
\r
103 public void doMouseDragged(MouseEvent evt)
\r
105 int x = evt.getX();
\r
106 int res = x/av.getCharWidth() + av.getStartRes();
\r
108 SequenceGroup sg = av.getRubberbandGroup();
\r
111 stretchingGroup = true;
\r
112 if (res > sg.getStartRes())
\r
114 else if (res < sg.getStartRes())
\r
115 sg.setStartRes(res);
\r
117 ap.RefreshPanels();
\r