Example usage for org.apache.wicket Component add

List of usage examples for org.apache.wicket Component add

Introduction

In this page you can find the example usage for org.apache.wicket Component add.

Prototype

public Component add(final Behavior... behaviors) 

Source Link

Document

Adds a behavior modifier to the component.

Usage

From source file:com.francetelecom.clara.cloud.presentation.environments.EnvironmentCreatePanel.java

License:Apache License

@Override
protected void onInitialize() {
    super.onInitialize();
    initComponents();//ww w  .  ja v  a  2s  .  c o  m
    envForm.visitChildren(FormComponent.class, new IVisitor<Component, Void>() {
        @Override
        public void component(Component object, IVisit<Void> visit) {
            object.add(new FieldFeedbackDecorator());
            visit.dontGoDeeper();
        }
    });
}

From source file:com.francetelecom.clara.cloud.presentation.environments.EnvironmentDetailsPanel.java

License:Apache License

@Override
protected void onInitialize() {
    this.parentPage = (SelectedEnvironmentPage) getPage();
    initComponents();//from   www .  ja  v  a  2 s .  c om
    envDetailForm.visitChildren(FormComponent.class, new IVisitor<Component, Void>() {
        @Override
        public void component(Component object, IVisit<Void> visit) {
            object.add(new FieldFeedbackDecorator());
            visit.dontGoDeeper();
        }
    });
    super.onInitialize();
}

From source file:com.francetelecom.clara.cloud.presentation.releases.ReleaseCreatePanel.java

License:Apache License

@Override
protected void onInitialize() {
    releaseForm.visitChildren(FormComponent.class, new IVisitor<Component, Void>() {
        @Override/*from  ww  w  .  j a va2 s  .  c  o  m*/
        public void component(Component object, IVisit<Void> visit) {
            object.add(new FieldFeedbackDecorator());
            visit.dontGoDeeper();
        }
    });
    super.onInitialize();
}

From source file:com.gitblit.wicket.pages.BlamePage.java

