Example usage for org.apache.wicket.ajax.markup.html AjaxLink setEnabled

List of usage examples for org.apache.wicket.ajax.markup.html AjaxLink setEnabled

Introduction

In this page you can find the example usage for org.apache.wicket.ajax.markup.html AjaxLink setEnabled.

Prototype

public final Component setEnabled(final boolean enabled) 

Source Link

Document

Sets whether this component is enabled.

Usage

From source file:com.axway.ats.testexplorer.pages.BasePage.java

License:Apache License

private void currentTestDetails() {

    currentClass = this.getClass();
    final WebMarkupContainer testDetails = new WebMarkupContainer("testDetails");
    testDetails.setOutputMarkupId(true);
    add(testDetails);/*  w ww  .  j  av a  2s  .com*/

    // here we will create empty datagrids, and later we will replace them with the full ones
    runGrid = new DataGrid("singleRun", new SuitesDataSource("0"), new ArrayList<IGridColumn>());
    runGrid.setOutputMarkupId(true);
    runGrid.setVisible(false);
    testDetails.add(runGrid);

    suiteGrid = new DataGrid("singleSuite", new SuitesDataSource("0"), new ArrayList<IGridColumn>());
    suiteGrid.setOutputMarkupId(true);
    suiteGrid.setVisible(false);
    testDetails.add(suiteGrid);

    scenarioGrid = new DataGrid("singleScenario", new SuitesDataSource("0"), new ArrayList<IGridColumn>());
    scenarioGrid.setOutputMarkupId(true);
    scenarioGrid.setVisible(false);
    testDetails.add(scenarioGrid);

    AjaxLink<Object> testDetailslink = new AjaxLink<Object>("testDetailsButton") {

        private static final long serialVersionUID = 1L;

        @Override
        public void onClick(AjaxRequestTarget target) {

            boolean isTestLocationDetailsVisible = runGrid.isVisible();
            String runId = singleTestIds.get("runId");
            String suiteId = singleTestIds.get("suiteId");
            String scenarioId = singleTestIds.get("scenarioId");

            if (runId != null) {
                RunsPanel runs = new RunsPanel(runId);

                createSingleGrid(testDetails, runGrid, "singleRun", new RunsDataSource(runId),
                        runs.getColumns(null), runs.getTableColumnDefinitions());
                runGrid.setVisible(!isTestLocationDetailsVisible);
                target.add(runGrid);

                if (suiteId != null) {
                    SuitesPanel suites = new SuitesPanel(suiteId);

                    createSingleGrid(testDetails, suiteGrid, "singleSuite",
                            new SuitesDataSource(runId, suiteId), suites.getColumns(),
                            suites.getTableColumnDefinitions());
                    suiteGrid.setVisible(!isTestLocationDetailsVisible);
                    target.add(suiteGrid);

                    if (scenarioId != null) {
                        ScenariosPanel scenarios = new ScenariosPanel(scenarioId);

                        createSingleGrid(testDetails, scenarioGrid, "singleScenario",
                                new ScenariosDataSource(suiteId, scenarioId), scenarios.getColumns(),
                                scenarios.getTableColumnDefinitions());
                        scenarioGrid.setVisible(!isTestLocationDetailsVisible);
                        target.add(scenarioGrid);
                    }
                }
            } else {
                // nothing to do here, do not modify anything
                return;
            }

            // here we will call JS function to show the navigation test details
            target.appendJavaScript("showOrHideTestDetails(" + !isTestLocationDetailsVisible + ")");
            target.add(testDetails);
        }
    };
    testDetailslink.setEnabled(currentClass != WelcomePage.class && currentClass != BasePage.class
            && currentClass != RunsPage.class);
    add(testDetailslink);

}

From source file:com.doculibre.constellio.wicket.panels.results.tagging.SearchResultEditTaggingPanel.java

License:Open Source License

