X-Git-Url: http://source.jalview.org/gitweb/?a=blobdiff_plain;f=src%2Fjalview%2Fgui%2FAnnotationColumnChooser.java;h=9c2a1b96990dc363aba05d896b7aa95506d4c28b;hb=42498abb930c08393b09fc7af2564b7f210ac294;hp=0fe64625876fed4f1a565c0cfc647c55dbe6d6e3;hpb=e5b2edf3955c50cfd61799ad12cdc9016603ee1c;p=jalview.git diff --git a/src/jalview/gui/AnnotationColumnChooser.java b/src/jalview/gui/AnnotationColumnChooser.java index 0fe6462..9c2a1b9 100644 --- a/src/jalview/gui/AnnotationColumnChooser.java +++ b/src/jalview/gui/AnnotationColumnChooser.java @@ -21,8 +21,8 @@ package jalview.gui; -import jalview.datamodel.AlignmentAnnotation; import jalview.datamodel.HiddenColumns; +import jalview.io.cache.JvCacheableInputBox; import jalview.schemes.AnnotationColourGradient; import jalview.util.MessageManager; import jalview.viewmodel.annotationfilter.AnnotationFilterParameter; @@ -30,10 +30,12 @@ import jalview.viewmodel.annotationfilter.AnnotationFilterParameter; import java.awt.BorderLayout; import java.awt.CardLayout; import java.awt.Color; +import java.awt.Dimension; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.awt.event.ItemEvent; import java.awt.event.ItemListener; +import java.awt.event.KeyEvent; import java.util.Iterator; import javax.swing.ButtonGroup; @@ -43,10 +45,7 @@ import javax.swing.JInternalFrame; import javax.swing.JLayeredPane; import javax.swing.JPanel; import javax.swing.JRadioButton; -import javax.swing.JTextField; import javax.swing.border.TitledBorder; -import javax.swing.event.DocumentEvent; -import javax.swing.event.DocumentListener; import net.miginfocom.swing.MigLayout; @@ -88,6 +87,10 @@ public class AnnotationColumnChooser extends AnnotationRowFilter implements private HiddenColumns oldHiddenColumns; + protected int MIN_WIDTH = 420; + + protected int MIN_HEIGHT = 430; + public AnnotationColumnChooser(AlignViewport av, final AlignmentPanel ap) { super(av, ap); @@ -97,6 +100,7 @@ public class AnnotationColumnChooser extends AnnotationRowFilter implements Desktop.addInternalFrame(frame, MessageManager.getString("label.select_by_annotation"), 520, 215); + frame.setMinimumSize(new Dimension(MIN_WIDTH, MIN_HEIGHT)); addSliderChangeListener(); addSliderMouseListeners(); @@ -108,7 +112,7 @@ public class AnnotationColumnChooser extends AnnotationRowFilter implements setOldHiddenColumns(av.getAlignment().getHiddenColumns()); adjusting = true; - setAnnotations(new JComboBox(getAnnotationItems(false))); + setAnnotations(new JComboBox<>(getAnnotationItems(false))); populateThresholdComboBox(threshold); AnnotationColumnChooser lastChooser = av .getAnnotationColumnSelectionState(); @@ -240,10 +244,10 @@ public class AnnotationColumnChooser extends AnnotationRowFilter implements HiddenColumns oldHidden = av .getAnnotationColumnSelectionState() .getOldHiddenColumns(); - if (oldHidden != null && oldHidden.getListOfCols() != null - && !oldHidden.getListOfCols().isEmpty()) + if (oldHidden != null && oldHidden.getHiddenRegions() != null + && !oldHidden.getHiddenRegions().isEmpty()) { - for (Iterator itr = oldHidden.getListOfCols() + for (Iterator itr = oldHidden.getHiddenRegions() .iterator(); itr.hasNext();) { int positions[] = itr.next(); @@ -328,7 +332,7 @@ public class AnnotationColumnChooser extends AnnotationRowFilter implements // build filter params filterParams .setThresholdType(AnnotationFilterParameter.ThresholdType.NO_THRESHOLD); - if (getCurrentAnnotation().graph != AlignmentAnnotation.NO_GRAPH) + if (getCurrentAnnotation().isQuantitative()) { filterParams .setThresholdValue(getCurrentAnnotation().threshold.value); @@ -365,12 +369,10 @@ public class AnnotationColumnChooser extends AnnotationRowFilter implements if (currentSearchPanel != null) { - - if (!currentSearchPanel.searchBox.getText().isEmpty()) + if (!currentSearchPanel.searchBox.getUserInput().isEmpty()) { - currentSearchPanel.description.setEnabled(true); - currentSearchPanel.displayName.setEnabled(true); - filterParams.setRegexString(currentSearchPanel.searchBox.getText()); + filterParams.setRegexString(currentSearchPanel.searchBox + .getUserInput()); if (currentSearchPanel.displayName.isSelected()) { filterParams @@ -382,17 +384,15 @@ public class AnnotationColumnChooser extends AnnotationRowFilter implements .addRegexSearchField(AnnotationFilterParameter.SearchableAnnotationField.DESCRIPTION); } } - else - { - currentSearchPanel.description.setEnabled(false); - currentSearchPanel.displayName.setEnabled(false); - } } + // show hidden columns here, before changing the column selection in + // filterAnnotations, because showing hidden columns has the side effect of + // adding them to the selection + av.showAllHiddenColumns(); av.getColumnSelection().filterAnnotations( getCurrentAnnotation().annotations, filterParams); - av.showAllHiddenColumns(); if (getActionOption() == ACTION_OPTION_HIDE) { av.hideSelectedColumns(); @@ -488,12 +488,13 @@ public class AnnotationColumnChooser extends AnnotationRowFilter implements public void selectedAnnotationChanged() { String currentView = AnnotationColumnChooser.NO_GRAPH_VIEW; - if (av.getAlignment().getAlignmentAnnotation()[annmap[getAnnotations() - .getSelectedIndex()]].graph != AlignmentAnnotation.NO_GRAPH) + if (av.getAlignment() + .getAlignmentAnnotation()[annmap[getAnnotations() + .getSelectedIndex()]].isQuantitative()) { currentView = AnnotationColumnChooser.GRAPH_VIEW; } - + saveCache(); gSearchPanel.syncState(); gFurtherActionPanel.syncState(); gStructureFilterPanel.syncState(); @@ -724,7 +725,10 @@ public class AnnotationColumnChooser extends AnnotationRowFilter implements private JCheckBox description = new JCheckBox(); - private JTextField searchBox = new JTextField(10); + private static final String FILTER_BY_ANN_CACHE_KEY = "CACHE.SELECT_FILTER_BY_ANNOT"; + + public JvCacheableInputBox searchBox = new JvCacheableInputBox( + FILTER_BY_ANN_CACHE_KEY); public SearchPanel(AnnotationColumnChooser aColChooser) { @@ -734,32 +738,26 @@ public class AnnotationColumnChooser extends AnnotationRowFilter implements this.setBorder(new TitledBorder(MessageManager .getString("label.search_filter"))); - JvSwingUtils.jvInitComponent(searchBox); + searchBox.setPrototypeDisplayValue("XXXXXXXXXXXXXXXXXXXXXXX"); searchBox.setToolTipText(MessageManager .getString("info.enter_search_text_here")); - searchBox.getDocument().addDocumentListener(new DocumentListener() - { - @Override - public void insertUpdate(DocumentEvent e) - { - searchStringAction(); - } + searchBox.getEditor().getEditorComponent() + .addKeyListener(new java.awt.event.KeyAdapter() + { + @Override + public void keyPressed(KeyEvent e) + { + if (e.getKeyCode() == KeyEvent.VK_ENTER) + { + e.consume(); + searchStringAction(); + } + } + }); - @Override - public void removeUpdate(DocumentEvent e) - { - searchStringAction(); - } - @Override - public void changedUpdate(DocumentEvent e) - { - searchStringAction(); - } - }); JvSwingUtils.jvInitComponent(displayName, "label.label"); - displayName.setEnabled(false); displayName.addActionListener(new ActionListener() { @Override @@ -770,7 +768,6 @@ public class AnnotationColumnChooser extends AnnotationRowFilter implements }); JvSwingUtils.jvInitComponent(description, "label.description"); - description.setEnabled(false); description.addActionListener(new ActionListener() { @Override @@ -803,6 +800,7 @@ public class AnnotationColumnChooser extends AnnotationRowFilter implements aColChooser.setCurrentSearchPanel(this); aColChooser.updateView(); updateSearchPanelToolTips(); + searchBox.updateCache(); } public void syncState() @@ -816,7 +814,7 @@ public class AnnotationColumnChooser extends AnnotationRowFilter implements displayName.setEnabled(sp.displayName.isEnabled()); displayName.setSelected(sp.displayName.isSelected()); - searchBox.setText(sp.searchBox.getText()); + searchBox.setSelectedItem(sp.searchBox.getUserInput()); } updateSearchPanelToolTips(); } @@ -838,4 +836,25 @@ public class AnnotationColumnChooser extends AnnotationRowFilter implements } } + @Override + public void ok_actionPerformed() + { + saveCache(); + super.ok_actionPerformed(); + } + + @Override + public void cancel_actionPerformed() + { + saveCache(); + super.cancel_actionPerformed(); + } + + private void saveCache() + { + gSearchPanel.searchBox.persistCache(); + ngSearchPanel.searchBox.persistCache(); + gSearchPanel.searchBox.updateCache(); + ngSearchPanel.searchBox.updateCache(); + } }