Project

General

Profile

Revision 341

Added by Greg Tress over 16 years ago

minor changes to gui, plus documentation

View differences:

trunk/code/projects/colonet/ColonetGUI/Colonet.xcodeproj/gmtress.pbxuser
163 163
					PBXFileDataSource_Warnings_ColumnID,
164 164
				);
165 165
			};
166
			PBXPerProjectTemplateStateSaveDate = 219194497;
167
			PBXWorkspaceStateSaveDate = 219194497;
166
			PBXPerProjectTemplateStateSaveDate = 219618750;
167
			PBXWorkspaceStateSaveDate = 219618750;
168 168
		};
169 169
		perUserProjectItems = {
170
			A30FC0970CBD7DFA000A16EC = A30FC0970CBD7DFA000A16EC /* PBXTextBookmark */;
171
			A312666C0C9B131A00D15EBF = A312666C0C9B131A00D15EBF /* PBXTextBookmark */;
172
			A36606FF0D0E387B00B9F19F = A36606FF0D0E387B00B9F19F /* PBXTextBookmark */;
173
			A36607020D0E38C600B9F19F = A36607020D0E38C600B9F19F /* PBXTextBookmark */;
174
			A36607050D0E38E300B9F19F = A36607050D0E38E300B9F19F /* PBXTextBookmark */;
175
			A36607060D0E38E300B9F19F = A36607060D0E38E300B9F19F /* PBXTextBookmark */;
176
			A3B867610D10A4BB00B6F595 /* PBXTextBookmark */ = A3B867610D10A4BB00B6F595 /* PBXTextBookmark */;
177
			A3B867690D10AD1900B6F595 /* PBXTextBookmark */ = A3B867690D10AD1900B6F595 /* PBXTextBookmark */;
178
			A3B8676A0D10AD1900B6F595 /* PBXTextBookmark */ = A3B8676A0D10AD1900B6F595 /* PBXTextBookmark */;
179
			A3B8676B0D10AD1900B6F595 /* PBXTextBookmark */ = A3B8676B0D10AD1900B6F595 /* PBXTextBookmark */;
180
			A3B8676C0D10AD1900B6F595 /* PBXTextBookmark */ = A3B8676C0D10AD1900B6F595 /* PBXTextBookmark */;
181
			A3B8676D0D10AD1900B6F595 /* PBXTextBookmark */ = A3B8676D0D10AD1900B6F595 /* PBXTextBookmark */;
182
			A3B8676E0D10AD1900B6F595 /* PBXTextBookmark */ = A3B8676E0D10AD1900B6F595 /* PBXTextBookmark */;
183
			A3B8676F0D10AD1900B6F595 /* PBXTextBookmark */ = A3B8676F0D10AD1900B6F595 /* PBXTextBookmark */;
184
			A3B867730D10AD1900B6F595 /* PBXTextBookmark */ = A3B867730D10AD1900B6F595 /* PBXTextBookmark */;
185
			A3B8677E0D10B2C900B6F595 /* PBXTextBookmark */ = A3B8677E0D10B2C900B6F595 /* PBXTextBookmark */;
186
			A3B8677F0D10B2C900B6F595 /* PBXTextBookmark */ = A3B8677F0D10B2C900B6F595 /* PBXTextBookmark */;
187
			A3B867800D10B2C900B6F595 /* PBXTextBookmark */ = A3B867800D10B2C900B6F595 /* PBXTextBookmark */;
188
			A3B867810D10B2C900B6F595 /* PBXTextBookmark */ = A3B867810D10B2C900B6F595 /* PBXTextBookmark */;
189
			A3B867820D10B2C900B6F595 /* PBXTextBookmark */ = A3B867820D10B2C900B6F595 /* PBXTextBookmark */;
190
			A3B867830D10B2C900B6F595 /* PBXTextBookmark */ = A3B867830D10B2C900B6F595 /* PBXTextBookmark */;
191
			A3B867870D10B34A00B6F595 /* PBXTextBookmark */ = A3B867870D10B34A00B6F595 /* PBXTextBookmark */;
192
			A3B867880D10B34A00B6F595 /* PBXTextBookmark */ = A3B867880D10B34A00B6F595 /* PBXTextBookmark */;
193
			A3B8678B0D10B60C00B6F595 /* PBXTextBookmark */ = A3B8678B0D10B60C00B6F595 /* PBXTextBookmark */;
194
			A3B8678C0D10B60C00B6F595 /* PBXTextBookmark */ = A3B8678C0D10B60C00B6F595 /* PBXTextBookmark */;
195
			A3B867920D10B6D500B6F595 /* PBXTextBookmark */ = A3B867920D10B6D500B6F595 /* PBXTextBookmark */;
196
			A3B867930D10B6D500B6F595 /* PBXTextBookmark */ = A3B867930D10B6D500B6F595 /* PBXTextBookmark */;
197
			A3B867990D10B7DB00B6F595 /* PBXTextBookmark */ = A3B867990D10B7DB00B6F595 /* PBXTextBookmark */;
198
			A3B8679A0D10B7DB00B6F595 /* PBXTextBookmark */ = A3B8679A0D10B7DB00B6F595 /* PBXTextBookmark */;
199
			A3B8679E0D10B81200B6F595 /* PBXTextBookmark */ = A3B8679E0D10B81200B6F595 /* PBXTextBookmark */;
200
			A3B8679F0D10B81200B6F595 /* PBXTextBookmark */ = A3B8679F0D10B81200B6F595 /* PBXTextBookmark */;
201
			A3B867A30D10B89C00B6F595 /* PBXTextBookmark */ = A3B867A30D10B89C00B6F595 /* PBXTextBookmark */;
202
			A3B867A40D10B89C00B6F595 /* PBXTextBookmark */ = A3B867A40D10B89C00B6F595 /* PBXTextBookmark */;
203
			A3B867A90D10B90700B6F595 /* PBXTextBookmark */ = A3B867A90D10B90700B6F595 /* PBXTextBookmark */;
204
			A3B867AA0D10B90700B6F595 /* PBXTextBookmark */ = A3B867AA0D10B90700B6F595 /* PBXTextBookmark */;
205
			A3B867AF0D10B96200B6F595 /* PBXTextBookmark */ = A3B867AF0D10B96200B6F595 /* PBXTextBookmark */;
206
			A3B867B00D10B96200B6F595 /* PBXTextBookmark */ = A3B867B00D10B96200B6F595 /* PBXTextBookmark */;
207
			A3B867B40D10B9B800B6F595 /* PBXTextBookmark */ = A3B867B40D10B9B800B6F595 /* PBXTextBookmark */;
208
			A3B867B50D10B9B800B6F595 /* PBXTextBookmark */ = A3B867B50D10B9B800B6F595 /* PBXTextBookmark */;
209
			A3C65E1D0CD262BC00D77B7B = A3C65E1D0CD262BC00D77B7B /* PBXTextBookmark */;
210
			A3C65E6B0CD275C200D77B7B = A3C65E6B0CD275C200D77B7B /* PBXTextBookmark */;
211
			A3D78E650CB72FF100A79632 = A3D78E650CB72FF100A79632 /* PBXTextBookmark */;
212
			A3DAF7F40D09EC670015B97D = A3DAF7F40D09EC670015B97D /* PBXTextBookmark */;
213
			A3DAF7F50D09EC670015B97D = A3DAF7F50D09EC670015B97D /* PBXTextBookmark */;
214
			A3DAF9740D0BADA40015B97D = A3DAF9740D0BADA40015B97D /* PBXTextBookmark */;
215
			A3F558940CF276B100E3EBD1 = A3F558940CF276B100E3EBD1 /* PBXTargetBookmark */;
216
			A3FD76ED0CEBBBC10048CD0C = A3FD76ED0CEBBBC10048CD0C /* PBXTextBookmark */;
170
			A30FC0970CBD7DFA000A16EC /* PBXTextBookmark */ = A30FC0970CBD7DFA000A16EC /* PBXTextBookmark */;
171
			A312666C0C9B131A00D15EBF /* PBXTextBookmark */ = A312666C0C9B131A00D15EBF /* PBXTextBookmark */;
172
			A3C65E1D0CD262BC00D77B7B /* PBXTextBookmark */ = A3C65E1D0CD262BC00D77B7B /* PBXTextBookmark */;
173
			A3C65E6B0CD275C200D77B7B /* PBXTextBookmark */ = A3C65E6B0CD275C200D77B7B /* PBXTextBookmark */;
174
			A3D78E650CB72FF100A79632 /* PBXTextBookmark */ = A3D78E650CB72FF100A79632 /* PBXTextBookmark */;
175
			A3DAF7F40D09EC670015B97D /* PBXTextBookmark */ = A3DAF7F40D09EC670015B97D /* PBXTextBookmark */;
176
			A3DAF7F50D09EC670015B97D /* PBXTextBookmark */ = A3DAF7F50D09EC670015B97D /* PBXTextBookmark */;
177
			A3F558940CF276B100E3EBD1 /* PBXTargetBookmark */ = A3F558940CF276B100E3EBD1 /* PBXTargetBookmark */;
178
			A3F987F10D172221001CFAC4 /* PBXTextBookmark */ = A3F987F10D172221001CFAC4 /* PBXTextBookmark */;
179
			A3F987F90D17241C001CFAC4 /* PBXTextBookmark */ = A3F987F90D17241C001CFAC4 /* PBXTextBookmark */;
180
			A3F987FA0D17241C001CFAC4 /* PBXTextBookmark */ = A3F987FA0D17241C001CFAC4 /* PBXTextBookmark */;
181
			A3F987FB0D17241C001CFAC4 /* PBXTextBookmark */ = A3F987FB0D17241C001CFAC4 /* PBXTextBookmark */;
182
			A3F987FC0D17241C001CFAC4 /* PBXTextBookmark */ = A3F987FC0D17241C001CFAC4 /* PBXTextBookmark */;
183
			A3F9881D0D1739FE001CFAC4 /* PBXTextBookmark */ = A3F9881D0D1739FE001CFAC4 /* PBXTextBookmark */;
184
			A3F9881E0D1739FE001CFAC4 /* PBXTextBookmark */ = A3F9881E0D1739FE001CFAC4 /* PBXTextBookmark */;
185
			A3FD76ED0CEBBBC10048CD0C /* PBXTextBookmark */ = A3FD76ED0CEBBBC10048CD0C /* PBXTextBookmark */;
217 186
		};
