UISelectionPanel.st
author Claus Gittinger <cg@exept.de>
Mon, 14 Dec 2009 14:00:36 +0100
changeset 2728 7b0f0d920794
parent 2713 f766f0c6e7d7
child 3059 cc9b8daf00bc
permissions -rw-r--r--
changed: #update:with:from: #windowSpec do not scroll on undo

"
 COPYRIGHT (c) 1997 by Claus Gittinger / eXept Software AG
              All Rights Reserved

 This software is furnished under a license and may be used
 only in accordance with the terms of that license and with the
 inclusion of the above copyright notice.   This software may not
 be provided or otherwise made available to, or used by, any
 other person.  No title to or ownership of the software is
 hereby transferred.
"
"{ Package: 'stx:libtool2' }"

ApplicationModel subclass:#UISelectionPanel
	instanceVariableNames:'gallery userClass userSpecs userLabels majorSelection
		clipBoardSpec'
	classVariableNames:'UserClass UserSpecs UserLabels'
	poolDictionaries:''
	category:'Interface-UIPainter'
!

Object subclass:#UserDefinedGallery
	instanceVariableNames:''
	classVariableNames:'LabelList SelectorList HolderList NextUniqueNumber'
	poolDictionaries:''
	privateIn:UISelectionPanel
!

!UISelectionPanel class methodsFor:'documentation'!

copyright
"
 COPYRIGHT (c) 1997 by Claus Gittinger / eXept Software AG
              All Rights Reserved

 This software is furnished under a license and may be used
 only in accordance with the terms of that license and with the
 inclusion of the above copyright notice.   This software may not
 be provided or otherwise made available to, or used by, any
 other person.  No title to or ownership of the software is
 hereby transferred.
"


!

documentation
"
    implements a selection panel, keeping widgets which could be placed
    into the UIPainter by drag & drop.

    [start with:]
        UISelectionPanel open

    [author:]
        Claus Gittinger
        Claus Atzkern

    [see also:]
        TabView
        NoteBookView
        UIGalleryView
        UIPainter

"

! !

!UISelectionPanel class methodsFor:'initialization'!

initialize
    UserClass  := UISelectionPanel::UserDefinedGallery.
    UserSpecs  := #listOfSelectors.
    UserLabels := #listOfLabels.

    "Modified: / 8.12.1997 / 18:53:06 / cg"
! !

!UISelectionPanel class methodsFor:'accessing'!

userClass
    "return the class which provides the user defined gallery specs."

    ^ UserClass

    "Created: / 5.12.1997 / 15:12:50 / cg"
!

userClass:aClass specSelector:aSpecAccessSelector labelSelector:aLabelListAccessSelector
    "change the class which provides the user defined gallery specs."

    UserClass := aClass.
    UserSpecs := aSpecAccessSelector.
    UserLabels := aLabelListAccessSelector.

    "
     UISelectionPanel 
        userClass:UISelectionPanel::VariableUserDefinedGallery
        specSelector:#listOfSelectors
        labelSelector:#listOfLabels
    "

    "Modified: / 5.12.1997 / 13:54:47 / cg"
    "Created: / 5.12.1997 / 13:56:10 / cg"
! !

!UISelectionPanel class methodsFor:'classAccess'!

galleryClass

    ^ UserDefinedGallery
! !

!UISelectionPanel class methodsFor:'image specs'!

sketchImageIcon
    ^ self sketchImageIcon2
!

