Der deklarative Ansatz, die NetBeans-Plattform zu konfigurieren ist sehr praktisch, hat aber auch so seine Tücken. Der Vorteil ist unbestreitbar. Ohne die compilierten Class-Dateien anfassen zu müssen, kann man in XML- und Bundle-Dateien alle "Branding"-Arbeiten durchführen. Allerdings gibt es inzwischen recht verstreute Einrichtungsmöglichkeiten und sind teilweise auch als historisch zu bezeichnen.
Ein Bereich sind die Tastenkürzel, die man Aktionen der NetBeans-Oberfläche zuweisen kann. Ein populärer Bereich ist, in der layer.xml, der Shortcuts-Folder.
Zunächst benötigt man natürlich eine Action-Klasse, die selbst im Actions-Abschnitt deklariert sein sollte:
<filesystem>
<folder name="Actions">
<folder name="Window">
<file name="de-sepix-demo-QueryAction.instance"/>
</folder>
</folder>
Nun kann man im Shortcuts-Folder ein Tastenkürzel zuweisen:
<folder name="Shortcuts">
<file name="CS-Q.instance">
<attr name="instanceClass"
stringvalue="de.sepix.demo.QueryAction"/>
</file>
</folder>
Somit ist Strg+Umschalt+Q der Aktion "QueryAction" zugewiesen. Die eingentümliche Syntax für das Tastenkürzel wird in Utilities.stringToKey beschrieben.
Allerdings hat dieses Verfahren einige Nachteile. Das Tastenkürzel ist global einmalig zugewiesen (kann also nicht Tastatur-Profilen zugewiesen werden) und wird für den Anwender nicht sichtbar im Menü angezeigt.
Wenn man nämlich die QueryAction (hier z.B.) im Window-Menü einfügt:
<folder name="Menu">
<folder name="Window">
<file name="QueryAction.shadow">
<attr name="originalFile"
stringvalue=
"Actions/Window/de-sepix-demo-QueryAction.instance"/>
</file>
erscheint zwar der Menüeintrag, aber ohne die Tastenkürzel-Information, dass der Anwender die Eintrag auch per Strg+Umschalt+Q aufrufen kann.
Eine schönere Methode ist es, dem Anwender die Tastenkürzel über Keymaps zur Verfügung zu stellen. Damit kann der Nutzer die Tastenkürzel bequem im Options-Dialog verwalten und sieht diese auch immer in den Menüs zugewiesen:
<folder name="Keymaps">
<folder name="Sepix">
<file name="CS-Q.shadow">
<attr name="originalFile"
stringvalue="Actions/Window/de-sepix-demo-QueryAction.instance"/>
</file>
Nun erscheint automatisch im Options-Dialog zusätzlich zur NetBeans-Keymap auch die Sepix-Keymap.
Aber der Anwender muss erst explizit die Keymap "Sepix" auswählen. Aber auch das kann man vorgeben:
<folder name="Keymaps">
<attr name="currentKeymap" stringvalue="Sepix"/>
<folder name="Sepix">
<file name="CS-Q.shadow">
Mit dem Attribut "currentKeymap" wird die Standard-Keymap vorbelegt.
Will man beim Brandig die NetBeans-Keymap vor dem Anwender verstecken, nutzt man dafür das Standard-Verfahren:
<folder name="Keymaps">
<folder name="NetBeans_hidden"/>
<attr name="currentKeymap" stringvalue="Sepix"/>
<folder name="Sepix">
<file name="CS-Q.shadow">
Mit diesem Verfahren kann man für den Anwender bequem zu verwaltende Tastaturkürzel einrichten.
Beste Grüße,
Josch.
