Menambahkan window Login pada Netbeans Platform

Pertanyaan yang sering gw denger terkait netbeans platform yaitu… “bisa gak dikasi security aplikasinya?” Dan jawaban gw… “Tergantung!”… Yuhu~~~ tergantung ama jenis security apa yang kamu maksud. Kalo maksudnya biar ada halaman login sebelum aplikasinya dijalanin… yaaa bisa banget! Yang perlu kamu lakuin ngikutin tutorial dari netbeans platform tentang installer.

Buat 1 netbeans module di 1 NPA (Netbeans Platform Application) kayak gini (Untuk NPA-nya, bikin sendiri yak… pake yang ada jugak boleh, gak musti bikin NPA baru dari awal. Module jugak sama, Cuma gw bikin module baru khusus Installer)…

Klik kanan bagian module di NPA, pilih “Add New…”.

1. Module Baru

Masukin “LoginModule” buat namanya…

2. Nama Module Baru

Buat code name base-nya terserah… Cuma kamu bisa masukin kayak gw (“org.login”)

3. Code Base Module baru

Bakal muncul 1 netbeans module yang baru bernama “LoginModule”, breakdown ajah (tekan tanda tambah-nya) terus di package “org.login” klik kanan pilih “Other”.

4. Login Module

Bakal muncul 1 window baru, pilih “Module Development” di sebelah kiri, pilih “Installer/Activator” di sebelah kanan.

5. Installer

Installer ini merupakan hal yang pertama kali dijalankan ama NPA. Kalo gak salah, Cuma ada 1 Installer per netbeans module. Kalo gak salah lhoh yah… Jadi, kamu bakal nemuin error kalo punya lebih dari 1 installer per module. Tapi… 1 NPA boleh punya lebih 1 module kan yah… Kalo kamu mau letakin 1 Installer untuk tiap module-nya, yaaa boleh2 ajah…  Cuma pastiin kalo tiap Installer itu gak bentrok algoritmanya satu sama lain…

Intinya, bakal kebentuk 1 Installer… dan isinya tuh gini:

package org.login;

import org.openide.modules.ModuleInstall;

public class Installer extends ModuleInstall {

    @Override
    public void restored() {
        // TODO
        
    }

}

Yup! Simple yah…. Di bagian body method restored(), kamu bisa tambahin apapun yang bakal ngejalanin kode itu pertama kali pas NPA dijalanin. Coba ajah tambahin gini:

package org.login;

import org.openide.modules.ModuleInstall;

public class Installer extends ModuleInstall {

    @Override
    public void restored() {
        System.out.println("Hello World");
    }

}

Dan nanti, pas NPA dijalanin… jadinya gini:

6. Eksekusi Installer

Muncul “Hello World” gitu…

Hal ini yang bakal kita manfaatin buat munculin login window pas ngejalanin NPA. Jadi… udah nangkep yah apa yang mau kita bikin… Minimal, tempat untuk pertama kali modul dijalanin udah ada.. Sekarang, bikin form login-nya.

Masih di module yang pertama kita bikin tadi, klik kanan di package org.login, pilih New → Other.

7. New Panel

Di sebelah kiri pilih “Swing GUI Forms”, di sebelah kanan pilih “JPanel Form”. Di bagian nama, masukin ajah “LoginForm”. Bebas c yah… Suka2 kamu ajah.

Kenapa pilih JPanel bukan JFrame Form?! Coz kita gak bikin satu aplikasi sendiri teman2… kita bikin sebuah panel yang jadi bagian dari NPA-nya. Jadi, GUI dasar tetap dari NPA. Makanya pake JPanel. Mungkin itulah yang dibilang Netbeans di tutorialnya kalo kamu bertanya2 kenapa gak bikin JFrame Form sekalian.

8. New Panel-2

Sekarang, bisa design panel-nya suka2 kamu. Mau pake layout apapun boleh. Gw c gini:

9. Design Panel

Tambahkan method untuk me-return isi dari text field username sama password:

    public String getUsername(){
        return this.jTextField1.getText();
    }
    
    public char[] getPass(){
        return this.jPasswordField1.getPassword();
    }

Ada 2 label, 1 text field sama 1 password field. Di sini, GUI tempat nampung username sama password udah muncul. Tinggal dipanggil ajah di bagian Installer. Tapi… seperti yang kamu tau, JPanel bukanlah komponen yang biasa ditampilkan secara langsung. JPanel kan sifatnya lebih ke container, bukan sebagai pane. Kalo gak salah c yah. Atau gw kebalik?

