3 import jalview.jbgui.GGroupEditor;
\r
4 import jalview.datamodel.*;
\r
5 import jalview.schemes.*;
\r
6 import java.awt.event.*;
\r
8 import javax.swing.*;
\r
11 public class GroupEditor extends GGroupEditor
\r
16 Vector unassignedVector;
\r
17 Vector assignedVector=new Vector();
\r
18 boolean updating=false;
\r
19 int selectedGroupIndex = 0;
\r
20 Hashtable sequenceHash = new Hashtable();
\r
22 public GroupEditor(AlignViewport av, AlignmentPanel ap)
\r
26 groups = av.getAlignment().getGroups();
\r
29 for (int i=0; i < ColourProperties.getColourSchemeNames().size(); i++)
\r
30 colourCombo.addItem(ColourProperties.getColourSchemeNames().elementAt(i));
\r
38 assignedList.addMouseListener( new MouseAdapter()
\r
40 public void mouseClicked(MouseEvent e)
\r
42 if (e.getClickCount() == 2)
\r
43 { remove_actionPerformed(null); }
\r
47 unassignedList.addMouseListener( new MouseAdapter()
\r
49 public void mouseClicked(MouseEvent e)
\r
51 if (e.getClickCount() == 2)
\r
52 { add_actionPerformed(null); }
\r
60 unassignedList.setListData(unassignedVector);
\r
61 assignedList.setListData(assignedVector);
\r
67 void updateGroupcombo()
\r
71 if(groupsCombo.getItemCount()>0)
\r
72 groupsCombo.removeAllItems();
\r
74 for (int i = 0; i < groups.size(); i++) {
\r
75 SequenceGroup sg = (SequenceGroup)groups.elementAt(i);
\r
76 groupsCombo.addItem( sg.getName() + " (" + sg.getSize() + " sequences)");
\r
78 groupsCombo.setSelectedIndex(selectedGroupIndex);
\r
82 void updateUnassigned()
\r
84 unassignedVector=new Vector();
\r
85 AlignmentI align = av.getAlignment();
\r
87 for (int i = 0; i < align.getHeight();i++)
\r
89 sequenceHash.put( align.getSequenceAt(i).getDisplayId(), align.getSequenceAt(i) );
\r
90 boolean assigned = false;
\r
91 for(int j=0; j<groups.size(); j++)
\r
93 SequenceGroup sg = (SequenceGroup)groups.elementAt(j);
\r
94 for(int k=0; k<sg.getSize(); k++)
\r
96 if(sg.getSequenceAt(k).getDisplayId().equals( align.getSequenceAt(i).getDisplayId() ) )
\r
98 assigned = true; break;
\r
107 unassignedVector.add(align.getSequenceAt(i).getDisplayId());
\r
111 unassignedList.setListData(unassignedVector);
\r
117 if(groups.size()<1)
\r
120 assignedVector = new Vector();
\r
121 if(selectedGroupIndex!=-1)
\r
123 SequenceGroup sg = (SequenceGroup) groups.elementAt(selectedGroupIndex);
\r
124 for (int j = 0; j < sg.getSize(); j++)
\r
126 Sequence s = (Sequence) sg.getSequenceAt(j);
\r
127 assignedVector.addElement(s.getDisplayId());
\r
129 int num = ColourProperties.indexOfClass(sg.cs);
\r
130 colourCombo.setSelectedIndex(num);
\r
132 boxesCheck.setSelected(sg.getDisplayBoxes());
\r
133 textCheck.setSelected(sg.getDisplayText());
\r
134 colourTextCheck.setSelected(sg.getColourText());
\r
138 assignedList.setListData( assignedVector );
\r
142 protected void groupsCombo_actionPerformed(ActionEvent e)
\r
146 selectedGroupIndex = groupsCombo.getSelectedIndex();
\r
151 protected void groupName_actionPerformed(ActionEvent e)
\r
153 String reply = JOptionPane.showInternalInputDialog(this, "Enter new group name", "Edit group name", JOptionPane.QUESTION_MESSAGE);
\r
157 SequenceGroup sg = (SequenceGroup)groups.elementAt(selectedGroupIndex);
\r
159 updateGroupcombo();
\r
162 protected void colourCombo_actionPerformed(ActionEvent e)
\r
164 if(groups.size()<1)
\r
167 SequenceGroup sg = (SequenceGroup)groups.elementAt(selectedGroupIndex);
\r
169 sg.cs = ColourSchemeFactory.get( (String)colourCombo.getSelectedItem() );
\r
170 //ColourProperties.getColourScheme( colourCombo.getSelectedIndex() );
\r
171 ap.RefreshPanels();
\r
174 protected void boxesCheck_actionPerformed(ActionEvent e)
\r
176 SequenceGroup sg = (SequenceGroup)groups.elementAt(selectedGroupIndex);
\r
177 sg.setDisplayBoxes( boxesCheck.isSelected());
\r
178 ap.RefreshPanels();
\r
181 protected void textCheck_actionPerformed(ActionEvent e)
\r
183 SequenceGroup sg = (SequenceGroup)groups.elementAt(selectedGroupIndex);
\r
184 sg.setDisplayText( textCheck.isSelected() );
\r
185 ap.RefreshPanels();
\r
188 protected void colourTextCheck_actionPerformed(ActionEvent e)
\r
190 SequenceGroup sg = (SequenceGroup)groups.elementAt(selectedGroupIndex);
\r
191 sg.setColourText( colourTextCheck.isSelected());
\r
192 ap.RefreshPanels();
\r
195 protected void addSelectedIds_actionPerformed(ActionEvent e)
\r
197 if(selectedGroupIndex==-1)
\r
200 SequenceGroup sg = (SequenceGroup)groups.elementAt(selectedGroupIndex);
\r
201 Selection sel = av.getSelection();
\r
202 for(int i=0; i<sel.size(); i++)
\r
204 int index = unassignedVector.indexOf( sel.sequenceAt(i).getDisplayId() );
\r
207 sg.addSequence( (SequenceI) sequenceHash.get( unassignedVector.elementAt(index) ));
\r
208 assignedVector.addElement( unassignedVector.elementAt(index));
\r
209 unassignedVector.removeElementAt( index );
\r
216 protected void add_actionPerformed(ActionEvent e)
\r
218 if(selectedGroupIndex==-1)
\r
221 int [] indices = unassignedList.getSelectedIndices();
\r
222 if(indices.length<1)
\r
225 SequenceGroup sg = (SequenceGroup)groups.elementAt(selectedGroupIndex);
\r
227 for(int i=0; i<indices.length; i++)
\r
229 assignedVector.addElement(unassignedVector.elementAt(indices[i]-i));
\r
230 sg.addSequence( (SequenceI)sequenceHash.get( unassignedVector.elementAt(indices[i]-i) ));
\r
231 unassignedVector.removeElementAt(indices[i]-i);
\r
236 protected void addAll_actionPerformed(ActionEvent e)
\r
238 if(selectedGroupIndex==-1)
\r
241 SequenceGroup sg = (SequenceGroup)groups.elementAt(selectedGroupIndex);
\r
242 Enumeration enum = unassignedVector.elements();
\r
243 while(enum.hasMoreElements())
\r
245 String id = (String)enum.nextElement();
\r
246 assignedVector.addElement( id );
\r
247 sg.addSequence( (SequenceI)sequenceHash.get( id ));
\r
250 unassignedVector.clear();
\r
254 protected void remove_actionPerformed(ActionEvent e)
\r
256 if(selectedGroupIndex==-1)
\r
259 SequenceGroup sg = (SequenceGroup)groups.elementAt(selectedGroupIndex);
\r
261 int [] indices = assignedList.getSelectedIndices();
\r
262 if(indices.length<1)
\r
265 for(int i=0; i<indices.length; i++)
\r
268 unassignedVector.addElement(assignedVector.elementAt(indices[i]-i));
\r
269 SequenceI removeSequence = (SequenceI)sequenceHash.get( assignedVector.elementAt(indices[i]-i) );
\r
270 av.getSelection().removeElement( removeSequence );
\r
271 sg.deleteSequence( removeSequence );
\r
272 assignedVector.removeElementAt(indices[i]-i);
\r
279 protected void removeAll_actionPerformed(ActionEvent e)
\r
281 if(selectedGroupIndex==-1)
\r
284 SequenceGroup sg = (SequenceGroup)groups.elementAt(selectedGroupIndex);
\r
285 Enumeration enum = assignedVector.elements();
\r
286 while(enum.hasMoreElements())
\r
288 String id = (String)enum.nextElement();
\r
289 unassignedVector.addElement( id );
\r
290 SequenceI removeSequence = (SequenceI)sequenceHash.get( id );
\r
291 av.getSelection().removeElement( removeSequence );
\r
292 sg.deleteSequence( removeSequence );
\r
295 assignedVector.clear();
\r
299 protected void addGroup_actionPerformed(ActionEvent e)
\r
302 ColourSchemeI cs = ColourSchemeFactory.get( (String)colourCombo.getSelectedItem() );
\r
303 // ColourProperties.getColourScheme( colourCombo.getSelectedIndex() );
\r
306 new SequenceGroup("Group "+(groups.size()+1),
\r
309 boxesCheck.isSelected(),
\r
310 textCheck.isSelected(),
\r
311 colourTextCheck.isSelected(),
\r
313 0, av.alignment.getWidth()
\r
316 updateGroupcombo();
\r
317 groupsCombo.setSelectedIndex( groupsCombo.getItemCount()-1 );
\r
321 protected void deleteGroup_actionPerformed(ActionEvent e)
\r
323 removeAll_actionPerformed(null);
\r
324 groups.remove( selectedGroupIndex );
\r
325 selectedGroupIndex=-1;
\r
326 updateGroupcombo();
\r
327 groupsCombo.setSelectedIndex( groupsCombo.getItemCount()-1 );
\r