Example usage for org.apache.wicket.markup.repeater RefreshingView RefreshingView

List of usage examples for org.apache.wicket.markup.repeater RefreshingView RefreshingView

Introduction

In this page you can find the example usage for org.apache.wicket.markup.repeater RefreshingView RefreshingView.

Prototype

public RefreshingView(String id) 

Source Link

Document

Constructor

Usage

From source file:com.gitblit.wicket.panels.RegistrantPermissionsPanel.java

License:Apache License

public RegistrantPermissionsPanel(String wicketId, RegistrantType registrantType, List<String> allRegistrants,
        final List<RegistrantAccessPermission> permissions, final Map<AccessPermission, String> translations) {
    super(wicketId);
    setOutputMarkupId(true);/*from w w w  .  j a  v a 2  s .  c  o m*/

    /*
     * Permission view toggle buttons
     */
    Form<Void> permissionToggleForm = new Form<Void>("permissionToggleForm");
    permissionToggleForm.add(new ShowStateButton("showSpecified", Show.specified));
    permissionToggleForm.add(new ShowStateButton("showMutable", Show.mutable));
    permissionToggleForm.add(new ShowStateButton("showEffective", Show.effective));
    add(permissionToggleForm);

    /*
     * Permission repeating display
     */
    RefreshingView<RegistrantAccessPermission> dataView = new RefreshingView<RegistrantAccessPermission>(
            "permissionRow") {
        private static final long serialVersionUID = 1L;

        @Override
        protected Iterator<IModel<RegistrantAccessPermission>> getItemModels() {
            // the iterator returns RepositoryPermission objects, but we need it to
            // return models
            return new ModelIteratorAdapter<RegistrantAccessPermission>(permissions.iterator()) {
                @Override
                protected IModel<RegistrantAccessPermission> model(RegistrantAccessPermission permission) {
                    return new CompoundPropertyModel<RegistrantAccessPermission>(permission);
                }
            };
        }

        @Override
        protected Item<RegistrantAccessPermission> newItem(String id, int index,
                IModel<RegistrantAccessPermission> model) {
            // this item sets markup class attribute to either 'odd' or
            // 'even' for decoration
            return new OddEvenItem<RegistrantAccessPermission>(id, index, model);
        }

        @Override
        public void populateItem(final Item<RegistrantAccessPermission> item) {
            final RegistrantAccessPermission entry = item.getModelObject();
            if (RegistrantType.REPOSITORY.equals(entry.registrantType)) {
                String repoName = StringUtils.stripDotGit(entry.registrant);
                if (!entry.isMissing() && StringUtils.findInvalidCharacter(repoName) == null) {
                    // repository, strip .git and show swatch
                    Fragment repositoryFragment = new Fragment("registrant", "repositoryRegistrant",
                            RegistrantPermissionsPanel.this);
                    Component swatch = new Label("repositorySwatch", "&nbsp;").setEscapeModelStrings(false);
                    WicketUtils.setCssBackground(swatch, entry.toString());
                    repositoryFragment.add(swatch);
                    Label registrant = new Label("repositoryName", repoName);
                    repositoryFragment.add(registrant);
                    item.add(repositoryFragment);
                } else {
                    // regex or missing
                    Label label = new Label("registrant", entry.registrant);
                    WicketUtils.setCssStyle(label, "font-weight: bold;");
                    item.add(label);
                }
            } else if (RegistrantType.USER.equals(entry.registrantType)) {
                // user
                PersonIdent ident = new PersonIdent(entry.registrant, "");
                UserModel user = app().users().getUserModel(entry.registrant);
                if (user != null) {
                    ident = new PersonIdent(user.getDisplayName(),
                            user.emailAddress == null ? user.getDisplayName() : user.emailAddress);
                }

                Fragment userFragment = new Fragment("registrant", "userRegistrant",
                        RegistrantPermissionsPanel.this);
                userFragment.add(new AvatarImage("userAvatar", ident, 20));
                userFragment.add(new Label("userName", entry.registrant));
                item.add(userFragment);
            } else {
                // team
                Fragment teamFragment = new Fragment("registrant", "teamRegistrant",
                        RegistrantPermissionsPanel.this);
                teamFragment.add(new Label("teamName", entry.registrant));
                item.add(teamFragment);
            }
            switch (entry.permissionType) {
            case ADMINISTRATOR:
                Label administrator = new Label("pType",
                        entry.source == null ? getString("gb.administrator") : entry.source);
                WicketUtils.setHtmlTooltip(administrator, getString("gb.administratorPermission"));
                WicketUtils.setCssClass(administrator, "label label-inverse");
                item.add(administrator);
                break;
            case OWNER:
                Label owner = new Label("pType", getString("gb.owner"));
                WicketUtils.setHtmlTooltip(owner, getString("gb.ownerPermission"));
                WicketUtils.setCssClass(owner, "label label-info");
                item.add(owner);
                break;
            case TEAM:
                Label team = new Label("pType", entry.source == null ? getString("gb.team") : entry.source);
                WicketUtils.setHtmlTooltip(team,
                        MessageFormat.format(getString("gb.teamPermission"), entry.source));
                WicketUtils.setCssClass(team, "label label-success");
                item.add(team);
                break;
            case REGEX:
                Label regex = new Label("pType", "regex");
                if (!StringUtils.isEmpty(entry.source)) {
                    WicketUtils.setHtmlTooltip(regex,
                            MessageFormat.format(getString("gb.regexPermission"), entry.source));
                }
                WicketUtils.setCssClass(regex, "label");
                item.add(regex);
                break;
            default:
                if (entry.isMissing()) {
                    // repository is missing, this permission will be removed on save
                    Label missing = new Label("pType", getString("gb.missing"));
                    WicketUtils.setCssClass(missing, "label label-important");
                    WicketUtils.setHtmlTooltip(missing, getString("gb.missingPermission"));
                    item.add(missing);
                } else {
                    // standard permission
                    item.add(new Label("pType", "").setVisible(false));
                }
                break;
            }

            item.setVisible(activeState.show(entry));

            // use ajax to get immediate update of permission level change
            // otherwise we can lose it if they change levels and then add
            // a new repository permission
            final DropDownChoice<AccessPermission> permissionChoice = new DropDownChoice<AccessPermission>(
                    "permission", Arrays.asList(AccessPermission.values()),
                    new AccessPermissionRenderer(translations));
            // only allow changing an explicitly defined permission
            // this is designed to prevent changing a regex permission in
            // a repository
            permissionChoice.setEnabled(entry.mutable);
            permissionChoice.setOutputMarkupId(true);
            if (entry.mutable) {
                permissionChoice.add(new AjaxFormComponentUpdatingBehavior("change") {

                    private static final long serialVersionUID = 1L;

                    @Override
                    protected void onUpdate(AjaxRequestTarget target) {
                        target.add(permissionChoice);
                    }
                });
            }

            item.add(permissionChoice);
        }
    };
    add(dataView);
    setOutputMarkupId(true);

    // filter out registrants we already have permissions for
    final List<String> registrants = new ArrayList<String>(allRegistrants);
    for (RegistrantAccessPermission rp : permissions) {
        if (rp.mutable) {
            // remove editable duplicates
            // this allows for specifying an explicit permission
            registrants.remove(rp.registrant);
        } else if (rp.isAdmin()) {
            // administrators can not have their permission changed
            registrants.remove(rp.registrant);
        } else if (rp.isOwner()) {
            // owners can not have their permission changed
            registrants.remove(rp.registrant);
        }
    }

    /*
     * Add permission form
     */
    IModel<RegistrantAccessPermission> addPermissionModel = new CompoundPropertyModel<RegistrantAccessPermission>(
            new RegistrantAccessPermission(registrantType));
    Form<RegistrantAccessPermission> addPermissionForm = new Form<RegistrantAccessPermission>(
            "addPermissionForm", addPermissionModel);
    addPermissionForm.add(new DropDownChoice<String>("registrant", registrants));
    addPermissionForm.add(new DropDownChoice<AccessPermission>("permission",
            Arrays.asList(AccessPermission.NEWPERMISSIONS), new AccessPermissionRenderer(translations)));
    AjaxButton button = new AjaxButton("addPermissionButton", addPermissionForm) {

        private static final long serialVersionUID = 1L;

        @Override
        protected void onSubmit(AjaxRequestTarget target) {
            // add permission to our list
            RegistrantAccessPermission rp = (RegistrantAccessPermission) getForm().getModel().getObject();
            if (rp.permission == null) {
                return;
            }
            if (rp.registrant == null) {
                return;
            }
            RegistrantAccessPermission copy = DeepCopier.copy(rp);
            if (StringUtils.findInvalidCharacter(copy.registrant) != null) {
                copy.permissionType = PermissionType.REGEX;
                copy.source = copy.registrant;
            }
            permissions.add(copy);

            // resort permissions after insert to convey idea of eval order
            Collections.sort(permissions);

            // remove registrant from available choices
            registrants.remove(rp.registrant);

            // force the panel to refresh
            target.add(RegistrantPermissionsPanel.this);
        }
    };
    addPermissionForm.add(button);

    // only show add permission form if we have a registrant choice
    add(addPermissionForm.setVisible(registrants.size() > 0));
}

