From 95de746a08351b07696a0c455ef37d866c8104d2 Mon Sep 17 00:00:00 2001 From: Charles Ofoegbu Date: Tue, 20 Jan 2015 17:20:40 +0000 Subject: [PATCH] Further abstractions and clean up --- resources/lang/Messages.properties | 11 + src/jalview/controller/AlignViewController.java | 100 +++++- src/jalview/gui/AnnotationColumnChooser.java | 356 ++++++-------------- src/jalview/gui/AnnotationRowFilter.java | 87 ----- src/jalview/gui/JvSwingUtils.java | 27 ++ .../AnnotationFilterParameter.java | 101 ++++++ 6 files changed, 339 insertions(+), 343 deletions(-) create mode 100644 src/jalview/viewmodel/annotationfilter/AnnotationFilterParameter.java diff --git a/resources/lang/Messages.properties b/resources/lang/Messages.properties index 57bcd5f..5c1de0b 100644 --- a/resources/lang/Messages.properties +++ b/resources/lang/Messages.properties @@ -1178,3 +1178,14 @@ label.no_colour_selection_in_scheme = Please, make a colour selection before to label.no_colour_selection_warn = Error saving colour scheme label.select_by_annotation = Select By Annotation action.select_by_annotation = Select by annotation... +label.threshold_filter = Threshold Filter +action.hide = Hide +action.select = Select +label.alpha_helix = Alpha Helix +label.beta_strand = Beta Strand +label.turn = Turn +label.select_all = Select All +label.structures_filter = Structures Filter +label.search_filter = Search Filter +label.display_name = Display Label +label.description = Description diff --git a/src/jalview/controller/AlignViewController.java b/src/jalview/controller/AlignViewController.java index 21cf630..7b42a30 100644 --- a/src/jalview/controller/AlignViewController.java +++ b/src/jalview/controller/AlignViewController.java @@ -20,11 +20,6 @@ */ package jalview.controller; -import java.awt.Color; -import java.util.ArrayList; -import java.util.BitSet; -import java.util.List; - import jalview.analysis.AlignmentSorter; import jalview.api.AlignViewControllerGuiI; import jalview.api.AlignViewControllerI; @@ -33,12 +28,20 @@ import jalview.api.AlignmentViewPanel; import jalview.api.FeatureRenderer; import jalview.commands.OrderCommand; import jalview.datamodel.AlignmentI; +import jalview.datamodel.Annotation; import jalview.datamodel.ColumnSelection; import jalview.datamodel.SequenceCollectionI; import jalview.datamodel.SequenceFeature; import jalview.datamodel.SequenceGroup; import jalview.datamodel.SequenceI; import jalview.util.MessageManager; +import jalview.viewmodel.annotationfilter.AnnotationFilterParameter; +import jalview.viewmodel.annotationfilter.AnnotationFilterParameter.SearchableAnnotationField; + +import java.awt.Color; +import java.util.ArrayList; +import java.util.BitSet; +import java.util.List; public class AlignViewController implements AlignViewControllerI { @@ -100,7 +103,9 @@ public class AlignViewController implements AlignViewControllerI (int) (Math.random() * 255), (int) (Math.random() * 255)); col = col.brighter(); for (SequenceI sq : gps[g].getSequences(null)) + { viewport.setSequenceColour(sq, col); + } } return true; } @@ -300,6 +305,91 @@ public class AlignViewController implements AlignViewControllerI } } + public static boolean filterAnnotations(Annotation[] annotations, + AnnotationFilterParameter filterParams, ColumnSelection cs) + { + cs.revealAllHiddenColumns(); + cs.clear(); + int count = 0; + do + { + if (annotations[count] != null) + { + + boolean itemMatched = false; + + if (filterParams.getThresholdType() == AnnotationFilterParameter.ThresholdType.ABOVE_THRESHOLD + && annotations[count].value > filterParams + .getThresholdValue()) + { + itemMatched = true; + } + if (filterParams.getThresholdType() == AnnotationFilterParameter.ThresholdType.BELOW_THRESHOLD + && annotations[count].value < filterParams + .getThresholdValue()) + { + itemMatched = true; + } + + if (filterParams.isFilterAlphaHelix() + && annotations[count].secondaryStructure == 'H') + { + itemMatched = true; + } + + if (filterParams.isFilterBetaSheet() + && annotations[count].secondaryStructure == 'E') + { + itemMatched = true; + } + + if (filterParams.isFilterTurn() + && annotations[count].secondaryStructure == 'S') + { + itemMatched = true; + } + + String regexSearchString = filterParams.getRegexString(); + if (regexSearchString != null + && !filterParams.getRegexSearchFields().isEmpty()) + { + List fields = filterParams + .getRegexSearchFields(); + try + { + if (fields.contains(SearchableAnnotationField.DISPLAY_STRING) + && annotations[count].displayCharacter + .matches(regexSearchString)) + { + itemMatched = true; + } + } catch (java.util.regex.PatternSyntaxException pse) + { + if (annotations[count].displayCharacter + .equals(regexSearchString)) + { + itemMatched = true; + } + } + if (fields.contains(SearchableAnnotationField.DESCRIPTION) + && annotations[count].description != null + && annotations[count].description + .matches(regexSearchString)) + { + itemMatched = true; + } + } + + if (itemMatched) + { + cs.addElement(count); + } + } + count++; + } while (count < annotations.length); + return false; + } + @Override public void sortAlignmentByFeatureDensity(String[] typ) { diff --git a/src/jalview/gui/AnnotationColumnChooser.java b/src/jalview/gui/AnnotationColumnChooser.java index 31b5b64..9f3aa7b 100644 --- a/src/jalview/gui/AnnotationColumnChooser.java +++ b/src/jalview/gui/AnnotationColumnChooser.java @@ -1,10 +1,11 @@ package jalview.gui; -import jalview.api.analysis.AnnotationFilterParameter; +import jalview.controller.AlignViewController; import jalview.datamodel.AlignmentAnnotation; import jalview.datamodel.ColumnSelection; import jalview.schemes.AnnotationColourGradient; import jalview.util.MessageManager; +import jalview.viewmodel.annotationfilter.AnnotationFilterParameter; import java.awt.BorderLayout; import java.awt.CardLayout; @@ -21,7 +22,6 @@ import javax.swing.JButton; import javax.swing.JCheckBox; import javax.swing.JComboBox; import javax.swing.JInternalFrame; -import javax.swing.JLabel; import javax.swing.JLayeredPane; import javax.swing.JPanel; import javax.swing.JRadioButton; @@ -58,8 +58,6 @@ public class AnnotationColumnChooser extends AnnotationRowFilter implements private JPanel annotationComboBoxPanel = new JPanel(); - private JLabel annotationLabel = new JLabel(); - private BorderLayout borderLayout1 = new BorderLayout(); private JComboBox threshold = new JComboBox(); @@ -208,11 +206,8 @@ public class AnnotationColumnChooser extends AnnotationRowFilter implements slider.setOpaque(false); slider.setPreferredSize(new Dimension(100, 32)); - annotationLabel.setBackground(Color.white); - annotationLabel.setFont(JvSwingUtils.getLabelFont()); - annotationLabel.setText("Select Annotation : "); - - thresholdPanel.setBorder(new TitledBorder("Threshold Filter")); + thresholdPanel.setBorder(new TitledBorder(MessageManager + .getString("label.threshold_filter"))); thresholdPanel.setBackground(Color.white); thresholdPanel.setFont(JvSwingUtils.getLabelFont()); thresholdPanel.setLayout(new MigLayout("", "[left][right]", "[][]")); @@ -225,6 +220,7 @@ public class AnnotationColumnChooser extends AnnotationRowFilter implements noGraphFilterView.setLayout(new MigLayout("", "[left][right]", "[][]")); noGraphFilterView.setBackground(Color.white); + annotationComboBoxPanel.setBackground(Color.white); annotationComboBoxPanel.setFont(JvSwingUtils.getLabelFont()); @@ -383,6 +379,8 @@ public class AnnotationColumnChooser extends AnnotationRowFilter implements .setThresholdType(AnnotationFilterParameter.ThresholdType.NO_THRESHOLD); if (getCurrentAnnotation().graph != AlignmentAnnotation.NO_GRAPH) { + filterParams + .setThresholdValue(getCurrentAnnotation().threshold.value); if (selectedThresholdItem == AnnotationColourGradient.ABOVE_THRESHOLD) { @@ -399,15 +397,15 @@ public class AnnotationColumnChooser extends AnnotationRowFilter implements if (currentStructureFilterPanel != null) { - if (currentStructureFilterPanel.getAlphaHelix().isSelected()) + if (currentStructureFilterPanel.alphaHelix.isSelected()) { filterParams.setFilterAlphaHelix(true); } - if (currentStructureFilterPanel.getBetaStrand().isSelected()) + if (currentStructureFilterPanel.betaStrand.isSelected()) { filterParams.setFilterBetaSheet(true); } - if (currentStructureFilterPanel.getTurn().isSelected()) + if (currentStructureFilterPanel.turn.isSelected()) { filterParams.setFilterTurn(true); } @@ -415,17 +413,18 @@ public class AnnotationColumnChooser extends AnnotationRowFilter implements if (currentSearchPanel != null) { - if (!currentSearchPanel.getSearchString().isEmpty()) + + if (!currentSearchPanel.searchBox.getText().isEmpty()) { - currentSearchPanel.getDescription().setEnabled(true); - currentSearchPanel.getDisplayName().setEnabled(true); - filterParams.setRegexString(currentSearchPanel.getSearchString()); - if (currentSearchPanel.isDisplayNameChecked()) + currentSearchPanel.description.setEnabled(true); + currentSearchPanel.displayName.setEnabled(true); + filterParams.setRegexString(currentSearchPanel.searchBox.getText()); + if (currentSearchPanel.displayName.isSelected()) { filterParams .addRegexSearchField(AnnotationFilterParameter.SearchableAnnotationField.DISPLAY_STRING); } - if (currentSearchPanel.isDescriptionChecked()) + if (currentSearchPanel.description.isSelected()) { filterParams .addRegexSearchField(AnnotationFilterParameter.SearchableAnnotationField.DESCRIPTION); @@ -433,12 +432,13 @@ public class AnnotationColumnChooser extends AnnotationRowFilter implements } else { - currentSearchPanel.getDescription().setEnabled(false); - currentSearchPanel.getDisplayName().setEnabled(false); + currentSearchPanel.description.setEnabled(false); + currentSearchPanel.displayName.setEnabled(false); } } - filterAnnotations(getCurrentAnnotation().annotations, filterParams, + AlignViewController.filterAnnotations( + getCurrentAnnotation().annotations, filterParams, av.getColumnSelection()); av.showAllHiddenColumns(); @@ -465,6 +465,48 @@ public class AnnotationColumnChooser extends AnnotationRowFilter implements } } + public FurtherActionPanel getCurrentFutherActionPanel() + { + return currentFurtherActionPanel; + } + + public void setCurrentFutherActionPanel( + FurtherActionPanel currentFutherActionPanel) + { + this.currentFurtherActionPanel = currentFutherActionPanel; + } + + public SearchPanel getCurrentSearchPanel() + { + return currentSearchPanel; + } + + public void setCurrentSearchPanel(SearchPanel currentSearchPanel) + { + this.currentSearchPanel = currentSearchPanel; + } + + public int getActionOption() + { + return actionOption; + } + + public void setActionOption(int actionOption) + { + this.actionOption = actionOption; + } + + public StructureFilterPanel getCurrentStructureFilterPanel() + { + return currentStructureFilterPanel; + } + + public void setCurrentStructureFilterPanel( + StructureFilterPanel currentStructureFilterPanel) + { + this.currentStructureFilterPanel = currentStructureFilterPanel; + } + public void select_action(ActionEvent actionEvent) { JRadioButton radioButton = (JRadioButton) actionEvent.getSource(); @@ -512,47 +554,6 @@ public class AnnotationColumnChooser extends AnnotationRowFilter implements updateView(); } - public FurtherActionPanel getCurrentFutherActionPanel() - { - return currentFurtherActionPanel; - } - - public void setCurrentFutherActionPanel( - FurtherActionPanel currentFutherActionPanel) - { - this.currentFurtherActionPanel = currentFutherActionPanel; - } - - public SearchPanel getCurrentSearchPanel() - { - return currentSearchPanel; - } - - public void setCurrentSearchPanel(SearchPanel currentSearchPanel) - { - this.currentSearchPanel = currentSearchPanel; - } - - public int getActionOption() - { - return actionOption; - } - - public void setActionOption(int actionOption) - { - this.actionOption = actionOption; - } - - public StructureFilterPanel getCurrentStructureFilterPanel() - { - return currentStructureFilterPanel; - } - - public void setCurrentStructureFilterPanel( - StructureFilterPanel currentStructureFilterPanel) - { - this.currentStructureFilterPanel = currentStructureFilterPanel; - } public class FurtherActionPanel extends JPanel { @@ -567,10 +568,8 @@ public class AnnotationColumnChooser extends AnnotationRowFilter implements public FurtherActionPanel(AnnotationColumnChooser aColChooser) { this.aColChooser = aColChooser; - getSelectOption().setBackground(Color.white); - getSelectOption().setFont(JvSwingUtils.getLabelFont()); - getSelectOption().setText("Select"); - getSelectOption().addActionListener(new ActionListener() + JvSwingUtils.jvInitComponent(selectOption, "action.select"); + selectOption.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent actionEvent) @@ -579,10 +578,8 @@ public class AnnotationColumnChooser extends AnnotationRowFilter implements } }); - getHideOption().setBackground(Color.white); - getHideOption().setFont(JvSwingUtils.getLabelFont()); - getHideOption().setText("Hide"); - getHideOption().addActionListener(new ActionListener() + JvSwingUtils.jvInitComponent(hideOption, "action.hide"); + hideOption.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent actionEvent) @@ -591,16 +588,15 @@ public class AnnotationColumnChooser extends AnnotationRowFilter implements } }); - getOptionsGroup().add(getSelectOption()); - getOptionsGroup().add(getHideOption()); - getOptionsGroup().setSelected(getSelectOption().getModel(), true); + optionsGroup.add(selectOption); + optionsGroup.add(hideOption); + optionsGroup.setSelected(selectOption.getModel(), true); - this.setBackground(Color.white); - this.setFont(JvSwingUtils.getLabelFont()); + JvSwingUtils.jvInitComponent(this); syncState(); - this.add(getSelectOption()); - this.add(getHideOption()); + this.add(selectOption); + this.add(hideOption); } public void selectRadioAction(ActionEvent actionEvent) @@ -615,47 +611,16 @@ public class AnnotationColumnChooser extends AnnotationRowFilter implements aColChooser.hide_action(actionEvent); } - public JRadioButton getHideOption() - { - return hideOption; - } - - public void setHideOption(JRadioButton hideOption) - { - this.hideOption = hideOption; - } - - public JRadioButton getSelectOption() - { - return selectOption; - } - - public void setSelectOption(JRadioButton selectOption) - { - this.selectOption = selectOption; - } - - public ButtonGroup getOptionsGroup() - { - return optionsGroup; - } - - public void setOptionsGroup(ButtonGroup optionsGroup) - { - this.optionsGroup = optionsGroup; - } - public void syncState() { if (aColChooser.getActionOption() == AnnotationColumnChooser.ACTION_OPTION_HIDE) { - this.getOptionsGroup().setSelected(this.getHideOption().getModel(), + this.optionsGroup.setSelected(this.hideOption.getModel(), true); } else { - this.getOptionsGroup().setSelected( - this.getSelectOption().getModel(), true); + this.optionsGroup.setSelected(this.selectOption.getModel(), true); } } } @@ -676,9 +641,7 @@ public class AnnotationColumnChooser extends AnnotationRowFilter implements { this.aColChooser = aColChooser; - alphaHelix.setBackground(Color.white); - alphaHelix.setFont(JvSwingUtils.getLabelFont()); - alphaHelix.setText("Alpha Helix"); + JvSwingUtils.jvInitComponent(alphaHelix, "label.alpha_helix"); alphaHelix.addActionListener(new ActionListener() { @Override @@ -688,9 +651,7 @@ public class AnnotationColumnChooser extends AnnotationRowFilter implements } }); - betaStrand.setBackground(Color.white); - betaStrand.setFont(JvSwingUtils.getLabelFont()); - betaStrand.setText("Beta Strand"); + JvSwingUtils.jvInitComponent(betaStrand, "label.beta_strand"); betaStrand.addActionListener(new ActionListener() { @Override @@ -700,9 +661,7 @@ public class AnnotationColumnChooser extends AnnotationRowFilter implements } }); - turn.setBackground(Color.white); - turn.setFont(JvSwingUtils.getLabelFont()); - turn.setText("Turn"); + JvSwingUtils.jvInitComponent(turn, "label.turn"); turn.addActionListener(new ActionListener() { @Override @@ -712,9 +671,7 @@ public class AnnotationColumnChooser extends AnnotationRowFilter implements } }); - all.setBackground(Color.white); - all.setFont(JvSwingUtils.getLabelFont()); - all.setText("Select all"); + JvSwingUtils.jvInitComponent(all, "label.select_all"); all.addActionListener(new ActionListener() { @Override @@ -724,9 +681,9 @@ public class AnnotationColumnChooser extends AnnotationRowFilter implements } }); - this.setBorder(new TitledBorder("Structures Filter")); - this.setBackground(Color.white); - this.setFont(JvSwingUtils.getLabelFont()); + this.setBorder(new TitledBorder(MessageManager + .getString("label.structures_filter"))); + JvSwingUtils.jvInitComponent(this); this.add(all); this.add(alphaHelix); @@ -792,10 +749,10 @@ public class AnnotationColumnChooser extends AnnotationRowFilter implements .getCurrentStructureFilterPanel(); if (sfp != null) { - alphaHelix.setSelected(sfp.getAlphaHelix().isSelected()); - betaStrand.setSelected(sfp.getBetaStrand().isSelected()); - turn.setSelected(sfp.getTurn().isSelected()); - if (sfp.getAll().isSelected()) + alphaHelix.setSelected(sfp.alphaHelix.isSelected()); + betaStrand.setSelected(sfp.betaStrand.isSelected()); + turn.setSelected(sfp.turn.isSelected()); + if (sfp.all.isSelected()) { all.setSelected(true); alphaHelix.setSelected(true); @@ -805,47 +762,6 @@ public class AnnotationColumnChooser extends AnnotationRowFilter implements } } - - public JCheckBox getAlphaHelix() - { - return alphaHelix; - } - - public void setAlphaHelix(JCheckBox alphaHelix) - { - this.alphaHelix = alphaHelix; - } - - public JCheckBox getBetaStrand() - { - return betaStrand; - } - - public void setBetaStrand(JCheckBox betaStrand) - { - this.betaStrand = betaStrand; - } - - public JCheckBox getTurn() - { - return turn; - } - - public void setTurn(JCheckBox turn) - { - this.turn = turn; - } - - public JCheckBox getAll() - { - return all; - } - - public void setAll(JCheckBox all) - { - this.all = all; - - } } public class SearchPanel extends JPanel @@ -858,19 +774,16 @@ public class AnnotationColumnChooser extends AnnotationRowFilter implements private JTextField searchBox = new JTextField(10); - private JCheckBox structuresFilter = new JCheckBox(); - public SearchPanel(AnnotationColumnChooser aColChooser) { this.aColChooser = aColChooser; - this.setBorder(new TitledBorder("Search Filter")); - this.setBackground(Color.white); - this.setFont(JvSwingUtils.getLabelFont()); + JvSwingUtils.jvInitComponent(this); + this.setBorder(new TitledBorder(MessageManager + .getString("label.search_filter"))); - getSearchBox().setBackground(Color.white); - getSearchBox().setFont(JvSwingUtils.getLabelFont()); - getSearchBox().getDocument().addDocumentListener( + JvSwingUtils.jvInitComponent(searchBox); + searchBox.getDocument().addDocumentListener( new DocumentListener() { @Override @@ -892,11 +805,9 @@ public class AnnotationColumnChooser extends AnnotationRowFilter implements } }); - getDisplayName().setBackground(Color.white); - getDisplayName().setFont(JvSwingUtils.getLabelFont()); - getDisplayName().setText("Display Name"); - getDisplayName().setEnabled(false); - getDisplayName().addActionListener(new ActionListener() + JvSwingUtils.jvInitComponent(displayName, "label.display_name"); + displayName.setEnabled(false); + displayName.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent actionEvent) @@ -905,11 +816,9 @@ public class AnnotationColumnChooser extends AnnotationRowFilter implements } }); - getDescription().setBackground(Color.white); - getDescription().setFont(JvSwingUtils.getLabelFont()); - getDescription().setText("Description"); - getDescription().setEnabled(false); - getDescription().addActionListener(new ActionListener() + JvSwingUtils.jvInitComponent(description, "label.description"); + description.setEnabled(false); + description.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent actionEvent) @@ -919,24 +828,9 @@ public class AnnotationColumnChooser extends AnnotationRowFilter implements }); syncState(); - this.add(getSearchBox()); - this.add(getDisplayName()); - this.add(getDescription()); - } - - public boolean isDescriptionChecked() - { - return getDescription().isSelected(); - } - - public boolean isDisplayNameChecked() - { - return getDisplayName().isSelected(); - } - - public String getSearchString() - { - return getSearchBox().getText(); + this.add(searchBox); + this.add(displayName); + this.add(description); } public void displayNameCheckboxAction() @@ -957,58 +851,18 @@ public class AnnotationColumnChooser extends AnnotationRowFilter implements aColChooser.updateView(); } - public JCheckBox getDisplayName() - { - return displayName; - } - - public void setDisplayName(JCheckBox displayName) - { - this.displayName = displayName; - } - - public JCheckBox getDescription() - { - return description; - } - - public void setDescription(JCheckBox description) - { - this.description = description; - } - - public JTextField getSearchBox() - { - return searchBox; - } - - public void setSearchBox(JTextField searchBox) - { - this.searchBox = searchBox; - } - - public JCheckBox getStructuresFilter() - { - return structuresFilter; - } - - public void setStructuresFilter(JCheckBox structuresFilter) - { - this.structuresFilter = structuresFilter; - } - public void syncState() { SearchPanel sp = aColChooser.getCurrentSearchPanel(); if (sp != null) { - description.setEnabled(sp.getDescription().isEnabled()); - description.setSelected(sp.getDescription().isSelected()); + description.setEnabled(sp.description.isEnabled()); + description.setSelected(sp.description.isSelected()); - displayName.setEnabled(sp.getDisplayName().isEnabled()); - displayName.setSelected(sp.getDisplayName().isSelected()); + displayName.setEnabled(sp.displayName.isEnabled()); + displayName.setSelected(sp.displayName.isSelected()); - searchBox.setText(sp.getSearchBox().getText()); + searchBox.setText(sp.searchBox.getText()); } } } diff --git a/src/jalview/gui/AnnotationRowFilter.java b/src/jalview/gui/AnnotationRowFilter.java index 722ecdc..c0eea38 100644 --- a/src/jalview/gui/AnnotationRowFilter.java +++ b/src/jalview/gui/AnnotationRowFilter.java @@ -1,10 +1,6 @@ package jalview.gui; -import jalview.api.analysis.AnnotationFilterParameter; -import jalview.api.analysis.AnnotationFilterParameter.SearchableAnnotationField; import jalview.datamodel.AlignmentAnnotation; -import jalview.datamodel.Annotation; -import jalview.datamodel.ColumnSelection; import jalview.datamodel.GraphLine; import jalview.datamodel.SequenceGroup; import jalview.schemes.AnnotationColourGradient; @@ -13,7 +9,6 @@ import jalview.util.MessageManager; import java.awt.event.ActionEvent; import java.awt.event.MouseAdapter; import java.awt.event.MouseEvent; -import java.util.List; import java.util.Vector; import javax.swing.JCheckBox; @@ -363,88 +358,6 @@ public abstract class AnnotationRowFilter extends JPanel return false; } - protected boolean filterAnnotations(Annotation[] annotations, - AnnotationFilterParameter filterParams, ColumnSelection cs) - { - av.showAllHiddenColumns(); - cs.clear(); - int count = 0; - do - { - if (annotations[count] != null) - { - - boolean itemMatched = false; - - if (filterParams.getThresholdType() == AnnotationFilterParameter.ThresholdType.ABOVE_THRESHOLD - && annotations[count].value > currentAnnotation.threshold.value) - { - itemMatched = true; - } - if (filterParams.getThresholdType() == AnnotationFilterParameter.ThresholdType.BELOW_THRESHOLD - && annotations[count].value < currentAnnotation.threshold.value) - { - itemMatched = true; - } - - if (filterParams.isFilterAlphaHelix() - && annotations[count].secondaryStructure == 'H') - { - itemMatched = true; - } - - if (filterParams.isFilterBetaSheet() - && annotations[count].secondaryStructure == 'E') - { - itemMatched = true; - } - - if (filterParams.isFilterTurn() - && annotations[count].secondaryStructure == 'S') - { - itemMatched = true; - } - - String regexSearchString = filterParams.getRegexString(); - if (regexSearchString != null - && !filterParams.getRegexSearchFields().isEmpty()) - { - List fields = filterParams - .getRegexSearchFields(); - try - { - if (fields.contains(SearchableAnnotationField.DISPLAY_STRING) - && annotations[count].displayCharacter - .matches(regexSearchString)) - { - itemMatched = true; - } - } catch (java.util.regex.PatternSyntaxException pse) - { - if (annotations[count].displayCharacter - .equals(regexSearchString)) - { - itemMatched = true; - } - } - if (fields.contains(SearchableAnnotationField.DESCRIPTION) - && annotations[count].description != null - && annotations[count].description - .matches(regexSearchString)) - { - itemMatched = true; - } - } - - if (itemMatched) - { - cs.addElement(count); - } - } - count++; - } while (count < annotations.length); - return false; - } public jalview.datamodel.AlignmentAnnotation getCurrentAnnotation() { diff --git a/src/jalview/gui/JvSwingUtils.java b/src/jalview/gui/JvSwingUtils.java index e433243..c404e2f 100644 --- a/src/jalview/gui/JvSwingUtils.java +++ b/src/jalview/gui/JvSwingUtils.java @@ -20,11 +20,14 @@ */ package jalview.gui; +import jalview.util.MessageManager; + import java.awt.Color; import java.awt.Font; import java.awt.Rectangle; import java.awt.event.ActionListener; +import javax.swing.AbstractButton; import javax.swing.JButton; import javax.swing.JComponent; import javax.swing.JLabel; @@ -209,4 +212,28 @@ public final class JvSwingUtils } } + public static void jvInitComponent(AbstractButton comp, String i18nString) + { + setColorAndFont(comp); + if (i18nString != null && !i18nString.isEmpty()) + { + comp.setText(MessageManager.getString(i18nString)); + } + } + + public static void jvInitComponent(JComponent comp) + { + setColorAndFont(comp); + } + + // public static void jvInitComponent(JComponent comp, String name){ + // setColorAndFont(comp); + // comp.setText(MessageManager.getString("label.select_all")); + // } + + private static void setColorAndFont(JComponent comp) + { + comp.setBackground(Color.white); + comp.setFont(JvSwingUtils.getLabelFont()); + } } diff --git a/src/jalview/viewmodel/annotationfilter/AnnotationFilterParameter.java b/src/jalview/viewmodel/annotationfilter/AnnotationFilterParameter.java new file mode 100644 index 0000000..3cd4ef7 --- /dev/null +++ b/src/jalview/viewmodel/annotationfilter/AnnotationFilterParameter.java @@ -0,0 +1,101 @@ +package jalview.viewmodel.annotationfilter; + +import java.util.ArrayList; +import java.util.List; + +public class AnnotationFilterParameter +{ + public enum ThresholdType + { + NO_THRESHOLD, BELOW_THRESHOLD, ABOVE_THRESHOLD; + } + + public enum SearchableAnnotationField + { + DISPLAY_STRING, DESCRIPTION; + } + private ThresholdType thresholdType; + + private float thresholdValue; + + private boolean filterAlphaHelix = false; + + private boolean filterBetaSheet = false; + + private boolean filterTurn = false; + + private String regexString; + + private List regexSearchFields = new ArrayList(); + + public ThresholdType getThresholdType() + { + return thresholdType; + } + + public void setThresholdType(ThresholdType thresholdType) + { + this.thresholdType = thresholdType; + } + + public float getThresholdValue() + { + return thresholdValue; + } + + public void setThresholdValue(float thresholdValue) + { + this.thresholdValue = thresholdValue; + } + + public String getRegexString() + { + return regexString; + } + + public void setRegexString(String regexString) + { + this.regexString = regexString; + } + + public List getRegexSearchFields() + { + return regexSearchFields; + } + + public void addRegexSearchField(SearchableAnnotationField regexSearchField) + { + this.regexSearchFields.add(regexSearchField); + } + + public boolean isFilterAlphaHelix() + { + return filterAlphaHelix; + } + + public void setFilterAlphaHelix(boolean alphaHelix) + { + this.filterAlphaHelix = alphaHelix; + } + + public boolean isFilterBetaSheet() + { + return filterBetaSheet; + } + + public void setFilterBetaSheet(boolean betaSheet) + { + this.filterBetaSheet = betaSheet; + } + + public boolean isFilterTurn() + { + return filterTurn; + } + + public void setFilterTurn(boolean turn) + { + this.filterTurn = turn; + } + +} -- 1.7.10.2