*/
    private JMenuItem getOpenMapMenuItem()
    {
        final JMenuItem item = new JMenuItem(lang.MAP_OPEN);
        item.setAccelerator(KeyStroke.getKeyStroke(MENU_ACCELERATOR + " pressed O"));
        item.addActionListener(new ActionListener()
        {
            /*
             * @see java.awt.event.ActionListener#actionPerformed(java.awt.event.ActionEvent)
             */
            public void actionPerformed(final ActionEvent e)
            {
                // opening while on the public layer...
                if (getGametableCanvas().getActiveMap() == getGametableCanvas().getPublicMap())
                {
                    final File openFile = UtilityFunctions.doFileOpenDialog(lang.OPEN, "grm", true);

                    if (openFile == null)
                    {
                        // they canceled out of the open
                        return;
                    }

                    m_actingFilePublic = openFile;

                    final int result = UtilityFunctions.yesNoDialog(GametableFrame.this,
                        lang.MAP_OPEN_WARN, lang.MAP_OPEN_CONFIRM);
                    if (result == UtilityFunctions.YES)
                    {

                        if (m_actingFilePublic != null)
                        {
                            // clear the state
                            eraseAll();

                            // load
                            if (m_netStatus == NETSTATE_JOINED)
                            {
                                // joiners dispatch the save file to the host
                                // for processing
                                final byte grmFile[] = UtilityFunctions.loadFileToArray(m_actingFilePublic);
                                if (grmFile != null)
                                {
                                    send(PacketManager.makeGrmPacket(grmFile));
                                }
                            }
                            else
                            {
                                // actually do the load if we're the host or offline
                                loadState(m_actingFilePublic);
                            }

                            postSystemMessage(getMyPlayer().getPlayerName() + " " + lang.MAP_OPEN_DONE);
                        }
                    }
                }
                else
                {
                    // opening while on the private layer
                    m_actingFilePrivate = UtilityFunctions.doFileOpenDialog(lang.OPEN, "grm", true);
                    if (m_actingFilePrivate != null)
                    {
                        // we have to pretend we're not connected while loading. We
                        // don't want these packets to be propagated to other players
                        final int oldStatus = m_netStatus;
                        m_netStatus = NETSTATE_NONE;
                        PacketSourceState.beginFileLoad();
                        loadState(m_actingFilePrivate);
                        PacketSourceState.endFileLoad();
                        m_netStatus = oldStatus;
                    }
                }
            }
        });

        return item;
    }