BalloonFamily.java
1    package balloonpeople;
2    
3    import painter.SPainter;
4    
5    import javax.swing.*;
6    import java.awt.*;
7    import java.awt.geom.Point2D;
8    import java.util.ArrayList;
9    import java.util.Scanner;
10   
11   public class BalloonFamily {
12       private ArrayList<BalloonPerson> people;
13   
14   
15       public BalloonFamily(int numberOfPeople) {
16           this.people = new ArrayList<>(numberOfPeople);
17   
18           for (int i = 0; i < numberOfPeople; i++) {
19               String name = getString("What is the Name of Family Member " + (i + 1));
20               int age = getNumber("Age of Family Member " + (i + 1));
21               double height = getNumberDouble("Height of Family Member " + (i + 1));
22               people.add(new BalloonPerson(name, age, height));
23           }
24       }
25   
26       public String toString() {
27           StringBuilder returnString = new StringBuilder();
28   
29           for (int i = 0; i < people.size(); i++) {
30               returnString.append(people.get(i));
31           }
32           return returnString.toString();
33       }
34   
35       public void paint(SPainter painter) {
36           int paddingX = 300;
37           //Starting Position
38           int startingX = 200;
39           int startingY = 200;
40           painter.moveTo(new Point2D.Double(startingX, startingY));
41           for (int i = 0; i < people.size(); i++) {
42               people.get(i).paintPerson(painter);
43               painter.moveTo(new Point2D.Double(people.get(i).getRightEdgeX() + paddingX, people.get(i).getHeadPositionY()));
44               if (people.get(i).isAtEdge(painter)) {
45                   painter.wash();
46                   painter.moveToCenter();
47                   painter.setFontSize(25);
48                   painter.setColor(Color.red);
49                   painter.draw("Error: Your picture is too big, try adding less family");
50                   painter.mbk(30);
51                   painter.draw("Auto-shrink might be added soon");
52               }
53           }
54       }
55       private int getNumber(String prompt) {
56           String nss = JOptionPane.showInputDialog(null, prompt + "?");
57           Scanner scanner = new Scanner(nss);
58           return scanner.nextInt();
59       }
60   
61       private double getNumberDouble(String prompt) {
62           String nss = JOptionPane.showInputDialog(null, prompt + "?");
63           Scanner scanner = new Scanner(nss);
64           return scanner.nextDouble();
65       }
66   
67       private String getString(String prompt) {
68           String nss = JOptionPane.showInputDialog(null, prompt + "?");
69           Scanner scanner = new Scanner(nss);
70           return scanner.next();
71       }
72   }
73