3 import java.awt.BorderLayout;
\r
4 import java.awt.Color;
\r
5 import java.awt.Component;
\r
6 import java.awt.Dimension;
\r
7 import java.awt.Point;
\r
8 import java.awt.event.ActionEvent;
\r
9 import java.awt.event.ActionListener;
\r
10 import java.awt.event.MouseAdapter;
\r
11 import java.awt.event.MouseEvent;
\r
12 import java.awt.event.WindowAdapter;
\r
13 import java.awt.event.WindowEvent;
\r
14 import java.util.ArrayList;
\r
16 import javax.swing.DefaultCellEditor;
\r
17 import javax.swing.JButton;
\r
18 import javax.swing.JCheckBox;
\r
19 import javax.swing.JDialog;
\r
20 import javax.swing.JLabel;
\r
21 import javax.swing.JPanel;
\r
22 import javax.swing.JScrollPane;
\r
23 import javax.swing.JTabbedPane;
\r
24 import javax.swing.JTable;
\r
25 import javax.swing.ListSelectionModel;
\r
26 import javax.swing.ScrollPaneConstants;
\r
27 import javax.swing.SpringLayout;
\r
28 import javax.swing.SwingUtilities;
\r
29 import javax.swing.table.DefaultTableCellRenderer;
\r
30 import javax.swing.table.DefaultTableColumnModel;
\r
31 import javax.swing.table.DefaultTableModel;
\r
32 import javax.swing.table.TableCellRenderer;
\r
33 import javax.swing.table.TableColumn;
\r
35 import tainavi.Env.AAMode;
\r
36 import tainavi.JTXTButton.FontStyle;
\r
37 import tainavi.TVProgram.ProgGenre;
\r
40 abstract class AbsPaperColorsDialog extends JEscCancelDialog {
\r
42 private static final long serialVersionUID = 1L;
\r
44 private static boolean debug = false;
\r
47 /*******************************************************************************
\r
49 ******************************************************************************/
\r
51 protected abstract Env getEnv();
\r
52 protected abstract Bounds getBoundsEnv();
\r
53 protected abstract PaperColorsMap getPaperColorMap();
\r
55 protected abstract VWColorChooserDialog getCCWin();
\r
57 protected abstract void updatePaperColors(Env ec, PaperColorsMap pc);
\r
58 protected abstract void updatePaperFonts(Env ec);
\r
59 protected abstract void updatePaperBounds(Env ec, Bounds bc);
\r
60 protected abstract void updatePaperRepaint();
\r
63 /*******************************************************************************
\r
65 ******************************************************************************/
\r
67 private final Env origenv = getEnv();
\r
68 private final Bounds origbnd = getBoundsEnv();
\r
69 private final PaperColorsMap origpc = getPaperColorMap();
\r
71 private final VWColorChooserDialog ccwin = getCCWin();
\r
73 private final Env tmpenv = new Env();
\r
74 private final Bounds tmpbnd = new Bounds();
\r
75 private final PaperColorsMap tmppc = new PaperColorsMap();
\r
78 /*******************************************************************************
\r
80 ******************************************************************************/
\r
82 private static final int STEPBY = 10;
\r
84 private static final int SEP_WIDTH = 10;
\r
85 private static final int SEP_WIDTH_NARROW = 2;
\r
86 private static final int SEP_HEIGHT = 5;
\r
87 private static final int SEP_HEIGHT_NARROW = 2;
\r
89 //private static final int PARTS_WIDTH = 900;
\r
90 private static final int PARTS_HEIGHT = 30;
\r
92 private static final int LABEL_WIDTH = 125;
\r
93 private static final int ITEM_WIDTH = 250;
\r
94 private static final int TITLE_WIDTH = LABEL_WIDTH+ITEM_WIDTH;
\r
96 private static final int BUTTON_WIDTH = 100;
\r
98 private static final int PANEL_WIDTH = LABEL_WIDTH+ITEM_WIDTH+SEP_WIDTH*2;
\r
99 private static int PANEL_HEIGHT = 0;
\r
101 private static final int TABLE_WIDTH = PANEL_WIDTH-SEP_WIDTH*2;
\r
102 private static final int TABLE_HEIGHT = 260;
\r
104 private static final int STYLETABLE_HEIGHT = 80;
\r
106 private static final int TIMEBAR_WIDTH = TABLE_WIDTH/4;
\r
109 /*******************************************************************************
\r
111 ******************************************************************************/
\r
113 private JPanel jPanel = null;
\r
115 private JTabbedPane jTabbedPane = null;
\r
117 private JPanel jPanel_buttons = null;
\r
118 private JButton jButton_preview = null;
\r
119 private JButton jButton_update = null;
\r
120 private JButton jButton_cancel = null;
\r
123 private JPanel jPanel_pColors = null;
\r
124 private JScrollPane jScrollPane_list = null;
\r
125 private JNETable jTable_list = null;
\r
126 private DefaultTableModel jTableModel_list = null;
\r
127 private JCCLabel jLabel_timebar = null;
\r
128 private JCCLabel jLabel_timebar2 = null;
\r
129 private JCCLabel jLabel_timebar3 = null;
\r
130 private JCCLabel jLabel_timebar4 = null;
\r
131 private JCheckBoxPanel jCBP_highlight = null;
\r
132 private JCCLabel jLabel_highlight = null;
\r
135 private JPanel jPanel_fonts = null;
\r
136 private JCheckBoxPanel jCBP_showStart = null;
\r
137 private JComboBoxPanel jCBX_titleFont = null;
\r
138 private JSliderPanel jSP_titleFontSize = null;
\r
139 private JCCLabel jLabel_titleFontColor = null;
\r
140 private JScrollPane jScrollPane_titleFontStyle = null;
\r
141 private JCheckBoxPanel jCBP_showDetail = null;
\r
142 private JComboBoxPanel jCBX_detailFont = null;
\r
143 private JSliderPanel jSP_detailFontSize = null;
\r
144 private JCCLabel jLabel_detailFontColor = null;
\r
145 private JScrollPane jScrollPane_detailFontStyle = null;
\r
146 private JSliderPanel jSP_detailTab = null;
\r
147 private JComboBoxPanel jCBX_aaMode = null;
\r
150 private JPanel jPanel_bounds = null;
\r
151 private JSliderPanel jSP_width = null;
\r
152 private JSliderPanel jSP_height = null;
\r
153 private JSliderPanel jSP_timebarPosition = null;
\r
154 private JCCLabel jLabel_execon = null;
\r
155 private JCCLabel jLabel_execoff = null;
\r
156 private JCCLabel jLabel_pickup = null;
\r
157 private JCCLabel jLabel_pickupFont = null;
\r
158 private JCCLabel jLabel_matchedBorderColor = null;
\r
159 private JSliderPanel jSP_matchedBorderThickness = null;
\r
160 //private JCheckBoxPanel jCBP_lightProgramView = null;
\r
163 /*******************************************************************************
\r
165 ******************************************************************************/
\r
167 public AbsPaperColorsDialog() {
\r
171 this.setModal(true);
\r
173 this.addWindowListener(new WindowAdapter() {
\r
175 public void windowClosing(WindowEvent e) {
\r
180 this.setContentPane(getJPanel());
\r
181 this.setDefaultCloseOperation(DO_NOTHING_ON_CLOSE); // 閉じるときはキャンセルボタンを使ってクレ
\r
184 this.setResizable(false);
\r
186 this.setTitle("新聞形式の表示設定");
\r
190 /*******************************************************************************
\r
192 ******************************************************************************/
\r
194 private void doPreview() {
\r
195 getColors(tmpenv,tmppc);
\r
197 getBounds(tmpenv,tmpbnd);
\r
199 updatePaperColors(tmpenv,tmppc);
\r
200 updatePaperFonts(tmpenv);
\r
201 updatePaperBounds(tmpenv,tmpbnd);
\r
203 updatePaperRepaint();
\r
206 private void doUpdate() {
\r
207 getColors(origenv,origpc);
\r
209 getBounds(origenv,origbnd);
\r
211 updatePaperFonts(origenv);
\r
212 updatePaperColors(origenv,origpc);
\r
213 updatePaperBounds(origenv,origbnd);
\r
215 updatePaperRepaint();
\r
225 protected void doCancel() {
\r
226 updatePaperColors(origenv,origpc);
\r
227 updatePaperFonts(origenv);
\r
228 updatePaperBounds(origenv,origbnd);
\r
230 updatePaperRepaint();
\r
241 public void setVisible(boolean b) {
\r
244 for ( ProgGenre key : origpc.keySet() ) {
\r
245 System.err.println("[DEBUG] before orig papercolorsmap "+key+"="+origpc.get(key));
\r
248 FieldUtils.deepCopy(tmpenv, origenv);
\r
249 FieldUtils.deepCopy(tmpbnd, origbnd);
\r
250 FieldUtils.deepCopy(tmppc, origpc);
\r
257 for ( ProgGenre key : origpc.keySet() ) {
\r
258 System.err.println("[DEBUG] after orig papercolorsmap "+key+"="+origpc.get(key));
\r
262 super.setVisible(b);
\r
266 private void getColors(Env toe, PaperColorsMap top) {
\r
267 for ( int row=0; row<jTable_list.getRowCount(); row++ ) {
\r
268 TVProgram.ProgGenre g = (ProgGenre) jTable_list.getValueAt(row, 0);
\r
269 Color c = CommonUtils.str2color((String) jTable_list.getValueAt(row, 1));
\r
272 toe.setTimebarColor(jLabel_timebar.getChoosed());
\r
273 toe.setTimebarColor2(jLabel_timebar2.getChoosed());
\r
274 toe.setTimebarColor3(jLabel_timebar3.getChoosed());
\r
275 toe.setTimebarColor4(jLabel_timebar4.getChoosed());
\r
276 toe.setEnableHighlight(jCBP_highlight.isSelected());
\r
277 toe.setHighlightColor(jLabel_highlight.getChoosed());
\r
281 private void getFonts(Env to) {
\r
282 to.setShowStart(jCBP_showStart.isSelected());
\r
283 to.setTitleFont((String) jCBX_titleFont.getSelectedItem());
\r
284 to.setTitleFontSize(jSP_titleFontSize.getValue());
\r
285 to.setTitleFontColor(jLabel_titleFontColor.getChoosed());
\r
286 to.setTitleFontStyle(getFontStyles((JNETable) jScrollPane_titleFontStyle.getViewport().getView()));
\r
287 to.setShowDetail(jCBP_showDetail.isSelected());
\r
288 to.setDetailFont((String) jCBX_detailFont.getSelectedItem());
\r
289 to.setDetailFontSize(jSP_detailFontSize.getValue());
\r
290 to.setDetailFontColor(jLabel_detailFontColor.getChoosed());
\r
291 to.setDetailFontStyle(getFontStyles((JNETable) jScrollPane_detailFontStyle.getViewport().getView()));
\r
292 to.setDetailTab(jSP_detailTab.getValue());
\r
293 to.setPaperAAMode((AAMode) jCBX_aaMode.getSelectedItem());
\r
295 private ArrayList<JTXTButton.FontStyle> getFontStyles(JNETable jt) {
\r
296 ArrayList<JTXTButton.FontStyle> fsa = new ArrayList<JTXTButton.FontStyle>();
\r
297 for ( int row=0; row<jt.getRowCount(); row++ ) {
\r
298 if ( (Boolean)jt.getValueAt(row, 0) ) {
\r
299 fsa.add((FontStyle) jt.getValueAt(row, 1));
\r
306 private void getBounds(Env toe, Bounds tob) {
\r
307 tob.setBangumiColumnWidth(jSP_width.getValue());
\r
308 tob.setPaperHeightMultiplier(jSP_height.getValue()*(float)STEPBY/(float)60);
\r
309 tob.setTimelinePosition(jSP_timebarPosition.getValue());
\r
310 toe.setExecOnFontColor(jLabel_execon.getChoosed());
\r
311 toe.setExecOffFontColor(jLabel_execoff.getChoosed());
\r
312 toe.setPickedColor(jLabel_pickup.getChoosed());
\r
313 toe.setPickedFontColor(jLabel_pickupFont.getChoosed());
\r
314 toe.setMatchedBorderColor(jLabel_matchedBorderColor.getChoosed());
\r
315 toe.setMatchedBorderThickness(jSP_matchedBorderThickness.getValue());
\r
317 tob.setShowMatchedBorder(origbnd.getShowMatchedBorder());
\r
322 /*******************************************************************************
\r
324 ******************************************************************************/
\r
326 private JPanel getJPanel() {
\r
327 if (jPanel == null) {
\r
328 jPanel = new JPanel();
\r
329 jPanel.setLayout(new BorderLayout());
\r
330 jPanel.add(getJTabbedPane(), BorderLayout.CENTER);
\r
331 jPanel.add(getJPanel_buttons(), BorderLayout.PAGE_END);
\r
337 private JTabbedPane getJTabbedPane() {
\r
338 if (jTabbedPane == null) {
\r
339 jTabbedPane = new JTabbedPane();
\r
340 jTabbedPane.add(getJPanel_pColors(),"背景色",0);
\r
341 jTabbedPane.add(getJPanel_fonts(),"テキスト",1);
\r
342 jTabbedPane.add(getJPanel_bounds(),"その他",2);
\r
344 return jTabbedPane;
\r
348 private JPanel getJPanel_buttons() {
\r
349 if (jPanel_buttons == null) {
\r
350 jPanel_buttons = new JPanel();
\r
352 jPanel_buttons.setLayout(new SpringLayout());
\r
354 int y = SEP_HEIGHT;
\r
355 int x = (PANEL_WIDTH - (BUTTON_WIDTH*3+SEP_WIDTH*2))/2;
\r
356 CommonSwingUtils.putComponentOn(jPanel_buttons, getJButton_preview("プレビュー"), BUTTON_WIDTH, PARTS_HEIGHT, x, y);
\r
357 CommonSwingUtils.putComponentOn(jPanel_buttons, getJButton_update("登録"), BUTTON_WIDTH, PARTS_HEIGHT, x+=BUTTON_WIDTH+SEP_WIDTH, y);
\r
358 CommonSwingUtils.putComponentOn(jPanel_buttons, getJButton_cancel("キャンセル"), BUTTON_WIDTH, PARTS_HEIGHT, x+=BUTTON_WIDTH+SEP_WIDTH, y);
\r
360 y += PARTS_HEIGHT+SEP_HEIGHT;
\r
362 jPanel_buttons.setPreferredSize(new Dimension(PANEL_WIDTH, y));
\r
364 return jPanel_buttons;
\r
366 private JButton getJButton_preview(String s) {
\r
367 if (jButton_preview == null) {
\r
368 jButton_preview = new JButton();
\r
369 jButton_preview.setText(s);
\r
371 jButton_preview.addActionListener(new ActionListener() {
\r
373 public void actionPerformed(ActionEvent e) {
\r
378 return jButton_preview;
\r
380 private JButton getJButton_update(String s) {
\r
381 if (jButton_update == null) {
\r
382 jButton_update = new JButton();
\r
383 jButton_update.setText(s);
\r
385 jButton_update.addActionListener(new ActionListener() {
\r
387 public void actionPerformed(ActionEvent e) {
\r
392 return jButton_update;
\r
394 private JButton getJButton_cancel(String s) {
\r
395 if (jButton_cancel == null) {
\r
396 jButton_cancel = new JButton();
\r
397 jButton_cancel.setText(s);
\r
399 jButton_cancel.addActionListener(new ActionListener() {
\r
401 public void actionPerformed(ActionEvent e) {
\r
406 return jButton_cancel;
\r
414 private JPanel getJPanel_pColors() {
\r
415 if (jPanel_pColors == null) {
\r
416 jPanel_pColors = new JPanel();
\r
418 jPanel_pColors.setLayout(new SpringLayout());
\r
420 int y = SEP_HEIGHT_NARROW;
\r
423 CommonSwingUtils.putComponentOn(jPanel_pColors, new JTitleLabel("ジャンル別背景色"), TITLE_WIDTH, PARTS_HEIGHT, SEP_WIDTH_NARROW, y);
\r
424 y += (PARTS_HEIGHT+SEP_HEIGHT_NARROW);
\r
425 CommonSwingUtils.putComponentOn(jPanel_pColors, getJScrollPane_list(), TABLE_WIDTH, TABLE_HEIGHT, SEP_WIDTH, y);
\r
427 y += (TABLE_HEIGHT+SEP_HEIGHT);
\r
428 CommonSwingUtils.putComponentOn(jPanel_pColors, new JTitleLabel("タイムバーの色"), TITLE_WIDTH, PARTS_HEIGHT, SEP_WIDTH_NARROW, y);
\r
429 y += (PARTS_HEIGHT+SEP_HEIGHT_NARROW);
\r
430 CommonSwingUtils.putComponentOn(jPanel_pColors, jLabel_timebar = new JCCLabel("6~11", origenv.getTimebarColor(),true,this,ccwin), TIMEBAR_WIDTH, PARTS_HEIGHT, x, y);
\r
431 CommonSwingUtils.putComponentOn(jPanel_pColors, jLabel_timebar2 = new JCCLabel("12~17", origenv.getTimebarColor2(),true,this,ccwin), TIMEBAR_WIDTH, PARTS_HEIGHT, x+=TIMEBAR_WIDTH, y);
\r
432 CommonSwingUtils.putComponentOn(jPanel_pColors, jLabel_timebar3 = new JCCLabel("18~23", origenv.getTimebarColor3(),true,this,ccwin), TIMEBAR_WIDTH, PARTS_HEIGHT, x+=TIMEBAR_WIDTH, y);
\r
433 CommonSwingUtils.putComponentOn(jPanel_pColors, jLabel_timebar4 = new JCCLabel("24~5", origenv.getTimebarColor4(),true,this,ccwin), TIMEBAR_WIDTH, PARTS_HEIGHT, x+=TIMEBAR_WIDTH, y);
\r
435 y += (PARTS_HEIGHT+SEP_HEIGHT);
\r
436 CommonSwingUtils.putComponentOn(jPanel_pColors, new JTitleLabel("マウスオーバー時のハイライト色"), TITLE_WIDTH, PARTS_HEIGHT, SEP_WIDTH_NARROW, y);
\r
437 y += (PARTS_HEIGHT+SEP_HEIGHT_NARROW);
\r
438 CommonSwingUtils.putComponentOn(jPanel_pColors, jCBP_highlight = new JCheckBoxPanel("有効",LABEL_WIDTH/2), LABEL_WIDTH, PARTS_HEIGHT, SEP_WIDTH, y);
\r
439 CommonSwingUtils.putComponentOn(jPanel_pColors, jLabel_highlight = new JCCLabel("ハイライト",origenv.getHighlightColor(),true,this,ccwin), ITEM_WIDTH, PARTS_HEIGHT, LABEL_WIDTH+SEP_WIDTH, y);
\r
441 y += (PARTS_HEIGHT+SEP_HEIGHT*2);
\r
443 if (PANEL_HEIGHT < y) PANEL_HEIGHT = y;
\r
445 jPanel_pColors.setPreferredSize(new Dimension(PANEL_WIDTH, PANEL_HEIGHT));
\r
447 return jPanel_pColors;
\r
449 private void setColors() {
\r
451 for (int i=jTableModel_list.getRowCount()-1; i>=0; i--) {
\r
452 jTableModel_list.removeRow(i);
\r
454 for (TVProgram.ProgGenre g : TVProgram.ProgGenre.values()) {
\r
457 CommonSwingUtils.getColoredString(origpc.get(g),"色見本")
\r
459 jTableModel_list.addRow(data);
\r
461 jTable_list.updateUI();
\r
463 jLabel_timebar.setChoosed(origenv.getTimebarColor());
\r
464 jLabel_timebar2.setChoosed(origenv.getTimebarColor2());
\r
465 jLabel_timebar3.setChoosed(origenv.getTimebarColor3());
\r
466 jLabel_timebar4.setChoosed(origenv.getTimebarColor4());
\r
467 jCBP_highlight.setSelected(origenv.getEnableHighlight());
\r
468 jLabel_highlight.setChoosed(origenv.getHighlightColor());
\r
471 private JScrollPane getJScrollPane_list() {
\r
472 if (jScrollPane_list == null) {
\r
473 jScrollPane_list = new JScrollPane();
\r
474 jScrollPane_list.setViewportView(getJTable_list());
\r
475 jScrollPane_list.setVerticalScrollBarPolicy(ScrollPaneConstants.VERTICAL_SCROLLBAR_NEVER);
\r
476 jScrollPane_list.setHorizontalScrollBarPolicy(ScrollPaneConstants.HORIZONTAL_SCROLLBAR_NEVER);
\r
478 return(jScrollPane_list);
\r
480 private JNETable getJTable_list() {
\r
481 if (jTable_list == null) {
\r
483 String[] colname = {"ジャンル", "色"};
\r
484 int[] colwidth = {TABLE_WIDTH-100,100};
\r
486 jTableModel_list = new DefaultTableModel(colname, 0);
\r
487 jTable_list = new JNETable(jTableModel_list, false);
\r
488 jTable_list.setAutoResizeMode(JNETable.AUTO_RESIZE_OFF);
\r
489 DefaultTableColumnModel columnModel = (DefaultTableColumnModel)jTable_list.getColumnModel();
\r
490 TableColumn column = null;
\r
491 for (int i = 0 ; i < columnModel.getColumnCount() ; i++){
\r
492 column = columnModel.getColumn(i);
\r
493 column.setPreferredWidth(colwidth[i]);
\r
496 TableCellRenderer colorCellRenderer = new VWColorCellRenderer();
\r
497 jTable_list.getColumn("色").setCellRenderer(colorCellRenderer);
\r
499 final JDialog jd = this;
\r
500 jTable_list.addMouseListener(new MouseAdapter() {
\r
502 public void mouseClicked(MouseEvent e) {
\r
503 if (SwingUtilities.isLeftMouseButton(e)) {
\r
505 JTable t = (JTable) e.getSource();
\r
506 Point p = e.getPoint();
\r
508 int col = t.convertColumnIndexToModel(t.columnAtPoint(p));
\r
510 int row = t.convertRowIndexToModel(t.rowAtPoint(p));
\r
512 ccwin.setColor(CommonUtils.str2color((String) t.getValueAt(row,1)));
\r
513 CommonSwingUtils.setLocationCenter(jd,ccwin);
\r
514 ccwin.setVisible(true);
\r
516 if (ccwin.getSelectedColor() != null ) {
\r
518 tmppc.put((TVProgram.ProgGenre) t.getValueAt(row,0), ccwin.getSelectedColor());
\r
520 t.setValueAt(CommonSwingUtils.getColoredString(ccwin.getSelectedColor(),"色見本"), row, 1);
\r
527 return(jTable_list);
\r
539 public void setFontList(VWFont vwfont) {
\r
540 jCBX_titleFont.removeAllItems();
\r
541 jCBX_detailFont.removeAllItems();
\r
542 for ( String fn : vwfont.getNames() ) {
\r
543 jCBX_titleFont.addItem(fn);
\r
544 jCBX_detailFont.addItem(fn);
\r
546 //if (debug) System.err.println("[DEBUG] font name="+fn);
\r
549 private JPanel getJPanel_fonts() {
\r
550 if (jPanel_fonts == null) {
\r
551 jPanel_fonts = new JPanel();
\r
553 jPanel_fonts.setLayout(new SpringLayout());
\r
555 int y = SEP_HEIGHT_NARROW;
\r
557 CommonSwingUtils.putComponentOn(jPanel_fonts, new JTitleLabel("開始時刻欄の設定"), TITLE_WIDTH, PARTS_HEIGHT, SEP_HEIGHT_NARROW, y);
\r
559 y += (PARTS_HEIGHT+SEP_HEIGHT_NARROW);
\r
560 CommonSwingUtils.putComponentOn(jPanel_fonts, jCBP_showStart = new JCheckBoxPanel("表示する",LABEL_WIDTH), TITLE_WIDTH, PARTS_HEIGHT, SEP_WIDTH, y);
\r
561 //jCBP_showStart.addActionListener(fal);
\r
563 y += (PARTS_HEIGHT+SEP_HEIGHT);
\r
564 CommonSwingUtils.putComponentOn(jPanel_fonts, new JTitleLabel("番組名のフォント設定"), TITLE_WIDTH, PARTS_HEIGHT, SEP_WIDTH_NARROW, y);
\r
566 y += (PARTS_HEIGHT+SEP_HEIGHT_NARROW);
\r
567 CommonSwingUtils.putComponentOn(jPanel_fonts, jCBX_titleFont = new JComboBoxPanel("フォント",LABEL_WIDTH,ITEM_WIDTH,true), LABEL_WIDTH+ITEM_WIDTH, PARTS_HEIGHT, SEP_WIDTH, y);
\r
569 y += (PARTS_HEIGHT+SEP_HEIGHT_NARROW);
\r
570 CommonSwingUtils.putComponentOn(jPanel_fonts, jSP_titleFontSize = new JSliderPanel("サイズ",LABEL_WIDTH,6,24,ITEM_WIDTH), LABEL_WIDTH+ITEM_WIDTH, PARTS_HEIGHT, SEP_WIDTH, y);
\r
572 y += (PARTS_HEIGHT+SEP_HEIGHT_NARROW);
\r
573 CommonSwingUtils.putComponentOn(jPanel_fonts, new JLabel("文字色"), LABEL_WIDTH, PARTS_HEIGHT, SEP_WIDTH, y);
\r
574 CommonSwingUtils.putComponentOn(jPanel_fonts, jLabel_titleFontColor = new JCCLabel("番組名", origenv.getTitleFontColor(),false,this,ccwin), ITEM_WIDTH, PARTS_HEIGHT, SEP_WIDTH+LABEL_WIDTH, y);
\r
576 y += (PARTS_HEIGHT+SEP_HEIGHT_NARROW);
\r
577 CommonSwingUtils.putComponentOn(jPanel_fonts, new JLabel("スタイル"), LABEL_WIDTH, PARTS_HEIGHT, SEP_WIDTH, y);
\r
578 CommonSwingUtils.putComponentOn(jPanel_fonts, jScrollPane_titleFontStyle = getJScrollPane_fontstyle(), ITEM_WIDTH, STYLETABLE_HEIGHT, SEP_WIDTH+LABEL_WIDTH, y);
\r
580 y += (STYLETABLE_HEIGHT+10);
\r
581 CommonSwingUtils.putComponentOn(jPanel_fonts, new JTitleLabel("番組詳細のフォント設定"), TITLE_WIDTH, PARTS_HEIGHT, SEP_WIDTH_NARROW, y);
\r
583 y += (PARTS_HEIGHT+SEP_HEIGHT_NARROW);
\r
584 CommonSwingUtils.putComponentOn(jPanel_fonts, jCBP_showDetail = new JCheckBoxPanel("表示する",LABEL_WIDTH), TITLE_WIDTH+ITEM_WIDTH, PARTS_HEIGHT, SEP_WIDTH, y);
\r
586 y += (PARTS_HEIGHT+SEP_HEIGHT_NARROW);
\r
587 CommonSwingUtils.putComponentOn(jPanel_fonts, jCBX_detailFont = new JComboBoxPanel("フォント",LABEL_WIDTH,ITEM_WIDTH,true), LABEL_WIDTH+ITEM_WIDTH, PARTS_HEIGHT, SEP_WIDTH, y);
\r
589 y += (PARTS_HEIGHT+SEP_HEIGHT_NARROW);
\r
590 CommonSwingUtils.putComponentOn(jPanel_fonts, jSP_detailFontSize = new JSliderPanel("サイズ",LABEL_WIDTH,6,24,ITEM_WIDTH), LABEL_WIDTH+ITEM_WIDTH, PARTS_HEIGHT, SEP_WIDTH, y);
\r
592 y += (PARTS_HEIGHT+SEP_HEIGHT_NARROW);
\r
593 CommonSwingUtils.putComponentOn(jPanel_fonts, new JLabel("文字色"), LABEL_WIDTH, PARTS_HEIGHT, SEP_WIDTH, y);
\r
594 CommonSwingUtils.putComponentOn(jPanel_fonts, jLabel_detailFontColor = new JCCLabel("番組詳細", origenv.getDetailFontColor(),false,this,ccwin), ITEM_WIDTH, PARTS_HEIGHT, SEP_WIDTH+LABEL_WIDTH, y);
\r
596 y += (PARTS_HEIGHT+SEP_HEIGHT_NARROW);
\r
597 CommonSwingUtils.putComponentOn(jPanel_fonts, new JLabel("スタイル"), LABEL_WIDTH, PARTS_HEIGHT, SEP_WIDTH, y);
\r
598 CommonSwingUtils.putComponentOn(jPanel_fonts, jScrollPane_detailFontStyle = getJScrollPane_fontstyle(), ITEM_WIDTH, STYLETABLE_HEIGHT, SEP_WIDTH+LABEL_WIDTH, y);
\r
600 y += (STYLETABLE_HEIGHT+SEP_HEIGHT_NARROW);
\r
601 CommonSwingUtils.putComponentOn(jPanel_fonts, jSP_detailTab = new JSliderPanel("左余白",LABEL_WIDTH,0,24,ITEM_WIDTH), LABEL_WIDTH+ITEM_WIDTH, PARTS_HEIGHT, SEP_WIDTH, y);
\r
603 y += (PARTS_HEIGHT+SEP_HEIGHT*3);
\r
605 if (PANEL_HEIGHT < y) PANEL_HEIGHT = y;
\r
607 jPanel_fonts.setPreferredSize(new Dimension(PANEL_WIDTH, PANEL_HEIGHT));
\r
609 return jPanel_fonts;
\r
611 private void setFonts() {
\r
613 jCBP_showStart.setSelected(origenv.getShowStart());
\r
615 if ( ! origenv.getTitleFont().equals("") ) {
\r
616 jCBX_titleFont.setSelectedItem(origenv.getTitleFont());
\r
618 else if ( ! origenv.getFontName().equals("") ) {
\r
619 jCBX_titleFont.setSelectedItem(origenv.getFontName());
\r
621 jSP_titleFontSize.setValue(origenv.getTitleFontSize());
\r
622 jLabel_titleFontColor.setChoosed(origenv.getTitleFontColor());
\r
623 setFontStyles((JNETable) jScrollPane_titleFontStyle.getViewport().getView(), origenv.getTitleFontStyle());
\r
625 jCBP_showDetail.setSelected(origenv.getShowDetail());
\r
626 if ( ! origenv.getDetailFont().equals("") ) {
\r
627 jCBX_detailFont.setSelectedItem(origenv.getDetailFont());
\r
629 else if ( ! origenv.getFontName().equals("") ) {
\r
630 jCBX_detailFont.setSelectedItem(origenv.getFontName());
\r
632 jSP_detailFontSize.setValue(origenv.getDetailFontSize());
\r
633 jLabel_detailFontColor.setChoosed(origenv.getDetailFontColor());
\r
634 setFontStyles((JNETable) jScrollPane_detailFontStyle.getViewport().getView(), origenv.getDetailFontStyle());
\r
635 jSP_detailTab.setValue(origenv.getDetailTab());
\r
636 jCBX_aaMode.setSelectedItem(origenv.getPaperAAMode());
\r
638 private void setFontStyles(JNETable jt, ArrayList<JTXTButton.FontStyle> fsa) {
\r
639 for ( int row=0; row<jt.getRowCount(); row++ ) {
\r
640 jt.setValueAt(false, row, 0);
\r
641 for ( JTXTButton.FontStyle fs : fsa ) {
\r
642 if ( fs == jt.getValueAt(row, 1) ) {
\r
643 jt.setValueAt(true, row, 0);
\r
650 private JScrollPane getJScrollPane_fontstyle() {
\r
651 JScrollPane jScrollPane = new JScrollPane();
\r
652 jScrollPane.setViewportView(getJTable_fontstyle());
\r
653 jScrollPane.setVerticalScrollBarPolicy(ScrollPaneConstants.VERTICAL_SCROLLBAR_NEVER);
\r
654 jScrollPane.setHorizontalScrollBarPolicy(ScrollPaneConstants.HORIZONTAL_SCROLLBAR_NEVER);
\r
655 return jScrollPane;
\r
657 private JNETable getJTable_fontstyle() {
\r
660 String[] colname = {"チェック", "スタイル"};
\r
661 int[] colwidth = {50,ITEM_WIDTH-50};
\r
664 DefaultTableModel model = new DefaultTableModel(colname, 0);
\r
665 JNETable jTable = new JNETable(model, false) {
\r
667 private static final long serialVersionUID = 1L;
\r
670 public boolean isCellEditable(int row, int column) {
\r
671 return (column == 0);
\r
674 jTable.setAutoResizeMode(JNETable.AUTO_RESIZE_OFF);
\r
675 DefaultTableColumnModel columnModel = (DefaultTableColumnModel)jTable.getColumnModel();
\r
676 TableColumn column = null;
\r
677 for (int i = 0 ; i < columnModel.getColumnCount() ; i++){
\r
678 column = columnModel.getColumn(i);
\r
679 column.setPreferredWidth(colwidth[i]);
\r
683 jTable.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
\r
686 DefaultCellEditor editor = new DefaultCellEditor(new JCheckBox() {
\r
688 private static final long serialVersionUID = 1L;
\r
691 public int getHorizontalAlignment() {
\r
692 return JCheckBox.CENTER;
\r
695 jTable.getColumn("チェック").setCellEditor(editor);
\r
697 DefaultTableCellRenderer renderer = new DefaultTableCellRenderer() {
\r
699 private static final long serialVersionUID = 1L;
\r
702 public Component getTableCellRendererComponent(JTable table, Object value,
\r
703 boolean isSelected, boolean hasFocus, int row, int column) {
\r
705 JCheckBox cBox = new JCheckBox();
\r
706 cBox.setHorizontalAlignment(JCheckBox.CENTER);
\r
708 Boolean b = (Boolean)value;
\r
709 cBox.setSelected(b.booleanValue());
\r
712 cBox.setBackground(table.getSelectionBackground());
\r
715 cBox.setBackground(table.getBackground());
\r
720 jTable.getColumn("チェック").setCellRenderer(renderer);
\r
723 for ( JTXTButton.FontStyle fs : JTXTButton.FontStyle.values() ) {
\r
724 Object[] data = { false,fs };
\r
725 model.addRow(data);
\r
734 private JPanel getJPanel_bounds() {
\r
735 if (jPanel_bounds == null) {
\r
736 jPanel_bounds = new JPanel();
\r
738 jPanel_bounds.setLayout(new SpringLayout());
\r
740 int y = SEP_HEIGHT_NARROW;
\r
742 CommonSwingUtils.putComponentOn(jPanel_bounds, new JTitleLabel("サイズの設定"), TITLE_WIDTH, PARTS_HEIGHT, SEP_WIDTH_NARROW, y);
\r
744 y += (PARTS_HEIGHT+SEP_HEIGHT_NARROW);
\r
745 CommonSwingUtils.putComponentOn(jPanel_bounds, jSP_width = new JSliderPanel("幅",LABEL_WIDTH,50,300,ITEM_WIDTH), LABEL_WIDTH+ITEM_WIDTH, PARTS_HEIGHT, SEP_WIDTH, y);
\r
747 y += (PARTS_HEIGHT+SEP_HEIGHT_NARROW);
\r
748 CommonSwingUtils.putComponentOn(jPanel_bounds, jSP_height = new JSliderPanel("高さ(pt/H)",LABEL_WIDTH,30,600,STEPBY,ITEM_WIDTH), LABEL_WIDTH+ITEM_WIDTH, PARTS_HEIGHT, SEP_WIDTH, y);
\r
750 y += (PARTS_HEIGHT+SEP_HEIGHT_NARROW);
\r
751 CommonSwingUtils.putComponentOn(jPanel_bounds, jSP_timebarPosition = new JSliderPanel("現在時刻線(分)",LABEL_WIDTH,1,180,ITEM_WIDTH), LABEL_WIDTH+ITEM_WIDTH, PARTS_HEIGHT, SEP_WIDTH, y);
\r
753 y += (PARTS_HEIGHT+SEP_HEIGHT);
\r
754 CommonSwingUtils.putComponentOn(jPanel_bounds, new JTitleLabel("予約枠の設定"), TITLE_WIDTH, PARTS_HEIGHT, SEP_WIDTH_NARROW, y);
\r
756 y += (PARTS_HEIGHT+SEP_HEIGHT_NARROW);
\r
757 CommonSwingUtils.putComponentOn(jPanel_bounds, jLabel_execon = new JCCLabel("実行ONの文字色",origenv.getExecOnFontColor(),false,this,ccwin), ITEM_WIDTH, PARTS_HEIGHT, SEP_WIDTH+LABEL_WIDTH, y);
\r
759 y += (PARTS_HEIGHT+SEP_HEIGHT_NARROW);
\r
760 CommonSwingUtils.putComponentOn(jPanel_bounds, jLabel_execoff = new JCCLabel("実行OFFの文字色",origenv.getExecOffFontColor(),false,this,ccwin), ITEM_WIDTH, PARTS_HEIGHT, SEP_WIDTH+LABEL_WIDTH, y);
\r
762 y += (PARTS_HEIGHT+SEP_HEIGHT);
\r
763 CommonSwingUtils.putComponentOn(jPanel_bounds, new JTitleLabel("ピックアップ枠の設定"), TITLE_WIDTH, PARTS_HEIGHT, SEP_WIDTH_NARROW, y);
\r
765 y += (PARTS_HEIGHT+SEP_HEIGHT_NARROW);
\r
766 CommonSwingUtils.putComponentOn(jPanel_bounds, jLabel_pickup = new JCCLabel("ピックアップの枠色",origenv.getPickedColor(),true,this,ccwin), ITEM_WIDTH, PARTS_HEIGHT, SEP_WIDTH+LABEL_WIDTH, y);
\r
768 y += (PARTS_HEIGHT+SEP_HEIGHT_NARROW);
\r
769 CommonSwingUtils.putComponentOn(jPanel_bounds, jLabel_pickupFont = new JCCLabel("ピックアップの文字色",origenv.getPickedFontColor(),false,this,ccwin), ITEM_WIDTH, PARTS_HEIGHT, SEP_WIDTH+LABEL_WIDTH, y);
\r
771 y += (PARTS_HEIGHT+SEP_HEIGHT);
\r
772 CommonSwingUtils.putComponentOn(jPanel_bounds, new JTitleLabel("予約待機枠の設定"), TITLE_WIDTH, PARTS_HEIGHT, SEP_WIDTH_NARROW, y);
\r
774 y += (PARTS_HEIGHT+SEP_HEIGHT_NARROW);
\r
775 CommonSwingUtils.putComponentOn(jPanel_bounds, jSP_matchedBorderThickness = new JSliderPanel("太さ",LABEL_WIDTH,1,16,ITEM_WIDTH), LABEL_WIDTH+ITEM_WIDTH, PARTS_HEIGHT, SEP_WIDTH, y);
\r
777 y += (PARTS_HEIGHT+SEP_HEIGHT_NARROW);
\r
778 CommonSwingUtils.putComponentOn(jPanel_bounds, jLabel_matchedBorderColor = new JCCLabel("予約待機の枠色",origenv.getMatchedBorderColor(),true,this,ccwin), ITEM_WIDTH, PARTS_HEIGHT, SEP_WIDTH+LABEL_WIDTH, y);
\r
780 y += (PARTS_HEIGHT+SEP_HEIGHT);
\r
781 CommonSwingUtils.putComponentOn(jPanel_bounds, new JTitleLabel("フォントのアンチエイリアス設定"), TITLE_WIDTH, PARTS_HEIGHT, SEP_WIDTH_NARROW, y);
\r
783 y += (PARTS_HEIGHT+SEP_HEIGHT_NARROW);
\r
784 CommonSwingUtils.putComponentOn(jPanel_bounds, jCBX_aaMode = new JComboBoxPanel("アンチエイリアス",LABEL_WIDTH,ITEM_WIDTH,true), LABEL_WIDTH+ITEM_WIDTH, PARTS_HEIGHT, SEP_WIDTH, y);
\r
785 for ( AAMode aam : AAMode.values() ) {
\r
786 jCBX_aaMode.addItem(aam);
\r
789 y += (PARTS_HEIGHT+SEP_HEIGHT*2);
\r
791 if (PANEL_HEIGHT < y) PANEL_HEIGHT = y;
\r
793 jPanel_bounds.setPreferredSize(new Dimension(PANEL_WIDTH, PANEL_HEIGHT));
\r
795 return jPanel_bounds;
\r
798 private void setBounds() {
\r
799 jSP_width.setValue(origbnd.getBangumiColumnWidth());
\r
800 jSP_height.setValue(Math.round(origbnd.getPaperHeightMultiplier()*(float)60/(float)STEPBY));
\r
801 jSP_timebarPosition.setValue(origbnd.getTimelinePosition());
\r
802 jLabel_execon.setChoosed(origenv.getExecOnFontColor());
\r
803 jLabel_execon.setBackground(Color.RED);
\r
804 jLabel_execoff.setChoosed(origenv.getExecOffFontColor());
\r
805 jLabel_execoff.setBackground(Color.RED);
\r
806 jLabel_pickup.setChoosed(origenv.getPickedColor());
\r
807 jLabel_pickupFont.setChoosed(origenv.getPickedFontColor());
\r
808 jLabel_pickupFont.setBackground(Color.RED);
\r
809 jLabel_matchedBorderColor.setChoosed(origenv.getMatchedBorderColor());
\r
810 jSP_matchedBorderThickness.setValue(origenv.getMatchedBorderThickness());
\r
812 if ( ! origenv.getShowStart() && ! origenv.getShowDetail() ) {
\r
813 jCBP_lightProgramView.setSelected(true);
\r
816 jCBP_lightProgramView.setSelected(false);
\r
821 /*******************************************************************************
\r
823 ******************************************************************************/
\r
825 private class JTitleLabel extends JLabel {
\r
827 private static final long serialVersionUID = 1L;
\r
829 public JTitleLabel(String s) {
\r
831 this.setForeground(Color.RED);
\r
832 //this.setFont(this.getFont().deriveFont(this.getFont().getStyle()|Font.BOLD));
\r