ExtJSでカラーパッレトウィンドウです。
パレットで色を選択してOKボタンをクリックすると、もとの画面に反映します。
以下はサンプル画像です。
初期状態:
colorボタンをクリックしてカラーパレットウィンドウをポップアップ。
カラーボタンをクリックするとウィンドウ下部に選択した色のコードを表示します。
OKボタンクリックでもとの画面に選択した色を表示します。
HTML
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<link rel="stylesheet" type="text/css" href="./resources/css/ext-all.css" />
<script type="text/javascript" src="./jslib/jquery-1.5.1.min.js"></script>
<script type="text/javascript" src="./jslib/adapter/jquery/ext-jquery-adapter.js"></script>
<script type="text/javascript" src="./jslib/ext-all.js"></script>
<script type="text/javascript" src="./sample.js"></script>
</head>
<body>
<div id="btn" style="margin: 10px"></div>
<div style="margin: 10px">selected color: <span id="selected">□</span></div>
</body>
</html>
javascript
Ext.onReady(function(){
var btn = new Ext.Button({
text: 'color',
renderTo: 'btn',
listeners: {
click: function(){
var win = new Ext.Window({
height: '180',
width: '160',
xtype: 'panel',
title: 'color select',
items: [{
xtype: 'colorpalette',
listeners: {
select: function(plt, color){
Ext.getCmp('sel-color').setValue(color);
}
}
}, {
xtype: 'form',
border: false,
bodyStyle: 'background-color: transparent; padding-left: 5px;',
labelWidth: 60,
items: [{
xtype: 'displayfield',
id: 'sel-color',
style: 'margin-top: 2px',
fieldLabel: 'selected'
}]
}],
buttons: [{
text: 'OK',
listeners: {
click: function(){
var clrtext = Ext.getCmp('sel-color').getValue();
var ele = Ext.get('selected');
if((clrtext == 'ffffff') || (clrtext == 'FFFFFF')){
ele.update('□');
ele.applyStyles('color: #000000');
}else{
ele.update('■');
ele.applyStyles('color: #'+ clrtext);
}
win.destroy();
}
}
}]
});
win.show();
}
}
});
});
ポイントはpanelのitemsにcolorpaletteを指定するところです。
この例ではさらにdisplayfieldに選択した色のコードを表示しています。