List of usage examples for org.apache.wicket.markup.html.basic Label isVisible
public boolean isVisible()
From source file:com.axway.ats.testexplorer.pages.testcase.statistics.DataPanel.java
License:Apache License
/** * Display the collected//ww w .j av a2 s .c om * @param statsForm */ public void displayStatisticDescriptions(Form<Object> statsForm) { boolean isDataPanelVisible = machineDescriptions.size() > 0; List<List<StatisticsTableCell>> rows = new ArrayList<List<StatisticsTableCell>>(); List<StatisticsTableCell> columns = new ArrayList<StatisticsTableCell>(); // add machine columns columns.add(new StatisticsTableCell("<img class=\"arrowUD\" src=\"images/up.png\">", false)); columns.add(new StatisticsTableCell(this.name, false)); for (MachineDescription machine : machineDescriptions) { String machineName = machine.getMachineAlias(); if (SQLServerDbReadAccess.MACHINE_NAME_FOR_ATS_AGENTS.equals(machineName)) { machineName = ""; } StatisticsTableCell cell = new StatisticsTableCell( "<b style=\"padding: 0 5px;\">" + machineName + "</b>", false, "centeredLabel"); cell.cssClass = "fixTableColumn"; columns.add(cell); } rows.add(columns); // add empty row columns = new ArrayList<StatisticsTableCell>(); for (int i = 0; i < 2 + machineDescriptions.size(); i++) { columns.add(NBSP_EMPTY_CELL); } rows.add(columns); final Set<Integer> hiddenRowIndexes = new HashSet<Integer>(); for (StatisticContainer statContainer : statContainers.values()) { List<DbStatisticDescription> statDescriptions = sortQueueItems(statContainer.getStatDescriptions()); String lastStatParent = ""; for (DbStatisticDescription statDescription : statDescriptions) { String statisticLabel = "<span class=\"statName\">" + statDescription.name + "</span><span class=\"statUnit\">(" + statDescription.unit + ")</span>"; // add parent table line if needed String statParent = statDescription.parentName; if (!StringUtils.isNullOrEmpty(statParent) && !statParent.equals(StatisticsPanel.SYSTEM_STATISTIC_CONTAINER) && !lastStatParent.equals(statParent)) { columns = new ArrayList<StatisticsTableCell>(); columns.add(NBSP_EMPTY_CELL); if (statParent.startsWith(PROCESS_STAT_PREFIX)) { // only Process parent element can hide its children (it is not a good idea to hide the User actions behind queue names) columns.add(new StatisticsTableCell( "<a href=\"#\" onclick=\"showHiddenStatChildren(this);return false;\">" + statParent + "</a>", false, "parentStatTd")); } else { columns.add(new StatisticsTableCell(statParent, false, "parentStatTd")); } for (int i = 0; i < machineDescriptions.size(); i++) { columns.add(NBSP_EMPTY_CELL); } rows.add(columns); } lastStatParent = statParent; columns = new ArrayList<StatisticsTableCell>(); columns.add(new StatisticsTableCell(true)); StatisticsTableCell statName = new StatisticsTableCell(statisticLabel, true); statName.title = statDescription.params; columns.add(statName); for (MachineDescription machine : machineDescriptions) { Model<Boolean> selectionModel = machine.getStatDescriptionSelectionModel(statDescription); // selectionModel.getObject() should sometimes return // NULL - when comparing with other testcases if (selectionModel != null && selectionModel.getObject() != null) { columns.add(new StatisticsTableCell(selectionModel)); } else { columns.add(EMPTY_CELL); } } // hide only the Process child elements if (!StringUtils.isNullOrEmpty(lastStatParent) && lastStatParent.startsWith(PROCESS_STAT_PREFIX)) { // add current row number as a child row which must be hidden hiddenRowIndexes.add(rows.size()); } rows.add(columns); } } statisticsUIContainer = new ListView<List<StatisticsTableCell>>(uiPrefix + "StatsRows", rows) { private static final long serialVersionUID = 1L; @Override protected void populateItem(ListItem<List<StatisticsTableCell>> item) { // table TR if (item.getIndex() == 0) { item.add(AttributeModifier.replace("class", "statisticsHeaderRow")); item.add(AttributeModifier.replace("onclick", "showOrHideTableRows('" + uiPrefix + "StatsTable',1,true);")); } else if (item.getIndex() > 3) { // skip the machines,label and // measurement rows item.add(AttributeModifier.replace("class", "statisticRow")); } if (hiddenRowIndexes.contains(item.getIndex())) { item.add(new AttributeAppender("class", new Model<String>("hiddenStatRow"), " ")); } item.add(new ListView<StatisticsTableCell>(uiPrefix + "StatsColumns", item.getModelObject()) { private static final long serialVersionUID = 1L; @Override protected void populateItem(ListItem<StatisticsTableCell> item) { // table TD if (item.getIndex() > 0) { // skip the first (CheckBox) // column item.add(AttributeModifier.replace("class", "statisticColumn")); } StatisticsTableCell cell = item.getModelObject(); CheckBox checkBox = new CheckBox("checkbox", cell.checkboxModel); if (cell.isCheckbox) { if (item.getIndex() == 0) { // this is the first/main CheckBox // binding onclick function which will (un)select all the CheckBoxes on that row // and will change the line color if it is selected or not checkBox.add(AttributeModifier.replace("onclick", "selectAllCheckboxes(this,'" + uiPrefix + "StatsTable');")); checkBox.add(AttributeModifier.replace("class", "allMachinesCheckbox")); } else { // binding onclick function which will (un)select the main/first CheckBox on that row // when all the CheckBoxes are selected or some are unselected. // Also the row/cell color will be changed. checkBox.add(AttributeModifier.replace("onclick", "unselectMainTrCheckbox(this,'" + uiPrefix + "StatsTable');")); checkBox.add(AttributeModifier.replace("class", "machineCheckbox")); item.add(AttributeModifier.replace("class", "statisticColumnWithCheckboxOnly")); } } else { checkBox.setVisible(false); } item.add(checkBox); Label label = new Label("label", cell.labelText); label.setEscapeModelStrings(false).setVisible(!cell.isCheckbox && !cell.isInputText); if (cell.isCheckboxLabel) { // binding JavaScript function which will click on the first/main CheckBox of this statistic label.add(AttributeModifier.replace("onclick", "clickSelectAllCheckbox(this);")); label.add(AttributeModifier.replace("class", "checkboxLabel noselection")); if (cell.title != null && !cell.title.isEmpty()) { String title = cell.title; int readingStartIndex = cell.title.indexOf(PARAMS_READING_UNIQUENESS_MAKRER); if (readingStartIndex > 0) { title = cell.title.substring(0, readingStartIndex) + cell.title.substring(cell.title.indexOf("_", readingStartIndex + 1)); } label.add(AttributeModifier.replace("title", title.replace("_", ", ").trim())); } } else if (label.isVisible() && cell.cssClass != null) { label.add(AttributeModifier.replace("class", cell.cssClass)); } item.add(label); Label machineAliasLabel = new Label("inputText", cell.getMachineLabelModel()); machineAliasLabel.setVisible(cell.isInputText); if (cell.getMachineLabelModel() != null && cell.getMachineLabelModel().getObject() != null) { machineAliasLabel.setOutputMarkupId(true); machineAliasLabel.add( AttributeModifier.replace("title", cell.getMachineLabelModel().getObject())); globalPanel.rememberMachineAliasLabel(machineAliasLabel); } item.add(machineAliasLabel); } }); } }; statisticsUIContainer.setVisible(isDataPanelVisible); statsForm.add(statisticsUIContainer); }
From source file:de.tudarmstadt.ukp.csniper.webapp.support.wicket.ExpandableList.java
License:Apache License
private void initialize() { expandableList = new RepeatingView("expandableList"); AbstractItem item;// www . java 2s. c o m for (Entry<String, String> entry : items.entrySet()) { item = new AbstractItem(expandableList.newChildId()); final Label body = new Label("body", entry.getValue()); body.setOutputMarkupPlaceholderTag(true).setVisible(false).setEscapeModelStrings(false); item.add(body); item.add(new AjaxLink<String>("caption", new Model<String>(entry.getKey())) { private static final long serialVersionUID = 1L; @Override public void onComponentTagBody(MarkupStream markupStream, ComponentTag openTag) { replaceComponentTagBody(markupStream, openTag, getModelObject()); } @Override public void onClick(AjaxRequestTarget aTarget) { body.setVisible(!body.isVisible()); aTarget.add(body); } }.add(new AttributeModifier("class", new Model<String>("clickableElement")))); expandableList.add(item); } add(expandableList); }
From source file:dk.netdesign.common.osgi.config.wicket.panel.ConfigurationItemPanel.java
License:Apache License
public ConfigurationItemPanel(final Attribute attribute, final IModel<Serializable> currentValue, IModel<String> errorMessage, String id) { super(id);// w ww .ja v a 2 s . c o m this.attribute = attribute; String panelTextFieldID = attribute.getID() + "Input"; String panelSmallLabelID = attribute.getID() + "Details"; String attributeDefault = attribute.getDefaultValue() != null && attribute.getDefaultValue().length > 0 && attribute.getDefaultValue()[0] != null ? attribute.getDefaultValue()[0] : null; String methodReturnSimpleName = attribute.getMethodReturnType().getSimpleName(); final boolean usingDefault; configValue = currentValue; if (currentValue.getObject() == null || (currentValue.getObject() instanceof String && ((String) currentValue.getObject()).isEmpty())) { currentValue.setObject(attributeDefault); usingDefault = true; } else { usingDefault = false; } String propertyNameAndCardinality = attribute.getName() + "(" + attribute.getCardinalityDef().name() + ")"; WebMarkupContainer formLabel = new WebMarkupContainer("nameLabel"); Label labelText = new Label("labelText", Model.of(propertyNameAndCardinality)); formLabel.add(labelText); final Label labelMessage = new ErrorLabel("labelMsg", errorMessage); formLabel.add(labelMessage); formLabel.add(AttributeModifier.replace("for", panelTextFieldID)); formLabel.add(AttributeModifier.replace("title", attribute.getInputType().getSimpleName())); add(formLabel); final Class attributeInputType = attribute.getInputType(); final Class attributeMethodType = attribute.getMethodReturnType(); //WebMarkupContainer inputArea = new WebMarkupContainer("inputArea"); InputFragment fragment; if (attributeInputType.equals(Number.class)) { fragment = new NumberFieldFragment("inputArea", "numberBox", this, attribute, panelTextFieldID, panelSmallLabelID, (IModel<Number>) configValue); } else if (attributeInputType.equals(String.class) && attributeMethodType.equals(URL.class)) { fragment = new URLFieldFragment("inputArea", "urlBox", this, attribute, panelTextFieldID, panelSmallLabelID, (IModel<String>) configValue); } else if (attributeInputType.equals(Boolean.class)) { fragment = new BooleanFieldFragment("inputArea", "checkBox", this, attribute, panelTextFieldID, panelSmallLabelID, (IModel<Boolean>) configValue); } else if (attributeInputType.equals(String.class)) { fragment = new TextFieldFragment("inputArea", "textBox", this, attribute, panelTextFieldID, panelSmallLabelID, (IModel<String>) configValue); } else if (attributeInputType.equals(Character[].class)) { fragment = new PasswordFragment("inputArea", "passwordBox", this, attribute, panelTextFieldID, panelSmallLabelID, (IModel<Character[]>) configValue); } else { fragment = new UnknownTypeFragment("inputArea", "textBox", this, attribute, panelTextFieldID, panelSmallLabelID, configValue); } //inputArea.add(fragment); add(fragment); // formInput.add(AttributeModifier.replace("type", new LoadableDetachableModel<String>() { // @Override // protected String load() { // if (attributeInputType == Character[].class) { // return "password"; // } else if (Number.class.isAssignableFrom(attributeInputType)) { // return "number"; // } else if(URL.class.isAssignableFrom(attributeMethodType)){ // return "url"; // } // else{ // return "text"; // } // } // })); fragment.getFormInput().add(AttributeModifier.append("style", new AbstractReadOnlyModel<String>() { @Override public String getObject() { if (labelMessage.isVisible()) { return "background-color:#d9534f;"; } else if (attribute.getCardinalityDef().equals(Property.Cardinality.Required) && currentValue.getObject() == null) { return "background-color:#d9534f;"; } else if (usingDefault) { return "background-color:#f0ad4e;"; } else { return null; } } })); Label smallLabel = new Label("smallLabel", attribute.getDescription()); smallLabel.add(AttributeModifier.replace("id", panelSmallLabelID)); add(smallLabel); }
From source file:org.apache.openmeetings.web.room.menu.RoomMenuPanel.java
License:Apache License
@Override protected void onInitialize() { exitMenuItem = new RoomMenuItem(getString("308"), getString("309"), "room menu exit") { private static final long serialVersionUID = 1L; @Override/*from w w w .j av a 2 s. c o m*/ public void onClick(AjaxRequestTarget target) { exit(target); } }; filesMenu = new RoomMenuItem(getString("245"), null, false); actionsSubMenu.init(); pollsSubMenu.init(); add((menuPanel = new MenuPanel("menu", getMenu())).setVisible(isVisible())); add(askBtn.add(AttributeModifier.replace(ATTR_TITLE, getString("84")))); Label demo = new Label("demo", Model.of("")); Room r = room.getRoom(); add(demo.setVisible( r.isDemoRoom() && r.getDemoTime() != null && room.getRoom().getDemoTime().intValue() > 0)); if (demo.isVisible()) { demo.add(new OmRedirectTimerBehavior(room.getRoom().getDemoTime().intValue(), "637") { private static final long serialVersionUID = 1L; @Override protected void onTimer(int remain) { getComponent().add(AttributeModifier.replace(ATTR_TITLE, getText("639", remain))); } @Override protected void onFinish(AjaxRequestTarget target) { exit(target); } }); } super.onInitialize(); }
From source file:org.sakaiproject.delegatedaccess.tool.pages.UserPageSiteSearch.java
License:Educational Community License
@SuppressWarnings("unchecked") public void buildPage(final String search, final Map<String, Object> advancedFields, final boolean statistics, final boolean currentStatisticsFlag) { this.search = search; this.statistics = statistics; this.currentStatisticsFlag = currentStatisticsFlag; if (statistics) { disableLink(shoppingStatsLink);/*from w w w. j a v a 2s. c om*/ } List<ListOptionSerialized> blankRestrictedTools = projectLogic.getEntireToolsList(); toolsMap = new HashMap<String, String>(); for (ListOptionSerialized option : blankRestrictedTools) { toolsMap.put(option.getId(), option.getName()); } //Setup Statistics Links: Link<Void> currentLink = new Link<Void>("currentLink") { private static final long serialVersionUID = 1L; public void onClick() { setResponsePage(new UserPageSiteSearch("", null, true, true)); } @Override public boolean isVisible() { return statistics; } }; currentLink.add(new Label("currentLinkLabel", new ResourceModel("link.current")).setRenderBodyOnly(true)); currentLink.add(new AttributeModifier("title", true, new ResourceModel("link.current.tooltip"))); add(currentLink); if (currentStatisticsFlag) { disableLink(currentLink); } Link<Void> allLink = new Link<Void>("allLink") { private static final long serialVersionUID = 1L; public void onClick() { setResponsePage(new UserPageSiteSearch("", null, true, false)); } @Override public boolean isVisible() { return statistics; } }; allLink.add(new Label("allLinkLabel", new ResourceModel("link.all")).setRenderBodyOnly(true)); allLink.add(new AttributeModifier("title", true, new ResourceModel("link.all.tooltip"))); add(allLink); if (!currentStatisticsFlag) { disableLink(allLink); } termOptions = new ArrayList<SelectOption>(); for (String[] entry : sakaiProxy.getTerms()) { termOptions.add(new SelectOption(entry[1], entry[0])); } Map<String, String> hierarchySearchFields = new HashMap<String, String>(); if (advancedFields != null) { for (Entry<String, Object> entry : advancedFields.entrySet()) { if (DelegatedAccessConstants.ADVANCED_SEARCH_INSTRUCTOR.equals(entry.getKey())) { instructorField = entry.getValue().toString(); selectedInstructorOption = advancedFields .get(DelegatedAccessConstants.ADVANCED_SEARCH_INSTRUCTOR_TYPE).toString(); } if (DelegatedAccessConstants.ADVANCED_SEARCH_TERM.equals(entry.getKey())) { for (SelectOption option : termOptions) { if (entry.getValue().equals(option.getValue())) { termField = option; break; } } } if (DelegatedAccessConstants.ADVANCED_SEARCH_HIERARCHY_FIELDS.equals(entry.getKey())) { hierarchySearchFields = (Map<String, String>) entry.getValue(); } } } //Create Search Form: final PropertyModel<String> searchModel = new PropertyModel<String>(this, "search"); final PropertyModel<String> instructorFieldModel = new PropertyModel<String>(this, "instructorField"); final PropertyModel<SelectOption> termFieldModel = new PropertyModel<SelectOption>(this, "termField"); final IModel<String> searchStringModel = new IModel<String>() { public void detach() { } public void setObject(String arg0) { } public String getObject() { String searchString = ""; if (searchModel.getObject() != null && !"".equals(searchModel.getObject().toString().trim())) { searchString += new StringResourceModel("siteIdTitleField", null).getString() + " " + searchModel.getObject(); } if (instructorFieldModel.getObject() != null && !"".equals(instructorFieldModel.getObject())) { if (!"".equals(searchString)) searchString += ", "; String userType = new StringResourceModel("instructor", null).getString(); if (DelegatedAccessConstants.ADVANCED_SEARCH_INSTRUCTOR_TYPE_MEMBER .equals(selectedInstructorOption)) { userType = new StringResourceModel("member", null).getString(); } searchString += userType + " " + instructorFieldModel.getObject(); } if (termFieldModel.getObject() != null && !"".equals(termFieldModel.getObject())) { if (!"".equals(searchString)) searchString += ", "; searchString += new StringResourceModel("termField", null).getString() + " " + termFieldModel.getObject().getLabel(); } //hierarchy params: if (hierarchySearchMap != null) { for (Entry<String, SelectOption> entry : hierarchySearchMap.entrySet()) { if (entry.getValue() != null && !"".equals(entry.getValue().getValue().trim())) { if (!"".equals(searchString)) searchString += ", "; searchString += hierarchyLabels.get(entry.getKey()) + ": " + entry.getValue().getValue().trim(); } } } return searchString; } }; final IModel<String> permaLinkModel = new IModel<String>() { @Override public void detach() { } @Override public String getObject() { String path = "/shopping"; Map<String, String> params = new HashMap<String, String>(); //Search if (searchModel.getObject() != null) { params.put("search", searchModel.getObject()); } //term: if (termFieldModel.getObject() != null && !"".equals(termFieldModel.getObject())) { params.put("term", termFieldModel.getObject().getValue()); } //instructor if (instructorFieldModel.getObject() != null && !"".equals(instructorFieldModel.getObject())) { params.put("instructor", instructorFieldModel.getObject()); if (DelegatedAccessConstants.ADVANCED_SEARCH_INSTRUCTOR_TYPE_MEMBER .equals(selectedInstructorOption)) { params.put("instructorType", DelegatedAccessConstants.ADVANCED_SEARCH_INSTRUCTOR_TYPE_MEMBER); } else { params.put("instructorType", DelegatedAccessConstants.ADVANCED_SEARCH_INSTRUCTOR_TYPE_INSTRUCTOR); } } //hierarchy params: if (hierarchySearchMap != null) { int i = 0; for (Entry<String, SelectOption> entry : hierarchySearchMap.entrySet()) { if (entry.getValue() != null && !"".equals(entry.getValue().getValue().trim())) { params.put("hierarchyKey" + i, entry.getKey()); params.put("hierarchyValue" + i, entry.getValue().getValue()); i++; } } } String context = sakaiProxy.siteReference(sakaiProxy.getCurrentPlacement().getContext()); String url = ""; try { String tool = "sakai.delegatedaccess"; if (isShoppingPeriodTool()) { tool += ".shopping"; } url = developerHelperService.getToolViewURL(tool, path, params, context); } catch (Exception e) { } return url; } @Override public void setObject(String arg0) { } }; final Form<?> form = new Form("form") { @Override protected void onSubmit() { super.onSubmit(); if (provider != null) { provider.detachManually(); } } }; form.add(new TextField<String>("search", searchModel)); AbstractReadOnlyModel<String> instructorFieldLabelModel = new AbstractReadOnlyModel<String>() { @Override public String getObject() { if (isShoppingPeriodTool()) { return new StringResourceModel("instructor", null).getObject() + ":"; } else { return new StringResourceModel("user", null).getObject() + ":"; } } }; form.add(new Label("instructorFieldLabel", instructorFieldLabelModel)); form.add(new TextField<String>("instructorField", instructorFieldModel)); //Instructor Options: RadioGroup group = new RadioGroup("instructorOptionsGroup", new PropertyModel<String>(this, "selectedInstructorOption")) { @Override public boolean isVisible() { //only show if its not shopping period return !isShoppingPeriodTool(); } }; group.add(new Radio("instructorOption", Model.of(DelegatedAccessConstants.ADVANCED_SEARCH_INSTRUCTOR_TYPE_INSTRUCTOR))); group.add(new Radio("memberOption", Model.of(DelegatedAccessConstants.ADVANCED_SEARCH_INSTRUCTOR_TYPE_MEMBER))); form.add(group); final ChoiceRenderer choiceRenderer = new ChoiceRenderer("label", "value"); DropDownChoice termFieldDropDown = new DropDownChoice("termField", termFieldModel, termOptions, choiceRenderer) { @Override public boolean isVisible() { return !sakaiProxy.isSearchHideTerm(); } }; //keeps the null option (choose one) after a user selects an option termFieldDropDown.setNullValid(true); form.add(termFieldDropDown); add(form); //hierarchy dropdown: String[] hierarchyTmp = sakaiProxy .getServerConfigurationStrings(DelegatedAccessConstants.HIERARCHY_SITE_PROPERTIES); if (hierarchyTmp == null || hierarchyTmp.length == 0) { hierarchyTmp = DelegatedAccessConstants.DEFAULT_HIERARCHY; } final String[] hierarchy = hierarchyTmp; WebMarkupContainer hierarchyDiv = new WebMarkupContainer("hierarchyFields"); final Comparator<SelectOption> optionComparator = new SelectOptionComparator(); if (hierarchySelectOptions == null || hierarchySelectOptions.size() == 0) { nodeSelectOrder = new ArrayList<String>(); hierarchySearchMap = new HashMap<String, SelectOption>(); for (String s : hierarchy) { hierarchySearchMap.put(s, null); nodeSelectOrder.add(s); hierarchyLabels.put(s, sakaiProxy.getHierarchySearchLabel(s)); } Map<String, String> searchParams = new HashMap<String, String>(); for (Entry<String, SelectOption> entry : hierarchySearchMap.entrySet()) { String value = entry.getValue() == null ? "" : entry.getValue().getValue(); //in case user passed in a parameter, set it: if (hierarchySearchFields.containsKey(entry.getKey())) { value = hierarchySearchFields.get(entry.getKey()); } searchParams.put(entry.getKey(), value); } Map<String, Set<String>> hierarchyOptions = projectLogic.getHierarchySearchOptions(searchParams); hierarchySelectOptions = new HashMap<String, List<SelectOption>>(); for (Entry<String, Set<String>> entry : hierarchyOptions.entrySet()) { List<SelectOption> options = new ArrayList<SelectOption>(); for (String s : entry.getValue()) { SelectOption o = new SelectOption(s, s); options.add(o); if (searchParams.containsKey(entry.getKey()) && s.equals(searchParams.get(entry.getKey()))) { hierarchySearchMap.put(entry.getKey(), o); } } Collections.sort(options, optionComparator); hierarchySelectOptions.put(entry.getKey(), options); } } DataView dropdowns = new DataView("hierarchyDropdowns", new IDataProvider<String>() { @Override public void detach() { } @Override public Iterator<? extends String> iterator(int first, int count) { return nodeSelectOrder.subList(first, first + count).iterator(); } @Override public IModel<String> model(final String arg0) { return new AbstractReadOnlyModel<String>() { private static final long serialVersionUID = 1L; @Override public String getObject() { return arg0; } }; } @Override public int size() { return nodeSelectOrder.size(); } }) { @Override protected void populateItem(Item item) { final String hierarchyLevel = item.getModelObject().toString(); item.add(new Label("hierarchyLabel", hierarchyLabels.containsKey(hierarchyLevel) ? hierarchyLabels.get(hierarchyLevel) : hierarchyLevel)); final DropDownChoice choice = new DropDownChoice("hierarchyLevel", new NodeSelectModel(hierarchyLevel), hierarchySelectOptions.get(hierarchyLevel), choiceRenderer); //keeps the null option (choose one) after a user selects an option choice.setNullValid(true); choice.add(new AjaxFormComponentUpdatingBehavior("onchange") { protected void onUpdate(AjaxRequestTarget target) { Map<String, String> searchParams = new HashMap<String, String>(); for (Entry<String, SelectOption> entry : hierarchySearchMap.entrySet()) { searchParams.put(entry.getKey(), entry.getValue() == null ? "" : entry.getValue().getValue()); } Map<String, Set<String>> hierarchyOptions = projectLogic .getHierarchySearchOptions(searchParams); hierarchySelectOptions = new HashMap<String, List<SelectOption>>(); for (Entry<String, Set<String>> entry : hierarchyOptions.entrySet()) { List<SelectOption> options = new ArrayList<SelectOption>(); for (String s : entry.getValue()) { options.add(new SelectOption(s, s)); } Collections.sort(options, optionComparator); hierarchySelectOptions.put(entry.getKey(), options); } //refresh everything: target.addComponent(form); } }); item.add(choice); } }; hierarchyDiv.add(dropdowns); form.add(hierarchyDiv); //show user's search (if not null) add(new Label("searchResultsTitle", new StringResourceModel("searchResultsTitle", null)) { @Override public boolean isVisible() { return (searchModel.getObject() != null && !"".equals(searchModel.getObject())) || (instructorFieldModel.getObject() != null && !"".equals(instructorFieldModel.getObject())) || (termFieldModel.getObject() != null && !"".equals(termFieldModel.getObject())) || hierarchyOptionSelected(); } }); add(new Label("searchString", searchStringModel) { @Override public boolean isVisible() { return (searchModel.getObject() != null && !"".equals(searchModel.getObject())) || (instructorFieldModel.getObject() != null && !"".equals(instructorFieldModel.getObject())) || (termFieldModel.getObject() != null && !"".equals(termFieldModel.getObject())) || hierarchyOptionSelected(); } }); add(new TextField("permaLink", permaLinkModel) { @Override public boolean isVisible() { return (searchModel.getObject() != null && !"".equals(searchModel.getObject())) || (instructorFieldModel.getObject() != null && !"".equals(instructorFieldModel.getObject())) || (termFieldModel.getObject() != null && !"".equals(termFieldModel.getObject())) || hierarchyOptionSelected(); } }); //search result table: //Headers final Link<Void> siteTitleSort = new Link<Void>("siteTitleSortLink") { private static final long serialVersionUID = 1L; public void onClick() { changeOrder(DelegatedAccessConstants.SEARCH_COMPARE_SITE_TITLE); } @Override public boolean isVisible() { return provider.size() > 0; } }; final Label siteTitleLabel = new Label("siteTitleLabel", new StringResourceModel("siteTitleHeader", null)); siteTitleSort.add(siteTitleLabel); add(siteTitleSort); final Link<Void> siteIdSort = new Link<Void>("siteIdSortLink") { private static final long serialVersionUID = 1L; public void onClick() { changeOrder(DelegatedAccessConstants.SEARCH_COMPARE_SITE_ID); } @Override public boolean isVisible() { return provider.size() > 0; } }; final Label siteIdSortLabel = new Label("siteIdSortLabel", new StringResourceModel("siteIdHeader", null)); siteIdSort.add(siteIdSortLabel); add(siteIdSort); final Link<Void> termSort = new Link<Void>("termSortLink") { private static final long serialVersionUID = 1L; public void onClick() { changeOrder(DelegatedAccessConstants.SEARCH_COMPARE_TERM); } @Override public boolean isVisible() { return provider.size() > 0; } }; final Label termSortLabel = new Label("termSortLabel", new StringResourceModel("termHeader", null)); termSort.add(termSortLabel); add(termSort); AbstractReadOnlyModel<String> instructorSortLabelModel = new AbstractReadOnlyModel<String>() { @Override public String getObject() { if (DelegatedAccessConstants.ADVANCED_SEARCH_INSTRUCTOR_TYPE_MEMBER .equals(selectedInstructorOption)) { return new StringResourceModel("member", null).getObject(); } else { return new StringResourceModel("instructor", null).getObject(); } } }; final Link<Void> instructorSort = new Link<Void>("instructorSortLink") { private static final long serialVersionUID = 1L; public void onClick() { changeOrder(DelegatedAccessConstants.SEARCH_COMPARE_INSTRUCTOR); } @Override public boolean isVisible() { return provider.size() > 0; } }; final Label instructorSortLabel = new Label("instructorSortLabel", instructorSortLabelModel); instructorSort.add(instructorSortLabel); add(instructorSort); final Link<Void> providersSort = new Link<Void>("providersSortLink") { private static final long serialVersionUID = 1L; public void onClick() { changeOrder(DelegatedAccessConstants.SEARCH_COMPARE_PROVIDERS); } @Override public boolean isVisible() { //this helps hide all the extra columns with the wicket:enclosure in the html return !isShoppingPeriodTool() && sakaiProxy.isProviderIdLookupEnabled(); } }; final Label providersSortLabel = new Label("providersSortLabel", new StringResourceModel("providers", null)); providersSort.add(providersSortLabel); add(providersSort); final Link<Void> publishedSort = new Link<Void>("publishedSortLink") { private static final long serialVersionUID = 1L; public void onClick() { changeOrder(DelegatedAccessConstants.SEARCH_COMPARE_PUBLISHED); } @Override public boolean isVisible() { //this helps hide all the extra columns with the wicket:enclosure in the html return !isShoppingPeriodTool(); } }; final Label publishedSortLabel = new Label("publishedSortLabel", new StringResourceModel("published", null)); publishedSort.add(publishedSortLabel); add(publishedSort); final Link<Void> accessSort = new Link<Void>("accessSortLink") { private static final long serialVersionUID = 1L; public void onClick() { changeOrder(DelegatedAccessConstants.SEARCH_COMPARE_ACCESS); } }; final Label accessSortLabel = new Label("accessSortLabel", new StringResourceModel("access", null)); accessSort.add(accessSortLabel); add(accessSort); final Link<Void> startDateSort = new Link<Void>("startDateSortLink") { private static final long serialVersionUID = 1L; public void onClick() { changeOrder(DelegatedAccessConstants.SEARCH_COMPARE_START_DATE); } @Override public boolean isVisible() { //this helps with the wicket:enlosure return statistics; } }; final Label startDateSortLabel = new Label("startDateSortLabel", new StringResourceModel("startDate", null)); startDateSort.add(startDateSortLabel); add(startDateSort); final Link<Void> endDateSort = new Link<Void>("endDateSortLink") { private static final long serialVersionUID = 1L; public void onClick() { changeOrder(DelegatedAccessConstants.SEARCH_COMPARE_END_DATE); } @Override public boolean isVisible() { return statistics; } }; final Label endDateSortLabel = new Label("endDateSortLabel", new StringResourceModel("endDate", null)); endDateSort.add(endDateSortLabel); add(endDateSort); final Label showAuthToolsHeader = new Label("showAuthToolsHeader", new StringResourceModel("showAuthToolsHeader", null)) { @Override public boolean isVisible() { return statistics; } }; add(showAuthToolsHeader); final Label showPublicToolsHeader = new Label("showPublicToolsHeader", new StringResourceModel("showPublicToolsHeader", null)) { @Override public boolean isVisible() { return statistics; } }; add(showPublicToolsHeader); final Link<Void> accessModifiedBySort = new Link<Void>("accessModifiedBySortLink") { private static final long serialVersionUID = 1L; public void onClick() { changeOrder(DelegatedAccessConstants.SEARCH_COMPARE_ACCESS_MODIFIED_BY); } @Override public boolean isVisible() { //this helps hide all the extra columns with the wicket:enclosure in the html return !isShoppingPeriodTool(); } }; final Label accessModifiedBySortLabel = new Label("accessModifiedBySortLabel", new StringResourceModel("accessModifiedBy", null)); accessModifiedBySort.add(accessModifiedBySortLabel); add(accessModifiedBySort); final Link<Void> accessModifiedOnSort = new Link<Void>("accessModifiedOnSortLink") { private static final long serialVersionUID = 1L; public void onClick() { changeOrder(DelegatedAccessConstants.SEARCH_COMPARE_ACCESS_MODIFIED); } @Override public boolean isVisible() { //this helps hide all the extra columns with the wicket:enclosure in the html return !isShoppingPeriodTool(); } }; final Label accessModifiedOnSortLabel = new Label("accessModifiedOnSortLabel", new StringResourceModel("accessModifiedOn", null)); accessModifiedOnSort.add(accessModifiedOnSortLabel); add(accessModifiedOnSort); //Data: provider = new SiteSearchResultDataProvider(); final DataView<SiteSearchResult> dataView = new DataView<SiteSearchResult>("searchResult", provider) { @Override public void populateItem(final Item item) { final SiteSearchResult siteSearchResult = (SiteSearchResult) item.getModelObject(); AjaxLink<Void> siteTitleLink = new AjaxLink("siteTitleLink") { private static final long serialVersionUID = 1L; public void onClick(AjaxRequestTarget target) { if (siteSearchResult.getSiteUrl() != null) { //redirect the user to the site target.appendJavascript("popupWindow('" + siteSearchResult.getSiteUrl() + "', '" + new StringResourceModel("popupBlockWarning", null).getObject() + "')"); } } }; siteTitleLink.add(new Label("siteTitle", siteSearchResult.getSiteTitle())); item.add(siteTitleLink); final String siteRef = siteSearchResult.getSiteReference(); final String siteId = siteSearchResult.getSiteId(); item.add(new Label("siteId", siteId)); item.add(new Label("term", siteSearchResult.getSiteTerm())); item.add(new Label("instructor", new AbstractReadOnlyModel<String>() { @Override public String getObject() { return siteSearchResult.getInstructorsString(); } })); item.add(new Link<Void>("instructorLookupLink") { private static final long serialVersionUID = 1L; public void onClick() { boolean foundInstructors = false; for (User user : sakaiProxy.getInstructorsForSite(siteId)) { siteSearchResult.addInstructor(user); foundInstructors = true; } if (!foundInstructors) { siteSearchResult.setHasInstructor(false); } } @Override public boolean isVisible() { return (instructorField == null || "".equals(instructorField)) && siteSearchResult.isHasInstructor() && siteSearchResult.getInstructors().size() == 0; } }); item.add(new Label("providers", new AbstractReadOnlyModel<String>() { @Override public String getObject() { return siteSearchResult.getProviders(); } }) { @Override public boolean isVisible() { return !isShoppingPeriodTool() && sakaiProxy.isProviderIdLookupEnabled(); } }); item.add(new Link<Void>("providersLookupLink") { private static final long serialVersionUID = 1L; public void onClick() { String providers = sakaiProxy.getProviderId(siteRef); if (providers == null || "".equals(providers)) { //set it to a empty space so that the link will hide itself providers = " "; } siteSearchResult.setProviders(providers); } @Override public boolean isVisible() { return !isShoppingPeriodTool() && sakaiProxy.isProviderIdLookupEnabled() && "".equals(siteSearchResult.getProviders()); } }); StringResourceModel publishedModel = siteSearchResult.isSitePublished() ? new StringResourceModel("yes", null) : new StringResourceModel("no", null); item.add(new Label("published", publishedModel) { @Override public boolean isVisible() { return !isShoppingPeriodTool(); } }); String access = isShoppingPeriodTool() ? siteSearchResult.getAccessRoleString() : siteSearchResult.getAccessString(); item.add(new Label("access", access)); item.add(new Label("startDate", siteSearchResult.getShoppingPeriodStartDateStr()) { @Override public boolean isVisible() { //this helps hide all the extra columns with the wicket:enclosure in the html return statistics; } }); item.add(new Label("endDate", siteSearchResult.getShoppingPeriodEndDateStr())); item.add(new Label("showAuthTools", siteSearchResult.getAuthToolsString(toolsMap))); item.add(new Label("showPublicTools", siteSearchResult.getPublicToolsString(toolsMap))); item.add(new Label("accessModifiedBy", siteSearchResult.getModifiedBySortName()) { @Override public boolean isVisible() { //this helps hide all the extra columns with the wicket:enclosure in the html return !isShoppingPeriodTool(); } }); item.add(new Label("accessModified", siteSearchResult.getModifiedStr())); } @Override public boolean isVisible() { return provider.size() > 0; } }; dataView.setItemReuseStrategy(new DefaultItemReuseStrategy()); dataView.setItemsPerPage(DelegatedAccessConstants.SEARCH_RESULTS_PAGE_SIZE); add(dataView); IModel<File> exportSearchModel = new AbstractReadOnlyModel<File>() { @Override public File getObject() { List<SiteSearchResult> data = provider.getData(); try { String seperator = ","; String lineBreak = "\n"; File file = File.createTempFile( new StringResourceModel("searchExportFileName", null).getObject(), ".csv"); FileWriter writer = new FileWriter(file.getAbsolutePath()); //write headers: StringBuffer sb = new StringBuffer(); if (siteTitleSort.isVisible()) { sb.append("\""); sb.append(siteTitleLabel.getDefaultModelObjectAsString()); sb.append("\""); sb.append(seperator); } if (instructorSort.isVisible()) { sb.append("\""); sb.append(instructorSortLabel.getDefaultModelObjectAsString()); sb.append("\""); sb.append(seperator); } if (termSort.isVisible()) { sb.append("\""); sb.append(termSortLabel.getDefaultModelObjectAsString()); sb.append("\""); sb.append(seperator); } if (siteIdSort.isVisible()) { sb.append("\""); sb.append(siteIdSortLabel.getDefaultModelObjectAsString()); sb.append("\""); sb.append(seperator); } if (providersSort.isVisible()) { sb.append("\""); sb.append(providersSortLabel.getDefaultModelObjectAsString()); sb.append("\""); sb.append(seperator); } if (publishedSort.isVisible()) { sb.append("\""); sb.append(publishedSortLabel.getDefaultModelObjectAsString()); sb.append("\""); sb.append(seperator); } if (accessSort.isVisible()) { sb.append("\""); sb.append(accessSortLabel.getDefaultModelObjectAsString()); sb.append("\""); sb.append(seperator); } if (startDateSort.isVisible()) { sb.append("\""); sb.append(startDateSortLabel.getDefaultModelObjectAsString()); sb.append("\""); sb.append(seperator); } if (endDateSort.isVisible()) { sb.append("\""); sb.append(endDateSortLabel.getDefaultModelObjectAsString()); sb.append("\""); sb.append(seperator); } if (showAuthToolsHeader.isVisible()) { sb.append("\""); sb.append(showAuthToolsHeader.getDefaultModelObjectAsString()); sb.append("\""); sb.append(seperator); } if (showPublicToolsHeader.isVisible()) { sb.append("\""); sb.append(showPublicToolsHeader.getDefaultModelObjectAsString()); sb.append("\""); sb.append(seperator); } if (accessModifiedBySort.isVisible()) { sb.append("\""); sb.append(accessModifiedBySortLabel.getDefaultModelObjectAsString()); sb.append("\""); sb.append(seperator); } if (accessModifiedOnSort.isVisible()) { sb.append("\""); sb.append(accessModifiedOnSortLabel.getDefaultModelObjectAsString()); sb.append("\""); sb.append(seperator); } sb.append(lineBreak); String yes = new StringResourceModel("yes", null).getObject(); String no = new StringResourceModel("no", null).getObject(); for (SiteSearchResult siteSearchResult : data) { if (siteTitleSort.isVisible()) { sb.append("\""); sb.append(siteSearchResult.getSiteTitle()); sb.append("\""); sb.append(seperator); } if (instructorSort.isVisible()) { if (siteSearchResult.isHasInstructor() && siteSearchResult.getInstructors().size() == 0) { //we need to look up instructor: boolean foundInstructors = false; for (User user : sakaiProxy.getInstructorsForSite(siteSearchResult.getSiteId())) { siteSearchResult.addInstructor(user); foundInstructors = true; } if (!foundInstructors) { siteSearchResult.setHasInstructor(false); } } sb.append("\""); sb.append(siteSearchResult.getInstructorsString()); sb.append("\""); sb.append(seperator); } if (termSort.isVisible()) { sb.append("\""); sb.append(siteSearchResult.getSiteTerm()); sb.append("\""); sb.append(seperator); } if (siteIdSort.isVisible()) { sb.append("\""); sb.append(siteSearchResult.getSiteId()); sb.append("\""); sb.append(seperator); } if (providersSort.isVisible()) { if ("".equals(siteSearchResult.getProviders())) { //look up providers if it isn't already set siteSearchResult.setProviders( sakaiProxy.getProviderId(siteSearchResult.getSiteReference())); } sb.append("\""); sb.append(siteSearchResult.getProviders()); sb.append("\""); sb.append(seperator); } if (publishedSort.isVisible()) { sb.append("\""); sb.append((siteSearchResult.isSitePublished() ? yes : no)); sb.append("\""); sb.append(seperator); } if (accessSort.isVisible()) { sb.append("\""); sb.append((isShoppingPeriodTool() ? siteSearchResult.getAccessRoleString() : siteSearchResult.getAccessString())); sb.append("\""); sb.append(seperator); } if (startDateSort.isVisible()) { sb.append("\""); sb.append(siteSearchResult.getShoppingPeriodStartDateStr()); sb.append("\""); sb.append(seperator); } if (endDateSort.isVisible()) { sb.append("\""); sb.append(siteSearchResult.getShoppingPeriodEndDateStr()); sb.append("\""); sb.append(seperator); } if (showAuthToolsHeader.isVisible()) { sb.append("\""); sb.append(siteSearchResult.getAuthToolsString(toolsMap)); sb.append("\""); sb.append(seperator); } if (showPublicToolsHeader.isVisible()) { sb.append("\""); sb.append(siteSearchResult.getPublicToolsString(toolsMap)); sb.append("\""); sb.append(seperator); } if (accessModifiedBySort.isVisible()) { sb.append("\""); sb.append(siteSearchResult.getModifiedBySortName()); sb.append("\""); sb.append(seperator); } if (accessModifiedOnSort.isVisible()) { sb.append("\""); sb.append(siteSearchResult.getModifiedStr()); sb.append("\""); sb.append(seperator); } sb.append(lineBreak); } writer.append(sb.toString()); writer.flush(); writer.close(); return file; } catch (IOException e) { log.error(e.getMessage(), e); return null; } } }; add(new DownloadLink("exportData", exportSearchModel) { @Override public void onClick() { Object fileObj = getModelObject(); if (fileObj != null && fileObj instanceof File) { File file = (File) fileObj; IResourceStream resourceStream = new FileResourceStream( new org.apache.wicket.util.file.File(file)); getRequestCycle().setRequestTarget( new ResourceStreamRequestTarget(resourceStream, file.getName()).setFileName( new StringResourceModel("searchExportFileName", null).getObject() + ".csv")); } } }); //Navigation //add a pager to our table, only visible if we have more than SEARCH_RESULTS_PAGE_SIZE items add(new PagingNavigator("navigatorTop", dataView) { @Override public boolean isVisible() { if (provider.size() > DelegatedAccessConstants.SEARCH_RESULTS_PAGE_SIZE) { return true; } return false; } @Override public void onBeforeRender() { super.onBeforeRender(); //clear the feedback panel messages clearFeedback(feedbackPanel); } }); add(new PagingNavigator("navigatorBottom", dataView) { @Override public boolean isVisible() { if (provider.size() > DelegatedAccessConstants.SEARCH_RESULTS_PAGE_SIZE) { return true; } return false; } @Override public void onBeforeRender() { super.onBeforeRender(); //clear the feedback panel messages clearFeedback(feedbackPanel); } }); }