Browse Source

Open SideMenu on burger button click

Guy Carmeli 8 years ago
parent
commit
72dd351d1f
17 changed files with 87 additions and 55 deletions
  1. 4
    1
      android/app/src/main/java/com/reactnativenavigation/controllers/Modal.java
  2. 7
    2
      android/app/src/main/java/com/reactnativenavigation/controllers/ModalController.java
  3. 6
    1
      android/app/src/main/java/com/reactnativenavigation/layouts/BottomTabsLayout.java
  4. 2
    2
      android/app/src/main/java/com/reactnativenavigation/layouts/ScreenStackContainer.java
  5. 14
    7
      android/app/src/main/java/com/reactnativenavigation/layouts/SingleScreenLayout.java
  6. 3
    3
      android/app/src/main/java/com/reactnativenavigation/screens/FragmentScreen.java
  7. 6
    6
      android/app/src/main/java/com/reactnativenavigation/screens/Screen.java
  8. 5
    5
      android/app/src/main/java/com/reactnativenavigation/screens/ScreenFactory.java
  9. 7
    7
      android/app/src/main/java/com/reactnativenavigation/screens/ScreenStack.java
  10. 2
    2
      android/app/src/main/java/com/reactnativenavigation/screens/SingleScreen.java
  11. 2
    2
      android/app/src/main/java/com/reactnativenavigation/screens/ViewPagerScreen.java
  12. 10
    4
      android/app/src/main/java/com/reactnativenavigation/views/LeftButton.java
  13. 7
    0
      android/app/src/main/java/com/reactnativenavigation/views/LeftButtonOnClickListener.java
  14. 4
    0
      android/app/src/main/java/com/reactnativenavigation/views/SideMenu.java
  15. 4
    4
      android/app/src/main/java/com/reactnativenavigation/views/TitleBar.java
  16. 0
    5
      android/app/src/main/java/com/reactnativenavigation/views/TitleBarBackButtonListener.java
  17. 4
    4
      android/app/src/main/java/com/reactnativenavigation/views/TopBar.java

+ 4
- 1
android/app/src/main/java/com/reactnativenavigation/controllers/Modal.java View File

39
     }
39
     }
40
 
40
 
41
     @Override
41
     @Override
42
-    public boolean onTitleBarBackPress() {
42
+    public boolean onTitleBarBackButtonClick() {
43
         if (!layout.onBackPressed()) {
43
         if (!layout.onBackPressed()) {
44
             onBackPressed();
44
             onBackPressed();
45
         }
45
         }
46
         return true;
46
         return true;
47
     }
47
     }
48
 
48
 
49
+    public void onSideMenuButtonClick() {
50
+    }
51
+
49
     public interface OnModalDismissedListener {
52
     public interface OnModalDismissedListener {
50
         void onModalDismissed(Modal modal);
53
         void onModalDismissed(Modal modal);
51
     }
54
     }

+ 7
- 2
android/app/src/main/java/com/reactnativenavigation/controllers/ModalController.java View File

98
     }
98
     }
99
 
99
 
100
     @Override
100
     @Override
101
-    public boolean onTitleBarBackPress() {
102
-        // Do nothing and let the layout handle the back press
101
+    public boolean onTitleBarBackButtonClick() {
102
+        // Do nothing and let the layout handle the back button click
103
         return false;
103
         return false;
104
     }
104
     }
105
+
106
+    @Override
107
+    public void onSideMenuButtonClick() {
108
+        // Do nothing and let the layout handle the click
109
+    }
105
 }
110
 }

+ 6
- 1
android/app/src/main/java/com/reactnativenavigation/layouts/BottomTabsLayout.java View File

199
     }
199
     }
200
 
200
 
201
     @Override
201
     @Override
