source: vlo/branches/to-wicket-1.6/vlo_web_app/src/main/java/eu/clarin/cmdi/vlo/pages/BasePage.java @ 4242

Last change on this file since 4242 was 4242, checked in by twagoo, 10 years ago

get theme only once in BasePage?

File size: 3.7 KB
Line 
1package eu.clarin.cmdi.vlo.pages;
2
3import eu.clarin.cmdi.vlo.Theme;
4import eu.clarin.cmdi.vlo.VloWebApplication;
5import eu.clarin.cmdi.vlo.VloSession;
6import org.apache.wicket.markup.head.CssHeaderItem;
7import org.apache.wicket.markup.head.IHeaderResponse;
8import org.apache.wicket.request.mapper.parameter.PageParameters;
9import org.apache.wicket.markup.html.IHeaderContributor;
10import org.apache.wicket.markup.html.WebPage;
11import org.apache.wicket.markup.html.basic.Label;
12import org.apache.wicket.markup.html.image.Image;
13import org.apache.wicket.markup.html.link.BookmarkablePageLink;
14import org.apache.wicket.request.resource.ContextRelativeResource;
15
16/**
17 * Properties common to all VLO web application's page objects
18 *
19 * @author keeloo
20 */
21public class BasePage extends WebPage implements IHeaderContributor {
22
23    // reference to the web application object
24    static VloWebApplication webApp;
25
26    /**
27     * Make sure every web application object sends this message
28     *
29     * @param vloWebApplication reference to the web application object
30     */
31    public static void setWebApp(VloWebApplication vloWebApplication) {
32        webApp = vloWebApplication;
33    }
34
35    /**
36     * Install a VLO theme<br><br>
37     *
38     * A VLO theme is determined by a page title, a CSS file, and a banner split
39     * in a left and right image.
40     *
41     * The left part of the banner serves as a link to the faceted search page,
42     * the application's start page. In the field below banner there is a link
43     * to the page the web application is launched from; the applications home
44     * page. This link page is defined in the VloConfig file.
45     *
46     * @param parameters
47     */
48    public BasePage(PageParameters parameters) {
49        super(parameters);
50        final Theme currentTheme = VloSession.get().getCurrentTheme();
51       
52        // set the page title
53        Label pageTitle;
54        pageTitle = new Label("pagetitle", currentTheme.pageTitle);
55        add(pageTitle);
56
57        // set the applications start page link to the faceted search page
58        PageParameters startPageParameters = new PageParameters();
59        // add the session persistent parameters
60        startPageParameters.mergeWith(VloSession.get().getVloSessionPageParameters());
61
62        BookmarkablePageLink link = new BookmarkablePageLink("startpage",
63                FacetedSearchPage.class, startPageParameters);
64        add(link);
65
66        // refer to the the left part of the vlo banner as a resource
67        ContextRelativeResource leftImageRes;
68        leftImageRes = new ContextRelativeResource(currentTheme.topLeftImage);
69
70        // create the image
71        Image leftImage;
72        leftImage = new Image("leftimage", leftImageRes);
73
74        // add the image to the page
75        link.add(leftImage);
76
77        // refer to the right part of the vlo banner as a resource
78        ContextRelativeResource rightImageRes;
79        rightImageRes = new ContextRelativeResource(currentTheme.topRightImage);
80
81        // create the image
82        Image rightImage;
83        rightImage = new Image("rightimage", rightImageRes);
84
85        // add it to the page
86        add(rightImage);
87
88        // set the partnerlinks
89        Label partnerLinkMap;
90        partnerLinkMap = new Label("partnerlinkmap", currentTheme.partnerLinkMap);
91        partnerLinkMap.setEscapeModelStrings(false);
92        add(partnerLinkMap);
93    }
94
95    /**
96     * Include the theme's CSS file in the HTML page<br><br>
97     *
98     * This method is invoked when Wicket renders a VLO page.
99     *
100     * @param response
101     */
102    public void renderHead(IHeaderResponse response) {
103        response.render(CssHeaderItem.forUrl(VloSession.get().getCurrentTheme().cssFile));
104    }
105}
Note: See TracBrowser for help on using the repository browser.