AGENDA
Tutorials - Blackberry
Basic RMS BlackBerry

Proyek ini mirip denga proyek BasicLayoutManagement, perbedaannya adalah pada cara menampilkan tombolnya.



RECORD MANAGEMENT STORE

Proyek ini mirip denga proyek BasicLayoutManagement, perbedaannya adalah pada cara menampilkan tombolnya. Proyek kali ini adalah untuk menampilkan menu berupa tombol yang bersifat dinamis, artinya data pada tombol tersebut akan diambil dari basis data lokal yang disimpan dengan menggunakan teknik RMS (Record Management Store)

Yang menarik pada proyek ini adalah bahwa jumlah dan jenis menu akan berubah2 sesuai denan data yang tersimpan, dan ini sangat cocok digunakan untuk menyediakan layanan yang berbeda bagi user berbeda.

Gambar berikut adalah rancangan aplikasi yang akan Anda buat.

Step 1

Buatlah project baru dengan ketentuan berikut: 
a. Buat proyek baru, dan beri nama: BasicRMS
b. Buat package baru, dan bari nama: www.aplysit.com
c. Buat class baru, dan beri nama: MainMenu

Step 2

Modifikasi file MainMenu.java sehingga menjadi seperti source code berikut:

/**
 * ***********************************************************************
 * Copyright: APLYSIT CORP. – for a better Indonesia Project : Basic RMS Address
 * : Gedung Pusat Teknologi Lt. 3, RICE PT. INTI Bandung 40253, West Java,
 * Indonesia Website : www.aplysit.com Facebook : Aplysit Bandung Facebook :
 * Aplysit Medan Author : Ivan Michael Siregar Phone : +62 22 61530230
 * 081809456734 Desc : This file to manage database
 * ************************************************************************
 */
package www.aplysit.com;

import net.rim.device.api.ui.Field;
import net.rim.device.api.ui.FieldChangeListener;
import net.rim.device.api.ui.UiApplication;
import net.rim.device.api.ui.component.ButtonField;
import net.rim.device.api.ui.component.Dialog;
import net.rim.device.api.ui.container.MainScreen;

public class MainMenu extends UiApplication implements FieldChangeListener {

    //Deklarasikan variabel
    final int buttonWidth = 1000;

    public static void main(String[] args) {
        MainMenu theApp = new MainMenu();
        theApp.enterEventDispatcher();

    }

    public MainMenu() {

        //Membuat objek screen utama beranama baseScreen
        final MainScreen baseScreen = new MainScreen();

        //Membuat tombol Lihat Data
        ButtonField dataview = new ButtonField("MELIHAT DATA", ButtonField.CONSUME_CLICK);
        dataview.setMinimalWidth(buttonWidth);

        //Membuat tombol Isi Data
        ButtonField datafill = new ButtonField("MENGISI DATA", ButtonField.CONSUME_CLICK);
        datafill.setMinimalWidth(buttonWidth);

        //Memasukkan seluruh komponen ke atas baseScreen
        baseScreen.add(dataview);
        baseScreen.add(datafill);

        //Menempatkan baseScreen ke dalam layar
        pushScreen(baseScreen);

        dataview.setChangeListener(new FieldChangeListener() {

            public void fieldChanged(Field field, int context) {
                Dialog.inform("Data View");
                //pushScreen(new DataView());
            }
        });

        datafill.setChangeListener(new FieldChangeListener() {

            public void fieldChanged(Field field, int context) {
                Dialog.inform("Data Fill");
                //pushScreen(new DataFill());
            }
        });
    }

    public void fieldChanged(Field field, int context) {
        // TODO Auto-generated method stub
    }
}

Step 3

Jalankan proyek tersebut, maka hasilnya adalah seperti gambar berikut:

 

Hingga saat ini Anda telah berhasil membuat sebuh menu pada satu form, namun hanya sekadar melakukan handle terhadap klik menu tersebut dengan cara menampilkan pesan saja. Lanjutkan ke langkah berikutnya.

Step 4

Buatlah sebuah file baru bernama Global.java lalu modifikasilah sehingga menjadi seperti source code berikut:

/**
 * ***********************************************************************
 * Copyright: APLYSIT CORP. – for a better Indonesia Project : Basic RMS Address
 * : Gedung Pusat Teknologi Lt. 3, RICE PT. INTI Bandung 40253, West Java,
 * Indonesia Website : www.aplysit.com Facebook : Aplysit Bandung Facebook :
 * Aplysit Medan Author : Ivan Michael Siregar Phone : +62 22 61530230
 * 081809456734 Desc : This file to manage data global
 * ************************************************************************
 */
package www.aplysit.com;

import java.io.IOException;

import javax.microedition.io.HttpConnection;

import net.rim.device.api.io.transport.ConnectionDescriptor;
import net.rim.device.api.io.transport.ConnectionFactory;
import net.rim.device.api.ui.Font;
import net.rim.device.api.ui.FontFamily;
import net.rim.device.api.ui.Ui;
import net.rim.device.api.ui.UiApplication;
import net.rim.device.api.ui.component.Dialog;

public class Global {

    static int buttonWidth = 1000;
    static int choiceRenungan;

    static int buttonPadding = 5;
    static long dbRenungan = 0xdec6a67096f802cL;