public SearchResultEditTaggingPanel(String id, final SolrDocument doc, final IDataProvider dataProvider,
        Thesaurus source) {/*from   w w w. ja v  a  2  s . c  om*/
    super(id);
    if (source == null) {
        freeTextTags = true;
        source = new Thesaurus(getLocalizer().getString("freeTextTags", SearchResultEditTaggingPanel.this));
    }
    RecordServices recordServices = ConstellioSpringUtils.getRecordServices();
    Record record = recordServices.get(doc);
    recordModel = new RecordModel(record);
    taggingSourceModel = new EntityModel<Thesaurus>(source);

    filterAddForm = new Form("filterAddForm");
    filterAddForm.setOutputMarkupId(true);

    IModel taggingSourceChoicesModel = new LoadableDetachableModel() {
        @Override
        protected Object load() {
            List<Object> taggingSources = new ArrayList<Object>();

            taggingSources.add(
                    new Thesaurus(getLocalizer().getString("freeTextTags", SearchResultEditTaggingPanel.this)));

            SkosServices skosServices = ConstellioSpringUtils.getSkosServices();
            Record record = recordModel.getObject();
            ConnectorInstance connectorInstance = record.getConnectorInstance();
            RecordCollection collection = connectorInstance.getRecordCollection();
            Map<String, Object> criteria = new HashMap<String, Object>();
            criteria.put("recordCollection", collection);
            taggingSources.addAll(skosServices.list(criteria));

            return taggingSources;
        }
    };
    IChoiceRenderer taggingSourceRenderer = new ChoiceRenderer("dcTitle");
    taggingSourceField = new DropDownChoice("taggingSource", taggingSourceModel, taggingSourceChoicesModel,
            taggingSourceRenderer);
    taggingSourceField.setVisible(isSourceSelectionVisible());
    taggingSourceField.add(new AjaxFormComponentUpdatingBehavior("onchange") {
        @Override
        protected void onUpdate(AjaxRequestTarget target) {
            target.addComponent(availableTagsContainer);
            target.addComponent(appliedTagsContainer);
            target.addComponent(filterAddField);
            target.addComponent(filterAddButton);
        }
    });

    filterAddField = new TextField("filterAddField", new Model());
    filterAddField.setOutputMarkupId(true);
    filterAddField.add(new AjaxFormComponentUpdatingBehavior("onkeyup") {
        @Override
        protected void onUpdate(AjaxRequestTarget target) {
            String input = filterAddField.getModelObjectAsString();
            availableTagsModel.setFilter(input);
            appliedTagsModel.setFilter(input);
            if (isFreeTextTagSource()) {
                target.addComponent(availableTagsContainer);
                target.addComponent(appliedTagsContainer);
            }
        }
    });

    filterAddButton = new AjaxButton("filterAddButton") {
        @Override
        protected void onSubmit(AjaxRequestTarget target, Form form) {
            String tagName = (String) filterAddField.getModelObject();
            if (StringUtils.isNotBlank(tagName)) {
                if (isFreeTextTagSource()) {
                    FreeTextTagServices freeTextTagServices = ConstellioSpringUtils.getFreeTextTagServices();
                    FreeTextTag existingTag = freeTextTagServices.get(tagName);
                    if (existingTag == null) {
                        FreeTextTag newTag = new FreeTextTag();
                        newTag.setFreeText(tagName);

                        EntityManager entityManager = ConstellioPersistenceContext.getCurrentEntityManager();
                        if (!entityManager.getTransaction().isActive()) {
                            entityManager.getTransaction().begin();
                        }
                        freeTextTagServices.makePersistent(newTag);
                        entityManager.getTransaction().commit();

                        availableTagsModel.setFilter(null);
                        appliedTagsModel.setFilter(null);
                        filterAddField.clearInput();
                        filterAddField.setModelObject(null);
                        target.addComponent(filterAddField);
                        target.addComponent(availableTagsContainer);
                        target.addComponent(appliedTagsContainer);
                    }
                } else {
                    target.addComponent(availableTagsContainer);
                }
            }
        }
    };
    filterAddButton.add(new AttributeModifier("value", true, new LoadableDetachableModel() {
        @Override
        protected Object load() {
            String key = isFreeTextTagSource() ? "add" : "filter";
            return getLocalizer().getString(key, SearchResultEditTaggingPanel.this);
        }
    }));

    availableTagsContainer = new WebMarkupContainer("availableTagsContainer");
    availableTagsContainer.setOutputMarkupId(true);
    availableTagsModel = new FilteredObjectsModel() {
        @Override
        protected List<Object> filter(String filter) {
            List<Object> matches = new ArrayList<Object>();
            Thesaurus taggingSource = taggingSourceModel.getObject();

            if (taggingSource == null || taggingSource.getId() == null) {
                if (StringUtils.isNotBlank(filter)) {
                    filter = filter + "*";
                }
                FreeTextTagServices taggingServices = ConstellioSpringUtils.getFreeTextTagServices();
                if (StringUtils.isBlank(filter)) {
                    List<FreeTextTag> first100 = taggingServices.list(100);
                    matches.addAll(first100);
                } else {
                    Set<FreeTextTag> searchResults = taggingServices.search(filter);
                    matches.addAll(searchResults);
                }
            } else {
                SkosServices skosServices = ConstellioSpringUtils.getSkosServices();
                Set<SkosConcept> searchResults = skosServices.searchAllLabels(filter, taggingSource, null);
                matches.addAll(searchResults);
            }
            return matches;
        }
    };
    availableTagsListView = new ListView("availableTags", availableTagsModel) {
        @Override
        protected void populateItem(ListItem item) {
            ConstellioEntity tagSource = (ConstellioEntity) item.getModelObject();
            final ReloadableEntityModel<ConstellioEntity> tagSourceModel = new ReloadableEntityModel<ConstellioEntity>(
                    tagSource);
            final ModalWindow detailsModal = new ModalWindow("detailsModal");
            item.add(detailsModal);

            final AjaxLink detailsLink = new AjaxLink("detailsLink") {
                @Override
                public void onClick(AjaxRequestTarget target) {
                    ConstellioEntity tagSource = (ConstellioEntity) tagSourceModel.getObject();
                    if (tagSource instanceof SkosConcept) {
                        SkosConcept skosConcept = (SkosConcept) tagSource;
                        detailsModal.setContent(
                                new SkosConceptModalPanel(detailsModal.getContentId(), skosConcept));
                        detailsModal.show(target);
                    }
                }
            };
            item.add(detailsLink);
            detailsLink.setEnabled(tagSource instanceof SkosConcept);

            detailsLink.add(new Label("name", new LoadableDetachableModel() {
                @Override
                protected Object load() {
                    String name;
                    ConstellioEntity tagSource = (ConstellioEntity) tagSourceModel.getObject();
                    if (tagSource != null) {
                        if (tagSource instanceof FreeTextTag) {
                            FreeTextTag freeTextTag = (FreeTextTag) tagSource;
                            name = freeTextTag.getFreeText();
                        } else {
                            SkosConcept skosConcept = (SkosConcept) tagSource;
                            name = skosConcept.getPrefLabel(getLocale());
                        }
                    } else {
                        name = "null";
                    }
                    return name;
                }
            }));

            item.add(new AjaxLink("addLink") {
                @Override
                public void onClick(AjaxRequestTarget target) {
                    Record record = recordModel.getObject();
                    ConstellioEntity tagSource = (ConstellioEntity) tagSourceModel.getObject();
                    if (tagSource instanceof FreeTextTag) {
                        FreeTextTag freeTextTag = (FreeTextTag) tagSource;
                        record.addFreeTextTag(freeTextTag, true);
                    } else {
                        SkosConcept skosConcept = (SkosConcept) tagSource;
                        record.addSkosConcept(skosConcept, true);
                    }
                    record.setUpdateIndex(true);

                    RecordServices recordServices = ConstellioSpringUtils.getRecordServices();

                    SolrServer solrServer = SolrCoreContext
                            .getSolrServer(record.getConnectorInstance().getRecordCollection());
                    try {
                        ConstellioPersistenceUtils.beginTransaction();
                        recordServices.makePersistent(record);
                        try {
                            solrServer.commit();
                        } catch (Throwable t) {
                            try {
                                solrServer.rollback();
                            } catch (Exception e) {
                                throw new RuntimeException(t);
                            }
                        }
                    } finally {
                        ConstellioPersistenceUtils.finishTransaction(false);
                    }

                    target.addComponent(availableTagsContainer);
                    target.addComponent(appliedTagsContainer);
                }

                @Override
                public boolean isVisible() {
                    boolean visible = super.isVisible();
                    if (visible) {
                        Record record = recordModel.getObject();
                        if (tagSourceModel.getObject() instanceof FreeTextTag) {
                            FreeTextTag freeTextTag = (FreeTextTag) tagSourceModel.getObject();
                            visible = !record.hasFreeTextTag(freeTextTag);
                        } else {
                            SkosConcept skosConcept = (SkosConcept) tagSourceModel.getObject();
                            visible = !record.hasSkosConcept(skosConcept);
                        }
                    }
                    return visible;
                }

                @Override
                public void detachModels() {
                    tagSourceModel.detach();
                    super.detachModels();
                }
            });
        }
    };

    appliedTagsContainer = new WebMarkupContainer("appliedTagsContainer");
    appliedTagsContainer.setOutputMarkupId(true);
    appliedTagsModel = new FilteredObjectsModel() {
        @Override
        protected List<RecordTag> filter(String filter) {
            List<RecordTag> matches = new ArrayList<RecordTag>();
            Record record = recordModel.getObject();
            Thesaurus source = taggingSourceModel.getObject();
            for (RecordTag recordTag : record.getIncludedRecordTags(freeTextTags ? null : source, true)) {
                //                    if (StringUtils.isEmpty(filter)
                //                        || recordTag.getName(getLocale()).toLowerCase().indexOf(filter.toLowerCase()) != -1) {
                matches.add(recordTag);
                //                    }
            }
            return matches;
        }
    };
    appliedTagsListView = new ListView("appliedTags", appliedTagsModel) {
        @Override
        protected void populateItem(ListItem item) {
            RecordTag recordTag = (RecordTag) item.getModelObject();
            final RecordTagModel recordTagModel = new RecordTagModel(recordTag);

            ConstellioEntity tagSource;
            if (recordTag.getFreeTextTag() != null) {
                tagSource = recordTag.getFreeTextTag();
            } else {
                tagSource = recordTag.getSkosConcept();
            }
            final ReloadableEntityModel<ConstellioEntity> tagSourceModel = new ReloadableEntityModel<ConstellioEntity>(
                    tagSource);
            final ModalWindow detailsModal = new ModalWindow("detailsModal");
            item.add(detailsModal);

            final AjaxLink detailsLink = new AjaxLink("detailsLink") {
                @Override
                public void onClick(AjaxRequestTarget target) {
                    ConstellioEntity tagSource = (ConstellioEntity) tagSourceModel.getObject();
                    if (tagSource instanceof SkosConcept) {
                        SkosConcept skosConcept = (SkosConcept) tagSource;
                        detailsModal.setContent(
                                new SkosConceptModalPanel(detailsModal.getContentId(), skosConcept));
                        detailsModal.show(target);
                    }
                }
            };
            item.add(detailsLink);
            detailsLink.setEnabled(tagSource instanceof SkosConcept);

            detailsLink.add(new Label("name", new LoadableDetachableModel() {
                @Override
                protected Object load() {
                    String name;
                    ConstellioEntity tagSource = (ConstellioEntity) tagSourceModel.getObject();
                    if (tagSource != null) {
                        if (tagSource instanceof FreeTextTag) {
                            FreeTextTag freeTextTag = (FreeTextTag) tagSource;
                            name = freeTextTag.getFreeText();
                        } else {
                            SkosConcept skosConcept = (SkosConcept) tagSource;
                            name = skosConcept.getPrefLabel(getLocale());
                        }
                    } else {
                        name = "null";
                    }
                    return name;
                }
            }));
            detailsLink.add(new AttributeModifier("style", true, new LoadableDetachableModel() {
                @Override
                protected Object load() {
                    RecordTag recordTag = recordTagModel.getObject();
                    return recordTag.isExcluded() ? "text-decoration: line-through;" : "text-decoration:none";
                }
            }));
            item.add(new AjaxLink("removeLink") {
                @Override
                public void onClick(AjaxRequestTarget target) {
                    Record record = recordModel.getObject();
                    RecordTag recordTag = recordTagModel.getObject();
                    boolean excluded = recordTag.isExcluded();
                    if (excluded) {
                        record.getRecordTags().remove(recordTag);
                    } else {
                        recordTag.setManual(true);
                        recordTag.setExcluded(true);
                    }
                    record.setUpdateIndex(true);

                    RecordServices recordServices = ConstellioSpringUtils.getRecordServices();

                    SolrServer solrServer = SolrCoreContext
                            .getSolrServer(record.getConnectorInstance().getRecordCollection());
                    try {
                        ConstellioPersistenceUtils.beginTransaction();
                        recordServices.makePersistent(record);
                        try {
                            solrServer.commit();
                        } catch (Throwable t) {
                            try {
                                solrServer.rollback();
                            } catch (Exception e) {
                                throw new RuntimeException(t);
                            }
                        }
                    } finally {
                        ConstellioPersistenceUtils.finishTransaction(false);
                    }

                    target.addComponent(availableTagsContainer);
                    target.addComponent(appliedTagsContainer);
                }

                @Override
                public void detachModels() {
                    recordTagModel.detach();
                    tagSourceModel.detach();
                    super.detachModels();
                }
            });
        }
    };

    closeLink = new AjaxLink("closeLink") {
        @Override
        public void onClick(AjaxRequestTarget target) {
            SearchResultTaggingPanel parent = (SearchResultTaggingPanel) findParent(
                    SearchResultTaggingPanel.class);
            target.addComponent(parent);
            ModalWindow.closeCurrent(target);
        }
    };

    add(taggingSourceField);
    add(new Label("sourceName", source.getDcTitle()).setVisible(!isSourceSelectionVisible()));
    add(filterAddForm);
    filterAddForm.add(filterAddField);
    filterAddForm.add(filterAddButton);

    add(availableTagsContainer);
    availableTagsContainer.add(availableTagsListView);

    add(appliedTagsContainer);
    appliedTagsContainer.add(appliedTagsListView);

    add(closeLink);
}