From source file:com.userweave.module.methoden.iconunderstandability.page.survey.IconMatchingTestUI.java

License:Open Source License

private Component createImagesView() {

    return new RefreshingView("img_content") {

        @Override/*from   www .j a  v a 2  s  . com*/
        protected Iterator getItemModels() {
            return new ModelIteratorAdapter(imagesV.iterator()) {

                @Override
                protected IModel model(Object object) {
                    return new CompoundPropertyModel(object);
                }

            };
        }

        @Override
        protected void populateItem(Item item) {
            final ITMImage image = (ITMImage) item.getModel().getObject();

            WebMarkupContainer imageContainer = new WebMarkupContainer("tileCenterPart");

            Dimension d = getConfiguration().getDimiensionOfIcons();

            imageContainer.add(new AttributeAppender("style",
                    new Model<String>("width:" + d.width + "px;" + "height:" + d.height + "px"), ";"));

            item.add(imageContainer);

            imageContainer.add(ImageResource.createImage("image", image));
            // componentId == index
            // componentId wird bei matching an ajax callback bertragen
            item.add(new AttributeModifier(IMAGE_ID_PARAMETER, new Model<Integer>(item.getIndex())));
        }
    };
}

From source file:com.userweave.module.methoden.iconunderstandability.page.survey.IconMatchingTestUI.java