218 187
		sourceControlManager = A341617E0C989B510007BEF2 /* Source Control */;
219 188
		userBuildSettings = {
......
221 190
	};
222 191
	00E68290FEC88D7311DB9C8B /* Colonet.java */ = {
223 192
		uiCtxt = {
224
			sepNavIntBoundsRect = "{{0, 0}, {1011, 20524}}";
225
			sepNavSelRange = "{42707, 0}";
226
			sepNavVisRect = "{{0, 19146}, {1011, 546}}";
193
			sepNavIntBoundsRect = "{{0, 0}, {1011, 21126}}";
194
			sepNavSelRange = "{40403, 0}";
195
			sepNavVisRect = "{{0, 18342}, {1011, 547}}";
227 196
			sepNavWindowFrame = "{{38, 133}, {613, 699}}";
228 197
		};
229 198
	};
......
276 245
		fRef = 00E68290FEC88D7311DB9C8B /* Colonet.java */;
277 246
		name = "Colonet.java: 300";
278 247
		rLen = 0;
279
		rLoc = 11027;
248
		rLoc = 11398;
280 249
		rType = 0;
281 250
		vrLen = 949;
282 251
		vrLoc = 0;
......
316 285
		uiCtxt = {
317 286
			sepNavIntBoundsRect = "{{0, 0}, {1011, 7028}}";
318 287
			sepNavSelRange = "{18062, 0}";
319
			sepNavVisRect = "{{0, 6462}, {1011, 546}}";
288
			sepNavVisRect = "{{0, 5211}, {1011, 547}}";
320 289
			sepNavWindowFrame = "{{15, 56}, {651, 776}}";
321 290
		};
322 291
	};
323
	A36606FF0D0E387B00B9F19F /* PBXTextBookmark */ = {
324
		isa = PBXTextBookmark;
325
		fRef = 00E68290FEC88D7311DB9C8B /* Colonet.java */;
326
		name = "Colonet.java: 1467";
327
		rLen = 0;
328
		rLoc = 44974;
329
		rType = 0;
330
		vrLen = 393;
331
		vrLoc = 39225;
332
	};
