Example usage for javax.swing Action getValue

List of usage examples for javax.swing Action getValue

Introduction

In this page you can find the example usage for javax.swing Action getValue.

Prototype

public Object getValue(String key);

Source Link

Document

Gets one of this object's properties using the associated key.

Usage

From source file:com.hexidec.ekit.EkitCore.java

/**
 * Master Constructor/*from   w  w w  .  j a v a 2  s .c o m*/
 * 
 * @param sDocument
 *            [String] A text or HTML document to load in the editor upon
 *            startup.
 * @param sStyleSheet
 *            [String] A CSS stylesheet to load in the editor upon startup.
 * @param sRawDocument
 *            [String] A document encoded as a String to load in the editor
 *            upon startup.
 * @param sdocSource
 *            [StyledDocument] Optional document specification, using
 *            javax.swing.text.StyledDocument.
 * @param urlStyleSheet
 *            [URL] A URL reference to the CSS style sheet.
 * @param includeToolBar
 *            [boolean] Specifies whether the app should include the
 *            toolbar(s).
 * @param showViewSource
 *            [boolean] Specifies whether or not to show the View Source
 *            window on startup.
 * @param showMenuIcons
 *            [boolean] Specifies whether or not to show icon pictures in
 *            menus.
 * @param sLanguage
 *            [String] The language portion of the Internationalization
 *            Locale to run Ekit in.
 * @param sCountry
 *            [String] The country portion of the Internationalization
 *            Locale to run Ekit in.
 * @param base64
 *            [boolean] Specifies whether the raw document is Base64 encoded
 *            or not.
 * @param debugMode
 *            [boolean] Specifies whether to show the Debug menu or not.
 * @param hasSpellChecker
 *            [boolean] Specifies whether or not this uses the SpellChecker
 *            module
 * @param multiBar
 *            [boolean] Specifies whether to use multiple toolbars or one
 *            big toolbar.
 * @param toolbarSeq
 *            [String] Code string specifying the toolbar buttons to show.
 * @param keepUnknownTags
 *            [boolean] Specifies whether or not the parser should retain
 *            unknown tags.
 * @param enterBreak
 *            [boolean] Specifies whether the ENTER key should insert breaks
 *            instead of paragraph tags.
 * @param inlineEdit
 *            [boolean] Should edit inline content only (no line breaks)
 */
public EkitCore(boolean isParentApplet, String sDocument, String sStyleSheet, String sRawDocument,
        StyledDocument sdocSource, URL urlStyleSheet, boolean includeToolBar, boolean showViewSource,
        boolean showMenuIcons, String sLanguage, String sCountry, boolean base64, boolean debugMode,
        boolean hasSpellChecker, boolean multiBar, String toolbarSeq, boolean keepUnknownTags,
        boolean enterBreak, boolean inlineEdit, List<HTMLDocumentBehavior> behaviors) {
    super();

    if (behaviors != null) {
        this.behaviors.addAll(behaviors);
    }

    preserveUnknownTags = keepUnknownTags;
    enterIsBreak = enterBreak;
    this.inlineEdit = inlineEdit;

    frameHandler = new Frame();

    // Determine if system clipboard is available (SecurityManager version)
    /*
     * SecurityManager secManager = System.getSecurityManager();
     * if(secManager != null) { try {
     * secManager.checkSystemClipboardAccess(); sysClipboard =
     * Toolkit.getDefaultToolkit().getSystemClipboard(); }
     * catch(SecurityException se) { sysClipboard = null; } }
     */

    // Obtain system clipboard if available
    try {
        sysClipboard = Toolkit.getDefaultToolkit().getSystemClipboard();
    } catch (Exception ex) {
        sysClipboard = null;
    }

    // Plain text DataFlavor for unformatted paste
    try {
        dfPlainText = new DataFlavor("text/plain; class=java.lang.String; charset=Unicode"); // Charsets
        // usually
        // available
        // include
        // Unicode,
        // UTF-16,
        // UTF-8,
        // &
        // US-ASCII
    } catch (ClassNotFoundException cnfe) {
        // it would be nice to use DataFlavor.plainTextFlavor, but that is
        // deprecated
        // this will not work as desired, but it will prevent errors from
        // being thrown later
        // alternately, we could flag up here that Unformatted Paste is not
        // available and adjust the UI accordingly
        // however, the odds of java.lang.String not being found are pretty
        // slim one imagines
        dfPlainText = DataFlavor.stringFlavor;
    }

    /* Localize for language */
    Locale baseLocale = Locale.getDefault();
    if (sLanguage != null && sCountry != null) {
        baseLocale = new Locale(sLanguage, sCountry);
    }
    Translatrix.init("EkitLanguageResources", baseLocale);

    /* Initialise system-specific control key value */
    if (!(GraphicsEnvironment.isHeadless())) {
        CTRLKEY = Toolkit.getDefaultToolkit().getMenuShortcutKeyMask();
    }

    /* Create the editor kit, document, and stylesheet */
    jtpMain = new EkitTextPane();
    htmlKit = new ExtendedHTMLEditorKit();
    htmlDoc = (ExtendedHTMLDocument) (htmlKit.createDefaultDocument());
    htmlDoc.putProperty("IgnoreCharsetDirective", Boolean.TRUE);
    htmlDoc.setPreservesUnknownTags(preserveUnknownTags);
    styleSheet = htmlDoc.getStyleSheet();
    htmlKit.setDefaultCursor(new Cursor(Cursor.TEXT_CURSOR));
    jtpMain.setCursor(new Cursor(Cursor.TEXT_CURSOR));

    /* Set up the text pane */
    jtpMain.setEditorKit(htmlKit);
    jtpMain.setDocument(htmlDoc);
    //      jtpMain.addMouseMotionListener(new EkitMouseMotionListener());
    jtpMain.addFocusListener(this);
    jtpMain.setMargin(new Insets(4, 4, 4, 4));
    jtpMain.addKeyListener(this);
    // jtpMain.setDragEnabled(true); // this causes an error in older Java
    // versions

    /* Create the source text area */
    if (sdocSource == null) {
        jtpSource = new JTextArea();
        jtpSource.setText(jtpMain.getText());
    } else {
        jtpSource = new JTextArea(sdocSource);
        jtpMain.setText(jtpSource.getText());
    }
    jtpSource.setBackground(new Color(212, 212, 212));
    jtpSource.setSelectionColor(new Color(255, 192, 192));
    jtpSource.setMargin(new Insets(4, 4, 4, 4));
    jtpSource.getDocument().addDocumentListener(this);
    jtpSource.addFocusListener(this);
    jtpSource.setCursor(new Cursor(Cursor.TEXT_CURSOR));
    jtpSource.setColumns(1024);
    jtpSource.setEditable(false);

    /* Add CaretListener for tracking caret location events */
    jtpMain.addCaretListener(new CaretListener() {
        public void caretUpdate(CaretEvent ce) {
            handleCaretPositionChange(ce);
        }
    });

    // Default text
    if (!inlineEdit) {
        setDocumentText("<p></p>");
    }

    /* Set up the undo features */
    undoMngr = new UndoManager();
    undoAction = new UndoAction();
    redoAction = new RedoAction();
    jtpMain.getDocument().addUndoableEditListener(new CustomUndoableEditListener());

    /* Insert raw document, if exists */
    if (sRawDocument != null && sRawDocument.length() > 0) {
        if (base64) {
            jtpMain.setText(Base64Codec.decode(sRawDocument));
        } else {
            jtpMain.setText(sRawDocument);
        }
    }
    jtpMain.setCaretPosition(0);
    jtpMain.getDocument().addDocumentListener(this);

    /* Import CSS from reference, if exists */
    if (urlStyleSheet != null) {
        try {
            String currDocText = jtpMain.getText();
            htmlDoc = (ExtendedHTMLDocument) (htmlKit.createDefaultDocument());
            htmlDoc.putProperty("IgnoreCharsetDirective", Boolean.TRUE);
            htmlDoc.setPreservesUnknownTags(preserveUnknownTags);
            styleSheet = htmlDoc.getStyleSheet();
            BufferedReader br = new BufferedReader(new InputStreamReader(urlStyleSheet.openStream()));
            styleSheet.loadRules(br, urlStyleSheet);
            br.close();
            htmlDoc = new ExtendedHTMLDocument(styleSheet);
            registerDocument(htmlDoc);
            jtpMain.setText(currDocText);
            jtpSource.setText(jtpMain.getText());
        } catch (Exception e) {
            log.error(e.getMessage(), e);
        }
    }

    /* Preload the specified HTML document, if exists */
    if (sDocument != null) {
        File defHTML = new File(sDocument);
        if (defHTML.exists()) {
            try {
                openDocument(defHTML);
            } catch (Exception e) {
                logException("Exception in preloading HTML document", e);
            }
        }
    }

    /* Preload the specified CSS document, if exists */
    if (sStyleSheet != null) {
        File defCSS = new File(sStyleSheet);
        if (defCSS.exists()) {
            try {
                openStyleSheet(defCSS);
            } catch (Exception e) {
                logException("Exception in preloading CSS stylesheet", e);
            }
        }
    }

    /* Collect the actions that the JTextPane is naturally aware of */
    Hashtable<Object, Action> actions = new Hashtable<Object, Action>();
    Action[] actionsArray = jtpMain.getActions();
    for (Action a : actionsArray) {
        actions.put(a.getValue(Action.NAME), a);
    }

    /* Create shared actions */
    actionFontBold = new StyledEditorKit.BoldAction();
    actionFontItalic = new StyledEditorKit.ItalicAction();
    actionFontUnderline = new StyledEditorKit.UnderlineAction();
    actionFontStrike = new FormatAction(this, Translatrix.getTranslationString("FontStrike"), HTML.Tag.STRIKE);
    actionFontSuperscript = new FormatAction(this, Translatrix.getTranslationString("FontSuperscript"),
            HTML.Tag.SUP);
    actionFontSubscript = new FormatAction(this, Translatrix.getTranslationString("FontSubscript"),
            HTML.Tag.SUB);
    actionListUnordered = new ListAutomationAction(this, Translatrix.getTranslationString("ListUnordered"),
            HTML.Tag.UL);
    actionListOrdered = new ListAutomationAction(this, Translatrix.getTranslationString("ListOrdered"),
            HTML.Tag.OL);
    actionSelectFont = new SetFontFamilyAction(this, "[MENUFONTSELECTOR]");
    actionAlignLeft = new AlignmentAction(Translatrix.getTranslationString("AlignLeft"),
            StyleConstants.ALIGN_LEFT);
    actionAlignCenter = new AlignmentAction(Translatrix.getTranslationString("AlignCenter"),
            StyleConstants.ALIGN_CENTER);
    actionAlignRight = new AlignmentAction(Translatrix.getTranslationString("AlignRight"),
            StyleConstants.ALIGN_RIGHT);
    actionAlignJustified = new AlignmentAction(Translatrix.getTranslationString("AlignJustified"),
            StyleConstants.ALIGN_JUSTIFIED);
    actionInsertAnchor = new CustomAction(this, Translatrix.getTranslationString("InsertAnchor") + menuDialog,
            HTML.Tag.A);
    actionClearFormat = new ClearFormatAction(this);
    actionSpecialChar = new SpecialCharAction(this);

    // actionTableButtonMenu
    Action actionTableInsert = new CommandAction(Translatrix.getTranslationString("InsertTable") + menuDialog,
            getEkitIcon("TableCreate"), CMD_TABLE_INSERT, this);
    Action actionTableDelete = new CommandAction(Translatrix.getTranslationString("DeleteTable"),
            getEkitIcon("TableDelete"), CMD_TABLE_DELETE, this);
    Action actionTableRow = new CommandAction(Translatrix.getTranslationString("InsertTableRow"),
            getEkitIcon("InsertRow"), CMD_TABLE_ROW_INSERT, this);
    Action actionTableRowAfter = new CommandAction(Translatrix.getTranslationString("InsertTableRowAfter"),
            getEkitIcon("InsertRowAfter"), CMD_TABLE_ROW_INSERT_AFTER, this);
    Action actionTableCol = new CommandAction(Translatrix.getTranslationString("InsertTableColumn"),
            getEkitIcon("InsertColumn"), CMD_TABLE_COLUMN_INSERT, this);
    Action actionTableColAfter = new CommandAction(Translatrix.getTranslationString("InsertTableColumnAfter"),
            getEkitIcon("InsertColumnAfter"), CMD_TABLE_COLUMN_INSERT_AFTER, this);
    Action actionTableRowDel = new CommandAction(Translatrix.getTranslationString("DeleteTableRow"),
            getEkitIcon("DeleteRow"), CMD_TABLE_ROW_DELETE, this);
    Action actionTableColDel = new CommandAction(Translatrix.getTranslationString("DeleteTableColumn"),
            getEkitIcon("DeleteColumn"), CMD_TABLE_COLUMN_DELETE, this);
    Action actionTableColFmt = new CommandAction(Translatrix.getTranslationString("FormatTableColumn"),
            getEkitIcon("FormatColumn"), CMD_TABLE_COLUMN_FORMAT, this);
    actionTableButtonMenu = new ButtonMenuAction(Translatrix.getTranslationString("TableMenu"),
            getEkitIcon("TableMenu"), actionTableInsert, actionTableDelete, null, actionTableRow,
            actionTableRowAfter, actionTableCol, actionTableColAfter, null, actionTableRowDel,
            actionTableColDel, null, actionTableColFmt);

    /* Build the menus */
    /* FILE Menu */
    jMenuFile = new JMenu(Translatrix.getTranslationString("File"));
    htMenus.put(KEY_MENU_FILE, jMenuFile);
    JMenuItem jmiNew = new JMenuItem(Translatrix.getTranslationString("NewDocument"));
    jmiNew.setActionCommand(CMD_DOC_NEW);
    jmiNew.addActionListener(this);
    jmiNew.setAccelerator(KeyStroke.getKeyStroke('N', CTRLKEY, false));
    if (showMenuIcons) {
        jmiNew.setIcon(getEkitIcon("New"));
    }
    ;
    jMenuFile.add(jmiNew);
    JMenuItem jmiNewStyled = new JMenuItem(Translatrix.getTranslationString("NewStyledDocument"));
    jmiNewStyled.setActionCommand(CMD_DOC_NEW_STYLED);
    jmiNewStyled.addActionListener(this);
    if (showMenuIcons) {
        jmiNewStyled.setIcon(getEkitIcon("NewStyled"));
    }
    ;
    jMenuFile.add(jmiNewStyled);
    JMenuItem jmiOpenHTML = new JMenuItem(Translatrix.getTranslationString("OpenDocument") + menuDialog);
    jmiOpenHTML.setActionCommand(CMD_DOC_OPEN_HTML);
    jmiOpenHTML.addActionListener(this);
    jmiOpenHTML.setAccelerator(KeyStroke.getKeyStroke('O', CTRLKEY, false));
    if (showMenuIcons) {
        jmiOpenHTML.setIcon(getEkitIcon("Open"));
    }
    ;
    jMenuFile.add(jmiOpenHTML);
    JMenuItem jmiOpenCSS = new JMenuItem(Translatrix.getTranslationString("OpenStyle") + menuDialog);
    jmiOpenCSS.setActionCommand(CMD_DOC_OPEN_CSS);
    jmiOpenCSS.addActionListener(this);
    jMenuFile.add(jmiOpenCSS);
    jMenuFile.addSeparator();
    JMenuItem jmiSave = new JMenuItem(Translatrix.getTranslationString("Save"));
    jmiSave.setActionCommand(CMD_DOC_SAVE);
    jmiSave.addActionListener(this);
    jmiSave.setAccelerator(KeyStroke.getKeyStroke('S', CTRLKEY, false));
    if (showMenuIcons) {
        jmiSave.setIcon(getEkitIcon("Save"));
    }
    ;
    jMenuFile.add(jmiSave);
    JMenuItem jmiSaveAs = new JMenuItem(Translatrix.getTranslationString("SaveAs") + menuDialog);
    jmiSaveAs.setActionCommand(CMD_DOC_SAVE_AS);
    jmiSaveAs.addActionListener(this);
    jMenuFile.add(jmiSaveAs);
    JMenuItem jmiSaveBody = new JMenuItem(Translatrix.getTranslationString("SaveBody") + menuDialog);
    jmiSaveBody.setActionCommand(CMD_DOC_SAVE_BODY);
    jmiSaveBody.addActionListener(this);
    jMenuFile.add(jmiSaveBody);
    JMenuItem jmiSaveRTF = new JMenuItem(Translatrix.getTranslationString("SaveRTF") + menuDialog);
    jmiSaveRTF.setActionCommand(CMD_DOC_SAVE_RTF);
    jmiSaveRTF.addActionListener(this);
    jMenuFile.add(jmiSaveRTF);
    jMenuFile.addSeparator();
    JMenuItem jmiPrint = new JMenuItem(Translatrix.getTranslationString("Print"));
    jmiPrint.setActionCommand(CMD_DOC_PRINT);
    jmiPrint.addActionListener(this);
    jMenuFile.add(jmiPrint);
    jMenuFile.addSeparator();
    JMenuItem jmiSerialOut = new JMenuItem(Translatrix.getTranslationString("Serialize") + menuDialog);
    jmiSerialOut.setActionCommand(CMD_DOC_SERIALIZE_OUT);
    jmiSerialOut.addActionListener(this);
    jMenuFile.add(jmiSerialOut);
    JMenuItem jmiSerialIn = new JMenuItem(Translatrix.getTranslationString("ReadFromSer") + menuDialog);
    jmiSerialIn.setActionCommand(CMD_DOC_SERIALIZE_IN);
    jmiSerialIn.addActionListener(this);
    jMenuFile.add(jmiSerialIn);
    jMenuFile.addSeparator();
    JMenuItem jmiExit = new JMenuItem(Translatrix.getTranslationString("Exit"));
    jmiExit.setActionCommand(CMD_EXIT);
    jmiExit.addActionListener(this);
    jMenuFile.add(jmiExit);

    /* EDIT Menu */
    jMenuEdit = new JMenu(Translatrix.getTranslationString("Edit"));
    htMenus.put(KEY_MENU_EDIT, jMenuEdit);
    if (sysClipboard != null) {
        // System Clipboard versions of menu commands
        JMenuItem jmiCut = new JMenuItem(Translatrix.getTranslationString("Cut"));
        jmiCut.setActionCommand(CMD_CLIP_CUT);
        jmiCut.addActionListener(this);
        jmiCut.setAccelerator(KeyStroke.getKeyStroke('X', CTRLKEY, false));
        if (showMenuIcons) {
            jmiCut.setIcon(getEkitIcon("Cut"));
        }
        jMenuEdit.add(jmiCut);
        JMenuItem jmiCopy = new JMenuItem(Translatrix.getTranslationString("Copy"));
        jmiCopy.setActionCommand(CMD_CLIP_COPY);
        jmiCopy.addActionListener(this);
        jmiCopy.setAccelerator(KeyStroke.getKeyStroke('C', CTRLKEY, false));
        if (showMenuIcons) {
            jmiCopy.setIcon(getEkitIcon("Copy"));
        }
        jMenuEdit.add(jmiCopy);
        JMenuItem jmiPaste = new JMenuItem(Translatrix.getTranslationString("Paste"));
        jmiPaste.setActionCommand(CMD_CLIP_PASTE);
        jmiPaste.addActionListener(this);
        jmiPaste.setAccelerator(KeyStroke.getKeyStroke('V', CTRLKEY, false));
        if (showMenuIcons) {
            jmiPaste.setIcon(getEkitIcon("Paste"));
        }
        jMenuEdit.add(jmiPaste);
        JMenuItem jmiPasteX = new JMenuItem(Translatrix.getTranslationString("PasteUnformatted"));
        jmiPasteX.setActionCommand(CMD_CLIP_PASTE_PLAIN);
        jmiPasteX.addActionListener(this);
        jmiPasteX.setAccelerator(KeyStroke.getKeyStroke('V', CTRLKEY + KeyEvent.SHIFT_MASK, false));
        if (showMenuIcons) {
            jmiPasteX.setIcon(getEkitIcon("PasteUnformatted"));
        }
        jMenuEdit.add(jmiPasteX);
    } else {
        // DefaultEditorKit versions of menu commands
        JMenuItem jmiCut = new JMenuItem(new DefaultEditorKit.CutAction());
        jmiCut.setText(Translatrix.getTranslationString("Cut"));
        jmiCut.setAccelerator(KeyStroke.getKeyStroke('X', CTRLKEY, false));
        if (showMenuIcons) {
            jmiCut.setIcon(getEkitIcon("Cut"));
        }
        jMenuEdit.add(jmiCut);
        JMenuItem jmiCopy = new JMenuItem(new DefaultEditorKit.CopyAction());
        jmiCopy.setText(Translatrix.getTranslationString("Copy"));
        jmiCopy.setAccelerator(KeyStroke.getKeyStroke('C', CTRLKEY, false));
        if (showMenuIcons) {
            jmiCopy.setIcon(getEkitIcon("Copy"));
        }
        jMenuEdit.add(jmiCopy);
        JMenuItem jmiPaste = new JMenuItem(new DefaultEditorKit.PasteAction());
        jmiPaste.setText(Translatrix.getTranslationString("Paste"));
        jmiPaste.setAccelerator(KeyStroke.getKeyStroke('V', CTRLKEY, false));
        if (showMenuIcons) {
            jmiPaste.setIcon(getEkitIcon("Paste"));
        }
        jMenuEdit.add(jmiPaste);
        JMenuItem jmiPasteX = new JMenuItem(Translatrix.getTranslationString("PasteUnformatted"));
        jmiPasteX.setActionCommand(CMD_CLIP_PASTE_PLAIN);
        jmiPasteX.addActionListener(this);
        jmiPasteX.setAccelerator(KeyStroke.getKeyStroke('V', CTRLKEY + KeyEvent.SHIFT_MASK, false));
        if (showMenuIcons) {
            jmiPasteX.setIcon(getEkitIcon("PasteUnformatted"));
        }
        jMenuEdit.add(jmiPasteX);
    }
    jMenuEdit.addSeparator();
    JMenuItem jmiUndo = new JMenuItem(undoAction);
    jmiUndo.setAccelerator(KeyStroke.getKeyStroke('Z', CTRLKEY, false));
    if (showMenuIcons) {
        jmiUndo.setIcon(getEkitIcon("Undo"));
    }
    jMenuEdit.add(jmiUndo);
    JMenuItem jmiRedo = new JMenuItem(redoAction);
    jmiRedo.setAccelerator(KeyStroke.getKeyStroke('Y', CTRLKEY, false));
    if (showMenuIcons) {
        jmiRedo.setIcon(getEkitIcon("Redo"));
    }
    jMenuEdit.add(jmiRedo);
    jMenuEdit.addSeparator();
    JMenuItem jmiSelAll = new JMenuItem((Action) actions.get(DefaultEditorKit.selectAllAction));
    jmiSelAll.setText(Translatrix.getTranslationString("SelectAll"));
    jmiSelAll.setAccelerator(KeyStroke.getKeyStroke('A', CTRLKEY, false));
    jMenuEdit.add(jmiSelAll);
    JMenuItem jmiSelPara = new JMenuItem((Action) actions.get(DefaultEditorKit.selectParagraphAction));
    jmiSelPara.setText(Translatrix.getTranslationString("SelectParagraph"));
    jMenuEdit.add(jmiSelPara);
    JMenuItem jmiSelLine = new JMenuItem((Action) actions.get(DefaultEditorKit.selectLineAction));
    jmiSelLine.setText(Translatrix.getTranslationString("SelectLine"));
    jMenuEdit.add(jmiSelLine);
    JMenuItem jmiSelWord = new JMenuItem((Action) actions.get(DefaultEditorKit.selectWordAction));
    jmiSelWord.setText(Translatrix.getTranslationString("SelectWord"));
    jMenuEdit.add(jmiSelWord);
    jMenuEdit.addSeparator();
    JMenu jMenuEnterKey = new JMenu(Translatrix.getTranslationString("EnterKeyMenu"));
    jcbmiEnterKeyParag = new JCheckBoxMenuItem(Translatrix.getTranslationString("EnterKeyParag"),
            !enterIsBreak);
    jcbmiEnterKeyParag.setActionCommand(CMD_ENTER_PARAGRAPH);
    jcbmiEnterKeyParag.addActionListener(this);
    jMenuEnterKey.add(jcbmiEnterKeyParag);
    jcbmiEnterKeyBreak = new JCheckBoxMenuItem(Translatrix.getTranslationString("EnterKeyBreak"), enterIsBreak);
    jcbmiEnterKeyBreak.setActionCommand(CMD_ENTER_BREAK);
    jcbmiEnterKeyBreak.addActionListener(this);
    jMenuEnterKey.add(jcbmiEnterKeyBreak);
    jMenuEdit.add(jMenuEnterKey);

    /* VIEW Menu */
    jMenuView = new JMenu(Translatrix.getTranslationString("View"));
    htMenus.put(KEY_MENU_VIEW, jMenuView);
    if (includeToolBar) {
        if (multiBar) {
            jMenuToolbars = new JMenu(Translatrix.getTranslationString("ViewToolbars"));

            jcbmiViewToolbarMain = new JCheckBoxMenuItem(Translatrix.getTranslationString("ViewToolbarMain"),
                    false);
            jcbmiViewToolbarMain.setActionCommand(CMD_TOGGLE_TOOLBAR_MAIN);
            jcbmiViewToolbarMain.addActionListener(this);
            jMenuToolbars.add(jcbmiViewToolbarMain);

            jcbmiViewToolbarFormat = new JCheckBoxMenuItem(
                    Translatrix.getTranslationString("ViewToolbarFormat"), false);
            jcbmiViewToolbarFormat.setActionCommand(CMD_TOGGLE_TOOLBAR_FORMAT);
            jcbmiViewToolbarFormat.addActionListener(this);
            jMenuToolbars.add(jcbmiViewToolbarFormat);

            jcbmiViewToolbarStyles = new JCheckBoxMenuItem(
                    Translatrix.getTranslationString("ViewToolbarStyles"), false);
            jcbmiViewToolbarStyles.setActionCommand(CMD_TOGGLE_TOOLBAR_STYLES);
            jcbmiViewToolbarStyles.addActionListener(this);
            jMenuToolbars.add(jcbmiViewToolbarStyles);

            jMenuView.add(jMenuToolbars);
        } else {
            jcbmiViewToolbar = new JCheckBoxMenuItem(Translatrix.getTranslationString("ViewToolbar"), false);
            jcbmiViewToolbar.setActionCommand(CMD_TOGGLE_TOOLBAR_SINGLE);
            jcbmiViewToolbar.addActionListener(this);

            jMenuView.add(jcbmiViewToolbar);
        }
    }
    jcbmiViewSource = new JCheckBoxMenuItem(Translatrix.getTranslationString("ViewSource"), false);
    jcbmiViewSource.setActionCommand(CMD_TOGGLE_SOURCE_VIEW);
    jcbmiViewSource.addActionListener(this);
    jMenuView.add(jcbmiViewSource);

    /* FONT Menu */
    jMenuFont = new JMenu(Translatrix.getTranslationString("Font"));
    htMenus.put(KEY_MENU_FONT, jMenuFont);
    JMenuItem jmiBold = new JMenuItem(actionFontBold);
    jmiBold.setText(Translatrix.getTranslationString("FontBold"));
    jmiBold.setAccelerator(KeyStroke.getKeyStroke('B', CTRLKEY, false));
    if (showMenuIcons) {
        jmiBold.setIcon(getEkitIcon("Bold"));
    }
    jMenuFont.add(jmiBold);
    JMenuItem jmiItalic = new JMenuItem(actionFontItalic);
    jmiItalic.setText(Translatrix.getTranslationString("FontItalic"));
    jmiItalic.setAccelerator(KeyStroke.getKeyStroke('I', CTRLKEY, false));
    if (showMenuIcons) {
        jmiItalic.setIcon(getEkitIcon("Italic"));
    }
    jMenuFont.add(jmiItalic);
    JMenuItem jmiUnderline = new JMenuItem(actionFontUnderline);
    jmiUnderline.setText(Translatrix.getTranslationString("FontUnderline"));
    jmiUnderline.setAccelerator(KeyStroke.getKeyStroke('U', CTRLKEY, false));
    if (showMenuIcons) {
        jmiUnderline.setIcon(getEkitIcon("Underline"));
    }
    jMenuFont.add(jmiUnderline);
    JMenuItem jmiStrike = new JMenuItem(actionFontStrike);
    jmiStrike.setText(Translatrix.getTranslationString("FontStrike"));
    if (showMenuIcons) {
        jmiStrike.setIcon(getEkitIcon("Strike"));
    }
    jMenuFont.add(jmiStrike);
    JMenuItem jmiSupscript = new JMenuItem(actionFontSuperscript);
    if (showMenuIcons) {
        jmiSupscript.setIcon(getEkitIcon("Super"));
    }
    jMenuFont.add(jmiSupscript);
    JMenuItem jmiSubscript = new JMenuItem(actionFontSubscript);
    if (showMenuIcons) {
        jmiSubscript.setIcon(getEkitIcon("Sub"));
    }
    jMenuFont.add(jmiSubscript);
    jMenuFont.addSeparator();
    jMenuFont.add(
            new JMenuItem(new FormatAction(this, Translatrix.getTranslationString("FormatBig"), HTML.Tag.BIG)));
    jMenuFont.add(new JMenuItem(
            new FormatAction(this, Translatrix.getTranslationString("FormatSmall"), HTML.Tag.SMALL)));
    JMenu jMenuFontSize = new JMenu(Translatrix.getTranslationString("FontSize"));
    jMenuFontSize.add(new JMenuItem(
            new StyledEditorKit.FontSizeAction(Translatrix.getTranslationString("FontSize1"), 8)));
    jMenuFontSize.add(new JMenuItem(
            new StyledEditorKit.FontSizeAction(Translatrix.getTranslationString("FontSize2"), 10)));
    jMenuFontSize.add(new JMenuItem(
            new StyledEditorKit.FontSizeAction(Translatrix.getTranslationString("FontSize3"), 12)));
    jMenuFontSize.add(new JMenuItem(
            new StyledEditorKit.FontSizeAction(Translatrix.getTranslationString("FontSize4"), 14)));
    jMenuFontSize.add(new JMenuItem(
            new StyledEditorKit.FontSizeAction(Translatrix.getTranslationString("FontSize5"), 18)));
    jMenuFontSize.add(new JMenuItem(
            new StyledEditorKit.FontSizeAction(Translatrix.getTranslationString("FontSize6"), 24)));
    jMenuFontSize.add(new JMenuItem(
            new StyledEditorKit.FontSizeAction(Translatrix.getTranslationString("FontSize7"), 32)));
    jMenuFont.add(jMenuFontSize);
    jMenuFont.addSeparator();
    JMenu jMenuFontSub = new JMenu(Translatrix.getTranslationString("Font"));
    JMenuItem jmiSelectFont = new JMenuItem(actionSelectFont);
    jmiSelectFont.setText(Translatrix.getTranslationString("FontSelect") + menuDialog);
    if (showMenuIcons) {
        jmiSelectFont.setIcon(getEkitIcon("FontFaces"));
    }
    jMenuFontSub.add(jmiSelectFont);
    JMenuItem jmiSerif = new JMenuItem((Action) actions.get("font-family-Serif"));
    jmiSerif.setText(Translatrix.getTranslationString("FontSerif"));
    jMenuFontSub.add(jmiSerif);
    JMenuItem jmiSansSerif = new JMenuItem((Action) actions.get("font-family-SansSerif"));
    jmiSansSerif.setText(Translatrix.getTranslationString("FontSansserif"));
    jMenuFontSub.add(jmiSansSerif);
    JMenuItem jmiMonospaced = new JMenuItem((Action) actions.get("font-family-Monospaced"));
    jmiMonospaced.setText(Translatrix.getTranslationString("FontMonospaced"));
    jMenuFontSub.add(jmiMonospaced);
    jMenuFont.add(jMenuFontSub);
    jMenuFont.addSeparator();
    JMenu jMenuFontColor = new JMenu(Translatrix.getTranslationString("Color"));
    Hashtable<String, String> customAttr = new Hashtable<String, String>();
    customAttr.put("color", "black");
    jMenuFontColor.add(new JMenuItem(new CustomAction(this,
            Translatrix.getTranslationString("CustomColor") + menuDialog, HTML.Tag.FONT, customAttr)));
    jMenuFontColor.add(new JMenuItem(new StyledEditorKit.ForegroundAction(
            Translatrix.getTranslationString("ColorAqua"), new Color(0, 255, 255))));
    jMenuFontColor.add(new JMenuItem(new StyledEditorKit.ForegroundAction(
            Translatrix.getTranslationString("ColorBlack"), new Color(0, 0, 0))));
    jMenuFontColor.add(new JMenuItem(new StyledEditorKit.ForegroundAction(
            Translatrix.getTranslationString("ColorBlue"), new Color(0, 0, 255))));
    jMenuFontColor.add(new JMenuItem(new StyledEditorKit.ForegroundAction(
            Translatrix.getTranslationString("ColorFuschia"), new Color(255, 0, 255))));
    jMenuFontColor.add(new JMenuItem(new StyledEditorKit.ForegroundAction(
            Translatrix.getTranslationString("ColorGray"), new Color(128, 128, 128))));
    jMenuFontColor.add(new JMenuItem(new StyledEditorKit.ForegroundAction(
            Translatrix.getTranslationString("ColorGreen"), new Color(0, 128, 0))));
    jMenuFontColor.add(new JMenuItem(new StyledEditorKit.ForegroundAction(
            Translatrix.getTranslationString("ColorLime"), new Color(0, 255, 0))));
    jMenuFontColor.add(new JMenuItem(new StyledEditorKit.ForegroundAction(
            Translatrix.getTranslationString("ColorMaroon"), new Color(128, 0, 0))));
    jMenuFontColor.add(new JMenuItem(new StyledEditorKit.ForegroundAction(
            Translatrix.getTranslationString("ColorNavy"), new Color(0, 0, 128))));
    jMenuFontColor.add(new JMenuItem(new StyledEditorKit.ForegroundAction(
            Translatrix.getTranslationString("ColorOlive"), new Color(128, 128, 0))));
    jMenuFontColor.add(new JMenuItem(new StyledEditorKit.ForegroundAction(
            Translatrix.getTranslationString("ColorPurple"), new Color(128, 0, 128))));
    jMenuFontColor.add(new JMenuItem(new StyledEditorKit.ForegroundAction(
            Translatrix.getTranslationString("ColorRed"), new Color(255, 0, 0))));
    jMenuFontColor.add(new JMenuItem(new StyledEditorKit.ForegroundAction(
            Translatrix.getTranslationString("ColorSilver"), new Color(192, 192, 192))));
    jMenuFontColor.add(new JMenuItem(new StyledEditorKit.ForegroundAction(
            Translatrix.getTranslationString("ColorTeal"), new Color(0, 128, 128))));
    jMenuFontColor.add(new JMenuItem(new StyledEditorKit.ForegroundAction(
            Translatrix.getTranslationString("ColorWhite"), new Color(255, 255, 255))));
    jMenuFontColor.add(new JMenuItem(new StyledEditorKit.ForegroundAction(
            Translatrix.getTranslationString("ColorYellow"), new Color(255, 255, 0))));
    jMenuFont.add(jMenuFontColor);

    /* FORMAT Menu */
    jMenuFormat = new JMenu(Translatrix.getTranslationString("Format"));
    htMenus.put(KEY_MENU_FORMAT, jMenuFormat);
    JMenuItem jmiClearFormat = new JMenuItem(actionClearFormat);
    jMenuFormat.add(jmiClearFormat);
    jMenuFormat.addSeparator();
    JMenu jMenuFormatAlign = new JMenu(Translatrix.getTranslationString("Align"));
    JMenuItem jmiAlignLeft = new JMenuItem(actionAlignLeft);
    if (showMenuIcons) {
        jmiAlignLeft.setIcon(getEkitIcon("AlignLeft"));
    }
    ;
    jMenuFormatAlign.add(jmiAlignLeft);
    JMenuItem jmiAlignCenter = new JMenuItem(actionAlignCenter);
    if (showMenuIcons) {
        jmiAlignCenter.setIcon(getEkitIcon("AlignCenter"));
    }
    ;
    jMenuFormatAlign.add(jmiAlignCenter);
    JMenuItem jmiAlignRight = new JMenuItem(actionAlignRight);
    if (showMenuIcons) {
        jmiAlignRight.setIcon(getEkitIcon("AlignRight"));
    }
    ;
    jMenuFormatAlign.add(jmiAlignRight);
    JMenuItem jmiAlignJustified = new JMenuItem(actionAlignJustified);
    if (showMenuIcons) {
        jmiAlignJustified.setIcon(getEkitIcon("AlignJustified"));
    }
    ;
    jMenuFormatAlign.add(jmiAlignJustified);
    jMenuFormat.add(jMenuFormatAlign);
    jMenuFormat.addSeparator();
    JMenu jMenuFormatHeading = new JMenu(Translatrix.getTranslationString("Heading"));
    jMenuFormatHeading.add(
            new JMenuItem(new FormatAction(this, Translatrix.getTranslationString("Heading1"), HTML.Tag.H1)));
    jMenuFormatHeading.add(
            new JMenuItem(new FormatAction(this, Translatrix.getTranslationString("Heading2"), HTML.Tag.H2)));
    jMenuFormatHeading.add(
            new JMenuItem(new FormatAction(this, Translatrix.getTranslationString("Heading3"), HTML.Tag.H3)));
    jMenuFormatHeading.add(
            new JMenuItem(new FormatAction(this, Translatrix.getTranslationString("Heading4"), HTML.Tag.H4)));
    jMenuFormatHeading.add(
            new JMenuItem(new FormatAction(this, Translatrix.getTranslationString("Heading5"), HTML.Tag.H5)));
    jMenuFormatHeading.add(
            new JMenuItem(new FormatAction(this, Translatrix.getTranslationString("Heading6"), HTML.Tag.H6)));
    jMenuFormat.add(jMenuFormatHeading);
    jMenuFormat.addSeparator();
    JMenuItem jmiUList = new JMenuItem(actionListUnordered);
    if (showMenuIcons) {
        jmiUList.setIcon(getEkitIcon("UList"));
    }
    jMenuFormat.add(jmiUList);
    JMenuItem jmiOList = new JMenuItem(actionListOrdered);
    if (showMenuIcons) {
        jmiOList.setIcon(getEkitIcon("OList"));
    }
    jMenuFormat.add(jmiOList);
    jMenuFormat.add(
            new JMenuItem(new FormatAction(this, Translatrix.getTranslationString("ListItem"), HTML.Tag.LI)));
    jMenuFormat.addSeparator();
    jMenuFormat.add(new JMenuItem(
            new FormatAction(this, Translatrix.getTranslationString("FormatBlockquote"), HTML.Tag.BLOCKQUOTE)));
    jMenuFormat.add(
            new JMenuItem(new FormatAction(this, Translatrix.getTranslationString("FormatPre"), HTML.Tag.PRE)));
    jMenuFormat.add(new JMenuItem(
            new FormatAction(this, Translatrix.getTranslationString("FormatStrong"), HTML.Tag.STRONG)));
    jMenuFormat.add(new JMenuItem(
            new FormatAction(this, Translatrix.getTranslationString("FormatEmphasis"), HTML.Tag.EM)));
    jMenuFormat.add(
            new JMenuItem(new FormatAction(this, Translatrix.getTranslationString("FormatTT"), HTML.Tag.TT)));
    jMenuFormat.add(new JMenuItem(
            new FormatAction(this, Translatrix.getTranslationString("FormatSpan"), HTML.Tag.SPAN)));

    /* INSERT Menu */
    jMenuInsert = new JMenu(Translatrix.getTranslationString("Insert"));
    htMenus.put(KEY_MENU_INSERT, jMenuInsert);
    JMenuItem jmiInsertAnchor = new JMenuItem(actionInsertAnchor);
    if (showMenuIcons) {
        jmiInsertAnchor.setIcon(getEkitIcon("Anchor"));
    }
    ;
    jMenuInsert.add(jmiInsertAnchor);
    JMenuItem jmiBreak = new JMenuItem(Translatrix.getTranslationString("InsertBreak"));
    jmiBreak.setActionCommand(CMD_INSERT_BREAK);
    jmiBreak.addActionListener(this);
    jmiBreak.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_ENTER, KeyEvent.SHIFT_MASK, false));
    jMenuInsert.add(jmiBreak);
    JMenuItem jmiNBSP = new JMenuItem(Translatrix.getTranslationString("InsertNBSP"));
    jmiNBSP.setActionCommand(CMD_INSERT_NBSP);
    jmiNBSP.addActionListener(this);
    jmiNBSP.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_SPACE, KeyEvent.SHIFT_MASK, false));
    jMenuInsert.add(jmiNBSP);
    JMenu jMenuUnicode = new JMenu(Translatrix.getTranslationString("InsertUnicodeCharacter"));
    if (showMenuIcons) {
        jMenuUnicode.setIcon(getEkitIcon("Unicode"));
    }
    ;
    JMenuItem jmiUnicodeAll = new JMenuItem(
            Translatrix.getTranslationString("InsertUnicodeCharacterAll") + menuDialog);
    if (showMenuIcons) {
        jmiUnicodeAll.setIcon(getEkitIcon("Unicode"));
    }
    ;
    jmiUnicodeAll.setActionCommand(CMD_INSERT_UNICODE_CHAR);
    jmiUnicodeAll.addActionListener(this);
    jMenuUnicode.add(jmiUnicodeAll);
    JMenuItem jmiUnicodeMath = new JMenuItem(
            Translatrix.getTranslationString("InsertUnicodeCharacterMath") + menuDialog);
    if (showMenuIcons) {
        jmiUnicodeMath.setIcon(getEkitIcon("Math"));
    }
    ;
    jmiUnicodeMath.setActionCommand(CMD_INSERT_UNICODE_MATH);
    jmiUnicodeMath.addActionListener(this);
    jMenuUnicode.add(jmiUnicodeMath);
    JMenuItem jmiUnicodeDraw = new JMenuItem(
            Translatrix.getTranslationString("InsertUnicodeCharacterDraw") + menuDialog);
    if (showMenuIcons) {
        jmiUnicodeDraw.setIcon(getEkitIcon("Draw"));
    }
    ;
    jmiUnicodeDraw.setActionCommand(CMD_INSERT_UNICODE_DRAW);
    jmiUnicodeDraw.addActionListener(this);
    jMenuUnicode.add(jmiUnicodeDraw);
    JMenuItem jmiUnicodeDing = new JMenuItem(
            Translatrix.getTranslationString("InsertUnicodeCharacterDing") + menuDialog);
    jmiUnicodeDing.setActionCommand(CMD_INSERT_UNICODE_DING);
    jmiUnicodeDing.addActionListener(this);
    jMenuUnicode.add(jmiUnicodeDing);
    JMenuItem jmiUnicodeSigs = new JMenuItem(
            Translatrix.getTranslationString("InsertUnicodeCharacterSigs") + menuDialog);
    jmiUnicodeSigs.setActionCommand(CMD_INSERT_UNICODE_SIGS);
    jmiUnicodeSigs.addActionListener(this);
    jMenuUnicode.add(jmiUnicodeSigs);
    JMenuItem jmiUnicodeSpec = new JMenuItem(
            Translatrix.getTranslationString("InsertUnicodeCharacterSpec") + menuDialog);
    jmiUnicodeSpec.setActionCommand(CMD_INSERT_UNICODE_SPEC);
    jmiUnicodeSpec.addActionListener(this);
    jMenuUnicode.add(jmiUnicodeSpec);
    jMenuInsert.add(jMenuUnicode);
    JMenuItem jmiHRule = new JMenuItem(Translatrix.getTranslationString("InsertHorizontalRule"));
    jmiHRule.setActionCommand(CMD_INSERT_HR);
    jmiHRule.addActionListener(this);
    jMenuInsert.add(jmiHRule);
    jMenuInsert.addSeparator();
    if (!isParentApplet) {
        JMenuItem jmiImageLocal = new JMenuItem(
                Translatrix.getTranslationString("InsertLocalImage") + menuDialog);
        jmiImageLocal.setActionCommand(CMD_INSERT_IMAGE_LOCAL);
        jmiImageLocal.addActionListener(this);
        jMenuInsert.add(jmiImageLocal);
    }
    JMenuItem jmiImageURL = new JMenuItem(Translatrix.getTranslationString("InsertURLImage") + menuDialog);
    jmiImageURL.setActionCommand(CMD_INSERT_IMAGE_URL);
    jmiImageURL.addActionListener(this);
    jMenuInsert.add(jmiImageURL);

    /* TABLE Menu */
    jMenuTable = new JMenu(Translatrix.getTranslationString("Table"));
    htMenus.put(KEY_MENU_TABLE, jMenuTable);
    JMenuItem jmiTable = new JMenuItem(actionTableInsert);
    if (!showMenuIcons) {
        jmiTable.setIcon(null);
    }
    jMenuTable.add(jmiTable);
    jMenuTable.addSeparator();
    Action actionTableEdit = new CommandAction(Translatrix.getTranslationString("TableEdit") + menuDialog,
            getEkitIcon("TableEdit"), CMD_TABLE_EDIT, this);
    JMenuItem jmiEditTable = new JMenuItem(actionTableEdit);
    if (!showMenuIcons) {
        jmiEditTable.setIcon(null);
    }
    jMenuTable.add(jmiEditTable);
    Action actionCellEdit = new CommandAction(Translatrix.getTranslationString("TableCellEdit") + menuDialog,
            getEkitIcon("CellEdit"), CMD_TABLE_CELL_EDIT, this);
    JMenuItem jmiEditCell = new JMenuItem(actionCellEdit);
    if (!showMenuIcons) {
        jmiEditCell.setIcon(null);
    }
    jmiEditCell.setActionCommand(CMD_TABLE_CELL_EDIT);
    jmiEditCell.addActionListener(this);
    jMenuTable.add(jmiEditCell);
    jMenuTable.addSeparator();
    JMenuItem jmiTableRow = new JMenuItem(actionTableRow);
    if (!showMenuIcons) {
        jmiTableRow.setIcon(null);
    }
    jMenuTable.add(jmiTableRow);
    JMenuItem jmiTableCol = new JMenuItem(actionTableCol);
    if (!showMenuIcons) {
        jmiTableCol.setIcon(null);
    }
    jMenuTable.add(jmiTableCol);
    jMenuTable.addSeparator();
    JMenuItem jmiTableRowDel = new JMenuItem(actionTableRowDel);
    if (!showMenuIcons) {
        jmiTableRowDel.setIcon(null);
    }
    jMenuTable.add(jmiTableRowDel);
    JMenuItem jmiTableColDel = new JMenuItem(actionTableColDel);
    if (!showMenuIcons) {
        jmiTableColDel.setIcon(null);
    }
    jMenuTable.add(jmiTableColDel);

    /* FORMS Menu */
    jMenuForms = new JMenu(Translatrix.getTranslationString("Forms"));
    htMenus.put(KEY_MENU_FORMS, jMenuForms);
    JMenuItem jmiFormInsertForm = new JMenuItem(Translatrix.getTranslationString("FormInsertForm"));
    jmiFormInsertForm.setActionCommand(CMD_FORM_INSERT);
    jmiFormInsertForm.addActionListener(this);
    jMenuForms.add(jmiFormInsertForm);
    jMenuForms.addSeparator();
    JMenuItem jmiFormTextfield = new JMenuItem(Translatrix.getTranslationString("FormTextfield"));
    jmiFormTextfield.setActionCommand(CMD_FORM_TEXTFIELD);
    jmiFormTextfield.addActionListener(this);
    jMenuForms.add(jmiFormTextfield);
    JMenuItem jmiFormTextarea = new JMenuItem(Translatrix.getTranslationString("FormTextarea"));
    jmiFormTextarea.setActionCommand(CMD_FORM_TEXTAREA);
    jmiFormTextarea.addActionListener(this);
    jMenuForms.add(jmiFormTextarea);
    JMenuItem jmiFormCheckbox = new JMenuItem(Translatrix.getTranslationString("FormCheckbox"));
    jmiFormCheckbox.setActionCommand(CMD_FORM_CHECKBOX);
    jmiFormCheckbox.addActionListener(this);
    jMenuForms.add(jmiFormCheckbox);
    JMenuItem jmiFormRadio = new JMenuItem(Translatrix.getTranslationString("FormRadio"));
    jmiFormRadio.setActionCommand(CMD_FORM_RADIO);
    jmiFormRadio.addActionListener(this);
    jMenuForms.add(jmiFormRadio);
    JMenuItem jmiFormPassword = new JMenuItem(Translatrix.getTranslationString("FormPassword"));
    jmiFormPassword.setActionCommand(CMD_FORM_PASSWORD);
    jmiFormPassword.addActionListener(this);
    jMenuForms.add(jmiFormPassword);
    jMenuForms.addSeparator();
    JMenuItem jmiFormButton = new JMenuItem(Translatrix.getTranslationString("FormButton"));
    jmiFormButton.setActionCommand(CMD_FORM_BUTTON);
    jmiFormButton.addActionListener(this);
    jMenuForms.add(jmiFormButton);
    JMenuItem jmiFormButtonSubmit = new JMenuItem(Translatrix.getTranslationString("FormButtonSubmit"));
    jmiFormButtonSubmit.setActionCommand(CMD_FORM_SUBMIT);
    jmiFormButtonSubmit.addActionListener(this);
    jMenuForms.add(jmiFormButtonSubmit);
    JMenuItem jmiFormButtonReset = new JMenuItem(Translatrix.getTranslationString("FormButtonReset"));
    jmiFormButtonReset.setActionCommand(CMD_FORM_RESET);
    jmiFormButtonReset.addActionListener(this);
    jMenuForms.add(jmiFormButtonReset);

    /* TOOLS Menu */
    if (hasSpellChecker) {
        jMenuTools = new JMenu(Translatrix.getTranslationString("Tools"));
        htMenus.put(KEY_MENU_TOOLS, jMenuTools);
        JMenuItem jmiSpellcheck = new JMenuItem(Translatrix.getTranslationString("ToolSpellcheck"));
        jmiSpellcheck.setActionCommand(CMD_SPELLCHECK);
        jmiSpellcheck.addActionListener(this);
        jMenuTools.add(jmiSpellcheck);
    }

    /* SEARCH Menu */
    jMenuSearch = new JMenu(Translatrix.getTranslationString("Search"));
    htMenus.put(KEY_MENU_SEARCH, jMenuSearch);
    JMenuItem jmiFind = new JMenuItem(Translatrix.getTranslationString("SearchFind"));
    if (showMenuIcons) {
        jmiFind.setIcon(getEkitIcon("Find"));
    }
    ;
    jmiFind.setActionCommand(CMD_SEARCH_FIND);
    jmiFind.addActionListener(this);
    jmiFind.setAccelerator(KeyStroke.getKeyStroke('F', CTRLKEY, false));
    jMenuSearch.add(jmiFind);
    JMenuItem jmiFindAgain = new JMenuItem(Translatrix.getTranslationString("SearchFindAgain"));
    if (showMenuIcons) {
        jmiFindAgain.setIcon(getEkitIcon("FindAgain"));
    }
    ;
    jmiFindAgain.setActionCommand(CMD_SEARCH_FIND_AGAIN);
    jmiFindAgain.addActionListener(this);
    jmiFindAgain.setAccelerator(KeyStroke.getKeyStroke('G', CTRLKEY, false));
    jMenuSearch.add(jmiFindAgain);
    JMenuItem jmiReplace = new JMenuItem(Translatrix.getTranslationString("SearchReplace"));
    if (showMenuIcons) {
        jmiReplace.setIcon(getEkitIcon("Replace"));
    }
    ;
    jmiReplace.setActionCommand(CMD_SEARCH_REPLACE);
    jmiReplace.addActionListener(this);
    jmiReplace.setAccelerator(KeyStroke.getKeyStroke('R', CTRLKEY, false));
    jMenuSearch.add(jmiReplace);

    /* HELP Menu */
    jMenuHelp = new JMenu(Translatrix.getTranslationString("Help"));
    htMenus.put(KEY_MENU_HELP, jMenuHelp);
    JMenuItem jmiAbout = new JMenuItem(Translatrix.getTranslationString("About"));
    jmiAbout.setActionCommand(CMD_HELP_ABOUT);
    jmiAbout.addActionListener(this);
    jMenuHelp.add(jmiAbout);

    /* DEBUG Menu */
    jMenuDebug = new JMenu(Translatrix.getTranslationString("Debug"));
    htMenus.put(KEY_MENU_DEBUG, jMenuDebug);
    JMenuItem jmiDesc = new JMenuItem(Translatrix.getTranslationString("DescribeDoc"));
    jmiDesc.setActionCommand(CMD_DEBUG_DESCRIBE_DOC);
    jmiDesc.addActionListener(this);
    jMenuDebug.add(jmiDesc);
    JMenuItem jmiDescCSS = new JMenuItem(Translatrix.getTranslationString("DescribeCSS"));
    jmiDescCSS.setActionCommand(CMD_DEBUG_DESCRIBE_CSS);
    jmiDescCSS.addActionListener(this);
    jMenuDebug.add(jmiDescCSS);
    JMenuItem jmiTag = new JMenuItem(Translatrix.getTranslationString("WhatTags"));
    jmiTag.setActionCommand(CMD_DEBUG_CURRENT_TAGS);
    jmiTag.addActionListener(this);
    jMenuDebug.add(jmiTag);

    /* Create menubar and add menus */
    jMenuBar = new JMenuBar();
    jMenuBar.add(jMenuFile);
    jMenuBar.add(jMenuEdit);
    jMenuBar.add(jMenuView);
    jMenuBar.add(jMenuFont);
    jMenuBar.add(jMenuFormat);
    jMenuBar.add(jMenuSearch);
    jMenuBar.add(jMenuInsert);
    jMenuBar.add(jMenuTable);
    jMenuBar.add(jMenuForms);
    if (jMenuTools != null) {
        jMenuBar.add(jMenuTools);
    }
    jMenuBar.add(jMenuHelp);
    if (debugMode) {
        jMenuBar.add(jMenuDebug);
    }

    /* Create toolbar tool objects */
    jbtnNewHTML = new JButtonNoFocus(getEkitIcon("New"));
    jbtnNewHTML.setToolTipText(Translatrix.getTranslationString("NewDocument"));
    jbtnNewHTML.setActionCommand(CMD_DOC_NEW);
    jbtnNewHTML.addActionListener(this);
    htTools.put(KEY_TOOL_NEW, jbtnNewHTML);
    jbtnNewStyledHTML = new JButtonNoFocus(getEkitIcon("NewStyled"));
    jbtnNewStyledHTML.setToolTipText(Translatrix.getTranslationString("NewStyledDocument"));
    jbtnNewStyledHTML.setActionCommand(CMD_DOC_NEW_STYLED);
    jbtnNewStyledHTML.addActionListener(this);
    htTools.put(KEY_TOOL_NEWSTYLED, jbtnNewStyledHTML);
    jbtnOpenHTML = new JButtonNoFocus(getEkitIcon("Open"));
    jbtnOpenHTML.setToolTipText(Translatrix.getTranslationString("OpenDocument"));
    jbtnOpenHTML.setActionCommand(CMD_DOC_OPEN_HTML);
    jbtnOpenHTML.addActionListener(this);
    htTools.put(KEY_TOOL_OPEN, jbtnOpenHTML);
    jbtnSaveHTML = new JButtonNoFocus(getEkitIcon("Save"));
    jbtnSaveHTML.setToolTipText(Translatrix.getTranslationString("SaveDocument"));
    jbtnSaveHTML.setActionCommand(CMD_DOC_SAVE_AS);
    jbtnSaveHTML.addActionListener(this);
    htTools.put(KEY_TOOL_SAVE, jbtnSaveHTML);
    jbtnPrint = new JButtonNoFocus(getEkitIcon("Print"));
    jbtnPrint.setToolTipText(Translatrix.getTranslationString("PrintDocument"));
    jbtnPrint.setActionCommand(CMD_DOC_PRINT);
    jbtnPrint.addActionListener(this);
    htTools.put(KEY_TOOL_PRINT, jbtnPrint);
    // jbtnCut = new JButtonNoFocus(new DefaultEditorKit.CutAction());
    jbtnCut = new JButtonNoFocus();
    jbtnCut.setActionCommand(CMD_CLIP_CUT);
    jbtnCut.addActionListener(new java.awt.event.ActionListener() {
        public void actionPerformed(java.awt.event.ActionEvent evt) {
            EkitCore.this.actionPerformed(evt);
        }
    });
    jbtnCut.setIcon(getEkitIcon("Cut"));
    jbtnCut.setText(null);
    jbtnCut.setToolTipText(Translatrix.getTranslationString("Cut"));
    htTools.put(KEY_TOOL_CUT, jbtnCut);
    // jbtnCopy = new JButtonNoFocus(new DefaultEditorKit.CopyAction());
    jbtnCopy = new JButtonNoFocus();
    jbtnCopy.setActionCommand(CMD_CLIP_COPY);
    jbtnCopy.addActionListener(new java.awt.event.ActionListener() {
        public void actionPerformed(java.awt.event.ActionEvent evt) {
            EkitCore.this.actionPerformed(evt);
        }
    });
    jbtnCopy.setIcon(getEkitIcon("Copy"));
    jbtnCopy.setText(null);
    jbtnCopy.setToolTipText(Translatrix.getTranslationString("Copy"));
    htTools.put(KEY_TOOL_COPY, jbtnCopy);
    // jbtnPaste = new JButtonNoFocus(new DefaultEditorKit.PasteAction());
    jbtnPaste = new JButtonNoFocus();
    jbtnPaste.setActionCommand(CMD_CLIP_PASTE);
    jbtnPaste.addActionListener(new java.awt.event.ActionListener() {
        public void actionPerformed(java.awt.event.ActionEvent evt) {
            EkitCore.this.actionPerformed(evt);
        }
    });
    jbtnPaste.setIcon(getEkitIcon("Paste"));
    jbtnPaste.setText(null);
    jbtnPaste.setToolTipText(Translatrix.getTranslationString("Paste"));
    htTools.put(KEY_TOOL_PASTE, jbtnPaste);
    jbtnPasteX = new JButtonNoFocus();
    jbtnPasteX.setActionCommand(CMD_CLIP_PASTE_PLAIN);
    jbtnPasteX.addActionListener(new java.awt.event.ActionListener() {
        public void actionPerformed(java.awt.event.ActionEvent evt) {
            EkitCore.this.actionPerformed(evt);
        }
    });
    jbtnPasteX.setIcon(getEkitIcon("PasteUnformatted"));
    jbtnPasteX.setText(null);
    jbtnPasteX.setToolTipText(Translatrix.getTranslationString("PasteUnformatted"));
    htTools.put(KEY_TOOL_PASTEX, jbtnPasteX);
    jbtnUndo = new JButtonNoFocus(undoAction);
    jbtnUndo.setIcon(getEkitIcon("Undo"));
    jbtnUndo.setText(null);
    jbtnUndo.setToolTipText(Translatrix.getTranslationString("Undo"));
    htTools.put(KEY_TOOL_UNDO, jbtnUndo);
    jbtnRedo = new JButtonNoFocus(redoAction);
    jbtnRedo.setIcon(getEkitIcon("Redo"));
    jbtnRedo.setText(null);
    jbtnRedo.setToolTipText(Translatrix.getTranslationString("Redo"));
    htTools.put(KEY_TOOL_REDO, jbtnRedo);
    jbtnBold = new JButtonNoFocus(actionFontBold);
    jbtnBold.setIcon(getEkitIcon("Bold"));
    jbtnBold.setText(null);
    jbtnBold.setToolTipText(Translatrix.getTranslationString("FontBold"));
    htTools.put(KEY_TOOL_BOLD, jbtnBold);
    jbtnItalic = new JButtonNoFocus(actionFontItalic);
    jbtnItalic.setIcon(getEkitIcon("Italic"));
    jbtnItalic.setText(null);
    jbtnItalic.setToolTipText(Translatrix.getTranslationString("FontItalic"));
    htTools.put(KEY_TOOL_ITALIC, jbtnItalic);
    jbtnUnderline = new JButtonNoFocus(actionFontUnderline);
    jbtnUnderline.setIcon(getEkitIcon("Underline"));
    jbtnUnderline.setText(null);
    jbtnUnderline.setToolTipText(Translatrix.getTranslationString("FontUnderline"));
    htTools.put(KEY_TOOL_UNDERLINE, jbtnUnderline);
    jbtnStrike = new JButtonNoFocus(actionFontStrike);
    jbtnStrike.setIcon(getEkitIcon("Strike"));
    jbtnStrike.setText(null);
    jbtnStrike.setToolTipText(Translatrix.getTranslationString("FontStrike"));
    htTools.put(KEY_TOOL_STRIKE, jbtnStrike);
    jbtnSuperscript = new JButtonNoFocus(actionFontSuperscript);
    jbtnSuperscript.setIcon(getEkitIcon("Super"));
    jbtnSuperscript.setText(null);
    jbtnSuperscript.setToolTipText(Translatrix.getTranslationString("FontSuperscript"));
    htTools.put(KEY_TOOL_SUPER, jbtnSuperscript);
    jbtnSubscript = new JButtonNoFocus(actionFontSubscript);
    jbtnSubscript.setIcon(getEkitIcon("Sub"));
    jbtnSubscript.setText(null);
    jbtnSubscript.setToolTipText(Translatrix.getTranslationString("FontSubscript"));
    htTools.put(KEY_TOOL_SUB, jbtnSubscript);
    jbtnUList = new JButtonNoFocus(actionListUnordered);
    jbtnUList.setIcon(getEkitIcon("UList"));
    jbtnUList.setText(null);
    jbtnUList.setToolTipText(Translatrix.getTranslationString("ListUnordered"));
    htTools.put(KEY_TOOL_ULIST, jbtnUList);
    jbtnOList = new JButtonNoFocus(actionListOrdered);
    jbtnOList.setIcon(getEkitIcon("OList"));
    jbtnOList.setText(null);
    jbtnOList.setToolTipText(Translatrix.getTranslationString("ListOrdered"));
    htTools.put(KEY_TOOL_OLIST, jbtnOList);
    jbtnAlignLeft = new JButtonNoFocus(actionAlignLeft);
    jbtnAlignLeft.setIcon(getEkitIcon("AlignLeft"));
    jbtnAlignLeft.setText(null);
    jbtnAlignLeft.setToolTipText(Translatrix.getTranslationString("AlignLeft"));
    htTools.put(KEY_TOOL_ALIGNL, jbtnAlignLeft);
    jbtnAlignCenter = new JButtonNoFocus(actionAlignCenter);
    jbtnAlignCenter.setIcon(getEkitIcon("AlignCenter"));
    jbtnAlignCenter.setText(null);
    jbtnAlignCenter.setToolTipText(Translatrix.getTranslationString("AlignCenter"));
    htTools.put(KEY_TOOL_ALIGNC, jbtnAlignCenter);
    jbtnAlignRight = new JButtonNoFocus(actionAlignRight);
    jbtnAlignRight.setIcon(getEkitIcon("AlignRight"));
    jbtnAlignRight.setText(null);
    jbtnAlignRight.setToolTipText(Translatrix.getTranslationString("AlignRight"));
    htTools.put(KEY_TOOL_ALIGNR, jbtnAlignRight);
    jbtnAlignJustified = new JButtonNoFocus(actionAlignJustified);
    jbtnAlignJustified.setIcon(getEkitIcon("AlignJustified"));
    jbtnAlignJustified.setText(null);
    jbtnAlignJustified.setToolTipText(Translatrix.getTranslationString("AlignJustified"));
    htTools.put(KEY_TOOL_ALIGNJ, jbtnAlignJustified);
    jbtnUnicode = new JButtonNoFocus();
    jbtnUnicode.setActionCommand(CMD_INSERT_UNICODE_CHAR);
    jbtnUnicode.addActionListener(this);
    jbtnUnicode.setIcon(getEkitIcon("Unicode"));
    jbtnUnicode.setText(null);
    jbtnUnicode.setToolTipText(Translatrix.getTranslationString("ToolUnicode"));
    htTools.put(KEY_TOOL_UNICODE, jbtnUnicode);
    jbtnUnicodeMath = new JButtonNoFocus();
    jbtnUnicodeMath.setActionCommand(CMD_INSERT_UNICODE_MATH);
    jbtnUnicodeMath.addActionListener(this);
    jbtnUnicodeMath.setIcon(getEkitIcon("Math"));
    jbtnUnicodeMath.setText(null);
    jbtnUnicodeMath.setToolTipText(Translatrix.getTranslationString("ToolUnicodeMath"));
    htTools.put(KEY_TOOL_UNIMATH, jbtnUnicodeMath);
    jbtnFind = new JButtonNoFocus();
    jbtnFind.setActionCommand(CMD_SEARCH_FIND);
    jbtnFind.addActionListener(this);
    jbtnFind.setIcon(getEkitIcon("Find"));
    jbtnFind.setText(null);
    jbtnFind.setToolTipText(Translatrix.getTranslationString("SearchFind"));
    htTools.put(KEY_TOOL_FIND, jbtnFind);
    jbtnAnchor = new JButtonNoFocus(actionInsertAnchor);
    jbtnAnchor.setIcon(getEkitIcon("Anchor"));
    jbtnAnchor.setText(null);
    jbtnAnchor.setToolTipText(Translatrix.getTranslationString("ToolAnchor"));
    htTools.put(KEY_TOOL_ANCHOR, jbtnAnchor);
    jtbtnViewSource = new JToggleButtonNoFocus(getEkitIcon("Source"));
    jtbtnViewSource.setText(null);
    jtbtnViewSource.setToolTipText(Translatrix.getTranslationString("ViewSource"));
    jtbtnViewSource.setActionCommand(CMD_TOGGLE_SOURCE_VIEW);
    jtbtnViewSource.addActionListener(this);
    jtbtnViewSource.setPreferredSize(jbtnAnchor.getPreferredSize());
    jtbtnViewSource.setMinimumSize(jbtnAnchor.getMinimumSize());
    jtbtnViewSource.setMaximumSize(jbtnAnchor.getMaximumSize());
    htTools.put(KEY_TOOL_SOURCE, jtbtnViewSource);
    jcmbStyleSelector = new JComboBoxNoFocus();
    jcmbStyleSelector.setToolTipText(Translatrix.getTranslationString("PickCSSStyle"));
    jcmbStyleSelector.setAction(new StylesAction(jcmbStyleSelector));
    htTools.put(KEY_TOOL_STYLES, jcmbStyleSelector);
    String[] fonts = java.awt.GraphicsEnvironment.getLocalGraphicsEnvironment().getAvailableFontFamilyNames();
    Vector<String> vcFontnames = new Vector<String>(fonts.length + 1);
    vcFontnames.add(Translatrix.getTranslationString("SelectorToolFontsDefaultFont"));
    for (String fontname : fonts) {
        vcFontnames.add(fontname);
    }
    Collections.sort(vcFontnames);
    jcmbFontSelector = new JComboBoxNoFocus(vcFontnames);
    jcmbFontSelector.setAction(new SetFontFamilyAction(this, "[EKITFONTSELECTOR]"));
    htTools.put(KEY_TOOL_FONTS, jcmbFontSelector);
    jbtnInsertTable = new JButtonNoFocus();
    jbtnInsertTable.setActionCommand(CMD_TABLE_INSERT);
    jbtnInsertTable.addActionListener(this);
    jbtnInsertTable.setIcon(getEkitIcon("TableCreate"));
    jbtnInsertTable.setText(null);
    jbtnInsertTable.setToolTipText(Translatrix.getTranslationString("InsertTable"));
    htTools.put(KEY_TOOL_INSTABLE, jbtnInsertTable);
    jbtnEditTable = new JButtonNoFocus();
    jbtnEditTable.setActionCommand(CMD_TABLE_EDIT);
    jbtnEditTable.addActionListener(this);
    jbtnEditTable.setIcon(getEkitIcon("TableEdit"));
    jbtnEditTable.setText(null);
    jbtnEditTable.setToolTipText(Translatrix.getTranslationString("TableEdit"));
    htTools.put(KEY_TOOL_EDITTABLE, jbtnEditTable);
    jbtnEditCell = new JButtonNoFocus();
    jbtnEditCell.setActionCommand(CMD_TABLE_CELL_EDIT);
    jbtnEditCell.addActionListener(this);
    jbtnEditCell.setIcon(getEkitIcon("CellEdit"));
    jbtnEditCell.setText(null);
    jbtnEditCell.setToolTipText(Translatrix.getTranslationString("TableCellEdit"));
    htTools.put(KEY_TOOL_EDITCELL, jbtnEditCell);
    jbtnInsertRow = new JButtonNoFocus();
    jbtnInsertRow.setActionCommand(CMD_TABLE_ROW_INSERT);
    jbtnInsertRow.addActionListener(this);
    jbtnInsertRow.setIcon(getEkitIcon("InsertRow"));
    jbtnInsertRow.setText(null);
    jbtnInsertRow.setToolTipText(Translatrix.getTranslationString("InsertTableRow"));
    htTools.put(KEY_TOOL_INSERTROW, jbtnInsertRow);
    jbtnInsertColumn = new JButtonNoFocus();
    jbtnInsertColumn.setActionCommand(CMD_TABLE_COLUMN_INSERT);
    jbtnInsertColumn.addActionListener(this);
    jbtnInsertColumn.setIcon(getEkitIcon("InsertColumn"));
    jbtnInsertColumn.setText(null);
    jbtnInsertColumn.setToolTipText(Translatrix.getTranslationString("InsertTableColumn"));
    htTools.put(KEY_TOOL_INSERTCOL, jbtnInsertColumn);
    jbtnDeleteRow = new JButtonNoFocus();
    jbtnDeleteRow.setActionCommand(CMD_TABLE_ROW_DELETE);
    jbtnDeleteRow.addActionListener(this);
    jbtnDeleteRow.setIcon(getEkitIcon("DeleteRow"));
    jbtnDeleteRow.setText(null);
    jbtnDeleteRow.setToolTipText(Translatrix.getTranslationString("DeleteTableRow"));
    htTools.put(KEY_TOOL_DELETEROW, jbtnDeleteRow);
    jbtnDeleteColumn = new JButtonNoFocus();
    jbtnDeleteColumn.setActionCommand(CMD_TABLE_COLUMN_DELETE);
    jbtnDeleteColumn.addActionListener(this);
    jbtnDeleteColumn.setIcon(getEkitIcon("DeleteColumn"));
    jbtnDeleteColumn.setText(null);
    jbtnDeleteColumn.setToolTipText(Translatrix.getTranslationString("DeleteTableColumn"));
    htTools.put(KEY_TOOL_DELETECOL, jbtnDeleteColumn);
    jbtnMaximize = new JButtonNoFocus();
    jbtnMaximize.setActionCommand(CMD_MAXIMIZE);
    jbtnMaximize.addActionListener(this);
    jbtnMaximize.setIcon(getEkitIcon("Maximize"));
    jbtnMaximize.setText(null);
    jbtnMaximize.setToolTipText(Translatrix.getTranslationString("Maximize"));
    htTools.put(KEY_TOOL_MAXIMIZE, jbtnMaximize);
    jbtnClearFormat = new JButtonNoFocus(actionClearFormat);
    jbtnClearFormat.setIcon(getEkitIcon("ClearFormat"));
    jbtnClearFormat.setText(null);
    jbtnClearFormat.setToolTipText(Translatrix.getTranslationString("ClearFormat"));
    htTools.put(KEY_TOOL_CLEAR_FORMAT, jbtnClearFormat);
    jbtnSpecialChar = new JButtonNoFocus(actionSpecialChar);
    jbtnSpecialChar.setIcon(getEkitIcon("SpecialChar"));
    jbtnSpecialChar.setText(null);
    jbtnSpecialChar.setToolTipText(Translatrix.getTranslationString("SpecialChar"));
    htTools.put(KEY_TOOL_SPECIAL_CHAR, jbtnSpecialChar);
    jbtnTableButtonMenu = new JButtonNoFocus(actionTableButtonMenu);
    jbtnTableButtonMenu.setText(null);
    htTools.put(KEY_TOOL_TABLE_MENU, jbtnTableButtonMenu);

    /* Create the toolbar */
    if (multiBar) {
        jToolBarMain = new JToolBar(JToolBar.HORIZONTAL);
        jToolBarMain.setFloatable(false);
        jToolBarFormat = new JToolBar(JToolBar.HORIZONTAL);
        jToolBarFormat.setFloatable(false);
        jToolBarStyles = new JToolBar(JToolBar.HORIZONTAL);
        jToolBarStyles.setFloatable(false);

        initializeMultiToolbars(toolbarSeq);

        // fix the weird size preference of toggle buttons
        jtbtnViewSource.setPreferredSize(jbtnAnchor.getPreferredSize());
        jtbtnViewSource.setMinimumSize(jbtnAnchor.getMinimumSize());
        jtbtnViewSource.setMaximumSize(jbtnAnchor.getMaximumSize());
    } else if (includeToolBar) {
        jToolBar = new JToolBar(JToolBar.HORIZONTAL);
        jToolBar.setFloatable(false);

        initializeSingleToolbar(toolbarSeq);

        // fix the weird size preference of toggle buttons
        jtbtnViewSource.setPreferredSize(jbtnAnchor.getPreferredSize());
        jtbtnViewSource.setMinimumSize(jbtnAnchor.getMinimumSize());
        jtbtnViewSource.setMaximumSize(jbtnAnchor.getMaximumSize());
    }

    /* Create the scroll area for the text pane */
    jspViewport = new JScrollPane(jtpMain);
    jspViewport.setVerticalScrollBarPolicy(JScrollPane.VERTICAL_SCROLLBAR_AS_NEEDED);
    jspViewport.setPreferredSize(new Dimension(400, 400));
    jspViewport.setMinimumSize(new Dimension(32, 32));

    /* Create the scroll area for the source viewer */
    jspSource = new JScrollPane(jtpSource);
    jspSource.setPreferredSize(new Dimension(400, 100));
    jspSource.setMinimumSize(new Dimension(32, 32));

    displayPanel = new JPanel();
    displayPanel.setLayout(new CardLayout());
    displayPanel.add(jspViewport, PANEL_NAME_MAIN);
    displayPanel.add(jspSource, PANEL_NAME_SOURCE);
    if (showViewSource) {
        toggleSourceWindow();
    }

    registerDocumentStyles();

    tableCtl = new TableController(this);

    htmlDoc.setInlineEdit(inlineEdit);

    htmlDoc.addFilter(new HTMLTableDocumentFilter());

    // Inicializa documento pelos behaviors
    for (HTMLDocumentBehavior b : this.behaviors) {
        b.initializeDocument(jtpMain);
    }
    htmlDoc.getBehaviors().addAll(this.behaviors);

    /* Add the components to the app */
    this.setLayout(new BorderLayout());
    this.add(displayPanel, BorderLayout.CENTER);
}

