javax.swing.JPopupMenu#getSubElements ( )源码实例Demo

下面列出了javax.swing.JPopupMenu#getSubElements ( ) 实例代码,或者点击链接到github查看源代码,也可以在右侧发表评论。

源代码1 项目: rapidminer-studio   文件: DockableMenu.java
/**
 * Ensures that the correct maximum height is set for the popup menu and sets the scroll increment.
 * Will only take effect with the first item added. Makes sure the height is set to {@link #MAX_SHOWN_ITEMS}*itemHeight.
 *
 * @since 8.2
 */
private void ensurePopupHeight() {
	JPopupMenu popupMenu = getPopupMenu();
	if (popupMenu.getSubElements().length != 1 || !(popupMenu instanceof ScrollableJPopupMenu)) {
		return;
	}
	ScrollableJPopupMenu scrollablePopup = (ScrollableJPopupMenu) popupMenu;
	int itemHeight = scrollablePopup.getComponentsInsideScrollpane()[0].getPreferredSize().height;
	int maxHeight = MAX_SHOWN_ITEMS * itemHeight;
	maxHeight = Math.min(maxHeight, ScrollableJPopupMenu.SIZE_HUGE);
	scrollablePopup.setMaxHeight(maxHeight);
	JScrollPane scrollPane = scrollablePopup.getScrollPane();
	JScrollBar verticalScrollBar = scrollPane.getVerticalScrollBar();
	verticalScrollBar.setUnitIncrement(itemHeight);
	verticalScrollBar.setBlockIncrement(maxHeight);
}
 
源代码2 项目: netbeans   文件: OutlineView.java
/**
 * Find relevant actions and call the factory to create a popup.
 */
private JPopupMenu createPopup(Point p) {
    int[] selRows = outline.getSelectedRows();
    ArrayList<Node> al = new ArrayList<Node> (selRows.length);
    for (int i = 0; i < selRows.length; i++) {
        Node n = getNodeFromRow(selRows[i]);
        if (n != null) {
            al.add(n);
        }
    }
    Node[] arr = al.toArray (new Node[al.size ()]);
    if (arr.length == 0) {
        if (manager.getRootContext() != null) {
            // display the context menu of the root node
            JPopupMenu popup = manager.getRootContext().getContextMenu();
            if (popup != null && popup.getSubElements().length > 0) {
                popupFactory.addNoFilterItem(outline, popup);
                return popup;
            }
        }
        // we'll have an empty popup
    }
    p = SwingUtilities.convertPoint(this, p, outline);
    int column = outline.columnAtPoint(p);
    int row = outline.rowAtPoint(p);
    return popupFactory.createPopupMenu(row, column, arr, outline);
}
 
源代码3 项目: netbeans   文件: MenuChecker.java
/** Get PopupMenu and transfer it to ArrayList.
     * @param popup menu to be tranfered
     * @return transfered menu - !separator is ignored
     */
    public static ArrayList<NbMenuItem> getPopupMenuArrayList(JPopupMenu popup) {
        //System.out.print("getPopupMenuArrayList: "); popup.list(); //DEBUG
        MenuElement[] elements = popup.getSubElements();
        ArrayList<NbMenuItem> list = new ArrayList<NbMenuItem>();

        for (MenuElement menuElement : elements) {
            //System.out.print("getPopupMenuArrayList: ");
//            ((JComponent) menuElement).list();
            if (menuElement instanceof JSeparator) {
                //System.out.println("adding separator");//DEBUG
                NbMenuItem separator = new NbMenuItem();
                separator.setSeparator(true);
                list.add(separator);
            } else {
                if (menuElement instanceof JMenu) {
                    NbMenuItem mitem = new NbMenuItem((JMenuItem) menuElement);
                    mitem.setName(mitem.getName());
                    mitem.setSubmenu (getMenuArrayList((JMenu) menuElement));
                    list.add(mitem);
                } else if (menuElement instanceof JMenuItem) //if()
                {
                    if (!((JMenuItem) menuElement).isVisible()) {
                        continue;
                    }
                    NbMenuItem item = new NbMenuItem((JMenuItem) menuElement);
                    item.setName(item.getName());
                    list.add(item);
                } else {
                    System.out.println("getPopup unknown:" + menuElement.toString());
                }
            }
        }
        return list;
    }
 