Tapi bukan itu intinya… Intinya adalah gimana cara nampilin si JPanel di NPA. Kita bisa pake NotifyDescriptor yang ada di module “Dialogs API”. Jadi, caranya… klik kanan di bagian “Libraries”, pilih “Add Module Dependency”. Di bagian Filter tulis “NotifyDescriptor” atau “Dialogs API”.

10. Dependency

Dan nantinya, ada 1 library tambahan di bagian “LoginModule”.

11. Libraries

Ubah isi dari Installer dengan memanggi si JPanel yang sudah dibuat sebelumnya:

import org.openide.DialogDisplayer;
import org.openide.NotifyDescriptor;
import org.openide.modules.ModuleInstall;

public class Installer extends ModuleInstall {

    LoginForm lf = new LoginForm();
    @Override
    public void restored() {
        NotifyDescriptor nd = new NotifyDescriptor.Confirmation(lf, "Login");
        DialogDisplayer.getDefault().notifyLater(nd);
    }
}

Dan… setelah clean & build, terus di-run, NPA kamu bakal ngehasilin tampilan kayak gini:

12. Login Window

Ada login-nya sodara2!! Hohohoho…

Tapi… sayangnya, kamu mau tekan tombol apapun, hasilnya sama ajah.. pasti ngeluarin aplikasi NPA-nya gak pake kendala.

Untuk melakukan pengecekan username dan password yang sesuai, ubah codingan di Installer kayak gini:

import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.beans.PropertyChangeEvent;
import java.beans.PropertyChangeListener;
import java.util.Arrays;
import javax.swing.JButton;
import org.openide.DialogDisplayer;
import org.openide.LifecycleManager;
import org.openide.NotifyDescriptor;
import org.openide.modules.ModuleInstall;

public class Installer extends ModuleInstall {

    LoginForm lf = new LoginForm();

    @Override
    public void restored() {
        bikinForm();
    }

    private void bikinForm() {
        JButton ok = new JButton();
        ok.setText("OK");

        JButton cancel = new JButton();
        cancel.setText("Cancel");

        cancel.addActionListener(new ActionListener() {
            @Override
            public void actionPerformed(ActionEvent ae) {
                exit();
            }
        });

        ok.addActionListener(new ActionListener() {
            @Override
            public void actionPerformed(ActionEvent arg0) {
                authenticate();
            }
        });
        
        NotifyDescriptor nd = new NotifyDescriptor.Confirmation(lf, "Login");
        DialogDisplayer.getDefault().notifyLater(nd);
        nd.setOptions(new Object[] {ok,cancel});
        
        nd.addPropertyChangeListener(new PropertyChangeListener() {
            @Override
            public void propertyChange(PropertyChangeEvent pce) {
                if (NotifyDescriptor.CLOSED_OPTION.equals(pce.getNewValue())) {
                    exit();
                }
            }
        });
    }

    private void exit() {
        LifecycleManager.getDefault().exit();
    }
    
    private void authenticate(){
        String uname = lf.getUsername();
        char[] pwd = lf.getPass();
        if(uname.equals("Arby")){
           if(cekPwd(pwd)){
               
           }else{
               exit();
           }
        }else{
            exit();
        }
        
    }
    
    private boolean cekPwd(char[] input){
        boolean benar;
        char[] pass = {'p','e','s','a','n'};
        if(input.length != pass.length){
            benar = false;
        }else{
            benar = Arrays.equals(pass, input);
        }
        Arrays.fill(pass,'0');
        return benar;
    }
}

Moga kamu gak bingung c yah ama kode di atas… Intinya, kode warna biru untuk ngebikin panel-nya. Jadi yang awalnya ada 3 tombol, sekarang ada 2 tombol. Masing2 tombol punya action sendiri… yaitu exit() sama authenticate(). Itu kode yang gw tandain pake warna merah. Terus ada method “cekPwd()” yang digunain buat ngecek password. Method itu dipanggil di method authenticate().

Yah… gitu lah…

Sekarang, kalo di-run udah jalan mintak uname ama password. Uname-nya “Arby” passwordnya “pesan”. Itu case sensitive lhoh yah… Kalo salah masukin, yaaa… selesai… Kalo kamu bingung mau ngubah uname ama password ada di mana, yaaa… itu masalah kamu! Hehehe 😀

Eh… enggak kok, gw gak kejam. Adanya di baris yang gw pakein bold ama underline…

Begitulaaahhh~~ moga bantu yak.

Valid: Yap
Kadaluarsa: Sejauh ini teruji mulai 7.2 sampe nb 8
Sumber: Situs netpla+dok pribadi

Advertisements

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s