/* * Copyright 2002-2005 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package info.jtrac.wicket; import info.jtrac.domain.User; import java.util.Arrays; import java.util.List; import org.apache.wicket.behavior.HeaderContributor; import org.apache.wicket.behavior.SimpleAttributeModifier; import org.apache.wicket.markup.html.IHeaderContributor; import org.apache.wicket.markup.html.IHeaderResponse; import org.apache.wicket.markup.html.WebMarkupContainer; import org.apache.wicket.markup.html.basic.Label; import org.apache.wicket.markup.html.form.DropDownChoice; import org.apache.wicket.markup.html.form.Form; import org.apache.wicket.markup.html.form.IChoiceRenderer; import org.apache.wicket.markup.html.form.TextField; import org.apache.wicket.markup.html.link.Link; import org.apache.wicket.markup.html.list.ListItem; import org.apache.wicket.markup.html.list.ListView; import org.apache.wicket.model.CompoundPropertyModel; import org.apache.wicket.model.LoadableDetachableModel; import org.apache.wicket.model.PropertyModel; /** * user management page */ public class UserListPage extends BasePage { private long selectedUserId; private String searchText = ""; private String searchOn = "name"; public void setSelectedUserId(long selectedUserId) { this.selectedUserId = selectedUserId; } public UserListPage() { add(new Link("create") { public void onClick() { UserFormPage page = new UserFormPage(); page.setPrevious(UserListPage.this); setResponsePage(page); } }); add(new SearchForm("form")); LoadableDetachableModel userListModel = new LoadableDetachableModel() { protected Object load() { if(searchText == null) { return getJtrac().findAllUsers(); } else if(searchText.equals("")) { // first time page loaded, don't query return null; } else { return getJtrac().findUsersMatching(searchText, searchOn); } } }; final SimpleAttributeModifier sam = new SimpleAttributeModifier("class", "alt"); ListView listView = new ListView("users", userListModel) { protected void populateItem(ListItem listItem) { final User user = (User) listItem.getModelObject(); if (selectedUserId == user.getId()) { listItem.add(new SimpleAttributeModifier("class", "selected")); } else if(listItem.getIndex() % 2 == 1) { listItem.add(sam); } listItem.add(new Label("name", new PropertyModel(user, "name"))); listItem.add(new Label("loginName", new PropertyModel(user, "loginName"))); listItem.add(new Label("email", new PropertyModel(user, "email"))); listItem.add(new Label("locale", new PropertyModel(user, "locale"))); listItem.add(new WebMarkupContainer("locked").setVisible(user.isLocked())); listItem.add(new Link("edit") { public void onClick() { UserFormPage page = new UserFormPage(user); page.setPrevious(UserListPage.this); setResponsePage(page); } }); listItem.add(new Link("allocate") { public void onClick() { setResponsePage(new UserAllocatePage(user.getId(), UserListPage.this)); } }); } }; add(listView); } /** * wicket form */ private class SearchForm extends Form { public String getSearchText() { return searchText; } public void setSearchText(String searchText) { UserListPage.this.searchText = searchText; } public String getSearchOn() { return searchOn; } public void setSearchOn(String searchOn) { UserListPage.this.searchOn = searchOn; } public SearchForm(String id) { super(id); setModel(new CompoundPropertyModel(this)); List<String> searchOnOptions = Arrays.asList(new String[] {"name", "loginName", "email"}); DropDownChoice searchOnChoice = new DropDownChoice("searchOn", searchOnOptions, new IChoiceRenderer() { public Object getDisplayValue(Object o) { String s = (String) o; if(s.equals("name")) { s = "userName"; // to match i18 key } return localize("user_list." + s); } public String getIdValue(Object o, int i) { return o.toString(); } }); add(searchOnChoice); final TextField searchTextField = new TextField("searchText"); searchTextField.setOutputMarkupId(true); add(searchTextField); add(new HeaderContributor(new IHeaderContributor() { public void renderHead(IHeaderResponse response) { response.renderOnLoadJavascript("document.getElementById('" + searchTextField.getMarkupId() + "').focus()"); } })); } @Override protected void onSubmit() { // setResponsePage(UserListPage.this); } } }