use of cz.metacentrum.perun.webgui.json.resourcesManager.GetAssignedServices in project perun by CESNET.
the class ResourceAssignedServicesTabItem method draw.
public Widget draw() {
titleWidget.setText(Utils.getStrippedStringWithEllipsis(resource.getName()) + ": manage assigned services");
VerticalPanel vp = new VerticalPanel();
vp.setSize("100%", "100%");
TabMenu menu = new TabMenu();
menu.addWidget(UiElements.getRefreshButton(this));
final GetAssignedServices resourceServices = new GetAssignedServices(resourceId);
final JsonCallbackEvents localEvents = JsonCallbackEvents.refreshTableEvents(resourceServices);
CustomButton assignServicesButton = TabMenu.getPredefinedButton(ButtonType.ADD, true, ButtonTranslation.INSTANCE.assignServiceToResource(), new ClickHandler() {
public void onClick(ClickEvent event) {
session.getTabManager().addTabToCurrentTab(new AssignServiceTabItem(resourceId), true);
}
});
final CustomButton removeServicesButton = TabMenu.getPredefinedButton(ButtonType.REMOVE, ButtonTranslation.INSTANCE.removeServiceFromResource());
removeServicesButton.addClickHandler(new ClickHandler() {
public void onClick(ClickEvent event) {
final ArrayList<Service> servicesForRemoving = resourceServices.getTableSelectedList();
String text = "Following services will be removed from resource.";
UiElements.showDeleteConfirm(servicesForRemoving, text, new ClickHandler() {
@Override
public void onClick(ClickEvent clickEvent) {
// TODO - SHOULD USE ONLY ONE CALLBACK TO CORE !!
for (int i = 0; i < servicesForRemoving.size(); i++) {
if (i == servicesForRemoving.size() - 1) {
RemoveService request = new RemoveService(JsonCallbackEvents.disableButtonEvents(removeServicesButton, localEvents));
request.removeService(servicesForRemoving.get(i).getId(), resourceId);
} else {
RemoveService request = new RemoveService(JsonCallbackEvents.disableButtonEvents(removeServicesButton));
request.removeService(servicesForRemoving.get(i).getId(), resourceId);
}
}
}
});
}
});
menu.addWidget(assignServicesButton);
menu.addWidget(removeServicesButton);
menu.addFilterWidget(new ExtendedSuggestBox(resourceServices.getOracle()), new PerunSearchEvent() {
@Override
public void searchFor(String text) {
resourceServices.filterTable(text);
}
}, ButtonTranslation.INSTANCE.filterServices());
// display menu only to facility admin
if (session.isFacilityAdmin(resource.getFacilityId())) {
resourceServices.setCheckable(true);
vp.add(menu);
vp.setCellHeight(menu, "30px");
} else {
resourceServices.setCheckable(false);
}
CellTable<Service> table;
if (session.isPerunAdmin()) {
table = resourceServices.getTable(new FieldUpdater<Service, String>() {
public void update(int index, Service object, String value) {
// load detail only for perun admin
session.getTabManager().addTab(new ServiceDetailTabItem(object));
}
});
} else {
// not clickable
table = resourceServices.getTable();
}
removeServicesButton.setEnabled(false);
JsonUtils.addTableManagedButton(resourceServices, table, removeServicesButton);
table.addStyleName("perun-table");
table.setWidth("100%");
ScrollPanel sp = new ScrollPanel(table);
sp.addStyleName("perun-tableScrollPanel");
vp.add(sp);
session.getUiElements().resizePerunTable(sp, 400, this);
this.contentWidget.setWidget(vp);
return getWidget();
}
Aggregations