diff options
Diffstat (limited to 'Week15 Mandelbrot/src/com/camilstaps')
4 files changed, 50 insertions, 26 deletions
diff --git a/Week15 Mandelbrot/src/com/camilstaps/mandelbrot/FractalModel.java b/Week15 Mandelbrot/src/com/camilstaps/mandelbrot/FractalModel.java index ab2446d..dd09100 100644 --- a/Week15 Mandelbrot/src/com/camilstaps/mandelbrot/FractalModel.java +++ b/Week15 Mandelbrot/src/com/camilstaps/mandelbrot/FractalModel.java @@ -34,8 +34,8 @@ public class FractalModel extends Observable { private double start_x, start_y, end_x, end_y; public FractalModel() { - start_x = -1.46; - end_x = 0.54; + start_x = -1; + end_x = 1; start_y = -1; end_y = 1; } diff --git a/Week15 Mandelbrot/src/com/camilstaps/mandelbrot/Grid.java b/Week15 Mandelbrot/src/com/camilstaps/mandelbrot/Grid.java index 3d05b14..9fca89a 100644 --- a/Week15 Mandelbrot/src/com/camilstaps/mandelbrot/Grid.java +++ b/Week15 Mandelbrot/src/com/camilstaps/mandelbrot/Grid.java @@ -69,6 +69,8 @@ public class Grid extends JPanel implements Observer, MouseListener, MouseMotion private ProgressView progressView; + private boolean useMultipleSwingWorkers = false; + public Grid(FractalModel fractalModel) { this.fractalModel = fractalModel; fractalModel.addObserver(this); @@ -108,6 +110,10 @@ public class Grid extends JPanel implements Observer, MouseListener, MouseMotion public int getHeight() { return height; } + + public void setUseMultipleSwingWorkers(boolean value) { + useMultipleSwingWorkers = value; + } @Override public final synchronized void update(Observable o, Object o1) { @@ -120,19 +126,25 @@ public class Grid extends JPanel implements Observer, MouseListener, MouseMotion } } synchronized (updaters) { - updaters.clear(); - Updater u1 = new Updater(0, width / 2, 0, height / 2); - u1.execute(); - updaters.add(u1); - Updater u2 = new Updater(width / 2, width, 0, height / 2); - u2.execute(); - updaters.add(u2); - Updater u3 = new Updater(0, width / 2, height / 2, height); - u3.execute(); - updaters.add(u3); - Updater u4 = new Updater(width / 2, width, height / 2, height); - u4.execute(); - updaters.add(u4); + updaters.clear(); + if (useMultipleSwingWorkers) { + Updater u1 = new Updater(0, width / 2, 0, height / 2); + u1.execute(); + updaters.add(u1); + Updater u2 = new Updater(width / 2, width, 0, height / 2); + u2.execute(); + updaters.add(u2); + Updater u3 = new Updater(0, width / 2, height / 2, height); + u3.execute(); + updaters.add(u3); + Updater u4 = new Updater(width / 2, width, height / 2, height); + u4.execute(); + updaters.add(u4); + } else { + Updater u = new Updater(0, width, 0, height); + u.execute(); + updaters.add(u); + } } } @@ -383,13 +395,12 @@ public class Grid extends JPanel implements Observer, MouseListener, MouseMotion } public void setValue() { - int value = 100; + int sum = 0, count = 0; for (Updater updater : updaters) { - if (updater.getProgress() < value) { - value = updater.getProgress(); - } + sum += updater.getProgress(); + count++; } - setValue(value); + setValue(sum / count); } } diff --git a/Week15 Mandelbrot/src/com/camilstaps/mandelbrot/MandelbrotWindow.java b/Week15 Mandelbrot/src/com/camilstaps/mandelbrot/MandelbrotWindow.java index 9322be9..81a4204 100644 --- a/Week15 Mandelbrot/src/com/camilstaps/mandelbrot/MandelbrotWindow.java +++ b/Week15 Mandelbrot/src/com/camilstaps/mandelbrot/MandelbrotWindow.java @@ -45,7 +45,7 @@ public class MandelbrotWindow extends JFrame { setVisible(true); Grid grid = new Grid(fm); - Textfields textfields = new Textfields(fm); + Textfields textfields = new Textfields(fm, grid); add(grid, BorderLayout.CENTER); add(grid.getProgressView(), BorderLayout.SOUTH); diff --git a/Week15 Mandelbrot/src/com/camilstaps/mandelbrot/Textfields.java b/Week15 Mandelbrot/src/com/camilstaps/mandelbrot/Textfields.java index b4eb6a7..d719c4a 100644 --- a/Week15 Mandelbrot/src/com/camilstaps/mandelbrot/Textfields.java +++ b/Week15 Mandelbrot/src/com/camilstaps/mandelbrot/Textfields.java @@ -30,6 +30,7 @@ import java.awt.event.ActionListener; import java.util.Observable; import java.util.Observer; import javax.swing.JButton; +import javax.swing.JCheckBox; import javax.swing.JLabel; import javax.swing.JPanel; import javax.swing.JTextField; @@ -41,8 +42,9 @@ import javax.swing.JTextField; public class Textfields extends JPanel implements Observer { private final FractalModel fractalModel; + private final Grid grid; - private final String INITIAL_CENTER_X = "0", + private final String INITIAL_CENTER_X = "-0.46", INITIAL_CENTER_Y = "0", INITIAL_SCALE = "0.5"; @@ -51,20 +53,23 @@ public class Textfields extends JPanel implements Observer { private final JTextField field_scale = new JTextField(INITIAL_SCALE, 6); private final JButton button_redraw = new JButton("Redraw"); private final JButton button_reset = new JButton("Reset"); + private final JCheckBox checkbox_multiple_swingworkers = new JCheckBox("Multiple SwingWorkers"); - public Textfields(FractalModel fractalModel) { + public Textfields(FractalModel fractalModel, Grid grid) { super(new BorderLayout()); this.fractalModel = fractalModel; + this.grid = grid; + fractalModel.addObserver(this); setupControls(); - update(fractalModel, null); + button_redraw.doClick(); } private void setupControls() { - JPanel panel = new JPanel(new GridLayout(10,1)); + JPanel panel = new JPanel(new GridLayout(9,1)); panel.add(new JLabel("Center x:")); panel.add(field_centerX); @@ -97,13 +102,21 @@ public class Textfields extends JPanel implements Observer { }); panel.add(button_reset); + checkbox_multiple_swingworkers.addActionListener(new ActionListener() { + @Override + public void actionPerformed(ActionEvent ae) { + grid.setUseMultipleSwingWorkers(checkbox_multiple_swingworkers.isSelected()); + } + }); + panel.add(checkbox_multiple_swingworkers); + add(panel, BorderLayout.NORTH); add(new JPanel(), BorderLayout.CENTER); } @Override public int getWidth() { - return 100; + return 200; } protected double getStartX() { |