Example usage for org.apache.wicket.markup.html.link BookmarkablePageLink getPageParameters

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

Introduction

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

Prototype

public PageParameters getPageParameters() 

Source Link

Usage

From source file:com.effectivemaven.centrepoint.web.AbstractPageWithStoreTest.java

License:Apache License

@SuppressWarnings("unchecked")
public void assertBookmarkablePageLink(String path, Class<?> expectedPageClass, PageParameters expectedParams) {
    BookmarkablePageLink<String> pageLink = (BookmarkablePageLink<String>) wicketTester
            .getComponentFromLastRenderedPage(path);
    assert expectedPageClass.equals(pageLink.getPageClass());
    assert expectedParams.equals(pageLink.getPageParameters());
}

From source file:fiftyfive.wicket.util.ParameterSpecTest.java

License:Apache License

@Test
public void testCreateLink_indexed() {
    TestBean bean = new TestBean(1L, "foo");
    ParameterSpec builder = new ParameterSpec<TestBean>(TestPage.class, "id", "name");

    BookmarkablePageLink link = builder.createLink("bar", new Model(bean));
    this.tester.startComponent(link);

    Assert.assertEquals("bar", link.getId());
    Assert.assertEquals(TestPage.class, link.getPageClass());

    PageParameters params = link.getPageParameters();
    Assert.assertEquals(bean.getId(), params.get("id").toLongObject());
    Assert.assertEquals(bean.getName(), params.get("name").toString());
}

From source file:fiftyfive.wicket.util.ParameterSpecTest.java

License:Apache License

@Test
public void testCreateLink_named() {
    TestBean bean = new TestBean(1L, "foo");
    ParameterSpec builder = new ParameterSpec<TestBean>(TestPage.class);
    builder.registerParameter("beanId", "id");
    builder.registerParameter("beanName", "name");

    BookmarkablePageLink link = builder.createLink("bar", new Model(bean));
    this.tester.startComponent(link);

    Assert.assertEquals("bar", link.getId());
    Assert.assertEquals(TestPage.class, link.getPageClass());

    PageParameters params = link.getPageParameters();
    Assert.assertEquals(bean.getId(), params.get("beanId").toLongObject());
    Assert.assertEquals(bean.getName(), params.get("beanName").toString());
}

From source file:org.cast.cwm.glossary.BaseGlossaryPanel.java

License:Open Source License

/**
 * Constuct and return an appropriate Link element for the given glossary entry.
 * @param e//w w w. j  a va 2  s .  com
 * @return
 */
public Link<?> newLink(final Character letter, IGlossaryEntry e) {
    BookmarkablePageLink<WebPage> link = new BookmarkablePageLink<WebPage>("link", getGlossaryPageClass()) {
        private static final long serialVersionUID = 1L;

        @Override
        protected CharSequence appendAnchor(ComponentTag tag, CharSequence url) {
            return url + "#" + letter;
        }
    };
    link.getPageParameters().set("word", e.getIdentifier());
    link.add(new Label("label", e.getHeadword()));
    return link;
}

From source file:org.cast.cwm.service.AdminPageService.java

License:Open Source License

public Link getSiteEditPageLink(String wicketId, IModel<? extends Site> mSite) {
    BookmarkablePageLink<Void> link = new BookmarkablePageLink<Void>(wicketId, getSiteEditPage());
    link.getPageParameters().set("siteId", mSite.getObject().getId());
    return link;// ww  w .  j  av  a 2  s. c  o  m
}

From source file:org.cast.isi.ISIApplication.java

License:Open Source License

/**
 * Get a link to this application's Table of Contents, based on the currently
 * logged in user.  Setting a valid {@link ContentLoc} will jump to that 
 * spot in the TOC./*from w  w  w.  j  a  v a 2s  . c  o m*/
 * 
 * @param id wicket id of the link
 * @param loc location to open in the TOC.
 * @return
 */
public BookmarkablePageLink<ISIStandardPage> getTocLink(String id, ContentLoc loc) {

    Class<? extends WebPage> clazz = getTocPageClass(null);
    BookmarkablePageLink<ISIStandardPage> link;
    if (clazz != null) {
        link = new BookmarkablePageLink<ISIStandardPage>(id, getTocPageClass(null));
    } else {
        link = new BookmarkablePageLink<ISIStandardPage>(id, ISIApplication.get().getSignInPageClass());
    }

    if (loc != null) {
        link.getPageParameters().add("loc", loc.getLocation());
    }

    return link;
}

From source file:org.cast.isi.ISITagLinkBuilder.java

License:Open Source License