License:Open Source License

private void addTermsView() {
    terms = getConfiguration().getTerms();
    termsV = new ArrayList<ItmTerm>();

    initTermsV();/*from w w w .  j  a  v a2  s. c o m*/

    RefreshingView rv;

    add(rv = new RefreshingView("term_content") {

        @Override
        protected Iterator getItemModels() {
            return new ModelIteratorAdapter(termsV.iterator()) {

                @Override
                protected IModel model(Object object) {
                    return new CompoundPropertyModel(object);
                }
            };
        }

        @Override
        protected void populateItem(Item item) {
            final String termValue = LocalizationUtils.getValue(getTermValue(item));

            DropComponent dropComponent = new DropComponent("drop_component");

            dropComponent.add(new AttributeAppender("style",
                    new Model("width:" + Integer.toString(TILE_WIDTH + 4) + "px;"), " "));

            dropComponent.add(new WebMarkupContainer("dropFieldCenter") {
                {
                    add(new AttributeAppender("style",
                            new Model("height:" + Integer.toString(TILE_HEIGHT - 13 - 6) + "px;"), " "));
                }
            });

            item.add(dropComponent);

            AbstractDefaultAjaxBehavior dropCallbackBehavior = new AbstractDefaultAjaxBehavior() {
                @Override
                protected void respond(AjaxRequestTarget target) {
                    IRequestParameters parameters = RequestCycle.get().getRequest().getRequestParameters();

                    //                     ValueMap parameterMap = 
                    //                        new ValueMap(RequestCycle.get().getRequest().getParameterMap());

                    Iterator<String> i = parameters.getParameterNames().iterator();

                    boolean found = false;

                    while (i.hasNext()) {
                        if (i.next().equals(IMAGE_ID_PARAMETER)) {
                            int imageIndex = parameters.getParameterValue(IMAGE_ID_PARAMETER).toInt();

                            if (imageIndex != -1) {
                                ITMImage image = imagesV.get(imageIndex);
                                String imageId = image.getId().toString();
                                matchingResult.put(termValue, imageId);
                            } else {
                                matchingResult.remove(termValue);
                            }

                            found = true;
                            break;
                        }
                    }

                    if (!found) {
                        matchingResult.remove(termValue);
                    }

                    getSurveyStepTimer().setEndTimeNow();
                }
            };

            dropComponent.add(dropCallbackBehavior);

            String dropComponentId = createId(item.getIndex());
            dropComponent.add(new AttributeModifier(DROP_COMPONENT_ID_PARAMETER, new Model(dropComponentId)));

            // um js-callbacks pro behaviour und dispatch anhand componentId zu erzeugen
            id2Behaviour.put(dropComponentId, dropCallbackBehavior);

            WebMarkupContainer wmc;

            item.add(wmc = new WebMarkupContainer("table_content") {
                {
                    add(new AttributeAppender("style",
                            new Model<String>("height:" + Integer.toString(TILE_HEIGHT - 2 - 6) + "px;"), " "));
                }
            });
            wmc.add(new Label("text", termValue));

            item.add(new WebMarkupContainer("drop_end_center") {
                {
                    add(new AttributeAppender("style",
                            new Model<String>("height:" + Integer.toString(TILE_HEIGHT - 8 - 6) + "px;"), " "));
                }
            });
        }

        private LocalizedString getTermValue(Item item) {
            return ((ItmTerm) item.getModel().getObject()).getValue();
        }
    });
}

