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 JDialog {
\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 JSliderPanel jSP_detailRows = null;
\r
143 private JComboBoxPanel jCBX_detailFont = null;
\r
144 private JSliderPanel jSP_detailFontSize = null;
\r
145 private JCCLabel jLabel_detailFontColor = null;
\r
146 private JScrollPane jScrollPane_detailFontStyle = null;
\r
147 private JSliderPanel jSP_detailTab = null;
\r
148 private JComboBoxPanel jCBX_aaMode = null;
\r
151 private JPanel jPanel_bounds = null;
\r
152 private JSliderPanel jSP_width = null;
\r
153 private JSliderPanel jSP_height = null;
\r
154 private JSliderPanel jSP_timebarPosition = null;
\r
155 private JCCLabel jLabel_execon = null;
\r
156 private JCCLabel jLabel_execoff = null;
\r
157 private JCCLabel jLabel_pickup = null;
\r
158 private JCCLabel jLabel_pickupFont = null;
\r
159 private JCCLabel jLabel_matchedBorderColor = null;
\r
160 private JSliderPanel jSP_matchedBorderThickness = null;
\r
161 //private JCheckBoxPanel jCBP_lightProgramView = null;
\r
164 /*******************************************************************************
\r
166 ******************************************************************************/
\r
168 public AbsPaperColorsDialog() {
\r
172 this.setModal(true);
\r
174 this.addWindowListener(new WindowAdapter() {
\r
176 public void windowClosing(WindowEvent e) {
\r
181 this.setContentPane(getJPanel());
\r
182 this.setDefaultCloseOperation(DO_NOTHING_ON_CLOSE); // 閉じるときはキャンセルボタンを使ってクレ
\r
185 this.setResizable(false);
\r
187 this.setTitle("新聞形式の表示設定");
\r
191 /*******************************************************************************
\r
193 ******************************************************************************/
\r
195 private void doPreview() {
\r
196 getColors(tmpenv,tmppc);
\r
198 getBounds(tmpenv,tmpbnd);
\r
200 updatePaperColors(tmpenv,tmppc);
\r
201 updatePaperFonts(tmpenv);
\r
202 updatePaperBounds(tmpenv,tmpbnd);
\r
204 updatePaperRepaint();
\r
207 private void doUpdate() {
\r
208 getColors(origenv,origpc);
\r
210 getBounds(origenv,origbnd);
\r
212 updatePaperFonts(origenv);
\r
213 updatePaperColors(origenv,origpc);
\r
214 updatePaperBounds(origenv,origbnd);
\r
216 updatePaperRepaint();
\r
225 private 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 CommonUtils.FieldCopy(tmpenv, origenv);
\r
249 CommonUtils.FieldCopy(tmpbnd, origbnd);
\r
250 CommonUtils.FieldCopy(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.setDetailRows(jSP_detailRows.getValue());
\r
289 to.setDetailFont((String) jCBX_detailFont.getSelectedItem());
\r
290 to.setDetailFontSize(jSP_detailFontSize.getValue());
\r
291 to.setDetailFontColor(jLabel_detailFontColor.getChoosed());
\r
292 to.setDetailFontStyle(getFontStyles((JNETable) jScrollPane_detailFontStyle.getViewport().getView()));
\r
293 to.setDetailTab(jSP_detailTab.getValue());
\r
294 to.setPaperAAMode((AAMode) jCBX_aaMode.getSelectedItem());
\r
296 private ArrayList<JTXTButton.FontStyle> getFontStyles(JNETable jt) {
\r
297 ArrayList<JTXTButton.FontStyle> fsa = new ArrayList<JTXTButton.FontStyle>();
\r
298 for ( int row=0; row<jt.getRowCount(); row++ ) {
\r
299 if ( (Boolean)jt.getValueAt(row, 0) ) {
\r
300 fsa.add((FontStyle) jt.getValueAt(row, 1));
\r
307 private void getBounds(Env toe, Bounds tob) {
\r
308 tob.setBangumiColumnWidth(jSP_width.getValue());
\r
309 tob.setPaperHeightMultiplier(jSP_height.getValue()*(float)STEPBY/(float)60);
\r
310 tob.setTimelinePosition(jSP_timebarPosition.getValue());
\r
311 toe.setExecOnFontColor(jLabel_execon.getChoosed());
\r
312 toe.setExecOffFontColor(jLabel_execoff.getChoosed());
\r
313 toe.setPickedColor(jLabel_pickup.getChoosed());
\r
314 toe.setPickedFontColor(jLabel_pickupFont.getChoosed());
\r
315 toe.setMatchedBorderColor(jLabel_matchedBorderColor.getChoosed());
\r
316 toe.setMatchedBorderThickness(jSP_matchedBorderThickness.getValue());
\r
318 tob.setShowMatchedBorder(origbnd.getShowMatchedBorder());
\r
323 /*******************************************************************************
\r
325 ******************************************************************************/
\r
327 private JPanel getJPanel() {
\r
328 if (jPanel == null) {
\r
329 jPanel = new JPanel();
\r
330 jPanel.setLayout(new BorderLayout());
\r
331 jPanel.add(getJTabbedPane(), BorderLayout.CENTER);
\r
332 jPanel.add(getJPanel_buttons(), BorderLayout.PAGE_END);
\r
338 private JTabbedPane getJTabbedPane() {
\r
339 if (jTabbedPane == null) {
\r
340 jTabbedPane = new JTabbedPane();
\r
341 jTabbedPane.add(getJPanel_pColors(),"背景色",0);
\r
342 jTabbedPane.add(getJPanel_fonts(),"テキスト",1);
\r
343 jTabbedPane.add(getJPanel_bounds(),"その他",2);
\r
345 return jTabbedPane;
\r
349 private JPanel getJPanel_buttons() {
\r
350 if (jPanel_buttons == null) {
\r
351 jPanel_buttons = new JPanel();
\r
353 jPanel_buttons.setLayout(new SpringLayout());
\r
355 int y = SEP_HEIGHT;
\r
356 int x = (PANEL_WIDTH - (BUTTON_WIDTH*3+SEP_WIDTH*2))/2;
\r
357 CommonSwingUtils.putComponentOn(jPanel_buttons, getJButton_preview("プレビュー"), BUTTON_WIDTH, PARTS_HEIGHT, x, y);
\r
358 CommonSwingUtils.putComponentOn(jPanel_buttons, getJButton_update("登録"), BUTTON_WIDTH, PARTS_HEIGHT, x+=BUTTON_WIDTH+SEP_WIDTH, y);
\r
359 CommonSwingUtils.putComponentOn(jPanel_buttons, getJButton_cancel("キャンセル"), BUTTON_WIDTH, PARTS_HEIGHT, x+=BUTTON_WIDTH+SEP_WIDTH, y);
\r
361 y += PARTS_HEIGHT+SEP_HEIGHT;
\r
363 jPanel_buttons.setPreferredSize(new Dimension(PANEL_WIDTH, y));
\r
365 return jPanel_buttons;
\r
367 private JButton getJButton_preview(String s) {
\r
368 if (jButton_preview == null) {
\r
369 jButton_preview = new JButton();
\r
370 jButton_preview.setText(s);
\r
372 jButton_preview.addActionListener(new ActionListener() {
\r
374 public void actionPerformed(ActionEvent e) {
\r
379 return jButton_preview;
\r
381 private JButton getJButton_update(String s) {
\r
382 if (jButton_update == null) {
\r
383 jButton_update = new JButton();
\r
384 jButton_update.setText(s);
\r
386 jButton_update.addActionListener(new ActionListener() {
\r
388 public void actionPerformed(ActionEvent e) {
\r
393 return jButton_update;
\r
395 private JButton getJButton_cancel(String s) {
\r
396 if (jButton_cancel == null) {
\r
397 jButton_cancel = new JButton();
\r
398 jButton_cancel.setText(s);
\r
400 jButton_cancel.addActionListener(new ActionListener() {
\r
402 public void actionPerformed(ActionEvent e) {
\r
407 return jButton_cancel;
\r
415 private JPanel getJPanel_pColors() {
\r
416 if (jPanel_pColors == null) {
\r
417 jPanel_pColors = new JPanel();
\r
419 jPanel_pColors.setLayout(new SpringLayout());
\r
421 int y = SEP_HEIGHT_NARROW;
\r
424 CommonSwingUtils.putComponentOn(jPanel_pColors, new JTitleLabel("ジャンル別背景色"), TITLE_WIDTH, PARTS_HEIGHT, SEP_WIDTH_NARROW, y);
\r
425 y += (PARTS_HEIGHT+SEP_HEIGHT_NARROW);
\r
426 CommonSwingUtils.putComponentOn(jPanel_pColors, getJScrollPane_list(), TABLE_WIDTH, TABLE_HEIGHT, SEP_WIDTH, y);
\r
428 y += (TABLE_HEIGHT+SEP_HEIGHT);
\r
429 CommonSwingUtils.putComponentOn(jPanel_pColors, new JTitleLabel("タイムバーの色"), TITLE_WIDTH, PARTS_HEIGHT, SEP_WIDTH_NARROW, y);
\r
430 y += (PARTS_HEIGHT+SEP_HEIGHT_NARROW);
\r
431 CommonSwingUtils.putComponentOn(jPanel_pColors, jLabel_timebar = new JCCLabel("6~11", origenv.getTimebarColor(),true,this,ccwin), TIMEBAR_WIDTH, PARTS_HEIGHT, x, y);
\r
432 CommonSwingUtils.putComponentOn(jPanel_pColors, jLabel_timebar2 = new JCCLabel("12~17", origenv.getTimebarColor2(),true,this,ccwin), TIMEBAR_WIDTH, PARTS_HEIGHT, x+=TIMEBAR_WIDTH, y);
\r
433 CommonSwingUtils.putComponentOn(jPanel_pColors, jLabel_timebar3 = new JCCLabel("18~23", origenv.getTimebarColor3(),true,this,ccwin), TIMEBAR_WIDTH, PARTS_HEIGHT, x+=TIMEBAR_WIDTH, y);
\r
434 CommonSwingUtils.putComponentOn(jPanel_pColors, jLabel_timebar4 = new JCCLabel("24~5", origenv.getTimebarColor4(),true,this,ccwin), TIMEBAR_WIDTH, PARTS_HEIGHT, x+=TIMEBAR_WIDTH, y);
\r
436 y += (PARTS_HEIGHT+SEP_HEIGHT);
\r
437 CommonSwingUtils.putComponentOn(jPanel_pColors, new JTitleLabel("マウスオーバー時のハイライト色"), TITLE_WIDTH, PARTS_HEIGHT, SEP_WIDTH_NARROW, y);
\r
438 y += (PARTS_HEIGHT+SEP_HEIGHT_NARROW);
\r
439 CommonSwingUtils.putComponentOn(jPanel_pColors, jCBP_highlight = new JCheckBoxPanel("有効",LABEL_WIDTH/2), LABEL_WIDTH, PARTS_HEIGHT, SEP_WIDTH, y);
\r
440 CommonSwingUtils.putComponentOn(jPanel_pColors, jLabel_highlight = new JCCLabel("ハイライト",origenv.getHighlightColor(),true,this,ccwin), ITEM_WIDTH, PARTS_HEIGHT, LABEL_WIDTH+SEP_WIDTH, y);
\r
442 y += (PARTS_HEIGHT+SEP_HEIGHT*2);
\r
444 if (PANEL_HEIGHT < y) PANEL_HEIGHT = y;
\r
446 jPanel_pColors.setPreferredSize(new Dimension(PANEL_WIDTH, PANEL_HEIGHT));
\r
448 return jPanel_pColors;
\r
450 private void setColors() {
\r
452 for (int i=jTableModel_list.getRowCount()-1; i>=0; i--) {
\r
453 jTableModel_list.removeRow(i);
\r
455 for (TVProgram.ProgGenre g : TVProgram.ProgGenre.values()) {
\r
458 CommonSwingUtils.getColoredString(origpc.get(g),"色見本")
\r
460 jTableModel_list.addRow(data);
\r
462 jTable_list.updateUI();
\r
464 jLabel_timebar.setChoosed(origenv.getTimebarColor());
\r
465 jLabel_timebar2.setChoosed(origenv.getTimebarColor2());
\r
466 jLabel_timebar3.setChoosed(origenv.getTimebarColor3());
\r
467 jLabel_timebar4.setChoosed(origenv.getTimebarColor4());
\r
468 jCBP_highlight.setSelected(origenv.getEnableHighlight());
\r
469 jLabel_highlight.setChoosed(origenv.getHighlightColor());
\r
472 private JScrollPane getJScrollPane_list() {
\r
473 if (jScrollPane_list == null) {
\r
474 jScrollPane_list = new JScrollPane();
\r
475 jScrollPane_list.setViewportView(getJTable_list());
\r
476 jScrollPane_list.setVerticalScrollBarPolicy(ScrollPaneConstants.VERTICAL_SCROLLBAR_NEVER);
\r
477 jScrollPane_list.setHorizontalScrollBarPolicy(ScrollPaneConstants.HORIZONTAL_SCROLLBAR_NEVER);
\r
479 return(jScrollPane_list);
\r
481 private JNETable getJTable_list() {
\r
482 if (jTable_list == null) {
\r
484 String[] colname = {"ジャンル", "色"};
\r
485 int[] colwidth = {TABLE_WIDTH-100,100};
\r
487 jTableModel_list = new DefaultTableModel(colname, 0);
\r
488 jTable_list = new JNETable(jTableModel_list, false);
\r
489 jTable_list.setAutoResizeMode(JNETable.AUTO_RESIZE_OFF);
\r
490 DefaultTableColumnModel columnModel = (DefaultTableColumnModel)jTable_list.getColumnModel();
\r
491 TableColumn column = null;
\r
492 for (int i = 0 ; i < columnModel.getColumnCount() ; i++){
\r
493 column = columnModel.getColumn(i);
\r
494 column.setPreferredWidth(colwidth[i]);
\r
497 TableCellRenderer colorCellRenderer = new VWColorCellRenderer();
\r
498 jTable_list.getColumn("色").setCellRenderer(colorCellRenderer);
\r
500 final JDialog jd = this;
\r
501 jTable_list.addMouseListener(new MouseAdapter() {
\r
503 public void mouseClicked(MouseEvent e) {
\r
504 if (SwingUtilities.isLeftMouseButton(e)) {
\r
506 JTable t = (JTable) e.getSource();
\r
507 Point p = e.getPoint();
\r
509 int col = t.convertColumnIndexToModel(t.columnAtPoint(p));
\r
511 int row = t.convertRowIndexToModel(t.rowAtPoint(p));
\r
513 ccwin.setColor(CommonUtils.str2color((String) t.getValueAt(row,1)));
\r
514 CommonSwingUtils.setLocationCenter(jd,ccwin);
\r
515 ccwin.setVisible(true);
\r
517 if (ccwin.getSelectedColor() != null ) {
\r
519 tmppc.put((TVProgram.ProgGenre) t.getValueAt(row,0), ccwin.getSelectedColor());
\r
521 t.setValueAt(CommonSwingUtils.getColoredString(ccwin.getSelectedColor(),"色見本"), row, 1);
\r
528 return(jTable_list);
\r
540 public void setFontList(VWFont vwfont) {
\r
541 jCBX_titleFont.removeAllItems();
\r
542 jCBX_detailFont.removeAllItems();
\r
543 for ( String fn : vwfont.getNames() ) {
\r
544 jCBX_titleFont.addItem(fn);
\r
545 jCBX_detailFont.addItem(fn);
\r
547 //if (debug) System.err.println("[DEBUG] font name="+fn);
\r
550 private JPanel getJPanel_fonts() {
\r
551 if (jPanel_fonts == null) {
\r
552 jPanel_fonts = new JPanel();
\r
554 jPanel_fonts.setLayout(new SpringLayout());
\r
556 int y = SEP_HEIGHT_NARROW;
\r
558 CommonSwingUtils.putComponentOn(jPanel_fonts, new JTitleLabel("開始時刻欄の設定"), TITLE_WIDTH, PARTS_HEIGHT, SEP_HEIGHT_NARROW, y);
\r
560 y += (PARTS_HEIGHT+SEP_HEIGHT_NARROW);
\r
561 CommonSwingUtils.putComponentOn(jPanel_fonts, jCBP_showStart = new JCheckBoxPanel("表示する",LABEL_WIDTH), TITLE_WIDTH, PARTS_HEIGHT, SEP_WIDTH, y);
\r
562 //jCBP_showStart.addActionListener(fal);
\r
564 y += (PARTS_HEIGHT+SEP_HEIGHT);
\r
565 CommonSwingUtils.putComponentOn(jPanel_fonts, new JTitleLabel("番組名のフォント設定"), TITLE_WIDTH, PARTS_HEIGHT, SEP_WIDTH_NARROW, y);
\r
567 y += (PARTS_HEIGHT+SEP_HEIGHT_NARROW);
\r
568 CommonSwingUtils.putComponentOn(jPanel_fonts, jCBX_titleFont = new JComboBoxPanel("フォント",LABEL_WIDTH,ITEM_WIDTH,true), LABEL_WIDTH+ITEM_WIDTH, PARTS_HEIGHT, SEP_WIDTH, y);
\r
570 y += (PARTS_HEIGHT+SEP_HEIGHT_NARROW);
\r
571 CommonSwingUtils.putComponentOn(jPanel_fonts, jSP_titleFontSize = new JSliderPanel("サイズ",LABEL_WIDTH,6,24,ITEM_WIDTH), LABEL_WIDTH+ITEM_WIDTH, PARTS_HEIGHT, SEP_WIDTH, y);
\r
573 y += (PARTS_HEIGHT+SEP_HEIGHT_NARROW);
\r
574 CommonSwingUtils.putComponentOn(jPanel_fonts, new JLabel("文字色"), LABEL_WIDTH, PARTS_HEIGHT, SEP_WIDTH, y);
\r
575 CommonSwingUtils.putComponentOn(jPanel_fonts, jLabel_titleFontColor = new JCCLabel("番組名", origenv.getTitleFontColor(),false,this,ccwin), ITEM_WIDTH, PARTS_HEIGHT, SEP_WIDTH+LABEL_WIDTH, y);
\r
577 y += (PARTS_HEIGHT+SEP_HEIGHT_NARROW);
\r
578 CommonSwingUtils.putComponentOn(jPanel_fonts, new JLabel("スタイル"), LABEL_WIDTH, PARTS_HEIGHT, SEP_WIDTH, y);
\r
579 CommonSwingUtils.putComponentOn(jPanel_fonts, jScrollPane_titleFontStyle = getJScrollPane_fontstyle(), ITEM_WIDTH, STYLETABLE_HEIGHT, SEP_WIDTH+LABEL_WIDTH, y);
\r
581 y += (STYLETABLE_HEIGHT+10);
\r
582 CommonSwingUtils.putComponentOn(jPanel_fonts, new JTitleLabel("番組詳細のフォント設定"), TITLE_WIDTH, PARTS_HEIGHT, SEP_WIDTH_NARROW, y);
\r
584 y += (PARTS_HEIGHT+SEP_HEIGHT_NARROW);
\r
585 CommonSwingUtils.putComponentOn(jPanel_fonts, jCBP_showDetail = new JCheckBoxPanel("表示する",LABEL_WIDTH), TITLE_WIDTH+ITEM_WIDTH, PARTS_HEIGHT, SEP_WIDTH, y);
\r
587 y += (PARTS_HEIGHT+SEP_HEIGHT_NARROW);
\r
588 CommonSwingUtils.putComponentOn(jPanel_fonts, jSP_detailRows = new JSliderPanel("最大行数",LABEL_WIDTH,1,50,ITEM_WIDTH), TITLE_WIDTH+ITEM_WIDTH, PARTS_HEIGHT, SEP_WIDTH, y);
\r
590 y += (PARTS_HEIGHT+SEP_HEIGHT_NARROW);
\r
591 CommonSwingUtils.putComponentOn(jPanel_fonts, jCBX_detailFont = new JComboBoxPanel("フォント",LABEL_WIDTH,ITEM_WIDTH,true), LABEL_WIDTH+ITEM_WIDTH, PARTS_HEIGHT, SEP_WIDTH, y);
\r
593 y += (PARTS_HEIGHT+SEP_HEIGHT_NARROW);
\r
594 CommonSwingUtils.putComponentOn(jPanel_fonts, jSP_detailFontSize = new JSliderPanel("サイズ",LABEL_WIDTH,6,24,ITEM_WIDTH), LABEL_WIDTH+ITEM_WIDTH, PARTS_HEIGHT, SEP_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, jLabel_detailFontColor = new JCCLabel("番組詳細", origenv.getDetailFontColor(),false,this,ccwin), ITEM_WIDTH, PARTS_HEIGHT, SEP_WIDTH+LABEL_WIDTH, y);
\r
600 y += (PARTS_HEIGHT+SEP_HEIGHT_NARROW);
\r
601 CommonSwingUtils.putComponentOn(jPanel_fonts, new JLabel("スタイル"), LABEL_WIDTH, PARTS_HEIGHT, SEP_WIDTH, y);
\r
602 CommonSwingUtils.putComponentOn(jPanel_fonts, jScrollPane_detailFontStyle = getJScrollPane_fontstyle(), ITEM_WIDTH, STYLETABLE_HEIGHT, SEP_WIDTH+LABEL_WIDTH, y);
\r
604 y += (STYLETABLE_HEIGHT+SEP_HEIGHT_NARROW);
\r
605 CommonSwingUtils.putComponentOn(jPanel_fonts, jSP_detailTab = new JSliderPanel("左余白",LABEL_WIDTH,0,24,ITEM_WIDTH), LABEL_WIDTH+ITEM_WIDTH, PARTS_HEIGHT, SEP_WIDTH, y);
\r
607 y += (PARTS_HEIGHT+SEP_HEIGHT*3);
\r
609 if (PANEL_HEIGHT < y) PANEL_HEIGHT = y;
\r
611 jPanel_fonts.setPreferredSize(new Dimension(PANEL_WIDTH, PANEL_HEIGHT));
\r
613 return jPanel_fonts;
\r
615 private void setFonts() {
\r
617 jCBP_showStart.setSelected(origenv.getShowStart());
\r
619 if ( ! origenv.getTitleFont().equals("") ) {
\r
620 jCBX_titleFont.setSelectedItem(origenv.getTitleFont());
\r
622 else if ( ! origenv.getFontName().equals("") ) {
\r
623 jCBX_titleFont.setSelectedItem(origenv.getFontName());
\r
625 jSP_titleFontSize.setValue(origenv.getTitleFontSize());
\r
626 jLabel_titleFontColor.setChoosed(origenv.getTitleFontColor());
\r
627 setFontStyles((JNETable) jScrollPane_titleFontStyle.getViewport().getView(), origenv.getTitleFontStyle());
\r
629 jCBP_showDetail.setSelected(origenv.getShowDetail());
\r
630 jSP_detailRows.setValue(origenv.getDetailRows());
\r
631 if ( ! origenv.getDetailFont().equals("") ) {
\r
632 jCBX_detailFont.setSelectedItem(origenv.getDetailFont());
\r
634 else if ( ! origenv.getFontName().equals("") ) {
\r
635 jCBX_detailFont.setSelectedItem(origenv.getFontName());
\r
637 jSP_detailFontSize.setValue(origenv.getDetailFontSize());
\r
638 jLabel_detailFontColor.setChoosed(origenv.getDetailFontColor());
\r
639 setFontStyles((JNETable) jScrollPane_detailFontStyle.getViewport().getView(), origenv.getDetailFontStyle());
\r
640 jSP_detailTab.setValue(origenv.getDetailTab());
\r
641 jCBX_aaMode.setSelectedItem(origenv.getPaperAAMode());
\r
643 private void setFontStyles(JNETable jt, ArrayList<JTXTButton.FontStyle> fsa) {
\r
644 for ( int row=0; row<jt.getRowCount(); row++ ) {
\r
645 jt.setValueAt(false, row, 0);
\r
646 for ( JTXTButton.FontStyle fs : fsa ) {
\r
647 if ( fs == jt.getValueAt(row, 1) ) {
\r
648 jt.setValueAt(true, row, 0);
\r
655 private JScrollPane getJScrollPane_fontstyle() {
\r
656 JScrollPane jScrollPane = new JScrollPane();
\r
657 jScrollPane.setViewportView(getJTable_fontstyle());
\r
658 jScrollPane.setVerticalScrollBarPolicy(ScrollPaneConstants.VERTICAL_SCROLLBAR_NEVER);
\r
659 jScrollPane.setHorizontalScrollBarPolicy(ScrollPaneConstants.HORIZONTAL_SCROLLBAR_NEVER);
\r
660 return jScrollPane;
\r
662 private JNETable getJTable_fontstyle() {
\r
665 String[] colname = {"チェック", "スタイル"};
\r
666 int[] colwidth = {50,ITEM_WIDTH-50};
\r
669 DefaultTableModel model = new DefaultTableModel(colname, 0);
\r
670 JNETable jTable = new JNETable(model, false) {
\r
672 private static final long serialVersionUID = 1L;
\r
675 public boolean isCellEditable(int row, int column) {
\r
676 return (column == 0);
\r
679 jTable.setAutoResizeMode(JNETable.AUTO_RESIZE_OFF);
\r
680 DefaultTableColumnModel columnModel = (DefaultTableColumnModel)jTable.getColumnModel();
\r
681 TableColumn column = null;
\r
682 for (int i = 0 ; i < columnModel.getColumnCount() ; i++){
\r
683 column = columnModel.getColumn(i);
\r
684 column.setPreferredWidth(colwidth[i]);
\r
688 jTable.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
\r
691 DefaultCellEditor editor = new DefaultCellEditor(new JCheckBox() {
\r
693 private static final long serialVersionUID = 1L;
\r
696 public int getHorizontalAlignment() {
\r
697 return JCheckBox.CENTER;
\r
700 jTable.getColumn("チェック").setCellEditor(editor);
\r
702 DefaultTableCellRenderer renderer = new DefaultTableCellRenderer() {
\r
704 private static final long serialVersionUID = 1L;
\r
707 public Component getTableCellRendererComponent(JTable table, Object value,
\r
708 boolean isSelected, boolean hasFocus, int row, int column) {
\r
710 JCheckBox cBox = new JCheckBox();
\r
711 cBox.setHorizontalAlignment(JCheckBox.CENTER);
\r
713 Boolean b = (Boolean)value;
\r
714 cBox.setSelected(b.booleanValue());
\r
717 cBox.setBackground(table.getSelectionBackground());
\r
720 cBox.setBackground(table.getBackground());
\r
725 jTable.getColumn("チェック").setCellRenderer(renderer);
\r
728 for ( JTXTButton.FontStyle fs : JTXTButton.FontStyle.values() ) {
\r
729 Object[] data = { false,fs };
\r
730 model.addRow(data);
\r
739 private JPanel getJPanel_bounds() {
\r
740 if (jPanel_bounds == null) {
\r
741 jPanel_bounds = new JPanel();
\r
743 jPanel_bounds.setLayout(new SpringLayout());
\r
745 int y = SEP_HEIGHT_NARROW;
\r
747 CommonSwingUtils.putComponentOn(jPanel_bounds, new JTitleLabel("サイズの設定"), TITLE_WIDTH, PARTS_HEIGHT, SEP_WIDTH_NARROW, y);
\r
749 y += (PARTS_HEIGHT+SEP_HEIGHT_NARROW);
\r
750 CommonSwingUtils.putComponentOn(jPanel_bounds, jSP_width = new JSliderPanel("幅",LABEL_WIDTH,50,300,ITEM_WIDTH), LABEL_WIDTH+ITEM_WIDTH, PARTS_HEIGHT, SEP_WIDTH, y);
\r
752 y += (PARTS_HEIGHT+SEP_HEIGHT_NARROW);
\r
753 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
755 y += (PARTS_HEIGHT+SEP_HEIGHT_NARROW);
\r
756 CommonSwingUtils.putComponentOn(jPanel_bounds, jSP_timebarPosition = new JSliderPanel("現在時刻線(分)",LABEL_WIDTH,1,180,ITEM_WIDTH), LABEL_WIDTH+ITEM_WIDTH, PARTS_HEIGHT, SEP_WIDTH, y);
\r
758 y += (PARTS_HEIGHT+SEP_HEIGHT);
\r
759 CommonSwingUtils.putComponentOn(jPanel_bounds, new JTitleLabel("予約枠の設定"), TITLE_WIDTH, PARTS_HEIGHT, SEP_WIDTH_NARROW, y);
\r
761 y += (PARTS_HEIGHT+SEP_HEIGHT_NARROW);
\r
762 CommonSwingUtils.putComponentOn(jPanel_bounds, jLabel_execon = new JCCLabel("実行ONの文字色",origenv.getExecOnFontColor(),false,this,ccwin), ITEM_WIDTH, PARTS_HEIGHT, SEP_WIDTH+LABEL_WIDTH, y);
\r
764 y += (PARTS_HEIGHT+SEP_HEIGHT_NARROW);
\r
765 CommonSwingUtils.putComponentOn(jPanel_bounds, jLabel_execoff = new JCCLabel("実行OFFの文字色",origenv.getExecOffFontColor(),false,this,ccwin), ITEM_WIDTH, PARTS_HEIGHT, SEP_WIDTH+LABEL_WIDTH, y);
\r
767 y += (PARTS_HEIGHT+SEP_HEIGHT);
\r
768 CommonSwingUtils.putComponentOn(jPanel_bounds, new JTitleLabel("ピックアップ枠の設定"), TITLE_WIDTH, PARTS_HEIGHT, SEP_WIDTH_NARROW, y);
\r
770 y += (PARTS_HEIGHT+SEP_HEIGHT_NARROW);
\r
771 CommonSwingUtils.putComponentOn(jPanel_bounds, jLabel_pickup = new JCCLabel("ピックアップの枠色",origenv.getPickedColor(),true,this,ccwin), ITEM_WIDTH, PARTS_HEIGHT, SEP_WIDTH+LABEL_WIDTH, y);
\r
773 y += (PARTS_HEIGHT+SEP_HEIGHT_NARROW);
\r
774 CommonSwingUtils.putComponentOn(jPanel_bounds, jLabel_pickupFont = new JCCLabel("ピックアップの文字色",origenv.getPickedFontColor(),false,this,ccwin), ITEM_WIDTH, PARTS_HEIGHT, SEP_WIDTH+LABEL_WIDTH, y);
\r
776 y += (PARTS_HEIGHT+SEP_HEIGHT);
\r
777 CommonSwingUtils.putComponentOn(jPanel_bounds, new JTitleLabel("予約待機枠の設定"), TITLE_WIDTH, PARTS_HEIGHT, SEP_WIDTH_NARROW, y);
\r
779 y += (PARTS_HEIGHT+SEP_HEIGHT_NARROW);
\r
780 CommonSwingUtils.putComponentOn(jPanel_bounds, jSP_matchedBorderThickness = new JSliderPanel("太さ",LABEL_WIDTH,1,16,ITEM_WIDTH), LABEL_WIDTH+ITEM_WIDTH, PARTS_HEIGHT, SEP_WIDTH, y);
\r
782 y += (PARTS_HEIGHT+SEP_HEIGHT_NARROW);
\r
783 CommonSwingUtils.putComponentOn(jPanel_bounds, jLabel_matchedBorderColor = new JCCLabel("予約待機の枠色",origenv.getMatchedBorderColor(),true,this,ccwin), ITEM_WIDTH, PARTS_HEIGHT, SEP_WIDTH+LABEL_WIDTH, y);
\r
785 y += (PARTS_HEIGHT+SEP_HEIGHT);
\r
786 CommonSwingUtils.putComponentOn(jPanel_bounds, new JTitleLabel("フォントのアンチエイリアス設定"), TITLE_WIDTH, PARTS_HEIGHT, SEP_WIDTH_NARROW, y);
\r
788 y += (PARTS_HEIGHT+SEP_HEIGHT_NARROW);
\r
789 CommonSwingUtils.putComponentOn(jPanel_bounds, jCBX_aaMode = new JComboBoxPanel("アンチエイリアス",LABEL_WIDTH,ITEM_WIDTH,true), LABEL_WIDTH+ITEM_WIDTH, PARTS_HEIGHT, SEP_WIDTH, y);
\r
790 for ( AAMode aam : AAMode.values() ) {
\r
791 jCBX_aaMode.addItem(aam);
\r
794 y += (PARTS_HEIGHT+SEP_HEIGHT*2);
\r
796 if (PANEL_HEIGHT < y) PANEL_HEIGHT = y;
\r
798 jPanel_bounds.setPreferredSize(new Dimension(PANEL_WIDTH, PANEL_HEIGHT));
\r
800 return jPanel_bounds;
\r
803 private void setBounds() {
\r
804 jSP_width.setValue(origbnd.getBangumiColumnWidth());
\r
805 jSP_height.setValue(Math.round(origbnd.getPaperHeightMultiplier()*(float)60/(float)STEPBY));
\r
806 jSP_timebarPosition.setValue(origbnd.getTimelinePosition());
\r
807 jLabel_execon.setChoosed(origenv.getExecOnFontColor());
\r
808 jLabel_execon.setBackground(Color.RED);
\r
809 jLabel_execoff.setChoosed(origenv.getExecOffFontColor());
\r
810 jLabel_execoff.setBackground(Color.RED);
\r
811 jLabel_pickup.setChoosed(origenv.getPickedColor());
\r
812 jLabel_pickupFont.setChoosed(origenv.getPickedFontColor());
\r
813 jLabel_pickupFont.setBackground(Color.RED);
\r
814 jLabel_matchedBorderColor.setChoosed(origenv.getMatchedBorderColor());
\r
815 jSP_matchedBorderThickness.setValue(origenv.getMatchedBorderThickness());
\r
817 if ( ! origenv.getShowStart() && ! origenv.getShowDetail() ) {
\r
818 jCBP_lightProgramView.setSelected(true);
\r
821 jCBP_lightProgramView.setSelected(false);
\r
826 /*******************************************************************************
\r
828 ******************************************************************************/
\r
830 private class JTitleLabel extends JLabel {
\r
832 private static final long serialVersionUID = 1L;
\r
834 public JTitleLabel(String s) {
\r
836 this.setForeground(Color.RED);
\r
837 //this.setFont(this.getFont().deriveFont(this.getFont().getStyle()|Font.BOLD));
\r