From source file:gr.interamerican.wicket.factories.TestLinkFactory.java

License:Open Source License

/**
 * Test method for {@link gr.interamerican.wicket.factories.LinkFactory#createTogleVisibleLink(java.lang.String, org.apache.wicket.MarkupContainer)}.
 *///from  ww  w .  j av a 2 s  .  co  m
@Test
public void testCreateTogleVisibleLink() {
    Form<Void> testForm = new Form<Void>(TestPage.FORM_ID);
    AjaxLink<?> testLink = LinkFactory.createTogleVisibleLink(TestPage.TEST_ID, testForm);
    testForm.add(testLink);
    wicketTester.startPage(new LinkPage(testForm, TestPage.TEST_ID));
    wicketTester.dumpPage();
    AjaxLink<?> link = (AjaxLink<?>) wicketTester.getComponentFromLastRenderedPage("tf:testIdLink"); //$NON-NLS-1$
    link.setEnabled(true);
    wicketTester.clickLink("tf:testIdLink", true); //$NON-NLS-1$
    wicketTester.isVisible("tf:testId"); //$NON-NLS-1$
}

From source file:kz.supershiny.web.wicket.components.AjaxPagingPanel.java

public AjaxPagingPanel(String id, final SearchCriteria criteria) {
    super(id);//ww  w  .j  a v  a2s  .  c  o  m

    globalContainer = new WebMarkupContainer("globalContainer");
    add(globalContainer.setOutputMarkupId(true));

    next = new AjaxLink("next") {
        @Override
        public void onClick(AjaxRequestTarget art) {
            criteria.next();
            refreshPaging(art, criteria);
        }

        @Override
        public boolean isEnabled() {
            return !criteria.isLastPage();
        }
    };
    globalContainer.add(next.setOutputMarkupId(true));

    prev = new AjaxLink("prev") {
        @Override
        public void onClick(AjaxRequestTarget art) {
            criteria.prev();
            refreshPaging(art, criteria);
        }

        @Override
        public boolean isEnabled() {
            return !criteria.isFirstPage();
        }
    };
    globalContainer.add(prev.setOutputMarkupId(true));

    snext = new AjaxLink("snext") {
        @Override
        public void onClick(AjaxRequestTarget art) {
            criteria.snext();
            refreshPaging(art, criteria);
        }

        @Override
        public boolean isEnabled() {
            return !criteria.isLastPage();
        }
    };
    globalContainer.add(snext.setOutputMarkupId(true));

    sprev = new AjaxLink("sprev") {
        @Override
        public void onClick(AjaxRequestTarget art) {
            criteria.sprev();
            refreshPaging(art, criteria);
        }

        @Override
        public boolean isEnabled() {
            return !criteria.isFirstPage();
        }
    };
    globalContainer.add(sprev.setOutputMarkupId(true));

    numbers = new ListView("numbers", criteria.getNumbers()) {

        @Override
        protected void populateItem(ListItem li) {
            final long pageNum = (Long) li.getModelObject();
            final Label number = new Label("number", pageNum + "");
            final AjaxLink numberLink = new AjaxLink("numberLink") {
                @Override
                public void onClick(AjaxRequestTarget art) {
                    criteria.toPage(pageNum);
                    refreshPaging(art, criteria);
                }
            };
            if (pageNum != criteria.getCurrent()) {
                numberLink.setEnabled(true);
                li.add(AttributeModifier.remove("class"));
            } else {
                numberLink.setEnabled(false);
                li.add(AttributeModifier.append("class", "active"));
            }
            numberLink.add(number);
            li.add(numberLink);
        }
    };
    globalContainer.add(numbers.setOutputMarkupId(true));
}