From source file:com.visural.stereotyped.ui.admin.MainAdminPage.java

License:Mozilla Public License

public MainAdminPage(PageParameters params) {
    super(params);

    add(new UserAccountListPanel("users"));
    add(new UserGroupListPanel("groups"));
    add(new FeedbackPanel("feedback"));

    RefreshingView<ComponentLibrary> libList = new RefreshingView<ComponentLibrary>("libRow") {

        @Override//from ww  w. j a v  a  2 s .c om
        protected Iterator<IModel<ComponentLibrary>> getItemModels() {
            return WrapCollectionToModelCollection.get(service.listAllLibraries()).iterator();
        }

        @Override
        protected void populateItem(Item<ComponentLibrary> item) {
            ComponentLibrary cl = item.getModelObject();
            item.add(
                    new Label("libDesc",
                            cl.getJarName() + "<br/>(" + cl.getComponents().size() + " components, "
                                    + cl.getTemplate().keySet().size() + " resources)")
                                            .setEscapeModelStrings(false));
            item.add(new BookmarkablePageLink("libOpen", ComponentEditor.class,
                    new PageParameters(StdParam.LOAD_ID + "=" + cl.getJarName())));
        }
    };
    add(libList);
}

From source file:com.visural.stereotyped.ui.LandingPage.java

License:Mozilla Public License

