[OpenAjaxIDE] Multiselect properties - must have datatype of array
Jon Ferraiolo
jferrai at us.ibm.com
Thu Aug 7 08:49:33 PDT 2008
There are lots of ways to address this requirement. Here are two that come
to mind:
Option 1: Do nothing special in the metadata spec to address Bertrand's
performance concern. Microsoft's property manager logic would recognize
that it is working with its own widgets somehow and provide a more
efficient code path that uses bitfields instead of arrays. (Bertrand would
have to say whether this option is feasible for MS's products)
Option 2: Add a new 'bitfield' type for the 'format' attribute, so you
would have <options datatype="Number" format="bitfield">. We explain that
if format="bitfield", then the 'value' attributes on the <option> element
must be unique powers of 2, such as <option value="1">, <option value="2">,
<option value="4">, etc, and require that tools save a Number (more
specifically, an integer) into the property storage system.
There are other options. I'm willing to go along with most everything so
long as we make a reasonable attempt to avoid unnecessary vendor-specific
features.
Jon
Wayne
Vicknair/Austin/I
BM To
Bertrand Le Roy
08/07/2008 07:56 <Bertrand.Le.Roy at microsoft.com>
AM cc
"ide at openajax.org"
<ide at openajax.org>,
ide-bounces at openajax.org, Jon
Ferraiolo/Menlo Park/IBM at IBMUS
Subject
Re: [OpenAjaxIDE] Multiselect
properties - must have datatype of
array(Document link: Jon Ferraiolo)
I believe that the <options> and <option> element combination do indeed
express a constrained, multiple-value parameter. HTML DOM and Dojo's
dijit.form.MultiSelect both happen to implement that concept with an,
admittedly inefficient, array return value. That implementation does not
diminish the expressiveness of the <options> construct. An implementation
could choose to iterate over the array values converting them to numbers
and bitwise or-ing them together.
Cheers,
Wayne
Wayne E. Vicknair
Consulting Product Design Professional
IBM SWG Emerging Internet Technologies
Office: 512.838.0707 Email: waynev at us.ibm.com
Bertrand Le Roy
<Bertrand.Le.Roy@
microsoft.com> To
Sent by: Jon Ferraiolo/Menlo Park/IBM at IBMUS
ide-bounces at opena cc
jax.org "ide at openajax.org"
<ide at openajax.org>
Subject
08/06/08 07:50 PM Re: [OpenAjaxIDE] Multiselect
properties - must have datatype of
array
Same thing that happens in C. Never been a problem as you rarely have the
many flag values. Storing a list of countries or states would be more
efficiently stored in more elaborate data structures. The use we have of
flags is typically stuff like read/write/readwrite or left, right, top,
bottom and combinations. You get the idea. Bit structures are way more
efficient for this type of situation.
Sure, HTML options are different but I’m not sure I see your point.
Anyway, that’s the design we have in our APIs and it would be nice if it
was possible to express it.
From: Jon Ferraiolo [mailto:jferrai at us.ibm.com]
Sent:: Wednesday, August 06, 2008 5:32 PM
To: Bertrand Le Roy
Cc: ide at openajax.org
Subject: RE: [OpenAjaxIDE] Multiselect properties - must have datatype of
array
What happens if you are doing multi-select with more than (4bytes) 32
alternatives (e.g., # states in US) or more than (8bytes) 64 alternatives
(e.g., # countries in the world)?
HTML's OPTION element doesn't require the use of bit flags (i.e., values
which are powers of 2), and that's what our <option> element will be mapped
into for a large number of cases.
Inactive hide details for Bertrand Le Roy <Bertrand.Le.Roy at microsoft.com>
Bertrand Le Roy <Bertrand.Le.Roy at microsoft.com>
Options are for enums, right? If so, that is completely different from our
usage. Multiple value enums (or flags) have integer values (like in C) and
are combined through the | or operator. Testing for a specific value is
done with the & and operator.
So for example, you’d have:
<property name="FavoriteAnimals">
__<options multiple="true">
____<option value="1"><label locid="animal_panda">Panda</label></option>
____<option value="2"><label locid="animal_tiger">Tiger</label></option>
____<option value="4"><label locid="animal_cat">House cat</label></option>
____<option value="8"><label locid="animal_dog">Man's best
friend</label></option>
__</options>
</property>
And if the user picks Tiger and House Cat, that gives 6.
From: ide-bounces at openajax.org [mailto:ide-bounces at openajax.org.] On Behalf
Of Jon Ferraiolo
Sent: Wednesday, August 06, 2008 10:14 AM
To: ide at openajax.org
Subject: [OpenAjaxIDE] Multiselect properties - must have datatype of array
Aaron Reed of IBM is implementing the <property><options multiple="true">
feature in the open source reference implementation and the question can up
about how to represent the multiple choices when the property value is
persisted into the property storage area. Here is an example:
<property name="FavoriteAnimals">
__<options multiple="true">
____<option value="panda"><label
locid="animal_panda">Panda</label></option>
____<option value="tiger"><label
locid="animal_tiger">Tiger</label></option>
____<option value="cat"><label locid="animal_cat">House
cat</label></option>
____<option value="dog"><label locid="animal_dog">Man's best
friend</label></option>
__</options>
</property>
Let's suppose the user picked "Tiger" and "House cat".
Given that we are focused on JavaScript, our proposal is that the natural
way to store a multi-select option would be as a JavaScript array. In this
case, the array would be ["tiger","cat"].
Does this make sense to people?
If so, then should we change the spec to say that if a <property> uses
<options> with multiple="true", then the <property> element must have
datatype="[]".
A follow on question is whether we should require an array of Strings, or
is it OK to have an array of anything, such as Number? Is the array could
contain things other than String, then implementations would need to a
string-to-whatever conversion at some point (e.g., string-to-number). I
would thing that array-of-Strings is the way to go.
Jon _______________________________________________
IDE mailing list
IDE at openajax.org
http://openajax.org/mailman/listinfo/ide
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://openajax.org/pipermail/ide/attachments/20080807/4378008f/attachment-0001.html
-------------- next part --------------
A non-text attachment was scrubbed...
Name: graycol.gif
Type: image/gif
Size: 105 bytes
Desc: not available
Url : http://openajax.org/pipermail/ide/attachments/20080807/4378008f/attachment-0006.gif
-------------- next part --------------
A non-text attachment was scrubbed...
Name: pic31061.gif
Type: image/gif
Size: 960 bytes
Desc: not available
Url : http://openajax.org/pipermail/ide/attachments/20080807/4378008f/attachment-0007.gif
-------------- next part --------------
A non-text attachment was scrubbed...
Name: ecblank.gif
Type: image/gif
Size: 45 bytes
Desc: not available
Url : http://openajax.org/pipermail/ide/attachments/20080807/4378008f/attachment-0008.gif
-------------- next part --------------
A non-text attachment was scrubbed...
Name: doclink.gif
Type: image/gif
Size: 149 bytes
Desc: not available
Url : http://openajax.org/pipermail/ide/attachments/20080807/4378008f/attachment-0009.gif
-------------- next part --------------
A non-text attachment was scrubbed...
Name: 1D647893.gif
Type: image/gif
Size: 2342 bytes
Desc: not available
Url : http://openajax.org/pipermail/ide/attachments/20080807/4378008f/attachment-0010.gif
-------------- next part --------------
A non-text attachment was scrubbed...
Name: pic12859.gif
Type: image/gif
Size: 1255 bytes
Desc: not available
Url : http://openajax.org/pipermail/ide/attachments/20080807/4378008f/attachment-0011.gif
More information about the IDE
mailing list