• Views
  • Iteration Report
  • My Iteration Report
  •  
OMERO.clients
  • Login
  • Help/Guide
  • About Trac
  • Preferences
  • Wiki
  • Timeline
  • Roadmap
  • Browse Source
  • View Tickets
  • Search

Context Navigation

  • ← Previous Changeset
  • Next Changeset →

Changeset 5536

Show
Ignore:
Timestamp:
07/10/08 16:31:28 (7 weeks ago)
Author:
will
Message:

New tree model...

Location:
branches/OmeroEditor/src
Files:
1 added
7 modified
1 moved

  • fields (added)
  • fields/Field.java (moved) (moved from branches/OmeroEditor/src/treeModel/Field.java) (1 diff)
  • search/IndexTermFinder.java (modified) (2 diffs)
  • search/SearchController.java (modified) (6 diffs)
  • treeModel/DynamicTreeDemo.java (modified) (2 diffs)
  • treeModel/FieldRenderer.java (modified) (2 diffs)
  • treeModel/Tree.java (modified) (1 diff)
  • treeModel/TreeEditor.java (modified) (1 diff)
  • treeModel/editActions/DeleteFields.java (modified) (1 diff)

Legend:

Unmodified
Added
Removed
  • branches/OmeroEditor/src/fields/Field.java

    r5527 r5536  
    2222 */ 
    2323 
    24 package treeModel; 
     24package fields; 
    2525 
    2626import java.util.HashMap; 
  • branches/OmeroEditor/src/search/IndexTermFinder.java

    r5530 r5536  
    2424 
    2525 
     26import java.io.IOException; 
     27import java.util.ArrayList; 
    2628import java.util.Date; 
    2729 
     30import org.apache.lucene.index.CorruptIndexException; 
    2831import org.apache.lucene.index.IndexReader; 
    2932import org.apache.lucene.index.TermEnum; 
    … …  
    6164        public static String field = "contents"; 
    6265         
    63           public static void main(String[] args) throws Exception { 
     66          public static String[] getMatchingTerms(String searchString) { 
    6467                   
    6568                   
    6669                  Date start = new Date(); 
    6770                   
    68                 String searchString = "ant"; 
     71                searchString = searchString.toLowerCase(); 
    6972                   
    7073                String searchField = "contents"; 
     74                 
     75                ArrayList<String> matchingTerms = new ArrayList<String>(); 
    7176 
    72             IndexReader reader = IndexReader.open(index); 
     77         
     78            IndexReader reader; 
     79                try { 
     80                        reader = IndexReader.open(index); 
     81                        TermEnum terms = reader.terms(); 
     82                     
     83                    int termCounter = 0; 
     84                    while (terms.next()) { 
     85                        // ignore terms unless from the field of interest 
     86                        String field = terms.term().field(); 
     87                        if (! field.equals(searchField)) 
     88                                continue; 
     89                         
     90                        String term = terms.term().toString(); 
     91                        term = term.replaceFirst(field + ":", ""); 
     92                         
     93                        if (term.startsWith(searchString)) { 
     94                                System.out.println(termCounter + " " + term); 
     95                                termCounter++; 
     96                                 
     97                                matchingTerms.add(term); 
     98                        } 
     99                    } 
     100                     
     101                    Date end = new Date(); 
     102                      System.out.println("Search took " + (end.getTime() - start.getTime()) + 
     103                                  " milliseconds"); 
     104                       
     105                    reader.close(); 
     106                } catch (CorruptIndexException e) { 
     107                        // TODO Auto-generated catch block 
     108                        e.printStackTrace(); 
     109                } catch (IOException e) { 
     110                        // TODO Auto-generated catch block 
     111                        e.printStackTrace(); 
     112                } 
    73113 
    74             TermEnum terms = reader.terms(); 
    75              
    76             int termCounter = 0; 
    77             while (terms.next()) { 
    78                 // ignore terms unless from the field of interest 
    79                 String field = terms.term().field(); 
    80                 if (! field.equals(searchField)) 
    81                         continue; 
    82                  
    83                 String term = terms.term().toString(); 
    84                 term = term.replaceFirst(field + ":", ""); 
    85                  
    86                 if (term.startsWith(searchString)) { 
    87                         System.out.println(termCounter + " " + term); 
    88                         termCounter++; 
    89                 } 
     114            String[] results = new String[matchingTerms.size()];  
     115            int termIndex = 0; 
     116            for (String term : matchingTerms) { 
     117                results[termIndex] = term; 
     118                termIndex++; 
    90119            } 
    91120             
    92             Date end = new Date(); 
    93               System.out.println("Search took " + (end.getTime() - start.getTime()) + 
    94                           " milliseconds"); 
    95                
    96             reader.close(); 
     121            return results; 
    97122          } 
    98123} 
  • branches/OmeroEditor/src/search/SearchController.java

    r5515 r5536  
    22 
    33import java.awt.BorderLayout; 
     4import java.awt.Rectangle; 
    45import java.awt.event.ActionEvent; 
    56import java.awt.event.ActionListener; 
     7import java.beans.PropertyChangeEvent; 
     8import java.beans.PropertyChangeListener; 
    69import java.io.File; 
    710import java.io.FileNotFoundException; 
    … …  
    1316import javax.swing.Icon; 
    1417import javax.swing.JButton; 
     18import javax.swing.JDialog; 
    1519import javax.swing.JPanel; 
    1620import javax.swing.JTextField; 
     21import javax.swing.event.DocumentEvent; 
     22import javax.swing.event.DocumentListener; 
    1723import javax.swing.text.JTextComponent; 
    1824 
     25import org.openmicroscopy.shoola.util.ui.HistoryDialog; 
    1926import org.xml.sax.SAXParseException; 
    2027 
    … …  
    6572public class SearchController  
    6673        extends AbstractComponent 
    67         implements ActionListener { 
     74        implements ActionListener, 
     75        DocumentListener, PropertyChangeListener { 
    6876         
    6977        /** 
    … …  
    115123         */ 
    116124        boolean displayControllerPanel = true; 
     125         
     126        /** 
     127         * A popup to display the terms from the lucene index that match what the 
     128         * user is typing into the searchTermSource, so as to provide an 
     129         * Auto-Complete functionality.  
     130         */ 
     131        HistoryDialog popup; 
    117132         
    118133        /** 
    … …  
    133148        public void setSearchTermSource(JTextComponent searchTermSource) { 
    134149                this.searchTermSource = searchTermSource; 
     150                searchTermSource.getDocument().addDocumentListener(this); 
    135151        } 
    136152         
    … …  
    312328                else return null; 
    313329        } 
     330         
     331        public void autoComplete() { 
     332                Rectangle rect = searchTermSource.getBounds(); 
     333                String text = searchTermSource.getText(); 
     334                if (text.length() < 2) return; 
     335                 
     336                String[] matchingTerms = IndexTermFinder.getMatchingTerms(text); 
     337                 
     338                popup = new HistoryDialog(matchingTerms, rect.width); 
     339                popup.addPropertyChangeListener( 
     340                                HistoryDialog.SELECTION_PROPERTY, this); 
     341                 
     342                popup.show(searchTermSource, 0, rect.height); 
     343                 
     344                searchTermSource.requestFocusInWindow(); 
     345        } 
     346 
     347        public void insertUpdate(DocumentEvent e) { 
     348                autoComplete(); 
     349        } 
     350         
     351        public void changedUpdate(DocumentEvent e) { 
     352                autoComplete(); 
     353        } 
     354        public void removeUpdate(DocumentEvent e) { 
     355                autoComplete(); 
     356        } 
     357 
     358        public void propertyChange(PropertyChangeEvent evt) { 
     359                if (HistoryDialog.SELECTION_PROPERTY.equals(evt.getPropertyName())) { 
     360                        Object item = evt.getNewValue(); 
     361                        searchTermSource.setText(item.toString()); 
     362                         
     363                        popup.setVisible(false); 
     364                         
     365                } 
     366        } 
    314367 
    315368} 
  • branches/OmeroEditor/src/treeModel/DynamicTreeDemo.java

    r5527 r5536  
    5151import javax.swing.tree.DefaultMutableTreeNode; 
    5252import javax.swing.tree.DefaultTreeModel; 
     53 
     54import fields.Field; 
    5355 
    5456public class DynamicTreeDemo extends JPanel  
    … …  
    133135        } else if (REMOVE_COMMAND.equals(command)) { 
    134136            //Remove button clicked 
    135             treeEdit.removeCurrentNodes(); 
     137            treeEdit.deleteSelectedFields(); 
    136138        } else if (UNDO_COMMAND.equals(command)) { 
    137139             
  • branches/OmeroEditor/src/treeModel/FieldRenderer.java

    r5527 r5536  
    2525import java.awt.Component; 
    2626 
     27import javax.swing.Icon; 
    2728import javax.swing.JTree; 
    2829import javax.swing.tree.DefaultTreeCellRenderer; 
    2930import javax.swing.tree.TreeCellRenderer; 
     31 
     32import util.ImageFactory; 
    3033 
    3134//Java imports 
    … …  
    5861                hasFocus); 
    5962                         
     63                        Icon bigIcon = ImageFactory.getInstance().getIcon( 
     64                                        ImageFactory.ALARM_ICON_64); 
     65                         
     66                        setIcon(bigIcon); 
     67                         
    6068                        return this; 
    6169        } 
  • branches/OmeroEditor/src/treeModel/Tree.java

    r5527 r5536  
    4545import javax.swing.tree.DefaultMutableTreeNode; 
    4646import javax.swing.tree.DefaultTreeModel; 
    47 import javax.swing.tree.MutableTreeNode; 
    4847import javax.swing.tree.TreePath; 
    49 import javax.swing.tree.TreeSelectionModel; 
    5048import javax.swing.event.TreeModelEvent; 
    5149import javax.swing.event.TreeModelListener; 
  • branches/OmeroEditor/src/treeModel/TreeEditor.java

    r5527 r5536  
    7171         
    7272         /** Remove the currently selected nodes. */ 
    73     public void removeCurrentNodes() { 
     73    public void deleteSelectedFields() { 
    7474        UndoableEdit edit = new DeleteFields(treeModel, tree.getSelectionPaths()); 
    7575                undoSupport.postEdit(edit); 
    7676    } 
     77     
     78     
    7779     
    7880     
  • branches/OmeroEditor/src/treeModel/editActions/DeleteFields.java

    r5527 r5536  
    8787        } 
    8888         
     89        public static boolean canDo(TreePath[] selectedPaths) {  
     90                return (selectedPaths.length > 0); 
     91        } 
     92         
    8993        public void undo() { 
    9094                TreeModelMethods.insertNodesInto(treeModel, deletedFields, parentNode, 

Download in other formats:

  • Unified Diff
  • Zip Archive

Trac Powered

Powered by Trac 0.11
By Edgewall Software.

Visit the Trac open source project at
http://trac.edgewall.org/