private void controllerDidLoadFxml()

in app/src/main/java/com/oracle/javafx/scenebuilder/app/menubar/MenuBarController.java [479:1092]


    private void controllerDidLoadFxml() {

        assert menuBar != null;
        assert menuBar.getParent() instanceof StackPane;
        assert insertMenu != null;
        assert addEffectMenu != null;
        assert fileMenu != null;
        assert windowMenu != null;

        assert newMenuItem != null;
        assert newTemplateMenuItem != null;
        assert openMenuItem != null;
        assert openRecentMenu != null;
        assert saveMenuItem != null;
        assert saveAsMenuItem != null;
        assert revertMenuItem != null;
        assert closeMenuItem != null;
        assert revealMenuItem != null;
        assert importFxmlMenuItem != null;
        assert importMediaMenuItem != null;
        assert includeFileMenuItem != null;
        assert editIncludedFileMenuItem != null;
        assert revealIncludedFileMenuItem != null;
        assert showPreferencesMenuItem != null;
        assert exitMenuItem != null;

        assert undoMenuItem != null;
        assert redoMenuItem != null;
        assert copyMenuItem != null;
        assert cutMenuItem != null;
        assert pasteMenuItem != null;
        assert pasteIntoMenuItem != null;
        assert duplicateMenuItem != null;
        assert deleteMenuItem != null;
        assert selectAllMenuItem != null;
        assert selectNoneMenuItem != null;
        assert selectParentMenuItem != null;
        assert selectNextMenuItem != null;
        assert selectPreviousMenuItem != null;
        assert trimMenuItem != null;

        assert gotoContentMenuItem != null;
        assert gotoPropertiesMenuItem != null;
        assert gotoLayoutMenuItem != null;
        assert gotoCodeMenuItem != null;
        assert toggleLibraryPanelMenuItem != null;
        assert toggleHierarchyPanelMenuItem != null;
        assert toggleCSSPanelMenuItem != null;
        assert toggleLeftPanelMenuItem != null;
        assert toggleRightPanelMenuItem != null;
        assert toggleOutlinesMenuItem != null;
        assert toggleSampleDataMenuItem != null;
        assert toggleAlignmentGuidesMenuItem != null;
        assert showSampleControllerMenuItem != null;
        assert zoomMenu != null;
        assert zoomMenu.getItems().isEmpty();

        assert fitToParentMenuItem != null;
        assert useComputedSizesMenuItem != null;
        assert addContextMenuMenuItem != null;
        assert addTooltipMenuItem != null;
        assert moveRowAboveMenuItem != null;
        assert moveRowBelowMenuItem != null;
        assert moveColumnBeforeMenuItem != null;
        assert moveColumnAfterMenuItem != null;
        assert addRowAboveMenuItem != null;
        assert addRowBelowMenuItem != null;
        assert addColumnBeforeMenuItem != null;
        assert addColumnAfterMenuItem != null;
        assert increaseRowSpanMenuItem != null;
        assert decreaseRowSpanMenuItem != null;
        assert increaseColumnSpanMenuItem != null;
        assert decreaseColumnSpanMenuItem != null;
        assert phoneSetSizeMenuItem != null;
        assert tabletSetSizeMenuItem != null;
        assert qvgaSetSizeMenuItem != null;
        assert vgaSetSizeMenuItem != null;
        assert touchSetSizeMenuItem != null;
        assert hdSetSizeMenuItem != null;

        assert bringToFrontMenuItem != null;
        assert sendToBackMenuItem != null;
        assert bringForwardMenuItem != null;
        assert sendBackwardMenuItem != null;
        assert wrapInAnchorPaneMenuItem != null;
        assert wrapInBorderPaneMenuItem != null;
        assert wrapInButtonBarMenuItem != null;
        assert wrapInDialogPaneMenuItem != null;
        assert wrapInFlowPaneMenuItem != null;
        assert wrapInGridPaneMenuItem != null;
        assert wrapInHBoxMenuItem != null;
        assert wrapInPaneMenuItem != null;
        assert wrapInScrollPaneMenuItem != null;
        assert wrapInSplitPaneMenuItem != null;
        assert wrapInStackPaneMenuItem != null;
        assert wrapInTabPaneMenuItem != null;
        assert wrapInTextFlowMenuItem != null;
        assert wrapInTilePaneMenuItem != null;
        assert wrapInTitledPaneMenuItem != null;
        assert wrapInToolBarMenuItem != null;
        assert wrapInVBoxMenuItem != null;
        assert wrapInGroupMenuItem != null;
        assert wrapInSceneMenuItem != null;
        assert wrapInStageMenuItem != null;
        assert unwrapMenuItem != null;

        assert showPreviewInWindowMenuItem != null;
        assert showPreviewInDialogMenuItem != null;
        assert modenaThemeMenuItem != null;
        assert modenaTouchThemeMenuItem != null;
        assert modenaHighContrastBlackonwhiteThemeMenuItem != null;
        assert modenaHighContrastWhiteonblackThemeMenuItem != null;
        assert modenaHighContrastYellowonblackThemeMenuItem != null;
        assert caspianThemeMenuItem != null;
        assert caspianHighContrastThemeMenuItem != null;
        assert caspianEmbeddedThemeMenuItem != null;
        assert caspianEmbeddedQVGAThemeMenuItem != null;
        assert addSceneStyleSheetMenuItem != null;
        assert removeSceneStyleSheetMenu != null;
        assert openSceneStyleSheetMenu != null;
        assert setResourceMenuItem != null;
        assert removeResourceMenuItem != null;
        assert revealResourceMenuItem != null;
        assert phonePreviewSizeMenuItem != null;
        assert tabletPreviewSizeMenuItem != null;
        assert qvgaPreviewSizeMenuItem != null;
        assert vgaPreviewSizeMenuItem != null;
        assert touchPreviewSizeMenuItem != null;
        assert hdPreviewSizeMenuItem != null;
        assert preferredPreviewSizeMenuItem != null;

        assert helpMenuItem != null;
        assert aboutMenuItem != null;
        assert checkUpdatesMenuItem != null;

        /* 
         * To make MenuBar.fxml editable with SB 1.1, the menu bar is enclosed
         * in a StackPane. This stack pane is useless now.
         * So we unwrap the menu bar and make it the panel root.
         */
        final StackPane rootStackPane = (StackPane) menuBar.getParent();
        rootStackPane.getChildren().remove(menuBar);

        /*
         * On Mac, move the menu bar on the desktop and remove the Quit item
         * from the File menu
         */
        if (EditorPlatform.IS_MAC) {
            menuBar.setUseSystemMenuBar(true);
            // SB-269
            menuBar.useSystemMenuBarProperty().addListener((obs, ov, nv) -> {
                if (! nv) {
                    // Restore System MenuBar
                    menuBar.setUseSystemMenuBar(true);
                }
            });
            exitMenuItem.getParentMenu().getItems().remove(exitMenuItem);
        }

        /*
         * Setup title of the Reveal menu item according the underlying o/s.
         */
        final String revealMenuKey;
        if (EditorPlatform.IS_MAC) {
            revealMenuKey = "menu.title.reveal.mac";
        } else if (EditorPlatform.IS_WINDOWS) {
            revealMenuKey = "menu.title.reveal.win.mnemonic";
        } else {
            assert EditorPlatform.IS_LINUX;
            revealMenuKey = "menu.title.reveal.linux";
        }
        revealMenuItem.setText(I18N.getString(revealMenuKey));

        /*
         * File menu
         */
        newMenuItem.setUserData(new ApplicationControlActionController(ApplicationControlAction.NEW_FILE));
        newMenuItem.setAccelerator(new KeyCodeCombination(KeyCode.N, modifier));
        newTemplateMenuItem.setUserData(new ApplicationControlActionController(ApplicationControlAction.NEW_TEMPLATE));
        openMenuItem.setUserData(new ApplicationControlActionController(ApplicationControlAction.OPEN_FILE));
        openMenuItem.setAccelerator(new KeyCodeCombination(KeyCode.O, modifier));
        openRecentMenu.setOnShowing(t -> updateOpenRecentMenuItems());
        saveMenuItem.setUserData(new DocumentControlActionController(DocumentControlAction.SAVE_FILE));
        saveMenuItem.setAccelerator(new KeyCodeCombination(KeyCode.S, modifier));
        saveAsMenuItem.setUserData(new DocumentControlActionController(DocumentControlAction.SAVE_AS_FILE));
        saveAsMenuItem.setAccelerator(new KeyCodeCombination(KeyCode.S, KeyCombination.SHIFT_DOWN, modifier));
        revertMenuItem.setUserData(new DocumentControlActionController(DocumentControlAction.REVERT_FILE));
        revealMenuItem.setUserData(new DocumentControlActionController(DocumentControlAction.REVEAL_FILE));
        importFxmlMenuItem.setUserData(new DocumentEditActionController(DocumentEditAction.IMPORT_FXML));
        importMediaMenuItem.setUserData(new DocumentEditActionController(DocumentEditAction.IMPORT_MEDIA));
        includeFileMenuItem.setUserData(new DocumentEditActionController(DocumentEditAction.INCLUDE_FXML));
        editIncludedFileMenuItem.setUserData(new ControlActionController(ControlAction.EDIT_INCLUDED_FILE) {

            @Override
            public String getTitle() {
                String title = I18N.getString("menu.title.edit.included.default");
                if (documentWindowController != null) {
                    final File file = documentWindowController.getEditorController().getIncludedFile();
                    if (file != null) {
                        title = I18N.getString("menu.title.edit.included", file.getName());
                    }
                }
                return title;
            }
        });
        revealIncludedFileMenuItem.setUserData(new ControlActionController(ControlAction.REVEAL_INCLUDED_FILE) {

            @Override
            public String getTitle() {
                String title = I18N.getString("menu.title.reveal.included.default");
                if (documentWindowController != null) {
                    final File file = documentWindowController.getEditorController().getIncludedFile();
                    if (file != null) {
                        if (EditorPlatform.IS_MAC) {
                            title = I18N.getString("menu.title.reveal.included.finder", file.getName());
                        } else {
                            title = I18N.getString("menu.title.reveal.included.explorer", file.getName());
                        }
                    }
                }
                return title;
            }
        });
        closeMenuItem.setUserData(new ApplicationControlActionController(ApplicationControlAction.CLOSE_FRONT_WINDOW));
        closeMenuItem.setAccelerator(new KeyCodeCombination(KeyCode.W, modifier));
        showPreferencesMenuItem.setUserData(new ApplicationControlActionController(ApplicationControlAction.SHOW_PREFERENCES));
        showPreferencesMenuItem.setAccelerator(new KeyCodeCombination(KeyCode.COMMA, modifier));
        exitMenuItem.setUserData(new ApplicationControlActionController(ApplicationControlAction.EXIT));

        /*
         * Edit menu
         */
        undoMenuItem.setUserData(new UndoActionController());
        undoMenuItem.setAccelerator(new KeyCodeCombination(KeyCode.Z, modifier));
        redoMenuItem.setUserData(new RedoActionController());
        if (EditorPlatform.IS_MAC) {
            // Mac platforms.
            redoMenuItem.setAccelerator(new KeyCodeCombination(KeyCode.Z, KeyCombination.SHIFT_DOWN, modifier));
        } else {
            // Windows and Linux platforms.
            // http://windows.microsoft.com/en-US/windows7/Keyboard-shortcuts
            redoMenuItem.setAccelerator(new KeyCodeCombination(KeyCode.Y, modifier));
        }
        copyMenuItem.setUserData(new DocumentControlActionController(DocumentControlAction.COPY));
        copyMenuItem.setAccelerator(new KeyCodeCombination(KeyCode.C, modifier));
        cutMenuItem.setUserData(new DocumentEditActionController(DocumentEditAction.CUT));
        cutMenuItem.setAccelerator(new KeyCodeCombination(KeyCode.X, modifier));
        pasteMenuItem.setUserData(new DocumentEditActionController(DocumentEditAction.PASTE));
        pasteMenuItem.setAccelerator(new KeyCodeCombination(KeyCode.V, modifier));
        pasteIntoMenuItem.setUserData(new EditActionController(EditAction.PASTE_INTO));
        pasteIntoMenuItem.setAccelerator(new KeyCodeCombination(KeyCode.V, KeyCombination.SHIFT_DOWN, modifier));
        duplicateMenuItem.setUserData(new EditActionController(EditAction.DUPLICATE));
        duplicateMenuItem.setAccelerator(new KeyCodeCombination(KeyCode.D, modifier));
        deleteMenuItem.setUserData(new DocumentEditActionController(DocumentEditAction.DELETE));
        deleteMenuItem.setAccelerator(new KeyCodeCombination(KeyCode.DELETE));
        selectAllMenuItem.setUserData(new DocumentControlActionController(DocumentControlAction.SELECT_ALL));
        selectAllMenuItem.setAccelerator(new KeyCodeCombination(KeyCode.A, modifier));
        selectNoneMenuItem.setUserData(new DocumentControlActionController(DocumentControlAction.SELECT_NONE));
        selectNoneMenuItem.setAccelerator(new KeyCodeCombination(KeyCode.A, KeyCombination.SHIFT_DOWN, modifier));
        selectParentMenuItem.setUserData(new ControlActionController(ControlAction.SELECT_PARENT));
        selectParentMenuItem.setAccelerator(new KeyCodeCombination(KeyCode.UP, modifier));
        selectNextMenuItem.setUserData(new ControlActionController(ControlAction.SELECT_NEXT));
        selectNextMenuItem.setAccelerator(new KeyCodeCombination(KeyCode.RIGHT, modifier));
        selectPreviousMenuItem.setUserData(new ControlActionController(ControlAction.SELECT_PREVIOUS));
        selectPreviousMenuItem.setAccelerator(new KeyCodeCombination(KeyCode.LEFT, modifier));
        trimMenuItem.setUserData(new EditActionController(EditAction.TRIM));

        /*
         * View menu
         */
        gotoContentMenuItem.setUserData(new DocumentControlActionController(DocumentControlAction.GOTO_CONTENT));
        gotoContentMenuItem.setAccelerator(new KeyCodeCombination(KeyCode.DIGIT0, modifier));
        gotoPropertiesMenuItem.setUserData(new DocumentControlActionController(DocumentControlAction.GOTO_PROPERTIES));
        gotoPropertiesMenuItem.setAccelerator(new KeyCodeCombination(KeyCode.DIGIT1, modifier));
        gotoLayoutMenuItem.setUserData(new DocumentControlActionController(DocumentControlAction.GOTO_LAYOUT));
        gotoLayoutMenuItem.setAccelerator(new KeyCodeCombination(KeyCode.DIGIT2, modifier));
        gotoCodeMenuItem.setUserData(new DocumentControlActionController(DocumentControlAction.GOTO_CODE));
        gotoCodeMenuItem.setAccelerator(new KeyCodeCombination(KeyCode.DIGIT3, modifier));

        toggleLibraryPanelMenuItem.setUserData(
                new DocumentControlActionController(DocumentControlAction.TOGGLE_LIBRARY_PANEL) {
                    @Override
                    public String getTitle() {
                        final String titleKey;
                        if (documentWindowController == null) {
                            titleKey = "menu.title.hide.library.panel";
                        } else if (documentWindowController.isLibraryPanelVisible()) {
                            titleKey = "menu.title.hide.library.panel";
                        } else {
                            titleKey = "menu.title.show.library.panel";
                        }
                        return I18N.getString(titleKey);
                    }
                });
        toggleLibraryPanelMenuItem.setAccelerator(new KeyCodeCombination(KeyCode.DIGIT4, modifier));
        toggleHierarchyPanelMenuItem.setUserData(new DocumentControlActionController(DocumentControlAction.TOGGLE_DOCUMENT_PANEL) {
            @Override
            public String getTitle() {
                final String titleKey;
                if (documentWindowController == null) {
                    titleKey = "menu.title.hide.document.panel";
                } else if (documentWindowController.isHierarchyPanelVisible()) {
                    titleKey = "menu.title.hide.document.panel";
                } else {
                    titleKey = "menu.title.show.document.panel";
                }
                return I18N.getString(titleKey);
            }
        });
        toggleHierarchyPanelMenuItem.setAccelerator(new KeyCodeCombination(KeyCode.DIGIT5, modifier));
        toggleCSSPanelMenuItem.setUserData(new DocumentControlActionController(DocumentControlAction.TOGGLE_CSS_PANEL) {
            @Override
            public String getTitle() {
                final String titleKey;
                if (documentWindowController == null) {
                    titleKey = "menu.title.hide.bottom.panel";
                } else if (documentWindowController.isBottomPanelVisible()) {
                    titleKey = "menu.title.hide.bottom.panel";
                } else {
                    titleKey = "menu.title.show.bottom.panel";
                }
                return I18N.getString(titleKey);
            }
        });
        toggleCSSPanelMenuItem.setAccelerator(new KeyCodeCombination(KeyCode.DIGIT6, modifier));
        toggleLeftPanelMenuItem.setUserData(new DocumentControlActionController(DocumentControlAction.TOGGLE_LEFT_PANEL) {
            @Override
            public String getTitle() {
                final String titleKey;
                if (documentWindowController == null) {
                    titleKey = "menu.title.hide.left.panel";
                } else if (documentWindowController.isLeftPanelVisible()) {
                    titleKey = "menu.title.hide.left.panel";
                } else {
                    titleKey = "menu.title.show.left.panel";
                }
                return I18N.getString(titleKey);
            }
        });
        toggleLeftPanelMenuItem.setAccelerator(new KeyCodeCombination(KeyCode.DIGIT7, modifier));
        toggleRightPanelMenuItem.setUserData(new DocumentControlActionController(DocumentControlAction.TOGGLE_RIGHT_PANEL) {
            @Override
            public String getTitle() {
                final String titleKey;
                if (documentWindowController == null) {
                    titleKey = "menu.title.hide.right.panel";
                } else if (documentWindowController.isRightPanelVisible()) {
                    titleKey = "menu.title.hide.right.panel";
                } else {
                    titleKey = "menu.title.show.right.panel";
                }
                return I18N.getString(titleKey);
            }
        });
        toggleRightPanelMenuItem.setAccelerator(new KeyCodeCombination(KeyCode.DIGIT8, modifier));
        toggleOutlinesMenuItem.setUserData(new DocumentControlActionController(DocumentControlAction.TOGGLE_OUTLINES_VISIBILITY) {
            @Override
            public String getTitle() {
                final String titleKey;
                if (documentWindowController == null) {
                    titleKey = "menu.title.hide.outlines";
                } else if (documentWindowController.getContentPanelController().isOutlinesVisible()) {
                    titleKey = "menu.title.hide.outlines";
                } else {
                    titleKey = "menu.title.show.outlines";
                }
                return I18N.getString(titleKey);
            }
        });
        toggleOutlinesMenuItem.setAccelerator(new KeyCodeCombination(KeyCode.E, modifier));
        toggleSampleDataMenuItem.setUserData(new ControlActionController(ControlAction.TOGGLE_SAMPLE_DATA) {
            @Override
            public String getTitle() {
                final String titleKey;
                if (documentWindowController == null) {
                    titleKey = "menu.title.hide.sample.data";
                } else if (documentWindowController.getEditorController().isSampleDataEnabled()) {
                    titleKey = "menu.title.hide.sample.data";
                } else {
                    titleKey = "menu.title.show.sample.data";
                }
                return I18N.getString(titleKey);
            }
        });
        toggleAlignmentGuidesMenuItem.setUserData(new DocumentControlActionController(DocumentControlAction.TOGGLE_GUIDES_VISIBILITY) {
            @Override
            public String getTitle() {
                final String titleKey;
                if (documentWindowController == null) {
                    titleKey = "menu.title.disable.guides";
                } else {
                    final ContentPanelController contentPanelController
                            = documentWindowController.getContentPanelController();
                    if (contentPanelController.isGuidesVisible()) {
                        titleKey = "menu.title.disable.guides";
                    } else {
                        titleKey = "menu.title.enable.guides";
                    }
                }
                return I18N.getString(titleKey);
            }
        });
        showSampleControllerMenuItem.setUserData(new DocumentControlActionController(DocumentControlAction.SHOW_SAMPLE_CONTROLLER));
        updateZoomMenu();

        /*
         * Insert menu: it uses specific handlers, which means we initialize it
         * later to avoid interfering with other menus.
         */

        /*
         * Modify menu
         */
        fitToParentMenuItem.setUserData(new EditActionController(EditAction.FIT_TO_PARENT));
        fitToParentMenuItem.setAccelerator(new KeyCodeCombination(KeyCode.K, modifier));
        useComputedSizesMenuItem.setUserData(new EditActionController(EditAction.USE_COMPUTED_SIZES));
        useComputedSizesMenuItem.setAccelerator(new KeyCodeCombination(KeyCode.K, KeyCombination.SHIFT_DOWN, modifier));
        addContextMenuMenuItem.setUserData(new EditActionController(EditAction.ADD_CONTEXT_MENU));
        addTooltipMenuItem.setUserData(new EditActionController(EditAction.ADD_TOOLTIP));
        moveRowAboveMenuItem.setUserData(new EditActionController(EditAction.MOVE_ROW_ABOVE));
        moveRowBelowMenuItem.setUserData(new EditActionController(EditAction.MOVE_ROW_BELOW));
        moveColumnBeforeMenuItem.setUserData(new EditActionController(EditAction.MOVE_COLUMN_BEFORE));
        moveColumnAfterMenuItem.setUserData(new EditActionController(EditAction.MOVE_COLUMN_AFTER));
        addRowAboveMenuItem.setUserData(new EditActionController(EditAction.ADD_ROW_ABOVE));
        addRowBelowMenuItem.setUserData(new EditActionController(EditAction.ADD_ROW_BELOW));
        addColumnBeforeMenuItem.setUserData(new EditActionController(EditAction.ADD_COLUMN_BEFORE));
        addColumnAfterMenuItem.setUserData(new EditActionController(EditAction.ADD_COLUMN_AFTER));
        increaseRowSpanMenuItem.setUserData(new EditActionController(EditAction.INCREASE_ROW_SPAN));
        decreaseRowSpanMenuItem.setUserData(new EditActionController(EditAction.DECREASE_ROW_SPAN));
        increaseColumnSpanMenuItem.setUserData(new EditActionController(EditAction.INCREASE_COLUMN_SPAN));
        decreaseColumnSpanMenuItem.setUserData(new EditActionController(EditAction.DECREASE_COLUMN_SPAN));

        phoneSetSizeMenuItem.setUserData(new EditActionController(EditAction.SET_SIZE_335x600) {
            @Override
            public void perform() {
                super.perform();
                updatePreviewWindowSize(Size.SIZE_335x600);
            }
        });
        tabletSetSizeMenuItem.setUserData(new EditActionController(EditAction.SET_SIZE_900x600) {
            @Override
            public void perform() {
                super.perform();
                updatePreviewWindowSize(Size.SIZE_900x600);
            }
        });
        qvgaSetSizeMenuItem.setUserData(new EditActionController(EditAction.SET_SIZE_320x240) {
            @Override
            public void perform() {
                super.perform();
                updatePreviewWindowSize(Size.SIZE_320x240);
            }
        });
        vgaSetSizeMenuItem.setUserData(new EditActionController(EditAction.SET_SIZE_640x480) {
            @Override
            public void perform() {
                super.perform();
                updatePreviewWindowSize(Size.SIZE_640x480);
            }
        });
        touchSetSizeMenuItem.setUserData(new EditActionController(EditAction.SET_SIZE_1280x800) {
            @Override
            public void perform() {
                super.perform();
                updatePreviewWindowSize(Size.SIZE_1280x800);
            }
        });
        hdSetSizeMenuItem.setUserData(new EditActionController(EditAction.SET_SIZE_1920x1080) {
            @Override
            public void perform() {
                super.perform();
                updatePreviewWindowSize(Size.SIZE_1920x1080);
            }
        });

        // Add Effect submenu
        updateAddEffectMenu();

        /*
         * Arrange menu
         */
        bringToFrontMenuItem.setUserData(new EditActionController(EditAction.BRING_TO_FRONT));
        bringToFrontMenuItem.setAccelerator(new KeyCharacterCombination("]", //NOI18N
                KeyCombination.SHIFT_DOWN, modifier));
        sendToBackMenuItem.setUserData(new EditActionController(EditAction.SEND_TO_BACK));
        sendToBackMenuItem.setAccelerator(new KeyCharacterCombination("[", //NOI18N
                KeyCombination.SHIFT_DOWN, modifier));
        bringForwardMenuItem.setUserData(new EditActionController(EditAction.BRING_FORWARD));
        bringForwardMenuItem.setAccelerator(
                new KeyCharacterCombination("]", modifier)); //NOI18N
        sendBackwardMenuItem.setUserData(new EditActionController(EditAction.SEND_BACKWARD));
        sendBackwardMenuItem.setAccelerator(
                new KeyCharacterCombination("[", modifier)); //NOI18N
        wrapInAnchorPaneMenuItem.setUserData(new EditActionController(EditAction.WRAP_IN_ANCHOR_PANE));
        wrapInBorderPaneMenuItem.setUserData(new EditActionController(EditAction.WRAP_IN_BORDER_PANE));
        wrapInButtonBarMenuItem.setUserData(new EditActionController(EditAction.WRAP_IN_BUTTON_BAR));
        wrapInDialogPaneMenuItem.setUserData(new EditActionController(EditAction.WRAP_IN_DIALOG_PANE));
        wrapInFlowPaneMenuItem.setUserData(new EditActionController(EditAction.WRAP_IN_FLOW_PANE));
        wrapInGroupMenuItem.setUserData(new EditActionController(EditAction.WRAP_IN_GROUP));
        wrapInGridPaneMenuItem.setUserData(new EditActionController(EditAction.WRAP_IN_GRID_PANE));
        wrapInHBoxMenuItem.setUserData(new EditActionController(EditAction.WRAP_IN_HBOX));
        wrapInPaneMenuItem.setUserData(new EditActionController(EditAction.WRAP_IN_PANE));
        wrapInScrollPaneMenuItem.setUserData(new EditActionController(EditAction.WRAP_IN_SCROLL_PANE));
        wrapInSplitPaneMenuItem.setUserData(new EditActionController(EditAction.WRAP_IN_SPLIT_PANE));
        wrapInStackPaneMenuItem.setUserData(new EditActionController(EditAction.WRAP_IN_STACK_PANE));
        wrapInTabPaneMenuItem.setUserData(new EditActionController(EditAction.WRAP_IN_TAB_PANE));
        wrapInTextFlowMenuItem.setUserData(new EditActionController(EditAction.WRAP_IN_TEXT_FLOW));
        wrapInTilePaneMenuItem.setUserData(new EditActionController(EditAction.WRAP_IN_TILE_PANE));
        wrapInTitledPaneMenuItem.setUserData(new EditActionController(EditAction.WRAP_IN_TITLED_PANE));
        wrapInToolBarMenuItem.setUserData(new EditActionController(EditAction.WRAP_IN_TOOL_BAR));
        wrapInVBoxMenuItem.setUserData(new EditActionController(EditAction.WRAP_IN_VBOX));
        wrapInGroupMenuItem.setUserData(new EditActionController(EditAction.WRAP_IN_GROUP));
        wrapInSceneMenuItem.setUserData(new EditActionController(EditAction.WRAP_IN_SCENE));
        wrapInStageMenuItem.setUserData(new EditActionController(EditAction.WRAP_IN_STAGE));
        unwrapMenuItem.setUserData(new EditActionController(EditAction.UNWRAP));
        unwrapMenuItem.setAccelerator(
                new KeyCodeCombination(KeyCode.U, modifier));

        /*
         * Preview menu
         */
        showPreviewInWindowMenuItem.setUserData(new DocumentControlActionController(DocumentControlAction.SHOW_PREVIEW_WINDOW));
        showPreviewInWindowMenuItem.setAccelerator(new KeyCodeCombination(KeyCode.P, modifier));
        showPreviewInDialogMenuItem.setUserData(new DocumentControlActionController(DocumentControlAction.SHOW_PREVIEW_DIALOG));
        caspianHighContrastThemeMenuItem.setUserData(new SetThemeActionController(EditorPlatform.Theme.CASPIAN_HIGH_CONTRAST));
        caspianThemeMenuItem.setUserData(new SetThemeActionController(EditorPlatform.Theme.CASPIAN));
        caspianEmbeddedThemeMenuItem.setUserData(new SetThemeActionController(EditorPlatform.Theme.CASPIAN_EMBEDDED));
        caspianEmbeddedQVGAThemeMenuItem.setUserData(new SetThemeActionController(EditorPlatform.Theme.CASPIAN_EMBEDDED_QVGA));

        modenaThemeMenuItem.setUserData(new SetThemeActionController(EditorPlatform.Theme.MODENA));
        modenaTouchThemeMenuItem.setUserData(new SetThemeActionController(EditorPlatform.Theme.MODENA_TOUCH));
        modenaHighContrastBlackonwhiteThemeMenuItem.setUserData(new SetThemeActionController(EditorPlatform.Theme.MODENA_HIGH_CONTRAST_BLACK_ON_WHITE));
        modenaHighContrastWhiteonblackThemeMenuItem.setUserData(new SetThemeActionController(EditorPlatform.Theme.MODENA_HIGH_CONTRAST_WHITE_ON_BLACK));
        modenaHighContrastYellowonblackThemeMenuItem.setUserData(new SetThemeActionController(EditorPlatform.Theme.MODENA_HIGH_CONTRAST_YELLOW_ON_BLACK));

        addSceneStyleSheetMenuItem.setUserData(new DocumentControlActionController(DocumentControlAction.ADD_SCENE_STYLE_SHEET));
        updateOpenAndRemoveSceneStyleSheetMenus();
        if (documentWindowController != null) {
            this.documentWindowController.getEditorController().sceneStyleSheetProperty().addListener((ChangeListener<ObservableList<File>>) (ov, t, t1) -> {
                if (t1 != null) {
                    updateOpenAndRemoveSceneStyleSheetMenus();
                    setupMenuItemHandlers(removeSceneStyleSheetMenu);
                    setupMenuItemHandlers(openSceneStyleSheetMenu);
                }
            });
        }

        setResourceMenuItem.setUserData(new DocumentControlActionController(DocumentControlAction.SET_RESOURCE));
        removeResourceMenuItem.setUserData(new DocumentControlActionController(DocumentControlAction.REMOVE_RESOURCE) {
            @Override
            public String getTitle() {
                String title = I18N.getString("menu.title.remove.resource");
                if (documentWindowController != null
                        && documentWindowController.getResourceFile() != null) {
                    title = I18N.getString("menu.title.remove.resource.with.file",
                            documentWindowController.getResourceFile().getName());
                }

                return title;
            }
        });
        revealResourceMenuItem.setUserData(new DocumentControlActionController(DocumentControlAction.REVEAL_RESOURCE) {

            @Override
            public String getTitle() {
                String title = I18N.getString("menu.title.reveal.resource");
                if (documentWindowController != null
                        && documentWindowController.getResourceFile() != null) {
                    title = I18N.getString("menu.title.reveal.resource.with.file",
                            documentWindowController.getResourceFile().getName());
                }

                return title;
            }
        });
        phonePreviewSizeMenuItem.setUserData(new SetSizeActionController(Size.SIZE_335x600));
        tabletPreviewSizeMenuItem.setUserData(new SetSizeActionController(Size.SIZE_900x600));
        qvgaPreviewSizeMenuItem.setUserData(new SetSizeActionController(Size.SIZE_320x240));
        vgaPreviewSizeMenuItem.setUserData(new SetSizeActionController(Size.SIZE_640x480));
        touchPreviewSizeMenuItem.setUserData(new SetSizeActionController(Size.SIZE_1280x800));
        hdPreviewSizeMenuItem.setUserData(new SetSizeActionController(Size.SIZE_1920x1080));
        preferredPreviewSizeMenuItem.setUserData(new SetSizeActionController(Size.SIZE_PREFERRED));

        /*
         * Window menu : it is setup after the other menus
         */
        
        /*
         * Help menu
         */
        aboutMenuItem.setUserData(new ApplicationControlActionController(ApplicationControlAction.ABOUT));
        helpMenuItem.setUserData(new DocumentControlActionController(DocumentControlAction.HELP));
        helpMenuItem.setAccelerator(new KeyCodeCombination(KeyCode.F1));
        checkUpdatesMenuItem.setUserData(new ApplicationControlActionController(ApplicationControlAction.CHECK_UPDATES));

        /*
         * Put some generic handlers on each Menu and MenuItem.
         * For Insert and Window menu, we override with specific handlers.
         */
        for (Menu m : menuBar.getMenus()) {
            setupMenuItemHandlers(m);
        }
        
        /*
         * Insert menu: we set what is statically known.
         */
        constructBuiltinPartOfInsertMenu();
        constructCustomPartOfInsertMenu();
        
        // The handler for Insert menu deals only with Custom sub-menu.
        insertMenu.setOnMenuValidation(onCustomPartOfInsertMenuValidationHandler);
        
        windowMenu.setOnMenuValidation(onWindowMenuValidationHandler);
    }