コード例 #1
0
  /**
   * Creates a new mode (controller), activates the toolbars, title and deactivates all actions.
   *
   * @param mode
   * @return false if the change was not successful.
   */
  public boolean changeToMode(String mode) {
    if (getMode() != null && mode.equals(getMode().toString())) {
      return true;
    }

    // Check if the mode is available and create ModeController.
    Mode newmode = modescreator.getMode(mode);
    if (newmode == null) {
      errorMessage(getResourceString("mode_na") + ": " + mode);
      return false;
    }

    if (getMode() != null && getMode().getModeToolBar() != null) {
      toolbar.remove(getMode().getModeToolBar());
    }
    /* other toolbars are to be removed too. */
    if (getMode() != null && getMode().getLeftToolBar() != null) {
      getFrame().getContentPane().remove(getMode().getLeftToolBar());
    }

    if (getMapModule() != null) {
      getMapModuleManager().setMapModule(null);
    }
    this.mode = newmode;

    if (getMode().getModeToolBar() != null) {
      toolbar.add(getMode().getModeToolBar());
      getMode().getModeToolBar().repaint();
    }
    /* new left toolbar. */
    if (getMode().getLeftToolBar() != null) {
      getFrame().getContentPane().add(getMode().getLeftToolBar(), BorderLayout.WEST);
      getMode().getLeftToolBar().repaint();
    }
    toolbar.validate();
    toolbar.repaint();

    setTitle();
    getMode().activate();

    getFrame().getFreeMindMenuBar().updateMenus();

    if (getMapModule() == null) {
      setAllActions(false);
    }

    Object[] messageArguments = {getMode().toString()};
    MessageFormat formatter = new MessageFormat(getResourceString("mode_status"));
    getFrame().out(formatter.format(messageArguments));

    return true;
  }