333
	A36607020D0E38C600B9F19F /* PBXTextBookmark */ = {
334
		isa = PBXTextBookmark;
335
		fRef = 00E68290FEC88D7311DB9C8B /* Colonet.java */;
336
		name = "Colonet.java: 1467";
337
		rLen = 0;
338
		rLoc = 44974;
339
		rType = 0;
340
		vrLen = 1260;
341
		vrLoc = 43868;
342
	};
343
	A36607050D0E38E300B9F19F /* PBXTextBookmark */ = {
344
		isa = PBXTextBookmark;
345
		fRef = 00E68290FEC88D7311DB9C8B /* Colonet.java */;
346
		name = "Colonet.java: 1467";
347
		rLen = 0;
348
		rLoc = 44974;
349
		rType = 0;
350
		vrLen = 1254;
351
		vrLoc = 43868;
352
	};
353
	A36607060D0E38E300B9F19F /* PBXTextBookmark */ = {
354
		isa = PBXTextBookmark;
355
		fRef = 00E68290FEC88D7311DB9C8B /* Colonet.java */;
356
		name = "Colonet.java: 1467";
357
		rLen = 0;
358
		rLoc = 44974;
359
		rType = 0;
360
		vrLen = 583;
361
		vrLoc = 43868;
362
	};
363
	A3B867610D10A4BB00B6F595 /* PBXTextBookmark */ = {
364
		isa = PBXTextBookmark;
365
		fRef = 00E68290FEC88D7311DB9C8B /* Colonet.java */;
366
		name = "Colonet.java: 1467";
367
		rLen = 0;
368
		rLoc = 44974;
369
		rType = 0;
370
		vrLen = 583;
371
		vrLoc = 43868;
372
	};
373
	A3B867690D10AD1900B6F595 /* PBXTextBookmark */ = {
374
		isa = PBXTextBookmark;
375
		fRef = A34161900C989CB30007BEF2 /* ColonetServerInterface.java */;
376
		name = "ColonetServerInterface.java: 476";
377
		rLen = 0;
378
		rLoc = 17519;
379
		rType = 0;
380
		vrLen = 1001;
381
		vrLoc = 17098;
382
	};
383
	A3B8676A0D10AD1900B6F595 /* PBXTextBookmark */ = {
384
		isa = PBXTextBookmark;
385
		fRef = 00E68290FEC88D7311DB9C8B /* Colonet.java */;
386
		name = "Colonet.java: 415";
387
		rLen = 0;
388
		rLoc = 14077;
389
		rType = 0;
390
		vrLen = 1032;
391
		vrLoc = 13620;
392
	};
393
	A3B8676B0D10AD1900B6F595 /* PBXTextBookmark */ = {
394
		isa = PBXTextBookmark;
395
		fRef = 00E68290FEC88D7311DB9C8B /* Colonet.java */;
396
		name = "Colonet.java: 1467";
397
		rLen = 0;
398
		rLoc = 44974;
399
		rType = 0;
400
		vrLen = 1262;
401
		vrLoc = 43682;
402
	};
403
	A3B8676C0D10AD1900B6F595 /* PBXTextBookmark */ = {
404
		isa = PBXTextBookmark;
405
		fRef = A34161900C989CB30007BEF2 /* ColonetServerInterface.java */;
406
		name = "ColonetServerInterface.java: 336";
407
		rLen = 0;
408
		rLoc = 12025;
409
		rType = 0;
410
		vrLen = 1438;
411
		vrLoc = 1855;
412
	};
413
	A3B8676D0D10AD1900B6F595 /* PBXTextBookmark */ = {
414
		isa = PBXTextBookmark;
415
		fRef = 00E68290FEC88D7311DB9C8B /* Colonet.java */;
416
		name = "Colonet.java: 415";
417
		rLen = 0;
418
		rLoc = 14077;
419
		rType = 0;
420
		vrLen = 1032;
421
		vrLoc = 13620;
422
	};
423
	A3B8676E0D10AD1900B6F595 /* PBXTextBookmark */ = {
424
		isa = PBXTextBookmark;
425
		fRef = A34161900C989CB30007BEF2 /* ColonetServerInterface.java */;
426
		name = "ColonetServerInterface.java: 476";
427
		rLen = 0;
428
		rLoc = 17519;
429
		rType = 0;
430
		vrLen = 1001;
431
		vrLoc = 17098;
432
	};
433
	A3B8676F0D10AD1900B6F595 /* PBXTextBookmark */ = {
434
		isa = PBXTextBookmark;
435
		fRef = 00E68290FEC88D7311DB9C8B /* Colonet.java */;
436
		name = "Colonet.java: 612";
437
		rLen = 0;
438
		rLoc = 21808;
439
		rType = 0;
440
		vrLen = 1413;
441
		vrLoc = 20474;
442
	};
443
	A3B867730D10AD1900B6F595 /* PBXTextBookmark */ = {
444
		isa = PBXTextBookmark;
445
		fRef = 00E68290FEC88D7311DB9C8B /* Colonet.java */;
446
		name = "Colonet.java: 1469";
447
		rLen = 0;
448
		rLoc = 44974;
449
		rType = 0;
450
		vrLen = 531;
451
		vrLoc = 43873;
452
	};
453
	A3B8677E0D10B2C900B6F595 /* PBXTextBookmark */ = {
454
		isa = PBXTextBookmark;
455
		fRef = A34161900C989CB30007BEF2 /* ColonetServerInterface.java */;
456
		name = "ColonetServerInterface.java: 488";
457
		rLen = 0;
458
		rLoc = 18062;
459
		rType = 0;
460
		vrLen = 1172;
461
		vrLoc = 17143;
462
	};
463
	A3B8677F0D10B2C900B6F595 /* PBXTextBookmark */ = {
464
		isa = PBXTextBookmark;
465
		fRef = 00E68290FEC88D7311DB9C8B /* Colonet.java */;
466
		name = "Colonet.java: 645";
467
		rLen = 0;
468
		rLoc = 22502;
469
		rType = 0;
470
		vrLen = 963;
471
		vrLoc = 22358;
472
	};
