Search in sources :

Example 1 with JMenu

use of javax.swing.JMenu in project GCViewer by chewiebug.

the class GCViewerGuiInternalFrameController method internalFrameClosing.

@Override
public void internalFrameClosing(InternalFrameEvent e) {
    JInternalFrame internalFrame = e.getInternalFrame();
    internalFrame.removeInternalFrameListener(this);
    internalFrame.getRootPane().remove(internalFrame);
    if (internalFrame.getRootPane().getComponentCount() == 0) {
        getActionMap(e).get(ActionCommands.ARRANGE.toString()).setEnabled(false);
    }
    // remove menuitem from menu and from button group
    JMenu windowMenu = getMenuBar(e).getWindowMenu();
    for (int i = 2; i < windowMenu.getItemCount(); i++) {
        JMenuItem item = windowMenu.getItem(i);
        if (((WindowMenuItemAction) item.getAction()).getInternalFrame() == internalFrame) {
            getMenuBar(e).removeFromWindowMenuGroup(item);
            break;
        }
    }
    // -> otherwise any settings done by the user are lost
    if (getGCViewerGui(e).getDesktopPane().getComponentCount() == 1) {
        updateMenuItemState(e);
        // set same menustate, when the last is closed as is set for deactivated
        internalFrameDeactivated(e);
    }
    // if some thread is still loading, it should stop now
    getSelectedGCDocument(e).getGCResources().stream().forEach(gcResource -> gcResource.setIsReadCancelled(true));
}
Also used : JMenuItem(javax.swing.JMenuItem) JInternalFrame(javax.swing.JInternalFrame) JMenu(javax.swing.JMenu)

Example 2 with JMenu

use of javax.swing.JMenu in project processing by processing.

the class Toolkit method setMenuMnemonics.

/**
   * Removes all mnemonics, then sets a mnemonic for each menu and menu item
   * recursively by these rules:
   * <ol>
   * <li> It tries to assign one of <a href="http://techbase.kde.org/Projects/Usability/HIG/Keyboard_Accelerators">
   * KDE's defaults</a>.</li>
   * <li> Failing that, it loops through the first letter of each word, where a word
   *  is a block of Unicode "alphabetical" chars, looking for an upper-case ASCII mnemonic
   *  that is not taken. This is to try to be relevant, by using a letter well-associated
   *  with the command. (MS guidelines) </li>
   * <li> Ditto, but with lowercase. </li>
   * <li> Next, it tries the second ASCII character, if its width &gt;= half the width of
   *  'A'. </li>
   * <li> If the first letters are all taken/non-ASCII, then it loops through the
   *  ASCII letters in the item, widest to narrowest, seeing if any of them is not taken.
   *  To improve readability, it discriminates against decenders (qypgj), imagining they
   *  have 2/3 their actual width. (MS guidelines: avoid decenders). It also discriminates
   *  against vowels, imagining they have 2/3 their actual width. (MS and Gnome guidelines:
   *  avoid vowels.) </li>
   * <li>Failing that, it will loop left-to-right for an available digit. This is a last
   *  resort because the normal setMnemonic dislikes them.</li>
   * <li> If that doesn't work, it doesn't assign a mnemonic. </li>
   * </ol>
   *
   * As a special case, strings starting "sketchbook → " have that bit ignored
   * because otherwise the Recent menu looks awful. However, the name <tt>"sketchbook →
   * Sketch"</tt>, for example, will have the 'S' of "Sketch" chosen, but the 's' of 'sketchbook
   * will get underlined.
   * No letter by an underscore will be assigned.
   * Disabled on Mac, per Apple guidelines.
   * <tt>menu</tt> may contain nulls.
   *
   * Author: George Bateman. Initial work Myer Nore.
   * @param menu
   *          A menu, a list of menus or an array of menu items to set mnemonics for.
   */
