Actions sind der nächste Schritt um ASOC Programme zu schreiben. Outlets schaffen die Möglichkeit aus dem Programmcode auf UI Elemente zuzugreifen.
Actions im Gegenzug rufen Methoden auf die bei einem UI Ereignis z.B. ein Klick auf einen Button ausgelöst werden.
Diese werden wie folgt in der Klasse definiert:
-- controller.applescript -- asoc_01 -- Created by Christian Sonntag on 11.04.10. -- Copyright 2010 __MyCompanyName__. All rights reserved. script controller property parent : class "NSObject" --Outlet property textField : missing value --Action on doSomething_(sender) end doSomething_ end script
So, ab in den Interface Builder. Aus der Library wird ein NSButton unserer Wahl ins Fenster gezogen, positioniert, angepasst und mit einem schönen Namen versehen.
Nun muss dem Button auch eine Action aus der Klasse zugewiesen werden. Mit gedrückter rechter Maustaste ziehen wir eine Verbindung von dem Controller Objekt auf den neu positionierten NSButton und lassen die rechte Maustaste los.
Auch hier erscheint wieder ein kleines schwarzes Fenster das alle vorhandenen Methoden aus der Klasse anzeigt. Hier wählen wir „doSomething“ aus.
Zum Abschluss kann alles natürlich noch mal geprüft werden. Bei ausgewähltem NSButton schauen wir nun im Inspector im vorletzten Reiter unter „Sent Actions“, und siehe da dort ist „doSomething“ zu sehen.
So jetzt hauchen wir dem ganzen noch etwas Leben ein, siehe unten. Denn nach dem kompilieren passiert nämlich gar nix. Als Beispiel lassen wir nun einen Warnton ausgeben, eine Variable wird hoch gezählen, die im Anschluss mit einem „Hello World!“ im NSTextField ausgegeben wird.
Fürs erste sind die wichtigsten Basics erklärt auf die man weiter aufbauen kann.
-- controller.applescript -- asoc_01 -- Created by Christian Sonntag on 11.04.10. -- Copyright 2010 __MyCompanyName__. All rights reserved. script controller property parent : class "NSObject" property |count| : 1 --Outlet property textField : missing value --Action on doSomething_(sender) beep textField's setStringValue_("Hello World! (" & |count| & ")") set my |count| to (my |count|) + 1 end doSomething_ end script
[wpdm_file id=10]