Example usage for javax.swing JPopupMenu addSeparator

List of usage examples for javax.swing JPopupMenu addSeparator

Introduction

In this page you can find the example usage for javax.swing JPopupMenu addSeparator.

Prototype

public void addSeparator() 

Source Link

Document

Appends a new separator at the end of the menu.

Usage

From source file:edu.ku.brc.af.ui.forms.FormViewObj.java

/**
 * Shows Parent Form's Context Menu.//  ww  w .  ja  v  a2 s  . co  m
 * @param e the mouse event
 */
protected void showContextMenu(MouseEvent e) {
    if (e.isPopupTrigger() && mvParent != null && mvParent.isTopLevel() && isEditing) {
        JPopupMenu popup = new JPopupMenu();
        JMenuItem menuItem = new JMenuItem(UIRegistry.getResourceString("CONFIG_CARRY_FORWARD_MENU"));
        menuItem.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent ex) {
                configureCarryForward();
            }
        });
        popup.add(menuItem);

        JCheckBoxMenuItem chkMI = new JCheckBoxMenuItem(
                UIRegistry.getResourceString("CARRY_FORWARD_CHECKED_MENU"));
        chkMI.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent ex) {
                toggleCarryForward();
            }
        });
        chkMI.setSelected(isCarryForwardConfgured() && isDoCarryForward());
        chkMI.setEnabled(isCarryForwardConfgured());
        popup.add(chkMI);

        popup.addSeparator();
        chkMI = new JCheckBoxMenuItem(UIRegistry.getAction(AUTO_NUM));
        /*chkMI.addActionListener(new ActionListener() {
        public void actionPerformed(ActionEvent ex)
        {
            toggleAutoNumberOnOffState();
        }
        });*/
        chkMI.setSelected(isAutoNumberOn);
        popup.add(chkMI);

        popup.show(e.getComponent(), e.getX(), e.getY());
    }
}

From source file:nz.govt.natlib.ndha.manualdeposit.ManualDepositPresenter.java

