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 }