package jalview.gui; import jalview.datamodel.*; import java.awt.*; import java.awt.event.*; import javax.swing.*; public class ScalePanel extends JPanel { protected ScaleCanvas scaleCanvas; protected int offy; public int width; protected AlignViewport av; AlignmentPanel ap; boolean stretchingGroup = false; public ScalePanel(AlignViewport av, AlignmentPanel ap) { this.av = av; this.ap = ap; scaleCanvas = new ScaleCanvas(av); setLayout(new BorderLayout()); add(scaleCanvas, BorderLayout.CENTER); 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); } }); } public Dimension getMinimumSize() { return scaleCanvas.getMinimumSize(); } public Dimension getPreferredSize() { return scaleCanvas.getPreferredSize(); } public void doMousePressed(MouseEvent evt) { int x = evt.getX(); int res = x/av.getCharWidth() + av.getStartRes(); SequenceGroup sg = null; if (av.getColumnSelection().contains(res)) av.getColumnSelection().removeElement(res); else { av.getColumnSelection().addElement(res); sg = new SequenceGroup(); for (int i = 0; i < av.alignment.getSequences().size(); i++) sg.addSequence(av.alignment.getSequenceAt(i)); sg.setStartRes(res); sg.setEndRes(res); } av.setRubberbandGroup(sg); ap.RefreshPanels(); } public void doMouseReleased(MouseEvent evt) { if(!stretchingGroup) return; int x = evt.getX(); int res = x/av.getCharWidth() + av.getStartRes(); if (! av.getColumnSelection().contains(res)) av.getColumnSelection().addElement(res); SequenceGroup sg = av.getRubberbandGroup(); if(res>sg.getStartRes()) sg.setEndRes(res); else if(res sg.getStartRes()) sg.setEndRes(res); else if (res < sg.getStartRes()) sg.setStartRes(res); ap.RefreshPanels(); } } }