Saturday, November 8, 2014

Java(Usable di Android) - IP dari semua network interface

Pada proses dev locally-text, saya sempat mendapatkan masalah waktu berusaha membuat search nearby device. Setelah lama riset kesana kemari nyobain script sono sini, akhirnya ketemu juga gimana caranya. Saya lupa ini darimana asalnya, tapi terima kasih sekali project open source nya sangat membantu dan ini script yg saya cari-cari itu. Inti dari script ini itu sebenernya mendapatkan IP dari tiap-tiap network interface yang ada di PC kita. btw, ini script bisa dipake di android juga, jadi kita bisa ngedapetin semua IP yg ada di device kita.
Sekian aja ya. Terima kasih...

Monday, August 18, 2014

Connect ADB di Andy(Roid)

Just a note for myself yg sering lupaan haha
Buka HandyAndy, term shell. Kalo lupa sama IP nya, run "netcfg"
Kalo udah, run "adb connect IP:port"
Harusnya sih defaultnya "adb connect 192.168.56.101:5555", but just in case aja...itu command buat ngeliat IP nya
Okay , done...
Semangat semangat *lanjut ngoding*

Wednesday, June 18, 2014

JavaFx - Berpindah Scene (FXML) Part2

Di part1, saya sudah membahas dasar dari berpindah scene. Namun tidak mengcover bagaimana caranya berpindah scene secara runtime. Kali ini saya akan membahas hal itu. Bagi yang belum membaca part1, monggo dibaca terlebih dahulu.

Konsep

Seperti pada sebelumnya, saya akan membahas "bagaimana sih konsepnya?" terlebih dahulu. Untuk melakukan perpindahan scene, yang kita butuhkan sebenernya hanya memanggil method yang kita gunakan untuk berpindah-pindah kemarin, yaitu loadView1() dan atau loadView2(). Namun yang jadi masalah adalah bagaimana cara memanggilnya?
Untuk menyelesaikan permasalahan ini, saya akan mengenalkan satu pattern yang sangat berguna untuk kasus-kasus semacam ini. Namanya adalah "Singleton".

Apa itu Singleton?

Singleton merupakan salah satu design pattern yang gunanya adalah memastikan hanya adanya satu instance saja dalam satu class yang digunakan bersama-sama.
Contoh kasusnya adalah kita membuat class A dimana class A tersebut kita hanya membutuhkan satu kali pembuatan saja. Namun kita bingung bagaimana caranya kita mendapat instance yang sama di tiap-tiap kelas yang berbeda? Berikut contohnya :


Jika Anda perhatikan, pada ClassA kita membuat satu variable static (Bagi yang belum paham static itu apa, static itu seperti semacam modifier. Jika class memiliki public, private, default dan protected , maka file punya static. Maksudnya file punya static itu apa saja yang didefinisikan sebagai static maka hal tersebut adalah milik file bukan class yang ada di dalam file. Jadi kita tidak perlu membuat object dari class yang ada di dalam file tersebut dan hanya perlu memanggil nama filenya saja) yang bertipe kelas itu sendiri. Variable tersebut nantinya yang akan kita panggil dan gunakan berulang-ulang dan hanya satu kali inisialisasi. Tetapi, bagaimana cara menggunakannya dari kelas lain? Cukup simple, kita hanya perlu memanggil getInstance() nya saja. Untuk lebih jelasnya, berikut contohnya :


Mari kita perhatikan kode di atas. Pada contoh di atas, saya membuat 2 class yang berbeda. Tiap-tiap class tersebut memiliki satu operasi yang membutuhkan ClassA di dalamnya. Jika kita lihat pada ClassB, ClassB mendefinisikan variable a1 dan ClassC mendefinisikan a2 yang keduanya sama-sama ClassA dan keduanya pula diinisialisasi menggunakan ClassA.getInstance() yang pada akhirnya keduanya memiliki isi yang sama meskipun berbeda tempat dan scope inisialisasi. Hal ini dikarenakan keduanya menggunakan satu instance yang sama. Bedanya, a1 dan a2 di deklarasikan di tempat yang berbeda saja. Saya rasa, cukup untuk penjelasan singleton. Mari kita lanjutkan ke topik utama kita.

Berpindah View

Disini kita akan mulai pembahasan tentang berpindah view. Seperti penjelasan saya tadi, kita membutuhkan Singleton Pattern pada kasus ini. Untuk itu kita perlu merubah Main.java yang kemarin menjadi seperti berikut :

Jika kita bandingkan dengan Main.java sebelumnya dan seperti penjelasan saya tentang singleton, kita membutuhkan variable instance dan method getInstance(). Keduanya sudah saya implementasikan disini namun jika kita perhatikan lagi ada yang berbeda dengan contoh singleton yang saya berikan. Ya, saya tidak menyertakan if(instance==null). Hal ini saya lakukan karena Main.java sudah pasti di ter"create" ketika program di run dan kemudian langsung menjalankan method start(). Dan karena itulah terdapat baris ke 24 pada kode di atas , instance = this; , yang maksudnya adalah variable instance diisi dengan this dengan instance pada class tersebut yang sedang aktif. Saya rasa cukup untuk penjelasan kode di atas. Mari lanjut ke hal berikutnya yaitu controller untuk view1.fxml dan view2.fxml
Langsung saja, berikut ini kode untuk Controller view1.fxml dan juga Controller view2.fxml