From source file:org.alex73.skarynka.scan.ui.scan.ScanDialogController.java

void addAction(int keyCode, Action action) {
    InputMap im = dialog.getRootPane().getInputMap(JComponent.WHEN_ANCESTOR_OF_FOCUSED_COMPONENT);
    im.put(KeyStroke.getKeyStroke(keyCode, 0), action.getValue(Action.NAME));
    dialog.getRootPane().getActionMap().put(action.getValue(Action.NAME), action);
}

From source file:org.apache.jmeter.gui.action.SearchTreeDialog.java

@Override
protected JRootPane createRootPane() {
    JRootPane rootPane = new JRootPane();
    // Hide Window on ESC
    Action escapeAction = new AbstractAction("ESCAPE") {

        private static final long serialVersionUID = -6543764044868772971L;

        @Override/*from  w  ww  .j a  v  a  2s  .c o m*/
        public void actionPerformed(ActionEvent actionEvent) {
            setVisible(false);
        }
    };
    // Do search on Enter
    Action enterAction = new AbstractAction("ENTER") {

        private static final long serialVersionUID = -3661361497864527363L;

        @Override
        public void actionPerformed(ActionEvent actionEvent) {
            doSearch(actionEvent);
        }
    };
    ActionMap actionMap = rootPane.getActionMap();
    actionMap.put(escapeAction.getValue(Action.NAME), escapeAction);
    actionMap.put(enterAction.getValue(Action.NAME), enterAction);
    InputMap inputMap = rootPane.getInputMap(JComponent.WHEN_IN_FOCUSED_WINDOW);
    inputMap.put(KeyStrokes.ESC, escapeAction.getValue(Action.NAME));
    inputMap.put(KeyStrokes.ENTER, enterAction.getValue(Action.NAME));

    return rootPane;
}

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.
 *//*from   ww  w.j a  va 2  s  .  c  o 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();

}

