public Widget draw() { this.titleWidget.setText( Utils.getStrippedStringWithEllipsis(group.getName()) + ": " + "ext sources"); // main panel VerticalPanel vp = new VerticalPanel(); vp.setSize("100%", "100%"); // HORIZONTAL MENU TabMenu menu = new TabMenu(); menu.addWidget(UiElements.getRefreshButton(this)); // get VO resources final GetGroupExtSources extSources = new GetGroupExtSources(groupId); // refresh table event final JsonCallbackEvents events = JsonCallbackEvents.refreshTableEvents(extSources); // create ext source button CustomButton addButton = TabMenu.getPredefinedButton( ButtonType.ADD, true, ButtonTranslation.INSTANCE.addExtSource(), new ClickHandler() { public void onClick(ClickEvent event) { session .getTabManager() .addTabToCurrentTab(new AddGroupExtSourceTabItem(groupId), true); } }); if (session.isVoAdmin(voId)) { menu.addWidget(addButton); } final CustomButton removeButton = TabMenu.getPredefinedButton( ButtonType.REMOVE, ButtonTranslation.INSTANCE.removeExtSource()); removeButton.addClickHandler( new ClickHandler() { public void onClick(ClickEvent event) { final ArrayList<ExtSource> extSourcesToRemove = extSources.getTableSelectedList(); String text = "Following external sources will be removed from Group. You won't be able to import members from them anymore."; UiElements.showDeleteConfirm( extSourcesToRemove, text, new ClickHandler() { @Override public void onClick(ClickEvent clickEvent) { // TODO - SHOULD HAVE ONLY ONE CALLBACK TO CORE !! for (int i = 0; i < extSourcesToRemove.size(); i++) { RemoveExtSource request; if (i == extSourcesToRemove.size() - 1) { request = new RemoveExtSource( JsonCallbackEvents.disableButtonEvents(removeButton, events)); } else { request = new RemoveExtSource( JsonCallbackEvents.disableButtonEvents(removeButton)); } request.removeGroupExtSource(groupId, extSourcesToRemove.get(i).getId()); } } }); } }); if (session.isVoAdmin(voId)) { menu.addWidget(removeButton); } // authorization - enable buttons for vo admin only. if (!session.isVoAdmin(voId)) { addButton.setEnabled(false); removeButton.setEnabled(false); extSources.setCheckable(false); } menu.addFilterWidget( new ExtendedSuggestBox(extSources.getOracle()), new PerunSearchEvent() { @Override public void searchFor(String text) { extSources.filterTable(text); } }, "Filter external sources by name or type"); // add menu to the main panel vp.add(menu); vp.setCellHeight(menu, "30px"); CellTable<ExtSource> table = extSources.getTable(); if (session.isVoAdmin(voId)) { removeButton.setEnabled(false); JsonUtils.addTableManagedButton(extSources, table, removeButton); } table.addStyleName("perun-table"); table.setWidth("100%"); ScrollPanel sp = new ScrollPanel(table); sp.addStyleName("perun-tableScrollPanel"); vp.add(sp); session.getUiElements().resizePerunTable(sp, 350, this); this.contentWidget.setWidget(vp); return getWidget(); }
/** * Prepares the widgets from the items as A FORM FOR SETTINGS * * @param items */ public void prepareSettings(final ArrayList<ApplicationFormItem> items) { // refresh table events final JsonCallbackEvents refreshEvents = new JsonCallbackEvents() { public void onFinished(JavaScriptObject jso) { prepareSettings(items); } }; FlexTable ft = new FlexTable(); ft.addStyleName("borderTable"); ft.setWidth("100%"); ft.setCellPadding(8); FlexCellFormatter fcf = ft.getFlexCellFormatter(); ft.setHTML(0, 0, "<strong>Short name</strong>"); ft.setHTML(0, 1, "<strong>Type</strong>"); ft.setHTML(0, 2, "<strong>Preview</strong>"); ft.setHTML(0, 3, "<strong>Edit</strong>"); fcf.setStyleName(0, 0, "GPBYFDEFD"); fcf.setStyleName(0, 1, "GPBYFDEFD"); fcf.setStyleName(0, 2, "GPBYFDEFD"); fcf.setStyleName(0, 3, "GPBYFDEFD"); String locale = "en"; if (LocaleInfo.getCurrentLocale().getLocaleName().equals("default") || LocaleInfo.getCurrentLocale().getLocaleName().equals("en")) { locale = "en"; } else { locale = "cs"; } int i = 1; for (final ApplicationFormItem item : items) { final int index = i - 1; // not yet set locale on config page RegistrarFormItemGenerator gen = new RegistrarFormItemGenerator(item, locale); // 0 = label String label = ""; if (gen.isLabelShown()) { label = item.getShortname(); } if (item.isRequired() == true) { label += "*"; } ft.setHTML(i, 0, label); // 1 = type ft.setHTML(i, 1, item.getType()); // 2 = preview Widget w = gen.getWidget(); ft.setWidget(i, 2, w); // 3 = EDIT FlexTable editTable = new FlexTable(); editTable.setStyleName("noBorder"); ft.setWidget(i, 3, editTable); // color for items with unsaved changes if (item.wasEdited() == true) { ft.getFlexCellFormatter().setStyleName(i, 0, "log-changed"); ft.getFlexCellFormatter().setStyleName(i, 1, "log-changed"); ft.getFlexCellFormatter().setStyleName(i, 2, "log-changed"); ft.getFlexCellFormatter().setStyleName(i, 3, "log-changed"); } // mark row for deletion if (item.isForDelete()) { ft.getFlexCellFormatter().setStyleName(i, 0, "log-error"); ft.getFlexCellFormatter().setStyleName(i, 1, "log-error"); ft.getFlexCellFormatter().setStyleName(i, 2, "log-error"); ft.getFlexCellFormatter().setStyleName(i, 3, "log-error"); // undelete button CustomButton undelete = new CustomButton( ButtonTranslation.INSTANCE.undeleteFormItemButton(), ButtonTranslation.INSTANCE.undeleteFormItem(), SmallIcons.INSTANCE.arrowLeftIcon(), new ClickHandler() { public void onClick(ClickEvent event) { items.get(index).setForDelete(false); // refresh prepareSettings(items); } }); FlexTable undelTable = new FlexTable(); undelTable.setStyleName("noBorder"); undelTable.setHTML( 0, 0, "<strong><span style=\"color:red;\">MARKED FOR DELETION</span></strong>"); undelTable.setWidget(0, 1, undelete); ft.setWidget(i, 3, undelTable); } // color for new items to be saved if (item.getId() == 0) { ft.getFlexCellFormatter().setStyleName(i, 0, "log-success"); ft.getFlexCellFormatter().setStyleName(i, 1, "log-success"); ft.getFlexCellFormatter().setStyleName(i, 2, "log-success"); ft.getFlexCellFormatter().setStyleName(i, 3, "log-success"); } // up PushButton upButton = new PushButton( new Image(SmallIcons.INSTANCE.arrowUpIcon()), new ClickHandler() { public void onClick(ClickEvent event) { if (index - 1 < 0) return; // move it items.remove(index); items.add(index - 1, item); item.setOrdnum(item.getOrdnum() - 1); item.setEdited(true); // refresh prepareSettings(items); } }); editTable.setWidget(0, 0, upButton); upButton.setTitle(ButtonTranslation.INSTANCE.moveFormItemUp()); // down PushButton downButton = new PushButton( new Image(SmallIcons.INSTANCE.arrowDownIcon()), new ClickHandler() { public void onClick(ClickEvent event) { if (index + 1 >= items.size()) return; // move it items.remove(index); items.add(index + 1, item); item.setOrdnum(item.getOrdnum() + 1); item.setEdited(true); // refresh prepareSettings(items); } }); editTable.setWidget(0, 1, downButton); downButton.setTitle(ButtonTranslation.INSTANCE.moveFormItemDown()); // edit CustomButton editButton = new CustomButton( ButtonTranslation.INSTANCE.editFormItemButton(), ButtonTranslation.INSTANCE.editFormItem(), SmallIcons.INSTANCE.applicationFormEditIcon()); editButton.addClickHandler( new ClickHandler() { public void onClick(ClickEvent event) { session .getTabManager() .addTabToCurrentTab(new EditFormItemTabItem(item, refreshEvents)); } }); editTable.setWidget(0, 2, editButton); // remove CustomButton removeButton = new CustomButton( ButtonTranslation.INSTANCE.deleteButton(), ButtonTranslation.INSTANCE.deleteFormItem(), SmallIcons.INSTANCE.deleteIcon()); removeButton.addClickHandler( new ClickHandler() { public void onClick(ClickEvent event) { HTML text = new HTML( "<p>Deleting of form items is <strong>NOT RECOMMENDED!</strong><p>You will loose access to data users submitted in older applications within this form item!<p>Do you want to continue?"); Confirm c = new Confirm( "Delete confirm", text, new ClickHandler() { public void onClick(ClickEvent event) { // mark for deletion when save changes items.get(index).setForDelete(true); // remove if newly created if (items.get(index).getId() == 0) { items.remove(index); } // refresh prepareSettings(items); } }, true); c.setNonScrollable(true); c.show(); } }); editTable.setWidget(0, 3, removeButton); // format fcf.setHeight(i, 0, "28px"); fcf.setVerticalAlignment(i, 0, HasVerticalAlignment.ALIGN_MIDDLE); fcf.setVerticalAlignment(i, 1, HasVerticalAlignment.ALIGN_MIDDLE); fcf.setVerticalAlignment(i, 2, HasVerticalAlignment.ALIGN_MIDDLE); i++; } contents.setWidget(ft); }
public Widget draw() { titleWidget.setText( Utils.getStrippedStringWithEllipsis(facility.getName()) + " (" + facility.getType() + "): create resource"); VerticalPanel vp = new VerticalPanel(); vp.setSize("100%", "100%"); // form inputs final ExtendedTextBox nameTextBox = new ExtendedTextBox(); final TextBox descriptionTextBox = new TextBox(); final ListBoxWithObjects<VirtualOrganization> vosDropDown = new ListBoxWithObjects<VirtualOrganization>(); // send button final CustomButton createButton = TabMenu.getPredefinedButton(ButtonType.CREATE, ButtonTranslation.INSTANCE.createResource()); // local events fills the listbox of Vos and Slds JsonCallbackEvents event = new JsonCallbackEvents() { @Override public void onFinished(JavaScriptObject jso) { // fill VOs listbox vosDropDown.clear(); ArrayList<VirtualOrganization> vos = JsonUtils.jsoAsList(jso); vos = new TableSorter<VirtualOrganization>().sortByName(vos); for (VirtualOrganization vo : vos) { vosDropDown.addItem(vo); } if (!vos.isEmpty()) createButton.setEnabled(true); } @Override public void onLoadingStart() { vosDropDown.clear(); vosDropDown.addItem("Loading..."); createButton.setEnabled(false); } @Override public void onError(PerunError error) { vosDropDown.clear(); vosDropDown.addItem("Error while loading"); createButton.setEnabled(false); } }; // load available VOs final GetVos vos = new GetVos(event); vos.setForceAll(true); vos.retrieveData(); // layout FlexTable layout = new FlexTable(); layout.setStyleName("inputFormFlexTable"); FlexCellFormatter cellFormatter = layout.getFlexCellFormatter(); // Add some standard form options layout.setHTML(0, 0, "Name:"); layout.setWidget(0, 1, nameTextBox); layout.setHTML(1, 0, "Description:"); layout.setWidget(1, 1, descriptionTextBox); layout.setHTML(2, 0, "VO:"); layout.setWidget(2, 1, vosDropDown); layout.setHTML(3, 0, "Facility:"); layout.setHTML(3, 1, facility.getName() + " (" + facility.getType() + ")"); for (int i = 0; i < layout.getRowCount(); i++) { cellFormatter.addStyleName(i, 0, "itemName"); } layout.setWidth("350px"); TabMenu menu = new TabMenu(); final ExtendedTextBox.TextBoxValidator validator = new ExtendedTextBox.TextBoxValidator() { @Override public boolean validateTextBox() { if (nameTextBox.getTextBox().getText().trim().isEmpty()) { nameTextBox.setError("Name can't be empty."); return false; } nameTextBox.setOk(); return true; } }; nameTextBox.setValidator(validator); createButton.addClickHandler( new ClickHandler() { @Override public void onClick(ClickEvent event) { // loads new tab when creating successful, also disable button JsonCallbackEvents localEvents = new JsonCallbackEvents() { public void onLoadingStart() { (JsonCallbackEvents.disableButtonEvents(createButton)).onLoadingStart(); } public void onFinished(JavaScriptObject jso) { (JsonCallbackEvents.disableButtonEvents(createButton)).onFinished(jso); Resource res = (Resource) jso; session .getTabManager() .addTabToCurrentTab( new CreateFacilityResourceManageServicesTabItem(facility, res), true); } public void onError(PerunError error) { (JsonCallbackEvents.disableButtonEvents(createButton)).onError(error); } }; if (validator.validateTextBox()) { // request CreateResource request = new CreateResource(localEvents); request.createResource( nameTextBox.getTextBox().getText().trim(), descriptionTextBox.getText().trim(), facility.getId(), vosDropDown.getSelectedObject().getId()); } } }); menu.addWidget(createButton); final TabItem tab = this; menu.addWidget( TabMenu.getPredefinedButton( ButtonType.CANCEL, "", new ClickHandler() { @Override public void onClick(ClickEvent clickEvent) { session.getTabManager().closeTab(tab, false); } })); vp.add(layout); vp.add(menu); vp.setCellHorizontalAlignment(menu, HasHorizontalAlignment.ALIGN_RIGHT); this.contentWidget.setWidget(vp); return getWidget(); }
public Widget draw() { titleWidget.setText(def.getName()); final TabItem tab = this; // create main panel for content final FlexTable mainPage = new FlexTable(); mainPage.setWidth("100%"); final ExtendedTextBox description = new ExtendedTextBox(); description.setWidth("100%"); description.getTextBox().setText(def.getDescription()); final ExtendedTextBox.TextBoxValidator validator = new ExtendedTextBox.TextBoxValidator() { @Override public boolean validateTextBox() { if (description.getTextBox().getText().trim().isEmpty()) { description.setError("Description can't be empty."); return false; } description.setOk(); return true; } }; final ExtendedTextBox displayName = new ExtendedTextBox(); displayName.setWidth("100%"); displayName.getTextBox().setText(def.getDisplayName()); final ExtendedTextBox.TextBoxValidator validatorName = new ExtendedTextBox.TextBoxValidator() { @Override public boolean validateTextBox() { if (displayName.getTextBox().getText().trim().isEmpty()) { displayName.setError("Display name can't be empty."); return false; } displayName.setOk(); return true; } }; description.setValidator(validator); displayName.setValidator(validatorName); FlexTable attributeDetailTable = new FlexTable(); attributeDetailTable.setStyleName("inputFormFlexTable"); final CustomButton updateButton = TabMenu.getPredefinedButton(ButtonType.SAVE, "Save attribute details"); updateButton.addClickHandler( new ClickHandler() { @Override public void onClick(ClickEvent event) { final ArrayList<AttributeRights> list = new ArrayList<AttributeRights>(); for (AttributeRights r : rights) { if (r.getRole().equalsIgnoreCase("SELF")) { list.add(getRightsFromWidgets(selfRead, selfWrite, r)); } else if (r.getRole().equalsIgnoreCase("VOADMIN")) { list.add(getRightsFromWidgets(voRead, voWrite, r)); } else if (r.getRole().equalsIgnoreCase("GROUPADMIN")) { list.add(getRightsFromWidgets(groupRead, groupWrite, r)); } else if (r.getRole().equalsIgnoreCase("FACILITYADMIN")) { list.add(getRightsFromWidgets(facilityRead, facilityWrite, r)); } } if ((!def.getDescription().equals(description.getTextBox().getText().trim()) || !def.getDisplayName().equals(displayName.getTextBox().getText().trim()))) { if (!validator.validateTextBox() || !validatorName.validateTextBox()) return; def.setDescription(description.getTextBox().getText().trim()); def.setDisplayName(displayName.getTextBox().getText().trim()); UpdateAttribute request = new UpdateAttribute( JsonCallbackEvents.disableButtonEvents( updateButton, new JsonCallbackEvents() { @Override public void onFinished(JavaScriptObject jso) { // after update - update rights SetAttributeRights request = new SetAttributeRights( JsonCallbackEvents.disableButtonEvents( updateButton, new JsonCallbackEvents() { @Override public void onFinished(JavaScriptObject jso) { enableDisableWidgets(true); } @Override public void onLoadingStart() { enableDisableWidgets(false); } @Override public void onError(PerunError error) { enableDisableWidgets(true); } })); request.setAttributeRights(list); } })); request.updateAttribute(def); } else { // after update - update rights SetAttributeRights request = new SetAttributeRights( JsonCallbackEvents.disableButtonEvents( updateButton, new JsonCallbackEvents() { @Override public void onFinished(JavaScriptObject jso) { enableDisableWidgets(true); } @Override public void onLoadingStart() { enableDisableWidgets(false); } @Override public void onError(PerunError error) { enableDisableWidgets(true); } })); request.setAttributeRights(list); } } }); attributeDetailTable.setHTML(0, 0, "Display name:"); attributeDetailTable.setWidget(0, 1, displayName); attributeDetailTable.setHTML(1, 0, "Description:"); attributeDetailTable.setWidget(1, 1, description); for (int i = 0; i < attributeDetailTable.getRowCount(); i++) { attributeDetailTable.getFlexCellFormatter().setStyleName(i, 0, "itemName"); } final FlexTable rightsTable = new FlexTable(); rightsTable.setStyleName("inputFormFlexTable"); rightsTable.setHTML(0, 1, "<strong>SELF</strong>"); rightsTable.setHTML(0, 2, "<strong>VO</strong>"); rightsTable.setHTML(0, 3, "<strong>GROUP</strong>"); rightsTable.setHTML(0, 4, "<strong>FACILITY</strong>"); rightsTable.setHTML(1, 0, "<strong>READ</strong>"); rightsTable.setHTML(2, 0, "<strong>WRITE</strong>"); rightsTable.setWidget(1, 1, selfRead); rightsTable.setWidget(2, 1, selfWrite); rightsTable.setWidget(1, 2, voRead); rightsTable.setWidget(2, 2, voWrite); rightsTable.setWidget(1, 3, groupRead); rightsTable.setWidget(2, 3, groupWrite); rightsTable.setWidget(1, 4, facilityRead); rightsTable.setWidget(2, 4, facilityWrite); rightsTable.addStyleName("centeredTable"); TabMenu menu = new TabMenu(); menu.addWidget(updateButton); menu.addWidget( TabMenu.getPredefinedButton( ButtonType.CLOSE, "", new ClickHandler() { @Override public void onClick(ClickEvent event) { session.getTabManager().closeTab(tab, false); } })); GetAttributeRights rightsCall = new GetAttributeRights( def.getId(), new JsonCallbackEvents() { @Override public void onFinished(JavaScriptObject jso) { rights = JsonUtils.jsoAsList(jso); for (AttributeRights r : rights) { if (r.getRole().equalsIgnoreCase("SELF")) { setRightsToWidgets(selfRead, selfWrite, r); } else if (r.getRole().equalsIgnoreCase("VOADMIN")) { setRightsToWidgets(voRead, voWrite, r); } else if (r.getRole().equalsIgnoreCase("GROUPADMIN")) { setRightsToWidgets(groupRead, groupWrite, r); } else if (r.getRole().equalsIgnoreCase("FACILITYADMIN")) { setRightsToWidgets(facilityRead, facilityWrite, r); } } enableDisableWidgets(true); rightsTable.setVisible(true); } @Override public void onError(PerunError error) { enableDisableWidgets(true); rightsTable.setVisible(false); } @Override public void onLoadingStart() { enableDisableWidgets(false); rightsTable.setVisible(false); } }); rightsCall.retrieveData(); // create new instance for jsonCall final GetServicesByAttrDefinition services = new GetServicesByAttrDefinition(def.getId()); services.setCheckable(false); CellTable<Service> attrDefTable = services.getTable( new FieldUpdater<Service, String>() { @Override public void update(int index, Service object, String value) { session.getTabManager().addTab(new ServiceDetailTabItem(object)); } }); attrDefTable.setStyleName("perun-table"); ScrollPanel scrollTable = new ScrollPanel(attrDefTable); scrollTable.addStyleName("perun-tableScrollPanel"); session.getUiElements().resizePerunTable(scrollTable, 350, this); // set content to page mainPage.setWidget(0, 0, menu); mainPage.getFlexCellFormatter().setColSpan(0, 0, 2); mainPage.setWidget(1, 0, attributeDetailTable); mainPage.setWidget(1, 1, rightsTable); mainPage.getFlexCellFormatter().setWidth(1, 0, "50%"); mainPage.getFlexCellFormatter().setWidth(1, 1, "50%"); HTML title = new HTML("<p>Required by service</p>"); title.setStyleName("subsection-heading"); mainPage.setWidget(2, 0, title); mainPage.getFlexCellFormatter().setColSpan(2, 0, 2); // put page into scroll panel mainPage.setWidget(3, 0, scrollTable); mainPage.getFlexCellFormatter().setColSpan(3, 0, 2); mainPage.getFlexCellFormatter().setHeight(3, 0, "100%"); this.contentWidget.setWidget(mainPage); return getWidget(); }
public Widget draw() { this.titleWidget.setText( Utils.getStrippedStringWithEllipsis(service.getName()) + ": exec services"); final VerticalPanel vp = new VerticalPanel(); vp.setSize("100%", "100%"); TabMenu menu = new TabMenu(); vp.add(menu); vp.setCellHeight(menu, "30px"); final ListExecServices callback = new ListExecServices(serviceId); CellTable<ExecService> table = callback.getTable( new FieldUpdater<ExecService, String>() { public void update(int index, ExecService object, String value) { // manage details of exec services (dependency, status, update values?) session.getTabManager().addTab(new ViewExecServiceTabItem(object)); } }); // refresh event after deletion final JsonCallbackEvents events = JsonCallbackEvents.refreshTableEvents(callback); menu.addWidget( TabMenu.getPredefinedButton( ButtonType.CREATE, ButtonTranslation.INSTANCE.createExecService(), new ClickHandler() { @Override public void onClick(ClickEvent clickEvent) { session.getTabManager().addTabToCurrentTab(new AddExecServiceTabItem(service)); } })); final CustomButton deleteButton = TabMenu.getPredefinedButton( ButtonType.REMOVE, ButtonTranslation.INSTANCE.deleteSelectedExecServices()); menu.addWidget(deleteButton); deleteButton.addClickHandler( new ClickHandler() { public void onClick(ClickEvent event) { final ArrayList<ExecService> execToRemove = callback.getTableSelectedList(); UiElements.showDeleteConfirm( execToRemove, new ClickHandler() { @Override public void onClick(ClickEvent clickEvent) { // TODO - SHOULD HAVE ONLY ONE CALLBACK TO CORE for (int i = 0; i < execToRemove.size(); i++) { if (i == execToRemove.size() - 1) { DeleteExecService request = new DeleteExecService( JsonCallbackEvents.disableButtonEvents(deleteButton, events)); request.deleteExecService(execToRemove.get(i).getId()); } else { DeleteExecService request = new DeleteExecService( JsonCallbackEvents.disableButtonEvents(deleteButton)); request.deleteExecService(execToRemove.get(i).getId()); } } } }); } }); table.addStyleName("perun-table"); ScrollPanel sp = new ScrollPanel(table); sp.addStyleName("perun-tableScrollPanel"); session.getUiElements().resizePerunTable(sp, 350, this); final CustomButton enable = TabMenu.getPredefinedButton(ButtonType.ENABLE, "Enable selected exec service(s)"); final CustomButton disable = TabMenu.getPredefinedButton(ButtonType.DISABLE, "Disable selected exec service(s)"); menu.addWidget(enable); menu.addWidget(disable); enable.addClickHandler( new ClickHandler() { @Override public void onClick(ClickEvent event) { ArrayList<ExecService> list = callback.getTableSelectedList(); for (int i = 0; i < list.size(); i++) { ExecService e = list.get(i); if (i < list.size() - 1) { // any call if (!e.isEnabled()) { UpdateExecService request = new UpdateExecService(JsonCallbackEvents.disableButtonEvents(enable)); e.setEnabled(true); request.updateExecService(e); } } else { // last call if (!e.isEnabled()) { UpdateExecService request = new UpdateExecService(JsonCallbackEvents.disableButtonEvents(enable, events)); e.setEnabled(true); request.updateExecService(e); } } } } }); disable.addClickHandler( new ClickHandler() { @Override public void onClick(ClickEvent event) { ArrayList<ExecService> list = callback.getTableSelectedList(); for (int i = 0; i < list.size(); i++) { ExecService e = list.get(i); if (i < list.size() - 1) { // any call if (e.isEnabled()) { UpdateExecService request = new UpdateExecService(JsonCallbackEvents.disableButtonEvents(disable)); e.setEnabled(false); request.updateExecService(e); } } else { // last call if (e.isEnabled()) { UpdateExecService request = new UpdateExecService( JsonCallbackEvents.disableButtonEvents(disable, events)); e.setEnabled(false); request.updateExecService(e); } } } } }); deleteButton.setEnabled(false); enable.setEnabled(false); disable.setEnabled(false); JsonUtils.addTableManagedButton(callback, table, deleteButton); JsonUtils.addTableManagedButton(callback, table, enable); JsonUtils.addTableManagedButton(callback, table, disable); vp.add(sp); vp.setCellHeight(sp, "100%"); // add tabs to the main panel this.contentWidget.setWidget(vp); return getWidget(); }
/** * Returns thanks management widget for publication * * @return widget */ private Widget loadThanksSubTab() { DisclosurePanel dp = new DisclosurePanel(); dp.setWidth("100%"); dp.setOpen(true); VerticalPanel vp = new VerticalPanel(); vp.setSize("100%", "100%"); dp.setContent(vp); FlexTable header = new FlexTable(); header.setWidget(0, 0, new Image(LargeIcons.INSTANCE.smallBusinessIcon())); header.setHTML(0, 1, "<h3>Acknowledgement</h3>"); dp.setHeader(header); // menu TabMenu menu = new TabMenu(); // callback final FindThanksByPublicationId thanksCall = new FindThanksByPublicationId(publicationId); thanksCall.setCheckable(false); if (!publication.getLocked()) { // editable if not locked vp.add(menu); vp.setCellHeight(menu, "30px"); thanksCall.setCheckable(true); } CellTable<Thanks> table = thanksCall.getTable(); menu.addWidget( TabMenu.getPredefinedButton( ButtonType.ADD, "Add acknowledgement to publication", new ClickHandler() { @Override public void onClick(ClickEvent event) { session .getTabManager() .addTabToCurrentTab( new CreateThanksTabItem( publication, JsonCallbackEvents.refreshTableEvents(thanksCall)), true); } })); final CustomButton removeButton = TabMenu.getPredefinedButton(ButtonType.REMOVE, "Remove acknowledgement from publication"); removeButton.setEnabled(false); JsonUtils.addTableManagedButton(thanksCall, table, removeButton); menu.addWidget(removeButton); removeButton.addClickHandler( new ClickHandler() { @Override public void onClick(ClickEvent event) { final ArrayList<Thanks> list = thanksCall.getTableSelectedList(); String text = "Following acknowledgements will be removed from publication."; UiElements.showDeleteConfirm( list, text, new ClickHandler() { @Override public void onClick(ClickEvent event) { // TODO - SHOULD HAVE ONLY ONE CALLBACK TO CORE for (int i = 0; i < list.size(); i++) { // calls the request if (i == list.size() - 1) { DeleteThanks request = new DeleteThanks( JsonCallbackEvents.disableButtonEvents( removeButton, JsonCallbackEvents.refreshTableEvents(thanksCall))); request.deleteThanks(list.get(i).getId()); } else { DeleteThanks request = new DeleteThanks(JsonCallbackEvents.disableButtonEvents(removeButton)); request.deleteThanks(list.get(i).getId()); } } } }); } }); table.addStyleName("perun-table"); ScrollPanel sp = new ScrollPanel(); sp.add(table); sp.addStyleName("perun-tableScrollPanel"); vp.add(sp); return dp; }
public Widget draw() { titleWidget.setText("Add manager"); final CustomButton searchButton = new CustomButton( "Search", ButtonTranslation.INSTANCE.searchUsers(), SmallIcons.INSTANCE.findIcon()); this.users = new FindCompleteRichUsers( "", null, JsonCallbackEvents.disableButtonEvents( searchButton, new JsonCallbackEvents() { @Override public void onFinished(JavaScriptObject jso) { // if found 1 item, select ArrayList<User> list = JsonUtils.jsoAsList(jso); if (list != null && list.size() == 1) { users.getSelectionModel().setSelected(list.get(0), true); } } })); // MAIN TAB PANEL VerticalPanel firstTabPanel = new VerticalPanel(); firstTabPanel.setSize("100%", "100%"); // HORIZONTAL MENU TabMenu tabMenu = new TabMenu(); // get the table final CellTable<User> table; if (session.isPerunAdmin()) { table = users.getTable( new FieldUpdater<User, String>() { public void update(int i, User user, String s) { session.getTabManager().addTab(new UserDetailTabItem(user)); } }); } else { table = users.getTable(); } rebuildAlreadyAddedWidget(); final CustomButton addButton = TabMenu.getPredefinedButton( ButtonType.ADD, ButtonTranslation.INSTANCE.addSelectedManagersToVo()); final TabItem tab = this; // search textbox final ExtendedTextBox searchBox = tabMenu.addSearchWidget( new PerunSearchEvent() { @Override public void searchFor(String text) { startSearching(text); searchString = text; } }, searchButton); tabMenu.addWidget(addButton); tabMenu.addWidget( TabMenu.getPredefinedButton( ButtonType.CLOSE, "", new ClickHandler() { @Override public void onClick(ClickEvent clickEvent) { session.getTabManager().closeTab(tab, !alreadyAddedList.isEmpty()); } })); addButton.addClickHandler( new ClickHandler() { public void onClick(ClickEvent event) { final ArrayList<User> list = users.getTableSelectedList(); if (UiElements.cantSaveEmptyListDialogBox(list)) { for (int i = 0; i < list.size(); i++) { // FIXME - Should have only one callback to core final int n = i; AddAdmin request = new AddAdmin( JsonCallbackEvents.disableButtonEvents( addButton, new JsonCallbackEvents() { @Override public void onFinished(JavaScriptObject jso) { // put names to already added alreadyAddedList.add(list.get(n)); rebuildAlreadyAddedWidget(); // unselect added person users.getSelectionModel().setSelected(list.get(n), false); // clear search searchBox.getTextBox().setText(""); } })); request.addVoAdmin(vo, list.get(i)); } } } }); // if some text has been searched before if (!searchString.equals("")) { searchBox.getTextBox().setText(searchString); startSearching(searchString); } addButton.setEnabled(false); JsonUtils.addTableManagedButton(users, table, addButton); // add a class to the table and wrap it into scroll panel table.addStyleName("perun-table"); ScrollPanel sp = new ScrollPanel(table); sp.addStyleName("perun-tableScrollPanel"); // add menu and the table to the main panel firstTabPanel.add(tabMenu); firstTabPanel.setCellHeight(tabMenu, "30px"); firstTabPanel.add(alreadyAdded); firstTabPanel.add(sp); session.getUiElements().resizePerunTable(sp, 350, this); this.contentWidget.setWidget(firstTabPanel); return getWidget(); }
/** * Returns widget with authors management for publication * * @return widget */ private Widget loadAuthorsSubTab() { DisclosurePanel dp = new DisclosurePanel(); dp.setWidth("100%"); dp.setOpen(true); VerticalPanel vp = new VerticalPanel(); vp.setSize("100%", "100%"); dp.setContent(vp); FlexTable header = new FlexTable(); header.setWidget(0, 0, new Image(LargeIcons.INSTANCE.userGreenIcon())); header.setHTML(0, 1, "<h3>Authors / Reported by</h3>"); dp.setHeader(header); // menu TabMenu menu = new TabMenu(); // callback final FindAuthorsByPublicationId call = new FindAuthorsByPublicationId(publication.getId()); call.setCheckable(false); if (!publication.getLocked()) { // editable if not locked vp.add(menu); vp.setCellHeight(menu, "30px"); call.setCheckable(true); } final CustomButton addButton = new CustomButton( "Add myself", "Add you as author of publication", SmallIcons.INSTANCE.addIcon()); addButton.addClickHandler( new ClickHandler() { @Override public void onClick(ClickEvent event) { JsonCallbackEvents events = JsonCallbackEvents.refreshTableEvents(call); CreateAuthorship request = new CreateAuthorship(JsonCallbackEvents.disableButtonEvents(addButton, events)); request.createAuthorship(publicationId, session.getActiveUser().getId()); } }); menu.addWidget(addButton); CustomButton addOthersButton = new CustomButton("Add others", "Add more authors", SmallIcons.INSTANCE.addIcon()); addOthersButton.addClickHandler( new ClickHandler() { @Override public void onClick(ClickEvent event) { session .getTabManager() .addTabToCurrentTab( new AddAuthorTabItem(publication, JsonCallbackEvents.refreshTableEvents(call)), true); } }); menu.addWidget(addOthersButton); // fill table CellTable<Author> table = call.getEmptyTable(); call.retrieveData(); final CustomButton removeButton = TabMenu.getPredefinedButton(ButtonType.REMOVE, "Remove select author(s) from publication"); removeButton.setEnabled(false); JsonUtils.addTableManagedButton(call, table, removeButton); menu.addWidget(removeButton); removeButton.addClickHandler( new ClickHandler() { @Override public void onClick(ClickEvent event) { final ArrayList<Author> list = call.getTableSelectedList(); String text = "Following users will be removed from publication's authors. They will lose any benefit granted by publication's rank."; UiElements.showDeleteConfirm( list, text, new ClickHandler() { @Override public void onClick(ClickEvent event) { // TODO - SHOULD HAVE ONLY ONE CALLBACK TO CORE for (int i = 0; i < list.size(); i++) { // calls the request if (i == list.size() - 1) { DeleteAuthorship request = new DeleteAuthorship( JsonCallbackEvents.disableButtonEvents( removeButton, JsonCallbackEvents.refreshTableEvents(call))); request.deleteAuthorship(publicationId, list.get(i).getId()); } else { DeleteAuthorship request = new DeleteAuthorship(); request.deleteAuthorship(publicationId, list.get(i).getId()); } } } }); } }); ScrollPanel sp = new ScrollPanel(); sp.add(table); table.addStyleName("perun-table"); sp.addStyleName("perun-tableScrollPanel"); vp.add(sp); return dp; }
public Widget draw() { // show only part of title titleWidget.setText(Utils.getStrippedStringWithEllipsis(publication.getTitle())); // MAIN PANEL ScrollPanel sp = new ScrollPanel(); sp.addStyleName("perun-tableScrollPanel"); VerticalPanel vp = new VerticalPanel(); vp.addStyleName("perun-table"); sp.add(vp); // resize perun table to correct size on screen session.getUiElements().resizePerunTable(sp, 350, this); // content final FlexTable ft = new FlexTable(); ft.setStyleName("inputFormFlexTable"); if (publication.getLocked() == false) { ft.setHTML(1, 0, "Id / Origin:"); ft.setHTML(2, 0, "Title:"); ft.setHTML(3, 0, "Year:"); ft.setHTML(4, 0, "Category:"); ft.setHTML(5, 0, "Rank:"); ft.setHTML(6, 0, "ISBN / ISSN:"); ft.setHTML(7, 0, "DOI:"); ft.setHTML(8, 0, "Full cite:"); ft.setHTML(9, 0, "Created by:"); ft.setHTML(10, 0, "Created date:"); for (int i = 0; i < ft.getRowCount(); i++) { ft.getFlexCellFormatter().setStyleName(i, 0, "itemName"); } ft.getFlexCellFormatter().setWidth(1, 0, "100px"); final ListBoxWithObjects<Category> listbox = new ListBoxWithObjects<Category>(); // fill listbox JsonCallbackEvents events = new JsonCallbackEvents() { public void onFinished(JavaScriptObject jso) { for (Category cat : JsonUtils.<Category>jsoAsList(jso)) { listbox.addItem(cat); // if right, selected if (publication.getCategoryId() == cat.getId()) { listbox.setSelected(cat, true); } } } }; FindAllCategories categories = new FindAllCategories(events); categories.retrieveData(); final TextBox rank = new TextBox(); rank.setWidth("30px"); rank.setMaxLength(4); rank.setText(String.valueOf(publication.getRank())); final TextBox title = new TextBox(); title.setMaxLength(1024); title.setText(publication.getTitle()); title.setWidth("500px"); final TextBox year = new TextBox(); year.setText(String.valueOf(publication.getYear())); year.setMaxLength(4); year.setWidth("30px"); final TextBox isbn = new TextBox(); isbn.setText(publication.getIsbn()); isbn.setMaxLength(32); final TextBox doi = new TextBox(); doi.setText(publication.getDoi()); doi.setMaxLength(256); final TextArea main = new TextArea(); main.setText(publication.getMain()); main.setSize("500px", "70px"); // set max length main.getElement().setAttribute("maxlength", "4000"); ft.setHTML( 1, 1, publication.getId() + " / <Strong>Ext. Id: </strong>" + publication.getExternalId() + " <Strong>System: </strong>" + publication.getPublicationSystemName()); ft.setWidget(2, 1, title); ft.setWidget(3, 1, year); ft.setWidget(4, 1, listbox); if (session.isPerunAdmin()) { // only perunadmin can change rank ft.setWidget(5, 1, rank); } else { ft.setHTML(5, 1, "" + publication.getRank()); } ft.setWidget(6, 1, isbn); ft.setWidget(7, 1, doi); ft.setWidget(8, 1, main); ft.setHTML(9, 1, String.valueOf(publication.getCreatedBy())); ft.setHTML( 10, 1, DateTimeFormat.getFormat(DateTimeFormat.PredefinedFormat.DATE_TIME_MEDIUM) .format(new Date((long) publication.getCreatedDate()))); // update button final CustomButton change = TabMenu.getPredefinedButton(ButtonType.SAVE, "Save changes in publication details"); change.addClickHandler( new ClickHandler() { public void onClick(ClickEvent event) { Publication pub = JsonUtils.clone(publication).cast(); if (!JsonUtils.checkParseInt(year.getText())) { JsonUtils.cantParseIntConfirm("YEAR", year.getText()); } else { pub.setYear(Integer.parseInt(year.getText())); } if (session.isPerunAdmin()) { pub.setRank(Double.parseDouble(rank.getText())); } pub.setCategoryId(listbox.getSelectedObject().getId()); pub.setTitle(title.getText()); pub.setMain(main.getText()); pub.setIsbn(isbn.getText()); pub.setDoi(doi.getText()); UpdatePublication upCall = new UpdatePublication( JsonCallbackEvents.disableButtonEvents( change, new JsonCallbackEvents() { public void onFinished(JavaScriptObject jso) { // refresh page content Publication p = jso.cast(); publication = p; draw(); } })); upCall.updatePublication(pub); } }); ft.setWidget(0, 0, change); } else { ft.getFlexCellFormatter().setColSpan(0, 0, 2); ft.setWidget( 0, 0, new HTML( new Image(SmallIcons.INSTANCE.lockIcon()) + " <strong>Publication is locked. Ask administrator to perform any changes for you at [email protected].</strong>")); ft.setHTML(1, 0, "Id / Origin:"); ft.setHTML(2, 0, "Title:"); ft.setHTML(3, 0, "Year:"); ft.setHTML(4, 0, "Category:"); ft.setHTML(5, 0, "Rank:"); ft.setHTML(6, 0, "ISBN / ISSN:"); ft.setHTML(7, 0, "DOI:"); ft.setHTML(8, 0, "Full cite:"); ft.setHTML(9, 0, "Created by:"); ft.setHTML(10, 0, "Created date:"); for (int i = 0; i < ft.getRowCount(); i++) { ft.getFlexCellFormatter().setStyleName(i, 0, "itemName"); } ft.getFlexCellFormatter().setWidth(1, 0, "100px"); ft.setHTML( 1, 1, publication.getId() + " / <Strong>Ext. Id: </strong>" + publication.getExternalId() + " <Strong>System: </strong>" + publication.getPublicationSystemName()); ft.setHTML(2, 1, publication.getTitle()); ft.setHTML(3, 1, String.valueOf(publication.getYear())); ft.setHTML(4, 1, publication.getCategoryName()); ft.setHTML(5, 1, String.valueOf(publication.getRank()) + " (default is 0)"); ft.setHTML(6, 1, publication.getIsbn()); ft.setHTML(7, 1, publication.getDoi()); ft.setHTML(8, 1, publication.getMain()); ft.setHTML(9, 1, String.valueOf(publication.getCreatedBy())); ft.setHTML( 10, 1, DateTimeFormat.getFormat(DateTimeFormat.PredefinedFormat.DATE_TIME_MEDIUM) .format(new Date((long) publication.getCreatedDate()))); } // LOCK / UNLOCK button for PerunAdmin if (session.isPerunAdmin()) { final CustomButton lock; if (publication.getLocked()) { lock = new CustomButton( "Unlock", "Allow editing of publication details (for users).", SmallIcons.INSTANCE.lockOpenIcon()); ft.setWidget(0, 0, lock); ft.getFlexCellFormatter().setColSpan(0, 0, 1); ft.setWidget( 0, 1, new HTML(new Image(SmallIcons.INSTANCE.lockIcon()) + " Publication is locked.")); } else { lock = new CustomButton( "Lock", "Deny editing of publication details (for users).", SmallIcons.INSTANCE.lockIcon()); ft.setWidget(0, 1, lock); } lock.addClickHandler( new ClickHandler() { public void onClick(ClickEvent event) { UpdatePublication upCall = new UpdatePublication( JsonCallbackEvents.disableButtonEvents( lock, new JsonCallbackEvents() { public void onFinished(JavaScriptObject jso) { // refresh page content Publication p = jso.cast(); publication = p; draw(); } })); Publication p = JsonUtils.clone(publication).cast(); p.setLocked(!publication.getLocked()); upCall.updatePublication(p); } }); } DisclosurePanel dp = new DisclosurePanel(); dp.setWidth("100%"); dp.setContent(ft); dp.setOpen(true); FlexTable detailsHeader = new FlexTable(); detailsHeader.setWidget(0, 0, new Image(LargeIcons.INSTANCE.bookIcon())); detailsHeader.setHTML(0, 1, "<h3>Details</h3>"); dp.setHeader(detailsHeader); vp.add(dp); vp.add(loadAuthorsSubTab()); vp.add(loadThanksSubTab()); this.contentWidget.setWidget(sp); return getWidget(); }
public Widget draw() { titleWidget.setText(Utils.getStrippedStringWithEllipsis(group.getName()) + ": settings"); // Main panel final VerticalPanel vp = new VerticalPanel(); vp.setSize("100%", "100%"); final TabMenu menu = new TabMenu(); // Adds menu to the main panel vp.add(menu); vp.setCellHeight(menu, "30px"); // IDS final Map<String, Integer> ids = new HashMap<String, Integer>(); ids.put("group", groupId); // define GET ATTRIBUTES callback final GetAttributesV2 jsonCallback = new GetAttributesV2(); jsonCallback.setIds(ids); if (!session.isGroupAdmin(groupId) && !session.isVoAdmin(group.getVoId())) jsonCallback.setCheckable(false); final CellTable<Attribute> table = jsonCallback.getEmptyTable(); table.setWidth("100%"); table.addStyleName("perun-table"); ScrollPanel sp = new ScrollPanel(table); sp.addStyleName("perun-tableScrollPanel"); session.getUiElements().resizePerunTable(sp, 350, this); vp.add(sp); // define GET RES. REQ ATTRIBUTES callback final GetResourceRequiredAttributesV2 reqAttrs = new GetResourceRequiredAttributesV2( null, JsonCallbackEvents.passDataToAnotherCallback(jsonCallback)); // GROUP RESOURCES LISTBOX final ListBoxWithObjects<Resource> resourceDropDown = new ListBoxWithObjects<Resource>(); resourceDropDown.setTitle( "By selecting a resource you will switch to either group-resource or member-resource setting (you must pick member too)"); // fill table with group attributes on page load if (lastSelectedMemberId == 0 && lastSelectedResourceId == 0) { jsonCallback.retrieveData(); } else { // load attrs by listbox selection after calls are done Scheduler.get() .scheduleFixedPeriod( new Scheduler.RepeatingCommand() { @Override public boolean execute() { // load proper table if something was selected if (resCallDone && memCallDone) { // trigger change event DomEvent.fireNativeEvent(Document.get().createChangeEvent(), resourceDropDown); return false; } return true; } }, 200); } // fill resources listbox if (resources == null) { // get assigned resources GetAssignedResources resources = new GetAssignedResources( groupId, PerunEntity.GROUP, new JsonCallbackEvents() { public void onFinished(JavaScriptObject jso) { ArrayList<Resource> resources = JsonUtils.jsoAsList(jso); resourceDropDown.clear(); if (resources != null && !resources.isEmpty()) { resources = new TableSorter<Resource>().sortByName(resources); resourceDropDown.addNotSelectedOption(); for (int i = 0; i < resources.size(); i++) { resourceDropDown.addItem(resources.get(i)); if (lastSelectedResourceId == resources.get(i).getId()) { resourceDropDown.setSelected(resources.get(i), true); } } } else { resourceDropDown.addItem("No resources available"); } resCallDone = true; } public void onError(PerunError error) { resourceDropDown.clear(); resourceDropDown.addItem("Error while loading"); resCallDone = true; } public void onLoadingStart() { resCallDone = false; resourceDropDown.clear(); resourceDropDown.addItem("Loading..."); } }); resources.retrieveData(); } else { // use predefined resources resourceDropDown.addNotSelectedOption(); resources = new TableSorter<Resource>().sortByName(resources); resourceDropDown.addAllItems(resources); } // GROUP MEMBERS LISTBOX final ListBoxWithObjects<RichMember> membersDropDown = new ListBoxWithObjects<RichMember>(); membersDropDown.setTitle( "By selecting a member you will switch to either member or member-resource settings (you must pick resource too)"); // fill members listbox GetGroupRichMembers members = new GetGroupRichMembers( groupId, new JsonCallbackEvents() { public void onFinished(JavaScriptObject jso) { ArrayList<RichMember> mems = JsonUtils.jsoAsList(jso); membersDropDown.clear(); if (mems != null && !mems.isEmpty()) { mems = new TableSorter<RichMember>().sortByName(mems); membersDropDown.addNotSelectedOption(); for (int i = 0; i < mems.size(); i++) { membersDropDown.addItem(mems.get(i)); if (mems.get(i).getId() == lastSelectedMemberId) { membersDropDown.setSelected(mems.get(i), true); } } } else { membersDropDown.addItem("No members available"); } memCallDone = true; } public void onError(PerunError error) { membersDropDown.clear(); membersDropDown.addItem("Error while loading"); memCallDone = true; } public void onLoadingStart() { memCallDone = false; membersDropDown.clear(); membersDropDown.addItem("Loading..."); } }); members.retrieveData(); // CHECKBOXES "FOR ALL MEMBERS" final CheckBox memChb = new CheckBox(); memChb.setText("To all members"); memChb.setVisible(false); memChb.setTitle("Uses this setting for all members of this group."); memChb.setValue(false); // SAVE CHANGES BUTTON final CustomButton saveChangesButton = TabMenu.getPredefinedButton( ButtonType.SAVE, ButtonTranslation.INSTANCE.saveChangesInAttributes()); if (!session.isGroupAdmin(groupId) && !session.isVoAdmin(group.getVoId())) saveChangesButton.setEnabled(false); // click handler to save group and member-user attributes final ClickHandler saveAttrsClickHandler = new ClickHandler() { public void onClick(ClickEvent event) { final ArrayList<Attribute> list = jsonCallback.getTableSelectedList(); if (UiElements.cantSaveEmptyListDialogBox(list)) { // refresh table and disable button a event for GetAttributes final JsonCallbackEvents events = JsonCallbackEvents.disableButtonEvents( saveChangesButton, JsonCallbackEvents.refreshTableEvents(jsonCallback)); if (memChb.getValue() == true) { // to all members selected UiElements.generateInfo( WidgetTranslation.INSTANCE.saveConfirmTitle(), "Same value(s) for selected attribute(s) will be set to ALL members of group.", new ClickHandler() { public void onClick(ClickEvent event) { ArrayList<RichMember> memList = membersDropDown.getAllObjects(); for (int i = 0; i < memList.size(); i++) { SetAttributes request = new SetAttributes(); if (i == memList.size() - 1) { request.setEvents(events); } else { request.setEvents( JsonCallbackEvents.disableButtonEvents(saveChangesButton)); } Map<String, Integer> ids = new HashMap<String, Integer>(); ids.put("member", memList.get(i).getId()); ids.put("workWithUserAttributes", 1); request.setAttributes(ids, list); } } }); } else { // just one group / memeber SetAttributes request = new SetAttributes(events); request.setAttributes(jsonCallback.getIds(), list); } } } }; // click handler to save required attributes final ClickHandler saveReqAttrsClickHandler = new ClickHandler() { public void onClick(ClickEvent event) { final ArrayList<Attribute> list = jsonCallback.getTableSelectedList(); // check if not empty if (UiElements.cantSaveEmptyListDialogBox(list)) { // refresh table and disable button a event for GetResourceRequiredAttributes final JsonCallbackEvents events = JsonCallbackEvents.disableButtonEvents( saveChangesButton, new JsonCallbackEvents() { public void onFinished(JavaScriptObject jso) { jsonCallback.clearTable(); // set back resourceToGetServicesFrom Map<String, Integer> ids = reqAttrs.getIds(); if (ids.containsKey("resource")) { ids.put("resourceToGetServicesFrom", ids.get("resource")); } if (ids.containsKey("user")) { ids.put("workWithUserAttributes", 1); } if (ids.containsKey("resource") && ids.containsKey("group")) { ids.put("workWithGroupAttributes", 1); } reqAttrs.setIds(ids); reqAttrs.retrieveData(); } }); final SetAttributes request = new SetAttributes(); if (memChb.getValue() == true) { // to all members selected UiElements.generateInfo( WidgetTranslation.INSTANCE.saveConfirmTitle(), "Same value(s) for selected attribute(s) will be set to ALL members of group.", new ClickHandler() { public void onClick(ClickEvent event) { ArrayList<RichMember> memList = membersDropDown.getAllObjects(); for (int i = 0; i < memList.size(); i++) { if (i == 0) { events.onLoadingStart(); } // trigger disable button if first Map<String, Integer> ids = new HashMap<String, Integer>(); ids.put("member", memList.get(i).getId()); ids.put("user", memList.get(i).getUserId()); ids.put("resource", resourceDropDown.getSelectedObject().getId()); ids.put("facility", resourceDropDown.getSelectedObject().getFacilityId()); if (i == memList.size() - 1) { request.setEvents(events); } // set events to last to get refresh and button enable request.setAttributes(ids, list); } } }); } else { // group or member request.setEvents(events); // disable button events request.setAttributes(reqAttrs.getIds(), list); } } } }; // REMOVE BUTTON final CustomButton removeButton = TabMenu.getPredefinedButton( ButtonType.REMOVE, ButtonTranslation.INSTANCE.removeAttributes()); if (!session.isGroupAdmin(groupId) && !session.isVoAdmin(group.getVoId())) removeButton.setEnabled(false); // click handler to remove group and member-user attributes final ClickHandler removeAttrsClickHandler = new ClickHandler() { public void onClick(ClickEvent event) { final ArrayList<Attribute> list = jsonCallback.getTableSelectedList(); if (UiElements.cantSaveEmptyListDialogBox(list)) { // refresh table and disable button a event for GetAttributes final JsonCallbackEvents events = JsonCallbackEvents.disableButtonEvents( removeButton, JsonCallbackEvents.refreshTableEvents(jsonCallback)); final RemoveAttributes request = new RemoveAttributes(); if (memChb.getValue() == true) { // to all members selected UiElements.generateInfo( WidgetTranslation.INSTANCE.deleteConfirmTitle(), "Selected attribute(s) will be removed from ALL members of group.", new ClickHandler() { public void onClick(ClickEvent event) { ArrayList<RichMember> memList = membersDropDown.getAllObjects(); for (int i = 0; i < memList.size(); i++) { if (i == 0) { events.onLoadingStart(); } // trigger disable button if first Map<String, Integer> ids = new HashMap<String, Integer>(); ids.put("member", memList.get(i).getId()); ids.put("workWithUserAttributes", 1); if (i == memList.size() - 1) { request.setEvents(events); } // set events to last to get refresh and button enable request.removeAttributes(ids, list); } } }); } else { // just one group / memeber request.setEvents(events); // disable button events request.removeAttributes(jsonCallback.getIds(), list); } } } }; // click handler to remove ResourceRequiredAttributes final ClickHandler removeReqAttrsClickHandler = new ClickHandler() { public void onClick(ClickEvent event) { final ArrayList<Attribute> list = jsonCallback.getTableSelectedList(); if (UiElements.cantSaveEmptyListDialogBox(list)) { // refresh table and disable button a event for GetAttributes final JsonCallbackEvents events = JsonCallbackEvents.disableButtonEvents( removeButton, new JsonCallbackEvents() { public void onFinished(JavaScriptObject jso) { jsonCallback.clearTable(); // set back resourceToGetServicesFrom Map<String, Integer> ids = reqAttrs.getIds(); if (ids.containsKey("resource")) { ids.put("resourceToGetServicesFrom", ids.get("resource")); } if (ids.containsKey("user")) { ids.put("workWithUserAttributes", 1); } if (ids.containsKey("resource") && ids.containsKey("group")) { ids.put("workWithGroupAttributes", 1); } reqAttrs.setIds(ids); reqAttrs.retrieveData(); } }); final RemoveAttributes request = new RemoveAttributes(); if (memChb.getValue() == true) { // to all members selected UiElements.generateInfo( WidgetTranslation.INSTANCE.deleteConfirmTitle(), "Selected attribute(s) will be removed from ALL members of group.", new ClickHandler() { @Override public void onClick(ClickEvent event) { ArrayList<RichMember> memList = membersDropDown.getAllObjects(); for (int i = 0; i < memList.size(); i++) { if (i == 0) { events.onLoadingStart(); } // trigger disable button if first Map<String, Integer> ids = new HashMap<String, Integer>(); ids.put("member", memList.get(i).getId()); ids.put("user", memList.get(i).getUserId()); ids.put("resource", resourceDropDown.getSelectedObject().getId()); ids.put("facility", resourceDropDown.getSelectedObject().getFacilityId()); if (i == memList.size() - 1) { request.setEvents(events); } // set events to last to get refresh and button enable request.removeAttributes(ids, list); } } }); } else { // just one group / member request.setEvents(events); // disable button events request.removeAttributes(reqAttrs.getIds(), list); } } } }; // SET NEW ATTR BUTTON final CustomButton setNewAttributeButton = TabMenu.getPredefinedButton(ButtonType.ADD, ButtonTranslation.INSTANCE.setNewAttributes()); if (!session.isGroupAdmin(groupId) && !session.isVoAdmin(group.getVoId())) setNewAttributeButton.setEnabled(false); // click handler setNewAttributeButton.addClickHandler( new ClickHandler() { public void onClick(ClickEvent event) { ids.clear(); if (resourceDropDown.getSelectedIndex() > 0) { if (membersDropDown.getSelectedIndex() > 0) { ids.put("member", membersDropDown.getSelectedObject().getId()); ids.put("user", membersDropDown.getSelectedObject().getUserId()); ids.put("resource", resourceDropDown.getSelectedObject().getId()); ids.put("facility", resourceDropDown.getSelectedObject().getFacilityId()); } else { ids.put("resource", resourceDropDown.getSelectedObject().getId()); ids.put("group", groupId); ids.put("workWithGroupAttributes", 1); } } else { if (membersDropDown.getSelectedIndex() > 0) { ids.put("member", membersDropDown.getSelectedObject().getId()); ids.put("user", membersDropDown.getSelectedObject().getUserId()); } else { ids.put("group", groupId); } } session .getTabManager() .addTabToCurrentTab(new SetNewAttributeTabItem(ids, jsonCallback.getList()), true); } }); // ClickHandlersRegistration - save onClicks for GetAttributes final ArrayList<HandlerRegistration> clickHandlers = new ArrayList<HandlerRegistration>(); clickHandlers.add(saveChangesButton.addClickHandler(saveAttrsClickHandler)); clickHandlers.add(removeButton.addClickHandler(removeAttrsClickHandler)); // DEFINE CHANGE HANDLER FOR ALL DROP DOWNS ChangeHandler changeHandler = new ChangeHandler() { public void onChange(ChangeEvent event) { int resIndex = resourceDropDown.getSelectedIndex(); int memIndex = membersDropDown.getSelectedIndex(); // no resource or member selected if (resIndex == 0 && memIndex == 0) { lastSelectedMemberId = 0; lastSelectedResourceId = 0; memChb.setValue(false); memChb.setVisible(false); jsonCallback.clearTable(); ids.clear(); ids.put("group", groupId); jsonCallback.setIds(ids); jsonCallback.retrieveData(); for (HandlerRegistration handler : clickHandlers) { if (handler != null) { handler.removeHandler(); } } clickHandlers.add(saveChangesButton.addClickHandler(saveAttrsClickHandler)); clickHandlers.add(removeButton.addClickHandler(removeAttrsClickHandler)); } // no resource but member selected if (resIndex == 0 && memIndex > 0) { lastSelectedMemberId = membersDropDown.getSelectedObject().getId(); lastSelectedResourceId = 0; memChb.setValue(false); memChb.setVisible(true); jsonCallback.clearTable(); ids.clear(); ids.put("member", membersDropDown.getSelectedObject().getId()); ids.put("workWithUserAttributes", 1); jsonCallback.setIds(ids); jsonCallback.retrieveData(); for (HandlerRegistration handler : clickHandlers) { if (handler != null) { handler.removeHandler(); } } clickHandlers.add(saveChangesButton.addClickHandler(saveAttrsClickHandler)); clickHandlers.add(removeButton.addClickHandler(removeAttrsClickHandler)); } // resource and no member selected if (resIndex > 0 && memIndex == 0) { lastSelectedMemberId = 0; lastSelectedResourceId = resourceDropDown.getSelectedObject().getId(); memChb.setValue(false); memChb.setVisible(false); jsonCallback.clearTable(); ids.clear(); ids.put("group", groupId); ids.put("resource", resourceDropDown.getSelectedObject().getId()); ids.put("resourceToGetServicesFrom", ids.get("resource")); ids.put("workWithGroupAttributes", 1); reqAttrs.setIds(ids); reqAttrs.retrieveData(); // set ids back to make saveChanges work ids.remove("resourceToGetServicesFrom"); reqAttrs.setIds(ids); for (HandlerRegistration handler : clickHandlers) { if (handler != null) { handler.removeHandler(); } } clickHandlers.add(saveChangesButton.addClickHandler(saveReqAttrsClickHandler)); clickHandlers.add(removeButton.addClickHandler(removeReqAttrsClickHandler)); } // resource and member selected if (resIndex > 0 && memIndex > 0) { lastSelectedMemberId = membersDropDown.getSelectedObject().getId(); lastSelectedResourceId = resourceDropDown.getSelectedObject().getId(); memChb.setValue(false); memChb.setVisible(true); jsonCallback.clearTable(); ids.clear(); ids.put("resource", resourceDropDown.getSelectedObject().getId()); ids.put("resourceToGetServicesFrom", ids.get("resource")); ids.put("member", membersDropDown.getSelectedObject().getId()); ids.put("workWithUserAttributes", 1); reqAttrs.setIds(ids); reqAttrs.retrieveData(); // set ids back to make saveChanges work ids.clear(); ids.put("member", membersDropDown.getSelectedObject().getId()); ids.put("user", membersDropDown.getSelectedObject().getUser().getId()); ids.put("facility", resourceDropDown.getSelectedObject().getFacilityId()); ids.put("resource", resourceDropDown.getSelectedObject().getId()); reqAttrs.setIds(ids); for (HandlerRegistration handler : clickHandlers) { if (handler != null) { handler.removeHandler(); } } clickHandlers.add(saveChangesButton.addClickHandler(saveReqAttrsClickHandler)); clickHandlers.add(removeButton.addClickHandler(removeReqAttrsClickHandler)); } } }; // ADD CHANGE HANDLERS TO DROP-DOWN MENUS resourceDropDown.addChangeHandler(changeHandler); membersDropDown.addChangeHandler(changeHandler); // PUT ELEMENTS IN MENU menu.addWidget(saveChangesButton); // menu.addWidget(resChb); menu.addWidget(memChb); menu.addWidget(setNewAttributeButton); menu.addWidget(removeButton); menu.addWidget(new HTML("<strong>Resources:</strong>")); menu.addWidget(resourceDropDown); menu.addWidget(new HTML("<strong>Members:</strong>")); menu.addWidget(membersDropDown); this.contentWidget.setWidget(vp); return getWidget(); }
public Widget draw() { VerticalPanel vp = new VerticalPanel(); vp.setSize("100%", "100%"); final FindAllCategories callback = new FindAllCategories(); final JsonCallbackEvents events = JsonCallbackEvents.refreshTableEvents(callback); TabMenu menu = new TabMenu(); menu.addWidget( TabMenu.getPredefinedButton( ButtonType.ADD, "Add new category", new ClickHandler() { public void onClick(ClickEvent event) { session.getTabManager().addTabToCurrentTab(new CreateCategoryTabItem()); } })); final CustomButton removeButton = TabMenu.getPredefinedButton(ButtonType.DELETE, "Delete selected categories"); removeButton.addClickHandler( new ClickHandler() { public void onClick(ClickEvent event) { final ArrayList<Category> delete = callback.getTableSelectedList(); String text = "Following categories will be deleted"; UiElements.showDeleteConfirm( delete, text, new ClickHandler() { @Override public void onClick(ClickEvent event) { // TODO - SHOULD HAVE ONLY ONE CALLBACK TO CORE for (int i = 0; i < delete.size(); i++) { if (i == delete.size() - 1) { DeleteCategory request = new DeleteCategory( JsonCallbackEvents.disableButtonEvents(removeButton, events)); request.deleteCategory(delete.get(i).getId()); } else { DeleteCategory request = new DeleteCategory( JsonCallbackEvents.disableButtonEvents(removeButton)); request.deleteCategory(delete.get(i).getId()); } } } }); } }); menu.addWidget(removeButton); final CustomButton saveButton = TabMenu.getPredefinedButton(ButtonType.SAVE, "Save changes in category ranks"); saveButton.addClickHandler( new ClickHandler() { @Override public void onClick(ClickEvent event) { final ArrayList<Category> list = callback.getTableSelectedList(); if (UiElements.cantSaveEmptyListDialogBox(list)) { // TODO - SHOULD HAVE ONLY ONE CALLBACK TO CORE for (int i = 0; i < list.size(); i++) { if (i == list.size() - 1) { UpdateCategory request = new UpdateCategory( JsonCallbackEvents.disableButtonEvents(saveButton, events)); request.updateCategory(list.get(i)); } else { UpdateCategory request = new UpdateCategory(JsonCallbackEvents.disableButtonEvents(saveButton)); request.updateCategory(list.get(i)); } } } } }); menu.addWidget(saveButton); vp.add(menu); vp.setCellHeight(menu, "30px"); CellTable<Category> table = callback.getTable(); removeButton.setEnabled(false); saveButton.setEnabled(false); JsonUtils.addTableManagedButton(callback, table, removeButton); JsonUtils.addTableManagedButton(callback, table, saveButton); table.addStyleName("perun-table"); ScrollPanel sp = new ScrollPanel(); sp.add(table); sp.addStyleName("perun-tableScrollPanel"); vp.add(sp); // resize perun table to correct size on screen session.getUiElements().resizeSmallTabPanel(sp, 350, this); this.contentWidget.setWidget(vp); return getWidget(); }
public Widget draw() { this.titleWidget.setText(Utils.getStrippedStringWithEllipsis(facility.getName())); // main widget panel final VerticalPanel vp = new VerticalPanel(); vp.setSize("100%", "100%"); AbsolutePanel dp = new AbsolutePanel(); final FlexTable menu = new FlexTable(); menu.setCellSpacing(5); // Add facility information menu.setWidget(0, 0, new Image(LargeIcons.INSTANCE.databaseServerIcon())); Label facilityName = new Label(); facilityName.setText(Utils.getStrippedStringWithEllipsis(facility.getName(), 40)); facilityName.setStyleName("now-managing"); facilityName.setTitle(facility.getName()); menu.setWidget(0, 1, facilityName); menu.setHTML(0, 2, " "); menu.getFlexCellFormatter().setWidth(0, 2, "25px"); int column = 3; final JsonCallbackEvents events = new JsonCallbackEvents() { public void onFinished(JavaScriptObject jso) { new GetEntityById( PerunEntity.FACILITY, facilityId, new JsonCallbackEvents() { public void onFinished(JavaScriptObject jso) { facility = jso.cast(); open(); draw(); } }) .retrieveData(); } }; CustomButton change = new CustomButton( "", ButtonTranslation.INSTANCE.editFacilityDetails(), SmallIcons.INSTANCE.applicationFormEditIcon()); change.addClickHandler( new ClickHandler() { public void onClick(ClickEvent event) { // prepare confirm content session .getTabManager() .addTabToCurrentTab(new EditFacilityDetailsTabItem(facility, events)); } }); menu.setWidget(0, column, change); column++; menu.setHTML(0, column, " "); menu.getFlexCellFormatter().setWidth(0, column, "25px"); column++; if (JsonUtils.isExtendedInfoVisible()) { menu.setHTML( 0, column, "<strong>ID:</strong><br/><span class=\"inputFormInlineComment\">" + facility.getId() + "</span>"); column++; menu.setHTML(0, column, " "); menu.getFlexCellFormatter().setWidth(0, column, "25px"); column++; } menu.setHTML( 0, column, "<strong>Description:</strong><br/><span class=\"inputFormInlineComment\">" + facility.getDescription() + " </span>"); dp.add(menu); vp.add(dp); vp.setCellHeight(dp, "30px"); // TAB PANEL tabPanel.clear(); tabPanel.add(new FacilityResourcesTabItem(facility), "Resources"); tabPanel.add(new FacilityAllowedGroupsTabItem(facility), "Allowed Groups"); tabPanel.add(new FacilityStatusTabItem(facility), "Services status"); tabPanel.add(new FacilitySettingsTabItem(facility), "Services settings"); tabPanel.add(new FacilityDestinationsTabItem(facility), "Services destinations"); tabPanel.add(new FacilityHostsTabItem(facility), "Hosts"); tabPanel.add(new FacilityManagersTabItem(facility), "Managers"); tabPanel.add(new FacilitySecurityTeamsTabItem(facility), "Security teams"); tabPanel.add(new FacilityBlacklistTabItem(facility), "Blacklist"); tabPanel.add(new FacilityOwnersTabItem(facility), "Owners"); // Resize must be called after page fully displays Scheduler.get() .scheduleDeferred( new Command() { @Override public void execute() { tabPanel.finishAdding(); } }); vp.add(tabPanel); this.contentWidget.setWidget(vp); return getWidget(); }