License:Apache License

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

    final String blobPath = WicketUtils.getPath(params);

    final String blameTypeParam = params.get("blametype").toString(BlameType.COMMIT.toString());
    final BlameType activeBlameType = BlameType.get(blameTypeParam);

    RevCommit commit = getCommit();//from   w  ww.  j  a  va2s  .com

    PathModel pathModel = null;

    List<PathModel> paths = JGitUtils.getFilesInPath(getRepository(), StringUtils.getRootPath(blobPath),
            commit);
    for (PathModel path : paths) {
        if (path.path.equals(blobPath)) {
            pathModel = path;
            break;
        }
    }

    if (pathModel == null) {
        final String notFound = MessageFormat.format("Blame page failed to find {0} in {1} @ {2}", blobPath,
                repositoryName, objectId);
        logger.error(notFound);
        add(new Label("annotation").setVisible(false));
        add(new Label("missingBlob", missingBlob(blobPath, commit)).setEscapeModelStrings(false));
        return;
    }

    if (pathModel.isFilestoreItem()) {
        String rawUrl = JGitUtils.getLfsRepositoryUrl(getContextUrl(), repositoryName,
                pathModel.getFilestoreOid());
        add(new ExternalLink("blobLink", rawUrl));
    } else {
        add(new BookmarkablePageLink<Void>("blobLink", BlobPage.class,
                WicketUtils.newPathParameter(repositoryName, objectId, blobPath)));
    }

    add(new BookmarkablePageLink<Void>("commitLink", CommitPage.class,
            WicketUtils.newObjectParameter(repositoryName, objectId)));
    add(new BookmarkablePageLink<Void>("commitDiffLink", CommitDiffPage.class,
            WicketUtils.newObjectParameter(repositoryName, objectId)));

    // blame page links
    add(new BookmarkablePageLink<Void>("historyLink", HistoryPage.class,
            WicketUtils.newPathParameter(repositoryName, objectId, blobPath)));

    // "Blame by" links
    for (BlameType type : BlameType.values()) {
        String typeString = type.toString();
        PageParameters blameTypePageParam = WicketUtils.newBlameTypeParameter(repositoryName, commit.getName(),
                WicketUtils.getPath(params), typeString);

        String blameByLinkText = "blameBy" + Character.toUpperCase(typeString.charAt(0))
                + typeString.substring(1) + "Link";
        BookmarkablePageLink<Void> blameByPageLink = new BookmarkablePageLink<Void>(blameByLinkText,
                BlamePage.class, blameTypePageParam);

        if (activeBlameType == type) {
            blameByPageLink.add(new AttributeModifier("style", "font-weight:bold;"));
        }

        add(blameByPageLink);
    }

    add(new CommitHeaderPanel("commitHeader", repositoryName, commit));

    add(new PathBreadcrumbsPanel("breadcrumbs", repositoryName, blobPath, objectId));

    String format = app().settings().getString(Keys.web.datetimestampLongFormat, "EEEE, MMMM d, yyyy HH:mm Z");
    final DateFormat df = new SimpleDateFormat(format);
    df.setTimeZone(getTimeZone());

    add(new Label("missingBlob").setVisible(false));

    final int tabLength = app().settings().getInteger(Keys.web.tabLength, 4);
    List<AnnotatedLine> lines = DiffUtils.blame(getRepository(), blobPath, objectId);
    final Map<?, String> colorMap = initializeColors(activeBlameType, lines);
    ListDataProvider<AnnotatedLine> blameDp = new ListDataProvider<AnnotatedLine>(lines);
    DataView<AnnotatedLine> blameView = new DataView<AnnotatedLine>("annotation", blameDp) {
        private static final long serialVersionUID = 1L;
        private String lastCommitId = "";
        private boolean showInitials = true;
        private String zeroId = ObjectId.zeroId().getName();

        @Override
        public void populateItem(final Item<AnnotatedLine> item) {
            final AnnotatedLine entry = item.getModelObject();

            // commit id and author
            if (!lastCommitId.equals(entry.commitId)) {
                lastCommitId = entry.commitId;
                if (zeroId.equals(entry.commitId)) {
                    // unknown commit
                    item.add(new Label("commit", "<?>"));
                    showInitials = false;
                } else {
                    // show the link for first line
                    LinkPanel commitLink = new LinkPanel("commit", null, getShortObjectId(entry.commitId),
                            CommitPage.class, newCommitParameter(entry.commitId));
                    WicketUtils.setHtmlTooltip(commitLink,
                            MessageFormat.format("{0}, {1}", entry.author, df.format(entry.when)));
                    item.add(commitLink);
                    WicketUtils.setCssStyle(item, "border-top: 1px solid #ddd;");
                    showInitials = true;
                }
            } else {
                if (showInitials) {
                    showInitials = false;
                    // show author initials
                    item.add(new Label("commit", getInitials(entry.author)));
                } else {
                    // hide the commit link until the next block
                    item.add(new Label("commit").setVisible(false));
                }
            }

            // line number
            item.add(new Label("line", "" + entry.lineNumber));

            // line content
            String color;
            switch (activeBlameType) {
            case AGE:
                color = colorMap.get(entry.when);
                break;
            case AUTHOR:
                color = colorMap.get(entry.author);
                break;
            default:
                color = colorMap.get(entry.commitId);
                break;
            }
            Component data = new Label("data", StringUtils.escapeForHtml(entry.data, true, tabLength))
                    .setEscapeModelStrings(false);
            data.add(new AttributeModifier("style", "background-color: " + color + ";"));
            item.add(data);
        }
    };
    add(blameView);
}

From source file:com.gitblit.wicket.pages.DocsPage.java

