File: NSForm-test.m

package info (click to toggle)
gnustep-examples 1%3A1.2.0-2
  • links: PTS
  • area: main
  • in suites: lenny
  • size: 1,952 kB
  • ctags: 270
  • sloc: objc: 14,381; makefile: 65
file content (153 lines) | stat: -rw-r--r-- 4,614 bytes parent folder | download | duplicates (9)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
/* NSForm-test.m: NSForm class demo/test

   Copyright (C) 1999 Free Software Foundation, Inc.

   Author:  Nicola Pero <n.pero@mi.flashnet.it>
   Date: 1999
   
   This file is part of GNUstep.
   
   This program is free software; you can redistribute it and/or modify
   it under the terms of the GNU General Public License as published by
   the Free Software Foundation; either version 2 of the License, or
   (at your option) any later version.
   
   This program is distributed in the hope that it will be useful,
   but WITHOUT ANY WARRANTY; without even the implied warranty of
   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
   GNU General Public License for more details.
   
   You should have received a copy of the GNU General Public License
   along with this program; if not, write to the Free Software
   Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */
#include <Foundation/Foundation.h>
#include <AppKit/AppKit.h>
#include <GNUstepGUI/GSVbox.h>
#include "../GSTestProtocol.h"

@interface NSFormTest: NSObject <GSTest>
{
  NSWindow *win;
}
-(void) restart;
@end

@implementation NSFormTest: NSObject
{
  // for instance variables see above
}
-(id) init 
{
  GSVbox* vbox;
  NSBox* boxOne;
  NSForm* formOne;
  NSBox* boxTwo;
  NSForm* formTwo;
  NSBox* fieldBox;
  NSTextField* field;
  NSRect winFrame;

  field = [[NSTextField new] autorelease];
  // I suppose this could be considered a hack
  [field setStringValue: @"Test"];
  [field sizeToFit];
  [field setStringValue: @""];
  //
  [field setEditable: YES];
  [field setAutoresizingMask: NSViewWidthSizable];

  fieldBox = [[NSBox new] autorelease];
  [fieldBox setTitlePosition: NSAtTop];
  [fieldBox setTitle: @"A NSTextField"];
  [fieldBox setBorderType: NSGrooveBorder];
  [fieldBox addSubview: field];
  [fieldBox sizeToFit];
  [fieldBox setAutoresizingMask: (NSViewWidthSizable | NSViewHeightSizable)];

  formOne = [[NSForm new] autorelease];
  [formOne addEntry: @"First Name:"];
  [formOne addEntry: @"Surname:"];
  [formOne addEntry: @"Address:"];
  [formOne addEntry: @"City:"];
  [formOne addEntry: @"State:"];
  [formOne setAutoresizingMask: NSViewWidthSizable];
  // Please note the order of the following commands
  [formOne setAutosizesCells: YES];
  // We use sizeToFit to make the form nice in the vertical direction
  [formOne sizeToFit];
  // Only then we set a bigger entry width (otherwise sizeToFit sets the 
  // minimum width).
  [formOne setEntryWidth: 240];

  boxOne = [[NSBox new] autorelease];
  [boxOne setTitlePosition: NSAtTop];
  [boxOne setTitle: @"A NSForm"];
  [boxOne setBorderType: NSGrooveBorder];
  [boxOne addSubview: formOne];
  [boxOne sizeToFit];
  [boxOne setAutoresizingMask: (NSViewWidthSizable | NSViewHeightSizable)];

  formTwo = [[NSForm new] autorelease];
  [formTwo addEntry: @"First Name:"];
  [formTwo addEntry: @"Surname:"];
  [formTwo addEntry: @"Address:"];
  [formTwo addEntry: @"City:"];
  [formTwo addEntry: @"State:"];
  // Please note the order of the following commands
  [formTwo setAutoresizingMask: (NSViewWidthSizable)];
  [formTwo setAutosizesCells: YES];
  [formTwo sizeToFit];
  [formTwo setEntryWidth: 240];

  boxTwo = [[NSBox new] autorelease];
  [boxTwo setTitlePosition: NSAtTop];
  [boxTwo setTitle: @"Another NSForm"];
  [boxTwo setBorderType: NSGrooveBorder];
  [boxTwo addSubview: formTwo];
  [boxTwo sizeToFit];
  [boxTwo setAutoresizingMask: (NSViewWidthSizable | NSViewHeightSizable)];

  vbox = [[GSVbox new] autorelease];
  [vbox setBorder: 10];
  [vbox setDefaultMinYMargin: 10];
  [vbox setAutoresizingMask: NSViewWidthSizable | NSViewHeightSizable];
  [vbox addView: boxTwo];
  [vbox addView: boxOne];
  [vbox addView: fieldBox];

  // NB: Always set next/previous text/keyview 
  // after all the objects have been created!
  [field setNextText: formOne];
  [formOne setNextText: formTwo];
  [formTwo setNextText: field];

  winFrame.size = [vbox frame].size;
  winFrame.origin = NSMakePoint (150, 150);
  
  win = [[NSWindow alloc] initWithContentRect: winFrame
			  styleMask: (NSTitledWindowMask 
				      | NSClosableWindowMask 
				      | NSMiniaturizableWindowMask
				      | NSResizableWindowMask)	
			  backing: NSBackingStoreBuffered
			  defer: YES];
  [win setTitle: @"NSForm Test"];
  [win setReleasedWhenClosed: NO];
  [win setContentView: vbox];

  [self restart];
  return self;
}
-(void) dealloc
{
  [win release];
  [super dealloc];
}
- (void) restart
{
  [win orderFront: nil]; 
  [[NSApplication sharedApplication] addWindowsItem: win
				     title: @"NSForm Test"
				     filename: NO];
}
@end