efb7c003425763057388695a82901f6bc8b30a9a
[enjoyable.git] / Classes / NJOutputMapping.m
1 //
2 // NJOutputMapping.m
3 // Enjoy
4 //
5 // Created by Sam McCall on 6/05/09.
6 //
7
8 #import "NJOutputMapping.h"
9
10 #import "EnjoyableApplicationDelegate.h"
11 #import "NJMapping.h"
12 #import "NJMappingsController.h"
13
14 @implementation NJOutputMapping
15
16 + (NSString *)serializationCode {
17 return @"mapping";
18 }
19
20 - (NSDictionary *)serialize {
21 NSString *name = _mapping ? _mapping.name : self.mappingName;
22 return name
23 ? @{ @"type": self.class.serializationCode, @"name": name }
24 : nil;
25 }
26
27 + (NJOutputMapping *)outputDeserialize:(NSDictionary *)serialization {
28 NSString *name = serialization[@"name"];
29 NJOutputMapping *output = [[NJOutputMapping alloc] init];
30 output.mappingName = name;
31 return name ? output : nil;
32 }
33
34 - (void)trigger {
35 EnjoyableApplicationDelegate *ctrl = (EnjoyableApplicationDelegate *)NSApplication.sharedApplication.delegate;
36 if (_mapping) {
37 [ctrl.mappingsController activateMapping:_mapping];
38 self.mappingName = _mapping.name;
39 } else {
40 // TODO: Show an error message? Unobtrusively since something
41 // is probably running.
42 }
43 }
44
45 - (void)postLoadProcess:(id <NSFastEnumeration>)allMappings {
46 if (!self.mapping) {
47 for (NJMapping *mapping in allMappings) {
48 if ([mapping.name isEqualToString:self.mappingName]) {
49 self.mapping = mapping;
50 break;
51 }
52 }
53 }
54 }
55
56 @end