License:Apache License

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

    String objectId = WicketUtils.getObject(params);

    MarkupProcessor processor = new MarkupProcessor(app().settings(), app().xssFilter());

    Repository r = getRepository();/*from   w ww . jav  a2 s .com*/
    UserModel currentUser = (GitBlitWebSession.get().getUser() != null) ? GitBlitWebSession.get().getUser()
            : UserModel.ANONYMOUS;
    final boolean userCanEdit = currentUser.canEdit(getRepositoryModel());

    RevCommit head = JGitUtils.getCommit(r, objectId);
    final String commitId = getBestCommitId(head);

    List<String> extensions = processor.getAllExtensions();
    List<PathModel> paths = JGitUtils.getDocuments(r, extensions);

    List<MarkupDocument> roots = processor.getRootDocs(r, repositoryName, commitId);
    Fragment fragment = null;
    if (roots.isEmpty()) {
        // no identified root documents
        fragment = new Fragment("docs", "noIndexFragment", DocsPage.this);
        setResponsePage(NoDocsPage.class, params);
    } else {
        // root documents, use tabbed ui of index/root and document list
        fragment = new Fragment("docs", "tabsFragment", DocsPage.this);
        ListDataProvider<MarkupDocument> docDp = new ListDataProvider<MarkupDocument>(roots);

        // tab titles
        DataView<MarkupDocument> tabTitles = new DataView<MarkupDocument>("tabTitle", docDp) {
            private static final long serialVersionUID = 1L;
            int counter;

            @Override
            public void populateItem(final Item<MarkupDocument> item) {
                MarkupDocument doc = item.getModelObject();
                String file = StringUtils.getLastPathElement(doc.documentPath);
                file = StringUtils.stripFileExtension(file);
                String name = file.replace('_', ' ').replace('-', ' ');

                ExternalLink link = new ExternalLink("link", "#" + file);
                link.add(new Label("label", name.toUpperCase()).setRenderBodyOnly(true));
                item.add(link);
                if (counter == 0) {
                    counter++;
                    item.add(new AttributeModifier("class", "active"));
                }
            }
        };
        fragment.add(tabTitles);

        // tab content
        DataView<MarkupDocument> tabsView = new DataView<MarkupDocument>("tabContent", docDp) {
            private static final long serialVersionUID = 1L;
            int counter;

            @Override
            public void populateItem(final Item<MarkupDocument> item) {
                MarkupDocument doc = item.getModelObject();

                item.add(new BookmarkablePageLink<Void>("editLink", EditFilePage.class,
                        WicketUtils.newPathParameter(repositoryName, commitId, doc.documentPath))
                                .setEnabled(userCanEdit));

                // document page links               
                item.add(new BookmarkablePageLink<Void>("blameLink", BlamePage.class,
                        WicketUtils.newPathParameter(repositoryName, commitId, doc.documentPath)));
                item.add(new BookmarkablePageLink<Void>("historyLink", HistoryPage.class,
                        WicketUtils.newPathParameter(repositoryName, commitId, doc.documentPath)));
                String rawUrl = RawServlet.asLink(getContextUrl(), repositoryName, commitId, doc.documentPath);
                item.add(new ExternalLink("rawLink", rawUrl));

                // document content
                String file = StringUtils.getLastPathElement(doc.documentPath);
                file = StringUtils.stripFileExtension(file);
                Component content = new Label("content", doc.html).setEscapeModelStrings(false);
                if (!MarkupSyntax.PLAIN.equals(doc.syntax)) {
                    content.add(new AttributeModifier("class", "markdown"));
                }
                item.add(content);
                item.add(new AttributeModifier("id", file));
                if (counter == 0) {
                    counter++;
                    item.add(new AttributeModifier("class", "tab-pane active"));
                }
            }
        };
        fragment.add(tabsView);
    }

    // document list
    final ByteFormat byteFormat = new ByteFormat();
    Fragment docs = new Fragment("documents", "documentsFragment", DocsPage.this);
    ListDataProvider<PathModel> pathsDp = new ListDataProvider<PathModel>(paths);
    DataView<PathModel> pathsView = new DataView<PathModel>("document", pathsDp) {
        private static final long serialVersionUID = 1L;
        int counter;

        @Override
        public void populateItem(final Item<PathModel> item) {
            PathModel entry = item.getModelObject();
            item.add(WicketUtils.newImage("docIcon", "file_world_16x16.png"));
            item.add(new Label("docSize", byteFormat.format(entry.size)));
            item.add(new LinkPanel("docName", "list", StringUtils.stripFileExtension(entry.name), DocPage.class,
                    WicketUtils.newPathParameter(repositoryName, commitId, entry.path)));

            // links
            item.add(new BookmarkablePageLink<Void>("view", DocPage.class,
                    WicketUtils.newPathParameter(repositoryName, commitId, entry.path)));
            item.add(new BookmarkablePageLink<Void>("edit", EditFilePage.class,
                    WicketUtils.newPathParameter(repositoryName, commitId, entry.path))
                            .setEnabled(userCanEdit));
            String rawUrl = RawServlet.asLink(getContextUrl(), repositoryName, commitId, entry.path);
            item.add(new ExternalLink("raw", rawUrl));
            item.add(new BookmarkablePageLink<Void>("blame", BlamePage.class,
                    WicketUtils.newPathParameter(repositoryName, commitId, entry.path)));
            item.add(new BookmarkablePageLink<Void>("history", HistoryPage.class,
                    WicketUtils.newPathParameter(repositoryName, commitId, entry.path)));
            WicketUtils.setAlternatingBackground(item, counter);
            counter++;
        }
    };
    docs.add(pathsView);
    fragment.add(docs);
    add(fragment);
}

From source file:com.gitblit.wicket.pages.TicketsPage.java

