git://source.jalview.org
/
jalview.git
/ commitdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
| commitdiff |
tree
raw
|
patch
|
inline
| side by side (parent:
87a85be
)
JAL-2483 efficient lookup of feature types and groups - applet
author
gmungoc
<g.m.carstairs@dundee.ac.uk>
Fri, 12 May 2017 15:29:07 +0000
(16:29 +0100)
committer
gmungoc
<g.m.carstairs@dundee.ac.uk>
Fri, 12 May 2017 15:29:07 +0000
(16:29 +0100)
src/jalview/appletgui/FeatureSettings.java
patch
|
blob
|
history
diff --git
a/src/jalview/appletgui/FeatureSettings.java
b/src/jalview/appletgui/FeatureSettings.java
index
1b9fbf9
..
68881b2
100755
(executable)
--- a/
src/jalview/appletgui/FeatureSettings.java
+++ b/
src/jalview/appletgui/FeatureSettings.java
@@
-23,7
+23,7
@@
package jalview.appletgui;
import jalview.api.FeatureColourI;
import jalview.api.FeatureSettingsControllerI;
import jalview.datamodel.AlignmentI;
import jalview.api.FeatureColourI;
import jalview.api.FeatureSettingsControllerI;
import jalview.datamodel.AlignmentI;
-import jalview.datamodel.SequenceFeature;
+import jalview.datamodel.SequenceI;
import jalview.util.MessageManager;
import java.awt.BorderLayout;
import jalview.util.MessageManager;
import java.awt.BorderLayout;
@@
-56,11
+56,12
@@
import java.awt.event.MouseListener;
import java.awt.event.MouseMotionListener;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
import java.awt.event.MouseMotionListener;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
+import java.util.ArrayList;
import java.util.Arrays;
import java.util.Arrays;
-import java.util.Enumeration;
+import java.util.HashSet;
import java.util.List;
import java.util.Map;
import java.util.List;
import java.util.Map;
-import java.util.Vector;
+import java.util.Set;
public class FeatureSettings extends Panel implements ItemListener,
MouseListener, MouseMotionListener, ActionListener,
public class FeatureSettings extends Panel implements ItemListener,
MouseListener, MouseMotionListener, ActionListener,
@@
-370,33
+371,33
@@
public class FeatureSettings extends Panel implements ItemListener,
// Group selection states
void resetTable(boolean groupsChanged)
{
// Group selection states
void resetTable(boolean groupsChanged)
{
- SequenceFeature[] tmpfeatures;
- String group = null, type;
- Vector<String> visibleChecks = new Vector<String>();
+ List<String> displayableTypes = new ArrayList<String>();
AlignmentI alignment = av.getAlignment();
for (int i = 0; i < alignment.getHeight(); i++)
{
AlignmentI alignment = av.getAlignment();
for (int i = 0; i < alignment.getHeight(); i++)
{
- if (alignment.getSequenceAt(i).getSequenceFeatures() == null)
- {
- continue;
- }
+ SequenceI seq = alignment.getSequenceAt(i);
- tmpfeatures = alignment.getSequenceAt(i).getSequenceFeatures();
- int index = 0;
- while (index < tmpfeatures.length)
+ /*
+ * get the sequence's groups for positional features
+ * and keep track of which groups are visible
+ */
+ Set<String> groups = seq.getFeatures().getFeatureGroups(true);
+ Set<String> visibleGroups = new HashSet<String>();
+ for (String group : groups)
{
{
- group = tmpfeatures[index].featureGroup;
-
if (group == null || fr.checkGroupVisibility(group, true))
{
if (group == null || fr.checkGroupVisibility(group, true))
{
- type = tmpfeatures[index].getType();
- if (!visibleChecks.contains(type))
- {
- visibleChecks.addElement(type);
- }
+ visibleGroups.add(group);
}
}
- index++;
}
}
+
+ /*
+ * get distinct feature types for visible groups
+ * record distinct visible types
+ */
+ Set<String> types = seq.getFeatures().getFeatureTypesForGroups(true,
+ visibleGroups.toArray(new String[visibleGroups.size()]));
+ displayableTypes.addAll(types);
}
Component[] comps;
}
Component[] comps;
@@
-408,7
+409,7
@@
public class FeatureSettings extends Panel implements ItemListener,
{
comps = featurePanel.getComponents();
check = (MyCheckbox) comps[i];
{
comps = featurePanel.getComponents();
check = (MyCheckbox) comps[i];
- if (!visibleChecks.contains(check.type))
+ if (!displayableTypes.contains(check.type))
{
featurePanel.remove(i);
cSize--;
{
featurePanel.remove(i);
cSize--;
@@
-425,24
+426,24
@@
public class FeatureSettings extends Panel implements ItemListener,
{
String item = rol.get(ro);
{
String item = rol.get(ro);
- if (!visibleChecks.contains(item))
+ if (!displayableTypes.contains(item))
{
continue;
}
{
continue;
}
- visibleChecks.removeElement(item);
+ displayableTypes.remove(item);
addCheck(false, item);
}
}
addCheck(false, item);
}
}
- // now add checkboxes which should be visible,
- // if they have not already been added
- Enumeration<String> en = visibleChecks.elements();
-
- while (en.hasMoreElements())
+ /*
+ * now add checkboxes which should be visible,
+ * if they have not already been added
+ */
+ for (String type : displayableTypes)
{
{
- addCheck(groupsChanged, en.nextElement().toString());
+ addCheck(groupsChanged, type);
}
featurePanel.setLayout(new GridLayout(featurePanel.getComponentCount(),
}
featurePanel.setLayout(new GridLayout(featurePanel.getComponentCount(),