202
-    public boolean onTitleBarBackPress() {
202
+    public boolean onTitleBarBackButtonClick() {
203
         if (getCurrentScreenStack().canPop()) {
203
         if (getCurrentScreenStack().canPop()) {
204
             getCurrentScreenStack().pop(true, new ScreenStack.OnScreenPop() {
204
             getCurrentScreenStack().pop(true, new ScreenStack.OnScreenPop() {
205
                 @Override
205
                 @Override
212
 
212
 
213
         return false;
213
         return false;
214
     }
214
     }
215
+
216
+    @Override
217
+    public void onSideMenuButtonClick() {
218
+
219
+    }
215
 }
220
 }

+ 2
- 2
android/app/src/main/java/com/reactnativenavigation/layouts/ScreenStackContainer.java View File

1
 package com.reactnativenavigation.layouts;
1
 package com.reactnativenavigation.layouts;
2
 
2
 
3
 import com.reactnativenavigation.params.ScreenParams;
3
 import com.reactnativenavigation.params.ScreenParams;
4
-import com.reactnativenavigation.views.TitleBarBackButtonListener;
4
+import com.reactnativenavigation.views.LeftButtonOnClickListener;
5
 
5
 
6
-public interface ScreenStackContainer extends TitleBarBackButtonListener {
6
+public interface ScreenStackContainer extends LeftButtonOnClickListener {
7
     void push(ScreenParams screenParams);
7
     void push(ScreenParams screenParams);
8
 
8
 
9
     void pop(ScreenParams screenParams);
9
     void pop(ScreenParams screenParams);

+ 14
- 7
android/app/src/main/java/com/reactnativenavigation/layouts/SingleScreenLayout.java View File

10
 import com.reactnativenavigation.params.TitleBarButtonParams;
10
 import com.reactnativenavigation.params.TitleBarButtonParams;
11
 import com.reactnativenavigation.params.TitleBarLeftButtonParams;
11
 import com.reactnativenavigation.params.TitleBarLeftButtonParams;
12
 import com.reactnativenavigation.screens.ScreenStack;
12
 import com.reactnativenavigation.screens.ScreenStack;
13
+import com.reactnativenavigation.views.LeftButtonOnClickListener;
13
 import com.reactnativenavigation.views.SideMenu;
14
 import com.reactnativenavigation.views.SideMenu;
14
-import com.reactnativenavigation.views.TitleBarBackButtonListener;
15
 
15
 
16
 import java.util.List;
16
 import java.util.List;
17
 
17
 
23
     private final ScreenParams screenParams;
23
     private final ScreenParams screenParams;
24
     private final SideMenuParams sideMenuParams;
24
     private final SideMenuParams sideMenuParams;
25
     private ScreenStack stack;
25
     private ScreenStack stack;
26
-    private TitleBarBackButtonListener titleBarBackButtonListener;
26
+    private LeftButtonOnClickListener leftButtonOnClickListener;
27
     private @Nullable SideMenu sideMenu;
27
     private @Nullable SideMenu sideMenu;
28
 
28
 
29
     public SingleScreenLayout(AppCompatActivity activity, ScreenParams screenParams,
29
     public SingleScreenLayout(AppCompatActivity activity, ScreenParams screenParams,
30
-                              TitleBarBackButtonListener titleBarBackButtonListener) {
30
+                              LeftButtonOnClickListener leftButtonOnClickListener) {
31
         this(activity, null, screenParams);
31
         this(activity, null, screenParams);
32
-        this.titleBarBackButtonListener = titleBarBackButtonListener;
32
+        this.leftButtonOnClickListener = leftButtonOnClickListener;
33
     }
33
     }
34
 
34
 
35
     public SingleScreenLayout(AppCompatActivity activity, @Nullable SideMenuParams sideMenuParams, ScreenParams screenParams) {
35
     public SingleScreenLayout(AppCompatActivity activity, @Nullable SideMenuParams sideMenuParams, ScreenParams screenParams) {
133
     }
133
     }
134
 
134
 
135
     @Override
135
     @Override
136
-    public boolean onTitleBarBackPress() {
137
-        if (titleBarBackButtonListener != null) {
138
-            return titleBarBackButtonListener.onTitleBarBackPress();
136
+    public boolean onTitleBarBackButtonClick() {
137
+        if (leftButtonOnClickListener != null) {
138
+            return leftButtonOnClickListener.onTitleBarBackButtonClick();
139
         }
139
         }
140
 
140
 
141
         return onBackPressed();
141
         return onBackPressed();
142
     }
142
     }
143
+
144
+    @Override
145
+    public void onSideMenuButtonClick() {
146
+        if (sideMenu != null) {
147
+            sideMenu.openDrawer();
148
+        }
149
+    }
143
 }
150
 }

+ 3
- 3
android/app/src/main/java/com/reactnativenavigation/screens/FragmentScreen.java View File

11
 import com.reactnativenavigation.R;
11
 import com.reactnativenavigation.R;
12
 import com.reactnativenavigation.params.ScreenParams;
12
 import com.reactnativenavigation.params.ScreenParams;
13
 import com.reactnativenavigation.views.ContentView;
13
 import com.reactnativenavigation.views.ContentView;
14
-import com.reactnativenavigation.views.TitleBarBackButtonListener;
14
+import com.reactnativenavigation.views.LeftButtonOnClickListener;
15
 
15
 
16
 import java.lang.reflect.InvocationTargetException;
16
 import java.lang.reflect.InvocationTargetException;
17
 import java.lang.reflect.Method;
17
 import java.lang.reflect.Method;
25
     private static final String CONTRACT_GET_SUPPORT_FRAGMENT = "getSupportFragment";
25
     private static final String CONTRACT_GET_SUPPORT_FRAGMENT = "getSupportFragment";
26
     private FrameLayout content;
26
     private FrameLayout content;
27
 
27
 
28
-    public FragmentScreen(AppCompatActivity activity, ScreenParams screenParams, TitleBarBackButtonListener titleBarBackButtonListener) {
29
-        super(activity, screenParams, titleBarBackButtonListener);
28
+    public FragmentScreen(AppCompatActivity activity, ScreenParams screenParams, LeftButtonOnClickListener leftButtonOnClickListener) {
29
+        super(activity, screenParams, leftButtonOnClickListener);
30
     }
30
     }
31
 
31
 
32
     @Override
32
     @Override

+ 6
- 6
android/app/src/main/java/com/reactnativenavigation/screens/Screen.java View File

14
 import com.reactnativenavigation.params.TitleBarButtonParams;
14
 import com.reactnativenavigation.params.TitleBarButtonParams;
15
 import com.reactnativenavigation.params.TitleBarLeftButtonParams;
15
 import com.reactnativenavigation.params.TitleBarLeftButtonParams;
16
 import com.reactnativenavigation.utils.ViewUtils;
16
 import com.reactnativenavigation.utils.ViewUtils;
17
-import com.reactnativenavigation.views.TitleBarBackButtonListener;
17
+import com.reactnativenavigation.views.LeftButtonOnClickListener;
18
 import com.reactnativenavigation.views.TopBar;
18
 import com.reactnativenavigation.views.TopBar;
19
 
19
 
20
 import java.util.List;
20
 import java.util.List;
27
     protected final AppCompatActivity activity;
27
     protected final AppCompatActivity activity;
28
     protected final ScreenParams screenParams;
28
     protected final ScreenParams screenParams;
29
     protected TopBar topBar;
29
     protected TopBar topBar;
30
-    private final TitleBarBackButtonListener titleBarBackButtonListener;
30
+    private final LeftButtonOnClickListener leftButtonOnClickListener;
31
     private VisibilityAnimator topBarVisibilityAnimator;
31
     private VisibilityAnimator topBarVisibilityAnimator;
32
     private ScreenAnimator screenAnimator;
32
     private ScreenAnimator screenAnimator;
33
 
33
 
34
-    public Screen(AppCompatActivity activity, ScreenParams screenParams, TitleBarBackButtonListener titleBarBackButtonListener) {
34
+    public Screen(AppCompatActivity activity, ScreenParams screenParams, LeftButtonOnClickListener leftButtonOnClickListener) {
35
         super(activity);
35
         super(activity);
36
         this.activity = activity;
36
         this.activity = activity;
37
         this.screenParams = screenParams;
37
         this.screenParams = screenParams;
38
-        this.titleBarBackButtonListener = titleBarBackButtonListener;
38
+        this.leftButtonOnClickListener = leftButtonOnClickListener;
39
 
39
 
40
         screenAnimator = new ScreenAnimator(this);
40
         screenAnimator = new ScreenAnimator(this);
41
         createViews();
41
         createViews();
61
             screenParams.leftButton.setColorFromScreenStyle(screenParams.styleParams.titleBarButtonColor);
61
             screenParams.leftButton.setColorFromScreenStyle(screenParams.styleParams.titleBarButtonColor);
62
         }
62
         }
63
         topBar.addTitleBarAndSetButtons(screenParams.rightButtons, screenParams.leftButton,
63
         topBar.addTitleBarAndSetButtons(screenParams.rightButtons, screenParams.leftButton,
64
-                titleBarBackButtonListener, screenParams.navigatorEventId);
64
+                leftButtonOnClickListener, screenParams.navigatorEventId);
65
     }
65
     }
66
 
66
 
67
     private void createTopBar() {
67
     private void createTopBar() {
138
         topBar.setTitleBarRightButtons(navigatorEventId, titleBarButtons);
138
         topBar.setTitleBarRightButtons(navigatorEventId, titleBarButtons);
139
     }
139
     }
140
 
140
 
141
-    public void setTitleBarLeftButton(String navigatorEventId, TitleBarBackButtonListener backButtonListener,
141
+    public void setTitleBarLeftButton(String navigatorEventId, LeftButtonOnClickListener backButtonListener,
142
                                       TitleBarLeftButtonParams titleBarLeftButtonParams) {
142
                                       TitleBarLeftButtonParams titleBarLeftButtonParams) {
143
         topBar.setTitleBarRightButton(navigatorEventId, backButtonListener, titleBarLeftButtonParams);
143
         topBar.setTitleBarRightButton(navigatorEventId, backButtonListener, titleBarLeftButtonParams);
144
     }
144
     }

+ 5
- 5
android/app/src/main/java/com/reactnativenavigation/screens/ScreenFactory.java View File

3
 import android.support.v7.app.AppCompatActivity;
3
 import android.support.v7.app.AppCompatActivity;
4
 
4
 
5
 import com.reactnativenavigation.params.ScreenParams;
5
 import com.reactnativenavigation.params.ScreenParams;
6
-import com.reactnativenavigation.views.TitleBarBackButtonListener;
6
+import com.reactnativenavigation.views.LeftButtonOnClickListener;
7
 
7
 
8
 public class ScreenFactory {
8
 public class ScreenFactory {
9
     public static Screen create(AppCompatActivity activity,
9
     public static Screen create(AppCompatActivity activity,
10
                                 ScreenParams screenParams,
10
                                 ScreenParams screenParams,
11
-                                TitleBarBackButtonListener titleBarBackButtonListener) {
11
+                                LeftButtonOnClickListener leftButtonOnClickListener) {
12
         if (screenParams.isFragmentScreen()) {
12
         if (screenParams.isFragmentScreen()) {
13
-            return new FragmentScreen(activity, screenParams, titleBarBackButtonListener);
13
+            return new FragmentScreen(activity, screenParams, leftButtonOnClickListener);
14
         } else if (screenParams.hasTopTabs()) {
14
         } else if (screenParams.hasTopTabs()) {
15
-            return new ViewPagerScreen(activity, screenParams, titleBarBackButtonListener);
15
+            return new ViewPagerScreen(activity, screenParams, leftButtonOnClickListener);
16
         } else {
16
         } else {
17
-            return new SingleScreen(activity, screenParams, titleBarBackButtonListener);
17
+            return new SingleScreen(activity, screenParams, leftButtonOnClickListener);
18
         }
18
         }
19
     }
19
     }
20
 }
20
 }

+ 7
- 7
android/app/src/main/java/com/reactnativenavigation/screens/ScreenStack.java View File

11
 import com.reactnativenavigation.params.TitleBarLeftButtonParams;
11
 import com.reactnativenavigation.params.TitleBarLeftButtonParams;
12
 import com.reactnativenavigation.utils.KeyboardVisibilityDetector;
12
 import com.reactnativenavigation.utils.KeyboardVisibilityDetector;
13
 import com.reactnativenavigation.utils.Task;
13
 import com.reactnativenavigation.utils.Task;
14
-import com.reactnativenavigation.views.TitleBarBackButtonListener;
14
+import com.reactnativenavigation.views.LeftButtonOnClickListener;
15
 
15
 
16
 import java.util.List;
16
 import java.util.List;
17
 import java.util.Stack;
17
 import java.util.Stack;
24
 
24
 
25
     private final AppCompatActivity activity;
25
     private final AppCompatActivity activity;
26
     private RelativeLayout parent;
26
     private RelativeLayout parent;
27
-    private TitleBarBackButtonListener titleBarBackButtonListener;
27
+    private LeftButtonOnClickListener leftButtonOnClickListener;
28
     private Stack<Screen> stack = new Stack<>();
28
     private Stack<Screen> stack = new Stack<>();
29
     private final KeyboardVisibilityDetector keyboardVisibilityDetector;
29
     private final KeyboardVisibilityDetector keyboardVisibilityDetector;
30
 
30
 
31
     public ScreenStack(AppCompatActivity activity,
31
     public ScreenStack(AppCompatActivity activity,
32
                        RelativeLayout parent,
32
                        RelativeLayout parent,
33
-                       TitleBarBackButtonListener titleBarBackButtonListener) {
33
+                       LeftButtonOnClickListener leftButtonOnClickListener) {
34
         this.activity = activity;
34
         this.activity = activity;
35
         this.parent = parent;
35
         this.parent = parent;
36
-        this.titleBarBackButtonListener = titleBarBackButtonListener;
36
+        this.leftButtonOnClickListener = leftButtonOnClickListener;
37
         keyboardVisibilityDetector = new KeyboardVisibilityDetector(parent);
37
         keyboardVisibilityDetector = new KeyboardVisibilityDetector(parent);
38
     }
38
     }
39
 
39
 
40
     public void pushInitialScreen(ScreenParams initialScreenParams, RelativeLayout.LayoutParams params) {
40
     public void pushInitialScreen(ScreenParams initialScreenParams, RelativeLayout.LayoutParams params) {
41
-        Screen initialScreen = ScreenFactory.create(activity, initialScreenParams, titleBarBackButtonListener);
41
+        Screen initialScreen = ScreenFactory.create(activity, initialScreenParams, leftButtonOnClickListener);
42
         initialScreen.setVisibility(View.INVISIBLE);
42
         initialScreen.setVisibility(View.INVISIBLE);
43
         addScreen(initialScreen, params);
43
         addScreen(initialScreen, params);
44
     }
44
     }
45
 
45
 
46
     public void push(final ScreenParams params, RelativeLayout.LayoutParams layoutParams) {
46
     public void push(final ScreenParams params, RelativeLayout.LayoutParams layoutParams) {
47
-        Screen nextScreen = ScreenFactory.create(activity, params, titleBarBackButtonListener);
47
+        Screen nextScreen = ScreenFactory.create(activity, params, leftButtonOnClickListener);
48
         final Screen previousScreen = stack.peek();
48
         final Screen previousScreen = stack.peek();
49
         addScreen(nextScreen, layoutParams);
49
         addScreen(nextScreen, layoutParams);
50
         nextScreen.show(params.animateScreenTransitions, new Runnable() {
50
         nextScreen.show(params.animateScreenTransitions, new Runnable() {
166
         performOnScreen(screenInstanceId, new Task<Screen>() {
166
         performOnScreen(screenInstanceId, new Task<Screen>() {
167
             @Override
167
             @Override
168
             public void run(Screen param) {
168
             public void run(Screen param) {
169
-                param.setTitleBarLeftButton(navigatorEventId, titleBarBackButtonListener, titleBarLeftButtonParams);
169
+                param.setTitleBarLeftButton(navigatorEventId, leftButtonOnClickListener, titleBarLeftButtonParams);
170
             }
170
             }
171
         });
171
         });
172
     }
172
     }

+ 2
- 2
android/app/src/main/java/com/reactnativenavigation/screens/SingleScreen.java View File

4
 
4
 
5
 import com.reactnativenavigation.params.ScreenParams;
5
 import com.reactnativenavigation.params.ScreenParams;
6
 import com.reactnativenavigation.views.ContentView;
6
 import com.reactnativenavigation.views.ContentView;
7
-import com.reactnativenavigation.views.TitleBarBackButtonListener;
7
+import com.reactnativenavigation.views.LeftButtonOnClickListener;
8
 
8
 
9
 import static android.view.ViewGroup.LayoutParams.MATCH_PARENT;
9
 import static android.view.ViewGroup.LayoutParams.MATCH_PARENT;
10
 
10
 
13
     private ContentView contentView;
13
     private ContentView contentView;
14
 
14
 
15
     public SingleScreen(AppCompatActivity activity, ScreenParams screenParams,
15
     public SingleScreen(AppCompatActivity activity, ScreenParams screenParams,
16
-                        TitleBarBackButtonListener titleBarBarBackButtonListener) {
16
+                        LeftButtonOnClickListener titleBarBarBackButtonListener) {
17
         super(activity, screenParams, titleBarBarBackButtonListener);
17
         super(activity, screenParams, titleBarBarBackButtonListener);
18
     }
18
     }
19
 
19
 

+ 2
- 2
android/app/src/main/java/com/reactnativenavigation/screens/ViewPagerScreen.java View File

7
 import com.reactnativenavigation.params.ScreenParams;
7
 import com.reactnativenavigation.params.ScreenParams;
8
 import com.reactnativenavigation.params.TopTabParams;
8
 import com.reactnativenavigation.params.TopTabParams;
9
 import com.reactnativenavigation.views.ContentView;
9
 import com.reactnativenavigation.views.ContentView;
10
-import com.reactnativenavigation.views.TitleBarBackButtonListener;
10
+import com.reactnativenavigation.views.LeftButtonOnClickListener;
11
 
11
 
12
 import java.util.ArrayList;
12
 import java.util.ArrayList;
13
 import java.util.List;
13
 import java.util.List;
20
     private List<ContentView> contentViews;
20
     private List<ContentView> contentViews;
21
     private ViewPager viewPager;
21
     private ViewPager viewPager;
22
 
22
 
23
-    public ViewPagerScreen(AppCompatActivity activity, ScreenParams screenParams, TitleBarBackButtonListener backButtonListener) {
23
+    public ViewPagerScreen(AppCompatActivity activity, ScreenParams screenParams, LeftButtonOnClickListener backButtonListener) {
24
         super(activity, screenParams, backButtonListener);
24
         super(activity, screenParams, backButtonListener);
25
     }
25
     }
26
 
26
 

+ 10
- 4
android/app/src/main/java/com/reactnativenavigation/views/LeftButton.java View File

19
     }
19
     }
20
 
20
 
21
     private TitleBarLeftButtonParams params;
21
     private TitleBarLeftButtonParams params;
22
-    private final TitleBarBackButtonListener titleBarBackButtonListener;
22
+    private final LeftButtonOnClickListener onClickListener;
23
     private final String navigatorEventId;
23
     private final String navigatorEventId;
24
 
24
 
25
     public LeftButton(Context context,
25
     public LeftButton(Context context,
26
                       TitleBarLeftButtonParams params,
26
                       TitleBarLeftButtonParams params,
27
-                      TitleBarBackButtonListener titleBarBackButtonListener,
27
+                      LeftButtonOnClickListener onClickListener,
28
                       String navigatorEventId) {
28
                       String navigatorEventId) {
29
         super(context, getColor(params), Stroke.THIN);
29
         super(context, getColor(params), Stroke.THIN);
30
         this.params = params;
30
         this.params = params;
31
-        this.titleBarBackButtonListener = titleBarBackButtonListener;
31
+        this.onClickListener = onClickListener;
32
         this.navigatorEventId = navigatorEventId;
32
         this.navigatorEventId = navigatorEventId;
33
         setInitialState();
33
         setInitialState();
34
     }
34
     }
44
     @Override
44
     @Override
45
     public void onClick(View v) {
45
     public void onClick(View v) {
46
         if (isBackButton()) {
46
         if (isBackButton()) {
47
-            titleBarBackButtonListener.onTitleBarBackPress();
47
+            onClickListener.onTitleBarBackButtonClick();
48
+        } else if (isSideMenuButton()) {
49
+            onClickListener.onSideMenuButtonClick();
48
         } else {
50
         } else {
49
             sendClickEvent();
51
             sendClickEvent();
50
         }
52
         }
62
         return getIconState() == IconState.ARROW;
64
         return getIconState() == IconState.ARROW;
63
     }
65
     }
64
 
66
 
67
+    private boolean isSideMenuButton() {
68
+        return getIconState() == IconState.BURGER;
69
+    }
70
+
65
     private void sendClickEvent() {
71
     private void sendClickEvent() {
66
         NavigationApplication.instance.sendNavigatorEvent(params.eventId, navigatorEventId);
72
         NavigationApplication.instance.sendNavigatorEvent(params.eventId, navigatorEventId);
67
     }
73
     }

+ 7
- 0
android/app/src/main/java/com/reactnativenavigation/views/LeftButtonOnClickListener.java View File

1
+package com.reactnativenavigation.views;
2
+
3
+public interface LeftButtonOnClickListener {
4
+    boolean onTitleBarBackButtonClick();
5
+
6
+    void onSideMenuButtonClick();
7
+}

+ 4
- 0
android/app/src/main/java/com/reactnativenavigation/views/SideMenu.java View File

23
         removeView(sideMenuView);
23
         removeView(sideMenuView);
24
     }
24
     }
25
 
25
 
26
+    public void openDrawer() {
27
+        openDrawer(Gravity.LEFT);
28
+    }
29
+
26
     public SideMenu(Context context, SideMenuParams sideMenuParams) {
30
     public SideMenu(Context context, SideMenuParams sideMenuParams) {
27
         super(context);
31
         super(context);
28
         createContentContainer();
32
         createContentContainer();

+ 4
- 4
android/app/src/main/java/com/reactnativenavigation/views/TitleBar.java View File

46
     }
46
     }
47
 
47
 
48
     public void setLeftButton(TitleBarLeftButtonParams leftButtonParams,
48
     public void setLeftButton(TitleBarLeftButtonParams leftButtonParams,
49
-                               TitleBarBackButtonListener titleBarBackButtonListener, String navigatorEventId) {
49
+                              LeftButtonOnClickListener leftButtonOnClickListener, String navigatorEventId) {
50
         if (shouldSetLeftButton(leftButtonParams)) {
50
         if (shouldSetLeftButton(leftButtonParams)) {
51
-            createAndSetLeftButton(leftButtonParams, titleBarBackButtonListener, navigatorEventId);
51
+            createAndSetLeftButton(leftButtonParams, leftButtonOnClickListener, navigatorEventId);
52
         } else if (hasLeftButton()) {
52
         } else if (hasLeftButton()) {
53
             updateLeftButton(leftButtonParams);
53
             updateLeftButton(leftButtonParams);
54
         }
54
         }
101
         return leftButton == null && leftButtonParams != null;
101
         return leftButton == null && leftButtonParams != null;
102
     }
102
     }
103
 
103
 
104
-    private void createAndSetLeftButton(TitleBarLeftButtonParams leftButtonParams, TitleBarBackButtonListener titleBarBackButtonListener, String navigatorEventId) {
105
-        leftButton = new LeftButton(getContext(), leftButtonParams, titleBarBackButtonListener, navigatorEventId);
104
+    private void createAndSetLeftButton(TitleBarLeftButtonParams leftButtonParams, LeftButtonOnClickListener leftButtonOnClickListener, String navigatorEventId) {
105
+        leftButton = new LeftButton(getContext(), leftButtonParams, leftButtonOnClickListener, navigatorEventId);
106
         setNavigationOnClickListener(leftButton);
106
         setNavigationOnClickListener(leftButton);
107
         setNavigationIcon(leftButton);
107
         setNavigationIcon(leftButton);
108
     }
108
     }

+ 0
- 5
android/app/src/main/java/com/reactnativenavigation/views/TitleBarBackButtonListener.java View File

1
-package com.reactnativenavigation.views;
2
-
3
-public interface TitleBarBackButtonListener {
4
-    boolean onTitleBarBackPress();
5
-}

+ 4
- 4
android/app/src/main/java/com/reactnativenavigation/views/TopBar.java View File

24
 
24
 
25
     public void addTitleBarAndSetButtons(List<TitleBarButtonParams> rightButtons,
25
     public void addTitleBarAndSetButtons(List<TitleBarButtonParams> rightButtons,
26
                                          TitleBarLeftButtonParams leftButton,
26
                                          TitleBarLeftButtonParams leftButton,
27
-                                         TitleBarBackButtonListener titleBarBackButtonListener,
27
+                                         LeftButtonOnClickListener leftButtonOnClickListener,
28
                                          String navigatorEventId) {
28
                                          String navigatorEventId) {
29
         titleBar = new TitleBar(getContext());
29
         titleBar = new TitleBar(getContext());
30
         addView(titleBar);
30
         addView(titleBar);
31
         titleBar.setRightButtons(rightButtons, navigatorEventId);
31
         titleBar.setRightButtons(rightButtons, navigatorEventId);
32
-        titleBar.setLeftButton(leftButton, titleBarBackButtonListener, navigatorEventId);
32
+        titleBar.setLeftButton(leftButton, leftButtonOnClickListener, navigatorEventId);
33
     }
33
     }
34
 
34
 
35
     public void setTitle(String title) {
35
     public void setTitle(String title) {
56
     }
56
     }
57
 
57
 
58
     public void setTitleBarRightButton(String navigatorEventId,
58
     public void setTitleBarRightButton(String navigatorEventId,
59
-                                       TitleBarBackButtonListener titleBarBackButtonListener,
59
+                                       LeftButtonOnClickListener leftButtonOnClickListener,
60
                                        TitleBarLeftButtonParams titleBarLeftButtonParams) {
60
                                        TitleBarLeftButtonParams titleBarLeftButtonParams) {
61
-        titleBar.setLeftButton(titleBarLeftButtonParams, titleBarBackButtonListener, navigatorEventId);
61
+        titleBar.setLeftButton(titleBarLeftButtonParams, leftButtonOnClickListener, navigatorEventId);
62
     }
62
     }
63
 
63
 
64
     private void setTopTabsStyle(StyleParams style) {
64
     private void setTopTabsStyle(StyleParams style) {