Jalview Imported Sources
[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   public void mouseEntered(MouseEvent e) { }\r
78   public void mouseExited (MouseEvent e) { }\r
79 \r
80   public void mousePressed(MouseEvent e) {\r
81     int x = e.getX();\r
82     int y = e.getY();\r
83 \r
84     int seq = av.getIndex(y);\r
85 \r
86     mouseDown = true;\r
87 \r
88       if( javax.swing.SwingUtilities.isRightMouseButton(e))\r
89       {\r
90         String id = av.getAlignment().getSequenceAt(seq).getName();\r
91         String s = (String)JOptionPane.showInputDialog(\r
92                     this,\r
93                     "Edit sequence name",\r
94                     "Edit sequence name",\r
95                     JOptionPane.PLAIN_MESSAGE,\r
96                     null,\r
97                     null,\r
98                     id);\r
99 \r
100         if(s!=null)\r
101         {\r
102           av.getAlignment().getSequenceAt(seq).setName(s);\r
103           alignPanel.RefreshPanels();\r
104         }\r
105 \r
106       }\r
107       else\r
108       {\r
109         if (seq != -1)\r
110           selectSeqs(seq,seq);\r
111 \r
112         lastid = seq;\r
113       }\r
114     return;\r
115   }\r
116 \r
117   public void mouseReleased(MouseEvent e) {\r
118     lastid = -1;\r
119 \r
120     mouseDown = false;\r
121     mouseUp   = true;\r
122 \r
123     PaintRefresher.Refresh(this);\r
124 \r
125   }\r
126 }\r