📄 application.java
字号:
* Adds text to current status message in the application's status line */ public static native String getStatus() /*-{ return $wnd.status; }-*/; /** * Clears application's status line. * Equivalent to showStatus(null) and showStatus(""); */ public static void clearStatus() { setStatus(""); } public static native String getUserAgent()/*-{ return $wnd.navigator.userAgent; }-*/; public static boolean isInternetExplorer() { return getUserAgent().indexOf(BROWSER_MSIE) != -1; } public static boolean isFireFox() { return getUserAgent().indexOf(BROWSER_FIREFOX) != -1; } private QFrame previousFrame; public void selectFrame(int frameToSelect) { //removing current frame if(previousFrame != null) { RootPanel.get().remove(previousFrame.getView()); previousFrame.disabled(); } //selecting new frame switch(frameToSelect) { case Application.AD_HOC_REPORT_FRAME: previousFrame = getAdhocReport(); break; case Application.MAIN_FRAME: previousFrame = mainFrameBuilder.getMainFrame(); break; case Application.LOGIN_FRAME: previousFrame = loginFrame; break; } RootPanel.get().add(previousFrame.getView()); previousFrame.activated(); } public String getFocusId(FamgMeta.Index index) { return appMetaData.getFocuses()[index.focus].getFocusName(); } public void onEvent(Event event, Widget sender) { if(event == AdhocReportFrame.Events.REPORT_RUN) { List filters = getAdhocContext().getAdhocFilters(); getAdhocReport().runReport(filters); } else if(event == AdhocReportFrame.Events.EXPORT_GRID_EXCEL) { List filters = getAdhocContext().getAdhocFilters(); getAdhocReport().exportGridToExcel(filters); } else if(event == AdhocReportFrame.Events.EXPORT_GRID_WORD) { List filters = getAdhocContext().getAdhocFilters(); getAdhocReport().exportGridToWord(filters); } else if(event == AdhocReportFrame.Events.EXPORT_GRID_HTML) { List filters = getAdhocContext().getAdhocFilters(); getAdhocReport().exportGridToHtml(filters); } else if(event == AdhocReportFrame.Events.SAVE_REPORT) { List filters = getAdhocContext().getAdhocFilters(); getAdhocReport().saveAdhocReport(filters); } else if(event == AdhocReportFrame.Events.MAIN_FRAME) { selectFrame(Application.MAIN_FRAME); } else if(event == AdhocReportFrame.Events.ELEMENT_REMOVED_EVENT) { AdhocData adhocData = ((AdhocData) event.getData()); if(getAdhocReport().reportElementsSize() == 0) { getAdhocContext().enableAdhocForAllForms(); } getAdhocContext().setAdhocElementOut(adhocData.getFieldSent().getFieldID(), adhocData.getFormIndex()); } else if(event == AdhocReportFrame.Events.REPORT_LOADED) { loadReport((LoadReportResponseObject) event.getData()); } else if (event == LoginFrame.Events.LOGIN) { LoginFrame.LoginEventData eventData = /*]/*[*/(LoginFrame.LoginEventData)/*]*[*//*]/[*/ LoginFrame.Events.LOGIN.getData(); remoteLogin(eventData.login, eventData.password); } else if (event == IMainFrame.Events.LOGOUT) { remoteLogout(); } else if (event == IMainFrame.Events.SELECT_ADHOCFRAME) { selectFrame(Application.AD_HOC_REPORT_FRAME); } else if (event == IMainFrame.Events.MAINFRAME_REPORT_DESIGN) { AdhocData eventData = ((AdhocData) event.getData()); invertControlState(eventData); } else if (event == IMainFrame.Events.TAB_INITIALIZED) { TabMeta.Index index = ((TabMeta.Index) event.getData()); List elements = getAdhocReport().getReportElements(); Set inReport = new HashSet(); for(int i = 0; i < elements.size(); i++) { AdhocData data = (AdhocData) elements.get(i); if(data.getFormIndex().equalsToIndex(index)) { inReport.add(data); } } getAdhocContext().setAdhocData(inReport, index); } } private AdhocOperations getAdhocContext() { return mainFrameBuilder.getOperationContext().getAdhocOperations(); } /** * Invert control state to opposite one, and turn other forms controls to apropriate state if needed. * @param eventData adhoc event data. */ private void invertControlState(AdhocData eventData) { if(eventData.getElementDesignReportData() == QFormElementModel.NOT_IN_REPORT) { getAdhocReport().addReportElement(eventData); if(getAdhocReport().reportElementsSize() == 1) { getAdhocContext().enableAdhocForJoinable(eventData.getFormIndex()); } getAdhocContext().setAdhocElementIn(eventData.getFieldSent().getFieldID(), eventData.getFormIndex()); } else { getAdhocReport().removeReportElement(eventData); if(getAdhocReport().reportElementsSize() == 0) { getAdhocContext().enableAdhocForAllForms(); } getAdhocContext().setAdhocElementOut(eventData.getFieldSent().getFieldID(), eventData.getFormIndex()); } } private void loadReport(LoadReportResponseObject resp) { //set filters to mainframe getAdhocContext().setFormsFilters(resp.getFilters(), true); //create adhoc data elements for adhoc frame List reportFields = resp.getReportFields(); List adhocElements = new ArrayList(); FamgMeta.Index indexToEnable = null; for(int i = 0; i < reportFields.size(); i++) { EntityElement element = (EntityElement) reportFields.get(i); AdhocData data = getData(element); if(data != null) { adhocElements.add(data); indexToEnable = data.getFormIndex(); } } //process those elements in adhoc frame. (removes selection from old adhoc elements from mainframe) getAdhocReport().loadReport(resp.getReportName(), adhocElements); //enable all joinable forms, disable all other. In order if we have bound graph it is enaught to use single element form to enable whole graph getAdhocContext().enableAdhocForJoinable(indexToEnable); //set loaded elements in mainframe for(int i = 0; i < adhocElements.size(); i++) { AdhocData data = (AdhocData) adhocElements.get(i); FamgMeta.Index index = data.getFormIndex(); getAdhocContext().setAdhocElementIn(data.getFieldSent().getFieldID(), index); } } private AdhocData getData(EntityElement element) { FamgMeta.Index formIndex = (FamgMeta.Index) appMetaData.getIndexByID(element.getFormId()); if(formIndex == null) { return null; } FamgMeta meta = appMetaData.getFamgMeta(formIndex); FieldMeta fieldMeta = meta.getForm().getEntityMeta().getField(element.getElementId()); if(fieldMeta == null) { return null; } fieldMeta.setCaption(element.getElementCaption()); return new AdhocData(formIndex, fieldMeta, 0); } private void remoteLogout() { if (cancelLogout()) { return; } UserSessionManager.logout(); setStatus("Request sent. Waiting for reply..."); } private void initMainFrameBuilder(MetaData meta) { initMainFrameBuilder(); mainFrameBuilder.initBuilder(meta); getAdhocContext().getEventSource().addEventListener(this); } /** * Initialize mainFrame builder only at once, because we don't need * to re-create structure of the mainframe during re-login or any other * user actions. */ private void initMainFrameBuilder() { if(mainFrameBuilder == null) { mainFrameBuilder = createMainFrameBuilder(); } } /*public IMainFrame createMainFrame() { // can be overriden return new MainFrame(); }*/ protected LoginFrame createLoginFrame() { // can be overriden return new LoginFrame(isFireFox()); } private boolean cancelLogout() { if (! getAdhocContext().isInEditMode()) { return false; } String confirmation = I18N.getMessages().applicationCloseConfirmationLong(); boolean ok = Window.confirm(confirmation); return (! ok); } public void onLengthyTaskStart() { WindowHelper.setApplicationBusyMouse(true); } public void onLengthyTaskEnd() { WindowHelper.setApplicationBusyMouse(false); } public MainFrameBuilder createMainFrameBuilder() { return new DefaultMainFrameBuilder(); }}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -