TopComponentGroup mit Annotation

Für eins meiner Projekte hier in der WZL Getriebeabteilung wollte ich 2 TopComponents öffnen. Das geht am schönsten mit TopComponentGroups. Wer allerdings schon einmal eine TopComponentGroup erstellt hat, der wird mir sicherlich zustimmen, dass das Eintragen in die layer.xml eine sehr fehleranfällige Methode ist, da man sich relativ leicht vertippen kann.

Nichtsdestotrotz habe ich es dank Geertjan geschafft eine TopComponentGroup zu erstellen. Meine layer.xml sah dann am Ende so aus, nachdem ich die ganzen .wsgrp und .wstcgrp Dateien direkt mit in die Layer geschrieben hatte:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE filesystem PUBLIC "-//NetBeans//DTD Filesystem 1.2//EN" "http://www.netbeans.org/dtds/filesystem-1_2.dtd">
<filesystem>
 <folder name="Windows2">
  <folder name="Groups">
   <file name="MyGroup.wsgrp">
    <![CDATA[<?xml version="1.0" encoding="UTF-8"?>
   <!DOCTYPE group PUBLIC "-//NetBeans//DTD Group Properties 2.0//EN" "http://www.netbeans.org/dtds/group-properties2_0.dtd">
   <group version="2.0">
   <module name="de.foo.windowgroup" spec="1.0" />
   <name unique="MyGroup" />
   <state opened="false" />
   </group>]]>
   </file>
   <folder name="MyGroup">
    <file name="FirstTopComponent.wstcgrp">
     <![CDATA[<?xml version="1.0" encoding="UTF-8" ?>
    <!DOCTYPE tc-group PUBLIC "-//NetBeans//DTD Top Component in Group Properties 2.0//EN" "http://www.netbeans.org/dtds/tc-group2_0.dtd">
    <tc-group version="2.0">
    <module name="de.foo.windowgroup" spec="1.0"/>
    <tc-id id="FirstTopComponent" />
    <open-close-behavior open="true" close="true" />
    </tc-group>]]>
    </file>
    <file name="SecondTopComponent.wstcgrp">
     <![CDATA[<?xml version="1.0" encoding="UTF-8" ?>
    <!DOCTYPE tc-group PUBLIC "-//NetBeans//DTD Top Component in Group Properties 2.0//EN" "http://www.netbeans.org/dtds/tc-group2_0.dtd">
    <tc-group version="2.0">
    <module name="de.foo.windowgroup" spec="1.0"/>
    <tc-id id="SecondTopComponent" />
    <open-close-behavior open="true" close="true" />
    </tc-group>]]>
    </file>
   </folder>
  </folder>
 </folder>
</filesystem>

Nachdem ich also diese Datei mal endlich Fehlerfrei hatte, hab ich mich gefragt, ob diese Arbeit nicht auch vielleicht von einer Annotation übernommen werden könnte? Und da ich nach längerem befragen von Dr. Goolge nichts gefunden hatte, beschloss ich, diese Annotation mal selber zu schreiben.

Das Ergebnis: TopComponentGroupRegistration.

1
2
3
4
@TopComponentGroupRegistration(group="Gruppenname" module="de.foo.gruppenTest", open=true, close=true, groupOpenState=false)
public class TC extends TopComponent{
...
}

Zur Erklärung der einzelnen Parameter:
group:Der eindeutige Name der Gruppe.
module: Der Name des Moduls in der sich die TopComponent befindet
open: Soll die TopComponent mit der Gruppe geöffnet werden? (default:true)
close: Soll die TopComponent mit der Gruppe geschlossen werden? (default:true)
groupOpenState: Der default Wert ob die Gruppe geöffnet oder geschlossen ist. (default:false)

Quellcode auf SourceForge.net

Hinterlasse eine Antwort

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind markiert *


sechs + 9 =

Du kannst folgende HTML-Tags benutzen: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>