Example usage for java.awt.event KeyEvent VK_C

List of usage examples for java.awt.event KeyEvent VK_C

Introduction

In this page you can find the example usage for java.awt.event KeyEvent VK_C.

Prototype

int VK_C

To view the source code for java.awt.event KeyEvent VK_C.

Click Source Link

Document

Constant for the "C" key.

Usage

From source file:org.domainmath.gui.MainFrame.java

/** This method is called from within the constructor to
 * initialize the form./*from w  w  w . j a v a 2  s .  c  om*/
 * WARNING: Do NOT modify this code. The content of this method is
 * always regenerated by the Form Editor.
 */
@SuppressWarnings("unchecked")
// <editor-fold defaultstate="collapsed" desc="Generated Code">//GEN-BEGIN:initComponents
private void initComponents() {

    buttonGroup1 = new javax.swing.ButtonGroup();
    jToolBar1 = new javax.swing.JToolBar();
    jButton1 = new javax.swing.JButton();
    jButton2 = new javax.swing.JButton();
    jButton3 = new javax.swing.JButton();
    jSeparator4 = new javax.swing.JToolBar.Separator();
    connectButton = new javax.swing.JButton();
    disconnectButton = new javax.swing.JButton();
    jSeparator9 = new javax.swing.JToolBar.Separator();
    jButton4 = new javax.swing.JButton();
    jButton5 = new javax.swing.JButton();
    jSeparator15 = new javax.swing.JToolBar.Separator();
    jButton6 = new javax.swing.JButton();
    jButton7 = new javax.swing.JButton();
    jButton8 = new javax.swing.JButton();
    jSeparator13 = new javax.swing.JToolBar.Separator();
    jPanel1 = new javax.swing.JPanel();
    jLabel1 = new javax.swing.JLabel();
    dirComboBox = new javax.swing.JComboBox();
    folderUpButton = new javax.swing.JButton();
    browseButton = new javax.swing.JButton();
    addButton = new javax.swing.JButton();
    jMenuBar1 = new javax.swing.JMenuBar();
    fileMenu = new javax.swing.JMenu();
    newFileItem = new javax.swing.JMenuItem();
    openItem = new javax.swing.JMenuItem();
    jSeparator17 = new javax.swing.JPopupMenu.Separator();
    saveFileItem = new javax.swing.JMenuItem();
    saveAsItem = new javax.swing.JMenuItem();
    savePlotItem = new javax.swing.JMenuItem();
    saveAllItem = new javax.swing.JMenuItem();
    jSeparator1 = new javax.swing.JPopupMenu.Separator();
    printFileItem = new javax.swing.JMenuItem();
    printItem = new javax.swing.JMenuItem();
    jSeparator19 = new javax.swing.JPopupMenu.Separator();
    preferencesItem = new javax.swing.JMenuItem();
    jSeparator2 = new javax.swing.JPopupMenu.Separator();
    connectItem = new javax.swing.JMenuItem();
    disconnectItem = new javax.swing.JMenuItem();
    jSeparator3 = new javax.swing.JPopupMenu.Separator();
    exitItem = new javax.swing.JMenuItem();
    editMenu = new javax.swing.JMenu();
    undoItem = new javax.swing.JMenuItem();
    redoItem = new javax.swing.JMenuItem();
    jSeparator20 = new javax.swing.JPopupMenu.Separator();
    cutItem = new javax.swing.JMenuItem();
    copyItem = new javax.swing.JMenuItem();
    pasteItem = new javax.swing.JMenuItem();
    jSeparator21 = new javax.swing.JPopupMenu.Separator();
    deleteItem = new javax.swing.JMenuItem();
    selectAllItem = new javax.swing.JMenuItem();
    jSeparator22 = new javax.swing.JPopupMenu.Separator();
    jMenuItem2 = new javax.swing.JMenuItem();
    jMenuItem3 = new javax.swing.JMenuItem();
    jSeparator23 = new javax.swing.JPopupMenu.Separator();
    jMenuItem4 = new javax.swing.JMenuItem();
    jMenuItem5 = new javax.swing.JMenuItem();
    jSeparator24 = new javax.swing.JPopupMenu.Separator();
    jMenuItem6 = new javax.swing.JMenuItem();
    jMenuItem1 = new javax.swing.JMenuItem();
    jSeparator11 = new javax.swing.JPopupMenu.Separator();
    clearOutWindowItem = new javax.swing.JMenuItem();
    jMenu3 = new javax.swing.JMenu();
    consoleItem = new javax.swing.JMenuItem();
    historyItem = new javax.swing.JMenuItem();
    filesItem = new javax.swing.JMenuItem();
    workspaceItem = new javax.swing.JMenuItem();
    codeEditorItem = new javax.swing.JMenuItem();
    pathsItem = new javax.swing.JMenuItem();
    pkgsItem = new javax.swing.JMenuItem();
    arrayEditItem = new javax.swing.JMenuItem();
    jMenuItem7 = new javax.swing.JMenuItem();
    jMenu1 = new javax.swing.JMenu();
    findItem = new javax.swing.JMenuItem();
    replaceItem = new javax.swing.JMenuItem();
    gotoItem = new javax.swing.JMenuItem();
    jSeparator25 = new javax.swing.JPopupMenu.Separator();
    googleItem = new javax.swing.JMenuItem();
    wikiItem = new javax.swing.JMenuItem();
    pkgMenu = new javax.swing.JMenu();
    debugMenu = new javax.swing.JMenu();
    runScriptItem = new javax.swing.JMenuItem();
    runScriptCItem = new javax.swing.JMenuItem();
    jMenuItem8 = new javax.swing.JMenuItem();
    jSeparator8 = new javax.swing.JPopupMenu.Separator();
    debugScriptMenuItem = new javax.swing.JMenuItem();
    testScriptMenuItem = new javax.swing.JMenuItem();
    toggleBreakpointItem = new javax.swing.JMenuItem();
    removeToggleBreakpointItem = new javax.swing.JMenuItem();
    clearAllBreakpointsItem = new javax.swing.JMenuItem();
    jSeparator10 = new javax.swing.JPopupMenu.Separator();
    stepItem = new javax.swing.JMenuItem();
    stepInItem = new javax.swing.JMenuItem();
    stepOutItem = new javax.swing.JMenuItem();
    continueItem = new javax.swing.JMenuItem();
    jSeparator5 = new javax.swing.JPopupMenu.Separator();
    finishDebugItem = new javax.swing.JMenuItem();
    toolsMenu = new javax.swing.JMenu();
    fltkplotItem = new javax.swing.JMenuItem();
    octaveCmdItem = new javax.swing.JMenuItem();
    jMenu2 = new javax.swing.JMenu();
    previousWindowItem = new javax.swing.JMenuItem();
    nextWindowItem = new javax.swing.JMenuItem();
    jSeparator29 = new javax.swing.JPopupMenu.Separator();
    closeItem = new javax.swing.JMenuItem();
    closeAllItem = new javax.swing.JMenuItem();
    jSeparator18 = new javax.swing.JPopupMenu.Separator();
    windowsItem = new javax.swing.JMenuItem();
    helpMenu = new javax.swing.JMenu();
    forumItem = new javax.swing.JMenuItem();
    octaveInfoItem = new javax.swing.JMenuItem();
    jSeparator12 = new javax.swing.JPopupMenu.Separator();
    quickHelpItem = new javax.swing.JMenuItem();
    jMenuItem9 = new javax.swing.JMenuItem();
    docPkgItem = new javax.swing.JMenuItem();
    referenceMenu = new javax.swing.JMenu();
    referenceItem = new javax.swing.JMenuItem();
    jSeparator6 = new javax.swing.JPopupMenu.Separator();
    checkForUpdatesMenuItem = new javax.swing.JMenuItem();
    onlineHelpItem = new javax.swing.JMenuItem();
    faqItem = new javax.swing.JMenuItem();
    jSeparator14 = new javax.swing.JPopupMenu.Separator();
    reportBugItem = new javax.swing.JMenuItem();
    feedBackItem = new javax.swing.JMenuItem();
    jSeparator7 = new javax.swing.JPopupMenu.Separator();
    AboutItem = new javax.swing.JMenuItem();

    setDefaultCloseOperation(javax.swing.WindowConstants.DO_NOTHING_ON_CLOSE);
    java.util.ResourceBundle bundle = java.util.ResourceBundle
            .getBundle("org/domainmath/gui/resources/DomainMath_en"); // NOI18N
    setTitle(bundle.getString("DomainMath.title")); // NOI18N
    addWindowListener(new java.awt.event.WindowAdapter() {
        public void windowClosing(java.awt.event.WindowEvent evt) {
            formWindowClosing(evt);
        }

        public void windowOpened(java.awt.event.WindowEvent evt) {
            formWindowOpened(evt);
        }
    });

    jToolBar1.setRollover(true);
    jToolBar1.setName("Standard"); // NOI18N

    jButton1.setIcon(new javax.swing.ImageIcon(
            getClass().getResource("/org/domainmath/gui/icons/size22x22/document-new.png"))); // NOI18N
    jButton1.setFocusable(false);
    jButton1.setHorizontalTextPosition(javax.swing.SwingConstants.CENTER);
    jButton1.setVerticalTextPosition(javax.swing.SwingConstants.BOTTOM);
    jButton1.addActionListener(new java.awt.event.ActionListener() {
        public void actionPerformed(java.awt.event.ActionEvent evt) {
            jButton1ActionPerformed(evt);
        }
    });
    jToolBar1.add(jButton1);

    jButton2.setIcon(new javax.swing.ImageIcon(
            getClass().getResource("/org/domainmath/gui/icons/size22x22/document-open.png"))); // NOI18N
    jButton2.setFocusable(false);
    jButton2.setHorizontalTextPosition(javax.swing.SwingConstants.CENTER);
    jButton2.setVerticalTextPosition(javax.swing.SwingConstants.BOTTOM);
    jButton2.addActionListener(new java.awt.event.ActionListener() {
        public void actionPerformed(java.awt.event.ActionEvent evt) {
            jButton2ActionPerformed(evt);
        }
    });
    jToolBar1.add(jButton2);

    jButton3.setIcon(new javax.swing.ImageIcon(
            getClass().getResource("/org/domainmath/gui/icons/size22x22/document-save-all.png"))); // NOI18N
    jButton3.setFocusable(false);
    jButton3.setHorizontalTextPosition(javax.swing.SwingConstants.CENTER);
    jButton3.setVerticalTextPosition(javax.swing.SwingConstants.BOTTOM);
    jButton3.addActionListener(new java.awt.event.ActionListener() {
        public void actionPerformed(java.awt.event.ActionEvent evt) {
            jButton3ActionPerformed(evt);
        }
    });
    jToolBar1.add(jButton3);
    jToolBar1.add(jSeparator4);

    connectButton.setIcon(new javax.swing.ImageIcon(
            getClass().getResource("/org/domainmath/gui/icons/size22x22/connect.png"))); // NOI18N
    connectButton.setMnemonic(java.util.ResourceBundle.getBundle("org/domainmath/gui/resources/DomainMath_en")
            .getString("connectItem.mnemonic").charAt(0));
    connectButton.setToolTipText(bundle.getString("connectItem.tooltip")); // NOI18N
    connectButton.setFocusable(false);
    connectButton.setHorizontalTextPosition(javax.swing.SwingConstants.CENTER);
    connectButton.setVerticalTextPosition(javax.swing.SwingConstants.BOTTOM);
    connectButton.addActionListener(new java.awt.event.ActionListener() {
        public void actionPerformed(java.awt.event.ActionEvent evt) {
            connectButtonActionPerformed(evt);
        }
    });
    jToolBar1.add(connectButton);

    disconnectButton.setIcon(new javax.swing.ImageIcon(
            getClass().getResource("/org/domainmath/gui/icons/size22x22/disconnect.png"))); // NOI18N
    disconnectButton
            .setMnemonic(java.util.ResourceBundle.getBundle("org/domainmath/gui/resources/DomainMath_en")
                    .getString("disconnectItem.mnemonic").charAt(0));
    disconnectButton.setToolTipText(bundle.getString("disconnectItem.tooltip")); // NOI18N
    disconnectButton.setFocusable(false);
    disconnectButton.setHorizontalTextPosition(javax.swing.SwingConstants.CENTER);
    disconnectButton.setVerticalTextPosition(javax.swing.SwingConstants.BOTTOM);
    disconnectButton.addActionListener(new java.awt.event.ActionListener() {
        public void actionPerformed(java.awt.event.ActionEvent evt) {
            disconnectButtonActionPerformed(evt);
        }
    });
    jToolBar1.add(disconnectButton);
    jToolBar1.add(jSeparator9);

    jButton4.setIcon(new javax.swing.ImageIcon(
            getClass().getResource("/org/domainmath/gui/icons/size22x22/edit-undo.png"))); // NOI18N
    jButton4.setFocusable(false);
    jButton4.setHorizontalTextPosition(javax.swing.SwingConstants.CENTER);
    jButton4.setVerticalTextPosition(javax.swing.SwingConstants.BOTTOM);
    jButton4.addActionListener(new java.awt.event.ActionListener() {
        public void actionPerformed(java.awt.event.ActionEvent evt) {
            jButton4ActionPerformed(evt);
        }
    });
    jToolBar1.add(jButton4);

    jButton5.setIcon(new javax.swing.ImageIcon(
            getClass().getResource("/org/domainmath/gui/icons/size22x22/edit-redo.png"))); // NOI18N
    jButton5.setFocusable(false);
    jButton5.setHorizontalTextPosition(javax.swing.SwingConstants.CENTER);
    jButton5.setVerticalTextPosition(javax.swing.SwingConstants.BOTTOM);
    jButton5.addActionListener(new java.awt.event.ActionListener() {
        public void actionPerformed(java.awt.event.ActionEvent evt) {
            jButton5ActionPerformed(evt);
        }
    });
    jToolBar1.add(jButton5);
    jToolBar1.add(jSeparator15);

    jButton6.setIcon(new javax.swing.ImageIcon(
            getClass().getResource("/org/domainmath/gui/icons/size22x22/edit-cut.png"))); // NOI18N
    jButton6.setFocusable(false);
    jButton6.setHorizontalTextPosition(javax.swing.SwingConstants.CENTER);
    jButton6.setVerticalTextPosition(javax.swing.SwingConstants.BOTTOM);
    jButton6.addActionListener(new java.awt.event.ActionListener() {
        public void actionPerformed(java.awt.event.ActionEvent evt) {
            jButton6ActionPerformed(evt);
        }
    });
    jToolBar1.add(jButton6);

    jButton7.setIcon(new javax.swing.ImageIcon(
            getClass().getResource("/org/domainmath/gui/icons/size22x22/edit-copy.png"))); // NOI18N
    jButton7.setFocusable(false);
    jButton7.setHorizontalTextPosition(javax.swing.SwingConstants.CENTER);
    jButton7.setVerticalTextPosition(javax.swing.SwingConstants.BOTTOM);
    jButton7.addActionListener(new java.awt.event.ActionListener() {
        public void actionPerformed(java.awt.event.ActionEvent evt) {
            jButton7ActionPerformed(evt);
        }
    });
    jToolBar1.add(jButton7);

    jButton8.setIcon(new javax.swing.ImageIcon(
            getClass().getResource("/org/domainmath/gui/icons/size22x22/edit-paste.png"))); // NOI18N
    jButton8.setFocusable(false);
    jButton8.setHorizontalTextPosition(javax.swing.SwingConstants.CENTER);
    jButton8.setVerticalTextPosition(javax.swing.SwingConstants.BOTTOM);
    jButton8.addActionListener(new java.awt.event.ActionListener() {
        public void actionPerformed(java.awt.event.ActionEvent evt) {
            jButton8ActionPerformed(evt);
        }
    });
    jToolBar1.add(jButton8);
    jToolBar1.add(jSeparator13);

    jLabel1.setText("Current Directory:");

    dirComboBox.setEditable(true);
    dirComboBox.addItemListener(new java.awt.event.ItemListener() {
        public void itemStateChanged(java.awt.event.ItemEvent evt) {
            dirComboBoxItemStateChanged(evt);
        }
    });

    javax.swing.GroupLayout jPanel1Layout = new javax.swing.GroupLayout(jPanel1);
    jPanel1.setLayout(jPanel1Layout);
    jPanel1Layout
            .setHorizontalGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                    .addGroup(jPanel1Layout.createSequentialGroup().addGap(1, 1, 1).addComponent(jLabel1)
                            .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                            .addComponent(dirComboBox, 0, 112, Short.MAX_VALUE).addGap(1, 1, 1)));
    jPanel1Layout.setVerticalGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(jPanel1Layout.createSequentialGroup().addGap(5, 5, 5).addGroup(jPanel1Layout
                    .createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE).addComponent(jLabel1)
                    .addComponent(dirComboBox, javax.swing.GroupLayout.PREFERRED_SIZE,
                            javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
                    .addGap(3, 3, 3)));

    jToolBar1.add(jPanel1);

    folderUpButton.setIcon(
            new javax.swing.ImageIcon(getClass().getResource("/org/domainmath/gui/icons/size22x22/go-up.png"))); // NOI18N
    folderUpButton.setToolTipText("Up");
    folderUpButton.setFocusable(false);
    folderUpButton.setHorizontalTextPosition(javax.swing.SwingConstants.CENTER);
    folderUpButton.setVerticalTextPosition(javax.swing.SwingConstants.BOTTOM);
    folderUpButton.addActionListener(new java.awt.event.ActionListener() {
        public void actionPerformed(java.awt.event.ActionEvent evt) {
            folderUpButtonActionPerformed(evt);
        }
    });
    jToolBar1.add(folderUpButton);

    browseButton.setIcon(new javax.swing.ImageIcon(
            getClass().getResource("/org/domainmath/gui/icons/size22x22/document-open.png"))); // NOI18N
    browseButton.setToolTipText(bundle.getString("browseButton.title")); // NOI18N
    browseButton.setFocusable(false);
    browseButton.setHorizontalTextPosition(javax.swing.SwingConstants.CENTER);
    browseButton.setVerticalTextPosition(javax.swing.SwingConstants.BOTTOM);
    browseButton.addActionListener(new java.awt.event.ActionListener() {
        public void actionPerformed(java.awt.event.ActionEvent evt) {
            browseButtonActionPerformed(evt);
        }
    });
    jToolBar1.add(browseButton);

    addButton.setIcon(new javax.swing.ImageIcon(
            getClass().getResource("/org/domainmath/gui/icons/size22x22/edit-add.png"))); // NOI18N
    addButton.setToolTipText(bundle.getString("addButton.title")); // NOI18N
    addButton.setFocusable(false);
    addButton.setHorizontalTextPosition(javax.swing.SwingConstants.CENTER);
    addButton.setVerticalTextPosition(javax.swing.SwingConstants.BOTTOM);
    addButton.addActionListener(new java.awt.event.ActionListener() {
        public void actionPerformed(java.awt.event.ActionEvent evt) {
            addButtonActionPerformed(evt);
        }
    });
    jToolBar1.add(addButton);

    getContentPane().add(jToolBar1, java.awt.BorderLayout.PAGE_START);

    fileMenu.setMnemonic(java.util.ResourceBundle.getBundle("org/domainmath/gui/resources/DomainMath_en")
            .getString("fileMenu.mnemonic").charAt(0));
    fileMenu.setText(bundle.getString("fileMenu.name")); // NOI18N

    newFileItem.setAccelerator(javax.swing.KeyStroke.getKeyStroke(java.awt.event.KeyEvent.VK_N,
            java.awt.event.InputEvent.CTRL_MASK));
    newFileItem.setIcon(
            new javax.swing.ImageIcon(getClass().getResource("/org/domainmath/gui/icons/document-new.png"))); // NOI18N
    newFileItem.setText("New");
    newFileItem.setToolTipText(bundle.getString("newMenuItem.tooltip")); // NOI18N
    newFileItem.addActionListener(new java.awt.event.ActionListener() {
        public void actionPerformed(java.awt.event.ActionEvent evt) {
            newFileItemActionPerformed(evt);
        }
    });
    fileMenu.add(newFileItem);

    openItem.setAccelerator(javax.swing.KeyStroke.getKeyStroke(java.awt.event.KeyEvent.VK_O,
            java.awt.event.InputEvent.CTRL_MASK));
    openItem.setIcon(
            new javax.swing.ImageIcon(getClass().getResource("/org/domainmath/gui/icons/document-open.png"))); // NOI18N
    openItem.setText("Open...");
    openItem.setToolTipText("Open File");
    openItem.addActionListener(new java.awt.event.ActionListener() {
        public void actionPerformed(java.awt.event.ActionEvent evt) {
            openItemActionPerformed(evt);
        }
    });
    fileMenu.add(openItem);
    fileMenu.add(jSeparator17);

    saveFileItem.setAccelerator(javax.swing.KeyStroke.getKeyStroke(java.awt.event.KeyEvent.VK_S,
            java.awt.event.InputEvent.CTRL_MASK));
    saveFileItem.setIcon(
            new javax.swing.ImageIcon(getClass().getResource("/org/domainmath/gui/icons/document-save.png"))); // NOI18N
    saveFileItem.setText("Save ");
    saveFileItem.setToolTipText(bundle.getString("saveMenuItem.tooltp")); // NOI18N
    saveFileItem.addActionListener(new java.awt.event.ActionListener() {
        public void actionPerformed(java.awt.event.ActionEvent evt) {
            saveFileItemActionPerformed(evt);
        }
    });
    fileMenu.add(saveFileItem);

    saveAsItem.setText("Save As...");
    saveAsItem.addActionListener(new java.awt.event.ActionListener() {
        public void actionPerformed(java.awt.event.ActionEvent evt) {
            saveAsItemActionPerformed(evt);
        }
    });
    fileMenu.add(saveAsItem);

    savePlotItem.setMnemonic(java.util.ResourceBundle.getBundle("org/domainmath/gui/resources/DomainMath_en")
            .getString("savePlotItem.mnemonic").charAt(0));
    savePlotItem.setText(bundle.getString("savePlotItem.name")); // NOI18N
    savePlotItem.setToolTipText(bundle.getString("savePlotItem.tooltip")); // NOI18N
    savePlotItem.addActionListener(new java.awt.event.ActionListener() {
        public void actionPerformed(java.awt.event.ActionEvent evt) {
            savePlotItemActionPerformed(evt);
        }
    });
    fileMenu.add(savePlotItem);

    saveAllItem.setAccelerator(javax.swing.KeyStroke.getKeyStroke(java.awt.event.KeyEvent.VK_S,
            java.awt.event.InputEvent.SHIFT_MASK | java.awt.event.InputEvent.CTRL_MASK));
    saveAllItem.setIcon(new javax.swing.ImageIcon(
            getClass().getResource("/org/domainmath/gui/icons/document-save-all.png"))); // NOI18N
    saveAllItem.setText(bundle.getString("saveAllMenuItem.text")); // NOI18N
    saveAllItem.setToolTipText(bundle.getString("saveAllMenuItem.tooltip")); // NOI18N
    saveAllItem.addActionListener(new java.awt.event.ActionListener() {
        public void actionPerformed(java.awt.event.ActionEvent evt) {
            saveAllItemActionPerformed(evt);
        }
    });
    fileMenu.add(saveAllItem);
    fileMenu.add(jSeparator1);

    printFileItem.setAccelerator(javax.swing.KeyStroke.getKeyStroke(java.awt.event.KeyEvent.VK_P,
            java.awt.event.InputEvent.CTRL_MASK));
    printFileItem.setIcon(
            new javax.swing.ImageIcon(getClass().getResource("/org/domainmath/gui/icons/document-print2.png"))); // NOI18N
    printFileItem.setText("Print");
    printFileItem.addActionListener(new java.awt.event.ActionListener() {
        public void actionPerformed(java.awt.event.ActionEvent evt) {
            printFileItemActionPerformed(evt);
        }
    });
    fileMenu.add(printFileItem);

    printItem.setAccelerator(javax.swing.KeyStroke.getKeyStroke(java.awt.event.KeyEvent.VK_P,
            java.awt.event.InputEvent.SHIFT_MASK | java.awt.event.InputEvent.CTRL_MASK));
    printItem.setMnemonic(java.util.ResourceBundle.getBundle("org/domainmath/gui/resources/DomainMath_en")
            .getString("printItem.mnemonic").charAt(0));
    printItem.setText(bundle.getString("printItem.name")); // NOI18N
    printItem.setToolTipText(bundle.getString("printItem.tooltip")); // NOI18N
    printItem.addActionListener(new java.awt.event.ActionListener() {
        public void actionPerformed(java.awt.event.ActionEvent evt) {
            printItemActionPerformed(evt);
        }
    });
    fileMenu.add(printItem);
    fileMenu.add(jSeparator19);

    preferencesItem.setIcon(
            new javax.swing.ImageIcon(getClass().getResource("/org/domainmath/gui/icons/preferences.png"))); // NOI18N
    preferencesItem.setMnemonic(java.util.ResourceBundle.getBundle("org/domainmath/gui/resources/DomainMath_en")
            .getString("preferecesItem.mnemonic").charAt(0));
    preferencesItem.setText(bundle.getString("preferencesItem.name")); // NOI18N
    preferencesItem.setToolTipText(bundle.getString("preferencesItem.tooltip")); // NOI18N
    preferencesItem.addActionListener(new java.awt.event.ActionListener() {
        public void actionPerformed(java.awt.event.ActionEvent evt) {
            preferencesItemActionPerformed(evt);
        }
    });
    fileMenu.add(preferencesItem);
    fileMenu.add(jSeparator2);

    connectItem.setIcon(
            new javax.swing.ImageIcon(getClass().getResource("/org/domainmath/gui/icons/connect.png"))); // NOI18N
    connectItem.setMnemonic(java.util.ResourceBundle.getBundle("org/domainmath/gui/resources/DomainMath_en")
            .getString("connectItem.mnemonic").charAt(0));
    connectItem.setText(bundle.getString("connectItem.name")); // NOI18N
    connectItem.setToolTipText(bundle.getString("connectItem.tooltip")); // NOI18N
    connectItem.addActionListener(new java.awt.event.ActionListener() {
        public void actionPerformed(java.awt.event.ActionEvent evt) {
            connectItemActionPerformed(evt);
        }
    });
    fileMenu.add(connectItem);

    disconnectItem.setIcon(
            new javax.swing.ImageIcon(getClass().getResource("/org/domainmath/gui/icons/disconnect.png"))); // NOI18N
    disconnectItem.setMnemonic(java.util.ResourceBundle.getBundle("org/domainmath/gui/resources/DomainMath_en")
            .getString("disconnectItem.mnemonic").charAt(0));
    disconnectItem.setText(bundle.getString("disconnectItem.name")); // NOI18N
    disconnectItem.setToolTipText(bundle.getString("disconnectItem.tooltip")); // NOI18N
    disconnectItem.addActionListener(new java.awt.event.ActionListener() {
        public void actionPerformed(java.awt.event.ActionEvent evt) {
            disconnectItemActionPerformed(evt);
        }
    });
    fileMenu.add(disconnectItem);
    fileMenu.add(jSeparator3);

    exitItem.setMnemonic(java.util.ResourceBundle.getBundle("org/domainmath/gui/resources/DomainMath_en")
            .getString("exitItem.mnemonic").charAt(0));
    exitItem.setText(bundle.getString("exitItem.name")); // NOI18N
    exitItem.setToolTipText(bundle.getString("exitItem.tooltip")); // NOI18N
    exitItem.addActionListener(new java.awt.event.ActionListener() {
        public void actionPerformed(java.awt.event.ActionEvent evt) {
            exitItemActionPerformed(evt);
        }
    });
    fileMenu.add(exitItem);

    jMenuBar1.add(fileMenu);

    editMenu.setMnemonic(java.util.ResourceBundle.getBundle("org/domainmath/gui/resources/DomainMath_en")
            .getString("editMenu.mnemonic").charAt(0));
    editMenu.setText("Edit");

    undoItem.setAccelerator(javax.swing.KeyStroke.getKeyStroke(java.awt.event.KeyEvent.VK_Z,
            java.awt.event.InputEvent.CTRL_MASK));
    undoItem.setIcon(
            new javax.swing.ImageIcon(getClass().getResource("/org/domainmath/gui/icons/edit-undo.png"))); // NOI18N
    undoItem.setText("Undo");
    undoItem.addActionListener(new java.awt.event.ActionListener() {
        public void actionPerformed(java.awt.event.ActionEvent evt) {
            undoItemActionPerformed(evt);
        }
    });
    editMenu.add(undoItem);

    redoItem.setAccelerator(javax.swing.KeyStroke.getKeyStroke(java.awt.event.KeyEvent.VK_Y,
            java.awt.event.InputEvent.CTRL_MASK));
    redoItem.setIcon(
            new javax.swing.ImageIcon(getClass().getResource("/org/domainmath/gui/icons/edit-redo.png"))); // NOI18N
    redoItem.setText("Redo");
    redoItem.addActionListener(new java.awt.event.ActionListener() {
        public void actionPerformed(java.awt.event.ActionEvent evt) {
            redoItemActionPerformed(evt);
        }
    });
    editMenu.add(redoItem);
    editMenu.add(jSeparator20);

    cutItem.setAccelerator(javax.swing.KeyStroke.getKeyStroke(java.awt.event.KeyEvent.VK_X,
            java.awt.event.InputEvent.CTRL_MASK));
    cutItem.setIcon(
            new javax.swing.ImageIcon(getClass().getResource("/org/domainmath/gui/icons/edit-cut.png"))); // NOI18N
    cutItem.setText("Cut");
    cutItem.addActionListener(new java.awt.event.ActionListener() {
        public void actionPerformed(java.awt.event.ActionEvent evt) {
            cutItemActionPerformed(evt);
        }
    });
    editMenu.add(cutItem);

    copyItem.setAccelerator(javax.swing.KeyStroke.getKeyStroke(java.awt.event.KeyEvent.VK_C,
            java.awt.event.InputEvent.CTRL_MASK));
    copyItem.setIcon(
            new javax.swing.ImageIcon(getClass().getResource("/org/domainmath/gui/icons/edit-copy.png"))); // NOI18N
    copyItem.setText("Copy");
    copyItem.addActionListener(new java.awt.event.ActionListener() {
        public void actionPerformed(java.awt.event.ActionEvent evt) {
            copyItemActionPerformed(evt);
        }
    });
    editMenu.add(copyItem);

    pasteItem.setAccelerator(javax.swing.KeyStroke.getKeyStroke(java.awt.event.KeyEvent.VK_V,
            java.awt.event.InputEvent.CTRL_MASK));
    pasteItem.setIcon(
            new javax.swing.ImageIcon(getClass().getResource("/org/domainmath/gui/icons/edit-paste.png"))); // NOI18N
    pasteItem.setText("Paste");
    pasteItem.addActionListener(new java.awt.event.ActionListener() {
        public void actionPerformed(java.awt.event.ActionEvent evt) {
            pasteItemActionPerformed(evt);
        }
    });
    editMenu.add(pasteItem);
    editMenu.add(jSeparator21);

    deleteItem.setIcon(
            new javax.swing.ImageIcon(getClass().getResource("/org/domainmath/gui/icons/edit-delete.png"))); // NOI18N
    deleteItem.setText("Delete");
    deleteItem.addActionListener(new java.awt.event.ActionListener() {
        public void actionPerformed(java.awt.event.ActionEvent evt) {
            deleteItemActionPerformed(evt);
        }
    });
    editMenu.add(deleteItem);

    selectAllItem.setAccelerator(javax.swing.KeyStroke.getKeyStroke(java.awt.event.KeyEvent.VK_A,
            java.awt.event.InputEvent.CTRL_MASK));
    selectAllItem.setIcon(
            new javax.swing.ImageIcon(getClass().getResource("/org/domainmath/gui/icons/edit-select-all.png"))); // NOI18N
    selectAllItem.setText("Select All");
    selectAllItem.addActionListener(new java.awt.event.ActionListener() {
        public void actionPerformed(java.awt.event.ActionEvent evt) {
            selectAllItemActionPerformed(evt);
        }
    });
    editMenu.add(selectAllItem);
    editMenu.add(jSeparator22);

    jMenuItem2.setAction(new RSyntaxTextAreaEditorKit.InsertTabAction());
    jMenuItem2.setAccelerator(javax.swing.KeyStroke.getKeyStroke(java.awt.event.KeyEvent.VK_TAB,
            java.awt.event.InputEvent.CTRL_MASK));
    jMenuItem2.setText("Increase Indent");
    editMenu.add(jMenuItem2);

    jMenuItem3.setAction(new RSyntaxTextAreaEditorKit.DecreaseIndentAction());
    jMenuItem3.setAccelerator(javax.swing.KeyStroke.getKeyStroke(java.awt.event.KeyEvent.VK_TAB,
            java.awt.event.InputEvent.SHIFT_MASK));
    jMenuItem3.setText("Decrease Indent");
    editMenu.add(jMenuItem3);
    editMenu.add(jSeparator23);

    jMenuItem4.setAction(new RTextAreaEditorKit.UpperSelectionCaseAction());
    jMenuItem4.setAccelerator(javax.swing.KeyStroke.getKeyStroke(java.awt.event.KeyEvent.VK_U,
            java.awt.event.InputEvent.CTRL_MASK));
    jMenuItem4.setText("Make Uppercase");
    editMenu.add(jMenuItem4);

    jMenuItem5.setAction(new RTextAreaEditorKit.LowerSelectionCaseAction());
    jMenuItem5.setAccelerator(javax.swing.KeyStroke.getKeyStroke(java.awt.event.KeyEvent.VK_U,
            java.awt.event.InputEvent.SHIFT_MASK | java.awt.event.InputEvent.CTRL_MASK));
    jMenuItem5.setText("Make Lowercase");
    editMenu.add(jMenuItem5);
    editMenu.add(jSeparator24);

    jMenuItem6.setText("Clear All Marks...");
    jMenuItem6.addActionListener(new java.awt.event.ActionListener() {
        public void actionPerformed(java.awt.event.ActionEvent evt) {
            jMenuItem6ActionPerformed(evt);
        }
    });
    editMenu.add(jMenuItem6);

    jMenuItem1.setAction(new RSyntaxTextAreaEditorKit.ToggleCommentAction());
    jMenuItem1.setAccelerator(javax.swing.KeyStroke.getKeyStroke(java.awt.event.KeyEvent.VK_SLASH,
            java.awt.event.InputEvent.CTRL_MASK));
    jMenuItem1.setText("Toggle Comment");
    jMenuItem1.addActionListener(new java.awt.event.ActionListener() {
        public void actionPerformed(java.awt.event.ActionEvent evt) {
            jMenuItem1ActionPerformed(evt);
        }
    });
    editMenu.add(jMenuItem1);
    editMenu.add(jSeparator11);

    clearOutWindowItem.setAccelerator(javax.swing.KeyStroke.getKeyStroke(java.awt.event.KeyEvent.VK_W,
            java.awt.event.InputEvent.CTRL_MASK));
    clearOutWindowItem
            .setMnemonic(java.util.ResourceBundle.getBundle("org/domainmath/gui/resources/DomainMath_en")
                    .getString("clearOutputWindowItem.mnemonic").charAt(0));
    clearOutWindowItem.setText(bundle.getString("clearOutputWindowItem.name")); // NOI18N
    clearOutWindowItem.setToolTipText(bundle.getString("clearOutputWindowItem.tooltip")); // NOI18N
    clearOutWindowItem.addActionListener(new java.awt.event.ActionListener() {
        public void actionPerformed(java.awt.event.ActionEvent evt) {
            clearOutWindowItemActionPerformed(evt);
        }
    });
    editMenu.add(clearOutWindowItem);

    jMenuBar1.add(editMenu);

    jMenu3.setText(bundle.getString("viewMenu.title")); // NOI18N

    consoleItem.setAccelerator(javax.swing.KeyStroke.getKeyStroke(java.awt.event.KeyEvent.VK_0,
            java.awt.event.InputEvent.CTRL_MASK));
    consoleItem.setText(bundle.getString("consoleItem.title")); // NOI18N
    consoleItem.addActionListener(new java.awt.event.ActionListener() {
        public void actionPerformed(java.awt.event.ActionEvent evt) {
            consoleItemActionPerformed(evt);
        }
    });
    jMenu3.add(consoleItem);

    historyItem.setAccelerator(javax.swing.KeyStroke.getKeyStroke(java.awt.event.KeyEvent.VK_1,
            java.awt.event.InputEvent.CTRL_MASK));
    historyItem.setText(bundle.getString("historyItem.title")); // NOI18N
    historyItem.addActionListener(new java.awt.event.ActionListener() {
        public void actionPerformed(java.awt.event.ActionEvent evt) {
            historyItemActionPerformed(evt);
        }
    });
    jMenu3.add(historyItem);

    filesItem.setAccelerator(javax.swing.KeyStroke.getKeyStroke(java.awt.event.KeyEvent.VK_2,
            java.awt.event.InputEvent.CTRL_MASK));
    filesItem.setText(bundle.getString("filesItem.title")); // NOI18N
    filesItem.addActionListener(new java.awt.event.ActionListener() {
        public void actionPerformed(java.awt.event.ActionEvent evt) {
            filesItemActionPerformed(evt);
        }
    });
    jMenu3.add(filesItem);

    workspaceItem.setAccelerator(javax.swing.KeyStroke.getKeyStroke(java.awt.event.KeyEvent.VK_3,
            java.awt.event.InputEvent.CTRL_MASK));
    workspaceItem.setText(bundle.getString("worksaceItem.title")); // NOI18N
    workspaceItem.addActionListener(new java.awt.event.ActionListener() {
        public void actionPerformed(java.awt.event.ActionEvent evt) {
            workspaceItemActionPerformed(evt);
        }
    });
    jMenu3.add(workspaceItem);

    codeEditorItem.setAccelerator(javax.swing.KeyStroke.getKeyStroke(java.awt.event.KeyEvent.VK_4,
            java.awt.event.InputEvent.CTRL_MASK));
    codeEditorItem.setText(bundle.getString("codeEditorItem.title")); // NOI18N
    codeEditorItem.addActionListener(new java.awt.event.ActionListener() {
        public void actionPerformed(java.awt.event.ActionEvent evt) {
            codeEditorItemActionPerformed(evt);
        }
    });
    jMenu3.add(codeEditorItem);

    pathsItem.setAccelerator(javax.swing.KeyStroke.getKeyStroke(java.awt.event.KeyEvent.VK_5,
            java.awt.event.InputEvent.CTRL_MASK));
    pathsItem.setText(bundle.getString("setPathsItem.title")); // NOI18N
    pathsItem.addActionListener(new java.awt.event.ActionListener() {
        public void actionPerformed(java.awt.event.ActionEvent evt) {
            pathsItemActionPerformed(evt);
        }
    });
    jMenu3.add(pathsItem);

    pkgsItem.setAccelerator(javax.swing.KeyStroke.getKeyStroke(java.awt.event.KeyEvent.VK_6,
            java.awt.event.InputEvent.CTRL_MASK));
    pkgsItem.setText(bundle.getString("pkgsItem.title")); // NOI18N
    pkgsItem.addActionListener(new java.awt.event.ActionListener() {
        public void actionPerformed(java.awt.event.ActionEvent evt) {
            pkgsItemActionPerformed(evt);
        }
    });
    jMenu3.add(pkgsItem);

    arrayEditItem.setAccelerator(javax.swing.KeyStroke.getKeyStroke(java.awt.event.KeyEvent.VK_7,
            java.awt.event.InputEvent.CTRL_MASK));
    arrayEditItem.setText(bundle.getString("arrayEidtorItem.title")); // NOI18N
    arrayEditItem.addActionListener(new java.awt.event.ActionListener() {
        public void actionPerformed(java.awt.event.ActionEvent evt) {
            arrayEditItemActionPerformed(evt);
        }
    });
    jMenu3.add(arrayEditItem);

    jMenuItem7.setAccelerator(javax.swing.KeyStroke.getKeyStroke(java.awt.event.KeyEvent.VK_8,
            java.awt.event.InputEvent.CTRL_MASK));
    jMenuItem7.setText("Debugger Window");
    jMenuItem7.addActionListener(new java.awt.event.ActionListener() {
        public void actionPerformed(java.awt.event.ActionEvent evt) {
            jMenuItem7ActionPerformed(evt);
        }
    });
    jMenu3.add(jMenuItem7);

    jMenuBar1.add(jMenu3);

    jMenu1.setMnemonic('S');
    jMenu1.setText("Search");

    findItem.setAccelerator(javax.swing.KeyStroke.getKeyStroke(java.awt.event.KeyEvent.VK_F,
            java.awt.event.InputEvent.CTRL_MASK));
    findItem.setIcon(
            new javax.swing.ImageIcon(getClass().getResource("/org/domainmath/gui/icons/edit-find.png"))); // NOI18N
    findItem.setMnemonic('F');
    findItem.setText("Find...");
    findItem.addActionListener(new java.awt.event.ActionListener() {
        public void actionPerformed(java.awt.event.ActionEvent evt) {
            findItemActionPerformed(evt);
        }
    });
    jMenu1.add(findItem);

    replaceItem.setAccelerator(javax.swing.KeyStroke.getKeyStroke(java.awt.event.KeyEvent.VK_H,
            java.awt.event.InputEvent.CTRL_MASK));
    replaceItem.setIcon(new javax.swing.ImageIcon(
            getClass().getResource("/org/domainmath/gui/icons/edit-find-replace.png"))); // NOI18N
    replaceItem.setText("Replace...");
    replaceItem.addActionListener(new java.awt.event.ActionListener() {
        public void actionPerformed(java.awt.event.ActionEvent evt) {
            replaceItemActionPerformed(evt);
        }
    });
    jMenu1.add(replaceItem);

    gotoItem.setAccelerator(javax.swing.KeyStroke.getKeyStroke(java.awt.event.KeyEvent.VK_G,
            java.awt.event.InputEvent.SHIFT_MASK | java.awt.event.InputEvent.CTRL_MASK));
    gotoItem.setText("Go To...");
    gotoItem.addActionListener(new java.awt.event.ActionListener() {
        public void actionPerformed(java.awt.event.ActionEvent evt) {
            gotoItemActionPerformed(evt);
        }
    });
    jMenu1.add(gotoItem);
    jMenu1.add(jSeparator25);

    googleItem.setAccelerator(javax.swing.KeyStroke.getKeyStroke(java.awt.event.KeyEvent.VK_G,
            java.awt.event.InputEvent.CTRL_MASK));
    googleItem.setText("Google Search");
    googleItem.addActionListener(new java.awt.event.ActionListener() {
        public void actionPerformed(java.awt.event.ActionEvent evt) {
            googleItemActionPerformed(evt);
        }
    });
    jMenu1.add(googleItem);

    wikiItem.setAccelerator(javax.swing.KeyStroke.getKeyStroke(java.awt.event.KeyEvent.VK_W,
            java.awt.event.InputEvent.SHIFT_MASK | java.awt.event.InputEvent.CTRL_MASK));
    wikiItem.setText("Wikipedia Search");
    wikiItem.addActionListener(new java.awt.event.ActionListener() {
        public void actionPerformed(java.awt.event.ActionEvent evt) {
            wikiItemActionPerformed(evt);
        }
    });
    jMenu1.add(wikiItem);

    jMenuBar1.add(jMenu1);

    pkgMenu.setText(bundle.getString("pkgMenu.name")); // NOI18N
    jMenuBar1.add(pkgMenu);

    debugMenu.setText("Debug");

    runScriptItem.setAccelerator(javax.swing.KeyStroke.getKeyStroke(java.awt.event.KeyEvent.VK_F6, 0));
    runScriptItem
            .setIcon(new javax.swing.ImageIcon(getClass().getResource("/org/domainmath/gui/icons/Run.png"))); // NOI18N
    runScriptItem.setText("Run Script");
    runScriptItem.addActionListener(new java.awt.event.ActionListener() {
        public void actionPerformed(java.awt.event.ActionEvent evt) {
            runScriptItemActionPerformed(evt);
        }
    });
    debugMenu.add(runScriptItem);

    runScriptCItem.setAccelerator(javax.swing.KeyStroke.getKeyStroke(java.awt.event.KeyEvent.VK_F6,
            java.awt.event.InputEvent.SHIFT_MASK));
    runScriptCItem.setText("Run Script from Console");
    runScriptCItem.addActionListener(new java.awt.event.ActionListener() {
        public void actionPerformed(java.awt.event.ActionEvent evt) {
            runScriptCItemActionPerformed(evt);
        }
    });
    debugMenu.add(runScriptCItem);

    jMenuItem8.setText("Edit Run Configuration");
    jMenuItem8.addActionListener(new java.awt.event.ActionListener() {
        public void actionPerformed(java.awt.event.ActionEvent evt) {
            jMenuItem8ActionPerformed(evt);
        }
    });
    debugMenu.add(jMenuItem8);
    debugMenu.add(jSeparator8);

    debugScriptMenuItem.setAccelerator(javax.swing.KeyStroke.getKeyStroke(java.awt.event.KeyEvent.VK_F5,
            java.awt.event.InputEvent.CTRL_MASK));
    debugScriptMenuItem.setText("Debug Script");
    debugScriptMenuItem.addActionListener(new java.awt.event.ActionListener() {
        public void actionPerformed(java.awt.event.ActionEvent evt) {
            debugScriptMenuItemActionPerformed(evt);
        }
    });
    debugMenu.add(debugScriptMenuItem);

    testScriptMenuItem.setAccelerator(javax.swing.KeyStroke.getKeyStroke(java.awt.event.KeyEvent.VK_T,
            java.awt.event.InputEvent.SHIFT_MASK | java.awt.event.InputEvent.CTRL_MASK));
    testScriptMenuItem.setText("Test Script");
    testScriptMenuItem.addActionListener(new java.awt.event.ActionListener() {
        public void actionPerformed(java.awt.event.ActionEvent evt) {
            testScriptMenuItemActionPerformed(evt);
        }
    });
    debugMenu.add(testScriptMenuItem);

    toggleBreakpointItem.setAccelerator(javax.swing.KeyStroke.getKeyStroke(java.awt.event.KeyEvent.VK_F9, 0));
    toggleBreakpointItem.setIcon(
            new javax.swing.ImageIcon(getClass().getResource("/org/domainmath/gui/resources/stop.png"))); // NOI18N
    toggleBreakpointItem.setText("Toggle Breakpoint");
    toggleBreakpointItem.addActionListener(new java.awt.event.ActionListener() {
        public void actionPerformed(java.awt.event.ActionEvent evt) {
            toggleBreakpointItemActionPerformed(evt);
        }
    });
    debugMenu.add(toggleBreakpointItem);

    removeToggleBreakpointItem.setAccelerator(javax.swing.KeyStroke.getKeyStroke(java.awt.event.KeyEvent.VK_F9,
            java.awt.event.InputEvent.SHIFT_MASK));
    removeToggleBreakpointItem.setText("Remove Toggle Breakpoint");
    removeToggleBreakpointItem.addActionListener(new java.awt.event.ActionListener() {
        public void actionPerformed(java.awt.event.ActionEvent evt) {
            removeToggleBreakpointItemActionPerformed(evt);
        }
    });
    debugMenu.add(removeToggleBreakpointItem);

    clearAllBreakpointsItem.setAccelerator(javax.swing.KeyStroke.getKeyStroke(java.awt.event.KeyEvent.VK_F9,
            java.awt.event.InputEvent.SHIFT_MASK | java.awt.event.InputEvent.CTRL_MASK));
    clearAllBreakpointsItem.setText("Clear All Breakpoints...");
    clearAllBreakpointsItem.addActionListener(new java.awt.event.ActionListener() {
        public void actionPerformed(java.awt.event.ActionEvent evt) {
            clearAllBreakpointsItemActionPerformed(evt);
        }
    });
    debugMenu.add(clearAllBreakpointsItem);
    debugMenu.add(jSeparator10);

    stepItem.setAccelerator(javax.swing.KeyStroke.getKeyStroke(java.awt.event.KeyEvent.VK_F10,
            java.awt.event.InputEvent.SHIFT_MASK));
    stepItem.setIcon(new javax.swing.ImageIcon(getClass().getResource("/org/domainmath/gui/icons/step.png"))); // NOI18N
    stepItem.setText("Step");
    stepItem.addActionListener(new java.awt.event.ActionListener() {
        public void actionPerformed(java.awt.event.ActionEvent evt) {
            stepItemActionPerformed(evt);
        }
    });
    debugMenu.add(stepItem);

    stepInItem.setAccelerator(javax.swing.KeyStroke.getKeyStroke(java.awt.event.KeyEvent.VK_F11, 0));
    stepInItem.setIcon(
            new javax.swing.ImageIcon(getClass().getResource("/org/domainmath/gui/icons/step-in.png"))); // NOI18N
    stepInItem.setText("Step in");
    stepInItem.addActionListener(new java.awt.event.ActionListener() {
        public void actionPerformed(java.awt.event.ActionEvent evt) {
            stepInItemActionPerformed(evt);
        }
    });
    debugMenu.add(stepInItem);

    stepOutItem.setAccelerator(javax.swing.KeyStroke.getKeyStroke(java.awt.event.KeyEvent.VK_F11,
            java.awt.event.InputEvent.SHIFT_MASK));
    stepOutItem.setIcon(
            new javax.swing.ImageIcon(getClass().getResource("/org/domainmath/gui/icons/step-out.png"))); // NOI18N
    stepOutItem.setText("Step out");
    stepOutItem.addActionListener(new java.awt.event.ActionListener() {
        public void actionPerformed(java.awt.event.ActionEvent evt) {
            stepOutItemActionPerformed(evt);
        }
    });
    debugMenu.add(stepOutItem);

    continueItem.setAccelerator(javax.swing.KeyStroke.getKeyStroke(java.awt.event.KeyEvent.VK_F8, 0));
    continueItem.setText("Continue");
    continueItem.addActionListener(new java.awt.event.ActionListener() {
        public void actionPerformed(java.awt.event.ActionEvent evt) {
            continueItemActionPerformed(evt);
        }
    });
    debugMenu.add(continueItem);
    debugMenu.add(jSeparator5);

    finishDebugItem.setAccelerator(javax.swing.KeyStroke.getKeyStroke(java.awt.event.KeyEvent.VK_F5,
            java.awt.event.InputEvent.SHIFT_MASK));
    finishDebugItem
            .setIcon(new javax.swing.ImageIcon(getClass().getResource("/org/domainmath/gui/icons/finish.png"))); // NOI18N
    finishDebugItem.setText("Finish Debugger Session");
    finishDebugItem.addActionListener(new java.awt.event.ActionListener() {
        public void actionPerformed(java.awt.event.ActionEvent evt) {
            finishDebugItemActionPerformed(evt);
        }
    });
    debugMenu.add(finishDebugItem);

    jMenuBar1.add(debugMenu);

    toolsMenu.setMnemonic(java.util.ResourceBundle.getBundle("org/domainmath/gui/resources/DomainMath_en")
            .getString("ToolsMenu.mnemonic").charAt(0));
    toolsMenu.setText(bundle.getString("ToolsMenu.name")); // NOI18N

    fltkplotItem.setAccelerator(javax.swing.KeyStroke.getKeyStroke(java.awt.event.KeyEvent.VK_R,
            java.awt.event.InputEvent.SHIFT_MASK | java.awt.event.InputEvent.CTRL_MASK));
    fltkplotItem.setMnemonic(java.util.ResourceBundle.getBundle("org/domainmath/gui/resources/DomainMath_en")
            .getString("fltkPlotItem.mnemonic").charAt(0));
    fltkplotItem.setText(bundle.getString("fltkPlotItem.name")); // NOI18N
    fltkplotItem.setToolTipText(bundle.getString("fltkPlotItem.tooltip")); // NOI18N
    fltkplotItem.addActionListener(new java.awt.event.ActionListener() {
        public void actionPerformed(java.awt.event.ActionEvent evt) {
            fltkplotItemActionPerformed(evt);
        }
    });
    toolsMenu.add(fltkplotItem);

    octaveCmdItem.setMnemonic(java.util.ResourceBundle.getBundle("org/domainmath/gui/resources/DomainMath_en")
            .getString("octaveCmdItem.mnemonic").charAt(0));
    octaveCmdItem.setText(bundle.getString("octaveCmdItem.name")); // NOI18N
    octaveCmdItem.setToolTipText(bundle.getString("octaveCmdItem.tooltip")); // NOI18N
    octaveCmdItem.addActionListener(new java.awt.event.ActionListener() {
        public void actionPerformed(java.awt.event.ActionEvent evt) {
            octaveCmdItemActionPerformed(evt);
        }
    });
    toolsMenu.add(octaveCmdItem);

    jMenuBar1.add(toolsMenu);

    jMenu2.setText(bundle.getString("windowMenu.title")); // NOI18N

    previousWindowItem.setAccelerator(javax.swing.KeyStroke.getKeyStroke(java.awt.event.KeyEvent.VK_PAGE_DOWN,
            java.awt.event.InputEvent.CTRL_MASK));
    previousWindowItem.setIcon(
            new javax.swing.ImageIcon(getClass().getResource("/org/domainmath/gui/icons/go-previous.png"))); // NOI18N
    previousWindowItem.setText(bundle.getString("previousWindowItem.title")); // NOI18N
    previousWindowItem.setToolTipText(bundle.getString("previousWindowItem.tooltip")); // NOI18N
    previousWindowItem.addActionListener(new java.awt.event.ActionListener() {
        public void actionPerformed(java.awt.event.ActionEvent evt) {
            previousWindowItemActionPerformed(evt);
        }
    });
    jMenu2.add(previousWindowItem);

    nextWindowItem.setAccelerator(javax.swing.KeyStroke.getKeyStroke(java.awt.event.KeyEvent.VK_PAGE_UP,
            java.awt.event.InputEvent.CTRL_MASK));
    nextWindowItem.setIcon(
            new javax.swing.ImageIcon(getClass().getResource("/org/domainmath/gui/icons/go-next.png"))); // NOI18N
    nextWindowItem.setText(bundle.getString("nextWindowItem.title")); // NOI18N
    nextWindowItem.addActionListener(new java.awt.event.ActionListener() {
        public void actionPerformed(java.awt.event.ActionEvent evt) {
            nextWindowItemActionPerformed(evt);
        }
    });
    jMenu2.add(nextWindowItem);
    jMenu2.add(jSeparator29);

    closeItem.setAccelerator(javax.swing.KeyStroke.getKeyStroke(java.awt.event.KeyEvent.VK_W,
            java.awt.event.InputEvent.ALT_MASK));
    closeItem.setText(bundle.getString("closeMenuItem.name")); // NOI18N
    closeItem.setToolTipText(bundle.getString("closeItem.tooltip")); // NOI18N
    closeItem.addActionListener(new java.awt.event.ActionListener() {
        public void actionPerformed(java.awt.event.ActionEvent evt) {
            closeItemActionPerformed(evt);
        }
    });
    jMenu2.add(closeItem);

    closeAllItem.setAccelerator(javax.swing.KeyStroke.getKeyStroke(java.awt.event.KeyEvent.VK_W,
            java.awt.event.InputEvent.ALT_MASK | java.awt.event.InputEvent.SHIFT_MASK));
    closeAllItem.setText(bundle.getString("closeAllItem.name")); // NOI18N
    closeAllItem.setToolTipText(bundle.getString("closeAllItem.tooltip")); // NOI18N
    closeAllItem.addActionListener(new java.awt.event.ActionListener() {
        public void actionPerformed(java.awt.event.ActionEvent evt) {
            closeAllItemActionPerformed(evt);
        }
    });
    jMenu2.add(closeAllItem);
    jMenu2.add(jSeparator18);

    windowsItem.setAccelerator(javax.swing.KeyStroke.getKeyStroke(java.awt.event.KeyEvent.VK_F4,
            java.awt.event.InputEvent.SHIFT_MASK));
    windowsItem.setText(bundle.getString("windowsItem.title")); // NOI18N
    windowsItem.addActionListener(new java.awt.event.ActionListener() {
        public void actionPerformed(java.awt.event.ActionEvent evt) {
            windowsItemActionPerformed(evt);
        }
    });
    jMenu2.add(windowsItem);

    jMenuBar1.add(jMenu2);

    helpMenu.setMnemonic(java.util.ResourceBundle.getBundle("org/domainmath/gui/resources/DomainMath_en")
            .getString("helpMenu.mnemonic").charAt(0));
    helpMenu.setText(bundle.getString("helpMenu.name")); // NOI18N

    forumItem.setText("Forum");
    forumItem.addActionListener(new java.awt.event.ActionListener() {
        public void actionPerformed(java.awt.event.ActionEvent evt) {
            forumItemActionPerformed(evt);
        }
    });
    helpMenu.add(forumItem);

    octaveInfoItem.setMnemonic(java.util.ResourceBundle.getBundle("org/domainmath/gui/resources/DomainMath_en")
            .getString("octInfoItem.mnemonic").charAt(0));
    octaveInfoItem.setText(bundle.getString("octInfoItem.name")); // NOI18N
    octaveInfoItem.setToolTipText(bundle.getString("octInfoItem.tooltip")); // NOI18N
    octaveInfoItem.addActionListener(new java.awt.event.ActionListener() {
        public void actionPerformed(java.awt.event.ActionEvent evt) {
            octaveInfoItemActionPerformed(evt);
        }
    });
    helpMenu.add(octaveInfoItem);
    helpMenu.add(jSeparator12);

    quickHelpItem.setAccelerator(javax.swing.KeyStroke.getKeyStroke(java.awt.event.KeyEvent.VK_F1, 0));
    quickHelpItem.setText(bundle.getString("quickHelpItem.name")); // NOI18N
    quickHelpItem.addActionListener(new java.awt.event.ActionListener() {
        public void actionPerformed(java.awt.event.ActionEvent evt) {
            quickHelpItemActionPerformed(evt);
        }
    });
    helpMenu.add(quickHelpItem);

    jMenuItem9.setAccelerator(javax.swing.KeyStroke.getKeyStroke(java.awt.event.KeyEvent.VK_F1,
            java.awt.event.InputEvent.SHIFT_MASK));
    jMenuItem9.setText("Package  Documentation");
    jMenuItem9.addActionListener(new java.awt.event.ActionListener() {
        public void actionPerformed(java.awt.event.ActionEvent evt) {
            jMenuItem9ActionPerformed(evt);
        }
    });
    helpMenu.add(jMenuItem9);

    docPkgItem.setText("Package Online  Documentation");
    docPkgItem.addActionListener(new java.awt.event.ActionListener() {
        public void actionPerformed(java.awt.event.ActionEvent evt) {
            docPkgItemActionPerformed(evt);
        }
    });
    helpMenu.add(docPkgItem);

    referenceMenu.setText(bundle.getString("referencesMenu.name")); // NOI18N
    helpMenu.add(referenceMenu);

    referenceItem.setMnemonic(java.util.ResourceBundle.getBundle("org/domainmath/gui/resources/DomainMath_en")
            .getString("addReferencesItem.mnemonic").charAt(0));
    referenceItem.setText(bundle.getString("addReferencesItem.name")); // NOI18N
    referenceItem.setToolTipText(bundle.getString("addReferencesItem.tooltip")); // NOI18N
    referenceItem.addActionListener(new java.awt.event.ActionListener() {
        public void actionPerformed(java.awt.event.ActionEvent evt) {
            referenceItemActionPerformed(evt);
        }
    });
    helpMenu.add(referenceItem);
    helpMenu.add(jSeparator6);

    checkForUpdatesMenuItem.setText(bundle.getString("checkForUpdatesMenuItem.text")); // NOI18N
    checkForUpdatesMenuItem.addActionListener(new java.awt.event.ActionListener() {
        public void actionPerformed(java.awt.event.ActionEvent evt) {
            checkForUpdatesMenuItemActionPerformed(evt);
        }
    });
    helpMenu.add(checkForUpdatesMenuItem);

    onlineHelpItem.setText("Help and Support");
    onlineHelpItem.addActionListener(new java.awt.event.ActionListener() {
        public void actionPerformed(java.awt.event.ActionEvent evt) {
            onlineHelpItemActionPerformed(evt);
        }
    });
    helpMenu.add(onlineHelpItem);

    faqItem.setText("Online FAQ");
    faqItem.addActionListener(new java.awt.event.ActionListener() {
        public void actionPerformed(java.awt.event.ActionEvent evt) {
            faqItemActionPerformed(evt);
        }
    });
    helpMenu.add(faqItem);
    helpMenu.add(jSeparator14);

    reportBugItem.setMnemonic(java.util.ResourceBundle.getBundle("org/domainmath/gui/resources/DomainMath_en")
            .getString("reportBugItem.mnemonic").charAt(0));
    reportBugItem.setText(bundle.getString("reportBugItem.name")); // NOI18N
    reportBugItem.setToolTipText(bundle.getString("reportBugItem.tooltip")); // NOI18N
    reportBugItem.addActionListener(new java.awt.event.ActionListener() {
        public void actionPerformed(java.awt.event.ActionEvent evt) {
            reportBugItemActionPerformed(evt);
        }
    });
    helpMenu.add(reportBugItem);

    feedBackItem.setMnemonic(java.util.ResourceBundle.getBundle("org/domainmath/gui/resources/DomainMath_en")
            .getString("yourFeedbackItem.mnemonic").charAt(0));
    feedBackItem.setText(bundle.getString("yourFeedbackItem.name")); // NOI18N
    feedBackItem.setToolTipText(bundle.getString("yourFeedbackItem.tooltip")); // NOI18N
    feedBackItem.addActionListener(new java.awt.event.ActionListener() {
        public void actionPerformed(java.awt.event.ActionEvent evt) {
            feedBackItemActionPerformed(evt);
        }
    });
    helpMenu.add(feedBackItem);
    helpMenu.add(jSeparator7);

    AboutItem.setMnemonic(java.util.ResourceBundle.getBundle("org/domainmath/gui/resources/DomainMath_en")
            .getString("aboutItem.mnemonic").charAt(0));
    AboutItem.setText(bundle.getString("aboutItem.name")); // NOI18N
    AboutItem.setToolTipText(bundle.getString("aboutItem.tooltip")); // NOI18N
    AboutItem.addActionListener(new java.awt.event.ActionListener() {
        public void actionPerformed(java.awt.event.ActionEvent evt) {
            AboutItemActionPerformed(evt);
        }
    });
    helpMenu.add(AboutItem);

    jMenuBar1.add(helpMenu);

    setJMenuBar(jMenuBar1);

    pack();
}

