aboutsummaryrefslogtreecommitdiff
path: root/Week15 Mandelbrot/src/com/camilstaps/mandelbrot
diff options
context:
space:
mode:
Diffstat (limited to 'Week15 Mandelbrot/src/com/camilstaps/mandelbrot')
-rw-r--r--Week15 Mandelbrot/src/com/camilstaps/mandelbrot/FractalModel.java4
-rw-r--r--Week15 Mandelbrot/src/com/camilstaps/mandelbrot/Grid.java47
-rw-r--r--Week15 Mandelbrot/src/com/camilstaps/mandelbrot/MandelbrotWindow.java2
-rw-r--r--Week15 Mandelbrot/src/com/camilstaps/mandelbrot/Textfields.java23
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() {