public LandingPage(PageParameters params) {
    super(params);
    stereotypes = service.getStereotypes();

    add(new FeedbackPanel("feedback"));

    IModel<UUID> selectedModel = new IModel<UUID>() {
        public UUID getObject() {
            if (selected != null && service.read(selected) != null) {
                return selected;
            } else {
                return null;
            }/*from ww  w  .  j a va 2s .co  m*/
        }

        public void setObject(UUID object) {
            selected = object;
        }

        public void detach() {
        }
    };
    final StereotypeManagePanel manage = new StereotypeManagePanel("recordDetails", selectedModel);
    add(manage);

    add(new StereotypeListPanel("recentlySaved", new Model("Recently Saved Files"),
            new AbstractReadOnlyModel<List<UUID>>() {
                @Override
                public List<UUID> getObject() {
                    return userService.getUser(userService.getCurrentUser()).getUserLists()
                            .get(UserListType.RECENTLY_SAVED);
                }
            }, manage));
    add(new StereotypeListPanel("recentlyViewed", new Model("Recently Viewed Files"),
            new AbstractReadOnlyModel<List<UUID>>() {
                @Override
                public List<UUID> getObject() {
                    return userService.getUser(userService.getCurrentUser()).getUserLists()
                            .get(UserListType.RECENTLY_VIEWED);
                }
            }, manage));

    add(new NewForm("newForm"));

    add(ignoreForm = new IgnoreForm("ignoreForm"));

    tagWrap = new WebMarkupContainer("tagWrap");
    tagWrap.setOutputMarkupId(true);
    add(tagWrap);
    final RefreshingView<String> tags = new RefreshingView<String>("tag") {

        @Override
        protected Iterator<IModel<String>> getItemModels() {
            List<String> tags = new ArrayList<String>();
            tags.addAll(service.listAllByTag(sessionService.getSessionBean().isShowFilesFromOtherUsers(),
                    sessionService.getSessionBean().isShowArchived()).keySet());
            Collections.sort(tags);
            return WrapCollectionToModelCollection.get(tags).iterator();
        }

        @Override
        protected void populateItem(Item<String> item) {
            final String tag = item.getModelObject();
            final boolean isIgnored = Sets
                    .newHashSet(sessionService.getSessionBean().getIgnoreTags().split(" ")).contains(tag);
            item.setOutputMarkupId(true);
            item.add(new AjaxLink("title") {
                @Override
                public void onClick(AjaxRequestTarget target) {
                    Set<String> tags = Sets
                            .newHashSet(sessionService.getSessionBean().getIgnoreTags().split(" "));
                    if (isIgnored) {
                        tags.remove(tag);
                    } else {
                        tags.add(tag);
                    }
                    sessionService.getSessionBean().setIgnoreTags(StringUtil.delimitObjectsToString(" ", tags));
                    target.addComponent(tagWrap);
                }

                @Override
                protected void onComponentTagBody(MarkupStream markupStream, ComponentTag openTag) {
                    replaceComponentTagBody(markupStream, openTag, tag);
                }

            });

            RefreshingView<UUID> loadList = new RefreshingView<UUID>("itemRow") {
                @Override
                protected Iterator<IModel<UUID>> getItemModels() {
                    List<UUID> items = new ArrayList<UUID>();
                    items.addAll(
                            service.listAllByTag(sessionService.getSessionBean().isShowFilesFromOtherUsers(),
                                    sessionService.getSessionBean().isShowArchived()).get(tag));
                    Collections.sort(items, new Comparator<UUID>() {

                        public int compare(UUID o1, UUID o2) {
                            return service.read(o1).getName().compareTo(service.read(o2).getName());
                        }

                    });
                    return WrapCollectionToModelCollection.get(items).iterator();
                }

                @Override
                protected void populateItem(final Item<UUID> item) {
                    item.setOutputMarkupId(true);
                    Stereotype st = service.read(item.getModelObject());
                    final String stName = st.getName();
                    final AjaxLink desc = new AjaxLink("itemOpen") {
                        @Override
                        public void onClick(AjaxRequestTarget target) {
                            manage.select(target, item.getModelObject());
                        }
                    };
                    desc.add(new Image("icon", new IconReference(Icon.PROPERTIES)));
                    item.add(desc);

                    StereotypeUIMetaData meta = service.readUIMeta(item.getModelObject());
                    String userDesc = meta.getOwner()
                            .equals(sessionService.getSessionBean().getLoggedInUsername()) ? ""
                                    : "(" + meta.getOwner() + ")";
                    item.add(new Label("userDesc", userDesc));

                    WebMarkupContainer previewButton;
                    if (service.read(item.getModelObject()).getPreviewStates().isEmpty()) {
                        previewButton = new WebMarkupContainer("preview");
                        previewButton.add(new SimpleAttributeModifier("href",
                                "preview/" + StringUtil.urlEncode(item.getModelObject().toString()) + "/"));
                        item.add(previewButton);
                    } else {
                        item.add(previewButton = new AjaxLink("preview") {

                            @Override
                            public void onClick(AjaxRequestTarget target) {
                                previewStateDialog.open(target, item.getModelObject());
                            }

                        });
                    }
                    previewButton.add(new Image("icon", new IconReference(Icon.PREVIEW)));

                    item.add(new BookmarkablePageLink("itemDesc", PrototypeEditor.class,
                            new PageParameters(StdParam.LOAD_ID + "=" + item.getModelObject())) {
                        @Override
                        protected void onComponentTagBody(MarkupStream markupStream, ComponentTag openTag) {
                            replaceComponentTagBody(markupStream, openTag, StringUtil.htmlEscape(stName));
                        }
                    });
                }
            };
            if (!isIgnored) {
                item.add(loadList);
            } else {
                item.add(new WebMarkupContainer("itemRow").setVisible(false));
            }
        }
    };
    tagWrap.add(tags);
    add(previewStateDialog = new PreviewStatePreviewDialog("previewStateDialog"));
}

