1 package org.woehlke.computer.kurzweil.tabs.simulatedevolution;
2
3 import lombok.Getter;
4 import lombok.experimental.Delegate;
5 import lombok.extern.log4j.Log4j2;
6 import org.woehlke.computer.kurzweil.commons.Startable;
7 import org.woehlke.computer.kurzweil.commons.Updateable;
8 import org.woehlke.computer.kurzweil.commons.widgets.PanelStartStopButtons;
9 import org.woehlke.computer.kurzweil.commons.widgets.SubTabImpl;
10 import org.woehlke.computer.kurzweil.tabs.simulatedevolution.canvas.food.FoodPerDayPanel;
11 import org.woehlke.computer.kurzweil.tabs.simulatedevolution.canvas.garden.GardenOfEdenPanelRow;
12 import org.woehlke.computer.kurzweil.tabs.simulatedevolution.canvas.population.PopulationStatisticsElementsPanelCounted;
13 import org.woehlke.computer.kurzweil.tabs.simulatedevolution.canvas.population.PopulationStatisticsElementsPanelLifeCycle;
14 import org.woehlke.computer.kurzweil.tabs.simulatedevolution.model.population.SimulatedEvolutionPopulation;
15
16 import javax.swing.*;
17
18 @Log4j2
19 @Getter
20 public class SimulatedEvolutionTabPane extends JTabbedPane implements Startable,Updateable {
21
22 private final PopulationStatisticsElementsPanelLifeCycle statisticsPanelPanelLifeCycle;
23 private final PopulationStatisticsElementsPanelCounted statisticsPanelCounted;
24 private final FoodPerDayPanel foodPerDayPanel;
25 private final GardenOfEdenPanelRow gardenOfEdenPanel;
26 @Delegate(excludes={SubTabImpl.class,JPanel.class,Updateable.class})
27 private final PanelStartStopButtons startStopButtonsPanel;
28
29
30
31 public SimulatedEvolutionTabPane(SimulatedEvolutionTab tab) {
32 this.statisticsPanelPanelLifeCycle = new PopulationStatisticsElementsPanelLifeCycle( tab.getTabCtx() );
33 this.statisticsPanelCounted = new PopulationStatisticsElementsPanelCounted( tab.getTabCtx() );
34 this.foodPerDayPanel = new FoodPerDayPanel( tab.getTabCtx() );
35 this.gardenOfEdenPanel = new GardenOfEdenPanelRow( tab.getTabCtx() );
36 this.startStopButtonsPanel = new PanelStartStopButtons( tab );
37 SubTabImpl[] allSubTabPanels = {
38 this.startStopButtonsPanel,
39 this.statisticsPanelPanelLifeCycle,
40 this.statisticsPanelCounted,
41 this.foodPerDayPanel,
42 this.gardenOfEdenPanel
43 };
44 for(SubTabImpl t:allSubTabPanels){
45 this.addTab( t.getTitle(),t);
46 }
47 this.foodPerDayPanel.addActionListener(tab);
48 this.gardenOfEdenPanel.addActionListener(tab);
49 this.getStartStopButtonsPanel().stop();
50 }
51
52 public void update() {
53 log.info("update");
54 this.statisticsPanelPanelLifeCycle.update();
55 this.statisticsPanelCounted.update();
56
57
58
59
60
61 }
62
63 }