Here’s a version using Dialog Toolkit Plus, which gives you popups, rather than choose from list. It stays open until you hit cancel. It also remembers your previous selection.
(Of course you’d need to replace the default lists with your own)
use AppleScript version "2.4" -- Yosemite (10.10) or later
use scripting additions
use script "Dialog Toolkit Plus"
property startingDate : (current date)
set subjectList to {"Doors", "Windows", "Floors", "Ceilings", "Walls", "Light Fixtures", "Plumbing Fixtures", "Appliances", "Furniture", "Media", "Built Ins", "Cabinets", "Garages", "Porches", "Roofs", "Foundations"}
set subLists to {}
set the end of subLists to {"", "Doors1", "Doors2", "Doors3", "Doors4", "Doors5", "Doors6", "Doors7", "Doors8", "Doors9", "Doors10"}
set the end of subLists to {"", "Windows1", "Windows2", "Windows3", "Windows4", "Windows5", "Windows6", "Windows7", "Windows8", "Windows9", "Windows10"}
set the end of subLists to {"", "Floors1", "Floors2", "Floors3", "Floors4", "Floors5", "Floors6", "Floors7", "Floors8", "Floors9", "Floors10"}
set the end of subLists to {"", "Ceilings1", "Ceilings2", "Ceilings3", "Ceilings4", "Ceilings5", "Ceilings6", "Ceilings7", "Ceilings8", "Ceilings9", "Ceilings10"}
set the end of subLists to {"", "Walls1", "Walls2", "Walls3", "Walls4", "Walls5", "Walls6", "Walls7", "Walls8", "Walls9", "Walls10"}
set the end of subLists to {"", "Light Fixtures1", "Light Fixtures2", "Light Fixtures3", "Light Fixtures4", "Light Fixtures5", "Light Fixtures6", "Light Fixtures7", "Light Fixtures8", "Light Fixtures9", "Light Fixtures10"}
set the end of subLists to {"", "Plumbing Fixtures1", "Plumbing Fixtures2", "Plumbing Fixtures3", "Plumbing Fixtures4", "Plumbing Fixtures5", "Plumbing Fixtures6", "Plumbing Fixtures7", "Plumbing Fixtures8", "Plumbing Fixtures9", "Plumbing Fixtures10"}
set the end of subLists to {"", "Appliances1", "Appliances2", "Appliances3", "Appliances4", "Appliances5", "Appliances6", "Appliances7", "Appliances8", "Appliances9", "Appliances10"}
set the end of subLists to {"", "Furniture1", "Furniture2", "Furniture3", "Furniture4", "Furniture5", "Furniture6", "Furniture7", "Furniture8", "Furniture9", "Furniture10"}
set the end of subLists to {"", "Media1", "Media2", "Media3", "Media4", "Media5", "Media6", "Media7", "Media8", "Media9", "Media10"}
set the end of subLists to {"", "Built Ins1", "Built Ins2", "Built Ins3", "Built Ins4", "Built Ins5", "Built Ins6", "Built Ins7", "Built Ins8", "Built Ins9", "Built Ins10"}
set the end of subLists to {"", "Cabinets1", "Cabinets2", "Cabinets3", "Cabinets4", "Cabinets5", "Cabinets6", "Cabinets7", "Cabinets8", "Cabinets9", "Cabinets10"}
set the end of subLists to {"", "Garages1", "Garages2", "Garages3", "Garages4", "Garages5", "Garages6", "Garages7", "Garages8", "Garages9", "Garages10"}
set the end of subLists to {"", "Porches1", "Porches2", "Porches3", "Porches4", "Porches5", "Porches6", "Porches7", "Porches8", "Porches9", "Porches10"}
set the end of subLists to {"", "Roofs1", "Roofs2", "Roofs3", "Roofs4", "Roofs5", "Roofs6", "Roofs7", "Roofs8", "Roofs9", "Roofs10"}
set the end of subLists to {"", "Foundations1", "Foundations2", "Foundations3", "Foundations4", "Foundations5", "Foundations6", "Foundations7", "Foundations8", "Foundations9", "Foundations10"}
set AppleScript's text item delimiters to {return}
set accViewControls to {}
set controlResults to {}
set accViewWidth to 350
set theBottom to 0
set spacer to 4
set theTop to spacer
--Variables
set buttonList to {("Cancel"), ("Okay"), ("Copy")}
set windowTitle to "Window title"
set initialPosition to {30, 30}
--Build window buttons
set {theButtons, theWidth} to create buttons buttonList ¬
default button 3 ¬
cancel button 1 ¬
equal widths false ¬
--button keys {textList}
if theWidth > accViewWidth then set accViewWidth to theWidth
-->ACC views go here
-->>Labeled popups
repeat with x from 1 to count of subjectList
set thisSubject to item x of subjectList
set subjectSublist to item x of subLists
set theBottom to (theTop + spacer)
set popupLeft to max width for labels {thisSubject} ¬
control size regular size ¬
without bold type
set popupLeft to popupLeft + spacer
set popupOptions to subjectSublist
set popupWidth to max width for labels popupOptions ¬
control size large size ¬
with bold type
set {theLabeledPopup, thePopUpLabel, theTop} to create labeled popup popupOptions ¬
left inset spacer ¬
bottom theBottom ¬
popup width popupWidth + 30 ¬
initial choice 1 ¬
max width accViewWidth ¬
label text thisSubject ¬
popup left popupLeft
set the beginning of accViewControls to theLabeledPopup
set the end of accViewControls to thePopUpLabel
--<<Labeled popup
end repeat
--<<end ACC views
repeat
--Display Extended window
set accViewHeight to theTop
set clipboardString to ""
set {buttonClicked, controlValues} to ¬
display enhanced window windowTitle ¬
buttons theButtons ¬
acc view width accViewWidth ¬
acc view height accViewHeight ¬
acc view controls accViewControls ¬
initial position initialPosition ¬
with align cancel button
--giving up after 60
set itemSelected to false
repeat with x from 1 to count of popupOptions
if item x of controlValues is not in {"missing value", missing value} then
set itemSelected to true
set the clipboardString to (clipboardString & item x of controlValues as text) & return & return
end if
end repeat
if buttonClicked is "Copy" and itemSelected then
set the clipboard to clipboardString
else
if buttonClicked is "Cancel" then exit repeat
end if
end repeat
return clipboardString