[Java lista] eclipse new file template

Legéndi Richárd Olivér roante at freemail.hu
2007. Jan. 8., H, 21:24:45 CET


Szia Fisha!

Én épp most szívtam egy két hetet az Eclipse pluginokkal - szívtam, mert 
0 ismerettel kellett egy saját productot összeraknom 2 hét alatt, 
mindenféle saját editorral, outline-al, perspektívával meg minden egyéb 
nyalánksággal ;]

Igen, ezt úgy tudod megcsinálni, ha saját plugint csinálsz (legalábbis 
úgy is, nekem is ez volt az első ötletem, de szóljon valaki, ha tud 
egyszerűbb módot).
Viszont készülj fel, hogy azért ez nem olyan egyszerű dolog, nekem pl. 
napok elmentek, mire egy buildet sikerült összehoznom :-)

Kell csinálnod először is egy AbstractUIPlugin-ból származó valamit, itt 
elég, ha a std. cuccokat megvalósítod, sok meló nem lesz vele (kell egy 
ID, start, stop, ...)

Aztán kell egy saját perspektíva, amit majd a Java perspektívából 
származtatsz.
Valahogy hozzá kell majd adnod a Java perspektívában azt a cuccot, amit 
látni szeretnél, pl. fájlok, mappák hozzáadása így megy:

    private void defineActions(IPageLayout layout) {
        layout.addNewWizardShortcut("org.eclipse.ui.wizards.new.folder");
        layout.addNewWizardShortcut("org.eclipse.ui.wizards.new.file");
    }   

Ez csak annyit tesz, hogy amikor majd rámész a new-ra, akkor abban a kis 
kinyíló menüben ezeket fogja csak ez a perspektíva felhozni. Tippre a 
többi metódushoz nem kell hozzányulnod.

Azután tudni kéne, hogy mit is szeretnél abban a template-ben igazán 
tárolni. Előfordulhat, hogy kellenek külön wizardok, ezeket a 
BasicNewResourceWizard-ból kell származtatnod.
Ezekhez ha szükséged van wizard page-eket tudsz hozzáadni, ezeket a 
WizardPage-ből származtasd (micsoda beszélő nevek :-)))).

No, a BasicNewResourceWizard-nak van egy doFinish() metódusa, oda 
kellene beírkálnod, hogy mivel szeretnéd feltölteni a fájlt, valahogy így:

        getShell().getDisplay().asyncExec(new Runnable() {
            public void run() {
                try {
                   // file kiírás
                } catch (Exception e) {
                   e.printStackTrace();
                }
            }
        });

Persze előtte valahogy létre kell hoznod azt az IFile-t amit használni 
akarsz, majd hívni rá egy file.create(stream, true, monitor);-t, és ennyi.

Namost a fájl tartalmát megadni már mókásabb dolog, pl. sima üres 
tartalmat megadni csak úgy lehet, ha pl. a "".getBytes()-ra ráállítasz 
egy byte streamet, és kiírod :-)
Elég faramuci dolog, nekem jobbat nem sikerült csinálni.

Ha konkrét tartalmat akarsz belerakni, akkor a pluginod mellé beteszed a 
filet, becsomagolod a jarba, és onnan kell kiolvasnod a tartalmát.


Doksikat itt találhatsz, amit itt megtalálsz, azt könnyen meg tudod 
csinálni, de ha valami nincs itt ledokumentálva, azt elég nehezen fogod 
tudni összerakni:

http://help.eclipse.org/help32/index.jsp (eléggé el vannak dugva rajta 
az infók, de lehet keresgetni ;])
http://wiki.eclipse.org/ (itt nagyon jó howto-k vannak!!)

Nekem személyszerint egy irc channel segített sokat, de ide is akkor 
érdemes menni ha ébren vannak a kollégák ;]
irc://irc.freenode.net/#eclipse

A többit nem próbáltam, de ha esetleg szükséged lesz rá, ne kelljen 
keresgetni:
http://wiki.eclipse.org/index.php/IRC

A fejlesztésről még annyit, hogy az Eclipse hajlamos lenyelni a hibákat 
(valami nem megy, de te észre se veszed), pl. ikonokkal kapcsolatban, ha 
nem talál valamit, annak semmi nyoma nem lesz, max. annyi, hogy nincs 
meg az ikon. Van egy érdekes szemlélete a dolognak (pl. egyes függvények 
hajlamosak elszállni valami exception-ökkel, ha nem gui-s szálból hívják 
őket).

Ajánlanám még figyelmedbe a "workspace/.metadata/log.txt" fájlt, ebbe te 
is tudsz majd logolni, meg ide írkálja az exception dumpokat.

Remélem segít valamit!
Ricsi

Fisha wrote:
> Sziasztok!
>
> Hogyan lehet eclipse-ben a legegyszerubben uj fajta new file
> template-et
> csinalni. Legjobb az lenne ha a file new menuben lenne egy uj file
> tipus? Ehhez plugint kellene irni? Ha igen, mik a kulcsszavak egy
> ilyen fajta plugin irasahoz, amire keresni erdemes.
>
> Elore is kosz,
> Fisha                            mailto:fisha at freemail.hu
>   



További információk a(z) Javalist levelezőlistáról