92 if (sClipboard == nil) { 93 sClipboard = [[CClipboard alloc] init]; 94 [[NSNotificationCenter defaultCenter] addObserver:sClipboard selector: @selector(checkPasteboard:) name: NSApplicationDidBecomeActiveNotification object: nil]; 95 } 96 97 return sClipboard; 98 } 99 100 - (id) init 101 { 102 self = [super init]; 103 104 if (self != nil) { 105 fChangeCount = [[NSPasteboard generalPasteboard] changeCount]; 106 } 107 108 return self; 109 } 110 111 - (void) javaDeclareTypes:(NSArray *)inTypes withOwner:(jobject)inClipboard jniEnv:(JNIEnv *)inEnv { 112 AWT_ASSERT_NOT_APPKIT_THREAD; 113 114 //NSLog(@"CClipboard javaDeclareTypes %@ withOwner", inTypes); 115 116 @synchronized(self) { 117 if (inClipboard != NULL) { 118 if (fClipboardOwner != NULL) { 119 JNFDeleteGlobalRef(inEnv, fClipboardOwner); 120 } 121 fClipboardOwner = JNFNewGlobalRef(inEnv, inClipboard); 122 } 123 } 124 [ThreadUtilities performOnMainThread:@selector(_nativeDeclareTypes:) onObject:self withObject:inTypes waitUntilDone:YES awtMode:YES]; 125 } 126 127 - (void) _nativeDeclareTypes:(NSArray *)inTypes { 128 AWT_ASSERT_APPKIT_THREAD; 129 130 //NSLog(@"CClipboard _nativeDeclareTypes %@ withOwner", inTypes); 131 132 fChangeCount = [[NSPasteboard generalPasteboard] declareTypes:inTypes owner:self]; 133 } 134 135 136 - (NSArray *) javaGetTypes { 137 AWT_ASSERT_NOT_APPKIT_THREAD; 138 139 NSMutableArray *args = [NSMutableArray arrayWithCapacity:1]; 140 [ThreadUtilities performOnMainThread:@selector(_nativeGetTypes:) onObject:self withObject:args waitUntilDone:YES awtMode:YES]; 141 142 //NSLog(@"CClipboard getTypes returns %@", [args lastObject]); 143 return [args lastObject]; 144 } 145 146 - (void) _nativeGetTypes:(NSMutableArray *)args { 147 AWT_ASSERT_APPKIT_THREAD; 148 149 [args addObject:[[NSPasteboard generalPasteboard] types]]; 150 151 //NSLog(@"CClipboard getTypes returns %@", [args lastObject]); 152 } 153 154 - (void) javaSetData:(NSData *)inData forType:(NSString *) inFormat { 155 AWT_ASSERT_NOT_APPKIT_THREAD; 156 157 CClipboardUpdate *newUpdate = [[CClipboardUpdate alloc] initWithData:inData withFormat:inFormat]; 158 [ThreadUtilities performOnMainThread:@selector(_nativeSetData:) onObject:self withObject:newUpdate waitUntilDone:YES awtMode:YES]; 159 [newUpdate release]; 160 161 //NSLog(@"CClipboard javaSetData forType %@", inFormat); 162 } 163 164 - (void) _nativeSetData:(CClipboardUpdate *)newUpdate { 165 AWT_ASSERT_APPKIT_THREAD; 166 167 [[NSPasteboard generalPasteboard] setData:[newUpdate data] forType:[newUpdate format]]; 168 169 //NSLog(@"CClipboard _nativeSetData setData %@", [newUpdate data]); 170 //NSLog(@"CClipboard _nativeSetData forType %@", [newUpdate format]); 171 } 172 173 - (NSData *) javaGetDataForType:(NSString *) inFormat { 174 AWT_ASSERT_NOT_APPKIT_THREAD; 175 176 NSMutableArray *args = [NSMutableArray arrayWithObject:inFormat]; 177 [ThreadUtilities performOnMainThread:@selector(_nativeGetDataForType:) onObject:self withObject:args waitUntilDone:YES awtMode:YES]; 178 179 //NSLog(@"CClipboard javaGetDataForType %@ returns an NSData", inFormat); 180 return [args lastObject]; 181 } 182 183 - (void) _nativeGetDataForType:(NSMutableArray *) args { 184 AWT_ASSERT_APPKIT_THREAD; 185 186 NSData *returnValue = [[NSPasteboard generalPasteboard] dataForType:[args objectAtIndex:0]]; 187 188 if (returnValue) [args replaceObjectAtIndex:0 withObject:returnValue]; 189 else [args removeLastObject]; 190 191 //NSLog(@"CClipboard _nativeGetDataForType"); 192 } 193 194 - (void) checkPasteboard:(id)application { | 92 if (sClipboard == nil) { 93 sClipboard = [[CClipboard alloc] init]; 94 [[NSNotificationCenter defaultCenter] addObserver:sClipboard selector: @selector(checkPasteboard:) name: NSApplicationDidBecomeActiveNotification object: nil]; 95 } 96 97 return sClipboard; 98 } 99 100 - (id) init 101 { 102 self = [super init]; 103 104 if (self != nil) { 105 fChangeCount = [[NSPasteboard generalPasteboard] changeCount]; 106 } 107 108 return self; 109 } 110 111 - (void) javaDeclareTypes:(NSArray *)inTypes withOwner:(jobject)inClipboard jniEnv:(JNIEnv *)inEnv { 112 113 //NSLog(@"CClipboard javaDeclareTypes %@ withOwner", inTypes); 114 115 @synchronized(self) { 116 if (inClipboard != NULL) { 117 if (fClipboardOwner != NULL) { 118 JNFDeleteGlobalRef(inEnv, fClipboardOwner); 119 } 120 fClipboardOwner = JNFNewGlobalRef(inEnv, inClipboard); 121 } 122 } 123 [ThreadUtilities performOnMainThread:@selector(_nativeDeclareTypes:) onObject:self withObject:inTypes waitUntilDone:YES awtMode:YES]; 124 } 125 126 - (void) _nativeDeclareTypes:(NSArray *)inTypes { 127 AWT_ASSERT_APPKIT_THREAD; 128 129 //NSLog(@"CClipboard _nativeDeclareTypes %@ withOwner", inTypes); 130 131 fChangeCount = [[NSPasteboard generalPasteboard] declareTypes:inTypes owner:self]; 132 } 133 134 135 - (NSArray *) javaGetTypes { 136 137 NSMutableArray *args = [NSMutableArray arrayWithCapacity:1]; 138 [ThreadUtilities performOnMainThread:@selector(_nativeGetTypes:) onObject:self withObject:args waitUntilDone:YES awtMode:YES]; 139 140 //NSLog(@"CClipboard getTypes returns %@", [args lastObject]); 141 return [args lastObject]; 142 } 143 144 - (void) _nativeGetTypes:(NSMutableArray *)args { 145 AWT_ASSERT_APPKIT_THREAD; 146 147 [args addObject:[[NSPasteboard generalPasteboard] types]]; 148 149 //NSLog(@"CClipboard getTypes returns %@", [args lastObject]); 150 } 151 152 - (void) javaSetData:(NSData *)inData forType:(NSString *) inFormat { 153 154 CClipboardUpdate *newUpdate = [[CClipboardUpdate alloc] initWithData:inData withFormat:inFormat]; 155 [ThreadUtilities performOnMainThread:@selector(_nativeSetData:) onObject:self withObject:newUpdate waitUntilDone:YES awtMode:YES]; 156 [newUpdate release]; 157 158 //NSLog(@"CClipboard javaSetData forType %@", inFormat); 159 } 160 161 - (void) _nativeSetData:(CClipboardUpdate *)newUpdate { 162 AWT_ASSERT_APPKIT_THREAD; 163 164 [[NSPasteboard generalPasteboard] setData:[newUpdate data] forType:[newUpdate format]]; 165 166 //NSLog(@"CClipboard _nativeSetData setData %@", [newUpdate data]); 167 //NSLog(@"CClipboard _nativeSetData forType %@", [newUpdate format]); 168 } 169 170 - (NSData *) javaGetDataForType:(NSString *) inFormat { 171 172 NSMutableArray *args = [NSMutableArray arrayWithObject:inFormat]; 173 [ThreadUtilities performOnMainThread:@selector(_nativeGetDataForType:) onObject:self withObject:args waitUntilDone:YES awtMode:YES]; 174 175 //NSLog(@"CClipboard javaGetDataForType %@ returns an NSData", inFormat); 176 return [args lastObject]; 177 } 178 179 - (void) _nativeGetDataForType:(NSMutableArray *) args { 180 AWT_ASSERT_APPKIT_THREAD; 181 182 NSData *returnValue = [[NSPasteboard generalPasteboard] dataForType:[args objectAtIndex:0]]; 183 184 if (returnValue) [args replaceObjectAtIndex:0 withObject:returnValue]; 185 else [args removeLastObject]; 186 187 //NSLog(@"CClipboard _nativeGetDataForType"); 188 } 189 190 - (void) checkPasteboard:(id)application { |