X-Git-Url: http://source.jalview.org/gitweb/?a=blobdiff_plain;f=src%2Fjalview%2Fgui%2FFinder.java;h=e1431a99cc4ac073569830cbb3b7403293a2be5b;hb=f09f33647e90a6376ffcf096d003afa59f2b41fc;hp=e8c16d234f398bce693cd176b1601c56abf6a501;hpb=174230b4233d9ce80f94527768d2cd2f76da11ab;p=jalview.git diff --git a/src/jalview/gui/Finder.java b/src/jalview/gui/Finder.java index e8c16d2..e1431a9 100755 --- a/src/jalview/gui/Finder.java +++ b/src/jalview/gui/Finder.java @@ -54,11 +54,13 @@ public class Finder extends GFinder * @param ap DOCUMENT ME! * @param f DOCUMENT ME! */ - public Finder(AlignViewport av, AlignmentPanel ap, JInternalFrame f) + public Finder() { - this.av = av; - this.ap = ap; - frame = f; + frame = new JInternalFrame(); + frame.setContentPane(this); + frame.setLayer(JLayeredPane.PALETTE_LAYER); + Desktop.addInternalFrame(frame, "Find", 340, 110); + // all a big pain, but we need to wait until the frame is visible before the textfield can // obtain the focus///////////////////////// @@ -85,6 +87,7 @@ public class Finder extends GFinder */ public void findNext_actionPerformed(ActionEvent e) { + if (getFocusedViewport()) doSearch(false); } @@ -95,9 +98,25 @@ public class Finder extends GFinder */ public void findAll_actionPerformed(ActionEvent e) { + if(getFocusedViewport()) + { resIndex = 0; seqIndex = 0; doSearch(true); + } + } + + boolean getFocusedViewport() + { + JInternalFrame frame = Desktop.desktop.getAllFrames()[1]; + + if(frame!=null && frame instanceof AlignFrame) + { + av = ((AlignFrame)frame).viewport; + ap = ((AlignFrame)frame).alignPanel; + return true; + } + return false; } @@ -114,34 +133,29 @@ public class Finder extends GFinder panel.add(label, BorderLayout.NORTH); panel.add(textinput, BorderLayout.SOUTH); - int reply = JOptionPane.showInternalConfirmDialog(Desktop.desktop, - panel, "New Sequence Feature Name", - JOptionPane.OK_CANCEL_OPTION ); - if(reply != JOptionPane.OK_OPTION) - return; + SequenceI [] seqs = new SequenceI[searchResults.getSize()]; + SequenceFeature [] features = new SequenceFeature[searchResults.getSize()]; + for (int i = 0; i < searchResults.getSize(); i ++ ) { - SequenceI seq = searchResults.getResultSequence(i); + seqs[i] = searchResults.getResultSequence(i).getDatasetSequence(); - SequenceFeature sf = new SequenceFeature(textinput.getText(), + features[i] = new SequenceFeature(textinput.getText(), "Search Results", null, searchResults.getResultStart(i), - searchResults.getResultEnd(i), + searchResults.getResultEnd(i), "Search Results"); - - ap.seqPanel.seqCanvas.getFeatureRenderer().addNewFeature( - textinput.getText(), new Color(60,160,115), - "Search Results"); - - seq.getDatasetSequence().addSequenceFeature(sf); } - ap.seqPanel.seqCanvas.getFeatureRenderer().findAllFeatures(); - ap.alignFrame.showSeqFeatures.setSelected(true); - av.setShowSequenceFeatures(true); - ap.highlightSearchResults(null); + if( ap.seqPanel.seqCanvas.getFeatureRenderer() + .createNewFeatures(seqs, features)) + { + ap.alignFrame.showSeqFeatures.setSelected(true); + av.setShowSequenceFeatures(true); + ap.highlightSearchResults(null); + } } /**