    private int deviceHeightMain = 100;
    private int deviceHeightSub0 = 100; //banner
    private int deviceHeightSub1 = 45; //tombol atas KEMBALI KE MENU UTAMA
    private int deviceHeightSub2 = 0; //isi
    private int deviceHeightSub3 = 20; //footer

    public Global() {

    }

    public void setChoiceRenungan(int chc) {
        choiceRenungan = chc;
    }

    public int getChoiceRenungan() {
        return choiceRenungan;
    }

    void setButtonPadding(int chc) {
        buttonPadding = chc;
    }

    public int getButtonPadding() {
        return buttonPadding;
    }

    public int getButtonWidth() {
        return this.buttonWidth;
    }

    void setButtonWidth(int chc) {
        this.buttonWidth = chc;
    }

    public int getDeviceHeightMain() {
        return this.deviceHeightMain;
    }

    public int getDeviceHeightSub0() {
        return this.deviceHeightSub0;
    }

    public int getDeviceHeightSub1() {
        return this.deviceHeightSub1;
    }

    public int getDeviceHeightSub2() {
        return this.deviceHeightSub2;
    }

    public int getDeviceHeightSub3() {
        return this.deviceHeightSub3;
    }

    public Font getJudulFont() {
        //====== { bagian ini untuk menspesifikasikan font yang akan digunakan pada title
        FontFamily timesNewRomanFamily = null;
        try {
            timesNewRomanFamily = FontFamily.forName("Times New Roman");
        } catch (ClassNotFoundException e) {
            e.printStackTrace();
        }

        Font titleFont = timesNewRomanFamily.getFont(Font.PLAIN, 8, Ui.UNITS_pt);

        return titleFont;
        //====== } bagian ini untuk menspesifikasikan font yang akan digunakan pada title
    }

    public Font getButtonFont() {
        //====== { bagian ini untuk menspesifikasikan font yang akan digunakan pada button
        FontFamily alphaSerifFamily = null;
        try {
            alphaSerifFamily = FontFamily.forName("bbalpha serif");
        } catch (ClassNotFoundException e) {
            e.printStackTrace();
        }

        Font buttonFont = alphaSerifFamily.getFont(Font.PLAIN, 6, Ui.UNITS_pt);

        return buttonFont;
        //====== } bagian ini untuk menspesifikasikan font yang akan digunakan pada button
    }

    public Font getButtonFontBold() {
        //====== { bagian ini untuk menspesifikasikan font yang akan digunakan pada button
        FontFamily alphaSerifFamily = null;
        try {
            alphaSerifFamily = FontFamily.forName("bbalpha serif");
        } catch (ClassNotFoundException e) {
            e.printStackTrace();
        }

        Font buttonFont = alphaSerifFamily.getFont(Font.BOLD, 7, Ui.UNITS_pt);

        return buttonFont;
        //====== } bagian ini untuk menspesifikasikan font yang akan digunakan pada button
    }

}

File Global.java akan menyimpan konfigurasi yang digunakan oleh aplikasi
Apabila Anda menjalankan kembali aplikasi tersebut, maka tidak aka nada perubahan apapun pada tampilan yang dihasilkan.

Step 5

Kemudian buatlah lagi sebuah file baru bernama Db.java yang akan digunakan untuk menangani penyimpanan data.

/**
 * ***********************************************************************
 * Copyright: APLYSIT CORP. – for a better Indonesia Project : Basic RMS Address
 * : Gedung Pusat Teknologi Lt. 3, RICE PT. INTI Bandung 40253, West Java,
 * Indonesia Website : www.aplysit.com Facebook : Aplysit Bandung Facebook :
 * Aplysit Medan Author : Ivan Michael Siregar Phone : +62 22 61530230
 * 081809456734 Desc : This file to manage database
 * ************************************************************************
 */
package www.aplysit.com;

import www.aplysit.com.*;

import java.util.Vector;
import net.rim.device.api.system.PersistentObject;
import net.rim.device.api.system.PersistentStore;
import net.rim.device.api.ui.MenuItem;
import net.rim.device.api.ui.component.Dialog;
import net.rim.device.api.util.Persistable;

public class Db {

    /*declaring vector*/
    private static Vector _dataRenungan;

    /*declaring persistent object*/
    private static PersistentObject storeRenungan;

    //======== declare variables here
    String getIdServer;
    String getJudul;
    String getPengarang;
    String getGambar;
    String getIsi;
    String getFlag;

    public int[] arrIndexRenungan;

    Global global = new Global();

    public String getTheItemRenungan(int chc) {
        //synchronizing thread
        synchronized (storeRenungan) {
            String result = "";
            //getting contents of the persistent object
            _dataRenungan = (Vector) storeRenungan.getContents();

            //checking for empty object
            if (!_dataRenungan.isEmpty()) {
                StoreInfo info = (StoreInfo) _dataRenungan.elementAt(global.getChoiceRenungan());
                switch (chc) {
                    case 0:
                        result = (info.getElement(StoreInfo.IDSERVER));
                        break;
                    case 1:
                        result = (info.getElement(StoreInfo.JUDUL));
                        break;
                    case 2:
                        result = (info.getElement(StoreInfo.PENGARANG));
                        break;
                    case 3:
                        result = (info.getElement(StoreInfo.GAMBAR));
                        break;
                    case 4:
                        result = (info.getElement(StoreInfo.ISI));
                        break;
                    case 5:
                        result = (info.getElement(StoreInfo.FLAG));
                        break;
                }
                return (result);
            } else {
                return ("");
            }

        }
    }