473
	A3B867800D10B2C900B6F595 /* PBXTextBookmark */ = {
474
		isa = PBXTextBookmark;
475
		fRef = 00E68290FEC88D7311DB9C8B /* Colonet.java */;
476
		name = "Colonet.java: 645";
477
		rLen = 0;
478
		rLoc = 22502;
479
		rType = 0;
480
		vrLen = 992;
481
		vrLoc = 22358;
482
	};
483
	A3B867810D10B2C900B6F595 /* PBXTextBookmark */ = {
484
		isa = PBXTextBookmark;
485
		fRef = A34161900C989CB30007BEF2 /* ColonetServerInterface.java */;
486
		name = "ColonetServerInterface.java: 488";
487
		rLen = 0;
488
		rLoc = 18062;
489
		rType = 0;
490
		vrLen = 1172;
491
		vrLoc = 17143;
492
	};
493
	A3B867820D10B2C900B6F595 /* PBXTextBookmark */ = {
494
		isa = PBXTextBookmark;
495
		fRef = 00E68290FEC88D7311DB9C8B /* Colonet.java */;
496
		name = "Colonet.java: 612";
497
		rLen = 0;
498
		rLoc = 21808;
499
		rType = 0;
500
		vrLen = 1382;
501
		vrLoc = 20908;
502
	};
503
	A3B867830D10B2C900B6F595 /* PBXTextBookmark */ = {
504
		isa = PBXTextBookmark;
505
		fRef = 00E68290FEC88D7311DB9C8B /* Colonet.java */;
506
		name = "Colonet.java: 1469";
507
		rLen = 0;
508
		rLoc = 44974;
509
		rType = 0;
510
		vrLen = 531;
511
		vrLoc = 43939;
512
	};
513
	A3B867870D10B34A00B6F595 /* PBXTextBookmark */ = {
514
		isa = PBXTextBookmark;
515
		fRef = 00E68290FEC88D7311DB9C8B /* Colonet.java */;
516
		name = "Colonet.java: 607";
517
		rLen = 0;
518
		rLoc = 21552;
519
		rType = 0;
520
		vrLen = 1374;
521
		vrLoc = 20908;
522
	};
523
	A3B867880D10B34A00B6F595 /* PBXTextBookmark */ = {
524
		isa = PBXTextBookmark;
525
		fRef = 00E68290FEC88D7311DB9C8B /* Colonet.java */;
526
		name = "Colonet.java: 1469";
527
		rLen = 0;
528
		rLoc = 44974;
529
		rType = 0;
530
		vrLen = 531;
531
		vrLoc = 43931;
532
	};
533
	A3B8678B0D10B60C00B6F595 /* PBXTextBookmark */ = {
534
		isa = PBXTextBookmark;
535
		fRef = 00E68290FEC88D7311DB9C8B /* Colonet.java */;
536
		name = "Colonet.java: 1377";
537
		rLen = 0;
538
		rLoc = 42742;
539
		rType = 0;
540
		vrLen = 923;
541
		vrLoc = 42472;
542
	};
543
	A3B8678C0D10B60C00B6F595 /* PBXTextBookmark */ = {
544
		isa = PBXTextBookmark;
545
		fRef = 00E68290FEC88D7311DB9C8B /* Colonet.java */;
546
		name = "Colonet.java: 1466";
547
		rLen = 0;
548
		rLoc = 44974;
549
		rType = 0;
550
		vrLen = 600;
551
		vrLoc = 43625;
552
	};
553
	A3B867920D10B6D500B6F595 /* PBXTextBookmark */ = {
554
		isa = PBXTextBookmark;
555
		fRef = 00E68290FEC88D7311DB9C8B /* Colonet.java */;
556
		name = "Colonet.java: 614";
557
		rLen = 0;
558
		rLoc = 21808;
559
		rType = 0;
560
		vrLen = 1471;
561
		vrLoc = 20528;
562
	};
563
	A3B867930D10B6D500B6F595 /* PBXTextBookmark */ = {
564
		isa = PBXTextBookmark;
565
		fRef = 00E68290FEC88D7311DB9C8B /* Colonet.java */;
566
		name = "Colonet.java: 1468";
567
		rLen = 0;
568
		rLoc = 44974;
569
		rType = 0;
570
		vrLen = 567;
571
		vrLoc = 43642;
572
	};
573
	A3B867990D10B7DB00B6F595 /* PBXTextBookmark */ = {
574
		isa = PBXTextBookmark;
575
		fRef = 00E68290FEC88D7311DB9C8B /* Colonet.java */;
576
		name = "Colonet.java: 216";
577
		rLen = 0;
578
		rLoc = 6832;
579
		rType = 0;
580
		vrLen = 1729;
581
		vrLoc = 5999;
582
	};
583
	A3B8679A0D10B7DB00B6F595 /* PBXTextBookmark */ = {
584
		isa = PBXTextBookmark;
585
		fRef = 00E68290FEC88D7311DB9C8B /* Colonet.java */;
586
		name = "Colonet.java: 1470";
587
		rLen = 0;
588
		rLoc = 44974;
589
		rType = 0;
590
		vrLen = 501;
591
		vrLoc = 43603;
592
	};
593
	A3B8679E0D10B81200B6F595 /* PBXTextBookmark */ = {
594
		isa = PBXTextBookmark;
595
		fRef = 00E68290FEC88D7311DB9C8B /* Colonet.java */;
596
		name = "Colonet.java: 215";
597
		rLen = 0;
598
		rLoc = 6832;
599
		rType = 0;
600
		vrLen = 1717;
601
		vrLoc = 5999;
602
	};
603
	A3B8679F0D10B81200B6F595 /* PBXTextBookmark */ = {
604
		isa = PBXTextBookmark;
605
		fRef = 00E68290FEC88D7311DB9C8B /* Colonet.java */;
606
		name = "Colonet.java: 1470";
607
		rLen = 0;
608
		rLoc = 44974;
609
		rType = 0;
610
		vrLen = 501;
611
		vrLoc = 43591;
612
	};
613
	A3B867A30D10B89C00B6F595 /* PBXTextBookmark */ = {
614
		isa = PBXTextBookmark;
615
		fRef = 00E68290FEC88D7311DB9C8B /* Colonet.java */;
616
		name = "Colonet.java: 235";
617
		rLen = 0;
618
		rLoc = 7641;
619
		rType = 0;
620
		vrLen = 1740;
621
		vrLoc = 6079;
622
	};
