X-Git-Url: http://source.jalview.org/gitweb/?a=blobdiff_plain;f=src%2Fjalview%2Fappletgui%2FFinder.java;h=1201278d8fc45dc0d75924eed64c3de7a9ee5f93;hb=38299bef6dfd4b713f615781e631dcb66e1155f2;hp=ab4cd7ba8c28f7119864208498ff8d11710ae9dd;hpb=5150ffd5baa1f58bb6b4059616bc6b9050326553;p=jalview.git diff --git a/src/jalview/appletgui/Finder.java b/src/jalview/appletgui/Finder.java index ab4cd7b..1201278 100755 --- a/src/jalview/appletgui/Finder.java +++ b/src/jalview/appletgui/Finder.java @@ -1,242 +1,344 @@ +/* + * Jalview - A Sequence Alignment Editor and Viewer + * Copyright (C) 2005 AM Waterhouse, J Procter, G Barton, M Clamp, S Searle + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License + * as published by the Free Software Foundation; either version 2 + * of the License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA + */ + package jalview.appletgui; -import jalview.jbappletgui.GFinder; -import jalview.datamodel.*; -import java.awt.event.*; import java.util.*; + import java.awt.*; +import java.awt.event.*; + +import jalview.datamodel.*; -public class Finder extends GFinder +public class Finder extends Panel implements ActionListener { AlignViewport av; AlignmentPanel ap; Frame frame; - SuperGroup searchGroup; - Vector searchResults; + + SearchResults searchResults; int seqIndex = 0; int resIndex = 0; public Finder(final AlignmentPanel ap) { + try + { + jbInit(); + } + catch (Exception e) + { + e.printStackTrace(); + } + this.av = ap.av; this.ap = ap; frame = new Frame(); frame.add(this); - jalview.bin.JalviewLite.addFrame(frame, "Find", 340,120); + jalview.bin.JalviewLite.addFrame(frame, "Find", 340, 120); frame.repaint(); frame.addWindowListener(new WindowAdapter() - {public void windowClosing(WindowEvent evt) - { ap.highlightSearchResults( null ); } - }); + { + public void windowClosing(WindowEvent evt) + { + ap.highlightSearchResults(null); + } + }); } - public void textfield_actionPerformed(ActionEvent e) + public void actionPerformed(ActionEvent evt) { - doSearch(false); - } + if (evt.getSource() == textfield) + doSearch(false); - public void findNext_actionPerformed(ActionEvent e) - { - doSearch(false); - } + else if (evt.getSource() == findNext) + doSearch(false); - public void findAll_actionPerformed(ActionEvent e) - { - resIndex=0; - seqIndex=0; - doSearch(true); + else if (evt.getSource() == findAll) + { + resIndex = 0; + seqIndex = 0; + doSearch(true); + } + else if(evt.getSource() == createNewGroup) + createNewGroup_actionPerformed(); } - public void cancel_actionPerformed(ActionEvent e) + + public void createNewGroup_actionPerformed() { - try{ - // if allResults is null, this effectively switches displaySearch flag in seqCanvas - ap.highlightSearchResults( null ); - ap.idPanel.highlightSearchResults( null ); - // frame.setClosed(true); - }catch(Exception ex){ } - } + CutAndPasteTransfer cap = new CutAndPasteTransfer(true, null); + Dialog dialog = new Dialog(ap.alignFrame, "Enter New Feature Name", true); + dialog.add(cap); - public void createNewGroup_actionPerformed(ActionEvent e) - { - jalview.schemes.UserColourScheme ucs = new jalview.schemes.UserColourScheme(); - Color [] newColors = new Color[24]; - for(int i=0; i<24; i++) - newColors[i] = new Color(60,160,115); + cap.setText(textfield.getText()); - ucs.setColourScheme(newColors); - String searchString = textfield.getText(); + dialog.setBounds( frame.getLocation().x+frame.getSize().width+5, + frame.getLocation().y+20,300,100); + dialog.show(); - searchGroup = new SuperGroup(searchString, ucs , true, true, false); + String featureName = cap.getText().trim(); + if(featureName.length()<1) + return; - for(int i=0; i0) - seq = (Sequence)(av.getSelectionGroup().getSequenceAt(0)); + if (av.getSelectionGroup() == null || av.getSelectionGroup().getSize() < 1) + { + seq = (Sequence) av.getAlignment().getSequenceAt(0); + } else - seq = (Sequence)av.getAlignment().getSequenceAt(0); + { + seq = (Sequence) (av.getSelectionGroup().getSequenceAt(0)); + } + - searchResults.addElement( Integer.toString( av.getAlignment().findIndex(seq) ) ); - searchResults.addElement( Integer.toString( seq.findIndex(res)-1 ) ); - searchResults.addElement( Integer.toString( seq.findIndex(res)-1 ) ); + searchResults.addResult(seq, res, res); - }catch(NumberFormatException ex){} + } + catch (NumberFormatException ex) + {} /////////////////////////////////////////////// int end = av.alignment.getHeight(); SequenceGroup selection = av.getSelectionGroup(); - if(selection!=null) - if(selection.getSize()<1 || (selection.getEndRes()-selection.getStartRes()<2)) - selection = null; + if (selection != null) + { + if (selection.getSize() < 1 || + (selection.getEndRes() - selection.getStartRes() < 2)) + { + selection = null; + } + } - while( !found && seqIndex0) - ap.idPanel.highlightSearchResults( idMatch ); - - - if(searchResults.size()>0) + if (searchResults.getSize() == 0 && idMatch.size() > 0) { - allResults = new int[searchResults.size()]; - for(int i=0; i 0) + { createNewGroup.setEnabled(true); } else { - resIndex=0; - seqIndex=0; + searchResults = null; + resIndex = 0; + seqIndex = 0; } // if allResults is null, this effectively switches displaySearch flag in seqCanvas - ap.highlightSearchResults( allResults ); + ap.highlightSearchResults(searchResults); if (findAll) { - String message = (searchResults.size()/3) + " matches found."; - System.out.println(message); + String message = (searchResults==null?0 : searchResults.getSize()) + " matches found."; + ap.alignFrame.statusBar.setText("Search results: "+searchString+" : "+message); } } + Label jLabel1 = new Label(); + protected TextField textfield = new TextField(); + protected Button findAll = new Button(); + protected Button findNext = new Button(); + Panel jPanel1 = new Panel(); + GridLayout gridLayout1 = new GridLayout(); + protected Button createNewGroup = new Button(); + + + private void jbInit() throws Exception { + jLabel1.setFont(new java.awt.Font("Verdana", 0, 12)); + jLabel1.setText("Find"); + jLabel1.setBounds(new Rectangle(3, 30, 34, 15)); + this.setLayout(null); + textfield.setFont(new java.awt.Font("Verdana", Font.PLAIN, 10)); + textfield.setText(""); + textfield.setBounds(new Rectangle(40, 27, 133, 21)); + textfield.addKeyListener(new java.awt.event.KeyAdapter() { + public void keyTyped(KeyEvent e) { + textfield_keyTyped(e); + } + }); + textfield.addActionListener(this); + findAll.setFont(new java.awt.Font("Verdana", Font.PLAIN, 10)); + findAll.setLabel("Find all"); + findAll.addActionListener(this); + findNext.setEnabled(false); + findNext.setFont(new java.awt.Font("Verdana", Font.PLAIN, 10)); + findNext.setLabel("Find Next"); + findNext.addActionListener(this); + jPanel1.setBounds(new Rectangle(180, 5, 141, 64)); + jPanel1.setLayout(gridLayout1); + gridLayout1.setHgap(0); + gridLayout1.setRows(3); + gridLayout1.setVgap(2); + createNewGroup.setEnabled(false); + createNewGroup.setFont(new java.awt.Font("Verdana", Font.PLAIN, 10)); + createNewGroup.setLabel("New Feature"); + createNewGroup.addActionListener(this); + jPanel1.add(findNext, null); + jPanel1.add(findAll, null); + jPanel1.add(createNewGroup, null); + this.add(textfield, null); + this.add(jLabel1, null); + this.add(jPanel1, null); + } + + void textfield_keyTyped(KeyEvent e) { + findNext.setEnabled(true); + } + }