in app/src/main/java/com/oracle/javafx/scenebuilder/app/DocumentWindowController.java [649:855]
public void performControlAction(DocumentControlAction controlAction) {
assert canPerformControlAction(controlAction);
final PreferencesController pc = PreferencesController.getSingleton();
final PreferencesRecordDocument recordDocument = pc.getRecordDocument(this);
switch(controlAction) {
case COPY:
performCopy();
break;
case SELECT_ALL:
performSelectAll();
break;
case SELECT_NONE:
performSelectNone();
break;
case SHOW_PREVIEW_WINDOW:
if (previewWindowController == null) {
previewWindowController = new PreviewWindowController(editorController, getStage());
previewWindowController.setToolStylesheet(getToolStylesheet());
}
previewWindowController.getStage().centerOnScreen();
previewWindowController.openWindow();
break;
case SHOW_PREVIEW_DIALOG:
if (previewWindowController == null) {
previewWindowController = new PreviewWindowController(editorController, getStage());
previewWindowController.setToolStylesheet(getToolStylesheet());
}
previewWindowController.openDialog();
break;
case SAVE_FILE:
performSaveOrSaveAsAction();
break;
case SAVE_AS_FILE:
performSaveAsAction();
break;
case REVERT_FILE:
performRevertAction();
break;
case CLOSE_FILE:
performCloseAction();
break;
case REVEAL_FILE:
performRevealAction();
break;
case GOTO_CONTENT:
contentPanelController.getGlassLayer().requestFocus();
break;
case GOTO_PROPERTIES:
performGoToSection(SectionId.PROPERTIES);
break;
case GOTO_LAYOUT:
performGoToSection(SectionId.LAYOUT);
break;
case GOTO_CODE:
performGoToSection(SectionId.CODE);
break;
case TOGGLE_LEFT_PANEL:
if (leftSplitController.isTargetVisible()) {
assert librarySplitController.isTargetVisible()
|| documentSplitController.isTargetVisible();
// Hide Left => hide both Library + Document
librarySplitController.hideTarget();
documentSplitController.hideTarget();
leftSplitController.hideTarget();
} else {
assert !librarySplitController.isTargetVisible()
&& !documentSplitController.isTargetVisible();
// Show Left => show both Library + Document
librarySplitController.showTarget();
documentSplitController.showTarget();
leftSplitController.showTarget();
// This workarounds layout issues when showing Left
libraryDocumentSplitPane.layout();
libraryDocumentSplitPane.setDividerPositions(0.5);
}
// Update preferences
recordDocument.setLibraryVisible(librarySplitController.isTargetVisible());
recordDocument.setDocumentVisible(documentSplitController.isTargetVisible());
recordDocument.setLeftVisible(leftSplitController.isTargetVisible());
break;
case TOGGLE_RIGHT_PANEL:
rightSplitController.toggleTarget();
// Update preferences
recordDocument.setRightVisible(rightSplitController.isTargetVisible());
break;
case TOGGLE_CSS_PANEL:
// CSS panel is built lazely : initialize the CSS panel first
initializeCssPanel();
bottomSplitController.toggleTarget();
if (bottomSplitController.isTargetVisible()) {
// CSS panel is built lazely
// Need to update its table column ordering with preference value
final PreferencesRecordGlobal recordGlobal = pc.getRecordGlobal();
refreshCssTableColumnsOrderingReversed(recordGlobal.isCssTableColumnsOrderingReversed());
// Enable pick mode
editorController.setPickModeEnabled(true);
} else {
// Disable pick mode
editorController.setPickModeEnabled(false);
}
// Update preferences
recordDocument.setBottomVisible(bottomSplitController.isTargetVisible());
break;
case TOGGLE_LIBRARY_PANEL:
if (librarySplitController.isTargetVisible()) {
assert leftSplitController.isTargetVisible();
librarySplitController.hideTarget();
if (!documentSplitController.isTargetVisible()) {
leftSplitController.hideTarget();
}
} else {
if (!leftSplitController.isTargetVisible()) {
leftSplitController.showTarget();
}
librarySplitController.showTarget();
}
// Update preferences
recordDocument.setLibraryVisible(librarySplitController.isTargetVisible());
recordDocument.setLeftVisible(leftSplitController.isTargetVisible());
break;
case TOGGLE_DOCUMENT_PANEL:
if (documentSplitController.isTargetVisible()) {
assert leftSplitController.isTargetVisible();
documentSplitController.hideTarget();
if (!librarySplitController.isTargetVisible()) {
leftSplitController.hideTarget();
}
} else {
if (!leftSplitController.isTargetVisible()) {
leftSplitController.showTarget();
}
documentSplitController.showTarget();
}
// Update preferences
recordDocument.setDocumentVisible(documentSplitController.isTargetVisible());
recordDocument.setLeftVisible(leftSplitController.isTargetVisible());
break;
case TOGGLE_OUTLINES_VISIBILITY:
contentPanelController.setOutlinesVisible(
! contentPanelController.isOutlinesVisible());
break;
case TOGGLE_GUIDES_VISIBILITY:
contentPanelController.setGuidesVisible(
! contentPanelController.isGuidesVisible());
break;
case ADD_SCENE_STYLE_SHEET:
sceneStyleSheetMenuController.performAddSceneStyleSheet();
break;
case SET_RESOURCE:
resourceController.performSetResource();
// Update preferences
recordDocument.setI18NResourceFile(getResourceFile());
break;
case REMOVE_RESOURCE:
resourceController.performRemoveResource();
// Update preferences
recordDocument.setI18NResourceFile(getResourceFile());
break;
case REVEAL_RESOURCE:
resourceController.performRevealResource();
break;
case HELP:
performHelp();
break;
case SHOW_SAMPLE_CONTROLLER:
if (skeletonWindowController == null) {
skeletonWindowController = new SkeletonWindowController(editorController,
Utils.makeTitle(editorController.getFxomDocument()), getStage());
skeletonWindowController.setToolStylesheet(getToolStylesheet());
}
skeletonWindowController.openWindow();
break;
default:
assert false;
break;
}
}