623
	A3B867A40D10B89C00B6F595 /* PBXTextBookmark */ = {
624
		isa = PBXTextBookmark;
625
		fRef = 00E68290FEC88D7311DB9C8B /* Colonet.java */;
626
		name = "Colonet.java: 1472";
627
		rLen = 0;
628
		rLoc = 44974;
629
		rType = 0;
630
		vrLen = 455;
631
		vrLoc = 43668;
632
	};
633
	A3B867A90D10B90700B6F595 /* PBXTextBookmark */ = {
634
		isa = PBXTextBookmark;
635
		fRef = 00E68290FEC88D7311DB9C8B /* Colonet.java */;
636
		name = "Colonet.java: 216";
637
		rLen = 0;
638
		rLoc = 6832;
639
		rType = 0;
640
		vrLen = 1718;
641
		vrLoc = 6079;
642
	};
643
	A3B867AA0D10B90700B6F595 /* PBXTextBookmark */ = {
644
		isa = PBXTextBookmark;
645
		fRef = 00E68290FEC88D7311DB9C8B /* Colonet.java */;
646
		name = "Colonet.java: 1469";
647
		rLen = 0;
648
		rLoc = 44974;
649
		rType = 0;
650
		vrLen = 531;
651
		vrLoc = 43547;
652
	};
653
	A3B867AF0D10B96200B6F595 /* PBXTextBookmark */ = {
654
		isa = PBXTextBookmark;
655
		fRef = 00E68290FEC88D7311DB9C8B /* Colonet.java */;
656
		name = "Colonet.java: 214";
657
		rLen = 0;
658
		rLoc = 6718;
659
		rType = 0;
660
		vrLen = 1720;
661
		vrLoc = 5912;
662
	};
663
	A3B867B00D10B96200B6F595 /* PBXTextBookmark */ = {
664
		isa = PBXTextBookmark;
665
		fRef = 00E68290FEC88D7311DB9C8B /* Colonet.java */;
666
		name = "Colonet.java: 1469";
667
		rLen = 0;
668
		rLoc = 44974;
669
		rType = 0;
670
		vrLen = 531;
671
		vrLoc = 43548;
672
	};
673
	A3B867B40D10B9B800B6F595 /* PBXTextBookmark */ = {
674
		isa = PBXTextBookmark;
675
		fRef = 00E68290FEC88D7311DB9C8B /* Colonet.java */;
676
		name = "Colonet.java: 214";
677
		rLen = 0;
678
		rLoc = 6681;
679
		rType = 0;
680
		vrLen = 1754;
681
		vrLoc = 5912;
682
	};
683
	A3B867B50D10B9B800B6F595 /* PBXTextBookmark */ = {
684
		isa = PBXTextBookmark;
685
		fRef = 00E68290FEC88D7311DB9C8B /* Colonet.java */;
686
		name = "Colonet.java: 1469";
687
		rLen = 0;
688
		rLoc = 44974;
689
		rType = 0;
690
		vrLen = 531;
691
		vrLoc = 43582;
692
	};
693 292
	A3C65E1D0CD262BC00D77B7B /* PBXTextBookmark */ = {
694 293
		isa = PBXTextBookmark;
695 294
		fRef = 00E68291FEC88ED911DB9C8B /* index.html */;
......
746 345
		vrLen = 912;
747 346
		vrLoc = 5611;
748 347
	};
749
	A3DAF9740D0BADA40015B97D /* PBXTextBookmark */ = {
750
		isa = PBXTextBookmark;
751
		fRef = A34161900C989CB30007BEF2 /* ColonetServerInterface.java */;
752
		name = "ColonetServerInterface.java: 336";
753
		rLen = 0;
754
		rLoc = 12025;
755
		rType = 0;
756
		vrLen = 1463;
757
		vrLoc = 1830;
758
	};
759 348
	A3F558860CF2766C00E3EBD1 /* Sources */ = {
760 349
		isa = PBXSourcesBuildPhase;
761 350
		buildActionMask = 2147483647;
......
883 472
		isa = PBXTargetBookmark;
884 473
		trg = A3F558890CF2766C00E3EBD1 /* doc */;
885 474
	};
475
	A3F987F10D172221001CFAC4 /* PBXTextBookmark */ = {
476
		isa = PBXTextBookmark;
477
		fRef = 00E68290FEC88D7311DB9C8B /* Colonet.java */;
478
		name = "Colonet.java: 286";
479
		rLen = 0;
480
		rLoc = 10065;
481
		rType = 0;
482
		vrLen = 936;
483
		vrLoc = 98;
484
	};
485
	A3F987F90D17241C001CFAC4 /* PBXTextBookmark */ = {
486
		isa = PBXTextBookmark;
487
		fRef = A34161900C989CB30007BEF2 /* ColonetServerInterface.java */;
488
		name = "ColonetServerInterface.java: 488";
489
		rLen = 0;
490
		rLoc = 18062;
491
		rType = 0;
492
		vrLen = 2083;
493
		vrLoc = 13856;
494
	};
495
	A3F987FA0D17241C001CFAC4 /* PBXTextBookmark */ = {
496
		isa = PBXTextBookmark;
497
		fRef = 00E68290FEC88D7311DB9C8B /* Colonet.java */;
498
		name = "Colonet.java: 1461";
499
		rLen = 0;
500
		rLoc = 46005;
501
		rType = 0;
502
		vrLen = 1308;
503
		vrLoc = 44135;
504
	};
505
	A3F987FB0D17241C001CFAC4 /* PBXTextBookmark */ = {
506
		isa = PBXTextBookmark;
507
		fRef = 00E68290FEC88D7311DB9C8B /* Colonet.java */;
508
		name = "Colonet.java: 1461";
509
		rLen = 0;
510
		rLoc = 46005;
511
		rType = 0;
512
		vrLen = 1308;
513
		vrLoc = 44135;
514
	};
515
	A3F987FC0D17241C001CFAC4 /* PBXTextBookmark */ = {
516
		isa = PBXTextBookmark;
517
		fRef = A34161900C989CB30007BEF2 /* ColonetServerInterface.java */;
518
		name = "ColonetServerInterface.java: 488";
519
		rLen = 0;
520
		rLoc = 18062;
521
		rType = 0;
522
		vrLen = 2083;
523
		vrLoc = 13856;
524
	};