    //coding for persistent store RENUNGAN
    static {

        storeRenungan = PersistentStore.getPersistentObject(Global.dbRenungan);
        synchronized (storeRenungan) {
            if (storeRenungan.getContents() == null) {
                storeRenungan.setContents(new Vector());
                storeRenungan.commit();
            }
        }

        _dataRenungan = new Vector();
        _dataRenungan = (Vector) storeRenungan.getContents();

    }

    //new class store info implementing persistable
    private static final class StoreInfo implements Persistable {
        
        //declaring variables
        private Vector _elements;
        public static final int IDSERVER = 0;
        public static final int JUDUL = 1;
        public static final int PENGARANG = 2;
        public static final int GAMBAR = 3;
        public static final int ISI = 4;
        public static final int FLAG = 5;

        public StoreInfo() {
            _elements = new Vector(6);
            for (int i = 0; i < _elements.capacity(); ++i) {
                _elements.addElement(new String(""));
            }
        }

        public String getElement(int id) {
            return (String) _elements.elementAt(id);
        }

        public void setElement(int id, String value) {
            _elements.setElementAt(value, id);
        }
    }

    //{ ===================================================================
    public void saveContent1() {
        //creating an object of inner class StoreInfo
        StoreInfo info = new StoreInfo();
        TheContent tc1 = new TheContent();

        info.setElement(StoreInfo.IDSERVER, "1");
        info.setElement(StoreInfo.JUDUL, "Judul 1");
        info.setElement(StoreInfo.PENGARANG, "Pengarang 1");
        info.setElement(StoreInfo.GAMBAR, "logo.jpg");
        info.setElement(StoreInfo.ISI, tc1.getContent1());
        info.setElement(StoreInfo.FLAG, "1");

        _dataRenungan.addElement(info);

        //synchronizing the thread
        synchronized (storeRenungan) {
            storeRenungan.setContents(_dataRenungan);
            storeRenungan.commit();
        }

    }

    //} ===================================================================
    public String[] getJudulRenungan() {

        final String[] arrJudul;

        //synchronizing thread
        synchronized (storeRenungan) {
            arrJudul = new String[_dataRenungan.size()];
            arrIndexRenungan = new int[_dataRenungan.size()];

            //checking for empty object
            if (!_dataRenungan.isEmpty()) {

                for (int i = 0; i < _dataRenungan.size(); i++) {
                    //create a new object of Store Info class
                    StoreInfo info = (StoreInfo) _dataRenungan.elementAt(i);
                    getJudul = (info.getElement(StoreInfo.JUDUL));
                    arrJudul[i] = getJudul;
                    arrIndexRenungan[i] = i;

                }
            }
        }

        return arrJudul;
    }

    public int[] getIndexRenungan() {
        return arrIndexRenungan;
    }

    public boolean setFlag() {

        //Dialog.alert(global.getChoiceRenungan() + "");
        synchronized (storeRenungan) {
            if (!_dataRenungan.isEmpty()) {
                StoreInfo info = (StoreInfo) _dataRenungan.elementAt(global.getChoiceRenungan());
                info.setElement(5, "0");
                storeRenungan.commit();

                return (true);
            } else {
                return (false);
            }

        }
    }

    public void getItem() {
        //synchronizing thread
        synchronized (storeRenungan) {
            //getting contents of the persistent object
            _dataRenungan = (Vector) storeRenungan.getContents();

            //checking for empty object
            if (!_dataRenungan.isEmpty()) {
                for (int i = 0; i < _dataRenungan.size(); i++) {
                    //if not empty
                    //create a new object of Store Info class
                    StoreInfo info = (StoreInfo) _dataRenungan.elementAt(i);
                    getIdServer = (info.getElement(StoreInfo.IDSERVER));
                    getJudul = (info.getElement(StoreInfo.JUDUL));
                    getPengarang = (info.getElement(StoreInfo.PENGARANG));
                    getGambar = (info.getElement(StoreInfo.GAMBAR));
                    getIsi = (info.getElement(StoreInfo.ISI));
                    getFlag = (info.getElement(StoreInfo.FLAG));

                    show();
                }
            }
        }
    }

    public void show() {
        Dialog.alert("ID SERVER = " + getIdServer + "\nJUDUL = " + getJudul + "\nPENGARANG = : " + getPengarang + "\nGAMBAR = " + getGambar + "\nFLAG =" + getFlag);
    }

}

Step 6

Selanjutnya, buatlah sebuah file DataView.java yang akan digunakan untuk menampilkan tombol-tombol yang datanya bersumber dari RMS yg telah dibuat pada file Db.java sebelumnya.

Lalu modifikasilah agar source codenya menjadi seperti berikut ini:

/**
 * ***********************************************************************
 * Copyright: APLYSIT CORP. – for a better Indonesia Project : Basic RMS Address
 * : Gedung Pusat Teknologi Lt. 3, RICE PT. INTI Bandung 40253, West Java,
 * Indonesia Website : www.aplysit.com Facebook : Aplysit Bandung Facebook :
 * Aplysit Medan Author : Ivan Michael Siregar Phone : +62 22 61530230
 * 081809456734 Desc : This file to view data from FMS
 * ************************************************************************
 */
package www.aplysit.com;

import net.rim.device.api.system.Bitmap;
import net.rim.device.api.system.Display;
import net.rim.device.api.system.EncodedImage;
import net.rim.device.api.ui.Field;
import net.rim.device.api.ui.FieldChangeListener;
import net.rim.device.api.ui.Graphics;
import net.rim.device.api.ui.Manager;
import net.rim.device.api.ui.component.BitmapField;
import net.rim.device.api.ui.component.ButtonField;
import net.rim.device.api.ui.component.Dialog;
import net.rim.device.api.ui.container.MainScreen;
import net.rim.device.api.ui.container.VerticalFieldManager;

public class DataView extends MainScreen implements FieldChangeListener {

    Global global = new Global();
    Db dbase = new Db();

    //Deklarasikan variabel
    final int buttonWidth = 1000;

    //Siapkah section yang membagi form
    private VerticalFieldManager mainManager; //untuk header
    private VerticalFieldManager subManager0; //untuk banner yg mengoverlay header
    private VerticalFieldManager subManager1; //untuk tombol Main Menu
    private VerticalFieldManager subManager2; //untuk tombi isi
    private VerticalFieldManager subManager3; //untuk footer

    //Siapkan gambar untuk Header dan Footer, simpan pada folder res
    private Bitmap _backgroundBitmap = Bitmap.getBitmapResource("header.png");
    private Bitmap _backgroundBitmapFooter = Bitmap.getBitmapResource("footer.png");

    //ini untuk banner
    private int deviceWidthMain = Display.getWidth();
    private int deviceHeightMain = 100;

    //ini untuk menu overlay pada banner
    private int deviceWidthSub0 = Display.getWidth();
    private int deviceHeightSub0 = 100;

    //ini untuk menu overlay pada tombol utama
    private int deviceWidthSub1 = Display.getWidth();
    private int deviceHeightSub1 = 45;

    //ini untuk bagian isi
    private int deviceWidthSub2 = Display.getWidth();
    private int deviceHeightSub2 = Display.getHeight() – deviceHeightSub0 – deviceHeightSub1 – 20;

//ini untuk footer
private int deviceWidthSub3 = Display.getWidth();
    private int deviceHeightSub3 = 20;

