You are viewing a plain text version of this content. The canonical link for it is here.
Posted to users@myfaces.apache.org by Rashmi Kumari <Ra...@rmsi.com> on 2005/03/29 14:47:14 UTC
colorpicker + MyFaces
Hi,
I have to attach a colorpicker with a text field.
With a struts application this javascript was working fine but with
MyFaces the color picker is opening fine but I am unable to select any
color.
The jsp part where I am attaching the javascript is as below:
<h:form id="styleForm">
<h:panelGrid columns="3">
<h:panelGroup>
<h:outputText value="#{Message.style_name_label}" />
<h:outputText value="*" style="color:red;"/>
<f:verbatim>
<a href="javascript:pickColor('pick1097113084');" id="
pick1097113084"
style="border: 1px solid #000000;
font-family:Verdana; font-size:10px;
text-decoration: none;">
</a>
</f:verbatim>
</h:panelGroup>
<h:inputText id="pick1097113084field" value="#{Style.name}"
required="true">
<f:validateLength maximum="30" minimum="1" />
</h:inputText>
<f:verbatim>
<script language="javascript">relateColor('pick1097113084',
getObj('pick1097113084field').value);</script>
</f:verbatim>
<h:message styleClass="msgStyle" for="pick1097113084field" />
</h:panelGrid>
</h:form>
The javascript code is as below::
<script language="Javascript">
var perline = 9;
var divSet = false;
var curId;
var colorLevels = Array('0', '3', '6', '9', 'C', 'F');
var colorArray = Array();
var ie = false;
var nocolor = 'none';
if (document.all) { ie = true; nocolor = ''; }
function getObj(id) {
if (ie) { return document.all[id]; }
else { return document.getElementById(id); }
}
function addColor(r, g, b) {
var red = colorLevels[r];
var green = colorLevels[g];
var blue = colorLevels[b];
addColorValue(red, green, blue);
}
function addColorValue(r, g, b) {
colorArray[colorArray.length] = '#' + r + r + g + g + b + b;
}
function setColor(color) {
var link = getObj(curId);
var field = getObj(curId + 'field');
var picker = getObj('colorpicker');
field.value = color;
if (color == '') {
link.style.background = nocolor;
link.style.color = nocolor;
color = nocolor;
} else {
link.style.background = color;
link.style.color = color;
}
picker.style.display = 'none';
eval(getObj(curId + 'field').title);
}
function setDiv() {
if (!document.createElement) { return; }
var elemDiv = document.createElement('div');
if (typeof(elemDiv.innerHTML) != 'string') { return; }
genColors();
elemDiv.id = 'colorpicker';
elemDiv.style.position = 'absolute';
elemDiv.style.display = 'none';
elemDiv.style.border = '#000000 1px solid';
elemDiv.style.background = '#FFFFFF';
elemDiv.innerHTML = '<span style="font-family:Verdana;
font-size:11px;">Pick a color: '
+ '(<a href="javascript:setColor(\'\');">No color</a>)<br>'
+ getColorTable()
+ '</span>';
document.body.appendChild(elemDiv);
divSet = true;
}
function pickColor(id) {
if (!divSet) { setDiv(); }
var picker = getObj('colorpicker');
if (id == curId && picker.style.display == 'block') {
picker.style.display = 'none';
return;
}
curId = id;
var thelink = getObj(id);
picker.style.top = getAbsoluteOffsetTop(thelink) + 20;
picker.style.left = getAbsoluteOffsetLeft(thelink);
picker.style.display = 'block';
}
function genColors() {
addColorValue('0','0','0');
addColorValue('3','3','3');
addColorValue('6','6','6');
addColorValue('8','8','8');
addColorValue('9','9','9');
addColorValue('A','A','A');
addColorValue('C','C','C');
addColorValue('E','E','E');
addColorValue('F','F','F');
for (a = 1; a < colorLevels.length; a++)
addColor(0,0,a);
for (a = 1; a < colorLevels.length - 1; a++)
addColor(a,a,5);
for (a = 1; a < colorLevels.length; a++)
addColor(0,a,0);
for (a = 1; a < colorLevels.length - 1; a++)
addColor(a,5,a);
for (a = 1; a < colorLevels.length; a++)
addColor(a,0,0);
for (a = 1; a < colorLevels.length - 1; a++)
addColor(5,a,a);
for (a = 1; a < colorLevels.length; a++)
addColor(a,a,0);
for (a = 1; a < colorLevels.length - 1; a++)
addColor(5,5,a);
for (a = 1; a < colorLevels.length; a++)
addColor(0,a,a);
for (a = 1; a < colorLevels.length - 1; a++)
addColor(a,5,5);
for (a = 1; a < colorLevels.length; a++)
addColor(a,0,a);
for (a = 1; a < colorLevels.length - 1; a++)
addColor(5,a,5);
return colorArray;
}
function getColorTable() {
var colors = colorArray;
var tableCode = '';
tableCode += '<table border="0" cellspacing="1" cellpadding="1">';
for (i = 0; i < colors.length; i++) {
if (i % perline == 0) { tableCode += '<tr>'; }
tableCode += '<td bgcolor="#000000"><a style="outline: 1px
solid #000000; color: '
+ colors[i] + '; background: ' + colors[i] + ';font-size:
10px;" title="'
+ colors[i] + '" href="javascript:setColor(\'' + colors[i]
+ '\');"> </a></td>';
if (i % perline == perline - 1) { tableCode += '</tr>'; }
}
if (i % perline != 0) { tableCode += '</tr>'; }
tableCode += '</table>';
return tableCode;
}
function relateColor(id, color) {
var link = getObj(id);
if (color == '') {
link.style.background = nocolor;
link.style.color = nocolor;
color = nocolor;
} else {
link.style.background = color;
link.style.color = color;
}
eval(getObj(id + 'field').title);
}
function getAbsoluteOffsetTop(obj) {
var top = obj.offsetTop;
var parent = obj.offsetParent;
while (parent != document.body) {
top += parent.offsetTop;
parent = parent.offsetParent;
}
return top;
}
function getAbsoluteOffsetLeft(obj) {
var left = obj.offsetLeft;
var parent = obj.offsetParent;
while (parent != document.body) {
left += parent.offsetLeft;
parent = parent.offsetParent;
}
return left;
}
</script>
Thanx