public JPopupMenu getFileSystemMenu(final DefaultMutableTreeNode node) {
    JPopupMenu menu = null;
    fsoRootFileTemp = null;//from  w  ww.  j  a  v a2  s .  c  om
    if (node.getUserObject() instanceof FileSystemObject) {
        boolean allowBulkUpload = false;
        final FileSystemObject fso = (FileSystemObject) node.getUserObject();
        menu = new JPopupMenu();
        if ((fso != null) && (fso.getFile() != null) && (fso.getFile().exists())) {
            if (!entityRootSet) {
                stopEditingMetaData();
                allowBulkUpload = applicationProperties.getUserData()
                        .getUser(applicationProperties.getLoggedOnUser()).isAllowBulkLoad();
                String addRootText;
                boolean canAddMultiRoot = false;
                setCustomizeMetaData(false);
                if (fso.getIsFile()) {
                    addRootText = "Use file to describe IE root";
                    final DefaultMutableTreeNode nodeParent = (DefaultMutableTreeNode) node.getParent();
                    if (nodeParent.getUserObject() instanceof FileSystemObject) {
                        fsoRootTemp = (FileSystemObject) nodeParent.getUserObject();
                        fsoRootFileTemp = fso;
                    } else {
                        fsoRootTemp = fso;
                    }
                } else {
                    addRootText = "Set as root of Intellectual Entity";
                    canAddMultiRoot = (userGroupData != null && userGroupData.isIncludeMultiEntityMenuItem());
                    fsoRootTemp = fso;
                }
                JMenuItem item = new JMenuItem(addRootText);
                item.addActionListener(new java.awt.event.ActionListener() {
                    public void actionPerformed(final java.awt.event.ActionEvent evt) {
                        manualDepositFrame.setWaitCursor(true);
                        itmSetRootActionPerformed(evt);
                        manualDepositFrame.setWaitCursor(false);
                    }
                });
                menu.add(item);
                if (canAddMultiRoot) {
                    item = new JMenuItem("Set each file as an Intellectual Entity");
                    item.addActionListener(new java.awt.event.ActionListener() {
                        public void actionPerformed(final java.awt.event.ActionEvent evt) {
                            itmSetMultipleRootActionPerformed(evt);
                        }
                    });
                    menu.add(item);

                    // Added 5/09/2013 by Ben
                    // New menu option for creating multiple complex IEs
                    item = new JMenuItem("Set each folder as an Intellectual Entity");
                    item.addActionListener(new java.awt.event.ActionListener() {
                        public void actionPerformed(final java.awt.event.ActionEvent evt) {
                            itmSetMultipleRootFolderActionPerformed(evt);
                        }
                    });
                    menu.add(item);

                }
            }
            if (fso.getIsFile()) {
                if (menu.getComponentCount() > 0) {
                    menu.addSeparator();
                }
                if (isWindows()) {
                    JMenuItem item = new JMenuItem("Open File");
                    item.addActionListener(new java.awt.event.ActionListener() {
                        public void actionPerformed(final java.awt.event.ActionEvent evt) {
                            itmOpenFile(evt);
                        }
                    });
                    menu.add(item);

                    item = new JMenuItem("Open File Location");
                    item.addActionListener(new java.awt.event.ActionListener() {
                        public void actionPerformed(final java.awt.event.ActionEvent evt) {
                            itmOpenFileLocation(evt);
                        }
                    });
                    menu.add(item);
                }
            } else {
                if (menu.getComponentCount() > 0) {
                    menu.addSeparator();
                }
                JMenuItem item = new JMenuItem("Store this directory as a favourite");
                item.addActionListener(new java.awt.event.ActionListener() {
                    public void actionPerformed(final java.awt.event.ActionEvent evt) {
                        itmStoreAsFavourite(evt);
                    }
                });
                menu.add(item);
                item = new JMenuItem("Refresh directory file list");
                item.addActionListener(new java.awt.event.ActionListener() {
                    public void actionPerformed(final java.awt.event.ActionEvent evt) {
                        itmRefreshDirectory(evt);
                    }
                });
                menu.add(item);
                if (allowBulkUpload) {
                    item = new JMenuItem("Bulk load this directory");
                    item.addActionListener(new java.awt.event.ActionListener() {
                        public void actionPerformed(final java.awt.event.ActionEvent evt) {
                            bulkLoadDirectory(evt);
                        }
                    });
                    if (!metaDataOkay(false)) {
                        item.setEnabled(false);
                        item.setToolTipText("Meta data incomplete");
                    }
                    menu.add(item);

                    item = new JMenuItem("Bulk load each file as an Intellectual Entity");
                    item.addActionListener(new java.awt.event.ActionListener() {
                        public void actionPerformed(final java.awt.event.ActionEvent evt) {
                            bulkLoadDirectoryAsIEs(evt);
                        }
                    });
                    if (!metaDataOkay(false)) {
                        item.setEnabled(false);
                        item.setToolTipText("Meta data incomplete");
                    }
                    menu.add(item);
                }
            }
        }
    }
    if (menu == null || menu.getComponentCount() == 0) {
        return null;
    } else {
        return menu;
    }
}

From source file:nz.govt.natlib.ndha.manualdeposit.ManualDepositPresenter.java

private JPopupMenu getEntityMenu(FileSystemObject fso) {
    final JPopupMenu menu = new JPopupMenu();
    if (fso.getIsFile()) {
        JMenuItem item;/*from w w w  . j  av  a2  s . c o m*/
        ArrayList<FileGroupCollection> entities = getEntities();
        if (entities.size() == 1) {
            item = new JMenuItem("Delete File");
            item.addActionListener(new java.awt.event.ActionListener() {
                public void actionPerformed(java.awt.event.ActionEvent evt) {
                    itmDeleteEntityItem(evt);
                }
            });
            menu.add(item);
        }
        item = new JMenuItem("Rename File");
        item.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                itmRenameEntity(evt);
            }
        });
        menu.add(item);
        if (menu.getComponentCount() > 0) {
            menu.addSeparator();
        }
        item = new JMenuItem("Open File");
        item.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                itmOpenFile(evt);
            }
        });
        menu.add(item);
    } else {
        JMenuItem item = new JMenuItem("Delete Directory (and children)");
        item.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                itmDeleteEntityItem(evt);
            }
        });
        menu.add(item);
        item = new JMenuItem("Rename Directory");
        item.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                itmRenameEntity(evt);
            }
        });
        menu.add(item);
    }
    return menu;
}

