123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209 |
- package addOns;
- import java.awt.BorderLayout;
- import java.awt.Component;
- import java.awt.Dimension;
- import java.awt.GridLayout;
- import java.util.ArrayList;
- import java.util.Hashtable;
- import java.util.List;
- import java.util.stream.Collectors;
- import javax.swing.BorderFactory;
- import javax.swing.BoxLayout;
- import javax.swing.JButton;
- import javax.swing.JCheckBox;
- import javax.swing.JFrame;
- import javax.swing.JLabel;
- import javax.swing.JPanel;
- import javax.swing.JSlider;
- import api.AddOn;
- import classes.AbstractCanvasObject;
- import classes.GroupNode;
- import classes.Flexibility;
- import classes.HolonElement;
- import classes.HolonElement.Priority;
- import classes.HolonObject;
- import classes.HolonSwitch;
- import ui.controller.Control;
- /**
- * A short algorithm to distribute the Priorities for the whole Canvas.
- * @author tom
- *
- */
- public class RandomOfferdFlexibility implements AddOn {
-
-
-
-
-
- private Control control;
-
- private JPanel content = new JPanel();
- private JSlider activeSlider = new JSlider(JSlider.HORIZONTAL,0, 100, 50);
-
- private JCheckBox lowCheckbox = new JCheckBox("Low", true);
- private JCheckBox mediumCheckbox = new JCheckBox("Medium", true);
- private JCheckBox highCheckbox = new JCheckBox("High", true);
- private JCheckBox essentialCheckbox = new JCheckBox("Essential", true);
- private JSlider lowFlexTargetSlider = new JSlider(JSlider.HORIZONTAL,0, 100, 50);
- private JSlider mediumFlexTargetSlider = new JSlider(JSlider.HORIZONTAL,0, 100, 50);
- private JSlider highFlexTargetSlider = new JSlider(JSlider.HORIZONTAL,0, 100, 50);
- private JSlider essentialFlexTargetSlider = new JSlider(JSlider.HORIZONTAL,0, 100, 50);
- private JLabel lowPositiveLabel = new JLabel("0(0)");
- private JLabel mediumPositiveLabel = new JLabel("0(0)");
- private JLabel highPositiveLabel = new JLabel("0(0)");
- private JLabel essentialPositiveLabel = new JLabel("0(0)");
- private JLabel lowNegativeLabel = new JLabel("0(0)");
- private JLabel mediumNegativeLabel = new JLabel("0(0)");
- private JLabel highNegativeLabel = new JLabel("0(0)");
- private JLabel essentialNegativeLabel = new JLabel("0(0)");
- public static void main(String[] args)
- {
- JFrame newFrame = new JFrame("exampleWindow");
- RandomOfferdFlexibility instance = new RandomOfferdFlexibility();
- newFrame.setContentPane(instance.getPanel());
- newFrame.pack();
- newFrame.setVisible(true);
- newFrame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
- }
-
-
-
- public RandomOfferdFlexibility(){
- content.setLayout(new BorderLayout());
- content.add(createParameterPanel(), BorderLayout.CENTER);
- content.add(createFlexPanel(), BorderLayout.EAST);
-
- JButton buttonRun = new JButton("Run");
- buttonRun.addActionListener(actionEvent -> run());
- content.add(buttonRun, BorderLayout.PAGE_END);
- //content.setPreferredSize(new Dimension(300,500));
- }
- private JPanel createFlexPanel() {
- JPanel flexPanel = new JPanel();
- flexPanel.setBorder(BorderFactory.createTitledBorder("Flexibility"));
- GridLayout experimentLayout = new GridLayout(0,4);
- flexPanel.setLayout(experimentLayout);
-
- //Label
-
- flexPanel.add(new JLabel("Priority:"));
- flexPanel.add(new JLabel("Target:"));
- flexPanel.add(new JLabel("PositiveAmount:"));
- flexPanel.add(new JLabel("NegativeAmount:"));
-
- flexPanel.add(lowCheckbox);
- flexPanel.add(initVisualizeSliderFlexibility(this.lowFlexTargetSlider, "PositivNegativ"));
- flexPanel.add(this.lowPositiveLabel);
- flexPanel.add(this.lowNegativeLabel);
-
- flexPanel.add(mediumCheckbox);
- flexPanel.add(initVisualizeSliderFlexibility(this.mediumFlexTargetSlider, "PositivNegativ"));
- flexPanel.add(this.mediumPositiveLabel);
- flexPanel.add(this.mediumNegativeLabel);
-
- flexPanel.add(highCheckbox);
- flexPanel.add(initVisualizeSliderFlexibility(this.highFlexTargetSlider, "PositivNegativ"));
- flexPanel.add(this.highPositiveLabel);
- flexPanel.add(this.highNegativeLabel);
-
- flexPanel.add(essentialCheckbox);
- flexPanel.add(initVisualizeSliderFlexibility(this.essentialFlexTargetSlider, "PositivNegativ"));
- flexPanel.add(this.essentialPositiveLabel);
- flexPanel.add(this.essentialNegativeLabel);
-
- return flexPanel;
- }
- private JPanel createParameterPanel() {
- JPanel centerPanel = new JPanel();
- JPanel parameterPanel = new JPanel();
- parameterPanel.setBorder(BorderFactory.createTitledBorder("Priority"));
- parameterPanel.setLayout(new BoxLayout(parameterPanel, BoxLayout.PAGE_AXIS));
- createParamaterSlider(parameterPanel);
-
-
- centerPanel.add(parameterPanel);
- return centerPanel;
- }
- private void createParamaterSlider(JPanel parameterPanel) {
-
-
-
-
-
- }
- private JSlider initVisualizeSliderFlexibility(JSlider jslider, String name) {
- jslider.setMajorTickSpacing(50);
- jslider.setMinorTickSpacing(5);
- jslider.setPaintTicks(true);
- Hashtable<Integer, JLabel> labelTable = new Hashtable<Integer, JLabel>();
- labelTable.put( Integer.valueOf( 0 ), new JLabel("Positiv") );
- labelTable.put( Integer.valueOf( 100 ), new JLabel("Negativ") );
- jslider.setLabelTable( labelTable );
- jslider.setPaintLabels(true);
- return jslider;
- }
-
-
-
- private void run() {
- //control.getModel().getObjectsOnCanvas().stream().filter(aCps -> aCps instanceof HolonObject)
- List<HolonElement> elementList = createListOfHolonObjects(control.getModel().getObjectsOnCanvas()).stream().flatMap(hObject -> hObject.getElements().stream()).collect(Collectors.toList());
- for(HolonElement element : elementList) {
- element.setActive(Math.random() * 100.0 < activeSlider.getValue());
- // Generate a random number between 0 and 100
-
-
- }
- control.calculateStateAndVisualForCurrentTimeStep();
- control.updateCanvas();
- List<Flexibility> flexList = control.getSimManager().getActualFlexManager().getAllFlexWrapper().stream().filter(flexwrapper -> flexwrapper.getFlex().offered).map(flex -> flex.getFlex()).collect(Collectors.toList());
- long amountOfEssential = flexList.stream().filter(flex -> flex.getElement().getPriority() == Priority.Essential).count();
- long amountOfHigh = flexList.stream().filter(flex -> flex.getElement().getPriority() == Priority.High).count();
- long amountOfMedium = flexList.stream().filter(flex -> flex.getElement().getPriority() == Priority.Medium).count();
- long amountOfLow = flexList.stream().filter(flex -> flex.getElement().getPriority() == Priority.Low).count();
- long overall = amountOfEssential + amountOfHigh + amountOfMedium + amountOfLow;
- System.out.println(" amountOfEssential: " + amountOfEssential + " amountOfHigh: " + amountOfHigh + " amountOfMedium: " +amountOfMedium + " amountOfLow: " +amountOfLow + " of overall " + overall + "Flexes");
-
- }
-
-
-
- private List<HolonObject> createListOfHolonObjects(List<AbstractCanvasObject> objectsOnCanvas) {
- List<HolonObject> list = new ArrayList<HolonObject>();
- for(AbstractCanvasObject aCps : objectsOnCanvas) {
- if(aCps instanceof HolonObject) list.add((HolonObject) aCps);
- else if(aCps instanceof GroupNode)list.addAll(createListOfHolonObjects(((GroupNode)aCps).getNodes()));
- }
- return list;
- }
-
-
-
- @Override
- public JPanel getPanel() {
- return content;
- }
- @Override
- public void setController(Control control) {
- this.control = control;
-
- }
- }
|