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(); }
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(); }