package zenproject.meditation.android.ui.menu; import com.oguzdev.circularfloatingactionmenu.library.CircularMenu; import zenproject.meditation.android.sketch.ZenSketch; import zenproject.meditation.android.ui.menu.buttons.FloatingActionButton; import zenproject.meditation.android.ui.menu.buttons.MenuButton; import zenproject.meditation.android.ui.sketch.ZenSketchView; public class ZenMenu implements CircularMenu.MenuStateChangeListener, ZenSketch.PaintListener { private final ZenSketchView zenSketchView; private boolean isPainting; protected ZenMenu(ZenSketchView zenSketchView) { this.zenSketchView = zenSketchView; } public static ZenMenu newInstance(ZenSketchView zenSketchView) { return new ZenMenu(zenSketchView); } public void toggle() { getCircularMenu().toggle(true); getMenuButton().rotate(); } private FloatingActionButton getMenuButton() { return getButtonViewFor(MenuButton.MENU); } private CircularMenu getCircularMenu() { return zenSketchView.getCircularMenu(); } public FloatingActionButton getButtonViewFor(MenuButton menuButton) { switch (menuButton) { case MENU: return (FloatingActionButton) getCircularMenu().getActionView(); default: return (FloatingActionButton) getCircularMenu().findSubActionViewWithId(menuButton.getId()); } } private void hide() { if (getCircularMenu().isOpen()) { getCircularMenu().toggle(true); getMenuButton().rotate(); } else { getMenuButton().hide(); } } private void show() { getMenuButton().show(); } @Override public void onMenuOpened(CircularMenu circularMenu) { if (isPainting) { hide(); } } @Override public void onMenuClosed(CircularMenu circularMenu) { if (isPainting) { getMenuButton().hide(); } } @Override public void onPaintingStart() { isPainting = true; zenSketchView.post(new Runnable() { @Override public void run() { hide(); } }); } @Override public void onPaintingEnd() { isPainting = false; zenSketchView.post(new Runnable() { @Override public void run() { show(); } }); } }