X-Git-Url: http://source.jalview.org/gitweb/?a=blobdiff_plain;f=src%2Fjalview%2Fappletgui%2FFeatureSettings.java;h=30d57e0a3326e6837761655f27963a0ec3d90e9c;hb=0201d2b630e06a75fd9522f24863e9cecf8810fd;hp=e01615acc80b96921d7fc73035d80a84ee11adaf;hpb=1d37661bae76ec6d499ff50a88ea249b8b33430e;p=jalview.git diff --git a/src/jalview/appletgui/FeatureSettings.java b/src/jalview/appletgui/FeatureSettings.java index e01615a..30d57e0 100755 --- a/src/jalview/appletgui/FeatureSettings.java +++ b/src/jalview/appletgui/FeatureSettings.java @@ -31,6 +31,8 @@ public class FeatureSettings extends Panel implements ItemListener, final AlignmentPanel ap; final AlignViewport av; final Frame frame; + Panel groupPanel; + Panel featurePanel = new Panel(); public FeatureSettings(AlignViewport av, final AlignmentPanel ap) { @@ -40,9 +42,22 @@ public class FeatureSettings extends Panel implements ItemListener, setTableData(); + this.setLayout(new BorderLayout()); + ScrollPane sp = new ScrollPane(); + sp.add(featurePanel); + add(sp, BorderLayout.CENTER); + if(groupPanel!=null) + { + sp = new ScrollPane(); + sp.add(groupPanel); + + add(sp, BorderLayout.NORTH); + sp.validate(); + sp.setSize( 100, 55); + } frame = new Frame(); frame.add(this); - int height = this.getComponentCount()*50; + int height = featurePanel.getComponentCount()*50 ; if (height>400) height = 400; @@ -52,68 +67,92 @@ public class FeatureSettings extends Panel implements ItemListener, void setTableData() { + if(fr.featureGroups==null) + fr.featureGroups = new Hashtable(); + else + fr.featureGroups.clear(); + Vector allFeatures = new Vector(); - Vector features; - Enumeration e; + Enumeration tmpfeatures; SequenceFeature sf; for (int i = 0; i < av.alignment.getHeight(); i++) { - features = av.alignment.getSequenceAt(i).getSequenceFeatures(); - if (features == null) + if (av.alignment.getSequenceAt(i).getSequenceFeatures() == null) continue; - e = features.elements(); - while (e.hasMoreElements()) + tmpfeatures = av.alignment.getSequenceAt(i).getSequenceFeatures().elements(); + while (tmpfeatures.hasMoreElements()) { - sf = (SequenceFeature) e.nextElement(); + sf = (SequenceFeature) tmpfeatures.nextElement(); if (!allFeatures.contains(sf.getType())) { allFeatures.addElement(sf.getType()); + Color col = fr.getColour(sf.getType()); + boolean displayed = true; + if (fr.featuresDisplayed != null) + displayed = fr.featuresDisplayed.contains(sf.getType()); + + Checkbox check = new Checkbox(sf.getType(), displayed); + check.addMouseListener(this); + check.addMouseMotionListener(this); + check.setBackground(col); + check.addItemListener(this); + featurePanel.add(check); + } + if(sf.getFeatureGroup()!=null + && !fr.featureGroups.containsKey(sf.getFeatureGroup())) + { + fr.featureGroups.put(sf.getFeatureGroup(), new Boolean(true)); + if(groupPanel==null) + groupPanel = new Panel(); + + Checkbox check = new Checkbox(sf.getFeatureGroup(), true); + check.setFont(new Font("Serif", Font.BOLD, 12)); + check.addItemListener(this); + groupPanel.add(check); } } } - int fSize = allFeatures.size(); - - String type; - this.setLayout(new GridLayout(fSize, 2, 10,5)); - - for (int i = 0; i < fSize; i++) - { - type = allFeatures.elementAt(i).toString(); - Color col = fr.getColour(type); - boolean displayed = true; - if(fr.featuresDisplayed!=null) - displayed = fr.featuresDisplayed.contains(type); - - Checkbox check = new Checkbox(type, displayed); - check.addMouseListener(this); - check.addMouseMotionListener(this); - check.setBackground(col); - check.addItemListener(this); - add(check); - } - validate(); + featurePanel.setLayout(new GridLayout(allFeatures.size(), 2, 10,5)); + featurePanel.validate(); } public void itemStateChanged(ItemEvent evt) { - Component [] comps = this.getComponents(); - int cSize = comps.length; - - Object [][] data = new Object[cSize][3]; - - for(int i=0; i this.getSize().height) { - comp = this.getComponent(this.getComponentCount()-1); + comp = featurePanel.getComponent(featurePanel.getComponentCount()-1); } else if(height < 0) { - comp = this.getComponent(0); + comp = featurePanel.getComponent(0); } else { - comp = this.getComponentAt(evt.getX(), + comp = featurePanel.getComponentAt(evt.getX(), evt.getY() + evt.getComponent().getLocation().y); } @@ -157,16 +197,17 @@ public class FeatureSettings extends Panel implements ItemListener, if (selectedCheck != null && target != null && selectedCheck != target) { int targetIndex = -1; - for(int i=0; i