public WebMarkupContainer buildLink(String id, Tag tag) {
    BookmarkablePageLink<Page> bpl = new BookmarkablePageLink<Page>(id, Tags.class);
    bpl.getPageParameters().add("tag", tag.getName());
    return bpl;/*  ww w .j a va  2  s .  c  om*/
}

From source file:org.cast.isi.ISITagLinkBuilder.java

License:Open Source License

public WebMarkupContainer buildLink(String id, Tag tag, PageParameters parameters) {
    BookmarkablePageLink<Page> link = new BookmarkablePageLink<Page>(id, Tags.class, parameters);
    link.getPageParameters().add("tag", tag.getName());
    return link;//w  w  w. ja v  a 2 s.  co m
}

From source file:org.cast.isi.ISIXmlComponent.java

License:Open Source License

@Override
public Component getDynamicComponent(final String wicketId, final Element elt) {

    if (wicketId.startsWith("object_")) {
        NodeList nodes = elt.getChildNodes();
        String archive = null;//w  w w. jav  a2s .  com
        String dataFile = null;
        for (int i = 0; i < nodes.getLength(); i++) {
            Node nextNode = nodes.item(i);
            if (nextNode instanceof Element) {
                Element next = (Element) nodes.item(i);
                if (next.getAttribute("name").equals("archive")) {
                    archive = next.getAttribute("value");
                } else if (next.getAttribute("name").equals("dataFile")) {
                    dataFile = next.getAttribute("value");
                }
            }
        }
        if (archive != null) {

            String jarUrl = RequestCycle.get().urlFor(getRelativeRef(archive + ".jar"), new PageParameters())
                    .toString();
            String dataUrl = RequestCycle.get().urlFor(getRelativeRef(dataFile), new PageParameters())
                    .toString();

            DeployJava dj = new DeployJava(wicketId);
            dj.setArchive(jarUrl);
            dj.setCode(elt.getAttribute("src"));
            dj.addParameter("dataFile", dataUrl);
            return dj;
        }
        return super.getDynamicComponent(wicketId, elt);

        // link to a short glossary definition modal or main glossary window
    } else if (wicketId.startsWith("glossaryLink_")) {
        IModel<String> wordModel = new Model<String>(elt.getAttribute("word"));
        String glossaryLinkType = ISIApplication.get().getGlossaryLinkType();
        if (glossaryLinkType.equals(ISIApplication.GLOSSARY_TYPE_MODAL) && pageHasMiniGlossary()
                && miniGlossaryModal != null) {
            return new MiniGlossaryLink(wicketId, wordModel, miniGlossaryModal);

        } else if (glossaryLinkType.equals(ISIApplication.GLOSSARY_TYPE_INLINE)) {
            return new EmptyPanel(wicketId);

        } else {
            // Default case: glossary type is MAIN, or we wanted a modal but have no place to put it
            // (eg, we're in a popup window, or modal window)
            GlossaryLink glossaryLink = new GlossaryLink(wicketId, wordModel);
            ISIApplication.get().setLinkProperties(glossaryLink);
            return glossaryLink;
        }

        // inline glossary: linked word
    } else if (wicketId.startsWith("glossword")) {
        WebMarkupContainer glossaryWord = new WebMarkupContainer(wicketId);
        glossaryWord
                .setVisible(ISIApplication.get().glossaryLinkType.equals(ISIApplication.GLOSSARY_TYPE_INLINE));
        return glossaryWord;

        // inline glossary: definition
    } else if (wicketId.startsWith("glossdef")) {
        // Span element, to be filled in with the glossary short def.
        String word = elt.getAttribute("word");
        final String def = ISIApplication.get().getGlossary().getShortDefById(word);
        WebMarkupContainer container;
        container = new WebMarkupContainer(wicketId) {
            private static final long serialVersionUID = 1L;

            @Override
            public void onComponentTagBody(MarkupStream markupStream, ComponentTag openTag) {
                replaceComponentTagBody(markupStream, openTag, def);
            }
        };
        container.add(new AttributeRemover("word"));
        container.setVisible(ISIApplication.get().glossaryLinkType.equals(ISIApplication.GLOSSARY_TYPE_INLINE));
        return container;

        // inline glossary: "more" link to main glossary window         
    } else if (wicketId.startsWith("glosslink")) {
        IModel<String> wordModel = new Model<String>(elt.getAttribute("word"));
        GlossaryLink glossaryLink = new GlossaryLink(wicketId, wordModel);
        ISIApplication.get().setLinkProperties(glossaryLink);
        glossaryLink
                .setVisible(ISIApplication.get().glossaryLinkType.equals(ISIApplication.GLOSSARY_TYPE_INLINE));
        return glossaryLink;

    } else if (wicketId.startsWith("link_")) {
        String href = elt.getAttribute("href");
        // According to NIMAS, href should be in the form "filename.xml#ID"  or just "#ID" for within-file link
        // For authors' convenience, we accept simple "ID" as well.
        int hashLocation = href.indexOf('#');
        if (hashLocation > 0) {
            // filename#ID case
            return new SectionLinkFactory().linkTo(wicketId, href.substring(0, hashLocation),
                    href.substring(hashLocation + 1));
        }
        // "#ID" or "ID" case:
        String file = getModel().getObject().getXmlDocument().getName(); // same file as we're currently viewing
        String id = href.substring(hashLocation + 1); // start at index 0 or 1
        return new SectionLinkFactory().linkTo(wicketId, file, id);

    } else if (wicketId.startsWith("popupLink_")) {
        String href = elt.getAttribute("href");
        // According to NIMAS, href should be in the form "filename.xml#ID"  or just "#ID" for within-file link
        // For authors' convenience, we accept simple "ID" as well.
        int hashLocation = href.indexOf('#');
        String file;
        if (hashLocation > 0) {
            file = href.substring(0, hashLocation);
        } else { // "#ID" or "ID" case:
            file = getModel().getObject().getXmlDocument().getName(); // same file as we're currently viewing
        }
        XmlDocument document = xmlService.getDocument(file);
        String xmlId = href.substring(hashLocation + 1);
        XmlSection section = document.getById(xmlId);
        XmlSectionModel mSection = new XmlSectionModel(section);
        return new AuthoredPopupLink(wicketId, xmlId, mSection);

    } else if (wicketId.startsWith("noteBackLink_")) {
        // Link back from a note to its (first) noteref.
        String idref = elt.getAttribute("idref");
        // Find candidate noterefs in this chapter
        XmlSection sec = getModel().getObject();
        XPath xPath = XPathFactory.newInstance().newXPath();
        xPath.setNamespaceContext(XmlService.get().getNamespaceContext());
        XmlSection linkSection = null;
        String linkText = "?";
        try {
            String path = String.format("//dtb:noteref[@idref='#%s']", idref);
            NodeList nl = (NodeList) xPath.evaluate(path,
                    sec.getXmlDocument().getDocument().getDocumentElement(), XPathConstants.NODESET);
            if (nl.getLength() > 0) {
                Element node = null;
                node = (Element) nl.item(0);
                linkText = node.getTextContent();
                // Scan parents until you find the smallest enclosing XML Section.
                while (linkSection == null && node.getParentNode() != null) {
                    String id = node.getAttributeNS(null, "id");
                    if (id != null) {
                        linkSection = sec.getXmlDocument().getById(id);
                    }
                    node = (Element) node.getParentNode();
                }
            }
        } catch (XPathExpressionException e) {
            e.printStackTrace(); // malformed expression - shouldn't happen
        }
        if (linkSection != null) {
            BookmarkablePageLink<ISIStandardPage> link = new SectionLinkFactory().linkTo(wicketId, linkSection,
                    "note_" + idref);
            link.add(new AttributeRemover("idref"));
            link.add(new Label("text", linkText));
            return link;
        } else {
            log.debug("Could not find noteref for note: idref={}", idref);
            return new SectionLinkFactory().linkToPage(wicketId, null);
        }

    } else if (wicketId.startsWith("fileLink_")) {
        // link to file in content directory
        return new ResourceLink<Object>(wicketId, getRelativeRef(elt.getAttribute("href")));

    } else if (wicketId.startsWith("sectionIcon_")) {
        WebComponent icon = ISIApplication.get().makeIcon(wicketId, elt.getAttribute("class"));
        icon.add(AttributeModifier.replace("class", new Model<String>("sectionIcon")));
        return icon;

    } else if (wicketId.startsWith("thumbRating_")) {
        ContentLoc loc = new ContentLoc(getModel().getObject());
        String thumbId = elt.getAttribute("id");
        ThumbPanel thumbPanel = new ThumbPanel(wicketId, loc, thumbId);
        thumbPanel.add(new AttributeRemover("id"));
        return thumbPanel;

    } else if (wicketId.startsWith("thumbRatingDescription_")) {
        Label thumbRatingDescription = new Label(wicketId,
                new ResourceModel("thumbRatingPanel.ratingDescription", "Rate It:"));
        return thumbRatingDescription;

    } else if (wicketId.startsWith("mediaThumbImage_")) {
        String src = elt.getAttribute("src");
        ResourceReference imgRef = getRelativeRef(src);
        Image image = new Image(wicketId, imgRef) {
            private static final long serialVersionUID = 1L;

            @Override
            protected void onComponentTag(final ComponentTag tag) {
                super.onComponentTag(tag);
                tag.put("width", elt.getAttribute("width"));
                tag.put("height", elt.getAttribute("height"));
            }
        };
        return image;

    } else if (wicketId.startsWith("mediaThumbLink_")) {
        String videoId = elt.getAttributeNS(null, "videoId");
        XmlSectionModel currentSectionModel = getModel();
        VideoLink videoLink = new VideoLink(wicketId, videoId, currentSectionModel);
        videoLink.add(new AttributeRemover("videoId"));
        return videoLink;

    } else if (wicketId.startsWith("videoplayer_")) {
        String videoSrc = elt.getAttribute("src");
        ResourceReference videoRef = getRelativeRef(videoSrc);
        String videoUrl = getRequestCycle().mapUrlFor(videoRef, null).toString();

        Integer width = Integer.valueOf(elt.getAttribute("width"));
        Integer height = Integer.valueOf(elt.getAttribute("height"));

        String preview = elt.getAttribute("poster");
        String captions = elt.getAttribute("captions");
        String audioDescription = elt.getAttribute("audiodescription");

        MediaPlayerPanel comp = new MediaPlayerPanel(wicketId, videoUrl, width, height) {
            private static final long serialVersionUID = 1L;

            @Override
            public void onPlay(String status) {
                if (cwmSessionService.isSignedIn())
                    eventService.saveEvent("video:view",
                            "id=" + elt.getAttribute("videoId") + ",state=" + status, contentPage);
            }
        };

        comp.setFullScreen(true);
        comp.setUseOnPlay(true);

        if (!Strings.isEmpty(preview))
            comp.setPreview(getRelativeRef(preview));

        if (!Strings.isEmpty(captions))
            comp.setCaptionFile(getRelativeRef(captions));

        if (!Strings.isEmpty(audioDescription))
            comp.setAudioDescriptionFile(getRelativeRef(audioDescription));

        comp.add(new AttributeRemover("src", "width", "height", "poster", "captions", "audiodescription",
                "videoId"));

        return comp;

    } else if (wicketId.startsWith("audioplayer_")) {
        String audioSrc = elt.getAttribute("src");
        ResourceReference audioRef = getRelativeRef(audioSrc);
        String audioUrl = getRequestCycle().mapUrlFor(audioRef, null).toString();

        int width = 400;
        if (!elt.getAttribute("width").equals("")) {
            try {
                width = Integer.parseInt(elt.getAttribute("width").trim());
            } catch (Exception e) {
                log.debug("Can't get width for {}: {}", audioUrl, e);
                width = 400;
            }
        }
        AudioPlayerPanel player = new AudioPlayerPanel(wicketId, audioUrl, width, 20);
        player.setShowDownloadLink(false);
        player.setRenderBodyOnly(true);

        String preview = elt.getAttribute("poster");
        if (!Strings.isEmpty(preview))
            player.setPreview(getRelativeRef(preview));

        return player;

    } else if (wicketId.startsWith("swf_")) {

        ResourceReference swfRef = getRelativeRef(elt.getAttribute("src"));
        return new FlashAppletPanel(wicketId, swfRef, Integer.valueOf(elt.getAttribute("width")),
                Integer.valueOf(elt.getAttribute("height")), "");

    } else if (wicketId.startsWith("feedbackButton_")) {
        ContentLoc loc = new ContentLoc(getModel().getObject());
        String responseGroupId = elt.getAttribute("rgid");
        IModel<Prompt> pm = responseService.getOrCreatePrompt(PromptType.FEEDBACK, loc, responseGroupId);
        ResponseFeedbackButtonPanel component = new ResponseFeedbackButtonPanel(wicketId, pm,
                responseFeedbackPanel);
        String forRole = elt.getAttribute("for");
        component.setVisibilityAllowed(isTeacher ? forRole.equals("teacher") : forRole.equals("student"));
        component.add(new AttributeRemover("rgid", "for"));
        return component;
    } else if (wicketId.startsWith("scoreButtons_")) {
        if (isGuest)
            return new EmptyPanel(wicketId);
        IModel<Prompt> promptModel = getPrompt(elt);
        IModel<User> studentModel = ISISession.get().getTargetUserModel();
        ISortableDataProvider<Response> responseProvider = responseService
                .getResponseProviderForPrompt(promptModel, studentModel);
        TeacherScoreResponseButtonPanel component = new TeacherScoreResponseButtonPanel(wicketId,
                responseProvider);
        return component;
    } else if (wicketId.startsWith("showScore_")) {
        if (isGuest)
            return new EmptyPanel(wicketId);
        IModel<Prompt> promptModel = getPrompt(elt);
        IModel<User> studentModel = cwmSessionService.getUserModel();
        ISortableDataProvider<Response> responseProvider = responseService
                .getResponseProviderForPrompt(promptModel, studentModel);
        ScorePanel component = new StudentScorePanel(wicketId, responseProvider);
        return component;
        // A container for a single-select form and whiteboard, notebook links
    } else if (wicketId.startsWith("responseContainer")) {
        return new WebMarkupContainer(wicketId);
        // A single-select, multiple choice form.  MultipleChoiceItems will be added to a RadioGroup
        // child of this form.  
    } else if (wicketId.startsWith("select1_immediate_")) {
        return makeImmediateResponseForm(wicketId, elt);
        // A single-select, multiple choice form.  MultipleChoiceItems will be added to a RadioGroup
        // child of this form.  
    } else if (wicketId.startsWith("select1_delay_")) {
        return makeDelayedResponseForm(wicketId, elt);
        // buttons for viewing in whiteboard and notebook
    } else if (wicketId.startsWith("viewActions")) {
        IModel<Prompt> mPrompt = getPrompt(elt, PromptType.SINGLE_SELECT);
        Long promptId = mPrompt.getObject().getId();
        ResponseViewActionsPanel component = new ResponseViewActionsPanel(wicketId, promptId);
        component.add(new AttributeRemover("rgid", "title", "group", "type"));
        return component;
        // A single-select, multiple choice disabled form.  MultipleChoiceItems will be added to a RadioGroup
        // child of this form.  
    } else if (wicketId.startsWith("select1_view_immediate")) {
        return makeImmediateResponseView(wicketId, elt);
        // A single-select, multiple choice disabled form.  MultipleChoiceItems will be added to a RadioGroup
        // child of this form.  
    } else if (wicketId.startsWith("select1_view_delay")) {
        return makeDelayedResponseView(wicketId, elt);
        // A multiple choice radio button. Stores a "correct" value. This is
        // added to a generic RadioGroup in a SingleSelectForm.
    } else if (wicketId.startsWith("selectItem_")) {
        Component mcItem = new SingleSelectItem(wicketId,
                new Model<String>(wicketId.substring("selectItem_".length())),
                Boolean.valueOf(elt.getAttribute("correct")));
        mcItem.add(new AttributeRemover("correct"));
        return mcItem;

        // A message associated with a wicketId.startsWith("selectItem_").
        // The wicketId of the associated SingleSelectItem should be provided as a "for" attribute.
        // Visibility based on whether the corresponding radio button is selected in the enclosing form.
    } else if (wicketId.startsWith("selectMessage_")) {
        return new SingleSelectMessage(wicketId, elt.getAttribute("for")).add(new AttributeRemover("for"));

        // A delayed feedback message associated with a wicketId.startsWith("selectItem_").
        // The wicketId of the associated SingleSelectItem should be provided as a "for" attribute.
        // Visibility based on whether the response has been reviewed.
    } else if (wicketId.startsWith("selectDelayMessage_")) {
        ISIXmlSection section = getISIXmlSection();
        IModel<XmlSection> currentSectionModel = new XmlSectionModel(section);
        SingleSelectDelayMessage component = new SingleSelectDelayMessage(wicketId, currentSectionModel);
        return component.add(new AttributeRemover("for"));

    } else if (wicketId.startsWith("responseList_")) {
        if (isGuest)
            return new MessageBox(wicketId, "guestResponseArea");
        ContentLoc loc = new ContentLoc(getModel().getObject());
        String responseGroupId = elt.getAttribute("rgid");
        ResponseMetadata metadata = getResponseMetadata(responseGroupId);
        IModel<Prompt> mPrompt = responseService.getOrCreatePrompt(PromptType.RESPONSEAREA, loc,
                responseGroupId, metadata.getCollection());
        ResponseList dataView = new ResponseList(wicketId, mPrompt, metadata, loc,
                ISISession.get().getTargetUserModel());
        dataView.setContext(getResponseListContext(false));
        dataView.setAllowEdit(!isTeacher);
        dataView.setAllowNotebook(!inGlossary && !isTeacher && ISIApplication.get().isNotebookOn());
        dataView.setAllowWhiteboard(!inGlossary && ISIApplication.get().isWhiteboardOn());
        dataView.add(new AttributeRemover("rgid", "group"));
        return dataView;

    } else if (wicketId.startsWith("locking_responseList_")) {
        if (isGuest)
            return new EmptyPanel(wicketId);
        ContentLoc loc = new ContentLoc(getModel().getObject());
        String responseGroupId = elt.getAttribute("rgid");
        ResponseMetadata metadata = getResponseMetadata(responseGroupId);
        IModel<Prompt> mPrompt = responseService.getOrCreatePrompt(PromptType.RESPONSEAREA, loc,
                responseGroupId, metadata.getCollection());
        ResponseList dataView = new LockingResponseList(wicketId, mPrompt, metadata, loc,
                ISISession.get().getTargetUserModel());
        dataView.setContext(getResponseListContext(false));
        dataView.setAllowEdit(!isTeacher);
        dataView.setAllowNotebook(!inGlossary && !isTeacher && ISIApplication.get().isNotebookOn());
        dataView.setAllowWhiteboard(!inGlossary && ISIApplication.get().isWhiteboardOn());
        dataView.add(new AttributeRemover("rgid", "group"));
        return dataView;

    } else if (wicketId.startsWith("period_responseList_")) {
        if (isGuest)
            return new MessageBox(wicketId, "guestResponseArea");
        ContentLoc loc = new ContentLoc(getModel().getObject());
        String responseGroupId = elt.getAttribute("rgid");
        ResponseMetadata metadata = getResponseMetadata(responseGroupId);
        IModel<Prompt> mPrompt = responseService.getOrCreatePrompt(PromptType.RESPONSEAREA, loc,
                responseGroupId, metadata.getCollection());
        PeriodResponseList dataView = new PeriodResponseList(wicketId, mPrompt, metadata, loc,
                ISISession.get().getCurrentPeriodModel());
        dataView.setContext(getResponseListContext(true));
        dataView.setAllowEdit(!isTeacher);
        dataView.setAllowNotebook(!inGlossary && !isTeacher && ISIApplication.get().isNotebookOn());
        dataView.setAllowWhiteboard(!inGlossary && ISIApplication.get().isWhiteboardOn());
        dataView.add(new AttributeRemover("rgid", "group"));
        return dataView;

    } else if (wicketId.startsWith("responseButtons_")) {
        ContentLoc loc = new ContentLoc(getModel().getObject());
        String responseGroupId = elt.getAttribute("rgid");
        Element xmlElement = getModel().getObject().getElement().getOwnerDocument()
                .getElementById(responseGroupId);
        ResponseMetadata metadata = new ResponseMetadata(xmlElement);
        if (!ISIApplication.get().isUseAuthoredResponseType()) {
            // set all the response types to the default per application configuration here
            metadata = adjustResponseTypes(metadata);
        }
        IModel<Prompt> mPrompt = responseService.getOrCreatePrompt(PromptType.RESPONSEAREA, loc,
                metadata.getId(), metadata.getCollection());
        ResponseButtons buttons = new ResponseButtons(wicketId, mPrompt, metadata, loc);
        buttons.setVisible(!isTeacher);
        return buttons;

    } else if (wicketId.startsWith("locking_responseButtons_")) {
        ContentLoc loc = new ContentLoc(getModel().getObject());
        String responseGroupId = elt.getAttribute("rgid");
        Element xmlElement = getModel().getObject().getElement().getOwnerDocument()
                .getElementById(responseGroupId);
        ResponseMetadata metadata = new ResponseMetadata(xmlElement);
        if (!ISIApplication.get().isUseAuthoredResponseType()) {
            // set all the response types to the default per application configuration here
            metadata = adjustResponseTypes(metadata);
        }
        IModel<Prompt> mPrompt = responseService.getOrCreatePrompt(PromptType.RESPONSEAREA, loc,
                metadata.getId(), metadata.getCollection());
        return new LockingResponseButtons(wicketId, mPrompt, metadata, loc, cwmSessionService.getUserModel());

    } else if (wicketId.startsWith("ratePanel_")) {
        if (isGuest)
            return ISIApplication.get().getLoginMessageComponent(wicketId);
        ContentLoc loc = new ContentLoc(getModel().getObject());
        String promptText = null;
        String ratingId = elt.getAttribute("id");
        NodeList nodes = elt.getChildNodes();
        // extract the prompt text authored - we might want to consider re-writing this
        // to use xsl instead of this - but this works for now - ldm
        for (int i = 0; i < nodes.getLength(); i++) {
            Node nextNode = nodes.item(i);
            if (nextNode instanceof Element) {
                Element next = (Element) nodes.item(i);
                if (next.getAttribute("class").equals("prompt")) {
                    //get all the html under the prompt element
                    promptText = new TransformResult(next).getString();
                }
            }
        }
        RatePanel ratePanel = new RatePanel(wicketId, loc, ratingId, promptText);
        ratePanel.add(new AttributeRemover("id"));
        ratePanel.add(new AttributeRemover("type"));
        return ratePanel;

    } else if (wicketId.startsWith("teacherBar_")) {
        WebMarkupContainer teacherBar = new WebMarkupContainer(wicketId);
        teacherBar.setVisible(isTeacher && !inGlossary);
        return teacherBar;

    } else if (wicketId.startsWith("compareResponses_")) {
        IModel<Prompt> mPrompt = getPrompt(elt);
        BookmarkablePageLink<Page> bpl = new BookmarkablePageLink<Page>(wicketId,
                ISIApplication.get().getPeriodResponsePageClass());
        bpl.getPageParameters().add("promptId", mPrompt.getObject().getId());
        ISIApplication.get().setLinkProperties(bpl);
        bpl.setVisible(isTeacher);
        bpl.add(new AttributeRemover("rgid", "for", "type"));
        return bpl;

    } else if (wicketId.startsWith("agent_")) {
        String title = elt.getAttribute("title");
        if (Strings.isEmpty(title))
            title = new StringResourceModel("isi.defaultAgentButtonText", this, null, "Help").getObject();
        AgentLink link = new AgentLink(wicketId, title, elt.getAttribute("responseAreaId"));
        link.add(new AttributeRemover("title", "responseAreaId"));
        return link;

    } else if (wicketId.startsWith("image_")) {
        String src = elt.getAttribute("src");
        ResourceReference imgRef = getRelativeRef(src);
        return new Image(wicketId, imgRef);

    } else if (wicketId.startsWith("imageThumb_")) {
        String src = elt.getAttribute("src");
        int ext = src.lastIndexOf('.');
        src = src.substring(0, ext) + "_t" + src.substring(ext);
        ResourceReference imgRef = getRelativeRef(src);
        Image img = new Image(wicketId, imgRef);
        // FIXME these attributes were removed because indira was adding height and width of the detail image
        // not the thumbnail image - remove when indira gets removed
        img.add(new AttributeRemover("width", "height"));
        return img;

    } else if (wicketId.startsWith("imageDetailButton_")) {
        // for thumbnail images only - no longer for more info
        return new ImageDetailButtonPanel(wicketId, wicketId.substring("imageDetailButton_".length()));
        //        We may want to put some of this back, but for now assuming that any time XSLT requests an image detail button we'll put one in.
        //         if (contentPage == null && !inGlossary) // Don't do imageDetails on non-content pages (e.g. the Table of Contents)
        //            return new WebMarkupContainer(wicketId).setVisible(false);

    } else if (wicketId.startsWith("imgToggleHeader") || wicketId.startsWith("imgDetailToggleHeader")
            || wicketId.startsWith("objectToggleHeader")) {
        // long description header for toggle area

        String src = elt.getAttribute("src");

        // remove everything but the name of the media
        int lastIndex = src.lastIndexOf("/") + 1;
        src = src.substring(lastIndex, src.length());

        Label label;
        String eventType = "ld";
        String detail = null;
        if (wicketId.startsWith("img")) {
            label = new Label(wicketId,
                    new ResourceModel("imageLongDescription.toggleHeading", "image information"));
            String imageId = elt.getAttribute("imageId");
            detail = "imageId=" + imageId;
            label.add(new AttributeRemover("imageId"));
            if (wicketId.startsWith("imgDetailToggleHeader")) {
                label = new Label(wicketId,
                        new ResourceModel("imageLongDescription.toggleHeading", "image information"));
                detail = detail + ",context=detail";
            }
        } else { // video or mp3 files
            if (src.contains(".mp3")) {
                label = new Label(wicketId,
                        new ResourceModel("audioLongDescription.toggleHeading", "more audio information"));
            } else {
                label = new Label(wicketId,
                        new ResourceModel("videoLongDescription.toggleHeading", "more video information"));
            }
            detail = "src=" + src;
        }

        label.add(
                new CollapseBoxBehavior("onclick", eventType, ((ISIBasePage) getPage()).getPageName(), detail));
        label.add(new AttributeRemover("src"));
        return label;

    } else if (wicketId.startsWith("annotatedImage_")) {
        // image with hotspots
        AnnotatedImageComponent annotatedImageComponent = new AnnotatedImageComponent(wicketId, elt,
                getModel());
        annotatedImageComponent.add(new AttributeRemover("annotatedImageId"));
        return annotatedImageComponent;

    } else if (wicketId.startsWith("hotSpot_")) {
        // clickable areas on annotated images
        HotSpotComponent hotSpotComponent = new HotSpotComponent(wicketId, elt);
        hotSpotComponent.add(new AttributeRemover("annotatedImageId"));
        return hotSpotComponent;

    } else if (wicketId.startsWith("slideShow_")) {
        SlideShowComponent slideShowComponent = new SlideShowComponent(wicketId, elt);
        return slideShowComponent;

    } else if (wicketId.startsWith("collapseBox_")) {
        WebMarkupContainer collapseBox = new WebMarkupContainer(wicketId);
        return collapseBox;

    } else if (wicketId.startsWith("feedbackStatusIndicator_")) {
        FeedbackStatusIndicator feedbackStatusIndicator = new FeedbackStatusIndicator(wicketId);
        return feedbackStatusIndicator;

    } else if (wicketId.startsWith("collapseBoxControl-")) {
        String boxSequence = (wicketId.substring("collapseBoxControl-".length()).equals("") ? "0"
                : wicketId.substring("collapseBoxControl-".length()));
        CollapseBoxHeader collapseBoxHeader = new CollapseBoxHeader(wicketId, boxSequence);
        return collapseBoxHeader;

    } else if (wicketId.startsWith("iScienceLink-")) {
        return new AjaxFallbackLink<Object>(wicketId) {
            private static final long serialVersionUID = 1L;

            @Override
            public void onClick(AjaxRequestTarget target) {
                target.prependJavaScript(
                        "$('#iScienceVideo-" + wicketId.substring("iScienceLink-".length()) + "').jqmShow();");
                eventService.saveEvent("iscience:view",
                        "Video #" + wicketId.substring("iScienceLink-".length()),
                        ((ISIBasePage) getPage()).getPageName());
            }
        };

    } else if (wicketId.startsWith("youtube_")) {
        int width = getWidth(elt, 640);
        int height = getHeight(elt, 385);
        String src = elt.getAttribute("src");
        src = src.replace("youtube.com/watch?v=", "youtube.com/v/");

        FlashAppletPanel panel = new FlashAppletPanel(wicketId, width, height);
        panel.add(new AttributeRemover("src", "width", "height"));
        panel.setAppletHRef(src);
        panel.setFullScreen(true);
        return panel;

    } else if (wicketId.startsWith("pageLinkPanel_")) {
        String id = elt.getAttribute("id");
        IModel<XmlSection> currentSectionModel = new XmlSectionModel(
                getModel().getObject().getXmlDocument().getById(id));
        PageLinkPanel panel = new PageLinkPanel(wicketId, currentSectionModel, null);
        panel.add(new AttributeRemover("id"));
        return panel;

    } else if (wicketId.startsWith("sectionStatusIcon_")) {
        String id = elt.getAttribute("id");
        IModel<XmlSection> currentSectionModel = new XmlSectionModel(
                getModel().getObject().getXmlDocument().getById(id));
        return new StudentSectionCompleteToggleImageLink(wicketId, currentSectionModel);

    } else if (wicketId.startsWith("inactiveSectionStatusIcon_")) {
        String id = elt.getAttribute("id");
        IModel<XmlSection> currentSectionModel = new XmlSectionModel(
                getModel().getObject().getXmlDocument().getById(id));
        return new SectionCompleteImageContainer(wicketId, currentSectionModel);

    } else if (wicketId.startsWith("itemSummary_")) {
        boolean noAnswer = Boolean.parseBoolean(elt.getAttributeNS(null, "noAnswer"));
        Component singleSelectComponent = new SingleSelectSummaryXmlComponentHandler().makeComponent(wicketId,
                elt, getModel(), noAnswer);
        singleSelectComponent.add(new AttributeRemover("noAnswer"));
        return singleSelectComponent;

    } else if (wicketId.startsWith("shy")) {
        return new ShyContainer(wicketId);
    } else {
        return super.getDynamicComponent(wicketId, elt);
    }
}

From source file:org.cast.isi.page.ResponseCollections.java

License:Open Source License

protected BookmarkablePageLink<Page> makeCollectionLink(String collectionName) {
    BookmarkablePageLink<Page> bpl = new BookmarkablePageLink<Page>("link",
            ISIApplication.get().getResponseCollectionsPageClass());
    bpl.getPageParameters().add("name", collectionName);
    bpl.add(new Label("name", collectionName));

    // if the param collection name is the same as this one set the indicator that this is the item clicked
    if (haveSelectedCollection()) {
        if (paramCollectionName.equals(collectionName)) {
            bpl.add(new AttributeModifier("class", "selected"));
            bpl.setEnabled(false);/*  w  ww.  ja  va2s  .  c  o m*/
        }
    }
    return bpl;
}