From source file:com.virtusa.isq.rft.runtime.RFTCommandBase.java

/**
 * Get the selected text in webpage to the clipboard and compare the value
 * with the given input./*  w  ww  .ja  v a 2s .c  om*/
 * 
 * @param value
 *            the value
 * @throws Exception
 *             the exception
 */

private void fireEventVerifyValue(final String value) throws Exception {

    String clipBoardText = "";
    Robot robot = new Robot();

    robot.keyPress(KeyEvent.VK_CONTROL);
    robot.keyPress(KeyEvent.VK_C);
    robot.keyRelease(KeyEvent.VK_C);
    robot.keyRelease(KeyEvent.VK_CONTROL);

    Utils.pause(retryInterval);
    Transferable trans = Toolkit.getDefaultToolkit().getSystemClipboard().getContents(null);

    try {
        if (trans != null) {
            clipBoardText = (String) trans.getTransferData(DataFlavor.stringFlavor);
        }
    } catch (Exception e) {
        e.printStackTrace();
    }

    if (clipBoardText.equals(value)) {

        reportResults(ReportLogger.ReportLevel.SUCCESS, "Fire Event", "Success",
                "Verify value passed. Value : " + value);

    } else {

        reportResults(true, ReportLogger.ReportLevel.FAILURE, "Fire Event", "Error",
                "Verify value match expected. ::: " + "Expected value : " + value + " Actual value : "
                        + clipBoardText);
    }
}

