Skip to content
This repository was archived by the owner on Jul 22, 2024. It is now read-only.

Commit b84dffb

Browse files
keianhzoMortimerGoro
authored andcommitted
Add open in tab menu item (#2106)
Fixes issues with the library context menus
1 parent 7875e70 commit b84dffb

19 files changed

+328
-402
lines changed
Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,10 @@
11
package org.mozilla.vrbrowser.ui.callbacks;
22

3-
import org.mozilla.vrbrowser.ui.views.LibraryItemContextMenu;
3+
import org.mozilla.vrbrowser.ui.widgets.menus.LibraryMenuWidget;
44

55
public interface LibraryItemContextMenuClickCallback {
6-
void onOpenInNewWindowClick(LibraryItemContextMenu.LibraryContextMenuItem item);
7-
void onAddToBookmarks(LibraryItemContextMenu.LibraryContextMenuItem item);
8-
void onRemoveFromBookmarks(LibraryItemContextMenu.LibraryContextMenuItem item);
6+
void onOpenInNewWindowClick(LibraryMenuWidget.LibraryContextMenuItem item);
7+
void onOpenInNewTabClick(LibraryMenuWidget.LibraryContextMenuItem item);
8+
void onAddToBookmarks(LibraryMenuWidget.LibraryContextMenuItem item);
9+
void onRemoveFromBookmarks(LibraryMenuWidget.LibraryContextMenuItem item);
910
}

app/src/common/shared/org/mozilla/vrbrowser/ui/views/LibraryItemContextMenu.java

Lines changed: 0 additions & 117 deletions
This file was deleted.

app/src/common/shared/org/mozilla/vrbrowser/ui/widgets/WindowWidget.java

Lines changed: 54 additions & 42 deletions
Original file line numberDiff line numberDiff line change
@@ -47,18 +47,18 @@
4747
import org.mozilla.vrbrowser.ui.callbacks.LibraryItemContextMenuClickCallback;
4848
import org.mozilla.vrbrowser.ui.views.BookmarksView;
4949
import org.mozilla.vrbrowser.ui.views.HistoryView;
50-
import org.mozilla.vrbrowser.ui.views.LibraryItemContextMenu;
5150
import org.mozilla.vrbrowser.ui.widgets.dialogs.BaseAppDialogWidget;
5251
import org.mozilla.vrbrowser.ui.widgets.dialogs.ClearCacheDialogWidget;
53-
import org.mozilla.vrbrowser.ui.widgets.dialogs.LibraryItemContextMenuWidget;
5452
import org.mozilla.vrbrowser.ui.widgets.dialogs.MessageDialogWidget;
5553
import org.mozilla.vrbrowser.ui.widgets.dialogs.SelectionActionWidget;
5654
import org.mozilla.vrbrowser.ui.widgets.menus.ContextMenuWidget;
55+
import org.mozilla.vrbrowser.ui.widgets.menus.LibraryMenuWidget;
5756
import org.mozilla.vrbrowser.ui.widgets.prompts.AlertPromptWidget;
5857
import org.mozilla.vrbrowser.ui.widgets.prompts.ConfirmPromptWidget;
5958
import org.mozilla.vrbrowser.ui.widgets.prompts.PromptWidget;
6059
import org.mozilla.vrbrowser.ui.widgets.settings.SettingsWidget;
6160
import org.mozilla.vrbrowser.utils.SystemUtils;
61+
import org.mozilla.vrbrowser.utils.UIThreadExecutor;
6262
import org.mozilla.vrbrowser.utils.ViewUtils;
6363

6464
import java.util.ArrayList;
@@ -105,7 +105,7 @@ default void onBookmarksHidden(WindowWidget aWindow) {}
105105
private ClearCacheDialogWidget mClearCacheDialog;
106106
private ContextMenuWidget mContextMenu;
107107
private SelectionActionWidget mSelectionMenu;
108-
private LibraryItemContextMenuWidget mLibraryItemContextMenu;
108+
private LibraryMenuWidget mLibraryItemContextMenu;
109109
private int mWidthBackup;
110110
private int mHeightBackup;
111111
private int mBorderWidth;
@@ -1310,7 +1310,7 @@ private int getWindowWidth(float aWorldWidth) {
13101310
return (int) Math.floor(SettingsStore.WINDOW_WIDTH_DEFAULT * aWorldWidth / WidgetPlacement.floatDimension(getContext(), R.dimen.window_world_width));
13111311
}
13121312

1313-
private void showLibraryItemContextMenu(@NotNull View view, LibraryItemContextMenu.LibraryContextMenuItem item, boolean isLastVisibleItem) {
1313+
private void showLibraryItemContextMenu(@NotNull View view, LibraryMenuWidget.LibraryContextMenuItem item, boolean isLastVisibleItem) {
13141314
view.requestFocusFromTouch();
13151315

13161316
hideContextMenus();
@@ -1321,56 +1321,68 @@ private void showLibraryItemContextMenu(@NotNull View view, LibraryItemContextMe
13211321
getDrawingRect(offsetViewBounds);
13221322
offsetDescendantRectToMyCoords(view, offsetViewBounds);
13231323

1324-
mLibraryItemContextMenu = new LibraryItemContextMenuWidget(getContext());
1325-
mLibraryItemContextMenu.setItem(item);
1326-
mLibraryItemContextMenu.mWidgetPlacement.parentHandle = getHandle();
1324+
SessionStore.get().getBookmarkStore().isBookmarked(item.getUrl()).thenAcceptAsync((isBookmarked -> {
1325+
mLibraryItemContextMenu = new LibraryMenuWidget(getContext(), item, mWidgetManager.canOpenNewWindow(), isBookmarked);
1326+
mLibraryItemContextMenu.getPlacement().parentHandle = getHandle();
13271327

1328-
PointF position;
1329-
if (isLastVisibleItem) {
1330-
mLibraryItemContextMenu.mWidgetPlacement.anchorY = 0.0f;
1331-
position = new PointF(
1332-
(offsetViewBounds.left + view.getWidth()) * ratio,
1333-
-(offsetViewBounds.top) * ratio);
1328+
PointF position;
1329+
if (isLastVisibleItem) {
1330+
mLibraryItemContextMenu.mWidgetPlacement.anchorY = 0.0f;
1331+
position = new PointF(
1332+
(offsetViewBounds.left + view.getWidth()) * ratio,
1333+
-(offsetViewBounds.top) * ratio);
13341334

1335-
} else {
1336-
mLibraryItemContextMenu.mWidgetPlacement.anchorY = 1.0f;
1337-
position = new PointF(
1338-
(offsetViewBounds.left + view.getWidth()) * ratio,
1339-
-(offsetViewBounds.top + view.getHeight()) * ratio);
1340-
}
1341-
1342-
mLibraryItemContextMenu.setPosition(position);
1343-
mLibraryItemContextMenu.setHistoryContextMenuItemCallback((new LibraryItemContextMenuClickCallback() {
1344-
@Override
1345-
public void onOpenInNewWindowClick(LibraryItemContextMenu.LibraryContextMenuItem item) {
1346-
mWidgetManager.openNewWindow(item.getUrl());
1347-
hideContextMenus();
1335+
} else {
1336+
mLibraryItemContextMenu.mWidgetPlacement.anchorY = 1.0f;
1337+
position = new PointF(
1338+
(offsetViewBounds.left + view.getWidth()) * ratio,
1339+
-(offsetViewBounds.top + view.getHeight()) * ratio);
13481340
}
1341+
mLibraryItemContextMenu.mWidgetPlacement.translationX = position.x - (mLibraryItemContextMenu.getWidth()/mLibraryItemContextMenu.mWidgetPlacement.density);
1342+
mLibraryItemContextMenu.mWidgetPlacement.translationY = position.y + getResources().getDimension(R.dimen.library_menu_top_margin)/mLibraryItemContextMenu.mWidgetPlacement.density;
1343+
1344+
mLibraryItemContextMenu.setItemDelegate((new LibraryItemContextMenuClickCallback() {
1345+
@Override
1346+
public void onOpenInNewWindowClick(LibraryMenuWidget.LibraryContextMenuItem item) {
1347+
mWidgetManager.openNewWindow(item.getUrl());
1348+
hideContextMenus();
1349+
}
13491350

1350-
@Override
1351-
public void onAddToBookmarks(LibraryItemContextMenu.LibraryContextMenuItem item) {
1352-
SessionStore.get().getBookmarkStore().addBookmark(item.getUrl(), item.getTitle());
1353-
hideContextMenus();
1354-
}
1351+
@Override
1352+
public void onOpenInNewTabClick(LibraryMenuWidget.LibraryContextMenuItem item) {
1353+
mWidgetManager.openNewTabForeground(item.getUrl());
1354+
hideContextMenus();
1355+
}
13551356

1356-
@Override
1357-
public void onRemoveFromBookmarks(LibraryItemContextMenu.LibraryContextMenuItem item) {
1358-
SessionStore.get().getBookmarkStore().deleteBookmarkByURL(item.getUrl());
1359-
hideContextMenus();
1360-
}
1361-
}));
1362-
mLibraryItemContextMenu.show(REQUEST_FOCUS);
1357+
@Override
1358+
public void onAddToBookmarks(LibraryMenuWidget.LibraryContextMenuItem item) {
1359+
SessionStore.get().getBookmarkStore().addBookmark(item.getUrl(), item.getTitle());
1360+
hideContextMenus();
1361+
}
1362+
1363+
@Override
1364+
public void onRemoveFromBookmarks(LibraryMenuWidget.LibraryContextMenuItem item) {
1365+
SessionStore.get().getBookmarkStore().deleteBookmarkByURL(item.getUrl());
1366+
hideContextMenus();
1367+
}
1368+
}));
1369+
mLibraryItemContextMenu.show(REQUEST_FOCUS);
1370+
1371+
}), new UIThreadExecutor()).exceptionally(throwable -> {
1372+
Log.d(LOGTAG, "Couldn't get the bookmarked status of the history item");
1373+
return null;
1374+
});
13631375
}
13641376

13651377
private BookmarksCallback mBookmarksListener = new BookmarksCallback() {
13661378
@Override
13671379
public void onShowContextMenu(@NonNull View view, @NotNull Bookmark item, boolean isLastVisibleItem) {
13681380
showLibraryItemContextMenu(
13691381
view,
1370-
new LibraryItemContextMenu.LibraryContextMenuItem(
1382+
new LibraryMenuWidget.LibraryContextMenuItem(
13711383
item.getUrl(),
13721384
item.getTitle(),
1373-
LibraryItemContextMenu.LibraryItemType.BOOKMARKS),
1385+
LibraryMenuWidget.LibraryItemType.BOOKMARKS),
13741386
isLastVisibleItem);
13751387
}
13761388

@@ -1391,10 +1403,10 @@ public void onClearHistory(@NonNull View view) {
13911403
public void onShowContextMenu(@NonNull View view, @NonNull VisitInfo item, boolean isLastVisibleItem) {
13921404
showLibraryItemContextMenu(
13931405
view,
1394-
new LibraryItemContextMenu.LibraryContextMenuItem(
1406+
new LibraryMenuWidget.LibraryContextMenuItem(
13951407
item.getUrl(),
13961408
item.getTitle(),
1397-
LibraryItemContextMenu.LibraryItemType.HISTORY),
1409+
LibraryMenuWidget.LibraryItemType.HISTORY),
13981410
isLastVisibleItem);
13991411
}
14001412

0 commit comments

Comments
 (0)