Example usage for org.apache.wicket.markup.html.link Link Link

List of usage examples for org.apache.wicket.markup.html.link Link Link

Introduction

In this page you can find the example usage for org.apache.wicket.markup.html.link Link Link.

Prototype

public Link(final String id, IModel<T> model) 

Source Link

Usage

From source file:almira.sample.web.SearchResultPanel.java

License:Apache License

/**
 * Constructor.//from  w w  w  .j a v  a2  s  .c om
 *
 * @param id          component id
 * @param searchQuery the search query
 */
public SearchResultPanel(String id, String searchQuery) {
    super(id);

    IDataProvider<Catapult> dataProvider;
    if (searchQuery == null) {
        dataProvider = new CatapultListDataProvider(catapultQueryService);
    } else {
        dataProvider = new CatapultSearchDataProvider(catapultQueryService, searchQuery);
    }

    DataView<Catapult> dataView = new DataView<Catapult>("rows", dataProvider, ITEMS_PER_PAGE) {
        @Override
        protected void populateItem(Item<Catapult> item) {
            final Catapult catapult = item.getModelObject();
            item.setModel(new CompoundPropertyModel<Catapult>(catapult));
            item.add(new Label("id"));
            item.add(new Label("name"));
            item.add(new Label("created"));
            item.add(new Label("lastModified"));
            item.add(new Link<Catapult>("delete", item.getModel()) {
                @Override
                public void onClick() {
                    // Detached object: Need to delete by ID!
                    catapultUpdateService.delete(catapult.getId());
                }
            });
        }
    };

    add(dataView);
    add(new PagingNavigator("footerPaginator", dataView));
}

From source file:au.org.theark.core.web.component.panel.DownloadIconLinkPanel.java

License:Open Source License

protected Link<T> buildLink(IModel<T> innerModel) {
    return new Link<T>("arkLink", innerModel) {

        private static final long serialVersionUID = 1L;

        @Override/*from  ww  w. ja  va  2 s.c  o  m*/
        public void onClick() {
            getRequestCycle().scheduleRequestHandlerAfterCurrent(getDownloadRequestHandler());
        }
    };
}

From source file:com.cubeia.games.poker.admin.wicket.util.ArchiveLinkPanel.java

License:Open Source License

@SuppressWarnings("serial")
public ArchiveLinkPanel(String id, final Archiver archiver, final Object entity,
        final Class<? extends BasePage> responsePage) {
    super(id);//w  w  w .java  2  s. c  o m
    Link<String> delete = new Link<String>("link", Model.of("delete")) {

        @Override
        public void onClick() {
            try {
                archiver.archive();
                adminDAO.merge(entity);
                setResponsePage(responsePage);
            } catch (Exception ex) {
                this.getPage().error("Could not archive: " + ex.getMessage());
            }
        }
    };
    delete.add(new AttributeAppender("class", "btn btn-danger btn-mini"));
    add(delete);
}

From source file:com.cubeia.games.poker.admin.wicket.util.DeleteLinkPanel.java

License:Open Source License

@SuppressWarnings("serial")
public DeleteLinkPanel(String id, final Class<?> entityClass, final int entityId,
        final Class<? extends BasePage> responsePage) {
    super(id);// w  w w .j  a v a  2  s  . c  om
    Link<String> delete = new Link<String>("link", Model.of("delete")) {

        @Override
        public void onClick() {
            try {
                adminDAO.removeItem(entityClass, entityId);
                setResponsePage(responsePage);
            } catch (Exception ex) {
                this.getPage().error("Could not delete: " + ex.getMessage());
            }
        }
    };
    delete.add(new AttributeAppender("class", "btn btn-danger btn-mini"));
    add(delete);
}

From source file:com.example.UserSearchPage.java

License:Open Source License

