/**
   * 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;
  }
  public CKSyntaxPaneTest() {
    JFrame f = new JFrame("Party"); // CKSytaxPaneTest.class.getName());
    final Container c = f.getContentPane();
    c.setLayout(new BorderLayout());

    // DefaultSyntaxKit.initKit();

    final JEditorPane codeEditor = new JEditorPane();
    JScrollPane scrPane = new JScrollPane(codeEditor);
    // codeEditor.setContentType("text/python");
    codeEditor.setEditorKit(new PythonSyntaxKit());
    // codeEditor.setText("public static void main(String[] args) {\n}");

    // toolbar is part of the editor kit--ausome!
    JToolBar jToolBar1 = new javax.swing.JToolBar();
    jToolBar1.setRollover(true);
    jToolBar1.setFocusable(false);

    EditorKit kit = codeEditor.getEditorKit();
    if (kit instanceof DefaultSyntaxKit) {
      DefaultSyntaxKit defaultSyntaxKit = (DefaultSyntaxKit) kit;
      defaultSyntaxKit.addToolBarActions(codeEditor, jToolBar1);
    }
    jToolBar1.validate();
    c.add(jToolBar1, BorderLayout.PAGE_START);

    c.add(scrPane, BorderLayout.CENTER);
    // c.add(codeEditor, BorderLayout.CENTER);

    // create console for output?
    JTextPane tpane = new JTextPane();
    c.add(tpane, BorderLayout.LINE_START);
    c.doLayout();

    f.setSize(800, 600);
    f.setVisible(true);
    f.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
  }
  /**
   * Create a toolbar containing the given tools (if any).
   *
   * @param template Conta
   */
  protected void changeToolBar(JComponent[] template, IControlCenterPlugin selplugin) {
    // Setup the tool bar.
    if (toolbar == null) {
      toolbar = new JToolBar("Main Toolbar");
      getContentPane().add(BorderLayout.NORTH, toolbar);
      // Add standard entries (after gap).
      toolbar.add(Box.createGlue());
      toolcnt++;
      toolbar.addSeparator();
      toolcnt++;

      // ButtonGroup bg = new ButtonGroup();
      IControlCenterPlugin[] plugins = controlcenter.getPlugins();
      for (int i = 0; i < plugins.length; i++) {
        final IControlCenterPlugin plugin = plugins[i];
        // final JToggleButton button = new JToggleButton(new PluginAction(plugins[i]));
        final JButton button = new JButton(new PluginAction(plugins[i]));
        Icon ic = plugin.getToolIcon(selplugin.getName().equals(plugins[i].getName()));
        if (ic != null) button.setIcon(ic);
        else button.setText(plugins[i].getName());
        button.setText("A");
        button.putClientProperty("plugin", plugins[i]);
        button.setBorder(null);
        button.setText(null);
        button.setMinimumSize(BUTTON_DIM);
        button.setHorizontalAlignment(SwingConstants.CENTER);
        button.setVerticalAlignment(SwingConstants.CENTER);
        button.setToolTipText(plugins[i].getName());
        button
            .getModel()
            .addItemListener(
                new ItemListener() {
                  public void itemStateChanged(ItemEvent e) {
                    // System.out.println(plugin.getName()+" :"+button.isSelected());
                    button.setIcon(plugin.getToolIcon(button.isSelected()));
                  }
                });
        //	            if(plugins[i].getHelpID()!=null)
        //	            	SHelp.setupHelp(button, plugins[i].getHelpID());

        // bg.add(button);
        toolbar.add(button);
        toolcnt++;
      }
      toolbar.addSeparator();
      toolcnt++;
      toolbar.add(new JadexLogoButton(toolbar));
      toolcnt++;
    } else {
      while (toolbar.getComponentCount() > toolcnt) {
        //				Component	comp	= toolbar.getComponent(0);
        toolbar.remove(0);
        // if(lasttoolbar!=null)
        //	lasttoolbar.add(comp);
      }
    }

    for (int i = 0; template != null && i < template.length; i++) toolbar.add(template[i], i);
    // lasttoolbar	= template;

    // Select plugins
    for (int i = 0; i < toolbar.getComponentCount(); i++) {
      JComponent comp = (JComponent) toolbar.getComponent(i);
      if (comp.getClientProperty("plugin") != null) {
        IControlCenterPlugin pl = (IControlCenterPlugin) comp.getClientProperty("plugin");
        ((JButton) comp).setIcon(pl.getToolIcon(pl.equals(selplugin)));
        // ((JToggleButton)comp).setSelected(pluginname.equals(comp.getClientProperty("pluginname")));
      }
    }

    toolbar.validate();
    toolbar.repaint();

    // If toolbar has been dropped out -> pack the window (hack???).
    Container root = toolbar;
    while (root.getParent() != null && !(root instanceof Window)) root = root.getParent();
    if (root != null && !(root instanceof JFrame)) {
      ((Window) root).pack();
    }
  }