From source file:org.bitbucket.mlopatkin.android.logviewer.widgets.UiHelper.java

public static void addDoubleClickAction(JComponent component, final Action action) {
    component.addMouseListener(new MouseAdapter() {
        @Override//from   www.ja  v a2s.c o m
        public void mouseClicked(MouseEvent e) {
            if (e.getClickCount() == DOUBLE_CLICK_COUNT && e.getButton() == MouseEvent.BUTTON1) {
                action.actionPerformed(new ActionEvent(e.getSource(), ActionEvent.ACTION_PERFORMED,
                        (String) action.getValue(Action.ACTION_COMMAND_KEY), e.getWhen(), e.getModifiers()));
            }
        }
    });
}

From source file:org.executequery.gui.editor.QueryEditorTextPanel.java

public void deregisterAutoCompletePopup() {

    if (autoCompletePopup != null) {

        Action autoCompletePopupAction = autoCompletePopup.getPopupAction();

        queryPane.getActionMap().remove(AUTO_COMPLETE_POPUP_ACTION_KEY);
        queryPane.getInputMap().remove((KeyStroke) autoCompletePopupAction.getValue(Action.ACCELERATOR_KEY));

        autoCompletePopup = null;//from ww  w. j  a  v  a 2s.  co m
    }

}

From source file:org.executequery.gui.editor.QueryEditorTextPanel.java