Ada sedikit perubahan pada view1.fxml dan view2.fxml . Kita akan meng"assign" controller untuk tiap-tiap fxml langsung pada fxml tersebut. Caranya adalah dengan manambahkan attribute fx:controller="namapackage.NamaClass" pada element teratas yang pada kali ini adalah AnchorPane. Dan juga untuk event click pada tombol di view, kita juga akan mengassign method untuk menghandle event tersebut langsung pada fxml view1 dan view2 juga. Caranya juga sama seperti sebelumnya dengan menambahkan attribute onAction="#namaMethod". Untuk lebih jelasnya, perhatikan perubahan pada view1.fxml dan view2.fxml berikut.


Mari kita kembali sedikit ke atas ke kode untuk Controller view. Jika kita perhatikan buttonClick() , kita dapat melihat bagaimana kita berpindah-pindah scene. Perhatikan kode Main.getInstance().loadView2() . Kode ini maksudnya adalah kita memanggil instance Main yang sedang berjalan lalu memanggil loadView2() dan loadView2() inilah yang nantinya akan merubah scene yang sedang ditampilkan. Dan untuk file-file fxml nya sendiri, jika kita perhatikan di AnchorPane, AnchorPane sekarang memiliki attribute fx:controller yang merujuk pada masing-masing controllernya. Dan pada button nya juga sekarang terdapat attribute onAction yang merujuk pada method yang dipanggil ketika tombol tersebut di klik.
Dengan ini, berakhirlah sudah tutorial untuk berpindah-pindah view. Untuk full source nya, dapat di lihat disini.
Terima kasih telah berkunjung...

Tuesday, June 17, 2014

JavaFx - Berpindah Scene (FXML) Part1

Pada Netbeans 7.4 ke atas (kalo g salah) sudah ada contoh perpindahan scene. Nama projectnya Login bla bla bla (lupa, maklum udah tua). Tapi, kalo dilihat-lihat scriptnya lumayan membingungkan terutama buat yang pertama kali atau baru-baru aja belajar javaFx ( seperti saya :D ). Nah, pada kesempatan kali ini saya mau mencoba menjelaskan "Bagaimana sih pindah-pindah scene(tampilannya) di JavaFx?". Lanjutgan~


Konsep

Perpindahan scene pada javaFx pada dasarnya adalah merubah apa yang ditampilkan di root panel nya (you don't say *plak). Pada saat pembuatan awal project (saya di eclipse btw), script yg digenerate adalah

Mari kita perhatikan pada setScene. setScene merupakan method yang digunakan untuk mengeset scene(you don't say lagi). Dengan method inilah nanti kita bisa mengubah-ubah scene yang ditampilkan, terutama yang melalui fxml. Caranya, kita buat root pane nya, di script di atas yaiut BorderPane, setelah itu buat object Scene baru dan masukkan pane nya dan primaryStage.setScene(scene).


MULAI~

Karena yang akan kita lakukan ada berpindah dari scene 1 ke scene 2, maka kita siapkan 2 buah file fxml.
Ini contoh 2 file fxml yang akan kita gunakan pada tutorial ini.






Pertama-tama, kita buat variable local untuk menampung Stage yg ada di method start(). Hal ini dibutuhkan dikarenakan kita tidak bisa memperoleh Stage yang sedang ditampilkan secara langsung. Setelah itu, kita buat sebuah method untuk me"load" fxml yang akan kita tampilkan. Kira-kira seperti ini scriptnya :


Belum selesai sampai disini. Script di atas, pada method loadFXML() kita melakukan pemanggilan fxml lalu memasukkannya ke variable object dari AnchorPane yaitu pane. Setelah itu, pane dimasukkan ke Scene yg kita buat sebagai root pane nya. Barulah Scene yg kita buat tadi kita masukkan ke stage menggunakan setScene() yg ada di stage.
Langkah berikutnya adalah membuat method untuk memanggil view1.fxml dan view2.fxml. Kita buat secara terpisah karena nantinya akan kita gunakan berpindah-pindah scene melalui controller tiap-tiap view. Kita akan bahas nanti, sekarang adalah membuat method untuk memanggil view1.fxml dan view2.fxml. Berikut scriptnya  :


Oke, done buat ngeload view1 sm view2 nya. Lalu, apa sekarang? Coba deh sekarang panggil loadView1() atau loadView2() di method start(), kayak gini contohnya :



Coba deh ganti itu loadView1() sm loadView2() terus run lagi projectnya. Yang tampil pasti view2.fxml nya

Untuk sementara, ini source code full nya :



Oke guys, sampe disini dulu ya. Sampe ketemu di Part2. Btw, untuk Part2 nya kita bakalan ke pindah-pindah scene pake tombol. See ya~