From VisualWorks®, 7.5 of April 16, 2007 on August 8, 2007 at 2:52:25 pm (Dialog confirm: 'You are filing-in a Parcel source file!\\While this is possible it will not have\the same effect as loading the parcel.\None of the Parcel''s prerequisites will\be loaded and none of its load actions\will be performed.\\Are you sure you want to file-in?' withCRs) ifFalse: [self error: 'Parcel file-in abandoned. Choose terminate or close.'] <class> <name>WASettings</name> <environment>Smalltalk</environment> <super>UI.Model</super> <private>false</private> none serverType portNumber siteName silent changeTimezone promptForSeasideAdministratorName promptForSeasideAdministratorPassword promptForHTTPServer promptForSeasideSite administratorName administratorPassword createSeasideSite createHTTPServer optionCreateServer <imports></imports> <category>SeasideSettings</category> <attributes> <package>SeasideSettings</package> </attributes> </class> <comment> WASettings
This object is intended to hold the Seaside settings as specified through the VisualWorks Settings tool. This object is also holding all the behavior that is sensitive to these settings during the installation of Seaside Instance Variables: administratorName <String> Seaside administrator name administratorPassword <String> Seaside administrator password changeTimezone <Boolean> Time zone will be changed during Seaside install createHTTPServer <Boolean> An HTTP Server will be created during Seaside install createSeasideSite <Boolean> A Seaside Web Site will be created during Seaside install portNumber <SmallInteger> Port Number used by the created HTTP server promptForHTTPServer <Boolean> Creation of HTTP Server will be decided by the user promptForSeasideAdministratorName <Boolean> Seaside Administrator Name will be decided by the user promptForSeasideAdministratorPassword <Boolean> Seaside Administrator Password will be decided by the user promptForSeasideSite <Boolean> Creation of Seaside Web Site will be decided by the user serverType <ByteSymbol> Type of the created HTTP server #http or #cgi silent <Boolean> Seaside installation is unattended siteName <String> Name of the created Seaside Web Site optionCreateServer <Boolean> Not really a setting, but an option that alters the behavior of #wavePortNumber: Some of the data held by this object is duplicated from other objects. When appropriate the duplicated data is pulled from other objects and changes made to the duplicated data are propagated to other objects. Seaside administrator name Seaside administrator password Port Number used by the HTTP server Type of the HTTP server #http or #cgi Name of the created Seaside Web Site Changing the port number causes a shutdown and a restart of the server when appropriate
</comment> <class> <name>WASettingsPage</name> <environment>Smalltalk</environment> <super>Tools.SettingsManagerPage</super> <private>false</private> none helpText <imports></imports> <category>SeasideSettings</category> <attributes> <package>SeasideSettings</package> </attributes> </class> <comment> WASettingsPage
Abstract superclass for the Seaside settings pages
</comment> <class> <name>WAWebToolkitSettings</name> <environment>Smalltalk</environment> <super>WASettingsPage</super> <private>false</private> none portNumber serverType siteName createServer optionCreateServer <imports></imports> <category>SeasideSettings</category> <attributes> <package>SeasideSettings</package> </attributes> </class> <comment> WAWebToolkitSettings
User interface to acquire Web Server details Can be used to modify the live system. Instance Variables (value holders) portNumber <SmallInteger> Port Number used by the created HTTP server serverType <ByteSymbol> Type of the created HTTP server #http or #cgi siteName <String> Name of the created Seaside Web Site
</comment> <class> <name>WAAdministratorSettings</name> <environment>Smalltalk</environment> <super>WASettingsPage</super> <private>false</private> none administratorName administratorPassword <imports></imports> <category>SeasideSettings</category> <attributes> <package>SeasideSettings</package> </attributes> </class> <comment> WAAdministratorSettings
User interface to acquire the Seaside administrator details. Can be used to modify these details live. Instance Variables (value holders) administratorName <String> Seaside administrator name administratorPassword <String> Seaside administrator password
</comment> <class> <name>WAInstallationSettings</name> <environment>Smalltalk</environment> <super>WASettingsPage</super> <private>false</private> none promptAdministratorPassword promptAdministratorName promptHTTPServerCreation promptSeasideSiteCreation silent changeTimezone createSeasideSite createHTTPServer <imports></imports> <category>SeasideSettings</category> <attributes> <package>SeasideSettings</package> </attributes> </class> <comment> WAInstallationSettings
User interface to acquire the Seaside installation options. Can be used to make Seaside install completely unattended. Instance Variables (value holders) changeTimezone <Boolean> Time zone will be changed during Seaside install createHTTPServer <Boolean> An HTTP Server will be created during Seaside install createSeasideSite <Boolean> A Seaside Web Site will be created during Seaside install promptForHTTPServer <Boolean> Creation of HTTP Server will be decided by the user promptForSeasideAdministratorName <Boolean> Seaside Administrator Name will be decided by the user promptForSeasideAdministratorPassword <Boolean> Seaside Administrator Password will be decided by the user promptForSeasideSite <Boolean> Creation of Seaside Web Site will be decided by the user silent <Boolean> Seaside installation is unattended
</comment> <name>Default</name> <environment>WASettings</environment> <private>false</private> <constant>false</constant> <category>static</category> <initializer>WASettings default</initializer> <attributes> <package>SeasideSettings</package> </attributes> <methods> WASettings <category>private-installation</category>
adjustTimeZone "((( AAADocumentation new adjustTimeZone )))" "1. Establish VW Time Zone as Central Europe Time" Core.TimeZone setDefaultTimeZone: (Core.TimeZone timeDifference: 1 DST: 1 start: 2 end: 3 from: 90 "on March 31" to: 304 "until October 31" startDay: #Sunday). "2. Propagate to Squeak, propagation required for cookie support" Squeak.DateAndTime.LocalTimeZone := (Squeak.TimeZone offset: (Core.TimeZone default secondsFromGMTAtLocal: Timestamp now) seconds name: 'Central Europe' abbreviation: 'CET'). Squeak.Week startDay: #Monday. self warn: 'Time zone was kindly adjusted for you to Central Europe (CET)' , ' by AAADocumentation>>adjustTimeZone'.
automaticallyAdjustTimeZone self changeTimezone ifTrue: [self adjustTimeZone]
automaticallyCreateServer | autoServer | autoServer := self silent ifTrue: [self createHTTPServer] ifFalse: [self promptForHTTPServer ifTrue: [self confirm: 'Do you want to set up a sample HTTP server ?'] ifFalse: [self createHTTPServer]]. autoServer ifTrue: [self report: 'Creating an HTTP server'. self createServer]. ^autoServer
automaticallyCreateSwazooServer | autoServer | autoServer := self silent ifTrue: [self createHTTPServer] ifFalse: [self promptForHTTPServer ifTrue: [self confirm: 'Do you want to set up a sample Swazoo server ?'] ifFalse: [self createHTTPServer]]. autoServer ifTrue: [self report: 'Creating a Swazoo server'. self createSwazooServer]. ^autoServer
automaticallyCreateWebSite | autoSite | autoSite := self silent ifTrue: [self createSeasideSite] ifFalse: [self promptForSeasideSite ifTrue: [self confirm: 'Do you want to set up a sample Seaside site?'] ifFalse: [self createSeasideSite]]. autoSite ifTrue: [self report: 'Creating a Seaside Web site'. self createSite]. ^autoSite
confirm: aString self silent ifFalse: [^Dialog confirm: aString] ifTrue: [self error: 'Cannot confirm in silent mode']
counterUrl ^ 'http://localhost:' , self portNumber displayString , '/' , self siteName , '/go/counter'.
createServer self createServerWithPort: self portNumber
createServerWithPort: aNumber | aServer | self isWaveLoaded ifFalse: [^nil]. aServer := self waveBrokerClass newMinimal: aNumber. aServer service trapErrors: false. aServer autoStart: true. aServer hostname: 'localhost'. aServer addDefaultResolvers. aServer startRequest.
createSite | siteFactory site default parameters configParameters logicals | self isWaveLoaded ifFalse: [^nil]. siteFactory := #{VisualWave.WebSite} value. default := siteFactory siteNamed: 'default'. site := siteFactory removeSiteNamed: self siteName; newMinimal: self siteName. parameters := Dictionary new. configParameters := Dictionary new. logicals := Dictionary new. parameters at: 'configuration' put: configParameters. parameters at: 'logical-names' put: logicals. configParameters at: 'directory' put: default directoryName. configParameters at: 'environment' put: 'Seaside'. " = Name space" configParameters at: 'home' put: 'readme.html'. logicals at: 'go' put: 'servlet/SeasideServlet'. site initializeFrom: parameters. siteFactory addSite: site. ^ site.
createSwazooServer | server site | server := Swazoo.SwazooServer singleton. (site := server siteNamed: self siteName) ifNotNil: [server removeSite: site]. server addSite: self swazooSeasideSite; start
install | autoServer autoSite | autoServer := self automaticallyCreateServer. autoSite := self automaticallyCreateWebSite. autoServer & autoSite ifTrue: [self request: 'Copy the text below and paste it into your web browser' initialAnswer: self counterUrl]. self automaticallyAdjustTimeZone. self warn: 'Enjoy !'
installSwazoo | autoServer | autoServer := self automaticallyCreateSwazooServer. autoServer ifTrue: [self request: 'Copy the text below and paste it into your web browser' initialAnswer: self counterUrl]. self automaticallyAdjustTimeZone. self warn: 'Enjoy !'
report: aString Transcript show: aString; cr
request: messageString "Transparently substitute username and password for the config app" messageString = 'Please choose an administrator\username for the application ''config''' withCRs ifTrue: ["Prompting for Seaside administrator name" ^ (self silent or: [self promptForSeasideAdministratorName not]) ifTrue: [self administratorName] ifFalse: [nil]]. messageString = ('Please enter a password for ''' , self administratorName, '''') ifTrue: ["Prompting for Seaside administrator password" ^ (self silent or: [self promptForSeasideAdministratorPassword not]) ifTrue: [self administratorPassword] ifFalse: [nil]]. ^ nil.
request: aString initialAnswer: anotherString self silent ifFalse: [Dialog request: aString initialAnswer: anotherString]. self report: aString. self report: anotherString.
swazooSeasideSite ^(Swazoo.SeasideSite new) name: self siteName; initialize; host: 'localhost' ip: '127.0.0.1' port: self portNumber; initializeResourceFromUriPattern: '/' , self siteName , '/go'
warn: aString self silent ifFalse: [Dialog warn: aString]. self report: aString.
</methods> <methods> WASettings <category>accessing</category>
administratorName self refresh: #administratorName. ^administratorName
administratorName: aValue administratorName := aValue. self changed: #administratorName.
administratorPassword self refresh: #administratorPassword. ^administratorPassword
administratorPassword: aValue administratorPassword := aValue. self changed: #administratorPassword
changeTimezone ^changeTimezone
changeTimezone: aValue changeTimezone := aValue. self changed: #changeTimezone
createHTTPServer ^createHTTPServer
createHTTPServer: aValue createHTTPServer := aValue. self changed: #createHTTPServer
createSeasideSite ^createSeasideSite
createSeasideSite: aValue createSeasideSite := aValue. self changed: #createSeasideSite
optionCreateServer ^optionCreateServer
optionCreateServer: anObject optionCreateServer := anObject. self changed: #optionCreateServer
portNumber self refresh: #portNumber. ^portNumber
portNumber: aValue portNumber := aValue. self changed: #portNumber
promptForHTTPServer ^promptForHTTPServer
promptForHTTPServer: aValue promptForHTTPServer := aValue. self changed: #promptForHTTPServer
promptForSeasideAdministratorName ^promptForSeasideAdministratorName
promptForSeasideAdministratorName: aValue promptForSeasideAdministratorName := aValue. self changed: #promptForSeasideAdministratorName
promptForSeasideAdministratorPassword ^promptForSeasideAdministratorPassword
promptForSeasideAdministratorPassword: aValue promptForSeasideAdministratorPassword := aValue. self changed: #promptForSeasideAdministratorPassword
promptForSeasideSite ^promptForSeasideSite
promptForSeasideSite: aValue promptForSeasideSite := aValue. self changed: #promptForSeasideSite
serverType ^serverType
serverType: aValue serverType := aValue. self changed: #serverType
silent ^silent
silent: aValue silent := aValue. self changed: #silent
siteName ^siteName
siteName: aValue siteName := aValue. self changed: #siteName
</methods> <methods> WASettings <category>private-advanced-settings</category>
administratorNameExtendedRefresh self isSeasideLoaded ifTrue: [ | name | name := self seasideConfigApplication preferenceAt: #login. name notNil ifTrue: [administratorName := name]].
administratorNameExtendedUpdate self isSeasideLoaded ifTrue: [self seasideConfigApplication preferenceAt: #login put: administratorName].
administratorPasswordExtendedRefresh self isSeasideLoaded ifTrue: [ | pass | pass := self seasideConfigApplication preferenceAt: #password. pass notNil ifTrue: [administratorPassword := pass]].
administratorPasswordExtendedUpdate self isSeasideLoaded ifTrue: [self seasideConfigApplication preferenceAt: #password put: administratorPassword].
portNumberExtendedRefresh | port | (port := self wavePortNumber) notNil ifTrue: [portNumber := port].
portNumberExtendedUpdate self wavePortNumber: portNumber.
refresh: anAspect | selector | selector := (anAspect , 'ExtendedRefresh') asSymbol. (self respondsTo: selector) ifTrue: [self perform: selector]
update: anAspect | selector | selector := (anAspect , 'ExtendedUpdate') asSymbol. (self respondsTo: selector) ifTrue: [self perform: selector]
</methods> <methods> WASettings <category>testing</category>
isSeasideLoaded ^ #{Seaside.WAComponent} isDefined
isServerTypeCGI ^self serverType == self typeCGI
isServerTypeHTTP ^self serverType == self typeHTTP
</methods> <methods> WASettings <category>private-testing</category>
isWaveLoaded ^ #{VisualWave.WaveHTTPRequestBroker} isDefined
isWaveServerDefined self isWaveLoaded ifFalse: [^false]. ^self waveServers anySatisfy: [:ea | ea class == self waveBrokerClass]
isWaveServerRunning ^self waveServer isRunning
isWebToolkitLoaded ^ #{VisualWave.HttpServlet} isDefined
</methods> <methods> WASettings <category>private-accessing</category>
seasideConfigApplication ^ self seasideDispatcher entryPoints at: 'config'.
seasideDispatcher ^ #{Seaside.WADispatcher} value default
waveBrokerClass ^(self isServerTypeHTTP ifTrue: [#{VisualWave.WaveHTTPRequestBroker}] ifFalse: [#{VisualWave.WaveIPRequestBroker}]) value
wavePortNumber ^self isWaveServerDefined ifTrue: [self waveServer port] ifFalse: [nil]
wavePortNumber: aValue | waveServer | self optionCreateServer ifTrue: [self optionCreateServer: false. ^self createServerWithPort: aValue]. self isWaveServerDefined ifFalse: [^self]. "Alter existing server (any one)" (waveServer := self waveServer) port = aValue ifTrue: [^self]. waveServer isRunning ifFalse: [waveServer port: aValue] ifTrue: [waveServer shutdown; port: aValue; start]
waveServer ^ self waveServers detect: [:ea | ea class == self waveBrokerClass]
waveServers ^self isWaveLoaded ifFalse: [#()] ifTrue: [#{VisualWave.WaveRequestBroker} value allServers].
waveServerWithPort: port ^ self waveServers detect: [:ea | ea class == self waveBrokerClass and: [ea port = port]] ifNone: [nil]
</methods> <methods> WASettings <category>initialize-release</category>
setDefaults serverType := #http. portNumber := 8008. siteName := 'seaside'. silent := false. changeTimezone := true. promptForSeasideAdministratorName := true. promptForSeasideAdministratorPassword := true. promptForHTTPServer := true. promptForSeasideSite := true. createHTTPServer := true. createSeasideSite := true. administratorName := 'admin'. administratorPassword := 'seaside'. self addDependent: self.
</methods> <methods> WASettings <category>constants</category>
typeCGI ^ #cgi
typeHTTP ^ #http
</methods> <methods> WASettings class <category>instance creation</category>
default "((( Default := nil )))" Default isNil ifTrue: [Default := super new setDefaults]. ^ Default.
new ^ self default
</methods> <methods> WASettingsPage <category>notifications</category>
accept self aspects do: [:aSymbol | self settingsAt: aSymbol put: (self aspectValueAt: aSymbol)]
reset
triggered manager triggerChannel value ifTrue: [self accept] ifFalse: [self reset]
</methods> <methods> WASettingsPage <category>aspects</category>
aspectAt: aSymbol ^ self perform: aSymbol
aspects ^#()
aspectValueAt: aSymbol ^ (self aspectAt: aSymbol) value
valueHolderForAspect: aSymbol ^ (self settingsAt: aSymbol) asValue onChangeSend: #tickle to: self
</methods> <methods> WASettingsPage <category>accessing</category>
helpText ^ self class helpText
settings ^ WASettings default
settingsAt: aSymbol ^ self settings perform: aSymbol
settingsAt: aSymbol put: aValue ^ self settings perform: (aSymbol , ':') asSymbol with: aValue
</methods> <methods> WASettingsPage <category>initialize-release</category>
manager: aSettingsManager super manager: aSettingsManager. manager triggerChannel onChangeSend: #triggered to: self
</methods> <methods> WASettingsPage <category>interface management</category>
postBuildWith: aBuilder super postBuildWith: aBuilder.
</methods> <methods> WASettingsPage class <category>help</category>
helpItems ^ OrderedCollection new.
helpText helpText isNil ifTrue: [self helpTextInstall]. ^ helpText.
helpTextInstall | stream | stream := TextStream on: (String new: 100). self helpItems do: [:each | stream nextPutAllText: each first asText allBold; nextPutAll: ' - '. stream nextPutAll: each last] separatedBy: [stream cr; cr]. helpText := stream contents
initialize helpText := nil.
</methods> <methods> WAWebToolkitSettings <category>notifications</category>
accept super accept. self serverChanged.
serverChanged builder isNil ifFalse: [(self widgetAt: #CreateServer) isEnabled: (self settings isWaveLoaded and: [(self settings waveServerWithPort: self portNumber value) isNil])]. self optionCreateServer value: false.
</methods> <methods> WAWebToolkitSettings <category>aspects</category>
aspects "Note - optionCreateServer must come first" ^#(optionCreateServer serverType portNumber siteName)
optionCreateServer "This method was generated by UIDefiner. Any edits made here may be lost whenever methods are automatically defined. The initialization provided below may have been preempted by an initialize method." ^optionCreateServer isNil ifTrue: [optionCreateServer := false asValue] ifFalse: [optionCreateServer]
portNumber ^portNumber isNil ifTrue: [portNumber := self valueHolderForAspect: #portNumber] ifFalse: [portNumber]
serverType ^serverType isNil ifTrue: [serverType := self valueHolderForAspect: #serverType] ifFalse: [serverType]
siteName ^siteName isNil ifTrue: [siteName := self valueHolderForAspect: #siteName] ifFalse: [siteName]
</methods> <methods> WAWebToolkitSettings <category>actions</category>
createSite self accept. self settings createSite.
</methods> <methods> WAWebToolkitSettings <category>interface management</category>
postBuildWith: aBuilder super postBuildWith: aBuilder. self optionCreateServer onChangeSend: #tickle to: self. self portNumber onChangeSend: #serverChanged to: self. self serverType onChangeSend: #serverChanged to: self. (self widgetAt: #CreateSite) isEnabled: self settings isWaveLoaded. self serverChanged.
</methods> <methods> WAWebToolkitSettings class <category>help</category>
helpCreateServer ^'Check this box if you want to create a new Web server. The values you supplied for the server type and port number will be used. If this box is left unchecked, the change will apply to the existing server if there is one.'
helpCreateSite ^'Press this button if you want to create a new Seaside site. The value you supplied for the site name will be used. If a site with the same name exists already, the old site is deleted.'
helpItems ^ super helpItems add: (Array with: 'Server type' with: self helpServerType); add: (Array with: 'Port' with: self helpPortNumber); add: (Array with: 'Create a new server' with: self helpCreateServer); add: (Array with: 'Site name' with: self helpSiteName); add: (Array with: 'Create a site' with: self helpCreateSite); yourself.
helpPortNumber ^ 'You need to supply the TCP/IP port number to listen in order to receive requests from the Web. When running WebToolkit as a standalone HTTP server, the usual port number is 80. When running as a backend application server, the usual port number is 2223'
helpServerType ^ 'WebToolkit can be deployed either as a standalone Opentalk based HTTP server or as a backend application server running behind a Web server like Microsoft IIS or Apache. Select HTTP to run as a standalone Opentalk based HTTP server. Select CGI to run as a backend application server.'
helpSiteName ^ 'You need to define a WebToolkit site to process Web requests through Seaside. You may want to define the Seaside site using the regular webtools.ini file.'
</methods> <methods> WAAdministratorSettings <category>aspects</category>
administratorName ^administratorName isNil ifTrue: [administratorName := self valueHolderForAspect: #administratorName] ifFalse: [administratorName]
administratorPassword ^administratorPassword isNil ifTrue: [administratorPassword := self valueHolderForAspect: #administratorPassword] ifFalse: [administratorPassword]
aspects ^#(administratorName administratorPassword)
</methods> <methods> WAAdministratorSettings class <category>help</category>
helpItems ^ super helpItems add: (Array with: 'Name' with: self helpName); add: (Array with: 'Password' with: self helpPassword); yourself.
helpName ^ 'You need to supply the name of the Seaside administrator. Only the Seaside administrator may use the Seaside configuration application'
helpPassword ^ 'You need to supply a password for the Seaside administrator. Only the Seaside administrator may use the Seaside configuration application'
</methods> <methods> WAInstallationSettings <category>aspects</category>
aspects ^#(promptForSeasideAdministratorPassword promptForSeasideAdministratorName promptForHTTPServer promptForSeasideSite createHTTPServer createSeasideSite silent changeTimezone)
changeTimezone ^changeTimezone isNil ifTrue: [changeTimezone := self valueHolderForAspect: #changeTimezone] ifFalse: [changeTimezone]
createHTTPServer ^createHTTPServer isNil ifTrue: [createHTTPServer := self valueHolderForAspect: #createHTTPServer] ifFalse: [createHTTPServer]
createSeasideSite ^createSeasideSite isNil ifTrue: [createSeasideSite := self valueHolderForAspect: #createSeasideSite] ifFalse: [createSeasideSite]
promptForHTTPServer ^promptHTTPServerCreation isNil ifTrue: [promptHTTPServerCreation := self valueHolderForAspect: #promptForHTTPServer] ifFalse: [promptHTTPServerCreation]
promptForSeasideAdministratorName ^promptAdministratorName isNil ifTrue: [promptAdministratorName := self valueHolderForAspect: #promptForSeasideAdministratorName] ifFalse: [promptAdministratorName]
promptForSeasideAdministratorPassword ^promptAdministratorPassword isNil ifTrue: [promptAdministratorPassword := self valueHolderForAspect: #promptForSeasideAdministratorPassword] ifFalse: [promptAdministratorPassword]
promptForSeasideSite ^promptSeasideSiteCreation isNil ifTrue: [promptSeasideSiteCreation := self valueHolderForAspect: #promptForSeasideSite] ifFalse: [promptSeasideSiteCreation]
silent "This method was generated by UIDefiner. Any edits made here may be lost whenever methods are automatically defined. The initialization provided below may have been preempted by an initialize method." ^silent isNil ifTrue: [silent := self valueHolderForAspect: #silent] ifFalse: [silent]
</methods> <methods> WAInstallationSettings <category>interface management</category>
postBuildWith: aBuilder super postBuildWith: aBuilder. self silent onChangeSend: #silentChanged to: self. self promptForHTTPServer onChangeSend: #promptForHTTPServerChanged to: self. self promptForSeasideSite onChangeSend: #promptForSeasideSiteChanged to: self. self silentChanged.
</methods> <methods> WAInstallationSettings <category>notifications</category>
promptForHTTPServerChanged | aBoolean | aBoolean := self promptForHTTPServer value. #(createHTTPServer) do: [ :each | (self widgetAt: each) isEnabled: aBoolean not ].
promptForSeasideSiteChanged | aBoolean | aBoolean := self promptForSeasideSite value. #(createSeasideSite) do: [ :each | (self widgetAt: each) isEnabled: aBoolean not ].
silentChanged | aBoolean | aBoolean := self silent value. #(promptAdminPassword promptAdminName promptHTTPServer promptSeasideSite) do: [ :each | (self widgetAt: each) isEnabled: aBoolean not ]. #(createHTTPServer createSeasideSite) do: [ :each | (self widgetAt: each) isEnabled: aBoolean]. aBoolean ifFalse: [self promptForHTTPServerChanged. self promptForSeasideSiteChanged].
</methods> <methods> WAInstallationSettings class <category>help</category>
helpAdminName ^ 'Check this box if you want to be prompted for the Seaside administrator name during Seaside installation. If you leave this box unchecked, the name defined in the Administrator page will be silently used.'.
helpAdminPassword ^ 'Check this box if you want to be prompted for the Seaside administrator password during Seaside installation. If you leave this box unchecked, the password defined in the Administrator page will be silently used.'.
helpCreateServer ^ 'Check this box if you want the creation of an HTTP server to occur automatically during Seaside installation. If you check this box, the settings defined in the Seaside main page will be silently used.'.
helpCreateSite ^ 'Check this box if you want the creation of Seaside Web site to occur automatically during Seaside installation. If you check this box, the settings defined in the Seaside main page will be silently used.'.
helpItems ^ super helpItems add: (Array with: 'Warning' with: self helpWarning); add: (Array with: 'Silent' with: self helpSilent); add: (Array with: 'Change time zone' with: self helpTimezone); add: (Array with: 'Create an HTTP server' with: self helpCreateServer); add: (Array with: 'Create a Seaside site' with: self helpCreateSite); add: (Array with: 'Prompt for administrator name' with: self helpAdminName); add: (Array with: 'Prompt for administrator password' with: self helpAdminPassword); add: (Array with: 'Prompt for HTTP server creation' with: self helpServer); add: (Array with: 'Prompt for Seaside site creation' with: self helpSite); yourself.
helpServer ^ 'Check this box if you want to be prompted during Seaside installation for the creation of an HTTP server. If you leave this box unchecked, the settings defined in the Seaside main page will be silently used.'.
helpSilent ^ 'Check this box if you want Seaside to load without any prompt. This is suitable for building a Seaside image in a fully unattended mode.'
helpSite ^ 'Check this box if you want to be prompted during Seaside installation for the creation of a Seaside Web site. If you leave this box unchecked, the settings defined in the Seaside main page will be silently used.'.
helpTimezone ^ 'Uncheck this box if you want to leave the Time Zone unchanged during Seaside installation. Check this box if you want the Time Zone to be set during Seaside installation.'.
helpWarning ^ 'The settings presented here are intended to be set prior to loading the Seaside software into your VisualWorks image. These settings will be used for automatically configuring the image during Seaside installation. By using these settings appropriately, the Seaside installation can be made completely unattended.'.
</methods> <methods> WAWebToolkitSettings class <category>interface specs</category>
windowSpec "Tools.UIPainter new openOnClass: self andSelector: #windowSpec" <resource: #canvas> ^#(#{UI.FullSpec} #window: #(#{UI.WindowSpec} #label: 'Seaside settings' #bounds: #(#{Graphics.Rectangle} 640 512 944 720 ) ) #component: #(#{UI.SpecCollection} #collection: #( #(#{UI.LabelSpec} #layout: #(#{Core.Point} 3 57 ) #name: #LabelPort #label: 'Port:' ) #(#{UI.LabelSpec} #layout: #(#{Core.Point} 3 5 ) #name: #LabelServerType #label: 'Server type:' ) #(#{UI.RadioButtonSpec} #layout: #(#{Core.Point} 94 5 ) #name: #RadioButtonHTTP #model: #serverType #label: 'HTTP server' #select: #http ) #(#{UI.RadioButtonSpec} #layout: #(#{Core.Point} 94 29 ) #name: #RadioButtonCGI #model: #serverType #label: 'CGI' #select: #cgi ) #(#{UI.InputFieldSpec} #layout: #(#{Graphics.Rectangle} 94 57 150 80 ) #name: #PortNumber #model: #portNumber #type: #number #formatString: '0' ) #(#{UI.LabelSpec} #layout: #(#{Core.Point} 3 144 ) #name: #LabelSiteName #label: 'Site name:' ) #(#{UI.InputFieldSpec} #layout: #(#{Graphics.Rectangle} 94 144 194 167 ) #name: #SiteName #model: #siteName ) #(#{UI.ActionButtonSpec} #layout: #(#{Graphics.Rectangle} 199 144 280 167 ) #name: #CreateSite #model: #createSite #label: 'Create a site' #defaultable: true ) #(#{UI.CheckBoxSpec} #layout: #(#{Core.Point} 165 58 ) #name: #CreateServer #model: #optionCreateServer #label: 'Create a new server' ) ) ) )
</methods> <methods> WAAdministratorSettings class <category>interface specs</category>
windowSpec "Tools.UIPainter new openOnClass: self andSelector: #windowSpec" <resource: #canvas> ^#(#{UI.FullSpec} #window: #(#{UI.WindowSpec} #label: 'Seaside settings' #bounds: #(#{Graphics.Rectangle} 640 512 888 664 ) ) #component: #(#{UI.SpecCollection} #collection: #( #(#{UI.LabelSpec} #layout: #(#{Core.Point} 3 5 ) #name: #LabelName #label: 'Name:' ) #(#{UI.LabelSpec} #layout: #(#{Core.Point} 3 34 ) #name: #LabelPassword #label: 'Password:' ) #(#{UI.InputFieldSpec} #layout: #(#{Graphics.Rectangle} 84 5 184 28 ) #name: #AdministratorName #model: #administratorName ) #(#{UI.InputFieldSpec} #layout: #(#{Graphics.Rectangle} 84 34 184 57 ) #name: #AdministratorPassword #model: #administratorPassword ) ) ) )
</methods> <methods> WAInstallationSettings class <category>interface specs</category>
windowSpec "Tools.UIPainter new openOnClass: self andSelector: #windowSpec" <resource: #canvas> ^#(#{UI.FullSpec} #window: #(#{UI.WindowSpec} #label: 'Seaside settings' #bounds: #(#{Graphics.Rectangle} 640 512 860 712 ) ) #component: #(#{UI.SpecCollection} #collection: #( #(#{UI.CheckBoxSpec} #layout: #(#{Core.Point} 7 4 ) #name: #silent #model: #silent #label: 'Silent' ) #(#{UI.CheckBoxSpec} #layout: #(#{Core.Point} 27 121 ) #name: #promptAdminName #model: #promptForSeasideAdministratorName #label: 'Prompt for administrator name' ) #(#{UI.CheckBoxSpec} #layout: #(#{Core.Point} 27 144 ) #name: #promptAdminPassword #model: #promptForSeasideAdministratorPassword #label: 'Prompt for administrator password' ) #(#{UI.CheckBoxSpec} #layout: #(#{Core.Point} 27 166 ) #name: #promptHTTPServer #model: #promptForHTTPServer #label: 'Prompt for HTTP server creation' ) #(#{UI.CheckBoxSpec} #layout: #(#{Core.Point} 27 188 ) #name: #promptSeasideSite #model: #promptForSeasideSite #label: 'Prompt for Seaside site creation' ) #(#{UI.LabelSpec} #layout: #(#{Core.Point} 6 51 ) #name: #DuringSeasideInstallation #label: 'During Seaside installation:' ) #(#{UI.CheckBoxSpec} #layout: #(#{Core.Point} 7 27 ) #name: #changeTimezone #model: #changeTimezone #label: 'Change time zone' ) #(#{UI.CheckBoxSpec} #layout: #(#{Core.Point} 27 76 ) #name: #createHTTPServer #model: #createHTTPServer #label: 'Create an HTTP server' ) #(#{UI.CheckBoxSpec} #layout: #(#{Core.Point} 27 98 ) #name: #createSeasideSite #model: #createSeasideSite #label: 'Create a Seaside site' ) ) ) )
</methods> <methods> Tools.VisualWorksSettings class <category>seaside</category>
seasideAdministratorPage <settingsPage: #(seaside admin)> ^WAAdministratorSettings new label: #Seaside<< #labels >> 'Administrator'; icon: (ListIconLibrary visualFor: #seasideStar); yourself
seasideInstallationPage <settingsPage: #(seaside install)> ^WAInstallationSettings new label: #Seaside<< #labels >> 'Installation'; icon: (ListIconLibrary visualFor: #seasideStar); yourself
seasidePage <settingsPage: #(seaside)> ^WAWebToolkitSettings new label: #Seaside<< #labels >> 'Seaside'; icon: (ListIconLibrary visualFor: #seasideSun); yourself
</methods> <methods> Tools.ListIconLibrary class <category>resources</category>
seasideStar16x16 "UIMaskEditor new openOnClass: self andSelector: #seasideStar16x16" <resource: #image> ^CachedImage on: (Image extent: 16@16 depth: 6 bitsPerPixel: 8 palette: (Graphics.MappedPalette withColors: (#(#(#{Graphics.ColorValue} #scaledRed:scaledGreen:scaledBlue: #(6746 7163 7773)) #(#{Graphics.ColorValue} #scaledRed:scaledGreen:scaledBlue: #(3437 3533 3630)) #(#{Graphics.ColorValue} #scaledRed:scaledGreen:scaledBlue: #(1253 1349 1478)) #(#{Graphics.ColorValue} #scaledRed:scaledGreen:scaledBlue: #(6007 6296 6617)) #(#{Graphics.ColorValue} #scaledRed:scaledGreen:scaledBlue: #(7516 7645 7838)) #(#{Graphics.ColorValue} #scaledRed:scaledGreen:scaledBlue: #(2024 2441 3212)) #(#{Graphics.ColorValue} #scaledRed:scaledGreen:scaledBlue: #(932 996 1188)) #(#{Graphics.ColorValue} #scaledRed:scaledGreen:scaledBlue: #(7259 7516 7902)) #(#{Graphics.ColorValue} #scaledRed:scaledGreen:scaledBlue: #(6296 6778 7484)) #(#{Graphics.ColorValue} #scaledRed:scaledGreen:scaledBlue: #(6392 6713 7292)) #(#{Graphics.ColorValue} #scaledRed:scaledGreen:scaledBlue: #(6071 6167 5878)) #(#{Graphics.ColorValue} #scaledRed:scaledGreen:scaledBlue: #(6071 6071 5975)) #(#{Graphics.ColorValue} #scaledRed:scaledGreen:scaledBlue: #(3212 3148 2955)) #(#{Graphics.ColorValue} #scaledRed:scaledGreen:scaledBlue: #(4818 5236 5621)) #(#{Graphics.ColorValue} #scaledRed:scaledGreen:scaledBlue: #(5846 6360 7709)) #(#{Graphics.ColorValue} #scaledRed:scaledGreen:scaledBlue: #(6681 6553 6199)) #(#{Graphics.ColorValue} #scaledRed:scaledGreen:scaledBlue: #(7227 7195 7131)) #(#{Graphics.ColorValue} #scaledRed:scaledGreen:scaledBlue: #(6360 6970 7902)) #(#{Graphics.ColorValue} #scaledRed:scaledGreen:scaledBlue: #(6232 6328 6392)) #(#{Graphics.ColorValue} #scaledRed:scaledGreen:scaledBlue: #(7067 6039 3244)) #(#{Graphics.ColorValue} #scaledRed:scaledGreen:scaledBlue: #(4626 4722 4722)) #(#{Graphics.ColorValue} #scaledRed:scaledGreen:scaledBlue: #(7452 7581 7677)) #(#{Graphics.ColorValue} #scaledRed:scaledGreen:scaledBlue: #(8030 8063 8095)) #(#{Graphics.ColorValue} #scaledRed:scaledGreen:scaledBlue: #(8063 7902 7902)) #(#{Graphics.ColorValue} #scaledRed:scaledGreen:scaledBlue: #(4593 4465 3726)) #(#{Graphics.ColorValue} #scaledRed:scaledGreen:scaledBlue: #(6746 6553 5846)) #(#{Graphics.ColorValue} #scaledRed:scaledGreen:scaledBlue: #(7516 7645 8063)) #(#{Graphics.ColorValue} #scaledRed:scaledGreen:scaledBlue: #(6681 6424 5396)) #(#{Graphics.ColorValue} #scaledRed:scaledGreen:scaledBlue: #(2313 2473 2795)) #(#{Graphics.ColorValue} #scaledRed:scaledGreen:scaledBlue: #(7259 7581 8063)) #(#{Graphics.ColorValue} #scaledRed:scaledGreen:scaledBlue: #(6938 6906 6617)) #(#{Graphics.ColorValue} #scaledRed:scaledGreen:scaledBlue: #(6167 6617 7356)) #(#{Graphics.ColorValue} #scaledRed:scaledGreen:scaledBlue: #(5653 5461 4626)) #(#{Graphics.ColorValue} #scaledRed:scaledGreen:scaledBlue: #(5557 5910 5910)) #(#{Graphics.ColorValue} #scaledRed:scaledGreen:scaledBlue: #(6970 7227 7420)) #(#{Graphics.ColorValue} #scaledRed:scaledGreen:scaledBlue: #(4272 4272 4272)) #(#{Graphics.ColorValue} #scaledRed:scaledGreen:scaledBlue: #(5172 5621 6264)) #(#{Graphics.ColorValue} #scaledRed:scaledGreen:scaledBlue: #(4979 4947 4850)) #(#{Graphics.ColorValue} #scaledRed:scaledGreen:scaledBlue: #(5718 5653 5525)) #(#{Graphics.ColorValue} #scaledRed:scaledGreen:scaledBlue: #(6874 7003 6938)) #(#{Graphics.ColorValue} #scaledRed:scaledGreen:scaledBlue: #(6264 6264 6007)) #(#{Graphics.ColorValue} #scaledRed:scaledGreen:scaledBlue: #(3565 3887 4401)) #(#{Graphics.ColorValue} #scaledRed:scaledGreen:scaledBlue: #(6392 6874 7067)) #(#{Graphics.ColorValue} #scaledRed:scaledGreen:scaledBlue: #(5332 5332 5268)) #(#{Graphics.ColorValue} #scaledRed:scaledGreen:scaledBlue: #(8191 8191 8191)) #(#{Graphics.ColorValue} #scaledRed:scaledGreen:scaledBlue: #(7484 7484 7324)) #(#{Graphics.ColorValue} #scaledRed:scaledGreen:scaledBlue: #(6713 6199 4979)) #(#{Graphics.ColorValue} #scaledRed:scaledGreen:scaledBlue: #(7227 7452 7452)) #(#{Graphics.ColorValue} #scaledRed:scaledGreen:scaledBlue: #(6810 7292 8030)) #(#{Graphics.ColorValue} #scaledRed:scaledGreen:scaledBlue: #(3919 3887 3726)) #(#{Graphics.ColorValue} #scaledRed:scaledGreen:scaledBlue: #(2056 2184 2409)) #(#{Graphics.ColorValue} #scaledRed:scaledGreen:scaledBlue: #(7324 7324 7324)) #(#{Graphics.ColorValue} #scaledRed:scaledGreen:scaledBlue: #(6296 6617 6778)) #(#{Graphics.ColorValue} #scaledRed:scaledGreen:scaledBlue: #(5910 6392 7227)) #(#{Graphics.ColorValue} #scaledRed:scaledGreen:scaledBlue: #(3565 3598 3726)) #(#{Graphics.ColorValue} #scaledRed:scaledGreen:scaledBlue: #(7773 7902 8095)) #(#{Graphics.ColorValue} #scaledRed:scaledGreen:scaledBlue: #(6810 7067 7613)) #(#{Graphics.ColorValue} #scaledRed:scaledGreen:scaledBlue: #(7677 7773 7838)) #(#{Graphics.ColorValue} #scaledRed:scaledGreen:scaledBlue: #(6617 7003 7549)) #(#{Graphics.ColorValue} #scaledRed:scaledGreen:scaledBlue: #(4272 4722 5332)) #(#{Graphics.ColorValue} #scaledRed:scaledGreen:scaledBlue: #(6553 6842 7452)) #(#{Graphics.ColorValue} #scaledRed:scaledGreen:scaledBlue: #(1702 1767 1895)) #(#{Graphics.ColorValue} #scaledRed:scaledGreen:scaledBlue: #(3116 3212 3276)) ) collect: [:each | (each at: 1) value perform: (each at: 2) withArguments: (each at: 3)])) usingBits: (ByteArray fromPackedString: 'E!XVE!XVE"@(LQXVE!XVE!XVE!XVE!X F DVE!XVE!XVE!XVE!XYG"H2E!XVE!XVFA +E!XVF@PIA!XVE!XVE",DNP,1DA,ZMPHVE!XVE!X%EAT9M24VNBHAI"8.FQ8VE!HLD#0GE PWE"H*MS(IO!XVE!0PEQXVF @LA<MG@DVE!X(B!XDE!X-CSHB@Q@VE!XVD1(_I2H]GPXVE!XVE!XVD2(5MBD/LADBE!XVE!XVC28NIC4BEC\0AQXVE!XVE 0QJPX+E"L''M3,/E!XVE!X2A X/E!XVM#\CM!XVE!XVE!XVE!XVE!X%@34VE!XVE!XVE!XVE!XVB34#E!XVE @a'))
seasideStar16x16mask "UIMaskEditor new openOnClass: self andSelector: #seasideStar16x16mask" <resource: #image> ^CachedImage on: (Image extent: 16@16 depth: 1 bitsPerPixel: 1 palette: CoveragePalette monoMaskPalette usingBits: #[1 192 0 0 1 192 0 0 3 192 0 0 227 192 0 0 255 192 0 0 255 254 0 0 127 255 0 0 31 255 0 0 31 254 0 0 31 224 0 0 63 224 0 0 127 240 0 0 125 240 0 0 120 240 0 0 0 112 0 0 0 112 0 0])
seasideSun16x16 "UIMaskEditor new openOnClass: self andSelector: #seasideSun16x16" <resource: #image> ^CachedImage on: (Image extent: 16@16 depth: 8 bitsPerPixel: 8 palette: (Graphics.MappedPalette withColors: (#(#(#{Graphics.ColorValue} #scaledRed:scaledGreen:scaledBlue: #(7195 7163 7163)) #(#{Graphics.ColorValue} #scaledRed:scaledGreen:scaledBlue: #(2249 3212 5139)) #(#{Graphics.ColorValue} #scaledRed:scaledGreen:scaledBlue: #(6071 6071 6071)) #(#{Graphics.ColorValue} #scaledRed:scaledGreen:scaledBlue: #(2505 3501 5589)) #(#{Graphics.ColorValue} #scaledRed:scaledGreen:scaledBlue: #(7806 8191 8191)) #(#{Graphics.ColorValue} #scaledRed:scaledGreen:scaledBlue: #(8191 8191 7806)) #(#{Graphics.ColorValue} #scaledRed:scaledGreen:scaledBlue: #(321 1510 3822)) #(#{Graphics.ColorValue} #scaledRed:scaledGreen:scaledBlue: #(5364 6007 7195)) #(#{Graphics.ColorValue} #scaledRed:scaledGreen:scaledBlue: #(8191 6778 3598)) #(#{Graphics.ColorValue} #scaledRed:scaledGreen:scaledBlue: #(2184 3309 5461)) #(#{Graphics.ColorValue} #scaledRed:scaledGreen:scaledBlue: #(7163 7163 7227)) #(#{Graphics.ColorValue} #scaledRed:scaledGreen:scaledBlue: #(2345 3244 5043)) #(#{Graphics.ColorValue} #scaledRed:scaledGreen:scaledBlue: #(0 642 3373)) #(#{Graphics.ColorValue} #scaledRed:scaledGreen:scaledBlue: #(6649 6778 6810)) #(#{Graphics.ColorValue} #scaledRed:scaledGreen:scaledBlue: #(8191 7741 5300)) #(#{Graphics.ColorValue} #scaledRed:scaledGreen:scaledBlue: #(3790 4369 5461)) #(#{Graphics.ColorValue} #scaledRed:scaledGreen:scaledBlue: #(8191 6585 3148)) #(#{Graphics.ColorValue} #scaledRed:scaledGreen:scaledBlue: #(8191 5942 482)) #(#{Graphics.ColorValue} #scaledRed:scaledGreen:scaledBlue: #(8191 6842 3887)) #(#{Graphics.ColorValue} #scaledRed:scaledGreen:scaledBlue: #(8191 6874 3855)) #(#{Graphics.ColorValue} #scaledRed:scaledGreen:scaledBlue: #(8191 6296 2120)) #(#{Graphics.ColorValue} #scaledRed:scaledGreen:scaledBlue: #(8191 6521 2891)) #(#{Graphics.ColorValue} #scaledRed:scaledGreen:scaledBlue: #(6199 6199 6199)) #(#{Graphics.ColorValue} #scaledRed:scaledGreen:scaledBlue: #(2216 3276 5493)) #(#{Graphics.ColorValue} #scaledRed:scaledGreen:scaledBlue: #(7420 7549 7934)) #(#{Graphics.ColorValue} #scaledRed:scaledGreen:scaledBlue: #(6489 6521 6585)) #(#{Graphics.ColorValue} #scaledRed:scaledGreen:scaledBlue: #(8191 7035 4369)) #(#{Graphics.ColorValue} #scaledRed:scaledGreen:scaledBlue: #(6842 6874 6874)) #(#{Graphics.ColorValue} #scaledRed:scaledGreen:scaledBlue: #(3501 4112 5364)) #(#{Graphics.ColorValue} #scaledRed:scaledGreen:scaledBlue: #(8191 8191 5204)) #(#{Graphics.ColorValue} #scaledRed:scaledGreen:scaledBlue: #(6135 6071 6071)) #(#{Graphics.ColorValue} #scaledRed:scaledGreen:scaledBlue: #(8191 6649 3437)) #(#{Graphics.ColorValue} #scaledRed:scaledGreen:scaledBlue: #(8191 6585 3501)) #(#{Graphics.ColorValue} #scaledRed:scaledGreen:scaledBlue: #(8191 5782 0)) #(#{Graphics.ColorValue} #scaledRed:scaledGreen:scaledBlue: #(4465 5075 6424)) #(#{Graphics.ColorValue} #scaledRed:scaledGreen:scaledBlue: #(8191 8191 3887)) #(#{Graphics.ColorValue} #scaledRed:scaledGreen:scaledBlue: #(8191 6392 2377)) #(#{Graphics.ColorValue} #scaledRed:scaledGreen:scaledBlue: #(8191 8191 8191)) #(#{Graphics.ColorValue} #scaledRed:scaledGreen:scaledBlue: #(3405 4240 6007)) #(#{Graphics.ColorValue} #scaledRed:scaledGreen:scaledBlue: #(8191 6521 3244)) #(#{Graphics.ColorValue} #scaledRed:scaledGreen:scaledBlue: #(7484 7420 7356)) #(#{Graphics.ColorValue} #scaledRed:scaledGreen:scaledBlue: #(2473 3405 5461)) #(#{Graphics.ColorValue} #scaledRed:scaledGreen:scaledBlue: #(7870 8191 8191)) #(#{Graphics.ColorValue} #scaledRed:scaledGreen:scaledBlue: #(6970 7003 6970)) #(#{Graphics.ColorValue} #scaledRed:scaledGreen:scaledBlue: #(8191 8191 7870)) #(#{Graphics.ColorValue} #scaledRed:scaledGreen:scaledBlue: #(7356 7356 7227)) #(#{Graphics.ColorValue} #scaledRed:scaledGreen:scaledBlue: #(8191 5653 482)) #(#{Graphics.ColorValue} #scaledRed:scaledGreen:scaledBlue: #(1188 2216 4304)) #(#{Graphics.ColorValue} #scaledRed:scaledGreen:scaledBlue: #(7549 8191 8191)) #(#{Graphics.ColorValue} #scaledRed:scaledGreen:scaledBlue: #(8191 6456 2666)) #(#{Graphics.ColorValue} #scaledRed:scaledGreen:scaledBlue: #(8191 6585 3533)) #(#{Graphics.ColorValue} #scaledRed:scaledGreen:scaledBlue: #(8191 7806 2313)) #(#{Graphics.ColorValue} #scaledRed:scaledGreen:scaledBlue: #(6617 6778 6906)) #(#{Graphics.ColorValue} #scaledRed:scaledGreen:scaledBlue: #(7099 7099 7099)) #(#{Graphics.ColorValue} #scaledRed:scaledGreen:scaledBlue: #(8191 6585 3212)) #(#{Graphics.ColorValue} #scaledRed:scaledGreen:scaledBlue: #(6328 6328 6328)) #(#{Graphics.ColorValue} #scaledRed:scaledGreen:scaledBlue: #(1317 2377 4369)) #(#{Graphics.ColorValue} #scaledRed:scaledGreen:scaledBlue: #(8191 7227 4561)) #(#{Graphics.ColorValue} #scaledRed:scaledGreen:scaledBlue: #(7003 7003 6970)) #(#{Graphics.ColorValue} #scaledRed:scaledGreen:scaledBlue: #(2923 3726 5396)) #(#{Graphics.ColorValue} #scaledRed:scaledGreen:scaledBlue: #(8191 8191 7581)) #(#{Graphics.ColorValue} #scaledRed:scaledGreen:scaledBlue: #(8191 6649 3501)) #(#{Graphics.ColorValue} #scaledRed:scaledGreen:scaledBlue: #(7549 7549 7549)) #(#{Graphics.ColorValue} #scaledRed:scaledGreen:scaledBlue: #(5268 5878 6874)) #(#{Graphics.ColorValue} #scaledRed:scaledGreen:scaledBlue: #(8191 5910 610)) #(#{Graphics.ColorValue} #scaledRed:scaledGreen:scaledBlue: #(6007 6007 6007)) #(#{Graphics.ColorValue} #scaledRed:scaledGreen:scaledBlue: #(6103 6521 7388)) #(#{Graphics.ColorValue} #scaledRed:scaledGreen:scaledBlue: #(7934 8191 8191)) #(#{Graphics.ColorValue} #scaledRed:scaledGreen:scaledBlue: #(7998 8127 8191)) #(#{Graphics.ColorValue} #scaledRed:scaledGreen:scaledBlue: #(8191 6521 2987)) #(#{Graphics.ColorValue} #scaledRed:scaledGreen:scaledBlue: #(6232 6199 6264)) #(#{Graphics.ColorValue} #scaledRed:scaledGreen:scaledBlue: #(899 2184 4690)) #(#{Graphics.ColorValue} #scaledRed:scaledGreen:scaledBlue: #(8191 6456 2730)) #(#{Graphics.ColorValue} #scaledRed:scaledGreen:scaledBlue: #(7645 7838 8191)) #(#{Graphics.ColorValue} #scaledRed:scaledGreen:scaledBlue: #(7934 7902 7838)) #(#{Graphics.ColorValue} #scaledRed:scaledGreen:scaledBlue: #(4369 5107 6585)) #(#{Graphics.ColorValue} #scaledRed:scaledGreen:scaledBlue: #(8191 6585 3276)) #(#{Graphics.ColorValue} #scaledRed:scaledGreen:scaledBlue: #(8191 7773 6392)) #(#{Graphics.ColorValue} #scaledRed:scaledGreen:scaledBlue: #(7067 7292 7998)) #(#{Graphics.ColorValue} #scaledRed:scaledGreen:scaledBlue: #(8191 6681 3180)) #(#{Graphics.ColorValue} #scaledRed:scaledGreen:scaledBlue: #(6681 6681 6681)) #(#{Graphics.ColorValue} #scaledRed:scaledGreen:scaledBlue: #(8191 6521 3019)) #(#{Graphics.ColorValue} #scaledRed:scaledGreen:scaledBlue: #(8191 6456 3084)) #(#{Graphics.ColorValue} #scaledRed:scaledGreen:scaledBlue: #(8191 6456 2762)) #(#{Graphics.ColorValue} #scaledRed:scaledGreen:scaledBlue: #(8191 6489 2730)) #(#{Graphics.ColorValue} #scaledRed:scaledGreen:scaledBlue: #(8191 8191 5332)) #(#{Graphics.ColorValue} #scaledRed:scaledGreen:scaledBlue: #(2088 3276 5429)) #(#{Graphics.ColorValue} #scaledRed:scaledGreen:scaledBlue: #(6778 6810 6810)) #(#{Graphics.ColorValue} #scaledRed:scaledGreen:scaledBlue: #(8191 5878 707)) #(#{Graphics.ColorValue} #scaledRed:scaledGreen:scaledBlue: #(7998 8191 8191)) #(#{Graphics.ColorValue} #scaledRed:scaledGreen:scaledBlue: #(1895 3019 5236)) #(#{Graphics.ColorValue} #scaledRed:scaledGreen:scaledBlue: #(7356 7356 7356)) #(#{Graphics.ColorValue} #scaledRed:scaledGreen:scaledBlue: #(2505 3405 5236)) #(#{Graphics.ColorValue} #scaledRed:scaledGreen:scaledBlue: #(8191 7099 4465)) #(#{Graphics.ColorValue} #scaledRed:scaledGreen:scaledBlue: #(7741 8127 8191)) #(#{Graphics.ColorValue} #scaledRed:scaledGreen:scaledBlue: #(8191 6489 2762)) #(#{Graphics.ColorValue} #scaledRed:scaledGreen:scaledBlue: #(3276 3983 5557)) #(#{Graphics.ColorValue} #scaledRed:scaledGreen:scaledBlue: #(8191 6456 2473)) #(#{Graphics.ColorValue} #scaledRed:scaledGreen:scaledBlue: #(7163 7163 7099)) #(#{Graphics.ColorValue} #scaledRed:scaledGreen:scaledBlue: #(6039 6039 6039)) #(#{Graphics.ColorValue} #scaledRed:scaledGreen:scaledBlue: #(8191 6585 3341)) #(#{Graphics.ColorValue} #scaledRed:scaledGreen:scaledBlue: #(8191 7806 6424)) #(#{Graphics.ColorValue} #scaledRed:scaledGreen:scaledBlue: #(8191 8191 8030)) #(#{Graphics.ColorValue} #scaledRed:scaledGreen:scaledBlue: #(2184 3052 4947)) #(#{Graphics.ColorValue} #scaledRed:scaledGreen:scaledBlue: #(8191 7549 6360)) #(#{Graphics.ColorValue} #scaledRed:scaledGreen:scaledBlue: #(8191 6842 3758)) #(#{Graphics.ColorValue} #scaledRed:scaledGreen:scaledBlue: #(7741 7741 7613)) #(#{Graphics.ColorValue} #scaledRed:scaledGreen:scaledBlue: #(8191 5782 514)) #(#{Graphics.ColorValue} #scaledRed:scaledGreen:scaledBlue: #(6585 6553 6649)) #(#{Graphics.ColorValue} #scaledRed:scaledGreen:scaledBlue: #(6392 6553 6842)) #(#{Graphics.ColorValue} #scaledRed:scaledGreen:scaledBlue: #(8191 7292 2987)) #(#{Graphics.ColorValue} #scaledRed:scaledGreen:scaledBlue: #(8191 6746 3533)) #(#{Graphics.ColorValue} #scaledRed:scaledGreen:scaledBlue: #(2762 3726 5364)) #(#{Graphics.ColorValue} #scaledRed:scaledGreen:scaledBlue: #(7035 7549 8191)) #(#{Graphics.ColorValue} #scaledRed:scaledGreen:scaledBlue: #(7934 7902 7934)) #(#{Graphics.ColorValue} #scaledRed:scaledGreen:scaledBlue: #(8191 6456 2505)) #(#{Graphics.ColorValue} #scaledRed:scaledGreen:scaledBlue: #(1831 2891 4818)) #(#{Graphics.ColorValue} #scaledRed:scaledGreen:scaledBlue: #(7003 7099 7356)) #(#{Graphics.ColorValue} #scaledRed:scaledGreen:scaledBlue: #(8191 8191 7067)) #(#{Graphics.ColorValue} #scaledRed:scaledGreen:scaledBlue: #(8063 8191 8191)) #(#{Graphics.ColorValue} #scaledRed:scaledGreen:scaledBlue: #(8191 8191 8063)) #(#{Graphics.ColorValue} #scaledRed:scaledGreen:scaledBlue: #(482 1574 3855)) #(#{Graphics.ColorValue} #scaledRed:scaledGreen:scaledBlue: #(2152 3116 4947)) #(#{Graphics.ColorValue} #scaledRed:scaledGreen:scaledBlue: #(7324 7613 8191)) #(#{Graphics.ColorValue} #scaledRed:scaledGreen:scaledBlue: #(6938 6906 6970)) #(#{Graphics.ColorValue} #scaledRed:scaledGreen:scaledBlue: #(8191 5910 96)) #(#{Graphics.ColorValue} #scaledRed:scaledGreen:scaledBlue: #(8191 6521 2795)) #(#{Graphics.ColorValue} #scaledRed:scaledGreen:scaledBlue: #(2955 3983 5942)) #(#{Graphics.ColorValue} #scaledRed:scaledGreen:scaledBlue: #(6842 6874 6778)) #(#{Graphics.ColorValue} #scaledRed:scaledGreen:scaledBlue: #(932 2056 4272)) #(#{Graphics.ColorValue} #scaledRed:scaledGreen:scaledBlue: #(7356 7934 8191)) #(#{Graphics.ColorValue} #scaledRed:scaledGreen:scaledBlue: #(8191 8191 7099)) #(#{Graphics.ColorValue} #scaledRed:scaledGreen:scaledBlue: #(6489 6649 7035)) #(#{Graphics.ColorValue} #scaledRed:scaledGreen:scaledBlue: #(8191 8191 8095)) #(#{Graphics.ColorValue} #scaledRed:scaledGreen:scaledBlue: #(4882 5429 6553)) #(#{Graphics.ColorValue} #scaledRed:scaledGreen:scaledBlue: #(6874 6746 6553)) #(#{Graphics.ColorValue} #scaledRed:scaledGreen:scaledBlue: #(7099 7099 6970)) #(#{Graphics.ColorValue} #scaledRed:scaledGreen:scaledBlue: #(7099 7035 7035)) #(#{Graphics.ColorValue} #scaledRed:scaledGreen:scaledBlue: #(2634 3501 5107)) #(#{Graphics.ColorValue} #scaledRed:scaledGreen:scaledBlue: #(8191 6296 1060)) #(#{Graphics.ColorValue} #scaledRed:scaledGreen:scaledBlue: #(7356 7292 7195)) #(#{Graphics.ColorValue} #scaledRed:scaledGreen:scaledBlue: #(3630 4497 6103)) ) collect: [:each | (each at: 1) value perform: (each at: 2) withArguments: (each at: 3)])) usingBits: (ByteArray fromPackedString: 'P4MCB&(-N(!2P4MCP4MCP4MCQ%,(_F0MRTMCP4MCP4MCP05"U66BAB)1J$MCP4MCP6NIF8P0]55)D%Q(P4MCP4LMX!&B]1M3LW9HIFUCP4MCG",4AA)!TSX6SDU.P4MCP1:@S$M/T3YLSFP_VD5CP4LB G-DBAT6SD1$OV-6P4MCPS)5P4=_SFQ$L%I=P4MCP4XJ#DL9EA@_HB\.H4MCP4MJAVZF^@:KDT@!L4LOP4MCP8\\]B$, 15U 4L?WEYCP4MC"#!:\BH<!TJM@PYGP4MCP4MK^R=''N6@K P0CVTMCP4MCP1 G_0%ZE2Y^P4MCP4MCP4MCP4MCP4MCP4MCP0@a'))
seasideSun16x16mask "UIMaskEditor new openOnClass: self andSelector: #seasideSun16x16mask" <resource: #image> ^CachedImage on: (Image extent: 16@16 depth: 1 bitsPerPixel: 1 palette: CoveragePalette monoMaskPalette usingBits: #[31 128 0 0 63 128 0 0 63 224 0 0 127 240 0 0 127 248 0 0 127 248 0 0 127 252 0 0 127 252 0 0 127 252 0 0 127 248 0 0 127 254 0 0 63 254 0 0 63 254 0 0 31 254 0 0 7 248 0 0 0 0 0 0])
</methods> <initialize> WASettingsPage </initialize> "Imported Classes:" self error: 'Attempting to file-in parcel imports. Choose terminate or close' <class> <name>Model</name> <environment>UI</environment> <super>Core.Object</super> <private>false</private> none dependents <imports></imports> <category>Kernel-Objects</category> <attributes> <package>Kernel-Objects</package> </attributes> </class> <class> <name>SettingsManagerPage</name> <environment>Tools</environment> <super>UI.ApplicationModel</super> <private>false</private> none manager id position label icon children definingMethod <imports></imports> <category>Tools-Settings-UI</category> <attributes> <package>Tools-Settings</package> </attributes> </class>