下面列出了javax.swing.JMenu#getMenuComponentCount ( ) 实例代码,或者点击链接到github查看源代码,也可以在右侧发表评论。
private void createBindingsSubmenu(JMenu menu) {
if (menu.getMenuComponentCount() > 0)
menu.removeAll();
Node[] nodes = getActivatedNodes();
if (nodes.length != 1)
return;
RADComponentCookie radCookie = nodes[0].getCookie(RADComponentCookie.class);
if (radCookie == null)
return;
BindingProperty[][] bindingProps = radCookie.getRADComponent().getBindingProperties();
BindingProperty[] props = bindingProps[(bindingProps[0].length==0) ? 1 : 0];
if (props.length > 0) {
for (BindingProperty prop : props) {
BindingMenuItem mi = new BindingMenuItem(prop);
mi.addActionListener(mi);
menu.add(mi);
}
} else {
JMenuItem item = new JMenuItem(NbBundle.getMessage(BindAction.class, "MSG_NoBinding")); // NOI18N
item.setEnabled(false);
menu.add(item);
}
}
/**
* Creates the sub menu.
*
* @param localMenu the local menu
* @param group the group
*/
private void createSubMenu(ComboMenu localMenu, ValueComboBoxDataGroup group) {
JMenu subMenu = new JMenu(group.getGroupName());
for (ValueComboBoxData data : group.getDataList()) {
if (VendorOptionManager.getInstance()
.isAllowed(vendorOptionVersionsList, data.getVendorOption())) {
ComboMenuItem menuItem = new ComboMenuItem(data);
subMenu.add(menuItem);
dataMap.put(data.getKey(), data);
if (firstValue == null) {
firstValue = data;
}
}
}
if (subMenu.getMenuComponentCount() > 1) {
localMenu.add(subMenu);
}
}
/**
* Create the scripts menu(s) from the vector of macros provided
*
* @param menu
* @param vector
* @param start
*/
private static void createScriptsMenu(JMenu menu, Vector vector, int start) {
JPopupMenu jpop = new JPopupMenu();
jpop.add("Delete");
for (int i = start; i < vector.size(); i++) {
Object obj = vector.elementAt(i);
if (obj instanceof ExecuteScriptAction) {
menu.add((ExecuteScriptAction)obj);
}
else
if (obj instanceof Vector) {
Vector subvector = (Vector)obj;
String name = (String)subvector.elementAt(0);
JMenu submenu = new JMenu(name);
createScriptsMenu(submenu,subvector,1);
if(submenu.getMenuComponentCount() == 0) {
submenu.add(LangTool.getString("popup.noScripts"));
}
menu.add(submenu);
}
}
}
/**
* Convenience method that recursively enables every JMenu and JMenuItem inside
* "menu".
*
* @param menu - the menu to start the recursive search
*/
public static void enableAll(JMenu menu) {
for (int i = 0; i < menu.getMenuComponentCount(); i++) {
Component x = menu.getMenuComponent(i);
if (x instanceof JMenuItem)
((JMenuItem) x).setEnabled(true);
else if (x instanceof JMenu)
enableAll((JMenu) x);
}
}
public static void setMenuText(final JMenu menu) {
menu.setText(getString(menu.getText()));
for (int i = 0; i < menu.getMenuComponentCount(); i++) {
if (isParent(JMenuItem.class, menu.getMenuComponent(i).getClass())
&& !isParent(JMenu.class, menu.getMenuComponent(i)
.getClass()))
setMenuItemText((JMenuItem) menu.getMenuComponent(i));
else if (menu.getMenuComponent(i).getClass() == JMenu.class)
setMenuText((JMenu) menu.getMenuComponent(i));
}
}
private static void setMnemonics(final JMenuItem item) {
if (item instanceof JMenu) {
final JMenu menu = (JMenu) item;
final int c = menu.getMenuComponentCount();
final ArrayList<JMenuItem> list = new ArrayList<JMenuItem>(c);
for (int i = 0; i < c; i++) {
final Component co = menu.getMenuComponent(i);
if (co instanceof JMenuItem)
list.add((JMenuItem) co);
}
if (list.size() > 0)
setMnemonics(list);
}
}
/**
* Remove any potential orphan separator at the end of the menu.
*
* @param menu the menu to purge
*/
public static void trimSeparator (JMenu menu)
{
int count = menu.getMenuComponentCount();
if ((count > 0) && menu.getMenuComponent(count - 1) instanceof JSeparator) {
menu.remove(count - 1);
}
}
/**
* Take any given memu object and turn on scrollbars if it contains more than 20 items.
* Then, cycle through all submenus recursively.
*
* @param menu
*/
public static void createScrollBarsOnMenus(JMenu menu) {
if (menu.getMenuComponentCount() > 20) {
MenuScroller.setScrollerFor(menu, 20);
}
for (int i = 0; i < menu.getMenuComponentCount(); i++) {
if (menu.getMenuComponent(i) instanceof JMenu) {
MenuScroller.createScrollBarsOnMenus(((JMenu)menu.getMenuComponent(i)));
}
}
}
/**
* Add a separator to a menu if useful.
*
* @param menu Menu.
* @return Number of items added.
*/
public int addSeparator(JMenu menu) {
if ((menu == null) || (menu.getMenuComponentCount() == 0)) {
return 0;
}
Component item = menu.getMenuComponent(menu.getMenuComponentCount() - 1);
if (!(item instanceof JMenuItem)) {
return 0;
}
menu.add(new JSeparator());
return 1;
}
/**
* Add a submenu to a menu.
* If the submenu contains to much elements, it is split into several submenus.
*
* @param menu Menu.
* @param submenu Submenu.
* @param begin Number of items kept at the beginning.
* @param end Number of items kept at the end.
*/
public void addSubmenu(JPopupMenu menu, JMenu submenu, int begin, int end) {
Configuration config = Configuration.getConfiguration();
final int maxElements = Math.max(
config.getInt(null, ConfigurationValueInteger.MENU_SIZE),
begin + end + 2);
if (submenu.getMenuComponentCount() > maxElements) {
List<JMenu> menuList = new ArrayList<JMenu>();
while (submenu.getMenuComponentCount() > begin + end + 1) {
int count = Math.min(maxElements, submenu.getMenuComponentCount() - begin - end);
JMenu newMenu = new JMenu(submenu.getItem(begin).getText() + "...");
for (int i = 0; i < count; i++) {
JMenuItem item = submenu.getItem(begin);
submenu.remove(begin);
if (item != null) {
newMenu.add(item);
} else {
addSeparator(newMenu);
}
}
menuList.add(newMenu);
}
for (int i = 0; i < menuList.size(); i++) {
submenu.add(menuList.get(i), begin + i);
}
addSubmenu(menu, submenu, begin, end);
} else {
menu.add(submenu);
}
}
@Override
public void finishMenu(String path) {
path = mapping(path);
if (path.equals("_") || path.startsWith("_/")) {
return;
}
if (!menuElements.containsKey(path)) {
throw new IllegalArgumentException("Invalid menu: " + path);
}
if (path.startsWith("/file/recent")) {
return;
}
MenuElement me = menuElements.get(path);
if (me instanceof JMenu) {
JMenu jm = (JMenu) me;
if (jm.getMenuComponentCount() == 1) {
String parentPath = path.contains("/") ? path.substring(0, path.lastIndexOf('/')) : "";
MenuElement parMe = menuElements.get(parentPath);
JMenuItem mi = (JMenuItem) jm.getMenuComponent(0);
jm.remove(mi);
if (parMe instanceof JMenu) {
JMenu parMenu = (JMenu) parMe;
parMenu.remove(jm);
parMenu.add(mi);
} else if (parMe instanceof JMenuBar) {
JMenuBar parMenuBar = (JMenuBar) parMe;
parMenuBar.remove(jm);
parMenuBar.add(mi);
}
}
}
}
/**
* Remove any potential orphan separator at the end of the menu.
*
* @param menu the menu to purge
*/
public static void trimSeparator (JMenu menu)
{
int count = menu.getMenuComponentCount();
if ((count > 0)
&& menu.getMenuComponent(count - 1) instanceof JSeparator) {
menu.remove(count - 1);
}
}
/**
* Sets the menu font.
*
* @param m a menu
* @param font the font
*/
private static void setMenuFont(JMenu m, Font font) {
m.setFont(font);
for(int i = 0; i<m.getMenuComponentCount(); i++) {
m.getMenuComponent(i).setFont(font);
if(m.getMenuComponent(i) instanceof JMenu) {
setMenuFont((JMenu) m.getMenuComponent(i), font);
}
}
}