From source file:nz.govt.natlib.ndha.manualdeposit.ManualDepositPresenter.java

private JPopupMenu getEntityMenu(FileGroupCollection entitiesClicked) {
    if (!entityRootSet) {
        return null; // Don't want to have a menu unless we are editing an
        // entity
    }/*from w  w w.  j a v  a  2 s.com*/
    final JPopupMenu menu = new JPopupMenu();
    JMenuItem item = new JMenuItem("Rename Intellectual Entity");
    item.addActionListener(new java.awt.event.ActionListener() {
        public void actionPerformed(java.awt.event.ActionEvent evt) {
            itmRenameEntity(evt);
        }
    });
    menu.add(item);

    ArrayList<FileGroupCollection> entities = getEntities();
    if (entities.size() == 1) {
        menu.addSeparator();
        JMenu addTypes = new JMenu("Add Representation Type");
        boolean entityTypesAdded = false;
        for (int i = 0; i < RepresentationTypes.values().length; i++) {
            final RepresentationTypes typeToAdd = RepresentationTypes.values()[i];
            boolean addType = true;
            if (!typeToAdd.allowMultiples()) {
                addType = (!entityTypeAdded(typeToAdd, entities));
            }
            if (addType) {
                entityTypesAdded = true;
                JMenuItem subItem = new JMenuItem("Add " + typeToAdd.description());
                subItem.addActionListener(new java.awt.event.ActionListener() {
                    public void actionPerformed(java.awt.event.ActionEvent evt) {
                        itmAddEntity(evt, typeToAdd);
                    }
                });
                addTypes.add(subItem);
            }
        }
        if (entityTypesAdded) {
            menu.add(addTypes);
        }
    } else {
        item = new JMenuItem("Delete Intellectual Entity");
        item.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                itmDeleteEntityItem(evt);
            }
        });
        menu.add(item);
    }
    if (thereAreMissingFiles()) {
        menu.addSeparator();
        item = new JMenuItem("Show Missing Files");
        item.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                showMissingFiles();
            }
        });
        menu.add(item);
    }
    return menu;
}

From source file:nz.govt.natlib.ndha.manualdeposit.ManualDepositPresenter.java

private JPopupMenu getStructMapMenu(StructMap map) {
    if (!entityRootSet) {
        return null; // Don't want to have a menu unless we are editing an
        // entity
    }//from w ww.  java  2  s .  c o m
    final JPopupMenu menu = new JPopupMenu();
    JMenuItem item = new JMenuItem("Rename Structure Item");
    item.addActionListener(new java.awt.event.ActionListener() {
        public void actionPerformed(java.awt.event.ActionEvent evt) {
            itmRenameStructMap(evt);
        }
    });
    menu.add(item);
    item = new JMenuItem("Add Structure Item");
    item.addActionListener(new java.awt.event.ActionListener() {
        public void actionPerformed(java.awt.event.ActionEvent evt) {
            itmAddStructure(evt);
        }
    });
    menu.add(item);
    menu.addSeparator();
    item = new JMenuItem("Delete Structure Item");
    item.addActionListener(new java.awt.event.ActionListener() {
        public void actionPerformed(java.awt.event.ActionEvent evt) {
            itmDeleteStructure(evt);
        }
    });
    menu.add(item);
    return menu;
}

From source file:org.apache.cayenne.modeler.editor.AbstractCallbackMethodsTab.java

private JPopupMenu createPopup() {
    JPopupMenu popup = new JPopupMenu();

    popup.add(getRemoveCallbackMethodAction().buildMenu());
    popup.addSeparator();
    popup.add(getCopyCallbackMethodAction().buildMenu());
    popup.add(getCutCallbackMethodAction().buildMenu());
    popup.add(getPasteCallbackMethodAction().buildMenu());

    return popup;
}

From source file:org.apache.cayenne.modeler.editor.ObjEntityRelationshipPanel.java