public UserSearchPage() {
    add(new SearchForm("userSearchForm"));
    add(new ListView<User>("users", searchResult) {
        private static final long serialVersionUID = 1L;

        @Override//w  w  w  . j  a  va2s  .  c om
        protected void populateItem(ListItem<User> item) {
            User user = item.getModelObject();
            Link<User> userViewLink = new Link<User>("userView", item.getModel()) {
                private static final long serialVersionUID = 1L;

                public void onClick() {
                    setResponsePage(new UserViewPage(UserSearchPage.this, (User) getModelObject()));
                }
            };
            item.add(userViewLink);
            userViewLink.add(new Label("ID", user.getId()));

            item.add(new Label("firstName", user.getFirstName()));

            item.add(new Label("lastName", user.getLastName()));

            Link<User> teamViewLink = new Link<User>("teamView", item.getModel()) {
                private static final long serialVersionUID = 1L;

                public void onClick() {
                    setResponsePage(new TeamViewPage(UserSearchPage.this, ((User) getModelObject()).getTeam()));
                }
            };
            item.add(teamViewLink);
            teamViewLink.add(new Label("teamLabel", user.getTeam().getName()));

            Link<User> unitViewLink = new Link<User>("unitView", item.getModel()) {
                private static final long serialVersionUID = 1L;

                public void onClick() {
                    setResponsePage(new UnitViewPage(UserSearchPage.this,
                            ((User) getModelObject()).getTeam().getUnit()));
                }
            };
            item.add(unitViewLink);
            unitViewLink.add(new Label("unitLabel", user.getTeam().getUnit().getName()));

            Link<User> countryViewLink = new Link<User>("countryView", item.getModel()) {
                private static final long serialVersionUID = 1L;

                public void onClick() {
                    setResponsePage(new CountryViewPage(UserSearchPage.this,
                            ((User) getModelObject()).getTeam().getUnit().getCountry()));
                }
            };
            item.add(countryViewLink);
            countryViewLink.add(new Label("countryLabel", user.getTeam().getUnit().getCountry().getName()));

            item.add(new Link<User>("userEdit", item.getModel()) {
                private static final long serialVersionUID = 1L;

                public void onClick() {
                    setResponsePage(new UserEditPage(UserSearchPage.this, (User) getModelObject()));
                }
            });
        }
    });
}

From source file:com.francetelecom.clara.cloud.presentation.applications.ApplicationActionPanel.java

License:Apache License

private void initComponent() {
    AjaxLink<Application> deleteBtn = new AjaxLink<Application>("app-delete", getModel()) {
        private static final long serialVersionUID = -3624723770141461652L;

        @Override//from ww w  .  j  av  a2s . c om
        public void onClick(AjaxRequestTarget target) {
            parentPage.deleteApplication(target, getModelObject());
        }

        @Override
        protected void updateAjaxAttributes(AjaxRequestAttributes attributes) {
            attributes.getAjaxCallListeners()
                    .add(new DeleteConfirmationDecorator(WicketUtils
                            .getStringResourceModel(this, "portal.application.action.delete.confirm",
                                    new Model<String[]>(new String[] { getModelObject().getLabel() }))
                            .getObject()));

        }

        @Override
        public boolean isVisible() {
            return canBeDeleted;
        }
    };

    WebMarkupContainer deleteDisabledSpan = new WebMarkupContainer("app-delete-disable");
    if (canBeDeleted) {
        deleteDisabledSpan.setVisible(false);
    }
    add(deleteDisabledSpan);

    deleteSpan = new WebMarkupContainer("deleteImg");
    deleteBtn.add(deleteSpan);
    add(deleteBtn);

    Link<Application> editBtn = new Link<Application>("app-edit", getModel()) {

        private static final long serialVersionUID = -5024306917768033030L;

        @Override
        public void onClick() {
            PageParameters params = new PageParameters();
            params.set("appUid", getModelObject().getUID());
            params.set("edit", "1");

            SelectedAppPage appPage = new SelectedAppPage(params);
            setResponsePage(appPage);
        }

        @Override
        public boolean isVisible() {
            return getModelObject().isEditable();
        }
    };
    editBtn.add(new AttributeAppender("title", new ResourceModel("portal.application.action.modify")));

    WebMarkupContainer editDisabledSpan = new WebMarkupContainer("app-edit-disable");
    if (getModelObject().isEditable()) {
        editDisabledSpan.setVisible(false);
    }
    add(editDisabledSpan);

    editSpan = new WebMarkupContainer("editImg");
    editBtn.add(editSpan);
    add(editBtn);
}

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

License:Apache License

