package jalview.jbgui; import jalview.gui.AnnotationColumnChooser; import jalview.gui.JvSwingUtils; import java.awt.Color; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import javax.swing.JCheckBox; import javax.swing.JPanel; import javax.swing.JTextField; import javax.swing.border.TitledBorder; import javax.swing.event.DocumentEvent; import javax.swing.event.DocumentListener; @SuppressWarnings("serial") public class SearchPanel extends JPanel { private AnnotationColumnChooser aColChooser; private JCheckBox displayName = new JCheckBox(); private JCheckBox description = new JCheckBox(); 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()); getSearchBox().setBackground(Color.white); getSearchBox().setFont(JvSwingUtils.getLabelFont()); getSearchBox().getDocument().addDocumentListener(new DocumentListener() { @Override public void insertUpdate(DocumentEvent e) { searchStringAction(); } @Override public void removeUpdate(DocumentEvent e) { searchStringAction(); } @Override public void changedUpdate(DocumentEvent e) { searchStringAction(); } }); getDisplayName().setBackground(Color.white); getDisplayName().setFont(JvSwingUtils.getLabelFont()); getDisplayName().setText("Display Name"); getDisplayName().setEnabled(false); getDisplayName().addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent actionEvent) { displayNameCheckboxAction(); } }); getDescription().setBackground(Color.white); getDescription().setFont(JvSwingUtils.getLabelFont()); getDescription().setText("Description"); getDescription().setEnabled(false); getDescription().addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent actionEvent) { discriptionCheckboxAction(); } }); 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(); } public void displayNameCheckboxAction() { aColChooser.setCurrentSearchPanel(this); aColChooser.updateView(); } public void discriptionCheckboxAction() { aColChooser.setCurrentSearchPanel(this); aColChooser.updateView(); } public void searchStringAction() { aColChooser.setCurrentSearchPanel(this); 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()); displayName.setEnabled(sp.getDisplayName().isEnabled()); displayName.setSelected(sp.getDisplayName().isSelected()); searchBox.setText(sp.getSearchBox().getText()); } } }