private void init() {
    this.setLayout(new BorderLayout());

    ActionManager actionManager = Application.getInstance().getActionManager();

    table = new CayenneTable();
    table.setDefaultRenderer(String.class, new StringRenderer());
    table.setDefaultRenderer(ObjEntity.class, new EntityRenderer());
    tablePreferences = new TableColumnPreferences(ObjRelationshipTableModel.class,
            "objEntity/relationshipTable");

    /**// w  w w  . ja  v a 2 s.  c o m
     * Create and install a popup
     */
    Icon ico = ModelerUtil.buildIcon("icon-info.gif");
    resolveMenu = new JMenuItem("Database Mapping", ico);

    JPopupMenu popup = new JPopupMenu();
    popup.add(resolveMenu);
    popup.add(actionManager.getAction(RemoveAttributeRelationshipAction.class).buildMenu());

    popup.addSeparator();
    popup.add(actionManager.getAction(CutAttributeRelationshipAction.class).buildMenu());
    popup.add(actionManager.getAction(CopyAttributeRelationshipAction.class).buildMenu());
    popup.add(actionManager.getAction(PasteAction.class).buildMenu());

    TablePopupHandler.install(table, popup);
    add(PanelFactory.createTablePanel(table, null), BorderLayout.CENTER);
}

From source file:org.apache.cayenne.modeler.editor.ObjEntityRelationshipTab.java

private void init() {
    this.setLayout(new BorderLayout());

    JToolBar toolBar = new JToolBar();
    ActionManager actionManager = Application.getInstance().getActionManager();
    toolBar.add(actionManager.getAction(CreateRelationshipAction.class).buildButton());
    toolBar.add(actionManager.getAction(ObjEntitySyncAction.class).buildButton());
    toolBar.add(actionManager.getAction(ObjEntityCounterpartAction.class).buildButton());

    toolBar.addSeparator();//from   ww w  .  j  av a 2  s . co m

    Icon ico = ModelerUtil.buildIcon("icon-info.gif");

    resolve = new JButton();
    resolve.setIcon(ico);
    resolve.setToolTipText("Edit Relationship");
    toolBar.add(resolve);

    toolBar.addSeparator();

    toolBar.add(actionManager.getAction(RemoveRelationshipAction.class).buildButton());

    toolBar.addSeparator();
    toolBar.add(actionManager.getAction(CutRelationshipAction.class).buildButton());
    toolBar.add(actionManager.getAction(CopyRelationshipAction.class).buildButton());
    toolBar.add(actionManager.getAction(PasteAction.class).buildButton());

    add(toolBar, BorderLayout.NORTH);

    table = new CayenneTable();
    table.setDefaultRenderer(String.class, new StringRenderer());
    table.setDefaultRenderer(ObjEntity.class, new EntityRenderer());

    tablePreferences = new TableColumnPreferences(ObjRelationshipTableModel.class,
            "objEntity/relationshipTable");

    /**
     * Create and install a popup
     */
    resolveMenu = new JMenuItem("Database Mapping", ico);

    JPopupMenu popup = new JPopupMenu();
    popup.add(resolveMenu);
    popup.add(actionManager.getAction(RemoveRelationshipAction.class).buildMenu());

    popup.addSeparator();
    popup.add(actionManager.getAction(CutRelationshipAction.class).buildMenu());
    popup.add(actionManager.getAction(CopyRelationshipAction.class).buildMenu());
    popup.add(actionManager.getAction(PasteAction.class).buildMenu());

    TablePopupHandler.install(table, popup);

    add(PanelFactory.createTablePanel(table, null), BorderLayout.CENTER);
}

From source file:org.apache.cayenne.modeler.ProjectTreeView.java

/**
 * Creates JPopupMenu containing main functions
 *//*from w  w  w. j a v  a  2  s  . c  o  m*/
private JPopupMenu createJPopupMenu() {
    JPopupMenu popup = new JPopupMenu();

    popup.add(buildMenu(CreateNodeAction.class));
    popup.add(buildMenu(CreateDataMapAction.class));

    popup.add(buildMenu(CreateObjEntityAction.class));
    popup.add(buildMenu(CreateEmbeddableAction.class));
    popup.add(buildMenu(CreateDbEntityAction.class));

    popup.add(buildMenu(CreateProcedureAction.class));
    popup.add(buildMenu(CreateQueryAction.class));
    popup.addSeparator();
    popup.add(buildMenu(ObjEntitySyncAction.class));
    popup.addSeparator();
    popup.add(buildMenu(LinkDataMapsAction.class));
    popup.addSeparator();
    popup.add(buildMenu(RemoveAction.class));
    popup.addSeparator();
    popup.add(buildMenu(CutAction.class));
    popup.add(buildMenu(CopyAction.class));
    popup.add(buildMenu(PasteAction.class));

    return popup;
}

