IT rekvalifikácia. Seniorní programátori zarábajú až 6 000 €/mesiac a rekvalifikácia je prvým krokom. Zisti, ako na to!

4. diel - Wicket - Titulok, štýly, obrázky

V predchádzajúcom diele sme skončili síce s funkčnou, ale nie príliš peknú, webovou aplikáciou. Najskôr sa zameriame na titulok stránky. Ten je napevno nastavený v triede BasePage v časti head.

<head>
<meta charset="UTF-8">
<title>Titulek</title>
</head>

Tým pádom sa zobrazuje ako pre HomePage, tak pre PhotosPage. Ideálne by však bolo mať titulok vzťahujúce sa k zobrazenej stránke.

Ak by sme zmenili titulok napr. V HomePage.html, k žiadnej zmene v zobrazení popisku by nedošlo. HomePage dedí z BasePage a na miesto v BasePage.html určené tagom <wicket: child /> sa vloží iba tá časť .html súboru potomka uvedená medzi tagy <wicket: extend> a </ wicket: extend>. Nič viac.

Na to sa hodí komponent Label, ktorá sa používa na vkladanie textu do html. V .html do tagu pridáme atribút wicket: id = "title" a v .java vytvoríme Label s id "title" a druhým parametrom modelom a vložíme ho do stránky pomocou add (). Tieto zmeny je potrebné vykonať v BasePage. Ako ale do BasePage.class dostať reťazec z HomePage.class a PhotosPage.class? Pomocou Javy ..

BasePage.class pozmeníme na abstract. Pridáme do nej abstraktné metódu napr. GetTitle (). Keďže je to abstraktné metóda, triedy, ktoré dedí z BasePage.class, ju budú nútené implementovať. Táto metóda implementovaná v potomkoch bude vracať titulok špecifický pre danú stránku. Ďalej ešte v konstruktoru BasePage.class vytvoríme Label a odovzdáme mu reťazec reprezentujúci titulok. Len drobné upozornenie - jedná sa o org.apache.wic­ket.markup.html­.basic.Label a nie o java.awt.Label. To platí pre všetky komponenty. Pozor na automatické doplňovanie importov v IDE.

Model predstavuje objekt, ktorý poskytuje komponente dáta. Môžeme si síce napísať vlastné modely, ale pre najčastejšie situácie má Wicket už modely pripravené. Veľmi často potrebujeme zobraziť nejaký statický text. Model pre vrátenie textu vlastne používa iba metódu GetObject (), ktorá vždy vracia rovnaký reťazec. Takýto model je už vo wicket predpripravený. Stačí napísať new Model ( "Reťazec") a máme model hotový.

BasePage.java

public abstract class BasePage extends WebPage {

    public BasePage() {
        Link homePageLink = new Link("homePage") {
            @Override
            public void onClick() {
                setResponsePage(HomePage.class);
            }
        };
        add(homePageLink);

        Link photosPageLink = new Link("photosPage") {
            @Override
            public void onClick() {
                setResponsePage(PhotosPage.class);
            }
        };
        add(photosPageLink);

        Label titleLB = new Label("title", new Model(getTitle()));
        add(titleLB);
    }

    public abstract String getTitle();
}

BasePage.html

<head>
<meta charset="UTF-8">
<title wicket:id="title"></title>
<link >
</head>

HomePage.java

public class HomePage extends BasePage {

    public HomePage() {

    }

    @Override
    public String getTitle() {
        return "Domovská stránka";
    }
}

PhotosPage.java

public class PhotosPage extends BasePage {

    public PhotosPage() {

    }

    @Override
    public String getTitle() {
        return "Fotky";
    }
}
Apache Wicket
Apache Wicket

Ako ďalší krok zmeníme BasePage.html. Do nadpisu namiesto "Header" napíšeme "Môj Web" a nadpisy s textami "Content" a "Footer" odstránime.

Apache Wicket

Tiež pridáme kaskádové štýly.

