package de.gaalop.visualizer.gui; import java.awt.GridLayout; import java.util.HashMap; import java.util.LinkedList; import javax.swing.JPanel; import javax.swing.JSpinner; import javax.swing.SpinnerNumberModel; import javax.swing.event.ChangeListener; /** * Contains a panel which shows inputs * @author Christian */ public abstract class InputsPanel implements ChangeListener { private JPanel panel; private HashMap<JSpinner, String> mapSpinners = new HashMap<JSpinner, String>(); public InputsPanel(JPanel panel) { this.panel = panel; } /** * Sets the inputs * @param inputs The inputs */ public void setInputs(LinkedList<String> inputs) { panel.removeAll(); panel.setSize(panel.getWidth(),25*inputs.size()); panel.setLayout(new GridLayout((inputs.size() < 8) ? 8-inputs.size(): inputs.size(), 1, 5, 5)); mapSpinners.clear(); for (String input: inputs) { JSpinner spinner = new JSpinner(new SpinnerNumberModel()); mapSpinners.put(spinner, input); panel.add(new LabeledComponent(input+":", spinner)); spinner.addChangeListener(this); } } /** * Returns all input values * @return The input values */ public HashMap<String, Double> getValues() { HashMap<String, Double> result = new HashMap<String, Double>(); for (JSpinner spinner: mapSpinners.keySet()) result.put(mapSpinners.get(spinner), ((Number) spinner.getValue()).doubleValue()); return result; } }