package org.geogebra.web.web.gui.toolbar.mow; import java.util.Vector; import org.geogebra.common.euclidian.EuclidianConstants; import org.geogebra.common.gui.toolbar.ToolBar; import org.geogebra.web.html5.main.AppW; import org.geogebra.web.web.gui.util.StandardButton; import com.google.gwt.user.client.ui.FlowPanel; import com.google.gwt.user.client.ui.Widget; /** * Tools submenu for MOWToolbar. * * @author Laszlo Gal * */ public class ToolsSubMenu extends SubMenuPanel { private static class GroupPanel extends FlowPanel { private static final int BUTTON_WIDTH = 40; public GroupPanel() { addStyleName("groupPanel"); } public void setColumns(int columns) { setWidth(((columns + 1) * BUTTON_WIDTH) + "px"); } } private FlowPanel panelRow; /** * * @param app * ggb app. */ public ToolsSubMenu(AppW app) { super(app, true); addStyleName("toolsSubMenu"); } @Override protected void createContentPanel() { super.createContentPanel(); panelRow = new FlowPanel(); panelRow.addStyleName("panelRow"); addModesToToolbar(panelRow, ToolBar.getMOWToolsDefString()); contentPanel.add(panelRow); } /** * add modes to a group so they get grouped in the toolbox */ @Override protected void addModeMenu(FlowPanel panel, Vector<Integer> menu) { int col = 0; GroupPanel group = new GroupPanel(); for (Integer mode : menu) { if (app.isModeValid(mode)) { StandardButton btn = createButton(mode); group.add(btn); col++; } } group.setColumns(col / 2 + col % 2); panel.add(group); } @Override public void deselectAllCSS() { for (int i = 0; i < panelRow.getWidgetCount(); i++) { FlowPanel w = (FlowPanel) panelRow.getWidget(i); for (int j = 0; j < w.getWidgetCount(); j++) { w.getWidget(j).getElement().setAttribute("selected", "false"); } } } @Override public void setCSStoSelected(Widget source) { deselectAllCSS(); super.setCSStoSelected(source); } @Override protected void createInfoPanel() { super.createInfoPanel(); } @Override public void onOpen() { int mode = app.getMode(); setMode(mode); } @Override public int getFirstMode() { return EuclidianConstants.MODE_SHAPE_RECTANGLE; } }