List of usage examples for org.apache.wicket.markup.repeater.util ModelIteratorAdapter ModelIteratorAdapter
public ModelIteratorAdapter(Iterator<T> delegate)
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", " ").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/* w w w. j a va2s .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 ww . j a v a2s .c om*/ 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:de.alpharogroup.wicket.components.listview.RefreshingViewPanel.java
License:Apache License
/** * Factory method for creating a new {@link RefreshingView}. This method is invoked in the * constructor from the derived classes and can be overridden so users can provide their own * version of the new {@link RefreshingView}. * * @param id//from w w w . j a va 2 s . c o m * the id * @param model * the model * @return the new {@link RefreshingView}. */ protected RefreshingView<T> newRefreshingView(final String id, final IModel<List<T>> model) { final RefreshingView<T> listView = new RefreshingView<T>(id, model) { /** The Constant serialVersionUID. */ private static final long serialVersionUID = 1L; /** * {@inheritDoc} */ @Override protected Iterator<IModel<T>> getItemModels() { return new ModelIteratorAdapter<T>(getModelObject().iterator()) { /** * {@inheritDoc} */ @Override protected IModel<T> model(final T object) { return Model.of(object); } }; } /** * {@inheritDoc} */ @Override protected Item<T> newItem(final String id, final int index, final IModel<T> model) { return RefreshingViewPanel.this.newItem(id, index, model); } /** * {@inheritDoc} */ @Override protected void populateItem(final Item<T> item) { item.add(newListComponent("item", item)); } }; listView.setItemReuseStrategy(ReuseIfModelsEqualStrategy.getInstance()); return listView; }
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);// ww w .j av a 2 s . 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:de.widone.web.panel.tasklist.TaskListPanel.java
License:Apache License
private Component createRefreshingView(final IModel<TaskList> taskList) { return new RefreshingView<Task>(TASK_LIST, new PropertyModel<List<Task>>(taskList, "tasks")) { @Override/*from w ww . j a v a2 s .co m*/ protected Iterator<IModel<Task>> getItemModels() { return new ModelIteratorAdapter<Task>( ((IModel<List<Task>>) getDefaultModel()).getObject().iterator()) { @Override protected IModel<Task> model(Task object) { return Model.of(object); } }; } @Override protected void populateItem(final Item<Task> item) { TaskListPanel.this.populateItem(item, taskList); } }.setItemReuseStrategy(new ReuseIfModelsEqualStrategy()); }
From source file:jdave.examples.wicket.DictionaryPanel.java
License:Apache License
public DictionaryPanel(String id) { super(id);/*from w w w . j av a 2 s . c o m*/ 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/*from w w w . j a v a2 s. c o 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"))); }
From source file:org.apache.jetspeed.portlets.prm.application.DetailsPanel.java
License:Apache License
public DetailsPanel(String id, final PortletApplicationNodeBean paNodeBean) { super(id);/*from www . j a va 2s . c o m*/ detailList = new ArrayList<KeyVal>(); JetspeedServiceLocator locator = ((AbstractAdminWebApplication) getApplication()).getServiceLocator(); PortletApplication app = locator.getPortletRegistry() .getPortletApplication(paNodeBean.getApplicationName()); detailList.add(new KeyVal("Name", app.getName())); detailList.add(new KeyVal("Version", app.getVersion())); detailList.add(new KeyVal("Description", getDescription(app))); detailList.add(new KeyVal("Type", getType(app))); detailList.add(new KeyVal("Services", new Object() { String toString(Iterator<JetspeedServiceReference> it) { StringBuffer buffer = new StringBuffer(); while (it.hasNext()) { buffer.append(it.next().getName() + "<br/>"); } return buffer.toString(); } }.toString(app.getJetspeedServices().iterator()))); final RefreshingView<KeyVal> dataRepeater = new RefreshingView<KeyVal>("data", new PropertyModel<List<KeyVal>>(this, "detailList")) { @Override protected void populateItem(Item<KeyVal> item) { final KeyVal field = item.getModelObject(); item.add(new Label("name", field.getKey())); item.add(new Label("value", field.getValue()).setEscapeModelStrings(false)); } @Override protected Iterator<IModel<KeyVal>> getItemModels() { List<KeyVal> list = (List<KeyVal>) getDefaultModelObject(); return new ModelIteratorAdapter<KeyVal>(list.iterator()) { @Override protected IModel<KeyVal> model(KeyVal object) { return new Model<KeyVal>(object); } }; } }; jetspeedSecurityContraintNames = new ArrayList<String>(Arrays.asList("")); PageManager pageManager = ((AbstractAdminWebApplication) getApplication()).getServiceLocator() .getPageManager(); try { for (Object secConstDefObj : pageManager.getPageSecurity().getSecurityConstraintsDefs()) { SecurityConstraintsDef secConstDef = (SecurityConstraintsDef) secConstDefObj; jetspeedSecurityContraintNames.add(secConstDef.getName()); } } catch (Exception e) { logger.error("Failed to retrieve jetspeed security constraint defs from page manager.", e); } jetspeedSecurityConstraint = app.getJetspeedSecurityConstraint(); Form form = new Form("form"); form.add(dataRepeater); form.add(new DropDownChoice<String>("jetspeedConstraint", new PropertyModel<String>(this, "jetspeedSecurityConstraint"), jetspeedSecurityContraintNames)); form.add(new Button("jsecSave", new ResourceModel("pam.details.action.save")) { @Override public void onSubmit() { FeedbackPanel feed = (FeedbackPanel) getPage().get("feedback"); try { PortletRegistry registry = ((AbstractAdminWebApplication) getApplication()).getServiceLocator() .getPortletRegistry(); PortletApplication app = registry.getPortletApplication(paNodeBean.getApplicationName()); app.setJetspeedSecurityConstraint( "".equals(jetspeedSecurityConstraint) ? null : jetspeedSecurityConstraint); registry.updatePortletApplication(app); StringResourceModel resModel = new StringResourceModel( "pam.details.action.status.application.saveOK", this, null, new Object[] { paNodeBean.getApplicationName() }); feed.info(resModel.getString()); } catch (RegistryException e) { logger.error("Failed to update jetspeed security constraint defs of application.", e); StringResourceModel resModel = new StringResourceModel( "pam.details.action.status.application.saveFailure", this, null, new Object[] { paNodeBean.getApplicationName(), e.getMessage() }); feed.info(resModel.getString()); } } }); form.add(new Label("resourceBundle", app.getResourceBundle())); Button reloadResourceBundlesButton = new Button("reloadResourceBundle", new ResourceModel("pam.details.resource.bundle.reload")) { @Override public void onSubmit() { FeedbackPanel feed = (FeedbackPanel) getPage().get("feedback"); try { PortletRegistry registry = ((AbstractAdminWebApplication) getApplication()).getServiceLocator() .getPortletRegistry(); PortletApplication app = registry.getPortletApplication(paNodeBean.getApplicationName()); PortletFactory factory = ((AbstractAdminWebApplication) getApplication()).getServiceLocator() .getPortletFactory(); factory.reloadResourceBundles(app); } catch (Exception e) { logger.error("Failed to reload the resource bundle of application.", e); StringResourceModel resModel = new StringResourceModel( "pam.details.action.status.resource.bundle.reloadFailure", this, null, new Object[] { paNodeBean.getApplicationName(), e.getMessage() }); feed.info(resModel.getString()); } } }; reloadResourceBundlesButton.add(new JavascriptEventConfirmation("onclick", new ResourceModel("pam.details.resource.bundle.reload.confirm"))); reloadResourceBundlesButton.setEnabled(!StringUtils.isBlank(app.getResourceBundle())); form.add(reloadResourceBundlesButton); Button refreshSearchIndexButton = new Button("refreshSearchIndex", new ResourceModel("pam.details.search.index.refresh")) { @Override public void onSubmit() { FeedbackPanel feed = (FeedbackPanel) getPage().get("feedback"); try { SearchEngine searchEngine = ((AbstractAdminWebApplication) getApplication()).getServiceLocator() .getSearchEngine(); PortletRegistry registry = ((AbstractAdminWebApplication) getApplication()).getServiceLocator() .getPortletRegistry(); PortletApplication app = registry.getPortletApplication(paNodeBean.getApplicationName()); List<PortletDefinition> portletDefList = app.getPortlets(); List<Object> list = new ArrayList<Object>(); list.addAll(portletDefList); list.add(app); searchEngine.remove(list); list.clear(); list.add(app); list.addAll(portletDefList); searchEngine.add(list); } catch (Exception e) { logger.error("Failed to refresh the search index of application.", e); StringResourceModel resModel = new StringResourceModel( "pam.details.action.status.search.index.refreshFailure", this, null, new Object[] { paNodeBean.getApplicationName(), e.getMessage() }); feed.info(resModel.getString()); } } }; refreshSearchIndexButton.add(new JavascriptEventConfirmation("onclick", new ResourceModel("pam.details.search.index.refresh.confirm"))); refreshSearchIndexButton.setEnabled(true); form.add(refreshSearchIndexButton); add(form); }
From source file:org.apache.jetspeed.portlets.prm.portlet.PreferencePanel.java
License:Apache License
@Override public Iterator<IModel<Preference>> getItemModels() { final JetspeedServiceLocator locator = ((AbstractAdminWebApplication) getApplication()).getServiceLocator(); PortletRegistry registry = locator.getPortletRegistry(); PortletApplication app = registry.getPortletApplication(paNodeBean.getApplicationName()); PortletDefinition def = PortletApplicationUtils.getPortletOrClone(app, paNodeBean.getName()); curPrefs = def.getPortletPreferences().getPortletPreferences(); return new ModelIteratorAdapter<Preference>(curPrefs.iterator()) { @Override//from w w w . j a v a2 s . c om protected IModel<Preference> model(Preference preference) { return new PreferenceModel(locator, paNodeBean, preference); } }; }