sketchImageIcon1
    "This resource specification was automatically generated
     by the ImageEditor of ST/X."

    "Do not manually edit this!! If it is corrupted,
     the ImageEditor may not be able to read the specification."

    "
     self sketchImageIcon inspect
     ImageEditor openOnClass:self andSelector:#sketchImageIcon
     Icon flushCachedIcons
    "

    <resource: #image>

    ^Icon
        constantNamed:'UISelectionPanel class sketchImageIcon1'
        ifAbsentPut:[(Depth24Image new) width: 62; height: 48; photometric:(#rgb); bitsPerSample:(#[8 8 8]); samplesPerPixel:(3); bits:(ByteArray fromPackedString:'
4M? /<?P/<?P/<?P/<?P/<?P/<?P/<?P/<?P/<?P/<?P/<?P/<?P/<?P/<?P/<?P/<?P/<?P/<?P/<?P/<?P/<?P/<?P/<?P/<?P/<?P/<?P/<?P/<?P/<?P
/<?P/<?P/<?P/<?P/<?P/<?P/<?P/<?P/<?P/<?P/<?P/<?P/<?P/<?P/<?P/<?P/<?P/<?P/<?P/<?P/<?P/<?P/<?P/<?P/<?P/<?P/<?P/<?P/<?P/<?P
/<?P4M? /<?P????????????????????????????????????????????????????????????????????????????????????????????????????????????
????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????
????????????/<?P/<?P????????????????????????????????????????????????????????????????????????????????????????????????????
????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????
????????????????????/<?P/<?P????????????????????????????????????????????????????????????????????????????????????????????
????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????
????????????????????????????/<?P/<?P????????????????????????????????????????????????????????????????????????????????????
????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????
????????????????????????????????????/<?P/<?P????????????????????????????????????????????????????????????????????????????
????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????
????????????????????????????????????????????/<?P/<?P????????????????????PICPS9?PS9?PTI?_W:C_W:C_XJ?_XJ?_XJ?_[:?_[:?_XJ?_
XJ?_XJ?_XJ?_W:?_W:C_W:C_TJC_TJC_TJC_TJC_TJC_TI?_S9?_S9?_S9?_S9?_PI?PPICPPICPPICPO9CPO8?PO8?PO8?PLH?PLH?OLHCOLHCOK8COK8CO
K8COK7?OK7?OHG?OHG?OHG?OHGB?HGB?????????????????????/<?P/<?P????????????????????TI?_XJ? [:?0\KC0\KC0_;?0 K?0 LC0#<C0#<C0
#<C0#<C0 LC0 LC0_<C0_;??_;?0\K?0\K?0\K?0\K?0\KC0[;C0[;C0[;C0XKC0XKC0XJ? XJ? W:? W:C TJC TJC S9? S9? S9? PIC_PIC_PIC_PH?_
O8?_O8?_O8?_LHC_LHCPLHCPLHCPLHCPK7?PK7?O????????????????????/<?P/<?P????????????????????XJ? [;C0\KC0_;?0 LC0#<C0$L??''<??
''=C?''=C?''=C?''=C?''<??$L??#<??#<?? L?? LC? LC?_<C?_<C?_<C?_;??_;??\K?0\K?0[;C0[;C0[;C0XJ?0XJ?0W:?0W:C TJC TI? S9? S9? S9C 
PIC_PIC_PH?_O8?_O8?_O8?_LHC_LHC_LHC_LHCPLG?PK7?P????????????????????/<?P/<?P????????????????????XJ? \KC0_;?0#<C0$L?0''<??
(MC?+=C?,M??,M??,M??+=??(MC?(MC?''=C?$L??#<??#<?? L?? LC? LC?_<C?_<C?_;??_;?0\K?0\K?0\KC0[;C0[;C0XJ?0XJ?0W:? W:C TJC TJC 
S9? S9? PIC_PIC_PH?_PH?_O8?_O8?_O8C_LHC_LHC_LHCPLG?PK7?P????????????????????/<?P/<?P????????????????????[;C _;?0 K?0$L?0
(MC?+=C?0NC?8OC?;?C?;?C?7?C?0NC?/=??+=??(MC?''=C?$MC?$L??#<??#<?? L?? LC? LC? LC?_<C?_;?0_;?0\K?0\KC0[;C0[;C0[:?0XJ?0W:?0
W:C TJC TI? S9? S9C PIC_PIC_PH?_O8?_O8?_O8C_LHC_LHC_LHC_LG?PK7?P????????????????????/<?P/<?P????????????????????\KC  K?0
#<C0(MC?,M??8OC?????????????????????????7>??/>C?,M??+=??(MC?''=C?$L??#<??#<??#<?? L?? LC? LC?_<C0_;?0 LC0#<C0 LC0 K?0_;?0
\KC0XJ?0W:C W:C TJC TI? S9? S9C PIC_PH?_O8?_O8?_O8C_LHC_LHC_LHC_LG?PK7?P????????????????????/<?P/<?P????????????????????
\KC0#;?0''<?0+=C?7>??????????????????????????????????4N??/>C?,M??+=??''=C?''=C?$MC?#<??#<??#<?? L?? LC? LC?#<??$L??#<C0#<C0
 LC0 K?0_;?0[;C0XJ? W:C W:C TI? TI? S9C PIC_PIC_PH?_O8?_O8C_LHC_LHC_LHC_LHCPK7?P????????????????????/<?P/<?P????????????
????????_;?0#<C0''<?0/=??????????????????????????????????????<O??0NC?/>C?+=??(M??''=C?$MC?$MC?$L??#<??#<?? L?? LC?$L??$L??
#<?0#<C0#<C0 K?0 K?0_;?0XJ? W:C W:C TJC TI? TI? W:C W:C W9? TIC_O8?_LHC_LHC_LHC_LHCPK7?P????????????????????/<?P/<?P????
????????????????_;?0$LC0(MC?4N??????????????????????????????????????????4N??/>C?,M??+=??(MC?''=C?$MC?$L??$L??#<??#<?? LC?
$L??$L??$L??#<C0#<C0 LC0 K?0\KC0XJ?0XJ? W:C TJC TI? W:C XJC XJC W:C W9? PH?_LHC_LHC_LHC_LHCPK7?P????????????????????/<?P
/<?P????????????????????_;?0$LC0(MC?7>??????????????????????????????????????????7?C?0NC?,NC?+=??(M??''=C?''=C?$MC?$L??#<??
#<??#<??#<C?#<??#<??#<?0#<C0#<C0_;?0[;C0XJ?0XJ? W:C W:C TI? TI? XJC XJC W:C TI? O8?_LHC_LHC_LHC_LHCPK7?P????????????????
????/<?P/<?P????????????????????_;?0$LC0(MC?7>??????????????????????????????????????????4N??0NC?,NC?+=??(M??''=C?''=C?$MC?
$L??$L??#<??#<??#<?? LC0 LC0_;?0_;?0_;?0\KC0[;C0[:?0XJ? W:? W:C TJC TI? S9? S9?_S9C_PH?_O8?_O8C_LHC_LHC_LHCPK7?P????????
????????????/<?P/<?P????????????????????_;?0#<C0(L?00NC?????????????????????????????????????????3>??/>C?,M??+=??(M??''=C?
''=C?$MC?$MC?$L??#<??#<??#<C? LC0 LC0_;?0_;?0\K?0\KC0[;C0[;C0XJ? XJ? W:C W:C TI? S9? S9C_PIC_PH?_O8?_O8C_LHC_LHC_LHCPK7?P
????????????????????/<?P/<?P????????????????????\KC0#<C0''<?0+=C?8OC?????????????????????????????????7?C?0NC?/>C?,M??+=??
(MC?''=C?''=C?$MC?$L??$L??$L??#<??#<?? LC? LC0_;?0_;?0\K?0\KC0[;C0[;C0XJ? XJ? W:C W:C TI? TI? S9? PIC_PH?_O8?_O8?_LHC_LHC_
LHCPK7?P????????????????????/<?P/<?P????????????????????\KC0 K?0$LC0(MC?/=??<O??????????????????????????;?C?0NC?/>C?,M??
+=??(M??''=C?''=C?$MC?$MC?$MC?$L??$L??#<??#<?? LC? LC0_<C0_;?0\K?0\KC0[;C0[;C0XJ? XJ? W:C W:C TI? TI? S9C PIC_PIC_O8?_O8?_
LHC_LHC_LG?PK7?P????????????????????/<?P/<?P????????????????????[;C _;?0#<C0$L??+=C?,M??7>??<O??????????<O??4N??0NC?/>C?
,M??+=??(M??(MC?''=C?''=C?$MC?$MC?$L??$L??#<??#<??#<?? LC? LC0_;?0_;?0_;?0\KC0[;C0\KC0\KC0\KC0XJ? W:C TJC TI? S9? S9C_PIC_
O8?_O8?_LHC_LHC_LG?PK7?P????????????????????/<?P/<?P????????????????????XJ? \KC0_;?0#<C0''<??(MC?,M??/=??/>C?/>C?/>C?/>C?
,M??,M??+=??(M??(MC?''=C?''=C?''=C?$MC?$L??$L??$L??#<??#<??#<C? LC0 LC0_<C0_;?0\K?0\KC0[;C0_;?0_;?0_;?0\KC W:C TI? TI? S9? 
S9C_PIC_O8?_O8?_LHC_LHCPLG?PK7?P????????????????????/<?P/<?P????????????????????XJ? [;C0\KC0 K?0#<C0$L??(MC?(MC?+=??+=??
+=??+=??+=??(MC?(MC?''=C?''=C?''=C?$MC?$MC?$L??$L??$L??#<??#<??#<??#<C? LC0 LC0_;?0_;?0\K?0\KC0[;C0\KC0\KC0\KC0XJ? W:C TJC 
TI? S9?_PIC_PIC_O8?_O8?_LHC_LHCPLG?PK7?P????????????????????/<?P/<?P????????????????????W:C XJ?0[;C0_;?0 K?0#<C0$L?0$L??
''=C?''=C?(MC?(MC?''=C?''=C?''=C?''=C?$MC?$L??$L??$L??$L??#<??#<??#<??#<??#<C? LC0 LC0 LC0_;?0_;?0\K?0\KC0[;C0[:?0XJ? XJ? W:C 
W:C TI? S9? S9?_PIC_PH?_O8?_O8?_LHC_LHCPLG?PK7?P????????????????????/<?P/<?P????????????????????W:C XJ?0XJ?0[;C0\K?0_;?0
 LC0#<C0#<??$L??$L??$L??$L??$L??$L??$L??$L??$L??$L??#<??#<??#<??#<??#<??#<C? LC0 LC0 LC0_;?0_;?0\K?0\K?0\KC0[;C0XJ? XJ? 
XJ? W:C TJC TI? S9? S9C_PIC_PH?_O8?_O8C_LHC_LG?PLG?PK7?P????????????????????/<?P/<?P????????????????????TJC W:C0XJ?0[:?0
[;C0\KC0_;?0_;?0 LC0 LC?#<C?#<??#<??#<??#<??#<??#<??#<??#<??#<??#<??#<??#<C?#<C? LC0 LC0 LC0_;?0_;?0_;?0\K?0\KC0[;C0[;C0
XJ? XJ? W:C W:C TJC TI? S9?_S9C_PIC_PH?_O8?_O8C_LHCPLG?PLG?PK7?P????????????????????/<?P/<?P????<OC?<OC?<OC?????TI? W:C 
W:C0XJ?0XKC0[;C0\KC0\K?0_;?0_;?0 LC0 LC? LC? LC?#<C?#<C?#<??#<C?#<??#<C?#<C? LC? LC? LC0 LC0 LC0_;?0_;?0_;?0\K?0\KC0[;C0
[;C0[:? XJ? XJ? W:C W:C TI? TI? S9?_PIC_PIC_PH?_O8?_LHC_LHCPLG?PLG?PK7?P????<OC?<OC?<OC?????/<?P/<?P????<OC?<OC?<OC?????
TI? TJC W:C W:C0XJ?0XJ?0[;C0\KC0\K?0\K?0_;?0_;?0_;?0 LC0 LC0 LC0 LC0 LC0 LC0 LC? LC? LC0 LC0 LC0 LC0_;?0_;?0_;?0\K?0\KC0
\KC0[;C0[;C0XJ? XJ? W:C W:C TJC TI? S9? S9C_PIC_PIC_O8?_O8?_LHC_LHCPLG?PK7?PK7?P????<OC?<OC?<OC?????/<?P/<?P????<OC?<OC?
<OC???C?S9? TJC TJC W:C W:?0XJ?0XKC0[;C0[;C0\KC0\K?0_;?0_;?0_;?0_;?0_<C0 LC0 LC0 LC0 LC0 LC0 LC0 LC0_<C0_;?0_;?0_;?0\K?0
\KC0\KC0[;C0[;C0XJ? XJ? XJ? W:C W:C TJC TI? S9?_S9C_PIC_PH?_O8?_O8C_LHCPLHCPLG?PK7?PK7?P??C?<OC?<OC?<OC?????/<?P/<?P????
<OC?<OC?<OC???C?3>>04N>07?B/8OB/8O>/8O>/8O>/8O>/8OB/7?B04OB03>>?0N>?/>CO,M?P+=?P''=C_$L?  LC0_;?0_;?0_;?0_;?0_;?0_;?0_;?0
\K?0\KC0\KC0[;C0[;C0[:? \KC__;?P#<CO$L>?(L>0+=B/,M>//>B 0NB 3>> 4N>P4N>P4N>P4N> 3>> 0NB /=>/,MB/??C?<OC?<OC?<OC?????/<?P
/<?P????<OC?<OC?<OC?<OC?7?B 7?BP4OBO4OB@4OB@4OB@4OB@4OBO7?BO7?BO7?BO7?BO7?BP7?>P8O>P8O> 8O> 8O> 8OB/4N>?0NCO+=?P''<?_ LC 
\K?0\KC0\KC0_;? #<CP$L>?(MB/,M>P0NBO0NBO0NB@0NB@0NB@/>B@/>A?/>A?/>A?/>A?/>A//>A//>A//>A//>A?0NA?0NA?0NA?<OC?<OC?<OC?<OC?
????/<?P/<?P????<OC0<OC0<OC0<OC?7?B 3>>@0N=?0N=?3>=?3>=?3>=?3>=?3>=?3>=?3>=?4OB@4OB@4OB@4OB@4OB@4OB@4OB@4OB@7?BO7?BO8O>P
8O> 7?B/3>>0/>B0,M>/,M>O/=>@,M=?,M=?+==/+=A (MA_(MA_(MA_(MA_(MA_(MA_+=A_+== +== +== +== +== +== ,M= ,M= ,M= ,M= <OC?<OC0
<OC0<OC0????/<?P/<?P????<OC0<OC0<OC0<OC?4N>P/>A?/>A//>A//>A/0NA/0NA/0N=?0N=?0N=?0N=?0N=?0N=?3>=?3>=?3>=?3>=?3>=?3>=?3>=?
4OB@4OB@4OB@4OB@4OBO7?BO7?BP7?BP0NB@,M=/''<=_$L=P$L=P$L=P''<=P''<=P''<=P''<=P''<=_''=A_''=A_(MA_(MA_(MA_(MA_(MA_(MA_(MA_+=A_+== 
<OC?<OC0<OC0<OC0????/<?P/<?P????<OC0<OC0<OC0<OC?3>>O,M=/,M= ,M= ,NA/,NA//>A//>A//>A//>A//>A//>A//>A//>A/0NA/0NA/0N=?0N=?
0N=?0N=?0N=?0N=?3>=?3>=?3>=?3>=?3>=?3>>@4OB@7?BP3>>O,M=?''<=_#<A@#<A@$LA@$LAP$L=P$L=P$L=P$L=P$L=P$L=P''<=P''<=P''<=P''<=P''<=_
''=A_''=A_<OC?<OC0<OC0<OC0????/<?P/<?P????<OC0<OC0<OC0<OC?0NBO+== +== +== +== +== +== +== ,M= ,M= ,M= ,M= ,M= ,NA/,NA//>A/
/>A//>A//>A//>A//>A//>A//>A/0NA/0NA/0N=?0N=?0N=?0N=?0N=?3>=?3>>@3>>O,M=?''<=_ K=@ LA@#<A@#<A@#<A@#<A@#<A@#<A@#<A@$LA@$LAP
$L=P$L=P$L=P$L=P<OC?<OC0<OC0<OC0????/<?P/<?P????<OC0<OC0<OC0<OC0/=>@(MA_''=A_(MA_(MA_(MA_(MA_(MA_(MA_(MA_+=A_+== +== +== 
+== +== +== ,M= ,M= ,M= ,M= ,M= ,NA/,NA//>A//>A//>A//>A//>A//>A//>A//>A/0NA/0N=?0N>@+==/#<AP_;<?_;<? K<? K<? K<? K<? K=@
 K=@ LA@#<A@#<A@#<A@#<A@<OC0<OC0<OC0<OC0????/<?P/<?P????<OC0<OC0<OC0<OC0,M=?''<=P$L=P$L=P$L=P''<=P''<=P''<=P''<=P''<=_''=A_''=A_
(MA_(MA_(MA_(MA_(MA_(MA_(MA_+=A_+== +== +== +== +== +== ,M= ,M= ,M= ,M= ,M= ,NA/,NA//>A//>A//>A?/==?''<=_\K@0\K@0_;@?_;@?
_;<?_;<?_;<?_;<?_;<?_;<? K<? K<?<OC0<OC0<OC0<OC0????/<?P/<?P????<OC0<OC0<OC0<OC0+=A/#<AP#<A@#<A@#<A@#<A@$LA@$LAP$L=P$L=P
$L=P$L=P$L=P$L=P''<=P''<=P''<=P''<=P''<=_''=A_''=A_(MA_(MA_(MA_(MA_(MA_(MA_(MA_+=A_+== +== +== +== +== +== ,M= ,M= />A/''<= _;@?
[;@0\K@0\K@0\K@0\K@0\K@0\K@0\K@0\K@0_;@?<OC0<OC0<OC0<OC0????/<?P/<?P????<OC0<OC0<OC0<OC0(MA  K=@ K<? K<? K<? K=@ K=@ LA@
#<A@#<A@#<A@#<A@#<A@#<A@#<A@$LA@$LAP$L=P$L=P$L=P$L=P$L=P$L=P''<=P''<=P''<=P''<=P''<=_''=A_''=A_(MA_(MA_(MA_(MA_(MA_(MA_(MA_+=A_
+== ''<=_\K@0[:</[:</[:</[:</[:</[:<0[:<0[;@0[;@0<OC0<OC0<OC0<OC0????/<?P/<?P????<OC0<OC0<OC0<OC0''<= _;<?_;@?_;@?_;<?_;<?
_;<?_;<?_;<?_;<? K<? K<? K<? K<? K=@ K=@ LA@#<A@#<A@#<A@#<A@#<A@#<A@#<A@$LA@$LAP$L=P$L=P$L=P$L=P$L=P$L=P''<=P''<=P''<=P''<=P
''<=_''=A_''=A_(MA_$LAPXJ</XJ@/XJ</XJ</XJ</XJ</XJ</XJ</XJ</<OC0<OC0<OC0<OC0????/<?P/<?P??C?;>?0;>?0;>?0<OC0$L=_\K@0[;@0\K@0
\K@0\K@0\K@0\K@0\K@0\K@0\K@0_;@?_;@?_;<?_;<?_;<?_;<?_;<?_;<? K<? K<? K<? K<? K=@ K=@ LA@#<A@#<A@#<A@#<A@#<A@#<A@#<A@$LA@
$LAP$L=P$L=P$L=P$L=P$L=P''<=P K=@W:@_W:@_W:@_W:@_W:@_W:@_W:@_W:@/<OC0;>?0;>?0;>?0??C?/<?P/<?P<OC?;>?0;>?0;>?0<OC0#<AP[:<0
XJ</[:</[:</[:</[:</[:</[:<0[:<0[;@0[;@0\K@0\K@0\K@0\K@0\K@0\K@0\K@0\K@0_;@?_;@?_;<?_;<?_;<?_;<?_;<?_;<? K<? K<? K<? K<?
 K=@ K=@ LA@#<A@#<A@#<A@#<A@#<A@#<A@#<A@XJ</TJ@_TJ@_TJ@_TJ@_W:@_W:@_W:@_<OC0;>?0;>?0;>?0<OC?/<?P/<?P<OC?;>?0;>?0;>?0;>?0
????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????
????????????????????????????????????????????????????????????????????????????????;>?0;>?0;>?0;>?0<OC?/<?P/<?P<OC?;>?0;>?0
;>?0;>?0;>?0<OC0<OC0<OC0<OC0<OC0<OC0<OC0<OC0<OC0<OC0<OC0<OC0<OC0<OC0<OC0<OC0<OC0<OC0<OC0<OC0<OC0<OC0<OC0<OC0<OC0<OC0<OC0
<OC0<OC0<OC0<OC0<OC0<OC0<OC0<OC0<OC0<OC0<OC0<OC0<OC0<OC0<OC0<OC0<OC0<OC0<OC0<OC0<OC0;>?0;>?0;>?0;>?0;>?0<OC?/<?P/<?P<OC?
;>?0;>?0;>?0;>?0;>?0;>?0;>?0;>?0;>?0;>?0;>?0;>?0;>?0;>?0;>?0;>?0;>?0;>?0;>?0;>?0;>?0;>?0;>?0;>?0;>?0;>?0;>?0;>?0;>?0;>?0
;>?0;>?0;>?0;>?0;>?0;>?0;>?0;>?0;>?0;>?0;>?0;>?0;>?0;>?0;>?0;>?0;>?0;>?0;>?0;>?0;>?0;>?0;>?0;>?0;>?0;>?0;>?0;>?0<OC?/<?P
/<?P<OC?;>?0;>?0;>?0;>?0;>?0;>?0;>?0;>?0;>?0;>?0;>?0;>?0;>?0;>?0;>?0;>?0;>?0;>?0;>?0;>?0;>?0;>?0;>?0;>?0;>?0;>?0;>?0;>?0
;>?0;>?0;>?0;>?0;>?0;>?0;>?0;>?0;>?0;>?0;>?0;>?0;>?0;>?0;>?0;>?0;>?0;>?0;>?0;>?0;>?0;>?0;>?0;>?0;>?0;>?0;>?0;>?0;>?0;>?0
<OC?/<?P/<?P????<OC?<OC?<OC?<OC?<OC?<OC?<OC?<OC?<OC?<OC?<OC?<OC?<OC?<OC?<OC?<OC?<OC?<OC?<OC?<OC?<OC?<OC?<OC?<OC?<OC?<OC?
<OC?<OC?<OC?<OC?<OC?<OC?<OC?<OC?<OC?<OC?<OC?<OC?<OC?<OC?<OC?<OC?<OC?<OC?<OC?<OC?<OC?<OC?<OC?<OC?<OC?<OC?<OC?<OC?<OC?<OC?
<OC?<OC?????/<?P4M? /<?P/<?P/<?P/<?P/<?P/<?P/<?P/<?P/<?P/<?P/<?P/<?P/<?P/<?P/<?P/<?P/<?P/<?P/<?P/<?P/<?P/<?P/<?P/<?P/<?P
/<?P/<?P/<?P/<?P/<?P/<?P/<?P/<?P/<?P/<?P/<?P/<?P/<?P/<?P/<?P/<?P/<?P/<?P/<?P/<?P/<?P/<?P/<?P/<?P/<?P/<?P/<?P/<?P/<?P/<?P
/<?P/<?P/<?P/<?P/<?P4M? ') ; mask:((Depth1Image new) width: 62; height: 48; photometric:(#blackIs0); bitsPerSample:(#[1]); samplesPerPixel:(1); bits:(ByteArray fromPackedString:'
??????????3??????????O?????????<??????????3??????????O?????????<??????????3??????????O?????????<??????????3??????????O??
???????<??????????3??????????O?????????<??????????3??????????O?????????<??????????3??????????O?????????<??????????3?????
?????O?????????<??????????3??????????O?????????<??????????3??????????O?????????<??????????3??????????O?????????<????????
??3??????????O?????????<??????????3??????????O?????????<??????????3??????????O?????????<??????????3??????????O?????????<
??????????3??????????O?????????<') ; yourself); yourself]
!

sketchImageIcon2
    "This resource specification was automatically generated
     by the ImageEditor of ST/X."

    "Do not manually edit this!! If it is corrupted,
     the ImageEditor may not be able to read the specification."

    "
     self sketchImageIcon2 inspect
     ImageEditor openOnClass:self andSelector:#sketchImageIcon2
     Icon flushCachedIcons
    "

    <resource: #image>

    ^Icon
        constantNamed:'UISelectionPanel class sketchImageIcon2'
        ifAbsentPut:[(Depth8Image new) width: 96; height: 78; photometric:(#palette); bitsPerSample:(#[8]); samplesPerPixel:(1); bits:(ByteArray fromPackedString:'
PDA@PDA@PDA@PDA@PDA@PDA@PDA@PDA@PDA@PDA@PDA@PDA@PDA@PDA@PDA@PDA@PDA@PDA@PDA@PDA@PDA@PDA@PDA@PDA@PDA@PDA@PDA@PDA@PDA@PDA@
PDA@PDA@PDA@PDA@PDA@PDA@PDA@PDA@PDA@PDA@PDA@PDA@PDA@PDA@PDA@PDA@PDA@PDA@PDA@PDA@PDA@PDA@PDA@PDA@PDA@PDA@PDA@PDA@PDA@PDA@
PDA@PDA@PDA@PDA@PC49A9"X&I"X&I"X&I"X&I"X&I"X&I"X&I"X&I"X&I"X&I"X&I"X&I"X&I"X&I"X&I"X&I"X&I"X&I"X&I"X&I"X&I"X&I"X&I"X&I"X
&I"X&I"X&I"X&I"X&I"XA3%@PC%0I2\''I2\''I2\''I2\''I2\''I2\''I2\''I2\''I2\''I2\''I2\''I2\''I2\''I2\''I2\''I2\''I2\''I2\''I2\''I2\''I2\''I2\''I2\''
I2\''I2\''I2\''I2\''I2\''I2\''I2\''HPI@P@\=I2\''I2\''I2\''I2\''I2\''I2\''I2\''I2\''I2\''I2\''I2\''I2\''I2\''I2\''I2\''I2\''I2\''I2\''I2\''I2\''I2\''
I2\''I2\''I2\''I2\''I2\''I2\''\GA0\G@?O3<?NPA@P@\=I2\''I2\''I2\''I2\''I2\''I2\''I2\''I2\''I2\''I2\''I2\''I2\''I2\''I2\''I2\''I2\''I2\''I2\''I2\''
I2\''I2\''I2\''I2\''I2\''I2\''I2\''I2]0\GA0O3<?O3<=NVM@P@\=I2\''I2\''I2\''I2\''I2\''I2\''I2\''I2\''I2\''I2\''I2\''I2\''I2\''I2\''I2\''I2\''I2\''
I2\''I2\''I2\''I2\''I2\''I2\''I2\''I2\''I2\''\GA0\G@?O3<?OS4=NVM@P@\=I2\''I2\''I2\''I2\''I2\''I2\''I2\''I2\''I2\''I2\''I2\''I2\''I2\''I2\''I2\''
I2\''I2\''I2\''I2\''I2\''I2\''I2\''I2\''I2\''I2\''I2]0\GA0O3<?O3<=OS4=NVM@P@\=I2\''I5]OS4=OS4=OS4=OS4=OS4=OS4=OS4=OS4=OS4=OS4=OS4=O
S4=OS4=!!XVE!!XVE!!XVE!!XVE!!XVE!!XVE!!XVE%XVE!!XVE!!YT9NS$9NNS$9NS%NS%T=OS4=NVM@P@\=I2\''I6YGQ4]GQ4]GQ4]GQ4]GQ4]GQ4]GQ4]GQ4]GQ4]G
Q4]GQ4]GQ4]GQ4]GQ4]GQ4]GQ4]DQB</KB0,E84_G22$EB0,KB2$R9VU+9V/B"TJ+3N,R6D=OS4=NVM@P@\=I2\''I6YGQ4]GQ4]GQ4]GQ4]GQ4]GQ4]GQ4]G
Q4]GQ4]GQ4]GQ4]GQ4]GQ4]GQ4]GQ4]GQDP/K20,KB19%YV,+6I6#R0WX$.,+IV/+0(J%RTJ+D-"X&D=OS4=NVM@P@\=I2\''I6YGQ4]GQ4]GQ4]GQ4]GQ4]G
Q4]GQ4]GQ4]GQ4]GQ4\[F1-GQ4]GQ4]GQ4]GK2</E1^PKI@_R6IKR6IK+:=6#ZRMB *U+J2U+@*,+J1"X&I"X&D=OS4=NVM@P@\=I2\''I6X[F1,[F1,[F1,[
F1,[F1,[F1,[F1,[F1,[F1,[K2</K2</K1,[F1,[K2</K1^P^W4_X*2U+62/+D.,+0*,#VJU+IVU]&IK+D.MX(6M#VI"X&D=OS4=NVM@P@\=I2\''I6X/K2</
K2</K2</K2</K2</K2</K2</K2</K2</K2</K0LCK2</K2</K2<CE9A=G1=R+9VU%Z03%Z<JIP(JR3^U])U")JQ"+FJM#X6M#VI"X&T=OS4=NVM@P@\=I2\''
I6X/K2</K2</K2</K2</K2</K2</K2</K2</K2</K2<C@0LCK0L/K2</K0LW$G%)T*>/+:>UR4.,%P*/B"V/+J1KX*2M)JRMX(5"#X6MX&IK+D8=OS4=NVM@
P@\=I2\''I6X/K2</K2</K2</K2</K2</K2</K2</K2</K0LC@0LC@1\W@0LC@0LC@0LCE7%)+9VU+D-KX&IK+IVUB"TJ+A="R4-"R6J$)G%"X&I"X!!=KR6T=
OS4=NVM@P@\=I2\''I6XC@0LC@0LC@0LC@0LC@0LC@0LC@0LC@0LC@0LC@0LCE1\WE0LC@0LC@1\WE7$_+J1KG6I"X*2/+J0JIP*/+FI"+H6MX''&$)G&MR4-K
G6H_X&D=OS4=NVM@P@\=I2\''I8DC@0LC@0LC@0LC@0LC@0LC@0LC@0LC@0LC@0LCE1\W$IBP$A\WE1\WE9BP$G4_G6I"X&I"X*2/+J<JIS^/+FIK%T-"#W&$
^W%K+EJ,R6I"X&D=OS4=NVM@P@\=I2\''I4<WE1\WE1\WE1\WE1\WE1\WE1\WE1\WE1\WE1\W$IBP$IBP$IBP$IBP$IA9^Q=KX&I"X&I"G9VU+J>/B*>UR:2U
%Z2M^W%9^W%K%YV,R6I"X&D=OS4=NVM@P@\=I2\''I4>P$IBP$IBP$IBP^W&P$IBP$IBP$IBP$IBP$IBP$IBP$IBP$IBP$IBP$G%9X!!<_X&I"X&H_R:2,+J>U
+:>U+EJ,X&I9^W%9^W$_+J2,+D-"#VD=OS4=NVM@P@\=I2\''I4>P$IBP$IBP^W%=G1=9^W%9X''59%IBP$IBP$IBP$IBT^W%9^YRT%IRT^W%9X!!<_X&I"X$-K
+J2,+J=,+:1KX&I"X*2UR86M#X4_G:2UG:0_X&D=OS4=NVM@P@\=I2\''I4>P$IQ9^W%9^Z1RT%J,+EIRT*2,X''%9^YRT%G%9^W%9^W%9^W%9^W%9^W%9^VIK
G1<_R4.,+J1R+2T%IP*,G1>,B (%B%I"X&H_+IV,X&IKR6D=OS4=NVM@P@\=I2\''I4>T^W%9^W%"G4.,+:=,[J>/[F1,[A==^W5=_W5=_VI"_W5=_W5=_W59
^W%=_VH_+J2,T*2,+J2U+2T%B"TJ+J1R+:=,%Z1"X&IK+A="X&I"X&D=OS4=NVM@P@\=I2\''I3)9^W5"X&J,R:1R+:>,T*2,%Z>/+:<_G1<__W5=G1<_G6I=
_W5=_W5=_W5=X&I"G1=RT*1RT)V/B*>U+2T%IRT%[J>UR6I"X&I"X&I"X&I"X&D=OS4=NVM@P@\=I2\''I3)=X&H_%YUR+EJ/T*2,+J2,T*>/%UJ,+J2,G1<_
G1=)G1<__W5=_W5=_W5"X&I"X!!>/%YV/+9V/+9UR%Z>/[F2/+62/R6I"X&I"X&I"X&I"X&D=OS4=NVM@P@\=I2\''I3)"+EIR+9V/%YV,+D.,+J2U+:>/%Z1R
T%IRT*1)G6&,+F$_G75=_W5=_VI"X&H_G:1,+:>/+:=,+:2,R4,_G:2,+:=RR1<_G1<_G1<_G6H_G6D=OS4=NVM@P@\=I2\''I2IR%Z>/+:>UT%J,R:2,+J1R
%YVU+:=,+:>/+9URG1>,T%J,ZQ<_G6I"X&I"G1<_G1=K+J1K+J>/+9V,R4.,R4.,+D.,+D-KR4,_G1<_R4-KG6T=OS4=NVM@P@\=I2\''I2J/+:>/+:>U%UJ,
+J2,+J2,+EJU+61,+:>/[F1,+5IRT%IRT*2,G1<_G1<_G1<_R4-KR4-KR:2/T*1RR4-KR:2/+5J/B&1,[J=KR4-K+J2,R6T=OS4=NVM@P@\=I2\''I2J/+:>/
+:>U+5J,+J2,+J1RT)V/+:>/[F1,[F1,[J>UT%IR%UJ,+J1)G1<_R4-KR4-KR:2,+J<JIP),[J<J+61,+2U,+60%IRT%[J>U+J2,+FT=OS4=NVM@P@\=I2\''
I2JU%YVU%UIRT*2,+J2,+EJU%YVU+62/+:>/[@(J+9VU%YURT%IRT%IR+J2,+J2,+J2,+J2,%Z=,B */B"T%IZ>U%V0%B&1,%P(%IRT%IYV,+FT=OS4=NVM@
P@\=I2\''I2JUT)VU%Z2,+J2,+J1R%YVU%YV/+:>/+:>/+:>/%YURT%J,+EJU%YVUT%IR+J2,+J2,+J2,%YVU+9VU+:<J+9VU+0(%IRT%+60%[J<JIRV/+FT=
OS4=NVM@P@\=I2\''I2JU%YVU%Z2,+J2U%YVU%YVU%YVU%YV/[J>/%YVU%YV,+J2,+EJU%YVU%YVU+:>UL:2,B */%YVU%YVU%YU,%YVU+0(JB (J+0),+:>/
+60%B$8=OS4=NVM@P@\=I2\''I6VU%YVU%YVU%YVU%YVU%YVU%YVU%YV/+:>/%YVU%Z2,+J2,+IVU%YVU%Z>/+0),%YU,B"T%+9VU%YVU%Z>/%YV/B */+:>/
%Z>/+:>/+0(%IS$=OS4=NVM@P@\=I2\''I7TIV''LVE*2U%YU_IG8I\9VU%YVU%YVU+:>/%YVU%SL3+CNU%YVU%YV/[F2/+0(%IRT%B*>/%YVU%YVU%YVU%YV/
+:>U%YVU%YV/+:>/+60JB$8=OS4=NVM@P@\=I2\''I1V.+''8$Z&*.V"Q*Z''9>%7NU%YVU%YVU%YVU%YVU%YVU%YVU%YVU%Z=,+:>/+0*/+:>/+:>U%YVU%YVU
%YVU%YVU%YVU%YVU%Z>/+:>/B"T%IS$=OS4=NVM@P@\=I2\''I1V._'':.+''9>_&)''Z''9>TC!!Y+9VU%YVU%YVU%YVU%YVU%YVU%YVU%YVU+:>/B */+:>/+:>/
%YVU%YVU%Z>/+:>/+:>/+:>/+:>/+:>/[@(JIT8=OS4!!T6M@P@\=I2\''I1V.+*9*+*:.+&)*_''9>_%@8VZ>/%YVU%YVU%YVU%YVU%YVU%YVU%YVU+:<JB */
+:>/+:>/+:>/+:>/+:>/+:>/+:>/+:>/+:>/+:=,B (%B$8=ORD!!T6M@P@\=I2\''I1U''Z*:.+*:._&)*_''9>_''9PCHZ/M9VU%YVU%YVU%YVU%YVU%YVU%Z>/
M0(%B#\7M3\7M3^/+:>/+:>/+:>/+:>/+:>/+:<7+3\7M0(JB (%IT8!!HRD!!T6M@P@\=I2\''I1U''Y6]*Z*:.+&)*_''8;_''8;BY\M*C\7M3\7+:<7+:>/+3\7
+3^/M3\7M0(JB (7M3\7M3\7M3\7+3\7+3^/M3\7M3\7M3\7M3\JB (JB"T%IT8!!HRD!!T6M@P@\=I2\''I1U''Y6]''Y6)*Z''9*_''9>_''8;BP$I[: 7M3\7M3\7
M3\7M3\7M3\7M3\7M0(JB#\7M3\7M3\7M3\7M3\7M3\7M3\7M3\7M3\JB (JB (JB"T%B$8!!HRD!!T6M@P@\=I2\''I1U''Y6]''Y6)*Z*9*_''9>_#,;BY\I+ &F
[7MJ+3\7M3\7M3\7M3\7B#\7B (JB#\7M3\7M3\7M3\7M3\7M3\7M3\7M3\7B (JB (JB (JB (JB$8!!HRD!!T6M@P@\=I2\''I1U''Y6]''Y6]''Z&)*Z&)>_''8;
BP$IBP$IBS,I,%>(M3\7B (JB (JB (JB (JB (7M3\7M3\7M3\7M0(7B (JB (JB (JB (JB (JB (JB (JB$8!!HRD!!T6M@P@\=I2\''I;Z%Y6]''Y6]''Y6^+
SH:N#"A>_#,$I@$IBP$IBP$I\3\JB (JB (JB (JB (JB (7M3\7M3\JB (JB (JB (JB (JB (JB (JB (JB (JB"TJB$8!!HRD!!T6M@P@\=I2\''I02^'':]''
H:-L(JB (I:^'')>8.W]>IBR._*8IBZ:.BRR2\ (JB (JB */+:<JB*>/+J2U+3\7+:>/+0(JB (JB (JB (JB (JB (JB (JB"T%IT8!!HRD!!T6M@P@\=I2\''
I8VG(JF!!''): (JB (JB ''):_'';!!7]7:.+*:.BRR.+ $IBU<JB (JB%JQG1<_T!!>QZW(_+F%:Y''*:.+)RB (JB (JB (JB (JB (JB (JIRT%IT8!!HRD!!T6M@
P@\=I2\''I8VI!!8^!!(I:^!!8^G(JB (I:!!''9>9.[&N+*:.+*:.+*8$+ %3B (JT''6Q$YFQ$YFQ$W*Q+G*:.+(2(:N#S4<HB (JB (JB (JB (%IRT%IRT%IT8!!
HRD!!A6M@P@\=I2\''I8VI!!4"!!(ZV!!(X^G!!8^G(JB ''):_#+&9.W:.Z&*.+*9*+*8$P4):$YF:.+*:$YFQ$YFQ$YF:.+*#(:N#(:N#S0(%IRT%IRT%IRT%IRT%
IRT%IS$!!HRD!!A6M@P@\=I2\''I8VI"X&!!)ZV")ZV!!!!8^G!!8^G(JB )X:9.[$4_&*.+*:.Z*9>_!!0DMCR9.[&KAF>:$YFQ$YFQ.+*#(:N#(:N#(3H:[BT%IRT%
IRT%IRT%IRT%IS$!!HRD!!A6M@P@\=I2\''I8VL"X&I!!8*J)ZV%(X^I"X^G!!8^G!!:F"#*F_#+&N#(:N#(:N.X9^.[&9.[&9.[$0A@$IBP&2WK*:L*N#(:N#(:N#
(1)!!XRH%IRT%IRT%IRT%IS$!!HRD!!A6M@P@\=I2\''I8VL#H&I"X&I"X&G"(^G"X^I!!8^G!!8]H)ZV%(+"9.[&)#+&9.[%^W#Q^.[&9.X.K"8.9.X.KTE!!\P%"2
BSX\.PR2\ZN#(:N:[BT%IRT%IRT%IS$!!HRD<A6M@P@\=I2\''I8VL#H2I"X&I"X&I"X&I"X^G!!8&G!!8^J"*VJ(T"!!RJVN(%:'')ZJ9W+&9W%9^#(:".[&N.[&9
LA29.[%[.[$+AC@0LCX>WE11WFD?I2\''I2\''I3$!!HS0<A6M@P@\=I2\''I8VL#H&L#H2I"X&I"X&I"X&I"X&I"X^J"*V%)ZV%RJV''(*J%)ZJ"#%9^W%9^#(:"
((:"(*J"(%8DW%:9W+&NW#B9#+&9AC@0AA0\G$FROS<?O48<OC0<A6M@P@\=I2\''I8VL#H2I"X2I"X&I"X&I"X&I"X&I"Q!! "&A;RT&%)ZV%)ZV%(*J%($&"
)ZJ'')5:"(*J")ZV%)ZI^YE:N.U9^V5:9#+%^A@PDV0P0.U,1LSYXQT4<OC0<A6M@P@\=I2\''I8VL#H2L"X&I"X&I"X&I"X&I"X&I"X&IXGQ ]FB%^:U4XH*%
)ZV"RT%IRT&''RT&''RZJ%)T"%)ZV%(%:"#*I^#(9^W%9^W%8YA@PDA@P1A@PDMQT<OC09A6M@P@\=I2\''I8VL#H&I"X&I"X&I"X&I"X&I"X$XFH&IFA X"&A 
XFB%XFA ^:V%)ZV%)ZUIRZJ"RZV")Q4]GQ4])ZJ")ZJ%(*J''YH9^AE9^W&Q^W%8YAA%[A@<<OC$9A6M@P@\=I2\''I56-+Z6-+Z6-+Z6-+Z6-+P,K%)ZV%+B0
,KB0,KB0,KB0,KB1 HB@ I*Z&)*Z&)*Z&)&Y 8L(JI.[&9,PD5!!XVE!!XV%)ZP$H-KR4-J$Y_Q%=_@PT9NS$9A6M@P@\=I2\''I54K%)ZV%)ZV%)ZV%)ZB%(JB
,[F1,[FB,[F1,XB@ KF@ HBZ&)*@&)*Z!!HRD-8RD!!B (J[\)JQLSD5 SVE!!BD$IBP$I\Q$Y_W4Y_XVU%YVU%R \9NS$9A6M@P@\=I2\''\B6B (JB (JB,XJB
,[F1 HB@ HB@ HB@&(BZ HBD HRZ!!KRD!!HRD!!K^DJR )JR$)JR%XVE RD%!!.D!!HRD!!IBQ%2&)%=_Q%=_XVU%YT9NR$9NS \9NS$9A6M@P@\=I2]0\E6B (JB
 (JB,[FB,XB1 HB1 HB@ HBZ!!HBD!!AFDDQDQDQD)I"$QDQD)JR$)C"$R''R&]''Y4RD%1\D*Y\QTV&W6F&)%>&)%>***Y!!XVE%YVE!!S \9NS$9A6M@P@\=\GA0
\E6B (JB (JB (JB,XB@ HB@ (B@ HA-!!F5-[V-+DQDQI"X)D!!L)I"$)I"X)"H"H''R$)JX"]''R$)"AI\#8=\P%<.)%2&)%=_W6E%A&E!!YVE%*''<9NS$9A6M@
P@\=\GA0\E6B (JB &!!(ZHJB HB@ HB@ HA-Z65-[[M+Z;M+DQDQI"X)JR$)JR$)JR$)JR&OJR$RD":OD!!H)K"8.WB:&)*Z*W8>&XU<.W5>*YVV*YVU%*''<9
NS$9A6M@P@\=\G@?O7"B (ITU(ITUEQT[UQT[V5-[UQ-[V5+,;LQDQD&I"X)I"$QDR$)JR$)JQH)JR$RD2$RJQLRJR8R)"8R#28.)%2&)(=_*%>&**Y!!YZY!!
YVUNA T9NS$9A6M@P@\=\C<?O7"B (JBU%QT (ITUF"BZF"BZEQ-,;N3,1F3I!!DQDQDQDQD)I"$)JR$QI"$RJQLRJR$RJQH.D":&D1I\K"8RK":O#:Z&SU=_
P*Z*W4:*W5<FR T9NS$9A6M@P@\=O3<?O7"B %QT &!!(ZEQ(UEQTUF5+[[LQDQF3,;N3DQDQDRXQDR$)JR$QJR$)DQD)DQD)DQD&DQH)JR$)JQHRD8=\WJZ&
W52&WD5\) Z&A&F*W:Z&W:(9NS$9A6M@P@\=O3<=OR5TUEQTUEQTUEQT[V5+[V5+[[V3,1DQ,;LQI!!F3JQD&DQDQDQD&JQL)DR$)JRX)JR$)JQJOWAH.D!!J&
K"9_WD5%W5>&)*Y\)*ZOWB8.YVV&R T9NS$9A6M@P@\=O34=OR5--UQTUEQTUEQ-[V63,;N3,;N3DQDQJQDQDQD&DQDQDQD&I!!DQJQDQJRX)JQD&JR8)I"$)
JR$.D!!HRD$6&D!!J&WJX.JU2&K"8SSZZ&W0XR) T9NS$9A6M@P@\=OS4=OR5T[[N3D[N\-[N5-[N3,;N5,;N3,;N3,;N3,1DQDQDQDQD)JR$&DQF3DQDQJRXQ
D[LQZ;LQDQH)D!!H.WJY_WB9\WJZ&)*Z&)%1\D!!LRW28RK*(9NS$9A6M@P@\=OS4=OR5TUERSUEQTUF!!TUEQT[V63,;N5[[L)JQDQ,1F3DQDQDR$SDRX)DR$)
JRX)JR$)I"%XJR$)D( .D"$RJQHSK"$R)!!H.JPX.D!!H.D"8.K*Z&W7<9NS$9A6M@P@\=OS4=OR63,;M-UEQT[UQTUF5TUF63D[N5UEQT,;N3,;N3,;LQ,1D&
DR$)JR$)DRXQDRXQJR$SK!!L)K!!HRD"8SK%2*WB$)K!!LRWJXF)!!I\#:Y_**Z&W7<9NS$9A6M@P@\=OS4=OW!!(ZF!!TZF5TUEQTUF5-[V5-Z65-[V5-[V.D[V.D
DV--[V.D!!AE-[QDQJQDQDXPQ!!F.DZ1D)JQD)DR:7D45ZVALSSR5_^B&7K%<.D:Z&)*Z**''<9NS$9A6M@P@\=OS4=OS4=OS4=OS4=OS4=OS4=ORD!!HRD!!TUEQ
TS%QTUD9NS$9NS$9NS$9NS$9NS$9NS$9NS$9NS$9NS$9NS$9NS$9NS$9NS$9NS$9NS$9NS$9NS$9NS$9NS$9A6M@P@\=OS4=OS4=OS4=OS4=OS4=OS4=OS4=
OS4=OS4=OS4=OS4=OS4=HRD!!HRD!!HRD!!HRD!!HRD!!HRD!!HRD!!OC0<OC0<NS$9NS$9NS$9NS$9NS$9NS$9NS$9NS$9NS$9A6M@P@\=OS4=OS4=OS4=OS4=OS4=
OS4=OS4=OS4=OS4=OS4=OS4=OS4!!HRD!!HRD!!HRD!!HRD!!HRD!!HRD!!HS0<OC0<OC09NS$9NS$9NS$9NS$9NS$9NS$9NS$9NS$9NS$9A6M@P@\=OS4=OS4=OS4=
OS4=OS4=OS4=OS4=OS4=OS4=OS4=OS4=HRD!!HRD!!HRD!!HRD!!HRD!!HRD!!HRD!!OC0<OC0<NS$9NS$9NS$9NS$9NS$9NS$9NS$9NS$9NS$9NS$9A6M@P@\=OS4=
OS4=OS4=OS4=OS4=OS4=OS4=OS4=OS4=OS4=OS4!!HRD!!HRD!!HRD!!HRD!!HRD!!HRD!!HS0<OC0<OC$9NS$9NS$9NS$9NS$9NS$9NS$9NS$9NS$9NS$9NS$9A0A@
PC$9NS$9NS$9NS$9NS$9NS$9NS$9NS$9NS$9NS$9NS$9NUMST5MST5MST5MST5MST0\GA0\GA0\GA0\GA0\GA0\GA0\GA0\GA0\GA0\GA0\GA0\GA0\GA0\G
A0\GA0A@PBDG@FM#X6M#X6M#X6M#X6M#X6M#X6M#X6M#X6M#X6M#X6M#X6M#X6M#X6M#X6M#X6M#X6M#X6M#X6M#X6M#X6M#X6M#X6M#X6M#X6M#X6M#X6M#
X6M#X6M#X6L@_@]@PDA@PDA@PDA@PDA@PDA@PDA@PDA@PDA@PDA@PDA@PDA@PDA@PDA@PDA@PDA@PDA@PDA@PDA@PDA@PDA@PDA@PDA@PDA@PDA@PDA@PDA@
PDA@PDA@PDA@PDA@PDA@PDA@') ; colorMapFromArray:#[176 176 180 176 208 210 192 192 190 96 160 255 96 160 130 192 208 210 176 192 220 208 208 210 192 224 240 112 160 140 224 255 255 48 80 130 144 176 140 128 176 160 96 160 180 144 176 160 112 144 160 80 128 180 112 160 190 112 144 180 96 192 255 160 176 180 160 208 220 96 176 255 48 80 80 80 160 130 160 192 220 80 144 255 112 176 130 64 96 100 128 192 140 160 208 255 96 128 110 240 240 220 208 224 240 80 112 130 112 144 140 240 255 255 80 144 180 255 255 255 96 128 160 96 144 180 144 192 190 80 160 100 80 176 255 144 176 190 128 160 190 80 160 255 96 160 110 96 176 130 144 176 220 176 240 255 96 144 110 96 176 140 112 176 140 208 255 255 128 176 130 224 224 220 192 208 240 112 144 130 240 224 220 240 240 240 112 176 180 240 240 255 0 0 0 160 208 180 128 176 190 144 176 180 64 160 255 112 160 210 144 192 210 64 144 255 64 96 80 64 128 110 192 224 220 160 224 255 80 112 100 160 176 210 208 224 220 176 208 240 112 160 130 224 240 220 192 224 255 224 208 210 48 112 160 224 224 240 48 96 160 224 224 255 112 160 180 160 208 190 128 160 180 80 160 110 128 176 210 144 160 180 80 144 110 160 192 210 48 96 100 176 208 220 144 208 255 176 160 180 80 144 130 192 208 220 160 192 240 80 128 130 48 112 140 176 208 255 96 128 130 64 128 160 224 240 255 64 112 160 112 176 190 128 176 180 255 240 255 112 176 210 160 192 190 160 208 210 48 112 100 176 192 190 144 224 255 96 144 100 144 160 190 128 192 255 160 208 240 64 112 110 192 176 180 144 192 255 96 144 130 192 192 210 64 112 140 176 192 240 48 96 140 96 128 140 80 128 160 144 160 140 144 192 180 48 96 60 96 144 190 48 80 60 48 96 80 96 160 100 48 64 60 128 208 255 80 128 100 128 160 210 112 176 255 144 192 240 208 224 210 32 112 140 128 176 255 192 240 255 48 96 130 128 176 140 208 192 210 80 128 140 80 112 140 96 144 160 48 112 180 96 160 190 64 112 60 64 128 80 64 96 60 64 112 80 64 128 100 128 176 220 112 192 255 64 112 100 144 176 210 80 128 110 192 240 240 112 160 110 176 192 210 80 112 110 176 224 255 48 80 110 96 144 140 208 240 255 64 96 130 64 96 140 112 160 160 64 128 180 80 112 160 64 112 180 160 176 160 96 128 180 80 128 80 80 144 100 144 192 220]; mask:((Depth1Image new) width: 96; height: 78; photometric:(#blackIs0); bitsPerSample:(#[1]); samplesPerPixel:(1); bits:(ByteArray fromPackedString:'
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@_??????????????>_??????????????>_??????????????>_??????????????>_??????????????>_???????
???????>_??????????????>_??????????????>_??????????????>_??????????????>_??????????????>_??????????????>_??????????????>
_??????????????>_??????????????>_??????????????>_??????????????>_??????????????>_??????????????>_??????????????>_???????
???????>_??????????????>_??????????????>_??????????????>_??????????????>_??????????????>_??????????????>_??????????????>
_??????????????>_??????????????>_??????????????>_??????????????>_??????????????>_??????????????>_??????????????>_???????
???????>_??????????????>_??????????????>_??????????????>_??????????????>_??????????????>_??????????????>_??????????????>
_??????????????>_??????????????>_??????????????>_??????????????>_??????????????>_??????????????>_??????????????>_???????
???????>_??????????????>_??????????????>_??????????????>_??????????????>_??????????????>_??????????????>_??????????????>
_??????????????>_??????????????>_??????????????>_??????????????>_??????????????>_??????????????>_??????????????>_???????
???????>_??????????????>_??????????????>_??????????????>_??????????????>_??????????????>_??????????????>_??????????????>
_??????????????>_??????????????>@@@@@@@@@@@@@@@@') ; yourself); yourself]
! !

!UISelectionPanel class methodsFor:'interface specs'!

nameAndSelectorSpec
    "This resource specification was automatically generated
     by the UIPainter of ST/X."

    "Do not manually edit this!! If it is corrupted,
     the UIPainter may not be able to read the specification."

    "
     UIPainter new openOnClass:UISelectionPanel andSelector:#nameAndSelectorSpec
     UISelectionPanel new openInterface:#nameAndSelectorSpec
    "

    <resource: #canvas>

    ^ 
     #(FullSpec
        name: nameAndSelectorSpec
        window: 
       (WindowSpec
          label: 'Painter'
          name: 'Painter'
          min: (Point 10 10)
          bounds: (Rectangle 14 46 329 262)
        )
        component: 
       (SpecCollection
          collection: (
           (LabelSpec
              label: 'Class & selectors to access user specs:'
              name: 'title'
              layout: (Point 5 10)
              resizeForLabel: true
              adjust: left
            )
           (LabelSpec
              label: 'Class:'
              name: 'classLabel'
              layout: (AlignmentOrigin 68 0.11 51 0 1 0.5)
              resizeForLabel: true
              adjust: right
            )
           (InputFieldSpec
              name: 'classField'
              layout: (LayoutFrame 74 0.11 39 0 -5 1.0 61 0)
              tabable: true
              model: className
              type: string
              acceptOnPointerLeave: false
            )
           (LabelSpec
              label: 'Labels:'
              name: 'labelsLabel'
              layout: (AlignmentOrigin 68 0.11 74 0 1 0.5)
              resizeForLabel: true
              adjust: right
            )
           (InputFieldSpec
              name: 'labelsField'
              layout: (LayoutFrame 74 0.11 64 0 -5 1.0 86 0)
              tabable: true
              model: labelsKey
              type: symbolOrNil
              acceptOnPointerLeave: false
            )
           (LabelSpec
              label: 'Specifications:'
              name: 'specsLabel'
              layout: (AlignmentOrigin 68 0.11 99 0 1 0.5)
              resizeForLabel: true
              adjust: right
            )
           (InputFieldSpec
              name: 'specsField'
              layout: (LayoutFrame 74 0.11 89 0 -5 1.0 111 0)
              tabable: true
              model: specsKey
              type: symbolOrNil
              acceptOnPointerLeave: false
            )
           (HorizontalPanelViewSpec
              name: 'commitPanel'
              layout: (LayoutFrame 0 0.0 -23 1.0 0 1.0 0 1.0)
              horizontalLayout: fitSpace
              verticalLayout: fit
              horizontalSpace: 3
              verticalSpace: 3
              reverseOrderIfOKAtLeft: true
              component: 
             (SpecCollection
                collection: (
                 (ActionButtonSpec
                    label: 'cancel'
                    name: 'cancel'
                    tabable: true
                    model: cancel
                    extent: (Point 153 23)
                  )
                 (ActionButtonSpec
                    label: 'ok'
                    name: 'accept'
                    tabable: true
                    model: accept
                    isDefault: true
                    extent: (Point 153 23)
                  )
                 )
               
              )
            )
           (CheckBoxSpec
              label: 'Update Default Resources'
              name: 'updateDefaultResources'
              layout: (Point 5 133)
              model: updateDefaultResources
            )
           )
         
        )
      )
!

windowSpec
    "This resource specification was automatically generated
     by the UIPainter of ST/X."

    "Do not manually edit this!! If it is corrupted,
     the UIPainter may not be able to read the specification."

    "
     UIPainter new openOnClass:UISelectionPanel andSelector:#windowSpec
     UISelectionPanel new openInterface:#windowSpec
     UISelectionPanel open
    "

    <resource: #canvas>

    ^ 
     #(FullSpec
        name: windowSpec
        window: 
       (WindowSpec
          label: 'Widget Gallery'
          name: 'Widget Gallery'
          min: (Point 100 280)
          bounds: (Rectangle 14 46 508 348)
        )
        component: 
       (SpecCollection
          collection: (
           (NoteBookViewSpec
              name: 'NoteBook1'
              layout: (LayoutFrame 0 0.0 0 0.0 0 1.0 0 1.0)
              model: majorChannel
              menu: majorList
              direction: right
              useIndex: true
              canvas: gallery
            )
           )
         
        )
      )
! !

!UISelectionPanel class methodsFor:'interface specs-standard gallery'!

specifications

    ^ #(
        #( 'Standard'  #( 
                            #('Buttons' standardButtons)
                            #('Menus'   standardMenus)
                            #('Text'    standardTexts)
                            #('Lists'   standardLists)
                            #('Trees'   standardTrees)
                            #('Groups'  standardGroups)
                            #('Embed'       standardEmbed)
                            #('Geometric'   standardMorphs1)
                            #('Misc'    standardMisc)
                         )
         )

        #( 'Clipboard'  #(
                            #('Copy & Paste Buffer'     clipBoardSpec)
                          )
         )

        #( 'User Def.'   #userDefined )
     )

    "Modified: / 21.4.1998 / 12:04:22 / cg"
!

standardButtons
    "This resource specification was automatically generated
     by the UIPainter of ST/X."

    "Do not manually edit this!! If it is corrupted,
     the UIPainter may not be able to read the specification."

    "
     UIPainter new openOnClass:UISelectionPanel andSelector:#standardButtons
     UISelectionPanel new openInterface:#standardButtons
    "

    <resource: #canvas>

    ^ 
     #(FullSpec
        name: standardButtons
        window: 
       (WindowSpec
          label: 'Buttons'
          name: 'Buttons'
          min: (Point 10 10)
          bounds: (Rectangle 0 0 440 196)
        )
        component: 
       (SpecCollection
          collection: (
           (ActionButtonSpec
              label: 'Button'
              name: 'Button'
              layout: (LayoutFrame 2 0 1 0 127 0 23 0)
              translateLabel: true
            )
           (ActionButtonSpec
              label: 'OK'
              name: 'Button - OK'
              layout: (LayoutFrame 2 0 33 0 127 0 55 0)
              translateLabel: true
              model: doAccept
            )
           (ActionButtonSpec
              label: 'Cancel'
              name: 'Button - Cancel'
              layout: (LayoutFrame 2 0 65 0 127 0 87 0)
              translateLabel: true
              model: doCancel
            )
           (ActionButtonSpec
              label: 'Help'
              name: 'Button - Help'
              layout: (LayoutFrame 2 0 97 0 127 0 119 0)
              translateLabel: true
              model: help
            )
           (ActionButtonSpec
              label: 'Close'
              name: 'Button - Close'
              layout: (LayoutFrame 2 0 129 0 127 0 151 0)
              translateLabel: true
              model: closeRequest
            )
           (ToggleSpec
              label: 'Toggle'
              name: 'Toggle'
              layout: (LayoutFrame 144 0 1 0 280 0 23 0)
              translateLabel: true
              isTriggerOnDown: true
              lampColor: (Color 100.0 100.0 0.0)
            )
           (RadioButtonSpec
              label: 'Radio Button'
              name: 'Radio Button'
              layout: (LayoutFrame 144 0.0 33 0 280 0 55 0)
              translateLabel: true
              isTriggerOnDown: true
            )
           (CheckBoxSpec
              label: 'Check Box'
              name: 'Check Box'
              layout: (LayoutFrame 144 0 65 0 280 0 87 0)
              translateLabel: true
            )
           (CheckToggleSpec
              name: 'Check Toggle'
              layout: (LayoutOrigin 144 0 99 0)
              isTriggerOnDown: true
              showLamp: false
              lampColor: (Color 100.0 100.0 0.0)
            )
           (LabelSpec
              label: 'Check Toggle'
              name: 'CheckToggleLabel'
              layout: (AlignmentOrigin 170 0 98 0 0 0)
              resizeForLabel: true
              adjust: left
              canUIDrag: false
            )
           (ButtonSpec
              label: 'Model Button'
              name: 'Model Button'
              layout: (LayoutFrame 296 0 1 0 432 0 23 0)
              translateLabel: true
            )
           (LabelSpec
              label: 'Spin Button'
              name: 'UpDownButtonLabel'
              layout: (AlignmentOrigin 348 0 35 0 0 0)
              resizeForLabel: true
              adjust: left
              canUIDrag: false
            )
           (UpDownButtonSpec
              name: 'UpDown Button'
              layout: (LayoutFrame 296 0 33 0 341 0 55 0)
              orientation: horizontal
            )
           (LabelSpec
              label: 'Arrow Button'
              name: 'ArrowButtonsLabel'
              layout: (AlignmentOrigin 348 0 69 0 0 0)
              resizeForLabel: true
              adjust: left
              canUIDrag: false
            )
           (ArrowButtonSpec
              name: 'Arrow Button'
              layout: (LayoutFrame 296 0 65 0 318 0 87 0)
              isTriggerOnDown: true
              direction: right
            )
           (ActionButtonSpec
              label: '...'
              name: 'Button1'
              layout: (LayoutFrame 0 0 160 0 20 0 182 0)
              translateLabel: true
              model: someAction
            )
           )
         
        )
      )
!

standardEmbed
    "This resource specification was automatically generated
     by the UIPainter of ST/X."

    "Do not manually edit this!! If it is corrupted,
     the UIPainter may not be able to read the specification."

    "
     UIPainter new openOnClass:UISelectionPanel andSelector:#standardEmbed
     UISelectionPanel new openInterface:#standardEmbed
    "

    <resource: #canvas>

    ^ 
     #(FullSpec
        name: standardEmbed
        window: 
       (WindowSpec
          label: 'Misc'
          name: 'Misc'
          min: (Point 10 10)
          bounds: (Rectangle 14 46 456 269)
        )
        component: 
       (SpecCollection
          collection: (
           (ArbitraryComponentSpec
              name: 'Arbitrary Component'
              layout: (LayoutFrame 3 0 3 0 128 0 104 0)
              hasBorder: false
            )
           (LabelSpec
              label: 'Scrollable'
              name: 'ScrollableArbitraryLabel1'
              layout: (AlignmentOrigin 7 0 7 0 0 0)
              style: (FontDescription helvetica medium roman 10)
              resizeForLabel: true
              adjust: left
              canUIDrag: false
            )
           (LabelSpec
              label: 'Arbitrary-'
              name: 'ScrollableArbitraryLabel2'
              layout: (AlignmentOrigin 7 0 23 0 0 0)
              style: (FontDescription helvetica medium roman 10)
              resizeForLabel: true
              adjust: left
              canUIDrag: false
            )
           (LabelSpec
              label: 'Component'
              name: 'ScrollableArbitraryLabel3'
              layout: (AlignmentOrigin 7 0 39 0 0 0)
              style: (FontDescription helvetica medium roman 10)
              resizeForLabel: true
              adjust: left
              canUIDrag: false
            )
           (UISubSpecification
              name: 'SubSpecification'
              layout: (LayoutFrame 145 0 3 0 280 0 104 0)
            )
           (LabelSpec
              label: 'SubSpecification'
              name: 'SubSpecificationLabel'
              layout: (Point 149 7)
              style: (FontDescription helvetica medium roman 10)
              resizeForLabel: true
              canUIDrag: false
            )
           (SubCanvasSpec
              name: 'SubCanvas'
              layout: (LayoutFrame 297 0 3 0 433 0 104 0)
              hasHorizontalScrollBar: true
              hasVerticalScrollBar: true
            )
           (LabelSpec
              label: 'SubCanvas'
              name: 'SubCanvasLabel'
              layout: (AlignmentOrigin 324 0 7 0 0 0)
              style: (FontDescription helvetica medium roman 10)
              resizeForLabel: true
              adjust: left
              canUIDrag: false
            )
           (NonScrollableArbitraryComponentSpec
              name: 'NonSrollable Arbitrary Component'
              layout: (LayoutFrame 3 0 120 0 128 0 221 0)
            )
           (LabelSpec
              label: 'NonScrollable'
              name: 'NonScrollableArbitraryLabel1'
              layout: (AlignmentOrigin 7 0 124 0 0 0)
              style: (FontDescription helvetica medium roman 10)
              resizeForLabel: true
              adjust: left
              canUIDrag: false
            )
           (LabelSpec
              label: 'Arbitrary-'
              name: 'NonScrollableArbitraryLabel2'
              layout: (AlignmentOrigin 7 0 140 0 0 0)
              style: (FontDescription helvetica medium roman 10)
              resizeForLabel: true
              adjust: left
              canUIDrag: false
            )
           (LabelSpec
              label: 'Component'
              name: 'NonScrollableArbitraryLabel3'
              layout: (AlignmentOrigin 7 0 156 0 0 0)
              style: (FontDescription helvetica medium roman 10)
              resizeForLabel: true
              adjust: left
              canUIDrag: false
            )
           )
         
        )
      )
!

standardGraphs
    "This resource specification was automatically generated
     by the UIPainter of ST/X."

    "Do not manually edit this!! If it is corrupted,
     the UIPainter may not be able to read the specification."

    "
     UIPainter new openOnClass:UISelectionPanel andSelector:#standardGraphs
     UISelectionPanel new openInterface:#standardGraphs
    "

    <resource: #canvas>

    ^ 
     #(FullSpec
        name: standardGraphs
        window: 
       (WindowSpec
          label: 'Graphs'
          name: 'Graphs'
          min: (Point 10 10)
          bounds: (Rectangle 14 46 453 161)
        )
        component: 
       (SpecCollection
          collection: (
           (GraphColumnView2DSpec
              name: 'GraphColumnView2D'
              layout: (LayoutFrame 3 0 3 0 208 0 98 0)
              gridX: 0
              gridY: 0
            )
           (LabelSpec
              label: 'GraphColumnViewView2D'
              name: 'GraphColumnView2DLabel'
              layout: (AlignmentOrigin 7 0 7 0 0 0)
              style: (FontDescription helvetica medium roman 10)
              resizeForLabel: true
              adjust: left
              canUIDrag: false
            )
           (GraphColumnView3DSpec
              name: 'GraphColumnView3D'
              layout: (LayoutFrame 228 0 3 0 433 0 98 0)
            )
           (LabelSpec
              label: 'GraphColumnViewView3D'
              name: 'GraphColumnView3DLabel'
              layout: (AlignmentOrigin 232 0 7 0 0 0)
              style: (FontDescription helvetica medium roman 10)
              resizeForLabel: true
              adjust: left
              canUIDrag: false
            )
           )
         
        )
      )
!

standardGroups
    "This resource specification was automatically generated
     by the UIPainter of ST/X."

    "Do not manually edit this!! If it is corrupted,
     the UIPainter may not be able to read the specification."

    "
     UIPainter new openOnClass:UISelectionPanel andSelector:#standardGroups
     UISelectionPanel new openInterface:#standardGroups
    "

    <resource: #canvas>

    ^ 
     #(FullSpec
        name: standardGroups
        window: 
       (WindowSpec
          label: 'Groups'
          name: 'Groups'
          min: (Point 10 10)
          bounds: (Rectangle 0 0 443 222)
        )
        component: 
       (SpecCollection
          collection: (
           (ViewSpec
              name: 'Box'
              layout: (LayoutFrame 3 0 3 0 95 0 95 0)
            )
           (TransparentBoxSpec
              name: 'TBox1'
              layout: (LayoutFrame 113 0 3 0 204 0 95 0)
            )
           (LabelSpec
              label: 'TransparentBox'
              name: 'Label1'
              layout: (AlignmentOrigin 106 0 5 0 0 0)
              style: (FontDescription helvetica medium roman 10)
              resizeForLabel: true
              adjust: left
              canUIDrag: false
            )
           (LabelSpec
              label: 'Box'
              name: 'ViewLabel'
              layout: (AlignmentOrigin 6 0 5 0 0 0)
              style: (FontDescription helvetica medium roman 10)
              resizeForLabel: true
              adjust: left
              canUIDrag: false
            )
           (LabelSpec
              label: 'Variable Panels'
              name: 'VPanelLabel'
              layout: (LayoutFrame 3 0 104 0 208 0 127 0)
              style: (FontDescription helvetica medium roman 10)
              adjust: left
              canUIDrag: false
            )
           (VariableHorizontalPanelSpec
              name: 'Variable Horizontal Panel'
              layout: (LayoutFrame 3 0 128 0 98 0 218 0)
              component: 
             (SpecCollection
                collection: (
                 (LabelSpec
                    label: 'A'
                    name: 'label4'
                    style: (FontDescription helvetica medium roman 12)
                    level: 2
                    canUIDrag: false
                  )
                 (LabelSpec
                    label: 'B'
                    name: 'label5'
                    style: (FontDescription helvetica medium roman 12)
                    level: 2
                    canUIDrag: false
                  )
                 )
               
              )
              handles: (Any 0.5 1.0)
            )
           (VariableVerticalPanelSpec
              name: 'Variable Vertical Panel'
              layout: (LayoutFrame 113 0 128 0 208 0 218 0)
              component: 
             (SpecCollection
                collection: (
                 (LabelSpec
                    label: 'A'
                    name: 'label9'
                    style: (FontDescription helvetica medium roman 12)
                    level: 2
                    canUIDrag: false
                  )
                 (LabelSpec
                    label: 'B'
                    name: 'label10'
                    style: (FontDescription helvetica medium roman 12)
                    level: 2
                    canUIDrag: false
                  )
                 )
               
              )
              handles: (Any 0.5 1.0)
            )
           (FramedBoxSpec
              label: 'Framed Box'
              name: 'Framed Box'
              layout: (LayoutFrame 228 0 3 0 433 0 98 0)
              labelPosition: topLeft
              translateLabel: true
            )
           (LabelSpec
              label: 'Panels'
              name: 'PanelLabel'
              layout: (LayoutFrame 228 0 104 0 433 0 127 0)
              style: (FontDescription helvetica medium roman 10)
              adjust: left
              canUIDrag: false
            )
           (HorizontalPanelViewSpec
              name: 'Horizontal Panel'
              layout: (LayoutFrame 228 0 128 0 312 0 218 0)
              horizontalLayout: center
              verticalLayout: center
              horizontalSpace: 3
              verticalSpace: 3
              component: 
             (SpecCollection
                collection: (
                 (LabelSpec
                    label: 'A'
                    name: 'label1'
                    style: (FontDescription helvetica medium roman 12)
                    level: 2
                    extent: (Point 23 23)
                    canUIDrag: false
                  )
                 (LabelSpec
                    label: 'B'
                    name: 'label2'
                    style: (FontDescription helvetica medium roman 12)
                    level: 2
                    extent: (Point 23 23)
                    canUIDrag: false
                  )
                 (LabelSpec
                    label: 'C'
                    name: 'label3'
                    style: (FontDescription helvetica medium roman 12)
                    level: 2
                    extent: (Point 23 23)
                    canUIDrag: false
                  )
                 )
               
              )
            )
           (VerticalPanelViewSpec
              name: 'Vertical Panel'
              layout: (LayoutFrame 320 0 128 0 367 0 218 0)
              horizontalLayout: center
              verticalLayout: center
              horizontalSpace: 3
              verticalSpace: 3
              component: 
             (SpecCollection
                collection: (
                 (LabelSpec
                    label: 'A'
                    name: 'label6'
                    style: (FontDescription helvetica medium roman 12)
                    level: 2
                    extent: (Point 23 23)
                    canUIDrag: false
                  )
                 (LabelSpec
                    label: 'B'
                    name: 'label7'
                    style: (FontDescription helvetica medium roman 12)
                    level: 2
                    extent: (Point 23 23)
                    canUIDrag: false
                  )
                 (LabelSpec
                    label: 'C'
                    name: 'label8'
                    style: (FontDescription helvetica medium roman 12)
                    level: 2
                    extent: (Point 23 23)
                    canUIDrag: false
                  )
                 )
               
              )
            )
           (PanelViewSpec
              name: 'Panel'
              layout: (LayoutFrame 375 0 128 0 433 0 218 0)
              horizontalLayout: fitSpace
              verticalLayout: fitSpace
              horizontalSpace: 3
              verticalSpace: 3
              component: 
             (SpecCollection
                collection: (
                 (LabelSpec
                    label: 'A'
                    name: 'label11'
                    style: (FontDescription helvetica medium roman 12)
                    level: 2
                    extent: (Point 23 23)
                    canUIDrag: false
                  )
                 (LabelSpec
                    label: 'B'
                    name: 'label12'
                    style: (FontDescription helvetica medium roman 12)
                    level: 2
                    extent: (Point 23 23)
                    canUIDrag: false
                  )
                 (LabelSpec
                    label: 'C'
                    name: 'label13'
                    style: (FontDescription helvetica medium roman 12)
                    level: 2
                    extent: (Point 23 23)
                    canUIDrag: false
                  )
                 (LabelSpec
                    label: 'D'
                    name: 'label14'
                    style: (FontDescription helvetica medium roman 12)
                    level: 2
                    extent: (Point 23 23)
                    canUIDrag: false
                  )
                 (LabelSpec
                    label: 'E'
                    name: 'label15'
                    style: (FontDescription helvetica medium roman 12)
                    level: 2
                    extent: (Point 23 23)
                    canUIDrag: false
                  )
                 )
               
              )
            )
           )
         
        )
      )
!

standardLists
    "This resource specification was automatically generated
     by the UIPainter of ST/X."

    "Do not manually edit this!! If it is corrupted,
     the UIPainter may not be able to read the specification."

    "
     UIPainter new openOnClass:UISelectionPanel andSelector:#standardLists
     UISelectionPanel new openInterface:#standardLists
    "

    <resource: #canvas>

    ^ 
     #(FullSpec
        name: standardLists
        window: 
       (WindowSpec
          label: 'Lists'
          name: 'Lists'
          min: (Point 10 10)
          bounds: (Rectangle 14 46 455 264)
        )
        component: 
       (SpecCollection
          collection: (
           (SequenceViewSpec
              name: 'List'
              layout: (LayoutFrame 3 0 3 0 208 0 101 0)
              hasHorizontalScrollBar: true
              hasVerticalScrollBar: true
              useIndex: false
            )
           (DataSetSpec
              name: 'Table'
              layout: (LayoutFrame 228 0 3 0 433 0 101 0)
              hasHorizontalScrollBar: true
              hasVerticalScrollBar: true
              has3Dseparators: false
            )
           (SelectionInListModelViewSpec
              name: 'SelectionInListModelView'
              layout: (LayoutFrame 3 0 110 0 208 0 208 0)
              hasHorizontalScrollBar: true
              hasVerticalScrollBar: true
              useIndex: false
              highlightMode: line
            )
           )
         
        )
      )
!

standardMenus
    "This resource specification was automatically generated
     by the UIPainter of ST/X."

    "Do not manually edit this!! If it is corrupted,
     the UIPainter may not be able to read the specification."

    "
     UIPainter new openOnClass:UISelectionPanel andSelector:#standardMenus
     UISelectionPanel new openInterface:#standardMenus
    "

    <resource: #canvas>

    ^ 
     #(FullSpec
        name: standardMenus
        window: 
       (WindowSpec
          label: 'Menus'
          name: 'Menus'
          min: (Point 10 10)
          bounds: (Rectangle 14 46 491 269)
        )
        component: 
       (SpecCollection
          collection: (
           (MenuPanelSpec
              name: 'Tool Bar'
              layout: (LayoutFrame 4 0 134 0 129 0 166 0)
              textDefault: true
            )
           (LabelSpec
              label: 'Tool Bar'
              name: 'ToolBarLabel'
              layout: (AlignmentOrigin 4 0 134 0 0 1)
              style: (FontDescription helvetica medium roman 10)
              resizeForLabel: true
              adjust: left
              canUIDrag: false
            )
           (MenuPanelSpec
              name: 'Menu Bar'
              layout: (LayoutFrame 4 0 188 0 129 0 210 0)
            )
           (LabelSpec
              label: 'Menu Bar'
              name: 'MenuBarLabel'
              layout: (AlignmentOrigin 4 0 187 0 0 1)
              style: (FontDescription helvetica medium roman 10)
              resizeForLabel: true
              adjust: left
              canUIDrag: false
            )
           (PopUpListSpec
              label: 'PopUp List'
              name: 'PopUp List'
              layout: (LayoutFrame 4 0 3 0 129 0 25 0)
              tabable: true
            )
           (ComboListSpec
              name: 'Combo List'
              layout: (LayoutFrame 4 0 33 0 129 0 53 0)
              useIndex: false
            )
           (ComboBoxSpec
              name: 'Combo Box'
              layout: (LayoutFrame 4 0 61 0 129 0 81 0)
              acceptOnPointerLeave: false
            )
           (ExtendedComboBoxSpec
              name: 'Extended Combo Box'
              layout: (LayoutFrame 4 0 88 0 129 0 108 0)
              miniScrollerHorizontal: true
            )
           (TabViewSpec
              name: 'Tab Header'
              layout: (LayoutFrame 146 0 3 0 281 0 39 0)
            )
           (NoteBookViewSpec
              name: 'Note Book'
              layout: (LayoutFrame 146 0 46 0 281 0 138 0)
            )
           (UIGalleryViewSpec
              name: 'Gallery'
              layout: (LayoutFrame 298 0 3 0 434 0 138 0)
            )
           (ColorMenuSpec
              name: 'ColorMenu'
              layout: (LayoutFrame 143 0 188 0 -46 1.0 210 0)
              labelsAreColored: true
            )
           (LabelSpec
              label: 'Color Menu'
              name: 'Label1'
              layout: (AlignmentOrigin 142 0 187 0 0 1)
              style: (FontDescription helvetica medium roman 10)
              resizeForLabel: true
              adjust: left
              canUIDrag: false
            )
           )
         
        )
      )
!

standardMisc
    "This resource specification was automatically generated
     by the UIPainter of ST/X."

    "Do not manually edit this!! If it is corrupted,
     the UIPainter may not be able to read the specification."

    "
     UIPainter new openOnClass:UISelectionPanel andSelector:#standardMisc
     UISelectionPanel new openInterface:#standardMisc
    "

    <resource: #canvas>

    ^ 
     #(FullSpec
        name: standardMisc
        window: 
       (WindowSpec
          label: 'NewApplication'
          name: 'NewApplication'
          min: (Point 10 10)
          bounds: (Rectangle 14 46 453 289)
        )
        component: 
       (SpecCollection
          collection: (
           (LabelSpec
              label: 'StepSlider'
              name: 'StepSliderLabel'
              layout: (AlignmentOrigin 87 0 9 0 1 0)
              style: (FontDescription helvetica medium roman 10)
              resizeForLabel: true
              canUIDrag: false
            )
           (LabelSpec
              label: 'Slider'
              name: 'SliderLabel'
              layout: (AlignmentOrigin 87 0 35 0 1 0)
              style: (FontDescription helvetica medium roman 10)
              resizeForLabel: true
              canUIDrag: false
            )
           (SliderSpec
              name: 'Slider'
              layout: (LayoutFrame 88 0 34 0 203 0 52 0)
              orientation: horizontal
            )
           (LabelSpec
              label: 'ThumbWheel'
              name: 'ThumbWheelLabel'
              layout: (AlignmentOrigin 88 0 62 0 1 0)
              style: (FontDescription helvetica medium roman 10)
              resizeForLabel: true
              canUIDrag: false
            )
           (ThumbWheelSpec
              name: 'Thumb Wheel'
              layout: (LayoutFrame 88 0 60 0 203 0 80 0)
              orientation: horizontal
            )
           (LabelSpec
              label: 'ScrollBar'
              name: 'ScrollBarLabel'
              layout: (AlignmentOrigin 87 0 103 0 1 0)
              initiallyInvisible: true
              style: (FontDescription helvetica medium roman 10)
              resizeForLabel: true
              canUIDrag: false
            )
           (LabelSpec
              label: 'Scroller'
              name: 'ScrollerLabel'
              layout: (AlignmentOrigin 87 0 130 0 1 0)
              initiallyInvisible: true
              style: (FontDescription helvetica medium roman 10)
              resizeForLabel: true
              canUIDrag: false
            )
           (ScrollerSpec
              name: 'Scroller'
              layout: (LayoutFrame 88 0 127 0 203 0 145 0)
              initiallyInvisible: true
              orientation: horizontal
            )
           (SteppingSliderSpec
              name: 'VStepSlider'
              layout: (LayoutFrame 226 0 6 0 244 0 106 0)
            )
           (SliderSpec
              name: 'VSlider'
              layout: (LayoutFrame 254 0 6 0 272 0 106 0)
            )
           (ThumbWheelSpec
              name: 'VThumbWheel'
              layout: (LayoutFrame 280 0 6 0 298 0 106 0)
            )
           (ScrollerSpec
              name: 'VScroller'
              layout: (LayoutFrame 345 0 6 0 363 0 106 0)
              initiallyInvisible: true
            )
           (LabelSpec
              label: 'Region'
              name: 'RegionLabel'
              layout: (AlignmentOrigin 83 0 177 0 1 0)
              style: (FontDescription helvetica medium roman 10)
              resizeForLabel: true
              adjust: left
              canUIDrag: false
            )
           (RegionSpec
              name: 'Region'
              layout: (LayoutFrame 88 0 171 0 203 0 200 0)
              lineWidth: 2
              regionType: ellipse
            )
           (LabelSpec
              label: 'Separator'
              name: 'SeparatorLabel'
              layout: (AlignmentOrigin 83 0 207 0 1 0)
              style: (FontDescription helvetica medium roman 10)
              resizeForLabel: true
              adjust: left
              canUIDrag: false
            )
           (DividerSpec
              name: 'Separator'
              layout: (LayoutFrame 88 0 213 0 203 0 217 0)
            )
           (LabelSpec
              label: 'Progress Indicator'
              name: 'ProgressIndicatorsLabel'
              layout: (AlignmentOrigin 333 0 117 0 1 0)
              style: (FontDescription helvetica medium roman 10)
              resizeForLabel: true
              adjust: left
              canUIDrag: false
            )
           (ProgressIndicatorSpec
              name: 'Progress Indicator'
              layout: (LayoutFrame 338 0 114 0 433 0 132 0)
            )
           (LabelSpec
              label: 'Round
Progress Indicator'
              name: 'RoundProgressIndicatorsLabel'
              layout: (AlignmentOrigin 333 0 167 0 1 0)
              style: (FontDescription helvetica medium roman 10)
              resizeForLabel: true
              adjust: left
              canUIDrag: false
            )
           (RoundProgressIndicatorSpec
              name: 'Round Progress Indicator'
              layout: (LayoutFrame 338 0 136 0 425 0 219 0)
              level: 0
              borderWidth: 1
            )
           (ScrollBarSpec
              name: 'ScrollBar'
              layout: (LayoutFrame 88 0 100 0 203 0 118 0)
              initiallyInvisible: true
              orientation: horizontal
            )
           (ScrollBarSpec
              name: 'VScrollBar'
              layout: (LayoutFrame 317 0 6 0 335 0 106 0)
              initiallyInvisible: true
            )
           )
         
        )
      )
!

standardMorphs1
    "This resource specification was automatically generated
     by the UIPainter of ST/X."

    "Do not manually edit this!! If it is corrupted,
     the UIPainter may not be able to read the specification."

    "
     UIPainter new openOnClass:UISelectionPanel andSelector:#standardMorphs1
     UISelectionPanel new openInterface:#standardMorphs1
    "

    <resource: #canvas>

    ^ 
     #(FullSpec
        name: standardMorphs1
        window: 
       (WindowSpec
          label: 'Morphs'
          name: 'Morphs'
          min: (Point 10 10)
          bounds: (Rectangle 0 0 419 272)
        )
        component: 
       (SpecCollection
          collection: (
           (ArcMorphSpec
              name: 'Circle'
              layout: (LayoutFrame 3 0 3 0 63 0 63 0)
              line: true
              lineColor: (Color 100.0 0.0 0.0)
            )
           (ArcMorphSpec
              name: 'FilledCircle'
              layout: (LayoutFrame 3 0 70 0 63 0 133 0)
              foregroundColor: (Color 100.0 100.0 0.0)
              fill: true
            )
           (ArcMorphSpec
              name: 'FilledCircleL'
              layout: (LayoutFrame 3 0 143 0 63 0 206 0)
              foregroundColor: (Color 100.0 100.0 0.0)
              line: true
              fill: true
              lineColor: (Color 100.0 0.0 0.0)
            )
           (RectangleMorphSpec
              name: 'RectangleMorph1'
              layout: (LayoutFrame 70 0 3 0 133 0 63 0)
              foregroundColor: (Color 100.0 100.0 0.0)
              line: true
              fill: false
              lineColor: (Color 100.0 0.0 0.0)
            )
           (RectangleMorphSpec
              name: 'RectangleMorph2'
              layout: (LayoutFrame 70 0 72 0 133 0 135 0)
              foregroundColor: (Color 100.0 100.0 0.0)
              fill: true
            )
           (RectangleMorphSpec
              name: 'RectangleMorph3'
              layout: (LayoutFrame 70 0 139 0 133 0 202 0)
              foregroundColor: (Color 100.0 100.0 0.0)
              line: true
              fill: true
              lineColor: (Color 100.0 0.0 0.0)
            )
           (ArcMorphSpec
              name: 'FilledPieL'
              layout: (LayoutFrame 143 0 143 0 206 0 206 0)
              foregroundColor: (Color 100.0 100.0 0.0)
              line: true
              fill: true
              lineColor: (Color 100.0 0.0 0.0)
              startAngle: -45
              sweepAngle: 270
              pie: true
            )
           (ArcMorphSpec
              name: 'FilledPie'
              layout: (LayoutFrame 143 0 70 0 206 0 133 0)
              foregroundColor: (Color 100.0 100.0 0.0)
              fill: true
              startAngle: -45
              sweepAngle: 270
              pie: true
            )
           (ArcMorphSpec
              name: 'Pie'
              layout: (LayoutFrame 143 0 3 0 206 0 63 0)
              line: true
              lineColor: (Color 100.0 0.0 0.0)
              startAngle: -45
              sweepAngle: 270
              pie: true
            )
           (LineSegmentMorphSpec
              name: 'LineSegmentMorph1'
              foregroundColor: (Color 100.0 100.0 0.0)
              fill: true
              lineColor: (Color 100.0 0.0 0.0)
              startPoint: (Point 214 9)
              endPoint: (Point 254 59)
              showArrow: true
            )
           (LineSegmentMorphSpec
              name: 'Line1'
              foregroundColor: (Color 100.0 100.0 0.0)
              fill: true
              lineColor: (Color 100.0 0.0 0.0)
              startPoint: (Point 214 75)
              endPoint: (Point 254 125)
            )
           (SketchMorphSpec
              name: 'SketchMorph1'
              layout: (LayoutFrame 280 0 10 0 373 0 90 0)
              image: sketchImageIcon
            )
           )
         
        )
      )
!

standardTexts
    "This resource specification was automatically generated
     by the UIPainter of ST/X."

    "Do not manually edit this!! If it is corrupted,
     the UIPainter may not be able to read the specification."

    "
     UIPainter new openOnClass:UISelectionPanel andSelector:#standardTexts
     UISelectionPanel new openInterface:#standardTexts
    "

    <resource: #canvas>

    ^ 
     #(FullSpec
        name: standardTexts
        window: 
       (WindowSpec
          label: 'Texts'
          name: 'Texts'
          min: (Point 10 10)
          bounds: (Rectangle 0 0 464 224)
        )
        component: 
       (SpecCollection
          collection: (
           (TextEditorSpec
              name: 'Text Editor'
              layout: (LayoutFrame 3 0 3 0 208 0 98 0)
              hasHorizontalScrollBar: true
              hasVerticalScrollBar: true
              hasKeyboardFocusInitially: false
            )
           (HTMLViewSpec
              name: 'HTML Browser'
              layout: (LayoutFrame 228 0 3 0 433 0 98 0)
              hasHorizontalScrollBar: true
              hasVerticalScrollBar: true
            )
           (InputFieldSpec
              name: 'Entry Field'
              layout: (LayoutFrame 3 0 113 0 208 0 135 0)
              acceptOnReturn: true
              acceptOnTab: true
              acceptOnPointerLeave: true
            )
           (FilenameInputFieldSpec
              name: 'Filename Entry Field'
              layout: (LayoutFrame 3 0 141 0 208 0 163 0)
              acceptOnPointerLeave: true
            )
           (FilenameInputFieldSpec
              name: 'Filename + History'
              layout: (LayoutFrame 3 0 171 0 208 0 193 0)
              acceptOnPointerLeave: true
              viewClassName: FilenameWidgetWithHistory
            )
           (LabelSpec
              label: 'Label'
              name: 'Label'
              layout: (LayoutFrame 228 0 113 0 433 0 135 0)
              translateLabel: true
            )
           (LinkButtonSpec
              label: 'LinkButton'
              name: 'LinkButton1'
              layout: (LayoutFrame 228 0 141 0 433 0 163 0)
              translateLabel: true
            )
           )
         
        )
      )
!

standardTrees
    "This resource specification was automatically generated
     by the UIPainter of ST/X."

    "Do not manually edit this!! If it is corrupted,
     the UIPainter may not be able to read the specification."

    "
     UIPainter new openOnClass:UISelectionPanel andSelector:#standardTrees
     UISelectionPanel new openInterface:#standardTrees
    "

    <resource: #canvas>

    ^ 
     #(FullSpec
        name: standardTrees
        window: 
       (WindowSpec
          label: 'Trees'
          name: 'Trees'
          min: (Point 10 10)
          bounds: (Rectangle 14 46 455 264)
        )
        component: 
       (SpecCollection
          collection: (
           (SelectionInTreeViewSpec
              name: 'Tree List'
              layout: (LayoutFrame 4 0 3 0 209 0 101 0)
              hasHorizontalScrollBar: true
              hasVerticalScrollBar: true
              highlightMode: line
            )
           (FileSelectionTreeSpec
              name: 'File Tree List'
              layout: (LayoutFrame 229 0 3 0 434 0 101 0)
              hasHorizontalScrollBar: true
              hasVerticalScrollBar: true
              highlightMode: line
            )
           (HierarchicalListViewSpec
              name: 'New ModelTree List'
              layout: (LayoutFrame 4 0 110 0 209 0 208 0)
              hasHorizontalScrollBar: true
              hasVerticalScrollBar: true
              highlightMode: line
            )
           )
         
        )
      )
!

standardUserPanel
    "this window spec was automatically generated by the ST/X UIPainter"

    "do not manually edit this - the painter/builder may not be able to
     handle the specification if its corrupted."

    "
     UIPainter new openOnClass:UISelectionPanel andSelector:#standardUserPanel
     UISelectionPanel new openInterface:#standardUserPanel
    "

    <resource: #canvas>

    ^
     
       #(#FullSpec
          #'window:' 
           #(#WindowSpec
              #'name:' 'UserPanel'
              #'layout:' #(#LayoutFrame 0 0.0 0 0.0 0 1.0 0 1.0)
              #'label:' 'UserPanel'
              #'bounds:' #(#Rectangle 0 0 445 162)
          )
          #'component:' 
           #(#SpecCollection
              #'collection:' 
               #(
                 #(#LabelSpec
                    #'name:' 'helpText'
                    #'layout:' #(#Point 10 0)
                    #'labelChannel:' #userDefinedHelpText
                    #'resizeForLabel:' true
                    #'canUIDrag:' false
                )
              )
          )
      )
! !

!UISelectionPanel class methodsFor:'menus'!

menuSelected

    <resource: #menu>

    ^ #(#Menu #(
                #(#MenuItem
                        #'label:' 'copy'
                        #'value:' #copy
                 )
                #(#MenuItem
                        #'label:' 'cut'
                        #'value:' #cut
                 )
                )
               nil
               nil
        )

    "Modified: / 29.10.1997 / 03:20:30 / cg"
!

menuUnselected
    <resource: #menu>

    ^ #(#Menu #(
                #(#MenuItem
                        #'label:' 'paste'
                        #'value:' #paste
                 )
                )
               nil
               nil
        )

    "Modified: / 29.10.1997 / 03:20:38 / cg"
! !

!UISelectionPanel class methodsFor:'resources'!

classResources
    "my translations are found in the UIPainter classes resources"

    ^ UIPainter classResources 
! !

!UISelectionPanel methodsFor:'actions'!

defineClassAndSelector
    |bd cls sel lbl|

    bd := IdentityDictionary new.
    bd at:#className put:( userClass asValue).
    bd at:#specsKey  put:( (userSpecs  ? '') asValue).
    bd at:#labelsKey put:( (userLabels ? '') asValue).
    bd at:#updateDefaultResources put:(false asValue).

    (self openDialogInterface:#nameAndSelectorSpec withBindings:bd) ifTrue:[
        (      (cls := (bd at:#className) value) notNil
          and:[(sel := (bd at:#specsKey)  value) notNil
          and:[(lbl := (bd at:#labelsKey) value) notNil]]
        ) ifTrue:[
            userClass  := cls.
            userSpecs  := sel.
            userLabels := lbl.

            (bd at:#updateDefaultResources) value ifTrue:[
                UserClass  := userClass.
                UserSpecs  := userSpecs.
                UserLabels := userLabels.
            ]
        ]
    ].
!

paste:something
    "paste something at a point"

    |coll specs point device ext spec|

    clipBoardSpec isNil ifTrue:[
        clipBoardSpec := SpecCollection new.
        clipBoardSpec collection:(OrderedCollection new).
    ].
    coll   := clipBoardSpec collection.
    device := gallery device.

    point  := device translatePoint:(device pointerPosition)
                           fromView:nil
                             toView:(gallery canvas).

    point y < 1 ifTrue:[point y:1].
    ext := gallery extent - (10@10).

    (specs := something) isCollection ifFalse:[
        specs := Array with:something
    ].

    specs do:[:aSpec|
        point x > ext x ifTrue:[point x:1].
        point y > ext y ifTrue:[point y:1].

        spec := aSpec copy.
        spec layout:(LayoutOrigin fromPoint:point).
        coll add:spec.
        point := point + (20@20).
    ].
    gallery update.

    "Modified: / 10.10.2001 / 14:14:36 / cg"
!

raiseMenu
    "can open menu"

    |spec menu value paste|

    spec := self clientSpec value.

    spec notNil ifTrue:[
        menu := self class menuSelected decodeAsLiteralArray.
        self isClipBoard ifFalse:[
            (menu someMenuItemWithValue:#cut) disable.
        ].

        (value := menu startUp) == #cut ifTrue:[
            clipBoardSpec collection remove:spec ifAbsent:nil.
            gallery update.
        ] ifFalse:[
            value == #copy ifTrue:[
                self window setClipboardObject:spec
            ]
        ].
      ^ self
    ].

    self isUserBoard ifTrue:[
        ^ self defineClassAndSelector
    ].

    paste := self window getClipboardObject.

    (self canPaste:paste) ifTrue:[
        menu := self class menuUnselected decodeAsLiteralArray.

        (menu startUp) == #paste ifTrue:[
            self paste:paste
        ]
    ].
! !

!UISelectionPanel methodsFor:'aspects'!

clientSpec
    ^ gallery clientSpecHolder
!

clipBoardSpec
    ^ clipBoardSpec
!

gallery
    ^ gallery
!

galleryList
    ^ gallery listHolder
!

galleryModel
    ^ gallery model

!

majorChannel
    |holder|

    (holder := builder bindingAt:#majorChannel) isNil ifTrue:[
        holder := AspectAdaptor new subject:self; forAspect:#majorSelection.
        builder aspectAt:#majorChannel put:holder.
    ].
    ^ holder
!

majorList
    ^ self class specifications collect:[:el| el first]
!

minorKeys
    ^ gallery minorKeysHolder
! !

!UISelectionPanel methodsFor:'change & update'!

update:something with:aParameter from:changedObject
    "one of my models changed its value"

    |label|

    changedObject == self clientSpec  ifTrue:[
        (label := changedObject value) notNil ifTrue:[
            label := 'Widget Gallery: ' , label name.
        ] ifFalse:[
            label := 'Widget Gallery'
        ].
        builder window topView label:(label , ' ')
    ].

    super update:something with:aParameter from:changedObject.
! !

!UISelectionPanel methodsFor:'drag & drop'!

canDropObjects:aCollectionOfDropObjects in:aComponent
    ^ self canPaste:(aCollectionOfDropObjects collect:[:el| el theObject ]).

    "Created: / 13-10-2006 / 15:53:04 / cg"
!

dropObjects:aCollectionOfDropObjects in:aComponent

    |spc top|

    top := DragAndDropManager dragOriginatorQuerySignal query topView.

    top == aComponent topView ifTrue:[
        spc := self clientSpec value.
        spc isNil ifTrue:[^ self].

        (clipBoardSpec collection remove:spc ifAbsent:nil) isNil ifTrue:[
            ^ self
        ].
    ] ifFalse:[
        spc := aCollectionOfDropObjects collect:[:el| el theObject].
    ].
    self paste:spc.

    "Modified: / 18-03-1999 / 18:29:19 / stefan"
    "Created: / 13-10-2006 / 18:25:50 / cg"
! !

!UISelectionPanel methodsFor:'initialization'!

initialize
    |holder|

    super initialize.

    userClass  := UserClass.
    userSpecs  := UserSpecs.
    userLabels := UserLabels.

    gallery := UIGalleryView new.

    gallery           model:(ValueHolder new).
    gallery      listHolder:(ValueHolder new).
    gallery minorKeysHolder:(ValueHolder new).
    gallery    menuSelector:#raiseMenu.

    gallery clientSpecHolder:(holder := ValueHolder new).
    holder  addDependent:self.

    majorSelection := 0.
! !

!UISelectionPanel methodsFor:'queries'!

canPaste:something
    "returns true if something could be paste"

    (self isClipBoard and:[something notNil]) ifTrue:[
        something isCollection ifTrue:[
            something notEmpty ifTrue:[
                ^ (something at:1) isKindOf:UISpecification
            ]
        ] ifFalse:[
            ^ something isKindOf:UISpecification
        ]
    ].
    ^ false
!

isClipBoard
    "returns true if current view is clip board"

    majorSelection ~~ 0 ifTrue:[
        ^ (self majorList at:majorSelection) startsWith:'Clip'
    ].
    ^ false
!

isUserBoard
    "returns true if current view is clip board"

    majorSelection ~~ 0 ifTrue:[
        ^ (self majorList at:majorSelection) startsWith:'User'
    ].
    ^ false
! !

!UISelectionPanel methodsFor:'selection'!

majorSelection
    ^ majorSelection ? 0
!

majorSelection:aSelection
    |spec model|

    (majorSelection == aSelection or:[aSelection == 0]) ifTrue:[
        ^ self
    ].

    gallery builder:nil.
    majorSelection := aSelection.
    spec := ((self class specifications) at:majorSelection) last.

    model := self galleryModel.
    model value:0.
    self minorKeys value:nil.

    spec isSymbol ifFalse:[
        self galleryList  value:(spec collect:[:a| a first]).
        self minorKeys setValue:(spec collect:[:a| a last]).
    ] ifTrue:[
        self perform:spec.
    ].
    model value:1.

    "Modified: / 21.4.1998 / 11:59:08 / cg"
! !

!UISelectionPanel methodsFor:'startup & release'!

closeRequest
    |sav|

    (sav := masterApplication) notNil ifTrue:[
        masterApplication := nil.
        sav closeRequestFor:(self window).
        masterApplication := sav.
    ] ifFalse:[
        super closeRequest.
    ]

    "Modified: 28.7.1997 / 09:44:40 / cg"
!

postOpenWith:aBuilder
    self majorChannel value:1.
    super postOpenWith:aBuilder.
! !

!UISelectionPanel methodsFor:'user defined'!

userDefined
    |cls lbl sel builder|

    cls := self resolveName:userClass.

    (cls notNil and:[(cls respondsTo:userLabels)]) ifTrue:[
        lbl := cls perform:userLabels.
        sel := Array new:(lbl size) withAll:#userDefinedSpec.
        self galleryList value:lbl.
        self minorKeys   value:sel.
    ] ifFalse:[
        builder := UIBuilder new isEditing:true.

        builder application:self.
        gallery builder:builder. 
        self galleryList value:#( '???' ).
        self minorKeys   value:#( standardUserPanel ).
    ]
!

userDefinedHelpText

^ '
no user defined specifications are configured yet. To assign
user defined specifications to the gallery, press the middle
button of your mouse to open a dialog.
'
!

userDefinedSpec
    |cls spc idx|

    cls := self resolveName:userClass.

    (cls notNil and:[(cls respondsTo:userSpecs)]) ifTrue:[
        spc := cls perform:userSpecs.
        idx := self galleryModel value.

        idx <= spc size ifTrue:[
            spc := spc at:idx.
            (cls respondsTo:spc) ifTrue:[
                ^ cls perform:spc
            ]
        ]
    ].
  ^ nil
! !

!UISelectionPanel::UserDefinedGallery class methodsFor:'class initialization'!

initialize
    "initialize my default user-def from the superclasses specs.
     I.e. provide a clocks entry"

    LabelList := self defaultListOfLabels asOrderedCollection.
    SelectorList := self defaultListOfSelectors asOrderedCollection.
    HolderList := OrderedCollection withSize:(SelectorList size).
    NextUniqueNumber := 1.

    UISelectionPanel 
        userClass:self
        specSelector:#listOfSelectors
        labelSelector:#listOfLabels.

    "
     self initialize
    "

    "Modified: / 5.12.1997 / 14:25:22 / cg"
    "Created: / 8.12.1997 / 18:49:42 / cg"
! !

!UISelectionPanel::UserDefinedGallery class methodsFor:'defaults'!

defaultListOfLabels
    ^ #( 'Clocks etc.' 'Business Graphics' )

    "Created: / 8.12.1997 / 18:50:06 / cg"
    "Modified: / 16.6.1998 / 10:20:12 / cg"
!

defaultListOfSelectors
    ^ #( clocksSpec businessGraphicsSpec)

    "Modified: / 5.12.1997 / 14:03:55 / cg"
    "Created: / 8.12.1997 / 18:50:21 / cg"
! !

!UISelectionPanel::UserDefinedGallery class methodsFor:'documentation'!

copyright
"
 COPYRIGHT (c) 1997 by eXept Software AG
              All Rights Reserved

 This software is furnished under a license and may be used
 only in accordance with the terms of that license and with the
 inclusion of the above copyright notice.   This software may not
 be provided or otherwise made available to, or used by, any
 other person.  No title to or ownership of the software is
 hereby transferred.
"



!

documentation
"
    The standard user-defined selectionPanel entry.
    Here, a single item named 'clocks' is provided, containing
    an analog and digital clock.
    This is a dumb example; the actual user-defined panel may be
    extended dynamically.

    Frameworks which provide additional widgets may dynamically
    add more entries, by sending #addUserSpecHolder:label:
    or #removeUserSpecWithLabel:.
    Typically, this is done when a framework is loaded, by one of the
    frameworks class-initialization methods.

    [start with:]
        UISelectionPanel open

    [author:]
        Claus Gittinger
        Claus Atzkern

    [see also:]
        TabView
        NoteBookView
        UIGalleryView
        UIPainter

"
! !

!UISelectionPanel::UserDefinedGallery class methodsFor:'installation / deinstallation'!

addUserSpecHolder:aValueHolder label:aLabelString
    "add a new entry with the given label.
     The specHolder is typically either a spec, a valueHolder or a block.
     In any case, it should return a valid spec from the #value message.
     This spec is installed under that label."

    |syntheticSelector idx|

    syntheticSelector := ('userSpec' , NextUniqueNumber printString) asSymbol.
    NextUniqueNumber := NextUniqueNumber + 1.

    idx := LabelList indexOf:aLabelString.
    idx ~~ 0 ifTrue:[
        SelectorList at:idx put:syntheticSelector.
        HolderList at:idx put:aValueHolder
    ] ifFalse:[
        LabelList addLast:aLabelString.
        SelectorList addLast:syntheticSelector.
        HolderList addLast:aValueHolder
    ]

    "Modified: / 5.12.1997 / 14:13:17 / cg"
    "Created: / 8.12.1997 / 18:50:55 / cg"
!

removeUserSpecWithLabel:aLabelString
    "remove the spec which was previously installed under the given label"

    |idx|

    idx := LabelList indexOf:aLabelString.
    idx ~~ 0 ifTrue:[
        LabelList removeIndex:idx.
        SelectorList removeIndex:idx.
        HolderList removeIndex:idx
    ].

    "Modified: / 5.12.1997 / 14:13:45 / cg"
    "Created: / 8.12.1997 / 18:51:03 / cg"
! !

!UISelectionPanel::UserDefinedGallery class methodsFor:'user defined gallery'!

businessGraphicsSpec
    "This resource specification was automatically generated
     by the UIPainter of ST/X."

    "Do not manually edit this!! If it is corrupted,
     the UIPainter may not be able to read the specification."

    "
     UIPainter new openOnClass:UISelectionPanel::UserDefinedGallery andSelector:#businessGraphicsSpec
    "

    <resource: #canvas>

    ^ 
     #(FullSpec
        name: businessGraphicsSpec
        window: 
       (WindowSpec
          label: 'Interface Builder'
          name: 'Interface Builder'
          min: (Point 10 10)
          bounds: (Rectangle 14 46 394 317)
        )
        component: 
       (SpecCollection
          collection: (
           (LabelSpec
              label: 'PieChart'
              name: 'Label2'
              layout: (LayoutFrame 5 0 5 0 126 0 20 0)
              translateLabel: true
              canUIDrag: false
            )
           (PieChartWidgetSpec
              name: 'PIE Chart'
              layout: (LayoutFrame 15 0 21 0 103 0 141 0)
            )
           (LabelSpec
              label: 'ChartDescription'
              name: 'Label1'
              layout: (LayoutFrame 8 0.0 153 0 131 0 168 0)
              translateLabel: true
              canUIDrag: false
            )
           (ChartDescriptionSpec
              name: 'Chart Legend'
              layout: (LayoutFrame 14 0.0 -9 0.656827 14 0.323684 -9 1.0)
            )
           (LabelSpec
              label: 'BarChart'
              name: 'Label3'
              layout: (LayoutFrame 115 0 5 0 237 0 20 0)
              translateLabel: true
              canUIDrag: false
            )
           (BarChartWidgetSpec
              name: 'Bar Chart'
              layout: (LayoutFrame 121 0 21 0 232 0 141 0)
            )
           )
         
        )
      )
!

clocksSpec
    "This resource specification was automatically generated
     by the UIPainter of ST/X."

    "Do not manually edit this!! If it is corrupted,
     the UIPainter may not be able to read the specification."

    "
     UIPainter new openOnClass:UISelectionPanel::UserDefinedGallery andSelector:#clocksSpec
    "

    <resource: #canvas>

    ^ 
     #(FullSpec
        name: clocksSpec
        window: 
       (WindowSpec
          label: 'Interface Builder'
          name: 'Interface Builder'
          min: (Point 10 10)
          bounds: (Rectangle 14 46 439 319)
        )
        component: 
       (SpecCollection
          collection: (
           (NonScrollableArbitraryComponentSpec
              name: 'Analog Clock'
              layout: (LayoutFrame 15 0 39 0 129 0 151 0)
              hasBorder: false
              component: ClockView
            )
           (NonScrollableArbitraryComponentSpec
              name: 'Digital Clock'
              layout: (LayoutOrigin 15 0 176 0)
              hasBorder: false
              component: DigitalClockView
            )
           (NonScrollableArbitraryComponentSpec
              name: 'Digital Number display'
              layout: (LayoutOrigin 142 0 39 0)
              hasBorder: false
              component: DigitalLedDisplay
            )
           (LabelSpec
              label: 'Analog Clock'
              name: 'Label1'
              layout: (LayoutFrame 15 0 16 0 128 0 38 0)
              translateLabel: true
              adjust: left
              canUIDrag: false
            )
           (LabelSpec
              label: 'Number Display'
              name: 'Label2'
              layout: (LayoutFrame 142 0 16 0 270 0 38 0)
              translateLabel: true
              adjust: left
              canUIDrag: false
            )
           (LabelSpec
              label: 'Digital Clock'
              name: 'Label3'
              layout: (LayoutFrame 15 0 155 0 128 0 177 0)
              translateLabel: true
              adjust: left
              canUIDrag: false
            )
           (MeterWidgetSpec
              name: 'Meter Widget'
              layout: (Rectangle 143 99 259 216)
              model: meterValue
            )
           (LabelSpec
              label: 'Meter Widget'
              name: 'Label4'
              layout: (LayoutFrame 142 0 77 0 269 0 99 0)
              translateLabel: true
              canUIDrag: false
            )
           (MeterClackCounterSpec
              name: 'Meter Clack Counter'
              layout: (Rectangle 291 40 387 72)
              model: model
            )
           (LabelSpec
              label: 'Meter Clack Counter'
              name: 'Label5'
              layout: (LayoutFrame 290 0 16 0 417 0 38 0)
              translateLabel: true
              adjust: left
              canUIDrag: false
            )
           )
         
        )
      )
!

listOfLabels
    ^ LabelList

    "Created: / 5.12.1997 / 13:43:03 / cg"
    "Modified: / 8.12.1997 / 18:51:20 / cg"
!

listOfSelectors
    ^ SelectorList

    "Created: / 5.12.1997 / 13:43:13 / cg"
    "Modified: / 8.12.1997 / 18:51:28 / cg"
! !

!UISelectionPanel::UserDefinedGallery class methodsFor:'user spec access'!

doesNotUnderstand:aMessage
    "catch queries for a userSpec"

    |sel idx|

    ((sel := aMessage selector) startsWith:'userSpec') ifTrue:[
        idx := SelectorList indexOf:sel.
        idx ~~ 0 ifTrue:[
            ^ (HolderList at:idx) value
        ]
    ].
    ^ super doesNotUnderstand:aMessage

    "Modified: / 5.12.1997 / 14:23:24 / cg"
    "Created: / 8.12.1997 / 18:51:50 / cg"
!

respondsTo:aSelector
    "catch queries for a userSpec"

    |idx|

    (aSelector startsWith:'userSpec') ifTrue:[
        idx := Number fromString:(aSelector copyFrom:9).
        idx := SelectorList indexOf:aSelector.
        idx ~~ 0 ifTrue:[^ true].
    ].
    ^ super respondsTo:aSelector

    "Modified: / 5.12.1997 / 14:19:55 / cg"
    "Created: / 8.12.1997 / 18:51:57 / cg"
! !

!UISelectionPanel class methodsFor:'documentation'!

version
    ^ '$Header$'
!

version_CVS
    ^ '$Header$'
! !

UISelectionPanel initialize!
UISelectionPanel::UserDefinedGallery initialize!