源代码4 项目: netbeans   文件: MenuChecker.java
/** Get PopupMenu and transfer it to ArrayList.
     * @param popup menu to be tranfered
     * @return transfered menu - !separator is ignored
     */
    public static ArrayList<NbMenuItem> getPopupMenuArrayList(JPopupMenu popup) {
        //System.out.print("getPopupMenuArrayList: "); popup.list(); //DEBUG
        MenuElement[] elements = popup.getSubElements();
        ArrayList<NbMenuItem> list = new ArrayList<NbMenuItem>();

        for (MenuElement menuElement : elements) {
            //System.out.print("getPopupMenuArrayList: ");
//            ((JComponent) menuElement).list();
            if (menuElement instanceof JSeparator) {
                //System.out.println("adding separator");//DEBUG
                NbMenuItem separator = new NbMenuItem();
                separator.setSeparator(true);
                list.add(separator);
            } else {
                if (menuElement instanceof JMenu) {
                    NbMenuItem mitem = new NbMenuItem((JMenuItem) menuElement);
                    mitem.setName(mitem.getName());
                    mitem.setSubmenu (getMenuArrayList((JMenu) menuElement));
                    list.add(mitem);
                } else if (menuElement instanceof JMenuItem) //if()
                {
                    if (!((JMenuItem) menuElement).isVisible()) {
                        continue;
                    }
                    NbMenuItem item = new NbMenuItem((JMenuItem) menuElement);
                    item.setName(item.getName());
                    list.add(item);
                } else {
                    System.out.println("getPopup unknown:" + menuElement.toString());
                }
            }
        }
        return list;
    }
 
源代码5 项目: RobotBuilder   文件: RightClickMouseAdapter.java
private JPopupMenu generatePopupMenu(RobotComponent component) {
    JPopupMenu menu = new JPopupMenu();

    List<JMenu> submenus = new LinkedList<>();
    TreeModel model = Palette.getInstance().getPaletteModel();
    Enumeration children = ((DefaultMutableTreeNode) model.getRoot()).children();
    while (children.hasMoreElements()) {
        DefaultMutableTreeNode child = (DefaultMutableTreeNode) children.nextElement();
        JMenu submenu = generateMenu(new JMenu("Add " + child.getUserObject()), child, component);
        if (submenu.getSubElements().length > 0) {
            submenus.add(submenu);
        }
    }

    if (submenus.size() > 1) {
        submenus.forEach(menu::add);
    } else if (submenus.size() == 1) {
        for (Component element : submenus.get(0).getMenuComponents()) {
            menu.add(element);
        }
    }

    if (isDeletable(component)) {
        if (menu.getSubElements().length > 0) {
            menu.addSeparator();
        }
        menu.add(new DeleteItemAction("Delete", component));
    }

    return menu;
}
 
源代码6 项目: nmonvisualizer   文件: BaseChartPanel.java
@Override
protected JPopupMenu createPopupMenu(boolean properties, boolean copy, boolean save, boolean print, boolean zoom) {
    JPopupMenu popup = super.createPopupMenu(properties, copy, save, print, zoom);
    int n = 0;

    // find the existing 'Copy' menu item and add an option to copy chart data after that
    for (MenuElement element : popup.getSubElements()) {
        JMenuItem item = (JMenuItem) element;

        if (item.getText().equals("Copy")) {
            JMenuItem copyData = new JMenuItem("Copy Chart Data");
            copyData.addActionListener(new ActionListener() {
                @Override
                public void actionPerformed(ActionEvent e) {
                    doCopyDataset();
                }
            });

            // after separator, after copy => + 2
            popup.add(copyData, n + 2);
            popup.add(new JPopupMenu.Separator(), n + 3);
        }

        n++;
    }

    // create Save Chart item
    // note that the default 'Save as' item is no present since false was passed into the
    // BaseChartPanel constructor when creating this class' instance
    JMenuItem savePNG = new JMenuItem("Save Chart...");
    savePNG.setActionCommand("SAVE_AS_PNG");
    savePNG.addActionListener(this);

    popup.add(savePNG);

    return popup;
}
 
源代码7 项目: netbeans   文件: ListView.java
void createPopup(int xpos, int ypos, boolean contextMenu) {
    if (manager == null) {
        return;
    }

    if (!popupAllowed) {
        return;
    }
    
    if (!isShowing()) {
        return;
    }

    JPopupMenu popup;

    if (contextMenu) {
        popup = Utilities.actionsToPopup(manager.getExploredContext().getActions(true), this);
    } else {
        Action[] actions = NodeOp.findActions(manager.getSelectedNodes());
        popup = Utilities.actionsToPopup(actions, this);
    }

    if ((popup != null) && (popup.getSubElements().length > 0)) {
        Point p = getViewport().getViewPosition();
        p.x = xpos - p.x;
        p.y = ypos - p.y;

        SwingUtilities.convertPointToScreen(p, ListView.this);

        Dimension popupSize = popup.getPreferredSize();
        Rectangle screenBounds = Utilities.getUsableScreenBounds(getGraphicsConfiguration());

        if ((p.x + popupSize.width) > (screenBounds.x + screenBounds.width)) {
            p.x = (screenBounds.x + screenBounds.width) - popupSize.width;
        }

        if ((p.y + popupSize.height) > (screenBounds.y + screenBounds.height)) {
            p.y = (screenBounds.y + screenBounds.height) - popupSize.height;
        }

        SwingUtilities.convertPointFromScreen(p, ListView.this);
        popup.show(this, p.x, p.y);
    }
}
 