BasePage.html

<head>
<meta charset="UTF-8">
<title wicket:id="title"></title>
<link rel="stylesheet" href="style.css" type="text/css" />
</head>

style.css

body {
  font-family: Sans-Serif;
  margin: 0px;
  padding: 0px;
}

#body {
    width: 60%;
    min-width: 600px;
    margin-left: auto;
    margin-right: auto;
}

h1 {
    font-size: 120%;
    border-bottom: 2px solid black;
}

h2 {
    font-size: 110%
}

.message {
    border-bottom: 1px solid black;
}

#menu ul {
    margin: 0px;
    padding: 0px;
}

#menu ul li {
    list-style: none;
    display: inline-block;
}

#menu ul li a {
    text-decoration: none;;
    color: black;
    border: 1px solid black;
    padding: 5px;
}

#menu ul li a:hover {
    background-color: #ccc;
}

#footer {
    border-top: 2px solid black;
}

Pridáme obsah do HomePage.html (a odstránime nadpis).

<body>
    <wicket:extend>
        <div class="message">
            <h2>Trocha kultury neuškodí</h2>
            <p>
                <span class="date">09.11.2014</span>
            </p>
            <p>Musím přiznat, že jsem fanouškem animovaných filmů, a proto
                jsem se nemohl dočkat pokračování filmu "Jak vycvičit draka". Dvojka
                je konečně v kinech a po shlédnutí mohu říci: "Dobrý".</p>
        </div>

        <div class="message">
            <h2>Výlet na Broumovsko</h2>
            <p>
                <span class="date">28.10.2014</span>
            </p>
            <p>Podzim je již v plném proudu a vzhledem k tomu, že počasí se
                umoudřilo, rozhodl jsem se pro krátký výlet na Broumovsko. Barevné
                listí, skály, vítr a ostré podzimní slunce. Výborný relax.</p>
        </div>
    </wicket:extend>
</body>
Apache Wicket
Apache Wicket

Máme stránku s názvom "Fotky", ale zatiaľ je prázdna. V tejto časti si ukážeme, ako pracovať s obrázkami vo wicket.

Obrázky

Tak ako u odkazov, tak iu obrázkov, existuje niekoľko spôsobov ako ich vložiť do stránky. Najjednoduchším je použitie klasického html. Najskôr vložíme na našu stránku logo.

BasePage.html

<div id="header">
    <h1><img src="logo.png" alt="Můj Web" title="Můj Web"/></h1>
</div>

Obrázok logo.png potom musí byť umiestnený v priečinku webapp (v rovnakom umiestnenie ako súbor s kaskádovými štýly).

Ďalší spôsob je použitie package resource. Pomocou tohto spôsobu vložíme obrázky na stránku PhotosPage.

PhotosPage.java

public PhotosPage() {
    PackageResourceReference ref01 = new PackageResourceReference(getClass(), "image.png");
    add(new Image("img01", ref01));

    PackageResourceReference ref02 = new PackageResourceReference(getClass(), "image2.png");
    add(new Image("img02", ref02));
}

PhotosPage.html

<wicket:extend>
    <h2>Fotky</h2>

    <img wicket:id="img01"/>
    <img wicket:id="img02"/>
</wicket:extend>

V tomto prípade je potrebné obrázky potrebné umiestniť v zložke (package), kde sa nachádza java trieda (cz.mujweb.pho­tospage).

Apache Wicket
Apache Wicket
Apache Wicket

To je pre dnešok všetko. Nabudúce sa pozrieme na to, ako vytvoriť Viacjazykové web.


 

Predchádzajúci článok
Wicket - HTML dedičnosť a odkazy
Všetky články v sekcii
Apache Wicket
Preskočiť článok
(neodporúčame)
Wicket - Internacionalizácia a lokalizácia
Článok pre vás napísal vita
Avatar
Užívateľské hodnotenie:
1 hlasov
vita
Aktivity