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