    public DataView() {

        super(NO_VERTICAL_SCROLL);

        /**
         * ************************************************************
         * {BEGIN: Mengatur Section Untuk Tampilan
         * *************************************************************
         */
        //===== main manager
        //Pada main manager ini ditempatkan sebuah gambar sbg header
        mainManager = new VerticalFieldManager(
                Manager.NO_VERTICAL_SCROLL
                | Manager.NO_VERTICAL_SCROLLBAR) {
                    public void paint(Graphics graphics) {
                        graphics.clear();
                        graphics.drawBitmap(0, 0, deviceWidthMain,
                                deviceHeightMain, _backgroundBitmap, 0, 0);
                        super.paint(graphics);
                    }
                };

        //===== sub manager 0 sebagai overlay header
        subManager0 = new VerticalFieldManager(
                Manager.VERTICAL_SCROLL
                | Manager.VERTICAL_SCROLLBAR) {
                    protected void sublayout(int maxWidth, int maxHeight) {
                        int displayWidth = deviceWidthSub0; //atur lebar
                        int displayHeight = deviceHeightSub0; //atur tinggi

                        super.sublayout(displayWidth, displayHeight);
                        setExtent(displayWidth, displayHeight);
                    }
                };

        //===== sub manager 1 sebagai tombol BACK TO MAIN MENU
        subManager1 = new VerticalFieldManager(
                Manager.VERTICAL_SCROLL
                | Manager.VERTICAL_SCROLLBAR) {
                    protected void sublayout(int maxWidth, int maxHeight) {
                        int displayWidth = deviceWidthSub1;
                        int displayHeight = deviceHeightSub1;

                        super.sublayout(displayWidth, displayHeight);
                        setExtent(displayWidth, displayHeight);
                    }
                };

        //===== sub manager 2 sebagai bagian utama, seperti list of title
        subManager2 = new VerticalFieldManager(
                Manager.VERTICAL_SCROLL
                | Manager.VERTICAL_SCROLLBAR) {
                    protected void sublayout(int maxWidth, int maxHeight) {
                        int displayWidth = deviceWidthSub2;
                        int displayHeight = deviceHeightSub2;

                        super.sublayout(displayWidth, displayHeight);
                        setExtent(displayWidth, displayHeight);
                    }
                };

        //===== sub manager 3 sebagai FOOTER
        subManager3 = new VerticalFieldManager(
                Manager.VERTICAL_SCROLL
                | Manager.VERTICAL_SCROLLBAR | Manager.BOTTOMMOST) {
                    protected void sublayout(int maxWidth, int maxHeight) {
                        int displayWidth = deviceWidthSub3;
                        int displayHeight = deviceHeightSub3;

                        super.sublayout(displayWidth, displayHeight);
                        setExtent(displayWidth, displayHeight);
                    }
                };

        /**
         * ************************************************************
         * }END: Mengatur Section Untuk Tampilan
         * *************************************************************
         */
        //Membuat objek screen utama beranama baseScreen
        //final MainScreen baseScreen = new MainScreen();
        //Menentukan judul pada form
        //baseScreen.setTitle("Aplysit Corp. – Mengatur Layout");
        /**
         * ************************************************************
         * {BEGIN: Menyiapkan komponen pada masing-masing Sub Manager
         * *************************************************************
         */
        //===== komponen pada subManager0
        //Tidak ada komponen yang perlu ditempatkan pada header
        //===== komponen pada subManager1
        ButtonField menuutama = new ButtonField("MENU UTAMA", ButtonField.CONSUME_CLICK);
        menuutama.setMinimalWidth(buttonWidth);
        menuutama.setLabel("MENU UTAMA");

        //===== subManager2:
        String[] judulRenungan = dbase.getJudulRenungan();
        int[] indexRenungan = dbase.getIndexRenungan();

        for (int i2 = 0; i2 < dbase.arrIndexRenungan.length; i2++) {
            final ButtonField renungan = new ButtonField(judulRenungan[i2] + " " + indexRenungan[i2], ButtonField.CONSUME_CLICK);
            renungan.setMargin(0, global.getButtonPadding(), 0, global.getButtonPadding());
            renungan.setMinimalWidth(global.getButtonWidth());
            renungan.setMinimalWidth(global.getButtonWidth());
            renungan.setFont(global.getButtonFont());

            final int idx = indexRenungan[i2];

            //ambil nilai IDSRVER
            String flagRenungan = dbase.getTheItemRenungan(idx);

            if (flagRenungan.equals("0")) {
                //Dialog.alert(idx + " PLAIN");
                renungan.setFont(global.getButtonFont());//) .setFont(Font.BOLD, 6, Ui.UNITS_pt);
                //Font buttonFont = alphaSerifFamily.getFont(Font.PLAIN, 6, Ui.UNITS_pt);
            } else {
                renungan.setFont(global.getButtonFontBold());
                //Dialog.alert(idx + " BOLD");
            }

            subManager2.add(renungan);
            renungan.setChangeListener(new FieldChangeListener() {

                public void fieldChanged(Field field, int context) {
                    // TODO Auto-generated method stub

                    global.setChoiceRenungan(idx);
                    Dialog.alert("Isinya = " + dbase.getTheItemRenungan(4));
                    //getUiEngine().pushScreen(new RenunganDetail());
                }
            });

        }

        /*
         //===== komponen pada subManager2
         //Membuat tombol Headline
         ButtonField headline = new ButtonField("HEADLINE", ButtonField.CONSUME_CLICK);
         headline.setMinimalWidth(buttonWidth);

         //Membuat tombol Politik
         ButtonField politik = new ButtonField("POLITIK", ButtonField.CONSUME_CLICK);
         politik.setMinimalWidth(buttonWidth);

         //Membuat tombol Olahraga
         ButtonField olahraga = new ButtonField("OLAHRAGA", ButtonField.CONSUME_CLICK);
         olahraga.setMinimalWidth(buttonWidth);

         //Membuat tombol Budaya
         ButtonField budaya = new ButtonField("BUDAYA", ButtonField.CONSUME_CLICK);
         budaya.setMinimalWidth(buttonWidth);

         //Membuat tombol Ekonomi
         ButtonField ekonomi = new ButtonField("EKONOMI", ButtonField.CONSUME_CLICK);
         ekonomi.setMinimalWidth(buttonWidth);

         //Membuat tombol Teknologi
         ButtonField teknologi = new ButtonField("TEKNOLOGI", ButtonField.CONSUME_CLICK);
         teknologi.setMinimalWidth(buttonWidth);

         //Membuat tombol Sosialita
         ButtonField sosialita = new ButtonField("SOSIALITA", ButtonField.CONSUME_CLICK);
         sosialita.setMinimalWidth(buttonWidth);

         //Membuat tombol Kuliner
         ButtonField kuliner = new ButtonField("KULINER", ButtonField.CONSUME_CLICK);
         kuliner.setMinimalWidth(buttonWidth);

         //Membuat tombol Peristiwa
         ButtonField peristiwa = new ButtonField("PERISTIWA", ButtonField.CONSUME_CLICK);
         peristiwa.setMinimalWidth(buttonWidth);

         //Membuat tombol Lowongan
         ButtonField lowongan = new ButtonField("LOWONGAN", ButtonField.CONSUME_CLICK);
         lowongan.setMinimalWidth(buttonWidth);

         //Membuat tombol Konfigurasi
         ButtonField konfigurasi = new ButtonField("KONFIGURASI", ButtonField.CONSUME_CLICK);
         konfigurasi.setMinimalWidth(buttonWidth);

         */

        //Membuat tombol Berbagi
        ButtonField berbagi = new ButtonField("BERBAGI", ButtonField.CONSUME_CLICK);
        berbagi.setMinimalWidth(buttonWidth);
        berbagi.setLabel("BERBAGI");

        //===== komponen pada subManager3
        Bitmap bitmap = EncodedImage.getEncodedImageResource("footer.png").getBitmap();
        BitmapField imageFooter = new BitmapField(bitmap);

        /**
         * ************************************************************
         * }END: Menyiapkan komponen pada masing-masing Sub Manager
         * *************************************************************
         */
        /**
         * ************************************************************
         * {BEGIN: Menempatkan seluruh komponen pada SubManager yg bersesuaian
         * *************************************************************
         */
        //===== subManager0: Tidak ada komponen yg perlu ditempatkan
        //===== subManager1: Mengatur Tombol Utama
        subManager1.add(menuutama);

        //===== subManager2: Mengatur Tombol Menu
        /*
         subManager2.add(headline);
         subManager2.add(politik);
         subManager2.add(olahraga);
         subManager2.add(budaya);
         subManager2.add(ekonomi);
         subManager2.add(teknologi);
         subManager2.add(sosialita);
         subManager2.add(kuliner);
         subManager2.add(peristiwa);
         subManager2.add(lowongan);

         subManager2.add(konfigurasi);
         */
        subManager2.add(berbagi);
        //===== subManager3: Footer
        subManager3.add(imageFooter);

        /**
         * ************************************************************
         * }END: Menempatkan seluruh komponen pada SubManager yg bersesuaian
         * *************************************************************
         */
        /**
         * ************************************************************
         * {BEGIN: Menempatkan seluruh SubManager pada MainManager
         * *************************************************************
         */
        mainManager.add(subManager0);
        mainManager.add(subManager1);
        mainManager.add(subManager2);
        mainManager.add(subManager3);

        /**
         * ************************************************************
         * }END: Menempatkan seluruh SubManager pada MainManager
         * *************************************************************
         */
        //Menempatkan mainManager ke dalam layar
        this.add(mainManager);

        menuutama.setChangeListener(new FieldChangeListener() {

            public void fieldChanged(Field field, int context) {
                Dialog.alert("Halaman Menu Utama sedang dalam pengembangan");
            }
        });

        berbagi.setChangeListener(new FieldChangeListener() {

            public void fieldChanged(Field field, int context) {
                Dialog.alert("Halaman Berbagi sedang dalam pengembangan");
            }
        });

    }

    public void fieldChanged(Field field, int context) {
        // TODO Auto-generated method stub

    }
}

Perhatikan bahwa beberapa perintah yang ditempatkan pada tanda /* ……. */ adalah bagian program yang tidak ikut dieksekusi. Bagian ini sengaja dibuat agar pembaca dapat memahami bahwa file ini pada prinsipnya sama seperti file yang terdapat pada proyek BasicLayoutManagement

Jangan lupa untuk memodifikasi file MainMenu.java, yaitu pada baris 60an, yang sebelumnya seperti ini:

public void fieldChanged(Field field, int context) {
    Dialog.inform("Data View");
    //pushScreen(new DataView());
}

Modifikasi menjadi seperi ini:

public void fieldChanged(Field field, int context) {
    Dialog.inform("Data View");
    pushScreen(new DataView());
}

Tujuannya agalah agar pada saat tombol Melihat Data di klik, maka secara otomatis akan ditampilkan form DataView.java

Lalu cobalah menjalankan programnya, maka Anda akan melihat tampilkan seperti berikut:



Terlihat bahwa tombol yang tampil adalah tombol yang memang disediakan pada file DataView.java dan belum ada tombol lainnya selain daripada kedua tombol tersebut.

Step 7

Selanjutnya, buatlah sebuah file DataFill.java yang akan untuk mengisi data ke dalam RMS, dan selanjutnya data tersebut akan dimanfaatkan sebagai nama tombol yang akan ditampilkan pada file DataView.java

Lalu modifikasilah source codenya menjadi seperti berikut:

/**
 * ***********************************************************************
 * Copyright: APLYSIT CORP. – for a better Indonesia Project : Basic RMS Address
 * : Gedung Pusat Teknologi Lt. 3, RICE PT. INTI Bandung 40253, West Java,
 * Indonesia Website : www.aplysit.com Facebook : Aplysit Bandung Facebook :
 * Aplysit Medan Author : Ivan Michael Siregar Phone : +62 22 61530230
 * 081809456734 Desc : This file to fill data FMS
 * ************************************************************************
 */
package www.aplysit.com;

import net.rim.device.api.system.Bitmap;
import net.rim.device.api.system.Display;
import net.rim.device.api.ui.Field;
import net.rim.device.api.ui.FieldChangeListener;
import net.rim.device.api.ui.component.ButtonField;
import net.rim.device.api.ui.component.Dialog;
import net.rim.device.api.ui.container.MainScreen;
import net.rim.device.api.ui.container.VerticalFieldManager;

public class DataFill extends MainScreen implements FieldChangeListener {

    Global global = new Global();
    Db dbase = new Db();

    //Deklarasikan variabel
    final int buttonWidth = 1000;

    //Siapkah section yang membagi form
    private VerticalFieldManager mainManager; //untuk header
    private VerticalFieldManager subManager0; //untuk banner yg mengoverlay header
    private VerticalFieldManager subManager1; //untuk tombol Main Menu
    private VerticalFieldManager subManager2; //untuk tombi isi
    private VerticalFieldManager subManager3; //untuk footer

    //Siapkan gambar untuk Header dan Footer, simpan pada folder res
    private Bitmap _backgroundBitmap = Bitmap.getBitmapResource("header.png");
    private Bitmap _backgroundBitmapFooter = Bitmap.getBitmapResource("footer.png");

    //ini untuk banner
    private int deviceWidthMain = Display.getWidth();
    private int deviceHeightMain = 100;

    //ini untuk menu overlay pada banner
    private int deviceWidthSub0 = Display.getWidth();
    private int deviceHeightSub0 = 100;

    //ini untuk menu overlay pada tombol utama
    private int deviceWidthSub1 = Display.getWidth();
    private int deviceHeightSub1 = 45;

    //ini untuk bagian isi
    private int deviceWidthSub2 = Display.getWidth();
    private int deviceHeightSub2 = Display.getHeight() – deviceHeightSub0 – deviceHeightSub1 – 20;

//ini untuk footer
private int deviceWidthSub3 = Display.getWidth();
    private int deviceHeightSub3 = 20;

    public DataFill() {

        //Membuat tombol Lihat Data
        ButtonField backtomainmenu = new ButtonField("KEMBALI KE MENU UTAMA", ButtonField.CONSUME_CLICK);
        backtomainmenu.setMinimalWidth(buttonWidth);

        //Membuat tombol Isi Data
        ButtonField datafill = new ButtonField("ISI SEKARANG", ButtonField.CONSUME_CLICK);
        datafill.setMinimalWidth(buttonWidth);

        //Memasukkan seluruh komponen ke atas baseScreen
        this.add(backtomainmenu);
        this.add(datafill);

        backtomainmenu.setChangeListener(new FieldChangeListener() {

            public void fieldChanged(Field field, int context) {
                //Dialog.inform("Data View");
                //pushScreen(new MainMenu());
                getUiEngine().pushScreen(new DataView());
            }
        });

        datafill.setChangeListener(new FieldChangeListener() {

            public void fieldChanged(Field field, int context) {
                //Dialog.inform("Data Fill");
                dbase.saveContent1();
                //pushScreen(new DataFill());
            }
        });
    }

    public void fieldChanged(Field field, int context) {
        // TODO Auto-generated method stub

    }
}

Jangan lupa untuk memodifikasi file MainMenu.java, yaitu pada baris 70an, yang sebelumnya seperti ini:

public void fieldChanged(Field field, int context) {
    Dialog.inform("Data Fill");
    //pushScreen(new DataFill());
}

Modifikasi menjadi seperi ini:

public void fieldChanged(Field field, int context) {
    Dialog.inform("Data Fill");
    pushScreen(new DataFill());
}

Tujuannya agalah agar pada saat tombol Mengisi Data di klik, maka secara otomatis akan berpindah ke form DataFill.java yang baru saja Anda buat.

Step 8

Selanjutnya, buatlah sebuah file TheContent.java yang akan menyediakan isi dari data yang akan disimpan pada RMS, yaitu pada saat tombol Mengisi Data diklik.

Lalu modifikasilah agar source codenya menjadi seperti berikut ini:

/**
 * ***********************************************************************
 * Religion Mobile Community (RMC) Copyright: CV. APLYSIT Address : Jl. Ir. H.
 * Djuanda (Dago) 109 Bandung, West Java, Indonesia Website : www.aplysit.com
 * Facebook : Aplysit Bandung Facebook : Aplysit Medan Email : info@aplysit.com
 * Phone : +62 22 61530230 +62 61 8215413 Desc : this file to manage content,
 * just for trial
 * ************************************************************************
 */
package www.aplysit.com;

import net.rim.device.api.ui.Font;
import net.rim.device.api.ui.FontFamily;
import net.rim.device.api.ui.Ui;

public class TheContent {

    private String isi;

    public TheContent() {

    }

    public String getContent1() {
        isi = "Jumlah manusia di dunia ini sungguh banyak. Miliaran orang menghembuskan nafasnya setiap hari. Tapi, apakah kita semua sudah menentukan apa tujuan hidup kita? Sudah kita pastikan untuk apa kita bernafas setiap hari? Jumlah manusia di dunia ini sungguh banyak. Miliaran orang menghembuskan nafasnya setiap hari. Tapi, apakah kita semua sudah menentukan apa tujuan hidup kita? Sudah kita pastikan untuk apa kita bernafas setiap hari? ";
        return isi;
    }

    public String getContent2() {
        isi = "Jangan-jangan kita hidup hanya untuk menghabiskan umur yang diberikan Tuhan saja. Bagaimana dengan anda? Anda sudah tentukan tujuan hidup anda? Syukurlah kalau sudah. Dan, saya berdoa semoga tujuan anda tercapai. Jangan-jangan kita hidup hanya untuk menghabiskan umur yang diberikan Tuhan saja. Bagaimana dengan anda? Anda sudah tentukan tujuan hidup anda? Syukurlah kalau sudah. Dan, saya berdoa semoga tujuan anda tercapai.";
        return isi;
    }

    public String getContent3() {
        isi = "Kata orang tua, hidup di dunia itu cuma sebentar. Saking sebentarnya, ibarat orang mampir minum. Sayang kalau waktu yang cuma sebentar ini tak berarti. Tapi, tak semua orang bisa dengan mudah menentukan apa yang ia tuju dalam hidupnya. Kita semua mesti melalui perjalanan yang panjang. Kata orang tua, hidup di dunia itu cuma sebentar. Saking sebentarnya, ibarat orang mampir minum. Sayang kalau waktu yang cuma sebentar ini tak berarti. Tapi, tak semua orang bisa dengan mudah menentukan apa yang ia tuju dalam hidupnya. Kita semua mesti melalui perjalanan yang panjang. ";
        return isi;
    }

    public String getContent4() {
        isi = "Dan, mungkin berliku-liku. Baru kita menemukan apa sebenarnya yang kita cari dalam umur yang pendek ini. Tujuan hidup bukan ambisi, tapi lebih pada sebuah jati diri. Ketika anda sudah menentukan apa yang anda tuju, ya itulah diri anda. Untuk hal itulah anda hidup. Dan, mungkin berliku-liku. Baru kita menemukan apa sebenarnya yang kita cari dalam umur yang pendek ini. Tujuan hidup bukan ambisi, tapi lebih pada sebuah jati diri. Ketika anda sudah menentukan apa yang anda tuju, ya itulah diri anda. Untuk hal itulah anda hidup. ";
        return isi;
    }

