Showing posts with label zkoss. Show all posts
Showing posts with label zkoss. Show all posts

Friday, September 18, 2015

ZK Framework - Introduction Part 2

MVC

Di era saat ini hampir semua aplikasi menggunakan model MVC, dan ZK sudah siap digunakan untuk sebuah aplikasi MVC. ZK memiliki lingkup pada bagian View dan Controller dalam MVC. Untuk bagian view ini adalah berupa file zul, sedangkan untuk bagian controller merupakan sebuah java class.

Pada kali ini akan di bahas beberapa contoh penggunaan komponen dalam zul dan inplementasi zk pada bagian class controller nya.

Pertama-tama buat sebuah class java dengan nama IndexController.

Dan buat juga sebuah file zul bernama index.zul

Komponen pada file zul

edit isi file zul menjadi seperti berikut:
<?page title="Hello world" contentType="text/html;charset=UTF-8"?>
<zk>
    <window border="normal" apply="com.coba.zkoss.controller.IndexController">
        <grid>
            <columns>
                <column width="100px" align="right"/>
                <column />
            </columns>
            <rows>
                <row>
                    <label id="labelId" value="Input :" />
                    <textbox id="textboxId" />
                </row>
                <row>
                    <cell />
                    <button id="btnSubmit" label="Submit" />
                </row>
            </rows>
        </grid>
    </window>
</zk>

Dalam code diatas bisa dilihat ada sebuah komponen window yang terdapat 3 komponen yaitu Label, Textbox, dan Button yang berada didalam sebuah Grid.
Pada komponen label dan textbox terdapat properti id. Properti id ini penting agar nantinya komponen ini bisa menjadi programmatic. Id ini tidak boleh ada yang sama (duplicate) dalam suatu file zul.
Pada komponen window terdapat sebuah property apply, ini bertujuan untuk mengimplement sebuah kelas controller. Dengan demikian perilaku dan action yang terjadi dalam halaman zul ini bisa diatur dalam kelas controller tersebut.

Kelas Controller

Buka file IndexController.java yang tadi sudah dibuat, dan edit isinya menjadi seperti berikut:

package com.coba.zkoss.controller;

import org.zkoss.zk.ui.select.SelectorComposer;
import org.zkoss.zk.ui.select.annotation.Listen;
import org.zkoss.zk.ui.select.annotation.Wire;
import org.zkoss.zul.Button;
import org.zkoss.zul.Label;
import org.zkoss.zul.Messagebox;
import org.zkoss.zul.Textbox;
import org.zkoss.zul.Window;


public class IndexController extends SelectorComposer<Window>{
    
    @Wire
    private Label labelId;
    @Wire
    private Textbox textboxId;
    @Wire
    private Button btnSubmit;
    
    @Override
    public void doAfterCompose(Window comp) throws Exception {
        // TODO Auto-generated method stub
        super.doAfterCompose(comp);
        
        labelId.setValue("Username :");
        textboxId.setValue("your name");
        
    }
    
    @Listen("onClick = button#btnSubmit")
    public void onSubmit(){
        String message = "Username "+ textboxId.getValue() +" Successfully Saved";
        Messagebox.show(message, "Title Messagebox", Messagebox.OK, Messagebox.INFORMATION);
    }
}

Kelas ini perlu meng-extends SelectorComposer untuk bisa melakukan Wire terhadap komponen yang berada pada file zul. SelectorComposer merupakan salah satu Composer yang tersedia dalam ZK.

Annotation @Wire merupakan anotasi yang digunakan untuk mem-binding sebuah komponen UI di zul. Bisa dilihat di atas ada 3 buah komponen yang di wire dengan nama yang sama dengan id masing-masing type komponen pada file zul.

Override doAfterCompose merupakan method yang di panggil oleh engine ZK setelah komponen pada file zul selesai di generate. Jadi kita bisa menambahkan logic untuk memanipulasi komponen yang berada pada file zul sebelum user bisa melakukan input.

Annotation @Listen merupakan anotasi untuk menghandle action yang terjadi pada UI zul. pada contoh di atas kita gunakan untuk menghandle action onClick pada komponen button dengan id btnSubmit. Apabila button tersebut di klik maka akan muncul popup (Messagebox) yang berisi value dari inputan user pada textbox.


