Example usage for org.apache.wicket.request.handler.resource ResourceStreamRequestHandler ResourceStreamRequestHandler

List of usage examples for org.apache.wicket.request.handler.resource ResourceStreamRequestHandler ResourceStreamRequestHandler

Introduction

In this page you can find the example usage for org.apache.wicket.request.handler.resource ResourceStreamRequestHandler ResourceStreamRequestHandler.

Prototype

public ResourceStreamRequestHandler(IResourceStream resourceStream, String fileName) 

Source Link

Document

Construct.

Usage

From source file:com.chitek.ignition.drivers.generictcp.meta.config.ui.MessageConfigUI.java

License:Apache License

private void addComponents() {

    // Select the first message for initial display
    if (getConfig().messages.isEmpty()) {
        // No messages configured. Create a new message with id=1.
        getConfig().addMessageConfig(new MessageConfig(1));
    }//from   w  w w. java  2  s .c  o m

    currentMessage = getConfig().getMessageList().get(0);
    currentMessage.calcOffsets(getConfig().getMessageIdType().getByteSize());
    currentMessageId = currentMessage.getMessageId();

    // *******************************************************************************************
    // *** Form for XML import
    final FileUploadField uploadField = new FileUploadField("upload-field", new ListModel<FileUpload>());

    Form<?> uploadForm = new Form<Object>("upload-form") {
        @Override
        protected void onSubmit() {
            try {
                FileUpload upload = uploadField.getFileUpload();
                if (upload != null) {
                    handleOnUpload(upload.getInputStream());
                } else {
                    warn(new StringResourceModel("warn.noFileToUpload", this, null).getString());
                }
            } catch (Exception e) {
                this.error(new StringResourceModel("import.error", this, null).getString() + " Exception: "
                        + e.toString());
            }
        }
    };
    uploadForm.add(uploadField);

    SubmitLink importLink = new SubmitLink("import-link");
    uploadForm.add(importLink);

    add(uploadForm);

    // *******************************************************************************************
    // *** The message configuration
    currentMessageModel = new PropertyModel<MessageConfig>(this, "currentMessage");
    editForm = new Form<MessageConfig>("edit-form",
            new CompoundPropertyModel<MessageConfig>(currentMessageModel)) {
        @Override
        protected void onError() {
            // Validation error - reset the message dropdown to the original value
            // Clear input causes the component to reload the model
            currentMessageIdDropdown.clearInput();
            super.onError();
        }
    };

    editForm.add(new MessageFormValidator());

    WebMarkupContainer tableContainer = new WebMarkupContainer("table-container");

    messageIdTypeDropDown = getMessageIdTypeDropdown();
    tableContainer.add(messageIdTypeDropDown);

    currentMessageIdDropdown = getCurrentMessageIdDropdown();

    tableContainer.add(currentMessageIdDropdown);
    Button buttonNew = new Button("new");
    buttonNew.add(new AjaxFormSubmitBehavior("onclick") {
        @Override
        protected void onSubmit(AjaxRequestTarget target) {
            handleNew(target);
        }

        @Override
        protected void onError(AjaxRequestTarget target) {
            handleError(target);
        }
    });
    tableContainer.add(buttonNew);

    Button buttonCopy = new Button("copy");
    buttonCopy.add(new AjaxFormSubmitBehavior("onclick") {
        @Override
        protected void onSubmit(AjaxRequestTarget target) {
            handleCopy(target);
        }

        @Override
        protected void onError(AjaxRequestTarget target) {
            handleError(target);
        }
    });
    tableContainer.add(buttonCopy);

    Button deleteButton = new Button("delete");
    deleteButton.add(new AjaxEventBehavior("onclick") {
        @Override
        protected void onEvent(AjaxRequestTarget target) {
            handleDelete(target);
        }
    });
    tableContainer.add(deleteButton);

    messageTypeDropdown = getMessageTypeDropdown();
    tableContainer.add(messageTypeDropdown);

    tableContainer.add(getQueueModeDropdown());

    tableContainer.add(new CheckBox("usePersistance").setOutputMarkupId(true));

    WebMarkupContainer listEditorContainer = new WebMarkupContainer("list-editor");

    messageIdTextField = getMessageIdTextField();
    listEditorContainer.add(messageIdTextField);

    messageAliasTextField = getMessageAliasTextField();
    listEditorContainer.add(messageAliasTextField);

    // Create the list editor
    editor = new ListEditor<TagConfig>("tags",
            new PropertyModel<List<TagConfig>>(currentMessageModel, "tags")) {
        @Override
        protected void onPopulateItem(EditorListItem<TagConfig> item) {

            item.setModel(new CompoundPropertyModel<TagConfig>(item.getModelObject()));

            BinaryDataType dataType = item.getModelObject().getDataType();
            boolean enable = dataType.isSpecial() ? false : true;

            // Offset is displayed only for information
            item.add(new Label("offset").setOutputMarkupId(true));

            if (enable) {
                item.add(getIdTextField());
            } else {
                // The static TextField has no validation. Validation would fail for special tags.
                item.add(getSpecialIdTextField().setEnabled(false));
            }

            item.add(getAliasTextField().setVisible(enable));

            item.add(getSizeTextField().setEnabled(dataType.isArrayAllowed()));

            item.add(getTagLengthTypeDropDown().setEnabled(dataType.supportsVariableLength()));

            item.add(getDataTypeDropdown());

            // Create the edit links to be used in the list editor
            item.add(getInsertLink());
            item.add(getDeleteLink());
            item.add(getMoveUpLink().setVisible(item.getIndex() > 0));
            item.add(getMoveDownLink().setVisible(item.getIndex() < getList().size() - 1));
        }
    };
    listEditorContainer.add(editor);

    Label noItemsLabel = new Label("no-items-label", new StringResourceModel("noitems", this, null)) {
        @Override
        public boolean isVisible() {
            return editor.getList().size() == 0;
        }
    };

    listEditorContainer.add(noItemsLabel);

    listEditorContainer.add(new EditorSubmitLink("add-row-link") {
        @Override
        public void onSubmit() {
            editor.addItem(new TagConfig());

            // Adjust the visibility of the edit links
            updateListEditor(editor);
        }
    });

    listEditorContainer.setOutputMarkupId(true);

    tableContainer.add(listEditorContainer);
    editForm.add(tableContainer);

    // XML export
    SubmitLink exportLink = new SubmitLink("export-link", editForm) {
        @Override
        public void onSubmit() {
            ResourceStreamRequestHandler handler = new ResourceStreamRequestHandler(getResourceStream(),
                    getFileName());
            handler.setContentDisposition(ContentDisposition.ATTACHMENT);
            handler.setCacheDuration(Duration.NONE);
            getRequestCycle().scheduleRequestHandlerAfterCurrent(handler);
        }

        private String getFileName() {
            return String.format("MsgConfig_%s.xml", currentMessageModel.getObject().getMessageId());
        }

        private IResourceStream getResourceStream() {
            String config = currentMessageModel.getObject().toXMLString();
            return new StringResourceStream(config, "text/xml");
        }
    };
    editForm.add(exportLink);

    uploadForm.add(editForm);
}

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  .  ja  va  2s.  c  om*/
        }
    }

    // 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  ww w. j a va 2 s  . co  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();//  w ww.ja  v a  2s .c  o  m
    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);
}

