📄 searchwindows.java
字号:
public void commandAction(Command command, Displayable arg1) { if (command == searchSettingsForm.ok) { saveAddPhraseSettings(); addSelectedBoxesToSearchSettings(); setDateIntervalInSearchSettings(); mujmail.getDisplay().setCurrent(previousPhrase); } } private Date getDateFromForm(java.util.Date date, Date dateIfNull) { if (date == null) { return dateIfNull; } return new Date(date.getTime()); } private void saveAddPhraseSettings() { searchSettingsForm.boxes.saveSelectedStateOfCorrespondingItems( PersistentBox.getPersistentBoxes()); } private void addSelectedBoxesToSearchSettings() { searchSettings.removeBoxes(); searchSettings.addBoxes(searchSettingsForm.boxes.getItemsCorrespondingToSelected(PersistentBox.getPersistentBoxes())); } private void setDateIntervalInSearchSettings() { Date from = getDateFromForm(searchSettingsForm.dateFrom.getDate(), Date.MINIMUM_DATE); Date to = getDateFromForm(searchSettingsForm.dateTo.getDate(), Date.MAXIMUM_DATE); searchSettings.setDateInterval(DateInterval.createDateInterval(from, to)); } } /** * Form that enables to enter the search phrase. */ private class AddSearchPhraseForm extends Form { private final Command search; private final Command back; private final Command addNewSearchPhrase; private final Command searchSettings; private final TextField searchPhrase; private final ChoiceGroup requiredChG; private final ChoiceGroup wholeWordsChG; private final MyChoiceGroup messagePartsChG; public AddSearchPhraseForm() { super(Lang.get(Lang.SEA_ENTER_SEARCH_PHRASE)); searchPhrase = new TextField(Lang.get(Lang.SEA_SEARCH_PHRASE), "", 256, TextField.ANY); append(searchPhrase); requiredChG = new ChoiceGroup("", ChoiceGroup.MULTIPLE); if (ORIGINAL_UI) requiredChG.append(Lang.get(Lang.SEA_REQUIRED), null); else requiredChG.append("All phrases must match", null); append(requiredChG); wholeWordsChG = new ChoiceGroup("", ChoiceGroup.MULTIPLE); wholeWordsChG.append(Lang.get(Lang.SEA_WHOLE_WORDS), null); append(wholeWordsChG); messagePartsChG = new MyChoiceGroup(Lang.get(Lang.SEA_SEARCH_IN_MSG_PARTS), ChoiceGroup.MULTIPLE); addMessagePartsInWhichSearch(); append(messagePartsChG); search = new Command(Lang.get(Lang.BTN_SEA_SEARCH), Command.OK, 4); back = new Command(Lang.get(Lang.BTN_BACK), Command.BACK, 3); addNewSearchPhrase = new Command(Lang.get(Lang.BTN_SEA_ADD_NEW_PHRASE), Command.ITEM, 2); searchSettings = new Command(Lang.get(Lang.SEA_ADVANCED_SETTINGS), Command.ITEM, 1); addCommand(search); addCommand(back); if (ORIGINAL_UI) addCommand(addNewSearchPhrase); addCommand(searchSettings); setCommandListener(new AddSearchPhraseCommandListener(this)); } /** * Gets the array of string search phrases contained in this form. * @return String array with phrases entered into this windows. */ public String[] getSearchPhrases() { if (ORIGINAL_UI) { String[] phrases = {searchPhrase.getString()}; return phrases; } Vector phrases = new Vector(1); String phrasesString = searchPhrase.getString(); int start = 0; while (start < phrasesString.length()) { int end; if (phrasesString.charAt(start) == '"') { start++; end = phrasesString.indexOf("\"", start); } else { end = phrasesString.indexOf(" ", start); } if (end == -1) end = phrasesString.length(); String phrase = phrasesString.substring(start, end); phrases.addElement(phrase); if (start != 0 && phrasesString.charAt(start-1) == '"') { start = end + 2; } else { start = end + 1; } } String[] phrasesArray = new String[phrases.size()]; phrases.copyInto(phrasesArray); return phrasesArray; } /** * Returns the importance of the phrase that user marked. * @return the importance of the phrase that user marked. */ public SearchPhrase.PhraseImportance getPhraseImportance() { if (requiredChG.isSelected(0)) { return SearchPhrase.PhraseImportance.REQUIRED; } else { return SearchPhrase.PhraseImportance.OPTIONAL; } } public FulltextSearchModes getSearchMode() { if (wholeWordsChG.isSelected(0)) { return FulltextSearchModes.WHOLE_WORDS; } else { return FulltextSearchModes.NOT_WHOLE_WORDS; } } private void addMessagePartsInWhichSearch() { Vector messageParts = SearchMessagePart.getAllMessageParts(); for (int i = 0; i < messageParts.size(); i++) { SearchMessagePart messagePart = (SearchMessagePart) messageParts.elementAt(i); messagePartsChG.append(messagePart.toString(), null); messagePartsChG.setSelectedIndex(i, messagePart.loadBoolean()); } } } /** * Listenes for events of AddSearchPhraseForm. */ private class AddSearchPhraseCommandListener implements CommandListener { private final AddSearchPhraseForm searchPhraseForm; public AddSearchPhraseCommandListener(AddSearchPhraseForm searchPhraseForm) { this.searchPhraseForm = searchPhraseForm; } public void commandAction(Command command, Displayable displayable) { if (command == searchPhraseForm.search) { addSearchPhrasesToSettings(); doSearchDisplayResults(); } else if (command == searchPhraseForm.back) { mujmail.mainMenu(); } else if (command == searchPhraseForm.addNewSearchPhrase) { addSearchPhrasesToSettings(); startAddSearchPhraseWindow(); } else if (command == searchPhraseForm.searchSettings) { startSearchSettingsWindow(); } } /** * Adds search phrases contained in edit box to search settings. */ private void addSearchPhrasesToSettings() { saveAddPhraseSettings(); String[] phrases = searchPhraseForm.getSearchPhrases(); for (int i = 0; i < phrases.length; i++) { searchSettings.addSearchPhrase( new SearchPhrase( phrases[i], searchPhraseForm.getSearchMode(), searchPhraseForm.getPhraseImportance(), getSelectedMessageParts())); } } private void startSearchSettingsWindow() { mujmail.getDisplay().setCurrent(new SearchSettingsForm(searchPhraseForm)); } private void saveAddPhraseSettings() { searchPhraseForm.messagePartsChG.saveSelectedStateOfCorrespondingItems( SearchMessagePart.getAllMessageParts()); } /** * Gets selected message parts in searchPhraseForm. * @return vector of selected message parts in searchPhraseForm. */ private Vector getSelectedMessageParts() { return searchPhraseForm.messagePartsChG.getItemsCorrespondingToSelected( SearchMessagePart.getAllMessageParts()); } } }
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -