Skip to content

Commit 71755ca

Browse files
committed
Combined TurtleWindow and ProgramWindow
1 parent 66c6a34 commit 71755ca

13 files changed

Lines changed: 119 additions & 154 deletions

File tree

src/main/java/org/teachingextensions/WindowUtils/ProgramWindow.java

Lines changed: 69 additions & 60 deletions
Original file line numberDiff line numberDiff line change
@@ -20,116 +20,125 @@
2020
* allows you to change the color of the background and more...
2121
*/
2222
@SuppressWarnings({"serial"})
23-
public class ProgramWindow extends JPanel
24-
{
25-
private JFrame frame;
26-
public ArrayList<Paintable> additional = new ArrayList<>();
27-
public ProgramWindow(String title)
28-
{
23+
public class ProgramWindow extends JPanel {
24+
protected final ArrayList<Paintable> painters = new ArrayList<Paintable>();
25+
private JFrame frame;
26+
27+
public ProgramWindow(String title) {
2928
this();
30-
frame = new JFrame(title);
31-
getFrame().getContentPane().add(this);
29+
this.frame = new JFrame(title);
30+
this.frame.getContentPane().add(this);
3231
ProgramWindow.createStandardFrame(getFrame());
3332
}
33+
34+
public ProgramWindow() {
35+
setPreferredSize(new Dimension(627, 442));
36+
setColor(PenColors.Whites.White);
37+
}
38+
39+
public static void createStandardFrame(JFrame frame) {
40+
WindowUtils.testFrame(frame, new VirtualProctorWeb(), new FrameCloser());
41+
}
42+
43+
public static Graphics2D configureGraphics2D(Graphics g) {
44+
Graphics2D g2d = (Graphics2D) g.create();
45+
g2d.setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON);
46+
g2d.setRenderingHint(RenderingHints.KEY_COLOR_RENDERING, RenderingHints.VALUE_COLOR_RENDER_QUALITY);
47+
g2d.setRenderingHint(RenderingHints.KEY_STROKE_CONTROL, RenderingHints.VALUE_STROKE_PURE);
48+
g2d.setRenderingHint(RenderingHints.KEY_DITHERING, RenderingHints.VALUE_DITHER_ENABLE);
49+
return g2d;
50+
}
51+
3452
/**
3553
* Adds a button instance to a window
3654
* <p><b>Example:</b> {@code programWindow.addButton(myButton)}</p>
3755
*
3856
* @param button
3957
* A button instance
4058
*/
41-
public void addButton(JButton button)
42-
{
59+
public void addButton(JButton button) {
4360
this.add(button);
4461
}
45-
public ProgramWindow()
46-
{
47-
setPreferredSize(new Dimension(627, 442));
48-
setColor(PenColors.Whites.White);
49-
}
50-
public static void createStandardFrame(JFrame frame)
51-
{
52-
WindowUtils.testFrame(frame, new VirtualProctorWeb(), new FrameCloser());
53-
}
62+
5463
@Override
55-
public void paint(Graphics g)
56-
{
64+
public void paint(Graphics g) {
5765
super.paint(g);
66+
if (this.painters == null) {
67+
return;
68+
}
69+
70+
ArrayList<Paintable> toPaint = new ArrayList<>(this.painters);
71+
5872
Graphics2D g2d = configureGraphics2D(g);
59-
for (Paintable p : additional)
60-
{
73+
for (Paintable p : toPaint) {
6174
p.paint(g2d, this);
6275
}
63-
g2d.dispose();
6476
}
65-
public void setColor(Color backgroundColor)
66-
{
77+
78+
public void setColor(Color backgroundColor) {
6779
setBackground(backgroundColor);
6880
}
69-
public void addPaintable(Paintable additional)
70-
{
71-
this.additional.add(additional);
72-
repaint();
73-
}
74-
public void removePaintable()
75-
{
76-
additional.clear();
77-
repaint();
81+
82+
public ProgramWindow clearWindow() {
83+
this.painters.clear();
84+
return this;
7885
}
86+
7987
/**
8088
* Adds a right mouse click listener instance to a window
8189
* <p><b>Example:</b> {@code programWindow.addMouseRightClickListener(myRightClickListener)}</p>
8290
*
8391
* @param listener
8492
* A listener instance
8593
*/
86-
public void addMouseRightClickListener(MouseRightClickListener listener)
87-
{
94+
public void addMouseRightClickListener(MouseRightClickListener listener) {
8895
addMouseListener(new RightClickMouseAdapter(listener));
8996
}
97+
9098
/**
9199
* Adds a left mouse click listener instance to a window
92100
* <p><b>Example:</b> {@code programWindow.addMouseLeftClickListener(myLeftClickListener)}</p>
93101
*
94102
* @param listener
95103
* A listener instance
96104
*/
97-
public void addMouseLeftClickListener(MouseLeftClickListener listener)
98-
{
105+
public void addMouseLeftClickListener(MouseLeftClickListener listener) {
99106
addMouseListener(new LeftClickMouseAdapter(listener));
100107
}
108+
101109
/**
102110
* Adds a background image to a window
103111
* <p><b>Example:</b> {@code programWindow.setBackgroundImage("http://www.coolpicture.com/sunshine.jpg")}</p>
104112
*
105113
* @param url
106114
* A URL path to an image
107115
*/
108-
public void setBackgroundImage(String url)
109-
{
110-
addPaintable(new ImageBackground(url));
116+
public void setBackgroundImage(String url) {
117+
add(new ImageBackground(url));
111118
}
112-
public static Graphics2D configureGraphics2D(Graphics g)
113-
{
114-
Graphics2D g2d = (Graphics2D) g.create();
115-
g2d.setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON);
116-
g2d.setRenderingHint(RenderingHints.KEY_COLOR_RENDERING, RenderingHints.VALUE_COLOR_RENDER_QUALITY);
117-
g2d.setRenderingHint(RenderingHints.KEY_STROKE_CONTROL, RenderingHints.VALUE_STROKE_PURE);
118-
g2d.setRenderingHint(RenderingHints.KEY_DITHERING, RenderingHints.VALUE_DITHER_ENABLE);
119-
return g2d;
120-
}
121-
public void removePaintable(Paintable item)
122-
{
123-
this.additional.remove(item);
124-
repaint();
125-
}
126-
public JFrame getFrame()
127-
{
119+
120+
public JFrame getFrame() {
128121
return frame;
129122
}
130-
public void setWindowVisible(boolean b)
131-
{
123+
124+
public void setWindowVisible(boolean b) {
132125
this.frame.setVisible(b);
133126
this.setVisible(b);
134127
}
128+
129+
public ProgramWindow add(Paintable painter) {
130+
if (!this.painters.contains(painter)) {
131+
this.painters.add(painter);
132+
}
133+
134+
return this;
135+
}
136+
137+
public ProgramWindow remove(Paintable painter) {
138+
if (this.painters.contains(painter)) {
139+
this.painters.remove(painter);
140+
}
141+
142+
return this;
143+
}
135144
}

src/main/java/org/teachingextensions/WindowUtils/TurtlePanel.java

Lines changed: 4 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,6 @@
77
import org.teachingextensions.logo.utils.EventUtils.MouseRightClickListener;
88
import org.teachingextensions.logo.utils.InterfaceUtils.TurtlePainter;
99
import org.teachingextensions.logo.utils.InterfaceUtils.TurtleTrailPainter;
10-
import org.teachingextensions.logo.utils.InterfaceUtils.TurtleWindow;
1110
import org.teachingextensions.logo.utils.LineAndShapeUtils.Paintable;
1211

1312
import javax.swing.*;
@@ -18,7 +17,7 @@ public class TurtlePanel {
1817
protected Animals animal = Animals.Turtle;
1918
protected Image image;
2019
private Turtle turtle;
21-
private TurtleWindow window;
20+
private ProgramWindow window;
2221
private Paintable trailPainter;
2322
private Paintable turtlePainter;
2423

@@ -31,7 +30,7 @@ public TurtlePanel(String title) {
3130
}
3231

3332
public TurtlePanel(String title, Turtle turtle) {
34-
this.window = new TurtleWindow(title);
33+
this.window = new ProgramWindow(title);
3534
this.turtle = turtle;
3635
this.image = loadAnimal();
3736
configurePainters();
@@ -83,7 +82,7 @@ protected Paintable createTurtlePainter() {
8382
return this.trailPainter = new TurtleTrailPainter(this.turtle);
8483
}
8584

86-
public TurtleWindow getWindow() {
85+
public ProgramWindow getWindow() {
8786
return window;
8887
}
8988

@@ -112,7 +111,7 @@ public void setBackgroundImage(String picture) {
112111
}
113112

114113
public ArrayList<Paintable> getAdditional() {
115-
return this.window.additional;
114+
return this.window.painters;
116115
}
117116

118117
protected Image loadAnimal() {

0 commit comments

Comments
 (0)