'From SqueakNihongo6.1 of 17 April 2004 [latest update: #0] on 7 December 2004 at 11:49:57 am'! "Change Set: ServerTool Date: 7 December 2004 Author: Takashi Yamamiya Easy setting up tool for Super Swiki. - You can tell squeak where is the server using a dialog easily. - A 'prefs/knownServers' file for the server is made. "! Smalltalk renameClassNamed: #ServerDirectoryTool as: #ServerTool! EToyGenericDialogMorph subclass: #ServerTool instanceVariableNames: '' classVariableNames: '' poolDictionaries: '' category: 'Network-RemoteDirectory'! !ServerTool commentStamp: 'tak 12/7/2004 11:31' prior: 0! I am a simple tool to set up SuperSwiki's location. ServerTool open. --- * How to set up your Super Swiki server. - Get SuperSwiki from http://squeakland.org:8080/super/313. - Set the port of SuperSwiki and run it on your server. - Record the address of your machine. - Pick me up from 'Collaborative' category at the object browser. - Set the name as you like and the server information like '192.168.0.2:8080'. ! !ServerTool methodsFor: 'initialize-release' stamp: 'tak 12/7/2004 09:45'! buttonColor ^ self defaultBackgroundColor darker darker! ! !ServerTool methodsFor: 'initialize-release' stamp: 'tak 12/7/2004 09:45'! buttonNamed: aString action: aSymbol color: aColor help: helpString | f col | f _ SimpleButtonMorph new target: self; label: aString font: self myFont; color: aColor; actionSelector: aSymbol; setBalloonText: helpString. col _ (self inAColumn: {f}) hResizing: #spaceFill. ^col! ! !ServerTool methodsFor: 'initialize-release' stamp: 'tak 12/7/2004 09:45'! cancelButton ^self buttonNamed: 'Cancel' action: #delete color: self buttonColor help: 'Cancel this operation.'! ! !ServerTool methodsFor: 'initialize-release' stamp: 'tak 12/7/2004 09:45'! defaultBackgroundColor ^ Color r: 1.0 g: 0.806 b: 0.613! ! !ServerTool methodsFor: 'initialize-release' stamp: 'tak 12/7/2004 09:45'! okButton ^self buttonNamed: 'OK' action: #doOK color: self buttonColor help: 'Apply the name and the server setting.'! ! !ServerTool methodsFor: 'initialize-release' stamp: 'tak 12/7/2004 10:57'! rebuild self removeAllMorphs. self color: self defaultBackgroundColor. self addARow: {self lockedString: 'Super Swiki server setting'}. self addARow: {self lockedString: 'Name:'. self selectButton. self inAColumnForText: {(self genericTextFieldNamed: 'name') extent: 150 @ 20; setBalloonText: 'Give a name for the server as you like'}}. self addARow: {self lockedString: 'Server:'. self inAColumnForText: {(self genericTextFieldNamed: 'server') extent: 150 @ 20; setBalloonText: 'Please describe your server setting like "address:port. The server is removed if you make it blank."'}}. self addARow: {self okButton. self saveButton. self cancelButton}. self vResizing: #shrinkWrap; hResizing: #shrinkWrap; layoutInset: 4; useRoundedCorners. self borderWidth: 2. self borderColor: Color gray. self currentName: nil. ! ! !ServerTool methodsFor: 'initialize-release' stamp: 'tak 12/7/2004 10:04'! saveButton ^ self buttonNamed: 'Save' action: #doSave color: self buttonColor help: 'Save the server setting'! ! !ServerTool methodsFor: 'initialize-release' stamp: 'tak 12/7/2004 10:00'! selectButton ^ self buttonNamed: 'Select' action: #doSelect color: self buttonColor help: 'Select a server from current setting'! ! !ServerTool methodsFor: 'actions' stamp: 'tak 12/7/2004 09:45'! defaultServer ^ SuperSwikiServer new type: #http; server: 'localhost:8888'; directory: '/super/SuperSwikiProj'; acceptsUploads: true! ! !ServerTool methodsFor: 'actions' stamp: 'tak 12/7/2004 11:05'! doOK | name server serverString | name _ (namedFields at: 'name') contents asString withBlanksTrimmed. server _ ServerDirectory servers at: name ifAbsentPut: [self defaultServer]. serverString _ (namedFields at: 'server') contents asString withBlanksTrimmed. serverString = '' ifTrue: [ServerDirectory servers removeKey: name. name _ nil] ifFalse: [server server: serverString]. self rebuild. self currentName: name! ! !ServerTool methodsFor: 'actions' stamp: 'tak 12/7/2004 10:04'! doSave self doOK. ServerDirectory transferServerDefinitionsToExternal. self inform: 'Saved at ' , (ExternalSettings preferenceDirectory directoryNamed: ServerDirectory serverConfDirectoryName) pathName! ! !ServerTool methodsFor: 'actions' stamp: 'tak 12/7/2004 10:23'! doSelect | menu | menu _ MenuMorph new defaultTarget: self. self currentServers keysDo: [:name | menu add: name target: self selector: #currentName: argument: name]. menu popUpInWorld! ! !ServerTool methodsFor: 'accessing' stamp: 'tak 12/7/2004 11:17'! currentName: aString "Update server information. Make default if nil" | assoc | assoc _ self pickupServer: aString. (namedFields at: 'name') contentsWrapped: assoc key. (namedFields at: 'server') contentsWrapped: assoc value server! ! !ServerTool methodsFor: 'accessing' stamp: 'tak 12/7/2004 10:06'! currentServers "Pick up current SuperSwiki servers" "self basicNew currentServers" ^ ServerDirectory servers select: [:server | (server isKindOf: SuperSwikiServer) and: [server acceptsUploads]]! ! !ServerTool methodsFor: 'accessing' stamp: 'tak 12/7/2004 11:19'! pickupServer: aString "self basicNew pickupServer: nil" "self basicNew pickupServer: 'Server-BSS'" | assoc | (aString isNil and: [self currentServers size > 0]) ifTrue: [assoc _ self currentServers atRandom. ^ assoc]. (aString notNil and: [self currentServers includesKey: aString]) ifTrue: [^ aString -> (self currentServers at: aString)]. ^ 'YourServer' -> self defaultServer! ! !ServerTool class methodsFor: 'instance creation' stamp: 'tak 12/7/2004 09:45'! open ^ self new openCenteredInWorld! ! !ServerTool class methodsFor: 'parts bin' stamp: 'tak 12/7/2004 11:25'! descriptionForPartsBin ^ self partName: 'Super Swiki Setting' categories: #('Collaborative') documentation: 'A Setting panel for Super Swiki'! ! ServerTool removeSelector: #configName:server:! ServerTool removeSelector: #doSAVE! ServerTool removeSelector: #name:! ServerTool removeSelector: #setDefaultServer!