License:Apache License

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

    if (!app().tickets().isReady()) {
        // tickets prohibited
        setResponsePage(SummaryPage.class, WicketUtils.newRepositoryParameter(repositoryName));
    } else if (!app().tickets().hasTickets(getRepositoryModel())) {
        // no tickets for this repository
        setResponsePage(NoTicketsPage.class, WicketUtils.newRepositoryParameter(repositoryName));
    } else {/*  w  w w  . j  av  a2s.c om*/
        String id = WicketUtils.getObject(params);
        if (id != null) {
            // view the ticket with the TicketPage
            setResponsePage(TicketPage.class, params);
        }
    }

    // set stateless page preference
    setStatelessHint(true);

    any = new TicketResponsible(getString("gb.any"), "[* TO *]", null);

    UserModel user = GitBlitWebSession.get().getUser();
    boolean isAuthenticated = user != null && user.isAuthenticated;

    final String[] statiiParam = (String[]) params.getValues(Lucene.status.name()).stream()
            .map(StringValue::toString).toArray();
    final String assignedToParam = params.get(Lucene.responsible.name()).toString(null);
    final String milestoneParam = params.get(Lucene.milestone.name()).toString(null);
    final String queryParam = params.get("q").toString(null);
    final String searchParam = params.get("s").toString(null);
    final String sortBy = Lucene.fromString(params.get("sort").toString(Lucene.created.name())).name();
    final boolean desc = !"asc".equals(params.get("direction").toString("desc"));

    // add search form
    add(new TicketSearchForm("ticketSearchForm", repositoryName, searchParam, getClass(), params));

    final String activeQuery;
    if (!StringUtils.isEmpty(searchParam)) {
        activeQuery = searchParam;
    } else if (StringUtils.isEmpty(queryParam)) {
        activeQuery = "";
    } else {
        activeQuery = queryParam;
    }

    // build Lucene query from defaults and request parameters
    QueryBuilder qb = new QueryBuilder(queryParam);
    if (!qb.containsField(Lucene.rid.name())) {
        // specify the repository
        qb.and(Lucene.rid.matches(getRepositoryModel().getRID()));
    }
    if (!qb.containsField(Lucene.responsible.name())) {
        // specify the responsible
        qb.and(Lucene.responsible.matches(assignedToParam));
    }
    if (!qb.containsField(Lucene.milestone.name())) {
        // specify the milestone
        qb.and(Lucene.milestone.matches(milestoneParam));
    }
    if (!qb.containsField(Lucene.status.name()) && !ArrayUtils.isEmpty(statiiParam)) {
        // specify the states
        boolean not = false;
        QueryBuilder q = new QueryBuilder();
        for (String state : statiiParam) {
            if (state.charAt(0) == '!') {
                not = true;
                q.and(Lucene.status.doesNotMatch(state.substring(1)));
            } else {
                q.or(Lucene.status.matches(state));
            }
        }
        if (not) {
            qb.and(q.toString());
        } else {
            qb.and(q.toSubquery().toString());
        }
    }
    final String luceneQuery = qb.build();

    // open milestones
    List<TicketMilestone> milestones = app().tickets().getMilestones(getRepositoryModel(), Status.Open);
    TicketMilestone currentMilestone = null;
    if (!StringUtils.isEmpty(milestoneParam)) {
        for (TicketMilestone tm : milestones) {
            if (tm.name.equals(milestoneParam)) {
                // get the milestone (queries the index)
                currentMilestone = app().tickets().getMilestone(getRepositoryModel(), milestoneParam);
                break;
            }
        }

        if (currentMilestone == null) {
            // milestone not found, create a temporary one
            currentMilestone = new TicketMilestone(milestoneParam);
            String q = QueryBuilder.q(Lucene.rid.matches(getRepositoryModel().getRID()))
                    .and(Lucene.milestone.matches(milestoneParam)).build();
            currentMilestone.tickets = app().tickets().queryFor(q, 1, 0, Lucene.number.name(), true);
            milestones.add(currentMilestone);
        }
    }

    Fragment milestonePanel;
    if (currentMilestone == null) {
        milestonePanel = new Fragment("milestonePanel", "noMilestoneFragment", TicketsPage.this);
        add(milestonePanel);
    } else {
        milestonePanel = new Fragment("milestonePanel", "milestoneProgressFragment", TicketsPage.this);
        milestonePanel.add(new Label("currentMilestone", currentMilestone.name));
        if (currentMilestone.due == null) {
            milestonePanel.add(new Label("currentDueDate", getString("gb.notSpecified")));
        } else {
            milestonePanel.add(WicketUtils.createDateLabel("currentDueDate", currentMilestone.due,
                    GitBlitWebSession.get().getTimezone(), getTimeUtils(), false));
        }
        Label label = new Label("progress");
        WicketUtils.setCssStyle(label, "width:" + currentMilestone.getProgress() + "%;");
        milestonePanel.add(label);

        milestonePanel.add(new LinkPanel("openTickets", null,
                MessageFormat.format(getString("gb.nOpenTickets"), currentMilestone.getOpenTickets()),
                TicketsPage.class,
                queryParameters(null, currentMilestone.name, TicketsUI.openStatii, null, sortBy, desc, 1)));

        milestonePanel.add(new LinkPanel("closedTickets", null,
                MessageFormat.format(getString("gb.nClosedTickets"), currentMilestone.getClosedTickets()),
                TicketsPage.class,
                queryParameters(null, currentMilestone.name, TicketsUI.closedStatii, null, sortBy, desc, 1)));

        milestonePanel.add(new Label("totalTickets",
                MessageFormat.format(getString("gb.nTotalTickets"), currentMilestone.getTotalTickets())));
        add(milestonePanel);
    }

    Fragment milestoneDropdown = new Fragment("milestoneDropdown", "milestoneDropdownFragment",
            TicketsPage.this);
    PageParameters resetMilestone = queryParameters(queryParam, null, statiiParam, assignedToParam, sortBy,
            desc, 1);
    milestoneDropdown.add(new BookmarkablePageLink<Void>("resetMilestone", TicketsPage.class, resetMilestone));

    ListDataProvider<TicketMilestone> milestonesDp = new ListDataProvider<TicketMilestone>(milestones);
    DataView<TicketMilestone> milestonesMenu = new DataView<TicketMilestone>("milestone", milestonesDp) {
        private static final long serialVersionUID = 1L;

        @Override
        public void populateItem(final Item<TicketMilestone> item) {
            final TicketMilestone tm = item.getModelObject();
            PageParameters params = queryParameters(queryParam, tm.name, statiiParam, assignedToParam, sortBy,
                    desc, 1);
            item.add(new LinkPanel("milestoneLink", null, tm.name, TicketsPage.class, params)
                    .setRenderBodyOnly(true));
        }
    };
    milestoneDropdown.add(milestonesMenu);
    milestonePanel.add(milestoneDropdown);

    // search or query tickets
    int page = Math.max(1, WicketUtils.getPage(params));
    int pageSize = app().settings().getInteger(Keys.tickets.perPage, 25);
    List<QueryResult> results;
    if (StringUtils.isEmpty(searchParam)) {
        results = app().tickets().queryFor(luceneQuery, page, pageSize, sortBy, desc);
    } else {
        results = app().tickets().searchFor(getRepositoryModel(), searchParam, page, pageSize);
    }
    int totalResults = results.size() == 0 ? 0 : results.get(0).totalResults;

    // standard queries
    add(new BookmarkablePageLink<Void>("changesQuery", TicketsPage.class,
            queryParameters(Lucene.type.matches(TicketModel.Type.Proposal.name()), milestoneParam, statiiParam,
                    assignedToParam, sortBy, desc, 1)));

    add(new BookmarkablePageLink<Void>("bugsQuery", TicketsPage.class,
            queryParameters(Lucene.type.matches(TicketModel.Type.Bug.name()), milestoneParam, statiiParam,
                    assignedToParam, sortBy, desc, 1)));

    add(new BookmarkablePageLink<Void>("enhancementsQuery", TicketsPage.class,
            queryParameters(Lucene.type.matches(TicketModel.Type.Enhancement.name()), milestoneParam,
                    statiiParam, assignedToParam, sortBy, desc, 1)));

    add(new BookmarkablePageLink<Void>("tasksQuery", TicketsPage.class,
            queryParameters(Lucene.type.matches(TicketModel.Type.Task.name()), milestoneParam, statiiParam,
                    assignedToParam, sortBy, desc, 1)));

    add(new BookmarkablePageLink<Void>("questionsQuery", TicketsPage.class,
            queryParameters(Lucene.type.matches(TicketModel.Type.Question.name()), milestoneParam, statiiParam,
                    assignedToParam, sortBy, desc, 1)));

    add(new BookmarkablePageLink<Void>("maintenanceQuery", TicketsPage.class,
            queryParameters(Lucene.type.matches(TicketModel.Type.Maintenance.name()), milestoneParam,
                    statiiParam, assignedToParam, sortBy, desc, 1)));

    add(new BookmarkablePageLink<Void>("resetQuery", TicketsPage.class,
            queryParameters(null, milestoneParam, TicketsUI.openStatii, null, null, true, 1)));

    if (isAuthenticated) {
        add(new Label("userDivider"));
        add(new BookmarkablePageLink<Void>("createdQuery", TicketsPage.class,
                queryParameters(Lucene.createdby.matches(user.username), milestoneParam, statiiParam,
                        assignedToParam, sortBy, desc, 1)));

        add(new BookmarkablePageLink<Void>("watchedQuery", TicketsPage.class,
                queryParameters(Lucene.watchedby.matches(user.username), milestoneParam, statiiParam,
                        assignedToParam, sortBy, desc, 1)));
        add(new BookmarkablePageLink<Void>("mentionsQuery", TicketsPage.class,
                queryParameters(Lucene.mentions.matches(user.username), milestoneParam, statiiParam,
                        assignedToParam, sortBy, desc, 1)));
    } else {
        add(new Label("userDivider").setVisible(false));
        add(new Label("createdQuery").setVisible(false));
        add(new Label("watchedQuery").setVisible(false));
        add(new Label("mentionsQuery").setVisible(false));
    }

    Set<TicketQuery> dynamicQueries = new TreeSet<TicketQuery>();
    for (TicketLabel label : app().tickets().getLabels(getRepositoryModel())) {
        String q = QueryBuilder.q(Lucene.labels.matches(label.name)).build();
        dynamicQueries.add(new TicketQuery(label.name, q).color(label.color));
    }

    for (QueryResult ticket : results) {
        if (!StringUtils.isEmpty(ticket.topic)) {
            String q = QueryBuilder.q(Lucene.topic.matches(ticket.topic)).build();
            dynamicQueries.add(new TicketQuery(ticket.topic, q));
        }

        if (!ArrayUtils.isEmpty(ticket.labels)) {
            for (String label : ticket.labels) {
                String q = QueryBuilder.q(Lucene.labels.matches(label)).build();
                dynamicQueries.add(new TicketQuery(label, q));
            }
        }
    }

    if (dynamicQueries.size() == 0) {
        add(new Label("dynamicQueries").setVisible(false));
    } else {
        Fragment fragment = new Fragment("dynamicQueries", "dynamicQueriesFragment", TicketsPage.this);
        ListDataProvider<TicketQuery> dynamicQueriesDp = new ListDataProvider<TicketQuery>(
                new ArrayList<TicketQuery>(dynamicQueries));
        DataView<TicketQuery> dynamicQueriesList = new DataView<TicketQuery>("dynamicQuery", dynamicQueriesDp) {
            private static final long serialVersionUID = 1L;

            @Override
            public void populateItem(final Item<TicketQuery> item) {
                final TicketQuery tq = item.getModelObject();
                Component swatch = new Label("swatch", "&nbsp;").setEscapeModelStrings(false);
                if (StringUtils.isEmpty(tq.color)) {
                    // calculate a color
                    tq.color = StringUtils.getColor(tq.name);
                }
                String background = MessageFormat.format("background-color:{0};", tq.color);
                swatch.add(new AttributeModifier("style", background));
                item.add(swatch);
                if (activeQuery.contains(tq.query)) {
                    // selected
                    String q = QueryBuilder.q(activeQuery).remove(tq.query).build();
                    PageParameters params = queryParameters(q, milestoneParam, statiiParam, assignedToParam,
                            sortBy, desc, 1);
                    item.add(new LinkPanel("link", "active", tq.name, TicketsPage.class, params)
                            .setRenderBodyOnly(true));
                    Label checked = new Label("checked");
                    WicketUtils.setCssClass(checked, "iconic-o-x");
                    item.add(checked);
                    item.add(new AttributeModifier("style", background));
                } else {
                    // unselected
                    String q = QueryBuilder.q(queryParam).toSubquery().and(tq.query).build();
                    PageParameters params = queryParameters(q, milestoneParam, statiiParam, assignedToParam,
                            sortBy, desc, 1);
                    item.add(new LinkPanel("link", null, tq.name, TicketsPage.class, params)
                            .setRenderBodyOnly(true));
                    item.add(new Label("checked").setVisible(false));
                }
            }
        };
        fragment.add(dynamicQueriesList);
        add(fragment);
    }

    // states
    if (ArrayUtils.isEmpty(statiiParam)) {
        add(new Label("selectedStatii", getString("gb.all")));
    } else {
        add(new Label("selectedStatii", StringUtils.flattenStrings(Arrays.asList(statiiParam), ",")));
    }
    add(new BookmarkablePageLink<Void>("openTickets", TicketsPage.class, queryParameters(queryParam,
            milestoneParam, TicketsUI.openStatii, assignedToParam, sortBy, desc, 1)));
    add(new BookmarkablePageLink<Void>("closedTickets", TicketsPage.class, queryParameters(queryParam,
            milestoneParam, TicketsUI.closedStatii, assignedToParam, sortBy, desc, 1)));
    add(new BookmarkablePageLink<Void>("allTickets", TicketsPage.class,
            queryParameters(queryParam, milestoneParam, null, assignedToParam, sortBy, desc, 1)));

    // by status
    List<Status> statii = new ArrayList<Status>(Arrays.asList(Status.values()));
    statii.remove(Status.Closed);
    ListDataProvider<Status> resolutionsDp = new ListDataProvider<Status>(statii);
    DataView<Status> statiiLinks = new DataView<Status>("statii", resolutionsDp) {
        private static final long serialVersionUID = 1L;

        @Override
        public void populateItem(final Item<Status> item) {
            final Status status = item.getModelObject();
            PageParameters p = queryParameters(queryParam, milestoneParam,
                    new String[] { status.name().toLowerCase() }, assignedToParam, sortBy, desc, 1);
            String css = TicketsUI.getStatusClass(status);
            item.add(new LinkPanel("statusLink", css, status.toString(), TicketsPage.class, p)
                    .setRenderBodyOnly(true));
        }
    };
    add(statiiLinks);

    // responsible filter
    List<TicketResponsible> responsibles = new ArrayList<TicketResponsible>();
    for (RegistrantAccessPermission perm : app().repositories()
            .getUserAccessPermissions(getRepositoryModel())) {
        if (perm.permission.atLeast(AccessPermission.PUSH)) {
            UserModel u = app().users().getUserModel(perm.registrant);
            responsibles.add(new TicketResponsible(u));
        }
    }
    Collections.sort(responsibles);
    responsibles.add(0, any);

    TicketResponsible currentResponsible = null;
    for (TicketResponsible u : responsibles) {
        if (u.username.equals(assignedToParam)) {
            currentResponsible = u;
            break;
        }
    }

    add(new Label("currentResponsible", currentResponsible == null ? "" : currentResponsible.displayname));
    ListDataProvider<TicketResponsible> responsibleDp = new ListDataProvider<TicketResponsible>(responsibles);
    DataView<TicketResponsible> responsibleMenu = new DataView<TicketResponsible>("responsible",
            responsibleDp) {
        private static final long serialVersionUID = 1L;

        @Override
        public void populateItem(final Item<TicketResponsible> item) {
            final TicketResponsible u = item.getModelObject();
            PageParameters params = queryParameters(queryParam, milestoneParam, statiiParam, u.username, sortBy,
                    desc, 1);
            item.add(new LinkPanel("responsibleLink", null, u.displayname, TicketsPage.class, params)
                    .setRenderBodyOnly(true));
        }
    };
    add(responsibleMenu);
    PageParameters resetResponsibleParams = queryParameters(queryParam, milestoneParam, statiiParam, null,
            sortBy, desc, 1);
    add(new BookmarkablePageLink<Void>("resetResponsible", TicketsPage.class, resetResponsibleParams));

    List<TicketSort> sortChoices = new ArrayList<TicketSort>();
    sortChoices.add(new TicketSort(getString("gb.sortNewest"), Lucene.created.name(), true));
    sortChoices.add(new TicketSort(getString("gb.sortOldest"), Lucene.created.name(), false));
    sortChoices.add(new TicketSort(getString("gb.sortMostRecentlyUpdated"), Lucene.updated.name(), true));
    sortChoices.add(new TicketSort(getString("gb.sortLeastRecentlyUpdated"), Lucene.updated.name(), false));
    sortChoices.add(new TicketSort(getString("gb.sortMostComments"), Lucene.comments.name(), true));
    sortChoices.add(new TicketSort(getString("gb.sortLeastComments"), Lucene.comments.name(), false));
    sortChoices.add(new TicketSort(getString("gb.sortMostPatchsetRevisions"), Lucene.patchsets.name(), true));
    sortChoices.add(new TicketSort(getString("gb.sortLeastPatchsetRevisions"), Lucene.patchsets.name(), false));
    sortChoices.add(new TicketSort(getString("gb.sortMostVotes"), Lucene.votes.name(), true));
    sortChoices.add(new TicketSort(getString("gb.sortLeastVotes"), Lucene.votes.name(), false));
    sortChoices.add(new TicketSort(getString("gb.sortHighestPriority"), Lucene.priority.name(), true));
    sortChoices.add(new TicketSort(getString("gb.sortLowestPriority"), Lucene.priority.name(), false));
    sortChoices.add(new TicketSort(getString("gb.sortHighestSeverity"), Lucene.severity.name(), true));
    sortChoices.add(new TicketSort(getString("gb.sortLowestSeverity"), Lucene.severity.name(), false));

    TicketSort currentSort = sortChoices.get(0);
    for (TicketSort ts : sortChoices) {
        if (ts.sortBy.equals(sortBy) && desc == ts.desc) {
            currentSort = ts;
            break;
        }
    }
    add(new Label("currentSort", currentSort.name));

    ListDataProvider<TicketSort> sortChoicesDp = new ListDataProvider<TicketSort>(sortChoices);
    DataView<TicketSort> sortMenu = new DataView<TicketSort>("sort", sortChoicesDp) {
        private static final long serialVersionUID = 1L;

        @Override
        public void populateItem(final Item<TicketSort> item) {
            final TicketSort ts = item.getModelObject();
            PageParameters params = queryParameters(queryParam, milestoneParam, statiiParam, assignedToParam,
                    ts.sortBy, ts.desc, 1);
            item.add(new LinkPanel("sortLink", null, ts.name, TicketsPage.class, params)
                    .setRenderBodyOnly(true));
        }
    };
    add(sortMenu);

    // paging links
    buildPager(queryParam, milestoneParam, statiiParam, assignedToParam, sortBy, desc, page, pageSize,
            results.size(), totalResults);

    add(new TicketListPanel("ticketList", results, false, false));

    // new milestone link
    RepositoryModel repositoryModel = getRepositoryModel();
    final boolean acceptingUpdates = app().tickets().isAcceptingTicketUpdates(repositoryModel) && user != null
            && user.canAdmin(getRepositoryModel());
    if (acceptingUpdates) {
        add(new LinkPanel("newMilestone", null, getString("gb.newMilestone"), NewMilestonePage.class,
                WicketUtils.newRepositoryParameter(repositoryName)));
    } else {
        add(new Label("newMilestone").setVisible(false));
    }

    // milestones list
    List<TicketMilestone> openMilestones = new ArrayList<TicketMilestone>();
    List<TicketMilestone> closedMilestones = new ArrayList<TicketMilestone>();
    for (TicketMilestone milestone : app().tickets().getMilestones(repositoryModel)) {
        if (milestone.isOpen()) {
            openMilestones.add(milestone);
        } else {
            closedMilestones.add(milestone);
        }
    }
    Collections.sort(openMilestones, new Comparator<TicketMilestone>() {
        @Override
        public int compare(TicketMilestone o1, TicketMilestone o2) {
            return o2.due.compareTo(o1.due);
        }
    });

    Collections.sort(closedMilestones, new Comparator<TicketMilestone>() {
        @Override
        public int compare(TicketMilestone o1, TicketMilestone o2) {
            return o2.due.compareTo(o1.due);
        }
    });

    DataView<TicketMilestone> openMilestonesList = milestoneList("openMilestonesList", openMilestones,
            acceptingUpdates);
    add(openMilestonesList);

    DataView<TicketMilestone> closedMilestonesList = milestoneList("closedMilestonesList", closedMilestones,
            acceptingUpdates);
    add(closedMilestonesList);
}

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

License:Apache License

public void setNoFollow() {
    Component c = get("link");
    c.add(new AttributeModifier("rel", "nofollow"));
}

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

License:Apache License

public void setTooltip(String tooltip) {
    Component c = get("link");
    c.add(new AttributeModifier("title", tooltip));
}

From source file:com.gitblit.wicket.WicketUtils.java

License:Apache License

public static void setCssClass(Component container, String value) {
    container.add(new AttributeModifier("class", value));
}

From source file:com.gitblit.wicket.WicketUtils.java

License:Apache License

public static void addCssClass(Component container, String value) {
    container.add(new AttributeAppender("class", new Model<String>(value), " "));
}