525
	A3F9881D0D1739FE001CFAC4 /* PBXTextBookmark */ = {
526
		isa = PBXTextBookmark;
527
		fRef = 00E68290FEC88D7311DB9C8B /* Colonet.java */;
528
		name = "Colonet.java: 1307";
529
		rLen = 0;
530
		rLoc = 40403;
531
		rType = 0;
532
		vrLen = 1434;
533
		vrLoc = 40575;
534
	};
535
	A3F9881E0D1739FE001CFAC4 /* PBXTextBookmark */ = {
536
		isa = PBXTextBookmark;
537
		fRef = 00E68290FEC88D7311DB9C8B /* Colonet.java */;
538
		name = "Colonet.java: 35";
539
		rLen = 0;
540
		rLoc = 929;
541
		rType = 0;
542
		vrLen = 485;
543
		vrLoc = 630;
544
	};
886 545
	A3FD76ED0CEBBBC10048CD0C /* PBXTextBookmark */ = {
887 546
		isa = PBXTextBookmark;
888 547
		fRef = A3FD76EE0CEBBBC10048CD0C /* index.html */;
trunk/code/projects/colonet/ColonetGUI/Colonet.xcodeproj/gmtress.perspective
324 324
										<key>_historyCapacity</key>
325 325
										<integer>0</integer>
326 326
										<key>bookmark</key>
327
										<string>A3B867B40D10B9B800B6F595</string>
327
										<string>A3F9881D0D1739FE001CFAC4</string>
328 328
										<key>history</key>
329 329
										<array>
330 330
											<string>A3C65E6B0CD275C200D77B7B</string>
331 331
											<string>A3FD76ED0CEBBBC10048CD0C</string>
332 332
											<string>A3F558940CF276B100E3EBD1</string>
333 333
											<string>A3DAF7F40D09EC670015B97D</string>
334
											<string>A3B8677E0D10B2C900B6F595</string>
335
											<string>A3B8677F0D10B2C900B6F595</string>
334
											<string>A3F987F90D17241C001CFAC4</string>
335
											<string>A3F987FA0D17241C001CFAC4</string>
336 336
										</array>
337 337
										<key>prevStack</key>
338 338
										<array>
......
340 340
											<string>A3D78E650CB72FF100A79632</string>
341 341
											<string>A3C65E1D0CD262BC00D77B7B</string>
342 342
											<string>A30FC0970CBD7DFA000A16EC</string>
343
											<string>A3B8676B0D10AD1900B6F595</string>
344
											<string>A3B8676C0D10AD1900B6F595</string>
345
											<string>A3B8676D0D10AD1900B6F595</string>
346
											<string>A3B8676E0D10AD1900B6F595</string>
347
											<string>A3B867800D10B2C900B6F595</string>
348
											<string>A3B867810D10B2C900B6F595</string>
343
											<string>A3F987FB0D17241C001CFAC4</string>
344
											<string>A3F987FC0D17241C001CFAC4</string>
349 345
										</array>
350 346
									</dict>
351 347
									<key>SplitCount</key>
......
359 355
							<key>GeometryConfiguration</key>
360 356
							<dict>
361 357
								<key>Frame</key>
362
								<string>{{0, 0}, {1058, 578}}</string>
358
								<string>{{0, 0}, {1058, 579}}</string>
363 359
								<key>RubberWindowFrame</key>
364 360
								<string>0 112 1280 720 0 0 1280 832 </string>
365 361
							</dict>
366 362
							<key>Module</key>
367 363
							<string>PBXNavigatorGroup</string>
368 364
							<key>Proportion</key>
369
							<string>578pt</string>
365
							<string>579pt</string>
370 366
						</dict>
371 367
						<dict>
372 368
							<key>Proportion</key>
......
445 441
			</array>
446 442
			<key>TableOfContents</key>
447 443
			<array>
448
				<string>A3B867700D10AD1900B6F595</string>
444
				<string>A3F987B40D171DE6001CFAC4</string>
449 445
				<string>1CA23ED40692098700951B8B</string>
450
				<string>A3B867710D10AD1900B6F595</string>
446
				<string>A3F987B50D171DE6001CFAC4</string>
451 447
				<string>A34161A50C989E610007BEF2</string>
452
				<string>A3B867720D10AD1900B6F595</string>
448
				<string>A3F987B60D171DE6001CFAC4</string>
453 449
				<string>1CA23EDF0692099D00951B8B</string>
454 450
				<string>1CA23EE00692099D00951B8B</string>
455 451
				<string>1CA23EE10692099D00951B8B</string>
......
514 510
							<key>PBXSmartGroupTreeModuleOutlineStateSelectionKey</key>
515 511
							<array>
516 512
								<array>
517
									<integer>6</integer>
518
									<integer>5</integer>
513
									<integer>1</integer>
519 514
									<integer>0</integer>
520 515
								</array>
521 516
							</array>
......
563 558
										<key>_historyCapacity</key>
564 559
										<integer>0</integer>
565 560
										<key>bookmark</key>
566
										<string>A3B867B50D10B9B800B6F595</string>
561
										<string>A3F9881E0D1739FE001CFAC4</string>
567 562
										<key>history</key>
568 563
										<array>
569 564
											<string>A3FD76ED0CEBBBC10048CD0C</string>
......
571 566
											<string>A3F558940CF276B100E3EBD1</string>
572 567
											<string>A3DAF7F40D09EC670015B97D</string>
573 568
											<string>A3DAF7F50D09EC670015B97D</string>
574
											<string>A36607060D0E38E300B9F19F</string>
569
											<string>A3F987F10D172221001CFAC4</string>
575 570
										</array>
576 571
										<key>prevStack</key>
577 572
										<array>
......
699 694
			</array>
700 695
			<key>TableOfContents</key>
701 696
			<array>
702
				<string>A3B867740D10AD1900B6F595</string>
697
				<string>A3F987B80D171DE6001CFAC4</string>
703 698
				<string>1CA23EE50692099D00951B8B</string>
704
				<string>A3B867750D10AD1900B6F595</string>
699
				<string>A3F987B90D171DE6001CFAC4</string>
705 700
				<string>A34161AC0C989F140007BEF2</string>
706
				<string>A3B867760D10AD1900B6F595</string>
701
				<string>A3F987BA0D171DE6001CFAC4</string>
707 702
				<string>XCMainBuildResultsModuleGUID</string>
708 703
				<string>1CA23EE80692099D00951B8B</string>
709
				<string>A3B867770D10AD1900B6F595</string>
704
				<string>A3F987BB0D171DE6001CFAC4</string>
710 705
			</array>
711 706
			<key>ToolbarConfiguration</key>
712 707
			<string>xcode.toolbar.config.buildAndRun</string>
......
874 869
	<key>WindowJustification</key>
875 870
	<integer>5</integer>
876 871
	<key>WindowOrderList</key>
877
	<array/>
872
	<array>
873
		<string>/Users/gmtress/Documents/Colony/roboclub_repository/colony/trunk/code/projects/colonet/ColonetGUI/Colonet.xcodeproj</string>
874
	</array>
878 875
	<key>WindowString</key>
879 876
	<string>0 112 1280 720 0 0 1280 832 </string>
880 877
	<key>WindowTools</key>
trunk/code/projects/colonet/ColonetGUI/Colonet.java
17 17
*	The Colonet Graphical User Interface Applet for use locally and over an internet connection.
18 18
*	@author Gregory Tress
19 19
*	
20
*
20
*	To generate javadoc on this file or other java files, use javadoc *.java -d doc, where doc
21
*	is the name of the folder into which the files should be written.
21 22
*/
22 23
public class Colonet extends JApplet implements ActionListener, MouseInputListener, KeyListener, Runnable {
23 24

  
25
	// Used for the robot graph
24 26
	final int CANVAS_SIZE = 500;  //the applet may be slow if the canvas gets too large
25 27
	final int BUFFER = 50;
26 28
	final int RADIUS = 30;
29
	
30
	//Used for the robot controller
31
	final int VECTOR_CONTROLLER_HEIGHT = 220;
32
	final int VECTOR_CONTROLLER_WIDTH = 200;
33
	
27 34

  
28 35
	// Connection
29 36
	JTextField txtHost;				
......
144 151
		image = gc.createCompatibleImage(CANVAS_SIZE,CANVAS_SIZE);
145 152
		canvas = image.createGraphics();
146 153
		canvas.setStroke(new BasicStroke(2));  //set pen width
147
		panelGraph = new GraphicsPanel(false, image);  //set automatic double-buffering to false. we are doing it manually.
154
		panelGraph = new GraphicsPanel(image, false);  //set automatic double-buffering to false. we are doing it manually.
148 155
		panelWebcam = new WebcamPanel();
149 156
		tabPaneMain = new JTabbedPane();
150 157
		tabPaneMain.add(panelWebcam, "Webcam");
......
199 206
		panelRobotDirectionButtons.add(btnL);
200 207
		panelRobotDirectionButtons.add(btnR);
201 208
		
202
		imageVectorControl = gc.createCompatibleImage(395, 220);
209
		imageVectorControl = gc.createCompatibleImage(VECTOR_CONTROLLER_WIDTH, VECTOR_CONTROLLER_HEIGHT);
203 210
		vectorController = new VectorController(imageVectorControl);
204 211
		panelRobotDirection.setLayout(new BorderLayout());
205 212
		panelRobotDirection.add(vectorController, BorderLayout.CENTER);
......
211 218
		cmbRobotNum = new JComboBox();
212 219
		// Battery subset
213 220
		lblBattery = new JLabel();
214
		batteryIcon = new BatteryIcon(50);
221
		batteryIcon = new BatteryIcon(25);
215 222
		//batteryIcon = new BatteryIcon(50, lblBattery.getMaximumSize().height, lblBattery.getMaximumSize().height);
216 223
		lblBattery = new JLabel(batteryIcon);
217 224
		btnCommand_StopTask = new JButton("Stop Current Task");
......
273 280
		panelControl = new JPanel();
274 281
		panelControl.setLayout(new GridLayout(1,1));
275 282
		tabPaneControl = new JTabbedPane(JTabbedPane.TOP);
276
		tabPaneControl.setPreferredSize(new Dimension(330, 0));
283
		tabPaneControl.setPreferredSize(new Dimension(VECTOR_CONTROLLER_WIDTH, 0));
277 284
		tabPaneControl.addTab("Connection", panelServerInterface);
278 285
		tabPaneControl.addTab("Robots", panelRobotControl);
279 286
		tabPaneControl.addTab("Tasks", panelTaskManager);
......
967 974
	
968 975
	/*
969 976
	*	GraphicsPanel class
970
	*	Enables more efficient image handling in a component-controlled environment
977
	*	An extension of JPanel, designed for holding an image that will be repainted regularly.
971 978
	*/
972 979
	class GraphicsPanel extends JPanel {
973 980
		protected Image img;
......
977 984
			this.img = img;
978 985
		}
979 986
		
980
		public GraphicsPanel (boolean isDoubleBuffered, Image img) {
987
		public GraphicsPanel (Image img, boolean isDoubleBuffered) {
981 988
			super(isDoubleBuffered);
982 989
			this.img = img;
983 990
		}
......
1203 1210
			return v;
1204 1211
		}
1205 1212
		
1213
		/** 
1214
		* Returns the angle of the control vector in positive degrees west of north,
1215
		* or negative degrees east of north, whichever is less than or equal to
1216
		* 180 degrees total.
1217
		*/
1206 1218
		public int getAngle () {
1207 1219
			int dx = x - cx;
1208 1220
			int dy = cy - y;
1221
			// find reference angle in radians
1209 1222
			double theta = Math.atan2(Math.abs(dx), Math.abs(dy));
1210
			theta = (int) (1.0 * theta * 180 / Math.PI);  //transform to degrees
1211
			if (dy < 0)
1212
				theta = 180 - theta;
1213
			theta *= Math.signum(dx);
1223
			// transform to degrees
1224
			theta = theta * 180 / Math.PI;
1225
			// adjust for quadrant
1226
			if (dx < 0 && dy < 0)
1227
				theta = 90 + theta;
1228
			else if (dx < 0 && dy >= 0)
1229
				theta = 90 - theta;
1230
			else if (dx >= 0 && dy < 0)
1231
				theta = -90 - theta;
1232
			else
1233
				theta = -90 + theta;
1214 1234
			return (int) theta;
1215 1235
		}
1216 1236
		
......
1247 1267
		}
1248 1268
		
1249 1269
		public void sendToServer () {
1250
			//log.append("Attempitng to send angle = " + vectorController.getAngle() + ", velocity = " + vectorController.getVelocity() + "\n");
1270
			System.out.println("Attempting to send angle = " + getAngle() + ", speed = " + getSpeed() + "");
1251 1271
			String dest = ColonetServerInterface.GLOBAL_DEST;
1252 1272
			if (cmbRobotNum != null && cmbRobotNum.getSelectedIndex() > 0)
1253 1273
				dest = "" + (cmbRobotNum.getSelectedIndex()-1);
......
1256 1276
				if (cx == 0 && cy == 0) {
1257 1277
					csi.sendData(ColonetServerInterface.MOTORS_OFF, dest);
1258 1278
				} else {
1279
					csi.sendData(ColonetServerInterface.MOVE + " " + getSpeed() + " " + getAngle(), dest);
1280
					/*
1259 1281
					//Directional commands
1260
					
1261 1282
					if (x > cx && y == cy) {  //move right
1262 1283
						csi.sendData(ColonetServerInterface.MOTOR2_SET + " 0 200", dest);
1263 1284
						csi.sendData(ColonetServerInterface.MOTOR1_SET + " 1 200", dest);
......
1274 1295
						csi.sendData(ColonetServerInterface.MOTOR2_SET + " 1 0", dest);
1275 1296
						csi.sendData(ColonetServerInterface.MOTOR1_SET + " 1 0", dest);
1276 1297
					}
1277
					
1278
					
1298
					*/
1279 1299
				}
1280 1300
			}
1281
				
1282
			//The move command doesn't really work...or does it?
1283
			/*
1284
			csi.sendData(ColonetServerInterface.MOVE + " " + 
1285
				vectorController.getSpeed() + " " + 
1286
				vectorController.getAngle(), dest);
1287
			*/	
1288
			
1289 1301
		}
