Example usage for org.apache.wicket.ajax AjaxEventBehavior AjaxEventBehavior

List of usage examples for org.apache.wicket.ajax AjaxEventBehavior AjaxEventBehavior

Introduction

In this page you can find the example usage for org.apache.wicket.ajax AjaxEventBehavior AjaxEventBehavior.

Prototype

public AjaxEventBehavior(String event) 

Source Link

Document

Construct.

Usage

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);
}