Berikut penampakan UI zul pada browser:

dan kita tesdengan menginput sebuah nama "Supardi" kedalam textbox, lalu klik button Submit.
Maka akan muncul popup seperti berikut:


Didalam method onSubmit kita bisa menambahkan code yang meneruskan data dari UI ke database. Jadi tinggal ditambahkan pemanggilan framework atau coding yang mengatur bagian persistance atau Model dalam sebuah MVC.

Demikianlah Introduce ZK Framework kali ini,
Sekian dan terima kasih...

Tuesday, September 15, 2015

ZK Framework - Introduction Part 1

Overview

Merupakan sebuah Framework Front-End untuk membuat application web java. ZK Framework ini ada 2 jenis/versi, yaitu versi Comumnity Edition (ZK CE) dan Enterprise Edition (ZK EE) perbedaan dari kedua versi tersebut diantaranya adalah pada performance dan beberapa fitur. Sejauh ini saya hanya pernah menggunakan/mengimplement versi ZK CE, jadi untuk lebih detailnya perbedaan dari kedua versi tersebut bisa dilihat pada http://www.zkoss.org/whyzk/Features

Pada ZK ada istilah yang disebut dengan ZUML yaitu kepanjangan dari ZK User Interface Markup Language yang berbasis XML. ZUML ini digunakan pada file ZK, yang memiliki ektensi .zul. File inilah yang nantinya akan di tampilkan pada browser.

Kelebihan dari ZK ini diantaranya adalah:

Support untuk sebuah system MCV. Lingkup dari ZK ini adalah pada bagian view dan controller, jadi bisa dengan mudah di implement dengan framework lain pada bagian Model/Persistance. Tetapi kelebihan yang paling dirasakan adalah memudahkan seorang programmer java dalam mendevelop application web, karena tidak perlu berurusan dengan javascript, html dan css, semua sudah tinggal pakai.

Preparation

Oke selanjutnya kita akan membahas hal-hal yang perlu dipersiapkan untuk bisa memulai development menggunakan ZK. Environment yang diperlukan untuk bisa mendevelope dan menggunakan ZK adalah sbb:
  1. Sebuah Application server seperti tomcat, jetty, glass fish, dan lainnya.
  2. Eclipse IDE, karena tersedia plugin untuk ZK yang bernama ZK Studio. ZK Studio bisa di install pada eclipse melalui Marketplace Eclipse



  3. Dan yang terakhir adalah Maven Archetype untuk project ZK, ini diperlukan untuk project yang menggunakan Maven (http://maven.apache.org/). Maven Archetype bisa di tambahkan melalui: Preference > Maven > Archetype dengan mengisi field catalog file dengan link berikut ==> http://mavensync.zkoss.org/maven2/



Akhirnya persiapan sudah beres, dan selajutnya kita bisa memulai development ZK menggunakan Eclipse.

Create Project ZK

Kita akan membuat sebuah project Maven ZK, dengan cara klik menu File > New > Maven Project.
Selanjutnya pada bagian 'Select an Archetype' set Catalog ZK Maven Archetype dan pilih zk-archetype-webapp




setelah project ter-create, akan terlihat struktur project seperti berikut:



Hello World...

Dalam dunia programming, kalimat perkenalan yang biasanya digunakan saat belajar sebuah teknologi baru adalah Hello World. Maka dari itu kita akan membuat sebuah Hello World pada ZK.

Buka dan edit file index.zul yang berada dalam webapp menjadi seperti berikut:
<?page title="Hello world" contentType="text/html;charset=UTF-8"?>
<zk>
    <window border="normal">
        <label value="Hello World" />
    </window>
</zk>

Compile project maven tersebut menjadi file war, dan deploy pada application server.
Kemudian akses melalui browser dengan url <url-server-local>/nama_file_war, contohnya: 127.0.0.1:8080/zkoss/
Dan hasilnya akan seperti berikut:


Yak cukup sekian dulu introduction ZK Framework part 1,
Silahkan dilanjut ke Part 2