From source file:org.forester.archaeopteryx.TreePanel.java

final private void keyPressedCalls(final KeyEvent e) {
    if (isOvOn() && (getMousePosition() != null) && (getMousePosition().getLocation() != null)) {
        if (inOvVirtualRectangle(getMousePosition().x, getMousePosition().y)) {
            if (!isInOvRect()) {
                setInOvRect(true);/*from   w ww .  jav  a  2 s  .c  o m*/
            }
        } else if (isInOvRect()) {
            setInOvRect(false);
        }
    }
    if (e.getModifiersEx() == InputEvent.CTRL_DOWN_MASK) {
        if ((e.getKeyCode() == KeyEvent.VK_DELETE) || (e.getKeyCode() == KeyEvent.VK_HOME)
                || (e.getKeyCode() == KeyEvent.VK_F)) {
            getMainPanel().getTreeFontSet().mediumFonts();
            getMainPanel().getControlPanel().displayedPhylogenyMightHaveChanged(true);
        } else if ((e.getKeyCode() == KeyEvent.VK_SUBTRACT) || (e.getKeyCode() == KeyEvent.VK_MINUS)) {
            getMainPanel().getTreeFontSet().decreaseFontSize();
            getMainPanel().getControlPanel().displayedPhylogenyMightHaveChanged(true);
        } else if (plusPressed(e.getKeyCode())) {
            getMainPanel().getTreeFontSet().increaseFontSize();
            getMainPanel().getControlPanel().displayedPhylogenyMightHaveChanged(true);
        }
    } else {
        if ((e.getKeyCode() == KeyEvent.VK_DELETE) || (e.getKeyCode() == KeyEvent.VK_HOME)
                || (e.getKeyCode() == KeyEvent.VK_F)) {
            getControlPanel().showWhole();
        } else if ((e.getKeyCode() == KeyEvent.VK_UP) || (e.getKeyCode() == KeyEvent.VK_DOWN)
                || (e.getKeyCode() == KeyEvent.VK_LEFT) || (e.getKeyCode() == KeyEvent.VK_RIGHT)) {
            if (e.getModifiersEx() == InputEvent.SHIFT_DOWN_MASK) {
                if (e.getKeyCode() == KeyEvent.VK_UP) {
                    getMainPanel().getControlPanel().zoomInY(Constants.WHEEL_ZOOM_IN_FACTOR);
                    getMainPanel().getControlPanel().displayedPhylogenyMightHaveChanged(false);
                } else if (e.getKeyCode() == KeyEvent.VK_DOWN) {
                    getMainPanel().getControlPanel().zoomOutY(Constants.WHEEL_ZOOM_OUT_FACTOR);
                    getMainPanel().getControlPanel().displayedPhylogenyMightHaveChanged(false);
                } else if (e.getKeyCode() == KeyEvent.VK_LEFT) {
                    getMainPanel().getControlPanel().zoomOutX(Constants.WHEEL_ZOOM_OUT_FACTOR,
                            Constants.WHEEL_ZOOM_OUT_X_CORRECTION_FACTOR);
                    getMainPanel().getControlPanel().displayedPhylogenyMightHaveChanged(false);
                } else if (e.getKeyCode() == KeyEvent.VK_RIGHT) {
                    getMainPanel().getControlPanel().zoomInX(Constants.WHEEL_ZOOM_IN_FACTOR,
                            Constants.WHEEL_ZOOM_IN_FACTOR);
                    getMainPanel().getControlPanel().displayedPhylogenyMightHaveChanged(false);
                }
            } else {
                final int d = 80;
                int dx = 0;
                int dy = -d;
                if (e.getKeyCode() == KeyEvent.VK_DOWN) {
                    dy = d;
                } else if (e.getKeyCode() == KeyEvent.VK_LEFT) {
                    dx = -d;
                    dy = 0;
                } else if (e.getKeyCode() == KeyEvent.VK_RIGHT) {
                    dx = d;
                    dy = 0;
                }
                final Point scroll_position = getMainPanel().getCurrentScrollPane().getViewport()
                        .getViewPosition();
                scroll_position.x = scroll_position.x + dx;
                scroll_position.y = scroll_position.y + dy;
                if (scroll_position.x <= 0) {
                    scroll_position.x = 0;
                } else {
                    final int max_x = getMainPanel().getCurrentScrollPane().getHorizontalScrollBar()
                            .getMaximum()
                            - getMainPanel().getCurrentScrollPane().getHorizontalScrollBar().getVisibleAmount();
                    if (scroll_position.x >= max_x) {
                        scroll_position.x = max_x;
                    }
                }
                if (scroll_position.y <= 0) {
                    scroll_position.y = 0;
                } else {
                    final int max_y = getMainPanel().getCurrentScrollPane().getVerticalScrollBar().getMaximum()
                            - getMainPanel().getCurrentScrollPane().getVerticalScrollBar().getVisibleAmount();
                    if (scroll_position.y >= max_y) {
                        scroll_position.y = max_y;
                    }
                }
                repaint();
                getMainPanel().getCurrentScrollPane().getViewport().setViewPosition(scroll_position);
            }
        } else if ((e.getKeyCode() == KeyEvent.VK_SUBTRACT) || (e.getKeyCode() == KeyEvent.VK_MINUS)) {
            getMainPanel().getControlPanel().zoomOutY(Constants.WHEEL_ZOOM_OUT_FACTOR);
            getMainPanel().getControlPanel().zoomOutX(Constants.WHEEL_ZOOM_OUT_FACTOR,
                    Constants.WHEEL_ZOOM_OUT_X_CORRECTION_FACTOR);
            getMainPanel().getControlPanel().displayedPhylogenyMightHaveChanged(false);
        } else if (plusPressed(e.getKeyCode())) {
            getMainPanel().getControlPanel().zoomInX(Constants.WHEEL_ZOOM_IN_FACTOR,
                    Constants.WHEEL_ZOOM_IN_FACTOR);
            getMainPanel().getControlPanel().zoomInY(Constants.WHEEL_ZOOM_IN_FACTOR);
            getMainPanel().getControlPanel().displayedPhylogenyMightHaveChanged(false);
        } else if (e.getKeyCode() == KeyEvent.VK_S) {
            if ((getPhylogenyGraphicsType() == PHYLOGENY_GRAPHICS_TYPE.UNROOTED)
                    || (getPhylogenyGraphicsType() == PHYLOGENY_GRAPHICS_TYPE.CIRCULAR)) {
                setStartingAngle((getStartingAngle() % TWO_PI) + ANGLE_ROTATION_UNIT);
                getControlPanel().displayedPhylogenyMightHaveChanged(false);
            }
        } else if (e.getKeyCode() == KeyEvent.VK_A) {
            if ((getPhylogenyGraphicsType() == PHYLOGENY_GRAPHICS_TYPE.UNROOTED)
                    || (getPhylogenyGraphicsType() == PHYLOGENY_GRAPHICS_TYPE.CIRCULAR)) {
                setStartingAngle((getStartingAngle() % TWO_PI) - ANGLE_ROTATION_UNIT);
                if (getStartingAngle() < 0) {
                    setStartingAngle(TWO_PI + getStartingAngle());
                }
                getControlPanel().displayedPhylogenyMightHaveChanged(false);
            }
        } else if (e.getKeyCode() == KeyEvent.VK_D) {
            boolean selected = false;
            if (getOptions().getNodeLabelDirection() == NODE_LABEL_DIRECTION.HORIZONTAL) {
                getOptions().setNodeLabelDirection(NODE_LABEL_DIRECTION.RADIAL);
                selected = true;
            } else {
                getOptions().setNodeLabelDirection(NODE_LABEL_DIRECTION.HORIZONTAL);
            }
            if (getMainPanel().getMainFrame() == null) {
                // Must be "E" applet version.
                final ArchaeopteryxE ae = (ArchaeopteryxE) ((MainPanelApplets) getMainPanel()).getApplet();
                if (ae.getlabelDirectionCbmi() != null) {
                    ae.getlabelDirectionCbmi().setSelected(selected);
                }
            } else {
                getMainPanel().getMainFrame().getlabelDirectionCbmi().setSelected(selected);
            }
            repaint();
        } else if (e.getKeyCode() == KeyEvent.VK_X) {
            switchDisplaygetPhylogenyGraphicsType();
            repaint();
        } else if (e.getKeyCode() == KeyEvent.VK_C) {
            cycleColors();
            repaint();
        } else if (getOptions().isShowOverview() && isOvOn() && (e.getKeyCode() == KeyEvent.VK_O)) {
            MainFrame.cycleOverview(getOptions(), this);
            repaint();
        } else if (getOptions().isShowOverview() && isOvOn() && (e.getKeyCode() == KeyEvent.VK_I)) {
            increaseOvSize();
        } else if (getOptions().isShowOverview() && isOvOn() && (e.getKeyCode() == KeyEvent.VK_U)) {
            decreaseOvSize();
        }
        e.consume();
    }
}

From source file:savant.view.swing.Savant.java

private void initMenu() {
    loadGenomeItem.setAccelerator(// w w w.j a  v  a2 s  . co m
            javax.swing.KeyStroke.getKeyStroke(java.awt.event.KeyEvent.VK_G, MiscUtils.MENU_MASK));
    loadFromFileItem.setAccelerator(
            javax.swing.KeyStroke.getKeyStroke(java.awt.event.KeyEvent.VK_T, MiscUtils.MENU_MASK));
    loadFromURLItem.setAccelerator(
            javax.swing.KeyStroke.getKeyStroke(java.awt.event.KeyEvent.VK_U, MiscUtils.MENU_MASK));
    loadFromDataSourcePluginItem.setAccelerator(
            javax.swing.KeyStroke.getKeyStroke(java.awt.event.KeyEvent.VK_E, MiscUtils.MENU_MASK));
    openProjectItem.setAccelerator(
            javax.swing.KeyStroke.getKeyStroke(java.awt.event.KeyEvent.VK_O, MiscUtils.MENU_MASK));
    saveProjectItem.setAccelerator(
            javax.swing.KeyStroke.getKeyStroke(java.awt.event.KeyEvent.VK_S, MiscUtils.MENU_MASK));
    saveProjectAsItem.setAccelerator(javax.swing.KeyStroke.getKeyStroke(java.awt.event.KeyEvent.VK_S,
            MiscUtils.MENU_MASK | java.awt.event.InputEvent.SHIFT_MASK));
    formatItem.setAccelerator(
            javax.swing.KeyStroke.getKeyStroke(java.awt.event.KeyEvent.VK_F, MiscUtils.MENU_MASK));
    exitItem.setAccelerator(
            javax.swing.KeyStroke.getKeyStroke(java.awt.event.KeyEvent.VK_Q, MiscUtils.MENU_MASK));
    undoItem.setAccelerator(
            javax.swing.KeyStroke.getKeyStroke(java.awt.event.KeyEvent.VK_Z, MiscUtils.MENU_MASK));
    redoItem.setAccelerator(
            javax.swing.KeyStroke.getKeyStroke(java.awt.event.KeyEvent.VK_Y, MiscUtils.MENU_MASK));
    bookmarkItem.setAccelerator(
            javax.swing.KeyStroke.getKeyStroke(java.awt.event.KeyEvent.VK_B, MiscUtils.MENU_MASK));
    navigationItem.setAccelerator(javax.swing.KeyStroke.getKeyStroke(java.awt.event.KeyEvent.VK_R,
            java.awt.event.InputEvent.SHIFT_MASK | MiscUtils.MENU_MASK));
    panLeftItem.setAccelerator(javax.swing.KeyStroke.getKeyStroke(java.awt.event.KeyEvent.VK_LEFT,
            java.awt.event.InputEvent.SHIFT_MASK));
    panRightItem.setAccelerator(javax.swing.KeyStroke.getKeyStroke(java.awt.event.KeyEvent.VK_RIGHT,
            java.awt.event.InputEvent.SHIFT_MASK));
    zoomInItem.setAccelerator(javax.swing.KeyStroke.getKeyStroke(java.awt.event.KeyEvent.VK_UP,
            java.awt.event.InputEvent.SHIFT_MASK));
    zoomOutItem.setAccelerator(javax.swing.KeyStroke.getKeyStroke(java.awt.event.KeyEvent.VK_DOWN,
            java.awt.event.InputEvent.SHIFT_MASK));
    toStartItem.setAccelerator(javax.swing.KeyStroke.getKeyStroke(java.awt.event.KeyEvent.VK_HOME,
            java.awt.event.InputEvent.SHIFT_MASK));
    toEndItem.setAccelerator(javax.swing.KeyStroke.getKeyStroke(java.awt.event.KeyEvent.VK_END,
            java.awt.event.InputEvent.SHIFT_MASK));
    preferencesItem.setAccelerator(
            javax.swing.KeyStroke.getKeyStroke(java.awt.event.KeyEvent.VK_P, MiscUtils.MENU_MASK));
    crosshairItem.setAccelerator(
            javax.swing.KeyStroke.getKeyStroke(java.awt.event.KeyEvent.VK_J, MiscUtils.MENU_MASK));
    plumblineItem.setAccelerator(
            javax.swing.KeyStroke.getKeyStroke(java.awt.event.KeyEvent.VK_K, MiscUtils.MENU_MASK));
    spotlightItem.setAccelerator(
            javax.swing.KeyStroke.getKeyStroke(java.awt.event.KeyEvent.VK_L, MiscUtils.MENU_MASK));
    bookmarksItem.setAccelerator(javax.swing.KeyStroke.getKeyStroke(java.awt.event.KeyEvent.VK_B,
            MiscUtils.MENU_MASK | java.awt.event.InputEvent.SHIFT_MASK));
    genomeItem.setAccelerator(javax.swing.KeyStroke.getKeyStroke(java.awt.event.KeyEvent.VK_C,
            MiscUtils.MENU_MASK | java.awt.event.InputEvent.SHIFT_MASK));
    rulerItem.setAccelerator(javax.swing.KeyStroke.getKeyStroke(java.awt.event.KeyEvent.VK_L,
            MiscUtils.MENU_MASK | java.awt.event.InputEvent.SHIFT_MASK));
    statusBarItem.setAccelerator(javax.swing.KeyStroke.getKeyStroke(java.awt.event.KeyEvent.VK_S,
            MiscUtils.MENU_MASK | java.awt.event.InputEvent.SHIFT_MASK));
    pluginToolbarItem.setAccelerator(javax.swing.KeyStroke.getKeyStroke(java.awt.event.KeyEvent.VK_T,
            MiscUtils.MENU_MASK | java.awt.event.InputEvent.SHIFT_MASK));
    exportItem.setAccelerator(
            javax.swing.KeyStroke.getKeyStroke(java.awt.event.KeyEvent.VK_I, MiscUtils.MENU_MASK));

    if (!Desktop.isDesktopSupported() || !Desktop.getDesktop().isSupported(Desktop.Action.BROWSE)) {
        tutorialsItem.setEnabled(false);
        userManualItem.setEnabled(false);
        websiteItem.setEnabled(false);
    }
    initBrowseMenu();
    try {
        RecentTracksController.getInstance().populateMenu(recentTrackMenu);
        RecentProjectsController.getInstance().populateMenu(recentProjectMenu);
    } catch (IOException ex) {
        LOG.error("Unable to populate Recent Items menu.", ex);
    }

}

From source file:edu.ku.brc.ui.UIRegistry.java

public JMenu createEditMenu() {
    JMenu menu = new JMenu(getResourceString("EDIT"));
    menu.setMnemonic(KeyEvent.VK_E);
    // Undo and redo are actions of our own creation.
    undoAction = (UndoAction) makeAction(UndoAction.class, this, "Undo", null, null, new Integer(KeyEvent.VK_Z),
            KeyStroke.getKeyStroke(KeyEvent.VK_Z, Toolkit.getDefaultToolkit().getMenuShortcutKeyMask()));
    register(UNDO, menu.add(undoAction));
    actionMap.put(UNDO, undoAction);/*from  w  w  w  .j ava2s  . c  o m*/
    redoAction = (RedoAction) makeAction(RedoAction.class, this, "Redo", null, null, new Integer(KeyEvent.VK_Y),
            KeyStroke.getKeyStroke(KeyEvent.VK_Y, Toolkit.getDefaultToolkit().getMenuShortcutKeyMask()));
    register(REDO, menu.add(redoAction));
    actionMap.put(REDO, redoAction);

    menu.addSeparator();
    // These actions come from the default editor kit.  Get the ones we want
    // and stick them in the menu.
    Action cutAction = makeAction(DefaultEditorKit.CutAction.class, null, "Cut", null,
            "Cut selection to clipboard", // I18N ????
            new Integer(KeyEvent.VK_X),
            KeyStroke.getKeyStroke(KeyEvent.VK_X, Toolkit.getDefaultToolkit().getMenuShortcutKeyMask()));
    register(CUT, menu.add(cutAction));
    cutAction.setEnabled(false);
    actionMap.put(CUT, cutAction);

    Action copyAction = makeAction(DefaultEditorKit.CopyAction.class, null, "Copy", null,
            "Copy selection to clipboard", new Integer(KeyEvent.VK_C),
            KeyStroke.getKeyStroke(KeyEvent.VK_C, Toolkit.getDefaultToolkit().getMenuShortcutKeyMask()));
    register(COPY, menu.add(copyAction));
    copyAction.setEnabled(false);
    actionMap.put(COPY, copyAction);

    Action pasteAction = makeAction(DefaultEditorKit.PasteAction.class, null, "Paste", null,
            "Paste contents of clipboard", new Integer(KeyEvent.VK_V),
            KeyStroke.getKeyStroke(KeyEvent.VK_V, Toolkit.getDefaultToolkit().getMenuShortcutKeyMask()));
    pasteAction.setEnabled(false);
    register(PASTE, menu.add(pasteAction));
    actionMap.put(PASTE, pasteAction);

    /*
    menu.addSeparator();
    Action selectAllAction = makeAction(SelectAllAction.class,
                                   this,
                                   "Select All",
                                   null,
                                   "Select all text",
                                   new Integer(KeyEvent.VK_A),
                                   KeyStroke.getKeyStroke(KeyEvent.VK_A, Toolkit.getDefaultToolkit().getMenuShortcutKeyMask()));
    menu.add(selectAllAction);
    */
    launchFindReplaceAction = (LaunchFindReplaceAction) makeAction(LaunchFindReplaceAction.class, this, "Find",
            null, null, new Integer(KeyEvent.VK_F),
            KeyStroke.getKeyStroke(KeyEvent.VK_F, Toolkit.getDefaultToolkit().getMenuShortcutKeyMask()));
    //menu.add(launchFindReplaceAction);
    //        launchFindReplaceAction.setEnabled(false);
    //        register(FIND, menu.add(launchFindReplaceAction));
    //        actionMap.put(FIND, launchFindReplaceAction);

    launchFindReplaceAction.setEnabled(false);
    register(FIND, menu.add(launchFindReplaceAction));
    actionMap.put(FIND, launchFindReplaceAction);

    return menu;
}

From source file:com.monead.semantic.workbench.SemanticWorkbench.java

/**
 * Configures the SPARQL file menu. Called at startup
 * and whenever an SPARQL file is opened or saved since
 * the list of recent SPARQL files is presented on the
 * file menu./*from   w  w  w.  j a  va  2 s.c om*/
 */
private void setupSparqlFileMenu() {
    fileSparqlMenu.removeAll();

    fileOpenSparqlFile = new JMenuItem("Open SPARQL File");
    fileOpenSparqlFile.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_S, KeyEvent.ALT_MASK));
    fileOpenSparqlFile.setMnemonic(KeyEvent.VK_S);
    fileOpenSparqlFile.setToolTipText("Open a SPARQL query file");
    fileOpenSparqlFile.addActionListener(new FileSparqlOpenListener());
    fileSparqlMenu.add(fileOpenSparqlFile);

    fileSparqlMenu.addSeparator();

    // Create menu options to open recently accessed SPARQL files
    fileOpenRecentSparqlFile = new JMenuItem[recentSparqlFiles.size()];
    for (int recentFileNumber = 0; recentFileNumber < recentSparqlFiles.size(); ++recentFileNumber) {
        fileOpenRecentSparqlFile[recentFileNumber] = new JMenuItem(
                recentSparqlFiles.get(recentFileNumber).getName());
        fileOpenRecentSparqlFile[recentFileNumber]
                .setToolTipText(recentSparqlFiles.get(recentFileNumber).getAbsolutePath());
        fileOpenRecentSparqlFile[recentFileNumber].addActionListener(new RecentSparqlFileOpenListener());
        fileSparqlMenu.add(fileOpenRecentSparqlFile[recentFileNumber]);
    }

    if (fileOpenRecentSparqlFile.length > 0) {
        fileSparqlMenu.addSeparator();
    }

    fileSaveSparqlQueryToFile = new JMenuItem("Save SPARQL Query");
    fileSaveSparqlQueryToFile
            .setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_Q, KeyEvent.ALT_MASK | KeyEvent.CTRL_MASK));
    fileSaveSparqlQueryToFile.setMnemonic(KeyEvent.VK_Q);
    fileSaveSparqlQueryToFile.setToolTipText("Write the SPARQL query to a file");
    fileSaveSparqlQueryToFile.addActionListener(new FileSparqlSaveListener());
    fileSparqlMenu.add(fileSaveSparqlQueryToFile);

    fileSaveSparqlResultsToFile = new JMenuItem("Save SPARQL Results");
    fileSaveSparqlResultsToFile
            .setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_R, KeyEvent.ALT_MASK | KeyEvent.CTRL_MASK));
    fileSaveSparqlResultsToFile.setMnemonic(KeyEvent.VK_R);
    fileSaveSparqlResultsToFile.setToolTipText("Write the current SPARQL results to a file");
    fileSaveSparqlResultsToFile.addActionListener(new FileSparqlResultsSaveListener());
    fileSparqlMenu.add(fileSaveSparqlResultsToFile);

    fileSparqlMenu.addSeparator();

    fileClearSparqlHistory = new JMenuItem("Clear SPARQL Query History");
    fileClearSparqlHistory.setMnemonic(KeyEvent.VK_C);
    fileClearSparqlHistory.setToolTipText("Clear the history of executed SPARQL queries");
    fileClearSparqlHistory.addActionListener(new FileClearSparqlHistoryListener());
    fileSparqlMenu.add(fileClearSparqlHistory);

}

From source file:com.monead.semantic.workbench.SemanticWorkbench.java

/**
 * Create the edit menu/* w w  w. jav  a 2 s.  c o  m*/
 * 
 * @return The edit menu
 */
private JMenu setupEditMenu() {
    final JMenu menu = new JMenu("Edit");

    menu.setMnemonic(KeyEvent.VK_E);
    menu.setToolTipText("Menu items related to editing the ontology");

    editFind = new JMenuItem("Find (in assertions)");
    editFind.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_F, KeyEvent.CTRL_MASK));
    editFind.setMnemonic(KeyEvent.VK_F);
    editFind.setToolTipText("Find text in the assertions editor");
    editFind.addActionListener(new FindAssertionsTextListener());
    menu.add(editFind);

    editFindNextMatch = new JMenuItem("Next (matching assertion text)");
    editFindNextMatch.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_N, KeyEvent.CTRL_MASK));
    editFindNextMatch.setMnemonic(KeyEvent.VK_N);
    editFindNextMatch.setToolTipText("Find next text match in the assertions editor");
    editFindNextMatch.addActionListener(new FindNextAssertionsTextListener());
    menu.add(editFindNextMatch);

    menu.addSeparator();

    editCommentToggle = new JMenuItem("Toggle Comment");
    editCommentToggle.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_T, KeyEvent.CTRL_MASK));
    editCommentToggle.setMnemonic(KeyEvent.VK_T);
    editCommentToggle
            .setToolTipText("Switch the chosen assertion or query lines between commented and not commented");
    editCommentToggle.addActionListener(new CommentToggleListener());
    editCommentToggle.setEnabled(false);
    menu.add(editCommentToggle);

    editInsertPrefixes = new JMenuItem("Insert Prefixes");
    editInsertPrefixes.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_I, ActionEvent.CTRL_MASK));
    editInsertPrefixes.setMnemonic(KeyEvent.VK_I);
    editInsertPrefixes.setToolTipText("Insert standard prefixes (namespaces)");
    editInsertPrefixes.addActionListener(new InsertPrefixesListener());
    menu.add(editInsertPrefixes);

    menu.addSeparator();

    editExpandAllTreeNodes = new JMenuItem("Expand Entire Tree");
    editExpandAllTreeNodes.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_ADD, ActionEvent.ALT_MASK));
    editExpandAllTreeNodes.setMnemonic(KeyEvent.VK_E);
    editExpandAllTreeNodes.setToolTipText("Expand all tree nodes");
    editExpandAllTreeNodes.addActionListener(new ExpandTreeListener());
    menu.add(editExpandAllTreeNodes);

    editCollapseAllTreeNodes = new JMenuItem("Collapse Entire Tree");
    editCollapseAllTreeNodes.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_SUBTRACT, ActionEvent.ALT_MASK));
    editCollapseAllTreeNodes.setMnemonic(KeyEvent.VK_C);
    editCollapseAllTreeNodes.setToolTipText("Expand all tree nodes");
    editCollapseAllTreeNodes.addActionListener(new CollapseTreeListener());
    menu.add(editCollapseAllTreeNodes);

    menu.addSeparator();

    editEditListOfSparqlServiceUrls = new JMenuItem("Edit SPARQL Service URLs List");
    editEditListOfSparqlServiceUrls.setMnemonic(KeyEvent.VK_S);
    editEditListOfSparqlServiceUrls.setToolTipText("Remove unwanted URLs from the dropdown list");
    editEditListOfSparqlServiceUrls.addActionListener(new EditListOfSparqlServiceUrls());
    menu.add(editEditListOfSparqlServiceUrls);

    return menu;
}

