Rewrite KeyInputTextView into NJKeyInputField. New class communicates using a proper...
[enjoyable.git] / TargetController.m
index 2ecb060..48119c2 100644 (file)
@@ -11,7 +11,7 @@
 #import "Config.h"
 #import "JSAction.h"
 #import "JoystickController.h"
-#import "KeyInputTextView.h"
+#import "NJKeyInputField.h"
 #import "TargetConfig.h"
 #import "TargetController.h"
 #import "TargetKeyboard.h"
@@ -26,7 +26,7 @@
     NSInteger row = radioButtons.selectedRow;
     
     if (row != 1) {
-        keyInput.vk = -1;
+        keyInput.keyCode = -1;
         [keyInput resignIfFirstResponder];
     }
     
     [self commit];
 }
 
-- (void)keyChanged {
+- (void)keyInputField:(NJKeyInputField *)keyInput didChangeKey:(CGKeyCode)keyCode {
     [radioButtons selectCellAtRow:1 column:0];
     [radioButtons.window makeFirstResponder:radioButtons];
     [self commit];
 }
 
+- (void)keyInputFieldDidClear:(NJKeyInputField *)keyInput {
+    [radioButtons selectCellAtRow:0 column:0];
+    [self commit];
+}
+
 - (void)configChosen:(id)sender {
     [radioButtons selectCellAtRow:2 column:0];
     [configPopup.window makeFirstResponder:configPopup];
         case 0:
             return nil;
         case 1:
-            if (keyInput.hasKey) {
+            if (keyInput.hasKeyCode) {
                 TargetKeyboard *k = [[TargetKeyboard alloc] init];
-                k.vk = keyInput.vk;
+                k.vk = keyInput.keyCode;
                 return k;
             } else {
                 return nil;
     } else {
         self.enabled = YES;
         NSString *actFullName = action.name;
-        for (JSAction *cur = action.base; cur; cur = cur.base) {
+        for (id <NJActionPathElement> cur = action.base; cur; cur = cur.base) {
             actFullName = [[NSString alloc] initWithFormat:@"%@ > %@", cur.name, actFullName];
         }
         title.stringValue = [[NSString alloc] initWithFormat:@"%@ > %@", configsController.currentConfig.name, actFullName];
     }
 
-    if ([target isKindOfClass:[TargetKeyboard class]]) {
+    if ([target isKindOfClass:TargetKeyboard.class]) {
         [radioButtons selectCellAtRow:1 column:0];
-        keyInput.vk = [(TargetKeyboard*)target vk];
-    } else if ([target isKindOfClass:[TargetConfig class]]) {
+        keyInput.keyCode = [(TargetKeyboard*)target vk];
+    } else if ([target isKindOfClass:TargetConfig.class]) {
         [radioButtons selectCellAtRow:2 column:0];
         NSUInteger idx = [configsController.configs
                           indexOfObject:[(TargetConfig *)target config]];
         } else
             [configPopup selectItemAtIndex:idx];
     }
-    else if ([target isKindOfClass:[TargetMouseMove class]]) {
+    else if ([target isKindOfClass:TargetMouseMove.class]) {
         [radioButtons selectCellAtRow:3 column:0];
         [mouseDirSelect setSelectedSegment:[(TargetMouseMove *)target axis]];
     }
-    else if ([target isKindOfClass:[TargetMouseBtn class]]) {
+    else if ([target isKindOfClass:TargetMouseBtn.class]) {
         [radioButtons selectCellAtRow:4 column:0];
         mouseBtnSelect.selectedSegment = [(TargetMouseBtn *)target button] == kCGMouseButtonLeft ? 0 : 1;
     }
-    else if ([target isKindOfClass:[TargetMouseScroll class]]) {
+    else if ([target isKindOfClass:TargetMouseScroll.class]) {
         [radioButtons selectCellAtRow:5 column:0];
         scrollDirSelect.selectedSegment = [(TargetMouseScroll *)target amount] > 0;
     }
-    else if ([target isKindOfClass:[TargetToggleMouseScope class]]) {
+    else if ([target isKindOfClass:TargetToggleMouseScope.class]) {
         [radioButtons selectCellAtRow:6 column:0];
     } else {
         [radioButtons selectCellAtRow:self.enabled ? 0 : -1 column:0];
 }
 
 - (void)loadCurrent {
-    [self loadTarget:[self currentTarget] forAction:joystickController.selectedAction];
+    [self loadTarget:self.currentTarget forAction:joystickController.selectedAction];
 }
 
 - (void)focusKey {