1: #! /usr/bin/env python
2: # coding: utf-8
3: ## ----------------------------------------
4: ##
5: ## (C) Copyright 2000-2010, 小粒ちゃん《監修》小泉ひよ子とタマゴ倶楽部
6: ##
7: ## ----------------------------------------
8: #...+....1....+....2....+....3....+....4....+....5....+....6....+....7....+....8
9: """
10: >>> tips()
11:
12: >>> ## ----------------------------------------
13: >>> None
14: version: #1.0.30
15: """
16: ## ---------------------------------------- demo: jython
17: """
18: _jython=/Users/sketch/book/java_useBetter_1/_jython
19:
20: cd /Users/sketch/book/java_useBetter_1/berry/colorChart/jython/
21: JYTHONPATH=$_jython jython -i colorTable.py
22: ============================================================
23: Version: 2.5.0 (Release_2_5_0:6476, Jun 16 2009, 13:33:26)
24: Module : colorList.py
25: Date : Tue Sep 21 01:20:26 2010
26: ============================================================
27: """
28: ## ----------------------------------------
29: from javax.swing import JPanel
30: from javax.swing import JScrollPane
31: from javax.swing import JSplitPane
32: from javax.swing import JTable
33: from javax.swing.table import DefaultTableModel
34: from pawt import colors
35:
36: class TIPS():
37: columnNames = "name","red","green","blue",
38: colorNames = [e for e in dir(colors) if not e.startswith("_")]
39:
40: def __init__(self, master):
41: def canvasPane():
42: self.canvas = \
43: pane = JPanel()
44: return pane
45:
46: def controlPane():
47: def model_():
48: model = DefaultTableModel()
49: for e in self.columnNames:
50: model.addColumn(e)
51: for e in self.colorNames:
52: c = getattr(colors, e)
53: model.addRow([e, c.red, c.green, c.blue])
54: return model
55: def comp_():
56: self.table = \
57: comp = JTable(
58: model = model_(),
59: )
60: comp.selectionModel.valueChanged = Command(self)
61: ## comp.columnModel.selectionModel.valueChanged = valueChanged
62: column = comp.columnModel.getColumn(0)
63: column.preferredWidth = 200
64: return comp
65: pane = JScrollPane(
66: viewportView = comp_(),
67: )
68: return pane
69:
70: def splitPane():
71: pane = JSplitPane(
72: orientation = JSplitPane.HORIZONTAL_SPLIT,
73: leftComponent = controlPane(),
74: rightComponent = canvasPane(),
75: dividerLocation = 350,
76: )
77: return pane
78:
79: master.contentPane = splitPane()
80: master.pack()
81:
82: ## ----------------------------------------
83: def _update(self, value):
84: self.canvas.background = getattr(colors, value)
85:
86: ## ----------------------------------------
87: class Command:
88: def __init__(self, client):
89: self.client = client
90:
91: def __call__(self, e): # ListSelectionListener
92: table = self.client.table
93: row = table.selectionModel.leadSelectionIndex
94: ## column = table.columnModel.selectionModel.leadSelectionIndex
95: value = table.getValueAt(row, 0)
96: self.client._update(value)
97:
98: ## ----------------------------------------
99: from javax.swing import JFrame
100:
101: def tips():
102: frame = JFrame(
103: title = "color: JTable",
104: locationRelativeTo = None,
105: defaultCloseOperation = JFrame.EXIT_ON_CLOSE,
106: )
107: TIPS(master = frame)
108: frame.visible = True
109:
110: ## ----------------------------------------
111: from __init__ import *
112: ##tips = TIPS.tips
113:
114: if __name__=='__main__':
115: inform()
116: testmod()
117:
118: ## ========================================