public static void setMenuMnemonics(JMenuItem... menu) {
    if (Platform.isMacOS())
        return;
    if (menu.length == 0)
        return;
    // The English is http://techbase.kde.org/Projects/Usability/HIG/Keyboard_Accelerators,
    // made lowercase.
    // Nothing but [a-z] except for '&' before mnemonics and regexes for changable text.
    final String[] kdePreDefStrs = { "&file", "&new", "&open", "open&recent", "&save", "save&as", "saveacop&y", "saveas&template", "savea&ll", "reloa&d", "&print", "printpre&view", "&import", "e&xport", "&closefile", "clos&eallfiles", "&quit", "&edit", "&undo", "re&do", "cu&t", "&copy", "&paste", "&delete", "select&all", "dese&lect", "&find", "find&next", "findpre&vious", "&replace", "&gotoline", "&view", "&newview", "close&allviews", "&splitview", "&removeview", "splitter&orientation", "&horizontal", "&vertical", "view&mode", "&fullscreenmode", "&zoom", "zoom&in", "zoom&out", "zoomtopage&width", "zoomwhole&page", "zoom&factor", "&insert", "&format", "&go", "&up", "&back", "&forward", "&home", "&go", "&previouspage", "&nextpage", "&firstpage", "&lastpage", "read&updocument", "read&downdocument", "&back", "&forward", "&gotopage", "&bookmarks", "&addbookmark", "bookmark&tabsasfolder", "&editbookmarks", "&newbookmarksfolder", "&tools", "&settings", "&toolbars", "configure&shortcuts", "configuretool&bars", "&configure.*", "&help", ".+&handbook", "&whatsthis", "report&bug", "&aboutprocessing", "about&kde", // de
    "&beenden", // de
    "&suchen", // Preferências; pt
    "&preferncias", // Preferências; pt
    "&sair", // fr
    "&rechercher" };
    Pattern[] kdePreDefPats = new Pattern[kdePreDefStrs.length];
    for (int i = 0; i < kdePreDefStrs.length; i++) {
        kdePreDefPats[i] = Pattern.compile(kdePreDefStrs[i].replace("&", ""));
    }
    final Pattern nonAAlpha = Pattern.compile("[^A-Za-z]");
    FontMetrics fmTmp = null;
    for (JMenuItem m : menu) {
        if (m != null) {
            fmTmp = m.getFontMetrics(m.getFont());
            break;
        }
    }
    // All null menuitems; would fail.
    if (fmTmp == null)
        return;
    // Hack for accessing variable in comparator.
    final FontMetrics fm = fmTmp;
    final Comparator<Character> charComparator = new Comparator<Character>() {

        char[] baddies = "qypgjaeiouQAEIOU".toCharArray();

        public int compare(Character ch1, Character ch2) {
            // Discriminates against descenders for readability, per MS
            // Human Interface Guide, and vowels per MS and Gnome.
            float w1 = fm.charWidth(ch1), w2 = fm.charWidth(ch2);
            for (char bad : baddies) {
                if (bad == ch1)
                    w1 *= 0.66f;
                if (bad == ch2)
                    w2 *= 0.66f;
            }
            return (int) Math.signum(w2 - w1);
        }
    };
    // Holds only [0-9a-z], not uppercase.
    // Prevents X != x, so "Save" and "Save As" aren't both given 'a'.
    final List<Character> taken = new ArrayList<Character>(menu.length);
    char firstChar;
    char[] cleanChars;
    Character[] cleanCharas;
    // METHOD 1: attempt to assign KDE defaults.
    for (JMenuItem jmi : menu) {
        if (jmi == null)
            continue;
        if (jmi.getText() == null)
            continue;
        // Reset all mnemonics.
        jmi.setMnemonic(0);
        String asciiName = nonAAlpha.matcher(jmi.getText()).replaceAll("");
        String lAsciiName = asciiName.toLowerCase();
        for (int i = 0; i < kdePreDefStrs.length; i++) {
            if (kdePreDefPats[i].matcher(lAsciiName).matches()) {
                char mnem = asciiName.charAt(kdePreDefStrs[i].indexOf("&"));
                jmi.setMnemonic(mnem);
                jmi.setDisplayedMnemonicIndex(jmi.getText().indexOf(mnem));
                // to lowercase
                taken.add((char) (mnem | 32));
                break;
            }
        }
    }
    // Where KDE defaults fail, use an algorithm.
    algorithmicAssignment: for (JMenuItem jmi : menu) {
        if (jmi == null)
            continue;
        if (jmi.getText() == null)
            continue;
        // Already assigned.
        if (jmi.getMnemonic() != 0)
            continue;
        // The string can't be made lower-case as that would spoil
        // the width comparison.
        String cleanString = jmi.getText();
        if (cleanString.startsWith("sketchbook → "))
            cleanString = cleanString.substring(13);
        if (cleanString.length() == 0)
            continue;
        // First, ban letters by underscores.
        final List<Character> banned = new ArrayList<Character>();
        for (int i = 0; i < cleanString.length(); i++) {
            if (cleanString.charAt(i) == '_') {
                if (i > 0)
                    banned.add(Character.toLowerCase(cleanString.charAt(i - 1)));
                if (i + 1 < cleanString.length())
                    banned.add(Character.toLowerCase(cleanString.charAt(i + 1)));
            }
        }
        // because there could be non-ASCII letters in a word.
        for (String wd : cleanString.split("[^\\p{IsAlphabetic}]")) {
            if (wd.length() == 0)
                continue;
            firstChar = wd.charAt(0);
            if (taken.contains(Character.toLowerCase(firstChar)))
                continue;
            if (banned.contains(Character.toLowerCase(firstChar)))
                continue;
            if ('A' <= firstChar && firstChar <= 'Z') {
                jmi.setMnemonic(firstChar);
                jmi.setDisplayedMnemonicIndex(jmi.getText().indexOf(firstChar));
                // tolowercase
                taken.add((char) (firstChar | 32));
                continue algorithmicAssignment;
            }
        }
        // METHOD 3: Lowercase starts of words.
        for (String wd : cleanString.split("[^\\p{IsAlphabetic}]")) {
            if (wd.length() == 0)
                continue;
            firstChar = wd.charAt(0);
            if (taken.contains(Character.toLowerCase(firstChar)))
                continue;
            if (banned.contains(Character.toLowerCase(firstChar)))
                continue;
            if ('a' <= firstChar && firstChar <= 'z') {
                jmi.setMnemonic(firstChar);
                jmi.setDisplayedMnemonicIndex(jmi.getText().indexOf(firstChar));
                // is lowercase
                taken.add(firstChar);
                continue algorithmicAssignment;
            }
        }
        // METHOD 4: Second wide-enough ASCII letter.
        cleanString = nonAAlpha.matcher(jmi.getText()).replaceAll("");
        if (cleanString.length() >= 2) {
            char ascii2nd = cleanString.charAt(1);
            if (!taken.contains((char) (ascii2nd | 32)) && !banned.contains((char) (ascii2nd | 32)) && fm.charWidth('A') <= 2 * fm.charWidth(ascii2nd)) {
                jmi.setMnemonic(ascii2nd);
                jmi.setDisplayedMnemonicIndex(jmi.getText().indexOf(ascii2nd));
                taken.add((char) (ascii2nd | 32));
                continue algorithmicAssignment;
            }
        }
        // METHOD 5: charComparator over all ASCII letters.
        cleanChars = cleanString.toCharArray();
        cleanCharas = new Character[cleanChars.length];
        for (int i = 0; i < cleanChars.length; i++) {
            cleanCharas[i] = new Character(cleanChars[i]);
        }
        // sorts in increasing order
        Arrays.sort(cleanCharas, charComparator);
        for (char mnem : cleanCharas) {
            if (taken.contains(Character.toLowerCase(mnem)))
                continue;
            if (banned.contains(Character.toLowerCase(mnem)))
                continue;
            // NB: setMnemonic(char) doesn't want [^A-Za-z]
            jmi.setMnemonic(mnem);
            jmi.setDisplayedMnemonicIndex(jmi.getText().indexOf(mnem));
            taken.add(Character.toLowerCase(mnem));
            continue algorithmicAssignment;
        }
        // METHOD 6: Digits as last resort.
        for (char digit : jmi.getText().replaceAll("[^0-9]", "").toCharArray()) {
            if (taken.contains(digit))
                continue;
            if (banned.contains(digit))
                continue;
            jmi.setMnemonic(KeyEvent.VK_0 + digit - '0');
            // setDisplayedMnemonicIndex() unneeded: no case issues.
            taken.add(digit);
            continue algorithmicAssignment;
        }
    }
    // Finally, RECURSION.
    for (JMenuItem jmi : menu) {
        if (jmi instanceof JMenu)
            setMenuMnemsInside((JMenu) jmi);
    }
}
Also used : Pattern(java.util.regex.Pattern) ArrayList(java.util.ArrayList) Comparator(java.util.Comparator) FontMetrics(java.awt.FontMetrics) StringList(processing.data.StringList) List(java.util.List) ArrayList(java.util.ArrayList) JMenuItem(javax.swing.JMenuItem) JMenu(javax.swing.JMenu)

