/**
  * Creates the attributes menu and its submenus. Clients override this method to add additional
  * menu items.
  */
 protected JMenu createAttributesMenu() {
   JMenu menu = new JMenu("Attributes");
   menu.add(createColorMenu("Fill Color", "FillColor"));
   menu.add(createColorMenu("Pen Color", "FrameColor"));
   menu.add(createArrowMenu());
   menu.addSeparator();
   menu.add(createFontMenu());
   menu.add(createFontSizeMenu());
   menu.add(createFontStyleMenu());
   menu.add(createColorMenu("Text Color", "TextColor"));
   return menu;
 }
  /**
   * Fired by a view when the figure seleciton changes. Since Commands and Tools are Actions and
   * they are registered to hear these events, they will handle themselves. So selection sensitive
   * menuitems will update their own states.
   *
   * @see DrawingEditor
   */
  public void figureSelectionChanged(DrawingView view) {
    JMenuBar mb = getJMenuBar();
    CommandMenu editMenu = (CommandMenu) mb.getMenu(EDIT_MENU);
    // make sure it does exist
    if (editMenu != null) {
      editMenu.checkEnabled();
    }
    CommandMenu alignmentMenu = (CommandMenu) mb.getMenu(ALIGNMENT_MENU);
    // make sure it does exist
    if (alignmentMenu != null) {
      alignmentMenu.checkEnabled();
    }

    JMenu attributeMenu = mb.getMenu(ATTRIBUTES_MENU);
    // make sure it does exist
    if (attributeMenu != null) {
      for (int i = 0; i < attributeMenu.getItemCount(); i++) {
        JMenuItem currentMenu = attributeMenu.getItem(i);
        if (currentMenu instanceof CommandMenu) {
          ((CommandMenu) currentMenu).checkEnabled();
        }
      }
    }
  }