    public String getContent5() {
        isi = "Mungkin anda berpendapat, ”Ah! Buat apa merenung-renung memikirkan tujuan hidup. Menghabiskan waktu saja. Lebih baik kita produktif dan mendapat sesuatu yang lebih konkret.” Itu hak anda. Tapi, coba pikirkan sebentar. Apakah anda termasuk orang yang percaya kalau hidup itu penuh arti? Life is meaningful? Kalau anda percaya hidup anda punya arti, punya makna, so apapun yang anda lakukan juga pasti bermakna. Okay, daripada berputar-putar dan membuat anda bingung dengan berbagai pertanyaan yang saya ajukan, lebih baik kita bahas bagaimana cara kita bisa menemukan tujuan hidup kita. Setuju? Saya yakin, anda tidak bisa serta merta mendapatkan jawaban ketika saya tanya, apa tujuan hidup anda? Cara di bawah ini saya dapatkan secara tidak sengaja. Beberapa waktu lalu saya iseng surfing dan mendapatkan artikel menarik. Dan, saya temukan cara menemukan tujuan hidup anda hanya dalam 4 langkah. Anda siap? 1. Ambil secarik kertas kosong atau buka laptop. Bisa juga hidupkan PC. Buat file. 2. Jangan lupa, di bagian atas kertas anda tuliskan judul “apa tujuan hidup saya?” 3. Tuliskan apa saja yang anda tuju dalam hidup anda. Atau, jika anda ingin lebih cepat, buka laptop dan mulai menulis. Misal, no 1 tujuan hidup anda ingin kaya, no 2. anda ingin punya istri 4, no 3 anda ingin keliling dunia. Terus tuliskan apa yang anda mau. 4. Jangan berhenti menulis semua yang anda inginkan sampai anda menemukan jawaban yang membuat anda meneteskan air mata. Ya, jangan berhenti sampai anda menangis. Jawaban yang anda temukan dalam keadaan menangis itulah yang anda cari dalam hidup anda. Siapapun anda, apapun pekerjaan anda, apapun jabatan anda, saya yakin anda perlu waktu untuk bisa meneteskan air mata. Entah anda presiden, pengusaha sukses, karyawan, orang kaya, orang miskin, temukan hal itu sampai anda menangis. Banyaknya waktu yang kita perlukan tak sama. Ada yang 15 menit menulis sudah menangis. Ada yang 1 jam baru bisa menangis, atau bahkan 3 jam baru bisa menemukan apa yang ia cari dalam hidup. Dan, daftar jawaban setiap orang juga berbeda- beda. Ada yang sudah mendapatkan tujuan hidupnya pada urutan no 90, ada juga yang urutan 200 baru bisa menangis. Semua ini tergantung keadaan pikiran masing-masing. Juga, tergantung pada memori setiap orang. Kita pasti mengalami pengalaman hidup yang berbeda-beda. Dan, pengalaman ini pula yang membuat tujuan hidup kita berbeda dari yang lain. Sekarang anda mungkin bertanya, kenapa saya menulis artikel ini? Adakah hubungannya dengan bisnis internet? Atau saya mau alih profesi jadi guru spiritual? :-) ederhana saja alasannya. Tujuan hidup anda akan mengawal kehidupan anda sehari-hari. Tujuan hidup anda akan mempengaruhi keseharian anda. Apa yang anda lakukan mau tidak mau pasti mengarah pada apa yang anda tuju. Itulah pentingnya memiliki sebuah tujuan dalam hidup. Ada satu titik yang kita tuju, ada sebuah perjalanan yang kita lalui, ada sebuah skenario yang mesti kita lakoni. Dan, semua itu anda sendiri dalangnya. Anda sendiri sutradaranya. Semoga maksud saya bisa anda pahami. Bisnis anda juga harus memiliki tujuan. Jangan biarkan waktu berlalu tanpa ada skenario besar untuk kemajuan dan perkembangan bisnis anda. Tidak ada orang yang merencanakan kegagalan, maka anda perlu memantapkan juga tujuan bisnis anda. Agar anda mudah melangkah, dan agar langkah anda tertata, terencana. Bisnis, karir, pekerjaan, seringkali menjadi bagian paling penting dalam hidup seseorang. Mereka yang mampu menata karir mereka dengan baik biasanya lebih bisa menata kehidupan mereka. Mereka yang mendapatkan pekerjaan “impian” mereka lebih bisa berkata kutahu yang kumau.";
        return isi;
    }
}

Step 9

Lakukan ujicoba, caranya klik tombol Mengisi Data, lalu kembali ke Menu Utama, lalu klik tombol Melihat Data, lalu klik tombol

 

Anda perlu menekan key board panah atas dan panah bawah untuk melakukan scroll pada pesan yang terlihat, karena pesannya terlalu panjang untuk ditampilkan pada 1 halaman.

Source code lengkap dapat di download di:
www.aplysit.com/kotakbrankas/BasicRMS.rar

Apabila Anda menyukai tutorial ini, jangan lupa member Like dan melakukan Share, agar ilmu pengetahuan ditempatkan pada posisi yang mulia, dan manfaatkan turut dirasakan oleh lebih banyak orang.

Like or Share This Article




COMMENTS ( 0 )
 
Keep connected with us, mobile apps available now !!