OSDN Git Service

ピックアップ表示の問題修正ほか
[tainavi/TinyBannavi.git] / TinyBannavi / src / tainavi / VWMainWindow.java
1 package tainavi;\r
2 \r
3 import java.awt.BorderLayout;\r
4 import java.awt.Component;\r
5 \r
6 import javax.swing.JPanel;\r
7 import javax.swing.JTabbedPane;\r
8 \r
9 \r
10 public class VWMainWindow extends JPanel {\r
11 \r
12         private static final long serialVersionUID = 1L;\r
13 \r
14         /*\r
15          * 定数\r
16          */\r
17         public static enum MWinTab {\r
18                 LISTED  ("リスト形式"),\r
19                 PAPER   ("新聞形式"),\r
20                 RSVED   ("本体予約一覧"),\r
21                 RECED   ("録画結果一覧"),\r
22                 AUTORES ("自動予約一覧"),\r
23                 SETTING ("各種設定"),\r
24                 RECSET  ("レコーダ設定"),\r
25                 CHSET   ("CH設定"),\r
26                 CHSORT  ("CHソート設定"),\r
27                 CHCONV  ("CHコンバート設定"),\r
28                 CHDAT   ("CHコード設定"),\r
29                 ;\r
30                 \r
31                 String name;\r
32                 \r
33                 private MWinTab(String name) {\r
34                         this.name = name;\r
35                 }\r
36                 \r
37                 public String getName() {\r
38                         return name;\r
39                 }\r
40                 \r
41                 public int getIndex() {\r
42                         return ordinal();\r
43                 }\r
44                 \r
45                 public static MWinTab getAt(int index) {\r
46                         for ( MWinTab tab : MWinTab.values() ) {\r
47                                 if ( tab.ordinal() == index ) {\r
48                                         return tab;\r
49                                 }\r
50                         }\r
51                         return null;\r
52                 }\r
53                 \r
54                 public static int size() { return MWinTab.values().length; }\r
55                 \r
56         }\r
57 \r
58         private final String SETTING_LIST = "設定一覧";\r
59 \r
60         /*\r
61          * 部品\r
62          */\r
63         \r
64         private JTabbedPane jTabbedPane = null;\r
65         private JTabbedPane jTabbedPane_settings = null;\r
66 \r
67         \r
68         /*\r
69          *  コンストラクタ\r
70          */\r
71         \r
72         public VWMainWindow() {\r
73                 this.setLayout(new BorderLayout());\r
74                 this.add(getJTabbedPane(), BorderLayout.CENTER);\r
75                 getJTabbedPane_settings();\r
76 \r
77                 // タブを全部準備する\r
78                 for ( MWinTab tab : MWinTab.values() ) {\r
79                         if ( tab == MWinTab.SETTING ) {\r
80                                 jTabbedPane.add(jTabbedPane_settings, SETTING_LIST);\r
81                         }\r
82                         addTab(null, tab);\r
83                 }\r
84         }\r
85         \r
86         \r
87         /*\r
88          * 公開メソッド\r
89          */\r
90         \r
91         // ツールバーを追加する\r
92         public void addToolBar(Component comp){\r
93                 this.add(comp, BorderLayout.PAGE_START);\r
94         }\r
95         \r
96         \r
97         public void addStatusArea(Component comp) {\r
98                 this.add(comp, BorderLayout.PAGE_END);\r
99         }\r
100         \r
101         // タブを追加する\r
102         public boolean addTab(Component comp, MWinTab tab) {\r
103                 if ( jTabbedPane.getTabCount() + jTabbedPane_settings.getTabCount() < tab.getIndex() ) {\r
104                         System.err.println(String.format("[DEBUG][メインウィンドウ] タブの数があわない: %d/%d", jTabbedPane.getTabCount(), tab.getIndex()));\r
105                         return false;\r
106                 }\r
107 \r
108                 int tabIndex = tab.getIndex();\r
109                 JTabbedPane tabPane = jTabbedPane;\r
110                 if ( tabIndex >= MWinTab.SETTING.getIndex() ) {\r
111                         tabIndex -= MWinTab.SETTING.getIndex();\r
112                         tabPane = jTabbedPane_settings;\r
113                 }\r
114                 if ( tabPane.getTabCount() > tabIndex ) {\r
115                         tabPane.remove(tabIndex);\r
116                 }\r
117                 tabPane.add(comp, tab.getName(), tabIndex);\r
118                 return true;\r
119         }\r
120 \r
121         // タブを切り替える\r
122         public void setSelectedTab(MWinTab tab) {\r
123                 if ( tab == null ) {\r
124                         jTabbedPane.setSelectedIndex(-1);\r
125                         return;\r
126                 }\r
127                 if ( tab.getIndex() >= MWinTab.SETTING.getIndex() ) {\r
128                         jTabbedPane_settings.setSelectedIndex(tab.getIndex()-MWinTab.SETTING.getIndex());\r
129                         jTabbedPane.setSelectedIndex(MWinTab.SETTING.getIndex());\r
130                         return;\r
131                 }\r
132                 jTabbedPane.setSelectedIndex(tab.getIndex());\r
133         }\r
134         \r
135         //\r
136         public Component getTab(MWinTab tab) {\r
137                 if ( tab.getIndex() >= MWinTab.SETTING.getIndex() ) {\r
138                         return jTabbedPane_settings.getComponent(tab.getIndex() - MWinTab.SETTING.getIndex());\r
139                 }\r
140                 return jTabbedPane.getComponent(tab.getIndex());\r
141         }\r
142         \r
143         // タブが選択されているか確認する\r
144         public boolean isTabSelected(MWinTab tab) {\r
145                 if ( tab.getIndex() >= MWinTab.SETTING.getIndex() ) {\r
146                         return (jTabbedPane.getSelectedIndex() == MWinTab.SETTING.getIndex() && jTabbedPane_settings.getSelectedIndex() == tab.getIndex()-MWinTab.SETTING.getIndex());\r
147                 }\r
148                 return (jTabbedPane.getSelectedIndex() == tab.getIndex());\r
149         }\r
150         \r
151         // どのタブが選択されているのやら\r
152         public MWinTab getSelectedTab() {\r
153                 if ( jTabbedPane.getSelectedIndex() == MWinTab.SETTING.getIndex() ) {\r
154                         return MWinTab.getAt(jTabbedPane.getSelectedIndex());\r
155                 }\r
156                 return MWinTab.getAt(jTabbedPane.getSelectedIndex());\r
157         }\r
158         \r
159         // 設定タブをトグル切り替え\r
160         private final int firstSettingTab = MWinTab.SETTING.ordinal();\r
161         private final int countSettingTab = MWinTab.size()-firstSettingTab;\r
162         private Component[] st_comp = new Component[countSettingTab];\r
163         private String[] st_title = new String[countSettingTab];\r
164         public boolean toggleShowSettingTabs() {\r
165                 return true;\r
166         }\r
167         \r
168         public boolean getShowSettingTabs() {\r
169                 return true;\r
170         }\r
171         public void setShowSettingTabs(boolean b) {\r
172         }\r
173         \r
174         \r
175         /*\r
176          * \r
177          */\r
178         \r
179         private JTabbedPane getJTabbedPane() {\r
180                 if (jTabbedPane == null) {\r
181                         jTabbedPane = new JTabbedPane();\r
182                 }\r
183                 return jTabbedPane;\r
184         }\r
185 \r
186         private JTabbedPane getJTabbedPane_settings() {\r
187                 if (jTabbedPane_settings == null) {\r
188                         jTabbedPane_settings = new JTabbedPane();\r
189                 }\r
190                 return jTabbedPane_settings;\r
191         }\r
192         \r
193         /**\r
194          * @deprecated\r
195          */\r
196         public void appendStatusMessage(String s) {\r
197                 throw new UnsupportedOperationException();\r
198         }\r
199         \r
200         /**\r
201          * @deprecated\r
202          * @see Viewer#setStatusVisible(boolean)\r
203          */\r
204         public void setStatusVisible(boolean b) {\r
205                 throw new UnsupportedOperationException();\r
206         }\r
207         \r
208 }\r