Bagaimana caranya/
Mari kita buat bersama:
1. Fungsi Edit di-panggil dari Search Quote dengan melakukan double-click pada hasil pencarian.
Dari gambar di atas, jika kita lakukan double-click, maka akan dibuka menu AddQuoteTopComponent yang kita nantinya gunakan untuk editing quote.
2. Untuk mengaktifkan double-click dilakukan dengan right-click pada salah satu window hasil, kemudian dipilih Events -> Mouse -> MouseClicked
3. Tambahkan code ini pada event tersebut:
if (evt.getClickCount() == 2) {
if (((posisiList * 8) + 0) < besarList) {
Quote qth = (Quote) listHasil.get((posisiList * 8) + 0);
TopComponent win = WindowManager.getDefault().findTopComponent("AddQuoteTopComponent");
if (win == null) {
instance1 = AddQuoteTopComponent.findInstance();
}
if (win instanceof AddQuoteTopComponent) {
instance1 = (AddQuoteTopComponent) win;
}
instance1.loadQuote(qth);
instance1.open();
instance1.requestActive();
}
}
Ini akan memanggil fungsi AddQuoteTopComponent untuk melakukan fungsi Editing.
4. Perhatikan bahwa kita memanggil fungsi loadQuote dari AddQuoteTopComponent,
untuk itu perlu ditambahkan fungsi tersebut di sana:
public void loadQuote(Quote qt) {
Quote qtl = qt;
//Simpan Old Quote
oldQuote = qtl.getQuote();
// Kosongkan Isian
Quote.setText("");
Author.setText("");
//Isi Quote
Quote.setText(qtl.getQuote());
Author.setText(qtl.getAuthor());
}
5. Selanjutnya kita akan merubah fungsi Save, sehingga editing pertama kali harus menghapus terlebih dahulu yang lama, supaya tidak terjadi duplikasi.
private void SaveActionPerformed(java.awt.event.ActionEvent evt) {
//Delete Old
if ((Quote.getText().isEmpty())) {
return;
}
Db4o.configure().reflectWith(new JdkReflector(Thread.currentThread().getContextClassLoader()));
ObjectContainer db = Db4o.openFile("Sage.ODB");
//delete dulu
final String cariQuote = (String) Quote.getText();
ObjectSet
hasil = db.query(new Predicate() {
public boolean match(Quote qt) {
if (qt.getQuote().equals(cariQuote)) {
return true;
} else {
return false;
}
}
});
if (hasil.hasNext()) {
Quote qtd = (Quote) hasil.next();
db.delete(qtd);
}
db.close();
// Save
Db4o.configure().reflectWith(new JdkReflector(Thread.currentThread().getContextClassLoader()));
db = Db4o.openFile("Sage.ODB");
try {
Quote quote = new Quote(Quote.getText(), Author.getText());
db.set(quote);
} finally {
db.close();
}
Quote.setText("");
Author.setText("");
JOptionPane.showMessageDialog(null, "Quote has been saved.",
"Quote Saved", JOptionPane.WARNING_MESSAGE);
}
Welldone, sekarang kita sudah memiliki fungsi editing di Program Sage yang kita bangun.
Salam Java,
Ong Budi Setiawan