| author | Zachary West <zacw@adium.im> |
| Mon Nov 02 18:30:22 2009 -0500 (2009-11-02) | |
| changeset 2728 | bb4935318350 |
| parent 1946 | 866f1f27b315 |
| permissions | -rw-r--r-- |
| zacw@1543 | 1 |
// |
| zacw@1543 | 2 |
// AIJumpControlPlugin.m |
| zacw@1543 | 3 |
// Adium |
| zacw@1543 | 4 |
// |
| zacw@1543 | 5 |
// Created by Zachary West on 2009-04-04. |
| zacw@1543 | 6 |
// |
| zacw@1543 | 7 |
|
| zacw@1543 | 8 |
#import "AIJumpControlPlugin.h" |
| zacw@1543 | 9 |
#import <AIUtilities/AIMenuAdditions.h> |
| zacw@1543 | 10 |
#import <AIUtilities/JVMarkedScroller.h> |
| zacw@1543 | 11 |
#import <AIUtilities/AIWindowAdditions.h> |
| zacw@1543 | 12 |
#import <Adium/AIInterfaceControllerProtocol.h> |
| zacw@1543 | 13 |
#import <Adium/AIMenuControllerProtocol.h> |
| zacw@1543 | 14 |
#import <Adium/AIChat.h> |
| zacw@1543 | 15 |
#import "AIMessageViewController.h" |
| zacw@1543 | 16 |
#import "AIMessageTabViewItem.h" |
| zacw@1543 | 17 |
|
| zacw@1715 | 18 |
#define PREF_KEY_FOCUS_LINE @"Draw Focus Lines" |
| zacw@1715 | 19 |
|
| zacw@1581 | 20 |
@interface AIJumpControlPlugin() |
| zacw@1581 | 21 |
- (NSObject<AIMessageDisplayController> *)currentController; |
| zacw@1581 | 22 |
@end |
| zacw@1581 | 23 |
|
| zacw@1543 | 24 |
@implementation AIJumpControlPlugin |
| zacw@1543 | 25 |
- (void)installPlugin |
| zacw@1543 | 26 |
{ |
| zacw@1581 | 27 |
menuItem_previous = [[NSMenuItem alloc] initWithTitle:AILocalizedString(@"Jump to Previous Mark", "Jump to the previous mark in the message window") |
| zacw@1581 | 28 |
target:self |
| zacw@1581 | 29 |
action:@selector(jumpToPrevious) |
| zacw@1581 | 30 |
keyEquivalent:@"[" |
| zacw@1581 | 31 |
keyMask:NSAlternateKeyMask | NSCommandKeyMask]; |
| zacw@1543 | 32 |
|
| zacw@1581 | 33 |
[adium.menuController addMenuItem:menuItem_previous toLocation:LOC_Display_Jump]; |
| zacw@1543 | 34 |
|
| zacw@1581 | 35 |
menuItem_next = [[NSMenuItem alloc] initWithTitle:AILocalizedString(@"Jump to Next Mark", "Jump to the next mark in the message window") |
| zacw@1581 | 36 |
target:self |
| zacw@1581 | 37 |
action:@selector(jumpToNext) |
| zacw@1581 | 38 |
keyEquivalent:@"]" |
| zacw@1581 | 39 |
keyMask:NSAlternateKeyMask | NSCommandKeyMask]; |
| zacw@1543 | 40 |
|
| zacw@1581 | 41 |
[adium.menuController addMenuItem:menuItem_next toLocation:LOC_Display_Jump]; |
| zacw@1543 | 42 |
|
| zacw@1581 | 43 |
menuItem_focus = [[NSMenuItem alloc] initWithTitle:AILocalizedString(@"Jump to Focus Mark", "Jump to the next location in the message window where the user last saw content") |
| zacw@1581 | 44 |
target:self |
| zacw@1581 | 45 |
action:@selector(jumpToFocus) |
| zacw@1581 | 46 |
keyEquivalent:@""]; |
| zacw@1543 | 47 |
|
| zacw@1581 | 48 |
[adium.menuController addMenuItem:menuItem_focus toLocation:LOC_Display_Jump]; |
| zacw@1543 | 49 |
|
| zacw@1581 | 50 |
menuItem_add = [[NSMenuItem alloc] initWithTitle:AILocalizedString(@"Add Mark", "Inserts a custom mark into the message window") |
| zacw@1581 | 51 |
target:self |
| zacw@1581 | 52 |
action:@selector(addMark) |
| zacw@1581 | 53 |
keyEquivalent:@""]; |
| zacw@1543 | 54 |
|
| zacw@1581 | 55 |
[adium.menuController addMenuItem:menuItem_add toLocation:LOC_Display_Jump]; |
| zacw@1543 | 56 |
} |
| zacw@1543 | 57 |
|
| zacw@1543 | 58 |
- (void)uninstallPlugin |
| zacw@1543 | 59 |
{ |
| zacw@1581 | 60 |
[adium.menuController removeMenuItem:menuItem_previous]; |
| zacw@1581 | 61 |
[adium.menuController removeMenuItem:menuItem_next]; |
| zacw@1581 | 62 |
[adium.menuController removeMenuItem:menuItem_focus]; |
| zacw@1581 | 63 |
[adium.menuController removeMenuItem:menuItem_add]; |
| zacw@1543 | 64 |
} |
| zacw@1543 | 65 |
|
| zacw@1543 | 66 |
#pragma mark Jump handling |
| zacw@1543 | 67 |
- (BOOL)validateMenuItem:(NSMenuItem *)menuItem |
| zacw@1543 | 68 |
{ |
| zacw@1581 | 69 |
if (menuItem == menuItem_previous) { |
| zacw@1581 | 70 |
return [self.currentController previousMarkExists]; |
| zacw@1581 | 71 |
} else if (menuItem == menuItem_next) { |
| zacw@1581 | 72 |
return [self.currentController nextMarkExists]; |
| zacw@1581 | 73 |
} else if (menuItem == menuItem_focus) { |
| zacw@1581 | 74 |
return [self.currentController focusMarkExists]; |
| zacw@1581 | 75 |
} |
| zacw@1581 | 76 |
|
| zacw@1715 | 77 |
return (nil != adium.interfaceController.activeChat); |
| zacw@1543 | 78 |
} |
| zacw@1543 | 79 |
|
| zacw@1543 | 80 |
- (NSObject<AIMessageDisplayController> *)currentController |
| zacw@1543 | 81 |
{ |
| zacw@1588 | 82 |
return adium.interfaceController.activeChat.chatContainer.messageViewController.messageDisplayController; |
| zacw@1543 | 83 |
} |
| zacw@1543 | 84 |
|
| zacw@1543 | 85 |
- (void)jumpToPrevious |
| zacw@1543 | 86 |
{ |
| zacw@1543 | 87 |
[self.currentController jumpToPreviousMark]; |
| zacw@1543 | 88 |
} |
| zacw@1543 | 89 |
|
| zacw@1543 | 90 |
- (void)jumpToNext |
| zacw@1543 | 91 |
{ |
| zacw@1543 | 92 |
[self.currentController jumpToNextMark]; |
| zacw@1543 | 93 |
} |
| zacw@1543 | 94 |
|
| zacw@1543 | 95 |
- (void)jumpToFocus |
| zacw@1543 | 96 |
{ |
| zacw@1543 | 97 |
[self.currentController jumpToFocusMark]; |
| zacw@1543 | 98 |
} |
| zacw@1543 | 99 |
|
| zacw@1543 | 100 |
- (void)addMark |
| zacw@1543 | 101 |
{ |
| zacw@1543 | 102 |
[self.currentController addMark]; |
| zacw@1543 | 103 |
} |
| zacw@1543 | 104 |
|
| zacw@1543 | 105 |
@end |