package jalview.gui; import java.awt.*; import java.awt.event.*; import jalview.datamodel.*; import javax.swing.*; public class IdPanel extends JPanel implements MouseListener, MouseMotionListener { protected IdCanvas idCanvas; protected AlignViewport av; protected AlignmentPanel alignPanel; protected int offy; public int width; public int lastid; boolean mouseDown; boolean mouseUp; public IdPanel(AlignViewport av, AlignmentPanel parent) { this.av = av; alignPanel = parent; idCanvas = new IdCanvas(av); setLayout(new BorderLayout()); add(idCanvas, BorderLayout.CENTER); addMouseListener(this); addMouseMotionListener(this); } public void mouseMoved(MouseEvent e) {} public void selectSeqs(int start, int end) { if (end < start) { int tmp = start; start = end; end = tmp; } for (int i = start; i <= end; i++) { SequenceI pickedSeq = av.getAlignment().getSequenceAt(i); if (av.getSelection().contains(pickedSeq)) { av.getSelection().removeElement(pickedSeq); } else { av.getSelection().addElement(pickedSeq); } } repaint(); } public void mouseDragged(MouseEvent e) { int y = e.getY(); int seq = av.getIndex(y); if (mouseDown == true) { if (seq < lastid) { selectSeqs(lastid-1,seq); } else if (seq > lastid) { selectSeqs(lastid+1,seq); } lastid = seq; } return; } public void mouseClicked(MouseEvent e) { if (e.getClickCount() == 2) { int seq = av.getIndex(e.getY()); String id = av.getAlignment().getSequenceAt(seq).getName(); try{ jalview.util.BrowserLauncher.openURL( "http://srs.ebi.ac.uk/srs7bin/cgi-bin/wgetz?-e+[swall-id:" + id + "]+-vn+2"); }catch(Exception ex){ex.printStackTrace();} } } public void mouseEntered(MouseEvent e) { } public void mouseExited (MouseEvent e) { } public void mousePressed(MouseEvent e) { if (e.getClickCount() == 2) return; int y = e.getY(); int seq = av.getIndex(y); mouseDown = true; if( javax.swing.SwingUtilities.isRightMouseButton(e)) { String id = av.getAlignment().getSequenceAt(seq).getName(); String s = (String)JOptionPane.showInputDialog( this, "Edit sequence name", "Edit sequence name", JOptionPane.PLAIN_MESSAGE, null, null, id); if(s!=null) { av.getAlignment().getSequenceAt(seq).setName(s); alignPanel.RefreshPanels(); } } else { if (seq != -1) selectSeqs(seq,seq); lastid = seq; } return; } public void mouseReleased(MouseEvent e) { lastid = -1; mouseDown = false; mouseUp = true; PaintRefresher.Refresh(this); } }