From source file:kz.supershiny.web.wicket.panels.admin.ImageUploadPanel.java

public ImageUploadPanel(String id, List<TireImage> images) {
    super(id);/*from   ww  w . j a  va  2 s.  c  o  m*/

    initData(images);

    uploadForm = new UploadForm("uploadForm");
    add(uploadForm.setOutputMarkupId(true));

    //Display/edit images
    viewContainer = new WebMarkupContainer("viewContainer");
    //images doesn't exist, wicket uses getter getImages() of ImageUploadPanel
    imagesView = new ListView("imagesView", new PropertyModel(ImageUploadPanel.this, "images")) {
        @Override
        protected void populateItem(ListItem li) {
            final TireImage ti = (TireImage) li.getModelObject();
            final AjaxLink defaultLink;
            final AjaxLink removeLink;
            Image image = new Image("image", new DynamicImageResource() {
                @Override
                protected byte[] getImageData(IResource.Attributes atrbts) {
                    return ti.getImageBody();
                }
            });
            defaultLink = new AjaxLink("defaultLink") {
                @Override
                public void onClick(AjaxRequestTarget target) {
                    setPreviewImage(ti.getFileName());
                    target.add(viewContainer);
                }
            };
            if (ti.getIsPreview()) {
                defaultLink.setEnabled(false);
                defaultLink.add(new AttributeAppender("class", Model.of("btn btn-primary")));
            } else {
                defaultLink.setEnabled(true);
                defaultLink.add(new AttributeAppender("class", Model.of("btn btn-default")));
            }
            removeLink = new ConfirmationLink("removeLink",
                    new StringResourceModel("ask.deletionPhoto", ImageUploadPanel.this, null).getString()) {
                @Override
                public void onClick(AjaxRequestTarget target) {
                    deletedImages.add(ti.getFileName());
                    target.add(viewContainer);
                }
            };
            li.add(image);
            li.add(defaultLink);
            li.add(removeLink);
        }
    };
    viewContainer.add(imagesView.setOutputMarkupId(true));
    add(viewContainer.setOutputMarkupId(true));
}

From source file:org.apache.isis.viewer.wicket.ui.components.bookmarkedpages.BookmarkedPagesPanel.java

License:Apache License

private void buildGui() {

    final BookmarkedPagesModel bookmarkedPagesModel = getModel();

    Component helpText = addHelpText(bookmarkedPagesModel);
    addOrReplace(helpText);/* ww  w . j  av  a 2  s.  c  o m*/

    final WebMarkupContainer container = new WebMarkupContainer(ID_BOOKMARK_LIST) {
        private static final long serialVersionUID = 1L;

        @Override
        public void renderHead(IHeaderResponse response) {
            response.render(CssHeaderItem.forReference(
                    new CssResourceReference(BookmarkedPagesPanel.class, "BookmarkedPagesPanel.css")));
            response.render(JavaScriptReferenceHeaderItem.forReference(SLIDE_PANEL_JS));
        }
    };
    // allow to be updated by AjaxLink
    container.setOutputMarkupId(true);
    add(container);

    final AjaxLink<Void> clearAllBookmarksLink = new AjaxLink<Void>(CLEAR_BOOKMARKS) {

        private static final long serialVersionUID = 1L;

        @Override
        public void onClick(AjaxRequestTarget target) {
            BookmarkedPagesPanel.this.getModel().clear();
            setEnabled(false);
            target.add(container, this);
        }
    };
    clearAllBookmarksLink.setOutputMarkupId(true);
    add(clearAllBookmarksLink);
    clearAllBookmarksLink.setOutputMarkupId(true);

    if (getModel().isEmpty()) {
        clearAllBookmarksLink.setVisible(false);
    }

    final ListView<BookmarkTreeNode> listView = new ListView<BookmarkTreeNode>(ID_BOOKMARKED_PAGE_ITEM,
            bookmarkedPagesModel) {

        private static final long serialVersionUID = 1L;

        @Override
        protected void populateItem(ListItem<BookmarkTreeNode> item) {
            final BookmarkTreeNode node = item.getModelObject();
            try {
                final PageType pageType = node.getPageType();
                final Class<? extends Page> pageClass = pageClassRegistry.getPageClass(pageType);

                final AjaxLink<Object> clearBookmarkLink = new AjaxLink<Object>(ID_CLEAR_BOOKMARK_LINK) {

                    private static final long serialVersionUID = 1L;

                    @Override
                    public void onClick(AjaxRequestTarget target) {
                        bookmarkedPagesModel.remove(node);
                        if (bookmarkedPagesModel.isEmpty()) {
                            permanentlyHide(CLEAR_BOOKMARKS);
                        }
                        target.add(container, clearAllBookmarksLink);
                    }

                };
                if (node.getDepth() == 0) {
                    clearBookmarkLink.add(new CssClassAppender("clearBookmark"));
                } else {
                    clearBookmarkLink.setEnabled(true);
                }
                item.add(clearBookmarkLink);

                PageParameters pageParameters = node.getPageParameters();
                final AbstractLink link = Links.newBookmarkablePageLink(ID_BOOKMARKED_PAGE_LINK, pageParameters,
                        pageClass);

                ObjectSpecification objectSpec = null;
                RootOid oid = node.getOidNoVer();
                if (oid != null) {
                    ObjectSpecId objectSpecId = oid.getObjectSpecId();
                    objectSpec = getSpecificationLoader().lookupBySpecId(objectSpecId);
                }
                final ResourceReference imageResource = imageCache.resourceReferenceForSpec(objectSpec);
                final Image image = new Image(ID_BOOKMARKED_PAGE_ICON, imageResource) {
                    private static final long serialVersionUID = 1L;

                    @Override
                    protected boolean shouldAddAntiCacheParameter() {
                        return false;
                    }
                };
                link.addOrReplace(image);

                String title = node.getTitle();
                final Label label = new Label(ID_BOOKMARKED_PAGE_TITLE, title);
                link.add(label);
                item.add(link);
                if (bookmarkedPagesModel.isCurrent(pageParameters)) {
                    item.add(new CssClassAppender("disabled"));
                }
                item.add(new CssClassAppender("bookmarkDepth" + node.getDepth()));
            } catch (ObjectNotFoundException ex) {
                // ignore
                // this is a partial fix for an infinite redirect loop.
                // should be a bit smarter here, though; see ISIS-596.
            }

        }
    };
    container.add(listView);
}

