package de.tu_darmstadt.tk.SmartHomeNetworkSim.core.distributionHandler; import java.awt.Color; import java.awt.Dimension; import javax.swing.JFrame; import javax.swing.JLabel; import javax.swing.JPanel; import javax.swing.JTextField; import org.apache.commons.math3.random.RandomGenerator; import de.tu_darmstadt.tk.SmartHomeNetworkSim.core.ProbabilityDistributionHandler; /** * Example class representing a Distribution, with only one constant value * * @author Andreas T. Meyer-Berg */ public class ConstantValueDistributionHandler implements ProbabilityDistributionHandler { /** * Fixed value this distribution returns */ private long fixedValue; /** * Creates a new distribution which returns the given value * @param value value to be returned */ public ConstantValueDistributionHandler(long value) { fixedValue = value; } /** * Creates a default distribution, which returns 50. */ public ConstantValueDistributionHandler() { fixedValue = 50; } @Override public void setRandomGenerator(RandomGenerator rng) { // Fixed Value requires no randomness } @Override public long sampleNextValue() { return fixedValue; } /** * Sets the sample value to the given one * @param value new fixed value */ public void setValue(long value){ this.fixedValue = value; } @Override public JPanel getConfigurationPanel() { /** * JPanel which allows configuration of this Distribution */ JPanel panel = new JPanel(); panel.setMinimumSize(new Dimension(90, 40)); panel.setLayout(null); /** * Label */ JLabel label = new JLabel("Value: "); panel.add(label); label.setLocation(20, 20); label.setSize(50,20); label.setMinimumSize(new Dimension(50, 20)); /** * Textfield for changing the value */ JTextField valueConfig = new JTextField(""+fixedValue); panel.add(valueConfig); valueConfig.setLocation(80, 20); valueConfig.setMinimumSize(new Dimension(32, 20)); valueConfig.setSize(32, 20); valueConfig.addActionListener(a->{ try { /** * Update the value */ fixedValue = Long.parseLong(valueConfig.getText()); valueConfig.setBackground(Color.WHITE); } catch (Exception e) { valueConfig.setBackground(Color.RED); } }); return panel; } public static void main(String[] args) { ConstantValueDistributionHandler c = new ConstantValueDistributionHandler(12); JFrame test = new JFrame("test"); test.setSize(400, 400); test.add(c.getConfigurationPanel()); test.setEnabled(true); test.setVisible(true); } @Override public String getSimpleDescription() { return "Constant Value"; } }