Changeset 736 in josm


Ignore:
Timestamp:
2008-07-25T08:11:13+02:00 (16 years ago)
Author:
stoecker
Message:

fixed the autocomplete issue (closes bug #1188). Not perfect but working

Location:
trunk/src/org/openstreetmap/josm
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/org/openstreetmap/josm/gui/mappaint/MapPaintStyles.java

    r735 r736  
    5454                        URL elemStylesPath = Main.class.getResource("/styles/"+styleName+"/elemstyles.xml");
    5555
    56                         System.out.println("mappaint: Using jar's elemstyles.xml: \"" + elemStylesPath + "\"");
     56//                      System.out.println("mappaint: Using jar's elemstyles.xml: \"" + elemStylesPath + "\"");
    5757                        if (elemStylesPath != null)
    5858                        {
  • trunk/src/org/openstreetmap/josm/tools/AutoCompleteComboBox.java

    r627 r736  
    1919        /**
    2020         * Auto-complete a JComboBox.
    21          * 
     21         *
    2222         * Inspired by http://www.orbital-computer.de/JComboBox/
    2323         */
     
    3737
    3838                @Override public void insertString(int offs, String str, AttributeSet a) throws BadLocationException {
     39                        if(selecting || (offs == 0 && str.equals(getText(0, getLength()))))
     40                                return;
    3941                        super.insertString(offs, str, a);
    4042
    4143                        // return immediately when selecting an item
    42                         // Nota: this is done after calling super method because we need
     44                        // Note: this is done after calling super method because we need
    4345                        // ActionListener informed
    4446                        if (selecting)
    4547                                return;
    4648
     49                        int size = getLength();
     50                        String curText = getText(0, size);
    4751                        // lookup and select a matching item
    48                         Object item = lookupItem(getText(0, getLength()));
     52                        Object item = lookupItem(curText);
    4953                        if (item != null) {
    50                                 // remove all text and insert the completed string
    51                                 super.remove(0, getLength());
    52                                 super.insertString(0, item.toString(), a);
    53 
     54                                String newText = item.toString();
     55                                if(!newText.equals(curText))
     56                                {
     57                                        selecting = true;
     58                                        super.remove(0, size);
     59                                        super.insertString(0, newText, a);
     60                                        selecting = false;
     61                                        JTextComponent editor = (JTextComponent)comboBox.getEditor().getEditorComponent();
     62                                        editor.setSelectionStart(size);
     63                                        editor.setSelectionEnd(getLength());
     64                                }
    5465                        }
    55                        
    5666                        setSelectedItem(item);
    57                        
    58                         // select the completed part
    59                         JTextComponent editor = (JTextComponent)comboBox.getEditor().getEditorComponent();
    60                         editor.setSelectionStart(offs + str.length());
    61                         editor.setSelectionEnd(getLength());
    6267                }
    6368
Note: See TracChangeset for help on using the changeset viewer.