From source file:com.visural.stereotyped.ui.PreviewStatePreviewDialog.java

License:Mozilla Public License

public PreviewStatePreviewDialog(String id) {
    super(id);/*from   w  w w. j av a2 s .  co m*/
    previewStateDialog = new Dialog("previewStateDialog");
    add(previewStateDialog);
    previewStateDialog.setOutputMarkupId(true);
    previewStateDialog.add(new WebMarkupContainer("default") {
        @Override
        protected void onComponentTag(ComponentTag tag) {
            super.onComponentTag(tag);
            tag.put("href", preview != null ? "preview/" + preview.toString() + "/" : "#");
            tag.put("target", preview != null ? preview.toString() : "");
        }
    });
    previewStateDialog.add(new RefreshingView<PreviewState>("previewStates") {
        @Override
        protected Iterator<IModel<PreviewState>> getItemModels() {
            return WrapCollectionToModelCollection
                    .get(preview != null ? service.read(preview).getPreviewStates() : new ArrayList())
                    .iterator();
        }

        @Override
        protected void populateItem(Item<PreviewState> item) {
            item.add(new WebMarkupContainer("previewState")
                    .add(new Label("previewStateName", item.getModelObject().getName()))
                    .add(new SimpleAttributeModifier("href",
                            "preview/" + preview.toString() + "/?state="
                                    + StringUtil.urlEncode(item.getModelObject().getName())))
                    .add(new SimpleAttributeModifier("target", preview.toString())));
        }

    });
    previewStateDialog.add(new WebMarkupContainer("cancel").add(previewStateDialog.getClickToCloseBehaviour()));

}

From source file:com.visural.stereotyped.ui.StereotypeManagePanel.java

License:Mozilla Public License

