Right mouse brings up Popupmenu
[jalview.git] / src / jalview / gui / IdPanel.java
1 package jalview.gui;\r
2 \r
3 import java.awt.*;\r
4 import java.awt.event.*;\r
5 \r
6 import jalview.datamodel.*;\r
7 \r
8 import javax.swing.*;\r
9 \r
10 public class IdPanel extends JPanel implements MouseListener, MouseMotionListener {\r
11 \r
12   protected IdCanvas       idCanvas;\r
13   protected AlignViewport  av;\r
14   protected AlignmentPanel alignPanel;\r
15 \r
16   protected int            offy;\r
17   public    int            width;\r
18   public    int            lastid;\r
19 \r
20   SequenceGroup selectedSequenceGroup;\r
21 \r
22   public IdPanel(AlignViewport av, AlignmentPanel parent)\r
23   {\r
24     this.av         = av;\r
25     alignPanel = parent;\r
26     idCanvas = new IdCanvas(av);\r
27     setLayout(new BorderLayout());\r
28     add(idCanvas, BorderLayout.CENTER);\r
29     addMouseListener(this);\r
30     addMouseMotionListener(this);\r
31   }\r
32 \r
33   public void mouseMoved(MouseEvent e) {}\r
34 \r
35   public void selectSeqs(int start, int end) {\r
36      if (end < start)\r
37      {\r
38        int tmp = start;\r
39        start = end;\r
40        end   = tmp;\r
41      }\r
42 \r
43      for (int i = start; i <= end; i++)\r
44      {\r
45        SequenceI pickedSeq = av.getAlignment().getSequenceAt(i);\r
46        if (av.getSelection().contains(pickedSeq))\r
47        {\r
48          av.getSelection().removeElement(pickedSeq);\r
49          selectedSequenceGroup.deleteSequence(pickedSeq);\r
50        }\r
51        else\r
52        {\r
53          av.getSelection().addElement(pickedSeq);\r
54          if(selectedSequenceGroup==null)\r
55          {\r
56            selectedSequenceGroup = new SequenceGroup();\r
57            av.setRubberbandGroup( selectedSequenceGroup );\r
58           // av.alignment.addGroup( selectedSequenceGroup );\r
59            selectedSequenceGroup.setStartRes(0);\r
60            selectedSequenceGroup.setEndRes( pickedSeq.getSequence().length());\r
61          }\r
62 \r
63          selectedSequenceGroup.addSequence( pickedSeq );\r
64        }\r
65 \r
66      }\r
67 \r
68      alignPanel.seqPanel.seqCanvas.paintFlag=true;\r
69      alignPanel.repaint();\r
70      repaint();\r
71 \r
72    }\r
73 \r
74   public void mouseDragged(MouseEvent e) {\r
75     int y = e.getY();\r
76     int seq = av.getIndex(y);\r
77 \r
78     if (seq < lastid)\r
79       selectSeqs(lastid - 1, seq);\r
80     else if (seq > lastid)\r
81       selectSeqs(lastid + 1, seq);\r
82 \r
83     lastid = seq;\r
84 \r
85     return;\r
86   }\r
87 \r
88   public void mouseClicked(MouseEvent e)\r
89   {\r
90     if (e.getClickCount() == 2)\r
91     {\r
92        int seq = av.getIndex(e.getY());\r
93        String id = av.getAlignment().getSequenceAt(seq).getName();\r
94 \r
95        try{\r
96          jalview.util.BrowserLauncher.openURL(\r
97              "http://srs.ebi.ac.uk/srs7bin/cgi-bin/wgetz?-e+[swall-id:" + id +\r
98              "]+-vn+2");\r
99        }catch(Exception ex){ex.printStackTrace();}\r
100     }\r
101 \r
102   }\r
103   public void mouseEntered(MouseEvent e) { }\r
104   public void mouseExited (MouseEvent e) { }\r
105 \r
106   public void mousePressed(MouseEvent e) {\r
107     if (e.getClickCount() == 2)\r
108       return;\r
109 \r
110     int y = e.getY();\r
111     int seq = av.getIndex(y);\r
112 \r
113     selectedSequenceGroup = av.getRubberbandGroup();\r
114     if (selectedSequenceGroup == null)\r
115     {\r
116       selectedSequenceGroup = new SequenceGroup();\r
117       av.setRubberbandGroup(selectedSequenceGroup);\r
118     }\r
119 \r
120     selectedSequenceGroup.setStartRes(0);\r
121     selectedSequenceGroup.setEndRes(av.getAlignment().getWidth() - 1);\r
122 \r
123     if (seq != -1)\r
124       selectSeqs(seq, seq);\r
125 \r
126     lastid = seq;\r
127 \r
128     if( javax.swing.SwingUtilities.isRightMouseButton(e))\r
129      {\r
130        jalview.gui.PopupMenu pop = new jalview.gui.PopupMenu(alignPanel, av.getAlignment().getSequenceAt(seq) );\r
131        pop.show(this, e.getX(), y);\r
132      }\r
133 \r
134 \r
135     return;\r
136   }\r
137 \r
138   public void mouseReleased(MouseEvent e)\r
139   {\r
140     lastid = -1;\r
141     PaintRefresher.Refresh(this);\r
142     selectedSequenceGroup = null;\r
143   }\r
144 }\r