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
35 assignedList.addMouseListener( new MouseAdapter()
\r
37 public void mouseClicked(MouseEvent e)
\r
39 if (e.getClickCount() == 2)
\r
40 { remove_actionPerformed(null); }
\r
44 unassignedList.addMouseListener( new MouseAdapter()
\r
46 public void mouseClicked(MouseEvent e)
\r
48 if (e.getClickCount() == 2)
\r
49 { add_actionPerformed(null); }
\r
57 unassignedList.setListData(unassignedVector);
\r
58 assignedList.setListData(assignedVector);
\r
64 void updateGroupcombo()
\r
68 if(groupsCombo.getItemCount()>0)
\r
69 groupsCombo.removeAllItems();
\r
71 for (int i = 0; i < groups.size(); i++) {
\r
72 SequenceGroup sg = (SequenceGroup)groups.elementAt(i);
\r
73 groupsCombo.addItem( sg.getName() + " (" + sg.getSize() + " sequences)");
\r
75 groupsCombo.setSelectedIndex(selectedGroupIndex);
\r
79 void updateUnassigned()
\r
81 unassignedVector=new Vector();
\r
82 AlignmentI align = av.getAlignment();
\r
84 for (int i = 0; i < align.getHeight();i++)
\r
86 sequenceHash.put( align.getSequenceAt(i).getDisplayId(), align.getSequenceAt(i) );
\r
87 boolean assigned = false;
\r
88 for(int j=0; j<groups.size(); j++)
\r
90 SequenceGroup sg = (SequenceGroup)groups.elementAt(j);
\r
91 for(int k=0; k<sg.getSize(); k++)
\r
93 if(sg.getSequenceAt(k).getDisplayId().equals( align.getSequenceAt(i).getDisplayId() ) )
\r
95 assigned = true; break;
\r
104 unassignedVector.add(align.getSequenceAt(i).getDisplayId());
\r
108 unassignedList.setListData(unassignedVector);
\r
114 assignedVector = new Vector();
\r
115 if(selectedGroupIndex!=-1)
\r
117 SequenceGroup sg = (SequenceGroup) groups.elementAt(selectedGroupIndex);
\r
118 for (int j = 0; j < sg.getSize(); j++)
\r
120 Sequence s = (Sequence) sg.getSequenceAt(j);
\r
121 assignedVector.addElement(s.getDisplayId());
\r
123 int num = ColourProperties.indexOfClass(sg.cs);
\r
124 colourCombo.setSelectedIndex(num);
\r
126 boxesCheck.setSelected(sg.getDisplayBoxes());
\r
127 textCheck.setSelected(sg.getDisplayText());
\r
128 colourTextCheck.setSelected(sg.getColourText());
\r
132 assignedList.setListData( assignedVector );
\r
136 protected void groupsCombo_actionPerformed(ActionEvent e)
\r
140 selectedGroupIndex = groupsCombo.getSelectedIndex();
\r
145 protected void groupName_actionPerformed(ActionEvent e)
\r
147 String reply = JOptionPane.showInputDialog(this, "Enter new group name", "Edit group name", JOptionPane.QUESTION_MESSAGE);
\r
151 SequenceGroup sg = (SequenceGroup)groups.elementAt(selectedGroupIndex);
\r
153 updateGroupcombo();
\r
156 protected void colourCombo_actionPerformed(ActionEvent e)
\r
158 SequenceGroup sg = (SequenceGroup)groups.elementAt(selectedGroupIndex);
\r
160 sg.cs = ColourSchemeFactory.get( (String)colourCombo.getSelectedItem() );
\r
161 //ColourProperties.getColourScheme( colourCombo.getSelectedIndex() );
\r
162 ap.RefreshPanels();
\r
165 protected void boxesCheck_actionPerformed(ActionEvent e)
\r
167 SequenceGroup sg = (SequenceGroup)groups.elementAt(selectedGroupIndex);
\r
168 sg.setDisplayBoxes( boxesCheck.isSelected());
\r
169 ap.RefreshPanels();
\r
172 protected void textCheck_actionPerformed(ActionEvent e)
\r
174 SequenceGroup sg = (SequenceGroup)groups.elementAt(selectedGroupIndex);
\r
175 sg.setDisplayText( textCheck.isSelected() );
\r
176 ap.RefreshPanels();
\r
179 protected void colourTextCheck_actionPerformed(ActionEvent e)
\r
181 SequenceGroup sg = (SequenceGroup)groups.elementAt(selectedGroupIndex);
\r
182 sg.setColourText( colourTextCheck.isSelected());
\r
183 ap.RefreshPanels();
\r
186 protected void addSelectedIds_actionPerformed(ActionEvent e)
\r
188 if(selectedGroupIndex==-1)
\r
191 SequenceGroup sg = (SequenceGroup)groups.elementAt(selectedGroupIndex);
\r
192 Selection sel = av.getSelection();
\r
193 for(int i=0; i<sel.size(); i++)
\r
195 int index = unassignedVector.indexOf( sel.sequenceAt(i).getDisplayId() );
\r
198 sg.addSequence( (SequenceI) sequenceHash.get( unassignedVector.elementAt(index) ));
\r
199 assignedVector.addElement( unassignedVector.elementAt(index));
\r
200 unassignedVector.removeElementAt( index );
\r
207 protected void add_actionPerformed(ActionEvent e)
\r
209 if(selectedGroupIndex==-1)
\r
212 int [] indices = unassignedList.getSelectedIndices();
\r
213 if(indices.length<1)
\r
216 SequenceGroup sg = (SequenceGroup)groups.elementAt(selectedGroupIndex);
\r
218 for(int i=0; i<indices.length; i++)
\r
220 assignedVector.addElement(unassignedVector.elementAt(indices[i]-i));
\r
221 sg.addSequence( (SequenceI)sequenceHash.get( unassignedVector.elementAt(indices[i]-i) ));
\r
222 unassignedVector.removeElementAt(indices[i]-i);
\r
227 protected void addAll_actionPerformed(ActionEvent e)
\r
229 if(selectedGroupIndex==-1)
\r
232 SequenceGroup sg = (SequenceGroup)groups.elementAt(selectedGroupIndex);
\r
233 Enumeration enum = unassignedVector.elements();
\r
234 while(enum.hasMoreElements())
\r
236 String id = (String)enum.nextElement();
\r
237 assignedVector.addElement( id );
\r
238 sg.addSequence( (SequenceI)sequenceHash.get( id ));
\r
241 unassignedVector.clear();
\r
245 protected void remove_actionPerformed(ActionEvent e)
\r
247 if(selectedGroupIndex==-1)
\r
250 SequenceGroup sg = (SequenceGroup)groups.elementAt(selectedGroupIndex);
\r
252 int [] indices = assignedList.getSelectedIndices();
\r
253 if(indices.length<1)
\r
256 for(int i=0; i<indices.length; i++)
\r
259 unassignedVector.addElement(assignedVector.elementAt(indices[i]-i));
\r
260 sg.deleteSequence( (SequenceI)sequenceHash.get( assignedVector.elementAt(indices[i]-i) ));
\r
261 assignedVector.removeElementAt(indices[i]-i);
\r
268 protected void removeAll_actionPerformed(ActionEvent e)
\r
270 if(selectedGroupIndex==-1)
\r
273 SequenceGroup sg = (SequenceGroup)groups.elementAt(selectedGroupIndex);
\r
274 Enumeration enum = assignedVector.elements();
\r
275 while(enum.hasMoreElements())
\r
277 String id = (String)enum.nextElement();
\r
278 unassignedVector.addElement( id );
\r
279 sg.deleteSequence( (SequenceI)sequenceHash.get( id ));
\r
282 assignedVector.clear();
\r
286 protected void addGroup_actionPerformed(ActionEvent e)
\r
289 ColourSchemeI cs = ColourSchemeFactory.get( (String)colourCombo.getSelectedItem() );
\r
290 // ColourProperties.getColourScheme( colourCombo.getSelectedIndex() );
\r
293 new SequenceGroup("Group "+(groups.size()+1),
\r
296 boxesCheck.isSelected(),
\r
297 textCheck.isSelected(),
\r
298 colourTextCheck.isSelected(),
\r
301 updateGroupcombo();
\r
302 groupsCombo.setSelectedIndex( groupsCombo.getItemCount()-1 );
\r
306 protected void deleteGroup_actionPerformed(ActionEvent e)
\r
308 removeAll_actionPerformed(null);
\r
309 groups.remove( selectedGroupIndex );
\r
310 selectedGroupIndex=-1;
\r
311 updateGroupcombo();
\r
312 groupsCombo.setSelectedIndex( groupsCombo.getItemCount()-1 );
\r