From 50bc9bfda9c71e968f53e6a77ba3ea9cdfd6d3ee Mon Sep 17 00:00:00 2001 From: Charles Ofoegbu Date: Mon, 2 Feb 2015 15:45:32 +0000 Subject: [PATCH] JAL-1644 revised Finder's implementation to use a flag to enalbe searching an alignment's sequences description field --- resources/lang/Messages.properties | 1 + src/jalview/analysis/Finder.java | 14 ++++++- src/jalview/appletgui/Finder.java | 51 ++++++++++++++++------- src/jalview/gui/Finder.java | 2 + src/jalview/jbgui/GFinder.java | 80 +++++++++++++++++++++++++----------- 5 files changed, 108 insertions(+), 40 deletions(-) diff --git a/resources/lang/Messages.properties b/resources/lang/Messages.properties index fce8470..12de0df 100644 --- a/resources/lang/Messages.properties +++ b/resources/lang/Messages.properties @@ -1176,3 +1176,4 @@ label.show_logo = Show Logo label.normalise_logo = Normalise Logo label.no_colour_selection_in_scheme = Please, make a colour selection before to apply colour scheme label.no_colour_selection_warn = Error saving colour scheme +label.include_description= Include Description diff --git a/src/jalview/analysis/Finder.java b/src/jalview/analysis/Finder.java index b253642..224c60a 100644 --- a/src/jalview/analysis/Finder.java +++ b/src/jalview/analysis/Finder.java @@ -42,6 +42,8 @@ public class Finder boolean caseSensitive = false; + private boolean includeDescription = false; + boolean findAll = false; com.stevesoft.pat.Regex regex = null; @@ -150,7 +152,7 @@ public class Finder } } - if (regex.search(seq.getDescription())) + if (isIncludeDescription() && regex.search(seq.getDescription())) { idMatch.addElement(seq); hasResults = true; @@ -373,4 +375,14 @@ public class Finder { this.seqIndex = seqIndex; } + + public boolean isIncludeDescription() + { + return includeDescription; + } + + public void setIncludeDescription(boolean includeDescription) + { + this.includeDescription = includeDescription; + } } diff --git a/src/jalview/appletgui/Finder.java b/src/jalview/appletgui/Finder.java index 6ca6ddf..529b0b3 100644 --- a/src/jalview/appletgui/Finder.java +++ b/src/jalview/appletgui/Finder.java @@ -20,14 +20,27 @@ */ package jalview.appletgui; -import java.util.*; - -import java.awt.*; -import java.awt.event.*; - -import jalview.datamodel.*; +import jalview.datamodel.SearchResults; +import jalview.datamodel.SequenceFeature; +import jalview.datamodel.SequenceI; import jalview.util.MessageManager; +import java.awt.Button; +import java.awt.Checkbox; +import java.awt.Font; +import java.awt.Frame; +import java.awt.GridLayout; +import java.awt.Label; +import java.awt.Panel; +import java.awt.Rectangle; +import java.awt.TextField; +import java.awt.event.ActionEvent; +import java.awt.event.ActionListener; +import java.awt.event.KeyEvent; +import java.awt.event.WindowAdapter; +import java.awt.event.WindowEvent; +import java.util.Vector; + public class Finder extends Panel implements ActionListener { AlignViewport av; @@ -129,6 +142,7 @@ public class Finder extends Panel implements ActionListener jalview.analysis.Finder finder = new jalview.analysis.Finder( av.getAlignment(), av.getSelectionGroup(), seqIndex, resIndex); finder.setCaseSensitive(caseSensitive.getState()); + finder.setIncludeDescription(searchDescription.getState()); finder.setFindAll(findAll); String searchString = textfield.getText(); @@ -211,7 +225,7 @@ public class Finder extends Panel implements ActionListener protected Button findNext = new Button(); - Panel jPanel1 = new Panel(); + Panel actionsPanel = new Panel(); GridLayout gridLayout1 = new GridLayout(); @@ -219,6 +233,8 @@ public class Finder extends Panel implements ActionListener Checkbox caseSensitive = new Checkbox(); + Checkbox searchDescription = new Checkbox(); + private void jbInit() throws Exception { jLabel1.setFont(new java.awt.Font("Verdana", 0, 12)); @@ -227,7 +243,7 @@ public class Finder extends Panel implements ActionListener this.setLayout(null); textfield.setFont(new java.awt.Font("Verdana", Font.PLAIN, 10)); textfield.setText(""); - textfield.setBounds(new Rectangle(40, 27, 133, 21)); + textfield.setBounds(new Rectangle(40, 17, 133, 21)); textfield.addKeyListener(new java.awt.event.KeyAdapter() { public void keyTyped(KeyEvent e) @@ -243,8 +259,8 @@ public class Finder extends Panel implements ActionListener findNext.setFont(new java.awt.Font("Verdana", Font.PLAIN, 10)); findNext.setLabel(MessageManager.getString("action.find_next")); findNext.addActionListener(this); - jPanel1.setBounds(new Rectangle(180, 5, 141, 64)); - jPanel1.setLayout(gridLayout1); + actionsPanel.setBounds(new Rectangle(195, 5, 141, 64)); + actionsPanel.setLayout(gridLayout1); gridLayout1.setHgap(0); gridLayout1.setRows(3); gridLayout1.setVgap(2); @@ -253,14 +269,19 @@ public class Finder extends Panel implements ActionListener createNewGroup.setLabel(MessageManager.getString("label.new_feature")); createNewGroup.addActionListener(this); caseSensitive.setLabel(MessageManager.getString("label.match_case")); - caseSensitive.setBounds(new Rectangle(40, 49, 126, 23)); - jPanel1.add(findNext, null); - jPanel1.add(findAll, null); - jPanel1.add(createNewGroup, null); + caseSensitive.setBounds(new Rectangle(30, 39, 126, 23)); + + searchDescription.setLabel(MessageManager + .getString("label.include_description")); + searchDescription.setBounds(new Rectangle(30, 59, 170, 23)); + actionsPanel.add(findNext, null); + actionsPanel.add(findAll, null); + actionsPanel.add(createNewGroup, null); this.add(caseSensitive); this.add(textfield, null); this.add(jLabel1, null); - this.add(jPanel1, null); + this.add(actionsPanel, null); + this.add(searchDescription); } void textfield_keyTyped(KeyEvent e) diff --git a/src/jalview/gui/Finder.java b/src/jalview/gui/Finder.java index 8eddc06..dbacd8b 100755 --- a/src/jalview/gui/Finder.java +++ b/src/jalview/gui/Finder.java @@ -214,6 +214,8 @@ public class Finder extends GFinder jalview.analysis.Finder finder = new jalview.analysis.Finder( av.getAlignment(), av.getSelectionGroup(), seqIndex, resIndex); finder.setCaseSensitive(caseSensitive.isSelected()); + finder.setIncludeDescription(searchDescription.isSelected()); + finder.setFindAll(findAll); finder.find(searchString); // returns true if anything was actually found diff --git a/src/jalview/jbgui/GFinder.java b/src/jalview/jbgui/GFinder.java index 7705259..66fce45 100755 --- a/src/jalview/jbgui/GFinder.java +++ b/src/jalview/jbgui/GFinder.java @@ -20,24 +20,38 @@ */ package jalview.jbgui; -import java.awt.*; -import java.awt.event.*; -import javax.swing.*; -import javax.swing.event.*; - -import jalview.datamodel.*; -import jalview.io.*; +import jalview.datamodel.Alignment; +import jalview.io.FormatAdapter; import jalview.util.MessageManager; +import java.awt.BorderLayout; +import java.awt.Dimension; +import java.awt.Font; +import java.awt.GridLayout; +import java.awt.Insets; +import java.awt.event.ActionEvent; +import java.awt.event.KeyEvent; + +import javax.swing.JButton; +import javax.swing.JCheckBox; +import javax.swing.JLabel; +import javax.swing.JPanel; +import javax.swing.JScrollPane; +import javax.swing.JTextArea; +import javax.swing.SwingConstants; +import javax.swing.SwingUtilities; +import javax.swing.event.CaretEvent; +import javax.swing.event.CaretListener; + public class GFinder extends JPanel { - JLabel jLabel1 = new JLabel(); + JLabel jLabelFind = new JLabel(); protected JButton findAll = new JButton(); protected JButton findNext = new JButton(); - JPanel jPanel1 = new JPanel(); + JPanel actionsPanel = new JPanel(); GridLayout gridLayout1 = new GridLayout(); @@ -47,7 +61,7 @@ public class GFinder extends JPanel protected JTextArea textfield = new JTextArea(); - BorderLayout borderLayout1 = new BorderLayout(); + BorderLayout mainBorderLayout = new BorderLayout(); JPanel jPanel2 = new JPanel(); @@ -61,6 +75,10 @@ public class GFinder extends JPanel protected JCheckBox caseSensitive = new JCheckBox(); + protected JCheckBox searchDescription = new JCheckBox(); + + GridLayout optionsGridLayout = new GridLayout(); + public GFinder() { try @@ -72,11 +90,12 @@ public class GFinder extends JPanel } } + private void jbInit() throws Exception { - jLabel1.setFont(new java.awt.Font("Verdana", 0, 12)); - jLabel1.setText(MessageManager.getString("action.find")); - this.setLayout(borderLayout1); + jLabelFind.setFont(new java.awt.Font("Verdana", 0, 12)); + jLabelFind.setText(MessageManager.getString("label.find")); + this.setLayout(mainBorderLayout); findAll.setFont(new java.awt.Font("Verdana", 0, 12)); findAll.setText(MessageManager.getString("action.find_all")); findAll.addActionListener(new java.awt.event.ActionListener() @@ -95,7 +114,7 @@ public class GFinder extends JPanel findNext_actionPerformed(e); } }); - jPanel1.setLayout(gridLayout1); + actionsPanel.setLayout(gridLayout1); gridLayout1.setHgap(0); gridLayout1.setRows(3); gridLayout1.setVgap(2); @@ -128,25 +147,38 @@ public class GFinder extends JPanel } }); - borderLayout1.setHgap(5); - borderLayout1.setVgap(5); + mainBorderLayout.setHgap(5); + mainBorderLayout.setVgap(5); jPanel4.setLayout(borderLayout2); jPanel2.setPreferredSize(new Dimension(10, 1)); jPanel3.setPreferredSize(new Dimension(10, 1)); caseSensitive.setHorizontalAlignment(SwingConstants.LEFT); caseSensitive.setText(MessageManager.getString("label.match_case")); - jPanel1.add(findNext, null); - jPanel1.add(findAll, null); - jPanel1.add(createNewGroup, null); - this.add(jLabel1, java.awt.BorderLayout.WEST); - this.add(jPanel1, java.awt.BorderLayout.EAST); + + searchDescription.setText(MessageManager + .getString("label.include_description")); + + actionsPanel.add(findNext, null); + actionsPanel.add(findAll, null); + actionsPanel.add(createNewGroup, null); + this.add(jLabelFind, java.awt.BorderLayout.WEST); + this.add(actionsPanel, java.awt.BorderLayout.EAST); this.add(jPanel2, java.awt.BorderLayout.SOUTH); this.add(jPanel3, java.awt.BorderLayout.NORTH); this.add(jPanel4, java.awt.BorderLayout.CENTER); - jPanel4.add(jScrollPane1, java.awt.BorderLayout.CENTER); + jPanel4.add(jScrollPane1, java.awt.BorderLayout.NORTH); jScrollPane1.getViewport().add(textfield); - jPanel4.add(jPanel6, java.awt.BorderLayout.NORTH); - jPanel4.add(caseSensitive, java.awt.BorderLayout.SOUTH); + + JPanel optionsPanel = new JPanel(); + + optionsGridLayout.setHgap(0); + optionsGridLayout.setRows(2); + optionsGridLayout.setVgap(2); + optionsPanel.setLayout(optionsGridLayout); + optionsPanel.add(caseSensitive, null); + optionsPanel.add(searchDescription, null); + + jPanel4.add(optionsPanel, java.awt.BorderLayout.WEST); } protected void findNext_actionPerformed(ActionEvent e) -- 1.7.10.2