Supporting Developers’
Coordination in The IDE
Guzzi, Bacchelli, 

Riche, van Deursen
Supporting Developers’ Coordination in The IDE
Supporting Developers’ Coordination in The IDE
Investigating how developers
experience teamwork
and
identify problems they face
when working in team.
Investigating how developers
experience teamwork
and
identify problems they face
when working in team.
Supporting Developers’ Coordination in The IDE
Devising and evaluating
an IDE extension to support
teamwork.
Investigating how developers
experience teamwork
and
identify problems they face
when working in team.
Exploratory Investigation
Exploratory Investigation: Methodology
brainstorming

(9 experts)
interviews
(11 professional developers)
analysis of transcripts and memos
with card sorting
themes’ analysis
with affinity diagram
working
situation
working
situation
How developers experience teamwork
1. They spend most the time doing individual work
2. Most of their interaction is to coordinate (e.g., through daily stand-ups)
3. Collaboration happens infrequently and on a need basis (e.g., sprint meetings)
4. Their intention for collaboration is mostly coordination, leading to individual work
Exploratory Investigation: Findings
individual work
coordination
collaboration
interaction

level
Exploratory Investigation: Findings
individual work
coordination
collaboration
interaction

level
information
How developers experience teamwork: role of information
1. They spend most the time doing individual work
2. Most of their interaction is to coordinate (e.g., through daily stand-ups)
3. Collaboration happens infrequently and on a need basis (e.g., sprint meetings)
4. Their intention for collaboration is mostly coordination, leading to individual work
Exploratory Investigation: Findings
Three problematic scenarios
inefficient
task assignment
simultaneous
conflicting changes
breaking
changes
Needed information
ProblematicCommunicated Visible
✔ ✔ ✘
✘ ✔ ✘
✘ ✘
Exploratory Investigation: Findings
Three problematic scenarios: role of information
inefficient
task assignment
simultaneous
conflicting changes
breaking
changes
Exploratory Investigation: Selected implications
support for coordination
has more potential
literature must be tested
on current practices
receiving internal changes
is experienced as painful
Supporting Developers’ Coordination in The IDE
Devising and evaluating
an IDE extension to support
teamwork.
support for coordination
has more potential
literature must be tested
on current practices
receiving internal changes
is experienced as painful
h"p://online.visualstudio.com4 Visual4Studio4 r!
James4Green4444/4444Paint4
EXPLORE OPEN SEARCH BUILD TEST CHANGES CONSOLE
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"
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"

 
Pending Outgoing

 ! 
Pending Incoming
app.config
LinePaint.cs
PaintCanvas.cs
PaintCanvasCommands.cs
PencilPaint.cs
RectPaint.cs
Window1.xaml.cs replaced




Window1.xaml.cs
 edited
using"System;"
using"System.Collections.Generic;"
using"System.Linq;"
using"System.Text;"
using"System.Windows;"
using"System.Windows.Controls;"
using"System.Windows.Data;"
using"System.Windows.Documents;"
using"System.Windows.Input;"
using"System.Windows.Media;"
using"System.Windows.Media.Imaging;"
using"System.Windows.Navigation;"
using"System.Windows.Shapes;"
"
namespace"Paint"
{"
"""///"<summary>"
"""///"TODO:"Autogenerated"comment"
"""///"</summary>"
""""public"partial"class"Window1":"Window,"IPaintObjectConstructorListener"
""""{"
""""""""private"PaintObjectConstructor"objectConstructor;"
"
""""""""public"Window1()"
""""""""{"
""""""""""""InitializeComponent();"
""""""""""""this.Loaded"+="new"RoutedEventHandler(Window1_Loaded);"
""""""""}"
"
""""""""public"void"Window1_Loaded(object"sender,"RoutedEventArgs"e)"
""""""""{"
""""""""""""objectConstructor"="new"PaintObjectConstructor(this);"
""""""""""""objectConstructor.setType("Paint.PencilPaint");"
""""""""""""objectConstructor.setColor(ColorSliderPanel.getStartingColor());"
""""""""""""objectConstructor.setThickness(5);"
"
""""""""""""DrawingCanvas.MouseLeave"+="new"MouseEventHandler(objectConstructor.MouseExited);"
""""""""""""DrawingCanvas.MouseDown"+="new"MouseButtonEventHandler(objectConstructor.MousePressed);"
""""""""""""DrawingCanvas.MouseUp"+="new"MouseButtonEventHandler(objectConstructor.MouseReleased);"
""""""""""""DrawingCanvas.MouseMove"+="new"MouseEventHandler(objectConstructor.MouseMoved);"
""""""""}"
"
""""""""private"void"SetPaintColor(object"sender,"ColorChangedEventArgs"e)"
""""""""{"
""""""""""""objectConstructor.setColor(e.ColorValue);"
""""""""}"
"
using"System;"
using"System.Collections.Generic;"
using"System.Linq;"
using"System.Text;"
using"System.Windows;"
using"System.Windows.Controls;"
using"System.Windows.Data;"
using"System.Windows.Documents;"
using"System.Windows.Input;"
using"System.Windows.Media;"
using"System.Windows.Media.Imaging;"
using"System.Windows.Navigation;"
using"System.Windows.Shapes;"
"
namespace"Paint"
{"
""""///"<summary>"
""""///"Interaction"logic"for"Window1.xaml"
""""///"</summary>"
""""public"partial"class"Window1":"Window,"IPaintObjectConstructorListener"
""""{"
""""""""private"PaintObjectConstructor"objectConstructor;"
"
""""""""public"Window1()"
""""""""{"
""""""""""""InitializeComponent();"
""""""""""""this.Loaded"+="new"RoutedEventHandler(Window1_Loaded);"
""""""""}"
"
""""""""public"void"Window1_Loaded(object"sender,"RoutedEventArgs"e)"
""""""""{"
""""""""""""objectConstructor"="new"PaintObjectConstructor(this);"
""""""""""""objectConstructor.setType("Paint.PencilPaint");"
""""""""""""objectConstructor.setColor(ColorSliderPanel.getStartingColor("
""""""""""""objectConstructor.setThickness(5);"
"
""""""""""""DrawingCanvas.MouseLeave"+="new"MouseEventHandler(objectConstr"
""""""""""""DrawingCanvas.MouseDown"+="new"MouseButtonEventHandler(objectC"
""""""""""""DrawingCanvas.MouseUp"+="new"MouseButtonEventHandler(objectCon"
""""""""""""DrawingCanvas.MouseMove"+="new"MouseEventHandler(objectConstru"
""""""""}"
"
""""""""private"void"SetPaintColor(object"sender,"ColorChangedEventArgs"e)"
""""""""{"
""""""""""""objectConstructor.setColor(e.ColorValue);"
""""""""}"
"
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"Window1.xaml.cs,0#latest! Window1.xaml.cs,0#current0
edited
edited
edited
edited
added
edited
Current IDEs’ support for receiving changes
Current IDEs’ support for receiving changes
h"p://online.visualstudio.com4 Visual4Studio4 r!
James4Green4444/4444Paint4
EXPLORE OPEN SEARCH BUILD TEST CHANGES CONSOLE
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"
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"

 
Pending Outgoing

 ! 
Pending Incoming
app.config
LinePaint.cs
PaintCanvas.cs
PaintCanvasCommands.cs
PencilPaint.cs
RectPaint.cs
Window1.xaml.cs replaced




Window1.xaml.cs
 edited
using"System;"
using"System.Collections.Generic;"
using"System.Linq;"
using"System.Text;"
using"System.Windows;"
using"System.Windows.Controls;"
using"System.Windows.Data;"
using"System.Windows.Documents;"
using"System.Windows.Input;"
using"System.Windows.Media;"
using"System.Windows.Media.Imaging;"
using"System.Windows.Navigation;"
using"System.Windows.Shapes;"
"
namespace"Paint"
{"
"""///"<summary>"
"""///"TODO:"Autogenerated"comment"
"""///"</summary>"
""""public"partial"class"Window1":"Window,"IPaintObjectConstructorListener"
""""{"
""""""""private"PaintObjectConstructor"objectConstructor;"
"
""""""""public"Window1()"
""""""""{"
""""""""""""InitializeComponent();"
""""""""""""this.Loaded"+="new"RoutedEventHandler(Window1_Loaded);"
""""""""}"
"
""""""""public"void"Window1_Loaded(object"sender,"RoutedEventArgs"e)"
""""""""{"
""""""""""""objectConstructor"="new"PaintObjectConstructor(this);"
""""""""""""objectConstructor.setType("Paint.PencilPaint");"
""""""""""""objectConstructor.setColor(ColorSliderPanel.getStartingColor());"
""""""""""""objectConstructor.setThickness(5);"
"
""""""""""""DrawingCanvas.MouseLeave"+="new"MouseEventHandler(objectConstructor.MouseExited);"
""""""""""""DrawingCanvas.MouseDown"+="new"MouseButtonEventHandler(objectConstructor.MousePressed);"
""""""""""""DrawingCanvas.MouseUp"+="new"MouseButtonEventHandler(objectConstructor.MouseReleased);"
""""""""""""DrawingCanvas.MouseMove"+="new"MouseEventHandler(objectConstructor.MouseMoved);"
""""""""}"
"
""""""""private"void"SetPaintColor(object"sender,"ColorChangedEventArgs"e)"
""""""""{"
""""""""""""objectConstructor.setColor(e.ColorValue);"
""""""""}"
"
using"System;"
using"System.Collections.Generic;"
using"System.Linq;"
using"System.Text;"
using"System.Windows;"
using"System.Windows.Controls;"
using"System.Windows.Data;"
using"System.Windows.Documents;"
using"System.Windows.Input;"
using"System.Windows.Media;"
using"System.Windows.Media.Imaging;"
using"System.Windows.Navigation;"
using"System.Windows.Shapes;"
"
namespace"Paint"
{"
""""///"<summary>"
""""///"Interaction"logic"for"Window1.xaml"
""""///"</summary>"
""""public"partial"class"Window1":"Window,"IPaintObjectConstructorListener"
""""{"
""""""""private"PaintObjectConstructor"objectConstructor;"
"
""""""""public"Window1()"
""""""""{"
""""""""""""InitializeComponent();"
""""""""""""this.Loaded"+="new"RoutedEventHandler(Window1_Loaded);"
""""""""}"
"
""""""""public"void"Window1_Loaded(object"sender,"RoutedEventArgs"e)"
""""""""{"
""""""""""""objectConstructor"="new"PaintObjectConstructor(this);"
""""""""""""objectConstructor.setType("Paint.PencilPaint");"
""""""""""""objectConstructor.setColor(ColorSliderPanel.getStartingColor("
""""""""""""objectConstructor.setThickness(5);"
"
""""""""""""DrawingCanvas.MouseLeave"+="new"MouseEventHandler(objectConstr"
""""""""""""DrawingCanvas.MouseDown"+="new"MouseButtonEventHandler(objectC"
""""""""""""DrawingCanvas.MouseUp"+="new"MouseButtonEventHandler(objectCon"
""""""""""""DrawingCanvas.MouseMove"+="new"MouseEventHandler(objectConstru"
""""""""}"
"
""""""""private"void"SetPaintColor(object"sender,"ColorChangedEventArgs"e)"
""""""""{"
""""""""""""objectConstructor.setColor(e.ColorValue);"
""""""""}"
"
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"Window1.xaml.cs,0#latest! Window1.xaml.cs,0#current0
edited
edited
edited
edited
added
edited
Unmet usability heuristics
Current IDEs’ support for receiving changes

no support for:

- recognition over recall
h"p://online.visualstudio.com4 Visual4Studio4 r!
James4Green4444/4444Paint4
EXPLORE OPEN SEARCH BUILD TEST CHANGES CONSOLE
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"
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"

 
Pending Outgoing

 ! 
Pending Incoming
app.config
LinePaint.cs
PaintCanvas.cs
PaintCanvasCommands.cs
PencilPaint.cs
RectPaint.cs
Window1.xaml.cs replaced




Window1.xaml.cs
 edited
using"System;"
using"System.Collections.Generic;"
using"System.Linq;"
using"System.Text;"
using"System.Windows;"
using"System.Windows.Controls;"
using"System.Windows.Data;"
using"System.Windows.Documents;"
using"System.Windows.Input;"
using"System.Windows.Media;"
using"System.Windows.Media.Imaging;"
using"System.Windows.Navigation;"
using"System.Windows.Shapes;"
"
namespace"Paint"
{"
"""///"<summary>"
"""///"TODO:"Autogenerated"comment"
"""///"</summary>"
""""public"partial"class"Window1":"Window,"IPaintObjectConstructorListener"
""""{"
""""""""private"PaintObjectConstructor"objectConstructor;"
"
""""""""public"Window1()"
""""""""{"
""""""""""""InitializeComponent();"
""""""""""""this.Loaded"+="new"RoutedEventHandler(Window1_Loaded);"
""""""""}"
"
""""""""public"void"Window1_Loaded(object"sender,"RoutedEventArgs"e)"
""""""""{"
""""""""""""objectConstructor"="new"PaintObjectConstructor(this);"
""""""""""""objectConstructor.setType("Paint.PencilPaint");"
""""""""""""objectConstructor.setColor(ColorSliderPanel.getStartingColor());"
""""""""""""objectConstructor.setThickness(5);"
"
""""""""""""DrawingCanvas.MouseLeave"+="new"MouseEventHandler(objectConstructor.MouseExited);"
""""""""""""DrawingCanvas.MouseDown"+="new"MouseButtonEventHandler(objectConstructor.MousePressed);"
""""""""""""DrawingCanvas.MouseUp"+="new"MouseButtonEventHandler(objectConstructor.MouseReleased);"
""""""""""""DrawingCanvas.MouseMove"+="new"MouseEventHandler(objectConstructor.MouseMoved);"
""""""""}"
"
""""""""private"void"SetPaintColor(object"sender,"ColorChangedEventArgs"e)"
""""""""{"
""""""""""""objectConstructor.setColor(e.ColorValue);"
""""""""}"
"
using"System;"
using"System.Collections.Generic;"
using"System.Linq;"
using"System.Text;"
using"System.Windows;"
using"System.Windows.Controls;"
using"System.Windows.Data;"
using"System.Windows.Documents;"
using"System.Windows.Input;"
using"System.Windows.Media;"
using"System.Windows.Media.Imaging;"
using"System.Windows.Navigation;"
using"System.Windows.Shapes;"
"
namespace"Paint"
{"
""""///"<summary>"
""""///"Interaction"logic"for"Window1.xaml"
""""///"</summary>"
""""public"partial"class"Window1":"Window,"IPaintObjectConstructorListener"
""""{"
""""""""private"PaintObjectConstructor"objectConstructor;"
"
""""""""public"Window1()"
""""""""{"
""""""""""""InitializeComponent();"
""""""""""""this.Loaded"+="new"RoutedEventHandler(Window1_Loaded);"
""""""""}"
"
""""""""public"void"Window1_Loaded(object"sender,"RoutedEventArgs"e)"
""""""""{"
""""""""""""objectConstructor"="new"PaintObjectConstructor(this);"
""""""""""""objectConstructor.setType("Paint.PencilPaint");"
""""""""""""objectConstructor.setColor(ColorSliderPanel.getStartingColor("
""""""""""""objectConstructor.setThickness(5);"
"
""""""""""""DrawingCanvas.MouseLeave"+="new"MouseEventHandler(objectConstr"
""""""""""""DrawingCanvas.MouseDown"+="new"MouseButtonEventHandler(objectC"
""""""""""""DrawingCanvas.MouseUp"+="new"MouseButtonEventHandler(objectCon"
""""""""""""DrawingCanvas.MouseMove"+="new"MouseEventHandler(objectConstru"
""""""""}"
"
""""""""private"void"SetPaintColor(object"sender,"ColorChangedEventArgs"e)"
""""""""{"
""""""""""""objectConstructor.setColor(e.ColorValue);"
""""""""}"
"
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"Window1.xaml.cs,0#latest! Window1.xaml.cs,0#current0
edited
edited
edited
edited
added
edited
Unmet usability heuristics
Recognition over recall
“Memory for recognizing things is better than memory for
recalling things” —Nielsen 1995
Current IDEs’ support for receiving changes

no support for:

- recognition over recall

- visibility of system status
h"p://online.visualstudio.com4 Visual4Studio4 r!
James4Green4444/4444Paint4
EXPLORE OPEN SEARCH BUILD TEST CHANGES CONSOLE
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"
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"

 
Pending Outgoing

 ! 
Pending Incoming
app.config
LinePaint.cs
PaintCanvas.cs
PaintCanvasCommands.cs
PencilPaint.cs
RectPaint.cs
Window1.xaml.cs replaced




Window1.xaml.cs
 edited
using"System;"
using"System.Collections.Generic;"
using"System.Linq;"
using"System.Text;"
using"System.Windows;"
using"System.Windows.Controls;"
using"System.Windows.Data;"
using"System.Windows.Documents;"
using"System.Windows.Input;"
using"System.Windows.Media;"
using"System.Windows.Media.Imaging;"
using"System.Windows.Navigation;"
using"System.Windows.Shapes;"
"
namespace"Paint"
{"
"""///"<summary>"
"""///"TODO:"Autogenerated"comment"
"""///"</summary>"
""""public"partial"class"Window1":"Window,"IPaintObjectConstructorListener"
""""{"
""""""""private"PaintObjectConstructor"objectConstructor;"
"
""""""""public"Window1()"
""""""""{"
""""""""""""InitializeComponent();"
""""""""""""this.Loaded"+="new"RoutedEventHandler(Window1_Loaded);"
""""""""}"
"
""""""""public"void"Window1_Loaded(object"sender,"RoutedEventArgs"e)"
""""""""{"
""""""""""""objectConstructor"="new"PaintObjectConstructor(this);"
""""""""""""objectConstructor.setType("Paint.PencilPaint");"
""""""""""""objectConstructor.setColor(ColorSliderPanel.getStartingColor());"
""""""""""""objectConstructor.setThickness(5);"
"
""""""""""""DrawingCanvas.MouseLeave"+="new"MouseEventHandler(objectConstructor.MouseExited);"
""""""""""""DrawingCanvas.MouseDown"+="new"MouseButtonEventHandler(objectConstructor.MousePressed);"
""""""""""""DrawingCanvas.MouseUp"+="new"MouseButtonEventHandler(objectConstructor.MouseReleased);"
""""""""""""DrawingCanvas.MouseMove"+="new"MouseEventHandler(objectConstructor.MouseMoved);"
""""""""}"
"
""""""""private"void"SetPaintColor(object"sender,"ColorChangedEventArgs"e)"
""""""""{"
""""""""""""objectConstructor.setColor(e.ColorValue);"
""""""""}"
"
using"System;"
using"System.Collections.Generic;"
using"System.Linq;"
using"System.Text;"
using"System.Windows;"
using"System.Windows.Controls;"
using"System.Windows.Data;"
using"System.Windows.Documents;"
using"System.Windows.Input;"
using"System.Windows.Media;"
using"System.Windows.Media.Imaging;"
using"System.Windows.Navigation;"
using"System.Windows.Shapes;"
"
namespace"Paint"
{"
""""///"<summary>"
""""///"Interaction"logic"for"Window1.xaml"
""""///"</summary>"
""""public"partial"class"Window1":"Window,"IPaintObjectConstructorListener"
""""{"
""""""""private"PaintObjectConstructor"objectConstructor;"
"
""""""""public"Window1()"
""""""""{"
""""""""""""InitializeComponent();"
""""""""""""this.Loaded"+="new"RoutedEventHandler(Window1_Loaded);"
""""""""}"
"
""""""""public"void"Window1_Loaded(object"sender,"RoutedEventArgs"e)"
""""""""{"
""""""""""""objectConstructor"="new"PaintObjectConstructor(this);"
""""""""""""objectConstructor.setType("Paint.PencilPaint");"
""""""""""""objectConstructor.setColor(ColorSliderPanel.getStartingColor("
""""""""""""objectConstructor.setThickness(5);"
"
""""""""""""DrawingCanvas.MouseLeave"+="new"MouseEventHandler(objectConstr"
""""""""""""DrawingCanvas.MouseDown"+="new"MouseButtonEventHandler(objectC"
""""""""""""DrawingCanvas.MouseUp"+="new"MouseButtonEventHandler(objectCon"
""""""""""""DrawingCanvas.MouseMove"+="new"MouseEventHandler(objectConstru"
""""""""}"
"
""""""""private"void"SetPaintColor(object"sender,"ColorChangedEventArgs"e)"
""""""""{"
""""""""""""objectConstructor.setColor(e.ColorValue);"
""""""""}"
"
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"Window1.xaml.cs,0#latest! Window1.xaml.cs,0#current0
edited
edited
edited
edited
added
edited
Unmet usability heuristics
Visibility of system status
“The system should always keep users informed about what is
going on” —Nielsen 1995
Current IDEs’ support for receiving changes

no support for:

- recognition over recall

- visibility of system status

- clearly marked exits
h"p://online.visualstudio.com4 Visual4Studio4 r!
James4Green4444/4444Paint4
EXPLORE OPEN SEARCH BUILD TEST CHANGES CONSOLE
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"
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"

 
Pending Outgoing

 ! 
Pending Incoming
app.config
LinePaint.cs
PaintCanvas.cs
PaintCanvasCommands.cs
PencilPaint.cs
RectPaint.cs
Window1.xaml.cs replaced




Window1.xaml.cs
 edited
using"System;"
using"System.Collections.Generic;"
using"System.Linq;"
using"System.Text;"
using"System.Windows;"
using"System.Windows.Controls;"
using"System.Windows.Data;"
using"System.Windows.Documents;"
using"System.Windows.Input;"
using"System.Windows.Media;"
using"System.Windows.Media.Imaging;"
using"System.Windows.Navigation;"
using"System.Windows.Shapes;"
"
namespace"Paint"
{"
"""///"<summary>"
"""///"TODO:"Autogenerated"comment"
"""///"</summary>"
""""public"partial"class"Window1":"Window,"IPaintObjectConstructorListener"
""""{"
""""""""private"PaintObjectConstructor"objectConstructor;"
"
""""""""public"Window1()"
""""""""{"
""""""""""""InitializeComponent();"
""""""""""""this.Loaded"+="new"RoutedEventHandler(Window1_Loaded);"
""""""""}"
"
""""""""public"void"Window1_Loaded(object"sender,"RoutedEventArgs"e)"
""""""""{"
""""""""""""objectConstructor"="new"PaintObjectConstructor(this);"
""""""""""""objectConstructor.setType("Paint.PencilPaint");"
""""""""""""objectConstructor.setColor(ColorSliderPanel.getStartingColor());"
""""""""""""objectConstructor.setThickness(5);"
"
""""""""""""DrawingCanvas.MouseLeave"+="new"MouseEventHandler(objectConstructor.MouseExited);"
""""""""""""DrawingCanvas.MouseDown"+="new"MouseButtonEventHandler(objectConstructor.MousePressed);"
""""""""""""DrawingCanvas.MouseUp"+="new"MouseButtonEventHandler(objectConstructor.MouseReleased);"
""""""""""""DrawingCanvas.MouseMove"+="new"MouseEventHandler(objectConstructor.MouseMoved);"
""""""""}"
"
""""""""private"void"SetPaintColor(object"sender,"ColorChangedEventArgs"e)"
""""""""{"
""""""""""""objectConstructor.setColor(e.ColorValue);"
""""""""}"
"
using"System;"
using"System.Collections.Generic;"
using"System.Linq;"
using"System.Text;"
using"System.Windows;"
using"System.Windows.Controls;"
using"System.Windows.Data;"
using"System.Windows.Documents;"
using"System.Windows.Input;"
using"System.Windows.Media;"
using"System.Windows.Media.Imaging;"
using"System.Windows.Navigation;"
using"System.Windows.Shapes;"
"
namespace"Paint"
{"
""""///"<summary>"
""""///"Interaction"logic"for"Window1.xaml"
""""///"</summary>"
""""public"partial"class"Window1":"Window,"IPaintObjectConstructorListener"
""""{"
""""""""private"PaintObjectConstructor"objectConstructor;"
"
""""""""public"Window1()"
""""""""{"
""""""""""""InitializeComponent();"
""""""""""""this.Loaded"+="new"RoutedEventHandler(Window1_Loaded);"
""""""""}"
"
""""""""public"void"Window1_Loaded(object"sender,"RoutedEventArgs"e)"
""""""""{"
""""""""""""objectConstructor"="new"PaintObjectConstructor(this);"
""""""""""""objectConstructor.setType("Paint.PencilPaint");"
""""""""""""objectConstructor.setColor(ColorSliderPanel.getStartingColor("
""""""""""""objectConstructor.setThickness(5);"
"
""""""""""""DrawingCanvas.MouseLeave"+="new"MouseEventHandler(objectConstr"
""""""""""""DrawingCanvas.MouseDown"+="new"MouseButtonEventHandler(objectC"
""""""""""""DrawingCanvas.MouseUp"+="new"MouseButtonEventHandler(objectCon"
""""""""""""DrawingCanvas.MouseMove"+="new"MouseEventHandler(objectConstru"
""""""""}"
"
""""""""private"void"SetPaintColor(object"sender,"ColorChangedEventArgs"e)"
""""""""{"
""""""""""""objectConstructor.setColor(e.ColorValue);"
""""""""}"
"
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"Window1.xaml.cs,0#latest! Window1.xaml.cs,0#current0
edited
edited
edited
edited
added
edited
Unmet usability heuristics
Clearly marked exits
“A system should never capture users in situations that have no
visible escape” — Molich & Nielsen 1990
Current IDEs’ support for receiving changes

no support for:

- recognition over recall

- visibility of system status

- clearly marked exits

- help and documentation
h"p://online.visualstudio.com4 Visual4Studio4 r!
James4Green4444/4444Paint4
EXPLORE OPEN SEARCH BUILD TEST CHANGES CONSOLE
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"
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"

 
Pending Outgoing

 ! 
Pending Incoming
app.config
LinePaint.cs
PaintCanvas.cs
PaintCanvasCommands.cs
PencilPaint.cs
RectPaint.cs
Window1.xaml.cs replaced




Window1.xaml.cs
 edited
using"System;"
using"System.Collections.Generic;"
using"System.Linq;"
using"System.Text;"
using"System.Windows;"
using"System.Windows.Controls;"
using"System.Windows.Data;"
using"System.Windows.Documents;"
using"System.Windows.Input;"
using"System.Windows.Media;"
using"System.Windows.Media.Imaging;"
using"System.Windows.Navigation;"
using"System.Windows.Shapes;"
"
namespace"Paint"
{"
"""///"<summary>"
"""///"TODO:"Autogenerated"comment"
"""///"</summary>"
""""public"partial"class"Window1":"Window,"IPaintObjectConstructorListener"
""""{"
""""""""private"PaintObjectConstructor"objectConstructor;"
"
""""""""public"Window1()"
""""""""{"
""""""""""""InitializeComponent();"
""""""""""""this.Loaded"+="new"RoutedEventHandler(Window1_Loaded);"
""""""""}"
"
""""""""public"void"Window1_Loaded(object"sender,"RoutedEventArgs"e)"
""""""""{"
""""""""""""objectConstructor"="new"PaintObjectConstructor(this);"
""""""""""""objectConstructor.setType("Paint.PencilPaint");"
""""""""""""objectConstructor.setColor(ColorSliderPanel.getStartingColor());"
""""""""""""objectConstructor.setThickness(5);"
"
""""""""""""DrawingCanvas.MouseLeave"+="new"MouseEventHandler(objectConstructor.MouseExited);"
""""""""""""DrawingCanvas.MouseDown"+="new"MouseButtonEventHandler(objectConstructor.MousePressed);"
""""""""""""DrawingCanvas.MouseUp"+="new"MouseButtonEventHandler(objectConstructor.MouseReleased);"
""""""""""""DrawingCanvas.MouseMove"+="new"MouseEventHandler(objectConstructor.MouseMoved);"
""""""""}"
"
""""""""private"void"SetPaintColor(object"sender,"ColorChangedEventArgs"e)"
""""""""{"
""""""""""""objectConstructor.setColor(e.ColorValue);"
""""""""}"
"
using"System;"
using"System.Collections.Generic;"
using"System.Linq;"
using"System.Text;"
using"System.Windows;"
using"System.Windows.Controls;"
using"System.Windows.Data;"
using"System.Windows.Documents;"
using"System.Windows.Input;"
using"System.Windows.Media;"
using"System.Windows.Media.Imaging;"
using"System.Windows.Navigation;"
using"System.Windows.Shapes;"
"
namespace"Paint"
{"
""""///"<summary>"
""""///"Interaction"logic"for"Window1.xaml"
""""///"</summary>"
""""public"partial"class"Window1":"Window,"IPaintObjectConstructorListener"
""""{"
""""""""private"PaintObjectConstructor"objectConstructor;"
"
""""""""public"Window1()"
""""""""{"
""""""""""""InitializeComponent();"
""""""""""""this.Loaded"+="new"RoutedEventHandler(Window1_Loaded);"
""""""""}"
"
""""""""public"void"Window1_Loaded(object"sender,"RoutedEventArgs"e)"
""""""""{"
""""""""""""objectConstructor"="new"PaintObjectConstructor(this);"
""""""""""""objectConstructor.setType("Paint.PencilPaint");"
""""""""""""objectConstructor.setColor(ColorSliderPanel.getStartingColor("
""""""""""""objectConstructor.setThickness(5);"
"
""""""""""""DrawingCanvas.MouseLeave"+="new"MouseEventHandler(objectConstr"
""""""""""""DrawingCanvas.MouseDown"+="new"MouseButtonEventHandler(objectC"
""""""""""""DrawingCanvas.MouseUp"+="new"MouseButtonEventHandler(objectCon"
""""""""""""DrawingCanvas.MouseMove"+="new"MouseEventHandler(objectConstru"
""""""""}"
"
""""""""private"void"SetPaintColor(object"sender,"ColorChangedEventArgs"e)"
""""""""{"
""""""""""""objectConstructor.setColor(e.ColorValue);"
""""""""}"
"
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"Window1.xaml.cs,0#latest! Window1.xaml.cs,0#current0
edited
edited
edited
edited
added
edited
Unmet usability heuristics
Help and documentation
“[Documentation should] be easy to search, focused on the
user’s task, list concrete steps to be carried out, and not be too
large” — Nielsen 1995
Current IDEs’ support for receiving changes

no support for:

- recognition over recall

- visibility of system status

- clearly marked exits

- help and documentation

- help recognize, diagnose, and recover
h"p://online.visualstudio.com4 Visual4Studio4 r!
James4Green4444/4444Paint4
EXPLORE OPEN SEARCH BUILD TEST CHANGES CONSOLE
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"
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"

 
Pending Outgoing

 ! 
Pending Incoming
app.config
LinePaint.cs
PaintCanvas.cs
PaintCanvasCommands.cs
PencilPaint.cs
RectPaint.cs
Window1.xaml.cs replaced




Window1.xaml.cs
 edited
using"System;"
using"System.Collections.Generic;"
using"System.Linq;"
using"System.Text;"
using"System.Windows;"
using"System.Windows.Controls;"
using"System.Windows.Data;"
using"System.Windows.Documents;"
using"System.Windows.Input;"
using"System.Windows.Media;"
using"System.Windows.Media.Imaging;"
using"System.Windows.Navigation;"
using"System.Windows.Shapes;"
"
namespace"Paint"
{"
"""///"<summary>"
"""///"TODO:"Autogenerated"comment"
"""///"</summary>"
""""public"partial"class"Window1":"Window,"IPaintObjectConstructorListener"
""""{"
""""""""private"PaintObjectConstructor"objectConstructor;"
"
""""""""public"Window1()"
""""""""{"
""""""""""""InitializeComponent();"
""""""""""""this.Loaded"+="new"RoutedEventHandler(Window1_Loaded);"
""""""""}"
"
""""""""public"void"Window1_Loaded(object"sender,"RoutedEventArgs"e)"
""""""""{"
""""""""""""objectConstructor"="new"PaintObjectConstructor(this);"
""""""""""""objectConstructor.setType("Paint.PencilPaint");"
""""""""""""objectConstructor.setColor(ColorSliderPanel.getStartingColor());"
""""""""""""objectConstructor.setThickness(5);"
"
""""""""""""DrawingCanvas.MouseLeave"+="new"MouseEventHandler(objectConstructor.MouseExited);"
""""""""""""DrawingCanvas.MouseDown"+="new"MouseButtonEventHandler(objectConstructor.MousePressed);"
""""""""""""DrawingCanvas.MouseUp"+="new"MouseButtonEventHandler(objectConstructor.MouseReleased);"
""""""""""""DrawingCanvas.MouseMove"+="new"MouseEventHandler(objectConstructor.MouseMoved);"
""""""""}"
"
""""""""private"void"SetPaintColor(object"sender,"ColorChangedEventArgs"e)"
""""""""{"
""""""""""""objectConstructor.setColor(e.ColorValue);"
""""""""}"
"
using"System;"
using"System.Collections.Generic;"
using"System.Linq;"
using"System.Text;"
using"System.Windows;"
using"System.Windows.Controls;"
using"System.Windows.Data;"
using"System.Windows.Documents;"
using"System.Windows.Input;"
using"System.Windows.Media;"
using"System.Windows.Media.Imaging;"
using"System.Windows.Navigation;"
using"System.Windows.Shapes;"
"
namespace"Paint"
{"
""""///"<summary>"
""""///"Interaction"logic"for"Window1.xaml"
""""///"</summary>"
""""public"partial"class"Window1":"Window,"IPaintObjectConstructorListener"
""""{"
""""""""private"PaintObjectConstructor"objectConstructor;"
"
""""""""public"Window1()"
""""""""{"
""""""""""""InitializeComponent();"
""""""""""""this.Loaded"+="new"RoutedEventHandler(Window1_Loaded);"
""""""""}"
"
""""""""public"void"Window1_Loaded(object"sender,"RoutedEventArgs"e)"
""""""""{"
""""""""""""objectConstructor"="new"PaintObjectConstructor(this);"
""""""""""""objectConstructor.setType("Paint.PencilPaint");"
""""""""""""objectConstructor.setColor(ColorSliderPanel.getStartingColor("
""""""""""""objectConstructor.setThickness(5);"
"
""""""""""""DrawingCanvas.MouseLeave"+="new"MouseEventHandler(objectConstr"
""""""""""""DrawingCanvas.MouseDown"+="new"MouseButtonEventHandler(objectC"
""""""""""""DrawingCanvas.MouseUp"+="new"MouseButtonEventHandler(objectCon"
""""""""""""DrawingCanvas.MouseMove"+="new"MouseEventHandler(objectConstru"
""""""""}"
"
""""""""private"void"SetPaintColor(object"sender,"ColorChangedEventArgs"e)"
""""""""{"
""""""""""""objectConstructor.setColor(e.ColorValue);"
""""""""}"
"
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"Window1.xaml.cs,0#latest! Window1.xaml.cs,0#current0
edited
edited
edited
edited
added
edited
Unmet usability heuristics
Help users recognize, diagnose, and recover from errors
— Nielsen 1995
Current IDEs’ support for receiving changes

no support for:

- recognition over recall

- visibility of system status

- clearly marked exits

- help and documentation

- help recognize, diagnose, and recover
h"p://online.visualstudio.com4 Visual4Studio4 r!
James4Green4444/4444Paint4
EXPLORE OPEN SEARCH BUILD TEST CHANGES CONSOLE
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"
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"

 
Pending Outgoing

 ! 
Pending Incoming
app.config
LinePaint.cs
PaintCanvas.cs
PaintCanvasCommands.cs
PencilPaint.cs
RectPaint.cs
Window1.xaml.cs replaced




Window1.xaml.cs
 edited
using"System;"
using"System.Collections.Generic;"
using"System.Linq;"
using"System.Text;"
using"System.Windows;"
using"System.Windows.Controls;"
using"System.Windows.Data;"
using"System.Windows.Documents;"
using"System.Windows.Input;"
using"System.Windows.Media;"
using"System.Windows.Media.Imaging;"
using"System.Windows.Navigation;"
using"System.Windows.Shapes;"
"
namespace"Paint"
{"
"""///"<summary>"
"""///"TODO:"Autogenerated"comment"
"""///"</summary>"
""""public"partial"class"Window1":"Window,"IPaintObjectConstructorListener"
""""{"
""""""""private"PaintObjectConstructor"objectConstructor;"
"
""""""""public"Window1()"
""""""""{"
""""""""""""InitializeComponent();"
""""""""""""this.Loaded"+="new"RoutedEventHandler(Window1_Loaded);"
""""""""}"
"
""""""""public"void"Window1_Loaded(object"sender,"RoutedEventArgs"e)"
""""""""{"
""""""""""""objectConstructor"="new"PaintObjectConstructor(this);"
""""""""""""objectConstructor.setType("Paint.PencilPaint");"
""""""""""""objectConstructor.setColor(ColorSliderPanel.getStartingColor());"
""""""""""""objectConstructor.setThickness(5);"
"
""""""""""""DrawingCanvas.MouseLeave"+="new"MouseEventHandler(objectConstructor.MouseExited);"
""""""""""""DrawingCanvas.MouseDown"+="new"MouseButtonEventHandler(objectConstructor.MousePressed);"
""""""""""""DrawingCanvas.MouseUp"+="new"MouseButtonEventHandler(objectConstructor.MouseReleased);"
""""""""""""DrawingCanvas.MouseMove"+="new"MouseEventHandler(objectConstructor.MouseMoved);"
""""""""}"
"
""""""""private"void"SetPaintColor(object"sender,"ColorChangedEventArgs"e)"
""""""""{"
""""""""""""objectConstructor.setColor(e.ColorValue);"
""""""""}"
"
using"System;"
using"System.Collections.Generic;"
using"System.Linq;"
using"System.Text;"
using"System.Windows;"
using"System.Windows.Controls;"
using"System.Windows.Data;"
using"System.Windows.Documents;"
using"System.Windows.Input;"
using"System.Windows.Media;"
using"System.Windows.Media.Imaging;"
using"System.Windows.Navigation;"
using"System.Windows.Shapes;"
"
namespace"Paint"
{"
""""///"<summary>"
""""///"Interaction"logic"for"Window1.xaml"
""""///"</summary>"
""""public"partial"class"Window1":"Window,"IPaintObjectConstructorListener"
""""{"
""""""""private"PaintObjectConstructor"objectConstructor;"
"
""""""""public"Window1()"
""""""""{"
""""""""""""InitializeComponent();"
""""""""""""this.Loaded"+="new"RoutedEventHandler(Window1_Loaded);"
""""""""}"
"
""""""""public"void"Window1_Loaded(object"sender,"RoutedEventArgs"e)"
""""""""{"
""""""""""""objectConstructor"="new"PaintObjectConstructor(this);"
""""""""""""objectConstructor.setType("Paint.PencilPaint");"
""""""""""""objectConstructor.setColor(ColorSliderPanel.getStartingColor("
""""""""""""objectConstructor.setThickness(5);"
"
""""""""""""DrawingCanvas.MouseLeave"+="new"MouseEventHandler(objectConstr"
""""""""""""DrawingCanvas.MouseDown"+="new"MouseButtonEventHandler(objectC"
""""""""""""DrawingCanvas.MouseUp"+="new"MouseButtonEventHandler(objectCon"
""""""""""""DrawingCanvas.MouseMove"+="new"MouseEventHandler(objectConstru"
""""""""}"
"
""""""""private"void"SetPaintColor(object"sender,"ColorChangedEventArgs"e)"
""""""""{"
""""""""""""objectConstructor.setColor(e.ColorValue);"
""""""""}"
"
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"Window1.xaml.cs,0#latest! Window1.xaml.cs,0#current0
edited
edited
edited
edited
added
edited
Design requirements:
- recognition over recall
- visibility of system status
- clearly marked exits
- help and documentation
- help recognize, diagnose, and recover
Designing and evaluating Bellevue: Methodology
RITE

(9 participants)
feedback’s analysis
h"p://online.visualstudio.com4 Visual4Studio4 r!
James4Green4444/4444Paint4
EXPLORE OPEN SEARCH BUILD TEST CHANGES CONSOLE
" Paint

 
# bin

 
# obj

 
# Properties
app.config
App.xaml
App.xaml.cs
ColorPanel.xaml
ColorPanel.xaml.cs
EraserPaint.cs
IPaintObjectConstructorList
…
LinePaint.cs
PaintCanvas.cs
PaintCanvasCommands.cs
PaintObject.cs
PaintObjectConstructor.cs
PencilPaint.cs
RectPaint.cs
Window1.xaml
Window1.xaml.cs
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"
129"
130"
131"
132"
133"
134"
135"
136"
137"
138"
139"
140"
141"
142"
143"
144"
145"
146"
147"
148"
149"
150"
151"
"
"
"#9050
Latest
update
“Improved readability and consistency.” 
10 hours ago

kathy.farewell@live.com

#9044
“Cleaned up the code and fixed some [...] 
12 hours ago

joe.smith@live.com
#8227
Previous
update
“Added undo method” 4
4 weeks ago 

yourself

Load previous history
"
"""""""""
""""""""}"
"
""""""""public"void"clear()"
""""""""{"
""""""""""""history.Add(new"List<PaintObject>(paintObjects));"
""""""""""""paintObjects.Clear();"
""""""""""""this.Repaint();"
""""""""}"
"
""""""""public"void"undo()"
""""""""{"
""""""""""""int"lastItemIndex"="history.Count"–"1;"
""""""""""""paintObjects"="history.Last<List<PaintObject>>();"
""""""""""""history.RemoveAt(lastItemIndex);"
""""""""""""this.Refresh();""
""""""""}"
""""}"
}"
"""history.RemoveAt(lastItemIndex);"
"""this.Refresh();""
142"
143"
1404
PaintCanvas.cs [ ]
""""
"""history.RemoveAt(history.Count"k"1);"
"""this.Refresh();""
141"
142"
"""history.RemoveAt(lastItemIndex);"
"""this.Refresh();""
142"
143"
"""history.RemoveAt(history.Count"k"1);"
"""this.Repaint();""
141"
142"
..."
"
"
"
...4
..."
"
"
"
...4
..."
"
"
"
...4
" Paint

 
app.config [ ]
LinePaint.cs [ ]
PaintCanvas.cs [ ]
PaintCanvasCommands.cs [ ]
PencilPaint.cs [ ]
RectPaint.cs [ ]
Window1.xaml.cs [ ]


PaintCanvas.cs [ ]
Latest changes only [7 files]
h"p://online.visualstudio.com4 Visual4Studio4 r!
James4Green4444/4444Paint4
EXPLORE OPEN SEARCH BUILD TEST CHANGES CONSOLE
" Paint

 
# bin

 
# obj

 
# Properties
app.config
App.xaml
App.xaml.cs
ColorPanel.xaml
ColorPanel.xaml.cs
EraserPaint.cs
IPaintObjectConstructorList
…
LinePaint.cs
PaintCanvas.cs
PaintCanvasCommands.cs
PaintObject.cs
PaintObjectConstructor.cs
PencilPaint.cs
RectPaint.cs
Window1.xaml
Window1.xaml.cs
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"
129"
130"
131"
132"
133"
134"
135"
136"
137"
138"
139"
140"
141"
142"
143"
144"
145"
146"
147"
148"
149"
150"
151"
"
"
"#9050
Latest
update
“Improved readability and consistency.” 
10 hours ago

kathy.farewell@live.com

#9044
“Cleaned up the code and fixed some [...] 
12 hours ago

joe.smith@live.com
#8227
Previous
update
“Added undo method” 4
4 weeks ago 

yourself

Load previous history
"
"""""""""
""""""""}"
"
""""""""public"void"clear()"
""""""""{"
""""""""""""history.Add(new"List<PaintObject>(paintObjects));"
""""""""""""paintObjects.Clear();"
""""""""""""this.Repaint();"
""""""""}"
"
""""""""public"void"undo()"
""""""""{"
""""""""""""int"lastItemIndex"="history.Count"–"1;"
""""""""""""paintObjects"="history.Last<List<PaintObject>>();"
""""""""""""history.RemoveAt(lastItemIndex);"
""""""""""""this.Refresh();""
""""""""}"
""""}"
}"
"""history.RemoveAt(lastItemIndex);"
"""this.Refresh();""
142"
143"
1404
PaintCanvas.cs [ ]
""""
"""history.RemoveAt(history.Count"k"1);"
"""this.Refresh();""
141"
142"
"""history.RemoveAt(lastItemIndex);"
"""this.Refresh();""
142"
143"
"""history.RemoveAt(history.Count"k"1);"
"""this.Repaint();""
141"
142"
..."
"
"
"
...4
..."
"
"
"
...4
..."
"
"
"
...4
" Paint

 
app.config [ ]
LinePaint.cs [ ]
PaintCanvas.cs [ ]
PaintCanvasCommands.cs [ ]
PencilPaint.cs [ ]
RectPaint.cs [ ]
Window1.xaml.cs [ ]


PaintCanvas.cs [ ]
Latest changes only [7 files]
h"p://online.visualstudio.com4 Visual4Studio4 r!
James4Green4444/4444Paint4
EXPLORE OPEN SEARCH BUILD TEST CHANGES CONSOLE
" Paint

 
# bin

 
# obj

 
# Properties
app.config
App.xaml
App.xaml.cs
ColorPanel.xaml
ColorPanel.xaml.cs
EraserPaint.cs
IPaintObjectConstructorList
…
LinePaint.cs
PaintCanvas.cs
PaintCanvasCommands.cs
PaintObject.cs
PaintObjectConstructor.cs
PencilPaint.cs
RectPaint.cs
Window1.xaml
Window1.xaml.cs
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"
129"
130"
131"
132"
133"
134"
135"
136"
137"
138"
139"
140"
141"
142"
143"
144"
145"
146"
147"
148"
149"
150"
151"
"
"
"#9050
Latest
update
“Improved readability and consistency.” 
10 hours ago

kathy.farewell@live.com

#9044
“Cleaned up the code and fixed some [...] 
12 hours ago

joe.smith@live.com
#8227
Previous
update
“Added undo method” 4
4 weeks ago 

yourself

Load previous history
"
"""""""""
""""""""}"
"
""""""""public"void"clear()"
""""""""{"
""""""""""""history.Add(new"List<PaintObject>(paintObjects));"
""""""""""""paintObjects.Clear();"
""""""""""""this.Repaint();"
""""""""}"
"
""""""""public"void"undo()"
""""""""{"
""""""""""""int"lastItemIndex"="history.Count"–"1;"
""""""""""""paintObjects"="history.Last<List<PaintObject>>();"
""""""""""""history.RemoveAt(lastItemIndex);"
""""""""""""this.Refresh();""
""""""""}"
""""}"
}"
"""history.RemoveAt(lastItemIndex);"
"""this.Refresh();""
142"
143"
1404
PaintCanvas.cs [ ]
""""
"""history.RemoveAt(history.Count"k"1);"
"""this.Refresh();""
141"
142"
"""history.RemoveAt(lastItemIndex);"
"""this.Refresh();""
142"
143"
"""history.RemoveAt(history.Count"k"1);"
"""this.Repaint();""
141"
142"
..."
"
"
"
...4
..."
"
"
"
...4
..."
"
"
"
...4
" Paint

 
app.config [ ]
LinePaint.cs [ ]
PaintCanvas.cs [ ]
PaintCanvasCommands.cs [ ]
PencilPaint.cs [ ]
RectPaint.cs [ ]
Window1.xaml.cs [ ]


PaintCanvas.cs [ ]
Latest changes only [7 files]
Bellevue prototype
as slide deck
early feedback

(several UX experts)
h"p://online.visualstudio.com4 Visual4Studio4 r!
James4Green4444/4444Paint4
EXPLORE OPEN SEARCH BUILD TEST CHANGES CONSOLE
" Paint

 
# bin

 
# obj

 
# Properties
app.config
App.xaml
App.xaml.cs
ColorPanel.xaml
ColorPanel.xaml.cs
EraserPaint.cs
IPaintObjectConstructorList
…
LinePaint.cs
PaintCanvas.cs
PaintCanvasCommands.cs
PaintObject.cs
PaintObjectConstructor.cs
PencilPaint.cs
RectPaint.cs
Window1.xaml
Window1.xaml.cs
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"
129"
130"
131"
132"
133"
134"
135"
136"
137"
138"
139"
140"
141"
142"
143"
144"
145"
146"
147"
148"
149"
150"
151"
"
"
"#9050
Latest
update
“Improved readability and consistency.” 
10 hours ago

kathy.farewell@live.com

#9044
“Cleaned up the code and fixed some [...] 
12 hours ago

joe.smith@live.com
#8227
Previous
update
“Added undo method” 4
4 weeks ago 

yourself

Load previous history
"
"""""""""
""""""""}"
"
""""""""public"void"clear()"
""""""""{"
""""""""""""history.Add(new"List<PaintObject>(paintObjects));"
""""""""""""paintObjects.Clear();"
""""""""""""this.Repaint();"
""""""""}"
"
""""""""public"void"undo()"
""""""""{"
""""""""""""int"lastItemIndex"="history.Count"–"1;"
""""""""""""paintObjects"="history.Last<List<PaintObject>>();"
""""""""""""history.RemoveAt(lastItemIndex);"
""""""""""""this.Refresh();""
""""""""}"
""""}"
}"
"""history.RemoveAt(lastItemIndex);"
"""this.Refresh();""
142"
143"
1404
PaintCanvas.cs [ ]
""""
"""history.RemoveAt(history.Count"k"1);"
"""this.Refresh();""
141"
142"
"""history.RemoveAt(lastItemIndex);"
"""this.Refresh();""
142"
143"
"""history.RemoveAt(history.Count"k"1);"
"""this.Repaint();""
141"
142"
..."
"
"
"
...4
..."
"
"
"
...4
..."
"
"
"
...4
" Paint

 
app.config [ ]
LinePaint.cs [ ]
PaintCanvas.cs [ ]
PaintCanvasCommands.cs [ ]
PencilPaint.cs [ ]
RectPaint.cs [ ]
Window1.xaml.cs [ ]


PaintCanvas.cs [ ]
Latest changes only [7 files]
h"p://online.visualstudio.com4 Visual4Studio4 r!
James4Green4444/4444Paint4
EXPLORE OPEN SEARCH BUILD TEST CHANGES CONSOLE
" Paint

 
# bin

 
# obj

 
# Properties
app.config
App.xaml
App.xaml.cs
ColorPanel.xaml
ColorPanel.xaml.cs
EraserPaint.cs
IPaintObjectConstructorList
…
LinePaint.cs
PaintCanvas.cs
PaintCanvasCommands.cs
PaintObject.cs
PaintObjectConstructor.cs
PencilPaint.cs
RectPaint.cs
Window1.xaml
Window1.xaml.cs
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"
129"
130"
131"
132"
133"
134"
135"
136"
137"
138"
139"
140"
141"
142"
143"
144"
145"
146"
147"
148"
149"
150"
151"
"
"
"#9050
Latest
update
“Improved readability and consistency.” 
10 hours ago

kathy.farewell@live.com

#9044
“Cleaned up the code and fixed some [...] 
12 hours ago

joe.smith@live.com
#8227
Previous
update
“Added undo method” 4
4 weeks ago 

yourself

Load previous history
"
"""""""""
""""""""}"
"
""""""""public"void"clear()"
""""""""{"
""""""""""""history.Add(new"List<PaintObject>(paintObjects));"
""""""""""""paintObjects.Clear();"
""""""""""""this.Repaint();"
""""""""}"
"
""""""""public"void"undo()"
""""""""{"
""""""""""""int"lastItemIndex"="history.Count"–"1;"
""""""""""""paintObjects"="history.Last<List<PaintObject>>();"
""""""""""""history.RemoveAt(lastItemIndex);"
""""""""""""this.Refresh();""
""""""""}"
""""}"
}"
"""history.RemoveAt(lastItemIndex);"
"""this.Refresh();""
142"
143"
1404
PaintCanvas.cs [ ]
""""
"""history.RemoveAt(history.Count"k"1);"
"""this.Refresh();""
141"
142"
"""history.RemoveAt(lastItemIndex);"
"""this.Refresh();""
142"
143"
"""history.RemoveAt(history.Count"k"1);"
"""this.Repaint();""
141"
142"
..."
"
"
"
...4
..."
"
"
"
...4
..."
"
"
"
...4
" Paint

 
app.config [ ]
LinePaint.cs [ ]
PaintCanvas.cs [ ]
PaintCanvasCommands.cs [ ]
PencilPaint.cs [ ]
RectPaint.cs [ ]
Window1.xaml.cs [ ]


PaintCanvas.cs [ ]
Latest changes only [7 files]
h"p://online.visualstudio.com4 Visual4Studio4 r!
James4Green4444/4444Paint4
EXPLORE OPEN SEARCH BUILD TEST CHANGES CONSOLE
" Paint

 
# bin

 
# obj

 
# Properties
app.config
App.xaml
App.xaml.cs
ColorPanel.xaml
ColorPanel.xaml.cs
EraserPaint.cs
IPaintObjectConstructorList
…
LinePaint.cs
PaintCanvas.cs
PaintCanvasCommands.cs
PaintObject.cs
PaintObjectConstructor.cs
PencilPaint.cs
RectPaint.cs
Window1.xaml
Window1.xaml.cs
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"
129"
130"
131"
132"
133"
134"
135"
136"
137"
138"
139"
140"
141"
142"
143"
144"
145"
146"
147"
148"
149"
150"
151"
"
"
"#9050
Latest
update
“Improved readability and consistency.” 
10 hours ago

kathy.farewell@live.com

#9044
“Cleaned up the code and fixed some [...] 
12 hours ago

joe.smith@live.com
#8227
Previous
update
“Added undo method” 4
4 weeks ago 

yourself

Load previous history
"
"""""""""
""""""""}"
"
""""""""public"void"clear()"
""""""""{"
""""""""""""history.Add(new"List<PaintObject>(paintObjects));"
""""""""""""paintObjects.Clear();"
""""""""""""this.Repaint();"
""""""""}"
"
""""""""public"void"undo()"
""""""""{"
""""""""""""int"lastItemIndex"="history.Count"–"1;"
""""""""""""paintObjects"="history.Last<List<PaintObject>>();"
""""""""""""history.RemoveAt(lastItemIndex);"
""""""""""""this.Refresh();""
""""""""}"
""""}"
}"
"""history.RemoveAt(lastItemIndex);"
"""this.Refresh();""
142"
143"
1404
PaintCanvas.cs [ ]
""""
"""history.RemoveAt(history.Count"k"1);"
"""this.Refresh();""
141"
142"
"""history.RemoveAt(lastItemIndex);"
"""this.Refresh();""
142"
143"
"""history.RemoveAt(history.Count"k"1);"
"""this.Repaint();""
141"
142"
..."
"
"
"
...4
..."
"
"
"
...4
..."
"
"
"
...4
" Paint

 
app.config [ ]
LinePaint.cs [ ]
PaintCanvas.cs [ ]
PaintCanvasCommands.cs [ ]
PencilPaint.cs [ ]
RectPaint.cs [ ]
Window1.xaml.cs [ ]


PaintCanvas.cs [ ]
Latest changes only [7 files]
FINAL
Bellevue
design
h"p://online.visualstudio.com4 Visual4Studio4 r!
James4Green4444/4444Paint4
EXPLORE OPEN SEARCH BUILD TEST CHANGES CONSOLE
" Paint

 
# bin

 
# obj

 
# Properties
app.config
App.xaml
App.xaml.cs
ColorPanel.xaml
ColorPanel.xaml.cs
EraserPaint.cs
IPaintObjectConstructorList
…
LinePaint.cs
PaintCanvas.cs
PaintCanvasCommands.cs
PaintObject.cs
PaintObjectConstructor.cs
PencilPaint.cs
RectPaint.cs
Window1.xaml
Window1.xaml.cs
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"
129"
130"
131"
132"
133"
134"
135"
136"
137"
138"
139"
140"
141"
142"
143"
144"
145"
146"
147"
148"
149"
150"
151"
"
"
"#9050
Latest
update
“Improved readability and consistency.” 
10 hours ago

kathy.farewell@live.com

#9044
“Cleaned up the code and fixed some [...] 
12 hours ago

joe.smith@live.com
#8227
Previous
update
“Added undo method” 4
4 weeks ago 

yourself

Load previous history
"
"""""""""
""""""""}"
"
""""""""public"void"clear()"
""""""""{"
""""""""""""history.Add(new"List<PaintObject>(paintObjects));"
""""""""""""paintObjects.Clear();"
""""""""""""this.Repaint();"
""""""""}"
"
""""""""public"void"undo()"
""""""""{"
""""""""""""int"lastItemIndex"="history.Count"–"1;"
""""""""""""paintObjects"="history.Last<List<PaintObject>>();"
""""""""""""history.RemoveAt(lastItemIndex);"
""""""""""""this.Refresh();""
""""""""}"
""""}"
}"
"""history.RemoveAt(lastItemIndex);"
"""this.Refresh();""
142"
143"
1404
PaintCanvas.cs [ ]
""""
"""history.RemoveAt(history.Count"k"1);"
"""this.Refresh();""
141"
142"
"""history.RemoveAt(lastItemIndex);"
"""this.Refresh();""
142"
143"
"""history.RemoveAt(history.Count"k"1);"
"""this.Repaint();""
141"
142"
..."
"
"
"
...4
..."
"
"
"
...4
..."
"
"
"
...4
" Paint

 
app.config [ ]
LinePaint.cs [ ]
PaintCanvas.cs [ ]
PaintCanvasCommands.cs [ ]
PencilPaint.cs [ ]
RectPaint.cs [ ]
Window1.xaml.cs [ ]


PaintCanvas.cs [ ]
Latest changes only [7 files]
h"p://online.visualstudio.com4 Visual4Studio4 r!
James4Green4444/4444Paint4
EXPLORE OPEN SEARCH BUILD TEST CHANGES CONSOLE
" Paint

 
# bin

 
# obj

 
# Properties
app.config
App.xaml
App.xaml.cs
ColorPanel.xaml
ColorPanel.xaml.cs
EraserPaint.cs
IPaintObjectConstructorList
…
LinePaint.cs
PaintCanvas.cs
PaintCanvasCommands.cs
PaintObject.cs
PaintObjectConstructor.cs
PencilPaint.cs
RectPaint.cs
Window1.xaml
Window1.xaml.cs
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"
129"
130"
131"
132"
133"
134"
135"
136"
137"
138"
139"
140"
141"
142"
143"
144"
145"
146"
147"
148"
149"
150"
151"
"
"
"#9050
Latest
update
“Improved readability and consistency.” 
10 hours ago

kathy.farewell@live.com

#9044
“Cleaned up the code and fixed some [...] 
12 hours ago

joe.smith@live.com
#8227
Previous
update
“Added undo method” 4
4 weeks ago 

yourself

Load previous history
"
"""""""""
""""""""}"
"
""""""""public"void"clear()"
""""""""{"
""""""""""""history.Add(new"List<PaintObject>(paintObjects));"
""""""""""""paintObjects.Clear();"
""""""""""""this.Repaint();"
""""""""}"
"
""""""""public"void"undo()"
""""""""{"
""""""""""""int"lastItemIndex"="history.Count"–"1;"
""""""""""""paintObjects"="history.Last<List<PaintObject>>();"
""""""""""""history.RemoveAt(lastItemIndex);"
""""""""""""this.Refresh();""
""""""""}"
""""}"
}"
"""history.RemoveAt(lastItemIndex);"
"""this.Refresh();""
142"
143"
1404
PaintCanvas.cs [ ]
""""
"""history.RemoveAt(history.Count"k"1);"
"""this.Refresh();""
141"
142"
"""history.RemoveAt(lastItemIndex);"
"""this.Refresh();""
142"
143"
"""history.RemoveAt(history.Count"k"1);"
"""this.Repaint();""
141"
142"
..."
"
"
"
...4
..."
"
"
"
...4
..."
"
"
"
...4
" Paint

 
app.config [ ]
LinePaint.cs [ ]
PaintCanvas.cs [ ]
PaintCanvasCommands.cs [ ]
PencilPaint.cs [ ]
RectPaint.cs [ ]
Window1.xaml.cs [ ]


PaintCanvas.cs [ ]
Latest changes only [7 files]
h"p://online.visualstudio.com4 Visual4Studio4 r!
James4Green4444/4444Paint4
EXPLORE OPEN SEARCH BUILD TEST CHANGES CONSOLE
" Paint

 
# bin

 
# obj

 
# Properties
app.config
App.xaml
App.xaml.cs
ColorPanel.xaml
ColorPanel.xaml.cs
EraserPaint.cs
IPaintObjectConstructorList
…
LinePaint.cs
PaintCanvas.cs
PaintCanvasCommands.cs
PaintObject.cs
PaintObjectConstructor.cs
PencilPaint.cs
RectPaint.cs
Window1.xaml
Window1.xaml.cs
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"
129"
130"
131"
132"
133"
134"
135"
136"
137"
138"
139"
140"
141"
142"
143"
144"
145"
146"
147"
148"
149"
150"
151"
"
"
"#9050
Latest
update
“Improved readability and consistency.” 
10 hours ago

kathy.farewell@live.com

#9044
“Cleaned up the code and fixed some [...] 
12 hours ago

joe.smith@live.com
#8227
Previous
update
“Added undo method” 4
4 weeks ago 

yourself

Load previous history
"
"""""""""
""""""""}"
"
""""""""public"void"clear()"
""""""""{"
""""""""""""history.Add(new"List<PaintObject>(paintObjects));"
""""""""""""paintObjects.Clear();"
""""""""""""this.Repaint();"
""""""""}"
"
""""""""public"void"undo()"
""""""""{"
""""""""""""int"lastItemIndex"="history.Count"–"1;"
""""""""""""paintObjects"="history.Last<List<PaintObject>>();"
""""""""""""history.RemoveAt(lastItemIndex);"
""""""""""""this.Refresh();""
""""""""}"
""""}"
}"
"""history.RemoveAt(lastItemIndex);"
"""this.Refresh();""
142"
143"
1404
PaintCanvas.cs [ ]
""""
"""history.RemoveAt(history.Count"k"1);"
"""this.Refresh();""
141"
142"
"""history.RemoveAt(lastItemIndex);"
"""this.Refresh();""
142"
143"
"""history.RemoveAt(history.Count"k"1);"
"""this.Repaint();""
141"
142"
..."
"
"
"
...4
..."
"
"
"
...4
..."
"
"
"
...4
" Paint

 
app.config [ ]
LinePaint.cs [ ]
PaintCanvas.cs [ ]
PaintCanvasCommands.cs [ ]
PencilPaint.cs [ ]
RectPaint.cs [ ]
Window1.xaml.cs [ ]


PaintCanvas.cs [ ]
Latest changes only [7 files]
Bellevue initial idea
as slide deck
Let’s see the walkthrough
The story… 
James works on the Paint project with other 4 people.

It’s morning and James has just got to work.

James starts the day by updating his codebase to the latest
version.
h"ps://online.ide.com0 IDE0 r!
James0Green0000/0000Paint0
EXPLORE OPEN SEARCH BUILD TEST CHANGES CONSOLE
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"
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"
&
&

 
Pending Outgoing

 ! 
Pending Incoming
app.config
LinePaint.cs
PaintCanvas.cs
PaintCanvasCommands.cs
PencilPaint.cs
RectPaint.cs
Window1.xaml.cs




edited
edited
edited
edited
added
edited
edited
h"ps://online.ide.com0 IDE0 r!
James0Green0000/0000Paint0
EXPLORE OPEN SEARCH BUILD TEST CHANGES CONSOLE
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"
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"
&
&

 
Pending Outgoing

 ! 
Pending Incoming
app.config
LinePaint.cs
PaintCanvas.cs
PaintCanvasCommands.cs
PencilPaint.cs
RectPaint.cs
Window1.xaml.cs replaced




Window1.xaml.cs
 edited
using"System;"
using"System.Collections.Generic;"
using"System.Linq;"
using"System.Text;"
using"System.Windows;"
using"System.Windows.Controls;"
using"System.Windows.Data;"
using"System.Windows.Documents;"
using"System.Windows.Input;"
using"System.Windows.Media;"
using"System.Windows.Media.Imaging;"
using"System.Windows.Navigation;"
using"System.Windows.Shapes;"
"
namespace"Paint"
{"
"""///"<summary>"
"""///"TODO:"Autogenerated"comment"
"""///"</summary>"
""""public"partial"class"Window1":"Window,"IPaintObjectConstructorListener"
""""{"
""""""""private"PaintObjectConstructor"objectConstructor;"
"
""""""""public"Window1()"
""""""""{"
""""""""""""InitializeComponent();"
""""""""""""this.Loaded"+="new"RoutedEventHandler(Window1_Loaded);"
""""""""}"
"
""""""""public"void"Window1_Loaded(object"sender,"RoutedEventArgs"e)"
""""""""{"
""""""""""""objectConstructor"="new"PaintObjectConstructor(this);"
""""""""""""objectConstructor.setType("Paint.PencilPaint");"
""""""""""""objectConstructor.setColor(ColorSliderPanel.getStartingColor());"
""""""""""""objectConstructor.setThickness(5);"
"
""""""""""""DrawingCanvas.MouseLeave"+="new"MouseEventHandler(objectConstructor.MouseExited);"
""""""""""""DrawingCanvas.MouseDown"+="new"MouseButtonEventHandler(objectConstructor.MousePressed);"
""""""""""""DrawingCanvas.MouseUp"+="new"MouseButtonEventHandler(objectConstructor.MouseReleased);"
""""""""""""DrawingCanvas.MouseMove"+="new"MouseEventHandler(objectConstructor.MouseMoved);"
""""""""}"
"
""""""""private"void"SetPaintColor(object"sender,"ColorChangedEventArgs"e)"
""""""""{"
""""""""""""objectConstructor.setColor(e.ColorValue);"
""""""""}"
"
using"System;"
using"System.Collections.Generic;"
using"System.Linq;"
using"System.Text;"
using"System.Windows;"
using"System.Windows.Controls;"
using"System.Windows.Data;"
using"System.Windows.Documents;"
using"System.Windows.Input;"
using"System.Windows.Media;"
using"System.Windows.Media.Imaging;"
using"System.Windows.Navigation;"
using"System.Windows.Shapes;"
"
namespace"Paint"
{"
""""///"<summary>"
""""///"Interaction"logic"for"Window1.xaml"
""""///"</summary>"
""""public"partial"class"Window1":"Window,"IPaintObjectConstructorListener"
""""{"
""""""""private"PaintObjectConstructor"objectConstructor;"
"
""""""""public"Window1()"
""""""""{"
""""""""""""InitializeComponent();"
""""""""""""this.Loaded"+="new"RoutedEventHandler(Window1_Loaded);"
""""""""}"
"
""""""""public"void"Window1_Loaded(object"sender,"RoutedEventArgs"e)"
""""""""{"
""""""""""""objectConstructor"="new"PaintObjectConstructor(this);"
""""""""""""objectConstructor.setType("Paint.PencilPaint");"
""""""""""""objectConstructor.setColor(ColorSliderPanel.getStartingColor("
""""""""""""objectConstructor.setThickness(5);"
"
""""""""""""DrawingCanvas.MouseLeave"+="new"MouseEventHandler(objectConstr"
""""""""""""DrawingCanvas.MouseDown"+="new"MouseButtonEventHandler(objectC"
""""""""""""DrawingCanvas.MouseUp"+="new"MouseButtonEventHandler(objectCon"
""""""""""""DrawingCanvas.MouseMove"+="new"MouseEventHandler(objectConstru"
""""""""}"
"
""""""""private"void"SetPaintColor(object"sender,"ColorChangedEventArgs"e)"
""""""""{"
""""""""""""objectConstructor.setColor(e.ColorValue);"
""""""""}"
"
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"Window1.xaml.cs,0#latest! Window1.xaml.cs,0#current0
edited
edited
edited
edited
added
edited
James accepts all the changes;
his local code gets updated.
James builds and runs the Paint
project. He plays around with the
program to test the new version.
He notices that the UNDO
function is not working.
h"ps://online.ide.com0 IDE0 r!
James0Green0000/0000Paint0
EXPLORE OPEN SEARCH BUILD TEST CHANGES CONSOLE
" Paint

 
# bin

 
# obj

 
# Properties
app.config
App.xaml
App.xaml.cs
ColorPanel.xaml
ColorPanel.xaml.cs
EraserPaint.cs
IPaintObjectConstructorList…
LinePaint.cs
PaintCanvas.cs
PaintCanvasCommands.cs
PaintObject.cs
PaintObjectConstructor.cs
PencilPaint.cs
RectPaint.cs
Window1.xaml
Window1.xaml.cs
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"
&
&
" Paint

 
# bin

 
# obj

 
# Properties
app.config [ ]
App.xaml 
App.xaml.cs
ColorPanel.xaml
ColorPanel.xaml.cs
EraserPaint.cs
IPaintObjectConstructorList…
LinePaint.cs [ ]
PaintCanvas.cs [ ]
PaintCanvasCommands.cs [ ]
PaintObject.cs
PaintObjectConstructor.cs
PencilPaint.cs [ ]
RectPaint.cs [ ]
Window1.xaml
Window1.xaml.cs [ ]


Latest changes only [7 files]
James immediately notices
the files that have changed.
h"ps://online.ide.com0 IDE0 r!
James0Green0000/0000Paint0
EXPLORE OPEN SEARCH BUILD TEST CHANGES CONSOLE
" Paint

 
# bin

 
# obj

 
# Properties
app.config
App.xaml
App.xaml.cs
ColorPanel.xaml
ColorPanel.xaml.cs
EraserPaint.cs
IPaintObjectConstructorList…
LinePaint.cs
PaintCanvas.cs
PaintCanvasCommands.cs
PaintObject.cs
PaintObjectConstructor.cs
PencilPaint.cs
RectPaint.cs
Window1.xaml
Window1.xaml.cs
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"
&
&
" Paint

 
# bin

 
# obj

 
# Properties
app.config [ ]
App.xaml 
App.xaml.cs
ColorPanel.xaml
ColorPanel.xaml.cs
EraserPaint.cs
IPaintObjectConstructorList…
LinePaint.cs [ ]
PaintCanvas.cs [ ]
PaintCanvasCommands.cs [ ]
PaintObject.cs
PaintObjectConstructor.cs
PencilPaint.cs [ ]
RectPaint.cs [ ]
Window1.xaml
Window1.xaml.cs [ ]


Latest changes only [7 files]
Also, he can apply some filtering
to just see the latest changes.
h"ps://online.ide.com0 IDE0 r!
James0Green0000/0000Paint0
EXPLORE OPEN SEARCH BUILD TEST CHANGES CONSOLE
" Paint

 
# bin

 
# obj

 
# Properties
app.config
App.xaml
App.xaml.cs
ColorPanel.xaml
ColorPanel.xaml.cs
EraserPaint.cs
IPaintObjectConstructorList…
LinePaint.cs
PaintCanvas.cs
PaintCanvasCommands.cs
PaintObject.cs
PaintObjectConstructor.cs
PencilPaint.cs
RectPaint.cs
Window1.xaml
Window1.xaml.cs
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"
&
&
" Paint

 
app.config [ ]
LinePaint.cs [ ]
PaintCanvas.cs [ ]
PaintCanvasCommands.cs [ ]
PencilPaint.cs [ ]
RectPaint.cs [ ]
Window1.xaml.cs [ ]


Latest changes only [7 files]
h"ps://online.ide.com0 IDE0 r!
James0Green0000/0000Paint0
EXPLORE OPEN SEARCH BUILD TEST CHANGES CONSOLE
" Paint

 
# bin

 
# obj

 
# Properties
app.config
App.xaml
App.xaml.cs
ColorPanel.xaml
ColorPanel.xaml.cs
EraserPaint.cs
IPaintObjectConstructorList…
LinePaint.cs
PaintCanvas.cs
PaintCanvasCommands.cs
PaintObject.cs
PaintObjectConstructor.cs
PencilPaint.cs
RectPaint.cs
Window1.xaml
Window1.xaml.cs
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"
&
&
" Paint

 
app.config [ ]
LinePaint.cs [ ]
PaintCanvas.cs [ ]
PaintCanvasCommands.cs [ ]
PencilPaint.cs [ ]
RectPaint.cs [ ]
Window1.xaml.cs [ ]


Latest changes only [7 files]
h"ps://online.ide.com0 IDE0 r!
James0Green0000/0000Paint0
EXPLORE OPEN SEARCH BUILD TEST CHANGES CONSOLE
" Paint

 
# bin

 
# obj

 
# Properties
app.config
App.xaml
App.xaml.cs
ColorPanel.xaml
ColorPanel.xaml.cs
EraserPaint.cs
IPaintObjectConstructorList…
LinePaint.cs
PaintCanvas.cs
PaintCanvasCommands.cs
PaintObject.cs
PaintObjectConstructor.cs
PencilPaint.cs
RectPaint.cs
Window1.xaml
Window1.xaml.cs
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"
&
&
" Paint

 
app.config [ ]
LinePaint.cs [ ]
PaintCanvas.cs [ ]
PaintCanvasCommands.cs [ ]
PencilPaint.cs [ ]
RectPaint.cs [ ]
Window1.xaml.cs [ ]


PaintCanvasCommands.cs [ ]
using"System;"
using"System.Collections.Generic;"
using"System.Linq;"
using"System.Text;"
using"System.Windows.Input;"
"
namespace"Paint"
{"
"
""""public"static"class"PaintCanvasCommands"
""""{"
""""""""static"PaintCanvasCommands()"
""""""""{"
""""""""""""ClearCanvas"="new"RoutedUICommand("
""""""""""""""""Clear"Canvas",""ClearCanvas","
"""""""""""""""typeof(PaintCanvasCommands));"
"
""""""""""""UndoCanvas"="new"RoutedUICommand("
""""""""""""""""Undo"my"last"stroke",""UndoCanvas","
"""""""""""""""typeof(PaintCanvasCommands));"
"
""""""""""""ChangeToPencil"="new"RoutedUICommand("
"""""""""""""""""Pencil",""ChangeToPencil","
""""""""""""""""typeof(PaintCanvasCommands));"
"
""""""""""""ChangeToEraser"="new"RoutedUICommand("
"""""""""""""""""Eraser",""ChangeToEraser","
""""""""""""""""typeof(PaintCanvasCommands));"
"
""""""""""""ChangeToLine"="new"RoutedUICommand("
"""""""""""""""""Line",""ChangeToLine","
""""""""""""""""typeof(PaintCanvasCommands));"
"
""""""""""""ChangeToRect"="new"RoutedUICommand("
"""""""""""""""""Rect",""ChangeToRect","
""""""""""""""""typeof(PaintCanvasCommands));"
""""""""}"
"
"""""""//"getters"and"setters"from"here"on:"
"""""""""
""""""""public"static"RoutedUICommand"ClearCanvas"
""""""""{"
""""""""""""get;"
""""""""""""set;"
""""""""}"""""""""
Latest changes only [7 files]
390
h"ps://online.ide.com0 IDE0 r!
James0Green0000/0000Paint0
EXPLORE OPEN SEARCH BUILD TEST CHANGES CONSOLE
" Paint

 
# bin

 
# obj

 
# Properties
app.config
App.xaml
App.xaml.cs
ColorPanel.xaml
ColorPanel.xaml.cs
EraserPaint.cs
IPaintObjectConstructorList…
LinePaint.cs
PaintCanvas.cs
PaintCanvasCommands.cs
PaintObject.cs
PaintObjectConstructor.cs
PencilPaint.cs
RectPaint.cs
Window1.xaml
Window1.xaml.cs
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"
&
&
" Paint

 
app.config [ ]
LinePaint.cs [ ]
PaintCanvas.cs [ ]
PaintCanvasCommands.cs [ ]
PencilPaint.cs [ ]
RectPaint.cs [ ]
Window1.xaml.cs [ ]


using"System;"
using"System.Collections.Generic;"
using"System.Linq;"
using"System.Text;"
using"System.Windows.Input;"
"
namespace"Paint"
{"
"
""""public"static"class"PaintCanvasCommands"
""""{"
""""""""static"PaintCanvasCommands()"
""""""""{"
""""""""""""ClearCanvas"="new"RoutedUICommand("
""""""""""""""""Clear"Canvas",""ClearCanvas","
"""""""""""""""typeof(PaintCanvasCommands));"
"
""""""""""""UndoCanvas"="new"RoutedUICommand("
""""""""""""""""Undo"my"last"stroke",""UndoCanvas","
"""""""""""""""typeof(PaintCanvasCommands));"
"
""""""""""""ChangeToPencil"="new"RoutedUICommand("
"""""""""""""""""Pencil",""ChangeToPencil","
""""""""""""""""typeof(PaintCanvasCommands));"
"
""""""""""""ChangeToEraser"="new"RoutedUICommand("
"""""""""""""""""Eraser",""ChangeToEraser","
""""""""""""""""typeof(PaintCanvasCommands));"
"
""""""""""""ChangeToLine"="new"RoutedUICommand("
"""""""""""""""""Line",""ChangeToLine","
""""""""""""""""typeof(PaintCanvasCommands));"
"
""""""""""""ChangeToRect"="new"RoutedUICommand("
"""""""""""""""""Rect",""ChangeToRect","
""""""""""""""""typeof(PaintCanvasCommands));"
""""""""}"
"
"""""""//"getters"and"setters"from"here"on:"
"""""""""
""""""""public"static"RoutedUICommand"ClearCanvas"
""""""""{"
""""""""""""get;"
""""""""""""set;"
""""""""}"""""""""
Latest changes only [7 files]
"""""""""//"getters"and"setters"from"here"on:"390
PaintCanvasCommands.cs [ ]
h"ps://online.ide.com0 IDE0 r!
James0Green0000/0000Paint0
EXPLORE OPEN SEARCH BUILD TEST CHANGES CONSOLE
" Paint

 
# bin

 
# obj

 
# Properties
app.config
App.xaml
App.xaml.cs
ColorPanel.xaml
ColorPanel.xaml.cs
EraserPaint.cs
IPaintObjectConstructorList…
LinePaint.cs
PaintCanvas.cs
PaintCanvasCommands.cs
PaintObject.cs
PaintObjectConstructor.cs
PencilPaint.cs
RectPaint.cs
Window1.xaml
Window1.xaml.cs
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"
&
&
using"System;"
using"System.Collections.Generic;"
using"System.Linq;"
using"System.Text;"
using"System.Windows.Input;"
"
namespace"Paint"
{"
"
""""public"static"class"PaintCanvasCommands"
""""{"
""""""""static"PaintCanvasCommands()"
""""""""{"
""""""""""""ClearCanvas"="new"RoutedUICommand("
""""""""""""""""Clear"Canvas",""ClearCanvas","
"""""""""""""""typeof(PaintCanvasCommands));"
"
""""""""""""UndoCanvas"="new"RoutedUICommand("
""""""""""""""""Undo"my"last"stroke",""UndoCanvas","
"""""""""""""""typeof(PaintCanvasCommands));"
"
""""""""""""ChangeToPencil"="new"RoutedUICommand("
"""""""""""""""""Pencil",""ChangeToPencil","
""""""""""""""""typeof(PaintCanvasCommands));"
"
""""""""""""ChangeToEraser"="new"RoutedUICommand("
"""""""""""""""""Eraser",""ChangeToEraser","
""""""""""""""""typeof(PaintCanvasCommands));"
"
""""""""""""ChangeToLine"="new"RoutedUICommand("
"""""""""""""""""Line",""ChangeToLine","
""""""""""""""""typeof(PaintCanvasCommands));"
"
""""""""""""ChangeToRect"="new"RoutedUICommand("
"""""""""""""""""Rect",""ChangeToRect","
""""""""""""""""typeof(PaintCanvasCommands));"
""""""""}"
"
"""""""//"getters"and"setters"from"here"on:"
"""""""""
""""""""public"static"RoutedUICommand"ClearCanvas"
""""""""{"
""""""""""""get;"
""""""""""""set;"
""""""""}"""""""""
390
" Paint

 
app.config [ ]
LinePaint.cs [ ]
PaintCanvas.cs [ ]
PaintCanvasCommands.cs [ ]
PencilPaint.cs [ ]
RectPaint.cs [ ]
Window1.xaml.cs [ ]


Latest changes only [7 files]
PaintCanvasCommands.cs [ ]
h"ps://online.ide.com0 IDE0 r!
James0Green0000/0000Paint0
EXPLORE OPEN SEARCH BUILD TEST CHANGES CONSOLE
" Paint

 
# bin

 
# obj

 
# Properties
app.config
App.xaml
App.xaml.cs
ColorPanel.xaml
ColorPanel.xaml.cs
EraserPaint.cs
IPaintObjectConstructorList…
LinePaint.cs
PaintCanvas.cs
PaintCanvasCommands.cs
PaintObject.cs
PaintObjectConstructor.cs
PencilPaint.cs
RectPaint.cs
Window1.xaml
Window1.xaml.cs
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"
&
&
using"System;"
using"System.Collections.Generic;"
using"System.Linq;"
using"System.Text;"
using"System.Windows;"
using"System.Windows.Media;"
using"System.Windows.Shapes;"
"
namespace"Paint"
{"
""""public"class"PaintCanvas":"System.Windows.Controls.Canvas"
""""{"
""""""""private"List<List<PaintObject>>"history;"
""""""""private"List<PaintObject>"paintObjects;"
"
""""""""private"PaintObject"temporaryObject;"
""""""""private"PaintObject"hoveringObject;"
""""""""private"Rectangle"hoveringRender;"
"
""""""""private"bool"currentlyDrawing;"
"
""""""""public"PaintCanvas()":"base()"
""""""""{"
""""""""""""history"="new"List<List<PaintObject>>();"
""""""""""""paintObjects"="new"List<PaintObject>();"
"
""""""""""""hoveringRender"="new"Rectangle();"
""""""""""""hoveringRender.StrokeThickness"="1;"
""""""""""""hoveringRender.Stroke"="Brushes.DarkGray;"
""""""""""""hoveringRender.Visibility"="Visibility.Hidden;"
""""""""""""this.Children.Add(hoveringRender);"
"
""""""""""""currentlyDrawing"="false;"
""""""""}"
"
""""""""public"void"Repaint()"
""""""""{"
""""""""""""this.Children.Clear();"
""""""""""""foreach"(PaintObject"po"in"paintObjects)"
""""""""""""{"
""""""""""""""""this.Children.Add(po.getRendering());"
""""""""""""}"
"
""""""""""""this.Children.Add(hoveringRender);"
""""""""}"
"
"""""""""
280
" Paint

 
app.config [ ]
LinePaint.cs [ ]
PaintCanvas.cs [ ]
PaintCanvasCommands.cs [ ]
PencilPaint.cs [ ]
RectPaint.cs [ ]
Window1.xaml.cs [ ]


PaintCanvas.cs [ ]
Latest changes only [7 files]
h"ps://online.ide.com0 IDE0 r!
James0Green0000/0000Paint0
EXPLORE OPEN SEARCH BUILD TEST CHANGES CONSOLE
" Paint

 
# bin

 
# obj

 
# Properties
app.config
App.xaml
App.xaml.cs
ColorPanel.xaml
ColorPanel.xaml.cs
EraserPaint.cs
IPaintObjectConstructorList…
LinePaint.cs
PaintCanvas.cs
PaintCanvasCommands.cs
PaintObject.cs
PaintObjectConstructor.cs
PencilPaint.cs
RectPaint.cs
Window1.xaml
Window1.xaml.cs
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"
&
&
using"System;"
using"System.Collections.Generic;"
using"System.Linq;"
using"System.Text;"
using"System.Windows;"
using"System.Windows.Media;"
using"System.Windows.Shapes;"
"
namespace"Paint"
{"
""""public"class"PaintCanvas":"System.Windows.Controls.Canvas"
""""{"
""""""""private"List<List<PaintObject>>"history;"
""""""""private"List<PaintObject>"paintObjects;"
"
""""""""private"PaintObject"temporaryObject;"
""""""""private"PaintObject"hoveringObject;"
""""""""private"Rectangle"hoveringRender;"
"
""""""""private"bool"currentlyDrawing;"
"
""""""""public"PaintCanvas()":"base()"
""""""""{"
""""""""""""history"="new"List<List<PaintObject>>();"
""""""""""""paintObjects"="new"List<PaintObject>();"
"
""""""""""""hoveringRender"="new"Rectangle();"
""""""""""""hoveringRender.StrokeThickness"="1;"
""""""""""""hoveringRender.Stroke"="Brushes.DarkGray;"
""""""""""""hoveringRender.Visibility"="Visibility.Hidden;"
""""""""""""this.Children.Add(hoveringRender);"
"
""""""""""""currentlyDrawing"="false;"
""""""""}"
"
""""""""public"void"Repaint()"
""""""""{"
""""""""""""this.Children.Clear();"
""""""""""""foreach"(PaintObject"po"in"paintObjects)"
""""""""""""{"
""""""""""""""""this.Children.Add(po.getRendering());"
""""""""""""}"
"
""""""""""""this.Children.Add(hoveringRender);"
""""""""}"
"
"""""""""
" Paint

 
app.config [ ]
LinePaint.cs [ ]
PaintCanvas.cs [ ]
PaintCanvasCommands.cs [ ]
PencilPaint.cs [ ]
RectPaint.cs [ ]
Window1.xaml.cs [ ]


Latest changes only [7 files]
"""hoveringRender.StrokeThickness"="1;"280
PaintCanvas.cs [ ]
h"ps://online.ide.com0 IDE0 r!
James0Green0000/0000Paint0
EXPLORE OPEN SEARCH BUILD TEST CHANGES CONSOLE
" Paint

 
# bin

 
# obj

 
# Properties
app.config
App.xaml
App.xaml.cs
ColorPanel.xaml
ColorPanel.xaml.cs
EraserPaint.cs
IPaintObjectConstructorList…
LinePaint.cs
PaintCanvas.cs
PaintCanvasCommands.cs
PaintObject.cs
PaintObjectConstructor.cs
PencilPaint.cs
RectPaint.cs
Window1.xaml
Window1.xaml.cs
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"
&
&
"
""""""""public"void"setHoveringObject(PaintObject"hoveringObject)"
""""""""{"
""""""""""""this.hoveringObject"="hoveringObject;"
""""""""""""if"(hoveringObject"!="null)"
""""""""""""{"
""""""""""""""""hoveringRender.Visibility"="Visibility.Visible;"
""""""""""""""""hoveringRender.Width"="hoveringRender.Height"="hoveringObject.getThickness()"+"2;"
""""""""""""""""double"offset"="hoveringObject.getThickness()"/"2"+"1;"
""""""""""""""""hoveringRender.Fill"="new"SolidColorBrush(hoveringObject.getColor());"
""""""""""""""""PaintCanvas.SetLeft(hoveringRender,"hoveringObject.getStartX()"k"offset);"
""""""""""""""""PaintCanvas.SetTop(hoveringRender,"hoveringObject.getStartY()"k"offset);"
""""""""""""""""PaintCanvas.SetZIndex(hoveringRender,"10);"
""""""""""""}"
""""""""""""else"{"hoveringRender.Visibility"="Visibility.Hidden;"}"
""""""""}"
"
""""""""public"void"addPaintObject(PaintObject"newObject)"
""""""""{"
""""""""""""currentlyDrawing"="false;"
""""""""""""history.Add(new"List<PaintObject>(paintObjects));"
""""""""""""paintObjects.Add(newObject);"
""""""""""""this.Repaint();"
""""""""}"
"
""""""""public"void"clear()"
""""""""{"
""""""""""""history.Add(new"List<PaintObject>(paintObjects));"
""""""""""""paintObjects.Clear();"
""""""""""""this.Repaint();"
""""""""}"
"
""""""""public"void"undo()"
""""""""{"
""""""""""""int"lastItemIndex"="history.Count"–"1;"
""""""""""""paintObjects"="history.Last<List<PaintObject>>();"
""""""""""""history.RemoveAt(lastItemIndex);"
""""""""""""this.Refresh();""
""""""""}"
""""}"
}"
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"
142"
143"
1400
" Paint

 
app.config [ ]
LinePaint.cs [ ]
PaintCanvas.cs [ ]
PaintCanvasCommands.cs [ ]
PencilPaint.cs [ ]
RectPaint.cs [ ]
Window1.xaml.cs [ ]


Latest changes only [7 files]
PaintCanvas.cs [ ]
h"ps://online.ide.com0 IDE0 r!
James0Green0000/0000Paint0
EXPLORE OPEN SEARCH BUILD TEST CHANGES CONSOLE
" Paint

 
# bin

 
# obj

 
# Properties
app.config
App.xaml
App.xaml.cs
ColorPanel.xaml
ColorPanel.xaml.cs
EraserPaint.cs
IPaintObjectConstructorList…
LinePaint.cs
PaintCanvas.cs
PaintCanvasCommands.cs
PaintObject.cs
PaintObjectConstructor.cs
PencilPaint.cs
RectPaint.cs
Window1.xaml
Window1.xaml.cs
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"
&
&
"
""""""""public"void"setHoveringObject(PaintObject"hoveringObject)"
""""""""{"
""""""""""""this.hoveringObject"="hoveringObject;"
""""""""""""if"(hoveringObject"!="null)"
""""""""""""{"
""""""""""""""""hoveringRender.Visibility"="Visibility.Visible;"
""""""""""""""""hoveringRender.Width"="hoveringRender.Height"="hoveringObject.getThickness()"+"2;"
""""""""""""""""double"offset"="hoveringObject.getThickness()"/"2"+"1;"
""""""""""""""""hoveringRender.Fill"="new"SolidColorBrush(hoveringObject.getColor());"
""""""""""""""""PaintCanvas.SetLeft(hoveringRender,"hoveringObject.getStartX()"k"offset);"
""""""""""""""""PaintCanvas.SetTop(hoveringRender,"hoveringObject.getStartY()"k"offset);"
""""""""""""""""PaintCanvas.SetZIndex(hoveringRender,"10);"
""""""""""""}"
""""""""""""else"{"hoveringRender.Visibility"="Visibility.Hidden;"}"
""""""""}"
"
""""""""public"void"addPaintObject(PaintObject"newObject)"
""""""""{"
""""""""""""currentlyDrawing"="false;"
""""""""""""history.Add(new"List<PaintObject>(paintObjects));"
""""""""""""paintObjects.Add(newObject);"
""""""""""""this.Repaint();"
""""""""}"
"
""""""""public"void"clear()"
""""""""{"
""""""""""""history.Add(new"List<PaintObject>(paintObjects));"
""""""""""""paintObjects.Clear();"
""""""""""""this.Repaint();"
""""""""}"
"
""""""""public"void"undo()"
""""""""{"
""""""""""""int"lastItemIndex"="history.Count"–"1;"
""""""""""""paintObjects"="history.Last<List<PaintObject>>();"
""""""""""""history.RemoveAt(lastItemIndex);"
""""""""""""this.Refresh();""
""""""""}"
""""}"
}"
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"
142"
143"
" Paint

 
app.config [ ]
LinePaint.cs [ ]
PaintCanvas.cs [ ]
PaintCanvasCommands.cs [ ]
PencilPaint.cs [ ]
RectPaint.cs [ ]
Window1.xaml.cs [ ]


Latest changes only [7 files]
"""int"lastItemIndex"="history.Count"–"1;"1400
PaintCanvas.cs [ ]
h"ps://online.ide.com0 IDE0 r!
James0Green0000/0000Paint0
EXPLORE OPEN SEARCH BUILD TEST CHANGES CONSOLE
" Paint

 
# bin

 
# obj

 
# Properties
app.config
App.xaml
App.xaml.cs
ColorPanel.xaml
ColorPanel.xaml.cs
EraserPaint.cs
IPaintObjectConstructorList…
LinePaint.cs
PaintCanvas.cs
PaintCanvasCommands.cs
PaintObject.cs
PaintObjectConstructor.cs
PencilPaint.cs
RectPaint.cs
Window1.xaml
Window1.xaml.cs
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"
&
&
"
""""""""public"void"setHoveringObject(PaintObject"hoveringObject)"
""""""""{"
""""""""""""this.hoveringObject"="hoveringObject;"
""""""""""""if"(hoveringObject"!="null)"
""""""""""""{"
""""""""""""""""hoveringRender.Visibility"="Visibility.Visible;"
""""""""""""""""hoveringRender.Width"="hoveringRender.Height"="hoveringObject.getThickness()"+"2;"
""""""""""""""""double"offset"="hoveringObject.getThickness()"/"2"+"1;"
""""""""""""""""hoveringRender.Fill"="new"SolidColorBrush(hoveringObject.getColor());"
""""""""""""""""PaintCanvas.SetLeft(hoveringRender,"hoveringObject.getStartX()"k"offset);"
""""""""""""""""PaintCanvas.SetTop(hoveringRender,"hoveringObject.getStartY()"k"offset);"
""""""""""""""""PaintCanvas.SetZIndex(hoveringRender,"10);"
""""""""""""}"
""""""""""""else"{"hoveringRender.Visibility"="Visibility.Hidden;"}"
""""""""}"
"
""""""""public"void"addPaintObject(PaintObject"newObject)"
""""""""{"
""""""""""""currentlyDrawing"="false;"
""""""""""""history.Add(new"List<PaintObject>(paintObjects));"
""""""""""""paintObjects.Add(newObject);"
""""""""""""this.Repaint();"
""""""""}"
"
""""""""public"void"clear()"
""""""""{"
""""""""""""history.Add(new"List<PaintObject>(paintObjects));"
""""""""""""paintObjects.Clear();"
""""""""""""this.Repaint();"
""""""""}"
"
""""""""public"void"undo()"
""""""""{"
""""""""""""int"lastItemIndex"="history.Count"–"1;"
""""""""""""paintObjects"="history.Last<List<PaintObject>>();"
""""""""""""history.RemoveAt(lastItemIndex);"
""""""""""""this.Refresh();""
""""""""}"
""""}"
}"
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"
"
"
"
1400
" Paint

 
app.config [ ]
LinePaint.cs [ ]
PaintCanvas.cs [ ]
PaintCanvasCommands.cs [ ]
PencilPaint.cs [ ]
RectPaint.cs [ ]
Window1.xaml.cs [ ]


Latest changes only [7 files]
"""history.RemoveAt(lastItemIndex);"
"""this.Refresh();""
142"
143"
PaintCanvas.cs [ ]
h"ps://online.ide.com0 IDE0 r!
James0Green0000/0000Paint0
EXPLORE OPEN SEARCH BUILD TEST CHANGES CONSOLE
" Paint

 
# bin

 
# obj

 
# Properties
app.config
App.xaml
App.xaml.cs
ColorPanel.xaml
ColorPanel.xaml.cs
EraserPaint.cs
IPaintObjectConstructorList…
LinePaint.cs
PaintCanvas.cs
PaintCanvasCommands.cs
PaintObject.cs
PaintObjectConstructor.cs
PencilPaint.cs
RectPaint.cs
Window1.xaml
Window1.xaml.cs
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"
&
&
"
""""""""public"void"setHoveringObject(PaintObject"hoveringObject)"
""""""""{"
""""""""""""this.hoveringObject"="hoveringObject;"
""""""""""""if"(hoveringObject"!="null)"
""""""""""""{"
""""""""""""""""hoveringRender.Visibility"="Visibility.Visible;"
""""""""""""""""hoveringRender.Width"="hoveringRender.Height"="hoveringObject.getThickness()"+"2;"
""""""""""""""""double"offset"="hoveringObject.getThickness()"/"2"+"1;"
""""""""""""""""hoveringRender.Fill"="new"SolidColorBrush(hoveringObject.getColor());"
""""""""""""""""PaintCanvas.SetLeft(hoveringRender,"hoveringObject.getStartX()"k"offset);"
""""""""""""""""PaintCanvas.SetTop(hoveringRender,"hoveringObject.getStartY()"k"offset);"
""""""""""""""""PaintCanvas.SetZIndex(hoveringRender,"10);"
""""""""""""}"
""""""""""""else"{"hoveringRender.Visibility"="Visibility.Hidden;"}"
""""""""}"
"
""""""""public"void"addPaintObject(PaintObject"newObject)"
""""""""{"
""""""""""""currentlyDrawing"="false;"
""""""""""""history.Add(new"List<PaintObject>(paintObjects));"
""""""""""""paintObjects.Add(newObject);"
""""""""""""this.Repaint();"
""""""""}"
"
""""""""public"void"clear()"
""""""""{"
""""""""""""history.Add(new"List<PaintObject>(paintObjects));"
""""""""""""paintObjects.Clear();"
""""""""""""this.Repaint();"
""""""""}"
"
""""""""public"void"undo()"
""""""""{"
""""""""""""int"lastItemIndex"="history.Count"–"1;"
""""""""""""paintObjects"="history.Last<List<PaintObject>>();"
""""""""""""history.RemoveAt(lastItemIndex);"
""""""""""""this.Refresh();""
""""""""}"
""""}"
}"
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"
"
"
"
1400
" Paint

 
app.config [ ]
LinePaint.cs [ ]
PaintCanvas.cs [ ]
PaintCanvasCommands.cs [ ]
PencilPaint.cs [ ]
RectPaint.cs [ ]
Window1.xaml.cs [ ]


Latest changes only [7 files]
"""history.RemoveAt(lastItemIndex);"
"""this.Refresh();""
142"
143"
click0
PaintCanvas.cs [ ]
h"ps://online.ide.com0 IDE0 r!
James0Green0000/0000Paint0
EXPLORE OPEN SEARCH BUILD TEST CHANGES CONSOLE
" Paint

 
# bin

 
# obj

 
# Properties
app.config
App.xaml
App.xaml.cs
ColorPanel.xaml
ColorPanel.xaml.cs
EraserPaint.cs
IPaintObjectConstructorList…
LinePaint.cs
PaintCanvas.cs
PaintCanvasCommands.cs
PaintObject.cs
PaintObjectConstructor.cs
PencilPaint.cs
RectPaint.cs
Window1.xaml
Window1.xaml.cs
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"
&
&
129"
130"
131"
132"
133"
134"
135"
136"
137"
138"
139"
140"
141"
142"
143"
144"
145"
146"
147"
148"
149"
150"
151"
"
"
"#9050
Latest
update
“Improved readability and consistency.” 
10 hours ago

kathy.farewell@live.com

#9044
“Cleaned up the code and fixed some [...] 
12 hours ago

joe.smith@live.com
#8227
Previous
update
“Added undo method” 0
4 weeks ago 

yourself

Load previous history
"
"""""""""
""""""""}"
"
""""""""public"void"clear()"
""""""""{"
""""""""""""history.Add(new"List<PaintObject>(paintObjects));"
""""""""""""paintObjects.Clear();"
""""""""""""this.Repaint();"
""""""""}"
"
""""""""public"void"undo()"
""""""""{"
""""""""""""int"lastItemIndex"="history.Count"–"1;"
""""""""""""paintObjects"="history.Last<List<PaintObject>>();"
""""""""""""history.RemoveAt(lastItemIndex);"
""""""""""""this.Refresh();""
""""""""}"
""""}"
}"
"""history.RemoveAt(lastItemIndex);"
"""this.Refresh();""
142"
143"
1400
PaintCanvas.cs [ ]
""""
"""history.RemoveAt(history.Count"k"1);"
"""this.Refresh();""
141"
142"
"""history.RemoveAt(lastItemIndex);"
"""this.Refresh();""
142"
143"
"""history.RemoveAt(history.Count"k"1);"
"""this.Repaint();""
141"
142"
..."
"
"
"
...0
..."
"
"
"
...0
..."
"
"
"
...0
" Paint

 
app.config [ ]
LinePaint.cs [ ]
PaintCanvas.cs [ ]
PaintCanvasCommands.cs [ ]
PencilPaint.cs [ ]
RectPaint.cs [ ]
Window1.xaml.cs [ ]


Latest changes only [7 files]
PaintCanvas.cs [ ]
h"ps://online.ide.com0 IDE0 r!
James0Green0000/0000Paint0
EXPLORE OPEN SEARCH BUILD TEST CHANGES CONSOLE
" Paint

 
# bin

 
# obj

 
# Properties
app.config
App.xaml
App.xaml.cs
ColorPanel.xaml
ColorPanel.xaml.cs
EraserPaint.cs
IPaintObjectConstructorList…
LinePaint.cs
PaintCanvas.cs
PaintCanvasCommands.cs
PaintObject.cs
PaintObjectConstructor.cs
PencilPaint.cs
RectPaint.cs
Window1.xaml
Window1.xaml.cs
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"
&
&
129"
130"
131"
132"
133"
134"
135"
136"
137"
138"
139"
140"
141"
142"
143"
144"
145"
146"
147"
148"
149"
150"
151"
"
"
"#9050
Latest
update
“Improved readability and consistency.” 
10 hours ago

kathy.farewell@live.com

#9044
“Cleaned up the code and fixed some [...] 
12 hours ago

joe.smith@live.com
#8227
Previous
update
“Added undo method” 0
4 weeks ago 

yourself

Load previous history
"
"""""""""
""""""""}"
"
""""""""public"void"clear()"
""""""""{"
""""""""""""history.Add(new"List<PaintObject>(paintObjects));"
""""""""""""paintObjects.Clear();"
""""""""""""this.Repaint();"
""""""""}"
"
""""""""public"void"undo()"
""""""""{"
""""""""""""int"lastItemIndex"="history.Count"–"1;"
""""""""""""paintObjects"="history.Last<List<PaintObject>>();"
""""""""""""history.RemoveAt(lastItemIndex);"
""""""""""""this.Refresh();""
""""""""}"
""""}"
}"
"""history.RemoveAt(lastItemIndex);"
"""this.Refresh();""
142"
143"
1400
" Paint

 
app.config [ ]
LinePaint.cs [ ]
PaintCanvas.cs [ ]
PaintCanvasCommands.cs [ ]
PencilPaint.cs [ ]
RectPaint.cs [ ]
Window1.xaml.cs [ ]


Latest changes only [7 files]
""""
"""history.RemoveAt(history.Count"k"1);"
"""this.Refresh();""
141"
142"
"""history.RemoveAt(lastItemIndex);"
"""this.Refresh();""
142"
143"
"""history.RemoveAt(history.Count"k"1);"
"""this.Repaint();""
141"
142"
..."
"
"
"
...0
..."
"
"
"
...0
..."
"
"
"
...0
“Cleaned up the code and fixed some of the missing
comments (mostly the auto-generated ones).”
PaintCanvas.cs [ ]
h"ps://online.ide.com0 IDE0 r!
James0Green0000/0000Paint0
EXPLORE OPEN SEARCH BUILD TEST CHANGES CONSOLE
" Paint

 
# bin

 
# obj

 
# Properties
app.config
App.xaml
App.xaml.cs
ColorPanel.xaml
ColorPanel.xaml.cs
EraserPaint.cs
IPaintObjectConstructorList…
LinePaint.cs
PaintCanvas.cs
PaintCanvasCommands.cs
PaintObject.cs
PaintObjectConstructor.cs
PencilPaint.cs
RectPaint.cs
Window1.xaml
Window1.xaml.cs
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"
&
&
129"
130"
131"
132"
133"
134"
135"
136"
137"
138"
139"
140"
141"
142"
143"
144"
145"
146"
147"
148"
149"
150"
151"
"
"
"#9050
Latest
update
“Improved readability and consistency.” 
10 hours ago

kathy.farewell@live.com

#9044
“Cleaned up the code and fixed some [...] 
12 hours ago

joe.smith@live.com
#8227
Previous
update
“Added undo method” 0
4 weeks ago 

yourself

Load previous history
"
"""""""""
""""""""}"
"
""""""""public"void"clear()"
""""""""{"
""""""""""""history.Add(new"List<PaintObject>(paintObjects));"
""""""""""""paintObjects.Clear();"
""""""""""""this.Repaint();"
""""""""}"
"
""""""""public"void"undo()"
""""""""{"
""""""""""""int"lastItemIndex"="history.Count"–"1;"
""""""""""""paintObjects"="history.Last<List<PaintObject>>();"
""""""""""""history.RemoveAt(lastItemIndex);"
""""""""""""this.Refresh();""
""""""""}"
""""}"
}"
"""history.RemoveAt(lastItemIndex);"
"""this.Refresh();""
142"
143"
1400
" Paint

 
app.config [ ]
LinePaint.cs [ ]
PaintCanvas.cs [ ]
PaintCanvasCommands.cs [ ]
PencilPaint.cs [ ]
RectPaint.cs [ ]
Window1.xaml.cs [ ]


Latest changes only [7 files]
""""
"""history.RemoveAt(history.Count"k"1);"
"""this.Refresh();""
141"
142"
"""history.RemoveAt(lastItemIndex);"
"""this.Refresh();""
142"
143"
"""history.RemoveAt(history.Count"k"1);"
"""this.Repaint();""
141"
142"
..."
"
"
"
...0
..."
"
"
"
...0
..."
"
"
"
...0
PaintCanvas.cs [ ]
h"ps://online.ide.com0 IDE0 r!
James0Green0000/0000Paint0
EXPLORE OPEN SEARCH BUILD TEST CHANGES CONSOLE
" Paint

 
# bin

 
# obj

 
# Properties
app.config
App.xaml
App.xaml.cs
ColorPanel.xaml
ColorPanel.xaml.cs
EraserPaint.cs
IPaintObjectConstructorList…
LinePaint.cs
PaintCanvas.cs
PaintCanvasCommands.cs
PaintObject.cs
PaintObjectConstructor.cs
PencilPaint.cs
RectPaint.cs
Window1.xaml
Window1.xaml.cs
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"
&
&
"
"""""""""
""""""""}"
"
""""""""public"void"clear()"
""""""""{"
""""""""""""history.Add(new"List<PaintObject>(paintObjects));"
""""""""""""paintObjects.Clear();"
""""""""""""this.Repaint();"
""""""""}"
"
""""""""public"void"undo()"
""""""""{"
""""""""""""int"lastItemIndex"="history.Count"–"1;"
""""""""""""paintObjects"="history.Last<List<PaintObject>>();"
""""""""""""history.RemoveAt(lastItemIndex);"
""""""""""""this.Refresh();""
""""""""}"
""""}"
}"
129"
130"
131"
132"
133"
134"
135"
136"
137"
138"
139"
140"
141"
142"
143"
144"
145"
146"
147"
148"
149"
150"
151"
"
"
"
1400
" Paint

 
app.config [ ]
LinePaint.cs [ ]
PaintCanvas.cs [ ]
PaintCanvasCommands.cs [ ]
PencilPaint.cs [ ]
RectPaint.cs [ ]
Window1.xaml.cs [ ]


Latest changes only [7 files]
#9050
Latest
update
“Improved readability and consistency.” 
10 hours ago

kathy.farewell@live.com

#9044
“Cleaned up the code and fixed some [...] 
12 hours ago

joe.smith@live.com
#8227
Previous
update
“Added undo method” 0
4 weeks ago 

yourself

Load previous history
""""
"""history.RemoveAt(history.Count"k"1);"
"""this.Refresh();""
141"
142"
"""history.RemoveAt(lastItemIndex);"
"""this.Refresh();""
142"
143"
"""history.RemoveAt(history.Count"k"1);"
"""this.Repaint();""
141"
142"
..."
"
"
"
...0
..."
"
"
"
...0
..."
"
"
"
...0
"""history.RemoveAt(lastItemIndex);"
"""this.Refresh();""
142"
143"
PaintCanvas.cs [ ]
h"ps://online.ide.com0 IDE0 r!
James0Green0000/0000Paint0
EXPLORE OPEN SEARCH BUILD TEST CHANGES CONSOLE
" Paint

 
# bin

 
# obj

 
# Properties
app.config
App.xaml
App.xaml.cs
ColorPanel.xaml
ColorPanel.xaml.cs
EraserPaint.cs
IPaintObjectConstructorList…
LinePaint.cs
PaintCanvas.cs
PaintCanvasCommands.cs
PaintObject.cs
PaintObjectConstructor.cs
PencilPaint.cs
RectPaint.cs
Window1.xaml
Window1.xaml.cs
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"
&
&
"
"""""""""
""""""""}"
"
""""""""public"void"clear()"
""""""""{"
""""""""""""history.Add(new"List<PaintObject>(paintObjects));"
""""""""""""paintObjects.Clear();"
""""""""""""this.Repaint();"
""""""""}"
"
""""""""public"void"undo()"
""""""""{"
""""""""""""int"lastItemIndex"="history.Count"–"1;"
""""""""""""paintObjects"="history.Last<List<PaintObject>>();"
""""""""""""history.RemoveAt(lastItemIndex);"
""""""""""""this.Refresh();""
""""""""}"
""""}"
}"
129"
130"
131"
132"
133"
134"
135"
136"
137"
138"
139"
140"
141"
142"
143"
144"
145"
146"
147"
148"
149"
150"
151"
"
"
"
142"
143"
1400
paint
" Paint

 
app.config [ ]
LinePaint.cs [ ]
PaintCanvas.cs [ ]
PaintCanvasCommands.cs [ ]
PencilPaint.cs [ ]
RectPaint.cs [ ]
Window1.xaml.cs [ ]


Latest changes only [7 files]
#9050
Latest
update
“Improved readability and consistency.” 
10 hours ago

kathy.farewell@live.com

#9044
“Cleaned up the code and fixed some [...] 
12 hours ago

joe.smith@live.com
#8227
Previous
update
“Added undo method” 0
4 weeks ago 

yourself

Load previous history
""""
"""history.RemoveAt(history.Count"k"1);"
"""this.Refresh();""
141"
142"
"""history.RemoveAt(lastItemIndex);"
"""this.Refresh();""
142"
143"
"""history.RemoveAt(history.Count"k"1);"
"""this.Repaint();""
141"
142"
..."
"
"
"
...0
..."
"
"
"
...0
..."
"
"
"
...0
PaintCanvas.cs [ ]
h"ps://online.ide.com0 IDE0 r!
James0Green0000/0000Paint0
EXPLORE OPEN SEARCH BUILD TEST CHANGES CONSOLE
" Paint

 
# bin

 
# obj

 
# Properties
app.config
App.xaml
App.xaml.cs
ColorPanel.xaml
ColorPanel.xaml.cs
EraserPaint.cs
IPaintObjectConstructorList…
LinePaint.cs
PaintCanvas.cs
PaintCanvasCommands.cs
PaintObject.cs
PaintObjectConstructor.cs
PencilPaint.cs
RectPaint.cs
Window1.xaml
Window1.xaml.cs
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"
&
&
"
"""""""""
""""""""}"
"
""""""""public"void"clear()"
""""""""{"
""""""""""""history.Add(new"List<PaintObject>(paintObjects));"
""""""""""""paintObjects.Clear();"
""""""""""""this.Repaint();"
""""""""}"
"
""""""""public"void"undo()"
""""""""{"
""""""""""""int"lastItemIndex"="history.Count"–"1;"
""""""""""""paintObjects"="history.Last<List<PaintObject>>();"
""""""""""""history.RemoveAt(lastItemIndex);"
""""""""""""this.Repaint();""
""""""""}"
""""}"
}"
129"
130"
131"
132"
133"
134"
135"
136"
137"
138"
139"
140"
141"
142"
143"
144"
145"
146"
147"
148"
149"
150"
151"
"
"
"
1400
" Paint

 
app.config [ ]
LinePaint.cs [ ]
PaintCanvas.cs [ ]
PaintCanvasCommands.cs [ ]
PencilPaint.cs [ ]
RectPaint.cs [ ]
Window1.xaml.cs [ ]


Latest changes only [7 files]
Local
2 seconds ago

yourself

#9050
Latest
update
“Improved readability and consistency.” 
10 hours ago

kathy.farewell@live.com

#9044
“Cleaned up the code and fixed some [...] 
12 hours ago

joe.smith@live.com
#8227
Previous
update
“Added undo method” 0
4 weeks ago 

yourself

""""
"""history.RemoveAt(history.Count"–"1);"
"""this.Refresh();""
141"
142"
"""history.RemoveAt(lastItemIndex);"
"""this.Refresh();""
142"
143"
"""history.RemoveAt(history.Count"k"1);"
"""this.Repaint();""
141"
142"
..."
"
"
"
...0
..."
"
"
"
...0
..."
"
"
"
...0
"""history.RemoveAt(lastItemIndex);"
"""this.Repaint();""
142"
143"
..."
"
"
"
...0
"""history.RemoveAt(lastItemIndex);"
"""""""this.Repaint();""
142"
143"
PaintCanvas.cs [ ]
h"ps://online.ide.com0 IDE0 r!
James0Green0000/0000Paint0
EXPLORE OPEN SEARCH BUILD TEST CHANGES CONSOLE
" Paint

 
# bin

 
# obj

 
# Properties
app.config
App.xaml
App.xaml.cs
ColorPanel.xaml
ColorPanel.xaml.cs
EraserPaint.cs
IPaintObjectConstructorList…
LinePaint.cs
PaintCanvas.cs
PaintCanvasCommands.cs
PaintObject.cs
PaintObjectConstructor.cs
PencilPaint.cs
RectPaint.cs
Window1.xaml
Window1.xaml.cs
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"
&
&
"
"""""""""
""""""""}"
"
""""""""public"void"clear()"
""""""""{"
""""""""""""history.Add(new"List<PaintObject>(paintObjects));"
""""""""""""paintObjects.Clear();"
""""""""""""this.Repaint();"
""""""""}"
"
""""""""public"void"undo()"
""""""""{"
""""""""""""int"lastItemIndex"="history.Count"–"1;"
""""""""""""paintObjects"="history.Last<List<PaintObject>>();"
""""""""""""history.RemoveAt(lastItemIndex);"
""""""""""""this.Repaint();""
""""""""}"
""""}"
}"
129"
130"
131"
132"
133"
134"
135"
136"
137"
138"
139"
140"
141"
142"
143"
144"
145"
146"
147"
148"
149"
150"
151"
"
"
"
1400
" Paint

 
app.config [ ]
LinePaint.cs [ ]
PaintCanvas.cs [ ]
PaintCanvasCommands.cs [ ]
PencilPaint.cs [ ]
RectPaint.cs [ ]
Window1.xaml.cs [ ]


Latest changes only [7 files]
Local
2 seconds ago

yourself

#9050
Latest
update
“Improved readability and consistency.” 
10 hours ago

kathy.farewell@live.com

#9044
“Cleaned up the code and fixed some [...] 
12 hours ago

joe.smith@live.com
#8227
Previous
update
“Added undo method” 0
4 weeks ago 

yourself

""""
"""history.RemoveAt(history.Count"–"1);"
"""this.Refresh();""
141"
142"
"""history.RemoveAt(lastItemIndex);"
"""this.Refresh();""
142"
143"
"""history.RemoveAt(history.Count"k"1);"
"""this.Repaint();""
141"
142"
..."
"
"
"
...0
..."
"
"
"
...0
..."
"
"
"
...0
"""history.RemoveAt(lastItemIndex);"
"""this.Repaint();""
142"
143"
..."
"
"
"
...0
"""history.RemoveAt(lastItemIndex);"
"""""""this.Repaint();""
142"
143"
PaintCanvas.cs [ ]
James runs the code and verifies
that UNDO is now working.
h"ps://online.ide.com0 IDE0 r!
James0Green0000/0000Paint0
EXPLORE OPEN SEARCH BUILD TEST CHANGES CONSOLE
" Paint

 
# bin

 
# obj

 
# Properties
app.config
App.xaml
App.xaml.cs
ColorPanel.xaml
ColorPanel.xaml.cs
EraserPaint.cs
IPaintObjectConstructorList…
LinePaint.cs
PaintCanvas.cs
PaintCanvasCommands.cs
PaintObject.cs
PaintObjectConstructor.cs
PencilPaint.cs
RectPaint.cs
Window1.xaml
Window1.xaml.cs
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"
&
&
"
"""""""""
""""""""}"
"
""""""""public"void"clear()"
""""""""{"
""""""""""""history.Add(new"List<PaintObject>(paintObjects));"
""""""""""""paintObjects.Clear();"
""""""""""""this.Repaint();"
""""""""}"
"
""""""""public"void"undo()"
""""""""{"
""""""""""""int"lastItemIndex"="history.Count"–"1;"
""""""""""""paintObjects"="history.Last<List<PaintObject>>();"
""""""""""""history.RemoveAt(lastItemIndex);"
""""""""""""this.Repaint();""
""""""""}"
""""}"
}"
129"
130"
131"
132"
133"
134"
135"
136"
137"
138"
139"
140"
141"
142"
143"
144"
145"
146"
147"
148"
149"
150"
151"
"
"
"
1400
" Paint

 
app.config [ ]
LinePaint.cs [ ]
PaintCanvas.cs [ ]
PaintCanvasCommands.cs [ ]
PencilPaint.cs [ ]
RectPaint.cs [ ]
Window1.xaml.cs [ ]


Latest changes only [7 files]
Local
2 seconds ago

yourself

#9050
Latest
update
“Improved readability and consistency.” 
10 hours ago

kathy.farewell@live.com

#9044
“Cleaned up the code and fixed some [...] 
12 hours ago

joe.smith@live.com
#8227
Previous
update
“Added undo method” 0
4 weeks ago 

yourself

""""
"""history.RemoveAt(history.Count"–"1);"
"""this.Refresh();""
141"
142"
"""history.RemoveAt(lastItemIndex);"
"""this.Refresh();""
142"
143"
"""history.RemoveAt(history.Count"k"1);"
"""this.Repaint();""
141"
142"
..."
"
"
"
...0
..."
"
"
"
...0
..."
"
"
"
...0
"""history.RemoveAt(lastItemIndex);"
"""this.Repaint();""
142"
143"
..."
"
"
"
...0
"""history.RemoveAt(lastItemIndex);"
"""""""this.Repaint();""
142"
143"
PaintCanvas.cs [ ]
h"ps://online.ide.com0 IDE0 r!
James0Green0000/0000Paint0
EXPLORE OPEN SEARCH BUILD TEST CHANGES CONSOLE
" Paint

 
# bin

 
# obj

 
# Properties
app.config
App.xaml
App.xaml.cs
ColorPanel.xaml
ColorPanel.xaml.cs
EraserPaint.cs
IPaintObjectConstructorList…
LinePaint.cs
PaintCanvas.cs
PaintCanvasCommands.cs
PaintObject.cs
PaintObjectConstructor.cs
PencilPaint.cs
RectPaint.cs
Window1.xaml
Window1.xaml.cs
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"
&
&
*PaintCanvas.cs [1]
"
"""""""""
""""""""}"
"
""""""""public"void"clear()"
""""""""{"
""""""""""""history.Add(new"List<PaintObject>(paintObjects));"
""""""""""""paintObjects.Clear();"
""""""""""""this.Repaint();"
""""""""}"
"
""""""""public"void"undo()"
""""""""{"
""""""""""""int"lastItemIndex"="history.Count"–"1;"
""""""""""""paintObjects"="history.Last<List<PaintObject>>();"
""""""""""""history.RemoveAt(lastItemIndex);"
""""""""""""this.Repaint();""
""""""""}"
""""}"
}"
129"
130"
131"
132"
133"
134"
135"
136"
137"
138"
139"
140"
141"
142"
143"
144"
145"
146"
147"
148"
149"
150"
151"
"
"
"
1400
" Paint

 
app.config [ ]
LinePaint.cs [ ]
PaintCanvas.cs [ ]
PaintCanvasCommands.cs [ ]
PencilPaint.cs [ ]
RectPaint.cs [ ]
Window1.xaml.cs [ ]


Latest changes only [7 files]
Local
2 seconds ago

yourself

#9050
Latest
update
“Improved readability and consistency.” 
10 hours ago

kathy.farewell@live.com

#9044
“Cleaned up the code and fixed some [...] 
12 hours ago

joe.smith@live.com
#8227
Previous
update
“Added undo method” 0
4 weeks ago 

yourself

""""
"""history.RemoveAt(history.Count"–"1);"
"""this.Refresh();""
141"
142"
"""history.RemoveAt(lastItemIndex);"
"""this.Refresh();""
142"
143"
"""history.RemoveAt(history.Count"k"1);"
"""this.Repaint();""
141"
142"
..."
"
"
"
...0
..."
"
"
"
...0
..."
"
"
"
...0
"""history.RemoveAt(lastItemIndex);"
"""this.Repaint();""
142"
143"
..."
"
"
"
...0
"""history.RemoveAt(lastItemIndex);"
"""""""this.Repaint();""
142"
143"
PaintCanvas.cs [ ]
h"ps://online.ide.com0 IDE0 r!
James0Green0000/0000Paint0
EXPLORE OPEN SEARCH BUILD TEST CHANGES CONSOLE
" Paint

 
# bin

 
# obj

 
# Properties
app.config
App.xaml
App.xaml.cs
ColorPanel.xaml
ColorPanel.xaml.cs
EraserPaint.cs
IPaintObjectConstructorList…
LinePaint.cs
PaintCanvas.cs
PaintCanvasCommands.cs
PaintObject.cs
PaintObjectConstructor.cs
PencilPaint.cs
RectPaint.cs
Window1.xaml
Window1.xaml.cs
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"
&
&
*PaintCanvas.cs [1]
"
"""""""""
""""""""}"
"
""""""""public"void"clear()"
""""""""{"
""""""""""""history.Add(new"List<PaintObject>(paintObjects));"
""""""""""""paintObjects.Clear();"
""""""""""""this.Repaint();"
""""""""}"
"
""""""""public"void"undo()"
""""""""{"
""""""""""""int"lastItemIndex"="history.Count"–"1;"
""""""""""""paintObjects"="history.Last<List<PaintObject>>();"
""""""""""""history.RemoveAt(lastItemIndex);"
""""""""""""this.Repaint();""
""""""""}"
""""}"
}"
129"
130"
131"
132"
133"
134"
135"
136"
137"
138"
139"
140"
141"
142"
143"
144"
145"
146"
147"
148"
149"
150"
151"
"
"
"
1400
" Paint

 
app.config [ ]
LinePaint.cs [ ]
PaintCanvas.cs [ ]
PaintCanvasCommands.cs [ ]
PencilPaint.cs [ ]
RectPaint.cs [ ]
Window1.xaml.cs [ ]


Latest changes only [7 files]
Local
2 seconds ago

yourself

#9050
Latest
update
“Improved readability” 
10 hours ago

kathy.farewell@live.com

#9044
“Cleaned up the code…” 
12 hours ago

joe.smith@live.com
#8227
Previous
update
“Added undo method” 0
4 weeks ago 

yourself

""""
"""history.RemoveAt(history.Count"–"1);"
"""this.Refresh();""
141"
142"
"""history.RemoveAt(lastItemIndex);"
"""this.Refresh();""
142"
143"
"""history.RemoveAt(history.Count"k"1);"
"""this.Repaint();""
141"
142"
..."
"
"
"
...0
..."
"
"
"
...0
..."
"
"
"
...0
"""history.RemoveAt(lastItemIndex);"
"""this.Repaint();""
142"
143"
..."
"
"
"
...0
"""history.RemoveAt(lastItemIndex);"
"""""""this.Repaint();""
142"
143"
joe.smith@live.com0
james.green@live.com0
PaintCanvas.cs [ ]
h"ps://online.ide.com0 IDE0 r!
James0Green0000/0000Paint0
EXPLORE OPEN SEARCH BUILD TEST CHANGES CONSOLE
" Paint

 
# bin

 
# obj

 
# Properties
app.config
App.xaml
App.xaml.cs
ColorPanel.xaml
ColorPanel.xaml.cs
EraserPaint.cs
IPaintObjectConstructorList…
LinePaint.cs
PaintCanvas.cs
PaintCanvasCommands.cs
PaintObject.cs
PaintObjectConstructor.cs
PencilPaint.cs
RectPaint.cs
Window1.xaml
Window1.xaml.cs
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"
&
&
*PaintCanvas.cs [1]
"
"""""""""
""""""""}"
"
""""""""public"void"clear()"
""""""""{"
""""""""""""history.Add(new"List<PaintObject>(paintObjects));"
""""""""""""paintObjects.Clear();"
""""""""""""this.Repaint();"
""""""""}"
"
""""""""public"void"undo()"
""""""""{"
""""""""""""int"lastItemIndex"="history.Count"–"1;"
""""""""""""paintObjects"="history.Last<List<PaintObject>>();"
""""""""""""history.RemoveAt(lastItemIndex);"
""""""""""""this.Repaint();""
""""""""}"
""""}"
}"
129"
130"
131"
132"
133"
134"
135"
136"
137"
138"
139"
140"
141"
142"
143"
144"
145"
146"
147"
148"
149"
150"
151"
"
"
"
1400
" Paint

 
app.config [ ]
LinePaint.cs [ ]
PaintCanvas.cs [ ]
PaintCanvasCommands.cs [ ]
PencilPaint.cs [ ]
RectPaint.cs [ ]
Window1.xaml.cs [ ]


Latest changes only [7 files]
Local
2 seconds ago

yourself

#9050
Latest
update
“Improved readability” 
10 hours ago

kathy.farewell@live.com

#9044
“Cleaned up the code…” 
12 hours ago

joe.smith@live.com
#8227
Previous
update
“Added undo method” 0
4 weeks ago 

yourself

""""
"""history.RemoveAt(history.Count"–"1);"
"""this.Refresh();""
141"
142"
"""history.RemoveAt(lastItemIndex);"
"""this.Refresh();""
142"
143"
"""history.RemoveAt(history.Count"k"1);"
"""this.Repaint();""
141"
142"
..."
"
"
"
...0
..."
"
"
"
...0
..."
"
"
"
...0
"""history.RemoveAt(lastItemIndex);"
"""this.Repaint();""
142"
143"
..."
"
"
"
...0
"""history.RemoveAt(lastItemIndex);"
"""""""this.Repaint();""
142"
143"
joe.smith@live.com0
james.green@live.com0
PaintCanvas.cs [ ]
h"ps://online.ide.com0 IDE0 r!
James0Green0000/0000Paint0
EXPLORE OPEN SEARCH BUILD TEST CHANGES CONSOLE
" Paint

 
# bin

 
# obj

 
# Properties
app.config
App.xaml
App.xaml.cs
ColorPanel.xaml
ColorPanel.xaml.cs
EraserPaint.cs
IPaintObjectConstructorList…
LinePaint.cs
PaintCanvas.cs
PaintCanvasCommands.cs
PaintObject.cs
PaintObjectConstructor.cs
PencilPaint.cs
RectPaint.cs
Window1.xaml
Window1.xaml.cs
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"
&
&
"
"""""""""
""""""""}"
"
""""""""public"void"clear()"
""""""""{"
""""""""""""history.Add(new"List<PaintObject>(paintObjects));"
""""""""""""paintObjects.Clear();"
""""""""""""this.Repaint();"
""""""""}"
"
""""""""public"void"undo()"
""""""""{"
""""""""""""int"lastItemIndex"="history.Count"–"1;"
""""""""""""paintObjects"="history.Last<List<PaintObject>>();"
""""""""""""history.RemoveAt(lastItemIndex);"
""""""""""""this.Repaint();""
""""""""}"
""""}"
}"
129"
130"
131"
132"
133"
134"
135"
136"
137"
138"
139"
140"
141"
142"
143"
144"
145"
146"
147"
148"
149"
150"
151"
"
"
"
1400
*PaintCanvas.cs [1]
" Paint

 
app.config [ ]
LinePaint.cs [ ]
PaintCanvas.cs [ ]
PaintCanvasCommands.cs [ ]
PencilPaint.cs [ ]
RectPaint.cs [ ]
Window1.xaml.cs [ ]


Latest changes only [7 files]
Local
2 seconds ago

yourself

#9050
Latest
update
“Improved readability and consistency.” 
10 hours ago

kathy.farewell@live.com

#9044
“Cleaned up the code and fixed some [...] 
12 hours ago

joe.smith@live.com
#8227
Previous
update
“Added undo method” 0
4 weeks ago 

yourself

""""
"""history.RemoveAt(history.Count"–"1);"
"""this.Refresh();""
141"
142"
"""history.RemoveAt(lastItemIndex);"
"""this.Refresh();""
142"
143"
"""history.RemoveAt(history.Count"k"1);"
"""this.Repaint();""
141"
142"
..."
"
"
"
...0
..."
"
"
"
...0
..."
"
"
"
...0
"""history.RemoveAt(lastItemIndex);"
"""this.Repaint();""
142"
143"
..."
"
"
"
...0
"""history.RemoveAt(lastItemIndex);"
"""""""this.Repaint();""
142"
143"
PaintCanvas.cs [ ]
h"ps://online.ide.com0 IDE0 r!
James0Green0000/0000Paint0
EXPLORE OPEN SEARCH BUILD TEST CHANGES CONSOLE
" Paint

 
# bin

 
# obj

 
# Properties
app.config
App.xaml
App.xaml.cs
ColorPanel.xaml
ColorPanel.xaml.cs
EraserPaint.cs
IPaintObjectConstructorList…
LinePaint.cs
PaintCanvas.cs
PaintCanvasCommands.cs
PaintObject.cs
PaintObjectConstructor.cs
PencilPaint.cs
RectPaint.cs
Window1.xaml
Window1.xaml.cs
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"
&
&
" Paint

 
# bin

 
# obj

 
# Properties
app.config [ ]
App.xaml 
App.xaml.cs
ColorPanel.xaml
ColorPanel.xaml.cs
EraserPaint.cs
IPaintObjectConstructorList…
LinePaint.cs [ ]
PaintCanvas.cs [ ]
PaintCanvasCommands.cs [ ]
PaintObject.cs
PaintObjectConstructor.cs
PencilPaint.cs [ ]
RectPaint.cs [ ]
Window1.xaml
Window1.xaml.cs [ ]


Latest changes only [7 files]
"
""""""""public"void"setHoveringObject(PaintObject"hoveringObject)"
""""""""{"
""""""""""""this.hoveringObject"="hoveringObject;"
""""""""""""if"(hoveringObject"!="null)"
""""""""""""{"
""""""""""""""""hoveringRender.Visibility"="Visibility.Visible;"
""""""""""""""""hoveringRender.Width"="hoveringRender.Height"="hoveringObject.getThickness()"+"2;"
""""""""""""""""double"offset"="hoveringObject.getThickness()"/"2"+"1;"
""""""""""""""""hoveringRender.Fill"="new"SolidColorBrush(hoveringObject.getColor());"
""""""""""""""""PaintCanvas.SetLeft(hoveringRender,"hoveringObject.getStartX()"k"offset);"
""""""""""""""""PaintCanvas.SetTop(hoveringRender,"hoveringObject.getStartY()"k"offset);"
""""""""""""""""PaintCanvas.SetZIndex(hoveringRender,"10);"
""""""""""""}"
""""""""""""else"{"hoveringRender.Visibility"="Visibility.Hidden;"}"
""""""""}"
"
""""""""public"void"addPaintObject(PaintObject"newObject)"
""""""""{"
""""""""""""currentlyDrawing"="false;"
""""""""""""history.Add(new"List<PaintObject>(paintObjects));"
""""""""""""paintObjects.Add(newObject);"
""""""""""""this.Repaint();"
""""""""}"
"
""""""""public"void"clear()"
""""""""{"
""""""""""""history.Add(new"List<PaintObject>(paintObjects));"
""""""""""""paintObjects.Clear();"
""""""""""""this.Repaint();"
""""""""}"
"
""""""""public"void"undo()"
""""""""{"
""""""""""""int"lastItemIndex"="history.Count"–"1;"
""""""""""""paintObjects"="history.Last<List<PaintObject>>();"
""""""""""""history.RemoveAt(lastItemIndex);"
""""""""""""this.Repaint();""
""""""""}"
""""}"
}"
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"
"
"
"
1400
PaintCanvas.cs [ ]
142"
143"
What we saw..
h"ps://online.ide.com0 IDE0 r!
James0Green0000/0000Paint0
EXPLORE OPEN SEARCH BUILD TEST CHANGES CONSOLE
" Paint

 
# bin

 
# obj

 
# Properties
app.config
App.xaml
App.xaml.cs
ColorPanel.xaml
ColorPanel.xaml.cs
EraserPaint.cs
IPaintObjectConstructorList…
LinePaint.cs
PaintCanvas.cs
PaintCanvasCommands.cs
PaintObject.cs
PaintObjectConstructor.cs
PencilPaint.cs
RectPaint.cs
Window1.xaml
Window1.xaml.cs
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"
&
&
"
""""""""public"void"setHoveringObject(PaintObject"hoveringObject)"
""""""""{"
""""""""""""this.hoveringObject"="hoveringObject;"
""""""""""""if"(hoveringObject"!="null)"
""""""""""""{"
""""""""""""""""hoveringRender.Visibility"="Visibility.Visible;"
""""""""""""""""hoveringRender.Width"="hoveringRender.Height"="hoveringObject.getThickness()"+"2;"
""""""""""""""""double"offset"="hoveringObject.getThickness()"/"2"+"1;"
""""""""""""""""hoveringRender.Fill"="new"SolidColorBrush(hoveringObject.getColor());"
""""""""""""""""PaintCanvas.SetLeft(hoveringRender,"hoveringObject.getStartX()"k"offset);"
""""""""""""""""PaintCanvas.SetTop(hoveringRender,"hoveringObject.getStartY()"k"offset);"
""""""""""""""""PaintCanvas.SetZIndex(hoveringRender,"10);"
""""""""""""}"
""""""""""""else"{"hoveringRender.Visibility"="Visibility.Hidden;"}"
""""""""}"
"
""""""""public"void"addPaintObject(PaintObject"newObject)"
""""""""{"
""""""""""""currentlyDrawing"="false;"
""""""""""""history.Add(new"List<PaintObject>(paintObjects));"
""""""""""""paintObjects.Add(newObject);"
""""""""""""this.Repaint();"
""""""""}"
"
""""""""public"void"clear()"
""""""""{"
""""""""""""history.Add(new"List<PaintObject>(paintObjects));"
""""""""""""paintObjects.Clear();"
""""""""""""this.Repaint();"
""""""""}"
"
""""""""public"void"undo()"
""""""""{"
""""""""""""int"lastItemIndex"="history.Count"–"1;"
""""""""""""paintObjects"="history.Last<List<PaintObject>>();"
""""""""""""history.RemoveAt(lastItemIndex);"
""""""""""""this.Refresh();""
""""""""}"
""""}"
}"
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"
"
"
"
" Paint

 
app.config [ ]
LinePaint.cs [ ]
PaintCanvas.cs [ ]
PaintCanvasCommands.cs [ ]
PencilPaint.cs [ ]
RectPaint.cs [ ]
Window1.xaml.cs [ ]


Latest changes only [7 files]
Colored blocks help find changed lines of code
1400
142"
143"
PaintCanvas.cs [ ]
h"ps://online.ide.com0 IDE0 r!
James0Green0000/0000Paint0
EXPLORE OPEN SEARCH BUILD TEST CHANGES CONSOLE
" Paint

 
# bin

 
# obj

 
# Properties
app.config
App.xaml
App.xaml.cs
ColorPanel.xaml
ColorPanel.xaml.cs
EraserPaint.cs
IPaintObjectConstructorList…
LinePaint.cs
PaintCanvas.cs
PaintCanvasCommands.cs
PaintObject.cs
PaintObjectConstructor.cs
PencilPaint.cs
RectPaint.cs
Window1.xaml
Window1.xaml.cs
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"
&
&
"
""""""""public"void"setHoveringObject(PaintObject"hoveringObject)"
""""""""{"
""""""""""""this.hoveringObject"="hoveringObject;"
""""""""""""if"(hoveringObject"!="null)"
""""""""""""{"
""""""""""""""""hoveringRender.Visibility"="Visibility.Visible;"
""""""""""""""""hoveringRender.Width"="hoveringRender.Height"="hoveringObject.getThickness()"+"2;"
""""""""""""""""double"offset"="hoveringObject.getThickness()"/"2"+"1;"
""""""""""""""""hoveringRender.Fill"="new"SolidColorBrush(hoveringObject.getColor());"
""""""""""""""""PaintCanvas.SetLeft(hoveringRender,"hoveringObject.getStartX()"k"offset);"
""""""""""""""""PaintCanvas.SetTop(hoveringRender,"hoveringObject.getStartY()"k"offset);"
""""""""""""""""PaintCanvas.SetZIndex(hoveringRender,"10);"
""""""""""""}"
""""""""""""else"{"hoveringRender.Visibility"="Visibility.Hidden;"}"
""""""""}"
"
""""""""public"void"addPaintObject(PaintObject"newObject)"
""""""""{"
""""""""""""currentlyDrawing"="false;"
""""""""""""history.Add(new"List<PaintObject>(paintObjects));"
""""""""""""paintObjects.Add(newObject);"
""""""""""""this.Repaint();"
""""""""}"
"
""""""""public"void"clear()"
""""""""{"
""""""""""""history.Add(new"List<PaintObject>(paintObjects));"
""""""""""""paintObjects.Clear();"
""""""""""""this.Repaint();"
""""""""}"
"
""""""""public"void"undo()"
""""""""{"
""""""""""""int"lastItemIndex"="history.Count"–"1;"
""""""""""""paintObjects"="history.Last<List<PaintObject>>();"
""""""""""""history.RemoveAt(lastItemIndex);"
""""""""""""this.Refresh();""
""""""""}"
""""}"
}"
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"
"
"
"
" Paint

 
app.config [ ]
LinePaint.cs [ ]
PaintCanvas.cs [ ]
PaintCanvasCommands.cs [ ]
PencilPaint.cs [ ]
RectPaint.cs [ ]
Window1.xaml.cs [ ]


Latest changes only [7 files]
Hovering over any colored block reveals the latest changes
1400
"""history.RemoveAt(lastItemIndex);"
"""this.Refresh();""
142"
143"
PaintCanvas.cs [ ]
h"ps://online.ide.com0 IDE0 r!
James0Green0000/0000Paint0
EXPLORE OPEN SEARCH BUILD TEST CHANGES CONSOLE
" Paint

 
# bin

 
# obj

 
# Properties
app.config
App.xaml
App.xaml.cs
ColorPanel.xaml
ColorPanel.xaml.cs
EraserPaint.cs
IPaintObjectConstructorList…
LinePaint.cs
PaintCanvas.cs
PaintCanvasCommands.cs
PaintObject.cs
PaintObjectConstructor.cs
PencilPaint.cs
RectPaint.cs
Window1.xaml
Window1.xaml.cs
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"
&
&
129"
130"
131"
132"
133"
134"
135"
136"
137"
138"
139"
140"
141"
142"
143"
144"
145"
146"
147"
148"
149"
150"
151"
"
"
"
"
"""""""""
""""""""}"
"
""""""""public"void"clear()"
""""""""{"
""""""""""""history.Add(new"List<PaintObject>(paintObjects));"
""""""""""""paintObjects.Clear();"
""""""""""""this.Repaint();"
""""""""}"
"
""""""""public"void"undo()"
""""""""{"
""""""""""""int"lastItemIndex"="history.Count"–"1;"
""""""""""""paintObjects"="history.Last<List<PaintObject>>();"
""""""""""""history.RemoveAt(lastItemIndex);"
""""""""""""this.Refresh();""
""""""""}"
""""}"
}"
"""history.RemoveAt(lastItemIndex);"
"""this.Refresh();""
142"
143"
1400
" Paint

 
app.config [ ]
LinePaint.cs [ ]
PaintCanvas.cs [ ]
PaintCanvasCommands.cs [ ]
PencilPaint.cs [ ]
RectPaint.cs [ ]
Window1.xaml.cs [ ]


Latest changes only [7 files]
Historical details are accessible by clicking on any colored block
#9050
Latest
update
“Improved readability and consistency.” 
10 hours ago

kathy.farewell@live.com

#9044
“Cleaned up the code and fixed some [...] 
12 hours ago

joe.smith@live.com
#8227
Previous
update
“Added undo method” 0
4 weeks ago 

yourself

Load previous history
""""
"""history.RemoveAt(history.Count"k"1);"
"""this.Refresh();""
141"
142"
"""history.RemoveAt(lastItemIndex);"
"""this.Refresh();""
142"
143"
"""history.RemoveAt(history.Count"k"1);"
"""this.Repaint();""
141"
142"
..."
"
"
"
...0
..."
"
"
"
...0
..."
"
"
"
...0
PaintCanvas.cs [ ]
h"ps://online.ide.com0 IDE0 r!
James0Green0000/0000Paint0
EXPLORE OPEN SEARCH BUILD TEST CHANGES CONSOLE
" Paint

 
# bin

 
# obj

 
# Properties
app.config
App.xaml
App.xaml.cs
ColorPanel.xaml
ColorPanel.xaml.cs
EraserPaint.cs
IPaintObjectConstructorList…
LinePaint.cs
PaintCanvas.cs
PaintCanvasCommands.cs
PaintObject.cs
PaintObjectConstructor.cs
PencilPaint.cs
RectPaint.cs
Window1.xaml
Window1.xaml.cs
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"
&
&
"
"""""""""
""""""""}"
"
""""""""public"void"clear()"
""""""""{"
""""""""""""history.Add(new"List<PaintObject>(paintObjects));"
""""""""""""paintObjects.Clear();"
""""""""""""this.Repaint();"
""""""""}"
"
""""""""public"void"undo()"
""""""""{"
""""""""""""int"lastItemIndex"="history.Count"–"1;"
""""""""""""paintObjects"="history.Last<List<PaintObject>>();"
""""""""""""history.RemoveAt(lastItemIndex);"
""""""""""""this.Refresh();""
""""""""}"
""""}"
}"
129"
130"
131"
132"
133"
134"
135"
136"
137"
138"
139"
140"
141"
142"
143"
144"
145"
146"
147"
148"
149"
150"
151"
"
"
"
142"
143"
1400
paint
" Paint

 
app.config [ ]
LinePaint.cs [ ]
PaintCanvas.cs [ ]
PaintCanvasCommands.cs [ ]
PencilPaint.cs [ ]
RectPaint.cs [ ]
Window1.xaml.cs [ ]


Latest changes only [7 files]
Code is editable while seeing the historical details
#9050
Latest
update
“Improved readability and consistency.” 
10 hours ago

kathy.farewell@live.com

#9044
“Cleaned up the code and fixed some [...] 
12 hours ago

joe.smith@live.com
#8227
Previous
update
“Added undo method” 0
4 weeks ago 

yourself

Load previous history
""""
"""history.RemoveAt(history.Count"k"1);"
"""this.Refresh();""
141"
142"
"""history.RemoveAt(lastItemIndex);"
"""this.Refresh();""
142"
143"
"""history.RemoveAt(history.Count"k"1);"
"""this.Repaint();""
141"
142"
..."
"
"
"
...0
..."
"
"
"
...0
..."
"
"
"
...0
PaintCanvas.cs [ ]
h"ps://online.ide.com0 IDE0 r!
James0Green0000/0000Paint0
EXPLORE OPEN SEARCH BUILD TEST CHANGES CONSOLE
" Paint

 
# bin

 
# obj

 
# Properties
app.config
App.xaml
App.xaml.cs
ColorPanel.xaml
ColorPanel.xaml.cs
EraserPaint.cs
IPaintObjectConstructorList…
LinePaint.cs
PaintCanvas.cs
PaintCanvasCommands.cs
PaintObject.cs
PaintObjectConstructor.cs
PencilPaint.cs
RectPaint.cs
Window1.xaml
Window1.xaml.cs
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"
&
&
*PaintCanvas.cs [1]
"
"""""""""
""""""""}"
"
""""""""public"void"clear()"
""""""""{"
""""""""""""history.Add(new"List<PaintObject>(paintObjects));"
""""""""""""paintObjects.Clear();"
""""""""""""this.Repaint();"
""""""""}"
"
""""""""public"void"undo()"
""""""""{"
""""""""""""int"lastItemIndex"="history.Count"–"1;"
""""""""""""paintObjects"="history.Last<List<PaintObject>>();"
""""""""""""history.RemoveAt(lastItemIndex);"
""""""""""""this.Repaint();""
""""""""}"
""""}"
}"
129"
130"
131"
132"
133"
134"
135"
136"
137"
138"
139"
140"
141"
142"
143"
144"
145"
146"
147"
148"
149"
150"
151"
"
"
"
1400
" Paint

 
app.config [ ]
LinePaint.cs [ ]
PaintCanvas.cs [ ]
PaintCanvasCommands.cs [ ]
PencilPaint.cs [ ]
RectPaint.cs [ ]
Window1.xaml.cs [ ]


Latest changes only [7 files]
Local
2 seconds ago

yourself

#9050
Latest
update
“Improved readability” 
10 hours ago

kathy.farewell@live.com

#9044
“Cleaned up the code…” 
12 hours ago

joe.smith@live.com
#8227
Previous
update
“Added undo method” 0
4 weeks ago 

yourself

""""
"""history.RemoveAt(history.Count"–"1);"
"""this.Refresh();""
141"
142"
"""history.RemoveAt(lastItemIndex);"
"""this.Refresh();""
142"
143"
"""history.RemoveAt(history.Count"k"1);"
"""this.Repaint();""
141"
142"
..."
"
"
"
...0
..."
"
"
"
...0
..."
"
"
"
...0
"""history.RemoveAt(lastItemIndex);"
"""this.Repaint();""
142"
143"
..."
"
"
"
...0
joe.smith@live.com0
james.green@live.com0
"""history.RemoveAt(lastItemIndex);"
"""""""this.Repaint();""
142"
143"
Contacting the author of a particular change is easy
joe.smith@live.com0
james.green@live.com0
PaintCanvas.cs [ ]
h"p://online.visualstudio.com4 Visual4Studio4 r!
James4Green4444/4444Paint4
EXPLORE OPEN SEARCH BUILD TEST CHANGES CONSOLE
" Paint

 
# bin

 
# obj

 
# Properties
app.config
App.xaml
App.xaml.cs
ColorPanel.xaml
ColorPanel.xaml.cs
EraserPaint.cs
IPaintObjectConstructorList
…
LinePaint.cs
PaintCanvas.cs
PaintCanvasCommands.cs
PaintObject.cs
PaintObjectConstructor.cs
PencilPaint.cs
RectPaint.cs
Window1.xaml
Window1.xaml.cs
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"
129"
130"
131"
132"
133"
134"
135"
136"
137"
138"
139"
140"
141"
142"
143"
144"
145"
146"
147"
148"
149"
150"
151"
"
"
"#9050
Latest
update
“Improved readability and consistency.” 
10 hours ago

kathy.farewell@live.com

#9044
“Cleaned up the code and fixed some [...] 
12 hours ago

joe.smith@live.com
#8227
Previous
update
“Added undo method” 4
4 weeks ago 

yourself

Load previous history
"
"""""""""
""""""""}"
"
""""""""public"void"clear()"
""""""""{"
""""""""""""history.Add(new"List<PaintObject>(paintObjects));"
""""""""""""paintObjects.Clear();"
""""""""""""this.Repaint();"
""""""""}"
"
""""""""public"void"undo()"
""""""""{"
""""""""""""int"lastItemIndex"="history.Count"–"1;"
""""""""""""paintObjects"="history.Last<List<PaintObject>>();"
""""""""""""history.RemoveAt(lastItemIndex);"
""""""""""""this.Refresh();""
""""""""}"
""""}"
}"
"""history.RemoveAt(lastItemIndex);"
"""this.Refresh();""
142"
143"
1404
PaintCanvas.cs [ ]
""""
"""history.RemoveAt(history.Count"k"1);"
"""this.Refresh();""
141"
142"
"""history.RemoveAt(lastItemIndex);"
"""this.Refresh();""
142"
143"
"""history.RemoveAt(history.Count"k"1);"
"""this.Repaint();""
141"
142"
..."
"
"
"
...4
..."
"
"
"
...4
..."
"
"
"
...4
" Paint

 
app.config [ ]
LinePaint.cs [ ]
PaintCanvas.cs [ ]
PaintCanvasCommands.cs [ ]
PencilPaint.cs [ ]
RectPaint.cs [ ]
Window1.xaml.cs [ ]


PaintCanvas.cs [ ]
Latest changes only [7 files]
Designing and evaluating Bellevue: A screenshot
Supporting Developers’
Coordination in The IDE
Guzzi, Bacchelli, 

Riche, van Deursen

Supporting Developers’ Coordination in The IDE #cscw2015

  • 1.
    Supporting Developers’ Coordination inThe IDE Guzzi, Bacchelli, Riche, van Deursen
  • 2.
  • 3.
    Supporting Developers’ Coordinationin The IDE Investigating how developers experience teamwork and identify problems they face when working in team.
  • 4.
    Investigating how developers experienceteamwork and identify problems they face when working in team. Supporting Developers’ Coordination in The IDE Devising and evaluating an IDE extension to support teamwork.
  • 5.
    Investigating how developers experienceteamwork and identify problems they face when working in team. Exploratory Investigation
  • 6.
    Exploratory Investigation: Methodology brainstorming
 (9experts) interviews (11 professional developers) analysis of transcripts and memos with card sorting themes’ analysis with affinity diagram
  • 7.
    working situation working situation How developers experienceteamwork 1. They spend most the time doing individual work 2. Most of their interaction is to coordinate (e.g., through daily stand-ups) 3. Collaboration happens infrequently and on a need basis (e.g., sprint meetings) 4. Their intention for collaboration is mostly coordination, leading to individual work Exploratory Investigation: Findings individual work coordination collaboration interaction
 level
  • 8.
    Exploratory Investigation: Findings individualwork coordination collaboration interaction
 level information How developers experience teamwork: role of information 1. They spend most the time doing individual work 2. Most of their interaction is to coordinate (e.g., through daily stand-ups) 3. Collaboration happens infrequently and on a need basis (e.g., sprint meetings) 4. Their intention for collaboration is mostly coordination, leading to individual work
  • 9.
    Exploratory Investigation: Findings Threeproblematic scenarios inefficient task assignment simultaneous conflicting changes breaking changes
  • 10.
    Needed information ProblematicCommunicated Visible ✔✔ ✘ ✘ ✔ ✘ ✘ ✘ Exploratory Investigation: Findings Three problematic scenarios: role of information inefficient task assignment simultaneous conflicting changes breaking changes
  • 11.
    Exploratory Investigation: Selectedimplications support for coordination has more potential literature must be tested on current practices receiving internal changes is experienced as painful
  • 12.
    Supporting Developers’ Coordinationin The IDE Devising and evaluating an IDE extension to support teamwork. support for coordination has more potential literature must be tested on current practices receiving internal changes is experienced as painful
  • 13.
    h"p://online.visualstudio.com4 Visual4Studio4 r! James4Green4444/4444Paint4 EXPLOREOPEN SEARCH BUILD TEST CHANGES CONSOLE 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" 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" Pending Outgoing ! Pending Incoming app.config LinePaint.cs PaintCanvas.cs PaintCanvasCommands.cs PencilPaint.cs RectPaint.cs Window1.xaml.cs replaced Window1.xaml.cs edited using"System;" using"System.Collections.Generic;" using"System.Linq;" using"System.Text;" using"System.Windows;" using"System.Windows.Controls;" using"System.Windows.Data;" using"System.Windows.Documents;" using"System.Windows.Input;" using"System.Windows.Media;" using"System.Windows.Media.Imaging;" using"System.Windows.Navigation;" using"System.Windows.Shapes;" " namespace"Paint" {" """///"<summary>" """///"TODO:"Autogenerated"comment" """///"</summary>" """"public"partial"class"Window1":"Window,"IPaintObjectConstructorListener" """"{" """"""""private"PaintObjectConstructor"objectConstructor;" " """"""""public"Window1()" """"""""{" """"""""""""InitializeComponent();" """"""""""""this.Loaded"+="new"RoutedEventHandler(Window1_Loaded);" """"""""}" " """"""""public"void"Window1_Loaded(object"sender,"RoutedEventArgs"e)" """"""""{" """"""""""""objectConstructor"="new"PaintObjectConstructor(this);" """"""""""""objectConstructor.setType("Paint.PencilPaint");" """"""""""""objectConstructor.setColor(ColorSliderPanel.getStartingColor());" """"""""""""objectConstructor.setThickness(5);" " """"""""""""DrawingCanvas.MouseLeave"+="new"MouseEventHandler(objectConstructor.MouseExited);" """"""""""""DrawingCanvas.MouseDown"+="new"MouseButtonEventHandler(objectConstructor.MousePressed);" """"""""""""DrawingCanvas.MouseUp"+="new"MouseButtonEventHandler(objectConstructor.MouseReleased);" """"""""""""DrawingCanvas.MouseMove"+="new"MouseEventHandler(objectConstructor.MouseMoved);" """"""""}" " """"""""private"void"SetPaintColor(object"sender,"ColorChangedEventArgs"e)" """"""""{" """"""""""""objectConstructor.setColor(e.ColorValue);" """"""""}" " using"System;" using"System.Collections.Generic;" using"System.Linq;" using"System.Text;" using"System.Windows;" using"System.Windows.Controls;" using"System.Windows.Data;" using"System.Windows.Documents;" using"System.Windows.Input;" using"System.Windows.Media;" using"System.Windows.Media.Imaging;" using"System.Windows.Navigation;" using"System.Windows.Shapes;" " namespace"Paint" {" """"///"<summary>" """"///"Interaction"logic"for"Window1.xaml" """"///"</summary>" """"public"partial"class"Window1":"Window,"IPaintObjectConstructorListener" """"{" """"""""private"PaintObjectConstructor"objectConstructor;" " """"""""public"Window1()" """"""""{" """"""""""""InitializeComponent();" """"""""""""this.Loaded"+="new"RoutedEventHandler(Window1_Loaded);" """"""""}" " """"""""public"void"Window1_Loaded(object"sender,"RoutedEventArgs"e)" """"""""{" """"""""""""objectConstructor"="new"PaintObjectConstructor(this);" """"""""""""objectConstructor.setType("Paint.PencilPaint");" """"""""""""objectConstructor.setColor(ColorSliderPanel.getStartingColor(" """"""""""""objectConstructor.setThickness(5);" " """"""""""""DrawingCanvas.MouseLeave"+="new"MouseEventHandler(objectConstr" """"""""""""DrawingCanvas.MouseDown"+="new"MouseButtonEventHandler(objectC" """"""""""""DrawingCanvas.MouseUp"+="new"MouseButtonEventHandler(objectCon" """"""""""""DrawingCanvas.MouseMove"+="new"MouseEventHandler(objectConstru" """"""""}" " """"""""private"void"SetPaintColor(object"sender,"ColorChangedEventArgs"e)" """"""""{" """"""""""""objectConstructor.setColor(e.ColorValue);" """"""""}" " 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"Window1.xaml.cs,0#latest! Window1.xaml.cs,0#current0 edited edited edited edited added edited Current IDEs’ support for receiving changes
  • 14.
    Current IDEs’ supportfor receiving changes h"p://online.visualstudio.com4 Visual4Studio4 r! James4Green4444/4444Paint4 EXPLORE OPEN SEARCH BUILD TEST CHANGES CONSOLE 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" 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" Pending Outgoing ! Pending Incoming app.config LinePaint.cs PaintCanvas.cs PaintCanvasCommands.cs PencilPaint.cs RectPaint.cs Window1.xaml.cs replaced Window1.xaml.cs edited using"System;" using"System.Collections.Generic;" using"System.Linq;" using"System.Text;" using"System.Windows;" using"System.Windows.Controls;" using"System.Windows.Data;" using"System.Windows.Documents;" using"System.Windows.Input;" using"System.Windows.Media;" using"System.Windows.Media.Imaging;" using"System.Windows.Navigation;" using"System.Windows.Shapes;" " namespace"Paint" {" """///"<summary>" """///"TODO:"Autogenerated"comment" """///"</summary>" """"public"partial"class"Window1":"Window,"IPaintObjectConstructorListener" """"{" """"""""private"PaintObjectConstructor"objectConstructor;" " """"""""public"Window1()" """"""""{" """"""""""""InitializeComponent();" """"""""""""this.Loaded"+="new"RoutedEventHandler(Window1_Loaded);" """"""""}" " """"""""public"void"Window1_Loaded(object"sender,"RoutedEventArgs"e)" """"""""{" """"""""""""objectConstructor"="new"PaintObjectConstructor(this);" """"""""""""objectConstructor.setType("Paint.PencilPaint");" """"""""""""objectConstructor.setColor(ColorSliderPanel.getStartingColor());" """"""""""""objectConstructor.setThickness(5);" " """"""""""""DrawingCanvas.MouseLeave"+="new"MouseEventHandler(objectConstructor.MouseExited);" """"""""""""DrawingCanvas.MouseDown"+="new"MouseButtonEventHandler(objectConstructor.MousePressed);" """"""""""""DrawingCanvas.MouseUp"+="new"MouseButtonEventHandler(objectConstructor.MouseReleased);" """"""""""""DrawingCanvas.MouseMove"+="new"MouseEventHandler(objectConstructor.MouseMoved);" """"""""}" " """"""""private"void"SetPaintColor(object"sender,"ColorChangedEventArgs"e)" """"""""{" """"""""""""objectConstructor.setColor(e.ColorValue);" """"""""}" " using"System;" using"System.Collections.Generic;" using"System.Linq;" using"System.Text;" using"System.Windows;" using"System.Windows.Controls;" using"System.Windows.Data;" using"System.Windows.Documents;" using"System.Windows.Input;" using"System.Windows.Media;" using"System.Windows.Media.Imaging;" using"System.Windows.Navigation;" using"System.Windows.Shapes;" " namespace"Paint" {" """"///"<summary>" """"///"Interaction"logic"for"Window1.xaml" """"///"</summary>" """"public"partial"class"Window1":"Window,"IPaintObjectConstructorListener" """"{" """"""""private"PaintObjectConstructor"objectConstructor;" " """"""""public"Window1()" """"""""{" """"""""""""InitializeComponent();" """"""""""""this.Loaded"+="new"RoutedEventHandler(Window1_Loaded);" """"""""}" " """"""""public"void"Window1_Loaded(object"sender,"RoutedEventArgs"e)" """"""""{" """"""""""""objectConstructor"="new"PaintObjectConstructor(this);" """"""""""""objectConstructor.setType("Paint.PencilPaint");" """"""""""""objectConstructor.setColor(ColorSliderPanel.getStartingColor(" """"""""""""objectConstructor.setThickness(5);" " """"""""""""DrawingCanvas.MouseLeave"+="new"MouseEventHandler(objectConstr" """"""""""""DrawingCanvas.MouseDown"+="new"MouseButtonEventHandler(objectC" """"""""""""DrawingCanvas.MouseUp"+="new"MouseButtonEventHandler(objectCon" """"""""""""DrawingCanvas.MouseMove"+="new"MouseEventHandler(objectConstru" """"""""}" " """"""""private"void"SetPaintColor(object"sender,"ColorChangedEventArgs"e)" """"""""{" """"""""""""objectConstructor.setColor(e.ColorValue);" """"""""}" " 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"Window1.xaml.cs,0#latest! Window1.xaml.cs,0#current0 edited edited edited edited added edited Unmet usability heuristics
  • 15.
    Current IDEs’ supportfor receiving changes no support for: - recognition over recall h"p://online.visualstudio.com4 Visual4Studio4 r! James4Green4444/4444Paint4 EXPLORE OPEN SEARCH BUILD TEST CHANGES CONSOLE 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" 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" Pending Outgoing ! Pending Incoming app.config LinePaint.cs PaintCanvas.cs PaintCanvasCommands.cs PencilPaint.cs RectPaint.cs Window1.xaml.cs replaced Window1.xaml.cs edited using"System;" using"System.Collections.Generic;" using"System.Linq;" using"System.Text;" using"System.Windows;" using"System.Windows.Controls;" using"System.Windows.Data;" using"System.Windows.Documents;" using"System.Windows.Input;" using"System.Windows.Media;" using"System.Windows.Media.Imaging;" using"System.Windows.Navigation;" using"System.Windows.Shapes;" " namespace"Paint" {" """///"<summary>" """///"TODO:"Autogenerated"comment" """///"</summary>" """"public"partial"class"Window1":"Window,"IPaintObjectConstructorListener" """"{" """"""""private"PaintObjectConstructor"objectConstructor;" " """"""""public"Window1()" """"""""{" """"""""""""InitializeComponent();" """"""""""""this.Loaded"+="new"RoutedEventHandler(Window1_Loaded);" """"""""}" " """"""""public"void"Window1_Loaded(object"sender,"RoutedEventArgs"e)" """"""""{" """"""""""""objectConstructor"="new"PaintObjectConstructor(this);" """"""""""""objectConstructor.setType("Paint.PencilPaint");" """"""""""""objectConstructor.setColor(ColorSliderPanel.getStartingColor());" """"""""""""objectConstructor.setThickness(5);" " """"""""""""DrawingCanvas.MouseLeave"+="new"MouseEventHandler(objectConstructor.MouseExited);" """"""""""""DrawingCanvas.MouseDown"+="new"MouseButtonEventHandler(objectConstructor.MousePressed);" """"""""""""DrawingCanvas.MouseUp"+="new"MouseButtonEventHandler(objectConstructor.MouseReleased);" """"""""""""DrawingCanvas.MouseMove"+="new"MouseEventHandler(objectConstructor.MouseMoved);" """"""""}" " """"""""private"void"SetPaintColor(object"sender,"ColorChangedEventArgs"e)" """"""""{" """"""""""""objectConstructor.setColor(e.ColorValue);" """"""""}" " using"System;" using"System.Collections.Generic;" using"System.Linq;" using"System.Text;" using"System.Windows;" using"System.Windows.Controls;" using"System.Windows.Data;" using"System.Windows.Documents;" using"System.Windows.Input;" using"System.Windows.Media;" using"System.Windows.Media.Imaging;" using"System.Windows.Navigation;" using"System.Windows.Shapes;" " namespace"Paint" {" """"///"<summary>" """"///"Interaction"logic"for"Window1.xaml" """"///"</summary>" """"public"partial"class"Window1":"Window,"IPaintObjectConstructorListener" """"{" """"""""private"PaintObjectConstructor"objectConstructor;" " """"""""public"Window1()" """"""""{" """"""""""""InitializeComponent();" """"""""""""this.Loaded"+="new"RoutedEventHandler(Window1_Loaded);" """"""""}" " """"""""public"void"Window1_Loaded(object"sender,"RoutedEventArgs"e)" """"""""{" """"""""""""objectConstructor"="new"PaintObjectConstructor(this);" """"""""""""objectConstructor.setType("Paint.PencilPaint");" """"""""""""objectConstructor.setColor(ColorSliderPanel.getStartingColor(" """"""""""""objectConstructor.setThickness(5);" " """"""""""""DrawingCanvas.MouseLeave"+="new"MouseEventHandler(objectConstr" """"""""""""DrawingCanvas.MouseDown"+="new"MouseButtonEventHandler(objectC" """"""""""""DrawingCanvas.MouseUp"+="new"MouseButtonEventHandler(objectCon" """"""""""""DrawingCanvas.MouseMove"+="new"MouseEventHandler(objectConstru" """"""""}" " """"""""private"void"SetPaintColor(object"sender,"ColorChangedEventArgs"e)" """"""""{" """"""""""""objectConstructor.setColor(e.ColorValue);" """"""""}" " 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"Window1.xaml.cs,0#latest! Window1.xaml.cs,0#current0 edited edited edited edited added edited Unmet usability heuristics Recognition over recall “Memory for recognizing things is better than memory for recalling things” —Nielsen 1995
  • 16.
    Current IDEs’ supportfor receiving changes no support for: - recognition over recall - visibility of system status h"p://online.visualstudio.com4 Visual4Studio4 r! James4Green4444/4444Paint4 EXPLORE OPEN SEARCH BUILD TEST CHANGES CONSOLE 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" 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" Pending Outgoing ! Pending Incoming app.config LinePaint.cs PaintCanvas.cs PaintCanvasCommands.cs PencilPaint.cs RectPaint.cs Window1.xaml.cs replaced Window1.xaml.cs edited using"System;" using"System.Collections.Generic;" using"System.Linq;" using"System.Text;" using"System.Windows;" using"System.Windows.Controls;" using"System.Windows.Data;" using"System.Windows.Documents;" using"System.Windows.Input;" using"System.Windows.Media;" using"System.Windows.Media.Imaging;" using"System.Windows.Navigation;" using"System.Windows.Shapes;" " namespace"Paint" {" """///"<summary>" """///"TODO:"Autogenerated"comment" """///"</summary>" """"public"partial"class"Window1":"Window,"IPaintObjectConstructorListener" """"{" """"""""private"PaintObjectConstructor"objectConstructor;" " """"""""public"Window1()" """"""""{" """"""""""""InitializeComponent();" """"""""""""this.Loaded"+="new"RoutedEventHandler(Window1_Loaded);" """"""""}" " """"""""public"void"Window1_Loaded(object"sender,"RoutedEventArgs"e)" """"""""{" """"""""""""objectConstructor"="new"PaintObjectConstructor(this);" """"""""""""objectConstructor.setType("Paint.PencilPaint");" """"""""""""objectConstructor.setColor(ColorSliderPanel.getStartingColor());" """"""""""""objectConstructor.setThickness(5);" " """"""""""""DrawingCanvas.MouseLeave"+="new"MouseEventHandler(objectConstructor.MouseExited);" """"""""""""DrawingCanvas.MouseDown"+="new"MouseButtonEventHandler(objectConstructor.MousePressed);" """"""""""""DrawingCanvas.MouseUp"+="new"MouseButtonEventHandler(objectConstructor.MouseReleased);" """"""""""""DrawingCanvas.MouseMove"+="new"MouseEventHandler(objectConstructor.MouseMoved);" """"""""}" " """"""""private"void"SetPaintColor(object"sender,"ColorChangedEventArgs"e)" """"""""{" """"""""""""objectConstructor.setColor(e.ColorValue);" """"""""}" " using"System;" using"System.Collections.Generic;" using"System.Linq;" using"System.Text;" using"System.Windows;" using"System.Windows.Controls;" using"System.Windows.Data;" using"System.Windows.Documents;" using"System.Windows.Input;" using"System.Windows.Media;" using"System.Windows.Media.Imaging;" using"System.Windows.Navigation;" using"System.Windows.Shapes;" " namespace"Paint" {" """"///"<summary>" """"///"Interaction"logic"for"Window1.xaml" """"///"</summary>" """"public"partial"class"Window1":"Window,"IPaintObjectConstructorListener" """"{" """"""""private"PaintObjectConstructor"objectConstructor;" " """"""""public"Window1()" """"""""{" """"""""""""InitializeComponent();" """"""""""""this.Loaded"+="new"RoutedEventHandler(Window1_Loaded);" """"""""}" " """"""""public"void"Window1_Loaded(object"sender,"RoutedEventArgs"e)" """"""""{" """"""""""""objectConstructor"="new"PaintObjectConstructor(this);" """"""""""""objectConstructor.setType("Paint.PencilPaint");" """"""""""""objectConstructor.setColor(ColorSliderPanel.getStartingColor(" """"""""""""objectConstructor.setThickness(5);" " """"""""""""DrawingCanvas.MouseLeave"+="new"MouseEventHandler(objectConstr" """"""""""""DrawingCanvas.MouseDown"+="new"MouseButtonEventHandler(objectC" """"""""""""DrawingCanvas.MouseUp"+="new"MouseButtonEventHandler(objectCon" """"""""""""DrawingCanvas.MouseMove"+="new"MouseEventHandler(objectConstru" """"""""}" " """"""""private"void"SetPaintColor(object"sender,"ColorChangedEventArgs"e)" """"""""{" """"""""""""objectConstructor.setColor(e.ColorValue);" """"""""}" " 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"Window1.xaml.cs,0#latest! Window1.xaml.cs,0#current0 edited edited edited edited added edited Unmet usability heuristics Visibility of system status “The system should always keep users informed about what is going on” —Nielsen 1995
  • 17.
    Current IDEs’ supportfor receiving changes no support for: - recognition over recall - visibility of system status - clearly marked exits h"p://online.visualstudio.com4 Visual4Studio4 r! James4Green4444/4444Paint4 EXPLORE OPEN SEARCH BUILD TEST CHANGES CONSOLE 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" 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" Pending Outgoing ! Pending Incoming app.config LinePaint.cs PaintCanvas.cs PaintCanvasCommands.cs PencilPaint.cs RectPaint.cs Window1.xaml.cs replaced Window1.xaml.cs edited using"System;" using"System.Collections.Generic;" using"System.Linq;" using"System.Text;" using"System.Windows;" using"System.Windows.Controls;" using"System.Windows.Data;" using"System.Windows.Documents;" using"System.Windows.Input;" using"System.Windows.Media;" using"System.Windows.Media.Imaging;" using"System.Windows.Navigation;" using"System.Windows.Shapes;" " namespace"Paint" {" """///"<summary>" """///"TODO:"Autogenerated"comment" """///"</summary>" """"public"partial"class"Window1":"Window,"IPaintObjectConstructorListener" """"{" """"""""private"PaintObjectConstructor"objectConstructor;" " """"""""public"Window1()" """"""""{" """"""""""""InitializeComponent();" """"""""""""this.Loaded"+="new"RoutedEventHandler(Window1_Loaded);" """"""""}" " """"""""public"void"Window1_Loaded(object"sender,"RoutedEventArgs"e)" """"""""{" """"""""""""objectConstructor"="new"PaintObjectConstructor(this);" """"""""""""objectConstructor.setType("Paint.PencilPaint");" """"""""""""objectConstructor.setColor(ColorSliderPanel.getStartingColor());" """"""""""""objectConstructor.setThickness(5);" " """"""""""""DrawingCanvas.MouseLeave"+="new"MouseEventHandler(objectConstructor.MouseExited);" """"""""""""DrawingCanvas.MouseDown"+="new"MouseButtonEventHandler(objectConstructor.MousePressed);" """"""""""""DrawingCanvas.MouseUp"+="new"MouseButtonEventHandler(objectConstructor.MouseReleased);" """"""""""""DrawingCanvas.MouseMove"+="new"MouseEventHandler(objectConstructor.MouseMoved);" """"""""}" " """"""""private"void"SetPaintColor(object"sender,"ColorChangedEventArgs"e)" """"""""{" """"""""""""objectConstructor.setColor(e.ColorValue);" """"""""}" " using"System;" using"System.Collections.Generic;" using"System.Linq;" using"System.Text;" using"System.Windows;" using"System.Windows.Controls;" using"System.Windows.Data;" using"System.Windows.Documents;" using"System.Windows.Input;" using"System.Windows.Media;" using"System.Windows.Media.Imaging;" using"System.Windows.Navigation;" using"System.Windows.Shapes;" " namespace"Paint" {" """"///"<summary>" """"///"Interaction"logic"for"Window1.xaml" """"///"</summary>" """"public"partial"class"Window1":"Window,"IPaintObjectConstructorListener" """"{" """"""""private"PaintObjectConstructor"objectConstructor;" " """"""""public"Window1()" """"""""{" """"""""""""InitializeComponent();" """"""""""""this.Loaded"+="new"RoutedEventHandler(Window1_Loaded);" """"""""}" " """"""""public"void"Window1_Loaded(object"sender,"RoutedEventArgs"e)" """"""""{" """"""""""""objectConstructor"="new"PaintObjectConstructor(this);" """"""""""""objectConstructor.setType("Paint.PencilPaint");" """"""""""""objectConstructor.setColor(ColorSliderPanel.getStartingColor(" """"""""""""objectConstructor.setThickness(5);" " """"""""""""DrawingCanvas.MouseLeave"+="new"MouseEventHandler(objectConstr" """"""""""""DrawingCanvas.MouseDown"+="new"MouseButtonEventHandler(objectC" """"""""""""DrawingCanvas.MouseUp"+="new"MouseButtonEventHandler(objectCon" """"""""""""DrawingCanvas.MouseMove"+="new"MouseEventHandler(objectConstru" """"""""}" " """"""""private"void"SetPaintColor(object"sender,"ColorChangedEventArgs"e)" """"""""{" """"""""""""objectConstructor.setColor(e.ColorValue);" """"""""}" " 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"Window1.xaml.cs,0#latest! Window1.xaml.cs,0#current0 edited edited edited edited added edited Unmet usability heuristics Clearly marked exits “A system should never capture users in situations that have no visible escape” — Molich & Nielsen 1990
  • 18.
    Current IDEs’ supportfor receiving changes no support for: - recognition over recall - visibility of system status - clearly marked exits - help and documentation h"p://online.visualstudio.com4 Visual4Studio4 r! James4Green4444/4444Paint4 EXPLORE OPEN SEARCH BUILD TEST CHANGES CONSOLE 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" 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" Pending Outgoing ! Pending Incoming app.config LinePaint.cs PaintCanvas.cs PaintCanvasCommands.cs PencilPaint.cs RectPaint.cs Window1.xaml.cs replaced Window1.xaml.cs edited using"System;" using"System.Collections.Generic;" using"System.Linq;" using"System.Text;" using"System.Windows;" using"System.Windows.Controls;" using"System.Windows.Data;" using"System.Windows.Documents;" using"System.Windows.Input;" using"System.Windows.Media;" using"System.Windows.Media.Imaging;" using"System.Windows.Navigation;" using"System.Windows.Shapes;" " namespace"Paint" {" """///"<summary>" """///"TODO:"Autogenerated"comment" """///"</summary>" """"public"partial"class"Window1":"Window,"IPaintObjectConstructorListener" """"{" """"""""private"PaintObjectConstructor"objectConstructor;" " """"""""public"Window1()" """"""""{" """"""""""""InitializeComponent();" """"""""""""this.Loaded"+="new"RoutedEventHandler(Window1_Loaded);" """"""""}" " """"""""public"void"Window1_Loaded(object"sender,"RoutedEventArgs"e)" """"""""{" """"""""""""objectConstructor"="new"PaintObjectConstructor(this);" """"""""""""objectConstructor.setType("Paint.PencilPaint");" """"""""""""objectConstructor.setColor(ColorSliderPanel.getStartingColor());" """"""""""""objectConstructor.setThickness(5);" " """"""""""""DrawingCanvas.MouseLeave"+="new"MouseEventHandler(objectConstructor.MouseExited);" """"""""""""DrawingCanvas.MouseDown"+="new"MouseButtonEventHandler(objectConstructor.MousePressed);" """"""""""""DrawingCanvas.MouseUp"+="new"MouseButtonEventHandler(objectConstructor.MouseReleased);" """"""""""""DrawingCanvas.MouseMove"+="new"MouseEventHandler(objectConstructor.MouseMoved);" """"""""}" " """"""""private"void"SetPaintColor(object"sender,"ColorChangedEventArgs"e)" """"""""{" """"""""""""objectConstructor.setColor(e.ColorValue);" """"""""}" " using"System;" using"System.Collections.Generic;" using"System.Linq;" using"System.Text;" using"System.Windows;" using"System.Windows.Controls;" using"System.Windows.Data;" using"System.Windows.Documents;" using"System.Windows.Input;" using"System.Windows.Media;" using"System.Windows.Media.Imaging;" using"System.Windows.Navigation;" using"System.Windows.Shapes;" " namespace"Paint" {" """"///"<summary>" """"///"Interaction"logic"for"Window1.xaml" """"///"</summary>" """"public"partial"class"Window1":"Window,"IPaintObjectConstructorListener" """"{" """"""""private"PaintObjectConstructor"objectConstructor;" " """"""""public"Window1()" """"""""{" """"""""""""InitializeComponent();" """"""""""""this.Loaded"+="new"RoutedEventHandler(Window1_Loaded);" """"""""}" " """"""""public"void"Window1_Loaded(object"sender,"RoutedEventArgs"e)" """"""""{" """"""""""""objectConstructor"="new"PaintObjectConstructor(this);" """"""""""""objectConstructor.setType("Paint.PencilPaint");" """"""""""""objectConstructor.setColor(ColorSliderPanel.getStartingColor(" """"""""""""objectConstructor.setThickness(5);" " """"""""""""DrawingCanvas.MouseLeave"+="new"MouseEventHandler(objectConstr" """"""""""""DrawingCanvas.MouseDown"+="new"MouseButtonEventHandler(objectC" """"""""""""DrawingCanvas.MouseUp"+="new"MouseButtonEventHandler(objectCon" """"""""""""DrawingCanvas.MouseMove"+="new"MouseEventHandler(objectConstru" """"""""}" " """"""""private"void"SetPaintColor(object"sender,"ColorChangedEventArgs"e)" """"""""{" """"""""""""objectConstructor.setColor(e.ColorValue);" """"""""}" " 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"Window1.xaml.cs,0#latest! Window1.xaml.cs,0#current0 edited edited edited edited added edited Unmet usability heuristics Help and documentation “[Documentation should] be easy to search, focused on the user’s task, list concrete steps to be carried out, and not be too large” — Nielsen 1995
  • 19.
    Current IDEs’ supportfor receiving changes no support for: - recognition over recall - visibility of system status - clearly marked exits - help and documentation - help recognize, diagnose, and recover h"p://online.visualstudio.com4 Visual4Studio4 r! James4Green4444/4444Paint4 EXPLORE OPEN SEARCH BUILD TEST CHANGES CONSOLE 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" 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" Pending Outgoing ! Pending Incoming app.config LinePaint.cs PaintCanvas.cs PaintCanvasCommands.cs PencilPaint.cs RectPaint.cs Window1.xaml.cs replaced Window1.xaml.cs edited using"System;" using"System.Collections.Generic;" using"System.Linq;" using"System.Text;" using"System.Windows;" using"System.Windows.Controls;" using"System.Windows.Data;" using"System.Windows.Documents;" using"System.Windows.Input;" using"System.Windows.Media;" using"System.Windows.Media.Imaging;" using"System.Windows.Navigation;" using"System.Windows.Shapes;" " namespace"Paint" {" """///"<summary>" """///"TODO:"Autogenerated"comment" """///"</summary>" """"public"partial"class"Window1":"Window,"IPaintObjectConstructorListener" """"{" """"""""private"PaintObjectConstructor"objectConstructor;" " """"""""public"Window1()" """"""""{" """"""""""""InitializeComponent();" """"""""""""this.Loaded"+="new"RoutedEventHandler(Window1_Loaded);" """"""""}" " """"""""public"void"Window1_Loaded(object"sender,"RoutedEventArgs"e)" """"""""{" """"""""""""objectConstructor"="new"PaintObjectConstructor(this);" """"""""""""objectConstructor.setType("Paint.PencilPaint");" """"""""""""objectConstructor.setColor(ColorSliderPanel.getStartingColor());" """"""""""""objectConstructor.setThickness(5);" " """"""""""""DrawingCanvas.MouseLeave"+="new"MouseEventHandler(objectConstructor.MouseExited);" """"""""""""DrawingCanvas.MouseDown"+="new"MouseButtonEventHandler(objectConstructor.MousePressed);" """"""""""""DrawingCanvas.MouseUp"+="new"MouseButtonEventHandler(objectConstructor.MouseReleased);" """"""""""""DrawingCanvas.MouseMove"+="new"MouseEventHandler(objectConstructor.MouseMoved);" """"""""}" " """"""""private"void"SetPaintColor(object"sender,"ColorChangedEventArgs"e)" """"""""{" """"""""""""objectConstructor.setColor(e.ColorValue);" """"""""}" " using"System;" using"System.Collections.Generic;" using"System.Linq;" using"System.Text;" using"System.Windows;" using"System.Windows.Controls;" using"System.Windows.Data;" using"System.Windows.Documents;" using"System.Windows.Input;" using"System.Windows.Media;" using"System.Windows.Media.Imaging;" using"System.Windows.Navigation;" using"System.Windows.Shapes;" " namespace"Paint" {" """"///"<summary>" """"///"Interaction"logic"for"Window1.xaml" """"///"</summary>" """"public"partial"class"Window1":"Window,"IPaintObjectConstructorListener" """"{" """"""""private"PaintObjectConstructor"objectConstructor;" " """"""""public"Window1()" """"""""{" """"""""""""InitializeComponent();" """"""""""""this.Loaded"+="new"RoutedEventHandler(Window1_Loaded);" """"""""}" " """"""""public"void"Window1_Loaded(object"sender,"RoutedEventArgs"e)" """"""""{" """"""""""""objectConstructor"="new"PaintObjectConstructor(this);" """"""""""""objectConstructor.setType("Paint.PencilPaint");" """"""""""""objectConstructor.setColor(ColorSliderPanel.getStartingColor(" """"""""""""objectConstructor.setThickness(5);" " """"""""""""DrawingCanvas.MouseLeave"+="new"MouseEventHandler(objectConstr" """"""""""""DrawingCanvas.MouseDown"+="new"MouseButtonEventHandler(objectC" """"""""""""DrawingCanvas.MouseUp"+="new"MouseButtonEventHandler(objectCon" """"""""""""DrawingCanvas.MouseMove"+="new"MouseEventHandler(objectConstru" """"""""}" " """"""""private"void"SetPaintColor(object"sender,"ColorChangedEventArgs"e)" """"""""{" """"""""""""objectConstructor.setColor(e.ColorValue);" """"""""}" " 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"Window1.xaml.cs,0#latest! Window1.xaml.cs,0#current0 edited edited edited edited added edited Unmet usability heuristics Help users recognize, diagnose, and recover from errors — Nielsen 1995
  • 20.
    Current IDEs’ supportfor receiving changes no support for: - recognition over recall - visibility of system status - clearly marked exits - help and documentation - help recognize, diagnose, and recover h"p://online.visualstudio.com4 Visual4Studio4 r! James4Green4444/4444Paint4 EXPLORE OPEN SEARCH BUILD TEST CHANGES CONSOLE 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" 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" Pending Outgoing ! Pending Incoming app.config LinePaint.cs PaintCanvas.cs PaintCanvasCommands.cs PencilPaint.cs RectPaint.cs Window1.xaml.cs replaced Window1.xaml.cs edited using"System;" using"System.Collections.Generic;" using"System.Linq;" using"System.Text;" using"System.Windows;" using"System.Windows.Controls;" using"System.Windows.Data;" using"System.Windows.Documents;" using"System.Windows.Input;" using"System.Windows.Media;" using"System.Windows.Media.Imaging;" using"System.Windows.Navigation;" using"System.Windows.Shapes;" " namespace"Paint" {" """///"<summary>" """///"TODO:"Autogenerated"comment" """///"</summary>" """"public"partial"class"Window1":"Window,"IPaintObjectConstructorListener" """"{" """"""""private"PaintObjectConstructor"objectConstructor;" " """"""""public"Window1()" """"""""{" """"""""""""InitializeComponent();" """"""""""""this.Loaded"+="new"RoutedEventHandler(Window1_Loaded);" """"""""}" " """"""""public"void"Window1_Loaded(object"sender,"RoutedEventArgs"e)" """"""""{" """"""""""""objectConstructor"="new"PaintObjectConstructor(this);" """"""""""""objectConstructor.setType("Paint.PencilPaint");" """"""""""""objectConstructor.setColor(ColorSliderPanel.getStartingColor());" """"""""""""objectConstructor.setThickness(5);" " """"""""""""DrawingCanvas.MouseLeave"+="new"MouseEventHandler(objectConstructor.MouseExited);" """"""""""""DrawingCanvas.MouseDown"+="new"MouseButtonEventHandler(objectConstructor.MousePressed);" """"""""""""DrawingCanvas.MouseUp"+="new"MouseButtonEventHandler(objectConstructor.MouseReleased);" """"""""""""DrawingCanvas.MouseMove"+="new"MouseEventHandler(objectConstructor.MouseMoved);" """"""""}" " """"""""private"void"SetPaintColor(object"sender,"ColorChangedEventArgs"e)" """"""""{" """"""""""""objectConstructor.setColor(e.ColorValue);" """"""""}" " using"System;" using"System.Collections.Generic;" using"System.Linq;" using"System.Text;" using"System.Windows;" using"System.Windows.Controls;" using"System.Windows.Data;" using"System.Windows.Documents;" using"System.Windows.Input;" using"System.Windows.Media;" using"System.Windows.Media.Imaging;" using"System.Windows.Navigation;" using"System.Windows.Shapes;" " namespace"Paint" {" """"///"<summary>" """"///"Interaction"logic"for"Window1.xaml" """"///"</summary>" """"public"partial"class"Window1":"Window,"IPaintObjectConstructorListener" """"{" """"""""private"PaintObjectConstructor"objectConstructor;" " """"""""public"Window1()" """"""""{" """"""""""""InitializeComponent();" """"""""""""this.Loaded"+="new"RoutedEventHandler(Window1_Loaded);" """"""""}" " """"""""public"void"Window1_Loaded(object"sender,"RoutedEventArgs"e)" """"""""{" """"""""""""objectConstructor"="new"PaintObjectConstructor(this);" """"""""""""objectConstructor.setType("Paint.PencilPaint");" """"""""""""objectConstructor.setColor(ColorSliderPanel.getStartingColor(" """"""""""""objectConstructor.setThickness(5);" " """"""""""""DrawingCanvas.MouseLeave"+="new"MouseEventHandler(objectConstr" """"""""""""DrawingCanvas.MouseDown"+="new"MouseButtonEventHandler(objectC" """"""""""""DrawingCanvas.MouseUp"+="new"MouseButtonEventHandler(objectCon" """"""""""""DrawingCanvas.MouseMove"+="new"MouseEventHandler(objectConstru" """"""""}" " """"""""private"void"SetPaintColor(object"sender,"ColorChangedEventArgs"e)" """"""""{" """"""""""""objectConstructor.setColor(e.ColorValue);" """"""""}" " 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"Window1.xaml.cs,0#latest! Window1.xaml.cs,0#current0 edited edited edited edited added edited Design requirements: - recognition over recall - visibility of system status - clearly marked exits - help and documentation - help recognize, diagnose, and recover
  • 21.
    Designing and evaluatingBellevue: Methodology RITE
 (9 participants) feedback’s analysis h"p://online.visualstudio.com4 Visual4Studio4 r! James4Green4444/4444Paint4 EXPLORE OPEN SEARCH BUILD TEST CHANGES CONSOLE " Paint # bin # obj # Properties app.config App.xaml App.xaml.cs ColorPanel.xaml ColorPanel.xaml.cs EraserPaint.cs IPaintObjectConstructorList … LinePaint.cs PaintCanvas.cs PaintCanvasCommands.cs PaintObject.cs PaintObjectConstructor.cs PencilPaint.cs RectPaint.cs Window1.xaml Window1.xaml.cs 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" 129" 130" 131" 132" 133" 134" 135" 136" 137" 138" 139" 140" 141" 142" 143" 144" 145" 146" 147" 148" 149" 150" 151" " " "#9050 Latest update “Improved readability and consistency.” 10 hours ago kathy.farewell@live.com #9044 “Cleaned up the code and fixed some [...] 12 hours ago joe.smith@live.com #8227 Previous update “Added undo method” 4 4 weeks ago yourself Load previous history " """"""""" """"""""}" " """"""""public"void"clear()" """"""""{" """"""""""""history.Add(new"List<PaintObject>(paintObjects));" """"""""""""paintObjects.Clear();" """"""""""""this.Repaint();" """"""""}" " """"""""public"void"undo()" """"""""{" """"""""""""int"lastItemIndex"="history.Count"–"1;" """"""""""""paintObjects"="history.Last<List<PaintObject>>();" """"""""""""history.RemoveAt(lastItemIndex);" """"""""""""this.Refresh();"" """"""""}" """"}" }" """history.RemoveAt(lastItemIndex);" """this.Refresh();"" 142" 143" 1404 PaintCanvas.cs [ ] """" """history.RemoveAt(history.Count"k"1);" """this.Refresh();"" 141" 142" """history.RemoveAt(lastItemIndex);" """this.Refresh();"" 142" 143" """history.RemoveAt(history.Count"k"1);" """this.Repaint();"" 141" 142" ..." " " " ...4 ..." " " " ...4 ..." " " " ...4 " Paint app.config [ ] LinePaint.cs [ ] PaintCanvas.cs [ ] PaintCanvasCommands.cs [ ] PencilPaint.cs [ ] RectPaint.cs [ ] Window1.xaml.cs [ ] PaintCanvas.cs [ ] Latest changes only [7 files] h"p://online.visualstudio.com4 Visual4Studio4 r! James4Green4444/4444Paint4 EXPLORE OPEN SEARCH BUILD TEST CHANGES CONSOLE " Paint # bin # obj # Properties app.config App.xaml App.xaml.cs ColorPanel.xaml ColorPanel.xaml.cs EraserPaint.cs IPaintObjectConstructorList … LinePaint.cs PaintCanvas.cs PaintCanvasCommands.cs PaintObject.cs PaintObjectConstructor.cs PencilPaint.cs RectPaint.cs Window1.xaml Window1.xaml.cs 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" 129" 130" 131" 132" 133" 134" 135" 136" 137" 138" 139" 140" 141" 142" 143" 144" 145" 146" 147" 148" 149" 150" 151" " " "#9050 Latest update “Improved readability and consistency.” 10 hours ago kathy.farewell@live.com #9044 “Cleaned up the code and fixed some [...] 12 hours ago joe.smith@live.com #8227 Previous update “Added undo method” 4 4 weeks ago yourself Load previous history " """"""""" """"""""}" " """"""""public"void"clear()" """"""""{" """"""""""""history.Add(new"List<PaintObject>(paintObjects));" """"""""""""paintObjects.Clear();" """"""""""""this.Repaint();" """"""""}" " """"""""public"void"undo()" """"""""{" """"""""""""int"lastItemIndex"="history.Count"–"1;" """"""""""""paintObjects"="history.Last<List<PaintObject>>();" """"""""""""history.RemoveAt(lastItemIndex);" """"""""""""this.Refresh();"" """"""""}" """"}" }" """history.RemoveAt(lastItemIndex);" """this.Refresh();"" 142" 143" 1404 PaintCanvas.cs [ ] """" """history.RemoveAt(history.Count"k"1);" """this.Refresh();"" 141" 142" """history.RemoveAt(lastItemIndex);" """this.Refresh();"" 142" 143" """history.RemoveAt(history.Count"k"1);" """this.Repaint();"" 141" 142" ..." " " " ...4 ..." " " " ...4 ..." " " " ...4 " Paint app.config [ ] LinePaint.cs [ ] PaintCanvas.cs [ ] PaintCanvasCommands.cs [ ] PencilPaint.cs [ ] RectPaint.cs [ ] Window1.xaml.cs [ ] PaintCanvas.cs [ ] Latest changes only [7 files] h"p://online.visualstudio.com4 Visual4Studio4 r! James4Green4444/4444Paint4 EXPLORE OPEN SEARCH BUILD TEST CHANGES CONSOLE " Paint # bin # obj # Properties app.config App.xaml App.xaml.cs ColorPanel.xaml ColorPanel.xaml.cs EraserPaint.cs IPaintObjectConstructorList … LinePaint.cs PaintCanvas.cs PaintCanvasCommands.cs PaintObject.cs PaintObjectConstructor.cs PencilPaint.cs RectPaint.cs Window1.xaml Window1.xaml.cs 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" 129" 130" 131" 132" 133" 134" 135" 136" 137" 138" 139" 140" 141" 142" 143" 144" 145" 146" 147" 148" 149" 150" 151" " " "#9050 Latest update “Improved readability and consistency.” 10 hours ago kathy.farewell@live.com #9044 “Cleaned up the code and fixed some [...] 12 hours ago joe.smith@live.com #8227 Previous update “Added undo method” 4 4 weeks ago yourself Load previous history " """"""""" """"""""}" " """"""""public"void"clear()" """"""""{" """"""""""""history.Add(new"List<PaintObject>(paintObjects));" """"""""""""paintObjects.Clear();" """"""""""""this.Repaint();" """"""""}" " """"""""public"void"undo()" """"""""{" """"""""""""int"lastItemIndex"="history.Count"–"1;" """"""""""""paintObjects"="history.Last<List<PaintObject>>();" """"""""""""history.RemoveAt(lastItemIndex);" """"""""""""this.Refresh();"" """"""""}" """"}" }" """history.RemoveAt(lastItemIndex);" """this.Refresh();"" 142" 143" 1404 PaintCanvas.cs [ ] """" """history.RemoveAt(history.Count"k"1);" """this.Refresh();"" 141" 142" """history.RemoveAt(lastItemIndex);" """this.Refresh();"" 142" 143" """history.RemoveAt(history.Count"k"1);" """this.Repaint();"" 141" 142" ..." " " " ...4 ..." " " " ...4 ..." " " " ...4 " Paint app.config [ ] LinePaint.cs [ ] PaintCanvas.cs [ ] PaintCanvasCommands.cs [ ] PencilPaint.cs [ ] RectPaint.cs [ ] Window1.xaml.cs [ ] PaintCanvas.cs [ ] Latest changes only [7 files] Bellevue prototype as slide deck early feedback
 (several UX experts) h"p://online.visualstudio.com4 Visual4Studio4 r! James4Green4444/4444Paint4 EXPLORE OPEN SEARCH BUILD TEST CHANGES CONSOLE " Paint # bin # obj # Properties app.config App.xaml App.xaml.cs ColorPanel.xaml ColorPanel.xaml.cs EraserPaint.cs IPaintObjectConstructorList … LinePaint.cs PaintCanvas.cs PaintCanvasCommands.cs PaintObject.cs PaintObjectConstructor.cs PencilPaint.cs RectPaint.cs Window1.xaml Window1.xaml.cs 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" 129" 130" 131" 132" 133" 134" 135" 136" 137" 138" 139" 140" 141" 142" 143" 144" 145" 146" 147" 148" 149" 150" 151" " " "#9050 Latest update “Improved readability and consistency.” 10 hours ago kathy.farewell@live.com #9044 “Cleaned up the code and fixed some [...] 12 hours ago joe.smith@live.com #8227 Previous update “Added undo method” 4 4 weeks ago yourself Load previous history " """"""""" """"""""}" " """"""""public"void"clear()" """"""""{" """"""""""""history.Add(new"List<PaintObject>(paintObjects));" """"""""""""paintObjects.Clear();" """"""""""""this.Repaint();" """"""""}" " """"""""public"void"undo()" """"""""{" """"""""""""int"lastItemIndex"="history.Count"–"1;" """"""""""""paintObjects"="history.Last<List<PaintObject>>();" """"""""""""history.RemoveAt(lastItemIndex);" """"""""""""this.Refresh();"" """"""""}" """"}" }" """history.RemoveAt(lastItemIndex);" """this.Refresh();"" 142" 143" 1404 PaintCanvas.cs [ ] """" """history.RemoveAt(history.Count"k"1);" """this.Refresh();"" 141" 142" """history.RemoveAt(lastItemIndex);" """this.Refresh();"" 142" 143" """history.RemoveAt(history.Count"k"1);" """this.Repaint();"" 141" 142" ..." " " " ...4 ..." " " " ...4 ..." " " " ...4 " Paint app.config [ ] LinePaint.cs [ ] PaintCanvas.cs [ ] PaintCanvasCommands.cs [ ] PencilPaint.cs [ ] RectPaint.cs [ ] Window1.xaml.cs [ ] PaintCanvas.cs [ ] Latest changes only [7 files] h"p://online.visualstudio.com4 Visual4Studio4 r! James4Green4444/4444Paint4 EXPLORE OPEN SEARCH BUILD TEST CHANGES CONSOLE " Paint # bin # obj # Properties app.config App.xaml App.xaml.cs ColorPanel.xaml ColorPanel.xaml.cs EraserPaint.cs IPaintObjectConstructorList … LinePaint.cs PaintCanvas.cs PaintCanvasCommands.cs PaintObject.cs PaintObjectConstructor.cs PencilPaint.cs RectPaint.cs Window1.xaml Window1.xaml.cs 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" 129" 130" 131" 132" 133" 134" 135" 136" 137" 138" 139" 140" 141" 142" 143" 144" 145" 146" 147" 148" 149" 150" 151" " " "#9050 Latest update “Improved readability and consistency.” 10 hours ago kathy.farewell@live.com #9044 “Cleaned up the code and fixed some [...] 12 hours ago joe.smith@live.com #8227 Previous update “Added undo method” 4 4 weeks ago yourself Load previous history " """"""""" """"""""}" " """"""""public"void"clear()" """"""""{" """"""""""""history.Add(new"List<PaintObject>(paintObjects));" """"""""""""paintObjects.Clear();" """"""""""""this.Repaint();" """"""""}" " """"""""public"void"undo()" """"""""{" """"""""""""int"lastItemIndex"="history.Count"–"1;" """"""""""""paintObjects"="history.Last<List<PaintObject>>();" """"""""""""history.RemoveAt(lastItemIndex);" """"""""""""this.Refresh();"" """"""""}" """"}" }" """history.RemoveAt(lastItemIndex);" """this.Refresh();"" 142" 143" 1404 PaintCanvas.cs [ ] """" """history.RemoveAt(history.Count"k"1);" """this.Refresh();"" 141" 142" """history.RemoveAt(lastItemIndex);" """this.Refresh();"" 142" 143" """history.RemoveAt(history.Count"k"1);" """this.Repaint();"" 141" 142" ..." " " " ...4 ..." " " " ...4 ..." " " " ...4 " Paint app.config [ ] LinePaint.cs [ ] PaintCanvas.cs [ ] PaintCanvasCommands.cs [ ] PencilPaint.cs [ ] RectPaint.cs [ ] Window1.xaml.cs [ ] PaintCanvas.cs [ ] Latest changes only [7 files] h"p://online.visualstudio.com4 Visual4Studio4 r! James4Green4444/4444Paint4 EXPLORE OPEN SEARCH BUILD TEST CHANGES CONSOLE " Paint # bin # obj # Properties app.config App.xaml App.xaml.cs ColorPanel.xaml ColorPanel.xaml.cs EraserPaint.cs IPaintObjectConstructorList … LinePaint.cs PaintCanvas.cs PaintCanvasCommands.cs PaintObject.cs PaintObjectConstructor.cs PencilPaint.cs RectPaint.cs Window1.xaml Window1.xaml.cs 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" 129" 130" 131" 132" 133" 134" 135" 136" 137" 138" 139" 140" 141" 142" 143" 144" 145" 146" 147" 148" 149" 150" 151" " " "#9050 Latest update “Improved readability and consistency.” 10 hours ago kathy.farewell@live.com #9044 “Cleaned up the code and fixed some [...] 12 hours ago joe.smith@live.com #8227 Previous update “Added undo method” 4 4 weeks ago yourself Load previous history " """"""""" """"""""}" " """"""""public"void"clear()" """"""""{" """"""""""""history.Add(new"List<PaintObject>(paintObjects));" """"""""""""paintObjects.Clear();" """"""""""""this.Repaint();" """"""""}" " """"""""public"void"undo()" """"""""{" """"""""""""int"lastItemIndex"="history.Count"–"1;" """"""""""""paintObjects"="history.Last<List<PaintObject>>();" """"""""""""history.RemoveAt(lastItemIndex);" """"""""""""this.Refresh();"" """"""""}" """"}" }" """history.RemoveAt(lastItemIndex);" """this.Refresh();"" 142" 143" 1404 PaintCanvas.cs [ ] """" """history.RemoveAt(history.Count"k"1);" """this.Refresh();"" 141" 142" """history.RemoveAt(lastItemIndex);" """this.Refresh();"" 142" 143" """history.RemoveAt(history.Count"k"1);" """this.Repaint();"" 141" 142" ..." " " " ...4 ..." " " " ...4 ..." " " " ...4 " Paint app.config [ ] LinePaint.cs [ ] PaintCanvas.cs [ ] PaintCanvasCommands.cs [ ] PencilPaint.cs [ ] RectPaint.cs [ ] Window1.xaml.cs [ ] PaintCanvas.cs [ ] Latest changes only [7 files] FINAL Bellevue design h"p://online.visualstudio.com4 Visual4Studio4 r! James4Green4444/4444Paint4 EXPLORE OPEN SEARCH BUILD TEST CHANGES CONSOLE " Paint # bin # obj # Properties app.config App.xaml App.xaml.cs ColorPanel.xaml ColorPanel.xaml.cs EraserPaint.cs IPaintObjectConstructorList … LinePaint.cs PaintCanvas.cs PaintCanvasCommands.cs PaintObject.cs PaintObjectConstructor.cs PencilPaint.cs RectPaint.cs Window1.xaml Window1.xaml.cs 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" 129" 130" 131" 132" 133" 134" 135" 136" 137" 138" 139" 140" 141" 142" 143" 144" 145" 146" 147" 148" 149" 150" 151" " " "#9050 Latest update “Improved readability and consistency.” 10 hours ago kathy.farewell@live.com #9044 “Cleaned up the code and fixed some [...] 12 hours ago joe.smith@live.com #8227 Previous update “Added undo method” 4 4 weeks ago yourself Load previous history " """"""""" """"""""}" " """"""""public"void"clear()" """"""""{" """"""""""""history.Add(new"List<PaintObject>(paintObjects));" """"""""""""paintObjects.Clear();" """"""""""""this.Repaint();" """"""""}" " """"""""public"void"undo()" """"""""{" """"""""""""int"lastItemIndex"="history.Count"–"1;" """"""""""""paintObjects"="history.Last<List<PaintObject>>();" """"""""""""history.RemoveAt(lastItemIndex);" """"""""""""this.Refresh();"" """"""""}" """"}" }" """history.RemoveAt(lastItemIndex);" """this.Refresh();"" 142" 143" 1404 PaintCanvas.cs [ ] """" """history.RemoveAt(history.Count"k"1);" """this.Refresh();"" 141" 142" """history.RemoveAt(lastItemIndex);" """this.Refresh();"" 142" 143" """history.RemoveAt(history.Count"k"1);" """this.Repaint();"" 141" 142" ..." " " " ...4 ..." " " " ...4 ..." " " " ...4 " Paint app.config [ ] LinePaint.cs [ ] PaintCanvas.cs [ ] PaintCanvasCommands.cs [ ] PencilPaint.cs [ ] RectPaint.cs [ ] Window1.xaml.cs [ ] PaintCanvas.cs [ ] Latest changes only [7 files] h"p://online.visualstudio.com4 Visual4Studio4 r! James4Green4444/4444Paint4 EXPLORE OPEN SEARCH BUILD TEST CHANGES CONSOLE " Paint # bin # obj # Properties app.config App.xaml App.xaml.cs ColorPanel.xaml ColorPanel.xaml.cs EraserPaint.cs IPaintObjectConstructorList … LinePaint.cs PaintCanvas.cs PaintCanvasCommands.cs PaintObject.cs PaintObjectConstructor.cs PencilPaint.cs RectPaint.cs Window1.xaml Window1.xaml.cs 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" 129" 130" 131" 132" 133" 134" 135" 136" 137" 138" 139" 140" 141" 142" 143" 144" 145" 146" 147" 148" 149" 150" 151" " " "#9050 Latest update “Improved readability and consistency.” 10 hours ago kathy.farewell@live.com #9044 “Cleaned up the code and fixed some [...] 12 hours ago joe.smith@live.com #8227 Previous update “Added undo method” 4 4 weeks ago yourself Load previous history " """"""""" """"""""}" " """"""""public"void"clear()" """"""""{" """"""""""""history.Add(new"List<PaintObject>(paintObjects));" """"""""""""paintObjects.Clear();" """"""""""""this.Repaint();" """"""""}" " """"""""public"void"undo()" """"""""{" """"""""""""int"lastItemIndex"="history.Count"–"1;" """"""""""""paintObjects"="history.Last<List<PaintObject>>();" """"""""""""history.RemoveAt(lastItemIndex);" """"""""""""this.Refresh();"" """"""""}" """"}" }" """history.RemoveAt(lastItemIndex);" """this.Refresh();"" 142" 143" 1404 PaintCanvas.cs [ ] """" """history.RemoveAt(history.Count"k"1);" """this.Refresh();"" 141" 142" """history.RemoveAt(lastItemIndex);" """this.Refresh();"" 142" 143" """history.RemoveAt(history.Count"k"1);" """this.Repaint();"" 141" 142" ..." " " " ...4 ..." " " " ...4 ..." " " " ...4 " Paint app.config [ ] LinePaint.cs [ ] PaintCanvas.cs [ ] PaintCanvasCommands.cs [ ] PencilPaint.cs [ ] RectPaint.cs [ ] Window1.xaml.cs [ ] PaintCanvas.cs [ ] Latest changes only [7 files] h"p://online.visualstudio.com4 Visual4Studio4 r! James4Green4444/4444Paint4 EXPLORE OPEN SEARCH BUILD TEST CHANGES CONSOLE " Paint # bin # obj # Properties app.config App.xaml App.xaml.cs ColorPanel.xaml ColorPanel.xaml.cs EraserPaint.cs IPaintObjectConstructorList … LinePaint.cs PaintCanvas.cs PaintCanvasCommands.cs PaintObject.cs PaintObjectConstructor.cs PencilPaint.cs RectPaint.cs Window1.xaml Window1.xaml.cs 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" 129" 130" 131" 132" 133" 134" 135" 136" 137" 138" 139" 140" 141" 142" 143" 144" 145" 146" 147" 148" 149" 150" 151" " " "#9050 Latest update “Improved readability and consistency.” 10 hours ago kathy.farewell@live.com #9044 “Cleaned up the code and fixed some [...] 12 hours ago joe.smith@live.com #8227 Previous update “Added undo method” 4 4 weeks ago yourself Load previous history " """"""""" """"""""}" " """"""""public"void"clear()" """"""""{" """"""""""""history.Add(new"List<PaintObject>(paintObjects));" """"""""""""paintObjects.Clear();" """"""""""""this.Repaint();" """"""""}" " """"""""public"void"undo()" """"""""{" """"""""""""int"lastItemIndex"="history.Count"–"1;" """"""""""""paintObjects"="history.Last<List<PaintObject>>();" """"""""""""history.RemoveAt(lastItemIndex);" """"""""""""this.Refresh();"" """"""""}" """"}" }" """history.RemoveAt(lastItemIndex);" """this.Refresh();"" 142" 143" 1404 PaintCanvas.cs [ ] """" """history.RemoveAt(history.Count"k"1);" """this.Refresh();"" 141" 142" """history.RemoveAt(lastItemIndex);" """this.Refresh();"" 142" 143" """history.RemoveAt(history.Count"k"1);" """this.Repaint();"" 141" 142" ..." " " " ...4 ..." " " " ...4 ..." " " " ...4 " Paint app.config [ ] LinePaint.cs [ ] PaintCanvas.cs [ ] PaintCanvasCommands.cs [ ] PencilPaint.cs [ ] RectPaint.cs [ ] Window1.xaml.cs [ ] PaintCanvas.cs [ ] Latest changes only [7 files] Bellevue initial idea as slide deck
  • 22.
    Let’s see thewalkthrough
  • 23.
    The story… Jamesworks on the Paint project with other 4 people. It’s morning and James has just got to work. James starts the day by updating his codebase to the latest version.
  • 24.
    h"ps://online.ide.com0 IDE0 r! James0Green0000/0000Paint0 EXPLOREOPEN SEARCH BUILD TEST CHANGES CONSOLE 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" 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" & & Pending Outgoing ! Pending Incoming app.config LinePaint.cs PaintCanvas.cs PaintCanvasCommands.cs PencilPaint.cs RectPaint.cs Window1.xaml.cs edited edited edited edited added edited edited
  • 25.
    h"ps://online.ide.com0 IDE0 r! James0Green0000/0000Paint0 EXPLOREOPEN SEARCH BUILD TEST CHANGES CONSOLE 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" 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" & & Pending Outgoing ! Pending Incoming app.config LinePaint.cs PaintCanvas.cs PaintCanvasCommands.cs PencilPaint.cs RectPaint.cs Window1.xaml.cs replaced Window1.xaml.cs edited using"System;" using"System.Collections.Generic;" using"System.Linq;" using"System.Text;" using"System.Windows;" using"System.Windows.Controls;" using"System.Windows.Data;" using"System.Windows.Documents;" using"System.Windows.Input;" using"System.Windows.Media;" using"System.Windows.Media.Imaging;" using"System.Windows.Navigation;" using"System.Windows.Shapes;" " namespace"Paint" {" """///"<summary>" """///"TODO:"Autogenerated"comment" """///"</summary>" """"public"partial"class"Window1":"Window,"IPaintObjectConstructorListener" """"{" """"""""private"PaintObjectConstructor"objectConstructor;" " """"""""public"Window1()" """"""""{" """"""""""""InitializeComponent();" """"""""""""this.Loaded"+="new"RoutedEventHandler(Window1_Loaded);" """"""""}" " """"""""public"void"Window1_Loaded(object"sender,"RoutedEventArgs"e)" """"""""{" """"""""""""objectConstructor"="new"PaintObjectConstructor(this);" """"""""""""objectConstructor.setType("Paint.PencilPaint");" """"""""""""objectConstructor.setColor(ColorSliderPanel.getStartingColor());" """"""""""""objectConstructor.setThickness(5);" " """"""""""""DrawingCanvas.MouseLeave"+="new"MouseEventHandler(objectConstructor.MouseExited);" """"""""""""DrawingCanvas.MouseDown"+="new"MouseButtonEventHandler(objectConstructor.MousePressed);" """"""""""""DrawingCanvas.MouseUp"+="new"MouseButtonEventHandler(objectConstructor.MouseReleased);" """"""""""""DrawingCanvas.MouseMove"+="new"MouseEventHandler(objectConstructor.MouseMoved);" """"""""}" " """"""""private"void"SetPaintColor(object"sender,"ColorChangedEventArgs"e)" """"""""{" """"""""""""objectConstructor.setColor(e.ColorValue);" """"""""}" " using"System;" using"System.Collections.Generic;" using"System.Linq;" using"System.Text;" using"System.Windows;" using"System.Windows.Controls;" using"System.Windows.Data;" using"System.Windows.Documents;" using"System.Windows.Input;" using"System.Windows.Media;" using"System.Windows.Media.Imaging;" using"System.Windows.Navigation;" using"System.Windows.Shapes;" " namespace"Paint" {" """"///"<summary>" """"///"Interaction"logic"for"Window1.xaml" """"///"</summary>" """"public"partial"class"Window1":"Window,"IPaintObjectConstructorListener" """"{" """"""""private"PaintObjectConstructor"objectConstructor;" " """"""""public"Window1()" """"""""{" """"""""""""InitializeComponent();" """"""""""""this.Loaded"+="new"RoutedEventHandler(Window1_Loaded);" """"""""}" " """"""""public"void"Window1_Loaded(object"sender,"RoutedEventArgs"e)" """"""""{" """"""""""""objectConstructor"="new"PaintObjectConstructor(this);" """"""""""""objectConstructor.setType("Paint.PencilPaint");" """"""""""""objectConstructor.setColor(ColorSliderPanel.getStartingColor(" """"""""""""objectConstructor.setThickness(5);" " """"""""""""DrawingCanvas.MouseLeave"+="new"MouseEventHandler(objectConstr" """"""""""""DrawingCanvas.MouseDown"+="new"MouseButtonEventHandler(objectC" """"""""""""DrawingCanvas.MouseUp"+="new"MouseButtonEventHandler(objectCon" """"""""""""DrawingCanvas.MouseMove"+="new"MouseEventHandler(objectConstru" """"""""}" " """"""""private"void"SetPaintColor(object"sender,"ColorChangedEventArgs"e)" """"""""{" """"""""""""objectConstructor.setColor(e.ColorValue);" """"""""}" " 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"Window1.xaml.cs,0#latest! Window1.xaml.cs,0#current0 edited edited edited edited added edited
  • 26.
    James accepts allthe changes; his local code gets updated.
  • 27.
    James builds andruns the Paint project. He plays around with the program to test the new version.
  • 28.
    He notices thatthe UNDO function is not working.
  • 29.
    h"ps://online.ide.com0 IDE0 r! James0Green0000/0000Paint0 EXPLOREOPEN SEARCH BUILD TEST CHANGES CONSOLE " Paint # bin # obj # Properties app.config App.xaml App.xaml.cs ColorPanel.xaml ColorPanel.xaml.cs EraserPaint.cs IPaintObjectConstructorList… LinePaint.cs PaintCanvas.cs PaintCanvasCommands.cs PaintObject.cs PaintObjectConstructor.cs PencilPaint.cs RectPaint.cs Window1.xaml Window1.xaml.cs 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" & & " Paint # bin # obj # Properties app.config [ ] App.xaml App.xaml.cs ColorPanel.xaml ColorPanel.xaml.cs EraserPaint.cs IPaintObjectConstructorList… LinePaint.cs [ ] PaintCanvas.cs [ ] PaintCanvasCommands.cs [ ] PaintObject.cs PaintObjectConstructor.cs PencilPaint.cs [ ] RectPaint.cs [ ] Window1.xaml Window1.xaml.cs [ ] Latest changes only [7 files] James immediately notices the files that have changed.
  • 30.
    h"ps://online.ide.com0 IDE0 r! James0Green0000/0000Paint0 EXPLOREOPEN SEARCH BUILD TEST CHANGES CONSOLE " Paint # bin # obj # Properties app.config App.xaml App.xaml.cs ColorPanel.xaml ColorPanel.xaml.cs EraserPaint.cs IPaintObjectConstructorList… LinePaint.cs PaintCanvas.cs PaintCanvasCommands.cs PaintObject.cs PaintObjectConstructor.cs PencilPaint.cs RectPaint.cs Window1.xaml Window1.xaml.cs 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" & & " Paint # bin # obj # Properties app.config [ ] App.xaml App.xaml.cs ColorPanel.xaml ColorPanel.xaml.cs EraserPaint.cs IPaintObjectConstructorList… LinePaint.cs [ ] PaintCanvas.cs [ ] PaintCanvasCommands.cs [ ] PaintObject.cs PaintObjectConstructor.cs PencilPaint.cs [ ] RectPaint.cs [ ] Window1.xaml Window1.xaml.cs [ ] Latest changes only [7 files] Also, he can apply some filtering to just see the latest changes.
  • 31.
    h"ps://online.ide.com0 IDE0 r! James0Green0000/0000Paint0 EXPLOREOPEN SEARCH BUILD TEST CHANGES CONSOLE " Paint # bin # obj # Properties app.config App.xaml App.xaml.cs ColorPanel.xaml ColorPanel.xaml.cs EraserPaint.cs IPaintObjectConstructorList… LinePaint.cs PaintCanvas.cs PaintCanvasCommands.cs PaintObject.cs PaintObjectConstructor.cs PencilPaint.cs RectPaint.cs Window1.xaml Window1.xaml.cs 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" & & " Paint app.config [ ] LinePaint.cs [ ] PaintCanvas.cs [ ] PaintCanvasCommands.cs [ ] PencilPaint.cs [ ] RectPaint.cs [ ] Window1.xaml.cs [ ] Latest changes only [7 files]
  • 32.
    h"ps://online.ide.com0 IDE0 r! James0Green0000/0000Paint0 EXPLOREOPEN SEARCH BUILD TEST CHANGES CONSOLE " Paint # bin # obj # Properties app.config App.xaml App.xaml.cs ColorPanel.xaml ColorPanel.xaml.cs EraserPaint.cs IPaintObjectConstructorList… LinePaint.cs PaintCanvas.cs PaintCanvasCommands.cs PaintObject.cs PaintObjectConstructor.cs PencilPaint.cs RectPaint.cs Window1.xaml Window1.xaml.cs 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" & & " Paint app.config [ ] LinePaint.cs [ ] PaintCanvas.cs [ ] PaintCanvasCommands.cs [ ] PencilPaint.cs [ ] RectPaint.cs [ ] Window1.xaml.cs [ ] Latest changes only [7 files]
  • 33.
    h"ps://online.ide.com0 IDE0 r! James0Green0000/0000Paint0 EXPLOREOPEN SEARCH BUILD TEST CHANGES CONSOLE " Paint # bin # obj # Properties app.config App.xaml App.xaml.cs ColorPanel.xaml ColorPanel.xaml.cs EraserPaint.cs IPaintObjectConstructorList… LinePaint.cs PaintCanvas.cs PaintCanvasCommands.cs PaintObject.cs PaintObjectConstructor.cs PencilPaint.cs RectPaint.cs Window1.xaml Window1.xaml.cs 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" & & " Paint app.config [ ] LinePaint.cs [ ] PaintCanvas.cs [ ] PaintCanvasCommands.cs [ ] PencilPaint.cs [ ] RectPaint.cs [ ] Window1.xaml.cs [ ] PaintCanvasCommands.cs [ ] using"System;" using"System.Collections.Generic;" using"System.Linq;" using"System.Text;" using"System.Windows.Input;" " namespace"Paint" {" " """"public"static"class"PaintCanvasCommands" """"{" """"""""static"PaintCanvasCommands()" """"""""{" """"""""""""ClearCanvas"="new"RoutedUICommand(" """"""""""""""""Clear"Canvas",""ClearCanvas"," """""""""""""""typeof(PaintCanvasCommands));" " """"""""""""UndoCanvas"="new"RoutedUICommand(" """"""""""""""""Undo"my"last"stroke",""UndoCanvas"," """""""""""""""typeof(PaintCanvasCommands));" " """"""""""""ChangeToPencil"="new"RoutedUICommand(" """""""""""""""""Pencil",""ChangeToPencil"," """"""""""""""""typeof(PaintCanvasCommands));" " """"""""""""ChangeToEraser"="new"RoutedUICommand(" """""""""""""""""Eraser",""ChangeToEraser"," """"""""""""""""typeof(PaintCanvasCommands));" " """"""""""""ChangeToLine"="new"RoutedUICommand(" """""""""""""""""Line",""ChangeToLine"," """"""""""""""""typeof(PaintCanvasCommands));" " """"""""""""ChangeToRect"="new"RoutedUICommand(" """""""""""""""""Rect",""ChangeToRect"," """"""""""""""""typeof(PaintCanvasCommands));" """"""""}" " """""""//"getters"and"setters"from"here"on:" """"""""" """"""""public"static"RoutedUICommand"ClearCanvas" """"""""{" """"""""""""get;" """"""""""""set;" """"""""}""""""""" Latest changes only [7 files] 390
  • 34.
    h"ps://online.ide.com0 IDE0 r! James0Green0000/0000Paint0 EXPLOREOPEN SEARCH BUILD TEST CHANGES CONSOLE " Paint # bin # obj # Properties app.config App.xaml App.xaml.cs ColorPanel.xaml ColorPanel.xaml.cs EraserPaint.cs IPaintObjectConstructorList… LinePaint.cs PaintCanvas.cs PaintCanvasCommands.cs PaintObject.cs PaintObjectConstructor.cs PencilPaint.cs RectPaint.cs Window1.xaml Window1.xaml.cs 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" & & " Paint app.config [ ] LinePaint.cs [ ] PaintCanvas.cs [ ] PaintCanvasCommands.cs [ ] PencilPaint.cs [ ] RectPaint.cs [ ] Window1.xaml.cs [ ] using"System;" using"System.Collections.Generic;" using"System.Linq;" using"System.Text;" using"System.Windows.Input;" " namespace"Paint" {" " """"public"static"class"PaintCanvasCommands" """"{" """"""""static"PaintCanvasCommands()" """"""""{" """"""""""""ClearCanvas"="new"RoutedUICommand(" """"""""""""""""Clear"Canvas",""ClearCanvas"," """""""""""""""typeof(PaintCanvasCommands));" " """"""""""""UndoCanvas"="new"RoutedUICommand(" """"""""""""""""Undo"my"last"stroke",""UndoCanvas"," """""""""""""""typeof(PaintCanvasCommands));" " """"""""""""ChangeToPencil"="new"RoutedUICommand(" """""""""""""""""Pencil",""ChangeToPencil"," """"""""""""""""typeof(PaintCanvasCommands));" " """"""""""""ChangeToEraser"="new"RoutedUICommand(" """""""""""""""""Eraser",""ChangeToEraser"," """"""""""""""""typeof(PaintCanvasCommands));" " """"""""""""ChangeToLine"="new"RoutedUICommand(" """""""""""""""""Line",""ChangeToLine"," """"""""""""""""typeof(PaintCanvasCommands));" " """"""""""""ChangeToRect"="new"RoutedUICommand(" """""""""""""""""Rect",""ChangeToRect"," """"""""""""""""typeof(PaintCanvasCommands));" """"""""}" " """""""//"getters"and"setters"from"here"on:" """"""""" """"""""public"static"RoutedUICommand"ClearCanvas" """"""""{" """"""""""""get;" """"""""""""set;" """"""""}""""""""" Latest changes only [7 files] """""""""//"getters"and"setters"from"here"on:"390 PaintCanvasCommands.cs [ ]
  • 35.
    h"ps://online.ide.com0 IDE0 r! James0Green0000/0000Paint0 EXPLOREOPEN SEARCH BUILD TEST CHANGES CONSOLE " Paint # bin # obj # Properties app.config App.xaml App.xaml.cs ColorPanel.xaml ColorPanel.xaml.cs EraserPaint.cs IPaintObjectConstructorList… LinePaint.cs PaintCanvas.cs PaintCanvasCommands.cs PaintObject.cs PaintObjectConstructor.cs PencilPaint.cs RectPaint.cs Window1.xaml Window1.xaml.cs 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" & & using"System;" using"System.Collections.Generic;" using"System.Linq;" using"System.Text;" using"System.Windows.Input;" " namespace"Paint" {" " """"public"static"class"PaintCanvasCommands" """"{" """"""""static"PaintCanvasCommands()" """"""""{" """"""""""""ClearCanvas"="new"RoutedUICommand(" """"""""""""""""Clear"Canvas",""ClearCanvas"," """""""""""""""typeof(PaintCanvasCommands));" " """"""""""""UndoCanvas"="new"RoutedUICommand(" """"""""""""""""Undo"my"last"stroke",""UndoCanvas"," """""""""""""""typeof(PaintCanvasCommands));" " """"""""""""ChangeToPencil"="new"RoutedUICommand(" """""""""""""""""Pencil",""ChangeToPencil"," """"""""""""""""typeof(PaintCanvasCommands));" " """"""""""""ChangeToEraser"="new"RoutedUICommand(" """""""""""""""""Eraser",""ChangeToEraser"," """"""""""""""""typeof(PaintCanvasCommands));" " """"""""""""ChangeToLine"="new"RoutedUICommand(" """""""""""""""""Line",""ChangeToLine"," """"""""""""""""typeof(PaintCanvasCommands));" " """"""""""""ChangeToRect"="new"RoutedUICommand(" """""""""""""""""Rect",""ChangeToRect"," """"""""""""""""typeof(PaintCanvasCommands));" """"""""}" " """""""//"getters"and"setters"from"here"on:" """"""""" """"""""public"static"RoutedUICommand"ClearCanvas" """"""""{" """"""""""""get;" """"""""""""set;" """"""""}""""""""" 390 " Paint app.config [ ] LinePaint.cs [ ] PaintCanvas.cs [ ] PaintCanvasCommands.cs [ ] PencilPaint.cs [ ] RectPaint.cs [ ] Window1.xaml.cs [ ] Latest changes only [7 files] PaintCanvasCommands.cs [ ]
  • 36.
    h"ps://online.ide.com0 IDE0 r! James0Green0000/0000Paint0 EXPLOREOPEN SEARCH BUILD TEST CHANGES CONSOLE " Paint # bin # obj # Properties app.config App.xaml App.xaml.cs ColorPanel.xaml ColorPanel.xaml.cs EraserPaint.cs IPaintObjectConstructorList… LinePaint.cs PaintCanvas.cs PaintCanvasCommands.cs PaintObject.cs PaintObjectConstructor.cs PencilPaint.cs RectPaint.cs Window1.xaml Window1.xaml.cs 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" & & using"System;" using"System.Collections.Generic;" using"System.Linq;" using"System.Text;" using"System.Windows;" using"System.Windows.Media;" using"System.Windows.Shapes;" " namespace"Paint" {" """"public"class"PaintCanvas":"System.Windows.Controls.Canvas" """"{" """"""""private"List<List<PaintObject>>"history;" """"""""private"List<PaintObject>"paintObjects;" " """"""""private"PaintObject"temporaryObject;" """"""""private"PaintObject"hoveringObject;" """"""""private"Rectangle"hoveringRender;" " """"""""private"bool"currentlyDrawing;" " """"""""public"PaintCanvas()":"base()" """"""""{" """"""""""""history"="new"List<List<PaintObject>>();" """"""""""""paintObjects"="new"List<PaintObject>();" " """"""""""""hoveringRender"="new"Rectangle();" """"""""""""hoveringRender.StrokeThickness"="1;" """"""""""""hoveringRender.Stroke"="Brushes.DarkGray;" """"""""""""hoveringRender.Visibility"="Visibility.Hidden;" """"""""""""this.Children.Add(hoveringRender);" " """"""""""""currentlyDrawing"="false;" """"""""}" " """"""""public"void"Repaint()" """"""""{" """"""""""""this.Children.Clear();" """"""""""""foreach"(PaintObject"po"in"paintObjects)" """"""""""""{" """"""""""""""""this.Children.Add(po.getRendering());" """"""""""""}" " """"""""""""this.Children.Add(hoveringRender);" """"""""}" " """"""""" 280 " Paint app.config [ ] LinePaint.cs [ ] PaintCanvas.cs [ ] PaintCanvasCommands.cs [ ] PencilPaint.cs [ ] RectPaint.cs [ ] Window1.xaml.cs [ ] PaintCanvas.cs [ ] Latest changes only [7 files]
  • 37.
    h"ps://online.ide.com0 IDE0 r! James0Green0000/0000Paint0 EXPLOREOPEN SEARCH BUILD TEST CHANGES CONSOLE " Paint # bin # obj # Properties app.config App.xaml App.xaml.cs ColorPanel.xaml ColorPanel.xaml.cs EraserPaint.cs IPaintObjectConstructorList… LinePaint.cs PaintCanvas.cs PaintCanvasCommands.cs PaintObject.cs PaintObjectConstructor.cs PencilPaint.cs RectPaint.cs Window1.xaml Window1.xaml.cs 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" & & using"System;" using"System.Collections.Generic;" using"System.Linq;" using"System.Text;" using"System.Windows;" using"System.Windows.Media;" using"System.Windows.Shapes;" " namespace"Paint" {" """"public"class"PaintCanvas":"System.Windows.Controls.Canvas" """"{" """"""""private"List<List<PaintObject>>"history;" """"""""private"List<PaintObject>"paintObjects;" " """"""""private"PaintObject"temporaryObject;" """"""""private"PaintObject"hoveringObject;" """"""""private"Rectangle"hoveringRender;" " """"""""private"bool"currentlyDrawing;" " """"""""public"PaintCanvas()":"base()" """"""""{" """"""""""""history"="new"List<List<PaintObject>>();" """"""""""""paintObjects"="new"List<PaintObject>();" " """"""""""""hoveringRender"="new"Rectangle();" """"""""""""hoveringRender.StrokeThickness"="1;" """"""""""""hoveringRender.Stroke"="Brushes.DarkGray;" """"""""""""hoveringRender.Visibility"="Visibility.Hidden;" """"""""""""this.Children.Add(hoveringRender);" " """"""""""""currentlyDrawing"="false;" """"""""}" " """"""""public"void"Repaint()" """"""""{" """"""""""""this.Children.Clear();" """"""""""""foreach"(PaintObject"po"in"paintObjects)" """"""""""""{" """"""""""""""""this.Children.Add(po.getRendering());" """"""""""""}" " """"""""""""this.Children.Add(hoveringRender);" """"""""}" " """"""""" " Paint app.config [ ] LinePaint.cs [ ] PaintCanvas.cs [ ] PaintCanvasCommands.cs [ ] PencilPaint.cs [ ] RectPaint.cs [ ] Window1.xaml.cs [ ] Latest changes only [7 files] """hoveringRender.StrokeThickness"="1;"280 PaintCanvas.cs [ ]
  • 38.
    h"ps://online.ide.com0 IDE0 r! James0Green0000/0000Paint0 EXPLOREOPEN SEARCH BUILD TEST CHANGES CONSOLE " Paint # bin # obj # Properties app.config App.xaml App.xaml.cs ColorPanel.xaml ColorPanel.xaml.cs EraserPaint.cs IPaintObjectConstructorList… LinePaint.cs PaintCanvas.cs PaintCanvasCommands.cs PaintObject.cs PaintObjectConstructor.cs PencilPaint.cs RectPaint.cs Window1.xaml Window1.xaml.cs 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" & & " """"""""public"void"setHoveringObject(PaintObject"hoveringObject)" """"""""{" """"""""""""this.hoveringObject"="hoveringObject;" """"""""""""if"(hoveringObject"!="null)" """"""""""""{" """"""""""""""""hoveringRender.Visibility"="Visibility.Visible;" """"""""""""""""hoveringRender.Width"="hoveringRender.Height"="hoveringObject.getThickness()"+"2;" """"""""""""""""double"offset"="hoveringObject.getThickness()"/"2"+"1;" """"""""""""""""hoveringRender.Fill"="new"SolidColorBrush(hoveringObject.getColor());" """"""""""""""""PaintCanvas.SetLeft(hoveringRender,"hoveringObject.getStartX()"k"offset);" """"""""""""""""PaintCanvas.SetTop(hoveringRender,"hoveringObject.getStartY()"k"offset);" """"""""""""""""PaintCanvas.SetZIndex(hoveringRender,"10);" """"""""""""}" """"""""""""else"{"hoveringRender.Visibility"="Visibility.Hidden;"}" """"""""}" " """"""""public"void"addPaintObject(PaintObject"newObject)" """"""""{" """"""""""""currentlyDrawing"="false;" """"""""""""history.Add(new"List<PaintObject>(paintObjects));" """"""""""""paintObjects.Add(newObject);" """"""""""""this.Repaint();" """"""""}" " """"""""public"void"clear()" """"""""{" """"""""""""history.Add(new"List<PaintObject>(paintObjects));" """"""""""""paintObjects.Clear();" """"""""""""this.Repaint();" """"""""}" " """"""""public"void"undo()" """"""""{" """"""""""""int"lastItemIndex"="history.Count"–"1;" """"""""""""paintObjects"="history.Last<List<PaintObject>>();" """"""""""""history.RemoveAt(lastItemIndex);" """"""""""""this.Refresh();"" """"""""}" """"}" }" 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" 142" 143" 1400 " Paint app.config [ ] LinePaint.cs [ ] PaintCanvas.cs [ ] PaintCanvasCommands.cs [ ] PencilPaint.cs [ ] RectPaint.cs [ ] Window1.xaml.cs [ ] Latest changes only [7 files] PaintCanvas.cs [ ]
  • 39.
    h"ps://online.ide.com0 IDE0 r! James0Green0000/0000Paint0 EXPLOREOPEN SEARCH BUILD TEST CHANGES CONSOLE " Paint # bin # obj # Properties app.config App.xaml App.xaml.cs ColorPanel.xaml ColorPanel.xaml.cs EraserPaint.cs IPaintObjectConstructorList… LinePaint.cs PaintCanvas.cs PaintCanvasCommands.cs PaintObject.cs PaintObjectConstructor.cs PencilPaint.cs RectPaint.cs Window1.xaml Window1.xaml.cs 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" & & " """"""""public"void"setHoveringObject(PaintObject"hoveringObject)" """"""""{" """"""""""""this.hoveringObject"="hoveringObject;" """"""""""""if"(hoveringObject"!="null)" """"""""""""{" """"""""""""""""hoveringRender.Visibility"="Visibility.Visible;" """"""""""""""""hoveringRender.Width"="hoveringRender.Height"="hoveringObject.getThickness()"+"2;" """"""""""""""""double"offset"="hoveringObject.getThickness()"/"2"+"1;" """"""""""""""""hoveringRender.Fill"="new"SolidColorBrush(hoveringObject.getColor());" """"""""""""""""PaintCanvas.SetLeft(hoveringRender,"hoveringObject.getStartX()"k"offset);" """"""""""""""""PaintCanvas.SetTop(hoveringRender,"hoveringObject.getStartY()"k"offset);" """"""""""""""""PaintCanvas.SetZIndex(hoveringRender,"10);" """"""""""""}" """"""""""""else"{"hoveringRender.Visibility"="Visibility.Hidden;"}" """"""""}" " """"""""public"void"addPaintObject(PaintObject"newObject)" """"""""{" """"""""""""currentlyDrawing"="false;" """"""""""""history.Add(new"List<PaintObject>(paintObjects));" """"""""""""paintObjects.Add(newObject);" """"""""""""this.Repaint();" """"""""}" " """"""""public"void"clear()" """"""""{" """"""""""""history.Add(new"List<PaintObject>(paintObjects));" """"""""""""paintObjects.Clear();" """"""""""""this.Repaint();" """"""""}" " """"""""public"void"undo()" """"""""{" """"""""""""int"lastItemIndex"="history.Count"–"1;" """"""""""""paintObjects"="history.Last<List<PaintObject>>();" """"""""""""history.RemoveAt(lastItemIndex);" """"""""""""this.Refresh();"" """"""""}" """"}" }" 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" 142" 143" " Paint app.config [ ] LinePaint.cs [ ] PaintCanvas.cs [ ] PaintCanvasCommands.cs [ ] PencilPaint.cs [ ] RectPaint.cs [ ] Window1.xaml.cs [ ] Latest changes only [7 files] """int"lastItemIndex"="history.Count"–"1;"1400 PaintCanvas.cs [ ]
  • 40.
    h"ps://online.ide.com0 IDE0 r! James0Green0000/0000Paint0 EXPLOREOPEN SEARCH BUILD TEST CHANGES CONSOLE " Paint # bin # obj # Properties app.config App.xaml App.xaml.cs ColorPanel.xaml ColorPanel.xaml.cs EraserPaint.cs IPaintObjectConstructorList… LinePaint.cs PaintCanvas.cs PaintCanvasCommands.cs PaintObject.cs PaintObjectConstructor.cs PencilPaint.cs RectPaint.cs Window1.xaml Window1.xaml.cs 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" & & " """"""""public"void"setHoveringObject(PaintObject"hoveringObject)" """"""""{" """"""""""""this.hoveringObject"="hoveringObject;" """"""""""""if"(hoveringObject"!="null)" """"""""""""{" """"""""""""""""hoveringRender.Visibility"="Visibility.Visible;" """"""""""""""""hoveringRender.Width"="hoveringRender.Height"="hoveringObject.getThickness()"+"2;" """"""""""""""""double"offset"="hoveringObject.getThickness()"/"2"+"1;" """"""""""""""""hoveringRender.Fill"="new"SolidColorBrush(hoveringObject.getColor());" """"""""""""""""PaintCanvas.SetLeft(hoveringRender,"hoveringObject.getStartX()"k"offset);" """"""""""""""""PaintCanvas.SetTop(hoveringRender,"hoveringObject.getStartY()"k"offset);" """"""""""""""""PaintCanvas.SetZIndex(hoveringRender,"10);" """"""""""""}" """"""""""""else"{"hoveringRender.Visibility"="Visibility.Hidden;"}" """"""""}" " """"""""public"void"addPaintObject(PaintObject"newObject)" """"""""{" """"""""""""currentlyDrawing"="false;" """"""""""""history.Add(new"List<PaintObject>(paintObjects));" """"""""""""paintObjects.Add(newObject);" """"""""""""this.Repaint();" """"""""}" " """"""""public"void"clear()" """"""""{" """"""""""""history.Add(new"List<PaintObject>(paintObjects));" """"""""""""paintObjects.Clear();" """"""""""""this.Repaint();" """"""""}" " """"""""public"void"undo()" """"""""{" """"""""""""int"lastItemIndex"="history.Count"–"1;" """"""""""""paintObjects"="history.Last<List<PaintObject>>();" """"""""""""history.RemoveAt(lastItemIndex);" """"""""""""this.Refresh();"" """"""""}" """"}" }" 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" " " " 1400 " Paint app.config [ ] LinePaint.cs [ ] PaintCanvas.cs [ ] PaintCanvasCommands.cs [ ] PencilPaint.cs [ ] RectPaint.cs [ ] Window1.xaml.cs [ ] Latest changes only [7 files] """history.RemoveAt(lastItemIndex);" """this.Refresh();"" 142" 143" PaintCanvas.cs [ ]
  • 41.
    h"ps://online.ide.com0 IDE0 r! James0Green0000/0000Paint0 EXPLOREOPEN SEARCH BUILD TEST CHANGES CONSOLE " Paint # bin # obj # Properties app.config App.xaml App.xaml.cs ColorPanel.xaml ColorPanel.xaml.cs EraserPaint.cs IPaintObjectConstructorList… LinePaint.cs PaintCanvas.cs PaintCanvasCommands.cs PaintObject.cs PaintObjectConstructor.cs PencilPaint.cs RectPaint.cs Window1.xaml Window1.xaml.cs 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" & & " """"""""public"void"setHoveringObject(PaintObject"hoveringObject)" """"""""{" """"""""""""this.hoveringObject"="hoveringObject;" """"""""""""if"(hoveringObject"!="null)" """"""""""""{" """"""""""""""""hoveringRender.Visibility"="Visibility.Visible;" """"""""""""""""hoveringRender.Width"="hoveringRender.Height"="hoveringObject.getThickness()"+"2;" """"""""""""""""double"offset"="hoveringObject.getThickness()"/"2"+"1;" """"""""""""""""hoveringRender.Fill"="new"SolidColorBrush(hoveringObject.getColor());" """"""""""""""""PaintCanvas.SetLeft(hoveringRender,"hoveringObject.getStartX()"k"offset);" """"""""""""""""PaintCanvas.SetTop(hoveringRender,"hoveringObject.getStartY()"k"offset);" """"""""""""""""PaintCanvas.SetZIndex(hoveringRender,"10);" """"""""""""}" """"""""""""else"{"hoveringRender.Visibility"="Visibility.Hidden;"}" """"""""}" " """"""""public"void"addPaintObject(PaintObject"newObject)" """"""""{" """"""""""""currentlyDrawing"="false;" """"""""""""history.Add(new"List<PaintObject>(paintObjects));" """"""""""""paintObjects.Add(newObject);" """"""""""""this.Repaint();" """"""""}" " """"""""public"void"clear()" """"""""{" """"""""""""history.Add(new"List<PaintObject>(paintObjects));" """"""""""""paintObjects.Clear();" """"""""""""this.Repaint();" """"""""}" " """"""""public"void"undo()" """"""""{" """"""""""""int"lastItemIndex"="history.Count"–"1;" """"""""""""paintObjects"="history.Last<List<PaintObject>>();" """"""""""""history.RemoveAt(lastItemIndex);" """"""""""""this.Refresh();"" """"""""}" """"}" }" 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" " " " 1400 " Paint app.config [ ] LinePaint.cs [ ] PaintCanvas.cs [ ] PaintCanvasCommands.cs [ ] PencilPaint.cs [ ] RectPaint.cs [ ] Window1.xaml.cs [ ] Latest changes only [7 files] """history.RemoveAt(lastItemIndex);" """this.Refresh();"" 142" 143" click0 PaintCanvas.cs [ ]
  • 42.
    h"ps://online.ide.com0 IDE0 r! James0Green0000/0000Paint0 EXPLOREOPEN SEARCH BUILD TEST CHANGES CONSOLE " Paint # bin # obj # Properties app.config App.xaml App.xaml.cs ColorPanel.xaml ColorPanel.xaml.cs EraserPaint.cs IPaintObjectConstructorList… LinePaint.cs PaintCanvas.cs PaintCanvasCommands.cs PaintObject.cs PaintObjectConstructor.cs PencilPaint.cs RectPaint.cs Window1.xaml Window1.xaml.cs 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" & & 129" 130" 131" 132" 133" 134" 135" 136" 137" 138" 139" 140" 141" 142" 143" 144" 145" 146" 147" 148" 149" 150" 151" " " "#9050 Latest update “Improved readability and consistency.” 10 hours ago kathy.farewell@live.com #9044 “Cleaned up the code and fixed some [...] 12 hours ago joe.smith@live.com #8227 Previous update “Added undo method” 0 4 weeks ago yourself Load previous history " """"""""" """"""""}" " """"""""public"void"clear()" """"""""{" """"""""""""history.Add(new"List<PaintObject>(paintObjects));" """"""""""""paintObjects.Clear();" """"""""""""this.Repaint();" """"""""}" " """"""""public"void"undo()" """"""""{" """"""""""""int"lastItemIndex"="history.Count"–"1;" """"""""""""paintObjects"="history.Last<List<PaintObject>>();" """"""""""""history.RemoveAt(lastItemIndex);" """"""""""""this.Refresh();"" """"""""}" """"}" }" """history.RemoveAt(lastItemIndex);" """this.Refresh();"" 142" 143" 1400 PaintCanvas.cs [ ] """" """history.RemoveAt(history.Count"k"1);" """this.Refresh();"" 141" 142" """history.RemoveAt(lastItemIndex);" """this.Refresh();"" 142" 143" """history.RemoveAt(history.Count"k"1);" """this.Repaint();"" 141" 142" ..." " " " ...0 ..." " " " ...0 ..." " " " ...0 " Paint app.config [ ] LinePaint.cs [ ] PaintCanvas.cs [ ] PaintCanvasCommands.cs [ ] PencilPaint.cs [ ] RectPaint.cs [ ] Window1.xaml.cs [ ] Latest changes only [7 files] PaintCanvas.cs [ ]
  • 43.
    h"ps://online.ide.com0 IDE0 r! James0Green0000/0000Paint0 EXPLOREOPEN SEARCH BUILD TEST CHANGES CONSOLE " Paint # bin # obj # Properties app.config App.xaml App.xaml.cs ColorPanel.xaml ColorPanel.xaml.cs EraserPaint.cs IPaintObjectConstructorList… LinePaint.cs PaintCanvas.cs PaintCanvasCommands.cs PaintObject.cs PaintObjectConstructor.cs PencilPaint.cs RectPaint.cs Window1.xaml Window1.xaml.cs 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" & & 129" 130" 131" 132" 133" 134" 135" 136" 137" 138" 139" 140" 141" 142" 143" 144" 145" 146" 147" 148" 149" 150" 151" " " "#9050 Latest update “Improved readability and consistency.” 10 hours ago kathy.farewell@live.com #9044 “Cleaned up the code and fixed some [...] 12 hours ago joe.smith@live.com #8227 Previous update “Added undo method” 0 4 weeks ago yourself Load previous history " """"""""" """"""""}" " """"""""public"void"clear()" """"""""{" """"""""""""history.Add(new"List<PaintObject>(paintObjects));" """"""""""""paintObjects.Clear();" """"""""""""this.Repaint();" """"""""}" " """"""""public"void"undo()" """"""""{" """"""""""""int"lastItemIndex"="history.Count"–"1;" """"""""""""paintObjects"="history.Last<List<PaintObject>>();" """"""""""""history.RemoveAt(lastItemIndex);" """"""""""""this.Refresh();"" """"""""}" """"}" }" """history.RemoveAt(lastItemIndex);" """this.Refresh();"" 142" 143" 1400 " Paint app.config [ ] LinePaint.cs [ ] PaintCanvas.cs [ ] PaintCanvasCommands.cs [ ] PencilPaint.cs [ ] RectPaint.cs [ ] Window1.xaml.cs [ ] Latest changes only [7 files] """" """history.RemoveAt(history.Count"k"1);" """this.Refresh();"" 141" 142" """history.RemoveAt(lastItemIndex);" """this.Refresh();"" 142" 143" """history.RemoveAt(history.Count"k"1);" """this.Repaint();"" 141" 142" ..." " " " ...0 ..." " " " ...0 ..." " " " ...0 “Cleaned up the code and fixed some of the missing comments (mostly the auto-generated ones).” PaintCanvas.cs [ ]
  • 44.
    h"ps://online.ide.com0 IDE0 r! James0Green0000/0000Paint0 EXPLOREOPEN SEARCH BUILD TEST CHANGES CONSOLE " Paint # bin # obj # Properties app.config App.xaml App.xaml.cs ColorPanel.xaml ColorPanel.xaml.cs EraserPaint.cs IPaintObjectConstructorList… LinePaint.cs PaintCanvas.cs PaintCanvasCommands.cs PaintObject.cs PaintObjectConstructor.cs PencilPaint.cs RectPaint.cs Window1.xaml Window1.xaml.cs 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" & & 129" 130" 131" 132" 133" 134" 135" 136" 137" 138" 139" 140" 141" 142" 143" 144" 145" 146" 147" 148" 149" 150" 151" " " "#9050 Latest update “Improved readability and consistency.” 10 hours ago kathy.farewell@live.com #9044 “Cleaned up the code and fixed some [...] 12 hours ago joe.smith@live.com #8227 Previous update “Added undo method” 0 4 weeks ago yourself Load previous history " """"""""" """"""""}" " """"""""public"void"clear()" """"""""{" """"""""""""history.Add(new"List<PaintObject>(paintObjects));" """"""""""""paintObjects.Clear();" """"""""""""this.Repaint();" """"""""}" " """"""""public"void"undo()" """"""""{" """"""""""""int"lastItemIndex"="history.Count"–"1;" """"""""""""paintObjects"="history.Last<List<PaintObject>>();" """"""""""""history.RemoveAt(lastItemIndex);" """"""""""""this.Refresh();"" """"""""}" """"}" }" """history.RemoveAt(lastItemIndex);" """this.Refresh();"" 142" 143" 1400 " Paint app.config [ ] LinePaint.cs [ ] PaintCanvas.cs [ ] PaintCanvasCommands.cs [ ] PencilPaint.cs [ ] RectPaint.cs [ ] Window1.xaml.cs [ ] Latest changes only [7 files] """" """history.RemoveAt(history.Count"k"1);" """this.Refresh();"" 141" 142" """history.RemoveAt(lastItemIndex);" """this.Refresh();"" 142" 143" """history.RemoveAt(history.Count"k"1);" """this.Repaint();"" 141" 142" ..." " " " ...0 ..." " " " ...0 ..." " " " ...0 PaintCanvas.cs [ ]
  • 45.
    h"ps://online.ide.com0 IDE0 r! James0Green0000/0000Paint0 EXPLOREOPEN SEARCH BUILD TEST CHANGES CONSOLE " Paint # bin # obj # Properties app.config App.xaml App.xaml.cs ColorPanel.xaml ColorPanel.xaml.cs EraserPaint.cs IPaintObjectConstructorList… LinePaint.cs PaintCanvas.cs PaintCanvasCommands.cs PaintObject.cs PaintObjectConstructor.cs PencilPaint.cs RectPaint.cs Window1.xaml Window1.xaml.cs 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" & & " """"""""" """"""""}" " """"""""public"void"clear()" """"""""{" """"""""""""history.Add(new"List<PaintObject>(paintObjects));" """"""""""""paintObjects.Clear();" """"""""""""this.Repaint();" """"""""}" " """"""""public"void"undo()" """"""""{" """"""""""""int"lastItemIndex"="history.Count"–"1;" """"""""""""paintObjects"="history.Last<List<PaintObject>>();" """"""""""""history.RemoveAt(lastItemIndex);" """"""""""""this.Refresh();"" """"""""}" """"}" }" 129" 130" 131" 132" 133" 134" 135" 136" 137" 138" 139" 140" 141" 142" 143" 144" 145" 146" 147" 148" 149" 150" 151" " " " 1400 " Paint app.config [ ] LinePaint.cs [ ] PaintCanvas.cs [ ] PaintCanvasCommands.cs [ ] PencilPaint.cs [ ] RectPaint.cs [ ] Window1.xaml.cs [ ] Latest changes only [7 files] #9050 Latest update “Improved readability and consistency.” 10 hours ago kathy.farewell@live.com #9044 “Cleaned up the code and fixed some [...] 12 hours ago joe.smith@live.com #8227 Previous update “Added undo method” 0 4 weeks ago yourself Load previous history """" """history.RemoveAt(history.Count"k"1);" """this.Refresh();"" 141" 142" """history.RemoveAt(lastItemIndex);" """this.Refresh();"" 142" 143" """history.RemoveAt(history.Count"k"1);" """this.Repaint();"" 141" 142" ..." " " " ...0 ..." " " " ...0 ..." " " " ...0 """history.RemoveAt(lastItemIndex);" """this.Refresh();"" 142" 143" PaintCanvas.cs [ ]
  • 46.
    h"ps://online.ide.com0 IDE0 r! James0Green0000/0000Paint0 EXPLOREOPEN SEARCH BUILD TEST CHANGES CONSOLE " Paint # bin # obj # Properties app.config App.xaml App.xaml.cs ColorPanel.xaml ColorPanel.xaml.cs EraserPaint.cs IPaintObjectConstructorList… LinePaint.cs PaintCanvas.cs PaintCanvasCommands.cs PaintObject.cs PaintObjectConstructor.cs PencilPaint.cs RectPaint.cs Window1.xaml Window1.xaml.cs 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" & & " """"""""" """"""""}" " """"""""public"void"clear()" """"""""{" """"""""""""history.Add(new"List<PaintObject>(paintObjects));" """"""""""""paintObjects.Clear();" """"""""""""this.Repaint();" """"""""}" " """"""""public"void"undo()" """"""""{" """"""""""""int"lastItemIndex"="history.Count"–"1;" """"""""""""paintObjects"="history.Last<List<PaintObject>>();" """"""""""""history.RemoveAt(lastItemIndex);" """"""""""""this.Refresh();"" """"""""}" """"}" }" 129" 130" 131" 132" 133" 134" 135" 136" 137" 138" 139" 140" 141" 142" 143" 144" 145" 146" 147" 148" 149" 150" 151" " " " 142" 143" 1400 paint " Paint app.config [ ] LinePaint.cs [ ] PaintCanvas.cs [ ] PaintCanvasCommands.cs [ ] PencilPaint.cs [ ] RectPaint.cs [ ] Window1.xaml.cs [ ] Latest changes only [7 files] #9050 Latest update “Improved readability and consistency.” 10 hours ago kathy.farewell@live.com #9044 “Cleaned up the code and fixed some [...] 12 hours ago joe.smith@live.com #8227 Previous update “Added undo method” 0 4 weeks ago yourself Load previous history """" """history.RemoveAt(history.Count"k"1);" """this.Refresh();"" 141" 142" """history.RemoveAt(lastItemIndex);" """this.Refresh();"" 142" 143" """history.RemoveAt(history.Count"k"1);" """this.Repaint();"" 141" 142" ..." " " " ...0 ..." " " " ...0 ..." " " " ...0 PaintCanvas.cs [ ]
  • 47.
    h"ps://online.ide.com0 IDE0 r! James0Green0000/0000Paint0 EXPLOREOPEN SEARCH BUILD TEST CHANGES CONSOLE " Paint # bin # obj # Properties app.config App.xaml App.xaml.cs ColorPanel.xaml ColorPanel.xaml.cs EraserPaint.cs IPaintObjectConstructorList… LinePaint.cs PaintCanvas.cs PaintCanvasCommands.cs PaintObject.cs PaintObjectConstructor.cs PencilPaint.cs RectPaint.cs Window1.xaml Window1.xaml.cs 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" & & " """"""""" """"""""}" " """"""""public"void"clear()" """"""""{" """"""""""""history.Add(new"List<PaintObject>(paintObjects));" """"""""""""paintObjects.Clear();" """"""""""""this.Repaint();" """"""""}" " """"""""public"void"undo()" """"""""{" """"""""""""int"lastItemIndex"="history.Count"–"1;" """"""""""""paintObjects"="history.Last<List<PaintObject>>();" """"""""""""history.RemoveAt(lastItemIndex);" """"""""""""this.Repaint();"" """"""""}" """"}" }" 129" 130" 131" 132" 133" 134" 135" 136" 137" 138" 139" 140" 141" 142" 143" 144" 145" 146" 147" 148" 149" 150" 151" " " " 1400 " Paint app.config [ ] LinePaint.cs [ ] PaintCanvas.cs [ ] PaintCanvasCommands.cs [ ] PencilPaint.cs [ ] RectPaint.cs [ ] Window1.xaml.cs [ ] Latest changes only [7 files] Local 2 seconds ago yourself #9050 Latest update “Improved readability and consistency.” 10 hours ago kathy.farewell@live.com #9044 “Cleaned up the code and fixed some [...] 12 hours ago joe.smith@live.com #8227 Previous update “Added undo method” 0 4 weeks ago yourself """" """history.RemoveAt(history.Count"–"1);" """this.Refresh();"" 141" 142" """history.RemoveAt(lastItemIndex);" """this.Refresh();"" 142" 143" """history.RemoveAt(history.Count"k"1);" """this.Repaint();"" 141" 142" ..." " " " ...0 ..." " " " ...0 ..." " " " ...0 """history.RemoveAt(lastItemIndex);" """this.Repaint();"" 142" 143" ..." " " " ...0 """history.RemoveAt(lastItemIndex);" """""""this.Repaint();"" 142" 143" PaintCanvas.cs [ ]
  • 48.
    h"ps://online.ide.com0 IDE0 r! James0Green0000/0000Paint0 EXPLOREOPEN SEARCH BUILD TEST CHANGES CONSOLE " Paint # bin # obj # Properties app.config App.xaml App.xaml.cs ColorPanel.xaml ColorPanel.xaml.cs EraserPaint.cs IPaintObjectConstructorList… LinePaint.cs PaintCanvas.cs PaintCanvasCommands.cs PaintObject.cs PaintObjectConstructor.cs PencilPaint.cs RectPaint.cs Window1.xaml Window1.xaml.cs 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" & & " """"""""" """"""""}" " """"""""public"void"clear()" """"""""{" """"""""""""history.Add(new"List<PaintObject>(paintObjects));" """"""""""""paintObjects.Clear();" """"""""""""this.Repaint();" """"""""}" " """"""""public"void"undo()" """"""""{" """"""""""""int"lastItemIndex"="history.Count"–"1;" """"""""""""paintObjects"="history.Last<List<PaintObject>>();" """"""""""""history.RemoveAt(lastItemIndex);" """"""""""""this.Repaint();"" """"""""}" """"}" }" 129" 130" 131" 132" 133" 134" 135" 136" 137" 138" 139" 140" 141" 142" 143" 144" 145" 146" 147" 148" 149" 150" 151" " " " 1400 " Paint app.config [ ] LinePaint.cs [ ] PaintCanvas.cs [ ] PaintCanvasCommands.cs [ ] PencilPaint.cs [ ] RectPaint.cs [ ] Window1.xaml.cs [ ] Latest changes only [7 files] Local 2 seconds ago yourself #9050 Latest update “Improved readability and consistency.” 10 hours ago kathy.farewell@live.com #9044 “Cleaned up the code and fixed some [...] 12 hours ago joe.smith@live.com #8227 Previous update “Added undo method” 0 4 weeks ago yourself """" """history.RemoveAt(history.Count"–"1);" """this.Refresh();"" 141" 142" """history.RemoveAt(lastItemIndex);" """this.Refresh();"" 142" 143" """history.RemoveAt(history.Count"k"1);" """this.Repaint();"" 141" 142" ..." " " " ...0 ..." " " " ...0 ..." " " " ...0 """history.RemoveAt(lastItemIndex);" """this.Repaint();"" 142" 143" ..." " " " ...0 """history.RemoveAt(lastItemIndex);" """""""this.Repaint();"" 142" 143" PaintCanvas.cs [ ]
  • 49.
    James runs thecode and verifies that UNDO is now working.
  • 50.
    h"ps://online.ide.com0 IDE0 r! James0Green0000/0000Paint0 EXPLOREOPEN SEARCH BUILD TEST CHANGES CONSOLE " Paint # bin # obj # Properties app.config App.xaml App.xaml.cs ColorPanel.xaml ColorPanel.xaml.cs EraserPaint.cs IPaintObjectConstructorList… LinePaint.cs PaintCanvas.cs PaintCanvasCommands.cs PaintObject.cs PaintObjectConstructor.cs PencilPaint.cs RectPaint.cs Window1.xaml Window1.xaml.cs 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" & & " """"""""" """"""""}" " """"""""public"void"clear()" """"""""{" """"""""""""history.Add(new"List<PaintObject>(paintObjects));" """"""""""""paintObjects.Clear();" """"""""""""this.Repaint();" """"""""}" " """"""""public"void"undo()" """"""""{" """"""""""""int"lastItemIndex"="history.Count"–"1;" """"""""""""paintObjects"="history.Last<List<PaintObject>>();" """"""""""""history.RemoveAt(lastItemIndex);" """"""""""""this.Repaint();"" """"""""}" """"}" }" 129" 130" 131" 132" 133" 134" 135" 136" 137" 138" 139" 140" 141" 142" 143" 144" 145" 146" 147" 148" 149" 150" 151" " " " 1400 " Paint app.config [ ] LinePaint.cs [ ] PaintCanvas.cs [ ] PaintCanvasCommands.cs [ ] PencilPaint.cs [ ] RectPaint.cs [ ] Window1.xaml.cs [ ] Latest changes only [7 files] Local 2 seconds ago yourself #9050 Latest update “Improved readability and consistency.” 10 hours ago kathy.farewell@live.com #9044 “Cleaned up the code and fixed some [...] 12 hours ago joe.smith@live.com #8227 Previous update “Added undo method” 0 4 weeks ago yourself """" """history.RemoveAt(history.Count"–"1);" """this.Refresh();"" 141" 142" """history.RemoveAt(lastItemIndex);" """this.Refresh();"" 142" 143" """history.RemoveAt(history.Count"k"1);" """this.Repaint();"" 141" 142" ..." " " " ...0 ..." " " " ...0 ..." " " " ...0 """history.RemoveAt(lastItemIndex);" """this.Repaint();"" 142" 143" ..." " " " ...0 """history.RemoveAt(lastItemIndex);" """""""this.Repaint();"" 142" 143" PaintCanvas.cs [ ]
  • 51.
    h"ps://online.ide.com0 IDE0 r! James0Green0000/0000Paint0 EXPLOREOPEN SEARCH BUILD TEST CHANGES CONSOLE " Paint # bin # obj # Properties app.config App.xaml App.xaml.cs ColorPanel.xaml ColorPanel.xaml.cs EraserPaint.cs IPaintObjectConstructorList… LinePaint.cs PaintCanvas.cs PaintCanvasCommands.cs PaintObject.cs PaintObjectConstructor.cs PencilPaint.cs RectPaint.cs Window1.xaml Window1.xaml.cs 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" & & *PaintCanvas.cs [1] " """"""""" """"""""}" " """"""""public"void"clear()" """"""""{" """"""""""""history.Add(new"List<PaintObject>(paintObjects));" """"""""""""paintObjects.Clear();" """"""""""""this.Repaint();" """"""""}" " """"""""public"void"undo()" """"""""{" """"""""""""int"lastItemIndex"="history.Count"–"1;" """"""""""""paintObjects"="history.Last<List<PaintObject>>();" """"""""""""history.RemoveAt(lastItemIndex);" """"""""""""this.Repaint();"" """"""""}" """"}" }" 129" 130" 131" 132" 133" 134" 135" 136" 137" 138" 139" 140" 141" 142" 143" 144" 145" 146" 147" 148" 149" 150" 151" " " " 1400 " Paint app.config [ ] LinePaint.cs [ ] PaintCanvas.cs [ ] PaintCanvasCommands.cs [ ] PencilPaint.cs [ ] RectPaint.cs [ ] Window1.xaml.cs [ ] Latest changes only [7 files] Local 2 seconds ago yourself #9050 Latest update “Improved readability and consistency.” 10 hours ago kathy.farewell@live.com #9044 “Cleaned up the code and fixed some [...] 12 hours ago joe.smith@live.com #8227 Previous update “Added undo method” 0 4 weeks ago yourself """" """history.RemoveAt(history.Count"–"1);" """this.Refresh();"" 141" 142" """history.RemoveAt(lastItemIndex);" """this.Refresh();"" 142" 143" """history.RemoveAt(history.Count"k"1);" """this.Repaint();"" 141" 142" ..." " " " ...0 ..." " " " ...0 ..." " " " ...0 """history.RemoveAt(lastItemIndex);" """this.Repaint();"" 142" 143" ..." " " " ...0 """history.RemoveAt(lastItemIndex);" """""""this.Repaint();"" 142" 143" PaintCanvas.cs [ ]
  • 52.
    h"ps://online.ide.com0 IDE0 r! James0Green0000/0000Paint0 EXPLOREOPEN SEARCH BUILD TEST CHANGES CONSOLE " Paint # bin # obj # Properties app.config App.xaml App.xaml.cs ColorPanel.xaml ColorPanel.xaml.cs EraserPaint.cs IPaintObjectConstructorList… LinePaint.cs PaintCanvas.cs PaintCanvasCommands.cs PaintObject.cs PaintObjectConstructor.cs PencilPaint.cs RectPaint.cs Window1.xaml Window1.xaml.cs 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" & & *PaintCanvas.cs [1] " """"""""" """"""""}" " """"""""public"void"clear()" """"""""{" """"""""""""history.Add(new"List<PaintObject>(paintObjects));" """"""""""""paintObjects.Clear();" """"""""""""this.Repaint();" """"""""}" " """"""""public"void"undo()" """"""""{" """"""""""""int"lastItemIndex"="history.Count"–"1;" """"""""""""paintObjects"="history.Last<List<PaintObject>>();" """"""""""""history.RemoveAt(lastItemIndex);" """"""""""""this.Repaint();"" """"""""}" """"}" }" 129" 130" 131" 132" 133" 134" 135" 136" 137" 138" 139" 140" 141" 142" 143" 144" 145" 146" 147" 148" 149" 150" 151" " " " 1400 " Paint app.config [ ] LinePaint.cs [ ] PaintCanvas.cs [ ] PaintCanvasCommands.cs [ ] PencilPaint.cs [ ] RectPaint.cs [ ] Window1.xaml.cs [ ] Latest changes only [7 files] Local 2 seconds ago yourself #9050 Latest update “Improved readability” 10 hours ago kathy.farewell@live.com #9044 “Cleaned up the code…” 12 hours ago joe.smith@live.com #8227 Previous update “Added undo method” 0 4 weeks ago yourself """" """history.RemoveAt(history.Count"–"1);" """this.Refresh();"" 141" 142" """history.RemoveAt(lastItemIndex);" """this.Refresh();"" 142" 143" """history.RemoveAt(history.Count"k"1);" """this.Repaint();"" 141" 142" ..." " " " ...0 ..." " " " ...0 ..." " " " ...0 """history.RemoveAt(lastItemIndex);" """this.Repaint();"" 142" 143" ..." " " " ...0 """history.RemoveAt(lastItemIndex);" """""""this.Repaint();"" 142" 143" joe.smith@live.com0 james.green@live.com0 PaintCanvas.cs [ ]
  • 53.
    h"ps://online.ide.com0 IDE0 r! James0Green0000/0000Paint0 EXPLOREOPEN SEARCH BUILD TEST CHANGES CONSOLE " Paint # bin # obj # Properties app.config App.xaml App.xaml.cs ColorPanel.xaml ColorPanel.xaml.cs EraserPaint.cs IPaintObjectConstructorList… LinePaint.cs PaintCanvas.cs PaintCanvasCommands.cs PaintObject.cs PaintObjectConstructor.cs PencilPaint.cs RectPaint.cs Window1.xaml Window1.xaml.cs 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" & & *PaintCanvas.cs [1] " """"""""" """"""""}" " """"""""public"void"clear()" """"""""{" """"""""""""history.Add(new"List<PaintObject>(paintObjects));" """"""""""""paintObjects.Clear();" """"""""""""this.Repaint();" """"""""}" " """"""""public"void"undo()" """"""""{" """"""""""""int"lastItemIndex"="history.Count"–"1;" """"""""""""paintObjects"="history.Last<List<PaintObject>>();" """"""""""""history.RemoveAt(lastItemIndex);" """"""""""""this.Repaint();"" """"""""}" """"}" }" 129" 130" 131" 132" 133" 134" 135" 136" 137" 138" 139" 140" 141" 142" 143" 144" 145" 146" 147" 148" 149" 150" 151" " " " 1400 " Paint app.config [ ] LinePaint.cs [ ] PaintCanvas.cs [ ] PaintCanvasCommands.cs [ ] PencilPaint.cs [ ] RectPaint.cs [ ] Window1.xaml.cs [ ] Latest changes only [7 files] Local 2 seconds ago yourself #9050 Latest update “Improved readability” 10 hours ago kathy.farewell@live.com #9044 “Cleaned up the code…” 12 hours ago joe.smith@live.com #8227 Previous update “Added undo method” 0 4 weeks ago yourself """" """history.RemoveAt(history.Count"–"1);" """this.Refresh();"" 141" 142" """history.RemoveAt(lastItemIndex);" """this.Refresh();"" 142" 143" """history.RemoveAt(history.Count"k"1);" """this.Repaint();"" 141" 142" ..." " " " ...0 ..." " " " ...0 ..." " " " ...0 """history.RemoveAt(lastItemIndex);" """this.Repaint();"" 142" 143" ..." " " " ...0 """history.RemoveAt(lastItemIndex);" """""""this.Repaint();"" 142" 143" joe.smith@live.com0 james.green@live.com0 PaintCanvas.cs [ ]
  • 54.
    h"ps://online.ide.com0 IDE0 r! James0Green0000/0000Paint0 EXPLOREOPEN SEARCH BUILD TEST CHANGES CONSOLE " Paint # bin # obj # Properties app.config App.xaml App.xaml.cs ColorPanel.xaml ColorPanel.xaml.cs EraserPaint.cs IPaintObjectConstructorList… LinePaint.cs PaintCanvas.cs PaintCanvasCommands.cs PaintObject.cs PaintObjectConstructor.cs PencilPaint.cs RectPaint.cs Window1.xaml Window1.xaml.cs 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" & & " """"""""" """"""""}" " """"""""public"void"clear()" """"""""{" """"""""""""history.Add(new"List<PaintObject>(paintObjects));" """"""""""""paintObjects.Clear();" """"""""""""this.Repaint();" """"""""}" " """"""""public"void"undo()" """"""""{" """"""""""""int"lastItemIndex"="history.Count"–"1;" """"""""""""paintObjects"="history.Last<List<PaintObject>>();" """"""""""""history.RemoveAt(lastItemIndex);" """"""""""""this.Repaint();"" """"""""}" """"}" }" 129" 130" 131" 132" 133" 134" 135" 136" 137" 138" 139" 140" 141" 142" 143" 144" 145" 146" 147" 148" 149" 150" 151" " " " 1400 *PaintCanvas.cs [1] " Paint app.config [ ] LinePaint.cs [ ] PaintCanvas.cs [ ] PaintCanvasCommands.cs [ ] PencilPaint.cs [ ] RectPaint.cs [ ] Window1.xaml.cs [ ] Latest changes only [7 files] Local 2 seconds ago yourself #9050 Latest update “Improved readability and consistency.” 10 hours ago kathy.farewell@live.com #9044 “Cleaned up the code and fixed some [...] 12 hours ago joe.smith@live.com #8227 Previous update “Added undo method” 0 4 weeks ago yourself """" """history.RemoveAt(history.Count"–"1);" """this.Refresh();"" 141" 142" """history.RemoveAt(lastItemIndex);" """this.Refresh();"" 142" 143" """history.RemoveAt(history.Count"k"1);" """this.Repaint();"" 141" 142" ..." " " " ...0 ..." " " " ...0 ..." " " " ...0 """history.RemoveAt(lastItemIndex);" """this.Repaint();"" 142" 143" ..." " " " ...0 """history.RemoveAt(lastItemIndex);" """""""this.Repaint();"" 142" 143" PaintCanvas.cs [ ]
  • 55.
    h"ps://online.ide.com0 IDE0 r! James0Green0000/0000Paint0 EXPLOREOPEN SEARCH BUILD TEST CHANGES CONSOLE " Paint # bin # obj # Properties app.config App.xaml App.xaml.cs ColorPanel.xaml ColorPanel.xaml.cs EraserPaint.cs IPaintObjectConstructorList… LinePaint.cs PaintCanvas.cs PaintCanvasCommands.cs PaintObject.cs PaintObjectConstructor.cs PencilPaint.cs RectPaint.cs Window1.xaml Window1.xaml.cs 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" & & " Paint # bin # obj # Properties app.config [ ] App.xaml App.xaml.cs ColorPanel.xaml ColorPanel.xaml.cs EraserPaint.cs IPaintObjectConstructorList… LinePaint.cs [ ] PaintCanvas.cs [ ] PaintCanvasCommands.cs [ ] PaintObject.cs PaintObjectConstructor.cs PencilPaint.cs [ ] RectPaint.cs [ ] Window1.xaml Window1.xaml.cs [ ] Latest changes only [7 files] " """"""""public"void"setHoveringObject(PaintObject"hoveringObject)" """"""""{" """"""""""""this.hoveringObject"="hoveringObject;" """"""""""""if"(hoveringObject"!="null)" """"""""""""{" """"""""""""""""hoveringRender.Visibility"="Visibility.Visible;" """"""""""""""""hoveringRender.Width"="hoveringRender.Height"="hoveringObject.getThickness()"+"2;" """"""""""""""""double"offset"="hoveringObject.getThickness()"/"2"+"1;" """"""""""""""""hoveringRender.Fill"="new"SolidColorBrush(hoveringObject.getColor());" """"""""""""""""PaintCanvas.SetLeft(hoveringRender,"hoveringObject.getStartX()"k"offset);" """"""""""""""""PaintCanvas.SetTop(hoveringRender,"hoveringObject.getStartY()"k"offset);" """"""""""""""""PaintCanvas.SetZIndex(hoveringRender,"10);" """"""""""""}" """"""""""""else"{"hoveringRender.Visibility"="Visibility.Hidden;"}" """"""""}" " """"""""public"void"addPaintObject(PaintObject"newObject)" """"""""{" """"""""""""currentlyDrawing"="false;" """"""""""""history.Add(new"List<PaintObject>(paintObjects));" """"""""""""paintObjects.Add(newObject);" """"""""""""this.Repaint();" """"""""}" " """"""""public"void"clear()" """"""""{" """"""""""""history.Add(new"List<PaintObject>(paintObjects));" """"""""""""paintObjects.Clear();" """"""""""""this.Repaint();" """"""""}" " """"""""public"void"undo()" """"""""{" """"""""""""int"lastItemIndex"="history.Count"–"1;" """"""""""""paintObjects"="history.Last<List<PaintObject>>();" """"""""""""history.RemoveAt(lastItemIndex);" """"""""""""this.Repaint();"" """"""""}" """"}" }" 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" " " " 1400 PaintCanvas.cs [ ] 142" 143"
  • 56.
  • 57.
    h"ps://online.ide.com0 IDE0 r! James0Green0000/0000Paint0 EXPLOREOPEN SEARCH BUILD TEST CHANGES CONSOLE " Paint # bin # obj # Properties app.config App.xaml App.xaml.cs ColorPanel.xaml ColorPanel.xaml.cs EraserPaint.cs IPaintObjectConstructorList… LinePaint.cs PaintCanvas.cs PaintCanvasCommands.cs PaintObject.cs PaintObjectConstructor.cs PencilPaint.cs RectPaint.cs Window1.xaml Window1.xaml.cs 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" & & " """"""""public"void"setHoveringObject(PaintObject"hoveringObject)" """"""""{" """"""""""""this.hoveringObject"="hoveringObject;" """"""""""""if"(hoveringObject"!="null)" """"""""""""{" """"""""""""""""hoveringRender.Visibility"="Visibility.Visible;" """"""""""""""""hoveringRender.Width"="hoveringRender.Height"="hoveringObject.getThickness()"+"2;" """"""""""""""""double"offset"="hoveringObject.getThickness()"/"2"+"1;" """"""""""""""""hoveringRender.Fill"="new"SolidColorBrush(hoveringObject.getColor());" """"""""""""""""PaintCanvas.SetLeft(hoveringRender,"hoveringObject.getStartX()"k"offset);" """"""""""""""""PaintCanvas.SetTop(hoveringRender,"hoveringObject.getStartY()"k"offset);" """"""""""""""""PaintCanvas.SetZIndex(hoveringRender,"10);" """"""""""""}" """"""""""""else"{"hoveringRender.Visibility"="Visibility.Hidden;"}" """"""""}" " """"""""public"void"addPaintObject(PaintObject"newObject)" """"""""{" """"""""""""currentlyDrawing"="false;" """"""""""""history.Add(new"List<PaintObject>(paintObjects));" """"""""""""paintObjects.Add(newObject);" """"""""""""this.Repaint();" """"""""}" " """"""""public"void"clear()" """"""""{" """"""""""""history.Add(new"List<PaintObject>(paintObjects));" """"""""""""paintObjects.Clear();" """"""""""""this.Repaint();" """"""""}" " """"""""public"void"undo()" """"""""{" """"""""""""int"lastItemIndex"="history.Count"–"1;" """"""""""""paintObjects"="history.Last<List<PaintObject>>();" """"""""""""history.RemoveAt(lastItemIndex);" """"""""""""this.Refresh();"" """"""""}" """"}" }" 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" " " " " Paint app.config [ ] LinePaint.cs [ ] PaintCanvas.cs [ ] PaintCanvasCommands.cs [ ] PencilPaint.cs [ ] RectPaint.cs [ ] Window1.xaml.cs [ ] Latest changes only [7 files] Colored blocks help find changed lines of code 1400 142" 143" PaintCanvas.cs [ ]
  • 58.
    h"ps://online.ide.com0 IDE0 r! James0Green0000/0000Paint0 EXPLOREOPEN SEARCH BUILD TEST CHANGES CONSOLE " Paint # bin # obj # Properties app.config App.xaml App.xaml.cs ColorPanel.xaml ColorPanel.xaml.cs EraserPaint.cs IPaintObjectConstructorList… LinePaint.cs PaintCanvas.cs PaintCanvasCommands.cs PaintObject.cs PaintObjectConstructor.cs PencilPaint.cs RectPaint.cs Window1.xaml Window1.xaml.cs 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" & & " """"""""public"void"setHoveringObject(PaintObject"hoveringObject)" """"""""{" """"""""""""this.hoveringObject"="hoveringObject;" """"""""""""if"(hoveringObject"!="null)" """"""""""""{" """"""""""""""""hoveringRender.Visibility"="Visibility.Visible;" """"""""""""""""hoveringRender.Width"="hoveringRender.Height"="hoveringObject.getThickness()"+"2;" """"""""""""""""double"offset"="hoveringObject.getThickness()"/"2"+"1;" """"""""""""""""hoveringRender.Fill"="new"SolidColorBrush(hoveringObject.getColor());" """"""""""""""""PaintCanvas.SetLeft(hoveringRender,"hoveringObject.getStartX()"k"offset);" """"""""""""""""PaintCanvas.SetTop(hoveringRender,"hoveringObject.getStartY()"k"offset);" """"""""""""""""PaintCanvas.SetZIndex(hoveringRender,"10);" """"""""""""}" """"""""""""else"{"hoveringRender.Visibility"="Visibility.Hidden;"}" """"""""}" " """"""""public"void"addPaintObject(PaintObject"newObject)" """"""""{" """"""""""""currentlyDrawing"="false;" """"""""""""history.Add(new"List<PaintObject>(paintObjects));" """"""""""""paintObjects.Add(newObject);" """"""""""""this.Repaint();" """"""""}" " """"""""public"void"clear()" """"""""{" """"""""""""history.Add(new"List<PaintObject>(paintObjects));" """"""""""""paintObjects.Clear();" """"""""""""this.Repaint();" """"""""}" " """"""""public"void"undo()" """"""""{" """"""""""""int"lastItemIndex"="history.Count"–"1;" """"""""""""paintObjects"="history.Last<List<PaintObject>>();" """"""""""""history.RemoveAt(lastItemIndex);" """"""""""""this.Refresh();"" """"""""}" """"}" }" 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" " " " " Paint app.config [ ] LinePaint.cs [ ] PaintCanvas.cs [ ] PaintCanvasCommands.cs [ ] PencilPaint.cs [ ] RectPaint.cs [ ] Window1.xaml.cs [ ] Latest changes only [7 files] Hovering over any colored block reveals the latest changes 1400 """history.RemoveAt(lastItemIndex);" """this.Refresh();"" 142" 143" PaintCanvas.cs [ ]
  • 59.
    h"ps://online.ide.com0 IDE0 r! James0Green0000/0000Paint0 EXPLOREOPEN SEARCH BUILD TEST CHANGES CONSOLE " Paint # bin # obj # Properties app.config App.xaml App.xaml.cs ColorPanel.xaml ColorPanel.xaml.cs EraserPaint.cs IPaintObjectConstructorList… LinePaint.cs PaintCanvas.cs PaintCanvasCommands.cs PaintObject.cs PaintObjectConstructor.cs PencilPaint.cs RectPaint.cs Window1.xaml Window1.xaml.cs 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" & & 129" 130" 131" 132" 133" 134" 135" 136" 137" 138" 139" 140" 141" 142" 143" 144" 145" 146" 147" 148" 149" 150" 151" " " " " """"""""" """"""""}" " """"""""public"void"clear()" """"""""{" """"""""""""history.Add(new"List<PaintObject>(paintObjects));" """"""""""""paintObjects.Clear();" """"""""""""this.Repaint();" """"""""}" " """"""""public"void"undo()" """"""""{" """"""""""""int"lastItemIndex"="history.Count"–"1;" """"""""""""paintObjects"="history.Last<List<PaintObject>>();" """"""""""""history.RemoveAt(lastItemIndex);" """"""""""""this.Refresh();"" """"""""}" """"}" }" """history.RemoveAt(lastItemIndex);" """this.Refresh();"" 142" 143" 1400 " Paint app.config [ ] LinePaint.cs [ ] PaintCanvas.cs [ ] PaintCanvasCommands.cs [ ] PencilPaint.cs [ ] RectPaint.cs [ ] Window1.xaml.cs [ ] Latest changes only [7 files] Historical details are accessible by clicking on any colored block #9050 Latest update “Improved readability and consistency.” 10 hours ago kathy.farewell@live.com #9044 “Cleaned up the code and fixed some [...] 12 hours ago joe.smith@live.com #8227 Previous update “Added undo method” 0 4 weeks ago yourself Load previous history """" """history.RemoveAt(history.Count"k"1);" """this.Refresh();"" 141" 142" """history.RemoveAt(lastItemIndex);" """this.Refresh();"" 142" 143" """history.RemoveAt(history.Count"k"1);" """this.Repaint();"" 141" 142" ..." " " " ...0 ..." " " " ...0 ..." " " " ...0 PaintCanvas.cs [ ]
  • 60.
    h"ps://online.ide.com0 IDE0 r! James0Green0000/0000Paint0 EXPLOREOPEN SEARCH BUILD TEST CHANGES CONSOLE " Paint # bin # obj # Properties app.config App.xaml App.xaml.cs ColorPanel.xaml ColorPanel.xaml.cs EraserPaint.cs IPaintObjectConstructorList… LinePaint.cs PaintCanvas.cs PaintCanvasCommands.cs PaintObject.cs PaintObjectConstructor.cs PencilPaint.cs RectPaint.cs Window1.xaml Window1.xaml.cs 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" & & " """"""""" """"""""}" " """"""""public"void"clear()" """"""""{" """"""""""""history.Add(new"List<PaintObject>(paintObjects));" """"""""""""paintObjects.Clear();" """"""""""""this.Repaint();" """"""""}" " """"""""public"void"undo()" """"""""{" """"""""""""int"lastItemIndex"="history.Count"–"1;" """"""""""""paintObjects"="history.Last<List<PaintObject>>();" """"""""""""history.RemoveAt(lastItemIndex);" """"""""""""this.Refresh();"" """"""""}" """"}" }" 129" 130" 131" 132" 133" 134" 135" 136" 137" 138" 139" 140" 141" 142" 143" 144" 145" 146" 147" 148" 149" 150" 151" " " " 142" 143" 1400 paint " Paint app.config [ ] LinePaint.cs [ ] PaintCanvas.cs [ ] PaintCanvasCommands.cs [ ] PencilPaint.cs [ ] RectPaint.cs [ ] Window1.xaml.cs [ ] Latest changes only [7 files] Code is editable while seeing the historical details #9050 Latest update “Improved readability and consistency.” 10 hours ago kathy.farewell@live.com #9044 “Cleaned up the code and fixed some [...] 12 hours ago joe.smith@live.com #8227 Previous update “Added undo method” 0 4 weeks ago yourself Load previous history """" """history.RemoveAt(history.Count"k"1);" """this.Refresh();"" 141" 142" """history.RemoveAt(lastItemIndex);" """this.Refresh();"" 142" 143" """history.RemoveAt(history.Count"k"1);" """this.Repaint();"" 141" 142" ..." " " " ...0 ..." " " " ...0 ..." " " " ...0 PaintCanvas.cs [ ]
  • 61.
    h"ps://online.ide.com0 IDE0 r! James0Green0000/0000Paint0 EXPLOREOPEN SEARCH BUILD TEST CHANGES CONSOLE " Paint # bin # obj # Properties app.config App.xaml App.xaml.cs ColorPanel.xaml ColorPanel.xaml.cs EraserPaint.cs IPaintObjectConstructorList… LinePaint.cs PaintCanvas.cs PaintCanvasCommands.cs PaintObject.cs PaintObjectConstructor.cs PencilPaint.cs RectPaint.cs Window1.xaml Window1.xaml.cs 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" & & *PaintCanvas.cs [1] " """"""""" """"""""}" " """"""""public"void"clear()" """"""""{" """"""""""""history.Add(new"List<PaintObject>(paintObjects));" """"""""""""paintObjects.Clear();" """"""""""""this.Repaint();" """"""""}" " """"""""public"void"undo()" """"""""{" """"""""""""int"lastItemIndex"="history.Count"–"1;" """"""""""""paintObjects"="history.Last<List<PaintObject>>();" """"""""""""history.RemoveAt(lastItemIndex);" """"""""""""this.Repaint();"" """"""""}" """"}" }" 129" 130" 131" 132" 133" 134" 135" 136" 137" 138" 139" 140" 141" 142" 143" 144" 145" 146" 147" 148" 149" 150" 151" " " " 1400 " Paint app.config [ ] LinePaint.cs [ ] PaintCanvas.cs [ ] PaintCanvasCommands.cs [ ] PencilPaint.cs [ ] RectPaint.cs [ ] Window1.xaml.cs [ ] Latest changes only [7 files] Local 2 seconds ago yourself #9050 Latest update “Improved readability” 10 hours ago kathy.farewell@live.com #9044 “Cleaned up the code…” 12 hours ago joe.smith@live.com #8227 Previous update “Added undo method” 0 4 weeks ago yourself """" """history.RemoveAt(history.Count"–"1);" """this.Refresh();"" 141" 142" """history.RemoveAt(lastItemIndex);" """this.Refresh();"" 142" 143" """history.RemoveAt(history.Count"k"1);" """this.Repaint();"" 141" 142" ..." " " " ...0 ..." " " " ...0 ..." " " " ...0 """history.RemoveAt(lastItemIndex);" """this.Repaint();"" 142" 143" ..." " " " ...0 joe.smith@live.com0 james.green@live.com0 """history.RemoveAt(lastItemIndex);" """""""this.Repaint();"" 142" 143" Contacting the author of a particular change is easy joe.smith@live.com0 james.green@live.com0 PaintCanvas.cs [ ]
  • 62.
    h"p://online.visualstudio.com4 Visual4Studio4 r! James4Green4444/4444Paint4 EXPLOREOPEN SEARCH BUILD TEST CHANGES CONSOLE " Paint # bin # obj # Properties app.config App.xaml App.xaml.cs ColorPanel.xaml ColorPanel.xaml.cs EraserPaint.cs IPaintObjectConstructorList … LinePaint.cs PaintCanvas.cs PaintCanvasCommands.cs PaintObject.cs PaintObjectConstructor.cs PencilPaint.cs RectPaint.cs Window1.xaml Window1.xaml.cs 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" 129" 130" 131" 132" 133" 134" 135" 136" 137" 138" 139" 140" 141" 142" 143" 144" 145" 146" 147" 148" 149" 150" 151" " " "#9050 Latest update “Improved readability and consistency.” 10 hours ago kathy.farewell@live.com #9044 “Cleaned up the code and fixed some [...] 12 hours ago joe.smith@live.com #8227 Previous update “Added undo method” 4 4 weeks ago yourself Load previous history " """"""""" """"""""}" " """"""""public"void"clear()" """"""""{" """"""""""""history.Add(new"List<PaintObject>(paintObjects));" """"""""""""paintObjects.Clear();" """"""""""""this.Repaint();" """"""""}" " """"""""public"void"undo()" """"""""{" """"""""""""int"lastItemIndex"="history.Count"–"1;" """"""""""""paintObjects"="history.Last<List<PaintObject>>();" """"""""""""history.RemoveAt(lastItemIndex);" """"""""""""this.Refresh();"" """"""""}" """"}" }" """history.RemoveAt(lastItemIndex);" """this.Refresh();"" 142" 143" 1404 PaintCanvas.cs [ ] """" """history.RemoveAt(history.Count"k"1);" """this.Refresh();"" 141" 142" """history.RemoveAt(lastItemIndex);" """this.Refresh();"" 142" 143" """history.RemoveAt(history.Count"k"1);" """this.Repaint();"" 141" 142" ..." " " " ...4 ..." " " " ...4 ..." " " " ...4 " Paint app.config [ ] LinePaint.cs [ ] PaintCanvas.cs [ ] PaintCanvasCommands.cs [ ] PencilPaint.cs [ ] RectPaint.cs [ ] Window1.xaml.cs [ ] PaintCanvas.cs [ ] Latest changes only [7 files] Designing and evaluating Bellevue: A screenshot
  • 63.
    Supporting Developers’ Coordination inThe IDE Guzzi, Bacchelli, Riche, van Deursen