public ReleaseActionPanel(String id, final IModel<ApplicationRelease> model, final DataTable dataTable,
        final ManageApplicationRelease manageApplicationRelease) {
    super(id, model);
    this.manageApplicationRelease = manageApplicationRelease;

    deleteBtn = new AjaxLink<ApplicationRelease>("release-delete", getModel()) {

        @Override/*from  w  w w. ja v  a  2 s  .co  m*/
        public void onClick(AjaxRequestTarget target) {
            try {
                manageApplicationRelease.deleteApplicationRelease(getModelObject().getUID());
                target.add(dataTable);
                if (getPage() instanceof SelectedAppPage) {
                    ((SelectedAppPage) getPage()).updateAppInfopanel(target);
                }
            } catch (ObjectNotFoundException e) {
                BusinessExceptionHandler handler = new BusinessExceptionHandler(this);
                handler.error(e);
                target.add(this.getPage());
            } catch (BusinessException e) {
                //                    String errMsg = getString("portal.release.action.delete.envexists");
                String errMsg = new ResourceModel("portal.release.action.delete.envexists").getObject();
                logger.error(errMsg);
                error(errMsg);
            }
            target.add(this.getPage());
        }

        @Override
        protected void updateAjaxAttributes(AjaxRequestAttributes attributes) {
            String releaseName = getModelObject().getApplication().getLabel() + " - "
                    + getModelObject().getReleaseVersion();
            attributes.getAjaxCallListeners()
                    .add(new DeleteConfirmationDecorator(
                            WicketUtils.getStringResourceModel(this, "portal.release.action.delete.confirm",
                                    new Model<String[]>(new String[] { releaseName })).getObject()));
            //                attributes.getAjaxCallListeners().add(new DeleteConfirmationDecorator(getString("portal.release.action.delete.confirm", new Model<String[]>(new String[]{ releaseName }))));
        }

        @Override
        public boolean isVisible() {
            return canBeDeleted();
        }
    };
    deleteBtn.add(new AttributeAppender("title", new ResourceModel("portal.release.action.delete")));

    WebMarkupContainer deleteDisabledSpan = new WebMarkupContainer("rel-delete-disable");
    if (canBeDeleted()) {
        deleteDisabledSpan.setVisible(false);
    }
    add(deleteDisabledSpan);

    deleteSpan = new WebMarkupContainer("deleteImg");
    deleteBtn.add(deleteSpan);
    add(deleteBtn);

    Link<ApplicationRelease> editBtn = new Link<ApplicationRelease>("release-edit", getModel()) {

        @Override
        public void onClick() {
            PageParameters params = new PageParameters();
            params.set("appUid", getModelObject().getApplication().getUID());
            params.set("releaseUid", getModelObject().getUID());
            params.set("edit", "1");

            SelectedReleasePage releasePage = new SelectedReleasePage(params);
            setResponsePage(releasePage);
        }

        @Override
        public boolean isVisible() {
            return getModelObject().getApplication().isEditable();
        }
    };
    editBtn.add(new AttributeAppender("title", new ResourceModel("portal.release.action.edit")));

    editSpan = new WebMarkupContainer("editImg");
    editBtn.add(editSpan);
    add(editBtn);

    WebMarkupContainer editDisabledSpan = new WebMarkupContainer("release-edit-disable");
    if (getModelObject().getApplication().isEditable()) {
        editDisabledSpan.setVisible(false);
    }
    add(editDisabledSpan);

    Link<ApplicationRelease> editArchitectureBtn = new Link<ApplicationRelease>("release-edit-architecture",
            getModel()) {

        @Override
        public void onClick() {
            PageParameters params = new PageParameters();
            params.set("appUid", getModelObject().getApplication().getUID());
            params.set("releaseUid", getModelObject().getUID());

            DesignerPage designerPage = new DesignerPage(params);
            setResponsePage(designerPage);
        }
    };
    //       
    editArchitectureBtn
            .add(new AttributeAppender("title", new ResourceModel("portal.release.designer.edit.button")));

    editArchitectureSpan = new WebMarkupContainer("editArchitectureImg");
    editArchitectureBtn.add(editArchitectureSpan);
    add(editArchitectureBtn);
}

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 w w  . ja  va  2s.com
        }
    }

    // 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   w ww .ja v a  2s  . c o  m
    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.TreePage.java