源代码8 项目: netbeans   文件: TreeView.java
private void createPopup(int xpos, int ypos, JPopupMenu popup) {
    if (popup.getSubElements().length > 0) {
        popup.show(TreeView.this, xpos, ypos);
    }
}
 
源代码9 项目: pentaho-reporting   文件: ContextMenuUtility.java
public static JPopupMenu getMenu( final ReportDesignerContext context, final Object selectedElement ) {
  ReportDesignerView view = context.getView();
  if ( selectedElement == null || selectedElement instanceof MasterReport ) { // This check assumes that we've click on a report band see JIRA
    // PRD-1076
    return view.getPopupMenu( "popup-ReportDefinition" ); // NON-NLS
  }
  final ReportDesignerDocumentContext activeContext = context.getActiveContext();
  ReportRenderContext doc = null;
  if ( activeContext instanceof ReportRenderContext ) {
    doc = (ReportRenderContext) activeContext;
    if ( selectedElement == doc.getReportDefinition() ) {
      if ( selectedElement instanceof CrosstabElement ) {
        return view.getPopupMenu( "popup-CrosstabElement" ); // NON-NLS
      }
      return view.getPopupMenu( "popup-ReportDefinition" ); // NON-NLS
    }
  }
  if ( selectedElement instanceof SubReport ) {
    return view.getPopupMenu( "popup-SubReport" ); // NON-NLS
  }
  if ( selectedElement instanceof CompoundDataFactory ) {
    return createDataSourcePopup( context );
  }
  if ( selectedElement instanceof DataFactory ) {
    return view.getPopupMenu( "popup-DataSource" ); // NON-NLS
  }
  if ( selectedElement instanceof ReportFunctionNode ) {
    return view.getPopupMenu( "popup-Expressions" ); // NON-NLS
  }
  if ( selectedElement instanceof ReportQueryNode ) {
    final ReportQueryNode rqn = (ReportQueryNode) selectedElement;
    JPopupMenu popupMenu;
    if ( rqn.isAllowEdit() ) {
      popupMenu = view.getPopupMenu( "popup-Query" ); // NON-NLS
    } else {
      popupMenu = view.getPopupMenu( "popup-Inherited-Query" ); // NON-NLS
    }
    final MenuElement activationItem = popupMenu.getSubElements()[0];
    toggleActivationItem( doc, rqn, activationItem );
    return popupMenu;
  }
  if ( selectedElement instanceof Expression ) {
    return view.getPopupMenu( "popup-Expression" ); // NON-NLS
  }
  if ( selectedElement instanceof RootLevelBand ) {
    return view.getPopupMenu( "popup-RootLevelBand" ); // NON-NLS
  }
  if ( selectedElement instanceof RelationalGroup ) {
    return view.getPopupMenu( "popup-RelationalGroup" ); // NON-NLS
  }
  if ( selectedElement instanceof CrosstabGroup ) {
    return view.getPopupMenu( "popup-CrosstabGroup" ); // NON-NLS
  }
  if ( selectedElement instanceof CrosstabOtherGroup ) {
    return view.getPopupMenu( "popup-CrosstabOtherGroup" ); // NON-NLS
  }
  if ( selectedElement instanceof CrosstabRowGroup ) {
    return view.getPopupMenu( "popup-CrosstabRowGroup" ); // NON-NLS
  }
  if ( selectedElement instanceof CrosstabColumnGroup ) {
    return view.getPopupMenu( "popup-CrosstabColumnGroup" ); // NON-NLS
  }
  if ( selectedElement instanceof CrosstabCellBody ) {
    return view.getPopupMenu( "popup-CrosstabCellBody" ); // NON-NLS
  }
  if ( selectedElement instanceof Group ) {
    return view.getPopupMenu( "popup-Group" ); // NON-NLS
  }
  if ( selectedElement instanceof Band ) {
    return view.getPopupMenu( "popup-Band" ); // NON-NLS
  }
  if ( selectedElement instanceof Element ) {
    final Element element = (Element) selectedElement;
    final JPopupMenu popup = view.getPopupMenu( "popup-" + element.getElementTypeName() ); // NON-NLS
    if ( popup != null ) {
      return popup;
    }
    return view.getPopupMenu( "popup-Element" ); // NON-NLS
  }
  if ( selectedElement instanceof ReportParameterDefinition ) {
    return view.getPopupMenu( "popup-Parameters" ); // NON-NLS
  }
  if ( selectedElement instanceof ParameterDefinitionEntry ) {
    return view.getPopupMenu( "popup-Parameter" ); // NON-NLS
  }
  if ( selectedElement instanceof ReportParametersNode ) {
    return view.getPopupMenu( "popup-Parameters" ); // NON-NLS
  }
  if ( selectedElement instanceof SubReportParametersNode ) {
    return view.getPopupMenu( "popup-SubReportParameters" ); // NON-NLS
  }
  return null;
}