Example 3 with JMenu

use of javax.swing.JMenu in project jadx by skylot.

the class MainWindow method initMenuAndToolbar.

private void initMenuAndToolbar() {
    Action openAction = new AbstractAction(NLS.str("file.open"), ICON_OPEN) {

        @Override
        public void actionPerformed(ActionEvent e) {
            openFile();
        }
    };
    openAction.putValue(Action.SHORT_DESCRIPTION, NLS.str("file.open"));
    openAction.putValue(Action.ACCELERATOR_KEY, getKeyStroke(KeyEvent.VK_O, KeyEvent.CTRL_DOWN_MASK));
    Action saveAllAction = new AbstractAction(NLS.str("file.save_all"), ICON_SAVE_ALL) {

        @Override
        public void actionPerformed(ActionEvent e) {
            saveAll(false);
        }
    };
    saveAllAction.putValue(Action.SHORT_DESCRIPTION, NLS.str("file.save_all"));
    saveAllAction.putValue(Action.ACCELERATOR_KEY, getKeyStroke(KeyEvent.VK_S, KeyEvent.CTRL_DOWN_MASK));
    Action exportAction = new AbstractAction(NLS.str("file.export_gradle"), ICON_EXPORT) {

        @Override
        public void actionPerformed(ActionEvent e) {
            saveAll(true);
        }
    };
    exportAction.putValue(Action.SHORT_DESCRIPTION, NLS.str("file.export_gradle"));
    exportAction.putValue(Action.ACCELERATOR_KEY, getKeyStroke(KeyEvent.VK_E, KeyEvent.CTRL_DOWN_MASK));
    JMenu recentFiles = new JMenu(NLS.str("menu.recent_files"));
    recentFiles.addMenuListener(new RecentFilesMenuListener(recentFiles));
    Action prefsAction = new AbstractAction(NLS.str("menu.preferences"), ICON_PREF) {

        @Override
        public void actionPerformed(ActionEvent e) {
            new JadxSettingsWindow(MainWindow.this, settings).setVisible(true);
        }
    };
    prefsAction.putValue(Action.SHORT_DESCRIPTION, NLS.str("menu.preferences"));
    prefsAction.putValue(Action.ACCELERATOR_KEY, getKeyStroke(KeyEvent.VK_P, KeyEvent.CTRL_DOWN_MASK | KeyEvent.SHIFT_DOWN_MASK));
    Action exitAction = new AbstractAction(NLS.str("file.exit"), ICON_CLOSE) {

        @Override
        public void actionPerformed(ActionEvent e) {
            dispose();
        }
    };
    isFlattenPackage = settings.isFlattenPackage();
    flatPkgMenuItem = new JCheckBoxMenuItem(NLS.str("menu.flatten"), ICON_FLAT_PKG);
    flatPkgMenuItem.setState(isFlattenPackage);
    Action syncAction = new AbstractAction(NLS.str("menu.sync"), ICON_SYNC) {

        @Override
        public void actionPerformed(ActionEvent e) {
            syncWithEditor();
        }
    };
    syncAction.putValue(Action.SHORT_DESCRIPTION, NLS.str("menu.sync"));
    syncAction.putValue(Action.ACCELERATOR_KEY, getKeyStroke(KeyEvent.VK_T, KeyEvent.CTRL_DOWN_MASK));
    Action textSearchAction = new AbstractAction(NLS.str("menu.text_search"), ICON_SEARCH) {

        @Override
        public void actionPerformed(ActionEvent e) {
            new SearchDialog(MainWindow.this, EnumSet.of(SearchOptions.CODE)).setVisible(true);
        }
    };
    textSearchAction.putValue(Action.SHORT_DESCRIPTION, NLS.str("menu.text_search"));
    textSearchAction.putValue(Action.ACCELERATOR_KEY, getKeyStroke(KeyEvent.VK_F, KeyEvent.CTRL_DOWN_MASK | KeyEvent.SHIFT_DOWN_MASK));
    Action clsSearchAction = new AbstractAction(NLS.str("menu.class_search"), ICON_FIND) {

        @Override
        public void actionPerformed(ActionEvent e) {
            new SearchDialog(MainWindow.this, EnumSet.of(SearchOptions.CLASS)).setVisible(true);
        }
    };
    clsSearchAction.putValue(Action.SHORT_DESCRIPTION, NLS.str("menu.class_search"));
    clsSearchAction.putValue(Action.ACCELERATOR_KEY, getKeyStroke(KeyEvent.VK_N, KeyEvent.CTRL_DOWN_MASK));
    Action deobfAction = new AbstractAction(NLS.str("preferences.deobfuscation"), ICON_DEOBF) {

        @Override
        public void actionPerformed(ActionEvent e) {
            toggleDeobfuscation();
        }
    };
    deobfAction.putValue(Action.SHORT_DESCRIPTION, NLS.str("preferences.deobfuscation"));
    deobfAction.putValue(Action.ACCELERATOR_KEY, getKeyStroke(KeyEvent.VK_D, KeyEvent.CTRL_DOWN_MASK | KeyEvent.ALT_DOWN_MASK));
    deobfToggleBtn = new JToggleButton(deobfAction);
    deobfToggleBtn.setSelected(settings.isDeobfuscationOn());
    deobfToggleBtn.setText("");
    deobfMenuItem = new JCheckBoxMenuItem(deobfAction);
    deobfMenuItem.setState(settings.isDeobfuscationOn());
    Action logAction = new AbstractAction(NLS.str("menu.log"), ICON_LOG) {

        @Override
        public void actionPerformed(ActionEvent e) {
            new LogViewer(settings).setVisible(true);
        }
    };
    logAction.putValue(Action.SHORT_DESCRIPTION, NLS.str("menu.log"));
    logAction.putValue(Action.ACCELERATOR_KEY, getKeyStroke(KeyEvent.VK_L, KeyEvent.CTRL_DOWN_MASK | KeyEvent.SHIFT_DOWN_MASK));
    Action aboutAction = new AbstractAction(NLS.str("menu.about")) {

        @Override
        public void actionPerformed(ActionEvent e) {
            new AboutDialog().setVisible(true);
        }
    };
    Action backAction = new AbstractAction(NLS.str("nav.back"), ICON_BACK) {

        @Override
        public void actionPerformed(ActionEvent e) {
            tabbedPane.navBack();
        }
    };
    backAction.putValue(Action.SHORT_DESCRIPTION, NLS.str("nav.back"));
    backAction.putValue(Action.ACCELERATOR_KEY, getKeyStroke(KeyEvent.VK_LEFT, KeyEvent.CTRL_DOWN_MASK | KeyEvent.ALT_DOWN_MASK));
    Action forwardAction = new AbstractAction(NLS.str("nav.forward"), ICON_FORWARD) {

        @Override
        public void actionPerformed(ActionEvent e) {
            tabbedPane.navForward();
        }
    };
    forwardAction.putValue(Action.SHORT_DESCRIPTION, NLS.str("nav.forward"));
    forwardAction.putValue(Action.ACCELERATOR_KEY, getKeyStroke(KeyEvent.VK_RIGHT, KeyEvent.CTRL_DOWN_MASK | KeyEvent.ALT_DOWN_MASK));
    JMenu file = new JMenu(NLS.str("menu.file"));
    file.setMnemonic(KeyEvent.VK_F);
    file.add(openAction);
    file.add(saveAllAction);
    file.add(exportAction);
    file.addSeparator();
    file.add(recentFiles);
    file.addSeparator();
    file.add(prefsAction);
    file.addSeparator();
    file.add(exitAction);
    JMenu view = new JMenu(NLS.str("menu.view"));
    view.setMnemonic(KeyEvent.VK_V);
    view.add(flatPkgMenuItem);
    view.add(syncAction);
    JMenu nav = new JMenu(NLS.str("menu.navigation"));
    nav.setMnemonic(KeyEvent.VK_N);
    nav.add(textSearchAction);
    nav.add(clsSearchAction);
    nav.addSeparator();
    nav.add(backAction);
    nav.add(forwardAction);
    JMenu tools = new JMenu(NLS.str("menu.tools"));
    tools.setMnemonic(KeyEvent.VK_T);
    tools.add(deobfMenuItem);
    tools.add(logAction);
    JMenu help = new JMenu(NLS.str("menu.help"));
    help.setMnemonic(KeyEvent.VK_H);
    help.add(aboutAction);
    JMenuBar menuBar = new JMenuBar();
    menuBar.add(file);
    menuBar.add(view);
    menuBar.add(nav);
    menuBar.add(tools);
    menuBar.add(help);
    setJMenuBar(menuBar);
    flatPkgButton = new JToggleButton(ICON_FLAT_PKG);
    flatPkgButton.setSelected(isFlattenPackage);
    ActionListener flatPkgAction = new ActionListener() {

        @Override
        public void actionPerformed(ActionEvent e) {
            toggleFlattenPackage();
        }
    };
    flatPkgMenuItem.addActionListener(flatPkgAction);
    flatPkgButton.addActionListener(flatPkgAction);
    flatPkgButton.setToolTipText(NLS.str("menu.flatten"));
    updateLink = new Link("", JadxUpdate.JADX_RELEASES_URL);
    updateLink.setVisible(false);
    JToolBar toolbar = new JToolBar();
    toolbar.setFloatable(false);
    toolbar.add(openAction);
    toolbar.add(saveAllAction);
    toolbar.add(exportAction);
    toolbar.addSeparator();
    toolbar.add(syncAction);
    toolbar.add(flatPkgButton);
    toolbar.addSeparator();
    toolbar.add(textSearchAction);
    toolbar.add(clsSearchAction);
    toolbar.addSeparator();
    toolbar.add(backAction);
    toolbar.add(forwardAction);
    toolbar.addSeparator();
    toolbar.add(deobfToggleBtn);
    toolbar.addSeparator();
    toolbar.add(logAction);
    toolbar.addSeparator();
    toolbar.add(prefsAction);
    toolbar.addSeparator();
    toolbar.add(Box.createHorizontalGlue());
    toolbar.add(updateLink);
    mainPanel.add(toolbar, BorderLayout.NORTH);
}
Also used : AbstractAction(javax.swing.AbstractAction) Action(javax.swing.Action) ActionEvent(java.awt.event.ActionEvent) JadxSettingsWindow(jadx.gui.settings.JadxSettingsWindow) JToolBar(javax.swing.JToolBar) JCheckBoxMenuItem(javax.swing.JCheckBoxMenuItem) JToggleButton(javax.swing.JToggleButton) ActionListener(java.awt.event.ActionListener) AbstractAction(javax.swing.AbstractAction) JMenu(javax.swing.JMenu) JMenuBar(javax.swing.JMenuBar) Link(jadx.gui.utils.Link)

