Annotation of OpenXM/src/cfep/MyOutputWindowController.m, Revision 1.1
1.1 ! takayama 1: //
! 2: // MyOutputWindowController.m
! 3: // cfep
! 4: //
! 5: // Created by nobuki on 06/01/25.
! 6: // Copyright 2006 __MyCompanyName__. All rights reserved.
! 7: //
! 8:
! 9: #import "MyOutputWindowController.h"
! 10: #import "MyDocument.h"
! 11:
! 12: @implementation MyOutputWindowController
! 13:
! 14: +(MyOutputWindowController *) sharedMyOutputWindowController: (MyDocument *) sender action: (enum actionType) act {
! 15: static NSMutableDictionary * sharedMOWC; // class variable.
! 16: MyOutputWindowController *owin;
! 17: if (sharedMOWC == nil) {
! 18: sharedMOWC = [NSMutableDictionary dictionaryWithCapacity: 1024]; //BUG. finite number.
! 19: [sharedMOWC retain];
! 20: }
! 21: if (act == FIND) {
! 22: owin = [sharedMOWC objectForKey: [sender getMyDocumentKey]];
! 23: if (owin != nil) return owin;
! 24: owin = [[MyOutputWindowController allocWithZone:[MyOutputWindowController zone]] init];
! 25: [owin retain];
! 26: NSLog(@"MyOutputWindowController. new owc is created.\n");
! 27: [sharedMOWC setObject: owin forKey: [sender getMyDocumentKey]];
! 28: return owin;
! 29: }else{ // REMOVE
! 30: owin = [sharedMOWC objectForKey: [sender getMyDocumentKey]];
! 31: if (!owin) [sharedMOWC removeObjectForKey: [sender getMyDocumentKey]];
! 32: // [owin autorelease];
! 33: return owin;
! 34: }
! 35: }
! 36:
! 37: +(MyOutputWindowController *) sharedMyOutputWindowController: (MyDocument *)sender {
! 38: return [self sharedMyOutputWindowController: sender action: FIND];
! 39: }
! 40:
! 41:
! 42: -(id) init {
! 43: static int serial;
! 44: self = [self initWithWindowNibName: @"MyOutputWindow"];
! 45: if (self) [self setWindowFrameAutosaveName: @"cfep Output View"];
! 46: winNo = serial++;
! 47: return self;
! 48: }
! 49:
! 50: -(void) windowDidLoad {
! 51: [super windowDidLoad];
! 52: // [textViewOut retain]; ?
! 53: }
! 54:
! 55: -(void) dealloc {
! 56: NSLog(@"dealloc of MyOutputWindowController instance.\n");
! 57: [[NSNotificationCenter defaultCenter] removeObserver: self];
! 58: [super dealloc];
! 59: }
! 60:
! 61: -(void) closeMyOutputWindow: (MyDocument *) md {
! 62: NSLog(@"closeMyOutputWindow. \n");
! 63: [MyOutputWindowController sharedMyOutputWindowController: md action: REMOVE];
! 64: removable = 1;
! 65: [self close];
! 66: }
! 67:
! 68: -(BOOL) windowShouldClose: (NSWindow *)sender { // book. p.149 Delegate outlet of Window should me File's owner.
! 69: if (removable) return [super windowShouldClose: sender];
! 70: return NO;
! 71: }
! 72:
! 73: -(void)outputStringToOutputWindow:(NSString *)msg {
! 74: NSRange myRange = NSMakeRange([[textViewOut textStorage] length],0);
! 75: // NSLog(@"<MyOutputWindowController> outputStringToOutputWindow\n");
! 76: [textViewOut replaceCharactersInRange: myRange withString: msg];
! 77: [textViewOut scrollRangeToVisible: NSMakeRange([[textViewOut textStorage] length],0)];
! 78: }
! 79:
! 80: -(void)printErrorMessageToOutputWindow:(NSString *)msg {
! 81: int oldEnd;
! 82: int newEnd;
! 83: oldEnd = [[textViewOut textStorage] length];
! 84: NSRange myRange = NSMakeRange(oldEnd,0);
! 85: [textViewOut replaceCharactersInRange: myRange withString: msg];
! 86: newEnd = [[textViewOut textStorage] length];
! 87: [textViewOut setTextColor: [NSColor redColor] range: NSMakeRange(oldEnd,newEnd-oldEnd)];
! 88: [textViewOut scrollRangeToVisible: NSMakeRange(newEnd,0)];
! 89: }
! 90:
! 91: -(void)clearOutputWindow {
! 92: NSRange myRange = NSMakeRange(0,[[textViewOut textStorage] length]);
! 93: [textViewOut replaceCharactersInRange: myRange withString: @""];
! 94: }
! 95: -(void)changeWindowTitle: (NSString *)msg {
! 96: NSLog(@"title=%@\n",[window title]);
! 97: // [window setTitle: msg]; it does not work. Why?
! 98: }
! 99: -(void)showUp {
! 100: if (displayed == 0) {
! 101: [self showWindow: nil];
! 102: displayed = 1;
! 103: [self changeWindowTitle: [[NSString stringWithFormat: @"OutputView %d",winNo] retain]];
! 104: }
! 105: }
! 106:
! 107: -(void) printDocument: (id) sender {
! 108: [textViewOut print: sender];
! 109: }
! 110:
! 111:
! 112: @end
FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>