public void registerAutoCompletePopup(AutoCompletePopupProvider autoCompletePopup) {

    this.autoCompletePopup = autoCompletePopup;

    Action autoCompletePopupAction = autoCompletePopup.getPopupAction();

    queryPane.getActionMap().put(AUTO_COMPLETE_POPUP_ACTION_KEY, autoCompletePopupAction);
    queryPane.getInputMap().put((KeyStroke) autoCompletePopupAction.getValue(Action.ACCELERATOR_KEY),
            AUTO_COMPLETE_POPUP_ACTION_KEY);
}

From source file:org.kepler.gui.MenuMapper.java

public static JMenuItem addMenuFor(String key, Action action, JComponent topLvlContainer,
        Map<String, JMenuItem> keplerMenuMap) {

    if (topLvlContainer == null) {
        if (isDebugging) {
            log.debug("NULL container received (eg JMenuBar) - returning NULL");
        }/*from w  w w.  ja  v a  2  s.  c  o  m*/
        return null;
    }
    if (key == null) {
        if (isDebugging) {
            log.debug("NULL key received");
        }
        return null;
    }
    key = key.trim();

    if (key.length() < 1) {
        if (isDebugging) {
            log.debug("BLANK key received");
        }
        return null;
    }
    if (action == null && key.indexOf(MENU_SEPARATOR_KEY) < 0) {
        if (isDebugging) {
            log.debug("NULL action received, but was not a separator: " + key);
        }
        return null;
    }

    if (keplerMenuMap.containsKey(key)) {
        if (isDebugging) {
            log.debug("Menu already added; skipping: " + key);
        }
        return null;
    }

    // split delimited parts and ensure menus all exist
    String[] menuLevel = key.split(MENU_PATH_DELIMITER);

    int totLevels = menuLevel.length;

    // create a menu for each "menuLevel" if it doesn't already exist
    final StringBuffer nextLevelBuff = new StringBuffer();
    String prevLevelStr = null;
    JMenuItem leafMenuItem = null;

    for (int levelIdx = 0; levelIdx < totLevels; levelIdx++) {

        // save previous value
        prevLevelStr = nextLevelBuff.toString();

        String nextLevelStr = menuLevel[levelIdx];
        // get the index of the first MNEMONIC_SYMBOL
        int mnemonicIdx = nextLevelStr.indexOf(MNEMONIC_SYMBOL);
        char mnemonicChar = 0;

        // if an MNEMONIC_SYMBOL exists, remove all underscores. Then, idx
        // of
        // first underscore becomes idx of letter it used to precede - this
        // is the mnemonic letter
        if (mnemonicIdx > -1) {
            nextLevelStr = nextLevelStr.replaceAll(MNEMONIC_SYMBOL, "");
            mnemonicChar = nextLevelStr.charAt(mnemonicIdx);
        }
        if (levelIdx != 0) {
            nextLevelBuff.append(MENU_PATH_DELIMITER);
        }
        nextLevelBuff.append(nextLevelStr);

        // don't add multiple separators together...
        if (nextLevelStr.indexOf(MENU_SEPARATOR_KEY) > -1) {
            if (separatorJustAdded == false) {

                // Check if we're at the top level, since this makes sense
                // only for
                // context menu - we can't add a separator to a JMenuBar
                if (levelIdx == 0) {
                    if (topLvlContainer instanceof JContextMenu) {
                        ((JContextMenu) topLvlContainer).addSeparator();
                    }
                } else {
                    JMenu parent = (JMenu) keplerMenuMap.get(prevLevelStr);

                    if (parent != null) {
                        if (parent.getMenuComponentCount() < 1) {
                            if (isDebugging) {
                                log.debug("------ NOT adding separator to parent " + parent.getText()
                                        + ", since it does not contain any menu items");
                            }
                        } else {
                            if (isDebugging) {
                                log.debug("------ adding separator to parent " + parent.getText());
                            }
                            // add separator to parent
                            parent.addSeparator();
                            separatorJustAdded = true;
                        }
                    }
                }
            }
        } else if (!keplerMenuMap.containsKey(nextLevelBuff.toString())) {
            // If menu has not already been created, we need
            // to create it and then add it to the parent level...

            JMenuItem menuItem = null;

            // if we're at a "leaf node" - need to create a JMenuItem
            if (levelIdx == totLevels - 1) {

                // save old display name to use as actionCommand on
                // menuitem,
                // since some parts of PTII still
                // use "if (actionCommand.equals("SaveAs")) {..." etc
                String oldDisplayName = (String) action.getValue(Action.NAME);

                // action.putValue(Action.NAME, nextLevelStr);

                if (mnemonicChar > 0) {
                    action.putValue(GUIUtilities.MNEMONIC_KEY, new Integer(mnemonicChar));
                }

                // Now we look to see if it's a checkbox
                // menu item, or just a regular one
                String menuItemType = (String) (action.getValue(MENUITEM_TYPE));

                if (menuItemType != null && menuItemType == CHECKBOX_MENUITEM_TYPE) {
                    menuItem = new JCheckBoxMenuItem(action);
                } else {
                    menuItem = new JMenuItem(action);
                }

                // --------------------------------------------------------------
                /** @todo - setting menu names - TEMPORARY FIX - FIXME */
                // Currently, if we use the "proper" way of setting menu
                // names -
                // ie by using action.putValue(Action.NAME, "somename");,
                // then
                // the name appears on the port buttons on the toolbar,
                // making
                // them huge. As a temporary stop-gap, I am just setting the
                // new
                // display name using setText() instead of
                // action.putValue(..,
                // but this needs to be fixed elsewhere - we want to be able
                // to
                // use action.putValue(Action.NAME (ie uncomment the line
                // above
                // that reads:
                // action.putValue(Action.NAME, nextLevelStr);
                // and delete the line below that reads:
                // menuItem.setText(nextLevelStr);
                // otherwise this may bite us in future...
                menuItem.setText(nextLevelStr);
                // --------------------------------------------------------------

                // set old display name as actionCommand on
                // menuitem, for ptii backward-compatibility
                menuItem.setActionCommand(oldDisplayName);

                // add JMenuItem to the Action, so it can be accessed by
                // Action code
                action.putValue(NEW_JMENUITEM_KEY, menuItem);
                leafMenuItem = menuItem;
            } else {
                // if we're *not* at a "leaf node" - need to create a JMenu
                menuItem = new JMenu(nextLevelStr);
                if (mnemonicChar > 0) {
                    menuItem.setMnemonic(mnemonicChar);
                }
            }
            // level 0 is a special case, since the container (JMenuBar or
            // JContextMenu) is not a JMenu or a JMenuItem, so we can't
            // use the same code to add child to parent...
            if (levelIdx == 0) {
                if (topLvlContainer instanceof JMenuBar) {
                    // this handles JMenuBar menus
                    ((JMenuBar) topLvlContainer).add(menuItem);
                } else if (topLvlContainer instanceof JContextMenu) {
                    // this handles popup context menus
                    ((JContextMenu) topLvlContainer).add(menuItem);
                }
                // add to Map
                keplerMenuMap.put(nextLevelBuff.toString(), menuItem);
                separatorJustAdded = false;
            } else {
                JMenu parent = (JMenu) keplerMenuMap.get(prevLevelStr);
                if (parent != null) {
                    // add to parent
                    parent.add(menuItem);
                    // add to Map
                    keplerMenuMap.put(nextLevelBuff.toString(), menuItem);
                    separatorJustAdded = false;
                } else {
                    if (isDebugging) {
                        log.debug("Parent menu is NULL" + prevLevelStr);
                    }
                }
            }
        }
    }
    return leafMenuItem;
}

