Example usage for org.apache.wicket.markup.html.list ListView setReuseItems

List of usage examples for org.apache.wicket.markup.html.list ListView setReuseItems

Introduction

In this page you can find the example usage for org.apache.wicket.markup.html.list ListView setReuseItems.

Prototype

public ListView<T> setReuseItems(boolean reuseItems) 

Source Link

Document

If true re-rendering the list view is more efficient if the windows doesn't get changed at all or if it gets scrolled (compared to paging).

Usage

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