Undo. See also Ctrl+Z
adding interface, 44749
customer testing, 409, 42125
failed attempts at optimization, 46375
implementation review, 44042
keyboard analysis, 45256
memory usage, 443
need for capability, 408
operations stack, 411
optimizing for single-key typing, 460
optimizing for undoing lines, 461
optimizing implementation, 44562
possible
programmer testing, 41012
removing unnecessary code, 44650
SectionUndo test, 447, 449, 450
summary, 46162
timing of optimization, 487
undo.test, 42729, 434, 439
ways to optimize, 44546
UndoAnalyzer.cs, 450, 468
UndoAnalyzerTest.cs, 450
undo.test, 42729, 434, 439
unit tests. See Programmer Unit Tests
unmatched XML tags, 2425
UnoptimizedTextModel object, 447, 449
unordered lists
adding Enter key functionality, 32830
coding, 31820
estimated time to implement feature, 270, 273
testing, 319, 329, 347
UnorderedList test, 319, 329, 347
users. See customers
using statement, 283
validity indicator, estimated time to implement feature, 270, 273
renaming, 1045
velocity, 269, 27273, 274
VerifyClear method, 279, 280
VerifyContents method, 28081
vertical bar, 83, 84, 94, 98, 209, 423, 425
Visual Studio .NET
adding COM objects to Toolbox, 401
adding Internet Explorer to Toolbox, 401
adding new empty C# projects, 4
attaching to NUnit process, 2829
auto-formatting capability, 286
compiling programs, 4
creating new solutions, 4
creating Windows Forms project, 401
debugging capabilities, 4, 2627
Form1_Load method, 401
Navigate method, 4012
production vs. debug configurations, 27
project organization, 491
Refactor menu item on Edit menu, 257
references and, 5, 103
running programs, 4
selecting nunit.framework.dll file, 19
setting up debug startup program, 2728
Solution Explorer, 5, 2728, 491
test classes and, 118
versions, 5
Vlissides, John, 245
Vorontsov, Alexei, 18
Web browsers. See Internet Explorer
weblog capability, estimated time to implement, 272, 275
Whole Team XP practice, xxv
wiki, 272, 275
Windows Dialog, Hello World version, 45
Windows Forms, 4, 33, 401
Windows Notepad, 6
WriteAndReadFile test, 279, 280
WriteLine statement, 26, 181, 185, 491
WriteStream test, 278
WYSIWYG display, estimated time to implement feature, 270, 273, 274
WYSIWYG editors
cost concerns, 3
initial vision for XML input, 23, 396
in retrospect, 493
RTF and, 1112
XML (Extensible Markup Language)
as basis for XML editor, 234
displaying in Internet Explorer, 39899
displaying in tree structure, 24850
keeping tags balanced, 24849
.NET support, 250
transformations to HTML, 11213, 396, 397, 398
verifying structure, 249
XML editors, 6, 13, 234
XML Notepad application. See also stories
adding Internet Explorer to, 4024
first story, 3134
initial vision, 1, 23
vs. TextPad, 13, 39596, 483
using, 111
XMLDocument class, 250
XMLKeyDownHandler method
code duplication, 25556, 25865
extracting code from, 11718
GUI and, 42930
mock objects and, 11718
overview, 4142
refactoring, 44, 46, 5153, 420, 432, 43334
role of delegates, 25865
Snapshot method and, 417
XMLKeyPressHandler method, 262, 420, 430, 432
XMLNotepad.cs
code summaries, 3941, 13638, 35762
commenting out deletions, 33841
converting code to use delegates, 199200
creating class, 7
extending class, 910
improving, 255, 353, 37576
revised code, 3941, 13638, 35762
as subclass of Notepad, 121
Text property, 7
XMLTextReader class, 250, 252
XMLValidatingReader class, 250
XProgramming.com Web site
displaying articles, 395404
entering articles using XML Notepad, 11213
overview, 2, 11
XML format, 16
XSLT (XSL Transformation)
conversion estimates, 271, 275
XML to HTML, 11213, 396, 397, 398
Xtreme Simplicity, 257