private void loadModule() { // basic settings session.setUiElements(new UiElements(null)); // Get web page's BODY RootLayoutPanel body = RootLayoutPanel.get(); // check RPC url if (session.getRpcUrl().isEmpty()) { VerticalPanel bodyContents = new VerticalPanel(); bodyContents.setSize("100%", "300px"); bodyContents.add( new HTML(new Image(LargeIcons.INSTANCE.errorIcon()) + "<h2>RPC SERVER NOT FOUND!</h2>")); bodyContents.setCellHorizontalAlignment( bodyContents.getWidget(0), HasHorizontalAlignment.ALIGN_CENTER); bodyContents.setCellVerticalAlignment( bodyContents.getWidget(0), HasVerticalAlignment.ALIGN_BOTTOM); body.add(bodyContents); return; } // WEB PAGE SPLITTER bodySplitter.getElement().setId("appFormGUI"); body.add(bodySplitter); // left menu leftMenu = new ApplicationFormLeftMenu(); // show loading box loadingBox = session.getUiElements().perunLoadingBox(); loadingBox.show(); // switch menu event JsonCallbackEvents events = new JsonCallbackEvents() { @Override public void onFinished(JavaScriptObject jso) { bodySplitter.clear(); bodySplitter.addSouth(getFooter(), 23); ArrayList<Application> apps = JsonUtils.jsoAsList(jso); if (apps != null && !apps.isEmpty()) { // show menu bodySplitter.addWest(leftMenu, 280); } // else don't show menu // MAIN CONTENT contentPanel.setSize("100%", "100%"); contentPanel.add(leftMenu.getContent()); bodySplitter.add(contentPanel); // Append more GUI elements from UiElements class which are not part of splitted design // WE DON'T WANT TO CONFUSE USER WITH STATUS MESSAGES // bodySplitter.getElement().appendChild(session.getUiElements().getStatus().getElement()); // status // starts loading isUserMemberOfVo(); // hides the loading box loadingBox.hide(); } @Override public void onError(PerunError error) { // MAIN CONTENT bodySplitter.clear(); bodySplitter.addSouth(getFooter(), 23); contentPanel.clear(); contentPanel.setSize("100%", "100%"); contentPanel.add(leftMenu.getContent()); bodySplitter.add(contentPanel); // Append more GUI elements from UiElements class which are not part of splitted design // bodySplitter.getElement().appendChild(session.getUiElements().getStatus().getElement()); // status // starts loading isUserMemberOfVo(); // hides the loading box loadingBox.hide(); } }; // load VO to check if exists loadVo(events); }
/** * Prepares the GUI * * @param entity PerunEntity GROUP or VO * @param applicationType INITIAL | EXTENSION */ protected void prepareGui(PerunEntity entity, String applicationType) { // trigger email verification as first if present in URL if (Location.getParameterMap().keySet().contains("m") && Location.getParameterMap().keySet().contains("i")) { String verifyI = Location.getParameter("i"); String verifyM = Location.getParameter("m"); if (verifyI != null && !verifyI.isEmpty() && verifyM != null && !verifyM.isEmpty()) { final SimplePanel verifContent = new SimplePanel(); Anchor a = leftMenu.addItem( ApplicationMessages.INSTANCE.emailValidationMenuItem(), SmallIcons.INSTANCE.emailIcon(), verifContent); a.fireEvent(new ClickEvent() {}); ValidateEmail request = new ValidateEmail( verifyI, verifyM, new JsonCallbackEvents() { @Override public void onLoadingStart() { verifContent.clear(); verifContent.add(new AjaxLoaderImage()); } @Override public void onFinished(JavaScriptObject jso) { BasicOverlayType obj = jso.cast(); if (obj.getBoolean() == true) { verifContent.clear(); FlexTable ft = new FlexTable(); ft.setSize("100%", "300px"); ft.setHTML( 0, 0, new Image(LargeIcons.INSTANCE.acceptIcon()) + "<h2>" + ApplicationMessages.INSTANCE.emailValidationSuccess() + "</h2>"); ft.getFlexCellFormatter() .setHorizontalAlignment(0, 0, HasHorizontalAlignment.ALIGN_CENTER); ft.getFlexCellFormatter() .setVerticalAlignment(0, 0, HasVerticalAlignment.ALIGN_MIDDLE); verifContent.add(ft); } else { verifContent.clear(); FlexTable ft = new FlexTable(); ft.setSize("100%", "300px"); ft.setHTML( 0, 0, new Image(LargeIcons.INSTANCE.deleteIcon()) + "<h2>" + ApplicationMessages.INSTANCE.emailValidationFail() + "</h2>"); ft.getFlexCellFormatter() .setHorizontalAlignment(0, 0, HasHorizontalAlignment.ALIGN_CENTER); ft.getFlexCellFormatter() .setVerticalAlignment(0, 0, HasVerticalAlignment.ALIGN_MIDDLE); verifContent.add(ft); } } @Override public void onError(PerunError error) { ((AjaxLoaderImage) verifContent.getWidget()).loadingError(error); } }); request.retrieveData(); leftMenu.addLogoutItem(); return; } } // group and extension is not allowed if (group != null && applicationType.equalsIgnoreCase("EXTENSION")) { RootLayoutPanel panel = RootLayoutPanel.get(); panel.clear(); FlexTable ft = new FlexTable(); ft.setSize("100%", "300px"); ft.setHTML( 0, 0, new Image(LargeIcons.INSTANCE.errorIcon()) + "<h2>Error: " + ApplicationMessages.INSTANCE.groupMembershipCantBeExtended( group.getName(), vo.getName()) + "</h2>"); ft.getFlexCellFormatter().setHorizontalAlignment(0, 0, HasHorizontalAlignment.ALIGN_CENTER); ft.getFlexCellFormatter().setVerticalAlignment(0, 0, HasVerticalAlignment.ALIGN_MIDDLE); panel.add(ft); return; } // application form page ApplicationFormPage formPage = new ApplicationFormPage(vo, group, applicationType); // even user "not yet in perun" can have some applications sent (therefore display by session // info) UsersApplicationsPage appsPage = new UsersApplicationsPage(); // if rt test if ("true".equals(Location.getParameter("rttest"))) { TestRtReportingTabItem tabItem = new TestRtReportingTabItem(); Widget rtTab = tabItem.draw(); leftMenu.addItem("RT test", SmallIcons.INSTANCE.settingToolsIcon(), rtTab); } // proper menu text String appMenuText = ApplicationMessages.INSTANCE.applicationFormForVo(vo.getName()); if (group != null) { appMenuText = ApplicationMessages.INSTANCE.applicationFormForGroup(group.getName()); } if (applicationType.equalsIgnoreCase("EXTENSION")) { appMenuText = ApplicationMessages.INSTANCE.membershipExtensionForVo(vo.getName()); if (group != null) { appMenuText = ApplicationMessages.INSTANCE.membershipExtensionForGroup(group.getName()); } } // load list of applications first if param in session if ("apps".equals(Location.getParameter("page"))) { Anchor a = leftMenu.addItem( ApplicationMessages.INSTANCE.applications(), SmallIcons.INSTANCE.applicationFromStorageIcon(), appsPage); leftMenu.addItem(appMenuText, SmallIcons.INSTANCE.applicationFormIcon(), formPage); a.fireEvent(new ClickEvent() {}); // appsPage.menuClick(); // load list of apps } else { Anchor a = leftMenu.addItem(appMenuText, SmallIcons.INSTANCE.applicationFormIcon(), formPage); leftMenu.addItem( ApplicationMessages.INSTANCE.applications(), SmallIcons.INSTANCE.applicationFromStorageIcon(), appsPage); a.fireEvent(new ClickEvent() {}); // formPage.menuClick(); // load application form } leftMenu.addLogoutItem(); }