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.util.HashMap;
import java.util.LinkedList;
import java.util.List;
import java.util.Map;
public class Page {
private final String identifier;
private final Sections sections;
private final Defaults defaults;
public List<Defaults> collectAllDefaultsInstances() {
final List<Defaults> collectedDefaults = new LinkedList<Defaults>();
final List<Defaults> sectionDefaults = sections.collectAllDefaultsInstances();
collectedDefaults.add(defaults);
collectedDefaults.addAll(sectionDefaults);
return collectedDefaults;
}
public Map<String, Object> deriveStylingSettingsMap(FieldType fieldType) {
final Map<String, Object> settingsMap = new HashMap<String, Object>();
final Map<String, Object> defaultStylingSettings = defaults.deriveStylingSettingsMap(fieldType);
final Map<String, Object> pageStylingSettings = sections.deriveStylingSettingsMap(fieldType);
settingsMap.putAll(defaultStylingSettings);
if (pageStylingSettings == null) {
return null;
}
settingsMap.putAll(pageStylingSettings);
return settingsMap;
}
public Page(String identifier, Sections sections, Defaults defaults) {
this.identifier = identifier;
this.sections = sections;
this.defaults = defaults;
}
@SuppressWarnings("unused") // Used through reflection.
public Page(String identifier, Section... sections) {
this(identifier, new Sections(sections), new Defaults(new HashMap()));
}
public List<String> collectFields() {
return sections.collectFields();
}
public void addAndRenderTab(JTabbedPane jTabbedPane, QLSRenderParameters qlsRenderParameters) {
jTabbedPane.addTab(identifier, sections.render(qlsRenderParameters));
}
}