From source file:org.apache.log4j.chainsaw.LogUI.java

/**
 * Activates itself as a viewer by configuring Size, and location of itself,
 * and configures the default Tabbed Pane elements with the correct layout,
 * table columns, and sets itself viewable.
 *//*ww w.  j  a v  a2 s.  co m*/
public void activateViewer() {
    LoggerRepository repo = LogManager.getLoggerRepository();
    if (repo instanceof LoggerRepositoryEx) {
        this.pluginRegistry = ((LoggerRepositoryEx) repo).getPluginRegistry();
    }
    initGUI();

    initPrefModelListeners();

    /**
     * We add a simple appender to the MessageCenter logger
     * so that each message is displayed in the Status bar
     */
    MessageCenter.getInstance().getLogger().addAppender(new AppenderSkeleton() {
        protected void append(LoggingEvent event) {
            getStatusBar().setMessage(event.getMessage().toString());
        }

        public void close() {
        }

        public boolean requiresLayout() {
            return false;
        }
    });

    initSocketConnectionListener();

    if (pluginRegistry.getPlugins(Receiver.class).size() == 0) {
        noReceiversDefined = true;
    }

    getFilterableColumns().add(ChainsawConstants.LEVEL_COL_NAME);
    getFilterableColumns().add(ChainsawConstants.LOGGER_COL_NAME);
    getFilterableColumns().add(ChainsawConstants.THREAD_COL_NAME);
    getFilterableColumns().add(ChainsawConstants.NDC_COL_NAME);
    getFilterableColumns().add(ChainsawConstants.PROPERTIES_COL_NAME);
    getFilterableColumns().add(ChainsawConstants.CLASS_COL_NAME);
    getFilterableColumns().add(ChainsawConstants.METHOD_COL_NAME);
    getFilterableColumns().add(ChainsawConstants.FILE_COL_NAME);
    getFilterableColumns().add(ChainsawConstants.NONE_COL_NAME);

    JPanel panePanel = new JPanel();
    panePanel.setLayout(new BorderLayout(2, 2));

    getContentPane().setLayout(new BorderLayout());

    getTabbedPane().addChangeListener(getToolBarAndMenus());
    getTabbedPane().addChangeListener(new ChangeListener() {
        public void stateChanged(ChangeEvent e) {
            LogPanel thisLogPanel = getCurrentLogPanel();
            if (thisLogPanel != null) {
                thisLogPanel.updateStatusBar();
            }
        }
    });

    KeyStroke ksRight = KeyStroke.getKeyStroke(KeyEvent.VK_RIGHT,
            Toolkit.getDefaultToolkit().getMenuShortcutKeyMask());
    KeyStroke ksLeft = KeyStroke.getKeyStroke(KeyEvent.VK_LEFT,
            Toolkit.getDefaultToolkit().getMenuShortcutKeyMask());
    KeyStroke ksGotoLine = KeyStroke.getKeyStroke(KeyEvent.VK_G,
            Toolkit.getDefaultToolkit().getMenuShortcutKeyMask());

    getTabbedPane().getInputMap(JComponent.WHEN_IN_FOCUSED_WINDOW).put(ksRight, "MoveRight");
    getTabbedPane().getInputMap(JComponent.WHEN_IN_FOCUSED_WINDOW).put(ksLeft, "MoveLeft");
    getTabbedPane().getInputMap(JComponent.WHEN_IN_FOCUSED_WINDOW).put(ksGotoLine, "GotoLine");

    Action moveRight = new AbstractAction() {
        public void actionPerformed(ActionEvent e) {
            int temp = getTabbedPane().getSelectedIndex();
            ++temp;

            if (temp != getTabbedPane().getTabCount()) {
                getTabbedPane().setSelectedTab(temp);
            }
        }
    };

    Action moveLeft = new AbstractAction() {
        public void actionPerformed(ActionEvent e) {
            int temp = getTabbedPane().getSelectedIndex();
            --temp;

            if (temp > -1) {
                getTabbedPane().setSelectedTab(temp);
            }
        }
    };

    Action gotoLine = new AbstractAction() {
        public void actionPerformed(ActionEvent e) {
            String inputLine = JOptionPane.showInputDialog(LogUI.this, "Enter the line number to go:",
                    "Goto Line", -1);
            try {
                int lineNumber = Integer.parseInt(inputLine);
                int row = getCurrentLogPanel().setSelectedEvent(lineNumber);
                if (row == -1) {
                    JOptionPane.showMessageDialog(LogUI.this, "You have entered an invalid line number",
                            "Error", 0);
                }
            } catch (NumberFormatException nfe) {
                JOptionPane.showMessageDialog(LogUI.this, "You have entered an invalid line number", "Error",
                        0);
            }
        }
    };

    getTabbedPane().getActionMap().put("MoveRight", moveRight);
    getTabbedPane().getActionMap().put("MoveLeft", moveLeft);
    getTabbedPane().getActionMap().put("GotoLine", gotoLine);

    /**
         * We listen for double clicks, and auto-undock currently selected Tab if
         * the mouse event location matches the currently selected tab
         */
    getTabbedPane().addMouseListener(new MouseAdapter() {
        public void mouseClicked(MouseEvent e) {
            super.mouseClicked(e);

            if ((e.getClickCount() > 1) && ((e.getModifiers() & InputEvent.BUTTON1_MASK) > 0)) {
                int tabIndex = getTabbedPane().getSelectedIndex();

                if ((tabIndex != -1) && (tabIndex == getTabbedPane().getSelectedIndex())) {
                    LogPanel logPanel = getCurrentLogPanel();

                    if (logPanel != null) {
                        logPanel.undock();
                    }
                }
            }
        }
    });

    panePanel.add(getTabbedPane());
    addWelcomePanel();

    getContentPane().add(toolbar, BorderLayout.NORTH);
    getContentPane().add(statusBar, BorderLayout.SOUTH);

    mainReceiverSplitPane = new JSplitPane(JSplitPane.HORIZONTAL_SPLIT, panePanel, receiversPanel);
    dividerSize = mainReceiverSplitPane.getDividerSize();
    mainReceiverSplitPane.setDividerLocation(-1);

    getContentPane().add(mainReceiverSplitPane, BorderLayout.CENTER);

    /**
     * We need to make sure that all the internal GUI components have been added to the
     * JFrame so that any plugns that get activated during initPlugins(...) method
     * have access to inject menus  
     */
    initPlugins(pluginRegistry);

    mainReceiverSplitPane.setResizeWeight(1.0);
    addWindowListener(new WindowAdapter() {
        public void windowClosing(WindowEvent event) {
            exit();
        }
    });
    preferencesFrame.setTitle("'Application-wide Preferences");
    preferencesFrame.setIconImage(((ImageIcon) ChainsawIcons.ICON_PREFERENCES).getImage());
    preferencesFrame.getContentPane().add(applicationPreferenceModelPanel);

    preferencesFrame.setSize(750, 520);

    Dimension screenDimension = Toolkit.getDefaultToolkit().getScreenSize();
    preferencesFrame.setLocation(new Point((screenDimension.width / 2) - (preferencesFrame.getSize().width / 2),
            (screenDimension.height / 2) - (preferencesFrame.getSize().height / 2)));

    pack();

    final JPopupMenu tabPopup = new JPopupMenu();
    final Action hideCurrentTabAction = new AbstractAction("Hide") {
        public void actionPerformed(ActionEvent e) {
            Component selectedComp = getTabbedPane().getSelectedComponent();
            if (selectedComp instanceof LogPanel) {
                displayPanel(getCurrentLogPanel().getIdentifier(), false);
                tbms.stateChange();
            } else {
                getTabbedPane().remove(selectedComp);
            }
        }
    };

    final Action hideOtherTabsAction = new AbstractAction("Hide Others") {
        public void actionPerformed(ActionEvent e) {
            Component selectedComp = getTabbedPane().getSelectedComponent();
            String currentName;
            if (selectedComp instanceof LogPanel) {
                currentName = getCurrentLogPanel().getIdentifier();
            } else if (selectedComp instanceof WelcomePanel) {
                currentName = ChainsawTabbedPane.WELCOME_TAB;
            } else {
                currentName = ChainsawTabbedPane.ZEROCONF;
            }

            int count = getTabbedPane().getTabCount();
            int index = 0;

            for (int i = 0; i < count; i++) {
                String name = getTabbedPane().getTitleAt(index);

                if (getPanelMap().keySet().contains(name) && !name.equals(currentName)) {
                    displayPanel(name, false);
                    tbms.stateChange();
                } else {
                    index++;
                }
            }
        }
    };

    Action showHiddenTabsAction = new AbstractAction("Show All Hidden") {
        public void actionPerformed(ActionEvent e) {
            for (Iterator iter = getPanels().entrySet().iterator(); iter.hasNext();) {
                Map.Entry entry = (Map.Entry) iter.next();
                Boolean docked = (Boolean) entry.getValue();
                if (docked.booleanValue()) {
                    String identifier = (String) entry.getKey();
                    int count = getTabbedPane().getTabCount();
                    boolean found = false;

                    for (int i = 0; i < count; i++) {
                        String name = getTabbedPane().getTitleAt(i);

                        if (name.equals(identifier)) {
                            found = true;

                            break;
                        }
                    }

                    if (!found) {
                        displayPanel(identifier, true);
                        tbms.stateChange();
                    }
                }
            }
        }
    };

    tabPopup.add(hideCurrentTabAction);
    tabPopup.add(hideOtherTabsAction);
    tabPopup.addSeparator();
    tabPopup.add(showHiddenTabsAction);

    final PopupListener tabPopupListener = new PopupListener(tabPopup);
    getTabbedPane().addMouseListener(tabPopupListener);

    this.handler.addPropertyChangeListener("dataRate", new PropertyChangeListener() {
        public void propertyChange(PropertyChangeEvent evt) {
            double dataRate = ((Double) evt.getNewValue()).doubleValue();
            statusBar.setDataRate(dataRate);
        }
    });

    getSettingsManager().addSettingsListener(this);
    getSettingsManager().addSettingsListener(MRUFileListPreferenceSaver.getInstance());
    getSettingsManager().addSettingsListener(receiversPanel);
    try {
        //if an uncaught exception is thrown, allow the UI to continue to load
        getSettingsManager().loadSettings();
    } catch (Exception e) {
        e.printStackTrace();
    }
    //app preferences have already been loaded (and configuration url possibly set to blank if being overridden)
    //but we need a listener so the settings will be saved on exit (added after loadsettings was called)
    getSettingsManager().addSettingsListener(new ApplicationPreferenceModelSaver(applicationPreferenceModel));

    setVisible(true);

    if (applicationPreferenceModel.isReceivers()) {
        showReceiverPanel();
    } else {
        hideReceiverPanel();
    }

    removeSplash();

    synchronized (initializationLock) {
        isGUIFullyInitialized = true;
        initializationLock.notifyAll();
    }

    if (noReceiversDefined && applicationPreferenceModel.isShowNoReceiverWarning()) {
        SwingHelper.invokeOnEDT(new Runnable() {
            public void run() {
                showReceiverConfigurationPanel();
            }
        });
    }

    Container container = tutorialFrame.getContentPane();
    final JEditorPane tutorialArea = new JEditorPane();
    tutorialArea.setBorder(BorderFactory.createEmptyBorder(0, 5, 0, 5));
    tutorialArea.setEditable(false);
    container.setLayout(new BorderLayout());

    try {
        tutorialArea.setPage(ChainsawConstants.TUTORIAL_URL);
        JTextComponentFormatter.applySystemFontAndSize(tutorialArea);

        container.add(new JScrollPane(tutorialArea), BorderLayout.CENTER);
    } catch (Exception e) {
        MessageCenter.getInstance().getLogger().error("Error occurred loading the Tutorial", e);
    }

    tutorialFrame.setIconImage(new ImageIcon(ChainsawIcons.HELP).getImage());
    tutorialFrame.setSize(new Dimension(640, 480));

    final Action startTutorial = new AbstractAction("Start Tutorial",
            new ImageIcon(ChainsawIcons.ICON_RESUME_RECEIVER)) {
        public void actionPerformed(ActionEvent e) {
            if (JOptionPane.showConfirmDialog(null,
                    "This will start 3 \"Generator\" receivers for use in the Tutorial.  Is that ok?",
                    "Confirm", JOptionPane.YES_NO_OPTION) == JOptionPane.YES_OPTION) {
                new Thread(new Tutorial()).start();
                putValue("TutorialStarted", Boolean.TRUE);
            } else {
                putValue("TutorialStarted", Boolean.FALSE);
            }
        }
    };

    final Action stopTutorial = new AbstractAction("Stop Tutorial",
            new ImageIcon(ChainsawIcons.ICON_STOP_RECEIVER)) {
        public void actionPerformed(ActionEvent e) {
            if (JOptionPane.showConfirmDialog(null,
                    "This will stop all of the \"Generator\" receivers used in the Tutorial, but leave any other Receiver untouched.  Is that ok?",
                    "Confirm", JOptionPane.YES_NO_OPTION) == JOptionPane.YES_OPTION) {
                new Thread(new Runnable() {
                    public void run() {
                        LoggerRepository repo = LogManager.getLoggerRepository();
                        if (repo instanceof LoggerRepositoryEx) {
                            PluginRegistry pluginRegistry = ((LoggerRepositoryEx) repo).getPluginRegistry();
                            List list = pluginRegistry.getPlugins(Generator.class);

                            for (Iterator iter = list.iterator(); iter.hasNext();) {
                                Plugin plugin = (Plugin) iter.next();
                                pluginRegistry.stopPlugin(plugin.getName());
                            }
                        }
                    }
                }).start();
                setEnabled(false);
                startTutorial.putValue("TutorialStarted", Boolean.FALSE);
            }
        }
    };

    stopTutorial.putValue(Action.SHORT_DESCRIPTION,
            "Removes all of the Tutorials Generator Receivers, leaving all other Receivers untouched");
    startTutorial.putValue(Action.SHORT_DESCRIPTION,
            "Begins the Tutorial, starting up some Generator Receivers so you can see Chainsaw in action");
    stopTutorial.setEnabled(false);

    final SmallToggleButton startButton = new SmallToggleButton(startTutorial);
    PropertyChangeListener pcl = new PropertyChangeListener() {
        public void propertyChange(PropertyChangeEvent evt) {
            stopTutorial.setEnabled(((Boolean) startTutorial.getValue("TutorialStarted")).equals(Boolean.TRUE));
            startButton.setSelected(stopTutorial.isEnabled());
        }
    };

    startTutorial.addPropertyChangeListener(pcl);
    stopTutorial.addPropertyChangeListener(pcl);

    pluginRegistry.addPluginListener(new PluginListener() {
        public void pluginStarted(PluginEvent e) {
        }

        public void pluginStopped(PluginEvent e) {
            List list = pluginRegistry.getPlugins(Generator.class);

            if (list.size() == 0) {
                startTutorial.putValue("TutorialStarted", Boolean.FALSE);
            }
        }
    });

    final SmallButton stopButton = new SmallButton(stopTutorial);

    final JToolBar tutorialToolbar = new JToolBar();
    tutorialToolbar.setFloatable(false);
    tutorialToolbar.add(startButton);
    tutorialToolbar.add(stopButton);
    container.add(tutorialToolbar, BorderLayout.NORTH);
    tutorialArea.addHyperlinkListener(new HyperlinkListener() {
        public void hyperlinkUpdate(HyperlinkEvent e) {
            if (e.getEventType() == HyperlinkEvent.EventType.ACTIVATED) {
                if (e.getDescription().equals("StartTutorial")) {
                    startTutorial.actionPerformed(null);
                } else if (e.getDescription().equals("StopTutorial")) {
                    stopTutorial.actionPerformed(null);
                } else {
                    try {
                        tutorialArea.setPage(e.getURL());
                    } catch (IOException e1) {
                        MessageCenter.getInstance().getLogger()
                                .error("Failed to change the URL for the Tutorial", e1);
                    }
                }
            }
        }
    });

    /**
     * loads the saved tab settings and if there are hidden tabs,
     * hide those tabs out of currently loaded tabs..
     */

    if (!getTabbedPane().tabSetting.isWelcome()) {
        displayPanel(ChainsawTabbedPane.WELCOME_TAB, false);
    }
    if (!getTabbedPane().tabSetting.isZeroconf()) {
        displayPanel(ChainsawTabbedPane.ZEROCONF, false);
    }
    tbms.stateChange();

}