@Override public boolean onActionItemClicked(ActionMode mode, MenuItem item) { switch (item.getItemId()) { case R.id.action_edit: selectionListener.onEdit(selectedNode); stopActionMode(); return true; case R.id.action_delete: selectionListener.onDelete(selectedNode); stopActionMode(); return true; case R.id.action_rename: uiUtils .createInputDialog( activity.getString(R.string.rename_title), selectedNode.getPath(), new UiUtils.OnInputListener() { @Override public void onInput(String newFileName) { selectionListener.onRename(selectedNode, newFileName); stopActionMode(); } }) .show(); return true; case R.id.action_move: selectionListener.onMoveTo(selectedNode); stopActionMode(); return true; } return false; }
/** Tries reading one particular file as a post. */ public Optional<Post> parsePost(FileNode node) { String fileName = node.getPath(); // check for match Matcher matcher = POST_TITLE_PATTERN.matcher(fileName); if (!matcher.matches()) return Optional.absent(); try { // get date int year = Integer.valueOf(matcher.group(1)); int month = Integer.valueOf(matcher.group(2)) - 1; // java Calendar is 0 based int day = Integer.valueOf(matcher.group(3)); Calendar calendar = Calendar.getInstance(); calendar.set(year, month, day); // get title String title = formatTitle(matcher.group(4)); return Optional.of(new Post(title, calendar.getTime(), node)); } catch (NumberFormatException nfe) { Timber.w(nfe, "failed to parse post tile \"" + fileName + "\""); return Optional.absent(); } }
/** Tries reading one particular file as a draft. */ public Optional<Draft> parseDraft(FileNode node) { // check for match Matcher matcher = DRAFT_TITLE_PATTERN.matcher(node.getPath()); if (!matcher.matches()) return Optional.absent(); // get title String title = formatTitle(matcher.group(1)); return Optional.of(new Draft(title, node)); }