Пример #1
0
  // {{{ update() method
  public void update(JMenu menu) {
    Vector macroVector = Macros.getMacroHierarchy();

    int count = menu.getMenuComponentCount();

    createMacrosMenu(menu, macroVector, 0);

    if (count == menu.getMenuComponentCount()) {
      JMenuItem mi = new JMenuItem(jEdit.getProperty("no-macros.label"));
      mi.setEnabled(false);
      menu.add(mi);
    }
  } // }}}
Пример #2
0
  // {{{ createMacrosMenu() method
  private void createMacrosMenu(JMenu menu, Vector vector, int start) {
    Vector<JMenuItem> menuItems = new Vector<JMenuItem>();
    int maxItems = jEdit.getIntegerProperty("menu.spillover", 20);
    JMenu subMenu = null;
    for (int i = start; i < vector.size(); i++) {
      if (i != start && i % maxItems == 0) {
        subMenu = new JMenu(jEdit.getProperty("common.more"));
        createMacrosMenu(subMenu, vector, i);
        break;
      }
      Object obj = vector.elementAt(i);
      if (obj instanceof String) {
        menuItems.add(
            new EnhancedMenuItem(
                jEdit.getProperty(obj + ".label"), (String) obj, jEdit.getActionContext()));
      } else if (obj instanceof Vector) {
        Vector subvector = (Vector) obj;
        String name = (String) subvector.elementAt(0);
        JMenu submenu = new JMenu(jEdit.getProperty("macros.folder." + name + ".label", name));
        createMacrosMenu(submenu, subvector, 1);
        if (submenu.getMenuComponentCount() != 0) menuItems.add(submenu);
      }
    }

    Collections.sort(menuItems, new MenuItemTextComparator());

    if (subMenu != null) menuItems.add(subMenu);

    for (int i = 0; i < menuItems.size(); i++) {
      menu.add(menuItems.get(i));
    }
  } // }}}
  // {{{ update() method
  public void update(JMenu menu) {
    final View view = GUIUtilities.getView(menu);

    // {{{ ActionListener...
    ActionListener actionListener =
        new ActionListener() {
          public void actionPerformed(ActionEvent evt) {
            VFSBrowser.browseDirectory(view, evt.getActionCommand());

            view.getStatus().setMessage(null);
          }
        }; // }}}

    // {{{ MouseListener...
    MouseListener mouseListener =
        new MouseAdapter() {
          public void mouseEntered(MouseEvent evt) {
            view.getStatus().setMessage(((JMenuItem) evt.getSource()).getActionCommand());
          }

          public void mouseExited(MouseEvent evt) {
            view.getStatus().setMessage(null);
          }
        }; // }}}

    HistoryModel model = HistoryModel.getModel("vfs.browser.path");
    if (model.getSize() == 0) {
      JMenuItem menuItem = new JMenuItem(jEdit.getProperty("no-recent-dirs.label"));
      menuItem.setEnabled(false);
      menu.add(menuItem);
      return;
    }

    boolean sort = jEdit.getBooleanProperty("sortRecent");

    int maxItems = jEdit.getIntegerProperty("menu.spillover", 20);

    Vector menuItems = new Vector();

    for (int i = 0; i < model.getSize(); i++) {
      String path = model.getItem(i);
      JMenuItem menuItem = new JMenuItem(MiscUtilities.getFileName(path));
      menuItem.setActionCommand(path);
      menuItem.addActionListener(actionListener);
      menuItem.addMouseListener(mouseListener);
      menuItem.setIcon(FileCellRenderer.dirIcon);

      if (sort) menuItems.addElement(menuItem);
      else {
        if (menu.getMenuComponentCount() >= maxItems && i != model.getSize() - 1) {
          JMenu newMenu = new JMenu(jEdit.getProperty("common.more"));
          menu.add(newMenu);
          menu = newMenu;
        }

        menu.add(menuItem);
      }
    }

    if (sort) {
      Collections.sort(menuItems, new MiscUtilities.MenuItemCompare());
      for (int i = 0; i < menuItems.size(); i++) {
        if (menu.getMenuComponentCount() >= maxItems && i != 0) {
          JMenu newMenu = new JMenu(jEdit.getProperty("common.more"));
          menu.add(newMenu);
          menu = newMenu;
        }

        menu.add((JMenuItem) menuItems.elementAt(i));
      }
    }
  } // }}}