View Javadoc
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          for(Updateable t:tabPanelsUpdateable){
58             t.update();
59          }
60          */
61      }
62  
63  }