List of usage examples for org.apache.wicket.markup.html.list ListView setReuseItems
public ListView<T> setReuseItems(boolean reuseItems)
From source file:com.evolveum.midpoint.web.component.prism.show.ScenePanel.java
License:Apache License
private void initLayout() { final IModel<SceneDto> model = getModel(); WebMarkupContainer box = new WebMarkupContainer(ID_BOX); box.add(AttributeModifier.append("class", new AbstractReadOnlyModel<String>() { @Override/* w w w. j a v a 2s . c o m*/ public String getObject() { SceneDto dto = model.getObject(); if (dto.getBoxClassOverride() != null) { return dto.getBoxClassOverride(); } if (dto.getChangeType() == null) { return null; } switch (dto.getChangeType()) { case ADD: return "box-success"; case DELETE: return "box-danger"; case MODIFY: return "box-info"; default: return null; } } })); add(box); WebMarkupContainer headerPanel = new WebMarkupContainer(ID_HEADER_PANEL); box.add(headerPanel); headerPanel.add(new SceneButtonPanel(ID_OPTION_BUTTONS, model) { @Override public void minimizeOnClick(AjaxRequestTarget target) { headerOnClickPerformed(target, model); } }); Label headerChangeType = new Label(ID_HEADER_CHANGE_TYPE, new ChangeTypeModel()); //headerChangeType.setRenderBodyOnly(true); Label headerObjectType = new Label(ID_HEADER_OBJECT_TYPE, new ObjectTypeModel()); //headerObjectType.setRenderBodyOnly(true); IModel<String> nameModel = new AbstractReadOnlyModel<String>() { @Override public String getObject() { return model.getObject().getName(ScenePanel.this); } }; Label headerNameLabel = new Label(ID_HEADER_NAME_LABEL, nameModel); LinkPanel headerNameLink = new LinkPanel(ID_HEADER_NAME_LINK, nameModel) { @Override public void onClick(AjaxRequestTarget target) { PrismContainerValue<?> value = getModelObject().getScene().getSourceValue(); if (value != null && value.getParent() instanceof PrismObject) { PrismObject<? extends ObjectType> object = (PrismObject<? extends ObjectType>) value .getParent(); WebComponentUtil.dispatchToObjectDetailsPage(ObjectTypeUtil.createObjectRef(object), getPageBase(), false); } } }; Label headerDescription = new Label(ID_HEADER_DESCRIPTION, new AbstractReadOnlyModel<String>() { @Override public String getObject() { return model.getObject().getDescription(ScenePanel.this); } }); Label headerWrapperDisplayName = new Label(ID_HEADER_WRAPPER_DISPLAY_NAME, new AbstractReadOnlyModel<String>() { @Override public String getObject() { String key = ((WrapperScene) getModelObject().getScene()).getDisplayNameKey(); Object[] parameters = ((WrapperScene) getModelObject().getScene()) .getDisplayNameParameters(); return new StringResourceModel(key, this).setModel(null).setDefaultValue(key) .setParameters(parameters).getObject(); } }); headerPanel.add(headerChangeType); headerPanel.add(headerObjectType); headerPanel.add(headerNameLabel); headerPanel.add(headerNameLink); headerPanel.add(headerDescription); headerPanel.add(headerWrapperDisplayName); headerChangeType.add(createHeaderOnClickBehaviour(model)); headerObjectType.add(createHeaderOnClickBehaviour(model)); headerNameLabel.add(createHeaderOnClickBehaviour(model)); headerDescription.add(createHeaderOnClickBehaviour(model)); headerWrapperDisplayName.add(createHeaderOnClickBehaviour(model)); VisibleEnableBehaviour visibleIfNotWrapper = new VisibleEnableBehaviour() { @Override public boolean isVisible() { return !getModelObject().isWrapper(); } }; VisibleEnableBehaviour visibleIfWrapper = new VisibleEnableBehaviour() { @Override public boolean isVisible() { return getModelObject().isWrapper(); } }; VisibleEnableBehaviour visibleIfExistingObject = new VisibleEnableBehaviour() { @Override public boolean isVisible() { if (getModelObject().isWrapper()) { return false; } return isExistingViewableObject(); } }; VisibleEnableBehaviour visibleIfNotWrapperAndNotExistingObject = new VisibleEnableBehaviour() { @Override public boolean isVisible() { if (getModelObject().isWrapper()) { return false; } return !isExistingViewableObject(); } }; headerChangeType.add(visibleIfNotWrapper); headerObjectType.add(visibleIfNotWrapper); headerNameLabel.add(visibleIfNotWrapperAndNotExistingObject); headerNameLink.add(visibleIfExistingObject); headerDescription.add(visibleIfNotWrapper); headerWrapperDisplayName.add(visibleIfWrapper); WebMarkupContainer body = new WebMarkupContainer(ID_BODY); body.add(new VisibleEnableBehaviour() { @Override public boolean isVisible() { SceneDto wrapper = model.getObject(); return !wrapper.isMinimized(); } }); box.add(body); WebMarkupContainer itemsTable = new WebMarkupContainer(ID_ITEMS_TABLE); itemsTable.add(new VisibleEnableBehaviour() { @Override public boolean isVisible() { return !model.getObject().getItems().isEmpty(); } }); WebMarkupContainer oldValueLabel = new WebMarkupContainer(ID_OLD_VALUE_LABEL); oldValueLabel.add(new VisibleEnableBehaviour() { @Override public boolean isVisible() { return model.getObject().containsDeltaItems(); } }); itemsTable.add(oldValueLabel); WebMarkupContainer newValueLabel = new WebMarkupContainer(ID_NEW_VALUE_LABEL); newValueLabel.add(new VisibleEnableBehaviour() { @Override public boolean isVisible() { return model.getObject().containsDeltaItems(); } }); itemsTable.add(newValueLabel); WebMarkupContainer valueLabel = new WebMarkupContainer(ID_VALUE_LABEL); valueLabel.add(new VisibleEnableBehaviour() { @Override public boolean isVisible() { return !model.getObject().containsDeltaItems(); } }); itemsTable.add(valueLabel); ListView<SceneItemDto> items = new ListView<SceneItemDto>(ID_ITEMS, new PropertyModel<List<SceneItemDto>>(model, SceneDto.F_ITEMS)) { @Override protected void populateItem(ListItem<SceneItemDto> item) { SceneItemPanel panel = new SceneItemPanel(ID_ITEM, item.getModel()); panel.setRenderBodyOnly(true); item.add(panel); } }; items.setReuseItems(true); itemsTable.add(items); body.add(itemsTable); ListView<SceneDto> partialScenes = new ListView<SceneDto>(ID_PARTIAL_SCENES, new PropertyModel<List<SceneDto>>(model, SceneDto.F_PARTIAL_SCENES)) { @Override protected void populateItem(ListItem<SceneDto> item) { ScenePanel panel = new ScenePanel(ID_PARTIAL_SCENE, item.getModel()); panel.setOutputMarkupPlaceholderTag(true); item.add(panel); } }; partialScenes.setReuseItems(true); body.add(partialScenes); }
From source file:com.gitblit.wicket.pages.EditRepositoryPage.java
License:Apache License
protected void setupPage(RepositoryModel model) { this.repositoryModel = model; // ensure this user can create or edit this repository checkPermissions(repositoryModel);/*from w w w . j av a2 s.c o m*/ List<String> indexedBranches = new ArrayList<String>(); List<String> federationSets = new ArrayList<String>(); final List<RegistrantAccessPermission> repositoryUsers = new ArrayList<RegistrantAccessPermission>(); final List<RegistrantAccessPermission> repositoryTeams = new ArrayList<RegistrantAccessPermission>(); List<String> preReceiveScripts = new ArrayList<String>(); List<String> postReceiveScripts = new ArrayList<String>(); GitBlitWebSession session = GitBlitWebSession.get(); final UserModel user = session.getUser() == null ? UserModel.ANONYMOUS : session.getUser(); final boolean allowEditName = isCreate || isAdmin || repositoryModel.isUsersPersonalRepository(user.username); if (isCreate) { if (user.canAdmin()) { super.setupPage(getString("gb.newRepository"), ""); } else { super.setupPage(getString("gb.newRepository"), user.getDisplayName()); } } else { super.setupPage(getString("gb.edit"), repositoryModel.name); repositoryUsers.addAll(app().repositories().getUserAccessPermissions(repositoryModel)); repositoryTeams.addAll(app().repositories().getTeamAccessPermissions(repositoryModel)); Collections.sort(repositoryUsers); Collections.sort(repositoryTeams); federationSets.addAll(repositoryModel.federationSets); if (!ArrayUtils.isEmpty(repositoryModel.indexedBranches)) { indexedBranches.addAll(repositoryModel.indexedBranches); } } final String oldName = repositoryModel.name; final RegistrantPermissionsPanel usersPalette = new RegistrantPermissionsPanel("users", RegistrantType.USER, app().users().getAllUsernames(), repositoryUsers, getAccessPermissions()); final RegistrantPermissionsPanel teamsPalette = new RegistrantPermissionsPanel("teams", RegistrantType.TEAM, app().users().getAllTeamNames(), repositoryTeams, getAccessPermissions()); // owners palette List<UserChoice> owners = new ArrayList<UserChoice>(); List<UserChoice> persons = new ArrayList<UserChoice>(); for (String owner : repositoryModel.owners) { UserModel o = app().users().getUserModel(owner); if (o != null) { owners.add(new UserChoice(o.getDisplayName(), o.username, o.emailAddress)); } else { UserChoice userChoice = new UserChoice(owner); owners.add(userChoice); persons.add(userChoice); } } for (String person : app().users().getAllUsernames()) { UserModel o = app().users().getUserModel(person); if (o != null) { persons.add(new UserChoice(o.getDisplayName(), o.username, o.emailAddress)); } else { persons.add(new UserChoice(person)); } } final Palette<UserChoice> ownersPalette = new Palette<UserChoice>("owners", new ListModel<UserChoice>(owners), new CollectionModel<UserChoice>(persons), new ChoiceRenderer<UserChoice>(null, "userId"), 12, false); // indexed local branches palette List<String> allLocalBranches = new ArrayList<String>(); allLocalBranches.add(Constants.DEFAULT_BRANCH); allLocalBranches.addAll(repositoryModel.getLocalBranches()); boolean luceneEnabled = app().settings().getBoolean(Keys.web.allowLuceneIndexing, true); final Palette<String> indexedBranchesPalette = new Palette<String>("indexedBranches", new ListModel<String>(indexedBranches), new CollectionModel<String>(allLocalBranches), new StringChoiceRenderer(), 8, false); indexedBranchesPalette.setEnabled(luceneEnabled); // federation sets palette List<String> sets = app().settings().getStrings(Keys.federation.sets); final Palette<String> federationSetsPalette = new Palette<String>("federationSets", new ListModel<String>(federationSets), new CollectionModel<String>(sets), new StringChoiceRenderer(), 8, false); // pre-receive palette if (!ArrayUtils.isEmpty(repositoryModel.preReceiveScripts)) { preReceiveScripts.addAll(repositoryModel.preReceiveScripts); } final Palette<String> preReceivePalette = new Palette<String>("preReceiveScripts", new ListModel<String>(preReceiveScripts), new CollectionModel<String>(app().repositories().getPreReceiveScriptsUnused(repositoryModel)), new StringChoiceRenderer(), 12, true); // post-receive palette if (!ArrayUtils.isEmpty(repositoryModel.postReceiveScripts)) { postReceiveScripts.addAll(repositoryModel.postReceiveScripts); } final Palette<String> postReceivePalette = new Palette<String>("postReceiveScripts", new ListModel<String>(postReceiveScripts), new CollectionModel<String>(app().repositories().getPostReceiveScriptsUnused(repositoryModel)), new StringChoiceRenderer(), 12, true); // custom fields final Map<String, String> customFieldsMap = app().settings().getMap(Keys.groovy.customFields); List<String> customKeys = new ArrayList<String>(customFieldsMap.keySet()); final ListView<String> customFieldsListView = new ListView<String>("customFieldsListView", customKeys) { private static final long serialVersionUID = 1L; @Override protected void populateItem(ListItem<String> item) { String key = item.getModelObject(); item.add(new Label("customFieldLabel", customFieldsMap.get(key))); String value = ""; if (repositoryModel.customFields != null && repositoryModel.customFields.containsKey(key)) { value = repositoryModel.customFields.get(key); } TextField<String> field = new TextField<String>("customFieldValue", new Model<String>(value)); item.add(field); } }; customFieldsListView.setReuseItems(true); CompoundPropertyModel<RepositoryModel> rModel = new CompoundPropertyModel<RepositoryModel>(repositoryModel); Form<RepositoryModel> form = new Form<RepositoryModel>("editForm", rModel) { private static final long serialVersionUID = 1L; @Override protected void onSubmit() { try { if (!namePanel.updateModel(repositoryModel)) { return; } // confirm access restriction selection if (repositoryModel.accessRestriction == null) { error(getString("gb.selectAccessRestriction")); return; } // confirm federation strategy selection if (repositoryModel.federationStrategy == null) { error(getString("gb.selectFederationStrategy")); return; } // save federation set preferences if (repositoryModel.federationStrategy.exceeds(FederationStrategy.EXCLUDE)) { repositoryModel.federationSets.clear(); Iterator<String> sets = federationSetsPalette.getSelectedChoices(); while (sets.hasNext()) { repositoryModel.federationSets.add(sets.next()); } } // set author metric exclusions String ax = metricAuthorExclusions.getObject(); if (StringUtils.isEmpty(ax)) { repositoryModel.metricAuthorExclusions = new ArrayList<String>(); } else { Set<String> list = new HashSet<String>(); for (String exclusion : StringUtils.getStringsFromValue(ax, " ")) { if (StringUtils.isEmpty(exclusion)) { continue; } if (exclusion.indexOf(' ') > -1) { list.add("\"" + exclusion + "\""); } else { list.add(exclusion); } } repositoryModel.metricAuthorExclusions = new ArrayList<String>(list); } // set mailing lists String ml = mailingLists.getObject(); if (StringUtils.isEmpty(ml)) { repositoryModel.mailingLists = new ArrayList<String>(); } else { Set<String> list = new HashSet<String>(); for (String address : ml.split("(,|\\s)")) { if (StringUtils.isEmpty(address)) { continue; } list.add(address.toLowerCase()); } repositoryModel.mailingLists = new ArrayList<String>(list); } // indexed branches List<String> indexedBranches = new ArrayList<String>(); Iterator<String> branches = indexedBranchesPalette.getSelectedChoices(); while (branches.hasNext()) { indexedBranches.add(branches.next()); } repositoryModel.indexedBranches = indexedBranches; // owners repositoryModel.owners.clear(); Iterator<UserChoice> owners = ownersPalette.getSelectedChoices(); while (owners.hasNext()) { repositoryModel.addOwner(owners.next().getUserId()); } // pre-receive scripts List<String> preReceiveScripts = new ArrayList<String>(); Iterator<String> pres = preReceivePalette.getSelectedChoices(); while (pres.hasNext()) { preReceiveScripts.add(pres.next()); } repositoryModel.preReceiveScripts = preReceiveScripts; // post-receive scripts List<String> postReceiveScripts = new ArrayList<String>(); Iterator<String> post = postReceivePalette.getSelectedChoices(); while (post.hasNext()) { postReceiveScripts.add(post.next()); } repositoryModel.postReceiveScripts = postReceiveScripts; // custom fields repositoryModel.customFields = new LinkedHashMap<String, String>(); Iterator<Component> customFieldsListViewIterator = customFieldsListView.iterator(); while (customFieldsListViewIterator.hasNext()) { ListItem<String> child = (ListItem<String>) customFieldsListViewIterator.next(); String key = child.getModelObject(); TextField<String> field = (TextField<String>) child.get("customFieldValue"); String value = field.getValue(); repositoryModel.customFields.put(key, value); } // save the repository app().gitblit().updateRepositoryModel(oldName, repositoryModel, isCreate); // repository access permissions if (repositoryModel.accessRestriction.exceeds(AccessRestrictionType.NONE)) { app().gitblit().setUserAccessPermissions(repositoryModel, repositoryUsers); app().gitblit().setTeamAccessPermissions(repositoryModel, repositoryTeams); } } catch (GitBlitException e) { error(e.getMessage()); return; } setResponsePage(SummaryPage.class, WicketUtils.newRepositoryParameter(repositoryModel.name)); } }; // Determine available refs & branches List<String> availableRefs = new ArrayList<String>(); List<String> availableBranches = new ArrayList<String>(); if (!ArrayUtils.isEmpty(repositoryModel.availableRefs)) { for (String ref : repositoryModel.availableRefs) { if (!ref.startsWith(Constants.R_TICKET)) { availableRefs.add(ref); if (ref.startsWith(Constants.R_HEADS)) { availableBranches.add(Repository.shortenRefName(ref)); } } } } // do not let the browser pre-populate these fields form.add(new AttributeModifier("autocomplete", "off")); // // // GENERAL // namePanel = new RepositoryNamePanel("namePanel", repositoryModel); namePanel.setEditable(allowEditName); form.add(namePanel); // XXX AccessPolicyPanel is defined later. form.add(new ChoiceOption<String>("head", getString("gb.headRef"), getString("gb.headRefDescription"), new PropertyModel<String>(repositoryModel, "HEAD"), availableRefs)); // // PERMISSIONS // form.add(ownersPalette); form.add(usersPalette); form.add(teamsPalette); // // TICKETS // form.add(new BooleanOption("acceptNewPatchsets", getString("gb.acceptNewPatchsets"), getString("gb.acceptNewPatchsetsDescription"), new PropertyModel<Boolean>(repositoryModel, "acceptNewPatchsets"))); form.add(new BooleanOption("acceptNewTickets", getString("gb.acceptNewTickets"), getString("gb.acceptNewTicketsDescription"), new PropertyModel<Boolean>(repositoryModel, "acceptNewTickets"))); form.add(new BooleanOption("requireApproval", getString("gb.requireApproval"), getString("gb.requireApprovalDescription"), new PropertyModel<Boolean>(repositoryModel, "requireApproval"))); form.add(new ChoiceOption<String>("mergeTo", getString("gb.mergeTo"), getString("gb.mergeToDescription"), new PropertyModel<String>(repositoryModel, "mergeTo"), availableBranches)); form.add(new ChoiceOption<MergeType>("mergeType", getString("gb.mergeType"), getString("gb.mergeTypeDescription"), new PropertyModel<MergeType>(repositoryModel, "mergeType"), Arrays.asList(MergeType.values()))); // // RECEIVE // form.add(new BooleanOption("isFrozen", getString("gb.isFrozen"), getString("gb.isFrozenDescription"), new PropertyModel<Boolean>(repositoryModel, "isFrozen"))); form.add(new BooleanOption("incrementalPushTags", getString("gb.enableIncrementalPushTags"), getString("gb.useIncrementalPushTagsDescription"), new PropertyModel<Boolean>(repositoryModel, "useIncrementalPushTags"))); final CheckBox verifyCommitter = new CheckBox("checkbox", new PropertyModel<Boolean>(repositoryModel, "verifyCommitter")); verifyCommitter.setOutputMarkupId(true); form.add(new BooleanOption("verifyCommitter", getString("gb.verifyCommitter"), getString("gb.verifyCommitterDescription") + "<br/>" + getString("gb.verifyCommitterNote"), verifyCommitter).setIsHtmlDescription(true)); form.add(preReceivePalette); form.add(new BulletListPanel("inheritedPreReceive", getString("gb.inherited"), app().repositories().getPreReceiveScriptsInherited(repositoryModel))); form.add(postReceivePalette); form.add(new BulletListPanel("inheritedPostReceive", getString("gb.inherited"), app().repositories().getPostReceiveScriptsInherited(repositoryModel))); WebMarkupContainer customFieldsSection = new WebMarkupContainer("customFieldsSection"); customFieldsSection.add(customFieldsListView); form.add(customFieldsSection .setVisible(!app().settings().getString(Keys.groovy.customFields, "").isEmpty())); // // FEDERATION // List<FederationStrategy> federationStrategies = new ArrayList<FederationStrategy>( Arrays.asList(FederationStrategy.values())); // federation strategies - remove ORIGIN choice if this repository has no origin. if (StringUtils.isEmpty(repositoryModel.origin)) { federationStrategies.remove(FederationStrategy.FEDERATE_ORIGIN); } form.add(new ChoiceOption<FederationStrategy>("federationStrategy", getString("gb.federationStrategy"), getString("gb.federationStrategyDescription"), new DropDownChoice<FederationStrategy>("choice", new PropertyModel<FederationStrategy>(repositoryModel, "federationStrategy"), federationStrategies, new FederationTypeRenderer()))); form.add(federationSetsPalette); // // SEARCH // form.add(indexedBranchesPalette); // // GARBAGE COLLECTION // boolean gcEnabled = app().settings().getBoolean(Keys.git.enableGarbageCollection, false); int defaultGcPeriod = app().settings().getInteger(Keys.git.defaultGarbageCollectionPeriod, 7); if (repositoryModel.gcPeriod == 0) { repositoryModel.gcPeriod = defaultGcPeriod; } List<Integer> gcPeriods = Arrays.asList(1, 2, 3, 4, 5, 7, 10, 14); form.add(new ChoiceOption<Integer>("gcPeriod", getString("gb.gcPeriod"), getString("gb.gcPeriodDescription"), new DropDownChoice<Integer>("choice", new PropertyModel<Integer>(repositoryModel, "gcPeriod"), gcPeriods, new GCPeriodRenderer())) .setEnabled(gcEnabled)); form.add(new TextOption("gcThreshold", getString("gb.gcThreshold"), getString("gb.gcThresholdDescription"), "span1", new PropertyModel<String>(repositoryModel, "gcThreshold")).setEnabled(gcEnabled)); // // MISCELLANEOUS // form.add(new TextOption("origin", getString("gb.origin"), getString("gb.originDescription"), "span6", new PropertyModel<String>(repositoryModel, "origin")).setEnabled(false)); form.add(new BooleanOption("showRemoteBranches", getString("gb.showRemoteBranches"), getString("gb.showRemoteBranchesDescription"), new PropertyModel<Boolean>(repositoryModel, "showRemoteBranches"))); form.add(new BooleanOption("skipSizeCalculation", getString("gb.skipSizeCalculation"), getString("gb.skipSizeCalculationDescription"), new PropertyModel<Boolean>(repositoryModel, "skipSizeCalculation"))); form.add(new BooleanOption("skipSummaryMetrics", getString("gb.skipSummaryMetrics"), getString("gb.skipSummaryMetricsDescription"), new PropertyModel<Boolean>(repositoryModel, "skipSummaryMetrics"))); List<Integer> maxActivityCommits = Arrays.asList(-1, 0, 25, 50, 75, 100, 150, 200, 250, 500); form.add(new ChoiceOption<Integer>("maxActivityCommits", getString("gb.maxActivityCommits"), getString("gb.maxActivityCommitsDescription"), new DropDownChoice<Integer>("choice", new PropertyModel<Integer>(repositoryModel, "maxActivityCommits"), maxActivityCommits, new MaxActivityCommitsRenderer()))); List<CommitMessageRenderer> renderers = Arrays.asList(CommitMessageRenderer.values()); form.add(new ChoiceOption<CommitMessageRenderer>("commitMessageRenderer", getString("gb.commitMessageRenderer"), getString("gb.commitMessageRendererDescription"), new DropDownChoice<CommitMessageRenderer>("choice", new PropertyModel<CommitMessageRenderer>(repositoryModel, "commitMessageRenderer"), renderers))); metricAuthorExclusions = new Model<String>(ArrayUtils.isEmpty(repositoryModel.metricAuthorExclusions) ? "" : StringUtils.flattenStrings(repositoryModel.metricAuthorExclusions, " ")); form.add(new TextOption("metricAuthorExclusions", getString("gb.metricAuthorExclusions"), getString("gb.metricAuthorExclusions"), "span6", metricAuthorExclusions)); mailingLists = new Model<String>(ArrayUtils.isEmpty(repositoryModel.mailingLists) ? "" : StringUtils.flattenStrings(repositoryModel.mailingLists, " ")); form.add(new TextOption("mailingLists", getString("gb.mailingLists"), getString("gb.mailingLists"), "span6", mailingLists)); // initial enable/disable of permission controls if (repositoryModel.accessRestriction.equals(AccessRestrictionType.NONE)) { // anonymous everything, disable all controls usersPalette.setEnabled(false); teamsPalette.setEnabled(false); verifyCommitter.setEnabled(false); } else { // authenticated something // enable authorization controls verifyCommitter.setEnabled(true); boolean allowFineGrainedControls = repositoryModel.authorizationControl .equals(AuthorizationControl.NAMED); usersPalette.setEnabled(allowFineGrainedControls); teamsPalette.setEnabled(allowFineGrainedControls); } // // ACCESS POLICY PANEL (GENERAL) // AjaxFormChoiceComponentUpdatingBehavior callback = new AjaxFormChoiceComponentUpdatingBehavior() { private static final long serialVersionUID = 1L; @Override protected void onUpdate(AjaxRequestTarget target) { accessPolicyPanel.updateModel(repositoryModel); boolean allowAuthorizationControl = repositoryModel.accessRestriction .exceeds(AccessRestrictionType.NONE); verifyCommitter.setEnabled(allowAuthorizationControl); boolean allowFineGrainedControls = allowAuthorizationControl && repositoryModel.authorizationControl.equals(AuthorizationControl.NAMED); usersPalette.setEnabled(allowFineGrainedControls); teamsPalette.setEnabled(allowFineGrainedControls); if (allowFineGrainedControls) { repositoryModel.authorizationControl = AuthorizationControl.NAMED; } target.add(verifyCommitter); target.add(usersPalette); target.add(teamsPalette); } }; accessPolicyPanel = new AccessPolicyPanel("accessPolicyPanel", repositoryModel, callback); form.add(accessPolicyPanel); // // FORM CONTROLS // form.add(new Button("save")); Button cancel = new Button("cancel") { private static final long serialVersionUID = 1L; @Override public void onSubmit() { if (isCreate) { setResponsePage(RepositoriesPage.class); } else { setResponsePage(SummaryPage.class, WicketUtils.newRepositoryParameter(repositoryModel.name)); } } }; cancel.setDefaultFormProcessing(false); form.add(cancel); // the user can delete if deletions are allowed AND the user is an admin or the personal owner // assigned ownership is not sufficient to allow deletion boolean canDelete = !isCreate && app().repositories().canDelete(repositoryModel) && (user.canAdmin() || user.isMyPersonalRepository(repositoryModel.name)); Link<Void> delete = new Link<Void>("delete") { private static final long serialVersionUID = 1L; @Override public void onClick() { RepositoryModel latestModel = app().repositories().getRepositoryModel(repositoryModel.name); boolean canDelete = app().repositories().canDelete(latestModel); if (canDelete) { if (app().gitblit().deleteRepositoryModel(latestModel)) { info(MessageFormat.format(getString("gb.repositoryDeleted"), latestModel)); if (latestModel.isPersonalRepository()) { // redirect to user's profile page String prefix = app().settings().getString(Keys.git.userRepositoryPrefix, "~"); String username = latestModel.projectPath.substring(prefix.length()); setResponsePage(UserPage.class, WicketUtils.newUsernameParameter(username)); } else { // redirect to server repositories page setResponsePage(RepositoriesPage.class); } } else { error(MessageFormat.format(getString("gb.repositoryDeleteFailed"), latestModel)); } } else { error(MessageFormat.format(getString("gb.repositoryDeleteFailed"), latestModel)); } } }; if (canDelete) { delete.add(new JavascriptEventConfirmation("click", MessageFormat.format(getString("gb.deleteRepository"), repositoryModel))); } form.add(delete.setVisible(canDelete)); add(form); }
From source file:com.googlecode.ounit.MainPage.java
License:Open Source License
public MainPage(PageParameters parameters) { super(parameters); log.debug("MainPage()"); if (getOunitSession() == null) throw new RuntimeException("No model attached to the page"); if (!getOunitSession().isPrepared()) { throw new RuntimeException("Main page requires a prepared session"); }/*w w w . j a v a 2s . com*/ WebMarkupContainer quizPanel = new WebMarkupContainer("questiondiv"); mainForm.add(quizPanel); quizPanel .add(new QuizStateAttributeModifier(getOunitModel(), "class", "ou-question", "ou-closed-question")); final Component description = new HtmlFile("description"); quizPanel.add(description); quizPanel.add(new AnchorLink("descriptionlink", description)); final Component results = new HtmlFile("resultsFile"); quizPanel.add(results); quizPanel.add(new WebMarkupContainer("resultscaption") { private static final long serialVersionUID = 1L; protected void onConfigure() { super.onConfigure(); results.configure(); setVisible(results.isVisible()); }; }.add(new AnchorLink("resultslink", results))); /* * Generate TextAreas first, because we need editor objects as anchors * for the links */ ListView<ProjectTreeNode> lv = new ListView<ProjectTreeNode>("editors") { private static final long serialVersionUID = 1L; protected void populateItem(ListItem<ProjectTreeNode> item) { ProjectTreeNode node = item.getModelObject(); node.setEditor(item); TextArea<ProjectTreeNode> ta = new TextArea<ProjectTreeNode>("editorarea", new PropertyModel<ProjectTreeNode>(node, "fileContents")); ta.add(AttributeModifier.replace("title", node.getName())); ta.add(new QuizStateAttributeModifier(getOunitModel(), "readonly", null, "readonly")); item.add(ta); item.setOutputMarkupId(true); } }; quizPanel.add(lv); lv.setReuseItems(true); /* Force ListView to populate itself RIGHT NOW so state-less forms can work */ // FIXME: This is an internal function. Maybe implement some hack like this // http://osdir.com/ml/users-wicket.apache.org/2009-02/msg00925.html lv.internalPrepareForRender(false); /* * Populate tab header links */ quizPanel.add(new ListView<ProjectTreeNode>("editorcaptions") { private static final long serialVersionUID = 1L; protected void populateItem(ListItem<ProjectTreeNode> item) { ProjectTreeNode node = item.getModelObject(); item.add(new AnchorLink("editorlink", node.getEditor(), node.getName())); } }.setReuseItems(true)); final Component tree = new ExplorerTreePanel("tree"); quizPanel.add(tree); quizPanel.add(new WebMarkupContainer("treecaption") { private static final long serialVersionUID = 1L; @Override protected void onConfigure() { super.onConfigure(); tree.configure(); setVisible(tree.isVisible()); } }); // FIXME: We shouldn't access it directly. Should use model or something quizPanel.add(new QuestionDownloadLink("download")); mainForm.add(new Button("compile") { private static final long serialVersionUID = 1L; @Override protected void onConfigure() { super.onConfigure(); setVisible(!getOunitSession().isClosed()); } @Override public void onSubmit() { // FIXME: This is a hack that should go away as soon as sessions // start working properly redirected = true; setResponsePage(MainPage.class); OunitSession sess = getOunitSession(); // Check if student is out of attempts int attempt = sess.getAttempt(); int maxAttempts = sess.getMaxAttempts(); if (maxAttempts > 0) { if (attempt >= maxAttempts) sess.setClosed(true); /* * Skip build if out of attempts. This is a sanity check, it * shouldn't happen under normal circumstances */ if (attempt > maxAttempts) return; } sess.setAttempt(attempt + 1); boolean buildSuccessful = sess.build(); int marks = sess.getMarks(); if (marks == sess.getMaxMarks()) { // Max marks, grade NOW! sess.setClosed(true); } if (!buildSuccessful && !sess.isClosed()) { // Successful build, ask if student wants a partial grade setResponsePage(ConfirmPage.class); } } }); mainForm.add(new Label("attempt")); mainForm.add(new Label("maxAttempts") { private static final long serialVersionUID = 1L; @Override protected void onConfigure() { super.onConfigure(); if (getOunitSession().isClosed()) { setVisible(false); } else { setVisible(getOunitSession().getMaxAttempts() > 0); } } }); }
From source file:com.swordlord.gozer.components.wicket.action.button.detail.GWDetailPanelActionToolbar.java
License:Open Source License
public GWDetailPanelActionToolbar(String name, IModel<GWContext> model, GDetail detail, final Form<?> form) { super(name, model); _detail = detail;/* ww w .j a v a2 s. c o m*/ final GWContext context = getGWContext(); final GozerController gc = context.getFrameExtension().getGozerController(); List<GActionBase> actions = getKnownActions(); ListView<GActionBase> listView = new ListView<GActionBase>("eachAction", actions) { @Override protected void populateItem(ListItem<GActionBase> item) { GActionBase ob = item.getModelObject(); if (ob.getClass().equals(GNewAction.class)) { item.add(new GWNewButton(ACTION_WICKET_ID, gc, ob, form)); } else if (ob.getClass().equals(GDeleteAction.class)) { item.add(new GWDeleteButton(ACTION_WICKET_ID, gc, ob, form)); } else if (ob.getClass().equals(GAddAction.class)) { item.add(new GWAddButton(ACTION_WICKET_ID, gc, ob, form)); } else if (ob.getClass().equals(GRemoveAction.class)) { item.add(new GWRemoveButton(ACTION_WICKET_ID, gc, ob, form)); } else if (ob.getClass().equals(GToggleAction.class)) { item.add(new GWSwitchToListButton(ACTION_WICKET_ID, gc, ob)); } else if (ob.getClass().equals(GFirstAction.class)) { item.add(new GWFirstButton(ACTION_WICKET_ID, gc, ob)); } else if (ob.getClass().equals(GPrevAction.class)) { item.add(new GWPrevButton(ACTION_WICKET_ID, gc, ob)); } else if (ob.getClass().equals(GNextAction.class)) { item.add(new GWNextButton(ACTION_WICKET_ID, gc, ob)); } else if (ob.getClass().equals(GLastAction.class)) { item.add(new GWLastButton(ACTION_WICKET_ID, gc, ob)); } else if (ob.getClass().equals(GOtherAction.class)) { item.add(new GWOtherButton(ACTION_WICKET_ID, gc, ob, form)); } } }; listView.setReuseItems(true); add(listView); if (actions.size() == 0) { listView.setVisible(false); this.setVisible(false); } }
From source file:com.swordlord.gozer.components.wicket.action.GWActionBox.java
License:Open Source License
/** * @param id/* w w w . j a v a2s. c om*/ * @param model * @param actionBox * @param form */ public GWActionBox(String id, IModel<?> model, GActionBox actionBox, final Form<?> form) { super(id, model); _actionBox = actionBox; final GWContext context = getGWContext(); final GozerController gc = context.getFrameExtension().getGozerController(); final boolean isModal = context.isModal(); List<GActionBase> actions = null; if (!isModal) { actions = filterKnownActions(actionBox, actionBox.getChildren()); } else { actions = getModalActions(actionBox, actionBox.getObjectTree()); } WebMarkupContainer toolbar = new WebMarkupContainer("action_toolbar"); add(toolbar); // validate if this is within an hbox or not if (hasVBoxAsParent(actionBox)) { toolbar.add(new AttributeModifier("class", new Model<String>("actionbox_halve"))); } ListView<GActionBase> listView = new ListView<GActionBase>("eachAction", actions) { @Override protected void populateItem(ListItem<GActionBase> item) { GActionBase ob = item.getModelObject(); if (context.isModal()) { DataBinding dataBinding = new DataBinding(ob); ImageButton panel = new ImageButton(ACTION_WICKET_ID, ""); panel.setEnabled(false); panel.setVisible(false); item.add(panel); if (ob.getClass().equals(GCancelAction.class)) { item.add(new GWModalCancelButton(ACTION_PANEL_WICKET_ID, gc, context, dataBinding)); } else if (ob.getClass().equals(GOKAction.class)) { item.add(new GWModalOKButton(ACTION_PANEL_WICKET_ID, gc, context, dataBinding)); } } else { Panel panel = new EmptyPanel(ACTION_PANEL_WICKET_ID); panel.setEnabled(false); panel.setVisible(false); item.add(panel); if (ob.getClass().equals(GNewAction.class)) { item.add(new GWNewButton(ACTION_WICKET_ID, gc, ob, form)); } else if (ob.getClass().equals(GCancelAction.class)) { item.add(new GWCancelButton(ACTION_WICKET_ID, gc, ob, form)); } else if (ob.getClass().equals(GDeleteAction.class)) { item.add(new GWDeleteButton(ACTION_WICKET_ID, gc, ob, form)); } else if (ob.getClass().equals(GDetailAction.class)) { item.add(new GWDetailButton(ACTION_WICKET_ID, gc, ob)); } else if (ob.getClass().equals(GPersistAction.class)) { item.add(new GWPersistButton(ACTION_WICKET_ID, gc, ob, form)); } else if (ob.getClass().equals(GGoBackAction.class)) { item.add(new GWGoBackButton(ACTION_WICKET_ID, gc, ob)); } else if (ob.getClass().equals(GEditAction.class)) { item.add(new GWEditButton(ACTION_WICKET_ID, gc, ob, form)); } else if (ob.getClass().equals(GFopAction.class)) { item.add(new GWFopButton(ACTION_WICKET_ID, gc, ob)); } else if (ob.getClass().equals(GReportAction.class)) { item.add(new GWReportButton(ACTION_WICKET_ID, gc, (GReportAction) ob)); } else if (ob.getClass().equals(GCsvAction.class)) { item.add(new GWCsvButton(ACTION_WICKET_ID, gc, ob)); } else if (ob.getClass().equals(GAddAction.class)) { item.add(new GWAddButton(ACTION_WICKET_ID, gc, ob, form)); } else if (ob.getClass().equals(GAddReferenceAction.class)) { item.add(new GWAddReferenceButton(ACTION_WICKET_ID, gc, ob, form)); } else if (ob.getClass().equals(GRemoveAction.class)) { item.add(new GWRemoveButton(ACTION_WICKET_ID, gc, ob, form)); } else if (ob.getClass().equals(GOtherAction.class)) { item.add(new GWOtherButton(ACTION_WICKET_ID, gc, ob, form)); } else { LOG.error("Something went completely wrong. There is no check for the current class: " + ob.getClass()); item.add(new WebMarkupContainer(ACTION_WICKET_ID).setVisible(false)); } } } }; listView.setReuseItems(true); toolbar.add(listView); if (actions.size() == 0) { toolbar.setVisible(false); this.setVisible(false); } }
From source file:com.swordlord.gozer.components.wicket.box.GWFrame.java
License:Open Source License
/** * @param id/* w w w .j a va2 s . c om*/ * @param model * @param gozerForm */ public GWFrame(String id, final IModel<?> model, ObjectBase gozerForm) { super(id, model); GWContext context = getGWContext(); context.setFormPanel(this); final SecureForm<Object> form = new SecureForm<Object>("gozerForm"); add(form); final FeedbackPanel feedback = new FeedbackPanel("feedback"); form.add(feedback); // filteredErrorLevels will not be shown in the FeedbackPanel // int[] filteredErrorLevels = new int[]{FeedbackMessage.ERROR}; // feedback.setFilter(new ErrorLevelFeedbackMessageFilter(filteredErrorLevels)); ObjectBase formRoot = gozerForm; ListView<ObjectBase> listView = new ListView<ObjectBase>("eachGuiElem", formRoot.getChildren()) { @Override protected void populateItem(ListItem<ObjectBase> item) { ObjectBase ob = item.getModelObject(); item.add(getPanelFromObjectBase("cell", ob, model, form)); } }; listView.setReuseItems(true); if (formRoot.getChildren().size() == 0) { listView.setVisible(false); } form.add(listView); }
From source file:com.swordlord.gozer.components.wicket.box.GWHBoxPanel.java
License:Open Source License
public GWHBoxPanel(String id, final IModel<?> model, GHBox detail, final Form<?> form) { super(id, model); LinkedList<ObjectBase> childs = detail.getChildrenCloned(); ListView<ObjectBase> listView = new ListView<ObjectBase>("cell", childs) { @Override//from ww w.ja v a 2 s .c o m protected void populateItem(ListItem<ObjectBase> item) { ObjectBase ob = item.getModelObject(); item.add(getPanelFromObjectBase("content", ob, model, form)); } }; listView.setReuseItems(true); add(listView); }
From source file:com.swordlord.gozer.components.wicket.box.GWVBoxPanel.java
License:Open Source License
public GWVBoxPanel(String id, final IModel<?> model, GVBox detail, final Form<?> form) { super(id, model); LinkedList<ObjectBase> childs = detail.getChildrenCloned(); ListView<ObjectBase> listView = new ListView<ObjectBase>("eachGuiElem", childs) { @Override//from w ww . j a v a2 s .com protected void populateItem(ListItem<ObjectBase> item) { ObjectBase ob = item.getModelObject(); item.add(getPanelFromObjectBase("cell", ob, model, form)); } }; listView.setReuseItems(true); add(listView); }
From source file:com.swordlord.gozer.components.wicket.detail.GWDetailPanel.java
License:Open Source License
@SuppressWarnings("unchecked") public GWDetailPanel(String id, IModel model, GDetail detail, final Form<?> form) { super(id, model); final IModel<?> detailModel = getModel(); GWDetailPanelActionToolbar tb = new GWDetailPanelActionToolbar("actionToolbox", model, detail, form); add(tb);/*from ww w . j av a 2 s .c o m*/ LinkedList childs = (LinkedList) detail.getChildren().clone(); for (int i = 0; i < childs.size(); i++) { if (childs.get(i) instanceof GActionToolbar) { childs.remove(i); } } ListView listView = new ListView("eachGuiElem", childs) { @Override protected void populateItem(ListItem item) { ObjectBase formObject = (ObjectBase) item.getModelObject(); String tblName = formObject.getDataBinding().getDataBindingMember().getDataBindingTableName(); String fieldName = formObject.getDataBinding().getDataBindingField().getFieldName(); DataTableBase dtb = formObject.getDataBinding().getDataBindingManager().getDataContainer() .getTableByAbsoluteName("com.swordlord.repository.datatable." + tblName + ".base." + tblName + "DataTableBase"); String[] listOfFields = dtb.getPropertyList(); // TODO re-add EAD Manager //if (!formObject.getClass().equals(GLibraryField.class) && !formObject.getClass().equals(GOneToNField.class) // && !EADManager.instance().isAttributeDefined(listOfFields, tblName, fieldName)) if (!formObject.getClass().equals(GLibraryField.class) && !formObject.getClass().equals(GOneToNField.class)) { String msg = _tr.getString("com.swordlord.sobf.wicket.message", "virutal_attribute_not_defined_db"); msg = MessageFormat.format(msg + " ({0}, {1})", fieldName, tblName); LOG.warn(msg); Label label = new Label("cell", "<td colspan=3><b><font color=red>" + msg + "<br></font></b></td>"); label.setEscapeModelStrings(false); item.add(label); } else { if (formObject.getClass().equals(GField.class)) { final DataBinding dataBinding = formObject.getDataBinding(); final DataBindingField field = dataBinding.getDataBindingField(); if (field.isForeignKey()) { GWDetailFKeyFieldPanel detailFKeyFieldPanel = new GWDetailFKeyFieldPanel("cell", detailModel, (GField) formObject, GWDetailPanel.this); detailFKeyFieldPanel.setRenderBodyOnly(true); // omit the <span> tags, we want to have the <td> // tags of DetailFieldPanel // right after <tr> item.add(detailFKeyFieldPanel); } else if (field.getDataFormat() instanceof DateTypeFormat) { GWDetailDateFieldPanel detailFieldPanel = new GWDetailDateFieldPanel("cell", detailModel, (GField) formObject); detailFieldPanel.setRenderBodyOnly(true); // omit the <span> tags, we want to have the <td> // tags of DetailFieldPanel // right after <tr> item.add(detailFieldPanel); } else if (field.getDataFormat() instanceof BooleanTypeFormat) { GWDetailBooleanFieldPanel detailBooleanFieldPanel = new GWDetailBooleanFieldPanel( "cell", detailModel, (GField) formObject); detailBooleanFieldPanel.setRenderBodyOnly(true); // omit the <span> tags, we want to have the <td> // tags of DetailFieldPanel // right after <tr> item.add(detailBooleanFieldPanel); } else { GWDetailFieldPanel detailFieldPanel = new GWDetailFieldPanel("cell", detailModel, (GField) formObject); detailFieldPanel.setRenderBodyOnly(true); // omit the <span> tags, we want to have the <td> // tags of DetailFieldPanel // right after <tr> item.add(detailFieldPanel); } } else if (formObject.getClass().equals(GLinkField.class)) { GWDetailLinkFieldPanel detailLinkFieldPanel = new GWDetailLinkFieldPanel("cell", detailModel, (GLinkField) formObject); detailLinkFieldPanel.setRenderBodyOnly(true); // omit the <span> tags, we want to have the <td> tags // of DetailFieldPanel // right after <tr> item.add(detailLinkFieldPanel); } else if (formObject.getClass().equals(GCodeField.class)) { GWDetailCodeFieldPanel detailCodeFieldPanel = new GWDetailCodeFieldPanel("cell", detailModel, (GCodeField) formObject); detailCodeFieldPanel.setRenderBodyOnly(true); // omit the <span> tags, we want to have the <td> tags // of DetailFieldPanel // right after <tr> item.add(detailCodeFieldPanel); } else if (formObject.getClass().equals(GPredefinedListField.class)) { GWDetailPredefinedListFieldPanel detailPredefinedListFieldPanel = new GWDetailPredefinedListFieldPanel( "cell", detailModel, (GPredefinedListField) formObject); detailPredefinedListFieldPanel.setRenderBodyOnly(true); // omit the <span> tags, we want to have the <td> tags // of DetailFieldPanel // right after <tr> item.add(detailPredefinedListFieldPanel); } else if (formObject.getClass().equals(GOneToNField.class)) { GWDetailOneToNPanel detailOneToNPanel = new GWDetailOneToNPanel("cell", detailModel, (GOneToNField) formObject, GWDetailPanel.this); detailOneToNPanel.setRenderBodyOnly(true); item.add(detailOneToNPanel); } } } }; listView.setReuseItems(true); add(listView); }
From source file:de.alpharogroup.wicket.components.examples.checkbox.image.CheckboxImageListViewPanel.java
License:Apache License
/** * Instantiates a new checkbox image list view panel. * * @param id// w w w.ja va 2 s . c o m * the id */ public CheckboxImageListViewPanel(final String id) { super(id, null); // add some dummy data final List<ImageCheckboxModelBean> choices = new ArrayList<>(); choices.add(ImageCheckboxModelBean.builder() .imageResource(new PackageResourceReference(LocaleMenuPanel.class, "germany.gif")).build()); choices.add(ImageCheckboxModelBean.builder() .imageResource(new PackageResourceReference(LocaleMenuPanel.class, "britain.gif")).build()); choices.add(ImageCheckboxModelBean.builder() .imageResource(new PackageResourceReference(LocaleMenuPanel.class, "hellas.gif")).build()); final ImageChoicesModelBean imageChoicesModelBean = ImageChoicesModelBean.builder().choices(choices) .build(); final ListView<ImageCheckboxModelBean> listView = new ListView<ImageCheckboxModelBean>("list", imageChoicesModelBean.getChoices()) { /** * The serialVersionUID */ private static final long serialVersionUID = 1L; @Override protected void populateItem(final ListItem<ImageCheckboxModelBean> item) { final ImageCheckboxModelBean wrapper = item.getModelObject(); final CheckBox checkbox = new CheckBox("checkbox", new PropertyModel<>(wrapper, "checked")); checkbox.setOutputMarkupId(true); checkbox.add(new AttributeAppender("name", Model.of("cb"))); item.add(checkbox); item.add(new Image("image", wrapper.getImageResource())); } }; listView.setReuseItems(true); add(listView); }