List of usage examples for org.apache.wicket.markup.repeater.data DataView DataView
protected DataView(String id, IDataProvider<T> dataProvider)
From source file:com.gitblit.wicket.pages.CommitDiffPage.java
License:Apache License
public CommitDiffPage(PageParameters params) { super(params); final Repository r = getRepository(); final RevCommit commit = getCommit(); final DiffComparator diffComparator = WicketUtils.getDiffComparator(params); List<String> parents = new ArrayList<String>(); if (commit.getParentCount() > 0) { for (RevCommit parent : commit.getParents()) { parents.add(parent.name());/* w ww . j a v a 2 s.c o m*/ } } // commit page links if (parents.size() == 0) { add(new Label("parentLink", getString("gb.none"))); } else { add(new LinkPanel("parentLink", null, parents.get(0).substring(0, 8), CommitDiffPage.class, newCommitParameter(parents.get(0)))); } add(new BookmarkablePageLink<Void>("patchLink", PatchPage.class, WicketUtils.newObjectParameter(repositoryName, objectId))); add(new BookmarkablePageLink<Void>("commitLink", CommitPage.class, WicketUtils.newObjectParameter(repositoryName, objectId))); add(new LinkPanel("whitespaceLink", null, getString(diffComparator.getOpposite().getTranslationKey()), CommitDiffPage.class, WicketUtils.newDiffParameter(repositoryName, objectId, diffComparator.getOpposite()))); add(new CommitHeaderPanel("commitHeader", repositoryName, commit)); final List<String> imageExtensions = app().settings().getStrings(Keys.web.imageExtensions); final ImageDiffHandler handler = new ImageDiffHandler(this, repositoryName, parents.isEmpty() ? null : parents.get(0), commit.getName(), imageExtensions); final int tabLength = app().settings().getInteger(Keys.web.tabLength, 4); final DiffOutput diff = DiffUtils.getCommitDiff(r, commit, diffComparator, DiffOutputType.HTML, handler, tabLength); if (handler.getImgDiffCount() > 0) { addBottomScript("scripts/imgdiff.js"); // Tiny support script for image diffs } // add commit diffstat int insertions = 0; int deletions = 0; for (PathChangeModel pcm : diff.stat.paths) { insertions += pcm.insertions; deletions += pcm.deletions; } add(new DiffStatPanel("diffStat", insertions, deletions)); addFullText("fullMessage", commit.getFullMessage()); // git notes List<GitNote> notes = JGitUtils.getNotesOnCommit(r, commit); ListDataProvider<GitNote> notesDp = new ListDataProvider<GitNote>(notes); DataView<GitNote> notesView = new DataView<GitNote>("notes", notesDp) { private static final long serialVersionUID = 1L; @Override public void populateItem(final Item<GitNote> item) { GitNote entry = item.getModelObject(); item.add(new RefsPanel("refName", repositoryName, Arrays.asList(entry.notesRef))); item.add(createPersonPanel("authorName", entry.notesRef.getAuthorIdent(), Constants.SearchType.AUTHOR)); item.add(new AvatarImage("noteAuthorAvatar", entry.notesRef.getAuthorIdent())); item.add(WicketUtils.createTimestampLabel("authorDate", entry.notesRef.getAuthorIdent().getWhen(), getTimeZone(), getTimeUtils())); item.add(new Label("noteContent", bugtraqProcessor().processPlainCommitMessage(getRepository(), repositoryName, entry.content)).setEscapeModelStrings(false)); } }; add(notesView.setVisible(notes.size() > 0)); // changed paths list add(new CommitLegendPanel("commitLegend", diff.stat.paths)); ListDataProvider<PathChangeModel> pathsDp = new ListDataProvider<PathChangeModel>(diff.stat.paths); DataView<PathChangeModel> pathsView = new DataView<PathChangeModel>("changedPath", pathsDp) { private static final long serialVersionUID = 1L; int counter; @Override public void populateItem(final Item<PathChangeModel> item) { final PathChangeModel entry = item.getModelObject(); Label changeType = new Label("changeType", ""); WicketUtils.setChangeTypeCssClass(changeType, entry.changeType); setChangeTypeTooltip(changeType, entry.changeType); item.add(changeType); item.add(new DiffStatPanel("diffStat", entry.insertions, entry.deletions, true)); item.add(WicketUtils.setHtmlTooltip(new Label("filestore", ""), getString("gb.filestore")) .setVisible(entry.isFilestoreItem())); boolean hasSubmodule = false; String submodulePath = null; if (entry.isTree()) { // tree item.add(new LinkPanel("pathName", null, entry.path, TreePage.class, WicketUtils.newPathParameter(repositoryName, entry.commitId, entry.path))); } else if (entry.isSubmodule()) { // submodule String submoduleId = entry.objectId; SubmoduleModel submodule = getSubmodule(entry.path); submodulePath = submodule.gitblitPath; hasSubmodule = submodule.hasSubmodule; // add relative link item.add(new LinkPanel("pathName", "list", entry.path + " @ " + getShortObjectId(submoduleId), "#n" + entry.objectId)); } else { // add relative link if (entry.isFilestoreItem()) { item.add(new LinkPanel("pathName", "list", entry.path, new Link<Object>("link", null) { private static final long serialVersionUID = 1L; @Override public void onClick() { IResourceStream resourceStream = new AbstractResourceStreamWriter() { private static final long serialVersionUID = 1L; @Override public void write(OutputStream output) { UserModel user = GitBlitWebSession.get().getUser(); user = user == null ? UserModel.ANONYMOUS : user; app().filestore().downloadBlob(entry.getFilestoreOid(), user, getRepositoryModel(), output); } }; ResourceStreamRequestHandler resourceStreamRequestHandler = new ResourceStreamRequestHandler( resourceStream, entry.path); getRequestCycle().scheduleRequestHandlerAfterCurrent(resourceStreamRequestHandler); } })); } else { item.add(new LinkPanel("pathName", "list", entry.path, "#n" + entry.objectId)); } } // quick links if (entry.isSubmodule()) { item.add(new ExternalLink("raw", "").setEnabled(false)); // submodule item.add(new ExternalLink("patch", "").setEnabled(false)); item.add(new BookmarkablePageLink<Void>("view", CommitPage.class, WicketUtils.newObjectParameter(submodulePath, entry.objectId)) .setEnabled(hasSubmodule)); item.add(new ExternalLink("blame", "").setEnabled(false)); item.add(new BookmarkablePageLink<Void>("history", HistoryPage.class, WicketUtils.newPathParameter(repositoryName, entry.commitId, entry.path)) .setEnabled(!entry.changeType.equals(ChangeType.ADD))); } else { // tree or blob item.add(new BookmarkablePageLink<Void>("patch", PatchPage.class, WicketUtils.newPathParameter(repositoryName, entry.commitId, entry.path)) .setEnabled(!entry.changeType.equals(ChangeType.ADD) && !entry.changeType.equals(ChangeType.DELETE))); if (entry.isFilestoreItem()) { item.add(new Link<Object>("view", null) { private static final long serialVersionUID = 1L; @Override public void onClick() { IResourceStream resourceStream = new AbstractResourceStreamWriter() { private static final long serialVersionUID = 1L; @Override public void write(OutputStream output) { UserModel user = GitBlitWebSession.get().getUser(); user = user == null ? UserModel.ANONYMOUS : user; app().filestore().downloadBlob(entry.getFilestoreOid(), user, getRepositoryModel(), output); } }; ResourceStreamRequestHandler resourceStreamRequestHandler = new ResourceStreamRequestHandler( resourceStream, entry.path); getRequestCycle().scheduleRequestHandlerAfterCurrent(resourceStreamRequestHandler); } }); item.add(new Link<Object>("raw", null) { private static final long serialVersionUID = 1L; @Override public void onClick() { IResourceStream resourceStream = new AbstractResourceStreamWriter() { private static final long serialVersionUID = 1L; @Override public void write(OutputStream output) { UserModel user = GitBlitWebSession.get().getUser(); user = user == null ? UserModel.ANONYMOUS : user; app().filestore().downloadBlob(entry.getFilestoreOid(), user, getRepositoryModel(), output); } }; ResourceStreamRequestHandler resourceStreamRequestHandler = new ResourceStreamRequestHandler( resourceStream, entry.path); getRequestCycle().scheduleRequestHandlerAfterCurrent(resourceStreamRequestHandler); } }); } else { item.add(new BookmarkablePageLink<Void>("view", BlobPage.class, WicketUtils.newPathParameter(repositoryName, entry.commitId, entry.path)) .setEnabled(!entry.changeType.equals(ChangeType.DELETE))); item.add(new ExternalLink("raw", RawServlet.asLink(getContextUrl(), repositoryName, entry.commitId, entry.path)) .setEnabled(!entry.changeType.equals(ChangeType.DELETE))); } item.add(new BookmarkablePageLink<Void>("blame", BlamePage.class, WicketUtils.newPathParameter(repositoryName, entry.commitId, entry.path)) .setEnabled(!entry.changeType.equals(ChangeType.ADD) && !entry.changeType.equals(ChangeType.DELETE))); item.add(new BookmarkablePageLink<Void>("history", HistoryPage.class, WicketUtils.newPathParameter(repositoryName, entry.commitId, entry.path)) .setEnabled(!entry.changeType.equals(ChangeType.ADD))); } WicketUtils.setAlternatingBackground(item, counter); counter++; } }; add(pathsView); add(new Label("diffText", diff.content).setEscapeModelStrings(false)); }
From source file:com.gitblit.wicket.pages.CommitPage.java
License:Apache License
public CommitPage(PageParameters params) { super(params); Repository r = getRepository();//from www .j a v a 2 s. c om RevCommit c = getCommit(); List<String> parents = new ArrayList<String>(); if (c.getParentCount() > 0) { for (RevCommit parent : c.getParents()) { parents.add(parent.name()); } } // commit page links if (parents.size() == 0) { add(new Label("parentLink", "none")); add(new Label("commitdiffLink", getString("gb.commitdiff"))); } else { add(new LinkPanel("parentLink", null, getShortObjectId(parents.get(0)), CommitPage.class, newCommitParameter(parents.get(0)))); add(new LinkPanel("commitdiffLink", null, new StringResourceModel("gb.commitdiff", this, null), CommitDiffPage.class, WicketUtils.newObjectParameter(repositoryName, objectId))); } add(new BookmarkablePageLink<Void>("patchLink", PatchPage.class, WicketUtils.newObjectParameter(repositoryName, objectId))); add(new CommitHeaderPanel("commitHeader", repositoryName, c)); addRefs(r, c); // author add(createPersonPanel("commitAuthor", c.getAuthorIdent(), Constants.SearchType.AUTHOR)); add(WicketUtils.createTimestampLabel("commitAuthorDate", c.getAuthorIdent().getWhen(), getTimeZone(), getTimeUtils())); // committer add(createPersonPanel("commitCommitter", c.getCommitterIdent(), Constants.SearchType.COMMITTER)); add(WicketUtils.createTimestampLabel("commitCommitterDate", c.getCommitterIdent().getWhen(), getTimeZone(), getTimeUtils())); add(new Label("commitId", c.getName())); add(new LinkPanel("commitTree", "list", c.getTree().getName(), TreePage.class, newCommitParameter())); add(new BookmarkablePageLink<Void>("treeLink", TreePage.class, newCommitParameter())); final String baseUrl = WicketUtils.getGitblitURL(getRequest()); add(new CompressedDownloadsPanel("compressedLinks", baseUrl, repositoryName, objectId, null)); // Parent Commits ListDataProvider<String> parentsDp = new ListDataProvider<String>(parents); DataView<String> parentsView = new DataView<String>("commitParents", parentsDp) { private static final long serialVersionUID = 1L; @Override public void populateItem(final Item<String> item) { String entry = item.getModelObject(); item.add(new LinkPanel("commitParent", "list", entry, CommitPage.class, newCommitParameter(entry))); item.add(new BookmarkablePageLink<Void>("view", CommitPage.class, newCommitParameter(entry))); item.add(new BookmarkablePageLink<Void>("diff", CommitDiffPage.class, newCommitParameter(entry))); } }; add(parentsView); addFullText("fullMessage", c.getFullMessage()); // git notes List<GitNote> notes = JGitUtils.getNotesOnCommit(r, c); ListDataProvider<GitNote> notesDp = new ListDataProvider<GitNote>(notes); DataView<GitNote> notesView = new DataView<GitNote>("notes", notesDp) { private static final long serialVersionUID = 1L; @Override public void populateItem(final Item<GitNote> item) { GitNote entry = item.getModelObject(); item.add(new RefsPanel("refName", repositoryName, Arrays.asList(entry.notesRef))); item.add(createPersonPanel("authorName", entry.notesRef.getAuthorIdent(), Constants.SearchType.AUTHOR)); item.add(new AvatarImage("noteAuthorAvatar", entry.notesRef.getAuthorIdent())); item.add(WicketUtils.createTimestampLabel("authorDate", entry.notesRef.getAuthorIdent().getWhen(), getTimeZone(), getTimeUtils())); item.add(new Label("noteContent", bugtraqProcessor().processPlainCommitMessage(getRepository(), repositoryName, entry.content)).setEscapeModelStrings(false)); } }; add(notesView.setVisible(notes.size() > 0)); // changed paths list List<PathChangeModel> paths = JGitUtils.getFilesInCommit(r, c); // add commit diffstat int insertions = 0; int deletions = 0; for (PathChangeModel pcm : paths) { insertions += pcm.insertions; deletions += pcm.deletions; } add(new DiffStatPanel("diffStat", insertions, deletions)); add(new CommitLegendPanel("commitLegend", paths)); ListDataProvider<PathChangeModel> pathsDp = new ListDataProvider<PathChangeModel>(paths); DataView<PathChangeModel> pathsView = new DataView<PathChangeModel>("changedPath", pathsDp) { private static final long serialVersionUID = 1L; int counter; @Override public void populateItem(final Item<PathChangeModel> item) { final PathChangeModel entry = item.getModelObject(); Label changeType = new Label("changeType", ""); WicketUtils.setChangeTypeCssClass(changeType, entry.changeType); setChangeTypeTooltip(changeType, entry.changeType); item.add(changeType); item.add(new DiffStatPanel("diffStat", entry.insertions, entry.deletions, true)); item.add(WicketUtils.setHtmlTooltip(new Label("filestore", ""), getString("gb.filestore")) .setVisible(entry.isFilestoreItem())); boolean hasSubmodule = false; String submodulePath = null; if (entry.isTree()) { // tree item.add(new LinkPanel("pathName", null, entry.path, TreePage.class, WicketUtils.newPathParameter(repositoryName, entry.commitId, entry.path))); } else if (entry.isSubmodule()) { // submodule String submoduleId = entry.objectId; SubmoduleModel submodule = getSubmodule(entry.path); submodulePath = submodule.gitblitPath; hasSubmodule = submodule.hasSubmodule; item.add(new LinkPanel("pathName", "list", entry.path + " @ " + getShortObjectId(submoduleId), TreePage.class, WicketUtils.newPathParameter(submodulePath, submoduleId, "")) .setEnabled(hasSubmodule)); } else { // blob String displayPath = entry.path; String path = entry.path; if (entry.isSymlink()) { path = JGitUtils.getStringContent(getRepository(), getCommit().getTree(), path); displayPath = entry.path + " -> " + path; } if (entry.isFilestoreItem()) { item.add(new LinkPanel("pathName", "list", entry.path, new Link<Object>("link", null) { private static final long serialVersionUID = 1L; @Override public void onClick() { IResourceStream resourceStream = new AbstractResourceStreamWriter() { private static final long serialVersionUID = 1L; @Override public void write(OutputStream output) { UserModel user = GitBlitWebSession.get().getUser(); user = user == null ? UserModel.ANONYMOUS : user; app().filestore().downloadBlob(entry.getFilestoreOid(), user, getRepositoryModel(), output); } }; ResourceStreamRequestHandler resourceStreamRequestHandler = new ResourceStreamRequestHandler( resourceStream, entry.path); getRequestCycle().scheduleRequestHandlerAfterCurrent(resourceStreamRequestHandler); } })); } else { item.add(new LinkPanel("pathName", "list", displayPath, BlobPage.class, WicketUtils.newPathParameter(repositoryName, entry.commitId, path))); } } // quick links if (entry.isSubmodule()) { item.add(new ExternalLink("raw", "").setEnabled(false)); // submodule item.add(new BookmarkablePageLink<Void>("diff", BlobDiffPage.class, WicketUtils.newPathParameter(repositoryName, entry.commitId, entry.path)) .setEnabled(!entry.changeType.equals(ChangeType.ADD))); item.add(new BookmarkablePageLink<Void>("view", CommitPage.class, WicketUtils.newObjectParameter(submodulePath, entry.objectId)) .setEnabled(hasSubmodule)); item.add(new ExternalLink("blame", "").setEnabled(false)); item.add(new BookmarkablePageLink<Void>("history", HistoryPage.class, WicketUtils.newPathParameter(repositoryName, entry.commitId, entry.path)) .setEnabled(!entry.changeType.equals(ChangeType.ADD))); } else { // tree or blob item.add(new BookmarkablePageLink<Void>("diff", BlobDiffPage.class, WicketUtils.newPathParameter(repositoryName, entry.commitId, entry.path)) .setEnabled(!entry.changeType.equals(ChangeType.ADD) && !entry.changeType.equals(ChangeType.DELETE))); if (entry.isFilestoreItem()) { item.add(new Link<Object>("view", null) { private static final long serialVersionUID = 1L; @Override public void onClick() { IResourceStream resourceStream = new AbstractResourceStreamWriter() { private static final long serialVersionUID = 1L; @Override public void write(OutputStream output) { UserModel user = GitBlitWebSession.get().getUser(); user = user == null ? UserModel.ANONYMOUS : user; app().filestore().downloadBlob(entry.getFilestoreOid(), user, getRepositoryModel(), output); } }; ResourceStreamRequestHandler resourceStreamRequestHandler = new ResourceStreamRequestHandler( resourceStream, entry.path); getRequestCycle().scheduleRequestHandlerAfterCurrent(resourceStreamRequestHandler); } }); item.add(new Link<Object>("raw", null) { private static final long serialVersionUID = 1L; @Override public void onClick() { IResourceStream resourceStream = new AbstractResourceStreamWriter() { private static final long serialVersionUID = 1L; @Override public void write(OutputStream output) { UserModel user = GitBlitWebSession.get().getUser(); user = user == null ? UserModel.ANONYMOUS : user; app().filestore().downloadBlob(entry.getFilestoreOid(), user, getRepositoryModel(), output); } }; ResourceStreamRequestHandler resourceStreamRequestHandler = new ResourceStreamRequestHandler( resourceStream, entry.path); getRequestCycle().scheduleRequestHandlerAfterCurrent(resourceStreamRequestHandler); } }); } else { item.add(new BookmarkablePageLink<Void>("view", BlobPage.class, WicketUtils.newPathParameter(repositoryName, entry.commitId, entry.path)) .setEnabled(!entry.changeType.equals(ChangeType.DELETE))); String rawUrl = RawServlet.asLink(getContextUrl(), repositoryName, entry.commitId, entry.path); item.add(new ExternalLink("raw", rawUrl) .setEnabled(!entry.changeType.equals(ChangeType.DELETE))); } item.add(new BookmarkablePageLink<Void>("blame", BlamePage.class, WicketUtils.newPathParameter(repositoryName, entry.commitId, entry.path)) .setEnabled(!entry.changeType.equals(ChangeType.ADD) && !entry.changeType.equals(ChangeType.DELETE))); item.add(new BookmarkablePageLink<Void>("history", HistoryPage.class, WicketUtils.newPathParameter(repositoryName, entry.commitId, entry.path)) .setEnabled(!entry.changeType.equals(ChangeType.ADD))); } WicketUtils.setAlternatingBackground(item, counter); counter++; } }; add(pathsView); }
From source file:com.gitblit.wicket.pages.ComparePage.java
License:Apache License
public ComparePage(PageParameters params) { super(params); Repository r = getRepository();/*ww w . j a va 2 s . c o m*/ RepositoryModel repository = getRepositoryModel(); if (StringUtils.isEmpty(objectId)) { // seleciton form add(new Label("comparison").setVisible(false)); } else { // active comparison Fragment comparison = new Fragment("comparison", "comparisonFragment", ComparePage.this); add(comparison); RevCommit fromCommit; RevCommit toCommit; String[] parts = objectId.split("\\.\\."); if (parts[0].startsWith("refs/") && parts[1].startsWith("refs/")) { // set the ref models fromRefId.setObject(parts[0]); toRefId.setObject(parts[1]); fromCommit = getCommit(r, fromRefId.getObject()); toCommit = getCommit(r, toRefId.getObject()); } else { // set the id models fromCommitId.setObject(parts[0]); toCommitId.setObject(parts[1]); fromCommit = getCommit(r, fromCommitId.getObject()); toCommit = getCommit(r, toCommitId.getObject()); } // prepare submodules getSubmodules(toCommit); final String startId = fromCommit.getId().getName(); final String endId = toCommit.getId().getName(); // commit ids fromCommitId.setObject(startId); toCommitId.setObject(endId); final List<String> imageExtensions = app().settings().getStrings(Keys.web.imageExtensions); final ImageDiffHandler handler = new ImageDiffHandler(this, repositoryName, fromCommit.getName(), toCommit.getName(), imageExtensions); final DiffComparator diffComparator = WicketUtils.getDiffComparator(params); final int tabLength = app().settings().getInteger(Keys.web.tabLength, 4); final DiffOutput diff = DiffUtils.getDiff(r, fromCommit, toCommit, diffComparator, DiffOutputType.HTML, handler, tabLength); if (handler.getImgDiffCount() > 0) { addBottomScript("scripts/imgdiff.js"); // Tiny support script for image diffs } // add compare diffstat int insertions = 0; int deletions = 0; for (PathChangeModel pcm : diff.stat.paths) { insertions += pcm.insertions; deletions += pcm.deletions; } comparison.add(new DiffStatPanel("diffStat", insertions, deletions)); // compare page links // comparison.add(new BookmarkablePageLink<Void>("patchLink", PatchPage.class, // WicketUtils.newRangeParameter(repositoryName, fromCommitId.toString(), toCommitId.getObject()))); // display list of commits comparison.add( new LogPanel("commitList", repositoryName, objectId, r, 0, 0, repository.showRemoteBranches)); // changed paths list comparison.add(new CommitLegendPanel("commitLegend", diff.stat.paths)); ListDataProvider<PathChangeModel> pathsDp = new ListDataProvider<PathChangeModel>(diff.stat.paths); DataView<PathChangeModel> pathsView = new DataView<PathChangeModel>("changedPath", pathsDp) { private static final long serialVersionUID = 1L; int counter; @Override public void populateItem(final Item<PathChangeModel> item) { final PathChangeModel entry = item.getModelObject(); Label changeType = new Label("changeType", ""); WicketUtils.setChangeTypeCssClass(changeType, entry.changeType); setChangeTypeTooltip(changeType, entry.changeType); item.add(changeType); item.add(new DiffStatPanel("diffStat", entry.insertions, entry.deletions, true)); boolean hasSubmodule = false; String submodulePath = null; if (entry.isTree()) { // tree item.add(new LinkPanel("pathName", null, entry.path, TreePage.class, WicketUtils.newPathParameter(repositoryName, endId, entry.path))); } else if (entry.isSubmodule()) { // submodule String submoduleId = entry.objectId; SubmoduleModel submodule = getSubmodule(entry.path); submodulePath = submodule.gitblitPath; hasSubmodule = submodule.hasSubmodule; // add relative link item.add(new LinkPanel("pathName", "list", entry.path + " @ " + getShortObjectId(submoduleId), "#n" + entry.objectId)); } else { // add relative link item.add(new LinkPanel("pathName", "list", entry.path, "#n" + entry.objectId)); } // quick links if (entry.isSubmodule()) { // submodule item.add(new ExternalLink("patch", "").setEnabled(false)); item.add(new BookmarkablePageLink<Void>("view", CommitPage.class, WicketUtils.newObjectParameter(submodulePath, entry.objectId)) .setEnabled(hasSubmodule)); item.add(new ExternalLink("raw", "").setEnabled(false)); item.add(new ExternalLink("blame", "").setEnabled(false)); item.add(new BookmarkablePageLink<Void>("history", HistoryPage.class, WicketUtils.newPathParameter(repositoryName, endId, entry.path)) .setEnabled(!entry.changeType.equals(ChangeType.ADD))); } else { // tree or blob item.add(new BookmarkablePageLink<Void>("patch", PatchPage.class, WicketUtils.newBlobDiffParameter(repositoryName, startId, endId, entry.path)) .setEnabled(!entry.changeType.equals(ChangeType.DELETE))); item.add(new BookmarkablePageLink<Void>("view", BlobPage.class, WicketUtils.newPathParameter(repositoryName, endId, entry.path)) .setEnabled(!entry.changeType.equals(ChangeType.DELETE))); String rawUrl = RawServlet.asLink(getContextUrl(), repositoryName, endId, entry.path); item.add(new ExternalLink("raw", rawUrl) .setEnabled(!entry.changeType.equals(ChangeType.DELETE))); item.add(new BookmarkablePageLink<Void>("blame", BlamePage.class, WicketUtils.newPathParameter(repositoryName, endId, entry.path)) .setEnabled(!entry.changeType.equals(ChangeType.ADD) && !entry.changeType.equals(ChangeType.DELETE))); item.add(new BookmarkablePageLink<Void>("history", HistoryPage.class, WicketUtils.newPathParameter(repositoryName, endId, entry.path)) .setEnabled(!entry.changeType.equals(ChangeType.ADD))); } WicketUtils.setAlternatingBackground(item, counter); counter++; } }; comparison.add(pathsView); comparison.add(new Label("diffText", diff.content).setEscapeModelStrings(false)); } // set the default DiffComparator DiffComparator diffComparator = WicketUtils.getDiffComparator(params); ignoreWhitespace.setObject(DiffComparator.IGNORE_WHITESPACE == diffComparator); // // ref selection form // SessionlessForm<Void> refsForm = new SessionlessForm<Void>("compareRefsForm", getClass(), getPageParameters()) { private static final long serialVersionUID = 1L; @Override public void onSubmit() { String from = ComparePage.this.fromRefId.getObject(); String to = ComparePage.this.toRefId.getObject(); boolean ignoreWS = ignoreWhitespace.getObject(); PageParameters params = WicketUtils.newRangeParameter(repositoryName, from, to); if (ignoreWS) { params.add("w", 1); } String absoluteUrl = GitBlitRequestUtils.toAbsoluteUrl(ComparePage.class, params); getRequestCycle().scheduleRequestHandlerAfterCurrent(new RedirectRequestHandler(absoluteUrl)); } }; List<String> refs = new ArrayList<String>(); for (RefModel ref : JGitUtils.getLocalBranches(r, true, -1)) { refs.add(ref.getName()); } if (repository.showRemoteBranches) { for (RefModel ref : JGitUtils.getRemoteBranches(r, true, -1)) { refs.add(ref.getName()); } } for (RefModel ref : JGitUtils.getTags(r, true, -1)) { refs.add(ref.getName()); } refsForm.add(new DropDownChoice<String>("fromRef", fromRefId, refs).setEnabled(refs.size() > 0)); refsForm.add(new DropDownChoice<String>("toRef", toRefId, refs).setEnabled(refs.size() > 0)); refsForm.add(new Label("ignoreWhitespaceLabel", getString(DiffComparator.IGNORE_WHITESPACE.getTranslationKey()))); refsForm.add(new CheckBox("ignoreWhitespaceCheckbox", ignoreWhitespace)); add(refsForm); // // manual ids form // SessionlessForm<Void> idsForm = new SessionlessForm<Void>("compareIdsForm", getClass(), getPageParameters()) { private static final long serialVersionUID = 1L; @Override public void onSubmit() { String from = ComparePage.this.fromCommitId.getObject(); String to = ComparePage.this.toCommitId.getObject(); boolean ignoreWS = ignoreWhitespace.getObject(); PageParameters params = WicketUtils.newRangeParameter(repositoryName, from, to); if (ignoreWS) { params.add("w", 1); } String absoluteUrl = GitBlitRequestUtils.toAbsoluteUrl(ComparePage.class, params); getRequestCycle().scheduleRequestHandlerAfterCurrent(new RedirectRequestHandler(absoluteUrl)); } }; TextField<String> fromIdField = new TextField<String>("fromId", fromCommitId); WicketUtils.setInputPlaceholder(fromIdField, getString("gb.from") + "..."); idsForm.add(fromIdField); TextField<String> toIdField = new TextField<String>("toId", toCommitId); WicketUtils.setInputPlaceholder(toIdField, getString("gb.to") + "..."); idsForm.add(toIdField); idsForm.add(new Label("ignoreWhitespaceLabel", getString(DiffComparator.IGNORE_WHITESPACE.getTranslationKey()))); idsForm.add(new CheckBox("ignoreWhitespaceCheckbox", ignoreWhitespace)); add(idsForm); r.close(); }
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 . j a v a 2 s.c om*/ 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.FederationRegistrationPage.java
License:Apache License
public FederationRegistrationPage(PageParameters params) { super(params); setStatelessHint(true);/*from www . jav a 2s .co m*/ String url = WicketUtils.getUrlParameter(params); String name = WicketUtils.getNameParameter(params); FederationModel registration = app().federation().getFederationRegistration(url, name); if (registration == null) { error(getString("gb.couldNotFindFederationRegistration"), true); } setupPage(registration.isResultData() ? getString("gb.federationResults") : getString("gb.federationRegistration"), registration.url); add(new Label("url", registration.url)); add(WicketUtils.getRegistrationImage("typeIcon", registration, this)); add(new Label("frequency", registration.frequency)); add(new Label("folder", registration.folder)); add(new Label("token", showAdmin ? registration.token : "--")); add(WicketUtils.createTimestampLabel("lastPull", registration.lastPull, getTimeZone(), getTimeUtils())); add(WicketUtils.createTimestampLabel("nextPull", registration.nextPull, getTimeZone(), getTimeUtils())); StringBuilder inclusions = new StringBuilder(); for (String inc : registration.inclusions) { inclusions.append(inc).append("<br/>"); } StringBuilder exclusions = new StringBuilder(); for (String ex : registration.exclusions) { exclusions.append(ex).append("<br/>"); } add(new Label("inclusions", inclusions.toString()).setEscapeModelStrings(false)); add(new Label("exclusions", exclusions.toString()).setEscapeModelStrings(false)); List<RepositoryStatus> list = registration.getStatusList(); Collections.sort(list); DataView<RepositoryStatus> dataView = new DataView<RepositoryStatus>("row", new ListDataProvider<RepositoryStatus>(list)) { private static final long serialVersionUID = 1L; private int counter; @Override protected void onBeforeRender() { super.onBeforeRender(); counter = 0; } @Override public void populateItem(final Item<RepositoryStatus> item) { final RepositoryStatus entry = item.getModelObject(); item.add(WicketUtils.getPullStatusImage("statusIcon", entry.status)); item.add(new Label("name", entry.name)); item.add(new Label("status", entry.status.name())); WicketUtils.setAlternatingBackground(item, counter); counter++; } }; add(dataView); }
From source file:com.gitblit.wicket.pages.ForksPage.java
License:Apache License
public ForksPage(PageParameters params) { super(params); final RepositoryModel pageRepository = getRepositoryModel(); ForkModel root = app().repositories().getForkNetwork(pageRepository.name); List<FlatFork> network = flatten(root); ListDataProvider<FlatFork> forksDp = new ListDataProvider<FlatFork>(network); DataView<FlatFork> forksList = new DataView<FlatFork>("fork", forksDp) { private static final long serialVersionUID = 1L; @Override// w w w. j a v a 2s .c o m public void populateItem(final Item<FlatFork> item) { FlatFork fork = item.getModelObject(); RepositoryModel repository = fork.repository; if (repository.isPersonalRepository()) { UserModel user = app().users().getUserModel(repository.projectPath.substring(1)); if (user == null) { // user account no longer exists user = new UserModel(repository.projectPath.substring(1)); } PersonIdent ident = new PersonIdent(user.getDisplayName(), user.emailAddress == null ? user.getDisplayName() : user.emailAddress); item.add(new AvatarImage("anAvatar", ident, 20)); if (pageRepository.equals(repository)) { // do not link to self item.add(new Label("aProject", user.getDisplayName())); } else { item.add(new LinkPanel("aProject", null, user.getDisplayName(), UserPage.class, WicketUtils.newUsernameParameter(user.username))); } } else { Component swatch; if (repository.isBare) { swatch = new Label("anAvatar", " ").setEscapeModelStrings(false); } else { swatch = new Label("anAvatar", "!"); WicketUtils.setHtmlTooltip(swatch, getString("gb.workingCopyWarning")); } WicketUtils.setCssClass(swatch, "repositorySwatch"); WicketUtils.setCssBackground(swatch, repository.toString()); item.add(swatch); String projectName = repository.projectPath; if (StringUtils.isEmpty(projectName)) { projectName = app().settings().getString(Keys.web.repositoryRootGroupName, "main"); } if (pageRepository.equals(repository)) { // do not link to self item.add(new Label("aProject", projectName)); } else { item.add(new LinkPanel("aProject", null, projectName, ProjectPage.class, WicketUtils.newProjectParameter(projectName))); } } String repo = StringUtils.getLastPathElement(repository.name); UserModel user = GitBlitWebSession.get().getUser(); if (user == null) { user = UserModel.ANONYMOUS; } if (user.canView(repository)) { if (pageRepository.equals(repository)) { // do not link to self item.add(new Label("aFork", StringUtils.stripDotGit(repo))); } else { item.add(new LinkPanel("aFork", null, StringUtils.stripDotGit(repo), SummaryPage.class, WicketUtils.newRepositoryParameter(repository.name))); } item.add(WicketUtils.createDateLabel("lastChange", repository.lastChange, getTimeZone(), getTimeUtils())); } else { item.add(new Label("aFork", repo)); item.add(new Label("lastChange").setVisible(false)); } WicketUtils.setCssStyle(item, "margin-left:" + (32 * fork.level) + "px;"); if (fork.level == 0) { WicketUtils.setCssClass(item, "forkSource"); } else { WicketUtils.setCssClass(item, "forkEntry"); } } }; add(forksList); }
From source file:com.gitblit.wicket.pages.LuceneSearchPage.java
License:Apache License
private void setup(PageParameters params) { setupPage("", ""); // default values ArrayList<String> repositories = new ArrayList<String>(); String query = ""; boolean allRepos = false; int page = 1; int pageSize = app().settings().getInteger(Keys.web.itemsPerPage, 50); // display user-accessible selections UserModel user = GitBlitWebSession.get().getUser(); List<String> availableRepositories = new ArrayList<String>(); for (RepositoryModel model : app().repositories().getRepositoryModels(user)) { if (model.hasCommits && !ArrayUtils.isEmpty(model.indexedBranches)) { availableRepositories.add(model.name); }// w ww . jav a2 s . c o m } if (params != null) { String repository = WicketUtils.getRepositoryName(params); if (!StringUtils.isEmpty(repository)) { repositories.add(repository); } page = WicketUtils.getPage(params); if (!params.get("repositories").isEmpty()) { String value = params.get("repositories").toString(""); List<String> list = StringUtils.getStringsFromValue(value); repositories.addAll(list); } allRepos = params.get("allrepos").toBoolean(false); if (allRepos) { repositories.addAll(availableRepositories); } if (!params.get("query").isEmpty()) { query = params.get("query").toString(""); } else { String value = WicketUtils.getSearchString(params); String type = WicketUtils.getSearchType(params); com.gitblit.Constants.SearchType searchType = com.gitblit.Constants.SearchType.forName(type); if (!StringUtils.isEmpty(value)) { if (searchType == SearchType.COMMIT) { query = "type:" + searchType.name().toLowerCase() + " AND \"" + value + "\""; } else { query = searchType.name().toLowerCase() + ":\"" + value + "\""; } } } } boolean luceneEnabled = app().settings().getBoolean(Keys.web.allowLuceneIndexing, true); if (luceneEnabled) { if (availableRepositories.size() == 0) { info(getString("gb.noIndexedRepositoriesWarning")); } } else { error(getString("gb.luceneDisabled")); } // enforce user-accessible repository selections Set<String> uniqueRepositories = new LinkedHashSet<String>(); for (String selectedRepository : repositories) { if (availableRepositories.contains(selectedRepository)) { uniqueRepositories.add(selectedRepository); } } ArrayList<String> searchRepositories = new ArrayList<String>(uniqueRepositories); // search form final Model<String> queryModel = new Model<String>(query); final Model<ArrayList<String>> repositoriesModel = new Model<ArrayList<String>>(searchRepositories); final Model<Boolean> allreposModel = new Model<Boolean>(allRepos); SessionlessForm<Void> form = new SessionlessForm<Void>("searchForm", getClass()) { private static final long serialVersionUID = 1L; @Override public void onSubmit() { String q = queryModel.getObject(); if (StringUtils.isEmpty(q)) { error(getString("gb.undefinedQueryWarning")); return; } if (repositoriesModel.getObject().size() == 0 && !allreposModel.getObject()) { error(getString("gb.noSelectedRepositoriesWarning")); return; } PageParameters params = new PageParameters(); params.add("repositories", StringUtils.flattenStrings(repositoriesModel.getObject())); params.add("query", queryModel.getObject()); params.add("allrepos", allreposModel.getObject()); LuceneSearchPage page = new LuceneSearchPage(params); setResponsePage(page); } }; ListMultipleChoice<String> selections = new ListMultipleChoice<String>("repositories", repositoriesModel, availableRepositories, new StringChoiceRenderer()); selections.setMaxRows(8); form.add(selections.setEnabled(luceneEnabled)); form.add(new TextField<String>("query", queryModel).setEnabled(luceneEnabled)); form.add(new CheckBox("allrepos", allreposModel)); form.add(new ExternalLink("querySyntax", LUCENE_QUERY_SYNTAX_LINK)); add(form.setEnabled(luceneEnabled)); // execute search final List<SearchResult> results = new ArrayList<SearchResult>(); if (!ArrayUtils.isEmpty(searchRepositories) && !StringUtils.isEmpty(query)) { results.addAll(app().repositories().search(query, page, pageSize, searchRepositories)); } // results header if (results.size() == 0) { if (!ArrayUtils.isEmpty(searchRepositories) && !StringUtils.isEmpty(query)) { add(new Label("resultsHeader", query).setRenderBodyOnly(true)); add(new Label("resultsCount", getString("gb.noHits")).setRenderBodyOnly(true)); } else { add(new Label("resultsHeader").setVisible(false)); add(new Label("resultsCount").setVisible(false)); } } else { add(new Label("resultsHeader", query).setRenderBodyOnly(true)); add(new Label("resultsCount", MessageFormat.format(getString("gb.queryResults"), results.get(0).hitId, results.get(results.size() - 1).hitId, results.get(0).totalHits)) .setRenderBodyOnly(true)); } // search results view ListDataProvider<SearchResult> resultsDp = new ListDataProvider<SearchResult>(results); final DataView<SearchResult> resultsView = new DataView<SearchResult>("searchResults", resultsDp) { private static final long serialVersionUID = 1L; @Override public void populateItem(final Item<SearchResult> item) { final SearchResult sr = item.getModelObject(); switch (sr.type) { case commit: { Label icon = WicketUtils.newIcon("type", "icon-refresh"); WicketUtils.setHtmlTooltip(icon, "commit"); item.add(icon); item.add(new LinkPanel("summary", null, sr.summary, CommitPage.class, WicketUtils.newObjectParameter(sr.repository, sr.commitId))); // show tags Fragment fragment = new Fragment("tags", "tagsPanel", LuceneSearchPage.this); List<String> tags = sr.tags; if (tags == null) { tags = new ArrayList<String>(); } ListDataProvider<String> tagsDp = new ListDataProvider<String>(tags); final DataView<String> tagsView = new DataView<String>("tag", tagsDp) { private static final long serialVersionUID = 1L; @Override public void populateItem(final Item<String> item) { String tag = item.getModelObject(); Component c = new LinkPanel("tagLink", null, tag, TagPage.class, WicketUtils.newObjectParameter(sr.repository, Constants.R_TAGS + tag)); WicketUtils.setCssClass(c, "tagRef"); item.add(c); } }; fragment.add(tagsView); item.add(fragment); break; } case blob: { Label icon = WicketUtils.newIcon("type", "icon-file"); WicketUtils.setHtmlTooltip(icon, "blob"); item.add(icon); item.add(new LinkPanel("summary", null, sr.path, BlobPage.class, WicketUtils.newPathParameter(sr.repository, sr.branch, sr.path))); item.add(new Label("tags").setVisible(false)); break; } } item.add(new Label("fragment", sr.fragment).setEscapeModelStrings(false) .setVisible(!StringUtils.isEmpty(sr.fragment))); item.add(new LinkPanel("repository", null, sr.repository, SummaryPage.class, WicketUtils.newRepositoryParameter(sr.repository))); if (StringUtils.isEmpty(sr.branch)) { item.add(new Label("branch", "null")); } else { item.add(new LinkPanel("branch", "branch", StringUtils.getRelativePath(Constants.R_HEADS, sr.branch), LogPage.class, WicketUtils.newObjectParameter(sr.repository, sr.branch))); } item.add(new Label("author", sr.author)); item.add(WicketUtils.createDatestampLabel("date", sr.date, getTimeZone(), getTimeUtils())); } }; add(resultsView.setVisible(results.size() > 0)); PageParameters pagerParams = new PageParameters(); pagerParams.add("repositories", StringUtils.flattenStrings(repositoriesModel.getObject())); pagerParams.add("query", queryModel.getObject()); boolean showPager = false; int totalPages = 0; if (results.size() > 0) { totalPages = (results.get(0).totalHits / pageSize) + (results.get(0).totalHits % pageSize > 0 ? 1 : 0); showPager = results.get(0).totalHits > pageSize; } add(new PagerPanel("topPager", page, totalPages, LuceneSearchPage.class, pagerParams) .setVisible(showPager)); add(new PagerPanel("bottomPager", page, totalPages, LuceneSearchPage.class, pagerParams) .setVisible(showPager)); }
From source file:com.gitblit.wicket.pages.MyTicketsPage.java
License:Apache License
public MyTicketsPage(PageParameters params) { super(params); setupPage("", getString("gb.myTickets")); UserModel currentUser = GitBlitWebSession.get().getUser(); if (currentUser == null || UserModel.ANONYMOUS.equals(currentUser)) { setResponsePage(getApplication().getHomePage()); return;//from w w w . j av a 2s.co m } final String username = currentUser.getName(); final String[] statiiParam = (params == null) ? TicketsUI.openStatii : (String[]) params.getValues(Lucene.status.name()).stream().map(StringValue::toString).toArray(); final String assignedToParam = (params == null) ? "" : params.get(Lucene.responsible.name()).toString(); final String milestoneParam = (params == null) ? "" : params.get(Lucene.milestone.name()).toString(); final String queryParam = (params == null) ? null : params.get("q").toString(); final String searchParam = (params == null) ? "" : params.get("s").toString(); final String sortBy = (params == null) ? "" : Lucene.fromString(params.get("sort").toString(Lucene.created.name())).name(); final String repositoryId = (params == null) ? "" : params.get(Lucene.rid.name()).toString(); final boolean desc = (params == null) ? true : !"asc".equals(params.get("direction").toString("desc")); // add the user title panel add(new UserTitlePanel("userTitlePanel", currentUser, getString("gb.myTickets"))); // add search form add(new TicketSearchForm("ticketSearchForm", null, searchParam, getClass(), params)); // standard queries add(new BookmarkablePageLink<Void>("changesQuery", MyTicketsPage.class, queryParameters(Lucene.type.matches(TicketModel.Type.Proposal.name()), milestoneParam, statiiParam, assignedToParam, sortBy, desc, repositoryId, 1))); add(new BookmarkablePageLink<Void>("bugsQuery", MyTicketsPage.class, queryParameters(Lucene.type.matches(TicketModel.Type.Bug.name()), milestoneParam, statiiParam, assignedToParam, sortBy, desc, repositoryId, 1))); add(new BookmarkablePageLink<Void>("enhancementsQuery", MyTicketsPage.class, queryParameters(Lucene.type.matches(TicketModel.Type.Enhancement.name()), milestoneParam, statiiParam, assignedToParam, sortBy, desc, repositoryId, 1))); add(new BookmarkablePageLink<Void>("tasksQuery", MyTicketsPage.class, queryParameters(Lucene.type.matches(TicketModel.Type.Task.name()), milestoneParam, statiiParam, assignedToParam, sortBy, desc, repositoryId, 1))); add(new BookmarkablePageLink<Void>("questionsQuery", MyTicketsPage.class, queryParameters(Lucene.type.matches(TicketModel.Type.Question.name()), milestoneParam, statiiParam, assignedToParam, sortBy, desc, repositoryId, 1))); add(new BookmarkablePageLink<Void>("maintenanceQuery", MyTicketsPage.class, queryParameters(Lucene.type.matches(TicketModel.Type.Maintenance.name()), milestoneParam, statiiParam, assignedToParam, sortBy, desc, repositoryId, 1))); add(new BookmarkablePageLink<Void>("resetQuery", MyTicketsPage.class, queryParameters(null, milestoneParam, TicketsUI.openStatii, null, null, true, null, 1))); add(new Label("userDivider")); add(new BookmarkablePageLink<Void>("createdQuery", MyTicketsPage.class, queryParameters(Lucene.createdby.matches(username), milestoneParam, statiiParam, assignedToParam, sortBy, desc, repositoryId, 1))); add(new BookmarkablePageLink<Void>("watchedQuery", MyTicketsPage.class, queryParameters(Lucene.watchedby.matches(username), milestoneParam, statiiParam, assignedToParam, sortBy, desc, repositoryId, 1))); add(new BookmarkablePageLink<Void>("mentionsQuery", MyTicketsPage.class, queryParameters(Lucene.mentions.matches(username), milestoneParam, statiiParam, assignedToParam, sortBy, desc, repositoryId, 1))); add(new BookmarkablePageLink<Void>("responsibleQuery", MyTicketsPage.class, queryParameters(Lucene.responsible.matches(username), milestoneParam, statiiParam, assignedToParam, sortBy, desc, repositoryId, 1))); // 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", MyTicketsPage.class, queryParameters(queryParam, milestoneParam, TicketsUI.openStatii, assignedToParam, sortBy, desc, repositoryId, 1))); add(new BookmarkablePageLink<Void>("closedTickets", MyTicketsPage.class, queryParameters(queryParam, milestoneParam, TicketsUI.closedStatii, assignedToParam, sortBy, desc, repositoryId, 1))); add(new BookmarkablePageLink<Void>("allTickets", MyTicketsPage.class, queryParameters(queryParam, milestoneParam, null, assignedToParam, sortBy, desc, repositoryId, 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, repositoryId, 1); String css = TicketsUI.getStatusClass(status); item.add(new LinkPanel("statusLink", css, status.toString(), MyTicketsPage.class, p) .setRenderBodyOnly(true)); } }; add(statiiLinks); // by sort 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, repositoryId, 1); item.add(new LinkPanel("sortLink", null, ts.name, MyTicketsPage.class, params) .setRenderBodyOnly(true)); } }; add(sortMenu); // by repository final List<QueryResult> tickets = query(initializeQueryBuilder(null, username), 1, Integer.MAX_VALUE, sortBy, desc); final List<RepositoryModel> repositoryChoices = correspondingRepositories(tickets); Collections.sort(repositoryChoices); final RepositoryModel noneChoice = new RepositoryModel(); noneChoice.name = getString("gb.all"); repositoryChoices.add(0, noneChoice); RepositoryModel currentRepository = repositoryChoices.get(0); for (RepositoryModel r : repositoryChoices) { if (r.getRID().equals(repositoryId)) { currentRepository = r; break; } } add(new Label("currentRepository", currentRepository.toString())); ListDataProvider<RepositoryModel> repositoryChoicesDp = new ListDataProvider<RepositoryModel>( repositoryChoices); DataView<RepositoryModel> repositoryMenu = new DataView<RepositoryModel>("repository", repositoryChoicesDp) { private static final long serialVersionUID = 1L; @Override public void populateItem(final Item<RepositoryModel> item) { final RepositoryModel r = item.getModelObject(); String rid = r == noneChoice ? null : r.getRID(); PageParameters params = queryParameters(queryParam, milestoneParam, statiiParam, assignedToParam, sortBy, desc, rid, 1); item.add(new LinkPanel("repositoryLink", null, r.toString(), MyTicketsPage.class, params) .setRenderBodyOnly(true)); } }; add(repositoryMenu); // Update query with filter criteria final QueryBuilder qb = initializeQueryBuilder(queryParam, username); 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()); } } if (noneChoice != currentRepository && !qb.containsField(Lucene.rid.name())) { QueryBuilder q1 = new QueryBuilder(); q1.and(Lucene.rid.matches(repositoryId)); qb.and(q1.toSubquery().toString()); } // paging links int page = (params != null) ? Math.max(1, WicketUtils.getPage(params)) : 1; int pageSize = app().settings().getInteger(Keys.tickets.perPage, 25); final List<QueryResult> allResults = StringUtils.isEmpty(searchParam) ? query(qb, page, pageSize, sortBy, desc) : search(searchParam, page, pageSize); List<QueryResult> viewableResults = new ArrayList<>(allResults.size()); for (QueryResult queryResult : allResults) { RepositoryModel model = app().repositories().getRepositoryModel(currentUser, queryResult.repository); if ((model != null) && (currentUser.canView(model))) { viewableResults.add(queryResult); } } int totalResults = viewableResults.size() == 0 ? 0 : viewableResults.get(0).totalResults; buildPager(queryParam, milestoneParam, statiiParam, assignedToParam, sortBy, desc, repositoryId, page, pageSize, viewableResults.size(), totalResults); final boolean showSwatch = app().settings().getBoolean(Keys.web.repositoryListSwatches, true); add(new TicketListPanel("ticketList", viewableResults, showSwatch, true)); }
From source file:com.gitblit.wicket.pages.MyTicketsPage.java
License:Apache License
protected void buildPager(final String query, final String milestone, final String[] states, final String assignedTo, final String sort, final boolean desc, final String repositoryId, final int page, int pageSize, int count, int total) { boolean showNav = total > (2 * pageSize); boolean allowPrev = page > 1; boolean allowNext = (pageSize * (page - 1) + count) < total; add(new BookmarkablePageLink<Void>("prevLink", MyTicketsPage.class, queryParameters(query, milestone, states, assignedTo, sort, desc, repositoryId, page - 1)) .setEnabled(allowPrev).setVisible(showNav)); add(new BookmarkablePageLink<Void>("nextLink", MyTicketsPage.class, queryParameters(query, milestone, states, assignedTo, sort, desc, repositoryId, page + 1)) .setEnabled(allowNext).setVisible(showNav)); if (total <= pageSize) { add(new Label("pageLink").setVisible(false)); return;/*from www.j av a 2 s . c om*/ } // determine page numbers to display int pages = count == 0 ? 0 : ((total / pageSize) + (total % pageSize == 0 ? 0 : 1)); // preferred number of pagelinks int segments = 5; if (pages < segments) { // not enough data for preferred number of page links segments = pages; } int minpage = Math.min(Math.max(1, page - 2), pages - (segments - 1)); int maxpage = Math.min(pages, minpage + (segments - 1)); List<Integer> sequence = new ArrayList<Integer>(); for (int i = minpage; i <= maxpage; i++) { sequence.add(i); } ListDataProvider<Integer> pagesDp = new ListDataProvider<Integer>(sequence); DataView<Integer> pagesView = new DataView<Integer>("pageLink", pagesDp) { private static final long serialVersionUID = 1L; @Override public void populateItem(final Item<Integer> item) { final Integer i = item.getModelObject(); LinkPanel link = new LinkPanel("page", null, "" + i, MyTicketsPage.class, queryParameters(query, milestone, states, assignedTo, sort, desc, repositoryId, i)); link.setRenderBodyOnly(true); if (i == page) { WicketUtils.setCssClass(item, "active"); } item.add(link); } }; add(pagesView); }
From source file:com.gitblit.wicket.pages.OverviewPage.java
License:Apache License
public OverviewPage(PageParameters params) { super(params); int numberRefs = app().settings().getInteger(Keys.web.summaryRefsCount, 5); Repository r = getRepository();//from w w w . j a v a 2s. co m final RepositoryModel model = getRepositoryModel(); UserModel user = GitBlitWebSession.get().getUser(); if (user == null) { user = UserModel.ANONYMOUS; } List<Metric> metrics = null; Metric metricsTotal = null; if (!model.skipSummaryMetrics && app().settings().getBoolean(Keys.web.generateActivityGraph, true)) { metrics = app().repositories().getRepositoryDefaultMetrics(model, r); metricsTotal = metrics.remove(0); } addSyndicationDiscoveryLink(); // repository description add(new Label("repositoryDescription", getRepositoryModel().description)); // owner links final List<String> owners = new ArrayList<String>(getRepositoryModel().owners); ListDataProvider<String> ownersDp = new ListDataProvider<String>(owners); DataView<String> ownersView = new DataView<String>("repositoryOwners", ownersDp) { private static final long serialVersionUID = 1L; int counter = 0; @Override public void populateItem(final Item<String> item) { String ownername = item.getModelObject(); UserModel ownerModel = app().users().getUserModel(ownername); if (ownerModel != null) { item.add(new LinkPanel("owner", null, ownerModel.getDisplayName(), UserPage.class, WicketUtils.newUsernameParameter(ownerModel.username)).setRenderBodyOnly(true)); } else { Label owner = new Label("owner", ownername); WicketUtils.setCssStyle(owner, "text-decoration: line-through;"); WicketUtils.setHtmlTooltip(owner, MessageFormat.format(getString("gb.failedToFindAccount"), ownername)); item.add(owner); } counter++; item.add(new Label("comma", ",").setVisible(counter < owners.size())); item.setRenderBodyOnly(true); } }; ownersView.setRenderBodyOnly(true); add(ownersView); add(WicketUtils.createTimestampLabel("repositoryLastChange", JGitUtils.getLastChange(r).when, getTimeZone(), getTimeUtils())); add(new Label("repositorySize", model.size)); if (metricsTotal == null) { add(new Label("branchStats", "")); } else { add(new Label("branchStats", MessageFormat.format(getString("gb.branchStats"), metricsTotal.count, metricsTotal.tag, getTimeUtils().duration(metricsTotal.duration)))); } add(new BookmarkablePageLink<Void>("metrics", MetricsPage.class, WicketUtils.newRepositoryParameter(repositoryName))); add(new RepositoryUrlPanel("repositoryUrlPanel", false, user, model)); int reflogCount = app().settings().getInteger(Keys.web.overviewReflogCount, 5); ReflogPanel reflog = new ReflogPanel("reflogPanel", getRepositoryModel(), r, reflogCount, 0); add(reflog); add(new TagsPanel("tagsPanel", repositoryName, r, numberRefs).hideIfEmpty()); add(new BranchesPanel("branchesPanel", getRepositoryModel(), r, numberRefs, false).hideIfEmpty()); // Display an activity line graph insertActivityGraph(metrics); }