SimpleDots.java
package npw;

import painter.SPainter;
import shapes.SCircle;
import javax.swing.*;
import java.awt.*;
import java.util.Scanner;

public class SimpleDots {
    public static void main(String[] args) {
        SwingUtilities.invokeLater(new Runnable() {
            public void run() {
                new SimpleDots();
            }
        });
    }

    public SimpleDots() {
        paintTheImange();
    }

    private void paintTheImange() {
        int width = getNumber("width");
        int height = getNumber("height");
        int colwidth = getNumber("dot spacing");
        SPainter painter = new SPainter("Colorful Abstract Gradient", width, height);

        SCircle dot = new SCircle(5);
        painter.mfd(height / 2);
        painter.tl(90);
        painter.mfd(width / 2 - 10);
        painter.tl(90);
        painterGradient(painter, dot, height, width, colwidth);
    }

    private static int getNumber(String prompt) {
        String nss = JOptionPane.showInputDialog(null, prompt + "?");
        Scanner scanner = new Scanner(nss);
        return scanner.nextInt();
    }

    private static String getcolor(String prompt) {
        String nsp = JOptionPane.showInputDialog(null, "Enter Your Color|RED|BLUE|GREEN");
        Scanner scanner = new Scanner(nsp);
        return scanner.next();
    }

    private void painterGradient(SPainter painter, SCircle dot, int height, int width, int colwidth) {
        int cols = 0;
        int nrofcols = (width / colwidth) - 2;
        while (cols < nrofcols) {
            nextCol(painter, colwidth);
            paintColumn(painter, dot, height, colwidth);
            cols = cols + 1;
        }
    }

    private static void paintOneDot(SPainter painter, SCircle dot) {
            assignedColors(painter);
            painter.paint(dot);
        }

    private void paintColumn(SPainter painter, SCircle dot, int height, int colwidth) {
        int totalDistanceTraveled = 0;
        while (totalDistanceTraveled < height - (dot.radius() * 3)) {
            totalDistanceTraveled = totalDistanceTraveled + colwidth;
            painter.mfd(colwidth);
            paintOneDot(painter, dot);
        }
        painter.mbk(totalDistanceTraveled);
    }

    private void nextCol(SPainter painter, int colwidth) {
        painter.tl(90);
        painter.mfd(colwidth);
        painter.tr(90);
    }
    static String color = getcolor("?");
    private static void assignedColors(SPainter painter) {
        if (color.equalsIgnoreCase("red")){
            painter.setColor(Color.RED);
        } else if (color.equalsIgnoreCase("green")){
            painter.setColor(Color.GREEN);
        } else if (color.equalsIgnoreCase("blue")){
            painter.setColor(Color.BLUE);
        } else{
            painter.setColor(Color.black);
        }
    }
}