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 }