From source file:org.apache.syncope.client.console.pages.ResultStatusModalPage.java

License:Apache License

private ResultStatusModalPage(final Builder builder) {
    super();/*from w  w  w . jav a  2  s .c  o m*/
    this.subject = builder.subject;
    statusUtils = new StatusUtils(this.userRestClient);
    if (builder.mode == null) {
        this.mode = Mode.ADMIN;
    } else {
        this.mode = builder.mode;
    }

    final BaseModalPage page = this;

    final WebMarkupContainer container = new WebMarkupContainer("container");
    container.setOutputMarkupId(true);
    add(container);

    final Fragment fragment = new Fragment("resultFrag",
            mode == Mode.SELF ? "userSelfResultFrag" : "propagationResultFrag", this);
    fragment.setOutputMarkupId(true);
    container.add(fragment);

    if (mode == Mode.ADMIN) {
        // add Syncope propagation status
        PropagationStatus syncope = new PropagationStatus();
        syncope.setResource("Syncope");
        syncope.setStatus(PropagationTaskExecStatus.SUCCESS);

        List<PropagationStatus> propagations = new ArrayList<PropagationStatus>();
        propagations.add(syncope);
        propagations.addAll(subject.getPropagationStatusTOs());

        fragment.add(new Label("info",
                ((subject instanceof UserTO) && ((UserTO) subject).getUsername() != null)
                        ? ((UserTO) subject).getUsername()
                        : ((subject instanceof GroupTO) && ((GroupTO) subject).getName() != null)
                                ? ((GroupTO) subject).getName()
                                : String.valueOf(subject.getKey())));

        final ListView<PropagationStatus> propRes = new ListView<PropagationStatus>("resources", propagations) {

            private static final long serialVersionUID = -1020475259727720708L;

            @Override
            protected void populateItem(final ListItem<PropagationStatus> item) {
                final PropagationStatus propTO = (PropagationStatus) item.getDefaultModelObject();

                final ListView attributes = getConnObjectView(propTO);

                final Fragment attrhead;
                if (attributes.getModelObject() == null || attributes.getModelObject().isEmpty()) {
                    attrhead = new Fragment("attrhead", "emptyAttrHeadFrag", page);
                } else {
                    attrhead = new Fragment("attrhead", "attrHeadFrag", page);
                }

                item.add(attrhead);
                item.add(attributes);

                attrhead.add(new Label("resource", propTO.getResource()));

                attrhead.add(new Label("propagation",
                        propTO.getStatus() == null ? "UNDEFINED" : propTO.getStatus().toString()));

                final Image image;
                final String alt, title;
                final ModalWindow failureWindow = new ModalWindow("failureWindow");
                final AjaxLink<?> failureWindowLink = new AjaxLink<Void>("showFailureWindow") {

                    private static final long serialVersionUID = -7978723352517770644L;

                    @Override
                    public void onClick(AjaxRequestTarget target) {
                        failureWindow.show(target);
                    }
                };

                switch (propTO.getStatus()) {

                case SUCCESS:
                case SUBMITTED:
                case CREATED:
                    image = new Image("icon", new ContextRelativeResource(
                            IMG_PREFIX + Status.ACTIVE.toString() + Constants.PNG_EXT));
                    alt = "success icon";
                    title = "success";
                    failureWindow.setVisible(false);
                    failureWindowLink.setEnabled(false);
                    break;

                default:
                    image = new Image("icon", new ContextRelativeResource(
                            IMG_PREFIX + Status.SUSPENDED.toString() + Constants.PNG_EXT));
                    alt = "failure icon";
                    title = "failure";
                }

                image.add(new Behavior() {

                    private static final long serialVersionUID = 1469628524240283489L;

                    @Override
                    public void onComponentTag(final Component component, final ComponentTag tag) {
                        tag.put("alt", alt);
                        tag.put("title", title);
                    }
                });
                final FailureMessageModalPage executionFailureMessagePage;
                if (propTO.getFailureReason() == null) {
                    executionFailureMessagePage = new FailureMessageModalPage(failureWindow.getContentId(),
                            StringUtils.EMPTY);
                } else {
                    executionFailureMessagePage = new FailureMessageModalPage(failureWindow.getContentId(),
                            propTO.getFailureReason());
                }

                failureWindow.setPageCreator(new ModalWindow.PageCreator() {

                    private static final long serialVersionUID = -7834632442532690940L;

                    @Override
                    public Page createPage() {
                        return executionFailureMessagePage;
                    }
                });
                failureWindow.setCookieName("failureWindow");
                failureWindow.setCssClassName(ModalWindow.CSS_CLASS_GRAY);
                failureWindowLink.add(image);
                attrhead.add(failureWindowLink);
                attrhead.add(failureWindow);
            }
        };
        fragment.add(propRes);
    }

    final AjaxLink<Void> close = new IndicatingAjaxLink<Void>("close") {

        private static final long serialVersionUID = -7978723352517770644L;

        @Override
        public void onClick(final AjaxRequestTarget target) {
            builder.window.close(target);
        }
    };
    container.add(close);

    setOutputMarkupId(true);
}

From source file:org.apache.syncope.client.console.panels.SearchView.java

License:Apache License