public StereotypeManagePanel(String id, IModel<UUID> st) {
    super(id);/*from  w w w  . j  a v  a 2s .  c o  m*/
    this.stereotype = st;
    setOutputMarkupId(true);
    WebMarkupContainer wrap = new WebMarkupContainer("wrap") {

        @Override
        public boolean isVisible() {
            return stereotype.getObject() != null;
        }
    };
    add(wrap);
    add(previewStateDialog = new PreviewStatePreviewDialog("previewStateDialog"));

    final Label desc = new Label("itemDesc", new AbstractReadOnlyModel() {

        @Override
        public Object getObject() {
            return service.read(stereotype.getObject()).getName();
        }
    });
    wrap.add(desc);

    wrap.add(new Label("userDesc", new AbstractReadOnlyModel() {

        @Override
        public Object getObject() {
            StereotypeUIMetaData meta = service.readUIMeta(stereotype.getObject());
            return meta.getOwner().equals(userService.getCurrentUser()) ? "" : "(" + meta.getOwner() + ")";
        }
    }));

    WebMarkupContainer previewSingle = new WebMarkupContainer("previewSingle") {

        @Override
        public boolean isVisible() {
            return false;
            //return service.read(stereotype.getObject()).getPreviewStates().isEmpty();
        }

        @Override
        protected void onComponentTag(ComponentTag tag) {
            super.onComponentTag(tag);
            tag.put("href", "preview/" + StringUtil.urlEncode(stereotype.getObject().toString()) + "/");
            tag.put("target", stereotype.getObject().toString());
        }
    };
    previewSingle.add(new Image("icon", new ResourceReference(BasePage.class, "eye--arrow.png")));
    wrap.add(previewSingle);

    WebMarkupContainer previewMulti = new AjaxLink("previewMulti") {

        @Override
        public boolean isVisible() {
            return false;
            //return !service.read(stereotype.getObject()).getPreviewStates().isEmpty();
        }

        @Override
        public void onClick(AjaxRequestTarget target) {
            previewStateDialog.open(target, stereotype.getObject());
        }
    };
    previewMulti.add(new Image("icon", new ResourceReference(BasePage.class, "eye--arrow.png")));
    wrap.add(previewMulti);

    wrap.add(new WebMarkupContainer("itemOpen") {

        @Override
        protected void onComponentTag(ComponentTag tag) {
            super.onComponentTag(tag);
            tag.put("href", urlFor(PrototypeEditor.class,
                    new PageParameters(StdParam.LOAD_ID + "=" + stereotype.getObject())).toString());
        }
    }.setVisible(false));
    wrap.add(new SecureWebMarkupContainer("itemAccess") {

        @Override
        public IPrivilege getRenderPrivilege() {
            return Privilege.currentUserHasWriteAccess(stereotype.getObject());
        }

        @Override
        protected void onComponentTag(ComponentTag tag) {
            super.onComponentTag(tag);
            tag.put("href", urlFor(EditMetaPage.class,
                    new PageParameters(StdParam.LOAD_ID + "=" + stereotype.getObject())).toString());
        }
    });
    wrap.add(new AjaxLink("itemCopy") {

        @Override
        public void onClick(AjaxRequestTarget target) {
            service.copy(stereotype.getObject());
            setResponsePage(LandingPage.class);
        }
    });
    final RenameForm renameForm = new RenameForm();
    wrap.add(renameForm);
    wrap.add(new SecureAjaxLink("itemRename") {

        @Override
        public boolean isVisible() {
            return Privilege.currentUserHasWriteAccess(stereotype.getObject())
                    .isGrantedToClient(userService.getUser(userService.getCurrentUser()));
        }

        @Override
        public void onClick(AjaxRequestTarget target) {
            renameForm.show(stereotype.getObject(), service.read(stereotype.getObject()).getName());
            desc.setVisible(false);
            target.addComponent(StereotypeManagePanel.this);
        }
    });
    wrap.add(new ConfirmerLink("itemArchive") {

        @Override
        public boolean isVisible() {
            return Privilege.currentUserHasWriteAccess(stereotype.getObject())
                    .isGrantedToClient(userService.getUser(userService.getCurrentUser()));
        }

        @Override
        public String getMessageContentHTML() {
            return "Are you sure you want to archive '" + service.read(stereotype.getObject()).getName() + "'?";
        }

        @Override
        public String getOkButtonLabel() {
            return "Yes";
        }

        @Override
        public String getCancelButtonLabel() {
            return "No";
        }

        @Override
        public void onClick() {
            StereotypeUIMetaData meta = service.readUIMeta(stereotype.getObject());
            meta.getTags().add(StereotypeUIMetaData.ARCHIVE_TAG);
            service.writeUIMeta(stereotype.getObject(), meta);
        }
    });
    wrap.add(new ConfirmerLink("itemDelete") {

        @Override
        public boolean isVisible() {
            return Privilege.currentUserHasWriteAccess(stereotype.getObject())
                    .isGrantedToClient(userService.getUser(userService.getCurrentUser()));
        }

        @Override
        public String getMessageContentHTML() {
            return "Are you sure you want to delete '" + service.read(stereotype.getObject()).getName() + "'?";
        }

        @Override
        public String getOkButtonLabel() {
            return "Yes";
        }

        @Override
        public String getCancelButtonLabel() {
            return "No";
        }

        @Override
        public void onClick() {
            service.archive(stereotype.getObject());
        }
    });

    wrap.add(new RefreshingView<String>("groups") {

        @Override
        protected Iterator<IModel<String>> getItemModels() {
            List<String> all = new ArrayList<String>();
            if (stereotype.getObject() != null) {
                StereotypeUIMetaData meta = service.readUIMeta(stereotype.getObject());
                for (String g : meta.getEditGroups()) {
                    all.add("Group - " + g + " (edit)");
                }
                for (String g : meta.getEditUsers()) {
                    all.add("User  - " + g + " (edit)");
                }
                for (String g : meta.getViewGroups()) {
                    all.add("Group - " + g + " (view)");
                }
                for (String g : meta.getViewUsers()) {
                    all.add("User  - " + g + " (view)");
                }
            }
            if (all.isEmpty()) {
                all.add("Private (owner only)");
            }
            return WrapCollectionToModelCollection.get(all).iterator();
        }

        @Override
        protected void populateItem(final Item<String> item) {
            item.add(new Label("group", item.getModelObject()));
        }
    });
}

