void (@NotNull final String pattern) { final List<String> list = myProvider.filterNames(ChooseByNameBase.this, getNames(myCheckBox.isSelected()), pattern); if (list.isEmpty()) return; if (isComplexPattern(pattern)) return; //TODO: support '*' final String oldText = getTrimmedText(); final int oldPos = myList.getSelectedIndex(); String commonPrefix = null; if (!list.isEmpty()) { for (String name : list) { final String string = StringUtil.toLowerCase(name); if (commonPrefix == null) { commonPrefix = string; } else { while (!commonPrefix.isEmpty()) { if (string.startsWith(commonPrefix)) { break; } commonPrefix = commonPrefix.substring(0, commonPrefix.length() - 1); } if (commonPrefix.isEmpty()) break; } } commonPrefix = list.get(0).substring(0, commonPrefix.length()); for (int i = 1; i < list.size(); i++) { final String string = list.get(i).substring(0, commonPrefix.length()); if (!string.equals(commonPrefix)) { commonPrefix = StringUtil.toLowerCase(commonPrefix); break; } } } if (commonPrefix == null) commonPrefix = ""; if (!StringUtil.startsWithIgnoreCase(commonPrefix, pattern)) { commonPrefix = pattern; } final String newPattern = commonPrefix; myHistory.add(Pair.create(oldText, oldPos)); myTextField.setText(newPattern); myTextField.setCaretPosition(newPattern.length()); rebuildList(false); }