set theColorList to {blueGray:{8000, 8000, 10000}, black:{0, 0, 0}, white:{65535, 65535, 65535}, red:{65535, 0, 0}, manual:{}}
tell application "ASObjC Runner" to set theColorNames to all labels of theColorList
set theChoice to choose from list theColorNames default items "blueGray" with title "Color Selection"
if theChoice is false then error number -128
set theChoice to item 1 of theChoice
if theChoice = "manual" then
set theColor to (choose color)
else
tell application "ASObjC Runner" to set theColor to item 1 of (value for label theChoice in records {theColorList})
end if
But with due respect, I think your choice of colors is a bit, well, limited. So you might like to try something like this:
script x
set theColors to current application's NSColorList's colorListNamed_("Crayons")
set theColorNames to theColors's allKeys()
activate
set theChoice to choose from list ((theColorNames as list) & {"Manual"})
if theChoice is false then return {65535, 65535, 65535}
if item 1 of theChoice = "Manual" then return false
set chosenColor to theColors's colorWithKey_(item 1 of theChoice)
return {(chosenColor's redComponent() as integer) * 65535, (chosenColor's greenComponent() as integer) * 65535, (chosenColor's blueComponent() as integer) * 65535}
end script
tell application id "au.com.myriad-com.ASObjC-Runner" -- ASObjC Runner.app
set theResult to run the script {x} with response
end tell
if theResult = false then
activate
set theResult to choose color
end if