\r
import jalview.datamodel.*;\r
\r
-public class Finder extends Panel\r
+public class Finder extends Panel implements ActionListener\r
{\r
AlignViewport av;\r
AlignmentPanel ap;\r
Frame frame;\r
- SuperGroup searchGroup;\r
- Vector searchResults;\r
+\r
+ SearchResults searchResults;\r
\r
int seqIndex = 0;\r
int resIndex = 0;\r
});\r
}\r
\r
- public void textfield_actionPerformed(ActionEvent e)\r
- {\r
- doSearch(false);\r
- }\r
-\r
- public void findNext_actionPerformed(ActionEvent e)\r
+ public void actionPerformed(ActionEvent evt)\r
{\r
- doSearch(false);\r
- }\r
+ if (evt.getSource() == textfield)\r
+ doSearch(false);\r
\r
- public void findAll_actionPerformed(ActionEvent e)\r
- {\r
- resIndex = 0;\r
- seqIndex = 0;\r
- doSearch(true);\r
- }\r
+ else if (evt.getSource() == findNext)\r
+ doSearch(false);\r
\r
- public void cancel_actionPerformed(ActionEvent e)\r
- {\r
- try\r
+ else if (evt.getSource() == findAll)\r
{\r
- // if allResults is null, this effectively switches displaySearch flag in seqCanvas\r
- ap.highlightSearchResults(null);\r
- ap.idPanel.highlightSearchResults(null);\r
- // frame.setClosed(true);\r
+ resIndex = 0;\r
+ seqIndex = 0;\r
+ doSearch(true);\r
}\r
- catch (Exception ex)\r
- {}\r
+ else if(evt.getSource() == createNewGroup)\r
+ createNewGroup_actionPerformed();\r
}\r
\r
- public void createNewGroup_actionPerformed(ActionEvent e)\r
- {\r
- Color[] newColors = new Color[24];\r
- for (int i = 0; i < 24; i++)\r
- {\r
- newColors[i] = new Color(60, 160, 115);\r
- }\r
-\r
- jalview.schemes.UserColourScheme ucs = new jalview.schemes.UserColourScheme(\r
- newColors);\r
- String searchString = textfield.getText();\r
\r
- searchGroup = new SuperGroup(searchString, ucs, true, true, false);\r
+ public void createNewGroup_actionPerformed()\r
+ {\r
\r
- for (int i = 0; i < searchResults.size(); i += 3)\r
+ for (int i = 0; i < searchResults.getSize(); i ++ )\r
{\r
- // its possible edits may have occurred since search was performed\r
- // account for this here\r
-\r
- SequenceI seq = av.alignment.getSequenceAt(Integer.parseInt(searchResults.\r
- elementAt(i).toString()));\r
- int startRes = seq.findIndex(Integer.parseInt(searchResults.elementAt(i +\r
- 1).toString())) - 1;\r
- int endRes = seq.findIndex(Integer.parseInt(searchResults.elementAt(i + 2).\r
- toString())) - 1;\r
-\r
- SequenceGroup sg = new SequenceGroup(searchString, ucs, true, true, false,\r
- startRes, endRes);\r
- sg.addSequence(seq, false);\r
- av.alignment.addGroup(sg);\r
- searchGroup.addGroup(sg);\r
+ SequenceI seq = searchResults.getResultSequence(i);\r
+\r
+ SequenceFeature sf = new SequenceFeature(textfield.getText(),\r
+ "Search Results", null,\r
+ searchResults.getResultStart(i),\r
+ searchResults.getResultEnd(i));\r
\r
+ ap.seqPanel.seqCanvas.getFeatureRenderer().addNewFeature(\r
+ textfield.getText(), new Color(60,160,115));\r
+ seq.addSequenceFeature(sf);\r
}\r
\r
- ap.av.alignment.addSuperGroup(searchGroup);\r
+ ap.alignFrame.sequenceFeatures.setState(true);\r
+ av.showSequenceFeatures(true);\r
ap.highlightSearchResults(null);\r
}\r
\r
\r
com.stevesoft.pat.Regex regex = new com.stevesoft.pat.Regex(searchString);\r
\r
- searchResults = new Vector();\r
- int[] allResults = null;\r
+ searchResults = new SearchResults();\r
\r
Sequence seq;\r
String item = null;\r
seq = (Sequence) (av.getSelectionGroup().getSequenceAt(0));\r
}\r
\r
- searchResults.addElement(Integer.toString(av.getAlignment().findIndex(seq)));\r
- searchResults.addElement(String.valueOf(res));\r
- searchResults.addElement(String.valueOf(res));\r
+\r
+ searchResults.addResult(seq, res, res);\r
\r
}\r
catch (NumberFormatException ex)\r
continue;\r
}\r
\r
- searchResults.addElement(Integer.toString(seqIndex));\r
+\r
int sres = seq.findPosition(resIndex +\r
Integer.parseInt(spaces.\r
elementAt(resIndex).toString()));\r
Integer.parseInt(\r
spaces.elementAt(regex.matchedTo() - 1).\r
toString()));\r
- searchResults.addElement(sres + "");\r
- searchResults.addElement(eres + "");\r
+\r
+ searchResults.addResult(seq, sres, eres);\r
\r
if (!findAll)\r
{\r
}\r
}\r
\r
- if (searchResults.size() == 0 && idMatch.size() > 0)\r
+ if (searchResults.getSize() == 0 && idMatch.size() > 0)\r
{\r
ap.idPanel.highlightSearchResults(idMatch);\r
}\r
\r
- if (searchResults.size() > 0)\r
+ if (searchResults.getSize() > 0)\r
{\r
- allResults = new int[searchResults.size()];\r
- for (int i = 0; i < searchResults.size(); i++)\r
- {\r
- allResults[i] = Integer.parseInt(searchResults.elementAt(i).toString());\r
- }\r
-\r
createNewGroup.setEnabled(true);\r
}\r
else\r
{\r
+ searchResults = null;\r
resIndex = 0;\r
seqIndex = 0;\r
}\r
\r
// if allResults is null, this effectively switches displaySearch flag in seqCanvas\r
- ap.highlightSearchResults(allResults);\r
+ ap.highlightSearchResults(searchResults);\r
\r
if (findAll)\r
{\r
- String message = (searchResults.size() / 3) + " matches found.";\r
+ String message = (searchResults.getSize()) + " matches found.";\r
System.out.println(message);\r
}\r
\r
textfield_keyTyped(e);\r
}\r
});\r
- textfield.addActionListener(new java.awt.event.ActionListener() {\r
- public void actionPerformed(ActionEvent e) {\r
- textfield_actionPerformed(e);\r
- }\r
- });\r
+ textfield.addActionListener(this);\r
findAll.setFont(new java.awt.Font("Verdana", Font.PLAIN, 10));\r
findAll.setLabel("Find all");\r
- findAll.addActionListener(new java.awt.event.ActionListener() {\r
- public void actionPerformed(ActionEvent e) {\r
- findAll_actionPerformed(e);\r
- }\r
- });\r
+ findAll.addActionListener(this);\r
findNext.setEnabled(false);\r
findNext.setFont(new java.awt.Font("Verdana", Font.PLAIN, 10));\r
findNext.setLabel("Find Next");\r
- findNext.addActionListener(new java.awt.event.ActionListener() {\r
- public void actionPerformed(ActionEvent e) {\r
- findNext_actionPerformed(e);\r
- }\r
- });\r
+ findNext.addActionListener(this);\r
jPanel1.setBounds(new Rectangle(180, 5, 141, 64));\r
jPanel1.setLayout(gridLayout1);\r
gridLayout1.setHgap(0);\r
gridLayout1.setVgap(2);\r
createNewGroup.setEnabled(false);\r
createNewGroup.setFont(new java.awt.Font("Verdana", Font.PLAIN, 10));\r
- createNewGroup.setLabel("Create new group");\r
- createNewGroup.addActionListener(new java.awt.event.ActionListener() {\r
- public void actionPerformed(ActionEvent e) {\r
- createNewGroup_actionPerformed(e);\r
- }\r
- });\r
+ createNewGroup.setLabel("New Feature");\r
+ createNewGroup.addActionListener(this);\r
jPanel1.add(findNext, null);\r
jPanel1.add(findAll, null);\r
jPanel1.add(createNewGroup, null);\r