From source file:de.alpharogroup.wicket.data.provider.examples.refreshingview.RefreshingViewPanel.java

License:Apache License

public RefreshingViewPanel(final String id, final IModel<?> model) {
    super(id, model);

    form = new Form<Person>("form");
    add(form);/*from   w  w  w . j av  a  2s  .  c o m*/

    // create a repeater that will display the list of contacts.
    final RefreshingView<Person> refreshingView = new RefreshingView<Person>("simple") {
        /**
         * The serialVersionUID.
         */
        private static final long serialVersionUID = 1L;

        @Override
        protected Iterator<IModel<Person>> getItemModels() {
            // for simplicity we only show the first 10 contacts
            // SortParam<String> sort = new SortParam<String>("firstname",
            // true);
            final Iterator<Person> contacts = PersonDatabaseManager.getInstance().getPersons().iterator();

            // the iterator returns contact objects, but we need it to
            // return models, we use this handy adapter class to perform
            // on-the-fly conversion.
            return new ModelIteratorAdapter<Person>(contacts) {
                @Override
                protected IModel<Person> model(final Person object) {
                    return new CompoundPropertyModel<Person>(object);
                }
            };
        }

        @Override
        protected Item<Person> newItem(final String id, final int index, final IModel<Person> model) {
            // this item sets markup class attribute to either 'odd' or
            // 'even' for decoration
            return new OddEvenItem<Person>(id, index, model);
        }

        @Override
        protected void populateItem(final Item<Person> item) {
            // populate the row of the repeater
            final IModel<Person> contact = item.getModel();
            item.add(new ActionPanel("actions", contact));
            item.add(new TextField<String>("firstname"));
            item.add(new TextField<String>("lastname"));
        }
    };

    // because we are in a form we need to preserve state of the component
    // hierarchy (because it might contain things like form errors that
    // would be lost if the hierarchy for each item was recreated every
    // request by default), so we use an item reuse strategy.
    refreshingView.setItemReuseStrategy(ReuseIfModelsEqualStrategy.getInstance());

    form.add(refreshingView);
}

From source file:jdave.examples.wicket.DictionaryPanel.java

License:Apache License

public DictionaryPanel(String id) {
    super(id);// w  w  w.j a  v  a  2 s  . c om
    add(new FeedbackPanel("feedback"));
    add(new Form<Void>("form") {
        {
            add(new TextField<String>("query", new PropertyModel<String>(DictionaryPanel.this, "query")));
        }

        @Override
        protected void onSubmit() {
            hits = getService().lookup(query);
            if (hits.isEmpty()) {
                DictionaryPanel.this.info("No hits.");
            }
        }
    });
    add(new RefreshingView<String>("words") {
        @Override
        protected Iterator<IModel<String>> getItemModels() {
            return new ModelIteratorAdapter<String>(hits.iterator()) {
                @Override
                protected IModel<String> model(String object) {
                    return new Model<String>(object);
                }
            };
        }

        @Override
        protected void populateItem(Item<String> item) {
            item.add(new Label("word", item.getDefaultModelObjectAsString()));
        }
    });
}

From source file:jdave.wicket.PageWithItems.java

License:Apache License

@SuppressWarnings({ "unchecked", "rawtypes" })
public PageWithItems(final IModel<List<Integer>> items) {
    add(new ListView<Integer>("listView", items) {
        @Override/*  w  ww  .ja v a 2  s  .  co  m*/
        protected void populateItem(ListItem<Integer> item) {
            item.add(new Label("item", item.getModelObject().toString()));
        }
    });
    add(new RefreshingView<Integer>("refreshingView") {
        @Override
        protected Iterator<IModel<Integer>> getItemModels() {
            return new ModelIteratorAdapter<Integer>(items.getObject().iterator()) {
                @Override
                protected IModel<Integer> model(Integer object) {
                    return new Model<Integer>(object);
                }
            };
        }

        @Override
        protected void populateItem(Item<Integer> item) {
            item.add(new Label("item", item.getModelObject().toString()));
        }
    });
    add(new WebMarkupContainer("container", new CompoundPropertyModel(this))
            .add(new WebMarkupContainer("innerContainer")));
}