+ void onUpDownButton(final boolean up) {\r
+ final int firstVisibleRow = getListView().getFirstVisiblePosition();\r
+ final RowBase row = index.rows.get(firstVisibleRow);\r
+ final TokenRow tokenRow = row.getTokenRow(true);\r
+ final int destIndexEntry;\r
+ if (up) {\r
+ if (row != tokenRow) {\r
+ destIndexEntry = tokenRow.referenceIndex;\r
+ } else {\r
+ destIndexEntry = Math.max(tokenRow.referenceIndex - 1, 0);\r
+ }\r
+ } else {\r
+ // Down\r
+ destIndexEntry = Math.min(tokenRow.referenceIndex + 1, index.sortedIndexEntries.size());\r
+ }\r
+ final Index.IndexEntry dest = index.sortedIndexEntries.get(destIndexEntry);\r
+ Log.d(LOG, "onUpDownButton, destIndexEntry=" + dest.token);\r
+ searchText.removeTextChangedListener(searchTextWatcher);\r
+ searchText.setText(dest.token);\r
+ jumpToRow(index.sortedIndexEntries.get(destIndexEntry).startRow);\r
+ searchText.addTextChangedListener(searchTextWatcher);\r
+ }\r
+\r
+ // --------------------------------------------------------------------------\r
+ // Options Menu\r
+ // --------------------------------------------------------------------------\r
+ \r
+ @Override\r
+ public boolean onCreateOptionsMenu(final Menu menu) {\r
+ \r
+ {\r
+ final MenuItem preferences = menu.add(getString(R.string.preferences));\r
+ preferences.setOnMenuItemClickListener(new OnMenuItemClickListener() {\r
+ public boolean onMenuItemClick(final MenuItem menuItem) {\r
+ startActivity(new Intent(DictionaryActivity.this,\r
+ PreferenceActivity.class));\r
+ return false;\r
+ }\r
+ });\r
+ }\r
+\r
+ {\r
+ final MenuItem dictionaryList = menu.add(getString(R.string.dictionaryList));\r
+ dictionaryList.setOnMenuItemClickListener(new OnMenuItemClickListener() {\r
+ public boolean onMenuItemClick(final MenuItem menuItem) {\r
+ startActivity(DictionaryListActivity.getIntent(DictionaryActivity.this));\r
+ finish();\r
+ return false;\r
+ }\r
+ });\r
+ }\r
+\r
+ {\r
+ final MenuItem dictionaryEdit = menu.add(getString(R.string.editDictionary));\r
+ dictionaryEdit.setOnMenuItemClickListener(new OnMenuItemClickListener() {\r
+ public boolean onMenuItemClick(final MenuItem menuItem) {\r
+ final Intent intent = DictionaryEditActivity.getIntent(dictIndex);\r
+ startActivity(intent);\r
+ return false;\r
+ }\r
+ });\r
+ }\r
+\r
+ return true;\r
+ }\r
+\r
+\r
+ // --------------------------------------------------------------------------\r
+ // Context Menu + clicks\r
+ // --------------------------------------------------------------------------\r
+\r
+ @Override\r
+ public void onCreateContextMenu(ContextMenu menu, View v,\r
+ ContextMenuInfo menuInfo) {\r
+ AdapterContextMenuInfo adapterContextMenuInfo = (AdapterContextMenuInfo) menuInfo;\r
+ final RowBase row = (RowBase) getListAdapter().getItem(adapterContextMenuInfo.position);\r
+\r
+ final MenuItem addToWordlist = menu.add(getString(R.string.addToWordList, wordList.getName()));\r
+ addToWordlist.setOnMenuItemClickListener(new OnMenuItemClickListener() {\r
+ public boolean onMenuItemClick(MenuItem item) {\r
+ onAppendToWordList(row);\r
+ return false;\r
+ }\r
+ });\r
+\r
+ final MenuItem copy = menu.add(android.R.string.copy);\r
+ copy.setOnMenuItemClickListener(new OnMenuItemClickListener() {\r
+ public boolean onMenuItemClick(MenuItem item) {\r
+ onCopy(row);\r
+ return false;\r
+ }\r
+ });\r
+\r
+ }\r
+ \r
+ @Override\r
+ protected void onListItemClick(ListView l, View v, int row, long id) {\r
+ openContextMenu(v);\r
+ }\r
+ \r
+ void onAppendToWordList(final RowBase row) {\r
+ final StringBuilder rawText = new StringBuilder();\r
+ rawText.append(\r
+ new SimpleDateFormat("yyyy.MM.dd HH:mm:ss").format(new Date()))\r
+ .append("\t");\r
+ rawText.append(index.longName).append("\t");\r
+ rawText.append(row.getTokenRow(true).getToken()).append("\t");\r
+ rawText.append(row.getRawText(saveOnlyFirstSubentry));\r
+ Log.d(LOG, "Writing : " + rawText);\r
+ try {\r
+ wordList.getParentFile().mkdirs();\r
+ final PrintWriter out = new PrintWriter(\r
+ new FileWriter(wordList, true));\r
+ out.println(rawText.toString());\r
+ out.close();\r
+ } catch (IOException e) {\r
+ Log.e(LOG, "Unable to append to " + wordList.getAbsolutePath(), e);\r
+ Toast.makeText(this, getString(R.string.failedAddingToWordList, wordList.getAbsolutePath()), Toast.LENGTH_LONG);\r
+ }\r
+ return;\r
+ }\r
+\r
+ void onCopy(final RowBase row) {\r
+ Log.d(LOG, "Copy, row=" + row);\r
+ final StringBuilder result = new StringBuilder();\r
+ result.append(row.getRawText(false));\r
+ final ClipboardManager clipboardManager = (ClipboardManager) getSystemService(Context.CLIPBOARD_SERVICE);\r
+ clipboardManager.setText(result.toString());\r
+ Log.d(LOG, "Copied: " + result);\r
+ }\r
+\r
+ @Override\r
+ public boolean onKeyDown(final int keyCode, final KeyEvent event) {\r
+ if (event.getUnicodeChar() != 0) {\r
+ if (!searchText.hasFocus()) {\r
+ searchText.setText("" + (char) event.getUnicodeChar());\r
+ onSearchTextChange(searchText.getText().toString());\r
+ searchText.requestFocus();\r
+ }\r
+ return true;\r
+ }\r
+ if (keyCode == KeyEvent.KEYCODE_BACK) {\r
+ Log.d(LOG, "Clearing dictionary prefs.");\r
+ DictionaryActivity.clearDictionaryPrefs(this);\r
+ }\r
+ return super.onKeyDown(keyCode, event);\r
+ }\r
+\r
+\r