@Override
protected void populateItem(final ListItem<SearchClause> item) {
    final SearchClause searchClause = item.getModelObject();

    final DropDownChoice<SearchClause.Operator> operator = new DropDownChoice<SearchClause.Operator>("operator",
            new PropertyModel<SearchClause.Operator>(searchClause, "operator"),
            Arrays.asList(SearchClause.Operator.values()));
    operator.setOutputMarkupPlaceholderTag(true);
    operator.setNullValid(false);/*from  ww  w  .j  av a2s .co  m*/
    operator.add(new AjaxFormComponentUpdatingBehavior(Constants.ON_CHANGE) {

        private static final long serialVersionUID = -1107858522700306810L;

        @Override
        protected void onUpdate(final AjaxRequestTarget target) {
        }
    });
    item.add(operator);
    if (item.getIndex() == 0) {
        operator.setVisible(false);
    }

    final DropDownChoice<SearchClause.Type> type = new DropDownChoice<SearchClause.Type>("type",
            new PropertyModel<SearchClause.Type>(searchClause, "type"), types);
    type.setOutputMarkupId(true);
    type.setRequired(required);
    type.add(new AjaxFormComponentUpdatingBehavior(Constants.ON_CHANGE) {

        private static final long serialVersionUID = -1107858522700306810L;

        @Override
        protected void onUpdate(final AjaxRequestTarget target) {
            target.add(searchFormContainer);
        }
    });
    item.add(type);

    @SuppressWarnings("unchecked")
    final DropDownChoice<String> property = new DropDownChoice<String>("property",
            new PropertyModel<String>(searchClause, "property"), (IModel) null);
    property.setOutputMarkupId(true);
    property.setRequired(required);
    property.add(new AjaxFormComponentUpdatingBehavior(Constants.ON_CHANGE) {

        private static final long serialVersionUID = -1107858522700306810L;

        @Override
        protected void onUpdate(final AjaxRequestTarget target) {
        }
    });
    item.add(property);

    final TextField<String> value = new TextField<String>("value",
            new PropertyModel<String>(searchClause, "value"));
    value.setOutputMarkupId(true);
    value.add(new AjaxFormComponentUpdatingBehavior(Constants.ON_CHANGE) {

        private static final long serialVersionUID = -1107858522700306810L;

        @Override
        protected void onUpdate(final AjaxRequestTarget target) {
        }
    });
    item.add(value);

    final DropDownChoice<SearchClause.Comparator> comparator = new DropDownChoice<SearchClause.Comparator>(
            "comparator", new PropertyModel<SearchClause.Comparator>(searchClause, "comparator"),
            Collections.<SearchClause.Comparator>emptyList());
    comparator.setOutputMarkupId(true);
    comparator.setNullValid(false);
    comparator.add(new AjaxFormComponentUpdatingBehavior(Constants.ON_CHANGE) {

        private static final long serialVersionUID = -1107858522700306810L;

        @Override
        protected void onUpdate(final AjaxRequestTarget target) {
            if (type.getModelObject() == SearchClause.Type.ATTRIBUTE) {
                if (comparator.getModelObject() == SearchClause.Comparator.IS_NULL
                        || comparator.getModelObject() == SearchClause.Comparator.IS_NOT_NULL) {

                    value.setModelObject(null);
                    value.setEnabled(false);
                } else {
                    value.setEnabled(true);
                }
                target.add(value);
            }
        }
    });
    comparator.setRequired(required);
    item.add(comparator);

    AjaxLink<Void> drop = new IndicatingAjaxLink<Void>("drop") {

        private static final long serialVersionUID = -7978723352517770644L;

        @Override
        public void onClick(final AjaxRequestTarget target) {
            SearchView.this.getModel().getObject().remove(item.getModelObject());
            target.add(searchFormContainer);
        }
    };
    item.add(drop);
    if (item.getIndex() == 0) {
        drop.setVisible(false);
        drop.setEnabled(false);
    } else {
        drop.setVisible(true);
        drop.setEnabled(true);
    }

    final AjaxLink<Void> add = new IndicatingAjaxLink<Void>("add") {

        private static final long serialVersionUID = -7978723352517770644L;

        @Override
        public void onClick(final AjaxRequestTarget target) {
            SearchClause clause = new SearchClause();
            SearchView.this.getModel().getObject().add(clause);
            target.add(searchFormContainer);
        }
    };
    item.add(add);

    if (searchClause == null || searchClause.getType() == null) {
        property.setChoices(Collections.<String>emptyList());
    } else {
        switch (searchClause.getType()) {
        case ATTRIBUTE:
            final List<String> names = new ArrayList<String>(dnames.getObject());
            if (anames.getObject() != null && !anames.getObject().isEmpty()) {
                names.addAll(anames.getObject());
            }
            Collections.sort(names);
            property.setChoices(names);

            comparator.setChoices(new LoadableDetachableModel<List<SearchClause.Comparator>>() {

                private static final long serialVersionUID = 5275935387613157437L;

                @Override
                protected List<SearchClause.Comparator> load() {
                    return Arrays.asList(SearchClause.Comparator.values());
                }
            });
            comparator.setChoiceRenderer(new IChoiceRenderer<SearchClause.Comparator>() {

                private static final long serialVersionUID = -9086043750227867686L;

                @Override
                public Object getDisplayValue(final SearchClause.Comparator object) {
                    String display;

                    switch (object) {
                    case IS_NULL:
                        display = "NULL";
                        break;

                    case IS_NOT_NULL:
                        display = "NOT NULL";
                        break;

                    case EQUALS:
                        display = "==";
                        break;

                    case NOT_EQUALS:
                        display = "!=";
                        break;

                    case LESS_THAN:
                        display = "<";
                        break;

                    case LESS_OR_EQUALS:
                        display = "<=";
                        break;

                    case GREATER_THAN:
                        display = ">";
                        break;

                    case GREATER_OR_EQUALS:
                        display = ">=";
                        break;

                    default:
                        display = StringUtils.EMPTY;
                    }

                    return display;
                }

                @Override
                public String getIdValue(final SearchClause.Comparator object, int index) {
                    return getDisplayValue(object).toString();
                }
            });
            if (!comparator.isEnabled()) {
                comparator.setEnabled(true);
                comparator.setRequired(true);
            }

            if (!value.isEnabled()) {
                value.setEnabled(true);
            }
            break;

        case MEMBERSHIP:
            property.setChoices(groupNames);
            property.setChoiceRenderer(new IChoiceRenderer<String>() {

                private static final long serialVersionUID = -4288397951948436434L;

                @Override
                public Object getDisplayValue(final String object) {
                    return object;
                }

                @Override
                public String getIdValue(final String object, final int index) {
                    return object;
                }
            });

            comparator.setChoices(new LoadableDetachableModel<List<SearchClause.Comparator>>() {

                private static final long serialVersionUID = 5275935387613157437L;

                @Override
                protected List<SearchClause.Comparator> load() {
                    List<SearchClause.Comparator> comparators = new ArrayList<SearchClause.Comparator>();
                    comparators.add(SearchClause.Comparator.EQUALS);
                    comparators.add(SearchClause.Comparator.NOT_EQUALS);
                    return comparators;
                }
            });
            comparator.setChoiceRenderer(new IChoiceRenderer<SearchClause.Comparator>() {

                private static final long serialVersionUID = -9086043750227867686L;

                @Override
                public Object getDisplayValue(final SearchClause.Comparator object) {
                    String display;

                    switch (object) {
                    case EQUALS:
                        display = "IN";
                        break;

                    case NOT_EQUALS:
                        display = "NOT IN";
                        break;

                    default:
                        display = StringUtils.EMPTY;
                    }

                    return display;
                }

                @Override
                public String getIdValue(final SearchClause.Comparator object, final int index) {
                    return getDisplayValue(object).toString();
                }
            });

            value.setEnabled(false);
            value.setModelObject("");

            break;

        case RESOURCE:
            property.setChoices(resourceNames);

            comparator.setChoices(new LoadableDetachableModel<List<SearchClause.Comparator>>() {

                private static final long serialVersionUID = 5275935387613157437L;

                @Override
                protected List<SearchClause.Comparator> load() {
                    List<SearchClause.Comparator> comparators = new ArrayList<SearchClause.Comparator>();
                    comparators.add(SearchClause.Comparator.EQUALS);
                    comparators.add(SearchClause.Comparator.NOT_EQUALS);
                    return comparators;
                }
            });
            comparator.setChoiceRenderer(new IChoiceRenderer<SearchClause.Comparator>() {

                private static final long serialVersionUID = -9086043750227867686L;

                @Override
                public Object getDisplayValue(final SearchClause.Comparator object) {
                    String display;

                    switch (object) {
                    case EQUALS:
                        display = "HAS";
                        break;

                    case NOT_EQUALS:
                        display = "HAS NOT";
                        break;

                    default:
                        display = StringUtils.EMPTY;
                    }

                    return display;
                }

                @Override
                public String getIdValue(final SearchClause.Comparator object, final int index) {
                    return getDisplayValue(object).toString();
                }
            });

            value.setEnabled(false);
            value.setModelObject("");

            break;

        case ENTITLEMENT:
            property.setChoices(entitlements);

            comparator.setChoices(new LoadableDetachableModel<List<SearchClause.Comparator>>() {

                private static final long serialVersionUID = 5275935387613157437L;

                @Override
                protected List<SearchClause.Comparator> load() {
                    List<SearchClause.Comparator> comparators = new ArrayList<SearchClause.Comparator>();
                    comparators.add(SearchClause.Comparator.EQUALS);
                    comparators.add(SearchClause.Comparator.NOT_EQUALS);
                    return comparators;
                }
            });
            comparator.setChoiceRenderer(new IChoiceRenderer<SearchClause.Comparator>() {

                private static final long serialVersionUID = -9086043750227867686L;

                @Override
                public Object getDisplayValue(final SearchClause.Comparator object) {
                    String display;

                    switch (object) {
                    case EQUALS:
                        display = "HAS";
                        break;

                    case NOT_EQUALS:
                        display = "HAS NOT";
                        break;

                    default:
                        display = StringUtils.EMPTY;
                    }

                    return display;
                }

                @Override
                public String getIdValue(final SearchClause.Comparator object, final int index) {
                    return getDisplayValue(object).toString();
                }
            });

            value.setEnabled(false);
            value.setModelObject("");

            break;

        default:
            property.setChoices(Collections.<String>emptyList());
        }
    }
}

