diff options
| author | Camil Staps | 2015-06-05 15:16:22 +0200 | 
|---|---|---|
| committer | Camil Staps | 2015-06-05 15:16:22 +0200 | 
| commit | 324aa6d4b9dad0f993fd3ff2d766c7a2f4397793 (patch) | |
| tree | 542fce08597b01a3b2a9b9f47ad88393a2c8ac17 /Week15 Mandelbrot/src/com | |
| parent | Version with four swingworkers (diff) | |
Option for multiple (4) or single swingworker(s)
Diffstat (limited to 'Week15 Mandelbrot/src/com')
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() { | 