1290 1302
	
1291 1303
	}
1292 1304
	
1293 1305
	/*
1294 1306
	*	TaskAddWindow class
1295
	*	makes it easy to add tasks to the queue
1307
	*	A window that provides a simple way to add tasks to a task queue.
1296 1308
	*/
1297 1309
	class TaskAddWindow extends JFrame implements ActionListener, ListSelectionListener {
1298 1310
		JPanel panelButtons;
......
1406 1418
	
1407 1419
	}
1408 1420
	
1409
	class BatteryIcon implements Icon{
1421
	class BatteryIcon implements Icon {
1410 1422
		private int width;
1411 1423
	    private int height;
1412 1424
	    private int level;
1413 1425
	    
1426
		/** 
1427
		* Constructs a new BatteryIcon with all default parameters.
1428
		* Default width and height are 50.
1429
		* Default level is 100.
1430
		*/
1414 1431
	    public BatteryIcon(){
1415
	    	width = 100;
1416
	    	height =100;
1417
	    	level = 100;
1432
	    	this(100, 50, 50);
1418 1433
	    }
1419 1434
	    
1435
		/** 
1436
		* Constructs a new BatteryIcon with default width and height, and with the specified level.
1437
		* Default width and height are 50.
1438
		*/
1420 1439
	    public BatteryIcon(int startLevel){
1421
	    	width = 50;
1422
	    	height = 50;
1423
	    	level = startLevel;
1440
	    	this(startLevel, 50, 50);
1424 1441
	    }
1425 1442
	    
1443
		/** 
1444
		* Constructs a new BatteryIcon with the specified level, width, and height.
1445
		*/
1426 1446
	    public BatteryIcon(int startLevel, int w, int h){
1427 1447
	    	level = startLevel;
1428 1448
	    	width = w;
......
1431 1451
	    
1432 1452
	    public void paintIcon(Component c, Graphics g, int x, int y) {
1433 1453
	        Graphics2D g2d = (Graphics2D) g.create();
1434
	        //background
1454
	        //clear the background
1435 1455
	        g2d.setColor(Color.WHITE);
1436
	        g2d.fillRect(x +1 ,y + 1,width-2,height-2);
1456
	        g2d.fillRect(x + 1, y + 1, width - 2, height - 2);
1437 1457
	        //outline
1438 1458
	        g2d.setColor(Color.BLACK);
1439
	        g2d.drawRect((int)(x + width*.3) ,y + 2,(int)(width*.4),height -4);
1459
	        g2d.drawRect((int)(x + width*.3), y + 2, (int)(width*.4), height - 4);
1440 1460
	        //battery life rectangle
1441 1461
	        g2d.setColor(Color.GREEN);
1442 1462
	        int greenX = (int)(x + 1 + width*.3);
......
1451 1471
	        g2d.dispose();
1452 1472
	    }
1453 1473
	    
1474
		/**
1475
		* Sets the battery level for this BatteryIcon. The level should be given in raw form, i.e. 0-255 directly 
1476
		* from the robot. The value will be converted to a representative percentage automatically.
1477
		*
1478
		* @param newLevel the new battery reading from the robot that this BatteryIcon will display.
1479
		*/
1454 1480
	    public void setLevel(int newLevel) {
1455
	    	level = newLevel;
1481
	    	level = convert(newLevel);
1456 1482
	    }
1457
	    
1483
		
1458 1484
	    public int getIconWidth() {
1459 1485
	        return width;
1460 1486
	    }
......
1462 1488
	    public int getIconHeight() {
1463 1489
	        return height;
1464 1490
	    }
1491
		
1492
		/**
1493
		* Converts a robot battery reading into representable form.
1494
		* Readings from the robot are returned as raw values, 0-255. This method converts the reading into a value
1495
		* from 0 to 100 so that the practical remaining charge is represented.
1496
		*
1497
		* @param level The battery level as returned by the robot.
1498
		* @returns The representable battery percentage.
1499
		*/
1500
		private int convert (int level) {
1501
			// TODO: make this a forreals conversion.
1502
			return (int) (1.0 * level / 255);
1503
		}
1504
		
1465 1505
	}
1466 1506

  
1467 1507

  

Also available in: Unified diff