package org.uva.student.calinwouter.qlqls.qls.model.functions; import org.uva.student.calinwouter.qlqls.qls.model.FieldType; import org.uva.student.calinwouter.qlqls.qls.model.QLSRenderParameters; import javax.swing.*; import java.awt.*; import java.util.*; import java.util.List; public class Sections { private final List<Section> sections; public Map<String, Object> deriveStylingSettingsMap(FieldType fieldType) { for (Section section : sections) { Map<String, Object> pageStylingSettings = section.deriveStylingSettingsMap(fieldType); if (pageStylingSettings != null) { return pageStylingSettings; } } return null; } public List<String> collectFields() { final List<String> fieldNames = new LinkedList<String>(); for (Section section : sections) { final List<String> sectionFieldNames = section.collectFields(); fieldNames.addAll(sectionFieldNames); } return fieldNames; } public List<Defaults> collectAllDefaultsInstances() { final List<Defaults> defaultsList = new LinkedList<Defaults>(); for (Section section : sections) { final Defaults sectionDefaults = section.collectDefaultsInstance(); defaultsList.add(sectionDefaults); } return defaultsList; } public Component render(QLSRenderParameters qlsRenderParameters) { JPanel pagePanel = new JPanel(); for (Section section : sections) { final Component renderedComponent = section.render(qlsRenderParameters); pagePanel.add(renderedComponent); } return pagePanel; } public Sections(Section... sections) { this.sections = Arrays.asList(sections); } }