OLD | NEW |
1 // Copyright 2015 The Chromium Authors. All rights reserved. | 1 // Copyright 2015 The Chromium Authors. All rights reserved. |
2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 | 4 |
5 package org.chromium.chrome.browser.compositor.layouts; | 5 package org.chromium.chrome.browser.compositor.layouts; |
6 | 6 |
7 import android.content.Context; | 7 import android.content.Context; |
8 import android.graphics.Bitmap; | 8 import android.graphics.Bitmap; |
| 9 import android.graphics.RectF; |
| 10 import android.view.MotionEvent; |
9 import android.view.ViewGroup; | 11 import android.view.ViewGroup; |
10 | 12 |
11 import org.chromium.chrome.R; | 13 import org.chromium.chrome.R; |
12 import org.chromium.chrome.browser.compositor.layouts.content.TabContentManager; | 14 import org.chromium.chrome.browser.compositor.layouts.content.TabContentManager; |
| 15 import org.chromium.chrome.browser.compositor.layouts.eventfilter.AreaGestureEve
ntFilter; |
| 16 import org.chromium.chrome.browser.compositor.layouts.eventfilter.GestureHandler
; |
13 import org.chromium.chrome.browser.compositor.layouts.eventfilter.ScrollDirectio
n; | 17 import org.chromium.chrome.browser.compositor.layouts.eventfilter.ScrollDirectio
n; |
14 import org.chromium.chrome.browser.compositor.overlays.strip.StripLayoutHelperMa
nager; | 18 import org.chromium.chrome.browser.compositor.overlays.strip.StripLayoutHelperMa
nager; |
15 import org.chromium.chrome.browser.contextualsearch.ContextualSearchManagementDe
legate; | 19 import org.chromium.chrome.browser.contextualsearch.ContextualSearchManagementDe
legate; |
16 import org.chromium.chrome.browser.dom_distiller.ReaderModeManagerDelegate; | 20 import org.chromium.chrome.browser.dom_distiller.ReaderModeManagerDelegate; |
17 import org.chromium.chrome.browser.tab.Tab; | 21 import org.chromium.chrome.browser.tab.Tab; |
18 import org.chromium.chrome.browser.tabmodel.TabCreatorManager; | 22 import org.chromium.chrome.browser.tabmodel.TabCreatorManager; |
19 import org.chromium.chrome.browser.tabmodel.TabModel; | 23 import org.chromium.chrome.browser.tabmodel.TabModel; |
20 import org.chromium.chrome.browser.tabmodel.TabModel.TabLaunchType; | 24 import org.chromium.chrome.browser.tabmodel.TabModel.TabLaunchType; |
21 import org.chromium.chrome.browser.tabmodel.TabModelSelector; | 25 import org.chromium.chrome.browser.tabmodel.TabModelSelector; |
22 import org.chromium.chrome.browser.tabmodel.TabModelSelectorTabObserver; | 26 import org.chromium.chrome.browser.tabmodel.TabModelSelectorTabObserver; |
23 import org.chromium.ui.resources.dynamics.DynamicResourceLoader; | 27 import org.chromium.ui.resources.dynamics.DynamicResourceLoader; |
24 | 28 |
25 import java.util.List; | 29 import java.util.List; |
26 | 30 |
27 /** | 31 /** |
28 * {@link LayoutManagerChromeTablet} is the specialization of {@link LayoutManag
erChrome} for | 32 * {@link LayoutManagerChromeTablet} is the specialization of {@link LayoutManag
erChrome} for |
29 * the tablet. | 33 * the tablet. |
30 */ | 34 */ |
31 public class LayoutManagerChromeTablet extends LayoutManagerChrome { | 35 public class LayoutManagerChromeTablet extends LayoutManagerChrome { |
| 36 // Event Filters |
| 37 private final TabStripEventFilter mTabStripFilter; |
| 38 |
32 // Internal State | 39 // Internal State |
33 private final String mDefaultTitle; | 40 private final String mDefaultTitle; |
34 | 41 |
35 private StripLayoutHelperManager mTabStripLayoutHelperManager; | 42 private StripLayoutHelperManager mTabStripLayoutHelperManager; |
36 private TabModelSelectorTabObserver mTabObserver; | 43 private TabModelSelectorTabObserver mTabObserver; |
37 | 44 |
38 /** | 45 /** |
39 * Creates an instance of a {@link LayoutManagerChromePhone}. | 46 * Creates an instance of a {@link LayoutManagerChromePhone}. |
40 * @param host A {@link LayoutManagerHost} instance. | 47 * @param host A {@link LayoutManagerHost} instance. |
41 */ | 48 */ |
42 public LayoutManagerChromeTablet(LayoutManagerHost host) { | 49 public LayoutManagerChromeTablet(LayoutManagerHost host) { |
43 super(host, false); | 50 super(host, false); |
44 Context context = host.getContext(); | 51 Context context = host.getContext(); |
45 | 52 |
46 mTabStripLayoutHelperManager = | 53 // Build Event Filters |
47 new StripLayoutHelperManager(context, this, mHost.getLayoutRende
rHost()); | 54 mTabStripFilter = |
| 55 new TabStripEventFilter(context, new TabStripEventHandler(), nul
l, false, false); |
| 56 |
| 57 mTabStripLayoutHelperManager = new StripLayoutHelperManager( |
| 58 context, this, mHost.getLayoutRenderHost(), mTabStripFilter); |
48 | 59 |
49 // Set up state | 60 // Set up state |
50 mDefaultTitle = context.getString(R.string.tab_loading_default_title); | 61 mDefaultTitle = context.getString(R.string.tab_loading_default_title); |
51 | 62 |
52 | 63 |
53 setNextLayout(null); | 64 setNextLayout(null); |
54 } | 65 } |
55 | 66 |
56 @Override | 67 @Override |
57 protected void addAllSceneOverlays() { | 68 protected void addAllSceneOverlays() { |
(...skipping 131 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
189 public boolean isSwipeEnabled(ScrollDirection direction) { | 200 public boolean isSwipeEnabled(ScrollDirection direction) { |
190 if ((direction == ScrollDirection.LEFT || direction == ScrollDirecti
on.RIGHT) | 201 if ((direction == ScrollDirection.LEFT || direction == ScrollDirecti
on.RIGHT) |
191 && (getTabModelSelector() == null | 202 && (getTabModelSelector() == null |
192 || getTabModelSelector().getCurrentModel().getCou
nt() <= 1)) { | 203 || getTabModelSelector().getCurrentModel().getCou
nt() <= 1)) { |
193 return false; | 204 return false; |
194 } | 205 } |
195 | 206 |
196 return super.isSwipeEnabled(direction); | 207 return super.isSwipeEnabled(direction); |
197 } | 208 } |
198 } | 209 } |
| 210 |
| 211 private class TabStripEventHandler implements GestureHandler { |
| 212 @Override |
| 213 public void onDown(float x, float y, boolean fromMouse, int buttons) { |
| 214 mTabStripLayoutHelperManager.onDown(time(), x, y, fromMouse, buttons
); |
| 215 } |
| 216 |
| 217 @Override |
| 218 public void onUpOrCancel() { |
| 219 mTabStripLayoutHelperManager.onUpOrCancel(time()); |
| 220 } |
| 221 |
| 222 @Override |
| 223 public void drag(float x, float y, float dx, float dy, float tx, float t
y) { |
| 224 mTabStripLayoutHelperManager.drag(time(), x, y, dx, dy, tx, ty); |
| 225 } |
| 226 |
| 227 @Override |
| 228 public void click(float x, float y, boolean fromMouse, int buttons) { |
| 229 mTabStripLayoutHelperManager.click(time(), x, y, fromMouse, buttons)
; |
| 230 } |
| 231 |
| 232 @Override |
| 233 public void fling(float x, float y, float velocityX, float velocityY) { |
| 234 mTabStripLayoutHelperManager.fling(time(), x, y, velocityX, velocity
Y); |
| 235 } |
| 236 |
| 237 @Override |
| 238 public void onLongPress(float x, float y) { |
| 239 mTabStripLayoutHelperManager.onLongPress(time(), x, y); |
| 240 } |
| 241 |
| 242 @Override |
| 243 public void onPinch(float x0, float y0, float x1, float y1, boolean firs
tEvent) { |
| 244 // Not implemented. |
| 245 } |
| 246 } |
| 247 |
| 248 private class TabStripEventFilter extends AreaGestureEventFilter { |
| 249 public TabStripEventFilter(Context context, GestureHandler handler, Rect
F triggerRect, |
| 250 boolean autoOffset, boolean useDefaultLongPress) { |
| 251 super(context, handler, triggerRect, autoOffset, useDefaultLongPress
); |
| 252 } |
| 253 |
| 254 @Override |
| 255 public boolean onInterceptTouchEventInternal(MotionEvent e, boolean isKe
yboardShowing) { |
| 256 if (getActiveLayout().isTabStripEventFilterEnabled()) { |
| 257 return super.onInterceptTouchEventInternal(e, isKeyboardShowing)
; |
| 258 } |
| 259 |
| 260 return false; |
| 261 } |
| 262 } |
199 } | 263 } |
OLD | NEW |