From source file:org.nuclos.client.common.NuclosCollectController.java

/**
 * @todo this method is misused - it sets shortcuts for many things other than tabs...
 * @param frame//from  ww  w.ja v  a 2 s  .  c  o  m
 */
@Override
protected void setupShortcutsForTabs(MainFrameTab frame) {
    final CollectPanel<Clct> pnlCollect = this.getCollectPanel();
    final DetailsPanel pnlDetails = this.getDetailsPanel();

    final Action actSelectSearchTab = new AbstractAction() {
        @Override
        public void actionPerformed(ActionEvent ev) {
            if (pnlCollect.isTabbedPaneEnabledAt(CollectPanel.TAB_SEARCH)) {
                pnlCollect.setTabbedPaneSelectedComponent(getSearchPanel());
            }
        }
    };
    KeyBindingProvider.bindActionToComponent(KeyBindingProvider.ACTIVATE_SEARCH_PANEL_1, actSelectSearchTab,
            pnlCollect);
    KeyBindingProvider.bindActionToComponent(KeyBindingProvider.ACTIVATE_SEARCH_PANEL_2, actSelectSearchTab,
            pnlCollect);

    //TODO This is a workaround. The detailpanel should keep the focus
    final Action actGrabFocus = new AbstractAction() {
        @Override
        public void actionPerformed(ActionEvent ev) {
            pnlDetails.grabFocus();
        }
    };

    /**
     * A <code>ChainedAction</code> is an action composed of a primary and a secondary action.
     * It behaves exactly like the primary action, except that additionally, the secondary action is performed
     * after the primary action.
     */
    class ChainedAction implements Action {
        private final Action actPrimary;
        private final Action actSecondary;

        public ChainedAction(Action actPrimary, Action actSecondary) {
            this.actPrimary = actPrimary;
            this.actSecondary = actSecondary;
        }

        @Override
        public void addPropertyChangeListener(PropertyChangeListener listener) {
            actPrimary.addPropertyChangeListener(listener);
        }

        @Override
        public Object getValue(String sKey) {
            return actPrimary.getValue(sKey);
        }

        @Override
        public boolean isEnabled() {
            return actPrimary.isEnabled();
        }

        @Override
        public void putValue(String sKey, Object oValue) {
            actPrimary.putValue(sKey, oValue);
        }

        @Override
        public void removePropertyChangeListener(PropertyChangeListener listener) {
            actPrimary.removePropertyChangeListener(listener);
        }

        @Override
        public void setEnabled(boolean bEnabled) {
            actPrimary.setEnabled(bEnabled);
        }

        @Override
        public void actionPerformed(ActionEvent ev) {
            actPrimary.actionPerformed(ev);
            actSecondary.actionPerformed(ev);
        }
    }

    //final Action actRefresh = new ChainedAction(this.getRefreshCurrentCollectableAction(), actGrabFocus);

    this.getCollectPanel().setTabbedPaneToolTipTextAt(CollectPanel.TAB_SEARCH,
            getSpringLocaleDelegate().getMessage("NuclosCollectController.13", "Suche (F7) (Strg+F)"));
    this.getCollectPanel().setTabbedPaneToolTipTextAt(CollectPanel.TAB_RESULT,
            getSpringLocaleDelegate().getMessage("NuclosCollectController.7", "Ergebnis (F8)"));
    this.getCollectPanel().setTabbedPaneToolTipTextAt(CollectPanel.TAB_DETAILS,
            getSpringLocaleDelegate().getMessage("NuclosCollectController.3", "Details (F2)"));

    // the search action
    KeyBindingProvider.bindActionToComponent(KeyBindingProvider.START_SEARCH, this.getSearchAction(),
            pnlCollect);
    KeyBinding keybinding = KeyBindingProvider.REFRESH;

    // the refresh action
    KeyBindingProvider.removeActionFromComponent(keybinding, pnlDetails);
    pnlDetails.getInputMap(JComponent.WHEN_ANCESTOR_OF_FOCUSED_COMPONENT).put(keybinding.getKeystroke(),
            keybinding.getKey());
    pnlDetails.getActionMap().put(keybinding.getKey(), this.getRefreshCurrentCollectableAction());
    KeyBindingProvider.removeActionFromComponent(keybinding, getResultPanel());
    getResultPanel().getInputMap(JComponent.WHEN_ANCESTOR_OF_FOCUSED_COMPONENT).put(keybinding.getKeystroke(),
            keybinding.getKey());
    getResultPanel().getActionMap().put(keybinding.getKey(), getResultPanel().btnRefresh.getAction());

    // the new action
    KeyBindingProvider.bindActionToComponent(KeyBindingProvider.NEW, this.getNewAction(), pnlDetails);

    // the new with search values action
    KeyBindingProvider.bindActionToComponent(KeyBindingProvider.NEW_SEARCHVALUE,
            this.getNewWithSearchValuesAction(), pnlCollect);

    // the save action
    KeyBindingProvider.bindActionToComponent(KeyBindingProvider.SAVE_1, this.getSaveAction(), pnlCollect);
    KeyBindingProvider.bindActionToComponent(KeyBindingProvider.SAVE_2, this.getSaveAction(), pnlCollect);

    // first the navigation actions are performed and then the focus is grabbed:
    final Action actFirst = new ChainedAction(this.getFirstAction(), actGrabFocus);
    final Action actLast = new ChainedAction(this.getLastAction(), actGrabFocus);
    final Action actPrevious = new ChainedAction(this.getPreviousAction(), actGrabFocus);
    final Action actNext = new ChainedAction(this.getNextAction(), actGrabFocus);

    // the first action
    KeyBindingProvider.bindActionToComponent(KeyBindingProvider.FIRST, actFirst, pnlDetails);
    pnlDetails.btnFirst.setAction(actFirst);

    // the last action
    KeyBindingProvider.bindActionToComponent(KeyBindingProvider.LAST, actLast, pnlDetails);
    pnlDetails.btnLast.setAction(actLast);

    // the previous action
    KeyBindingProvider.bindActionToComponent(KeyBindingProvider.PREVIOUS_1, actPrevious, pnlDetails);
    KeyBindingProvider.bindActionToComponent(KeyBindingProvider.PREVIOUS_2, actPrevious, pnlDetails);
    pnlDetails.btnPrevious.setAction(actPrevious);

    // the next action
    KeyBindingProvider.bindActionToComponent(KeyBindingProvider.NEXT_1, actNext, pnlDetails);
    KeyBindingProvider.bindActionToComponent(KeyBindingProvider.NEXT_2, actNext, pnlDetails);
    pnlDetails.btnNext.setAction(actNext);

    Action actClose = new AbstractAction() {
        @Override
        public void actionPerformed(ActionEvent e) {
            getTab().dispose();
        }
    };
    KeyBindingProvider.bindActionToComponent(KeyBindingProvider.CLOSE_CHILD, actClose, pnlCollect);

    if (getResultPanel() != null && getResultTable() != null) {
        final JButton btnEdit = getResultPanel().btnEdit;
        KeyBindingProvider.bindActionToComponent(KeyBindingProvider.EDIT_1, btnEdit.getAction(),
                getResultTable());
        if (getResultTable().getActionMap().get(KeyBindingProvider.EDIT_2.getKey()) == null)
            KeyBindingProvider.bindActionToComponent(KeyBindingProvider.EDIT_2, btnEdit.getAction(),
                    getResultTable());
    }
}