From source file:com.monead.semantic.workbench.SemanticWorkbench.java

/**
 * Create the configuration menu/*  w ww.ja  va  2 s.  com*/
 * 
 * @return The configuration menu
 */
private JMenu setupConfigurationMenu() {
    final JMenu menu = new JMenu("Configure");
    ButtonGroup buttonGroup;

    menu.setMnemonic(KeyEvent.VK_C);
    menu.setToolTipText("Menu items related to configuration");

    buttonGroup = new ButtonGroup();
    setupOutputAssertionLanguage = new JCheckBoxMenuItem[FORMATS.length + 1];
    setupOutputAssertionLanguage[0] = new JCheckBoxMenuItem("Output Format: Auto");
    buttonGroup.add(setupOutputAssertionLanguage[0]);
    menu.add(setupOutputAssertionLanguage[0]);

    for (int index = 0; index < FORMATS.length; ++index) {
        setupOutputAssertionLanguage[index + 1] = new JCheckBoxMenuItem("Output Format: " + FORMATS[index]);
        buttonGroup.add(setupOutputAssertionLanguage[index + 1]);
        menu.add(setupOutputAssertionLanguage[index + 1]);
    }
    setupOutputAssertionLanguage[0].setSelected(true);

    menu.addSeparator();

    buttonGroup = new ButtonGroup();
    setupOutputModelTypeAssertions = new JCheckBoxMenuItem("Output Assertions Only");
    buttonGroup.add(setupOutputModelTypeAssertions);
    menu.add(setupOutputModelTypeAssertions);

    setupOutputModelTypeAssertionsAndInferences = new JCheckBoxMenuItem("Output Assertions and Inferences");
    buttonGroup.add(setupOutputModelTypeAssertionsAndInferences);
    menu.add(setupOutputModelTypeAssertionsAndInferences);

    setupOutputModelTypeAssertions.setSelected(true);

    menu.addSeparator();

    setupAllowMultilineResultOutput = new JCheckBoxMenuItem(
            "Allow Multiple Lines of Text Per Row in SPARQL Query Output");
    setupAllowMultilineResultOutput.setToolTipText("Wrap long values into multiple lines in a display cell");
    setupAllowMultilineResultOutput.setSelected(false);
    menu.add(setupAllowMultilineResultOutput);

    setupOutputFqnNamespaces = new JCheckBoxMenuItem("Show FQN Namespaces Instead of Prefixes in Query Output");
    setupOutputFqnNamespaces
            .setToolTipText("Use the fully qualified namespace. If unchecked use the prefix, if defined");
    setupOutputFqnNamespaces.setSelected(false);
    menu.add(setupOutputFqnNamespaces);

    setupOutputDatatypesForLiterals = new JCheckBoxMenuItem("Show Datatypes on Literals");
    setupOutputDatatypesForLiterals.setToolTipText("Display the datatype after the value, e.g. 4^^xsd:integer");
    setupOutputDatatypesForLiterals.setSelected(false);
    menu.add(setupOutputDatatypesForLiterals);

    setupOutputFlagLiteralValues = new JCheckBoxMenuItem("Flag Literal Values in Query Output");
    setupOutputFlagLiteralValues.setToolTipText("Includes the text 'Lit:' in front of any literal values");
    setupOutputFlagLiteralValues.setSelected(false);
    menu.add(setupOutputFlagLiteralValues);

    setupApplyFormattingToLiteralValues = new JCheckBoxMenuItem("Apply Formatting to Literal Values");
    setupApplyFormattingToLiteralValues.setToolTipText(
            "Apply the XSD-based formatting defined in the configuration to literal values in SPARQL results and tree view display");
    setupApplyFormattingToLiteralValues.setSelected(true);
    menu.add(setupApplyFormattingToLiteralValues);

    setupDisplayImagesInSparqlResults = new JCheckBoxMenuItem(
            "Display Images in Query Output (Slows Results Retrieval)");
    setupDisplayImagesInSparqlResults.setToolTipText("Attempts to download images linked in the results. "
            + "Can run very slowly depending on number and size of images");
    setupDisplayImagesInSparqlResults.setSelected(true);
    menu.add(setupDisplayImagesInSparqlResults);

    menu.addSeparator();

    buttonGroup = new ButtonGroup();
    setupExportSparqlResultsAsCsv = new JCheckBoxMenuItem(
            "Export SPARQL Results to " + EXPORT_FORMAT_LABEL_CSV);
    setupExportSparqlResultsAsCsv.setToolTipText("Export to Comma Separated Value format");
    buttonGroup.add(setupExportSparqlResultsAsCsv);
    menu.add(setupExportSparqlResultsAsCsv);

    setupExportSparqlResultsAsTsv = new JCheckBoxMenuItem(
            "Export SPARQL Results to " + EXPORT_FORMAT_LABEL_TSV);
    setupExportSparqlResultsAsTsv.setToolTipText("Export to Tab Separated Value format");
    buttonGroup.add(setupExportSparqlResultsAsTsv);
    menu.add(setupExportSparqlResultsAsTsv);

    menu.addSeparator();

    setupSparqlResultsToFile = new JCheckBoxMenuItem("Send SPARQL Results Directly to File");
    setupSparqlResultsToFile.setToolTipText(
            "For large results sets this permits writing to file without trying to render on screen");
    menu.add(setupSparqlResultsToFile);

    menu.addSeparator();

    setupEnableStrictMode = new JCheckBoxMenuItem("Enable Strict Checking Mode");
    setupEnableStrictMode.setSelected(true);
    setupEnableStrictMode.addActionListener(new ReasonerConfigurationChange());
    menu.add(setupEnableStrictMode);

    menu.addSeparator();

    setupFont = new JMenuItem("Font");
    setupFont.setMnemonic(KeyEvent.VK_F);
    setupFont.setToolTipText("Set the font used for the display");
    setupFont.addActionListener(new FontSetupListener());
    menu.add(setupFont);

    menu.addSeparator();

    setupProxyEnabled = new JCheckBoxMenuItem("Enable Proxy");
    setupProxyEnabled.setToolTipText("Pass network SPARQL requests through a proxy");
    setupProxyEnabled.addActionListener(new ProxyStatusChangeListener());
    menu.add(setupProxyEnabled);

    setupProxyConfiguration = new JMenuItem("Proxy Settings");
    setupProxyConfiguration.setToolTipText("Configure the proxy");
    setupProxyConfiguration.addActionListener(new ProxySetupListener());
    menu.add(setupProxyConfiguration);

    return menu;
}

From source file:com.monead.semantic.workbench.SemanticWorkbench.java

/**
 * Create the SPARQL server menu//from ww w.j a v  a 2  s .  c o  m
 * 
 * @return The SPARQL server menu
 */
private JMenu setupSparqlServerMenu() {
    final JMenu menu = new JMenu("SPARQL Server");

    menu.setMnemonic(KeyEvent.VK_P);
    menu.setToolTipText("Options for using the SPARQL server");

    sparqlServerStartup = new JMenuItem("Startup SPARQL Server");
    sparqlServerStartup.setMnemonic(KeyEvent.VK_S);
    sparqlServerStartup.setToolTipText("Start the SPARQL server");
    sparqlServerStartup.addActionListener(new SparqlServerStartupListener());
    menu.add(sparqlServerStartup);

    sparqlServerShutdown = new JMenuItem("Shutdown SPARQL Server");
    sparqlServerShutdown.setMnemonic(KeyEvent.VK_H);
    sparqlServerShutdown.setToolTipText("Stop the SPARQL server");
    sparqlServerShutdown.addActionListener(new SparqlServerShutdownListener());
    menu.add(sparqlServerShutdown);

    menu.addSeparator();

    sparqlServerPublishCurrentModel = new JMenuItem("Publish Current Reasoned Model");
    sparqlServerPublishCurrentModel.setMnemonic(KeyEvent.VK_P);
    sparqlServerPublishCurrentModel
            .setToolTipText("Set the model for the SPARQL server to the current one reasoned");
    sparqlServerPublishCurrentModel.addActionListener(new SparqlServerPublishModelListener());
    menu.add(sparqlServerPublishCurrentModel);

    menu.addSeparator();

    sparqlServerConfig = new JMenuItem("Configure the SPARQL Server");
    sparqlServerConfig.setMnemonic(KeyEvent.VK_C);
    sparqlServerConfig.setToolTipText("Configure the server endpoint");
    sparqlServerConfig.addActionListener(new SparqlServerConfigurationListener());
    menu.add(sparqlServerConfig);

    return menu;
}

From source file:org.simmi.GeneSetHead.java

License:asdf

