Menambahkan Open File pada Netbeans Platform

Yang namanya ngegunain framewok emang menyenangkan… Ada banyak alasan buat itu. Salah satu alasan yang paling sering digunain buat alasan pas sidang TA yaitu tentang pengembangan lebih lanjut. Well, gw menganggap itu bukan keuntungan sama sekali. Yang jelas, kalo gw, seperti ajaran senpai… nganggap kalo framework itu kerangka kerja. Setiap orang punya cara kerja dan pola pikirnya masing-masing. Dan framework menyamaratakan persepsi dan pikiran itu. Simple! Dan yang paling penting, framework itu memudahkan segalanya. Ada beberapa modul yang gak harus dibuat ulang dari awal. Tinggal make fungsi yang udah disediakan… dan jadi!

Hal itu juga kejadian di Netbeans Platform. Ada modul yang bisa kamu gunain gitu ajah buat hal2 tertentu dan umum. Salah satunya modul buat ngebuka file. Di sini, kamu bisa langsung pilih file, dan ngebuka file itu. Gampang!

Hasil akhirnya kira2 gini:

1. Hasil Akhir

Ada satu module “Open File” ama “Open Recent File” di sana. Defaultnya hal ini gak ada c yah… Defaultnya kan kayak gini:

2. Hasil Sebelumnya

Jadi… nambahin hal itu… caranya gampang ajah. Kamu gak usah nambahin 1 action buat menu yang bakal nampil “Open File” terus ngebikin objek File Chooser. Gak usaaaaahh…

Cara nambahinnya gini, klik kanan di NPA yang kamu mau ada Netbeans Platform-nya. NPA lhoh yah. NPA! Bukan module NPA. Pilih Properties, muncul 1 window, di bagian “Categories”, pilih “Libraries”.

3. Module NPA

Di bagian “Node”, ada beberapa module udah jadi yang bisa kamu gunain. Karena fokusnya buat nambahin “Open File” tadi, jadi coba pilih/breakdown bagian “ide”, cari module “User Utilities”. Dan langsung ajah centang…

4. Module NPA-2

Klik OK, dan hasilnya seperti yang udah kamu liat sebelumnya. Sekarang, kalo kamu berniat buat nambahin filter, kayak gini:

5. Filter

Bisa banget! Caranya jugak gampang… tinggal pake annotasi dari MIMEResolver.Registration. Bikin 1 top component (Window). Kalo belum tau caranya, liat postingan gw sebelumnya yak. Terus, tambahin 1 buat file Java. Yap! File java biasa.

Bikin file-nya jadi kayak gini:

import org.openide.filesystems.MIMEResolver;

@MIMEResolver.Registration(
        displayName = "Nama",
        resource = "mime-resolver-html.xml",
        showInFileChooser ={"Web Page"}
)

public class WebFilter{

}

Yuhuuuu~~ isinya emang gak ada. Tapi kamu nambahin satu annotasi “@MIMEResolver.Registration”. Annotasi ini sebenernya bisa ditambahin di top component tadi. Tapi gw pisahin ke kelas lain. Di kelas ini, kamu bisa lakukan beberapa logika… Contohnya, apa yang mau kamu lakuin terhadap file yang kamu buka. Pastinya gak plain kayak di atas. Kamu jugak musti make module lain dari netbeans platform buat itu. Karena sulit, jadi gw gak nulisin dah di mari :p

Balik lagi ke kelas tadi, kemungkinan kamu bakal dapat error di baris “resource”. Ini kejadian, coz XML tempat ngatur filternya gak ada. Jadi kamu bikin 1 file dulu… namanya “mime-resolver-html.xml”. Yap! Lagi2 kamu benar… itu file XML emang. Isinya gini:

<?xml version="1.0" encoding="UTF-8"?>
<!--
To change this license header, choose License Headers in Project Properties.
To change this template file, choose Tools | Templates
and open the template in the editor.
-->
<!DOCTYPE MIME-resolver PUBLIC
          "-//NetBeans//DTD MIME Resolver 1.0//EN" 
          "http://www.netbeans.org/dtds/mime-resolver-1_0.dtd">
<MIME-resolver>
    <!-- Skip anything marked as definitely not ours. -->
    <file>
        <fattr name="known-ant-project-file" text="false"/>
        <exit/>
    </file>
    <!-- Accept immediately anything known as definitely ours. -->
    <file>
        <fattr name="known-ant-project-file" text="true"/>
        <resolver mime="text/x-ant+txt"/>
    </file>
    <!-- For other XML, look for <project default="..."/> -->
    <file>
        <ext name="htm"/>
        <resolver mime="text/x-ant+htm">
            <xml-rule>
                <element name="project">
                    <attr name="default"/>
                </element>
            </xml-rule>
        </resolver>
    </file>
    <file>
        <ext name="html"/>
        <resolver mime="text/x-ant+html">
            <xml-rule>
                <element name="project">
                    <attr name="default"/>
                </element>
            </xml-rule>
        </resolver>
    </file>
    <file>
        <ext name="shtml"/>
        <resolver mime="text/x-ant+shtml">
            <xml-rule>
                <element name="project">
                    <attr name="default"/>
                </element>
            </xml-rule>
        </resolver>
    </file>
    <file>
        <ext name="xhtml"/>
        <resolver mime="text/x-ant+xhtml">
            <xml-rule>
                <element name="project">
                    <attr name="default"/>
                </element>
            </xml-rule>
        </resolver>
    </file>
</MIME-resolver>

Gw gak bakal jelasin apapun terkait hal diatas, tapi gw Cuma mau bilang… perhatiin kode warna biru.

Yang bakal kamu dapatin dari kelas di atas, yaaa… Cuma filter buat web page. Kalo mau filter buat XML jugak kayak di contoh awal, kamu musti tambah 1 kelas lagi. Ulangi lagi kayak hal di atas. Sebenernya ada cara lain, Cuma gw gak ngerti. Jadi yaaa sudah… Yang penting jadi kan 😀

6. Filter Akhir

Jadi gw tambahin 1 file XML gini:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE MIME-resolver PUBLIC
          "-//NetBeans//DTD MIME Resolver 1.0//EN" 
          "http://www.netbeans.org/dtds/mime-resolver-1_0.dtd">
<MIME-resolver>
    <!-- Skip anything marked as definitely not ours. -->
    <file>
        <fattr name="known-ant-project-file" text="false"/>
        <exit/>
    </file>
    <!-- Accept immediately anything known as definitely ours. -->
    <file>
        <fattr name="known-ant-project-file" text="true"/>
        <resolver mime="text/x-ant+xml"/>
    </file>
    <!-- For other XML, look for <project default="..."/> -->
    <file>
        <ext name="xml"/>
        <resolver mime="text/x-ant+xml">
            <xml-rule>
                <element name="project">
                    <attr name="default"/>
                </element>
            </xml-rule>
        </resolver>
    </file>
</MIME-resolver>

Terus 1 kelas lagi gini:

import org.openide.filesystems.MIMEResolver;

@MIMEResolver.Registration(
        displayName = "Nama",
        resource = "mime-resolver-xml.xml",
        showInFileChooser ={"XML Document"}
)

public class XMLFilter {
    
}

Struktur direktori:

7. Direktori

Begitulaaaahhh~~ gampang, kan?! 😀

Valid: Banget!
Kadaluarsa: Paling gak, teruji dari versi 7.4 sampe 8.0
Sumber:
https://blogs.oracle.com/geertjan/entry/open_file_dialog_in_the
– Javadoc MIMERegistration.

Advertisements

2 thoughts on “Menambahkan Open File 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