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; SequenceGroup selectedSequenceGroup; 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); selectedSequenceGroup.deleteSequence(pickedSeq); } else { av.getSelection().addElement(pickedSeq); if(selectedSequenceGroup==null) { selectedSequenceGroup = new SequenceGroup(); av.setRubberbandGroup( selectedSequenceGroup ); // av.alignment.addGroup( selectedSequenceGroup ); selectedSequenceGroup.setStartRes(0); selectedSequenceGroup.setEndRes( pickedSeq.getSequence().length()); } selectedSequenceGroup.addSequence( pickedSeq ); } } alignPanel.seqPanel.seqCanvas.paintFlag=true; alignPanel.repaint(); repaint(); } public void mouseDragged(MouseEvent e) { int y = e.getY(); int seq = av.getIndex(y); 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); if( javax.swing.SwingUtilities.isRightMouseButton(e)) { jalview.gui.PopupMenu pop = new jalview.gui.PopupMenu( av , alignPanel.seqPanel); pop.show(this, e.getX(), y); /* String id = av.getAlignment().getSequenceAt(seq).getName(); String s = (String)JOptionPane.showInternalInputDialog( 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 { selectedSequenceGroup = av.getRubberbandGroup(); if(selectedSequenceGroup==null) { selectedSequenceGroup = new SequenceGroup(); av.setRubberbandGroup(selectedSequenceGroup); } selectedSequenceGroup.setStartRes(0); selectedSequenceGroup.setEndRes( av.getAlignment().getWidth()-1 ); // selectedSequenceGroup = av.alignment.findGroup(seq); if (seq != -1) selectSeqs(seq,seq); lastid = seq; } return; } public void mouseReleased(MouseEvent e) { lastid = -1; PaintRefresher.Refresh(this); selectedSequenceGroup = null; } }