use of cz.metacentrum.perun.webgui.model.User in project perun by CESNET.
the class SelfServiceUsersTabItem method draw.
@Override
public Widget draw() {
VerticalPanel vp = new VerticalPanel();
vp.setSize("100%", "100%");
if (user.isServiceUser()) {
// SERVICE TYPE user
this.titleWidget.setText(Utils.getStrippedStringWithEllipsis(user.getFullNameWithTitles().trim()) + ": Associated users");
// request
final GetUsersBySpecificUser request = new GetUsersBySpecificUser(userId);
final JsonCallbackEvents refreshEvents = JsonCallbackEvents.refreshTableEvents(request);
// menu
TabMenu menu = new TabMenu();
vp.add(menu);
vp.setCellHeight(menu, "30px");
menu.addWidget(UiElements.getRefreshButton(this));
// buttons
menu.addWidget(TabMenu.getPredefinedButton(ButtonType.ADD, true, "Add new user to service identity: " + user.getLastName(), new ClickHandler() {
public void onClick(ClickEvent clickEvent) {
session.getTabManager().addTabToCurrentTab(new ConnectServiceIdentityTabItem(user), true);
}
}));
final CustomButton removeUserButton = TabMenu.getPredefinedButton(ButtonType.REMOVE, "Remove user from service identity " + user.getLastName());
menu.addWidget(removeUserButton);
removeUserButton.addClickHandler(new ClickHandler() {
public void onClick(ClickEvent clickEvent) {
final ArrayList<User> list = request.getTableSelectedList();
final ArrayList<User> fullList = request.getList();
if (fullList.size() == list.size()) {
UiElements.generateAlert("Remove warning", "<strong><span class=\"serverResponseLabelError\">If you remove all users from service identity you won't be able to use it in the future.</br></br>Please consider keeping at least one user, e.g. add someone else before you remove yourself.</span></strong><p><strong>Do you wish to continue anyway ?</strong>", new ClickHandler() {
@Override
public void onClick(ClickEvent event) {
UiElements.showDeleteConfirm(list, "Following users will be removed from service identity and they will lose all access to it. Only users associated with service identity can add other users again. If you remove all users connected to the service identity, you won't be able to use it in future!", new ClickHandler() {
@Override
public void onClick(ClickEvent event) {
for (int i = 0; i < list.size(); i++) {
// TODO - SHOULD HAVE ONLY ONE CALLBACK TO CORE
RemoveSpecificUserOwner req;
if (i == list.size() - 1) {
req = new RemoveSpecificUserOwner(JsonCallbackEvents.disableButtonEvents(removeUserButton, refreshEvents));
} else {
req = new RemoveSpecificUserOwner(JsonCallbackEvents.disableButtonEvents(removeUserButton));
}
req.removeServiceUser(list.get(i), user);
// TODO - consider fixing authz in session ?
}
}
});
}
});
} else {
boolean containsMyself = false;
for (User user : list) {
if (user.getId() == session.getUser().getId()) {
containsMyself = true;
}
}
if (containsMyself) {
// if not selected myself, continue same way
UiElements.showDeleteConfirm(list, "<p style=\"color:red;\"><b>You are about to remove yourself from service identity! If you do that, you won't be able to add yourself again. Only users associated with service identity can add other users again.</b></p>" + "<p>Following users will be removed from service identity and they will lose any access to it.</p>", new ClickHandler() {
@Override
public void onClick(ClickEvent event) {
for (int i = 0; i < list.size(); i++) {
// TODO - SHOULD HAVE ONLY ONE CALLBACK TO CORE
RemoveSpecificUserOwner req;
if (i == list.size() - 1) {
req = new RemoveSpecificUserOwner(JsonCallbackEvents.disableButtonEvents(removeUserButton, refreshEvents));
} else {
req = new RemoveSpecificUserOwner(JsonCallbackEvents.disableButtonEvents(removeUserButton));
}
req.removeServiceUser(list.get(i), user);
// TODO - consider fixing authz in session ?
}
}
});
} else {
// if not selected myself, continue same way
UiElements.showDeleteConfirm(list, "Following users will be removed from service identity and they will lose any access to it. Only users associated with service identity can add other users again.", new ClickHandler() {
@Override
public void onClick(ClickEvent event) {
for (int i = 0; i < list.size(); i++) {
// TODO - SHOULD HAVE ONLY ONE CALLBACK TO CORE
RemoveSpecificUserOwner req;
if (i == list.size() - 1) {
req = new RemoveSpecificUserOwner(JsonCallbackEvents.disableButtonEvents(removeUserButton, refreshEvents));
} else {
req = new RemoveSpecificUserOwner(JsonCallbackEvents.disableButtonEvents(removeUserButton));
}
req.removeServiceUser(list.get(i), user);
// TODO - consider fixing authz in session ?
}
}
});
}
}
}
});
menu.addWidget(new Image(SmallIcons.INSTANCE.helpIcon()));
menu.addWidget(new HTML("<strong>Click on yourself to view your profile (switch context).</strong>"));
// table
CellTable<User> table = request.getTable(new FieldUpdater<User, String>() {
public void update(int i, User user, String s) {
if (session.isSelf(user.getId())) {
session.getTabManager().addTab(new SelfDetailTabItem(user));
} else {
UiElements.generateAlert("You are not authorized", "You are not authorized to view personal details of user " + user.getFullNameWithTitles() + ".");
}
}
});
removeUserButton.setEnabled(false);
JsonUtils.addTableManagedButton(request, table, removeUserButton);
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);
} else {
// PERSON TYPE user
this.titleWidget.setText(Utils.getStrippedStringWithEllipsis(user.getFullNameWithTitles().trim()) + ": Service identities");
// request
final GetSpecificUsersByUser request = new GetSpecificUsersByUser(userId);
final JsonCallbackEvents refreshEvents = JsonCallbackEvents.refreshTableEvents(request);
request.setHideSponsored(true);
// menu
TabMenu menu = new TabMenu();
vp.add(menu);
vp.setCellHeight(menu, "30px");
menu.addWidget(UiElements.getRefreshButton(this));
final CustomButton removeUserButton = TabMenu.getPredefinedButton(ButtonType.REMOVE, "Remove service identity from " + user.getFullName());
menu.addWidget(removeUserButton);
removeUserButton.addClickHandler(new ClickHandler() {
@Override
public void onClick(ClickEvent clickEvent) {
final ArrayList<User> list = request.getTableSelectedList();
UiElements.showDeleteConfirm(list, "Following service identities will be removed from you and you will lose any access to them. Only users associated with service identity can add you again.", new ClickHandler() {
@Override
public void onClick(ClickEvent event) {
// TODO - SHOULD HAVE ONLY ONE CALLBACK TO CORE
for (int i = 0; i < list.size(); i++) {
RemoveSpecificUserOwner req;
// if last, refresh
if (i == list.size() - 1) {
req = new RemoveSpecificUserOwner(JsonCallbackEvents.disableButtonEvents(removeUserButton, refreshEvents));
} else {
req = new RemoveSpecificUserOwner(JsonCallbackEvents.disableButtonEvents(removeUserButton));
}
req.removeServiceUser(user, list.get(i));
// TODO - consider fixing authz in session ?
}
}
});
}
});
menu.addWidget(new Image(SmallIcons.INSTANCE.helpIcon()));
menu.addWidget(new HTML("<strong>Click on service identity to view it's profile (switch context).</strong>"));
// table
CellTable<User> table = request.getTable(new FieldUpdater<User, String>() {
public void update(int i, User user, String s) {
session.getTabManager().addTab(new SelfDetailTabItem(user));
}
});
removeUserButton.setEnabled(false);
JsonUtils.addTableManagedButton(request, table, removeUserButton);
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);
}
contentWidget.setWidget(vp);
return getWidget();
}
use of cz.metacentrum.perun.webgui.model.User in project perun by CESNET.
the class UsersTabItem method draw.
public Widget draw() {
CustomButton searchButton = new CustomButton("Search", ButtonTranslation.INSTANCE.searchUsers(), SmallIcons.INSTANCE.findIcon());
this.users = new FindCompleteRichUsers("", null, JsonCallbackEvents.disableButtonEvents(searchButton));
// MAIN TAB PANEL
VerticalPanel firstTabPanel = new VerticalPanel();
firstTabPanel.setSize("100%", "100%");
// HORIZONTAL MENU
TabMenu tabMenu = new TabMenu();
// search textbox
ExtendedTextBox searchBox = tabMenu.addSearchWidget(new PerunSearchEvent() {
@Override
public void searchFor(String text) {
startSearching(text);
searchString = text;
}
}, searchButton);
// get the table
final CellTable<User> table = users.getTable(new FieldUpdater<User, String>() {
public void update(int index, User object, String value) {
// opens the tab
session.getTabManager().addTab(new UserDetailTabItem(object));
}
});
// if some text has been searched before
if (!searchString.equals("")) {
searchBox.getTextBox().setText(searchString);
startSearching(searchString);
}
/*
Button b1 = tabMenu.addButton("List all", SmallIcons.INSTANCE.userGrayIcon(), new ClickHandler(){
public void onClick(ClickEvent event) {
GetCompleteRichUsers callback = new GetCompleteRichUsers(new JsonCallbackEvents(){
public void onLoadingStart() {
table.setEmptyTableWidget(new AjaxLoaderImage().loadingStart());
}
public void onFinished(JavaScriptObject jso) {
users.setList(JsonUtils.<User>jsoAsList(jso));
users.sortTable();
table.setEmptyTableWidget(new AjaxLoaderImage().loadingFinished());
}
public void onError(PerunError error){
users.clearTable();
table.setEmptyTableWidget(new AjaxLoaderImage().loadingError(error));
}
});
callback.retrieveData();
}
});
b1.setTitle("List of all users in Perun");
*/
final CustomButton withoutVoButton = new CustomButton(ButtonTranslation.INSTANCE.listUsersWithoutVoButton(), ButtonTranslation.INSTANCE.listUsersWithoutVo(), SmallIcons.INSTANCE.userRedIcon());
withoutVoButton.addClickHandler(new ClickHandler() {
public void onClick(ClickEvent event) {
GetCompleteRichUsers callback = new GetCompleteRichUsers(null, new JsonCallbackEvents() {
public void onLoadingStart() {
users.clearTable();
table.setEmptyTableWidget(new AjaxLoaderImage().loadingStart());
withoutVoButton.setProcessing(true);
}
public void onFinished(JavaScriptObject jso) {
users.setList(JsonUtils.<User>jsoAsList(jso));
users.sortTable();
table.setEmptyTableWidget(new AjaxLoaderImage().loadingFinished());
withoutVoButton.setProcessing(false);
}
public void onError(PerunError error) {
table.setEmptyTableWidget(new AjaxLoaderImage().loadingError(error));
withoutVoButton.setProcessing(false);
}
});
callback.getWithoutVo(true);
callback.retrieveData();
}
});
tabMenu.addWidget(withoutVoButton);
// 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(sp);
session.getUiElements().resizePerunTable(sp, 350, this);
this.contentWidget.setWidget(firstTabPanel);
return getWidget();
}
use of cz.metacentrum.perun.webgui.model.User in project perun by CESNET.
the class AddSecurityTeamManagerTabItem method startSearching.
/**
* Starts the search for users
*/
protected void startSearching(String text) {
users.clearTable();
// IS searched string IDs?
if (JsonUtils.isStringWithIds(text)) {
FindUsersByIdsNotInRpc req = new FindUsersByIdsNotInRpc(new JsonCallbackEvents() {
@Override
public void onFinished(JavaScriptObject jso) {
ArrayList<User> usersList = JsonUtils.jsoAsList(jso);
for (User u : usersList) {
users.addToTable(u);
}
}
}, text);
req.retrieveData();
return;
}
users.searchFor(text);
}
use of cz.metacentrum.perun.webgui.model.User in project perun by CESNET.
the class AddUserToBlacklistTabItem method startSearching.
/**
* Starts the search for users
*/
protected void startSearching(String text) {
users.clearTable();
// IS searched string IDs?
if (JsonUtils.isStringWithIds(text)) {
FindUsersByIdsNotInRpc req = new FindUsersByIdsNotInRpc(new JsonCallbackEvents() {
@Override
public void onFinished(JavaScriptObject jso) {
ArrayList<User> usersList = JsonUtils.jsoAsList(jso);
for (User u : usersList) {
users.addToTable(u);
}
}
}, text);
req.retrieveData();
return;
}
users.searchFor(text);
}
use of cz.metacentrum.perun.webgui.model.User in project perun by CESNET.
the class AddUserToBlacklistTabItem method draw.
public Widget draw() {
titleWidget.setText("Add to blacklist");
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.addSelectedUsersToBlacklist());
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)) {
FlexTable layout = new FlexTable();
layout.setStyleName("inputFormFlexTable");
final TextArea textArea = new TextArea();
textArea.setSize("250px", "120px");
layout.getFlexCellFormatter().addStyleName(0, 0, "itemName");
layout.setHTML(0, 0, "Reason:");
layout.setWidget(1, 0, textArea);
layout.setHTML(2, 0, "Please specify why users are blacklisted.");
layout.getFlexCellFormatter().addStyleName(2, 0, "inputFormInlineComment");
Confirm c = new Confirm("Add user(s) to blacklist", layout, new ClickHandler() {
@Override
public void onClick(ClickEvent event) {
for (int i = 0; i < list.size(); i++) {
// FIXME - Should have only one callback to core
final int n = i;
AddUserToBlacklist request = new AddUserToBlacklist(securityTeamId, 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.addUserToBlacklist(list.get(i).getId(), textArea.getText().trim());
}
}
}, "Add", true);
c.show();
}
}
});
// 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();
}
Aggregations