From source file:com.googlecode.wicket.kendo.ui.datatable.export.CSVDataExporter.java

License:Apache License

/**
 * Exports {@link DataTable} data to a CSV file
 *
 * @param cycle the {@link RequestCycle}
 * @param provider the {@link IDataProvider}
 * @param columns the list of {@link IExportableColumn}
 * @param filename the file name of the output
 *///  ww  w . j  a v a 2  s  .co  m
public static void export(RequestCycle cycle, final IDataProvider<?> provider,
        final List<IExportableColumn> columns, String filename) {
    DataExporterResourceStreamWriter writer = new DataExporterResourceStreamWriter(new CSVDataExporter(),
            provider, columns);
    cycle.scheduleRequestHandlerAfterCurrent(new ResourceStreamRequestHandler(writer, filename));

    try {
        writer.close();
    } catch (IOException e) {
        LOG.error(e.getMessage(), e);
    }
}

From source file:com.romeikat.datamessie.core.base.ui.behavior.AjaxDownloadBehavior.java

License:Open Source License

@Override
public void onRequest() {
    final File file = getFile();
    final IResourceStream fileRsourceStream = new FileResourceStream(file);
    final IRequestHandler resourceStreamRequestHandler = new ResourceStreamRequestHandler(fileRsourceStream,
            file.getName());/*from   w  w  w  .ja  v a 2  s .  c om*/
    getComponent().getRequestCycle().scheduleRequestHandlerAfterCurrent(resourceStreamRequestHandler);
}

From source file:com.romeikat.datamessie.core.base.util.FileUtil.java

License:Open Source License

public synchronized void sendAsResponse(final File file) {
    if (file == null) {
        LOG.warn("No file provided");
        return;/*from  w  w w.ja v  a2s. c  o m*/
    }

    final IResourceStream fileRsourceStream = new FileResourceStream(file);
    final IRequestHandler resourceStreamRequestHandler = new ResourceStreamRequestHandler(fileRsourceStream,
            file.getName());
    RequestCycle.get().scheduleRequestHandlerAfterCurrent(resourceStreamRequestHandler);
}

From source file:de.alpharogroup.wicket.behaviors.AjaxDownloadBehavior.java

License:Apache License

/**
 * {@inheritDoc}//from  w  w w  .j av a  2 s  .co  m
 */
@Override
public void onRequest() {
    final ResourceStreamRequestHandler handler = new ResourceStreamRequestHandler(getResourceStream(),
            getFileName());
    handler.setContentDisposition(ContentDisposition.ATTACHMENT);
    getComponent().getRequestCycle().scheduleRequestHandlerAfterCurrent(handler);
}

From source file:de.inren.frontend.common.panel.DownloadActionLink.java

License:Apache License

@Override
public void onClick(AjaxRequestTarget target) {
    IResourceStream resourceStream = new FileResourceStream(new org.apache.wicket.util.file.File(file));
    getRequestCycle()// w  ww.  ja va 2s . c o m
            .scheduleRequestHandlerAfterCurrent(new ResourceStreamRequestHandler(resourceStream, fileName));
}

From source file:de.tudarmstadt.ukp.clarin.webanno.support.AJAXDownload.java

License:Apache License

@Override
public void onRequest() {
    ResourceStreamRequestHandler handler = new ResourceStreamRequestHandler(getResourceStream(), getFileName());
    handler.setContentDisposition(ContentDisposition.ATTACHMENT);
    getComponent().getRequestCycle().scheduleRequestHandlerAfterCurrent(handler);
}