Saya sedang mendapat pesanan program untuk menghitung “Perkerasan Lentur Jalan Raya”. Saya memutuskan untuk menggunakan Netbeans Platform. Dan ini merupakan proyek pertama saya yang menggunakan netbeans platform.

Teman saya, Alfa Narendra, yang menjadi konsultan saya, meminta untuk dibuatkan sebuah LiveHelp (saya menyebutnya begitu) di sebelah kanan formulir isian. Fungsinya setiap sebuah field di form isian fokus, maka di “LiveHelp” muncul teks yang menjelaskan apa yang harus diisi di field yang fokus tersebut.
Diam, saya berfikir sejenak. Nah akhirnya saya memutuskan untuk menggunakan strategi berikut: formulir isian menggunakan TopComponent dengan posisi sebagai “editor“, kemudian “LiveHelp” menggunakan TopComponent dengan posisi “properties“. Baik form isian maupun “live help” diletakkan di module yang berbeda. Ini keunggulan Netbeans Platform: saya bisa membuat modul-modul yang terpisah. Saya harapkan ketika saya mengembangkan aplikasi saya lebih lanjut, jika saya membuat form isian yang lain maka modul LiveHelp ini bisa berfungsi tanpa perlu memodifikasinya, saya hanya konsentrasi di form isian yang baru tersebut. Rock! Konsep yang bagus bukan.
Sekarang saatnya mengimplementasikan konsep diatas.
1. Pertama yang perlu dibuat adalah Module Suite Project. Dibuat via menu File -> New Project -> Netbeans Plug-in Module -> Module Suite Project. Klik Next. Isikan nama project “Aspahlt“.
2. Membuat API Module yang akan diisi dengan kode non-visual. Untuk menghubungkan module “form isian” dengan module “live help” saya perlu membuat class sebagai jembatan. Saya namakan class ini APILiveHelpBridge. Berikut kodenya:
/*
* APILiveHelpBridge.java
*/
package com.betonsoft.asphalt.asphaltapi;
/**
*
* @author Agus Suhartono
*/
public final class APILiveHelpBridge {
private String helptext;
/** Creates a new instance of APILiveHelpBridge */
public APILiveHelpBridge() {
}
public APILiveHelpBridge(String helptext) {
setHelpText(helptext);
}
public void setHelpText(String helptext) {
this.helptext = helptext;
}
public String getHelpText(){
return this.helptext;
}
}
3. Membuat “Module Project” dengan “AsphaltLiveHelp” untuk “live help”. Dibuat ia menu File -> New Project -> Netbeans Plug-in Module -> Module Project. Di dalam-nya saya buat Sebuah TopComponent dengan nama “LiveHelpTopComponent“. Saya membuatnya melalui menu “Window Component”. Didalamnya saya taruh jTextArea dengan nama jtxtaLiveHelp.
Saya perlu meng-implement LookupListener supaya AsphaltLiveHelpTopComponent bisa selalu membaca event yang terjadi di module atau TopComponent yang lain. Kode awal class akan menjadi berikut :
final class AsphaltLiveHelpTopComponent extends TopComponent implements LookupListener {
Tambahkan kode berikut :
di atas Class
import com.betonsoft.asphalt.asphaltapi.APILiveHelpBridge;
import java.util.Collection;
import org.openide.util.Lookup;
import org.openide.util.LookupEvent;
import org.openide.util.LookupListener;
di dalam class:
public void componentOpened() {
// Inisialize Lookup Object
Lookup.Template tpl = new Lookup.Template (APILiveHelpBridge.class);
result = Utilities.actionsGlobalContext().lookup(tpl);
result.addLookupListener (this);
}
public void componentClosed() {
result.removeLookupListener (this);
result = null;
}
public void resultChanged(LookupEvent lookupEvent) {
Lookup.Result r = (Lookup.Result) lookupEvent.getSource();
Collection c = r.allInstances();
if (!c.isEmpty()) {
APILiveHelpBridge bridge = (APILiveHelpBridge) c.iterator().next();
jtxtaLiveHelp.setText (bridge.getHelpText()); // **** STOP PRESS ****
} else {
jtxtaLiveHelp.setText(”[no help]“);
}
}
Nah Live Help udah selesai, sekarang saatnya memakainya.
4. Membuat “Module Project” dengan nama “AsphaltMasterEntry” untuk form isian. Dibuat ia menu File -> New Project -> Netbeans Plug-in Module -> Module Project. Di dalam-nya saya buat Sebuah TopComponent dengan nama “MasterEntryTopComponent“. Saya membuatnya melalui menu “Window Component”.
Tambahkan variable berikut kedalam MasterEntryTopComponent class
private final InstanceContent content = new InstanceContent();
Tambahkan kode berikut di dalam Constructor MasterEntryTopComponent
associateLookup (new AbstractLookup (content));
APILiveHelpBridge livehelp = new APILiveHelpBridge();
livehelp.setHelpText(”Main Help”);
content.set(Collections.singleton (livehelp), null);
Tambahkan kode berikut dalam event FocusGained di masing-masing field yang ingin ditambahi live help.
APILiveHelpBridge livehelp = new APILiveHelpBridge();
livehelp.setHelpText(”Tentukan jumlah arah lalu-lintas: 1 atau 2″);
content.set(Collections.singleton (livehelp), null);
Contoh :
private void jcboJumlahArahFocusGained(java.awt.event.FocusEvent evt) {
// NOTE: sebaiknya kode berikut dibungkus dalam sebuah method
APILiveHelpBridge livehelp = new APILiveHelpBridge();
livehelp.setHelpText(”Tentukan jumlah arah lalu-lintas: 1 atau 2″);
content.set(Collections.singleton (livehelp), null);
}
Finish!!!
Cukup simple dan mudah, LiveHelp Window bisa kita pindah letaknya baik di kiri, kanan atas dan bawah, atau kita minimize sekalipun. Saya senang dengan hasil yang saya dapatkan, karena aplikasi saya tampil seperti Netbeans IDE atau Visual Studio.
CATATAN:
Saya tidak menjelaskan secara lengkap bagaimana membuat module dan TopComponet karena lebih fokus ke kode. Silahkan ke netbeans.org untuk info selengkapnya.
Agus Suhartono