X-Git-Url: http://source.jalview.org/gitweb/?a=blobdiff_plain;f=src%2Fjalview%2Fgui%2FFeatureSettings.java;h=7c95ed78e19dd96e5aa029bfcd0292b057dcd16d;hb=4263dac5b885f760215fa599eb453e1221767d04;hp=eb744544ea74f33a4f33f8ed75037db17453a67f;hpb=22b9e04a8351aef1cb23a66d898502601499b673;p=jalview.git diff --git a/src/jalview/gui/FeatureSettings.java b/src/jalview/gui/FeatureSettings.java index eb74454..7c95ed7 100755 --- a/src/jalview/gui/FeatureSettings.java +++ b/src/jalview/gui/FeatureSettings.java @@ -35,6 +35,7 @@ public class FeatureSettings extends JPanel final FeatureRenderer fr; final AlignmentPanel ap; final AlignViewport av; + Hashtable allFeatures; Object [][] originalData; final JInternalFrame frame; JScrollPane scrollPane = new JScrollPane(); @@ -124,8 +125,12 @@ public class FeatureSettings extends JPanel bigPanel.add(transPanel, BorderLayout.SOUTH); bigPanel.add(scrollPane, BorderLayout.CENTER); if(groupPanel!=null) + { + groupPanel.setLayout( + new GridLayout(groupPanel.getComponentCount()/3, 4)); + groupPanel.validate(); bigPanel.add(groupPanel, BorderLayout.NORTH); - + } add(bigPanel, BorderLayout.CENTER); add(buttonPanel, BorderLayout.SOUTH); @@ -139,30 +144,28 @@ public class FeatureSettings extends JPanel else fr.featureGroups.clear(); - Vector allFeatures = new Vector(); - Vector features; - Enumeration e; - SequenceFeature sf; + allFeatures = new Hashtable(); + SequenceFeature[] features; for (int i = 0; i < av.alignment.getHeight(); i++) { features = av.alignment.getSequenceAt(i).getDatasetSequence(). getSequenceFeatures(); + if (features == null) continue; - e = features.elements(); - while (e.hasMoreElements()) + int index = 0; + while (index < features.length) { - sf = (SequenceFeature) e.nextElement(); - if(sf.getFeatureGroup()!=null - && !fr.featureGroups.containsKey(sf.getFeatureGroup())) + if(features[index].getFeatureGroup()!=null + && !fr.featureGroups.containsKey(features[index].getFeatureGroup())) { - fr.featureGroups.put(sf.getFeatureGroup(), new Boolean(true)); + fr.featureGroups.put(features[index].getFeatureGroup(), new Boolean(true)); if(groupPanel==null) groupPanel = new JPanel(); - final JCheckBox check = new JCheckBox(sf.getFeatureGroup(), true); + final JCheckBox check = new JCheckBox(features[index].getFeatureGroup(), true); check.setFont(new Font("Serif", Font.BOLD, 12)); check.addItemListener(new ItemListener() { @@ -176,15 +179,19 @@ public class FeatureSettings extends JPanel if (ap.overviewPanel != null) ap.overviewPanel.updateOverviewImage(); } - + resetTable(); } }); groupPanel.add(check); } - if (!allFeatures.contains(sf.getType())) + if (!allFeatures.contains(features[index].getType())) { - allFeatures.addElement(sf.getType()); + if(features[index].featureGroup!=null) + allFeatures.put(features[index].getType(), features[index].featureGroup); + else + allFeatures.put(features[index].getType(), "NOGROUP"); } + index++; } } if(allFeatures.size()<1) @@ -200,87 +207,111 @@ public class FeatureSettings extends JPanel return; } + resetTable(); + } + + void resetTable() + { int fSize = allFeatures.size(); String type; boolean originalExists = false; - if(originalData!=null) + if (originalData != null) originalExists = true; else originalData = new Object[fSize][3]; - Object [][] data = new Object[fSize][3]; - for(int i=0; i