License:Apache License

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

    final String path = WicketUtils.getPath(params);

    Repository r = getRepository();//www .  jav a  2 s .  com
    RevCommit commit = getCommit();
    List<PathModel> paths = JGitUtils.getFilesInPath2(r, path, commit);

    // tree page links
    add(new BookmarkablePageLink<Void>("historyLink", HistoryPage.class,
            WicketUtils.newPathParameter(repositoryName, objectId, path)));
    add(new CompressedDownloadsPanel("compressedLinks",
            GitBlitRequestUtils.getRelativePathPrefixToContextRoot(), repositoryName, objectId, path));

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

    // breadcrumbs
    add(new PathBreadcrumbsPanel("breadcrumbs", repositoryName, path, objectId));
    if (path != null && path.trim().length() > 0) {
        // add .. parent path entry
        String parentPath = null;
        if (path.lastIndexOf('/') > -1) {
            parentPath = path.substring(0, path.lastIndexOf('/'));
        }
        PathModel model = new PathModel("..", parentPath, null, 0, FileMode.TREE.getBits(), null, objectId);
        model.isParentPath = true;
        paths.add(0, model);
    }

    final String id = getBestCommitId(commit);

    final ByteFormat byteFormat = new ByteFormat();
    final String baseUrl = WicketUtils.getGitblitURL(getRequest());

    // changed paths list
    ListDataProvider<PathModel> pathsDp = new ListDataProvider<PathModel>(paths);
    DataView<PathModel> pathsView = new DataView<PathModel>("changedPath", pathsDp) {
        private static final long serialVersionUID = 1L;
        int counter;

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

            item.add(new Label("pathPermissions", JGitUtils.getPermissionsFromMode(entry.mode)));
            item.add(WicketUtils.setHtmlTooltip(new Label("filestore", ""), getString("gb.filestore"))
                    .setVisible(entry.isFilestoreItem()));

            if (entry.isParentPath) {
                // parent .. path
                item.add(WicketUtils.newBlankImage("pathIcon"));
                item.add(new Label("pathSize", ""));
                item.add(new LinkPanel("pathName", null, entry.name, TreePage.class,
                        WicketUtils.newPathParameter(repositoryName, id, entry.path)));
                item.add(new Label("pathLinks", ""));
            } else {
                if (entry.isTree()) {
                    // folder/tree link
                    item.add(WicketUtils.newImage("pathIcon", "folder_16x16.png"));
                    item.add(new Label("pathSize", ""));
                    item.add(new LinkPanel("pathName", "list", entry.name, TreePage.class,
                            WicketUtils.newPathParameter(repositoryName, id, entry.path)));

                    // links
                    Fragment links = new Fragment("pathLinks", "treeLinks", TreePage.this);
                    links.add(new BookmarkablePageLink<Void>("tree", TreePage.class,
                            WicketUtils.newPathParameter(repositoryName, id, entry.path)));
                    links.add(new BookmarkablePageLink<Void>("history", HistoryPage.class,
                            WicketUtils.newPathParameter(repositoryName, id, entry.path)));
                    links.add(new CompressedDownloadsPanel("compressedLinks", baseUrl, repositoryName, objectId,
                            entry.path));

                    item.add(links);
                } else if (entry.isSubmodule()) {
                    // submodule
                    String submoduleId = entry.objectId;
                    String submodulePath;
                    boolean hasSubmodule = false;
                    SubmoduleModel submodule = getSubmodule(entry.path);
                    submodulePath = submodule.gitblitPath;
                    hasSubmodule = submodule.hasSubmodule;

                    item.add(WicketUtils.newImage("pathIcon", "git-orange-16x16.png"));
                    item.add(new Label("pathSize", ""));
                    item.add(new LinkPanel("pathName", "list",
                            entry.name + " @ " + getShortObjectId(submoduleId), TreePage.class,
                            WicketUtils.newPathParameter(submodulePath, submoduleId, ""))
                                    .setEnabled(hasSubmodule));

                    Fragment links = new Fragment("pathLinks", "submoduleLinks", TreePage.this);
                    links.add(new BookmarkablePageLink<Void>("view", SummaryPage.class,
                            WicketUtils.newRepositoryParameter(submodulePath)).setEnabled(hasSubmodule));
                    links.add(new BookmarkablePageLink<Void>("tree", TreePage.class,
                            WicketUtils.newPathParameter(submodulePath, submoduleId, ""))
                                    .setEnabled(hasSubmodule));
                    links.add(new BookmarkablePageLink<Void>("history", HistoryPage.class,
                            WicketUtils.newPathParameter(repositoryName, id, entry.path)));
                    links.add(new CompressedDownloadsPanel("compressedLinks", baseUrl, submodulePath,
                            submoduleId, "").setEnabled(hasSubmodule));
                    item.add(links);
                } else {
                    // blob link
                    String displayPath = entry.name;
                    String path = entry.path;
                    if (entry.isSymlink()) {
                        path = JGitUtils.getStringContent(getRepository(), getCommit().getTree(), path);
                        displayPath = entry.name + " -> " + path;
                    }
                    item.add(WicketUtils.getFileImage("pathIcon", entry.name));
                    item.add(new Label("pathSize", byteFormat.format(entry.size)));

                    // links
                    Fragment links = new Fragment("pathLinks", "blobLinks", TreePage.this);

                    if (entry.isFilestoreItem()) {
                        item.add(new LinkPanel("pathName", "list", displayPath, 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);

                            }
                        }));

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

                        links.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 LinkPanel("pathName", "list", displayPath, BlobPage.class,
                                WicketUtils.newPathParameter(repositoryName, id, path)));

                        links.add(new BookmarkablePageLink<Void>("view", BlobPage.class,
                                WicketUtils.newPathParameter(repositoryName, id, path)));
                        String rawUrl = RawServlet.asLink(getContextUrl(), repositoryName, id, path);
                        links.add(new ExternalLink("raw", rawUrl));
                    }

                    links.add(new BookmarkablePageLink<Void>("blame", BlamePage.class,
                            WicketUtils.newPathParameter(repositoryName, id, path)));
                    links.add(new BookmarkablePageLink<Void>("history", HistoryPage.class,
                            WicketUtils.newPathParameter(repositoryName, id, path)));
                    item.add(links);
                }
            }
            WicketUtils.setAlternatingBackground(item, counter);
            counter++;
        }
    };
    add(pathsView);
}