From source file:org.apache.syncope.client.console.SyncopeApplication.java

License:Apache License

public void setupEditProfileModal(final WebPage page, final UserSelfRestClient userSelfRestClient) {
    // Modal window for editing user profile
    final ModalWindow editProfileModalWin = new ModalWindow("editProfileModal");
    editProfileModalWin.setCssClassName(ModalWindow.CSS_CLASS_GRAY);
    editProfileModalWin.setInitialHeight(EDIT_PROFILE_WIN_HEIGHT);
    editProfileModalWin.setInitialWidth(EDIT_PROFILE_WIN_WIDTH);
    editProfileModalWin.setCookieName("edit-profile-modal");
    page.add(editProfileModalWin);//w  w w . ja  va 2 s.  c  om

    final AjaxLink<Page> editProfileLink = new AjaxLink<Page>("editProfileLink") {

        private static final long serialVersionUID = -7978723352517770644L;

        @Override
        public void onClick(final AjaxRequestTarget target) {
            final UserTO userTO;
            if (SyncopeSession.get().isAuthenticated()) {
                try {
                    userTO = userSelfRestClient.read();
                } catch (Exception e) {
                    throw new WicketRuntimeException(e);
                }
            } else {
                userTO = new UserTO();
            }

            editProfileModalWin.setPageCreator(new ModalWindow.PageCreator() {

                private static final long serialVersionUID = -7834632442532690940L;

                @Override
                public Page createPage() {
                    return new UserSelfModalPage(page.getPageReference(), editProfileModalWin, userTO);
                }
            });

            editProfileModalWin.show(target);
        }
    };

    editProfileLink.add(new Label("username", SyncopeSession.get().getUsername()));

    if ("admin".equals(SyncopeSession.get().getUsername())) {
        editProfileLink.setEnabled(false);
    }

    page.add(editProfileLink);
}

From source file:org.apache.syncope.console.pages.panels.SearchView.java

License:Apache License

