/** * 动作 * * @param e 事件 */ public void actionPerformed(ActionEvent e) { DesignerEnvManager envManager = DesignerEnvManager.getEnvManager(); Env selectedEnv = envManager.getEnv(this.getName()); try { if (selectedEnv instanceof RemoteEnv && !((RemoteEnv) selectedEnv).testServerConnection()) { JOptionPane.showMessageDialog( DesignerContext.getDesignerFrame(), Inter.getLocText(new String[] {"M-SwitchWorkspace", "Failed"})); return; } String remoteVersion = selectedEnv.getDesignerVersion(); if (StringUtils.isBlank(remoteVersion) || ComparatorUtils.compare(remoteVersion, ProductConstants.DESIGNER_VERSION) < 0) { String infor = Inter.getLocText("Server-version-tip"); String moreInfo = Inter.getLocText("Server-version-tip-moreInfo"); FRLogger.getLogger().log(Level.WARNING, infor); new InformationWarnPane(infor, moreInfo, Inter.getLocText("Tooltips")).show(); return; } SignIn.signIn(selectedEnv); LicUtils.resetBytes(); HistoryTemplateListPane.getInstance().getCurrentEditingTemplate().refreshToolArea(); fireDSChanged(); } catch (Exception em) { FRContext.getLogger().error(em.getMessage(), em); JOptionPane.showMessageDialog( DesignerContext.getDesignerFrame(), Inter.getLocText(new String[] {"M-SwitchWorkspace", "Failed"})); TemplatePane.getInstance().editItems(); } }
/** * 当前的报表运行环境切换到env * * @param env 需要切换去的环境 */ public static void switchToEnv(Env env) { if (env == null) { return; } Env oldEnv = FRContext.getCurrentEnv(); String oldEnvPath = oldEnv == null ? null : oldEnv.getPath(); // 看一下这个env在DesignerEnvManager里面有没有对应的,有的话就setCurrentEnvName DesignerEnvManager envManager = DesignerEnvManager.getEnvManager(); java.util.Iterator<String> nameIt = envManager.getEnvNameIterator(); while (nameIt.hasNext()) { String name = nameIt.next(); if (ComparatorUtils.equals(envManager.getEnv(name), env)) { envManager.setCurEnvName(name); break; } } // 更新CurrentEnv于FRContext & DesignerEnvManager FRContext.setCurrentEnv(env); final Env run_env = env; // 刷新DesignerFrame里面的面板 SwingUtilities.invokeLater( new Runnable() { public void run() { if (DesignerContext.getDesignerFrame() == null) { return; } DesignerContext.getDesignerFrame().refreshEnv(run_env); DesignerContext.getDesignerFrame().repaint(); // kunsnat: 切换环境后 刷新下 报表. 比如图表某些风格改变. } }); // 当换了运行环境,重置服务器,让它下次预览时重启 if (env instanceof LocalEnv && !ComparatorUtils.equals(env.getPath(), oldEnvPath)) { StartServer.currentEnvChanged(); } }