Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- package domain;
- import java.awt.Graphics;
- import java.util.ArrayList;
- public class Tekening implements Drawable{
- private static final int MIN_X = 0;
- private static final int MAX_X = 399;
- private static final int MIN_Y = 0;
- private static final int MAX_Y = 399;
- private String naam;
- protected ArrayList<Vorm> vormen;
- public Tekening(String naam) {
- setNaam(naam);
- vormen = new ArrayList<>();
- }
- private void setNaam(String naam) {
- if (naam == null || naam.trim().isEmpty()) throw new IllegalArgumentException();
- else this.naam = naam;
- }
- public String getNaam() {
- return naam;
- }
- public static int getMinX() {
- return MIN_X;
- }
- public static int getMaxX() {
- return MAX_X;
- }
- public static int getMinY() {
- return MIN_Y;
- }
- public static int getMaxY() {
- return MAX_Y;
- }
- public void voegToe(Vorm vorm) {
- if (vormPast(vorm) == true) {
- this.vormen.add(vorm);
- }
- }
- private boolean vormPast(Vorm vorm) {
- if (vorm.getOmhullende().getLinkerBovenhoek().getX() < MIN_X) {
- throw new DomainException("De toegevoegde vorm past niet in de tekening langs de linkererkant.");
- }
- if (vorm.getOmhullende().getLinkerBovenhoek().getX() + vorm.getOmhullende().getBreedte() > MAX_X) {
- throw new DomainException("De toegevoegde vorm past niet in de tekening langs de rechterkant.");
- }
- if (vorm.getOmhullende().getLinkerBovenhoek().getY() < MIN_Y) {
- throw new DomainException("De toegevoegde vorm past niet in de tekening langs de bovenkant.");
- }
- if (vorm.getOmhullende().getLinkerBovenhoek().getY() + vorm.getOmhullende().getHoogte() > MAX_Y) {
- throw new DomainException("De toegevoegde vorm past niet in de tekening langs de onderkant.");
- }
- return true;
- }
- public Vorm getVorm(int index) {
- return vormen.get(index-1);
- }
- public int getAantalVormen() {
- return vormen.size();
- }
- public int aantalOnzichtbaar() {
- int teller = 0;
- for (int i = 0; i < this.vormen.size(); i++) {
- if (!this.vormen.get(i).isZichtbaar()) {
- teller++;
- }
- }
- return teller;
- }
- public int aantalZichtbaar() {
- int teller = 0;
- for (Vorm v : vormen) {
- if (v.isZichtbaar()) {
- teller++;
- }
- }
- return teller;
- }
- public void verwijder(Vorm vorm) {
- vormen.remove(vorm);
- }
- public boolean bevat(Vorm vorm) {
- return vormen.contains(vorm);
- }
- public boolean equals(Object obj) {
- if (obj instanceof Tekening) {
- Tekening t = (Tekening) obj;
- return t.vormen.containsAll(this.vormen) && t.vormen.size() == this.vormen.size();
- }
- return false;
- }
- public String toString() {
- String result = "Tekening met naam " + this.naam + " bestaat uit " + vormen.size() + " vormen: \n";
- for (Vorm v : vormen) {
- result+= v.toString() + '\n';
- }
- return result;
- }
- @Override
- public void teken(Graphics g) {
- for (Vorm v: this.vormen) {
- Drawable d = (Drawable) v;
- d.teken(g);
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement