View Javadoc

1   package org.inigma.waragent.view;
2   
3   import java.util.Calendar;
4   
5   import org.eclipse.swt.SWT;
6   import org.eclipse.swt.events.SelectionEvent;
7   import org.eclipse.swt.events.SelectionListener;
8   import org.eclipse.swt.layout.FillLayout;
9   import org.eclipse.swt.widgets.Composite;
10  import org.eclipse.swt.widgets.Group;
11  import org.eclipse.swt.widgets.TabFolder;
12  import org.eclipse.swt.widgets.TabItem;
13  import org.inigma.utopia.Province;
14  import org.inigma.utopia.utils.CalendarUtils;
15  import org.inigma.waragent.crud.Messaging;
16  import org.inigma.waragent.crud.ProvinceUpdateListener;
17  
18  public class IntelligenceComposite extends Composite implements ProvinceUpdateListener {
19      private final class ThroneSelectionListener implements SelectionListener {
20          public void widgetDefaultSelected(SelectionEvent e) {}
21  
22          public void widgetSelected(SelectionEvent e) {
23              updateIntelligenceTitle();
24          }
25      }
26  
27      private TabFolder folder;
28      private Group titleGroup;
29      private Province province;
30      private ThroneComposite throne;
31      private MilitaryComposite military;
32      private ScienceComposite science;
33      private SurveyComposite survey;
34  
35      public IntelligenceComposite(Composite parent, Province province) {
36          super(parent, SWT.NONE);
37          this.province = province;
38          Messaging.addListener(province, this);
39          setLayout(new FillLayout());
40  
41          titleGroup = new Group(this, SWT.SHADOW_ETCHED_IN);
42          setGroupTitle(province.toString(), province.getLastUpdate());
43          titleGroup.setLayout(new FillLayout());
44  
45          folder = new TabFolder(titleGroup, SWT.NONE);
46          TabItem item = new TabItem(folder, SWT.NONE);
47          item.setText("Throne");
48          throne = new ThroneComposite(folder, province);
49          item.setControl(throne);
50  
51          item = new TabItem(folder, SWT.NONE);
52          item.setText("Military");
53          military = new MilitaryComposite(folder, province.getMilitary());
54          item.setControl(military);
55  
56          item = new TabItem(folder, SWT.NONE);
57          item.setText("Science");
58          science = new ScienceComposite(folder, province.getScience());
59          item.setControl(science);
60  
61          item = new TabItem(folder, SWT.NONE);
62          item.setText("Survey");
63          survey = new SurveyComposite(folder, province.getSurvey());
64          item.setControl(survey);
65  
66          folder.addSelectionListener(new ThroneSelectionListener());
67      }
68  
69      public void onProvinceUpdate(Province prov) {
70          setProvince(prov);
71      }
72  
73      public void setProvince(Province province) {
74          this.province = province;
75          throne.setProvince(province);
76          military.setMilitary(province.getMilitary());
77          science.setScience(province.getScience());
78          survey.setSurvey(province.getSurvey());
79          updateIntelligenceTitle();
80          update();
81      }
82  
83      private void setGroupTitle(String msg, Calendar time) {
84          titleGroup.setText(String.format("%s - (%s)", msg, CalendarUtils.getCalendarDiff(time)));
85      }
86  
87      private void updateIntelligenceTitle() {
88          switch (folder.getSelectionIndex()) {
89              case 0:
90                  setGroupTitle(province.toString(), province.getLastUpdate());
91                  break;
92              case 1:
93                  setGroupTitle(province.toString(), province.getMilitary().getLastUpdate());
94                  break;
95              case 2:
96                  setGroupTitle(province.toString(), province.getScience().getLastUpdate());
97                  break;
98              case 3:
99                  setGroupTitle(province.toString(), province.getSurvey().getLastUpdate());
100         }
101     }
102 }