List of usage examples for org.apache.wicket.ajax AjaxEventBehavior AjaxEventBehavior
public AjaxEventBehavior(String event)
From source file:org.projectforge.plugins.ffp.wicket.FFPEventEditForm.java
License:Open Source License
@Override protected void init() { super.init(); currentUser = ThreadLocalUserContext.getUser(); if (data.getOrganizer() == null) { if (currentUser == null) { error(I18nHelper.getLocalizedMessage("plugins.ffp.validate.noUser")); return; } else {/*from w ww. ja v a 2 s . co m*/ data.setOrganizer(currentUser); } } if (isNew()) { if (currentUser != null) { this.accountingList.add(getNewFfpAccountingDO(currentUser)); } } IFormValidator formValidator = new IFormValidator() { // Components for form validation. private final FormComponent<?>[] dependentFormComponents = new FormComponent[1]; @Override public FormComponent<?>[] getDependentFormComponents() { return dependentFormComponents; } @Override public void validate(Form<?> form) { Select2MultiChoice<PFUserDO> attendeesSelect2 = (Select2MultiChoice<PFUserDO>) dependentFormComponents[0]; Collection<PFUserDO> attendeeList = attendeesSelect2.getConvertedInput(); if (attendeeList != null && attendeeList.size() < 2) { error(I18nHelper.getLocalizedMessage("plugins.ffp.validate.minAttendees")); } } }; add(formValidator); gridBuilder.newSplitPanel(GridSize.COL50, true).newSubSplitPanel(GridSize.COL100); { // Organizer final FieldsetPanel fs = gridBuilder.newFieldset(FFPEventDO.class, "organizer"); fs.add(new DivTextPanel(fs.newChildId(), data.getOrganizer().getFullname())); } { // Event date final FieldsetPanel fs = gridBuilder.newFieldset(FFPEventDO.class, "eventDate"); DatePanel eventDate = new DatePanel(fs.newChildId(), new PropertyModel<>(data, "eventDate"), DatePanelSettings.get().withTargetType(java.sql.Date.class), true); eventDate.setRequired(true); eventDate.setMarkupId("eventDate").setOutputMarkupId(true); eventDate.setEnabled(getData().getFinished() == false); fs.add(eventDate); } { // Division final FieldsetPanel fs = gridBuilder.newFieldset(FFPEventDO.class, "title"); MaxLengthTextField titel = new MaxLengthTextField(InputPanel.WICKET_ID, new PropertyModel<>(data, "title")); titel.setRequired(true); titel.setMarkupId("eventTitel").setOutputMarkupId(true); titel.setEnabled(getData().getFinished() == false); fs.add(titel); } { // ATTENDEES final FieldsetPanel fieldSet = gridBuilder.newFieldset(getString("plugins.ffp.attendees")); assignAttendeesListHelper = new MultiChoiceListHelper<PFUserDO>() .setComparator(new Comparator<PFUserDO>() { @Override public int compare(PFUserDO o1, PFUserDO o2) { return o1.getPk().compareTo(o2.getPk()); } }).setFullList(userDao.getList(new PFUserFilter().setDeactivatedUser(false))); if (this.data.getAttendeeList() != null && this.data.getAttendeeList().size() > 0) { for (final PFUserDO attendee : this.data.getAttendeeList()) { assignAttendeesListHelper.addOriginalAssignedItem(attendee).assignItem(attendee); } } if (this.accountingList != null && this.accountingList.size() > 0) { for (final FFPAccountingDO accounting : this.accountingList) { assignAttendeesListHelper.assignItem(accounting.getAttendee()); } } final Select2MultiChoice<PFUserDO> attendees = new Select2MultiChoice<PFUserDO>( fieldSet.getSelect2MultiChoiceId(), new PropertyModel<Collection<PFUserDO>>(this.assignAttendeesListHelper, "assignedItems"), new UsersProvider(userDao)); attendees.setRequired(true).setMarkupId("attendees").setOutputMarkupId(true); attendees.add(new AjaxEventBehavior(OnChangeAjaxBehavior.EVENT_NAME) { protected final FormComponent<?> getFormComponent() { return (FormComponent<?>) getComponent(); } @Override protected void onEvent(AjaxRequestTarget target) { final FormComponent<?> formComponent = getFormComponent(); try { formComponent.inputChanged(); formComponent.validate(); if (formComponent.hasErrorMessage()) { formComponent.invalid(); accountingList.clear(); assignAttendeesListHelper.getAssignedItems().clear(); } else { formComponent.valid(); formComponent.updateModel(); } dataTable = createDataTable(createColumns(), "attendee.fullname", SortOrder.ASCENDING, getData()); tablePanel.addOrReplace(dataTable); target.add(dataTable); } catch (RuntimeException e) { throw e; } } }); attendees.setEnabled(getData().getFinished() == false); formValidator.getDependentFormComponents()[0] = attendees; fieldSet.add(attendees); } //Transactions createDataTable(gridBuilder); { Button finishButton = new Button("button", new Model<String>("plugins.ffp.finishEvent")) { @Override public final void onSubmit() { try { getData().setFinished(true); parentPage.createOrUpdate(); } catch (final UserException ex) { error(parentPage.translateParams(ex)); } } }; finishButton.setMarkupId("finishEvent").setOutputMarkupId(true); finishButtonPanel = new SingleButtonPanel(actionButtons.newChildId(), finishButton, getString("plugins.ffp.finishEvent"), SingleButtonPanel.SUCCESS); finishButtonPanel.setVisible(false); actionButtons.add(finishButtonPanel); } }
From source file:org.projectforge.plugins.skillmatrix.SkillSelectPanel.java
License:Open Source License
/** * /* w w w. ja v a2 s.co m*/ */ private void initAutoCompletePanels() { userselectContainer = new WebMarkupContainer("userselectContainer") { private static final long serialVersionUID = -4871020567729661148L; /** * @see org.apache.wicket.Component#isVisible() */ @Override public boolean isVisible() { // only show if we are in ajax select skill mode return ajaxSkillSelectMode == true; } }; add(userselectContainer); userselectContainer.setOutputMarkupId(true); userselectContainer.setOutputMarkupPlaceholderTag(true); final SkillSelectAutoCompleteFormComponent searchSkillInput = new SkillSelectAutoCompleteFormComponent( "searchSkillInput") { private static final long serialVersionUID = -7741009167252308262L; /** * @see org.projectforge.web.skill.SkillSelectAutoCompleteFormComponent#onModelChanged(org.apache.wicket.ajax.AjaxRequestTarget) */ @Override protected void onModelSelected(final AjaxRequestTarget target, final SkillDO skillDo) { ajaxSkillSelectMode = false; target.appendJavaScript("hideAllTooltips();"); SkillSelectPanel.this.setModelObject(skillDo); SkillSelectPanel.this.onModelSelected(target, skillDo); } }; userselectContainer.add(searchSkillInput); // opener link final WebMarkupContainer searchSkillInputOpen = new WebMarkupContainer("searchSkillInputOpen"); WicketUtils.addTooltip(searchSkillInputOpen, getString("quickselect")); searchSkillInputOpen.add(new AjaxEventBehavior("click") { private static final long serialVersionUID = -938527474172868488L; @Override protected void onEvent(final AjaxRequestTarget target) { ajaxSkillSelectMode = true; target.appendJavaScript("hideAllTooltips();"); target.add(divContainer); target.add(userselectContainer); target.focusComponent(searchSkillInput); } }); // close link final WebMarkupContainer searchSkillInputClose = new WebMarkupContainer("searchSkillInputClose"); divContainer.add(searchSkillInputClose); searchSkillInputClose.add(new AjaxEventBehavior("click") { private static final long serialVersionUID = -4334830387094758960L; @Override protected void onEvent(final AjaxRequestTarget target) { ajaxSkillSelectMode = false; target.appendJavaScript("hideAllTooltips();"); target.add(divContainer); target.add(userselectContainer); } }); userselectContainer.add(searchSkillInputClose); divContainer.add(searchSkillInputOpen); }
From source file:org.projectforge.web.dialog.ModalDialog.java
License:Open Source License
@SuppressWarnings("serial") public ModalDialog wantsNotificationOnClose() { mainContainer.add(new AjaxEventBehavior("hidden") { @Override//from ww w.j a v a2 s. c o m protected void onEvent(final AjaxRequestTarget target) { handleCloseEvent(target); } }); return this; }
From source file:org.projectforge.web.task.TaskSelectPanel.java
License:Open Source License
/** * /*from w ww . java2s . c om*/ */ private void initAutoCompletePanels() { userselectContainer = new WebMarkupContainer("userselectContainer") { private static final long serialVersionUID = -4871020567729661148L; /** * @see org.apache.wicket.Component#isVisible() */ @Override public boolean isVisible() { // only show if we are in ajax select task mode return ajaxTaskSelectMode == true; } }; add(userselectContainer); userselectContainer.setOutputMarkupId(true); userselectContainer.setOutputMarkupPlaceholderTag(true); final TaskSelectAutoCompleteFormComponent searchTaskInput = new TaskSelectAutoCompleteFormComponent( "searchTaskInput") { private static final long serialVersionUID = -7741009167252308262L; /** * @see org.projectforge.web.task.TaskSelectAutoCompleteFormComponent#onModelChanged(org.apache.wicket.ajax.AjaxRequestTarget) */ @Override protected void onModelSelected(final AjaxRequestTarget target, final TaskDO taskDo) { ajaxTaskSelectMode = false; TaskSelectPanel.this.setModelObject(taskDo); TaskSelectPanel.this.onModelSelected(target, taskDo); } }; userselectContainer.add(searchTaskInput); // opener link final WebMarkupContainer searchTaskInputOpen = new WebMarkupContainer("searchTaskInputOpen"); if (WebConfiguration.isDevelopmentMode() == true) { WicketUtils.addTooltip(searchTaskInputOpen, getString("quickselect")); searchTaskInputOpen.add(new AjaxEventBehavior("click") { private static final long serialVersionUID = -938527474172868488L; @Override protected void onEvent(final AjaxRequestTarget target) { ajaxTaskSelectMode = true; target.add(divContainer); target.add(userselectContainer); target.focusComponent(searchTaskInput); } }); // close link final WebMarkupContainer searchTaskInputClose = new WebMarkupContainer("searchTaskInputClose"); divContainer.add(searchTaskInputClose); searchTaskInputClose.add(new AjaxEventBehavior("click") { private static final long serialVersionUID = -4334830387094758960L; @Override protected void onEvent(final AjaxRequestTarget target) { ajaxTaskSelectMode = false; target.add(divContainer); target.add(userselectContainer); } }); userselectContainer.add(searchTaskInputClose); } else { searchTaskInputOpen.setVisible(false); } divContainer.add(searchTaskInputOpen); }
From source file:org.projectforge.web.wicket.flowlayout.DiffTextPanel.java
License:Open Source License
/** * @see org.apache.wicket.Component#onInitialize() *///from www . ja v a 2 s . c o m @SuppressWarnings("serial") @Override protected void onInitialize() { super.onInitialize(); if (showModalDialog == true && getPage() != null && getPage() instanceof AbstractSecuredPage) { final AbstractSecuredPage parentPage = (AbstractSecuredPage) getPage(); modalDialog = new ModalDialog(parentPage.newModalDialogId()) { @Override public void init() { setTitle(getString("changes")); init(new Form<String>(getFormId())); { final FieldsetPanel fs = gridBuilder.newFieldset(getString("history.oldValue")) .setLabelSide(false); final TextArea<String> textArea = new TextArea<String>(fs.getTextAreaId(), oldText); fs.add(textArea).setAutogrow(1, 10); textArea.add(AttributeModifier.replace("onClick", "$(this).select();")); } { final FieldsetPanel fs = gridBuilder.newFieldset(getString("history.newValue")) .setLabelSide(false); final TextArea<String> textArea = new TextArea<String>(fs.getTextAreaId(), newText); fs.add(textArea).setAutogrow(1, 10); textArea.add(AttributeModifier.replace("onClick", "$(this).select();")); } } }; modalDialog.setBigWindow(); modalDialog.setLazyBinding(); parentPage.add(modalDialog); final AjaxEventBehavior behavior = new AjaxEventBehavior("onClick") { @Override protected void onEvent(final AjaxRequestTarget target) { if (modalDialog.isBound() == false) { // First call, have to initialize it. modalDialog.init(); target.add(modalDialog.getMainContainer()); modalDialog.bind(target); } modalDialog.open(target); } }; label.add(behavior); label.add(AttributeModifier.append("style", "cursor: pointer;")); } }
From source file:org.projectforge.web.wicket.flowlayout.IconPanel.java
License:Open Source License
/** * Enable Ajax onclick event. If clicked by the user {@link #onClick()} is called. *//*from ww w.j a v a 2 s . co m*/ @SuppressWarnings("serial") public IconPanel enableAjaxOnClick() { appendAttribute("style", "cursor: pointer;"); final AjaxEventBehavior behavior = new AjaxEventBehavior("onClick") { @Override protected void onEvent(final AjaxRequestTarget target) { IconPanel.this.onClick(); } }; div.add(behavior); return this; }
From source file:org.projectforge.web.wicket.flowlayout.SelectPanel.java
License:Open Source License
/** * Adds attribute onchange="javascript:submit();" * @return This for chaining.// w ww .j a va 2s. com */ public SelectPanel<T> setAutoSubmit() { this.select.add(new AjaxEventBehavior("onChange") { @Override protected void onEvent(final AjaxRequestTarget target) { onChange(target); } }); return this; }
From source file:org.projectforge.web.wicket.flowlayout.ToggleContainerPanel.java
License:Open Source License
/** * @param id//from w w w.j a v a 2s . co m */ @SuppressWarnings("serial") public ToggleContainerPanel(final String id, final DivType... cssClasses) { super(id); panel = new WebMarkupContainer("panel"); panel.setOutputMarkupId(true); super.add(panel); if (cssClasses != null) { for (final DivType cssClass : cssClasses) { panel.add(AttributeModifier.append("class", cssClass.getClassAttrValue())); } } panel.add(toggleContainer = new WebMarkupContainer("toggleContainer")); toggleContainer.setOutputMarkupId(true); panel.add(toggleHeading = new WebMarkupContainer("heading")); toggleHeading.add(iconContainer = new WebMarkupContainer("icon")); iconContainer.setOutputMarkupId(true); setOpen(); if (wantsOnStatusChangedNotification()) { final AjaxEventBehavior behavior = new AjaxEventBehavior("onClick") { @Override protected void onEvent(final AjaxRequestTarget target) { if (toggleStatus == ToggleStatus.OPENED) { target.appendJavaScript("$('#" + toggleContainer.getMarkupId() + "').collapse('hide')"); toggleStatus = ToggleStatus.CLOSED; } else { target.appendJavaScript("$('#" + toggleContainer.getMarkupId() + "').collapse('show')"); toggleStatus = ToggleStatus.OPENED; } headingChanged = false; ToggleContainerPanel.this.onToggleStatusChanged(target, toggleStatus); if (headingChanged == true) { target.add(heading); } target.add(iconContainer); setIcon(); } }; toggleHeading.add(behavior); } else { toggleHeading.add(AttributeModifier.replace("onClick", "$('#" + toggleContainer.getMarkupId() + "').collapse('toggle'); toggleCollapseIcon($('#" + iconContainer.getMarkupId() + "'), '" + ICON_STATUS_OPENED + "','" + ICON_OPENED + "','" + ICON_CLOSED + "'); return false;")); } }
From source file:org.sakaiproject.delegatedaccess.tool.pages.SearchAccessPage.java
License:Educational Community License
private void main() { disableLink(searchAccessLink);/*from ww w .j a va 2 s .c o m*/ final AbstractReadOnlyModel resultModel = new AbstractReadOnlyModel<String>() { @Override public String getObject() { if (firstLoad) { return ""; } else { if (provider.getData().size() == 0) { if (searchTypeEid.equals(selectedSearchType)) { if (eid == null || "".equals(eid.trim())) { return new StringResourceModel("noEidEntered", null).getObject(); } else { User u = getUser(); if (u == null) { return new StringResourceModel("eidDoesNotExist", null).getObject(); } else { return new StringResourceModel("noResultsUser", null).getObject(); } } } else { return new StringResourceModel("noResultsHierarchy", null).getObject(); } } else { return ""; } } } }; add(new Label("resultInfo", resultModel) { @Override public boolean isVisible() { return !"".equals(resultModel.getObject()); } }); //create form final Form<?> form = new Form("form") { protected void onSubmit() { super.onSubmit(); firstLoad = false; if (provider != null) { provider.detachManually(); } } }; form.setOutputMarkupId(true); //search by label: form.add(new Label("searchByLabel", new StringResourceModel("searchByLabel", null))); //setup radio buttons for search type: final RadioGroup group = new RadioGroup("searchGroup", new PropertyModel<String>(this, "selectedSearchType")); final Radio hierarchyRadio = new Radio("searchByHierarchy", new Model<String>(searchTypeHierarchy)); FormComponentLabel hierarchyLabel = new FormComponentLabel("searchByHierarchyLabel", hierarchyRadio); hierarchyLabel.add( new Label("searchByHierarchyLabelText", new StringResourceModel("searchByHierarchyLabel", null))); group.add(hierarchyRadio); group.add(hierarchyLabel); group.add(hierarchyRadio.add(new AjaxEventBehavior("onchange") { @Override protected void onEvent(AjaxRequestTarget arg0) { selectedSearchType = searchTypeHierarchy; } })); Radio eidRadio = new Radio("searchByEid", new Model<String>(searchTypeEid)); FormComponentLabel eidRadioLabel = new FormComponentLabel("searchByEidLabel", eidRadio); eidRadioLabel.add(new Label("searchByEidLabelText", new StringResourceModel("searchByEidLabel", null))); group.add(eidRadio); group.add(eidRadioLabel); group.add(eidRadio.add(new AjaxEventBehavior("onchange") { @Override protected void onEvent(AjaxRequestTarget arg0) { selectedSearchType = searchTypeEid; } })); form.add(group); //input for hierarchy fields: WebMarkupContainer hierarchyDiv = new WebMarkupContainer("hierarchyFields") { @Override protected void onComponentTag(ComponentTag tag) { if (!selectedSearchType.equals(searchTypeHierarchy)) { //set to hidden tag.put("style", "display:none"); } } }; final Comparator<SelectOption> optionComparator = new SelectOptionComparator(); if (hierarchySelectOptions == null || hierarchySelectOptions.size() == 0) { hierarchySelectOptions = new HashMap<String, List<SelectOption>>(); HierarchyNodeSerialized rootNode = projectLogic.getRootNodeId(); nodeSelects = new HashMap<String, SelectOption>(); nodeSelectOrder = new ArrayList<String>(); if (rootNode != null && rootNode.id != null && !"".equals(rootNode.id)) { Set<HierarchyNodeSerialized> nodes = projectLogic.getDirectNodes(rootNode.id); List<SelectOption> options = new ArrayList<SelectOption>(); if (nodes != null) { for (HierarchyNodeSerialized node : nodes) { options.add(new SelectOption(node.description, node.id)); } } Collections.sort(options, optionComparator); hierarchySelectOptions.put(rootNode.id, options); //since nothing is selected, set the node selection to null nodeSelects.put(rootNode.id, null); //add the root node as the first selection nodeSelectOrder.add(rootNode.id); } } final ChoiceRenderer choiceRenderer = new ChoiceRenderer("label", "value"); 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 itemNodeId = item.getModelObject().toString(); final DropDownChoice choice = new DropDownChoice("hierarchyLevel", new NodeSelectModel(itemNodeId), hierarchySelectOptions.get(itemNodeId), 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) { List<String> newOrder = new ArrayList<String>(); for (String nodeId : nodeSelectOrder) { newOrder.add(nodeId); if (nodeId.equals(itemNodeId)) { break; } } if (choice.getModelObject() != null && !"".equals(((SelectOption) choice.getModelObject()).getValue())) { String value = ((SelectOption) choice.getModelObject()).getValue(); //check if options list exist for newly selected node if (!hierarchySelectOptions.containsKey(value)) { Set<HierarchyNodeSerialized> nodes = projectLogic.getDirectNodes(value); List<SelectOption> options = new ArrayList<SelectOption>(); if (nodes != null) { for (HierarchyNodeSerialized node : nodes) { options.add(new SelectOption(node.description, node.id)); } Collections.sort(options, optionComparator); } hierarchySelectOptions.put(value, options); } //check to see if there are any additional direct children, or if //this is the last node if (hierarchySelectOptions.containsKey(value) && hierarchySelectOptions.get(value).size() > 0) { //update node select order newOrder.add(value); } } nodeSelectOrder = newOrder; //refresh everything: target.addComponent(form); } }); item.add(choice); } }; hierarchyDiv.add(dropdowns); //include lower perms checkbox: CheckBox checkbox = new CheckBox("includeLowerPerms", new PropertyModel(this, "includeLowerPerms")); FormComponentLabel checkboxLabel = new FormComponentLabel("includeLowerPermsLabel", checkbox); checkboxLabel.add( new Label("includeLowerPermsLabelText", new StringResourceModel("includeLowerPermsLabel", null))); hierarchyDiv.add(checkboxLabel); hierarchyDiv.add(checkbox); form.add(hierarchyDiv); //input for eid fields: WebMarkupContainer eidDiv = new WebMarkupContainer("eidFields") { @Override protected void onComponentTag(ComponentTag tag) { if (!selectedSearchType.equals(searchTypeEid)) { //set to hidden tag.put("style", "display:none"); } } }; final PropertyModel<String> eidModel = new PropertyModel<String>(this, "eid"); TextField<String> eidText = new TextField<String>("eid", eidModel); eidDiv.add(eidText); form.add(eidDiv); add(form); //Display Results: //Headers: Link<Void> userIdSort = new Link<Void>("userIdSortLink") { private static final long serialVersionUID = 1L; public void onClick() { changeOrder(DelegatedAccessConstants.SEARCH_COMPARE_EID); } @Override public boolean isVisible() { return provider.size() > 0 && searchTypeHierarchy.equals(selectedSearchType); } }; add(userIdSort); Link<Void> nameSort = new Link<Void>("nameSortLink") { private static final long serialVersionUID = 1L; public void onClick() { changeOrder(DelegatedAccessConstants.SEARCH_COMPARE_SORT_NAME); } @Override public boolean isVisible() { return provider.size() > 0 && searchTypeHierarchy.equals(selectedSearchType); } }; add(nameSort); Link<Void> typeSort = new Link<Void>("typeSortLink") { private static final long serialVersionUID = 1L; public void onClick() { changeOrder(DelegatedAccessConstants.SEARCH_COMPARE_TYPE); } @Override public boolean isVisible() { return provider.size() > 0; } }; add(typeSort); Link<Void> levelSort = new Link<Void>("levelSortLink") { private static final long serialVersionUID = 1L; public void onClick() { changeOrder(DelegatedAccessConstants.SEARCH_COMPARE_LEVEL); } @Override public boolean isVisible() { return provider.size() > 0; } }; add(levelSort); Link<Void> accessSort = new Link<Void>("accessSortLink") { private static final long serialVersionUID = 1L; public void onClick() { changeOrder(DelegatedAccessConstants.SEARCH_COMPARE_ACCESS); } }; add(accessSort); Label restrictedToolsHeader = new Label("restrictedToolsHeader", new StringResourceModel("restrictedToolsHeader", null)) { @Override public boolean isVisible() { return provider.size() > 0; } }; add(restrictedToolsHeader); Label hierarchyHeader = new Label("hierarchyHeader", new StringResourceModel("hierarchyHeader", null)) { @Override public boolean isVisible() { return provider.size() > 0; } }; add(hierarchyHeader); //Display user (if available) final AbstractReadOnlyModel userModel = new AbstractReadOnlyModel() { @Override public Object getObject() { if (searchTypeEid.equals(selectedSearchType) && eid != null && !"".equals(eid.trim())) { User u = getUser(); if (u != null) { return u.getDisplayName(); } } return ""; } }; Label userName = new Label("userName", userModel) { @Override public boolean isVisible() { return searchTypeEid.equals(selectedSearchType) && eid != null && !"".equals(eid) && !"".equals(userModel.getObject()); } }; add(userName); add(new Link("editUserLink") { private static final long serialVersionUID = 1L; public void onClick() { User u = getUser(); if (u != null) { setResponsePage(new UserEditPage(u.getId(), u.getDisplayName())); } } }); Link removeAllPermsLink = new Link("removeAllPerms") { private static final long serialVersionUID = 1L; public void onClick() { User u = getUser(); if (u != null) { projectLogic.removeAllPermsForUser(u.getId()); provider.detachManually(); } } @Override public boolean isVisible() { return sakaiProxy.isSuperUser(); } }; String confirm = new StringResourceModel("confirmRemoveAll", null).getObject(); removeAllPermsLink.add(new SimpleAttributeModifier("onclick", "return confirm('" + confirm + "');")); add(removeAllPermsLink); //tool id=>title map: final Map<String, String> toolTitleMap = new HashMap<String, String>(); final List<ListOptionSerialized> blankRestrictedTools = projectLogic.getEntireToolsList(); for (ListOptionSerialized opt : blankRestrictedTools) { toolTitleMap.put(opt.getId(), opt.getName()); } //Data String[] tmpHierarchy = sakaiProxy .getServerConfigurationStrings(DelegatedAccessConstants.HIERARCHY_SITE_PROPERTIES); if (tmpHierarchy == null || tmpHierarchy.length == 0) { tmpHierarchy = DelegatedAccessConstants.DEFAULT_HIERARCHY; } final String[] hierarchy = new String[tmpHierarchy.length + 1]; //include the root as part of the hierarchy: hierarchy[0] = sakaiProxy.getRootName(); for (int i = 1; i < hierarchy.length; i++) { hierarchy[i] = tmpHierarchy[i - 1]; } provider = new AccessSearchResultDataProvider(); dataView = new DataView<AccessSearchResult>("searchResult", provider) { @Override public void populateItem(final Item item) { final AccessSearchResult searchResult = (AccessSearchResult) item.getModelObject(); item.add(new Label("userId", searchResult.getEid()) { @Override public boolean isVisible() { return searchTypeHierarchy.equals(selectedSearchType); } }); item.add(new Label("name", searchResult.getSortName())); item.add(new Label("type", new StringResourceModel("accessType" + searchResult.getType(), null))); String level = ""; if (hierarchy != null && searchResult.getLevel() < hierarchy.length) { level = hierarchy[searchResult.getLevel()]; } else { level = new StringResourceModel("site", null).getObject(); } item.add(new Label("level", level)); AbstractReadOnlyModel<String> accessModel = new AbstractReadOnlyModel<String>() { @Override public String getObject() { String returnVal = ""; if (searchResult.getAccess() != null && searchResult.getAccess().length == 2) { returnVal = searchResult.getAccess()[0] + ":" + searchResult.getAccess()[1]; if (":".equals(returnVal)) { returnVal = ""; } } return returnVal; } }; item.add(new Label("access", accessModel)); item.add(new ListView<String>("restrictedTools", searchResult.getRestrictedTools()) { @Override protected void populateItem(ListItem<String> arg0) { String toolTitle = arg0.getDefaultModelObject().toString(); if (toolTitleMap.containsKey(toolTitle)) { toolTitle = toolTitleMap.get(toolTitle); } arg0.add(new Label("restrictedTool", toolTitle)); } }); item.add(new ListView<String>("hierarchy", searchResult.getHierarchyNodes()) { @Override protected void populateItem(ListItem<String> arg0) { String hierarchyStr = "|-"; for (String hierarchyLevel : searchResult.getHierarchyNodes()) { if (hierarchyLevel.equals(arg0.getDefaultModelObject())) { break; } hierarchyStr += "-"; } hierarchyStr += arg0.getDefaultModelObject(); arg0.add(new Label("hierarchyTitle", hierarchyStr)); } }); Link<Void> viewLink = new Link("view") { private static final long serialVersionUID = 1L; public void onClick() { setResponsePage(new SearchAccessPage(false, searchResult.getEid())); } @Override public boolean isVisible() { return searchTypeHierarchy.equals(selectedSearchType); } }; item.add(viewLink); Link<Void> userIdLink = new Link("edit") { private static final long serialVersionUID = 1L; public void onClick() { setResponsePage(new UserEditPage(searchResult.getId(), searchResult.getDisplayName())); } @Override public boolean isVisible() { return searchTypeHierarchy.equals(selectedSearchType); } }; item.add(userIdLink); Link<Void> removeLink = new Link("remove") { @Override public void onClick() { projectLogic.removeAccess(searchResult.getNodeId(), searchResult.getId(), searchResult.getType()); provider.detachManually(); } @Override public boolean isVisible() { return searchResult.isCanEdit(); } }; String confirm = new StringResourceModel("confirmRemove", null).getObject(); removeLink.add(new SimpleAttributeModifier("onclick", "return confirm('" + confirm + "');")); item.add(removeLink); //add css class if (rowIndex == 100) { rowIndex = 0; } item.add(new AttributeAppender("class", true, new Model<String>(rowIndex % 2 == 0 ? "even" : "odd"), ";")); rowIndex++; } @Override public boolean isVisible() { return provider.size() > 0; } @Override protected void onComponentTag(ComponentTag arg0) { } }; dataView.setOutputMarkupId(true); dataView.setItemReuseStrategy(new DefaultItemReuseStrategy()); dataView.setItemsPerPage(DelegatedAccessConstants.SEARCH_RESULTS_PAGE_SIZE); add(dataView); //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); } }); }
From source file:org.sakaiproject.gradebookng.tool.component.GbGradeTable.java
License:Educational Community License
public GbGradeTable(final String id, final IModel model) { super(id);//from w ww . j a v a 2s . c om setDefaultModel(model); component = new WebMarkupContainer("gradeTable").setOutputMarkupId(true); component.add(new AjaxEventBehavior("gbgradetable.action") { @Override protected void updateAjaxAttributes(final AjaxRequestAttributes attributes) { super.updateAjaxAttributes(attributes); attributes.getDynamicExtraParameters().add( "return [{\"name\": \"ajaxParams\", \"value\": JSON.stringify(attrs.event.extraData)}]"); } @Override protected void onEvent(final AjaxRequestTarget target) { try { final ObjectMapper mapper = new ObjectMapper(); final JsonNode params = mapper.readTree( getRequest().getRequestParameters().getParameterValue("ajaxParams").toString()); final ActionResponse response = handleEvent(params.get("action").asText(), params, target); target.appendJavaScript(String.format("GbGradeTable.ajaxComplete(%d, '%s', %s);", params.get("_requestId").intValue(), response.getStatus(), response.toJson())); } catch (IOException e) { throw new RuntimeException(e); } } }); add(component); }