001// License: GPL. For details, see LICENSE file. 002package org.openstreetmap.josm.gui.mappaint; 003 004import java.util.ArrayList; 005import java.util.Arrays; 006import java.util.Collection; 007import java.util.Iterator; 008import java.util.List; 009import java.util.Objects; 010 011import org.openstreetmap.josm.gui.mappaint.styleelement.StyleElement; 012 013/** 014 * List of {@link StyleElement}s, immutable. 015 */ 016public class StyleElementList implements Iterable<StyleElement> { 017 private final List<StyleElement> lst; 018 019 /** 020 * Constructs a new {@code StyleList}. 021 */ 022 public StyleElementList() { 023 lst = new ArrayList<>(); 024 } 025 026 public StyleElementList(StyleElement... init) { 027 lst = new ArrayList<>(Arrays.asList(init)); 028 } 029 030 public StyleElementList(Collection<StyleElement> sl) { 031 lst = new ArrayList<>(sl); 032 } 033 034 public StyleElementList(StyleElementList sl, StyleElement s) { 035 lst = new ArrayList<>(sl.lst); 036 lst.add(s); 037 } 038 039 @Override 040 public Iterator<StyleElement> iterator() { 041 return lst.iterator(); 042 } 043 044 public boolean isEmpty() { 045 return lst.isEmpty(); 046 } 047 048 public int size() { 049 return lst.size(); 050 } 051 052 @Override 053 public String toString() { 054 return lst.toString(); 055 } 056 057 @Override 058 public boolean equals(Object obj) { 059 if (this == obj) return true; 060 if (obj == null || getClass() != obj.getClass()) return false; 061 StyleElementList that = (StyleElementList) obj; 062 return Objects.equals(lst, that.lst); 063 } 064 065 @Override 066 public int hashCode() { 067 return Objects.hash(lst); 068 } 069}