OSDN Git Service

Maven3対応。
[jindolf/Jindolf.git] / src / main / java / jp / sfjp / jindolf / view / VillageInfoPanel.java
1 /*
2  * village information panel
3  *
4  * License : The MIT License
5  * Copyright(c) 2009 olyutorskii
6  */
7
8 package jp.sfjp.jindolf.view;
9
10 import java.awt.GridBagConstraints;
11 import java.awt.GridBagLayout;
12 import java.awt.Insets;
13 import javax.swing.JLabel;
14 import javax.swing.JPanel;
15 import jp.sfjp.jindolf.data.Village;
16
17 /**
18  * 村情報表示パネル。
19  */
20 @SuppressWarnings("serial")
21 public class VillageInfoPanel extends JPanel{
22
23     private Village village;
24
25     private final JLabel landName    = new JLabel();
26     private final JLabel villageName = new JLabel();
27     private final JLabel villageID   = new JLabel();
28     private final JLabel state       = new JLabel();
29     private final JLabel days        = new JLabel();
30     private final JLabel limit       = new JLabel();
31
32     private final JLabel limitCaption = new JLabel();
33
34     /**
35      * コンストラクタ。
36      */
37     public VillageInfoPanel(){
38         super();
39
40         design();
41
42         updateVillage(null);
43
44         return;
45     }
46
47     /**
48      * レイアウトを行う。
49      */
50     private void design(){
51         GridBagLayout layout = new GridBagLayout();
52         GridBagConstraints constraints = new GridBagConstraints();
53         setLayout(layout);
54
55         constraints.insets = new Insets(2, 2, 2, 2);
56
57         constraints.anchor = GridBagConstraints.EAST;
58         constraints.gridwidth = 1;
59         add(new JLabel("国名 : "), constraints);
60         constraints.anchor = GridBagConstraints.WEST;
61         constraints.gridwidth = GridBagConstraints.REMAINDER;
62         add(this.landName, constraints);
63
64         constraints.anchor = GridBagConstraints.EAST;
65         constraints.gridwidth = 1;
66         add(new JLabel("村名 : "), constraints);
67         constraints.anchor = GridBagConstraints.WEST;
68         constraints.gridwidth = GridBagConstraints.REMAINDER;
69         add(this.villageName, constraints);
70
71         constraints.anchor = GridBagConstraints.EAST;
72         constraints.gridwidth = 1;
73         add(new JLabel("村ID : "), constraints);
74         constraints.anchor = GridBagConstraints.WEST;
75         constraints.gridwidth = GridBagConstraints.REMAINDER;
76         add(this.villageID, constraints);
77
78         constraints.anchor = GridBagConstraints.EAST;
79         constraints.gridwidth = 1;
80         add(new JLabel("状態 : "), constraints);
81         constraints.anchor = GridBagConstraints.WEST;
82         constraints.gridwidth = GridBagConstraints.REMAINDER;
83         add(this.state, constraints);
84
85         constraints.anchor = GridBagConstraints.EAST;
86         constraints.gridwidth = 1;
87         add(new JLabel("所要日数 : "), constraints);
88         constraints.anchor = GridBagConstraints.WEST;
89         constraints.gridwidth = GridBagConstraints.REMAINDER;
90         add(this.days, constraints);
91
92         constraints.anchor = GridBagConstraints.EAST;
93         constraints.gridwidth = 1;
94         add(this.limitCaption, constraints);
95         constraints.anchor = GridBagConstraints.WEST;
96         constraints.gridwidth = GridBagConstraints.REMAINDER;
97         add(this.limit, constraints);
98
99         constraints.fill = GridBagConstraints.BOTH;
100         constraints.weightx = 1.0;
101         constraints.weighty = 1.0;
102         constraints.gridwidth = GridBagConstraints.REMAINDER;
103         constraints.gridheight = GridBagConstraints.REMAINDER;
104         add(new JPanel(), constraints);  // ダミー詰め物
105
106         return;
107     }
108
109     /**
110      * 村を返す。
111      * @return 村
112      */
113     public Village getVillage(){
114         return this.village;
115     }
116
117     /**
118      * 村情報を更新する。
119      * @param villageArg 村
120      */
121     public final void updateVillage(Village villageArg){
122         this.village = villageArg;
123
124         if(this.village == null){
125             this.landName   .setText("???");
126             this.villageName.setText("???");
127             this.villageID  .setText("???");
128             this.state      .setText("???");
129             this.days       .setText("???");
130             this.limit      .setText("???");
131
132             this.limitCaption.setText("更新日時 : ");
133
134             return;
135         }
136
137         String land  = this.village.getParentLand()
138                                    .getLandDef()
139                                    .getLandName();
140         String vName = "「" + this.village.getVillageFullName() + "」";
141         String vID   = this.village.getVillageID();
142
143         int progressDays = this.village.getProgressDays();
144         String status;
145         String daysInfo;
146         String caption;
147         switch(this.village.getState()){
148         case PROLOGUE:
149             status = "プロローグ中";
150             daysInfo = "プロローグ中";
151             caption = "プロローグ終了予想 : ";
152             break;
153         case PROGRESS:
154             status = "ゲーム進行中";
155             daysInfo = "プロローグ + " + progressDays + "日目";
156             caption = "更新日時 : ";
157             break;
158         case EPILOGUE:
159             status = "エピローグ中";
160             daysInfo = "プロローグ + " + progressDays + "日 + エピローグ中";
161             caption = "エピローグ終了予想 : ";
162             break;
163         case GAMEOVER:
164             status = "ゲーム終了";
165             daysInfo = "プロローグ + " + progressDays + "日 + エピローグ";
166             caption = "エピローグ終了日時 : ";
167             break;
168         case UNKNOWN:
169             status = "不明";
170             daysInfo = "不明";
171             caption = "更新日時 : ";
172             break;
173         default:
174             assert false;
175             status = "???";
176             daysInfo = "???";
177             caption = "更新日時 : ";
178             break;
179         }
180
181         int limitMonth  = this.village.getLimitMonth();
182         int limitDay    = this.village.getLimitDay();
183         int limitHour   = this.village.getLimitHour();
184         int limitMinute = this.village.getLimitMinute();
185
186         String limitDate = limitMonth + "月" + limitDay + "日";
187         String limitTime = "";
188         if(limitHour < 10) limitTime += "0";
189         limitTime += limitHour + ":";
190         if(limitMinute < 10) limitTime += "0";
191         limitTime += limitMinute;
192
193         this.landName   .setText(land);
194         this.villageName.setText(vName);
195         this.villageID  .setText(vID);
196         this.state      .setText(status);
197         this.days       .setText(daysInfo);
198         this.limit      .setText(limitDate + " " + limitTime);
199
200         this.limitCaption.setText(caption);
201
202         return;
203     }
204
205 }