Changeset 1232


Ignore:
Timestamp:
Jul 20, 2011, 11:07:09 PM (6 years ago)
Author:
stefan
Message:
 
Location:
trunk/src
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/jlatexeditor/codehelper/CommandsCodeHelper.java

    r1231 r1232  
    77import sce.codehelper.PatternPair;
    88import sce.codehelper.WordWithPos;
     9import util.AbstractTrie;
    910import util.Function1;
    1011import de.endrullis.utils.collections.MergeSortIterable;
    1112import util.Trie;
    1213import util.TrieSet;
     14
     15import java.lang.reflect.Array;
     16import java.util.ArrayList;
     17import java.util.Arrays;
     18import java.util.List;
    1319
    1420/**
     
    108114
    109115  public String getMaxCommonPrefix(String search) {
    110     // TODO
    111     return search;
     116    List<AbstractTrie<? extends Object>> tries = Arrays.asList(
     117      SCEManager.getBackgroundParser().getCommands(),
     118      SCEManager.getLatexCommands().getCommands(),
     119      PackagesExtractor.getPackageParser().getCommands(),
     120      PackagesExtractor.getDocClassesParser().getCommands()
     121    );
     122
     123    String maxPrefix = null;
     124    for (AbstractTrie<? extends Object> trie : tries) {
     125      String maxCommonPrefix = trie.getMaxCommonPrefix(search);
     126      if (maxCommonPrefix.length() >= search.length()) {
     127        if (maxPrefix == null) {
     128          maxPrefix = maxCommonPrefix;
     129        } else {
     130          maxPrefix = maxCommonPrefix(maxPrefix, maxCommonPrefix);
     131        }
     132      }
     133    }
     134
     135    return maxPrefix;
     136  }
     137
     138  private String maxCommonPrefix(String prefix1, String prefix2) {
     139    char[] chars1 = prefix1.toCharArray();
     140    char[] chars2 = prefix2.toCharArray();
     141
     142    int i;
     143    for (i = 0; i < chars1.length && i < chars2.length; i++) {
     144      if (chars1[i] != chars2[i]) {
     145        return prefix1.substring(0, i);
     146      }
     147    }
     148
     149    return prefix1.substring(0, i);
    112150  }
    113151
  • trunk/src/sce/codehelper/CodeHelperPane.java

    r1231 r1232  
    3131  // the popup
    3232  protected JPopupMenu popup = null;
     33  JMenuItem status = new JMenuItem();
    3334
    3435  // the model
     
    5253    document = pane.getDocument();
    5354    caret = pane.getCaret();
     55
     56    status.setFont(new Font("Serif", Font.PLAIN, 9));
     57    status.setText("Level X");
    5458
    5559    // create the list
     
    8084    // popup menu
    8185    popup = new JPopupMenu();
     86    popup.add(status);
    8287    popup.add(this);
    8388    popup.setFocusable(false);
     
    371376
    372377  public void callCodeHelperWithCompletion() {
    373     if (popup.isVisible()) return;
    374 
    375378    if (codeHelper.matches()) {
    376379      wordPos = codeHelper.getWordToReplace();
     
    381384        replace(wordPos, replacement);
    382385
    383         popItUp();
     386        if (!popup.isVisible()) {
     387          popItUp();
     388        }
    384389      }
    385390    }
Note: See TracChangeset for help on using the changeset viewer.