showInternalInputDialog
[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 \r
21 \r
22   boolean mouseDown;\r
23   boolean mouseUp;\r
24 \r
25   public IdPanel(AlignViewport av, AlignmentPanel parent)\r
26   {\r
27     this.av         = av;\r
28     alignPanel = parent;\r
29     idCanvas = new IdCanvas(av);\r
30     setLayout(new BorderLayout());\r
31     add(idCanvas, BorderLayout.CENTER);\r
32     addMouseListener(this);\r
33     addMouseMotionListener(this);\r
34   }\r
35 \r
36   public void mouseMoved(MouseEvent e) {}\r
37 \r
38   public void selectSeqs(int start, int end) {\r
39      if (end < start) {\r
40        int tmp = start;\r
41        start = end;\r
42        end   = tmp;\r
43      }\r
44 \r
45      for (int i = start; i <= end; i++) {\r
46        SequenceI pickedSeq = av.getAlignment().getSequenceAt(i);\r
47 \r
48        if (av.getSelection().contains(pickedSeq)) {\r
49          av.getSelection().removeElement(pickedSeq);\r
50        } else {\r
51          av.getSelection().addElement(pickedSeq);\r
52        }\r
53      }\r
54 \r
55      repaint();\r
56 \r
57    }\r
58 \r
59   public void mouseDragged(MouseEvent e) {\r
60     int y = e.getY();\r
61 \r
62     int seq = av.getIndex(y);\r
63 \r
64     if (mouseDown == true) {\r
65       if (seq < lastid) {\r
66         selectSeqs(lastid-1,seq);\r
67       } else if (seq > lastid) {\r
68          selectSeqs(lastid+1,seq);\r
69       }\r
70       lastid = seq;\r
71     }\r
72 \r
73     return;\r
74   }\r
75 \r
76   public void mouseClicked(MouseEvent e)\r
77   {\r
78     if (e.getClickCount() == 2)\r
79     {\r
80        int seq = av.getIndex(e.getY());\r
81        String id = av.getAlignment().getSequenceAt(seq).getName();\r
82 \r
83        try{\r
84          jalview.util.BrowserLauncher.openURL(\r
85              "http://srs.ebi.ac.uk/srs7bin/cgi-bin/wgetz?-e+[swall-id:" + id +\r
86              "]+-vn+2");\r
87        }catch(Exception ex){ex.printStackTrace();}\r
88     }\r
89 \r
90   }\r
91   public void mouseEntered(MouseEvent e) { }\r
92   public void mouseExited (MouseEvent e) { }\r
93 \r
94   public void mousePressed(MouseEvent e) {\r
95     if (e.getClickCount() == 2)\r
96       return;\r
97 \r
98     int y = e.getY();\r
99     int seq = av.getIndex(y);\r
100 \r
101     mouseDown = true;\r
102 \r
103       if( javax.swing.SwingUtilities.isRightMouseButton(e))\r
104       {\r
105         String id = av.getAlignment().getSequenceAt(seq).getName();\r
106         String s = (String)JOptionPane.showInternalInputDialog(\r
107                     this,\r
108                     "Edit sequence name",\r
109                     "Edit sequence name",\r
110                     JOptionPane.PLAIN_MESSAGE,\r
111                     null,\r
112                     null,\r
113                     id);\r
114 \r
115         if(s!=null)\r
116         {\r
117           av.getAlignment().getSequenceAt(seq).setName(s);\r
118           alignPanel.RefreshPanels();\r
119         }\r
120 \r
121       }\r
122       else\r
123       {\r
124         if (seq != -1)\r
125           selectSeqs(seq,seq);\r
126 \r
127         lastid = seq;\r
128       }\r
129     return;\r
130   }\r
131 \r
132   public void mouseReleased(MouseEvent e) {\r
133     lastid = -1;\r
134 \r
135     mouseDown = false;\r
136     mouseUp   = true;\r
137 \r
138     PaintRefresher.Refresh(this);\r
139 \r
140   }\r
141 }\r