public void init(final Stage primaryStage, final Container comp, final SplitPane splitpane,
        final TableView<Gene> genetable, final TableView<Function> upper, final TableView<GeneGroup> lower,
        final MenuBar menubar, final ToolBar toolbar, final ToolBar btoolbar) {
    geneset.user = System.getProperty("user.name");
    JavaFasta.user = geneset.user;//  w w  w  .  j a v a 2s  . c  o m
    this.splitpane = splitpane;
    this.primaryStage = primaryStage;

    table = lower;
    gtable = genetable;
    //SerifyApplet.user = user;

    /*try {
       UIManager.setLookAndFeel("com.sun.java.swing.plaf.nimbus.NimbusLookAndFeel");
    } catch (ClassNotFoundException e) {
       e.printStackTrace();
    } catch (InstantiationException e) {
       e.printStackTrace();
    } catch (IllegalAccessException e) {
       e.printStackTrace();
    } catch (UnsupportedLookAndFeelException e) {
       e.printStackTrace();
    }*/

    String userhome = System.getProperty("user.home");
    boolean windows = false;
    try {
        InputStream isk = GeneSet.class.getClassLoader().getResourceAsStream("org/simmi/genesetkey");
        //Path gkey = Paths.get( url.toURI() );
        InputStream iskp = GeneSet.class.getClassLoader().getResourceAsStream("org/simmi/genesetkey.pub");
        //Path gkeypub = Paths.get( url.toURI() );

        Path gkeyssh = Paths.get(userhome);
        //Path gkeyssh = userpath.resolve(".ssh");
        if (!Files.exists(gkeyssh))
            Files.createDirectory(gkeyssh);
        Path gkeylocal = gkeyssh.resolve("org/simmi/genesetkey");
        Path gkeylocalpub = gkeyssh.resolve("org/simmi/genesetkey.pub");
        if (!Files.exists(gkeylocal) && isk != null) {
            Files.copy(isk, gkeylocal, StandardCopyOption.REPLACE_EXISTING);
        }
        if (!Files.exists(gkeylocalpub) && iskp != null) {
            Files.copy(iskp, gkeylocalpub);
        }

        Set<PosixFilePermission> poset = new HashSet<PosixFilePermission>();
        poset.add(PosixFilePermission.OWNER_READ);
        poset.add(PosixFilePermission.OWNER_WRITE);
        if (Files.exists(gkeylocal))
            Files.setPosixFilePermissions(gkeylocal, poset);
        if (Files.exists(gkeylocalpub))
            Files.setPosixFilePermissions(gkeylocalpub, poset);
    } catch (IOException e1) {
        e1.printStackTrace();
    } catch (UnsupportedOperationException e2) {
        windows = true;
        e2.printStackTrace();
    }

    if (windows) {
        File f = new File(userhome + "\\genesetkey");
        f.setExecutable(false, false);
        f.setWritable(false, false);
        f.setReadable(false, false);

        f.setWritable(true, true);
        f.setReadable(true, true);
    }

    this.comp = comp;
    selcomb = new ComboBox<>();
    searchcolcomb = new ComboBox<>();
    syncolorcomb = new ComboBox<>();

    searchcolcomb.getItems().add("Name");
    searchcolcomb.getItems().add("Symbol");
    searchcolcomb.getSelectionModel().select(0);

    setColors();

    JMenuBar jmenubar = new JMenuBar();
    Menu file = new Menu("File");

    MenuItem newitem = new MenuItem("New");
    newitem.setOnAction(actionEvent -> newFile());
    file.getItems().add(newitem);

    MenuItem openitem = new MenuItem("Open");
    openitem.setOnAction(actionEvent -> {
        try {
            importStuff();
        } catch (IOException e3) {
            e3.printStackTrace();
        } catch (UnavailableServiceException e3) {
            e3.printStackTrace();
        }
    });
    file.getItems().add(openitem);
    file.getItems().add(new SeparatorMenuItem());

    MenuItem importitem = new MenuItem("Import genomes");
    importitem.setOnAction(actionEvent -> fetchGenomes());
    file.getItems().add(importitem);

    MenuItem exportitem = new MenuItem("Export genomes");
    exportitem.setOnAction(actionEvent -> exportGenomes(geneset.speccontigMap));
    file.getItems().add(exportitem);

    file.getItems().add(new SeparatorMenuItem());

    MenuItem exportproteinitem = new MenuItem("Export protein sequences");
    exportproteinitem.setOnAction(actionEvent -> exportProteinSequences(geneset.genelist));
    file.getItems().add(exportproteinitem);

    MenuItem exportgeneitem = new MenuItem("Export gene clusters");
    exportgeneitem.setOnAction(actionEvent -> exportGeneClusters(geneset.allgenegroups));
    file.getItems().add(exportgeneitem);

    file.getItems().add(new SeparatorMenuItem());

    MenuItem quititem = new MenuItem("Quit");
    quititem.setOnAction(actionEvent -> System.exit(0));
    file.getItems().add(quititem);

    Menu edit = new Menu("Edit");
    MenuItem clustergenes = new MenuItem("Cluster genes");
    clustergenes.setOnAction(actionEvent -> {
        //fxpanel.setScene( null );
        /*Platform.runLater(new Runnable() {
              @Override
              public void run() {
          Label label1 = new Label("Id:");
              tb1 = new TextField("0.5");
              Label label2 = new Label("Len:");
              tb2 = new TextField("0.5");
                      
              VBox vbox = new VBox();
              HBox hbox1 = new HBox();
              hbox1.getChildren().addAll( label1, tb1 );
              HBox hbox2 = new HBox();
              hbox2.getChildren().addAll( label2, tb2 );
                      
              epar = new TextField();
              vbox.getChildren().add( epar );
                      
              vbox.getChildren().addAll( hbox1, hbox2 );
              if( fxs == null ) fxs = new Scene( vbox );
              fxs.setRoot( vbox );
                      
              fxpanel.setScene( fxs );
              }
        });*/

        JPanel panel = new JPanel();
        GridBagLayout grid = new GridBagLayout();
        GridBagConstraints c = new GridBagConstraints();
        panel.setLayout(grid);

        /*JLabel label1 = new JLabel("Id:");
        JTextField tb1 = new JTextField("0.5");
        JLabel label2 = new JLabel("Len:");
        JTextField tb2 = new JTextField("0.5");
                
        Dimension d = new Dimension( 300, 30 );
        JTextField epar = new JTextField();
        epar.setSize( d );
        epar.setPreferredSize( d );
                
        c.fill = GridBagConstraints.HORIZONTAL;
        c.gridwidth = 1;
        c.gridheight = 1;
                
        c.gridx = 0;
        c.gridy = 0;
        panel.add( label1, c );
        c.gridx = 1;
        c.gridy = 0;
        panel.add( tb1, c );
        c.gridx = 0;
        c.gridy = 1;
        panel.add( label2, c );
        c.gridx = 1;
        c.gridy = 1;
        panel.add( tb2, c );
        c.gridx = 0;
        c.gridy = 2;
        c.gridwidth = 2;
        panel.add( epar, c );
                
        JOptionPane.showMessageDialog(comp, new Object[] {panel}, "Clustering parameters", JOptionPane.PLAIN_MESSAGE );*/

        /*if( tb1 != null ) {
           float id = Float.parseFloat( tb1.getText() );
           float len = Float.parseFloat( tb2.getText() );
           String expar = epar.getText();
                   
           tb1 = null;
           tb2 = null;
           epar = null;*/

        Set<String> species = getSelspec(null, geneset.getSpecies(), null);
        geneset.clusterGenes(species, false);
        //}
    });
    MenuItem alignclusters = new MenuItem("Align clusters");
    alignclusters.setOnAction(actionEvent -> {
        try {
            String OS = System.getProperty("os.name").toLowerCase();

            Map<String, String> env = new HashMap<String, String>();
            env.put("create", "true");
            String uristr = "jar:" + geneset.zippath.toUri();
            geneset.zipuri = URI.create(uristr);
            geneset.zipfilesystem = FileSystems.newFileSystem(geneset.zipuri, env);
            //s.makeBlastCluster(zipfilesystem.getPath("/"), p, 1);
            Path aldir = geneset.zipfilesystem.getPath("aligned");
            final Path aligneddir = Files.exists(aldir) ? aldir : Files.createDirectory(aldir);

            Runnable run = new Runnable() {
                @Override
                public void run() {
                    try {
                        geneset.zipfilesystem.close();
                    } catch (IOException e) {
                        e.printStackTrace();
                    }
                }
            };

            NativeRun nrun = new NativeRun(run);
            //ExecutorService es = Executors.newFixedThreadPool( Runtime.getRuntime().availableProcessors() );

            Object[] cont = new Object[3];

            Collection<GeneGroup> ggset;
            ObservableList<GeneGroup> ogg = table.getSelectionModel().getSelectedItems();
            ggset = new HashSet<GeneGroup>();
            if (ogg.size() == 0) {
                for (GeneGroup gg : geneset.allgenegroups) {
                    //GeneGroup gg = allgenegroups.get(table.convertRowIndexToModel(r));
                    //gg.getCommonTag()
                    if (gg != null && gg.getCommonTag() == null && gg.size() > 1)
                        ggset.add(gg);
                }
            } else {
                for (GeneGroup gg : ogg) {
                    //GeneGroup gg = geneset.allgenegroups.get(table.convertRowIndexToModel(r));
                    //gg.getCommonTag()
                    if (gg != null && gg.getCommonTag() == null && gg.size() > 1)
                        ggset.add(gg);
                }
            }

            //int i = 0;
            List commandsList = new ArrayList();
            for (GeneGroup gg : ggset) {
                String fasta = gg.getFasta(true);
                String[] cmds = new String[] {
                        OS.indexOf("mac") >= 0 ? "/usr/local/bin/mafft" : "/usr/bin/mafft", "-" };
                Object[] paths = new Object[] { fasta.getBytes(), aligneddir.resolve(gg.getCommonId() + ".aa"),
                        null };
                commandsList.add(paths);
                commandsList.add(Arrays.asList(cmds));

                //if( i++ > 5000 ) break;
            }
            nrun.runProcessBuilder("Running mafft", commandsList, cont, true, run, false);
        } catch (IOException e1) {
            if (geneset.zipfilesystem != null) {
                try {
                    geneset.zipfilesystem.close();
                } catch (IOException e2) {
                    e2.printStackTrace();
                }
            }
            e1.printStackTrace();
        }
    });

    MenuItem sharenumaction = new MenuItem("Update share numbers");
    sharenumaction.setOnAction(actionEvent -> SwingUtilities.invokeLater(() -> {
        Set<String> specs = getSelspec(GeneSetHead.this, geneset.specList, null);
        geneset.updateShareNum(specs);
    }));

    MenuItem importgeneclusteringaction = new MenuItem("Import gene clustering");
    importgeneclusteringaction.setOnAction(actionEvent -> SwingUtilities.invokeLater(() -> {
        JPanel panel = new JPanel();
        GridBagLayout grid = new GridBagLayout();
        GridBagConstraints c = new GridBagConstraints();
        panel.setLayout(grid);

        JLabel label1 = new JLabel("Id:");
        JTextField tb11 = new JTextField("0.5");
        JLabel label2 = new JLabel("Len:");
        JTextField tb21 = new JTextField("0.5");

        Dimension d = new Dimension(300, 30);
        JTextField epar1 = new JTextField();
        epar1.setSize(d);
        epar1.setPreferredSize(d);

        c.fill = GridBagConstraints.HORIZONTAL;
        c.gridwidth = 1;
        c.gridheight = 1;

        c.gridx = 0;
        c.gridy = 0;
        panel.add(label1, c);
        c.gridx = 1;
        c.gridy = 0;
        panel.add(tb11, c);
        c.gridx = 0;
        c.gridy = 1;
        panel.add(label2, c);
        c.gridx = 1;
        c.gridy = 1;
        panel.add(tb21, c);
        c.gridx = 0;
        c.gridy = 2;
        c.gridwidth = 2;
        panel.add(epar1, c);

        JOptionPane.showMessageDialog(comp, new Object[] { panel }, "Clustering parameters",
                JOptionPane.PLAIN_MESSAGE);

        float id = Float.parseFloat(tb11.getText());
        float len = Float.parseFloat(tb21.getText());

        //JFileChooser fc = new JFileChooser();
        //if( fc.showOpenDialog( GeneSetHead.this ) == JFileChooser.APPROVE_OPTION ) {
        Serifier s = new Serifier();
        //s.mseq = aas;
        for (String gk : geneset.refmap.keySet()) {
            Gene g = geneset.refmap.get(gk);
            if (g.tegeval.getAlignedSequence() != null)
                System.err.println(g.tegeval.getAlignedSequence().getName());
            s.mseq.put(gk, g.tegeval.getAlignedSequence());
        }

        Map<String, String> idspec = new HashMap<String, String>();
        for (String idstr : geneset.refmap.keySet()) {
            if (idstr.contains(" ")) {
                System.err.println("coooonnnnnni " + idstr);
            }

            Gene gene = geneset.refmap.get(idstr);
            idspec.put(idstr, gene.getSpecies());
        }
        //Sequences seqs = new Sequences(user, name, type, path, nseq)
        try {
            Map<String, String> env = new HashMap<String, String>();
            env.put("create", "true");
            String uristr = "jar:" + geneset.zippath.toUri();
            geneset.zipuri = URI.create(uristr);
            geneset.zipfilesystem = FileSystems.newFileSystem(geneset.zipuri, env);

            Path root = geneset.zipfilesystem.getPath("/");
            Path p = geneset.zipfilesystem.getPath("cluster.blastout"); //root.resolve("culster.blastout");

            List<Set<String>> cluster = geneset.uclusterlist == null ? new ArrayList<>()
                    : new ArrayList<>(geneset.uclusterlist);
            s.makeBlastCluster(root, p, 1, id, len, idspec, cluster, geneset.refmap);

            System.err.println(cluster.get(0));
            if (geneset.uclusterlist != null)
                System.err.println(geneset.uclusterlist.get(0));

            geneset.zipfilesystem.close();
        } catch (IOException e1) {
            if (geneset.zipfilesystem != null) {
                try {
                    geneset.zipfilesystem.close();
                } catch (IOException e2) {
                    e2.printStackTrace();
                }
            }
            e1.printStackTrace();
        }
    }));
    MenuItem importgenesymbolaction = new MenuItem("Import gene symbols");
    importgenesymbolaction.setOnAction(actionEvent -> SwingUtilities.invokeLater(() -> {
        JFileChooser fc = new JFileChooser();
        if (fc.showOpenDialog(GeneSetHead.this) == JFileChooser.APPROVE_OPTION) {
            try {
                Map<String, String> env = new HashMap<>();
                env.put("create", "true");
                //Path path = zipfile.toPath();
                String uristr = "jar:" + geneset.zippath.toUri();
                geneset.zipuri = URI.create(uristr /*.replace("file://", "file:")*/ );
                geneset.zipfilesystem = FileSystems.newFileSystem(geneset.zipuri, env);

                Path nf = geneset.zipfilesystem.getPath("/smap_short.txt");
                BufferedWriter bw = Files.newBufferedWriter(nf, StandardOpenOption.CREATE);

                File f = fc.getSelectedFile();
                InputStream is = new FileInputStream(f);
                if (f.getName().endsWith(".gz"))
                    is = new GZIPInputStream(is);
                geneset.uni2symbol(new InputStreamReader(is), bw, geneset.unimap);

                bw.close();
                //long bl = Files.copy( new ByteArrayInputStream( baos.toByteArray() ), nf, StandardCopyOption.REPLACE_EXISTING );
                geneset.zipfilesystem.close();
            } catch (IOException e1) {
                e1.printStackTrace();
            }
        }
    }));

    MenuItem importcazyaction = new MenuItem("Import Cazy");
    importcazyaction.setOnAction(actionEvent -> SwingUtilities.invokeLater(() -> {
        JFileChooser fc = new JFileChooser();
        if (fc.showOpenDialog(GeneSetHead.this) == JFileChooser.APPROVE_OPTION) {
            try {
                BufferedReader rd = Files.newBufferedReader(fc.getSelectedFile().toPath());
                geneset.loadcazymap(geneset.cazymap, rd);
            } catch (IOException e1) {
                e1.printStackTrace();
            }
        }
    }));

    MenuItem gene2refseqaction = new MenuItem("Gene 2 refseq");
    gene2refseqaction.setOnAction(actionEvent -> {
        try {
            TextField tf = new TextField();
            tf.setText("ftp://ftp.ncbi.nlm.nih.gov/gene/DATA/gene2refseq.gz");
            Dialog<Path> dialog = new Dialog();
            dialog.getDialogPane().setContent(tf);
            dialog.getDialogPane().getButtonTypes().add(ButtonType.OK);
            dialog.getDialogPane().getButtonTypes().add(ButtonType.CANCEL);
            dialog.setResultConverter(param -> param.getButtonData().isCancelButton() ? null
                    : Paths.get(URI.create(tf.getText())));
            Optional<Path> opath = dialog.showAndWait();

            if (opath.isPresent()) {
                Map<String, String> env = new HashMap<>();
                env.put("create", "true");
                //Path path = zipfile.toPath();
                String uristr = "jar:" + geneset.zippath.toUri();
                geneset.zipuri = URI.create(uristr /*.replace("file://", "file:")*/);
                geneset.zipfilesystem = FileSystems.newFileSystem(geneset.zipuri, env);

                Path path = opath.get();
                InputStream is = path.toUri().toURL().openStream();
                if (path.getFileName().toString().endsWith(".gz")) {
                    is = new GZIPInputStream(is);
                }
                Path nf = geneset.zipfilesystem.getPath("/org/simmi/gene2refseq_short.txt");
                BufferedWriter bw = Files.newBufferedWriter(nf, StandardOpenOption.CREATE,
                        StandardOpenOption.TRUNCATE_EXISTING, StandardOpenOption.WRITE);
                geneset.idMapping(new InputStreamReader(is), bw, 5, 1, geneset.refmap, null, geneset.gimap);
                bw.close();
            }
        } catch (Exception e) {
            e.printStackTrace();
        } finally {
            try {
                geneset.zipfilesystem.close();
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
    });

    MenuItem functionmappingaction = new MenuItem("Function mapping");
    functionmappingaction.setOnAction(actionEvent -> SwingUtilities.invokeLater(() -> {
        final JTextField tf = new JTextField();
        JButton btn = new JButton("File");
        JComponent comp2 = new JComponent() {
        };
        comp2.setLayout(new BorderLayout());
        comp2.add(tf);
        comp2.add(btn, BorderLayout.EAST);
        tf.setText("http://130.208.252.239/data/sp2go.txt.gz");

        final File[] file2 = new File[1];
        btn.addActionListener(e -> {
            JFileChooser fc = new JFileChooser();
            if (fc.showOpenDialog(GeneSetHead.this) == JFileChooser.APPROVE_OPTION) {
                file2[0] = fc.getSelectedFile();
                try {
                    tf.setText(fc.getSelectedFile().toURI().toURL().toString());
                } catch (MalformedURLException e1) {
                    e1.printStackTrace();
                }
            }
        });

        try {
            Map<String, String> env = new HashMap<>();
            env.put("create", "true");
            //Path path = zipfile.toPath();
            String uristr = "jar:" + geneset.zippath.toUri();
            geneset.zipuri = URI.create(uristr /*.replace("file://", "file:")*/ );
            geneset.zipfilesystem = FileSystems.newFileSystem(geneset.zipuri, env);

            Path nf = geneset.zipfilesystem.getPath("/org/simmi/sp2go_short.txt");
            BufferedWriter bw = Files.newBufferedWriter(nf, StandardOpenOption.CREATE,
                    StandardOpenOption.TRUNCATE_EXISTING, StandardOpenOption.WRITE);

            JOptionPane.showMessageDialog(GeneSetHead.this, comp2);

            final JDialog dialog = new JDialog();
            dialog.setTitle("Function mapping");
            dialog.setDefaultCloseOperation(JDialog.DISPOSE_ON_CLOSE);
            dialog.setSize(400, 300);

            comp2 = new JComponent() {
            };
            comp2.setLayout(new BorderLayout());

            final JTextArea ta = new JTextArea();
            /*final InputStream fis;
            if( file[0] != null ) fis = new FileInputStream( file[0] );
            else {
            JTextField host = new JTextField("localhost");
            JOptionPane.showMessageDialog(null, host);
                    
            String username = System.getProperty("user.name");
            String hostname = host.getText();
                    
            List<String> commandsList = Arrays.asList( new String[] {"ssh",username+"@"+hostname,"cat",tf.getText()} );
            ProcessBuilder pb = new ProcessBuilder( commandsList );
            Process p = pb.start();
                    
            for( Object commands : commandsList ) {
                if( commands instanceof List ) {
                    for( Object cmd : (List)commands ) {
                        ta.append(cmd+" ");
                    }
                    ta.append("\n");
                } else {
                    ta.append(commands+" ");
                }
            }
            ta.append("\n");
                    
            fis = p.getInputStream();
            }*/

            final JProgressBar pbar = new JProgressBar();
            final Thread t = new Thread() {
                public void run() {
                    try {
                        URL url = new URL(tf.getText());
                        InputStream fis = url.openStream();

                        BufferedReader br = new BufferedReader(new InputStreamReader(new GZIPInputStream(fis)));
                        //if( unimap != null ) unimap.clear();
                        //unimap = idMapping(new InputStreamReader(is), bw, 2, 0, refmap, genmap, gimap);
                        geneset.funcMappingUni(br, geneset.unimap, bw);

                        fis.close();
                        bw.close();

                        try {
                            geneset.zipfilesystem.close();
                        } catch (Exception e2) {
                            e2.printStackTrace();
                        }
                        ;

                        pbar.setIndeterminate(false);
                        pbar.setEnabled(false);
                    } catch (IOException e) {
                        e.printStackTrace();
                    }
                }
            };

            ta.setEditable(false);
            final JScrollPane sp = new JScrollPane(ta);

            dialog.add(comp2);
            comp2.add(pbar, BorderLayout.NORTH);
            comp2.add(sp, BorderLayout.CENTER);
            pbar.setIndeterminate(true);

            t.start();
            /*okokdialog.addWindowListener( new WindowListener() {
                    
            @Override
            public void windowOpened(WindowEvent e) {}
                    
            @Override
            public void windowIconified(WindowEvent e) {}
                    
            @Override
            public void windowDeiconified(WindowEvent e) {}
                    
            @Override
            public void windowDeactivated(WindowEvent e) {}
                    
            @Override
            public void windowClosing(WindowEvent e) {}
                    
            @Override
            public void windowClosed(WindowEvent e) {
                if( pbar.isEnabled() ) {
                    pbar.setIndeterminate( false );
                    pbar.setEnabled( false );
                }
            }
                    
            @Override
            public void windowActivated(WindowEvent e) {}
            });*/
            dialog.setVisible(true);
            //long bl = Files.copy( new ByteArrayInputStream( baos.toByteArray() ), nf, StandardCopyOption.REPLACE_EXISTING );
        } catch (IOException e1) {
            e1.printStackTrace();
        }
    }));
    MenuItem importidmappingaction = new MenuItem("Import idmapping");
    importidmappingaction.setOnAction(actionEvent -> SwingUtilities.invokeLater(() -> {
        final JTextField tf = new JTextField();
        JButton btn = new JButton("File");
        JComponent comp2 = new JComponent() {
        };
        comp2.setLayout(new BorderLayout());
        comp2.add(tf);
        comp2.add(btn, BorderLayout.EAST);
        tf.setText(
                "ftp://ftp.uniprot.org/pub/databases/uniprot/current_release/knowledgebase/idmapping/idmapping.dat.gz");

        final File[] file2 = new File[1];
        btn.addActionListener(new ActionListener() {
            @Override
            public void actionPerformed(ActionEvent e) {
                JFileChooser fc = new JFileChooser();
                if (fc.showOpenDialog(GeneSetHead.this) == JFileChooser.APPROVE_OPTION) {
                    file2[0] = fc.getSelectedFile();
                    try {
                        tf.setText(fc.getSelectedFile().toURI().toURL().toString());
                    } catch (MalformedURLException e1) {
                        e1.printStackTrace();
                    }
                }
            }
        });

        JOptionPane.showMessageDialog(GeneSetHead.this, comp2);

        //Thread t = new Thread() {
        //   public void run() {
        try {
            Map<String, String> env = new HashMap<String, String>();
            env.put("create", "true");
            //Path path = zipfile.toPath();
            String uristr = "jar:" + geneset.zippath.toUri();
            geneset.zipuri = URI.create(uristr /*.replace("file://", "file:")*/ );
            geneset.zipfilesystem = FileSystems.newFileSystem(geneset.zipuri, env);

            Path nf = geneset.zipfilesystem.getPath("/org/simmi/idmapping_short.dat");
            final BufferedWriter bw = Files.newBufferedWriter(nf, StandardOpenOption.CREATE,
                    StandardOpenOption.WRITE, StandardOpenOption.TRUNCATE_EXISTING);

            final JDialog dialog = new JDialog();
            dialog.setTitle("Id mapping");
            dialog.setDefaultCloseOperation(JDialog.DISPOSE_ON_CLOSE);
            dialog.setSize(400, 300);

            comp2 = new JComponent() {
            };
            comp2.setLayout(new BorderLayout());

            final JTextArea ta = new JTextArea();

            /*final InputStream fis;
            if( file[0] != null ) fis = new FileInputStream( file[0] );
            else {
            /*Object[] cont = new Object[3];
            Runnable run = new Runnable() {
                public void run() {
                    try {
                        bw.close();
                        geneset.zipfilesystem.close();
                    } catch (IOException e) {
                        e.printStackTrace();
                    }
                }
            };*
                    
            JTextField host = new JTextField("localhost");
            JOptionPane.showMessageDialog(null, host);
                    
            String username = System.getProperty("user.name");
            String hostname = host.getText();
                    
            List<String> commandsList = Arrays.asList( new String[] {"ssh",username+"@"+hostname,"cat",tf.getText()} );
            ProcessBuilder pb = new ProcessBuilder( commandsList );
            Process p = pb.start();
                    
            for( Object commands : commandsList ) {
                if( commands instanceof List ) {
                    for( Object cmd : (List)commands ) {
                        ta.append(cmd+" ");
                    }
                    ta.append("\n");
                } else {
                    ta.append(commands+" ");
                }
            }
            ta.append("\n");
                    
            fis = p.getInputStream();
            }*/

            final JProgressBar pbar = new JProgressBar();
            final Thread t = new Thread() {
                public void run() {
                    try {
                        URL url = new URL(tf.getText());
                        InputStream fis = url.openStream();
                        InputStream is = new GZIPInputStream(fis);
                        if (geneset.unimap != null)
                            geneset.unimap.clear();
                        geneset.unimap = geneset.idMapping(new InputStreamReader(is), bw, 2, 0, geneset.refmap,
                                geneset.genmap, geneset.gimap);
                        is.close();
                        fis.close();
                        bw.close();

                        try {
                            geneset.zipfilesystem.close();
                        } catch (Exception ep) {
                            ep.printStackTrace();
                        }
                        ;

                        pbar.setIndeterminate(false);
                        pbar.setEnabled(false);
                    } catch (IOException e) {
                        e.printStackTrace();
                    }
                }
            };

            ta.setEditable(false);
            final JScrollPane sp = new JScrollPane(ta);

            dialog.add(comp2);
            comp2.add(pbar, BorderLayout.NORTH);
            comp2.add(sp, BorderLayout.CENTER);
            pbar.setIndeterminate(true);

            t.start();

            /*System.err.println( "about to run" );
            for( Object commands : commandsList ) {
                if( commands instanceof List ) {
                    for( Object c : (List)commands ) {
                        System.err.print( c+" " );
                    }
                    System.err.println();
                } else {
                    System.err.print( commands+" " );
                }
            }
            System.err.println();*/

            /*okokdialog.addWindowListener( new WindowListener() {
                    
            @Override
            public void windowOpened(WindowEvent e) {}
                    
            @Override
            public void windowIconified(WindowEvent e) {}
                    
            @Override
            public void windowDeiconified(WindowEvent e) {}
                    
            @Override
            public void windowDeactivated(WindowEvent e) {}
                    
            @Override
            public void windowClosing(WindowEvent e) {}
                    
            @Override
            public void windowClosed(WindowEvent e) {
                if( pbar.isEnabled() ) {
                    /*String result = ta.getText().trim();
                    if( run != null ) {
                        cont[0] = null;
                        cont[1] = result;
                        cont[2] = new Date( System.currentTimeMillis() ).toString();
                        run.run();
                    }*
                    
                    pbar.setIndeterminate( false );
                    pbar.setEnabled( false );
                }
            }
                    
            @Override
            public void windowActivated(WindowEvent e) {}
            });*/
            dialog.setVisible(true);

            /*NativeRun nrun = new NativeRun();
            nrun.runProcessBuilder("Idmapping", Arrays.asList( tf.getText().split(" ") ), run, cont, false);
            ProcessBuilder pb = new ProcessBuilder( tf.getText().split(" ") );
            Process p = pb.start();
            fis = p.getInputStream();
            }*/

            //long bl = Files.copy( new ByteArrayInputStream( baos.toByteArray() ), nf, StandardCopyOption.REPLACE_EXISTING );
        } catch (IOException e1) {
            e1.printStackTrace();
            try {
                geneset.zipfilesystem.close();
            } catch (Exception e2) {
                e2.printStackTrace();
            }
            ;
        }
        //   }
        //};
        //t.start();
        //}
    }));
    MenuItem cogblastaction = new MenuItem("Cog blast");
    cogblastaction.setOnAction(actionEvent -> SwingUtilities.invokeLater(() -> {
        Set<String> species = getSelspec(null, geneset.getSpecies(), null);

        if (species != null && species.size() > 0)
            Platform.runLater(() -> cogBlastDlg(species));
    }));
    MenuItem unresolvedblastaction = new MenuItem("Unresolved blast");
    unresolvedblastaction.setOnAction(actionEvent -> SwingUtilities.invokeLater(() -> {
        try {
            Set<String> species = getSelspec(null, geneset.getSpecies(), null);

            StringWriter sb = new StringWriter();
            Path dbPath = Paths.get("/data/nr");
            ObservableList<Gene> genes = gtable.getSelectionModel().getSelectedItems();
            if (genes.size() > 0) {
                if (isGeneview()) {
                    for (Gene g : gtable.getSelectionModel().getSelectedItems()) {
                        //int i = table.convertRowIndexToModel(r);
                        //Gene g = geneset.genelist.get(i);
                        Sequence gs = g.tegeval.getProteinSequence();
                        gs.setName(g.id);
                        gs.writeSequence(sb);
                    }
                } else {
                    for (GeneGroup gg : table.getSelectionModel().getSelectedItems()) {
                        //int i = table.convertRowIndexToModel(r);
                        //GeneGroup gg = geneset.allgenegroups.get(i);
                        Gene g = null;
                        for (Gene gene : gg.genes) {
                            g = gene;
                            break;
                        }
                        Sequence gs = g.tegeval.getProteinSequence();
                        gs.setName(g.id);
                        gs.writeSequence(sb);
                    }
                }
            } else {
                for (Gene g : geneset.genelist) {
                    if (g.getTag() == null || g.getTag().equalsIgnoreCase("gene")) {
                        if (species.contains(g.getSpecies())) {
                            Sequence gs = g.tegeval.getProteinSequence();
                            gs.setName(g.id);
                            gs.writeSequence(sb);

                            /*sb.append(">" + g.id + "\n");
                            for (int i = 0; i < gs.length(); i += 70) {
                            sb.append( gs.substring(i, Math.min( i + 70, gs.length() )) + "\n");
                            }*/
                        }
                    }
                }
            }

            Map<String, String> env = new HashMap<>();
            env.put("create", "true");
            String uristr = "jar:" + geneset.zippath.toUri();
            geneset.zipuri = URI.create(uristr /*.replace("file://", "file:")*/ );
            geneset.zipfilesystem = FileSystems.newFileSystem(geneset.zipuri, env);
            Path resPath = geneset.zipfilesystem.getPath("/unresolved.blastout");

            NativeRun nrun = new NativeRun();
            SerifyApplet.blastpRun(nrun, sb.getBuffer(), dbPath, resPath, "-evalue 0.00001", null, true,
                    geneset.zipfilesystem, geneset.user, primaryStage);
        } catch (IOException e1) {
            e1.printStackTrace();
        }
    }));

    MenuItem importbiosystemsaction = new MenuItem("Import biosystems");
    importbiosystemsaction.setOnAction(actionEvent -> {
        Dialog<Map<String, Set<String>>> dialog = new Dialog();

        TextField gene = new TextField();
        TextField biosys = new TextField();

        gene.setText("ftp://ftp.ncbi.nlm.nih.gov/pub/biosystems/biosystems.20160519/biosystems_gene_all.gz");
        biosys.setText("ftp://ftp.ncbi.nlm.nih.gov/pub/biosystems/biosystems.20160519/bsid2info.gz");

        VBox duo = new VBox();
        duo.getChildren().add(gene);
        duo.getChildren().add(biosys);

        dialog.getDialogPane().setContent(duo);
        dialog.getDialogPane().getButtonTypes().add(ButtonType.OK);
        dialog.getDialogPane().getButtonTypes().add(ButtonType.CANCEL);
        dialog.setResultConverter(param -> {
            if (!param.getButtonData().isCancelButton()) {
                Map<String, Set<String>> result = null;
                Set<String> geneidset = geneset.genelist.stream().map(g -> g.genid).collect(Collectors.toSet());
                try {
                    InputStream p = new URI(gene.getText()).toURL().openStream();
                    InputStream b = new URI(biosys.getText()).toURL().openStream();

                    if (gene.getText().endsWith(".gz"))
                        p = new GZIPInputStream(p);
                    if (biosys.getText().endsWith(".gz"))
                        b = new GZIPInputStream(b);

                    Map<String, List<String[]>> group = new BufferedReader(new InputStreamReader(p)).lines()
                            .map(l -> l.split("\t")).filter(s -> geneidset.contains(s[1]))
                            .collect(Collectors.groupingBy(s -> s[1]));
                    Set<String> bsids = group.entrySet().stream().flatMap(e -> e.getValue().stream())
                            .map(s -> s[0]).collect(Collectors.toSet());
                    Map<String, String> bsid2name = new BufferedReader(new InputStreamReader(b)).lines()
                            .map(s -> s.split("\t")).filter(s -> bsids.contains(s[0]))
                            .collect(Collectors.toMap(s -> s[0], s -> s[2] + ":" + s[3]));
                    result = group.entrySet().stream()
                            .collect(Collectors.toMap(s -> s.getKey(), s -> s.getValue().stream()
                                    .map(sub -> bsid2name.get(sub[0])).collect(Collectors.toSet())));
                } catch (IOException e) {
                    e.printStackTrace();
                } catch (URISyntaxException e) {
                    e.printStackTrace();
                }
                //Path p = Paths.get(gene.getText());
                //Path b = Paths.get(biosys.getText());
                return result;
            }
            return null;
        });
        Optional<Map<String, Set<String>>> od = dialog.showAndWait();

        if (od.isPresent()) {
            geneset.biosystemsmap = od.get();
            Map<String, String> env = new HashMap<>();
            env.put("create", "true");
            String uristr = "jar:" + geneset.zippath.toUri();
            geneset.zipuri = URI.create(uristr /*.replace("file://", "file:")*/ );
            try {
                geneset.zipfilesystem = FileSystems.newFileSystem(geneset.zipuri, env);
                Path resPath = geneset.zipfilesystem.getPath("/biosystems.txt");
                BufferedWriter bw = Files.newBufferedWriter(resPath, StandardOpenOption.TRUNCATE_EXISTING);
                geneset.biosystemsmap.entrySet().stream().forEach(e -> {
                    try {
                        bw.write(e.getKey() + "\t" + e.getValue().stream().collect(Collectors.joining(";"))
                                + "\n");
                    } catch (IOException e1) {
                        e1.printStackTrace();
                    }
                });
                bw.close();
            } catch (Exception e) {
                e.printStackTrace();
            } finally {
                try {
                    geneset.zipfilesystem.close();
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }
        }
    });

    MenuItem importkeggpathwayaction = new MenuItem("Import kegg pathways");
    importkeggpathwayaction.setOnAction(actionEvent -> {
        Set<String> keggids = new HashSet<>();
        for (Gene g : geneset.genelist) {
            if (g.keggid != null) {
                int i = g.keggid.indexOf(':');
                if (i > 0) {
                    keggids.add(g.keggid.substring(0, i));
                }
            }
        }
        System.err.println(keggids);

        JTextField tf = new JTextField("http://130.208.252.239/organisms/");
        JOptionPane.showMessageDialog(null, tf);

        Map<String, String> env = new HashMap<>();
        env.put("create", "true");

        Path rootp = null;
        try {
            geneset.zipfilesystem = FileSystems.newFileSystem(geneset.zipuri, env);
        } catch (Exception ee) {
            ee.printStackTrace();
        }

        for (Path root : geneset.zipfilesystem.getRootDirectories()) {
            rootp = root;
            break;
        }

        for (String kegg : keggids) {
            try {
                URL url = new URL(tf.getText() + kegg + ".tar.gz");
                InputStream is = url.openStream();
                GZIPInputStream gz = new GZIPInputStream(is);

                TarArchiveInputStream tar = new TarArchiveInputStream(gz);
                TarArchiveEntry tae = (TarArchiveEntry) tar.getNextEntry();
                while (tae != null) {
                    geneset.traverseTar(tar, tae, rootp);

                    tae = (TarArchiveEntry) tar.getNextEntry();
                }

                is.close();
            } catch (IOException e1) {
                e1.printStackTrace();
            }
        }

        try {
            geneset.zipfilesystem.close();
        } catch (Exception ee) {
            ee.printStackTrace();
        }
        ;
    });

    edit.getItems().add(clustergenes);
    edit.getItems().add(alignclusters);
    edit.getItems().add(new SeparatorMenuItem());
    edit.getItems().add(sharenumaction);
    edit.getItems().add(importgeneclusteringaction);
    edit.getItems().add(importgenesymbolaction);
    edit.getItems().add(importcazyaction);
    edit.getItems().add(functionmappingaction);
    edit.getItems().add(importidmappingaction);
    edit.getItems().add(gene2refseqaction);
    edit.getItems().add(importbiosystemsaction);
    edit.getItems().add(importkeggpathwayaction);
    edit.getItems().add(new SeparatorMenuItem());
    edit.getItems().add(cogblastaction);
    edit.getItems().add(unresolvedblastaction);

    Menu view = new Menu("View");
    gb = new RadioMenuItem("Genes");
    gb.setOnAction(actionEvent -> {
        splitpane.getItems().remove(table);
        splitpane.getItems().add(0, gtable);
        //table.setModel( defaultModel );
    });
    view.getItems().add(gb);
    ggb = new RadioMenuItem("Gene groups");
    ggb.setOnAction(actionEvent -> {
        splitpane.getItems().remove(gtable);
        splitpane.getItems().add(0, table);
        //table.setModel( groupModel );
    });

    ToggleGroup bg = new ToggleGroup();
    gb.setToggleGroup(bg);
    ggb.setToggleGroup(bg);
    //ButtonGroup   bg = new ButtonGroup();
    //bg.add( gb );
    //bg.add( ggb );

    ggb.setSelected(true);
    view.getItems().add(ggb);
    ActionCollection.addAll(view, geneset.clusterMap, GeneSetHead.this, geneset.speccontigMap, table, comp,
            geneset.cs);

    Menu help = new Menu("Help");
    MenuItem about = new MenuItem("About");
    about.setOnAction(actionEvent -> SwingUtilities
            .invokeLater(() -> JOptionPane.showMessageDialog(comp, "CompGen 1.0")));
    help.getItems().add(about);

    MenuItem test = new MenuItem("Test");
    test.setOnAction(actionEvent -> {
        /*for( Gene g : geneset.genelist ) {
           Sequence seq = g.tegeval.getContig();
           if( seq == null ) {
          System.err.println();
           }
        }*/

        for (String spec : geneset.speccontigMap.keySet()) {
            if (spec.contains("RAST")) {
                List<Sequence> lseq = geneset.speccontigMap.get(spec);
                for (Sequence seq : lseq) {
                    for (Annotation a : seq.getAnnotations()) {
                        System.err.println(a.getGene().getGeneGroup().species);
                        /*Sequence tseq = a.getContig();
                        if( tseq == null ) {
                           System.err.println();
                        }*/
                    }
                }
            }
        }

        /*for( GeneGroup gg : allgenegroups ) {
           if( gg.species.size() > 1 ) {
          System.err.println( gg.species );
           }
        }*/
    });
    help.getItems().add(test);
    help.getItems().add(new SeparatorMenuItem());
    MenuItem runserver = new MenuItem("Run server");
    runserver.setOnAction(actionEvent -> {
        SwingUtilities.invokeLater(new Runnable() {
            public void run() {
                JSpinner spin = new JSpinner();
                JOptionPane.showMessageDialog(GeneSetHead.this, spin, "Port", JOptionPane.QUESTION_MESSAGE);
                try {
                    geneset.cs = WSServer.startServer(GeneSetHead.this, (Integer) spin.getValue());
                } catch (UnknownHostException e1) {
                    e1.printStackTrace();
                }
            }

        });
    });
    help.getItems().add(runserver);
    help.getItems().add(new SeparatorMenuItem());

    CheckMenuItem cbmi = new CheckMenuItem("Use geneset user");
    help.getItems().add(cbmi);

    cbmi.setOnAction(actionEvent -> {
        if (cbmi.isSelected()) {
            geneset.user = "geneset";
        } else
            geneset.user = System.getProperty("user.name");

        JavaFasta.user = geneset.user;
        if (geneset.currentSerify != null)
            geneset.currentSerify.user = geneset.user;
    });

    help.getItems().add(new SeparatorMenuItem());
    MenuItem helptut = new MenuItem("Help & Tutorial");
    helptut.setOnAction(actionEvent -> {
        try {
            Desktop.getDesktop().browse(new URI("http://thermusgenes.appspot.com/pancore.html"));
        } catch (IOException | URISyntaxException e1) {
            e1.printStackTrace();
        }
    });
    help.getItems().add(helptut);

    Menu sequencemenu = new Menu("Sequence");
    MenuItem showgroupseq = new MenuItem("Show group sequences");
    showgroupseq.setOnAction(actionEvent -> {
        //JTextArea textarea = new JTextArea();
        //JScrollPane scrollpane = new JScrollPane(textarea);

        /*try {
           if (clipboardService == null)
          clipboardService = (ClipboardService) ServiceManager.lookup("javax.jnlp.ClipboardService");
           Action action = new CopyAction("Copy", null, "Copy data", new Integer(KeyEvent.VK_CONTROL + KeyEvent.VK_C));
           textarea.getActionMap().put("copy", action);
           grabFocus = true;
        } catch (Exception ee) {
           ee.printStackTrace();
           System.err.println("Copy services not available.  Copy using 'Ctrl-c'.");
        }
                
        textarea.setDragEnabled(true);*/

        JFrame frame = null;
        if (geneset.currentSerify == null) {
            frame = new JFrame();
            frame.setDefaultCloseOperation(JFrame.HIDE_ON_CLOSE);
            frame.setSize(400, 300);

            Map<String, String> env = new HashMap<String, String>();
            //Path path = zipfile.toPath();
            String uristr = "jar:" + geneset.zippath.toUri();
            geneset.zipuri = URI.create(uristr /*.replace("file://", "file:")*/ );
            try {
                geneset.zipfilesystem = FileSystems.newFileSystem(geneset.zipuri, env);
            } catch (IOException e1) {
                e1.printStackTrace();
            }

            SerifyApplet sa = new SerifyApplet(geneset.zipfilesystem);
            sa.init(frame, null, geneset.user);
            //frame.add( )
            geneset.currentSerify = sa;
        } /* else frame = (JFrame)currentSerify.cnt;*/

        String[] farr = new String[] { "o.profundus", "mt.silvanus", "mt.ruber", "m.hydrothermalis",
                "t.thermophilus_SG0_5JP17_16", "t.thermophilusJL18", "t.thermophilusHB8", "t.thermophilusHB27",
                "t.scotoductusSA01", "t.scotoductus4063", "t.scotoductus1572", "t.scotoductus2101",
                "t.scotoductus2127", "t.scotoductus346", "t.scotoductus252", "t.antranikiani", "t.kawarayensis",
                "t.brockianus", "t.igniterrae", "t.eggertsoni", "t.RLM", "t.oshimai_JL2", "t.oshimai",
                "t.filiformis", "t.arciformis", "t.islandicus", "t.aquaticus", "t.spCCB" };

        Map<Integer, String> ups = new HashMap<Integer, String>();
        Set<Integer> stuck = new HashSet<Integer>();
        Map<Integer, List<Tegeval>> ups2 = new HashMap<Integer, List<Tegeval>>();
        //int[] rr = table.getSelectedRows();
        for (Gene gg : gtable.getSelectionModel().getSelectedItems()) {
            //int cr = table.convertRowIndexToModel(r);
            //Gene gg = geneset.genelist.get(cr);
            if (gg.getSpecies() != null) {
                if (gg.genid != null && gg.genid.length() > 0) {
                    ups.put(gg.getGroupIndex(), gg.name);
                    stuck.add(gg.getGroupIndex());
                }
                if (!stuck.contains(gg.getGroupIndex())) {
                    if (!ups.containsKey(gg.getGroupIndex())
                            || !(gg.name.contains("unnamed") || gg.name.contains("hypot")))
                        ups.put(gg.getGroupIndex(), gg.name);
                }

                List<Tegeval> tlist;
                if (ups2.containsKey(gg.getGroupIndex()))
                    tlist = ups2.get(gg.getGroupIndex());
                else {
                    tlist = new ArrayList<Tegeval>();
                    ups2.put(gg.getGroupIndex(), tlist);
                }

                //Set<String>    specs = new HashSet<String>();
                //textarea.append(gg.name + ":\n");
                //for (String sp : gg.species.keySet()) {
                int count = 0;
                for (String sp : farr) {
                    //Teginfo stv = gg.species.equals(sp) ? gg.teginfo : null;

                    if (gg.getSpecies().equals(sp))
                        tlist.add(gg.tegeval);
                    /*for( String key : gg.species.keySet() ) {
                       if( key.contains("JL2") ) {
                          System.err.println( " erm " + key );
                       }
                    }*/
                    /*if( stv == null && gg.species.size() == 28 ) {
                       System.err.println( gg.species );
                       System.err.println( sp );
                    }*/
                    //System.err.println( gg.species.keySet() );
                    /*if( stv == null ) {
                       //System.err.println( sp );
                    } else {
                       count++;
                       //specs.add( sp );
                       for (Tegeval tv : stv.tset) {
                          tlist.add( tv );
                          /*textarea.append(">" + tv.cont + " " + tv.teg + " " + tv.eval + "\n");
                          if (tv.dna != null) {
                      for (int i = 0; i < tv.dna.length(); i += 70) {
                         textarea.append(tv.dna.gg.speciessubstring(i, Math.min(i + 70, tv.dna.length())) + "\n");
                      }
                          }*
                       }
                    }*/
                }
                //if( count < gg.species.size() ) {
                //   System.err.println( gg.species );
                //   System.err.println();
                //}
                //if( specs.size() < 28 ) System.err.println("mu " + specs);
            }
        }

        try {
            StringWriter sb = new StringWriter();
            for (int gi : ups.keySet()) {
                String name = ups.get(gi);
                List<Tegeval> tlist = ups2.get(gi);

                sb.append(name.replace('/', '-') + ":\n");
                if (tlist.size() < 28) {
                    for (Tegeval tv : tlist) {
                        System.err.println(tv.name);
                    }
                    System.err.println();
                }
                for (Tegeval tv : tlist) {
                    Sequence ps = tv.getProteinSequence();
                    ps.setName(tv.name.substring(0, tv.name.indexOf('_')));
                    ps.writeSequence(sb);
                    /*sb.append(">" + tv.name.substring(0, tv.name.indexOf('_')) + "\n");
                    for (int i = 0; i < ps.length(); i += 70) {
                       sb.append( ps.substring(i, Math.min(i + 70, tv.getProteinLength() )) + "\n");
                    }*/
                }
            }

            geneset.currentSerify.addSequences("uh", new StringReader(sb.toString()), Paths.get("/"), null);
        } catch (URISyntaxException | IOException e1) {
            e1.printStackTrace();
        }
        frame.setVisible(true);
    });
    sequencemenu.getItems().add(showgroupseq);

    MenuItem showgroupdnaseq = new MenuItem("Show group DNA sequences");
    showgroupdnaseq.setOnAction(actionEvent -> {
        final JTextArea textarea = new JTextArea();
        JScrollPane scrollpane = new JScrollPane(textarea);

        try {
            if (clipboardService == null)
                clipboardService = (ClipboardService) ServiceManager.lookup("javax.jnlp.ClipboardService");
            Action action = new CopyAction("Copy", null, "Copy data",
                    new Integer(KeyEvent.VK_CONTROL + KeyEvent.VK_C));
            textarea.getActionMap().put("copy", action);
            grabFocus = true;
        } catch (Exception ee) {
            ee.printStackTrace();
            System.err.println("Copy services not available.  Copy using 'Ctrl-c'.");
        }

        textarea.setDragEnabled(true);

        try {
            final DataFlavor df = new DataFlavor("text/plain;charset=utf-8");
            TransferHandler th = new TransferHandler() {
                /**
                 * 
                 */
                private static final long serialVersionUID = 1L;

                public int getSourceActions(JComponent c) {
                    return TransferHandler.COPY_OR_MOVE;
                }

                public boolean canImport(TransferHandler.TransferSupport support) {
                    return false;
                }

                protected Transferable createTransferable(JComponent c) {
                    return new Transferable() {
                        @Override
                        public Object getTransferData(DataFlavor arg0)
                                throws UnsupportedFlavorException, IOException {
                            if (arg0.equals(df)) {
                                return new ByteArrayInputStream(textarea.getText().getBytes());
                            } else {
                                return textarea.getText();
                            }
                        }

                        @Override
                        public DataFlavor[] getTransferDataFlavors() {
                            return new DataFlavor[] { df, DataFlavor.stringFlavor };
                        }

                        @Override
                        public boolean isDataFlavorSupported(DataFlavor arg0) {
                            if (arg0.equals(df) || arg0.equals(DataFlavor.stringFlavor)) {
                                return true;
                            }
                            return false;
                        }
                    };
                }

                public boolean importData(TransferHandler.TransferSupport support) {
                    return false;
                }
            };
            textarea.setTransferHandler(th);
        } catch (ClassNotFoundException e1) {
            e1.printStackTrace();
        }

        Map<Integer, String> ups = new HashMap<Integer, String>();
        Set<Integer> stuck = new HashSet<Integer>();
        Map<Integer, List<Tegeval>> ups2 = new HashMap<Integer, List<Tegeval>>();
        //int[] rr = table.getSelectedRows();
        for (Gene gg : gtable.getSelectionModel().getSelectedItems()) {
            //int cr = table.convertRowIndexToModel(r);
            //Gene gg = geneset.genelist.get(cr);
            if (gg.getSpecies() != null) {
                if (gg.genid != null && gg.genid.length() > 0) {
                    ups.put(gg.getGroupIndex(), gg.name);
                    stuck.add(gg.getGroupIndex());
                }
                if (!stuck.contains(gg.getGroupIndex())) {
                    if (!ups.containsKey(gg.getGroupIndex())
                            || !(gg.name.contains("unnamed") || gg.name.contains("hypot")))
                        ups.put(gg.getGroupIndex(), gg.name);
                }

                List<Tegeval> tlist;
                if (ups2.containsKey(gg.getGroupIndex()))
                    tlist = ups2.get(gg.getGroupIndex());
                else {
                    tlist = new ArrayList<Tegeval>();
                    ups2.put(gg.getGroupIndex(), tlist);
                }

                //textarea.append(gg.name + ":\n");
                tlist.add(gg.tegeval);
                /*textarea.append(">" + tv.cont + " " + tv.teg + " " + tv.eval + "\n");
                if (tv.dna != null) {
                   for (int i = 0; i < tv.dna.length(); i += 70) {
                      textarea.append(tv.dna.substring(i, Math.min(i + 70, tv.dna.length())) + "\n");
                   }
                }*/
            }
        }

        for (int gi : ups.keySet()) {
            String name = ups.get(gi);
            List<Tegeval> tlist = ups2.get(gi);

            textarea.append(name.replace('/', '-') + ":\n");
            for (Tegeval tv : tlist) {
                textarea.append(">" + tv.name.substring(0, tv.name.indexOf('_')) + "\n");
                for (int i = 0; i < tv.getLength(); i += 70) {
                    textarea.append(tv.getSubstring(i, Math.min(i + 70, tv.getLength())) + "\n");
                }
            }
        }

        JFrame frame = new JFrame();
        frame.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
        frame.add(scrollpane);
        frame.setSize(400, 300);
        frame.setVisible(true);
    });
    sequencemenu.getItems().add(showgroupdnaseq);
    sequencemenu.getItems().add(new SeparatorMenuItem());

    MenuItem showallseq = new MenuItem("Show all sequences");
    showallseq.setOnAction(actionEvent -> {
        JFrame frame = new JFrame();
        frame.setSize(800, 600);
        frame.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);

        Serifier serifier = new Serifier();
        JavaFasta jf = new JavaFasta((comp instanceof JApplet) ? (JApplet) comp : null, serifier, geneset.cs);
        jf.initGui(frame);

        Map<String, Sequence> contset = new HashMap<String, Sequence>();
        //int[] rr = table.getSelectedRows();
        for (Gene gg : gtable.getSelectionModel().getSelectedItems()) {
            //int cr = table.convertRowIndexToModel(r);
            //Gene gg = geneset.genelist.get(cr);
            Tegeval tv = gg.tegeval;
            String contig = tv.getContshort().getName();
            Sequence seq = tv.getProteinSequence();
            seq.setName(contig);
            serifier.mseq.put(seq.getName(), seq);
            //Sequence seq = new Sequence( contig, aa, serifier.mseq );
            serifier.addSequence(seq);
        }
        jf.updateView();

        frame.setVisible(true);
    });
    sequencemenu.getItems().add(showallseq);

    MenuItem showseq = new MenuItem("Show sequences");
    showseq.setOnAction(actionEvent -> {
        Set<GeneGroup> genegroups = new HashSet<GeneGroup>();
        //int[] rr = table.getSelectedRows();
        if (!isGeneview()) {
            for (GeneGroup gg : table.getSelectionModel().getSelectedItems()) {
                //int cr = table.convertRowIndexToModel(r);
                //GeneGroup gg = geneset.allgenegroups.get(cr);
                genegroups.add(gg);
            }
        } else {
            for (Gene gg : gtable.getSelectionModel().getSelectedItems()) {
                //int cr = table.convertRowIndexToModel(r);
                //Gene gg = geneset.genelist.get(cr);
                genegroups.add(gg.getGeneGroup());
            }
        }
        Platform.runLater(() -> {
            Set<String> specs = null;
            if (table.getItems().size() > 1)
                specs = getSelspec(comp, geneset.specList, null);
            showSequences(comp, genegroups, false, specs);
        });
    });
    sequencemenu.getItems().add(showseq);

    MenuItem showseqwgenenames = new MenuItem("Show sequences w/genenames");
    showseqwgenenames.setOnAction(actionEvent -> {
        Set<GeneGroup> genegroups = new HashSet<GeneGroup>();
        //int[] rr = table.getSelectedRows();
        if (!isGeneview()) {
            for (GeneGroup gg : table.getSelectionModel().getSelectedItems()) {
                //int cr = table.convertRowIndexToModel(r);
                //GeneGroup gg = geneset.allgenegroups.get(cr);
                genegroups.add(gg);
            }
        } else {
            for (Gene gg : gtable.getSelectionModel().getSelectedItems()) {
                //int cr = table.convertRowIndexToModel(r);
                //Gene gg = geneset.genelist.get(cr);
                genegroups.add(gg.getGeneGroup());
            }
        }
        //Set<String>   specs = null;
        //if( rr.length > 1 ) specs = getSelspec(comp, specList, null);
        showSequences(comp, genegroups, false, null, true);
    });
    sequencemenu.getItems().add(showseqwgenenames);

    MenuItem showalignseq = new MenuItem("Show aligned sequences");
    showalignseq.setOnAction(actionEvent -> {
        Set<GeneGroup> genegroups = new HashSet<GeneGroup>();
        //int[] rr = table.getSelectedRows();
        if (!isGeneview()) {
            for (GeneGroup gg : table.getSelectionModel().getSelectedItems()) {
                genegroups.add(gg);
            }
        } else {
            for (Gene gg : gtable.getSelectionModel().getSelectedItems()) {
                genegroups.add(gg.getGeneGroup());
            }
        }

        Serifier serifier = new Serifier();
        for (GeneGroup ggroup : genegroups) {
            for (Tegeval tv : ggroup.getTegevals()) {
                String selspec = tv.getContshort().getSpec();//tv.getContig();
                String spec = geneset.nameFix(selspec);
                /*if( selspec.contains("hermus") ) spec = selspec;
                else {
                   Matcher m = Pattern.compile("\\d").matcher(selspec); 
                   int firstDigitLocation = m.find() ? m.start() : 0;
                   if( firstDigitLocation == 0 ) spec = "Thermus_" + selspec;
                   else spec = "Thermus_" + selspec.substring(0,firstDigitLocation) + "_" + selspec.substring(firstDigitLocation);
                }*/

                Sequence seq = tv.getAlignedSequence();
                //System.err.println( "seqlen " + seq.length() );
                if (seq != null) {
                    seq.setName(spec);
                    //Sequence seq = new Sequence( contig, seqstr, null );
                    serifier.addSequence(seq);
                } else {
                    Sequence sb = tv.getProteinSequence();
                    sb.setName(spec);
                    //Sequence sseq = new Sequence( spec, sb, serifier.mseq );
                    serifier.addSequence(sb);
                }
            }
        }
        showAlignedSequences(comp, serifier);
    });
    sequencemenu.getItems().add(showalignseq);

    MenuItem splitseq = new MenuItem("Split/Show sequences");
    splitseq.setOnAction(actionEvent -> {
        try {
            StringBuffer sb = getSelectedASeqs(table, geneset.genelist, GeneSetHead.this, geneset.specList);
            if (geneset.currentSerify == null) {
                JFrame frame = new JFrame();
                frame.setDefaultCloseOperation(JFrame.HIDE_ON_CLOSE);
                frame.setSize(800, 600);

                SerifyApplet sa = new SerifyApplet(geneset.zipfilesystem);
                sa.init(frame, null, geneset.user);
                geneset.currentSerify = sa;

                frame.setVisible(true);
            }
            geneset.currentSerify.addSequences("uh", new StringReader(sb.toString()), Paths.get("/"), null);
        } catch (URISyntaxException | IOException e1) {
            e1.printStackTrace();
        }

        //JTextArea textarea = new JTextArea();
        //textarea.append( sb.toString() );

        /*try {
           if (clipboardService == null)
          clipboardService = (ClipboardService) ServiceManager.lookup("javax.jnlp.ClipboardService");
           Action action = new CopyAction("Copy", null, "Copy data", new Integer(KeyEvent.VK_CONTROL + KeyEvent.VK_C));
           textarea.getActionMap().put("copy", action);
           grabFocus = true;
        } catch (Exception ee) {
           ee.printStackTrace();
           System.err.println("Copy services not available.  Copy using 'Ctrl-c'.");
        }
                
        *
         * final DataFlavor df =
         * DataFlavor.getTextPlainUnicodeFlavor();//new
         * DataFlavor("text/plain;charset=utf-8"); final String charset
         * = df.getParameter("charset"); final Transferable transferable
         * = new Transferable() {
         * 
         * @Override public Object getTransferData(DataFlavor arg0)
         * throws UnsupportedFlavorException, IOException { String ret =
         * makeCopyString( detailTable ); return new
         * ByteArrayInputStream( ret.getBytes( charset ) ); }
         * 
         * @Override public DataFlavor[] getTransferDataFlavors() {
         * return new DataFlavor[] { df }; }
         * 
         * @Override public boolean isDataFlavorSupported(DataFlavor
         * arg0) { if( arg0.equals(df) ) { return true; } return false;
         * } };
         * 
         * TransferHandler th = new TransferHandler() { private static
         * final long serialVersionUID = 1L;
         * 
         * public int getSourceActions(JComponent c) { return
         * TransferHandler.COPY_OR_MOVE; }
         * 
         * public boolean canImport(TransferHandler.TransferSupport
         * support) { return false; }
         * 
         * protected Transferable createTransferable(JComponent c) {
         * return transferable; }
         * 
         * public boolean importData(TransferHandler.TransferSupport
         * support) { /*try { Object obj =
         * support.getTransferable().getTransferData( df ); InputStream
         * is = (InputStream)obj;
         * 
         * byte[] bb = new byte[2048]; int r = is.read(bb);
         * 
         * //importFromText( new String(bb,0,r) ); } catch
         * (UnsupportedFlavorException e) { e.printStackTrace(); } catch
         * (IOException e) { e.printStackTrace(); }* return false; } };
         * textarea.setTransferHandler( th );
         *
        textarea.setDragEnabled(true);
                
        JScrollPane scrollpane = new JScrollPane(textarea);
                
        JFrame frame = new JFrame();
        frame.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
        frame.add(scrollpane);
        frame.setSize(400, 300);
        frame.setVisible(true);*/
    });
    sequencemenu.getItems().add(splitseq);

    MenuItem showdnaseq = new MenuItem("Show DNA sequences");
    showdnaseq.setOnAction(actionEvent -> {
        Set<GeneGroup> genegroups = new HashSet<GeneGroup>();
        int rr = 0;
        if (!isGeneview()) {
            ObservableList<GeneGroup> lgg = table.getSelectionModel().getSelectedItems();
            genegroups.addAll(lgg);
            rr = lgg.size();
        } else {
            for (Gene gg : gtable.getSelectionModel().getSelectedItems()) {
                genegroups.add(gg.getGeneGroup());
                rr++;
            }
        }
        Set<String> specs = null;
        if (rr > 1)
            specs = getSelspec(comp, geneset.specList, null);
        showSequences(comp, genegroups, true, specs);

        /*StringBuilder sb = getSelectedSeqs( table, genelist );
                
        if( currentSerify == null ) {
           JFrame frame = new JFrame();
           frame.setDefaultCloseOperation( JFrame.DO_NOTHING_ON_CLOSE );
           frame.setSize(800, 600);
                   
           SerifyApplet sa = new SerifyApplet();
           sa.init( frame );
                   
           try {
          sa.addSequences("uh", new StringReader( sb.toString() ), "/");
           } catch (URISyntaxException | IOException e1) {
          e1.printStackTrace();
           }
                   
           frame.setVisible( true );
        }
                
        JTextArea textarea = new JTextArea();
        JScrollPane scrollpane = new JScrollPane(textarea);
                
        try {
           if (clipboardService == null)
          clipboardService = (ClipboardService) ServiceManager.lookup("javax.jnlp.ClipboardService");
           Action action = new CopyAction("Copy", null, "Copy data", new Integer(KeyEvent.VK_CONTROL + KeyEvent.VK_C));
           textarea.getActionMap().put("copy", action);
           grabFocus = true;
        } catch (Exception ee) {
           ee.printStackTrace();
           System.err.println("Copy services not available.  Copy using 'Ctrl-c'.");
        }
                
        textarea.setDragEnabled(true);
        textarea.append( sb.toString() );
                
        JFrame frame = new JFrame();
        frame.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
        frame.add(scrollpane);
        frame.setSize(400, 300);
        frame.setVisible(true);*/
    });
    sequencemenu.getItems().add(showdnaseq);

    MenuItem expalldna = new MenuItem("Export all DNA sequences");
    expalldna.setOnAction(actionEvent -> {
        JFileChooser jfc = new JFileChooser();
        jfc.setFileSelectionMode(JFileChooser.DIRECTORIES_ONLY);

        try {
            Map<Integer, FileWriter> lfw = new HashMap<Integer, FileWriter>();
            if (jfc.showOpenDialog(null) == JFileChooser.APPROVE_OPTION) {
                File f = jfc.getSelectedFile();
                for (Gene gg : getGeneTable().getSelectionModel().getSelectedItems()) {
                    FileWriter fw = null;
                    if (lfw.containsKey(gg.getGroupIndex())) {
                        fw = lfw.get(gg.getGroupIndex());
                    } else {
                        fw = new FileWriter(new File(f, "group_" + gg.getGroupIndex() + ".fasta"));
                        lfw.put(gg.getGroupIndex(), fw);
                    }

                    Tegeval tv = gg.tegeval;
                    fw.append(">" + tv.name + " " + tv.teg + " " + tv.eval + "\n");
                    for (int i = 0; i < tv.getLength(); i += 70) {
                        fw.append(tv.getSubstring(i, Math.min(i + 70, tv.getLength())) + "\n");
                    }
                }
            }
            for (int gi : lfw.keySet()) {
                lfw.get(gi).close();
            }
        } catch (IOException e1) {
            e1.printStackTrace();
        }
    });
    sequencemenu.getItems().add(expalldna);

    MenuItem exprelcont = new MenuItem("Export relevant contigs");
    exprelcont.setOnAction(actionEvent -> {
        JFileChooser jfc = new JFileChooser();

        try {
            Map<Integer, FileWriter> lfw = new HashMap<Integer, FileWriter>();
            if (jfc.showOpenDialog(null) == JFileChooser.APPROVE_OPTION) {
                File f = jfc.getSelectedFile();

                Set<Sequence> contset = new HashSet<Sequence>();
                for (Gene gg : getGeneTable().getSelectionModel().getSelectedItems()) {
                    Tegeval tv = gg.tegeval;
                    contset.add(tv.getContshort());
                }

                FileWriter fw = new FileWriter(f);
                for (Sequence contig : contset) {
                    fw.append(">" + contig + "\n");
                    if (geneset.contigmap.containsKey(contig)) {
                        StringBuilder dna = geneset.contigmap.get(contig).getStringBuilder();
                        for (int i = 0; i < dna.length(); i += 70) {
                            fw.append(dna.substring(i, Math.min(i + 70, dna.length())) + "\n");
                        }
                    }
                }
                fw.close();
            }
            for (int gi : lfw.keySet()) {
                lfw.get(gi).close();
            }
        } catch (IOException e1) {
            e1.printStackTrace();
        }
    });
    sequencemenu.getItems().add(exprelcont);
    sequencemenu.getItems().add(new SeparatorMenuItem());

    MenuItem viewselrange = new MenuItem("View selected range");
    viewselrange.setOnAction(actionEvent -> {
        JFrame frame = new JFrame();
        frame.setSize(800, 600);
        frame.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);

        Serifier serifier = new Serifier();
        JavaFasta jf = new JavaFasta((comp instanceof JApplet) ? (JApplet) comp : null, serifier, geneset.cs);
        jf.initGui(frame);

        Set<Sequence> contset = new HashSet<Sequence>();
        Set<Tegeval> tvset = new HashSet<>();
        if (isGeneview()) {
            for (Gene gg : getGeneTable().getSelectionModel().getSelectedItems()) {
                Tegeval tv = gg.tegeval;
                tvset.add(tv);
                //serifier.addAnnotation( tv );
                contset.add(tv.getContshort());
            }
        } else {
            for (GeneGroup gg : getGeneGroupTable().getSelectionModel().getSelectedItems()) {
                for (Tegeval tv : gg.getTegevals()) {
                    tv.color = Color.red;
                    tvset.add(tv);
                    Sequence contig = tv.getContshort();
                    contset.add(contig);
                    //serifier.addAnnotation( tv );
                }
            }
        }
        /*Sequence seq;
        Sequence contig = tv.getContshort();
        /*if (contset.containsKey(contig)) {
          seq = contset.get(contig);
        } else {
          if( contigmap.containsKey(contig) ) {
             StringBuilder dna = contigmap.get(contig).getStringBuilder();
             seq = new Sequence(contig.getName(), dna, serifier.mseq);
          } else
             seq = new Sequence(contig.getName(), serifier.mseq);
          contset.put(contig, seq);
        }
                
        Annotation a = new Annotation(contig, contig.getName(), Color.green, serifier.mann);
        a.setStart(tv.start);
        a.setStop(tv.stop);
        a.setOri(tv.ori);
        a.setGroup(gg.name);
        a.setType("gene");*/
        // seq.addAnnotation( new Annotation( seq, ) );

        for (Sequence contig : contset) {
            int start = Integer.MAX_VALUE;
            int stop = Integer.MIN_VALUE;
            for (Tegeval tv : tvset) {
                if (contig == tv.seq) {
                    start = Math.min(start, tv.start);
                    stop = Math.max(stop, tv.stop);
                }
            }

            int rstart = 0;
            int rstop = contig.length();
            if (contig.annset != null)
                for (Annotation tv : contig.annset) {
                    if (contig == tv.seq) {
                        if (tv.stop < start && tv.stop > rstart) {
                            rstart = tv.stop;
                        }
                        if (tv.start > stop && tv.start < rstop) {
                            rstop = tv.start;
                        }
                    }
                }

            start = rstart;
            stop = rstop;

            Sequence newseq = new Sequence(contig.getName(),
                    new StringBuilder(contig.getSubstring(start, stop, 1)), serifier.mseq);
            /*if( contig.isReverse() ) {
               newseq.reverse();
               newseq.complement();
            }*/

            serifier.addSequence(newseq);
            for (Tegeval tv : tvset) {
                Annotation newann = new Annotation(newseq, tv.start - start, tv.stop - start, tv.ori, tv.name);
                if (contig == tv.seq) {
                    newseq.addAnnotation(newann);
                }
                serifier.addAnnotation(newann);
            }
            /*for( Annotation ann : contig.getAnnotations() ) {
               serifier.addAnnotation( ann );
            }*/
            /*if (seq.getAnnotations() != null)
               Collections.sort(seq.getAnnotations());*/
        }
        jf.updateView();

        frame.setVisible(true);
    });
    sequencemenu.getItems().add(viewselrange);

    MenuItem viewwhole = new MenuItem("View whole contigs for selection");
    viewwhole.setOnAction(actionEvent -> {
        JFrame frame = new JFrame();
        frame.setSize(800, 600);
        frame.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);

        Serifier serifier = new Serifier();
        JavaFasta jf = new JavaFasta((comp instanceof JApplet) ? (JApplet) comp : null, serifier, geneset.cs);
        jf.initGui(frame);

        //Map<Sequence, Sequence> contset = new HashMap<Sequence, Sequence>();
        /*int[] rr = table.getSelectedRows();
        for (int r : rr) {
           int cr = table.convertRowIndexToModel(r);
           Gene gg = geneset.genelist.get(cr);
           if (gg.species != null) {
          for (String sp : gg.species.keySet()) {
             Teginfo stv = gg.species.get(sp);
             for (Tegeval tv : stv.tset) {
                Sequence seq;
                Sequence contig = tv.getContshort();
                if (contset.containsKey(contig)) {
                   seq = contset.get(contig);
                } else {
                   if( GeneSet.contigmap.containsKey(contig) ) {
                      //StringBuilder dna = GeneSet.contigmap.get(contig).seq;
                      StringBuilder dna = contig.getSequence().getStringBuilder();
                      seq = new Sequence(contig.getName(), dna, serifier.mseq);
                   } else {
                      seq = new Sequence(contig.getName(), serifier.mseq);
                   }
                
                   contset.put(contig, seq);
                }
                
                /*
                 * Annotation a = jf.new Annotation( seq,
                 * contig, Color.red ); a.setStart( tv.start );
                 * a.setStop( tv.stop ); a.setOri( tv.ori );
                 * a.setGroup( gg.name ); a.setType( "gene" );
                 * jf.addAnnotation( a );
                 *
                // seq.addAnnotation( new Annotation( seq, ) );
             }
          }
           }
        }*/

        Set<Sequence> contigs = new HashSet<Sequence>();
        if (isGeneview()) {
            for (Gene gg : getGeneTable().getSelectionModel().getSelectedItems()) {
                Tegeval tv = gg.tegeval;
                tv.color = Color.red;
                Sequence contig = tv.getContshort();
                //contig.offset = -tv.start;
                contigs.add(contig);
            }

            /*Annotation a = new Annotation(contig, contig.getName(), Color.red, serifier.mann);
            a.setStart(tv.start);
            a.setStop(tv.stop);
            a.setOri(tv.ori);
            a.setGroup(g.name);
            a.setType("gene");*/
            //serifier.addAnnotation( tv );
        } else {
            for (GeneGroup gg : getGeneGroupTable().getSelectionModel().getSelectedItems()) {
                for (Tegeval tv : gg.getTegevals()) {
                    tv.color = Color.red;
                    Sequence contig = tv.getContshort();
                    //contig.offset = -tv.start;
                    contigs.add(contig);

                    /*Annotation a = new Annotation(contig, contig.getName(), Color.red, serifier.mann);
                    a.setStart(tv.start);
                    a.setStop(tv.stop);
                    a.setOri(tv.ori);
                    a.setGroup(gg.getCommonName());
                    a.setType("gene");*/
                    //serifier.addAnnotation( tv );
                }
            }
        }
        //Gene gg = geneset.genelist.get(cr);
        //for (Gene g : geneset.genelist) {
        //if (g.species != null) {
        //for (String sp : g.species.keySet()) {

        for (Sequence contig : contigs) {
            for (Annotation ann : contig.getAnnotations()) {
                serifier.addAnnotation(ann);
            }

            serifier.addSequence(contig);
            serifier.mseq.put(contig.getName(), contig);
            //if(contig.getAnnotations() != null)
            //   Collections.sort(contig.getAnnotations());
        }
        jf.updateView();

        frame.setVisible(true);
    });
    sequencemenu.getItems().add(viewwhole);
    sequencemenu.getItems().add(new SeparatorMenuItem());

    MenuItem viewspecseq = new MenuItem("View species sequence");
    viewspecseq.setOnAction(actionEvent -> {
        Set<String> selspec = getSelspec(GeneSetHead.this, geneset.specList);

        JFrame frame = new JFrame();
        frame.setSize(800, 600);
        frame.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);

        Serifier serifier = new Serifier();
        JavaFasta jf = new JavaFasta((comp instanceof JApplet) ? (JApplet) comp : null, serifier, geneset.cs);
        jf.initGui(frame);

        for (String spec : selspec) {
            List<Sequence> contigs = geneset.speccontigMap.get(spec);

            for (Sequence contig : contigs) {
                List<Annotation> lann = contig.getAnnotations();
                if (lann != null)
                    for (Annotation ann : lann) {
                        serifier.addAnnotation(ann);
                    }

                serifier.addSequence(contig);
                serifier.mseq.put(contig.getName(), contig);
            }
        }

        jf.updateView();

        frame.setVisible(true);
    });
    sequencemenu.getItems().add(viewspecseq);

    Menu windowmenu = new Menu("Tools");
    MenuItem seqviewer = new MenuItem("Sequence viewer");
    seqviewer.setOnAction(actionEvent -> {
        JFrame frame = new JFrame();
        frame.setSize(800, 600);
        frame.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);

        Serifier serifier = new Serifier();
        JavaFasta jf = new JavaFasta((comp instanceof JApplet) ? (JApplet) comp : null, serifier, geneset.cs);
        jf.initGui(frame);
        jf.updateView();

        frame.setVisible(true);
    });
    windowmenu.getItems().add(seqviewer);
    windowmenu.getItems().add(new SeparatorMenuItem());
    MenuItem genesorter = new MenuItem("Gene sorter");
    genesorter.setOnAction(actionEvent -> {
        try {
            //if( gb.isSelected() ) new GeneSorter().mynd( GeneSetHead.this, genelist, table, null, contigmap );
            //else 
            new GeneSorter().groupMynd(GeneSetHead.this, geneset.allgenegroups, geneset.specList,
                    geneset.genelist, table, geneset.contigmap, geneset.specset);
        } catch (IOException e1) {
            e1.printStackTrace();
        }
    });
    windowmenu.getItems().add(genesorter);
    MenuItem specorderaction = new MenuItem("Order species list");
    specorderaction.setOnAction(actionEvent -> {
        TreeUtil tu = new TreeUtil();
        /*corrInd.clear();
        for( String spec : specList ) {
           corrInd.add( nameFix( spec ) );
        }*/

        Serifier serifier = getConcatenatedSequences(false, false);

        Map<String, Integer> blosumap = JavaFasta.getBlosumMap();
        double[] dmat = new double[serifier.lseq.size() * serifier.lseq.size()];
        Sequence.distanceMatrixNumeric(serifier.lseq, dmat, null, false, false, null, blosumap);

        List<String> ret = new ArrayList<String>();
        for (Sequence seqname : serifier.lseq) {
            ret.add(seqname.getName()); //.replace(' ', '_') );
        }
        //List<String>   corrInd = currentjavafasta.getNames();

        //Sequence.distanceMatrixNumeric(serifier.lseq, dmat, idxs, bootstrap, cantor, ent, blosum);
        Node n = tu.neighborJoin(dmat, ret, null, false, false);

        Comparator<Node> comp2 = (o1, o2) -> {
            int c1 = o1.countLeaves();
            int c2 = o2.countLeaves();

            if (c1 > c2)
                return 1;
            else if (c1 == c2)
                return 0;

            return -1;
        };
        tu.arrange(n, comp2);
        //corrInd.clear();
        List<String> ordInd = n.traverse();

        for (String spec : ordInd) {
            System.err.println(spec);
        }

        for (String oldspec : geneset.specList) {
            if (!ordInd.contains(oldspec)) {
                ordInd.add(oldspec);
            }
        }
        geneset.specList = ordInd;

        //TableModel model = table.getModel();
        //table.setModel( nullmodel );
        //table.setModel( model );

        //table.tableChanged( new TableModelEvent( table.getModel() ) );
        //table.getColumnModel().
        System.err.println(geneset.specList.size());
    });
    MenuItem matrixaction = new MenuItem("Relation matrix");
    matrixaction.setOnAction(actionEvent -> {
        SwingUtilities.invokeLater(() -> {
            JComboBox<String> descombo = new JComboBox<String>(
                    geneset.deset.toArray(new String[geneset.deset.size()]));
            JCheckBox anicheck = new JCheckBox("ANImatrix");
            JCheckBox plasmidcheck = new JCheckBox("Skip plasmids");
            descombo.insertItemAt("", 0);
            descombo.setSelectedIndex(0);
            JOptionPane.showMessageDialog(GeneSetHead.this, new Object[] { descombo, anicheck, plasmidcheck });
            String val = descombo.getSelectedItem().toString();

            Collection<GeneGroup> ss = new HashSet<>();
            /*int[] rr = table.getSelectedRows();
            for( int r : rr ) {
               ss.add( geneset.allgenegroups.get( table.convertRowIndexToModel(r) ) );
            }*/
            ss.addAll(table.getSelectionModel().getSelectedItems());
            if (ss.isEmpty())
                ss = geneset.allgenegroups;

            Set<String> species = getSelspec(GeneSetHead.this, geneset.specList);
            bimg = anicheck.isSelected()
                    ? geneset.animatrix(species, geneset.clusterMap, val, ss, plasmidcheck.isSelected())
                    : geneset.bmatrix(species, geneset.clusterMap, val);

            JFrame f = new JFrame("Relation matrix");
            f.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
            f.setSize(500, 500);

            /*
             * { public void paintComponent( Graphics g ) {
             * super.paintComponent(g); g.drawImage(bimg, 0, 0, this); } };
             */

            try {
                final DataFlavor df = new DataFlavor("text/plain;charset=utf-8");
                final Transferable transferable = new Transferable() {
                    @Override
                    public Object getTransferData(DataFlavor arg0)
                            throws UnsupportedFlavorException, IOException {
                        StringBuilder ret = new StringBuilder();

                        int i = 0;
                        for (String spc : geneset.specList) {
                            if (++i == geneset.specList.size())
                                ret.append(spc + "\n");
                            else
                                ret.append(spc + "\t");
                        }

                        int where = 0;
                        for (String spc1 : geneset.specList) {
                            int wherex = 0;
                            for (String spc2 : geneset.specList) {
                                int spc1tot = 0;
                                int spc2tot = 0;
                                int totot = 0;

                                int spc1totwocore = 0;
                                int spc2totwocore = 0;
                                int tototwocore = 0;
                                for (Set<String> set : geneset.clusterMap.keySet()) {
                                    Set<Map<String, Set<String>>> erm = geneset.clusterMap.get(set);
                                    if (set.contains(spc1)) {
                                        if (set.size() < geneset.specList.size()) {
                                            spc1totwocore += erm.size();
                                            for (Map<String, Set<String>> sm : erm) {
                                                Set<String> hset = sm.get(spc1);
                                                tototwocore += hset.size();
                                            }

                                            if (set.contains(spc2)) {
                                                spc2totwocore += erm.size();
                                            }

                                            if (spc2totwocore > spc1totwocore)
                                                System.err.println(
                                                        "okoko " + spc1totwocore + " " + spc2totwocore);
                                        }

                                        spc1tot += erm.size();
                                        for (Map<String, Set<String>> sm : erm) {
                                            Set<String> hset = sm.get(spc1);
                                            totot += hset.size();
                                        }

                                        if (set.contains(spc2)) {
                                            spc2tot += erm.size();
                                        }
                                    }
                                }

                                if (where == wherex) {
                                    if (where == geneset.specList.size() - 1)
                                        ret.append(0 + "\n");
                                    else
                                        ret.append(0 + "\t");
                                } else {
                                    double hlut = (double) spc2totwocore / (double) spc1totwocore;
                                    double sval = hlut; // 1.0/( 1.1-hlut );
                                    double val = Math.pow(50.0, sval - 0.3) - 1.0;
                                    double dval = Math.round(100.0 * (val)) / 100.0;

                                    if (wherex == geneset.specList.size() - 1)
                                        ret.append(dval + "\n");
                                    else
                                        ret.append(dval + "\t");
                                }
                                wherex++;
                            }
                            where++;
                        }

                        return new ByteArrayInputStream(ret.toString().getBytes());
                    }

                    @Override
                    public DataFlavor[] getTransferDataFlavors() {
                        return new DataFlavor[] { df };
                    }

                    @Override
                    public boolean isDataFlavorSupported(DataFlavor arg0) {
                        if (arg0.equals(df)) {
                            return true;
                        }
                        return false;
                    }
                };
                final TransferComponent comp2 = new TransferComponent(bimg, transferable);

                TransferHandler th = new TransferHandler() {
                    private static final long serialVersionUID = 1L;

                    public int getSourceActions(JComponent c) {
                        return TransferHandler.COPY_OR_MOVE;
                    }

                    public boolean canImport(TransferSupport support) {
                        return false;
                    }

                    protected Transferable createTransferable(JComponent c) {
                        return transferable;
                    }

                    public boolean importData(TransferSupport support) {
                        return true;
                    }
                };
                comp2.setTransferHandler(th);

                comp2.setEnabled(true);
                JScrollPane fsc = new JScrollPane(comp2);
                comp2.setPreferredSize(new Dimension(bimg.getWidth(), bimg.getHeight()));

                JPopupMenu popup = new JPopupMenu();
                popup.add(new AbstractAction("Save image") {
                    @Override
                    public void actionPerformed(ActionEvent e) {
                        FileSaveService fss = null;
                        FileContents fileContents = null;

                        try {
                            ByteArrayOutputStream baos = new ByteArrayOutputStream();
                            OutputStreamWriter osw = new OutputStreamWriter(baos);
                            ImageIO.write(bimg, "png", baos);
                            baos.close();

                            try {
                                fss = (FileSaveService) ServiceManager.lookup("javax.jnlp.FileSaveService");
                            } catch (UnavailableServiceException e1) {
                                fss = null;
                            }

                            if (fss != null) {
                                ByteArrayInputStream bais = new ByteArrayInputStream(baos.toByteArray());
                                fileContents = fss.saveFileDialog(null, null, bais, "export.png");
                                bais.close();
                                OutputStream os = fileContents.getOutputStream(true);
                                os.write(baos.toByteArray());
                                os.close();
                            } else {
                                JFileChooser jfc = new JFileChooser();
                                if (jfc.showSaveDialog(GeneSetHead.this) == JFileChooser.APPROVE_OPTION) {
                                    File f = jfc.getSelectedFile();
                                    FileOutputStream fos = new FileOutputStream(f);
                                    fos.write(baos.toByteArray());
                                    fos.close();

                                    Desktop.getDesktop().browse(f.toURI());
                                }
                            }
                        } catch (IOException e2) {
                            e2.printStackTrace();
                        }
                    }
                });
                comp2.setComponentPopupMenu(popup);

                f.add(fsc);
                f.setVisible(true);
            } catch (ClassNotFoundException e1) {
                e1.printStackTrace();
            }
        });
    });
    MenuItem tniaction = new MenuItem("TNI/ANI");
    tniaction.setOnAction(actionEvent -> {
        SwingUtilities.invokeLater(() -> {
            Set<String> species = getSelspec(GeneSetHead.this, geneset.specList);
            String makeblastdb = "makeblastdb";
            String OS = System.getProperty("os.name").toLowerCase();
            if (OS.indexOf("mac") != -1)
                makeblastdb = "/usr/local/bin/makeblastdb";
            for (String spec : species) {
                List<Sequence> lseq = geneset.speccontigMap.get(spec);
                ProcessBuilder pb = new ProcessBuilder(makeblastdb, "-dbtype", "nucl", "-title", spec, "-out",
                        spec);
                File dir = new File(System.getProperty("user.home"));

                /*try {
                    FileWriter w = new FileWriter( new File(dir, spec+".fna") );
                    for( Sequence seq : lseq ) {
                seq.writeSequence(w);
                    }
                    w.close();
                } catch (IOException e2) {
                    e2.printStackTrace();
                }*/

                pb.directory(dir);
                try {
                    Process p = pb.start();
                    Writer fw = new OutputStreamWriter(p.getOutputStream());
                    for (Sequence seq : lseq) {
                        seq.writeSequence(fw);
                    }
                    fw.close();
                } catch (IOException e1) {
                    e1.printStackTrace();
                }
            }

            int y = 0;
            double[] matrix = new double[species.size() * species.size()];
            for (String dbspec : species) {
                int x = 0;
                for (String spec : species) {
                    //if( !spec.equals(dbspec) ) {
                    final List<Sequence> lseq = geneset.speccontigMap.get(spec);
                    String blastn = "blastn";
                    if (OS.indexOf("mac") != -1)
                        blastn = "/usr/local/bin/blastn";
                    ProcessBuilder pb = new ProcessBuilder(blastn, "-db", dbspec, "-num_threads",
                            Integer.toString(Runtime.getRuntime().availableProcessors()), "-num_alignments",
                            "1", "-num_descriptions", "1"); //,"-max_hsps","1");
                    File dir = new File(System.getProperty("user.home"));
                    pb.directory(dir);
                    try {
                        Process p = pb.start();
                        final BufferedWriter fw = new BufferedWriter(
                                new OutputStreamWriter(p.getOutputStream()));
                        Thread t = new Thread() {
                            public void run() {
                                try {
                                    for (Sequence seq : lseq) {
                                        seq.writeSplitSequence(fw);
                                        //seq.writeSequence(fw);
                                    }
                                    fw.close();
                                } catch (IOException e1) {
                                    e1.printStackTrace();
                                }
                            }
                        };
                        t.start();
                        //Path path = Paths.get("/Users/sigmar/"+spec+"_"+dbspec+".blastout");
                        //Files.copy(p.getInputStream(), path, StandardCopyOption.REPLACE_EXISTING);

                        int tnum = 0;
                        int tdenum = 0;
                        double avg = 0.0;
                        int count = 0;

                        BufferedReader br = new BufferedReader(new InputStreamReader(p.getInputStream()));
                        String line = br.readLine();
                        while (line != null) {
                            if (line.startsWith(" Identities")) {
                                int i = line.indexOf('(');
                                String sub = line.substring(14, i - 1);
                                String[] split = sub.split("/");
                                int num = Integer.parseInt(split[0]);
                                int denum = Integer.parseInt(split[1]);

                                avg += (double) num / (double) denum;

                                tnum += num;
                                tdenum += denum;
                                count++;
                            }
                            line = br.readLine();
                        }
                        br.close();

                        if (count > 0)
                            avg /= count;
                        double val = (double) tnum / (double) tdenum;
                        matrix[y * species.size() + x] = avg;//val;
                        System.err.println(spec + " on " + dbspec + " " + val);
                    } catch (IOException e1) {
                        e1.printStackTrace();
                    }
                    //}
                    x++;
                }
                y++;
            }

            geneset.corrInd.clear();
            for (String spec : species) {
                geneset.corrInd.add(geneset.nameFix(spec));
            }

            final BufferedImage bi = geneset.showRelation(geneset.corrInd, matrix, false);
            JFrame f = new JFrame("TNI matrix");
            f.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
            f.setSize(500, 500);

            JComponent comp2 = new JComponent() {
                public void paintComponent(Graphics g) {
                    super.paintComponent(g);
                    g.drawImage(bi, 0, 0, bi.getWidth(), bi.getHeight(), 0, 0, bi.getWidth(), bi.getHeight(),
                            this);
                }
            };
            Dimension dim = new Dimension(bi.getWidth(), bi.getHeight());
            comp2.setPreferredSize(dim);
            comp2.setSize(dim);
            JScrollPane scroll = new JScrollPane(comp2);
            f.add(scroll);

            f.setVisible(true);
        });
    });
    MenuItem anitreeaction = new MenuItem("ANI tree");
    anitreeaction.setOnAction(actionEvent -> {
        Set<String> species = getSelspec(GeneSetHead.this, geneset.specList);
        List<String> speclist = new ArrayList<String>(species);

        Collection<GeneGroup> allgg = new HashSet<GeneGroup>();
        allgg.addAll(table.getSelectionModel().getSelectedItems());
        if (allgg.isEmpty())
            allgg = geneset.allgenegroups;
        Map<String, Integer> blosumap = JavaFasta.getBlosumMap();

        double[] corrarr = new double[speclist.size() * speclist.size()];
        int where = 0;
        for (String spec1 : speclist) {
            int wherex = 0;

            String spc1 = geneset.nameFix(spec1);

            //String spc1 = nameFix( spec1 );
            for (String spec2 : speclist) {
                if (where != wherex) {
                    int totalscore = 0;
                    int totaltscore = 1;
                    for (GeneGroup gg : allgg) {
                        if ( /*gg.getSpecies().size() > 40 &&*/ gg.getSpecies().contains(spec1)
                                && gg.getSpecies().contains(spec2)) {
                            Teginfo ti1 = gg.species.get(spec1);
                            Teginfo ti2 = gg.species.get(spec2);
                            //if( ti1.tset.size() == 1 && ti2.tset.size() == 1 ) {
                            //double bval = 0.0;

                            int score = 0;
                            int tscore = 1;
                            for (Tegeval tv1 : ti1.tset) {
                                for (Tegeval tv2 : ti2.tset) {
                                    Sequence seq1 = tv1.getAlignedSequence();
                                    Sequence seq2 = tv2.getAlignedSequence();
                                    if (seq1 != null && seq2 != null) {
                                        int mest = 0;
                                        int tmest = 0;

                                        int startcheck = 0;
                                        int start = -1;
                                        int stopcheck = 0;
                                        int stop = -1;
                                        for (int i = 0; i < seq1.length(); i++) {
                                            if (seq1.getCharAt(i) != '-') {
                                                startcheck |= 1;
                                            }
                                            if (seq2.getCharAt(i) != '-') {
                                                startcheck |= 2;
                                            }

                                            if (start == -1 && startcheck == 3) {
                                                start = i;
                                                break;
                                            }
                                        }

                                        for (int i = seq1.length() - 1; i >= 0; i--) {
                                            if (seq1.getCharAt(i) != '-') {
                                                stopcheck |= 1;
                                            }
                                            if (seq2.getCharAt(i) != '-') {
                                                stopcheck |= 2;
                                            }

                                            if (stop == -1 && stopcheck == 3) {
                                                stop = i + 1;
                                                break;
                                            }
                                        }
                                        //count += stop-start;

                                        for (int i = start; i < stop; i++) {
                                            char lc = seq1.getCharAt(i);
                                            char c = Character.toUpperCase(lc);
                                            //if( )
                                            String comb = c + "" + c;
                                            if (blosumap.containsKey(comb))
                                                tmest += blosumap.get(comb);
                                        }

                                        for (int i = start; i < stop; i++) {
                                            char lc = seq1.getCharAt(i);
                                            char c = Character.toUpperCase(lc);
                                            char lc2 = seq2.getCharAt(i);
                                            char c2 = Character.toUpperCase(lc2);

                                            String comb = c + "" + c2;
                                            if (blosumap.containsKey(comb))
                                                mest += blosumap.get(comb);
                                        }

                                        double tani = (double) mest / (double) tmest;
                                        if (tani > (double) score / (double) tscore) {
                                            score = mest;
                                            tscore = tmest;
                                        }
                                        //ret = (double)score/(double)tscore; //int cval = tscore == 0 ? 0 : Math.min( 192, 512-score*512/tscore );
                                        //return ret;
                                    }
                                    //if( where == 0 ) d1.add( gg.getCommonName() );
                                    //else d2.add( gg.getCommonName() );
                                }
                            }
                            totalscore += score;
                            totaltscore += tscore;

                            /*if( bval > 0 ) {
                               ani += bval;
                               count++;
                            }*/
                            //}
                        }
                    }
                    double ani = (double) (totaltscore - totalscore) / (double) totaltscore;
                    corrarr[where * speclist.size() + wherex] = ani;
                }
                wherex++;
            }
            where++;
        }
        TreeUtil tu = new TreeUtil();
        geneset.corrInd.clear();
        for (String spec : speclist) {
            geneset.corrInd.add(geneset.nameFix(spec));
        }
        Node n = tu.neighborJoin(corrarr, geneset.corrInd, null, false, false);
        System.err.println(n);
    });
    windowmenu.getItems().add(specorderaction);
    windowmenu.getItems().add(matrixaction);
    windowmenu.getItems().add(tniaction);
    windowmenu.getItems().add(anitreeaction);

    MenuItem neighbourhood = new MenuItem("Neighbourhood");
    neighbourhood.setOnAction(actionEvent -> {
        try {
            Set<GeneGroup> genset = new HashSet<>();
            if (!isGeneview()) {
                for (GeneGroup gg : table.getSelectionModel().getSelectedItems()) {
                    genset.add(gg);
                }
            } else {
                for (Gene gene : gtable.getSelectionModel().getSelectedItems()) {
                    genset.add(gene.getGeneGroup());
                }
            }
            new Neighbour(genset).neighbourMynd(GeneSetHead.this, comp, geneset.genelist, geneset.contigmap);
        } catch (IOException e1) {
            e1.printStackTrace();
        }
    });
    windowmenu.getItems().add(neighbourhood);

    MenuItem synteny = new MenuItem("Synteny");
    synteny.setOnAction(actionEvent -> {
        SwingUtilities.invokeLater(() -> {
            //Set<String> species = speciesFromCluster( clusterMap );
            new Synteni().syntenyMynd(GeneSetHead.this, comp, geneset.genelist);
        });
    });
    windowmenu.getItems().add(synteny);
    MenuItem compareplotaction = new MenuItem("Gene atlas");
    compareplotaction.setOnAction(actionEvent -> {
        SwingUtilities.invokeLater(() -> {
            try {
                new GeneCompare().comparePlot(GeneSetHead.this, comp, geneset.genelist, geneset.clusterMap,
                        8192, 8192);
            } catch (IOException e1) {
                e1.printStackTrace();
            }
        });

        /*gatest("MAT4726");
                
        final JFrame frame = new JFrame();
        frame.setDefaultCloseOperation( JFrame.DISPOSE_ON_CLOSE );
        frame.setSize(800, 600);
                
        final JComponent c = new JComponent() {
           public void paintComponent( Graphics g ) {
          g.drawImage(bimg, 0, 0, frame);
           }
        };
        c.setPreferredSize( new Dimension(bimg.getWidth(), bimg.getHeight()) );
        JScrollPane   scrollpane = new JScrollPane( c );
        frame.add( scrollpane );
        frame.setVisible( true );*/
    });
    windowmenu.getItems().add(compareplotaction);

    MenuItem syntenygradientaction = new MenuItem("Synteny gradient");
    syntenygradientaction.setOnAction(actionEvent -> {
        SwingUtilities.invokeLater(() -> {
            Set<String> presel = new HashSet<>();
            if (isGeneview()) {
                for (Gene g : gtable.getSelectionModel().getSelectedItems()) {
                    presel.addAll(g.getGeneGroup().getSpecies());
                }
            } else {
                for (GeneGroup gg : table.getSelectionModel().getSelectedItems()) {
                    presel.addAll(gg.getSpecies());
                }
            }
            new SyntGrad().syntGrad(GeneSetHead.this, 4096, 4096, presel);
        });
    });
    windowmenu.getItems().add(syntenygradientaction);

    MenuItem genexyplotaction = new MenuItem("Gene XY plot");
    genexyplotaction.setOnAction(actionEvent -> SwingUtilities.invokeLater(
            () -> new XYPlot().xyPlot(GeneSetHead.this, comp, geneset.genelist, geneset.clusterMap)));
    windowmenu.getItems().add(genexyplotaction);

    MenuItem refalignaction = new MenuItem("Reference align");
    refalignaction.setOnAction(actionEvent -> {
        SwingUtilities.invokeLater(() -> {
            final TableView<Gene> table12 = getGeneTable();
            final Collection<String> specset = geneset.getSpecies(); //speciesFromCluster( clusterMap );
            final List<String> species = new ArrayList<>(specset);

            TableModel model = new TableModel() {
                @Override
                public int getRowCount() {
                    return species.size();
                }

                @Override
                public int getColumnCount() {
                    return 1;
                }

                @Override
                public String getColumnName(int columnIndex) {
                    return null;
                }

                @Override
                public Class<?> getColumnClass(int columnIndex) {
                    return String.class;
                }

                @Override
                public boolean isCellEditable(int rowIndex, int columnIndex) {
                    return false;
                }

                @Override
                public Object getValueAt(int rowIndex, int columnIndex) {
                    return geneset.nameFix(species.get(rowIndex));
                }

                @Override
                public void setValueAt(Object aValue, int rowIndex, int columnIndex) {
                }

                @Override
                public void addTableModelListener(TableModelListener l) {
                }

                @Override
                public void removeTableModelListener(TableModelListener l) {
                }
            };
            JTable table1 = new JTable(model);
            JTable table2 = new JTable(model);

            table1.getSelectionModel().setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
            table2.getSelectionModel().setSelectionMode(ListSelectionModel.MULTIPLE_INTERVAL_SELECTION);

            JScrollPane scroll1 = new JScrollPane(table1);
            JScrollPane scroll2 = new JScrollPane(table2);

            FlowLayout flowlayout = new FlowLayout();
            JComponent c = new JComponent() {
            };
            c.setLayout(flowlayout);

            c.add(scroll1);
            c.add(scroll2);

            JOptionPane.showMessageDialog(comp, c);

            int r = table1.getSelectedRow();
            int i = table1.convertRowIndexToModel(r);
            String spec = i == -1 ? null : species.get(i);
            List<Sequence> lcont = geneset.speccontigMap.get(spec);

            r = table2.getSelectedRow();
            i = table2.convertRowIndexToModel(r);
            String refspec = i == -1 ? null : species.get(i);
            List<Sequence> lrefcont = geneset.speccontigMap.get(spec);

            /*ByteArrayOutputStream baos = new ByteArrayOutputStream();
            Writer fw = new OutputStreamWriter( baos );
            try {
            List<Sequence> lcont = geneset.speccontigMap.get(spec);
            for( Sequence seq : lcont ) {
                seq.writeSequence(fw);
            }
            fw.close();
            } catch (IOException e1) {
            e1.printStackTrace();
            }
                    
            String comp = spec;
            byte[] bb = baos.toByteArray();*/

            FlxReader flx = new FlxReader();

            Map<String, String> env = new HashMap<String, String>();
            env.put("create", "true");
            //String uristr = "jar:" + geneset.zippath.toUri();
            //URI geneset.zipuri = URI.create( uristr /*.replace("file://", "file:")*/ );

            try {
                geneset.zipfilesystem = FileSystems.newFileSystem(geneset.zipuri, env);
                for (Path root : geneset.zipfilesystem.getRootDirectories()) {
                    Path subf = root.resolve(spec + ".grp");
                    if (Files.exists(subf)) {
                        BufferedReader br = Files.newBufferedReader(subf);
                        Map<String, Map<String, String>> mm = flx.loadContigGraph(br);
                        br.close();

                        String home = System.getProperty("user.home") + "/";
                        StringBuilder sb = comp != null
                                ? flx.referenceAssembly(home, spec, refspec, lrefcont, lcont)
                                : null;
                        Sequence cseq = new Sequence(spec + "_chromosome", null);
                        if (sb != null && sb.length() > 0) {
                            br = new BufferedReader(new StringReader(sb.toString()));
                        } else {
                            Path sca = root.resolve(spec + ".csc");
                            if (!Files.exists(sca)) {
                                sca = root.resolve(spec + ".sca");
                            }
                            br = Files.newBufferedReader(sca);
                        }
                        //br = new BufferedReader( fr );

                        flx.connectContigs(br, cseq, false, new FileWriter(home + spec + "_new.fna"), spec);
                        br.close();
                    }

                    break;
                }
            } catch (Exception ex) {
                ex.printStackTrace();
            } finally {
                try {
                    geneset.zipfilesystem.close();
                } catch (IOException ie) {
                    ie.printStackTrace();
                }
                ;
            }
        });

        //flx.start( f.getParentFile().getAbsolutePath()+"/", f.getName(), false, fw, comp, bb);
    });
    windowmenu.getItems().add(refalignaction);

    windowmenu.getItems().add(new SeparatorMenuItem());

    MenuItem runantismash = new MenuItem("Run antismash");
    runantismash.setOnAction(actionEvent -> SwingUtilities.invokeLater(new Runnable() {
        public void run() {
            try {
                Serifier ser = new Serifier();
                Set<String> selspec = getSelspec(null, geneset.getSpecies(), null);

                JTextField host = new JTextField("localhost");
                JOptionPane.showMessageDialog(null, host);

                String username = System.getProperty("user.name");
                String hostname = host.getText();

                /*Path[] pt = null;
                JFileChooser fc = new JFileChooser();
                fc.setFileSelectionMode( JFileChooser.DIRECTORIES_ONLY );
                if( fc.showSaveDialog(null) == JFileChooser.APPROVE_OPTION ) {
                   pt = new Path[3];
                   pt[2] = fc.getSelectedFile().toPath();
                }*/

                List<Object> commands = new ArrayList<Object>();
                //commands.add(genexyplotaction)

                for (String spec : selspec) {
                    Path pp = Paths.get(userhome);
                    Path p = pp.resolve(spec + ".gbk");
                    //BufferedWriter fw = Files.newBufferedWriter( p );
                    List<Sequence> clist = geneset.speccontigMap.get(spec);

                    Map<String, List<Annotation>> mapan = new HashMap<String, List<Annotation>>();
                    Serifier serifier = new Serifier();
                    for (Sequence c : clist) {
                        serifier.addSequence(c);
                        serifier.mseq.put(c.getName(), c);

                        List<Annotation> lann = new ArrayList<Annotation>();
                        if (c.getAnnotations() != null)
                            for (Annotation ann : c.getAnnotations()) {
                                Tegeval tv = (Tegeval) ann;

                                Gene g = tv.getGene();
                                GeneGroup gg = g.getGeneGroup();
                                String name = g.getName();
                                if (gg != null && name.contains(spec)) {
                                    name = gg.getName();
                                }
                                Annotation anno = new Annotation(c, tv.start, tv.stop, tv.ori, name);
                                anno.id = tv.getGene().getId();
                                anno.type = "CDS";

                                String cazy = gg != null ? gg.getCommonCazy(geneset.cazymap) : null;
                                if (cazy != null)
                                    anno.addDbRef("CAZY:" + cazy);
                                lann.add(anno);
                            }
                        mapan.put(c.getName(), lann);
                    }
                    Sequences s = new Sequences(null, spec, "nucl", null, clist.size());
                    //serifier.addSequences(seqs);
                    serifier.writeGenebank(p, false, true, s, mapan);

                    //fw.close();

                    String apath = p.toAbsolutePath().toString();
                    if (hostname.equals("localhost")) {
                        String[] cmds = { "run_antismash", apath };
                        //commands.add( pt );
                        commands.add(Arrays.asList(cmds));
                    } else {
                        String aname = p.getFileName().toString();
                        String adir = aname.substring(0, aname.length() - 4);
                        String cyghome = NativeRun.cygPath(userhome);
                        String[] cmds = { "scp", apath, hostname + ":~", ";", "ssh", hostname, "run_antismash",
                                aname, ";", "scp", "-r", hostname + ":~/" + adir, cyghome };//userhome+"~"};
                        //commands.add( pt );
                        commands.add(Arrays.asList(cmds));
                    }
                }

                Runnable run = new Runnable() {
                    @Override
                    public void run() {
                        for (String spec : selspec) {
                            Path p = Paths.get(userhome, spec);

                            Map<String, String> env = new HashMap<String, String>();
                            env.put("create", "true");

                            String uristr = "jar:" + geneset.zippath.toUri();
                            URI zipuri = URI.create(uristr /*.replace("file://", "file:")*/ );
                            final List<Path> lbi = new ArrayList<Path>();
                            try {
                                geneset.zipfilesystem = FileSystems.newFileSystem(geneset.zipuri, env);
                                for (Path root : geneset.zipfilesystem.getRootDirectories()) {
                                    Path specdir = root;
                                    Files.walkFileTree(p, new SimpleFileVisitor<Path>() {
                                        @Override
                                        public FileVisitResult visitFile(Path file, BasicFileAttributes attrs)
                                                throws IOException {
                                            final Path destFile = Paths.get(specdir.toString(),
                                                    file.toString());
                                            //System.out.printf("Extracting file %s to %s\n", file, destFile);
                                            Files.copy(file, destFile, StandardCopyOption.REPLACE_EXISTING);
                                            return FileVisitResult.CONTINUE;
                                        }

                                        @Override
                                        public FileVisitResult preVisitDirectory(Path dir,
                                                BasicFileAttributes attrs) throws IOException {
                                            String specdirstr = specdir.toString();
                                            String dirstr = dir.toString();
                                            final Path dirToCreate = specdir
                                                    .resolve(dirstr.substring(userhome.length() + 1));
                                            if (Files.notExists(dirToCreate)) {
                                                System.out.printf("Creating directory %s\n", dirToCreate);
                                                Files.createDirectory(dirToCreate);
                                            }
                                            return FileVisitResult.CONTINUE;
                                        }
                                    });
                                    break;
                                }

                                URI uri = new URI("file://" + userhome + "/" + spec + "/index.html");
                                Desktop.getDesktop().browse(uri);
                            } catch (Exception ex) {
                                ex.printStackTrace();
                            } finally {
                                try {
                                    geneset.zipfilesystem.close();
                                } catch (Exception e) {
                                    e.printStackTrace();
                                }
                                ;
                            }
                        }
                    }
                };

                NativeRun nr = new NativeRun(run);
                nr.runProcessBuilder("antismash", commands, new Object[3], false, run, false);
            } catch (IOException e1) {
                e1.printStackTrace();
            }
        }
    }));
    windowmenu.getItems().add(runantismash);

    MenuItem runsignalp = new MenuItem("Run signalP");
    runsignalp.setOnAction(actionEvent -> SwingUtilities.invokeLater(new Runnable() {
        public void run() {
            try {
                Serifier ser = new Serifier();
                Set<String> selspec = getSelspec(null, geneset.getSpecies(), null);

                JTextField host = new JTextField("localhost");
                JOptionPane.showMessageDialog(null, host);

                String username = System.getProperty("user.name");
                String hostname = host.getText();

                /*Path[] pt = null;
                JFileChooser fc = new JFileChooser();
                fc.setFileSelectionMode( JFileChooser.DIRECTORIES_ONLY );
                if( fc.showSaveDialog(null) == JFileChooser.APPROVE_OPTION ) {
                   pt = new Path[3];
                   pt[2] = fc.getSelectedFile().toPath();
                }*/

                List<Object> commands = new ArrayList<Object>();
                //commands.add(genexyplotaction)

                try {
                    Map<String, String> env = new HashMap<String, String>();
                    env.put("create", "true");

                    String uristr = "jar:" + geneset.zippath.toUri();
                    URI zipuri = URI.create(uristr /*.replace("file://", "file:")*/ );

                    geneset.zipfilesystem = FileSystems.newFileSystem(geneset.zipuri, env);
                    for (Path root : geneset.zipfilesystem.getRootDirectories()) {
                        for (String spec : selspec) {
                            /*Path specdir = root.resolve(spec+".prodigal.fsa");
                            if( !Files.exists(specdir) ) {
                               if( spec.startsWith("MAT") ) {
                                  specdir = root.resolve(spec+".gbk.aa");
                               } else specdir = root.resolve("fn_"+spec+"_scaffolds.prodigal.fsa");
                            }*/
                            Stream<Gene> genestream = geneset.genelist.stream()
                                    .filter(gene -> spec.equals(gene.getSpecies())
                                            && (gene.tegeval.type == null || gene.tegeval.type.length() == 0));
                            Path sigout = root.resolve(spec + ".signalp");
                            Path[] pt = new Path[] { null, sigout, null };
                            if (hostname.equals("localhost")) {
                                String[] cmds = { "signalp", "-t", "gram-", "-" };
                                commands.add(pt);
                                commands.add(Arrays.asList(cmds));
                            } else {
                                Path p = Paths.get(spec + ".signalp");
                                BufferedWriter bw = Files.newBufferedWriter(p, StandardOpenOption.CREATE,
                                        StandardOpenOption.TRUNCATE_EXISTING, StandardOpenOption.WRITE);
                                genestream.forEachOrdered(gene -> {
                                    try {
                                        gene.writeGeneIdFasta(bw);
                                    } catch (Exception e1) {
                                        e1.printStackTrace();
                                    }
                                });
                                bw.close();

                                //Files.copy(specdir, p, StandardCopyOption.REPLACE_EXISTING);

                                String[] cmds = { "scp", spec + ".signalp", hostname + ":~", ";", "ssh",
                                        hostname, "signalp", "-t", "gram-", spec + ".signalp" };
                                //String[] cmds = {"ssh",hostname,"signalp","-t","gram-","-"};
                                commands.add(pt);
                                commands.add(Arrays.asList(cmds));
                            }
                        }

                        break;
                    }
                } catch (Exception ex) {
                    ex.printStackTrace();
                }

                Runnable run = new Runnable() {
                    @Override
                    public void run() {
                        try {
                            geneset.zipfilesystem.close();
                        } catch (Exception e) {
                            e.printStackTrace();
                        }
                        ;
                    }
                };

                NativeRun nr = new NativeRun(run);
                nr.runProcessBuilder("signalp", commands, new Object[3], false, run, false);
            } catch (IOException e1) {
                e1.printStackTrace();
            }
        }
    }));
    windowmenu.getItems().add(runsignalp);

    MenuItem runtransm = new MenuItem("Run TransM");
    runtransm.setOnAction(actionEvent -> SwingUtilities.invokeLater(new Runnable() {
        public void run() {
            try {
                Serifier ser = new Serifier();
                Set<String> selspec = getSelspec(null, geneset.getSpecies(), null);

                JTextField host = new JTextField("localhost");
                JOptionPane.showMessageDialog(null, host);

                String username = System.getProperty("user.name");
                String hostname = host.getText();

                /*Path[] pt = null;
                JFileChooser fc = new JFileChooser();
                fc.setFileSelectionMode( JFileChooser.DIRECTORIES_ONLY );
                if( fc.showSaveDialog(null) == JFileChooser.APPROVE_OPTION ) {
                   pt = new Path[3];
                   pt[2] = fc.getSelectedFile().toPath();
                }*/

                List<Object> commands = new ArrayList<>();
                //commands.add(genexyplotaction)

                try {
                    Map<String, String> env = new HashMap<>();
                    env.put("create", "true");

                    String uristr = "jar:" + geneset.zippath.toUri();
                    URI zipuri = URI.create(uristr /*.replace("file://", "file:")*/ );

                    geneset.zipfilesystem = FileSystems.newFileSystem(geneset.zipuri, env);
                    for (Path root : geneset.zipfilesystem.getRootDirectories()) {
                        for (String spec : selspec) {
                            /*Path specdir = root.resolve(spec+".prodigal.fsa");
                            if( !Files.exists(specdir) ) {
                               if( spec.startsWith("MAT") ) {
                                  specdir = root.resolve(spec+".gbk.aa");
                               } else specdir = root.resolve("fn_"+spec+"_scaffolds.prodigal.fsa");
                            }*/

                            Stream<Gene> genestream = geneset.genelist.stream()
                                    .filter(gene -> spec.equals(gene.getSpecies())
                                            && (gene.tegeval.type == null || gene.tegeval.type.length() == 0));
                            ByteArrayOutputStream baos = new ByteArrayOutputStream();
                            BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(baos));
                            genestream.forEach(gene -> {
                                try {
                                    gene.writeGeneIdFasta(bw);
                                } catch (Exception e1) {
                                    e1.printStackTrace();
                                }
                            });
                            bw.close();
                            baos.close();
                            String seqs = baos.toString();
                            seqs = seqs.replace('*', 'X');
                            byte[] bb = seqs.getBytes();
                            Path sigout = root.resolve(spec + ".tm");
                            Object[] pt = new Object[] { bb, sigout, null };
                            if (hostname.equals("localhost")) {
                                String[] cmds = { "decodeanhmm", "-f", "/opt/tmhmm-2.0c/lib/TMHMM2.0.options",
                                        "-modelfile", "/opt/tmhmm-2.0c/lib/TMHMM2.0.model" };
                                commands.add(pt);
                                commands.add(Arrays.asList(cmds));
                            } else {
                                //Path p = Paths.get(spec+".tm");
                                //Files.copy(specdir, p, StandardCopyOption.REPLACE_EXISTING);

                                String[] cmds = { "ssh", hostname, "decodeanhmm", "-f",
                                        "/opt/tmhmm-2.0c/lib/TMHMM2.0.options", "-modelfile",
                                        "/opt/tmhmm-2.0c/lib/TMHMM2.0.model" };
                                commands.add(pt);
                                commands.add(Arrays.asList(cmds));
                            }
                        }

                        break;
                    }
                } catch (Exception ex) {
                    ex.printStackTrace();
                }

                Runnable run = () -> {
                    try {
                        geneset.zipfilesystem.close();
                    } catch (Exception e) {
                        e.printStackTrace();
                    }
                    ;
                };

                NativeRun nr = new NativeRun(run);
                nr.runProcessBuilder("transm", commands, new Object[3], false, run, false);
            } catch (IOException e1) {
                e1.printStackTrace();
            }
        }
    }));
    windowmenu.getItems().add(runtransm);

    MenuItem runtrnascan = new MenuItem("tRNAscan");
    runtrnascan.setOnAction(actionEvent -> SwingUtilities.invokeLater(() -> {
        try {
            Serifier ser = new Serifier();
            Set<String> selspec = getSelspec(null, geneset.getSpecies(), null);

            JTextField host = new JTextField("localhost");
            JOptionPane.showMessageDialog(null, host);

            String username = System.getProperty("user.name");
            String hostname = host.getText();

            /*Path[] pt = null;
            JFileChooser fc = new JFileChooser();
            fc.setFileSelectionMode( JFileChooser.DIRECTORIES_ONLY );
            if( fc.showSaveDialog(null) == JFileChooser.APPROVE_OPTION ) {
            pt = new Path[3];
            pt[2] = fc.getSelectedFile().toPath();
            }*/

            List<Object> commands = new ArrayList<>();
            //commands.add(genexyplotaction)

            try {
                Map<String, String> env = new HashMap<>();
                env.put("create", "true");

                String uristr = "jar:" + geneset.zippath.toUri();
                URI zipuri = URI.create(uristr /*.replace("file://", "file:")*/ );

                geneset.zipfilesystem = FileSystems.newFileSystem(geneset.zipuri, env);
                for (Path root : geneset.zipfilesystem.getRootDirectories()) {
                    for (String spec : selspec) {
                        Path specdir = root.resolve(spec + ".fna");
                        if (!Files.exists(specdir)) {
                            if (spec.startsWith("MAT")) {
                                specdir = root.resolve(spec + ".gbk.fna");
                            } else
                                specdir = root.resolve("fn_" + spec + "_scaffolds.fastg");
                        }

                        System.err.println(Files.exists(specdir));

                        Path sigout = root.resolve("trnas.txt");
                        if (hostname.equals("localhost1")) {
                            Path[] pt = new Path[] { specdir, sigout, null };
                            String[] cmds = { "/usr/local/bin/tRNAscan-SE", "-B", "-" };
                            commands.add(pt);
                            commands.add(Arrays.asList(cmds));
                        } else {
                            Path[] pt = new Path[] { null, sigout, null };
                            Path p = Paths.get(spec + ".trnascan");
                            Files.copy(specdir, p, StandardCopyOption.REPLACE_EXISTING);

                            List<String> lcmd;
                            if (hostname.equals("localhost")) {
                                //String[] cmds = {"/usr/local/bin/trnascan-1.4", spec + ".trnascan"};
                                String[] cmds = { "/usr/local/bin/tRNAscan-SE", "-B", spec + ".trnascan" };
                                lcmd = Arrays.asList(cmds);
                            } else {
                                String[] cmds = { "scp", spec + ".trnascan", hostname + ":~", ";", "ssh",
                                        hostname, "trnascan-1.4", spec + ".trnascan" };
                                lcmd = Arrays.asList(cmds);
                                //String[] cmds = {"ssh",hostname,"tRNAscan-SE","-B","-"};
                            }

                            commands.add(pt);
                            commands.add(lcmd);
                        }
                    }

                    break;
                }
            } catch (Exception ex) {
                ex.printStackTrace();
            }

            Runnable run = () -> {
                try {
                    geneset.zipfilesystem.close();
                } catch (Exception e) {
                    e.printStackTrace();
                }
                ;
            };

            NativeRun nr = new NativeRun(run);
            nr.runProcessBuilder("tRNAscan", commands, new Object[3], false, run, false);
        } catch (IOException e1) {
            e1.printStackTrace();
        }
    }));
    windowmenu.getItems().add(runtrnascan);

    Menu select = new Menu("Select");
    MenuItem breakpointselAction = new MenuItem("Select breakpoints");
    breakpointselAction.setOnAction(actionEvent -> {
        String spec = syncolorcomb.getSelectionModel().getSelectedItem();

        int rr = 0;
        for (Gene g : geneset.genelist) {
            if (!spec.equals(g.getSpecies()) && g.getSpecies().contains("eggert")) {
                Tegeval tv2 = g.tegeval;
                Annotation n2 = tv2.getNext();
                Annotation p2 = tv2.getPrevious();

                GeneGroup gg = g.getGeneGroup();

                if (gg.getName().contains("rhodane")) {
                    System.err.println();
                }

                Teginfo ti = gg.getGenes(spec);
                int msimcount = 0;
                if (ti != null) {
                    for (Tegeval tv1 : ti.tset) {
                        int simcount = 0;

                        Annotation n = tv1.getNext();
                        Annotation p = tv1.getPrevious();

                        GeneGroup ggg = tv1.getGene().getGeneGroup();
                        if (n2 != null) {
                            if (ggg == n2.getGene().getGeneGroup()) {
                                simcount++;
                            }

                            Annotation nn2 = n2.getNext();
                            if (nn2 != null) {
                                if (ggg == nn2.getGene().getGeneGroup()) {
                                    simcount++;
                                }
                            }
                        }

                        if (p2 != null) {
                            if (ggg == p2.getGene().getGeneGroup()) {
                                simcount++;
                            }

                            Annotation pp2 = p2.getPrevious();
                            if (pp2 != null) {
                                if (ggg == pp2.getGene().getGeneGroup()) {
                                    simcount++;
                                }
                            }
                        }

                        if (n != null) {
                            GeneGroup ngg = n.getGene().getGeneGroup();

                            if (ngg == tv2.getGene().getGeneGroup()) {
                                simcount++;
                            }

                            if (n2 != null) {
                                if (ngg == n2.getGene().getGeneGroup()) {
                                    simcount++;
                                }
                            }

                            if (p2 != null) {
                                if (ngg == p2.getGene().getGeneGroup()) {
                                    simcount++;
                                }
                            }

                            Annotation nn = n.getNext();
                            if (nn != null) {
                                ngg = nn.getGene().getGeneGroup();

                                if (ngg == tv2.getGene().getGeneGroup()) {
                                    simcount++;
                                }

                                if (n2 != null) {
                                    if (ngg == n2.getGene().getGeneGroup()) {
                                        simcount++;
                                    }
                                }

                                if (p2 != null) {
                                    if (ngg == p2.getGene().getGeneGroup()) {
                                        simcount++;
                                    }
                                }
                            }
                        }

                        if (p != null) {
                            GeneGroup pgg = p.getGene().getGeneGroup();

                            if (pgg == tv2.getGene().getGeneGroup()) {
                                simcount++;
                            }

                            if (n2 != null) {
                                if (pgg == n2.getGene().getGeneGroup()) {
                                    simcount++;
                                }
                            }

                            if (p2 != null) {
                                if (pgg == p2.getGene().getGeneGroup()) {
                                    simcount++;
                                }
                            }

                            Annotation pp = p.getPrevious();
                            if (pp != null) {
                                pgg = pp.getGene().getGeneGroup();

                                if (pgg == tv2.getGene().getGeneGroup()) {
                                    simcount++;
                                }

                                if (n2 != null) {
                                    if (pgg == n2.getGene().getGeneGroup()) {
                                        simcount++;
                                    }
                                }

                                if (p2 != null) {
                                    if (pgg == p2.getGene().getGeneGroup()) {
                                        simcount++;
                                    }
                                }
                            }
                        }

                        //double rat = GeneCompare.invertedGradientRatio(spec, contigs, -1.0, gg, tv);
                        if (simcount >= msimcount) {
                            //tv = tv1;
                            msimcount = simcount;
                        }

                        //double ratio = GeneCompare.invertedGradientRatio(spec, contigs, -1.0, gg, tv);
                        //GeneCompare.gradientColor();
                    }

                    if (msimcount < 2) {
                        gtable.getSelectionModel().select(g);
                    }
                }
            }
            rr++;
        }
        /*List<Sequence> contigs = geneset.speccontigMap.get( spec );
        for( Sequence c : contigs ) {
           for( Annotation ann : c.annset ) {
          Tegeval tv = (Tegeval)ann;
                  
           }
        }*/
    });
    MenuItem saveselAction = new MenuItem("Save selection");
    saveselAction.setOnAction(actionEvent -> {
        /*int[] rr = table.getSelectedRows();
        if( rr.length > 0 ) {
           String val = Integer.toString( table.convertRowIndexToModel(rr[0]) );
           for( int i = 1; i < rr.length; i++ ) {
              val += ","+table.convertRowIndexToModel(rr[i]);
           }
           String selname = JOptionPane.showInputDialog("Selection name");
           if( comp instanceof Applet ) {
              try {
          ((GeneSetHead)comp).saveSel( selname, val);
              } catch (Exception e1) {
          e1.printStackTrace();
              }
           }
        }*/
    });
    select.getItems().add(breakpointselAction);
    select.getItems().add(saveselAction);
    select.getItems().add(new SeparatorMenuItem());

    MenuItem showall = new MenuItem("Show all");
    showall.setOnAction(actionEvent -> {
        genefilterset.clear();
        updateFilter(table, label);
    });
    select.getItems().add(showall);
    MenuItem croptosel = new MenuItem("Crop to selection");
    croptosel.setOnAction(actionEvent -> {
        Set<GeneGroup> selitems = new HashSet<>(table.getSelectionModel().getSelectedItems());
        filteredData.setPredicate(p -> selitems.contains(p));
    });
    select.getItems().add(croptosel);
    MenuItem croptoinvsel = new MenuItem("Crop to inverted selection");
    croptoinvsel.setOnAction(actionEvent -> {
        genefilterset.clear();
        for (int i = 0; i < table.getItems().size(); i++) {
            if (!table.getSelectionModel().isSelected(i)) {
                genefilterset.add(i);
            }
        }
        updateFilter(table, label);
    });
    select.getItems().add(croptoinvsel);
    MenuItem removesel = new MenuItem("Remove selection");
    removesel.setOnAction(actionEvent -> {
        // genefilterset.clear();
        //int[] rr = table.getSelectedRows();
        if (genefilterset.isEmpty()) {
            Set<Integer> ii = new HashSet<Integer>();
            for (int r : table.getSelectionModel().getSelectedIndices())
                ii.add(r);
            for (int i = 0; i < geneset.genelist.size(); i++) {
                if (!ii.contains(i))
                    genefilterset.add(i);
            }
        } else {
            for (int r : table.getSelectionModel().getSelectedIndices()) {
                //int mr = table.convertRowIndexToModel(r);
                genefilterset.remove(r);
            }
        }
        updateFilter(table, label);
    });
    select.getItems().add(removesel);
    MenuItem invsel = new MenuItem("Invert selection");
    invsel.setOnAction(actionEvent -> {
        ObservableList<GeneGroup> selitems = table.getSelectionModel().getSelectedItems();
        List<GeneGroup> newsel = new ArrayList<>(filteredData);
        newsel.removeAll(selitems);

        table.getSelectionModel().clearSelection();
        newsel.stream().forEach(gg -> table.getSelectionModel().select(gg));

        // genefilterset.clear();
        //int[] rr = table.getSelectedRows();
        /*Set<Integer> iset = new HashSet<>();
        for( int r : table.getSelectionModel().getSelectedIndices() ) {
           iset.add( r );
        }
        table.getSelectionModel().clearSelection();
        for (int r = 0; r < table.getItems().size(); r++) {
           if( !iset.contains(r) ) table.getSelectionModel().select(r);
           /*if (table.isRowSelected(r))
          table.removeRowSelectionInterval(r, r);
           else
          table.addRowSelectionInterval(r, r);
        }*/
    });
    select.getItems().add(invsel);
    //select.addSeparator();
    select.getItems().add(new SeparatorMenuItem());
    MenuItem selsinglemult = new MenuItem("Select single copy genes found in multiple strains");
    selsinglemult.setOnAction(actionEvent -> {
        Set<String> specset = getSelspec(GeneSetHead.this, geneset.specList);
        for (GeneGroup gg : geneset.allgenegroups) {
            Set<String> checkspec = new HashSet<String>(gg.species.keySet());
            checkspec.retainAll(specset);
            if (gg.getCommonTag() == null && checkspec.size() > 1
                    && gg.getTegevals().size() == gg.species.size()) {//gg.getTegevals(checkspec).size() == checkspec.size() ) {
                table.getSelectionModel().select(gg);
                //table.setro
            }
        }
    });
    select.getItems().add(selsinglemult);
    MenuItem selsinglemultstrain = new MenuItem(
            "Select single copy genes in accessory genome of multiple strains");
    selsinglemultstrain.setOnAction(actionEvent -> {
        Set<String> specset = getSelspec(GeneSetHead.this, geneset.specList);
        for (GeneGroup gg : geneset.allgenegroups) {
            Set<String> checkspec = new HashSet<String>(gg.species.keySet());
            checkspec.retainAll(specset);
            if (gg.getCommonTag() == null && checkspec.size() > 1 && checkspec.size() < specset.size()
                    && gg.getTegevals().size() == gg.species.size()) {//gg.getTegevals(checkspec).size() == checkspec.size() ) {
                table.getSelectionModel().select(gg);
                //table.setro
            }
        }
    });
    select.getItems().add(selsinglemultstrain);

    MenuItem selsinglecopygenes = new MenuItem("Select single copy genes");
    selsinglecopygenes.setOnAction(actionEvent -> {
        Set<String> specset = getSelspec(GeneSetHead.this, geneset.specList);
        for (GeneGroup gg : geneset.allgenegroups) {
            if (gg.getTegevals().size() == gg.species.size()) {
                table.getSelectionModel().select(gg);
                //table.setro
            }
        }
    });
    select.getItems().add(selsinglecopygenes);
    MenuItem selduplgenes = new MenuItem("Select duplicated genes");
    selduplgenes.setOnAction(actionEvent -> {
        for (GeneGroup gg : geneset.allgenegroups) {
            int cnt = 0;
            for (String spec : gg.species.keySet()) {
                Teginfo ti = gg.species.get(spec);
                if (ti.tset.size() == 2) {
                    List<Tegeval> ta = new ArrayList<Tegeval>(ti.tset);
                    if (ta.get(0).getNext() == ta.get(1) || ta.get(0).getPrevious() == ta.get(1))
                        cnt++;
                }
            }
            if ((float) cnt / (float) gg.species.size() > 0.7) {
                table.getSelectionModel().select(gg);
            }
        }
    });
    select.getItems().add(selduplgenes);
    MenuItem seltriplgenes = new MenuItem("Select triplicated genes");
    seltriplgenes.setOnAction(actionEvent -> {
        for (GeneGroup gg : geneset.allgenegroups) {
            int cnt = 0;
            for (String spec : gg.species.keySet()) {
                Teginfo ti = gg.species.get(spec);
                if (ti.tset.size() == 3) {
                    List<Tegeval> ta = new ArrayList<Tegeval>(ti.tset);
                    if ((ta.get(0).getNext() == ta.get(1) || ta.get(0).getPrevious() == ta.get(1))
                            && (ta.get(1).getNext() == ta.get(2) || ta.get(1).getPrevious() == ta.get(2)))
                        cnt++;
                }
            }
            if ((float) cnt / (float) gg.species.size() > 0.7) {
                table.getSelectionModel().select(gg);
            }
        }
    });
    select.getItems().add(seltriplgenes);

    MenuItem selplasmidgenes = new MenuItem("Select plasmid genes");
    selplasmidgenes.setOnAction(actionEvent -> {
        for (GeneGroup gg : geneset.allgenegroups) {
            if (gg.isOnAnyPlasmid()) {
                table.getSelectionModel().select(gg);
            }
            /*int cnt = 0;
            for( String spec : gg.species.keySet() ) {
               Teginfo ti = gg.species.get( spec );
               if( ti.tset.size() == 3 ) {
             List<Tegeval> ta = new ArrayList<Tegeval>( ti.tset );
             if( (ta.get(0).getNext() == ta.get(1) || ta.get(0).getPrevious() == ta.get(1)) && (ta.get(1).getNext() == ta.get(2) || ta.get(1).getPrevious() == ta.get(2))) cnt++;
               }
            }
            if( (float)cnt / (float)gg.species.size() > 0.7 ) {
               int r = table.convertRowIndexToView(gg.index);
               table.addRowSelectionInterval(r, r);
            }*/
        }
    });
    select.getItems().add(selplasmidgenes);

    MenuItem selectphagegenes = new MenuItem("Select phage genes");
    selectphagegenes.setOnAction(actionEvent -> {
        for (GeneGroup gg : geneset.allgenegroups) {
            if (gg.isInAnyPhage()) {
                table.getSelectionModel().select(gg);
            }
            /*int cnt = 0;
            for( String spec : gg.species.keySet() ) {
               Teginfo ti = gg.species.get( spec );
               if( ti.tset.size() == 3 ) {
             List<Tegeval> ta = new ArrayList<Tegeval>( ti.tset );
             if( (ta.get(0).getNext() == ta.get(1) || ta.get(0).getPrevious() == ta.get(1)) && (ta.get(1).getNext() == ta.get(2) || ta.get(1).getPrevious() == ta.get(2))) cnt++;
               }
            }
            if( (float)cnt / (float)gg.species.size() > 0.7 ) {
               int r = table.convertRowIndexToView(gg.index);
               table.addRowSelectionInterval(r, r);
            }*/
        }
    });
    select.getItems().add(selectphagegenes);
    select.getItems().add(new SeparatorMenuItem());
    MenuItem selectsharingaction = new MenuItem("Select sharing");
    selectsharingaction.setOnAction(actionEvent -> {
        RadioButton panbtn = new RadioButton("Pan");
        RadioButton corebtn = new RadioButton("Core");
        RadioButton blehbtn = new RadioButton("Only in");
        ToggleGroup tg = new ToggleGroup();
        panbtn.setToggleGroup(tg);
        corebtn.setToggleGroup(tg);
        blehbtn.setToggleGroup(tg);

        HBox sp = new HBox();
        sp.getChildren().add(panbtn);
        sp.getChildren().add(corebtn);
        sp.getChildren().add(blehbtn);
        Scene scene = new Scene(sp);

        //FlowLayout flowlayout = new FlowLayout();
        final JFXPanel c = new JFXPanel();
        c.setScene(scene);

        /*Group  root  =  new  Group();
          Scene  scene  =  new  Scene(root, javafx.scene.paint.Color.ALICEBLUE);
          root.getChildren().add(panbtn);
          root.getChildren().add(corebtn);
          root.getChildren().add(blehbtn);
        JFXPanel fxpanel = new JFXPanel();
        fxpanel.setScene( scene );*/
        //bg.add( panbtn );
        //bg.add( corebtn );
        //bg.add( blehbtn );
        corebtn.setSelected(true);
        //Object[] objs = new Object[] { panbtn, corebtn };
        //JOptionPane.showMessageDialog( geneset, objs, "Select id types", JOptionPane.PLAIN_MESSAGE );

        SwingUtilities.invokeLater(new Runnable() {
            public void run() {
                final List<String> species = geneset.getSpecies();
                TableModel model = new TableModel() {
                    @Override
                    public int getRowCount() {
                        return species.size();
                    }

                    @Override
                    public int getColumnCount() {
                        return 1;
                    }

                    @Override
                    public String getColumnName(int columnIndex) {
                        return null;
                    }

                    @Override
                    public Class<?> getColumnClass(int columnIndex) {
                        return String.class;
                    }

                    @Override
                    public boolean isCellEditable(int rowIndex, int columnIndex) {
                        return false;
                    }

                    @Override
                    public Object getValueAt(int rowIndex, int columnIndex) {
                        return species.get(rowIndex);
                    }

                    @Override
                    public void setValueAt(Object aValue, int rowIndex, int columnIndex) {
                    }

                    @Override
                    public void addTableModelListener(TableModelListener l) {
                    }

                    @Override
                    public void removeTableModelListener(TableModelListener l) {
                    }
                };
                JTable table = new JTable(model);
                table.getSelectionModel().setSelectionMode(ListSelectionModel.MULTIPLE_INTERVAL_SELECTION);
                JScrollPane scroll = new JScrollPane(table);

                Object[] objs = new Object[] { scroll, c };
                JOptionPane.showMessageDialog(comp, objs);

                final Set<String> specs = new HashSet<String>();
                int[] rr = table.getSelectedRows();
                for (int r : rr) {
                    String spec = (String) table.getValueAt(r, 0);
                    specs.add(spec);
                }

                Platform.runLater(new Runnable() {
                    public void run() {
                        for (GeneGroup gg : geneset.allgenegroups) {
                            if (blehbtn.isSelected()) {
                                Set<String> ss = new HashSet<String>(gg.species.keySet());
                                ss.removeAll(specs);
                                if (ss.size() == 0) {
                                    GeneSetHead.this.table.getSelectionModel().select(gg);
                                }
                            } else if (gg.species.keySet().containsAll(specs)
                                    && (panbtn.isSelected() || specs.size() == gg.species.size())) {
                                GeneSetHead.this.table.getSelectionModel().select(gg);
                            }
                        }
                    }
                });
            }
        });
    });
    select.getItems().add(selectsharingaction);
    MenuItem selectdirtyaction = new MenuItem("Select dirty");
    selectdirtyaction.setOnAction(actionEvent -> {
        if (!isGeneview()) {
            int i = 0;
            for (GeneGroup gg : geneset.allgenegroups) {
                if (gg.containsDirty()) {
                    table.getSelectionModel().select(gg);
                }
                i++;
            }
        }
    });
    select.getItems().add(selectdirtyaction);
    MenuItem selectdesignationaction = new MenuItem("Select designation");
    selectdesignationaction.setOnAction(actionEvent -> {
        JComboBox<String> descombo = new JComboBox<String>(
                geneset.deset.toArray(new String[geneset.deset.size()]));
        descombo.insertItemAt("", 0);
        descombo.setSelectedIndex(0);

        JOptionPane.showMessageDialog(GeneSetHead.this, descombo);
        String seldes = (String) descombo.getSelectedItem();
        if (!isGeneview()) {
            int i = 0;
            for (GeneGroup gg : geneset.allgenegroups) {
                if (gg.genes != null)
                    for (Gene g : gg.genes) {
                        if (seldes.equals(g.tegeval.designation)) {
                            table.getSelectionModel().select(gg);
                        }
                    }
                i++;
            }
        }
    });
    select.getItems().add(selectdesignationaction);

    MenuItem blastselect = new MenuItem("Blast select");
    blastselect.setOnAction(actionEvent -> SwingUtilities.invokeLater(() -> blast(false)));
    select.getItems().add(blastselect);

    MenuItem blastxselect = new MenuItem("Blastx select");
    blastxselect.setOnAction(actionEvent -> SwingUtilities.invokeLater(() -> blast(true)));
    select.getItems().add(blastxselect);

    MenuItem blastnselect = new MenuItem("Blastn select");
    blastnselect.setOnAction(actionEvent -> SwingUtilities.invokeLater(() -> blastn(true)));
    select.getItems().add(blastnselect);

    MenuItem blastsearch = new MenuItem("Blastn search");
    blastsearch.setOnAction(actionEvent -> SwingUtilities.invokeLater(() -> blastn(false)));
    select.getItems().add(blastsearch);

    menubar.getMenus().add(file);
    menubar.getMenus().add(edit);
    menubar.getMenus().add(view);
    menubar.getMenus().add(sequencemenu);
    menubar.getMenus().add(windowmenu);
    menubar.getMenus().add(select);
    menubar.getMenus().add(help);

    if (comp != null) {
        final Window window = SwingUtilities.windowForComponent(comp);
        initFSKeyListener(window);
        if (comp instanceof JFrame || window instanceof JFrame) {
            JFrame frame = (JFrame) (window == null ? comp : window);
            if (!frame.isResizable())
                frame.setResizable(true);

            frame.addKeyListener(keylistener);
            frame.setJMenuBar(jmenubar);
        }
    }

    final Button jb = new Button("Atlas");
    jb.setOnAction(event -> {
        try {
            URL url = new URL("file:///home/sigmar/workspace/distann/bin/circle.html");
            GeneSetHead.this.getAppletContext().showDocument(url, "_blank");
        } catch (MalformedURLException e1) {
            e1.printStackTrace();
        }
    });

    try {
        newSoft(jb, comp, genetable, upper, lower, toolbar, btoolbar, GeneSetHead.this, selcomb);
    } catch (IOException e) {
        e.printStackTrace();
    }
    if (comp != null) {
        if (comp instanceof Applet)
            try {
                ((GeneSetHead) comp).saveSel(null, null);
            } catch (NoSuchMethodError | Exception e1) {
                e1.printStackTrace();
            }
        //comp.add( cc );
    }
}