@Override
protected void populateItem(final ListItem<SearchClause> item) {
    final SearchClause searchClause = item.getModelObject();

    final DropDownChoice<SearchClause.Operator> operator = new DropDownChoice<SearchClause.Operator>("operator",
            new PropertyModel<SearchClause.Operator>(searchClause, "operator"),
            Arrays.asList(SearchClause.Operator.values()));
    operator.setOutputMarkupPlaceholderTag(true);
    operator.setNullValid(false);//  w  w  w. j  av a2 s .  c o m
    operator.add(new AjaxFormComponentUpdatingBehavior(Constants.ON_CHANGE) {

        private static final long serialVersionUID = -1107858522700306810L;

        @Override
        protected void onUpdate(final AjaxRequestTarget target) {
        }
    });
    item.add(operator);
    if (item.getIndex() == 0) {
        operator.setVisible(false);
    }

    final DropDownChoice<SearchClause.Type> type = new DropDownChoice<SearchClause.Type>("type",
            new PropertyModel<SearchClause.Type>(searchClause, "type"), types);
    type.setOutputMarkupId(true);
    type.setRequired(required);
    type.add(new AjaxFormComponentUpdatingBehavior(Constants.ON_CHANGE) {

        private static final long serialVersionUID = -1107858522700306810L;

        @Override
        protected void onUpdate(final AjaxRequestTarget target) {
            target.add(searchFormContainer);
        }
    });
    item.add(type);

    @SuppressWarnings("unchecked")
    final DropDownChoice<String> property = new DropDownChoice<String>("property",
            new PropertyModel<String>(searchClause, "property"), (IModel) null);
    property.setOutputMarkupId(true);
    property.setRequired(required);
    property.add(new AjaxFormComponentUpdatingBehavior(Constants.ON_CHANGE) {

        private static final long serialVersionUID = -1107858522700306810L;

        @Override
        protected void onUpdate(final AjaxRequestTarget target) {
        }
    });
    item.add(property);

    final TextField<String> value = new TextField<String>("value",
            new PropertyModel<String>(searchClause, "value"));
    value.setOutputMarkupId(true);
    value.add(new AjaxFormComponentUpdatingBehavior(Constants.ON_CHANGE) {

        private static final long serialVersionUID = -1107858522700306810L;

        @Override
        protected void onUpdate(final AjaxRequestTarget target) {
        }
    });
    item.add(value);

    final DropDownChoice<SearchClause.Comparator> comparator = new DropDownChoice<SearchClause.Comparator>(
            "comparator", new PropertyModel<SearchClause.Comparator>(searchClause, "comparator"),
            Collections.<SearchClause.Comparator>emptyList());
    comparator.setOutputMarkupId(true);
    comparator.setNullValid(false);
    comparator.add(new AjaxFormComponentUpdatingBehavior(Constants.ON_CHANGE) {

        private static final long serialVersionUID = -1107858522700306810L;

        @Override
        protected void onUpdate(final AjaxRequestTarget target) {
            if (type.getModelObject() == SearchClause.Type.ATTRIBUTE) {
                if (comparator.getModelObject() == SearchClause.Comparator.IS_NULL
                        || comparator.getModelObject() == SearchClause.Comparator.IS_NOT_NULL) {

                    value.setModelObject(null);
                    value.setEnabled(false);
                } else {
                    value.setEnabled(true);
                }
                target.add(value);
            }
        }
    });
    comparator.setRequired(required);
    item.add(comparator);

    AjaxLink<Void> drop = new IndicatingAjaxLink<Void>("drop") {

        private static final long serialVersionUID = -7978723352517770644L;

        @Override
        public void onClick(final AjaxRequestTarget target) {
            SearchView.this.getModel().getObject().remove(item.getModelObject());
            target.add(searchFormContainer);
        }
    };
    item.add(drop);
    if (item.getIndex() == 0) {
        drop.setVisible(false);
        drop.setEnabled(false);
    } else {
        drop.setVisible(true);
        drop.setEnabled(true);
    }

    final AjaxLink<Void> add = new IndicatingAjaxLink<Void>("add") {

        private static final long serialVersionUID = -7978723352517770644L;

        @Override
        public void onClick(final AjaxRequestTarget target) {
            SearchClause clause = new SearchClause();
            SearchView.this.getModel().getObject().add(clause);
            target.add(searchFormContainer);
        }
    };
    item.add(add);

    if (searchClause == null || searchClause.getType() == null) {
        property.setChoices(Collections.<String>emptyList());
    } else {
        switch (searchClause.getType()) {
        case ATTRIBUTE:
            final List<String> names = new ArrayList<String>(dnames.getObject());
            if (anames.getObject() != null && !anames.getObject().isEmpty()) {
                names.addAll(anames.getObject());
            }
            Collections.sort(names);
            property.setChoices(names);

            comparator.setChoices(new LoadableDetachableModel<List<SearchClause.Comparator>>() {

                private static final long serialVersionUID = 5275935387613157437L;

                @Override
                protected List<SearchClause.Comparator> load() {
                    return Arrays.asList(SearchClause.Comparator.values());
                }
            });
            comparator.setChoiceRenderer(new IChoiceRenderer<SearchClause.Comparator>() {

                private static final long serialVersionUID = -9086043750227867686L;

                @Override
                public Object getDisplayValue(final SearchClause.Comparator object) {
                    String display;

                    switch (object) {
                    case IS_NULL:
                        display = "NULL";
                        break;

                    case IS_NOT_NULL:
                        display = "NOT NULL";
                        break;

                    case EQUALS:
                        display = "==";
                        break;

                    case NOT_EQUALS:
                        display = "!=";
                        break;

                    case LESS_THAN:
                        display = "<";
                        break;

                    case LESS_OR_EQUALS:
                        display = "<=";
                        break;

                    case GREATER_THAN:
                        display = ">";
                        break;

                    case GREATER_OR_EQUALS:
                        display = ">=";
                        break;

                    default:
                        display = StringUtils.EMPTY;
                    }

                    return display;
                }

                @Override
                public String getIdValue(final SearchClause.Comparator object, int index) {
                    return getDisplayValue(object).toString();
                }
            });
            if (!comparator.isEnabled()) {
                comparator.setEnabled(true);
                comparator.setRequired(true);
            }

            if (!value.isEnabled()) {
                value.setEnabled(true);
            }
            break;

        case MEMBERSHIP:
            property.setChoices(roleNames);
            property.setChoiceRenderer(new IChoiceRenderer<String>() {

                private static final long serialVersionUID = -4288397951948436434L;

                @Override
                public Object getDisplayValue(final String object) {
                    return object;
                }

                @Override
                public String getIdValue(final String object, final int index) {
                    return object;
                }
            });

            comparator.setChoices(new LoadableDetachableModel<List<SearchClause.Comparator>>() {

                private static final long serialVersionUID = 5275935387613157437L;

                @Override
                protected List<SearchClause.Comparator> load() {
                    List<SearchClause.Comparator> comparators = new ArrayList<SearchClause.Comparator>();
                    comparators.add(SearchClause.Comparator.EQUALS);
                    comparators.add(SearchClause.Comparator.NOT_EQUALS);
                    return comparators;
                }
            });
            comparator.setChoiceRenderer(new IChoiceRenderer<SearchClause.Comparator>() {

                private static final long serialVersionUID = -9086043750227867686L;

                @Override
                public Object getDisplayValue(final SearchClause.Comparator object) {
                    String display;

                    switch (object) {
                    case EQUALS:
                        display = "IN";
                        break;

                    case NOT_EQUALS:
                        display = "NOT IN";
                        break;

                    default:
                        display = StringUtils.EMPTY;
                    }

                    return display;
                }

                @Override
                public String getIdValue(final SearchClause.Comparator object, final int index) {
                    return getDisplayValue(object).toString();
                }
            });

            value.setEnabled(false);
            value.setModelObject("");

            break;

        case RESOURCE:
            property.setChoices(resourceNames);

            comparator.setChoices(new LoadableDetachableModel<List<SearchClause.Comparator>>() {

                private static final long serialVersionUID = 5275935387613157437L;

                @Override
                protected List<SearchClause.Comparator> load() {
                    List<SearchClause.Comparator> comparators = new ArrayList<SearchClause.Comparator>();
                    comparators.add(SearchClause.Comparator.EQUALS);
                    comparators.add(SearchClause.Comparator.NOT_EQUALS);
                    return comparators;
                }
            });
            comparator.setChoiceRenderer(new IChoiceRenderer<SearchClause.Comparator>() {

                private static final long serialVersionUID = -9086043750227867686L;

                @Override
                public Object getDisplayValue(final SearchClause.Comparator object) {
                    String display;

                    switch (object) {
                    case EQUALS:
                        display = "HAS";
                        break;

                    case NOT_EQUALS:
                        display = "HAS NOT";
                        break;

                    default:
                        display = StringUtils.EMPTY;
                    }

                    return display;
                }

                @Override
                public String getIdValue(final SearchClause.Comparator object, final int index) {
                    return getDisplayValue(object).toString();
                }
            });

            value.setEnabled(false);
            value.setModelObject("");

            break;

        case ENTITLEMENT:
            property.setChoices(entitlements);

            comparator.setChoices(new LoadableDetachableModel<List<SearchClause.Comparator>>() {

                private static final long serialVersionUID = 5275935387613157437L;

                @Override
                protected List<SearchClause.Comparator> load() {
                    List<SearchClause.Comparator> comparators = new ArrayList<SearchClause.Comparator>();
                    comparators.add(SearchClause.Comparator.EQUALS);
                    comparators.add(SearchClause.Comparator.NOT_EQUALS);
                    return comparators;
                }
            });
            comparator.setChoiceRenderer(new IChoiceRenderer<SearchClause.Comparator>() {

                private static final long serialVersionUID = -9086043750227867686L;

                @Override
                public Object getDisplayValue(final SearchClause.Comparator object) {
                    String display;

                    switch (object) {
                    case EQUALS:
                        display = "HAS";
                        break;

                    case NOT_EQUALS:
                        display = "HAS NOT";
                        break;

                    default:
                        display = StringUtils.EMPTY;
                    }

                    return display;
                }

                @Override
                public String getIdValue(final SearchClause.Comparator object, final int index) {
                    return getDisplayValue(object).toString();
                }
            });

            value.setEnabled(false);
            value.setModelObject("");

            break;

        default:
            property.setChoices(Collections.<String>emptyList());
        }
    }
}