/** * Sets toolbar mode. This will change the selected toolbar icon. * * @param newMode see EuclidianConstants for mode numbers * @return actual mode number selected (might be different if it's not available) */ public int setMode(int newMode) { boolean success = false; int tmpMode = newMode; // there is no special icon/button for the selection listener mode, use // the // move mode button instead if (tmpMode == EuclidianConstants.MODE_SELECTION_LISTENER) { tmpMode = EuclidianConstants.MODE_MOVE; } if (modeToggleMenus != null) { for (int i = 0; i < modeToggleMenus.size(); i++) { ModeToggleMenu mtm = modeToggleMenus.get(i); if (mtm.selectMode(tmpMode)) { success = true; break; } } if (!success) { mode = setMode(getFirstMode()); } this.mode = tmpMode; } return tmpMode; }
/** @return first mode in this toolbar */ public int getFirstMode() { if (modeToggleMenus == null || modeToggleMenus.size() == 0) { return -1; } ModeToggleMenu mtm = modeToggleMenus.get(0); return mtm.getFirstMode(); }
/** * Adds the given modes to a two-dimensional toolbar. The toolbar definition string looks like "0 * , 1 2 | 3 4 5 || 7 8 9" where the int values are mode numbers, "," adds a separator within a * menu, "|" starts a new menu and "||" adds a separator before starting a new menu. * * @param modes * @param tb * @param bg */ private void addCustomModesToToolbar(ModeToggleButtonGroup bg) { Vector<ToolbarItem> toolbarVec; try { if (dockPanel != null) { toolbarVec = ToolBar.parseToolbarString(dockPanel.getToolbarString()); } else { toolbarVec = ToolBar.parseToolbarString(((GuiManagerD) app.getGuiManager()).getToolbarDefinition()); } } catch (Exception e) { if (dockPanel != null) { App.debug("invalid toolbar string: " + dockPanel.getToolbarString()); } else { App.debug( "invalid toolbar string: " + ((GuiManagerD) app.getGuiManager()).getToolbarDefinition()); } toolbarVec = ToolBar.parseToolbarString(getDefaultToolbarString()); } // set toolbar boolean firstButton = true; // make the loop go backwards for eg Hebrew / Arabic int first = app.isRightToLeftReadingOrder() ? toolbarVec.size() - 1 : 0; int increment = app.isRightToLeftReadingOrder() ? -1 : 1; // for (int i = 0; i < toolbarVec.size(); i++) { for (int i = first; i >= 0 && i < toolbarVec.size(); i += increment) { ToolbarItem ob = toolbarVec.get(i); // separator between menus if (ob.getMode() == ToolBar.SEPARATOR) { addSeparator(); continue; } // new menu Vector<Integer> menu = ob.getMenu(); ModeToggleMenu tm = new ModeToggleMenu(app, this, bg); modeToggleMenus.add(tm); for (int k = 0; k < menu.size(); k++) { // separator int addMode = menu.get(k).intValue(); if (addMode < 0) { // separator within menu: tm.addSeparator(); } else { // standard case: add mode // check mode if (!"".equals(app.getToolName(addMode))) { tm.addMode(addMode); if (i == 0 && firstButton) { tm.getJToggleButton().setSelected(true); firstButton = false; } } } } if (tm.getToolsCount() > 0) add(tm); } }