From source file:org.openscience.jmol.app.Jmol.java

Jmol(Splash splash, JFrame frame, Jmol parent, int startupWidth, int startupHeight, String commandOptions,
        Point loc) {//  w w  w .j  a  v a  2  s. c  om
    super(true);
    this.frame = frame;
    this.startupWidth = startupWidth;
    this.startupHeight = startupHeight;
    numWindows++;

    try {
        say("history file is " + historyFile.getFile().getAbsolutePath());
    } catch (Exception e) {
    }

    frame.setTitle("Jmol");
    frame.getContentPane().setBackground(Color.lightGray);
    frame.getContentPane().setLayout(new BorderLayout());

    this.splash = splash;

    setBorder(BorderFactory.createEtchedBorder());
    setLayout(new BorderLayout());
    language = GT.getLanguage();

    status = (StatusBar) createStatusBar();
    say(GT._("Initializing 3D display..."));
    //
    display = new DisplayPanel(status, guimap, haveDisplay.booleanValue(), startupWidth, startupHeight);
    String adapter = System.getProperty("model");
    if (adapter == null || adapter.length() == 0)
        adapter = "smarter";
    if (adapter.equals("smarter")) {
        report("using Smarter Model Adapter");
        modelAdapter = new SmarterJmolAdapter();
    } else if (adapter.equals("cdk")) {
        report("the CDK Model Adapter is currently no longer supported. Check out http://bioclipse.net/. -- using Smarter");
        // modelAdapter = new CdkJmolAdapter(null);
        modelAdapter = new SmarterJmolAdapter();
    } else {
        report("unrecognized model adapter:" + adapter + " -- using Smarter");
        modelAdapter = new SmarterJmolAdapter();
    }
    appletContext = commandOptions;
    viewer = JmolViewer.allocateViewer(display, modelAdapter);
    viewer.setAppletContext("", null, null, commandOptions);

    if (display != null)
        display.setViewer(viewer);

    say(GT._("Initializing Preferences..."));
    preferencesDialog = new PreferencesDialog(frame, guimap, viewer);
    say(GT._("Initializing Recent Files..."));
    recentFiles = new RecentFilesDialog(frame);
    if (haveDisplay.booleanValue()) {
        say(GT._("Initializing Script Window..."));
        scriptWindow = new ScriptWindow(viewer, frame);
    }

    MyStatusListener myStatusListener;
    myStatusListener = new MyStatusListener();
    viewer.setJmolStatusListener(myStatusListener);

    say(GT._("Initializing Measurements..."));
    measurementTable = new MeasurementTable(viewer, frame);

    // Setup Plugin system
    // say(GT._("Loading plugins..."));
    // pluginManager = new CDKPluginManager(
    //     System.getProperty("user.home") + System.getProperty("file.separator")
    //     + ".jmol", new JmolEditBus(viewer)
    // );
    // pluginManager.loadPlugin("org.openscience.cdkplugin.dirbrowser.DirBrowserPlugin");
    // pluginManager.loadPlugin("org.openscience.cdkplugin.dirbrowser.DadmlBrowserPlugin");
    // pluginManager.loadPlugins(
    //     System.getProperty("user.home") + System.getProperty("file.separator")
    //     + ".jmol/plugins"
    // );
    // feature to allow for globally installed plugins
    // if (System.getProperty("plugin.dir") != null) {
    //     pluginManager.loadPlugins(System.getProperty("plugin.dir"));
    // }

    if (haveDisplay.booleanValue()) {

        // install the command table
        say(GT._("Building Command Hooks..."));
        commands = new Hashtable();
        if (display != null) {
            Action[] actions = getActions();
            for (int i = 0; i < actions.length; i++) {
                Action a = actions[i];
                commands.put(a.getValue(Action.NAME), a);
            }
        }

        menuItems = new Hashtable();
        say(GT._("Building Menubar..."));
        executeScriptAction = new ExecuteScriptAction();
        menubar = createMenubar();
        add("North", menubar);

        JPanel panel = new JPanel();
        panel.setLayout(new BorderLayout());
        panel.add("North", createToolbar());

        JPanel ip = new JPanel();
        ip.setLayout(new BorderLayout());
        ip.add("Center", display);
        panel.add("Center", ip);
        add("Center", panel);
        add("South", status);

        say(GT._("Starting display..."));
        display.start();

        //say(GT._("Setting up File Choosers..."));

        /*      pcs.addPropertyChangeListener(chemFileProperty, exportAction);
         pcs.addPropertyChangeListener(chemFileProperty, povrayAction);
         pcs.addPropertyChangeListener(chemFileProperty, writeAction);
         pcs.addPropertyChangeListener(chemFileProperty, toWebAction);
         pcs.addPropertyChangeListener(chemFileProperty, printAction);
         pcs.addPropertyChangeListener(chemFileProperty,
         viewMeasurementTableAction);
         */

        if (menuFile != null) {
            menuStructure = viewer.getFileAsString(menuFile);
        }
        jmolpopup = JmolPopup.newJmolPopup(viewer, true, menuStructure, true);

    }

    // prevent new Jmol from covering old Jmol
    if (loc != null) {
        frame.setLocation(loc);
    } else if (parent != null) {
        Point location = parent.frame.getLocationOnScreen();
        int maxX = screenSize.width - 50;
        int maxY = screenSize.height - 50;

        location.x += 40;
        location.y += 40;
        if ((location.x > maxX) || (location.y > maxY)) {
            location.setLocation(0, 0);
        }
        frame.setLocation(location);
    }
    frame.getContentPane().add("Center", this);

    frame.addWindowListener(new Jmol.AppCloser());
    frame.pack();
    frame.setSize(startupWidth, startupHeight);
    ImageIcon jmolIcon = JmolResourceHandler.getIconX("icon");
    Image iconImage = jmolIcon.getImage();
    frame.setIconImage(iconImage);

    // Repositionning windows
    if (scriptWindow != null)
        historyFile.repositionWindow(SCRIPT_WINDOW_NAME, scriptWindow, 200, 100);

    say(GT._("Setting up Drag-and-Drop..."));
    FileDropper dropper = new FileDropper();
    final JFrame f = frame;
    dropper.addPropertyChangeListener(new PropertyChangeListener() {
        public void propertyChange(PropertyChangeEvent evt) {
            //System.out.println("Drop triggered...");
            f.setCursor(Cursor.getPredefinedCursor(Cursor.WAIT_CURSOR));
            if (evt.getPropertyName().equals(FileDropper.FD_PROPERTY_FILENAME)) {
                final String filename = evt.getNewValue().toString();
                viewer.openFile(filename);
            } else if (evt.getPropertyName().equals(FileDropper.FD_PROPERTY_INLINE)) {
                final String inline = evt.getNewValue().toString();
                viewer.openStringInline(inline);
            }
            f.setCursor(Cursor.getDefaultCursor());
        }
    });

    this.setDropTarget(new DropTarget(this, dropper));
    this.setEnabled(true);

    say(GT._("Launching main frame..."));
}