berry/colorChart/jython/colorSlider.py

  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.22
 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 colorSlider.py
 22: ============================================================
 23: Version: 2.5.0 (Release_2_5_0:6476, Jun 16 2009, 13:33:26) 
 24: Module : colorSlider.py
 25: Date   : Sun Sep 19 14:16:21 2010
 26: ============================================================
 27: """
 28: ## ----------------------------------------
 29: from java.awt import Color
 30: from java.awt import GridLayout
 31: from javax.swing import JPanel
 32: from javax.swing import JSlider
 33: from javax.swing import JSplitPane
 34: from pawt import colors
 35: 
 36: class TIPS():
 37:     colorNames = "red","green","blue",
 38: 
 39:     def __init__(self, master):
 40:         def canvasPane():
 41:             self.canvas = \
 42:             comp = JPanel(
 43:                 preferredSize = (100,100),
 44:                 )
 45:             return comp
 46: 
 47:         def controlPane():            
 48:             def comp_():
 49:                 comp = JSlider(
 50:                     maximum = 255,
 51:                     minimum = 0,
 52:                     paintTicks = True,
 53:                     majorTickSpacing = 32,
 54:                     minorTickSpacing = 8,
 55:                     minimumSize = (200,100),
 56:                     stateChanged = Command(self),
 57:                     )
 58:                 return comp
 59:             def pane_():
 60:                 self.control = \
 61:                 pane = JPanel(
 62:                     layout = GridLayout(0,1),
 63:                     )
 64:                 for e in self.colorNames:
 65:                     pane.add(comp_())
 66:                 return pane
 67:             pane = pane_()
 68:             return pane
 69:         
 70:         def splitPane():
 71:             pane = JSplitPane(
 72:                 orientation = JSplitPane.HORIZONTAL_SPLIT,
 73:                 leftComponent  = controlPane(),
 74:                 rightComponent = canvasPane(),
 75:                 dividerLocation = 200,
 76:                 )
 77:             return pane
 78:         
 79:         master.contentPane = splitPane()
 80:         master.pack()
 81: 
 82:     ## ----------------------------------------
 83:     def _update(self, value):
 84:         self.canvas.background = Color(*value)
 85: 
 86: ## ----------------------------------------
 87: class Command:
 88:     def __init__(self, client):
 89:         self.client = client
 90:         
 91:     def __call__(self, e):                  # ChangeListener
 92:         value = [e.value for e in self.client.control.components]
 93:         self.client._update(value)
 94:         
 95: ## ----------------------------------------
 96: from javax.swing import JFrame
 97: 
 98: def tips():
 99:     frame = JFrame(
100:         title = "color: JSlider",
101:         locationRelativeTo = None,
102:         defaultCloseOperation = JFrame.EXIT_ON_CLOSE,
103:         )
104:     TIPS(master = frame)
105:     frame.visible = True
106: 
107: ## ----------------------------------------
108: from __init__ import *
109: ##tips = TIPS.tips
110: 
111: if __name__=='__main__':
112:     inform()
113:     testmod()
114: 
115: ## ========================================