Menggunakan BeanTreeView pada Netbeans Platform

Buat sebuah NPA baru, tambah 1 modul (name-nya kalo gak ada ide, bikin aja “SeleksiSimpul”, base “org.seleksi.view”).

1. Modul-NPA

Trus tambahin sebuah top component (Window). Kalo belum tau, caranya…. Klik kanan di package “org.seleksi.view”, pilih “New –> Other”. Muncul 1 window, pilih “Window”.

2. BeanTree

3. Bean Tree-Next

4. Bean Tree-Next-1

Muncul  sebuah form, atur di form kemunculan BeanTreeView. Ambil BeanTreeView dari Palette. Kalo belum ada, di Palette, klik kanan pilih “Palette Manager”.

5. Palette Manager

Pilih “Add From JAR”.

5. Add From JAR

Cari jar “org-openide-explorer.jar” di folder /platform/modules dari direktori tempat nginstall netbeans. Kalo yang windows, kemungkinan alamatnya: “C:\Program Files\NetBeans 8.0\platform\modules”, kalo linux kemungkinan “/home/ NetBeans 8.0/platform/modules”.

6. Jar Explorer

Pilih “BeanTreeView”, masukkan kemunculannya ke kategori yang kamu mau.

6. Category

6. Category Place

Nanti bakal muncul gini:

7. Palette Bean Tree View

Tarik BeanTreeView ke form… sebelumnya layout kalo mau diatur jugak boleh.

8. Panel

 Kalo gw pake border layout, naruh BeanTreeView di bagian center. Class-nya bakal ada merah2 tanda error. Itu wajar, coz defaultnya Cuma ada 5 modul dependency yang dipakai di sini (kalo udah bikin Window):

  1. Lookup API
  2. Settings API
  3. UI Utilities API
  4. Utilities API
  5. Window System API

Liat ajah di bagian library dari module terkait. Bakal muncul gini:

9. Error Dependency

Dependency BeanTreeView ada di “Explorer & Property Sheet API”. Trus buat bikin simpul/node-nya pake dependency dari “Nodes API”. Jadi, sekalian kita tambahin ajah. Di bagian “Libraries”, klik kanan, pilih “Add Module Dependency…” Cari 2 module tadi. Bisa kamu masukin nama, atau komponen yang kamu perluin.

10. Explorer Dependency

11. Nodes Dependency

Buat sebuah class untuk membuat child atau node2 yang bisa dieksplor nanti. Bentuk dasar yang tampil, gw bikinnya String ajah. Kamu bisa ganti pake class bentukan sendiri.

Jadi, di package yang sama (org.seleksi.view), bikin sebuah class gini:

import java.util.List;
import org.openide.nodes.ChildFactory;
import org.openide.nodes.Node;
public class SimpulAnak extends ChildFactory<String>{

    @Override
    protected boolean createKeys(List toPopulate) {
        return true;
    }

    @Override
    protected Node createNodeForKey(String key) {
        return null
    }   
}

Berhubung di atas Cuma outline, kita isi masing2 method yang ada. Udah tau ya maksut kode di atas. Cuma 1 method abstract dari kelas “ChildFactory” (<String>, bisa kamu ganti kelas lain), yaitu createKeys(). Method yang ini gunanya buat mem-populate data yang bakal ditampilin. Terus method yang satu lagi buat bikin node-nya.

Jadi… ganti methodnya jadi gini:

    @Override
    protected boolean createKeys(List toPopulate) {
        ArrayList al = new ArrayList();
        al.add("Menu 1"); al.add("Menu 2"); al.add("Menu 3");
        toPopulate.addAll(al);
        return true;
    }

    @Override
    protected Node createNodeForKey(String key) {
        try {
            BeanNode bn = new BeanNode(key);
            bn.setDisplayName(key);
            System.out.println();
            return bn;
        } catch (IntrospectionException ex) {
            Exceptions.printStackTrace(ex);
            return null;
        }
    }

Pastikan import-nya gini:

import java.beans.IntrospectionException;
import java.util.ArrayList;
import java.util.List;
import org.openide.nodes.BeanNode;
import org.openide.nodes.ChildFactory;
import org.openide.nodes.Node;
import org.openide.util.Exceptions;

Sekarang, karena node bakal ditampilin di window, buka window yang tadi (SimpulExplorerTopComponent), tambahkan signature gini di bagian class:

public final class SimpulExplorerTopComponent extends TopComponent implements ExplorerManager.Provider{

Nanti, bakal ada error, ikutin suggestion-nya (implement all abstract method) yang artinya harus ada 1 method yang ditambahin. Kita bikin gini:

    private final ExplorerManager mgr = new ExplorerManager();
    @Override
    public ExplorerManager getExplorerManager() {
        return mgr;
    }

Yap, memang ada 1 atribut “mgr” yang gw tambahin di sana. Terus gw ubah isi method-nya. Dan masih di window yang tadi, ubah konstruktornya jadi gini:

    public SimpulExplorerTopComponent() {
        initComponents();
        setName(Bundle.CTL_SimpulExplorerTopComponent());
        setToolTipText(Bundle.HINT_SimpulExplorerTopComponent());

        associateLookup(ExplorerUtils.createLookup(mgr, getActionMap()));
        SimpulAnak ecv = new SimpulAnak();
        AbstractNode an = new AbstractNode(Children.create(ecv, true));
        mgr.setRootContext(an);
    }

Di sana, emang kita pake yang namanya “Lookup”, gw gak tau kenapa… tapi kalo pake explorer manager emang pake create2 lookup gitu… Yah begitulah… Dan hasil akhirnya:

12. Hasil

Kamu bisa ganti icon dan lain2 di bagian deklarasi abstract node (buat parent) atau di bagian pengembalian node buat child…

Contoh:

@Override
    protected Node createNodeForKey(String key) {
        try {
            BeanNode bn = new BeanNode(key);
            bn.setIconBaseWithExtension("/org/seleksi/view/right-rectangle.png");
            bn.setDisplayName(key);
            System.out.println();
            return bn;
        } catch (IntrospectionException ex) {
            Exceptions.printStackTrace(ex);
            return null;
        }
    }
    public SimpulExplorerTopComponent() {
        initComponents();
        setName(Bundle.CTL_SimpulExplorerTopComponent());
        setToolTipText(Bundle.HINT_SimpulExplorerTopComponent());

        associateLookup(ExplorerUtils.createLookup(mgr, getActionMap()));
        SimpulAnak ecv = new SimpulAnak();
        AbstractNode an = new AbstractNode(Children.create(ecv, true));
        an.setIconBaseWithExtension("/org/seleksi/view/down-rectangle.png");
        mgr.setRootContext(an);
        
    }

Path:

13. Path

Hasil:

14. Hasil Akhir

Gambar bisa diambil di situs tutorial netbeans

Valid: Yap!
Versi non-Kadaluarsa: Netbeans 7.2-8.0
Sumber:
https://platform.netbeans.org/tutorials/nbm-selection-2.html
https://platform.netbeans.org/tutorials/nbm-crud.html

Advertisements

One thought on “Menggunakan BeanTreeView pada Netbeans Platform

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