Move menu managers to respective packages.
Also add some unit tests to cover mixed docs in context menus.
Change-Id: I764383daed21afa5e355d85f807ad4ef1710593e
diff --git a/src/com/android/documentsui/MenuManager.java b/src/com/android/documentsui/MenuManager.java
index efe5703..55dffb1 100644
--- a/src/com/android/documentsui/MenuManager.java
+++ b/src/com/android/documentsui/MenuManager.java
@@ -31,8 +31,8 @@
public abstract class MenuManager {
- final State mState;
- final SearchViewManager mSearchManager;
+ final protected State mState;
+ final protected SearchViewManager mSearchManager;
public MenuManager(SearchViewManager searchManager, State displayState) {
mSearchManager = searchManager;
@@ -98,7 +98,7 @@
* unselectable item in pickers
*/
@VisibleForTesting
- void updateContextMenuForFiles(Menu menu, SelectionDetails selectionDetails) {
+ public void updateContextMenuForFiles(Menu menu, SelectionDetails selectionDetails) {
assert(selectionDetails != null);
MenuItem share = menu.findItem(R.id.menu_share);
@@ -125,7 +125,7 @@
* an unselectable item in pickers
*/
@VisibleForTesting
- void updateContextMenuForDirs(Menu menu, SelectionDetails selectionDetails) {
+ public void updateContextMenuForDirs(Menu menu, SelectionDetails selectionDetails) {
assert(selectionDetails != null);
MenuItem openInNewWindow = menu.findItem(R.id.menu_open_in_new_window);
@@ -145,7 +145,7 @@
* Update shared context menu items of both files and folders context menus.
*/
@VisibleForTesting
- void updateContextMenu(Menu menu, SelectionDetails selectionDetails) {
+ public void updateContextMenu(Menu menu, SelectionDetails selectionDetails) {
assert(selectionDetails != null);
MenuItem cut = menu.findItem(R.id.menu_cut_to_clipboard);
@@ -166,7 +166,7 @@
* Called when user tries to generate a context menu anchored to an empty pane.
*/
@VisibleForTesting
- void updateContextMenuForContainer(Menu menu, DirectoryDetails directoryDetails) {
+ public void updateContextMenuForContainer(Menu menu, DirectoryDetails directoryDetails) {
MenuItem paste = menu.findItem(R.id.menu_paste_from_clipboard);
MenuItem selectAll = menu.findItem(R.id.menu_select_all);
@@ -185,72 +185,75 @@
updateEject(eject, root);
}
- void updateModePicker(MenuItem grid, MenuItem list, DirectoryDetails directoryDetails) {
+ protected void updateModePicker(
+ MenuItem grid, MenuItem list, DirectoryDetails directoryDetails) {
grid.setVisible(mState.derivedMode != State.MODE_GRID);
list.setVisible(mState.derivedMode != State.MODE_LIST);
}
- void updateAdvanced(MenuItem advanced, DirectoryDetails directoryDetails) {
+ protected void updateAdvanced(MenuItem advanced, DirectoryDetails directoryDetails) {
advanced.setVisible(mState.showAdvancedOption);
advanced.setTitle(mState.showAdvancedOption && mState.showAdvanced
? R.string.menu_advanced_hide : R.string.menu_advanced_show);
}
- void updateSettings(MenuItem settings, DirectoryDetails directoryDetails) {
+ protected void updateSettings(MenuItem settings, DirectoryDetails directoryDetails) {
settings.setVisible(false);
}
- void updateSettings(MenuItem settings, RootInfo root) {
+ protected void updateSettings(MenuItem settings, RootInfo root) {
settings.setVisible(false);
}
- void updateEject(MenuItem eject, RootInfo root) {
+ protected void updateEject(MenuItem eject, RootInfo root) {
eject.setVisible(false);
}
- void updateNewWindow(MenuItem newWindow, DirectoryDetails directoryDetails) {
+ protected void updateNewWindow(MenuItem newWindow, DirectoryDetails directoryDetails) {
newWindow.setVisible(false);
}
- void updateOpenInActionMode(MenuItem open, SelectionDetails selectionDetails) {
+ protected void updateOpenInActionMode(MenuItem open, SelectionDetails selectionDetails) {
open.setVisible(false);
}
- void updateOpenWith(MenuItem openWith, SelectionDetails selectionDetails) {
+ protected void updateOpenWith(MenuItem openWith, SelectionDetails selectionDetails) {
openWith.setVisible(false);
}
- void updateOpenInNewWindow(MenuItem openInNewWindow, SelectionDetails selectionDetails) {
+ protected void updateOpenInNewWindow(
+ MenuItem openInNewWindow, SelectionDetails selectionDetails) {
openInNewWindow.setVisible(false);
}
- void updateShare(MenuItem share, SelectionDetails selectionDetails) {
+ protected void updateShare(MenuItem share, SelectionDetails selectionDetails) {
share.setVisible(false);
}
- void updateDelete(MenuItem delete, SelectionDetails selectionDetails) {
+ protected void updateDelete(MenuItem delete, SelectionDetails selectionDetails) {
delete.setVisible(false);
}
- void updateRename(MenuItem rename, SelectionDetails selectionDetails) {
+ protected void updateRename(MenuItem rename, SelectionDetails selectionDetails) {
rename.setVisible(false);
}
- void updateMoveTo(MenuItem moveTo, SelectionDetails selectionDetails) {
+ protected void updateMoveTo(MenuItem moveTo, SelectionDetails selectionDetails) {
moveTo.setVisible(false);
}
- void updateCopyTo(MenuItem copyTo, SelectionDetails selectionDetails) {
+ protected void updateCopyTo(MenuItem copyTo, SelectionDetails selectionDetails) {
copyTo.setVisible(false);
}
- void updatePasteInto(MenuItem pasteInto, SelectionDetails selectionDetails) {
+ protected void updatePasteInto(MenuItem pasteInto, SelectionDetails selectionDetails) {
pasteInto.setVisible(false);
}
- abstract void updateOpenInContextMenu(MenuItem open, SelectionDetails selectionDetails);
- abstract void updateSelectAll(MenuItem selectAll);
- abstract void updateCreateDir(MenuItem createDir, DirectoryDetails directoryDetails);
+ protected abstract void updateOpenInContextMenu(
+ MenuItem open, SelectionDetails selectionDetails);
+ protected abstract void updateSelectAll(MenuItem selectAll);
+ protected abstract void updateCreateDir(MenuItem createDir, DirectoryDetails directoryDetails);
/**
* Access to meta data about the selection.
diff --git a/src/com/android/documentsui/SearchViewManager.java b/src/com/android/documentsui/SearchViewManager.java
index 6ee455a..a632136 100644
--- a/src/com/android/documentsui/SearchViewManager.java
+++ b/src/com/android/documentsui/SearchViewManager.java
@@ -136,7 +136,7 @@
&& ((root.flags & Root.FLAG_SUPPORTS_SEARCH) != 0));
}
- protected void showMenu(boolean visible) {
+ public void showMenu(boolean visible) {
if (mMenuItem == null) {
if (DEBUG) Log.d(TAG, "showMenu called before Search MenuItem installed.");
return;
diff --git a/src/com/android/documentsui/manager/ManageActivity.java b/src/com/android/documentsui/manager/ManageActivity.java
index 9f1c6e7..4f5de12 100644
--- a/src/com/android/documentsui/manager/ManageActivity.java
+++ b/src/com/android/documentsui/manager/ManageActivity.java
@@ -37,8 +37,6 @@
import com.android.documentsui.BaseActivity;
import com.android.documentsui.DocumentsApplication;
-import com.android.documentsui.FilesMenuManager;
-import com.android.documentsui.MenuManager;
import com.android.documentsui.MenuManager.DirectoryDetails;
import com.android.documentsui.Metrics;
import com.android.documentsui.OperationDialogFragment;
@@ -82,7 +80,7 @@
// We use the time gap to figure out whether to close app or reopen the drawer.
private long mDrawerLastFiddled;
private DocumentClipper mClipper;
- private FilesMenuManager mMenuManager;
+ private MenuManager mMenuManager;
private DirectoryDetails mDetails;
public ManageActivity() {
@@ -94,7 +92,7 @@
super.onCreate(icicle);
mClipper = DocumentsApplication.getDocumentClipper(this);
- mMenuManager = new FilesMenuManager(mSearchManager, getDisplayState());
+ mMenuManager = new MenuManager(mSearchManager, getDisplayState());
mDetails = new DirectoryDetails(this) {
@Override
public boolean hasItemsToPaste() {
diff --git a/src/com/android/documentsui/FilesMenuManager.java b/src/com/android/documentsui/manager/MenuManager.java
similarity index 72%
rename from src/com/android/documentsui/FilesMenuManager.java
rename to src/com/android/documentsui/manager/MenuManager.java
index 3ad89f6..7fca108 100644
--- a/src/com/android/documentsui/FilesMenuManager.java
+++ b/src/com/android/documentsui/manager/MenuManager.java
@@ -14,7 +14,7 @@
* limitations under the License.
*/
-package com.android.documentsui;
+package com.android.documentsui.manager;
import android.app.Fragment;
import android.view.Menu;
@@ -22,12 +22,14 @@
import android.view.MenuItem;
import android.view.View;
+import com.android.documentsui.R;
+import com.android.documentsui.SearchViewManager;
import com.android.documentsui.base.RootInfo;
import com.android.documentsui.base.State;
-public final class FilesMenuManager extends MenuManager {
+public final class MenuManager extends com.android.documentsui.MenuManager {
- public FilesMenuManager(SearchViewManager searchManager, State displayState) {
+ public MenuManager(SearchViewManager searchManager, State displayState) {
super(searchManager, displayState);
}
@@ -78,86 +80,87 @@
}
@Override
- void updateSettings(MenuItem settings, RootInfo root) {
+ protected void updateSettings(MenuItem settings, RootInfo root) {
settings.setVisible(true);
settings.setEnabled(root.hasSettings());
}
@Override
- void updateEject(MenuItem eject, RootInfo root) {
+ protected void updateEject(MenuItem eject, RootInfo root) {
eject.setVisible(true);
eject.setEnabled(root.supportsEject() && !root.ejecting);
}
@Override
- void updateSettings(MenuItem settings, DirectoryDetails directoryDetails) {
+ protected void updateSettings(MenuItem settings, DirectoryDetails directoryDetails) {
settings.setVisible(directoryDetails.hasRootSettings());
}
@Override
- void updateNewWindow(MenuItem newWindow, DirectoryDetails directoryDetails) {
+ protected void updateNewWindow(MenuItem newWindow, DirectoryDetails directoryDetails) {
newWindow.setVisible(directoryDetails.shouldShowFancyFeatures());
}
@Override
- void updateOpenInContextMenu(MenuItem open, SelectionDetails selectionDetails) {
+ protected void updateOpenInContextMenu(MenuItem open, SelectionDetails selectionDetails) {
open.setEnabled(selectionDetails.size() == 1
&& !selectionDetails.containsPartialFiles());
}
@Override
- void updateOpenWith(MenuItem openWith, SelectionDetails selectionDetails) {
+ protected void updateOpenWith(MenuItem openWith, SelectionDetails selectionDetails) {
openWith.setEnabled(selectionDetails.size() == 1
&& !selectionDetails.containsPartialFiles());
}
@Override
- void updateOpenInNewWindow(MenuItem openInNewWindow, SelectionDetails selectionDetails) {
+ protected void updateOpenInNewWindow(
+ MenuItem openInNewWindow, SelectionDetails selectionDetails) {
openInNewWindow.setEnabled(selectionDetails.size() == 1
&& !selectionDetails.containsPartialFiles());
}
@Override
- void updateMoveTo(MenuItem moveTo, SelectionDetails selectionDetails) {
+ protected void updateMoveTo(MenuItem moveTo, SelectionDetails selectionDetails) {
moveTo.setVisible(true);
moveTo.setEnabled(!selectionDetails.containsPartialFiles() && selectionDetails.canDelete());
}
@Override
- void updateCopyTo(MenuItem copyTo, SelectionDetails selectionDetails) {
+ protected void updateCopyTo(MenuItem copyTo, SelectionDetails selectionDetails) {
copyTo.setVisible(true);
copyTo.setEnabled(!selectionDetails.containsPartialFiles());
}
@Override
- void updatePasteInto(MenuItem pasteInto, SelectionDetails selectionDetails) {
+ protected void updatePasteInto(MenuItem pasteInto, SelectionDetails selectionDetails) {
pasteInto.setEnabled(selectionDetails.canPasteInto());
}
@Override
- void updateSelectAll(MenuItem selectAll) {
+ protected void updateSelectAll(MenuItem selectAll) {
selectAll.setVisible(true);
}
@Override
- void updateCreateDir(MenuItem createDir, DirectoryDetails directoryDetails) {
+ protected void updateCreateDir(MenuItem createDir, DirectoryDetails directoryDetails) {
createDir.setVisible(true);
createDir.setEnabled(directoryDetails.canCreateDirectory());
}
@Override
- void updateShare(MenuItem share, SelectionDetails selectionDetails) {
+ protected void updateShare(MenuItem share, SelectionDetails selectionDetails) {
share.setVisible(!selectionDetails.containsDirectories()
&& !selectionDetails.containsPartialFiles());
}
@Override
- void updateDelete(MenuItem delete, SelectionDetails selectionDetails) {
+ protected void updateDelete(MenuItem delete, SelectionDetails selectionDetails) {
delete.setVisible(selectionDetails.canDelete());
}
@Override
- void updateRename(MenuItem rename, SelectionDetails selectionDetails) {
+ protected void updateRename(MenuItem rename, SelectionDetails selectionDetails) {
rename.setVisible(true);
rename.setEnabled(!selectionDetails.containsPartialFiles() && selectionDetails.canRename());
}
diff --git a/src/com/android/documentsui/DocumentsMenuManager.java b/src/com/android/documentsui/picker/MenuManager.java
similarity index 78%
rename from src/com/android/documentsui/DocumentsMenuManager.java
rename to src/com/android/documentsui/picker/MenuManager.java
index 4104a2c..5385482 100644
--- a/src/com/android/documentsui/DocumentsMenuManager.java
+++ b/src/com/android/documentsui/picker/MenuManager.java
@@ -14,7 +14,7 @@
* limitations under the License.
*/
-package com.android.documentsui;
+package com.android.documentsui.picker;
import static com.android.documentsui.base.State.ACTION_CREATE;
import static com.android.documentsui.base.State.ACTION_GET_CONTENT;
@@ -25,13 +25,14 @@
import android.view.Menu;
import android.view.MenuItem;
+import com.android.documentsui.SearchViewManager;
import com.android.documentsui.base.State;
-public final class DocumentsMenuManager extends MenuManager {
+public final class MenuManager extends com.android.documentsui.MenuManager {
private boolean mPicking;
- public DocumentsMenuManager(SearchViewManager searchManager, State displayState) {
+ public MenuManager(SearchViewManager searchManager, State displayState) {
super(searchManager, displayState);
mPicking = mState.action == ACTION_CREATE
@@ -50,7 +51,8 @@
}
@Override
- void updateModePicker(MenuItem grid, MenuItem list, DirectoryDetails directoryDetails) {
+ protected void updateModePicker(
+ MenuItem grid, MenuItem list, DirectoryDetails directoryDetails) {
// No display options in recent directories
if (mPicking && directoryDetails.isInRecents()) {
grid.setVisible(false);
@@ -61,23 +63,23 @@
}
@Override
- void updateSelectAll(MenuItem selectAll) {
+ protected void updateSelectAll(MenuItem selectAll) {
selectAll.setVisible(mState.allowMultiple);
}
@Override
- void updateCreateDir(MenuItem createDir, DirectoryDetails directoryDetails) {
+ protected void updateCreateDir(MenuItem createDir, DirectoryDetails directoryDetails) {
createDir.setVisible(mPicking);
createDir.setEnabled(mPicking && directoryDetails.canCreateDirectory());
}
@Override
- void updateOpenInActionMode(MenuItem open, SelectionDetails selectionDetails) {
+ protected void updateOpenInActionMode(MenuItem open, SelectionDetails selectionDetails) {
updateOpen(open, selectionDetails);
}
@Override
- void updateOpenInContextMenu(MenuItem open, SelectionDetails selectionDetails) {
+ protected void updateOpenInContextMenu(MenuItem open, SelectionDetails selectionDetails) {
updateOpen(open, selectionDetails);
}
diff --git a/src/com/android/documentsui/picker/PickActivity.java b/src/com/android/documentsui/picker/PickActivity.java
index dbe722f..9f738c8 100644
--- a/src/com/android/documentsui/picker/PickActivity.java
+++ b/src/com/android/documentsui/picker/PickActivity.java
@@ -43,8 +43,6 @@
import com.android.documentsui.BaseActivity;
import com.android.documentsui.DocumentsApplication;
-import com.android.documentsui.DocumentsMenuManager;
-import com.android.documentsui.MenuManager;
import com.android.documentsui.MenuManager.DirectoryDetails;
import com.android.documentsui.base.DocumentInfo;
import com.android.documentsui.base.MimePredicate;
@@ -68,7 +66,7 @@
public class PickActivity extends BaseActivity {
private static final int CODE_FORWARD = 42;
private static final String TAG = "DocumentsActivity";
- private DocumentsMenuManager mMenuManager;
+ private MenuManager mMenuManager;
private DirectoryDetails mDetails;
public PickActivity() {
@@ -78,7 +76,7 @@
@Override
public void onCreate(Bundle icicle) {
super.onCreate(icicle);
- mMenuManager = new DocumentsMenuManager(mSearchManager, getDisplayState());
+ mMenuManager = new MenuManager(mSearchManager, getDisplayState());
mDetails = new DirectoryDetails(this);
if (mState.action == ACTION_CREATE) {