private void doSwitchScreen(long projectId, String screenName, View view) { if (!projectMap.containsKey(projectId)) { OdeLog.wlog( "DesignToolbar: no project with id " + projectId + ". Ignoring SwitchScreenAction.execute()."); return; } DesignProject project = projectMap.get(projectId); if (currentProject != project) { // need to switch projects first. this will not switch screens. if (!switchToProject(projectId, project.name)) { return; } // currentProject == project now } String newScreenName = screenName; if (!currentProject.screens.containsKey(newScreenName)) { // Can't find the requested screen in this project. This shouldn't happen, but if it does // for some reason, try switching to Screen1 instead. OdeLog.wlog( "Trying to switch to non-existent screen " + newScreenName + " in project " + currentProject.name + ". Trying Screen1 instead."); if (currentProject.screens.containsKey(YoungAndroidSourceNode.SCREEN1_FORM_NAME)) { newScreenName = YoungAndroidSourceNode.SCREEN1_FORM_NAME; } else { // something went seriously wrong! ErrorReporter.reportError( "Something is wrong. Can't find Screen1 for project " + currentProject.name); return; } } currentView = view; Screen screen = currentProject.screens.get(newScreenName); ProjectEditor projectEditor = screen.formEditor.getProjectEditor(); currentProject.setCurrentScreen(newScreenName); setDropDownButtonCaption(WIDGET_NAME_SCREENS_DROPDOWN, newScreenName); OdeLog.log("Setting currentScreen to " + newScreenName); if (currentView == View.FORM) { projectEditor.selectFileEditor(screen.formEditor); toggleEditor(false); } else { // must be View.BLOCKS projectEditor.selectFileEditor(screen.blocksEditor); toggleEditor(true); } // Inform the Blockly Panel which project/screen (aka form) we are working on BlocklyPanel.setCurrentForm(projectId + "_" + newScreenName); updateButtons(); }