// License: GPL. For details, see LICENSE file. package org.openstreetmap.josm.gui.tagging.presets.items; import java.awt.GridLayout; import java.util.Collection; import java.util.LinkedList; import java.util.List; import java.util.Map; import javax.swing.JPanel; import org.openstreetmap.josm.data.osm.OsmPrimitive; import org.openstreetmap.josm.data.osm.Tag; import org.openstreetmap.josm.gui.tagging.presets.TaggingPresetItem; import org.openstreetmap.josm.tools.GBC; /** * A group of {@link Check}s. * @since 6114 */ public class CheckGroup extends TaggingPresetItem { /** * Number of columns (positive integer) */ public String columns; // NOSONAR /** * List of checkboxes */ public final List<Check> checks = new LinkedList<>(); @Override public boolean addToPanel(JPanel p, Collection<OsmPrimitive> sel, boolean presetInitiallyMatches) { Integer cols = Integer.valueOf(columns); int rows = (int) Math.ceil(checks.size()/cols.doubleValue()); JPanel panel = new JPanel(new GridLayout(rows, cols)); for (Check check : checks) { check.addToPanel(panel, sel, presetInitiallyMatches); } p.add(panel, GBC.eol()); return false; } @Override public void addCommands(List<Tag> changedTags) { for (Check check : checks) { check.addCommands(changedTags); } } @Override protected Boolean matches(Map<String, String> tags) { for (Check check : checks) { if (Boolean.TRUE.equals(check.matches(tags))) { return Boolean.TRUE; } } return null; } @Override public String toString() { return "CheckGroup [columns=" + columns + ']'; } }