Example 4 with JMenu

use of javax.swing.JMenu in project GlassRemote by thorikawa.

the class MainFrame method initializeZoomMenu.

private void initializeZoomMenu() {
    JMenu menuZoom = new JMenu("Zoom");
    menuZoom.setMnemonic(KeyEvent.VK_Z);
    mPopupMenu.add(menuZoom);
    ButtonGroup buttonGroup = new ButtonGroup();
    addRadioButtonMenuItemZoom(menuZoom, buttonGroup, 0.5, "50%", KeyEvent.VK_5, mZoom);
    addRadioButtonMenuItemZoom(menuZoom, buttonGroup, 0.75, "75%", KeyEvent.VK_7, mZoom);
    addRadioButtonMenuItemZoom(menuZoom, buttonGroup, 1.0, "100%", KeyEvent.VK_1, mZoom);
    addRadioButtonMenuItemZoom(menuZoom, buttonGroup, 1.5, "150%", KeyEvent.VK_0, mZoom);
    addRadioButtonMenuItemZoom(menuZoom, buttonGroup, 2.0, "200%", KeyEvent.VK_2, mZoom);
}
Also used : ButtonGroup(javax.swing.ButtonGroup) JMenu(javax.swing.JMenu)

Example 5 with JMenu

use of javax.swing.JMenu in project gephi by gephi.

the class ImportDB method getMenuPresenter.

@Override
public JMenuItem getMenuPresenter() {
    JMenu menu = new JMenu(NbBundle.getMessage(ImportDB.class, "CTL_ImportDB"));
    final ImportControllerUI importController = Lookup.getDefault().lookup(ImportControllerUI.class);
    if (importController != null) {
        for (final DatabaseImporterBuilder dbb : Lookup.getDefault().lookupAll(DatabaseImporterBuilder.class)) {
            ImporterUI ui = importController.getImportController().getUI(dbb.buildImporter());
            String menuName = dbb.getName();
            if (ui != null) {
                menuName = ui.getDisplayName();
            }
            JMenuItem menuItem = new JMenuItem(new AbstractAction(menuName) {

                @Override
                public void actionPerformed(ActionEvent e) {
                    importController.importDatabase(dbb.buildImporter());
                }
            });
            menu.add(menuItem);
        }
    }
    return menu;
}
Also used : ImporterUI(org.gephi.io.importer.spi.ImporterUI) ImportControllerUI(org.gephi.desktop.importer.api.ImportControllerUI) ActionEvent(java.awt.event.ActionEvent) JMenuItem(javax.swing.JMenuItem) AbstractAction(javax.swing.AbstractAction) JMenu(javax.swing.JMenu) DatabaseImporterBuilder(org.gephi.io.importer.spi.DatabaseImporterBuilder)

Aggregations

JMenu (javax.swing.JMenu)295 JMenuItem (javax.swing.JMenuItem)120 ActionEvent (java.awt.event.ActionEvent)79 JMenuBar (javax.swing.JMenuBar)77 ActionListener (java.awt.event.ActionListener)58 AbstractAction (javax.swing.AbstractAction)32 ButtonGroup (javax.swing.ButtonGroup)24 JSeparator (javax.swing.JSeparator)24 JPanel (javax.swing.JPanel)22 JPopupMenu (javax.swing.JPopupMenu)20 Dimension (java.awt.Dimension)19 BoxLayout (javax.swing.BoxLayout)18 JRadioButtonMenuItem (javax.swing.JRadioButtonMenuItem)17 Component (java.awt.Component)14 JScrollPane (javax.swing.JScrollPane)14 Test (org.junit.Test)14 JFrame (javax.swing.JFrame)13 JLabel (javax.swing.JLabel)13 ArrayList (java.util.ArrayList)12 JButton (javax.swing.JButton)12