Opentalk-Tools-Console.pst 115.49 KiB
<?xml version="1.0"?>

<st-source>
<!-- 
Name: Opentalk-Tools-Console
Notice: Copyright © 2008 Cincom Systems, Inc.  All Rights Reserved.
Comment: Opentalk-Tools-Console defines a simple console for examining the state of registered brokers and creating new brokers.  Its principal intent is to remove the burden of some of the perceived complication in programmatic broker creation.
Copyright: Copyright © 2001-2002 Cincom Systems, Inc.
All Rights Reserved
DbIdentifier: bear73
DbTrace: 88202
DevelopmentPrerequisites: #(#(#any 'Opentalk-Groups' '') #(#any 'Opentalk-STST' '') #(#any 'Opentalk-Tools-Basic' ''))
PackageName: Opentalk-Tools-Console
Parcel: #('Opentalk-Tools-Console')
ParcelName: Opentalk-Tools-Console
PrerequisiteParcels: #(#('Opentalk-Groups' '') #('Opentalk-STST' '') #('Opentalk-Tools-Basic' ''))
PrintStringCache: (751 1,mkobetic)
Version: 7.6
Date: 1:02:02 pm February 1, 2008
 -->
<time-stamp>From VisualWorks®, 7.6 of February 1, 2008 on February 1, 2008 at 1:02:02 pm</time-stamp>


<do-it>(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.']</do-it>

<class>
<name>OpentalkConsoleSlice</name>
<environment>Opentalk</environment>
<super>UI.ApplicationModel</super>
<private>false</private>
<indexed-type>none</indexed-type>
<inst-vars>componentHolder triggerHolder bufferingHolder </inst-vars>
<class-inst-vars></class-inst-vars>
<imports></imports>
<category>Opentalk-Tools-Console</category>
<attributes>
<package>Opentalk-Tools-Console</package>
</attributes>
</class>

<class>
<name>BrokerCreationSlice</name>
<environment>Opentalk</environment>
<super>Opentalk.OpentalkConsoleSlice</super>
<private>false</private>
<indexed-type>none</indexed-type>
<inst-vars>model </inst-vars>
<class-inst-vars></class-inst-vars>
<imports></imports>
<category>Opentalk-Tools-Console</category>
<attributes>
<package>Opentalk-Tools-Console</package>
</attributes>
</class>

<class>
<name>BasicRequestBrokerSlice</name>
<environment>Opentalk</environment>
<super>Opentalk.OpentalkConsoleSlice</super>
<private>false</private>
<indexed-type>none</indexed-type>
<inst-vars>classSideBrokerId classSideDefaultPort errorHandling pingAddress pingPort port requestType </inst-vars>
<class-inst-vars></class-inst-vars>
<imports></imports>
<category>Opentalk-Tools-Console</category>
<attributes>
<package>Opentalk-Tools-Console</package>
</attributes>
</class>

<class>
<name>ComponentPropertiesSubcanvas</name>
<environment>Opentalk</environment>
<super>UI.ApplicationModel</super>
<private>false</private>
<indexed-type>none</indexed-type>
<inst-vars>componentHolder triggerHolder bufferingHolder sliceBuilder sliceMasterList slicesMenu slicesArray sliceData prevSliceIndex prevSliceName changingSliceSelection </inst-vars>
<class-inst-vars></class-inst-vars>
<imports></imports>
<category>Opentalk-Tools-Console</category>
<attributes>
<package>Opentalk-Tools-Console</package>
</attributes>
</class>

<class>
<name>OpentalkConsole</name>
<environment>Opentalk</environment>
<super>UI.ApplicationModel</super>
<private>false</private>
<indexed-type>none</indexed-type>
<inst-vars>componentListSubcanvas componentPropertiesSubcanvas </inst-vars>
<class-inst-vars></class-inst-vars>
<imports></imports>
<category>Opentalk-Tools-Console</category>
<attributes>
<package>Opentalk-Tools-Console</package>
</attributes>
</class>

<class>
<name>BrokerCreationBasicsSlice</name>
<environment>Opentalk</environment>
<super>Opentalk.BrokerCreationSlice</super>
<private>false</private>
<indexed-type>none</indexed-type>
<inst-vars>adaptorSoReuseAddr adaptorTypeList bindingNamed bindingNamedList brokerId brokerTypeList marshalerTypeList netmask port transportSoReuseAddr transportTypeList </inst-vars>
<class-inst-vars></class-inst-vars>
<imports></imports>
<category>Opentalk-Tools-Console</category>
<attributes>
<package>Opentalk-Tools-Console</package>
</attributes>
</class>

<class>
<name>OpentalkConfigurationParameters</name>
<environment>Opentalk</environment>
<super>UI.Model</super>
<private>false</private>
<indexed-type>none</indexed-type>
<inst-vars>adaptorSoReuseAddr adaptorType bindingNamed brokerId brokerType connectingTimeout connectionTimeout listenerBacklog listenerPriority marshalerExceptionPrinter marshalerType marshalingBufferSize netmask persist port readWriteBufferSize requestTimeout serverPriority stopOnError transportExceptionPrinter transportSoReuseAddr transportType workerPriority </inst-vars>
<class-inst-vars>default </class-inst-vars>
<imports></imports>
<category>Opentalk-Tools-Console</category>
<attributes>
<package>Opentalk-Tools-Console</package>
</attributes>
</class>

<class>
<name>RequestBrokerSlice</name>
<environment>Opentalk</environment>
<super>Opentalk.OpentalkConsoleSlice</super>
<private>false</private>
<indexed-type>none</indexed-type>
<inst-vars>openSelectorsList openSelectorsListSH currentOpenSelector servicesList servicesListSH currentServiceId serviceCreationExpression </inst-vars>
<class-inst-vars></class-inst-vars>
<imports></imports>
<category>Opentalk-Tools-Console</category>
<attributes>
<package>Opentalk-Tools-Console</package>
</attributes>
</class>

<class>
<name>BasicAdaptorSlice</name>
<environment>Opentalk</environment>
<super>Opentalk.OpentalkConsoleSlice</super>
<private>false</private>
<indexed-type>none</indexed-type>
<inst-vars>port localAddress accessAddress </inst-vars>
<class-inst-vars></class-inst-vars>
<imports></imports>
<category>Opentalk-Tools-Console</category>
<attributes>
<package>Opentalk-Tools-Console</package>
</attributes>
</class>

<class>
<name>BrokerCreationDetailsSlice</name>
<environment>Opentalk</environment>
<super>Opentalk.BrokerCreationSlice</super>
<private>false</private>
<indexed-type>none</indexed-type>
<inst-vars>connectingTimeout connectionTimeout listenerBacklog listenerPriority marshalerExceptionPrinter marshalingBufferSize persist readWriteBufferSize requestTimeout serverPriority stopOnError transportExceptionPrinter workerPriority </inst-vars>
<class-inst-vars></class-inst-vars>
<imports></imports>
<category>Opentalk-Tools-Console</category>
<attributes>
<package>Opentalk-Tools-Console</package>
</attributes>
</class>

<methods>
<class-id>Opentalk.OpentalkConsoleSlice</class-id> <category>initialize-release</category>

<body package="Opentalk-Tools-Console" selector="initialize">initialize

	componentHolder := ValueHolder new.
	triggerHolder := ValueHolder new.
	bufferingHolder := false asValue.
	super initialize</body>

<body package="Opentalk-Tools-Console" selector="noticeOfWindowClose:">noticeOfWindowClose: aWindow

	self release.
	^super noticeOfWindowClose: aWindow</body>

<body package="Opentalk-Tools-Console" selector="release">release

	( componentHolder notNil )
		ifTrue:	[ componentHolder retractInterestsFor: self ].
	componentHolder := triggerHolder := bufferingHolder  := nil.
	^super release</body>
</methods>

<methods>
<class-id>Opentalk.OpentalkConsoleSlice</class-id> <category>accessing</category>

<body package="Opentalk-Tools-Console" selector="bufferingHolder">bufferingHolder

	^bufferingHolder</body>

<body package="Opentalk-Tools-Console" selector="bufferingHolder:">bufferingHolder: aValueModel

	bufferingHolder := aValueModel</body>

<body package="Opentalk-Tools-Console" selector="componentHolder">componentHolder

	^componentHolder</body>

<body package="Opentalk-Tools-Console" selector="componentHolder:">componentHolder: aValueModel

	( componentHolder notNil )
		ifTrue:	[ componentHolder retractInterestsFor: self ].
	componentHolder := aValueModel.
	componentHolder onChangeSend: #changedComponent to: self</body>

<body package="Opentalk-Tools-Console" selector="triggerHolder">triggerHolder

	^triggerHolder</body>

<body package="Opentalk-Tools-Console" selector="triggerHolder:">triggerHolder: aValueHolder

	triggerHolder := aValueHolder</body>
</methods>

<methods>
<class-id>Opentalk.OpentalkConsoleSlice</class-id> <category>update</category>

<body package="Opentalk-Tools-Console" selector="changedComponent">changedComponent
	"... intentionally empty."</body>
</methods>

<methods>
<class-id>Opentalk.OpentalkConsoleSlice</class-id> <category>display state management</category>

<body package="Opentalk-Tools-Console" selector="nowBuffering">nowBuffering

	self bufferingHolder value: true</body>
</methods>

<methods>
<class-id>Opentalk.OpentalkConsoleSlice</class-id> <category>setup</category>

<body package="Opentalk-Tools-Console" selector="postBuild">postBuild
	"... intentionally empty."</body>
</methods>

<methods>
<class-id>Opentalk.BrokerCreationSlice</class-id> <category>api</category>

<body package="Opentalk-Tools-Console" selector="createAdaptorConfiguration">createAdaptorConfiguration

	| ac |

	ac := AdaptorConfiguration perform: ( model adaptorType ).
	ac accessPointPort: ( model port ).
	ac transport: self createTransportConfiguration.
	ac requestDispatcher: self createRequestDispatcherConfiguration.
	( ac class == ConnectionAdaptorConfiguration )
		ifTrue:	[	ac listenerPriority: ( model listenerPriority ).
					ac connectingTimeout: ( model connectingTimeout ).
					ac connectionTimeout: ( model connectionTimeout ).
					ac listenerBacklog: ( model listenerBacklog ).	
					ac soReuseAddr: ( model adaptorSoReuseAddr )			
				].

	^ac</body>

<body package="Opentalk-Tools-Console" selector="createBroker">createBroker

	self validateConfigurationAndCreateBroker</body>

<body package="Opentalk-Tools-Console" selector="createBrokerConfiguration">createBrokerConfiguration

	| bc |

	bc := BrokerConfiguration perform: ( model brokerType ).
	bc requestTimeout: ( model requestTimeout ).
	bc adaptor: self createAdaptorConfiguration.
	^bc</body>

<body package="Opentalk-Tools-Console" selector="createBrokerFromConfiguration">createBrokerFromConfiguration

	| id bc bkr |

	id := model brokerId.
	bc := self createBrokerConfiguration.
	bkr := bc newAtPort: ( model port ).
	( OpentalkSystem componentRegistry keys includes: id )
		ifTrue:	[ ( Dialog confirm: (#BrokerAlreadyRegisteredOverWriteQuery &lt;&lt; #opentalktools &gt;&gt; 'A broker is already registered under the provided key.  Are you sure you want to overwrite it?') )
					ifTrue:	[
						(OpentalkSystem componentAtId: id) stop.
						OpentalkSystem deregisterId: id ]
					ifFalse:	[ ^nil ]
				].
	OpentalkSystem registerComponent: bkr atId: id.
	[ self builder window model componentListSubcanvas updateList ]
		on:	Error
		do:	[ :ex ]</body>

<body package="Opentalk-Tools-Console" selector="createMarshalerConfiguration">createMarshalerConfiguration

	| mc type |


	type := model marshalerType.
	mc := MarshalerConfiguration perform: type.
	mc bufferSize: ( model marshalingBufferSize ).

	type = #xml ifTrue: [
			mc mapNamed: model bindingNamed ].

	type = #soap ifTrue: [ | mep |
			mc bindingNamed: model bindingNamed.
			mep := model marshalerExceptionPrinter.
			mep notNil ifTrue: [ mc perform: mep ] ].

	^mc</body>

<body package="Opentalk-Tools-Console" selector="createRequestDispatcherConfiguration">createRequestDispatcherConfiguration

	^StandardRequestDispatcherConfiguration new
		workerPriority: model workerPriority
		yourself</body>

<body package="Opentalk-Tools-Console" selector="createTransportConfiguration">createTransportConfiguration

	| tc |


	tc := TransportConfiguration perform: ( model transportType ).
	tc bufferSize: ( model readWriteBufferSize ).
	tc serverPriority: ( model serverPriority ).
	tc marshaler: self createMarshalerConfiguration.

	#{DatagramTransportConfiguration}
		ifDefinedDo:	[ :c | ( tc class isKindOf: c )
							ifTrue: [ tc soReuseAddr: ( model transportSoReuseAddr ) ] ].

	#{BcastTransportConfiguration}
		ifDefinedDo:	[ :c | ( tc class == c )
							ifTrue: [ tc netmask: ( model netmask ) ] ].

	#{HTTPTransportConfiguration}
		ifDefinedDo:	[ :c | ( tc class == c )
							ifTrue: [	| tep |
									tep := model transportExceptionPrinter.
									tc persist: ( model persist ).
									tc stopOnError: ( model stopOnError ).
									( tep notNil )
										ifTrue:	[ tc perform: tep ] ] ].

	^tc</body>

<body package="Opentalk-Tools-Console" selector="validateConfigurationAndCreateBroker">validateConfigurationAndCreateBroker

	| msg |

	"------- the basic checks -------"
	( model brokerType isNil )
		ifTrue: [ msg := (#BrokerTypeNeeded &lt;&lt; #opentalktools &gt;&gt; 'You must select a broker type.') ].
	( model adaptorType isNil )
		ifTrue: [ msg := (#AdaptorTypeNeeded &lt;&lt; #opentalktools &gt;&gt; 'You must select an adaptor type.') ].
	( model transportType isNil )
		ifTrue: [ msg := (#TransportTypeNeeded &lt;&lt; #opentalktools &gt;&gt; 'You must select a transport type.') ].
	( model marshalerType isNil )
		ifTrue: [ msg := (#MarshalerTypeNeeded &lt;&lt; #opentalktools &gt;&gt; 'You must select a marshaler type.') ].
	( model brokerId isNil )
		ifTrue: [ msg := (#BrokerIdNeeded &lt;&lt; #opentalktools &gt;&gt; 'You must select a broker id under which the broker will be registered.') ].
	( model port isNil )
		ifTrue: [ msg := (#PortNumberNeeded &lt;&lt; #opentalktools &gt;&gt; 'You must select a port number.') ].
	( model marshalerType == #soap and: [ model bindingNamed == nil ] )
		ifTrue: [ msg := (#SOAPBindingNeeded &lt;&lt; #opentalktools &gt;&gt; 'You must select a SOAP binding.') ].
	( model marshalerType == #xml and: [ model bindingNamed == nil ] )
		ifTrue:	[ msg :=
(#XMLBindingNeeded &lt;&lt; #opentalktools &gt;&gt; 'You must select an XML binding.  If the ''binding'' list is empty, 
then register an XML binding in XMLOperationMap first.') ].

	"------- the detail checks -------"
	( msg notNil )
		ifTrue:	[	self changeSliceSelectionTo: 1. 
					^Dialog warn: msg
				].
	 ( model requestTimeout notNil and: [ model requestTimeout &lt;= 0 ] )
		ifTrue: [ ^Dialog warn: (#RequestTimeoutNeeded &lt;&lt; #opentalktools &gt;&gt; 'The request timeout must be greater than zero.') ].

	"... more checks need to be added."

	self createBrokerFromConfiguration</body>
</methods>

<methods>
<class-id>Opentalk.BrokerCreationSlice</class-id> <category>accessing</category>

<body package="Opentalk-Tools-Console" selector="model">model

	^model</body>

<body package="Opentalk-Tools-Console" selector="model:">model: anOpentalkConfigurationParameters

	model := anOpentalkConfigurationParameters</body>
</methods>

<methods>
<class-id>Opentalk.BrokerCreationSlice</class-id> <category>list generation data</category>

<body package="Opentalk-Tools-Console" selector="asymmetricConnectionOrientedBrokerTypes">asymmetricConnectionOrientedBrokerTypes

	^Set withAll: #( #basic #standard )</body>

<body package="Opentalk-Tools-Console" selector="asymmetricConnectionOrientedMarshalerTypes">asymmetricConnectionOrientedMarshalerTypes

	^Set withAll: #( #stst #xml #soap )</body>

<body package="Opentalk-Tools-Console" selector="asymmetricConnectionOrientedTransportTypes">asymmetricConnectionOrientedTransportTypes

	^Set withAll: #( #tcp #http #cgi )</body>

<body package="Opentalk-Tools-Console" selector="basicAdaptorTypes">basicAdaptorTypes

	^Set withAll: #( #connectionOriented #connectionLess #asymmetricConnectionOriented #objectGroups )</body>

<body package="Opentalk-Tools-Console" selector="basicMarshalerTypes">basicMarshalerTypes

	^Set withAll: #( #soap #xml #stst )</body>

<body package="Opentalk-Tools-Console" selector="basicTransportTypes">basicTransportTypes

	^Set withAll: #( #bcast #cgi #chttp #http #mcast #tcp #udp )</body>

<body package="Opentalk-Tools-Console" selector="bcastAdaptorTypes">bcastAdaptorTypes

	^Set withAll: #( #objectGroups )</body>

<body package="Opentalk-Tools-Console" selector="bcastBrokerTypes">bcastBrokerTypes

	^Set withAll: #( #basic #standard )</body>

<body package="Opentalk-Tools-Console" selector="bcastMarshalerTypes">bcastMarshalerTypes

	^Set withAll: #( #stst )</body>

<body package="Opentalk-Tools-Console" selector="cgiAdaptorTypes">cgiAdaptorTypes

	^Set withAll: #(  #asymmetricConnectionOriented )</body>

<body package="Opentalk-Tools-Console" selector="cgiBrokerTypes">cgiBrokerTypes

	^Set withAll: #( #basic )</body>

<body package="Opentalk-Tools-Console" selector="cgiMarshalerTypes">cgiMarshalerTypes

	^Set withAll: #( #xml #soap )</body>

<body package="Opentalk-Tools-Console" selector="chttpAdaptorTypes">chttpAdaptorTypes

	^Set withAll: # ( #connectionLess )</body>

<body package="Opentalk-Tools-Console" selector="chttpBrokerTypes">chttpBrokerTypes

	^Set withAll: # ( #basic )</body>

<body package="Opentalk-Tools-Console" selector="chttpMarshalerTypes">chttpMarshalerTypes

	^Set withAll: # ( #soap #xml )</body>

<body package="Opentalk-Tools-Console" selector="connectionLessBrokerTypes">connectionLessBrokerTypes

	^Set withAll: #( #basic #standard )</body>

<body package="Opentalk-Tools-Console" selector="connectionLessMarshalerTypes">connectionLessMarshalerTypes

	^Set withAll: #( #stst #soap #xml)</body>

<body package="Opentalk-Tools-Console" selector="connectionLessTransportTypes">connectionLessTransportTypes

	^Set withAll: #( #udp #chttp )</body>

<body package="Opentalk-Tools-Console" selector="connectionOrientedBrokerTypes">connectionOrientedBrokerTypes

	^Set withAll: #( #basic #standard )</body>

<body package="Opentalk-Tools-Console" selector="connectionOrientedMarshalerTypes">connectionOrientedMarshalerTypes

	^Set withAll: #( #stst #http #xml #soap )</body>

<body package="Opentalk-Tools-Console" selector="connectionOrientedTransportTypes">connectionOrientedTransportTypes

	^Set withAll: #( #tcp #http #cgi )</body>

<body package="Opentalk-Tools-Console" selector="httpAdaptorTypes">httpAdaptorTypes

	^Set withAll: #( #asymmetricConnectionOriented )</body>

<body package="Opentalk-Tools-Console" selector="httpBrokerTypes">httpBrokerTypes

	^Set withAll: #( #basic )</body>

<body package="Opentalk-Tools-Console" selector="httpMarshalerTypes">httpMarshalerTypes

	^Set withAll: #( #xml #soap )</body>

<body package="Opentalk-Tools-Console" selector="mcastAdaptorTypes">mcastAdaptorTypes

	^Set withAll: #( #objectGroups )</body>

<body package="Opentalk-Tools-Console" selector="mcastBrokerTypes">mcastBrokerTypes

	^Set withAll: #( #basic #standard )</body>

<body package="Opentalk-Tools-Console" selector="mcastMarshalerTypes">mcastMarshalerTypes

	^Set withAll: #( #stst )</body>

<body package="Opentalk-Tools-Console" selector="objectGroupsBrokerTypes">objectGroupsBrokerTypes

	^Set withAll: #( #standard )</body>

<body package="Opentalk-Tools-Console" selector="objectGroupsMarshalerTypes">objectGroupsMarshalerTypes

	^Set withAll: #( #stst )</body>

<body package="Opentalk-Tools-Console" selector="objectGroupsTransportTypes">objectGroupsTransportTypes

	^Set withAll: #( #bcast #mcast )</body>

<body package="Opentalk-Tools-Console" selector="soapAdaptorTypes">soapAdaptorTypes

	^Set withAll: #( #asymmetricConnectionOriented #connectionLess )</body>

<body package="Opentalk-Tools-Console" selector="soapBrokerTypes">soapBrokerTypes

	^Set withAll: #( #basic )</body>

<body package="Opentalk-Tools-Console" selector="soapTransportTypes">soapTransportTypes

	^Set withAll: #( #chttp #cgi #http )</body>

<body package="Opentalk-Tools-Console" selector="standardAdaptorTypes">standardAdaptorTypes

	^Set withAll: #( #connectionOriented #connectionLess #asymmetricConnectionOriented #objectGroups )</body>

<body package="Opentalk-Tools-Console" selector="standardMarshalerTypes">standardMarshalerTypes

	^Set withAll: #( #stst )</body>

<body package="Opentalk-Tools-Console" selector="standardTransportTypes">standardTransportTypes

	^Set withAll: #( #bcast #mcast #tcp #udp )</body>

<body package="Opentalk-Tools-Console" selector="ststAdaptorTypes">ststAdaptorTypes

	^Set withAll: #( #connectionOriented #connectionLess #asymmetricConnectionOriented #objectGroups )</body>

<body package="Opentalk-Tools-Console" selector="ststBrokerTypes">ststBrokerTypes

	^Set withAll: #( #basic #standard )</body>

<body package="Opentalk-Tools-Console" selector="ststTransportTypes">ststTransportTypes

	^Set withAll: #( #bcast #mcast #udp #tcp )</body>

<body package="Opentalk-Tools-Console" selector="tcpAdaptorTypes">tcpAdaptorTypes

	^Set withAll: #( #connectionOriented #asymmetricConnectionOriented )</body>

<body package="Opentalk-Tools-Console" selector="tcpBrokerTypes">tcpBrokerTypes

	^Set withAll: #( #basic #standard )</body>

<body package="Opentalk-Tools-Console" selector="tcpMarshalerTypes">tcpMarshalerTypes

	^Set withAll: #( #stst )</body>

<body package="Opentalk-Tools-Console" selector="udpAdaptorTypes">udpAdaptorTypes

	^Set withAll: #( #connectionLess )</body>

<body package="Opentalk-Tools-Console" selector="udpBrokerTypes">udpBrokerTypes

	^Set withAll: #( #basic #standard )</body>

<body package="Opentalk-Tools-Console" selector="udpMarshalerTypes">udpMarshalerTypes

	^Set withAll: #( #stst )</body>

<body package="Opentalk-Tools-Console" selector="xmlAdaptorTypes">xmlAdaptorTypes

	^Set withAll: #( #asymmetricConnectionOriented #connectionLess )</body>

<body package="Opentalk-Tools-Console" selector="xmlBrokerTypes">xmlBrokerTypes

	^Set withAll: #( #basic )</body>

<body package="Opentalk-Tools-Console" selector="xmlTransportTypes">xmlTransportTypes

	^Set withAll: #( #cgi #http #chttp )</body>
</methods>

<methods>
<class-id>Opentalk.BrokerCreationSlice</class-id> <category>initialize-release</category>

<body package="Opentalk-Tools-Console" selector="initialize">initialize

	super initialize.
	model := OpentalkConfigurationParameters default.</body>
</methods>

<methods>
<class-id>Opentalk.BrokerCreationSlice</class-id> <category>private</category>

<body package="Opentalk-Tools-Console" selector="changeSliceSelectionTo:">changeSliceSelectionTo: anInteger

	self builder window model componentPropertiesSubcanvas sliceMasterList selectionIndexHolder value: anInteger</body>
</methods>

<methods>
<class-id>Opentalk.BrokerCreationSlice</class-id> <category>display update data</category>

<body package="Opentalk-Tools-Console" selector="connectionOrientedAdaptorTypes">connectionOrientedAdaptorTypes

	^Set withAll: #( #connectionOriented  #asymmetricConnectionOriented )</body>
</methods>

<methods>
<class-id>Opentalk.BrokerCreationSlice</class-id> <category>setup</category>

<body package="Opentalk-Tools-Console" selector="postBuild">postBuild

	self updateDisplayState</body>
</methods>

<methods>
<class-id>Opentalk.BasicRequestBrokerSlice</class-id> <category>actions</category>

<body package="Opentalk-Tools-Console" selector="initializeBroker">initializeBroker

	"This stub method was generated by UIDefiner"

	^self</body>

<body package="Opentalk-Tools-Console" selector="ping">ping

	| bool |

	bool := componentHolder value
				ping: ( IPSocketAddress 
						hostAddress: pingAddress value
						port: pingPort value ).
	Dialog warn: bool printString</body>

<body package="Opentalk-Tools-Console" selector="releaseBroker">releaseBroker

	"This stub method was generated by UIDefiner"

	^self</body>

<body package="Opentalk-Tools-Console" selector="startOrStop">startOrStop

	| cv bool |

	cv := componentHolder value.
	( cv notNil and: [ bool := componentHolder value isRunning ] )
		ifTrue:	[ cv stop ]
		ifFalse:	[ cv start ].
	self updateDisplayStateToStarted: bool not.
	cv changed</body>
</methods>

<methods>
<class-id>Opentalk.BasicRequestBrokerSlice</class-id> <category>update</category>

<body package="Opentalk-Tools-Console" selector="changedComponent">changedComponent

	self updateDisplayState</body>

<body package="Opentalk-Tools-Console" selector="updateDisplayState">updateDisplayState

	| chv |

	( ( chv := self componentHolder value ) notNil )
		ifTrue:	[ 	self updateDisplayStateToStarted: chv isRunning.
					self updateSoReuseAddrDisplayState ]</body>

<body package="Opentalk-Tools-Console" selector="updateDisplayStateToStarted:">updateDisplayStateToStarted: aBoolean

	| light look button |

	light := self builder componentAt: #indicatorLightRegion.
	look := light lookPreferences copy.
	look setBackgroundColor:
		( ( aBoolean )
			ifTrue:	[ ColorValue green ]
			ifFalse:	[ ColorValue red ] ).
	light lookPreferences: look.
	button := self builder componentAt: #startOrStopActionButton.
	button labelString:
		( ( aBoolean ) 
			ifTrue:	[ (#stop &lt;&lt; #opentalktools &gt;&gt; 'stop') ]
			ifFalse:	[ (#start &lt;&lt; #opentalktools &gt;&gt; 'start') ] ).
	button enable.

	( builder componentAt: #peerBrokerPingTestingGroupBox ) isVisible: aBoolean.
	( builder componentAt: #peerBrokerPingTestingGroupBox ) isEnabled: aBoolean.
	( builder componentAt: #pingAddressGroupBox ) isVisible: aBoolean.
	( builder componentAt: #pingAddressGroupBox ) isEnabled: aBoolean.
	( builder componentAt: #pingPortGroupBox ) isVisible: aBoolean.
	( builder componentAt: #pingPortGroupBox ) isEnabled: aBoolean.
	( builder componentAt: #pingAddressInputField ) isVisible: aBoolean.
	( builder componentAt: #pingAddressInputField ) isEnabled: aBoolean.
	( builder componentAt: #pingPortInputField ) isVisible: aBoolean.
	( builder componentAt: #pingPortInputField ) isEnabled: aBoolean.
	( builder componentAt: #pingActionButton ) isVisible: aBoolean.
	( builder componentAt: #pingActionButton ) isEnabled: aBoolean.</body>

<body package="Opentalk-Tools-Console" selector="updateSoReuseAddrDisplayState">updateSoReuseAddrDisplayState

	| ls chv chvca bool |

	( ( chv := self componentHolder value ) isNil )
		ifTrue:	[ ls := '' ]
		ifFalse:	[	chvca := chv configuration adaptor.
					( chvca respondsTo: #soReuseAddr )
						ifTrue:	[ ls := chvca soReuseAddr printString ]
						ifFalse:	[	( ( chvca respondsTo: #transport ) and: [ chvca transport componentClass respondsTo: #soReuseAddr: ] )
										ifTrue:	[	( ls := chvca transport soReuseAddr printString ).
													( ls = 'nil' )
														ifTrue:	[ ls := chvca transport componentClass soReuseAddr printString ]
												]
								] 
				].
		( builder componentAt: #soReuseAddrBooleanLabel ) labelString: ls.
	chvca := self componentHolder value configuration adaptor.
	bool := ( chvca respondsTo: #soReuseAddr ) |
				( ( chvca respondsTo: #transport ) and: [ chvca transport respondsTo: #soReuseAddr ] ).

	( builder componentAt: #configuredPropertiesGroupBox ) isVisible: bool.
	( builder componentAt: #configuredPropertiesGroupBox ) isEnabled: bool.
	( builder componentAt: #soReuseAddrLabel ) isVisible: bool.
	( builder componentAt: #soReuseAddrLabel ) isEnabled: bool.
	( builder componentAt: #soReuseAddrBooleanLabel  ) isVisible: bool.
	( builder componentAt: #soReuseAddrBooleanLabel  ) isEnabled: bool.</body>
</methods>

<methods>
<class-id>Opentalk.BasicRequestBrokerSlice</class-id> <category>aspects</category>

<body package="Opentalk-Tools-Console" selector="classSideBrokerId">classSideBrokerId

	^classSideBrokerId := 
		BufferedValueHolder
			subject:	( ( PluggableAdaptor on: componentHolder )
						getBlock: [:m | m value brokerId ]
						putBlock: [:m :v | m value setBrokerId: v ]
						updateBlock: [:m :a :p | true ] )
			triggerChannel: self triggerHolder</body>

<body package="Opentalk-Tools-Console" selector="classSideDefaultPort">classSideDefaultPort

	^classSideDefaultPort := 
		BufferedValueHolder
			subject:	( ( PluggableAdaptor on: componentHolder )
						getBlock: [:m | m value defaultPort ]
						putBlock: [:m :v | m value setDefaultPort: v ]
						updateBlock: [:m :a :p | true ] )
			triggerChannel: self triggerHolder</body>

<body package="Opentalk-Tools-Console" selector="errorHandling">errorHandling

	^errorHandling := 
		BufferedValueHolder
			subject:	( ( PluggableAdaptor on: componentHolder )
						getBlock:	[:m | ( m value objectAdaptor hasActionForEvent: #handlingIncomingMessageIn:failedBecause: )
											ifFalse:	[ #handleErrors ]
											ifTrue:	[ ( m value objectAdaptor actionForEvent: #handlingIncomingMessageIn:failedBecause: ) 
																		method outerMethod selector 
													]
									]
						putBlock: [:m :v | m value perform: v ]
						updateBlock: [:m :a :p | true ] )
			triggerChannel: self triggerHolder</body>

<body package="Opentalk-Tools-Console" selector="pingAddress">pingAddress

	^pingAddress</body>

<body package="Opentalk-Tools-Console" selector="pingPort">pingPort

	^pingPort</body>

<body package="Opentalk-Tools-Console" selector="port">port

	^port := 
		BufferedValueHolder
			subject:	( ( PluggableAdaptor on: componentHolder )
						getBlock:	[:m | m value objectAdaptor accessPoint port ] 
						putBlock: [:m :v | m value changePort: v ]
						updateBlock: [:m :a :p | true ] )
			triggerChannel: self triggerHolder</body>

<body package="Opentalk-Tools-Console" selector="requestType">requestType

	^requestType := 
		BufferedValueHolder
			subject:	( ( PluggableAdaptor on: componentHolder )
						getBlock:	[:m |	| rt |
											( ( rt := m value requestType ) isNil )
												ifTrue:	[ rt := m value configuration adaptor transport 
																marshaler requestClass
														].
											rt name
									]
						putBlock: [:m :v | m value requestType: ( BindingReference pathString: v ) value ]
						updateBlock: [:m :a :p | true ] )
			triggerChannel: self triggerHolder</body>
</methods>

<methods>
<class-id>Opentalk.BasicRequestBrokerSlice</class-id> <category>setup</category>

<body package="Opentalk-Tools-Console" selector="postBuild">postBuild

	self updateDisplayState</body>
</methods>

<methods>
<class-id>Opentalk.BasicRequestBrokerSlice</class-id> <category>initialize-release</category>

<body package="Opentalk-Tools-Console" selector="initialize">initialize

	super initialize.
	pingAddress := ValueHolder with: ( GenericProtocol hostAddress ).
	pingPort := ValueHolder with: ( BasicRequestBroker defaultPort ).</body>
</methods>

<methods>
<class-id>Opentalk.ComponentPropertiesSubcanvas</class-id> <category>accessing</category>

<body package="Opentalk-Tools-Console" selector="componentHolder">componentHolder

	^componentHolder</body>

<body package="Opentalk-Tools-Console" selector="componentHolder:">componentHolder: aValueModel

	( componentHolder notNil )
		ifTrue:	[ componentHolder retractInterestsFor: self ].
	componentHolder := aValueModel.
	componentHolder onChangeSend: #changedComponent to: self</body>
</methods>

<methods>
<class-id>Opentalk.ComponentPropertiesSubcanvas</class-id> <category>aspects</category>

<body package="Opentalk-Tools-Console" selector="sliceMasterList">sliceMasterList

	^sliceMasterList</body>
</methods>

<methods>
<class-id>Opentalk.ComponentPropertiesSubcanvas</class-id> <category>display state</category>

<body package="Opentalk-Tools-Console" selector="updateAllDisplayState">updateAllDisplayState

	| chv ndx creating buffering zeroIndex firstIndex lastIndex |

	chv := componentHolder value.
	ndx := sliceMasterList selectionIndexHolder value.

	creating := chv isNil.

	( self builder componentAt: #createActionButton )	isVisible: creating.
	( self builder componentAt: #applyActionButton )	isVisible: creating not.
	( self builder componentAt: #cancelActionButton )	isVisible: creating not.
	( self builder componentAt: #prevActionButton ) isVisible: creating not.
	( self builder componentAt: #nextActionButton ) isVisible: creating not.

	( self builder componentAt: #createActionButton )	isEnabled: creating.

	buffering := bufferingHolder value == true.
	( self builder componentAt: #applyActionButton ) isEnabled: buffering &amp; creating not.
	( self builder componentAt: #cancelActionButton ) isEnabled: buffering &amp; creating not.

	zeroIndex := ndx == 0.
	firstIndex := ndx == 1.
	lastIndex := ndx == sliceMasterList list size.
	( self builder componentAt: #prevActionButton ) isEnabled: ( zeroIndex | firstIndex ) not.
	( self builder componentAt: #nextActionButton ) isEnabled: ( zeroIndex | lastIndex ) not.</body>

<body package="Opentalk-Tools-Console" selector="updateBufferingDisplayState">updateBufferingDisplayState

	| b |

	b := bufferingHolder value == true.
	( self builder componentAt: #applyActionButton ) isEnabled: b.
	( self builder componentAt: #cancelActionButton ) isEnabled: b.</body>

<body package="Opentalk-Tools-Console" selector="updateSelectionDisplayState">updateSelectionDisplayState

	| ndx z f l |

	ndx := sliceMasterList selectionIndexHolder value.
	z := ndx == 0.
	f := ndx == 1.
	l := ndx == sliceMasterList list size.
	( self builder componentAt: #prevActionButton ) isEnabled: ( z | f ) not.
	( self builder componentAt: #nextActionButton ) isEnabled: ( z | l ) not.</body>
</methods>

<methods>
<class-id>Opentalk.ComponentPropertiesSubcanvas</class-id> <category>actions</category>

<body package="Opentalk-Tools-Console" selector="apply">apply

	triggerHolder value: true.
	bufferingHolder value: false.
	componentHolder value changed</body>

<body package="Opentalk-Tools-Console" selector="cancel">cancel

	triggerHolder value: false.
	bufferingHolder value: false</body>

<body package="Opentalk-Tools-Console" selector="create">create

	sliceBuilder source createBroker</body>

<body package="Opentalk-Tools-Console" selector="next">next

	sliceMasterList selectionIndexHolder value: sliceMasterList selectionIndexHolder value + 1</body>

<body package="Opentalk-Tools-Console" selector="prev">prev

	sliceMasterList selectionIndexHolder value: sliceMasterList selectionIndexHolder value - 1</body>
</methods>

<methods>
<class-id>Opentalk.ComponentPropertiesSubcanvas</class-id> <category>slice manangement</category>

<body package="Opentalk-Tools-Console" selector="brokerCreationSliceData">brokerCreationSliceData

	^#(	#( 'Broker Creation Basics' #brokerCreationBasicsSlice #BrokerCreationBasicsSlice )
		#( 'Broker Creation Details' #brokerCreationDetailsSlice #BrokerCreationDetailsSlice )
	)</body>

<body package="Opentalk-Tools-Console" selector="buildSlice">buildSlice

	| subCanvas clientClass client specSelector spec |

	( sliceBuilder notNil ) 
		ifTrue: [ sliceBuilder source release ].
	subCanvas := ( builder componentAt: #sliceTabControl ) widget.
	sliceBuilder := builder newSubBuilder.
	clientClass := Opentalk at: ( sliceData at: 3 ).
	triggerHolder myDependents: nil.
	client := clientClass new.
	client 
		componentHolder: self componentHolder;
		triggerHolder: triggerHolder;
		bufferingHolder: bufferingHolder.
	"client postLinkup."
	specSelector := sliceData at: 2.
	spec := UISpecification from: ( clientClass perform: specSelector).
	subCanvas
		client: client
		spec: spec
		builder: sliceBuilder.
	client postBuild</body>

<body package="Opentalk-Tools-Console" selector="changedComponent">changedComponent

	| newSliceIndex |

	self computeSlicesMenu.
	sliceMasterList list: self computeSliceMasterList.
	( componentHolder value isNil )
		ifTrue:	[	sliceMasterList selectionIndexHolder value: 1.
				]
		ifFalse:	[	newSliceIndex := sliceMasterList list 
										indexOf: prevSliceName
										ifAbsent: [ 1 ].
					sliceMasterList selectionIndexHolder value: newSliceIndex.
				]</body>

<body package="Opentalk-Tools-Console" selector="changedSliceSelection">changedSliceSelection

	| ndx |

	changingSliceSelection 
		ifTrue:	[ ^nil ].
	changingSliceSelection := true.
	ndx := sliceMasterList selectionIndexHolder value.
	( self requestForSliceChange )
		ifFalse:	[ ^sliceMasterList selectionIndexHolder value: ( 1 max: prevSliceIndex ) ].
	( ndx == 0 )
		ifTrue:	[	sliceData := slicesArray first
				]
		ifFalse:	[	sliceData := slicesArray at: ndx.
					prevSliceIndex := ndx.
					prevSliceName :=  sliceMasterList list at: ndx
				].
	bufferingHolder value: false.
	Cursor execute showWhile: [ self buildSlice ].
	changingSliceSelection := false.
	self updateAllDisplayState</body>

<body package="Opentalk-Tools-Console" selector="changeRequest">changeRequest

	^( bufferingHolder value )
		ifTrue:	[ self requestForSliceChange ]
		ifFalse:	[ true ]</body>

<body package="Opentalk-Tools-Console" selector="computeSliceMasterList">computeSliceMasterList

	| lst |

	lst := List new.
	slicesMenu value menuItems do: [:el | lst add: el label asSymbol ].
	^lst</body>

<body package="Opentalk-Tools-Console" selector="computeSlicesMenu">computeSlicesMenu

	| mb |

	mb := MenuBuilder new.
	slicesArray := ( componentHolder value isNil )
					ifTrue:	[ self brokerCreationSliceData ]
					ifFalse:	[ componentHolder value value allInspectionSlices ].
	1 to: slicesArray size do:
		[ :ndx |	| entry sliceName |
				entry := slicesArray at: ndx.
				sliceName := entry at: 1.
				mb add: sliceName -&gt; sliceName
		].
	slicesMenu value: mb menu.</body>

<body package="Opentalk-Tools-Console" selector="nullSliceData">nullSliceData

	^#( '' #nullSlice #OpentalkConsoleSlice )</body>

<body package="Opentalk-Tools-Console" selector="requestForSliceChange">requestForSliceChange

	^( bufferingHolder value )
		ifTrue:	[ Dialog confirm: (#DiscardUnappliedChangesQuery &lt;&lt; #opentalktools &gt;&gt; 'Do you wish to discard the unapplied changes?') ]
		ifFalse:	[ true ]</body>
</methods>

<methods>
<class-id>Opentalk.ComponentPropertiesSubcanvas</class-id> <category>initialize-release</category>

<body package="Opentalk-Tools-Console" selector="initialize">initialize

	componentHolder := ValueHolder new.
	componentHolder onChangeSend: #changedComponent to: self.
	triggerHolder := ValueHolder new.
	bufferingHolder := false asValue.
	bufferingHolder onChangeSend: #updateBufferingDisplayState to: self.
	sliceBuilder := nil.
	sliceMasterList := SelectionInList new.
	slicesMenu := ValueHolder with: Menu new.
	sliceMasterList list: self computeSliceMasterList.
	sliceMasterList selectionIndex: 0.
	sliceMasterList selectionIndexHolder onChangeSend: #changedSliceSelection to: self.
	prevSliceIndex := 0.
	prevSliceName := String new.
	changingSliceSelection := false.
	super initialize.</body>

<body package="Opentalk-Tools-Console" selector="release">release

	componentHolder retractInterestsFor: self.
	bufferingHolder retractInterestsFor: self.
	sliceMasterList selectionIndexHolder retractInterestsFor: self.
	sliceBuilder source release.
	super release</body>
</methods>

<methods>
<class-id>Opentalk.OpentalkConsole</class-id> <category>accessing</category>

<body package="Opentalk-Tools-Console" selector="componentListSubcanvas">componentListSubcanvas

	^componentListSubcanvas</body>

<body package="Opentalk-Tools-Console" selector="componentPropertiesSubcanvas">componentPropertiesSubcanvas

	^componentPropertiesSubcanvas</body>
</methods>

<methods>
<class-id>Opentalk.OpentalkConsole</class-id> <category>interface openeing</category>

<body package="Opentalk-Tools-Console" selector="postOpenWith:">postOpenWith: aBuilder

	componentListSubcanvas selectionIndexHolder value: 0</body>
</methods>

<methods>
<class-id>Opentalk.OpentalkConsole</class-id> <category>slice management</category>

<body package="Opentalk-Tools-Console" selector="changeRequest">changeRequest

	^componentPropertiesSubcanvas changeRequest</body>
</methods>

<methods>
<class-id>Opentalk.OpentalkConsole</class-id> <category>menu item actions</category>

<body package="Opentalk-Tools-Console" selector="decrementComponentPort">decrementComponentPort

	componentListSubcanvas decrementPort.
	componentPropertiesSubcanvas changedComponent</body>

<body package="Opentalk-Tools-Console" selector="incrementComponentPort">incrementComponentPort

	componentListSubcanvas incrementPort.
	componentPropertiesSubcanvas changedComponent</body>

<body package="Opentalk-Tools-Console" selector="inspectComponent">inspectComponent

	componentListSubcanvas inspectComponent</body>

<body package="Opentalk-Tools-Console" selector="refreshConsole">refreshConsole

	builder window refresh</body>

<body package="Opentalk-Tools-Console" selector="removeComponent">removeComponent

	componentListSubcanvas removeComponent</body>

<body package="Opentalk-Tools-Console" selector="startComponent">startComponent

	componentListSubcanvas startComponent.
	componentPropertiesSubcanvas changedComponent</body>

<body package="Opentalk-Tools-Console" selector="stopComponent">stopComponent

	componentListSubcanvas stopComponent.
	componentPropertiesSubcanvas changedComponent</body>
</methods>

<methods>
<class-id>Opentalk.OpentalkConsole</class-id> <category>update</category>

<body package="Opentalk-Tools-Console" selector="changedComponent">changedComponent

	self resetMenuBar</body>

<body package="Opentalk-Tools-Console" selector="resetMenuBar">resetMenuBar

	| bool mb |

	bool := componentListSubcanvas selectionHolder value ~~ nil.
	mb := self builder menuAt: #menuBar.
	( mb atNameKey: #startComponent ) enabled: bool.
	( mb atNameKey: #stopComponent ) enabled: bool.
	( mb atNameKey: #incrementComponentPort ) enabled: bool.
	( mb atNameKey: #decrementComponentPort ) enabled: bool.
	( mb atNameKey: #inspectComponent  ) enabled: bool.
	( mb atNameKey: #removeComponent ) enabled: bool.</body>
</methods>

<methods>
<class-id>Opentalk.OpentalkConsole</class-id> <category>initialize-release</category>

<body package="Opentalk-Tools-Console" selector="initialize">initialize

	componentListSubcanvas := ComponentListSubcanvas new.
	componentPropertiesSubcanvas := ComponentPropertiesSubcanvas new.
	componentPropertiesSubcanvas componentHolder: componentListSubcanvas selectionHolder.
	componentListSubcanvas selectionHolder onChangeSend: #changedComponent to: self</body>

<body package="Opentalk-Tools-Console" selector="noticeOfWindowClose:">noticeOfWindowClose: aWindow

	self release</body>

<body package="Opentalk-Tools-Console" selector="release">release

	componentListSubcanvas selectionHolder retractInterestsFor: self.
	componentPropertiesSubcanvas release.
	componentListSubcanvas release.
	OpentalkConfigurationParameters clearDefault.
	super release</body>
</methods>

<methods>
<class-id>Opentalk.BrokerCreationBasicsSlice</class-id> <category>aspects</category>

<body package="Opentalk-Tools-Console" selector="adaptorSoReuseAddr">adaptorSoReuseAddr

	^adaptorSoReuseAddr</body>

<body package="Opentalk-Tools-Console" selector="adaptorTypeList">adaptorTypeList

	^adaptorTypeList</body>

<body package="Opentalk-Tools-Console" selector="bindingNamed">bindingNamed

	^bindingNamed</body>

<body package="Opentalk-Tools-Console" selector="bindingNamedList">bindingNamedList

	^bindingNamedList</body>

<body package="Opentalk-Tools-Console" selector="brokerId">brokerId

	^brokerId</body>

<body package="Opentalk-Tools-Console" selector="brokerTypeList">brokerTypeList

	^brokerTypeList</body>

<body package="Opentalk-Tools-Console" selector="marshalerTypeList">marshalerTypeList

	^marshalerTypeList</body>

<body package="Opentalk-Tools-Console" selector="netmask">netmask

	^netmask</body>

<body package="Opentalk-Tools-Console" selector="port">port

	^port</body>

<body package="Opentalk-Tools-Console" selector="transportSoReuseAddr">transportSoReuseAddr

	^transportSoReuseAddr</body>

<body package="Opentalk-Tools-Console" selector="transportTypeList">transportTypeList

	^transportTypeList</body>
</methods>

<methods>
<class-id>Opentalk.BrokerCreationBasicsSlice</class-id> <category>initialize-release</category>

<body package="Opentalk-Tools-Console" selector="initialize">initialize

	 | btypes atypes ttypes mtypes |

	super initialize.

	btypes := ( BrokerConfiguration class organization listAtCategoryNamed: #types )
				asSortedCollection.
	brokerTypeList := SelectionInList with: btypes asList.
	brokerTypeList selection: model brokerType.
	( brokerTypeList selectionIndexHolder ) 
		onChangeSend: #changedBrokerType to: self;
		compute: [ :x | model brokerType: brokerTypeList selection ].
	atypes := ( AdaptorConfiguration class organization listAtCategoryNamed: #types )
				asSortedCollection.
	adaptorTypeList := SelectionInList with: atypes asList.
	adaptorTypeList selection: model adaptorType.
	( adaptorTypeList selectionIndexHolder )
		onChangeSend: #changedAdaptorType to: self;
		compute: [ :x | model adaptorType: adaptorTypeList selection ].
	ttypes := ( TransportConfiguration class organization listAtCategoryNamed: #types )
				asSortedCollection.
	transportTypeList := SelectionInList with: ttypes asList.
	transportTypeList selection: model transportType.
	( transportTypeList selectionIndexHolder )
		onChangeSend: #changedTransportType to: self;
		compute: [ :x | model transportType: transportTypeList selection ].
	mtypes := ( MarshalerConfiguration class organization listAtCategoryNamed: #types )
				asSortedCollection.
	marshalerTypeList := SelectionInList with: mtypes.
	marshalerTypeList selection: model marshalerType.
	( marshalerTypeList selectionIndexHolder )
		onChangeSend: #changedMarshalerType to: self;
		compute: [ :x | model marshalerType: marshalerTypeList selection ].

	brokerId := ( AspectAdaptor subject: model sendsUpdates: true ) forAspect: #brokerId.
	port := ( AspectAdaptor subject: model sendsUpdates: true ) forAspect: #port.
	adaptorSoReuseAddr := ( AspectAdaptor subject: model sendsUpdates: true ) forAspect: #adaptorSoReuseAddr.
	netmask := ( AspectAdaptor subject: model sendsUpdates: true ) forAspect: #netmask.
	transportSoReuseAddr := ( AspectAdaptor subject: model sendsUpdates: true ) forAspect: #transportSoReuseAddr.

	bindingNamedList := SelectionInList new.
	( bindingNamedList selectionIndexHolder )
		compute: [ :x | model bindingNamed: bindingNamedList selection ].</body>

<body package="Opentalk-Tools-Console" selector="release">release

	brokerTypeList selectionIndexHolder retractInterestsFor: self.
	adaptorTypeList selectionIndexHolder retractInterestsFor: self.
	transportTypeList selectionIndexHolder retractInterestsFor: self.
	marshalerTypeList selectionIndexHolder retractInterestsFor: self.
	^super release.</body>
</methods>

<methods>
<class-id>Opentalk.BrokerCreationBasicsSlice</class-id> <category>update</category>

<body package="Opentalk-Tools-Console" selector="changedAdaptorType">changedAdaptorType

	self updateDisplayState.
	self regenerateBrokerTypeList.
	self regenerateTransportTypeList.
	self regenerateMarshalerTypeList.</body>

<body package="Opentalk-Tools-Console" selector="changedBrokerType">changedBrokerType

	self updateDisplayState.
	self regenerateAdaptorTypeList.
	self regenerateMarshalerTypeList.
	self regenerateTransportTypeList.</body>

<body package="Opentalk-Tools-Console" selector="changedMarshalerType">changedMarshalerType

	self updateDisplayState.
	self regenerateBrokerTypeList.
	self regenerateAdaptorTypeList.
	self regenerateTransportTypeList.</body>

<body package="Opentalk-Tools-Console" selector="changedTransportType">changedTransportType

	self updateDisplayState.
	self regenerateBrokerTypeList.
	self regenerateAdaptorTypeList.
	self regenerateMarshalerTypeList.</body>

<body package="Opentalk-Tools-Console" selector="updateAdaptorDisplayState">updateAdaptorDisplayState

	| bool |

	bool := ( adaptorTypeList selection == #connectionOriented )
				or: [ adaptorTypeList selection == #asymmetricConnectionOriented ].

	( builder componentAt: #adaptorSoReuseAddrGroupBox ) isVisible: bool.
	( builder componentAt: #adaptorSoReuseAddrGroupBox ) isEnabled: bool.
	( builder componentAt: #adaptorSoReuseAddrCheckBox ) isVisible: bool.
	( builder componentAt: #adaptorSoReuseAddrCheckBox ) isEnabled: bool.</body>

<body package="Opentalk-Tools-Console" selector="updateBcastDisplayState">updateBcastDisplayState

	| bool |

	bool := ( transportTypeList selection == #bcast ).

	( builder componentAt: #netmaskGroupBox ) isVisible: bool.
	( builder componentAt: #netmaskGroupBox ) isEnabled: bool.
	( builder componentAt: #netmaskInputField ) isVisible: bool.
	( builder componentAt: #netmaskInputField ) isEnabled: bool.</body>

<body package="Opentalk-Tools-Console" selector="updateDisplayState">updateDisplayState

	self updateAdaptorDisplayState.
	self updateTransportDisplayState.
	self updateXMLDisplayState.
	self updateSOAPDisplayState.
	self updateBcastDisplayState.</body>

<body package="Opentalk-Tools-Console" selector="updateSharedSOAPandXMLDisplayState">updateSharedSOAPandXMLDisplayState

	| mtls bool |

	mtls := marshalerTypeList selection.
	bool := ( mtls == #xml ) or: [ mtls == #soap ].

	( builder componentAt: #bindingNamedGroupBox ) isVisible: bool.
	( builder componentAt: #bindingNamedGroupBox ) isEnabled: bool.
	( builder componentAt: #bindingNamedList ) isVisible: bool.
	( builder componentAt: #bindingNamedList ) isEnabled: bool.</body>

<body package="Opentalk-Tools-Console" selector="updateSOAPDisplayState">updateSOAPDisplayState

	( marshalerTypeList selection == #soap )
		ifTrue:	[	| lst mbn |
					lst := ( WebServices.WsdlBinding wsdBindings keys collect: [ :x | x type ] ) asSortedCollection.
					bindingNamedList list: lst.
					mbn := model bindingNamed.
					( lst includes: mbn )
						ifTrue:	[ bindingNamedList selection: mbn ]
				].

	self updateSharedSOAPandXMLDisplayState</body>

<body package="Opentalk-Tools-Console" selector="updateTransportDisplayState">updateTransportDisplayState

	| bool |

	bool := #(udp bcast mcast) includes: transportTypeList selection.

	( builder componentAt: #transportSoReuseAddrGroupBox ) isVisible: bool.
	( builder componentAt: #transportSoReuseAddrGroupBox ) isEnabled: bool.
	( builder componentAt: #transportSoReuseAddrCheckBox ) isVisible: bool.
	( builder componentAt: #transportSoReuseAddrCheckBox ) isEnabled: bool</body>

<body package="Opentalk-Tools-Console" selector="updateXMLDisplayState">updateXMLDisplayState

	( marshalerTypeList selection == #xml )
		ifTrue:	[	| lst mbn |
					lst := XMLOperationMap names asSortedCollection.
					bindingNamedList list: lst.
					mbn := model bindingNamed.
					( lst includes: mbn )
						ifTrue:	[ bindingNamedList selection: mbn ]
				].

	self updateSharedSOAPandXMLDisplayState</body>
</methods>

<methods>
<class-id>Opentalk.BrokerCreationBasicsSlice</class-id> <category>utility</category>

<body package="Opentalk-Tools-Console" selector="regenerateAdaptorTypeList">regenerateAdaptorTypeList

	| atls atlsih lst |

	atls := adaptorTypeList selection.
	atlsih := adaptorTypeList selectionIndexHolder.
	atlsih retractInterestsFor: self.
	lst := self adaptorTypes.
	adaptorTypeList list: lst.
	adaptorTypeList selection: atls.
	atlsih onChangeSend: #changedAdaptorType to: self.</body>

<body package="Opentalk-Tools-Console" selector="regenerateBrokerTypeList">regenerateBrokerTypeList

	| btls btlsih lst |

	btls := brokerTypeList selection.
	btlsih := brokerTypeList selectionIndexHolder.
	btlsih retractInterestsFor: self.
	lst := self brokerTypes.
	brokerTypeList list: lst.
	brokerTypeList selection: btls.
	btlsih onChangeSend: #changedBrokerType to: self.</body>

<body package="Opentalk-Tools-Console" selector="regenerateMarshalerTypeList">regenerateMarshalerTypeList

	| mtls mtlsih lst |

	mtls := marshalerTypeList selection.
	mtlsih := marshalerTypeList selectionIndexHolder.
	mtlsih retractInterestsFor: self.
	lst := self marshalerTypes.
	marshalerTypeList list: lst.
	marshalerTypeList selection: mtls.
	mtlsih onChangeSend: #changedMarshalerType to: self.</body>

<body package="Opentalk-Tools-Console" selector="regenerateTransportTypeList">regenerateTransportTypeList

	| ttls ttlsih lst |

	ttls := transportTypeList selection.
	ttlsih := transportTypeList selectionIndexHolder.
	ttlsih retractInterestsFor: self.
	lst := self transportTypes.
	transportTypeList list: lst.
	transportTypeList selection: ttls.
	ttlsih onChangeSend: #changedTransportType to: self.</body>
</methods>

<methods>
<class-id>Opentalk.BrokerCreationBasicsSlice</class-id> <category>list generation</category>

<body package="Opentalk-Tools-Console" selector="adaptorTypes">adaptorTypes

	| s0 s1 s2 s3 si mtls ttls btls |

	s0 := ( AdaptorConfiguration class organization listAtCategoryNamed: #types )
			asSet.
	si := s0 copy.

	( ( mtls := marshalerTypeList selection ) notNil )
		ifTrue:	[ s1 := self perform: ( mtls, 'AdaptorTypes' ) asSymbol ].
	( ( ttls := transportTypeList selection ) notNil )
		ifTrue:	[ s2 := self perform: ( ttls, 'AdaptorTypes' ) asSymbol ].
	( ( btls := brokerTypeList selection ) notNil )
		ifTrue:	[ s3 := self perform: ( btls, 'AdaptorTypes' ) asSymbol ].

	s1 notNil ifTrue: [ si := si - ( s0 - s1 ) ].
	s2 notNil ifTrue: [ si := si - ( s0 - s2 ) ].
	s3 notNil ifTrue: [ si := si - ( s0 - s3 ) ].
	^si asSortedCollection</body>

<body package="Opentalk-Tools-Console" selector="brokerTypes">brokerTypes

	| s0 s1 s2 s3 si mtls ttls atls |

	s0 := ( BrokerConfiguration class organization listAtCategoryNamed: #types )
			asSet.
	si := s0 copy.

	( ( mtls := marshalerTypeList selection ) notNil )
		ifTrue:	[ s1 := self perform: ( mtls, 'BrokerTypes' ) asSymbol ].
	( ( ttls := transportTypeList selection ) notNil )
		ifTrue:	[ s2 := self perform: ( ttls, 'BrokerTypes' ) asSymbol ].
	( ( atls := adaptorTypeList selection ) notNil )
		ifTrue:	[ s3 := self perform: ( atls, 'BrokerTypes' ) asSymbol ].

	s1 notNil ifTrue: [ si := si - ( s0 - s1 ) ].
	s2 notNil ifTrue: [ si := si - ( s0 - s2 ) ].
	s3 notNil ifTrue: [ si := si - ( s0 - s3 ) ].
	^si asSortedCollection</body>

<body package="Opentalk-Tools-Console" selector="marshalerTypes">marshalerTypes

	| s0 s1 s2 s3 si ttls atls btls |

	s0 := ( MarshalerConfiguration class organization listAtCategoryNamed: #types )
			asSet.
	si := s0 copy.

	( ( ttls := transportTypeList selection ) notNil )
		ifTrue:	[ s1 := self perform: ( ttls, 'MarshalerTypes' ) asSymbol ].
	( ( atls := adaptorTypeList selection ) notNil )
		ifTrue:	[ s2 := self perform: ( atls, 'MarshalerTypes' ) asSymbol ].
	( ( btls := brokerTypeList selection ) notNil )
		ifTrue:	[ s3 := self perform: ( btls, 'MarshalerTypes' ) asSymbol ].

	s1 notNil ifTrue: [ si := si - ( s0 - s1 ) ].
	s2 notNil ifTrue: [ si := si - ( s0 - s2 ) ].
	s3 notNil ifTrue: [ si := si - ( s0 - s3 ) ].
	^si asSortedCollection</body>

<body package="Opentalk-Tools-Console" selector="transportTypes">transportTypes

	| s0 s1 s2 s3 si mtls atls btls |

	s0 := ( TransportConfiguration class organization listAtCategoryNamed: #types )
			asSet.
	si := s0 copy.

	( ( mtls := marshalerTypeList selection ) notNil )
		ifTrue:	[ s1 := self perform: ( mtls, 'TransportTypes' ) asSymbol ].
	( ( atls := adaptorTypeList selection ) notNil )
		ifTrue:	[ s2 := self perform: ( atls, 'TransportTypes' ) asSymbol ].
	( ( btls := brokerTypeList selection ) notNil )
		ifTrue:	[ s3 := self perform: ( btls, 'TransportTypes' ) asSymbol ].

	s1 notNil ifTrue: [ si := si - ( s0 - s1 ) ].
	s2 notNil ifTrue: [ si := si - ( s0 - s2 ) ].
	s3 notNil ifTrue: [ si := si - ( s0 - s3 ) ].
	^si asSortedCollection</body>
</methods>

<methods>
<class-id>Opentalk.OpentalkConfigurationParameters</class-id> <category>accessing</category>

<body package="Opentalk-Tools-Console" selector="adaptorSoReuseAddr">adaptorSoReuseAddr

	^adaptorSoReuseAddr</body>

<body package="Opentalk-Tools-Console" selector="adaptorSoReuseAddr:">adaptorSoReuseAddr: aBoolean

	adaptorSoReuseAddr := aBoolean.
	self changed: #adaptorSoReuseAddr</body>

<body package="Opentalk-Tools-Console" selector="adaptorType">adaptorType

	^adaptorType</body>

<body package="Opentalk-Tools-Console" selector="adaptorType:">adaptorType: aSymbol

	adaptorType := aSymbol.
	self changed: #adaptorType</body>

<body package="Opentalk-Tools-Console" selector="bindingNamed">bindingNamed

	^bindingNamed</body>

<body package="Opentalk-Tools-Console" selector="bindingNamed:">bindingNamed: aString

	bindingNamed := aString.
	self changed: #bindingNamed</body>

<body package="Opentalk-Tools-Console" selector="brokerId">brokerId

	^brokerId</body>

<body package="Opentalk-Tools-Console" selector="brokerId:">brokerId: aSymbol

	brokerId := aSymbol.
	self changed: #brokerId</body>

<body package="Opentalk-Tools-Console" selector="brokerType">brokerType

	^brokerType</body>

<body package="Opentalk-Tools-Console" selector="brokerType:">brokerType: aSymbol

	brokerType := aSymbol.
	self changed: #brokerType</body>

<body package="Opentalk-Tools-Console" selector="connectingTimeout">connectingTimeout

	^connectingTimeout</body>

<body package="Opentalk-Tools-Console" selector="connectingTimeout:">connectingTimeout: anInteger

	connectingTimeout := anInteger.
	self changed: #connectingTimeout</body>

<body package="Opentalk-Tools-Console" selector="connectionTimeout">connectionTimeout

	^connectionTimeout</body>

<body package="Opentalk-Tools-Console" selector="connectionTimeout:">connectionTimeout: anInteger

	connectionTimeout := anInteger.
	self changed: #connectionTimeout</body>

<body package="Opentalk-Tools-Console" selector="listenerBacklog">listenerBacklog

	^listenerBacklog</body>

<body package="Opentalk-Tools-Console" selector="listenerBacklog:">listenerBacklog: anInteger

	listenerBacklog := anInteger.
	self changed: #listenerBacklog</body>

<body package="Opentalk-Tools-Console" selector="listenerPriority">listenerPriority

	^listenerPriority</body>

<body package="Opentalk-Tools-Console" selector="listenerPriority:">listenerPriority: anInteger

	listenerPriority := anInteger.
	self changed: #listenerPriority</body>

<body package="Opentalk-Tools-Console" selector="marshalerExceptionPrinter">marshalerExceptionPrinter

	^marshalerExceptionPrinter</body>

<body package="Opentalk-Tools-Console" selector="marshalerExceptionPrinter:">marshalerExceptionPrinter: aSymbol

	marshalerExceptionPrinter := aSymbol.
	self changed: #marshalerExceptionPrinter</body>

<body package="Opentalk-Tools-Console" selector="marshalerType">marshalerType

	^marshalerType</body>

<body package="Opentalk-Tools-Console" selector="marshalerType:">marshalerType: aSymbol

	marshalerType := aSymbol.
	self changed: #marshalerType</body>

<body package="Opentalk-Tools-Console" selector="marshalingBufferSize">marshalingBufferSize

	^marshalingBufferSize</body>

<body package="Opentalk-Tools-Console" selector="marshalingBufferSize:">marshalingBufferSize: anInteger

	marshalingBufferSize := anInteger.
	self changed: #marshalingBufferSize</body>

<body package="Opentalk-Tools-Console" selector="netmask">netmask

	^netmask</body>

<body package="Opentalk-Tools-Console" selector="netmask:">netmask: aByteArray

	netmask := aByteArray.
	self changed: #netmask</body>

<body package="Opentalk-Tools-Console" selector="persist">persist

	^persist</body>

<body package="Opentalk-Tools-Console" selector="persist:">persist: aBoolean

	persist := aBoolean.
	self changed: #persist</body>

<body package="Opentalk-Tools-Console" selector="port">port

	^port</body>

<body package="Opentalk-Tools-Console" selector="port:">port: anInteger

	port := anInteger.
	self changed: #port</body>

<body package="Opentalk-Tools-Console" selector="readWriteBufferSize">readWriteBufferSize

	^readWriteBufferSize</body>

<body package="Opentalk-Tools-Console" selector="readWriteBufferSize:">readWriteBufferSize: anInteger

	readWriteBufferSize := anInteger.
	self changed: #readWriteBufferSize</body>

<body package="Opentalk-Tools-Console" selector="requestTimeout">requestTimeout

	^requestTimeout</body>

<body package="Opentalk-Tools-Console" selector="requestTimeout:">requestTimeout: anInteger

	requestTimeout := anInteger.
	self changed: #requestTimeout</body>

<body package="Opentalk-Tools-Console" selector="serverPriority">serverPriority

	^serverPriority</body>

<body package="Opentalk-Tools-Console" selector="serverPriority:">serverPriority: anInteger

	serverPriority := anInteger.
	self changed: #serverPriority</body>

<body package="Opentalk-Tools-Console" selector="stopOnError">stopOnError

	^stopOnError</body>

<body package="Opentalk-Tools-Console" selector="stopOnError:">stopOnError: aBoolean

	stopOnError := aBoolean.
	self changed: #stopOnError</body>

<body package="Opentalk-Tools-Console" selector="transportExceptionPrinter">transportExceptionPrinter

	^transportExceptionPrinter</body>

<body package="Opentalk-Tools-Console" selector="transportExceptionPrinter:">transportExceptionPrinter: aSymbol

	transportExceptionPrinter := aSymbol.
	self changed: #transportExceptionPrinter</body>

<body package="Opentalk-Tools-Console" selector="transportSoReuseAddr">transportSoReuseAddr

	^transportSoReuseAddr</body>

<body package="Opentalk-Tools-Console" selector="transportSoReuseAddr:">transportSoReuseAddr: aBoolean

	transportSoReuseAddr := aBoolean.
	self changed: #transportSoReuseAddr</body>

<body package="Opentalk-Tools-Console" selector="transportType">transportType

	^transportType</body>

<body package="Opentalk-Tools-Console" selector="transportType:">transportType: aSymbol

	transportType := aSymbol.
	self changed: #transportType</body>

<body package="Opentalk-Tools-Console" selector="workerPriority">workerPriority

	^workerPriority</body>

<body package="Opentalk-Tools-Console" selector="workerPriority:">workerPriority: anInteger

	workerPriority := anInteger.
	self changed: #workerPriority</body>
</methods>

<methods>
<class-id>Opentalk.OpentalkConfigurationParameters</class-id> <category>initialize-release</category>

<body package="Opentalk-Tools-Console" selector="initialize">initialize

	brokerType := nil.
	adaptorType := nil.
	transportType := nil.
	marshalerType := nil.

	brokerId := nil.
	port := BasicRequestBroker defaultPort.
	adaptorSoReuseAddr := ConnectionAdaptor soReuseAddr.
	netmask := #[ 255 255 255 0 ].
	transportSoReuseAddr := UDPTransport soReuseAddr.
	bindingNamed := String new.

	requestTimeout := BasicRequestBroker defaultRequestTimeout.

	connectingTimeout := ConnectionAdaptor defaultConnectingTimeout.
	connectionTimeout := ConnectionAdaptor defaultConnectionTimeout.
	listenerPriority := ConnectionListener listenerPriority.
	listenerBacklog := ConnectionListener listenerBacklog.

	readWriteBufferSize := Transport defaultBufferSize.
	serverPriority := Transport serverPriority.
	workerPriority := RequestDispatcher defaultWorkerPriority.
	netmask := #[ 255 255 255 0 ].

	persist := false.
	stopOnError := false.
	transportExceptionPrinter := nil.

	marshalingBufferSize := STSTMarshaler defaultBufferSize.
	marshalerExceptionPrinter := nil.</body>
</methods>

<methods>
<class-id>Opentalk.OpentalkConfigurationParameters class</class-id> <category>instance management</category>

<body package="Opentalk-Tools-Console" selector="clearDefault">clearDefault

	"((( OpentalkConfigurationParameters clearDefault )))"

	default := nil</body>

<body package="Opentalk-Tools-Console" selector="default">default

	^( default isNil )
		ifTrue:	[ default := self new ]
		ifFalse:	[ default ]</body>

<body package="Opentalk-Tools-Console" selector="new">new

	^super new initialize</body>
</methods>

<methods>
<class-id>Opentalk.RequestBrokerSlice</class-id> <category>update</category>

<body package="Opentalk-Tools-Console" selector="changedComponent">changedComponent

	( ( componentHolder value ) isNil )
		ifTrue:	[	openSelectorsList list: List new.
				 	servicesList list: DependentList new
				]
		ifFalse:	[	openSelectorsList list: self generateOpenSelectorsList.
					servicesList list: self generateServicesList
				]</body>

<body package="Opentalk-Tools-Console" selector="changedSelectedOpenSelector">changedSelectedOpenSelector

	| sel bool |

	( bool := ( sel := openSelectorsList selection ) isNil )
		ifTrue:	[ currentOpenSelector value: Symbol new ]
		ifFalse:	[ currentOpenSelector value: sel ].
	( builder componentAt: #addSelectorActionButton ) isEnabled: bool.
	( builder componentAt: #removeSelectorActionButton ) isEnabled: bool not.</body>

<body package="Opentalk-Tools-Console" selector="changedSelectedService">changedSelectedService

	| sel bool |

	( bool := ( sel := servicesList selection ) isNil )
		ifTrue:	[	currentServiceId value: nil.
					serviceCreationExpression value: String new.
				]
		ifFalse:	[	currentServiceId value: sel key.
					serviceCreationExpression value: sel value storeString
				].
	( builder componentAt: #addServiceActionButton ) isEnabled: bool.
	( builder componentAt: #removeServiceActionButton ) isEnabled: bool not.</body>

<body package="Opentalk-Tools-Console" selector="changedTrigger">changedTrigger

	( triggerHolder value )
		ifTrue:	[	| dict |
					componentHolder value openSelectors: openSelectorsList list asArray.
					dict := Dictionary new.
					servicesList list do: [ :assoc | dict add: assoc ].
					componentHolder value serviceDictionary: dict.
				]
		ifFalse:	[	openSelectorsList list: self generateOpenSelectorsList.
					servicesList list: self generateServicesList
									
				]</body>
</methods>

<methods>
<class-id>Opentalk.RequestBrokerSlice</class-id> <category>aspects</category>

<body package="Opentalk-Tools-Console" selector="currentOpenSelector">currentOpenSelector

	^currentOpenSelector</body>

<body package="Opentalk-Tools-Console" selector="currentServiceId">currentServiceId

	^currentServiceId</body>

<body package="Opentalk-Tools-Console" selector="openSelectorsList">openSelectorsList

	^openSelectorsList</body>

<body package="Opentalk-Tools-Console" selector="serviceCreationExpression">serviceCreationExpression

	^serviceCreationExpression</body>

<body package="Opentalk-Tools-Console" selector="servicesList">servicesList

	^servicesList</body>

<body package="Opentalk-Tools-Console" selector="servicesListSH">servicesListSH

	^servicesListSH</body>
</methods>

<methods>
<class-id>Opentalk.RequestBrokerSlice</class-id> <category>actions</category>

<body package="Opentalk-Tools-Console" selector="addSelector">addSelector

	openSelectorsList list add: currentOpenSelector value.
	self nowBuffering</body>

<body package="Opentalk-Tools-Console" selector="addService">addService

	| obj |

	obj := Compiler evaluate: self serviceCreationExpression value.
	servicesList list add: ( AssociationDisplayFrame association: ( self currentServiceId value -&gt; obj ) ).
	self nowBuffering</body>

<body package="Opentalk-Tools-Console" selector="removeSelector">removeSelector

	openSelectorsList list remove: currentOpenSelector value.
	self nowBuffering</body>

<body package="Opentalk-Tools-Console" selector="removeService">removeService

	| sls |

	sls := servicesList selection.
	[ sls value stop ]
		on:	Error
		do:	[ :ex | ].
	servicesList list remove: sls.
	self nowBuffering</body>

<body package="Opentalk-Tools-Console" selector="servicesListSHKeyLabelPressed">servicesListSHKeyLabelPressed
	"This method was generated by UIDefiner.  Any edits made here
	may be lost whenever methods are automatically defined."

	| ascSortBlock dscSortBlock sortBlock |
	ascSortBlock := [:x :y | x key printString &lt;= y key printString].
	dscSortBlock := [:x :y | x key printString &gt;= y key printString].

	sortBlock := self servicesList sortAspect == #servicesListSHKey
		ifTrue: [
			self servicesList sortDirection == #asc
				ifTrue: [self servicesList sortDirection: #dsc.
					ascSortBlock]
				ifFalse: [self servicesList sortDirection: #asc.
					dscSortBlock]]
		ifFalse: [self servicesList sortAspect: #servicesListSHKey.
				self servicesList sortDirection: #dsc.
				ascSortBlock].

	self servicesList list:
		(SortedCollection withAll: (self servicesList list)
			sortBlock: sortBlock) asList.</body>

<body package="Opentalk-Tools-Console" selector="servicesListSHValueClassnameLabelPressed">servicesListSHValueClassnameLabelPressed
	"This method was generated by UIDefiner.  Any edits made here
	may be lost whenever methods are automatically defined."

	| ascSortBlock dscSortBlock sortBlock |
	ascSortBlock := [:x :y | x value classname printString &lt;= y value classname printString].
	dscSortBlock := [:x :y | x value classname printString &gt;= y value classname printString].

	sortBlock := self servicesList sortAspect == #servicesListSHValueClassname
		ifTrue: [
			self servicesList sortDirection == #asc
				ifTrue: [self servicesList sortDirection: #dsc.
					ascSortBlock]
				ifFalse: [self servicesList sortDirection: #asc.
					dscSortBlock]]
		ifFalse: [self servicesList sortAspect: #servicesListSHValueClassname.
				self servicesList sortDirection: #dsc.
				ascSortBlock].

	self servicesList list:
		(SortedCollection withAll: (self servicesList list)
			sortBlock: sortBlock) asList.</body>

<body package="Opentalk-Tools-Console" selector="servicesListSHValueLabelPressed">servicesListSHValueLabelPressed
	"This method was generated by UIDefiner.  Any edits made here
	may be lost whenever methods are automatically defined."

	| ascSortBlock dscSortBlock sortBlock |
	ascSortBlock := [:x :y | x value printString &lt;= y value printString].
	dscSortBlock := [:x :y | x value printString &gt;= y value printString].

	sortBlock := self servicesList sortAspect == #servicesListSHValue
		ifTrue: [
			self servicesList sortDirection == #asc
				ifTrue: [self servicesList sortDirection: #dsc.
					ascSortBlock]
				ifFalse: [self servicesList sortDirection: #asc.
					dscSortBlock]]
		ifFalse: [self servicesList sortAspect: #servicesListSHValue.
				self servicesList sortDirection: #dsc.
				ascSortBlock].

	self servicesList list:
		(SortedCollection withAll: (self servicesList list)
			sortBlock: sortBlock) asList.</body>
</methods>

<methods>
<class-id>Opentalk.RequestBrokerSlice</class-id> <category>setup</category>

<body package="Opentalk-Tools-Console" selector="postBuild">postBuild

	super postBuild.
	triggerHolder onChangeSend: #changedTrigger to: self.
	self triggerHolder value: false</body>
</methods>

<methods>
<class-id>Opentalk.RequestBrokerSlice</class-id> <category>initialize-release</category>

<body package="Opentalk-Tools-Console" selector="initialize">initialize

	super initialize.

	openSelectorsList := SelectionInList with: List new.
	openSelectorsListSH := openSelectorsList selectionHolder.
	currentOpenSelector := ValueHolder with: Symbol new.
	openSelectorsList selectionIndexHolder onChangeSend: #changedSelectedOpenSelector to: self.

	servicesList :=  SelectionInListSortAware new.
	servicesListSH := ValueHolder new.
	servicesList selectionIndexHolder compute:
				[:v | self servicesListSH value: servicesList selection].
	currentServiceId := ValueHolder new.
	serviceCreationExpression := String new asValue.
	servicesList selectionIndexHolder onChangeSend: #changedSelectedService to: self.</body>

<body package="Opentalk-Tools-Console" selector="release">release

	openSelectorsList selectionIndexHolder retractInterestsFor: self.
	triggerHolder retractInterestsFor: self.		
		"The triggerHolder is diddled in 'postBuild', as we subvert usual trigger operation."
	super release</body>
</methods>

<methods>
<class-id>Opentalk.RequestBrokerSlice</class-id> <category>utility</category>

<body package="Opentalk-Tools-Console" selector="generateOpenSelectorsList">generateOpenSelectorsList

	^componentHolder value openSelectors copy asList</body>

<body package="Opentalk-Tools-Console" selector="generateServicesList">generateServicesList

	^DependentList withAll: 
		( componentHolder value serviceDictionary associations copy
			collect: [ :assoc | AssociationDisplayFrame association: assoc ] )</body>
</methods>

<methods>
<class-id>Opentalk.BasicAdaptorSlice</class-id> <category>initialize-release</category>

<body package="Opentalk-Tools-Console" selector="initialize">initialize

	super initialize.</body>
</methods>

<methods>
<class-id>Opentalk.BasicAdaptorSlice</class-id> <category>aspects</category>

<body package="Opentalk-Tools-Console" selector="accessAddress">accessAddress

	^accessAddress := 
		BufferedValueHolder
			subject:	( ( PluggableAdaptor on: componentHolder value objectAdaptor )
						getBlock:	[:m | m accessAddress ] 
						putBlock: [:m :v | m accessAddress: v ]
						updateBlock: [:m :a :p | true ] )
			triggerChannel: self triggerHolder</body>

<body package="Opentalk-Tools-Console" selector="localAddress">localAddress

	^localAddress := ( AspectAdaptor
						subject: componentHolder value objectAdaptor
						sendsUpdates: false )
							forAspect: #localAddress</body>

<body package="Opentalk-Tools-Console" selector="port">port

	^port := 
		BufferedValueHolder
			subject:	( ( PluggableAdaptor on: componentHolder value objectAdaptor )
						getBlock:	[:m | m accessPort ] 
						putBlock: [:m :v | m setAccessPointForPort: v ]
						updateBlock: [:m :a :p | true ] )
			triggerChannel: self triggerHolder</body>
</methods>

<methods>
<class-id>Opentalk.BrokerCreationDetailsSlice</class-id> <category>aspects</category>

<body package="Opentalk-Tools-Console" selector="connectingTimeout">connectingTimeout

	^connectingTimeout</body>

<body package="Opentalk-Tools-Console" selector="connectionTimeout">connectionTimeout

	^connectionTimeout</body>

<body package="Opentalk-Tools-Console" selector="listenerBacklog">listenerBacklog

	^listenerBacklog</body>

<body package="Opentalk-Tools-Console" selector="listenerPriority">listenerPriority

	^listenerPriority</body>

<body package="Opentalk-Tools-Console" selector="marshalerExceptionPrinter">marshalerExceptionPrinter

	^marshalerExceptionPrinter</body>

<body package="Opentalk-Tools-Console" selector="marshalingBufferSize">marshalingBufferSize

	^marshalingBufferSize</body>

<body package="Opentalk-Tools-Console" selector="persist">persist

	^persist</body>

<body package="Opentalk-Tools-Console" selector="readWriteBufferSize">readWriteBufferSize

	^readWriteBufferSize</body>

<body package="Opentalk-Tools-Console" selector="requestTimeout">requestTimeout

	^requestTimeout</body>

<body package="Opentalk-Tools-Console" selector="serverPriority">serverPriority

	^serverPriority</body>

<body package="Opentalk-Tools-Console" selector="stopOnError">stopOnError

	^stopOnError</body>

<body package="Opentalk-Tools-Console" selector="transportExceptionPrinter">transportExceptionPrinter

	^transportExceptionPrinter</body>

<body package="Opentalk-Tools-Console" selector="workerPriority">workerPriority

	^workerPriority</body>
</methods>

<methods>
<class-id>Opentalk.BrokerCreationDetailsSlice</class-id> <category>initialize-release</category>

<body package="Opentalk-Tools-Console" selector="initialize">initialize

	super initialize.

	connectingTimeout := ( AspectAdaptor subject: model sendsUpdates: true ) forAspect: #connectingTimeout.
	connectionTimeout := ( AspectAdaptor subject: model sendsUpdates: true ) forAspect: #connectionTimeout.
	listenerPriority := ( AspectAdaptor subject: model sendsUpdates: true ) forAspect: #listenerPriority.
	listenerBacklog := ( AspectAdaptor subject: model sendsUpdates: true ) forAspect: #listenerBacklog.
	marshalerExceptionPrinter := ( AspectAdaptor subject: model sendsUpdates: true ) forAspect: #marshalerExceptionPrinter.
	marshalingBufferSize := ( AspectAdaptor subject: model sendsUpdates: true ) forAspect: #marshalingBufferSize.
	persist := ( AspectAdaptor subject: model sendsUpdates: true ) forAspect: #persist.
	readWriteBufferSize := ( AspectAdaptor subject: model sendsUpdates: true ) forAspect: #readWriteBufferSize.
	requestTimeout := ( AspectAdaptor subject: model sendsUpdates: true ) forAspect: #requestTimeout.
	serverPriority := ( AspectAdaptor subject: model sendsUpdates: true ) forAspect: #serverPriority.
	stopOnError := ( AspectAdaptor subject: model sendsUpdates: true ) forAspect: #stopOnError.
	transportExceptionPrinter := ( AspectAdaptor subject: model sendsUpdates: true ) forAspect: #transportExceptionPrinter.
	workerPriority := ( AspectAdaptor subject: model sendsUpdates: true ) forAspect: #workerPriority.</body>

<body package="Opentalk-Tools-Console" selector="release">release

	^super release</body>
</methods>

<methods>
<class-id>Opentalk.BrokerCreationDetailsSlice</class-id> <category>update</category>

<body package="Opentalk-Tools-Console" selector="updateConnectionOrientedDisplayState">updateConnectionOrientedDisplayState

	| bool asv |

	bool := ( self connectionOrientedAdaptorTypes includes: ( asv := model adaptorType ) )
				and: [ asv notNil ].

	( builder componentAt: #connectingTimeoutGroupBox ) isVisible: bool.
	( builder componentAt: #connectingTimeoutGroupBox ) isEnabled: bool.
	( builder componentAt: #connectingTimeoutInputField ) isVisible: bool.
	( builder componentAt: #connectingTimeoutInputField ) isEnabled: bool.

	( builder componentAt: #connectionTimeoutGroupBox ) isVisible: bool.
	( builder componentAt: #connectionTimeoutGroupBox ) isEnabled: bool.
	( builder componentAt: #connectionTimeoutInputField ) isVisible: bool.
	( builder componentAt: #connectionTimeoutInputField ) isEnabled: bool.

	( builder componentAt: #listenerPriorityGroupBox ) isVisible: bool.
	( builder componentAt: #listenerPriorityGroupBox ) isEnabled: bool.
	( builder componentAt: #listenerPriorityInputField ) isVisible: bool.
	( builder componentAt: #listenerPriorityInputField ) isEnabled: bool.

	( builder componentAt: #listenerBacklogGroupBox ) isVisible: bool.
	( builder componentAt: #listenerBacklogGroupBox ) isEnabled: bool.
	( builder componentAt: #listenerBacklogInputField ) isVisible: bool.
	( builder componentAt: #listenerBacklogInputField ) isEnabled: bool.</body>

<body package="Opentalk-Tools-Console" selector="updateDisplayState">updateDisplayState

	self updateConnectionOrientedDisplayState.
	self updateHttpTransportDisplayState.
	self updateSoapMarshalerDisplayState.</body>

<body package="Opentalk-Tools-Console" selector="updateHttpTransportDisplayState">updateHttpTransportDisplayState

	| bool |

	bool := ( model transportType == #http ).

	( builder componentAt: #httpSpecificGroupBox ) isVisible: bool.
	( builder componentAt: #httpSpecificGroupBox ) isEnabled: bool.
	( builder componentAt: #persistCheckBox ) isVisible: bool.
	( builder componentAt: #persistCheckBox ) isEnabled: bool.
	( builder componentAt: #stopOnErrorCheckBox ) isVisible: bool.
	( builder componentAt: #stopOnErrorCheckBox ) isEnabled: bool.

	( builder componentAt: #transportExceptionPrintingGroupBox ) isVisible: bool.
	( builder componentAt: #transportExceptionPrintingGroupBox ) isEnabled: bool.
	( builder componentAt: #transportEDPRadioButton ) isVisible: bool.
	( builder componentAt: #transportEDPRadioButton ) isEnabled: bool.
	( builder componentAt: #transportESPRadioButton ) isVisible: bool.
	( builder componentAt: #transportESPRadioButton ) isEnabled: bool.</body>

<body package="Opentalk-Tools-Console" selector="updateSoapMarshalerDisplayState">updateSoapMarshalerDisplayState

	| bool |

	bool := ( model marshalerType == #soap ).

	( builder componentAt: #marshalerExceptionPrintingGroupBox ) isVisible: bool.
	( builder componentAt: #marshalerExceptionPrintingGroupBox ) isEnabled: bool.
	( builder componentAt: #marshalerEDPRadioButton ) isVisible: bool.
	( builder componentAt: #marshalerEDPRadioButton ) isEnabled: bool.
	( builder componentAt: #marshalerESPRadioButton ) isVisible: bool.
	( builder componentAt: #marshalerESPRadioButton ) isEnabled: bool.</body>
</methods>

<methods>
<class-id>Opentalk.BasicRequestBroker class</class-id> <category>opentalk tool support</category>

<body package="Opentalk-Tools-Console" selector="inspectionSlices">inspectionSlices

	^	#(
			#( #Basic #basicRequestBrokerSlice #BasicRequestBrokerSlice )
		)</body>

<body package="Opentalk-Tools-Console" selector="modifiableComponentSelectors">modifiableComponentSelectors

	^#( #objectAdaptor )</body>
</methods>

<methods>
<class-id>Opentalk.RequestBroker class</class-id> <category>opentalk tool support</category>

<body package="Opentalk-Tools-Console" selector="inspectionSlices">inspectionSlices

	^	#(
			#( #Basic #basicRequestBrokerSlice #BasicRequestBrokerSlice )
			#( #'Selectors/Services' #requestBrokerSlice #RequestBrokerSlice )
		)</body>
</methods>

<methods>
<class-id>Opentalk.RequestBroker</class-id> <category>opentalk tool support</category>

<body package="Opentalk-Tools-Console" selector="serviceDictionary:">serviceDictionary: aDictionary

	serviceDictionary := aDictionary</body>
</methods>

<methods>
<class-id>Opentalk.ConnectionAdaptor class</class-id> <category>opentalk tool support</category>

<body package="Opentalk-Tools-Console" selector="inspectionSlices">inspectionSlices

	^	#(
			#( #'Address Forcing' #basicAdaptorSlice #BasicAdaptorSlice )
		)</body>
</methods>

<methods>
<class-id>Opentalk.GenericProtocol class</class-id> <category>opentalk tool support</category>

<body package="Opentalk-Tools-Console" selector="modifiableComponentSelectors">modifiableComponentSelectors

	^#()</body>
</methods>

<methods>
<class-id>Opentalk.GenericProtocol</class-id> <category>opentalk tool support</category>

<body package="Opentalk-Tools-Console" selector="allInspectionSlices">allInspectionSlices

	| oc |

	oc := OrderedCollection withAll: self class inspectionSlices.
	self class modifiableComponentSelectors 
		inject:	oc
		into:	[ :x :y |	| sc |
						( ( sc := self perform: y ) notNil )
							ifTrue:	[ x addAll: ( sc allInspectionSlices ) ]
				].
	^oc</body>
</methods>

<methods>
<class-id>Opentalk.ConnectionLessAdaptor class</class-id> <category>opentalk tool support</category>

<body package="Opentalk-Tools-Console" selector="inspectionSlices">inspectionSlices

	^	#(
			#( #'Address Forcing' #basicAdaptorSlice #BasicAdaptorSlice )
		)</body>
</methods>

<methods>
<class-id>Opentalk.OpentalkConsoleSlice class</class-id> <category>interface specs</category>

<body package="Opentalk-Tools-Console" selector="nullSlice">nullSlice
	"UIPainter new openOnClass: self andSelector: #nullSlice"

	&lt;resource: #canvas&gt;
	^#(#{UI.FullSpec} 
		#window: 
		#(#{UI.WindowSpec} 
			#label: #(#{Kernel.UserMessage} #key: #NullSlice #defaultString: 'Null Slice' #catalogID: #opentalktools) 
			#min: #(#{Core.Point} 732 263 ) 
			#max: #(#{Core.Point} 732 263 ) 
			#bounds: #(#{Graphics.Rectangle} 283 408 1015 671 ) ) 
		#component: 
		#(#{UI.SpecCollection} 
			#collection: #() ) )</body>
</methods>

<methods>
<class-id>Opentalk.BasicRequestBrokerSlice class</class-id> <category>interface specs</category>

<body package="Opentalk-Tools-Console" selector="basicRequestBrokerSlice">basicRequestBrokerSlice
	"Tools.UIPainter new openOnClass: self andSelector: #basicRequestBrokerSlice"

	&lt;resource: #canvas&gt;
	^#(#{UI.FullSpec} 
		#window: 
		#(#{UI.WindowSpec} 
			#label: #(#{Kernel.UserMessage} #key: #BasicRequestBrokerSlice #defaultString: 'Basic Request Broker Slice' #catalogID: #opentalktools) 
			#min: #(#{Core.Point} 855 313 ) 
			#max: #(#{Core.Point} 855 313 ) 
			#bounds: #(#{Graphics.Rectangle} 277 426 1132 739 ) ) 
		#component: 
		#(#{UI.SpecCollection} 
			#collection: #(
				#(#{UI.GroupBoxSpec} 
					#layout: #(#{Graphics.Rectangle} 6 0 213 90 ) 
					#name: #errorHandlingGroupBox 
					#label: #(#{Kernel.UserMessage} #key: #errorHandling #defaultString: 'error handling' #catalogID: #opentalktools) ) 
				#(#{UI.RadioButtonSpec} 
					#layout: #(#{Core.Point} 46 20 ) 
					#name: #handleErrorRadioButton 
					#model: #errorHandling 
					#callbacksSpec: 
					#(#{UI.UIEventCallbackSubSpec} 
						#valueChangeSelector: #nowBuffering ) 
					#label: #(#{Kernel.UserMessage} #key: #handleErrors #defaultString: 'handle errors' #catalogID: #opentalktools) 
					#select: #handleErrors ) 
				#(#{UI.RadioButtonSpec} 
					#layout: #(#{Core.Point} 46 35 ) 
					#name: #showErrorsRadioButton 
					#model: #errorHandling 
					#callbacksSpec: 
					#(#{UI.UIEventCallbackSubSpec} 
						#valueChangeSelector: #nowBuffering ) 
					#label: #(#{Kernel.UserMessage} #key: #showErrors #defaultString: 'show errors' #catalogID: #opentalktools) 
					#select: #showErrors ) 
				#(#{UI.RadioButtonSpec} 
					#layout: #(#{Core.Point} 46 50 ) 
					#name: #haltErrorsRadioButton 
					#model: #errorHandling 
					#callbacksSpec: 
					#(#{UI.UIEventCallbackSubSpec} 
						#valueChangeSelector: #nowBuffering ) 
					#label: #(#{Kernel.UserMessage} #key: #haltErrors #defaultString: 'halt errors' #catalogID: #opentalktools) 
					#select: #haltErrors ) 
				#(#{UI.RadioButtonSpec} 
					#layout: #(#{Core.Point} 46 65 ) 
					#name: #passErrorsRadioButton 
					#model: #errorHandling 
					#callbacksSpec: 
					#(#{UI.UIEventCallbackSubSpec} 
						#valueChangeSelector: #nowBuffering ) 
					#label: #(#{Kernel.UserMessage} #key: #passErrors #defaultString: 'pass errors' #catalogID: #opentalktools) 
					#select: #passErrors ) 
				#(#{UI.GroupBoxSpec} 
					#layout: #(#{Graphics.Rectangle} 6 145 213 200 ) 
					#name: #requestTypeGroupBox 
					#label: #(#{Kernel.UserMessage} #key: #requestType #defaultString: 'request type' #catalogID: #opentalktools) ) 
				#(#{UI.GroupBoxSpec} 
					#layout: #(#{Graphics.Rectangle} 6 90 213 145 ) 
					#name: #portGroupBox 
					#label: #(#{Kernel.UserMessage} #key: #port #defaultString: 'port' #catalogID: #opentalktools) ) 
				#(#{UI.GroupBoxSpec} 
					#layout: #(#{Graphics.Rectangle} 430 0 849 310 ) 
					#name: #actionsGroupBox 
					#label: #(#{Kernel.UserMessage} #key: #actions #defaultString: 'actions' #catalogID: #opentalktools) ) 
				#(#{UI.ActionButtonSpec} 
					#layout: #(#{Graphics.Rectangle} 654 35 829 60 ) 
					#name: #initializeActionButton 
					#model: #initializeBroker 
					#label: #(#{Kernel.UserMessage} #key: #initialize #defaultString: 'initialize' #catalogID: #opentalktools) 
					#defaultable: true ) 
				#(#{UI.ActionButtonSpec} 
					#layout: #(#{Graphics.Rectangle} 654 65 829 90 ) 
					#name: #releaseActionButton 
					#model: #releaseBroker 
					#label: #(#{Kernel.UserMessage} #key: #release #defaultString: 'release' #catalogID: #opentalktools) 
					#defaultable: true ) 
				#(#{UI.InputFieldSpec} 
					#layout: #(#{Graphics.Rectangle} 16 165 203 190 ) 
					#name: #requestTypeInputField 
					#model: #requestType 
					#callbacksSpec: 
					#(#{UI.UIEventCallbackSubSpec} 
						#valueChangeSelector: #nowBuffering ) 
					#type: #symbol ) 
				#(#{UI.InputFieldSpec} 
					#layout: #(#{Graphics.Rectangle} 16 110 203 135 ) 
					#name: #portInputField 
					#model: #port 
					#callbacksSpec: 
					#(#{UI.UIEventCallbackSubSpec} 
						#valueChangeSelector: #nowBuffering ) 
					#type: #number ) 
				#(#{UI.GroupBoxSpec} 
					#layout: #(#{Graphics.Rectangle} 440 15 634 70 ) 
					#name: #runStateGroupBox 
					#label: #(#{Kernel.UserMessage} #key: #runState #defaultString: 'run state' #catalogID: #opentalktools) ) 
				#(#{UI.RegionSpec} 
					#layout: #(#{Graphics.Rectangle} 455 40 470 55 ) 
					#name: #indicatorLightRegion 
					#lineWidth: 1 
					#regionType: #ellipse ) 
				#(#{UI.ActionButtonSpec} 
					#layout: #(#{Graphics.Rectangle} 480 35 624 60 ) 
					#name: #startOrStopActionButton 
					#model: #startOrStop 
					#defaultable: true ) 
				#(#{UI.GroupBoxSpec} 
					#layout: #(#{Graphics.Rectangle} 440 70 636 234 ) 
					#name: #peerBrokerPingTestingGroupBox 
					#flags: 48 
					#label: #(#{Kernel.UserMessage} #key: #peerBrokerPingTesting #defaultString: 'peer broker ping testing' #catalogID: #opentalktools) ) 
				#(#{UI.InputFieldSpec} 
					#layout: #(#{Graphics.Rectangle} 461 105 614 130 ) 
					#name: #pingAddressInputField 
					#flags: 56 
					#model: #pingAddress 
					#type: #bytearray ) 
				#(#{UI.InputFieldSpec} 
					#layout: #(#{Graphics.Rectangle} 461 160 614 185 ) 
					#name: #pingPortInputField 
					#flags: 56 
					#model: #pingPort 
					#type: #number ) 
				#(#{UI.ActionButtonSpec} 
					#layout: #(#{Graphics.Rectangle} 451 200 624 225 ) 
					#name: #pingActionButton 
					#flags: 56 
					#model: #ping 
					#label: #(#{Kernel.UserMessage} #key: #ping #defaultString: 'ping' #catalogID: #opentalktools) 
					#defaultable: true ) 
				#(#{UI.GroupBoxSpec} 
					#layout: #(#{Graphics.Rectangle} 6 200 213 255 ) 
					#name: #classSideBrokerIdGroupBox 
					#label: #(#{Kernel.UserMessage} #key: #classsideBrokerId #defaultString: 'class-side broker id' #catalogID: #opentalktools) ) 
				#(#{UI.InputFieldSpec} 
					#layout: #(#{Graphics.Rectangle} 16 220 203 245 ) 
					#name: #classSideBrokerIdInputField 
					#model: #classSideBrokerId 
					#callbacksSpec: 
					#(#{UI.UIEventCallbackSubSpec} 
						#valueChangeSelector: #nowBuffering ) 
					#type: #symbol ) 
				#(#{UI.InputFieldSpec} 
					#layout: #(#{Graphics.Rectangle} 16 275 203 300 ) 
					#name: #classSideDefaultPortInputField 
					#model: #classSideDefaultPort 
					#callbacksSpec: 
					#(#{UI.UIEventCallbackSubSpec} 
						#valueChangeSelector: #nowBuffering ) 
					#type: #number ) 
				#(#{UI.GroupBoxSpec} 
					#layout: #(#{Graphics.Rectangle} 6 255 213 310 ) 
					#name: #classSideDefaultPortGroupBox 
					#label: #(#{Kernel.UserMessage} #key: #classsideDefaultPort #defaultString: 'class-side default port' #catalogID: #opentalktools) ) 
				#(#{UI.GroupBoxSpec} 
					#layout: #(#{Graphics.Rectangle} 451 85 624 140 ) 
					#name: #pingAddressGroupBox 
					#flags: 48 
					#label: #(#{Kernel.UserMessage} #key: #pingAddress #defaultString: 'ping address' #catalogID: #opentalktools) ) 
				#(#{UI.GroupBoxSpec} 
					#layout: #(#{Graphics.Rectangle} 451 140 624 195 ) 
					#name: #pingPortGroupBox 
					#flags: 48 
					#label: #(#{Kernel.UserMessage} #key: #pingPort #defaultString: 'ping port' #catalogID: #opentalktools) ) 
				#(#{UI.GroupBoxSpec} 
					#layout: #(#{Graphics.Rectangle} 644 15 839 100 ) 
					#name: #basicStateGroupBox 
					#label: #(#{Kernel.UserMessage} #key: #basicState #defaultString: 'basic state' #catalogID: #opentalktools) ) 
				#(#{UI.GroupBoxSpec} 
					#layout: #(#{Graphics.Rectangle} 218 0 425 90 ) 
					#name: #configuredPropertiesGroupBox 
					#label: #(#{Kernel.UserMessage} #key: #configuredProperties #defaultString: 'configured properties' #catalogID: #opentalktools) ) 
				#(#{UI.LabelSpec} 
					#layout: #(#{Core.Point} 238 20 ) 
					#name: #soReuseAddrLabel 
					#label: #(#{Kernel.UserMessage} #key: #soReuseAddrC #defaultString: 'soReuseAddr:' #catalogID: #opentalktools) ) 
				#(#{UI.LabelSpec} 
					#properties: #(#{UI.PropertyListDictionary} #labelFromApplication false ) 
					#layout: #(#{Core.Point} 340 20 ) 
					#name: #soReuseAddrBooleanLabel 
					#label: #(#{Kernel.UserMessage} #key: #flip #defaultString: 'flip' #catalogID: #opentalktools) ) ) ) )</body>
</methods>

<methods>
<class-id>Opentalk.ComponentPropertiesSubcanvas class</class-id> <category>interface specs</category>

<body package="Opentalk-Tools-Console" selector="windowSpec">windowSpec
	"Tools.UIPainter new openOnClass: self andSelector: #windowSpec"

	&lt;resource: #canvas&gt;
	^#(#{UI.FullSpec} 
		#window: 
		#(#{UI.WindowSpec} 
			#label: #(#{Kernel.UserMessage} #key: #ComponentPropertiesSubcanvas #defaultString: 'Component Properties Subcanvas' #catalogID: #opentalktools) 
			#min: #(#{Core.Point} 870 380 ) 
			#max: #(#{Core.Point} 870 380 ) 
			#bounds: #(#{Graphics.Rectangle} 77 377 947 757 ) ) 
		#component: 
		#(#{UI.SpecCollection} 
			#collection: #(
				#(#{UI.TabControlSpec} 
					#layout: #(#{Graphics.Rectangle} 5 0 865 345 ) 
					#name: #sliceTabControl 
					#model: #sliceMasterList 
					#labels: #() ) 
				#(#{UI.ActionButtonSpec} 
					#layout: #(#{Graphics.Rectangle} 5 350 80 375 ) 
					#name: #applyActionButton 
					#model: #apply 
					#label: #(#{Kernel.UserMessage} #key: #apply #defaultString: 'apply' #catalogID: #opentalktools) 
					#defaultable: true ) 
				#(#{UI.ActionButtonSpec} 
					#layout: #(#{Graphics.Rectangle} 85 350 160 375 ) 
					#name: #cancelActionButton 
					#model: #cancel 
					#label: #(#{Kernel.UserMessage} #key: #cancel #defaultString: 'cancel' #catalogID: #opentalktools) 
					#defaultable: true ) 
				#(#{UI.ActionButtonSpec} 
					#layout: #(#{Graphics.Rectangle} 165 350 240 375 ) 
					#name: #prevActionButton 
					#model: #prev 
					#label: #(#{Kernel.UserMessage} #key: #prev #defaultString: 'prev' #catalogID: #opentalktools) 
					#defaultable: true ) 
				#(#{UI.ActionButtonSpec} 
					#layout: #(#{Graphics.Rectangle} 245 350 320 375 ) 
					#name: #nextActionButton 
					#model: #next 
					#label: #(#{Kernel.UserMessage} #key: #next #defaultString: 'next' #catalogID: #opentalktools) 
					#defaultable: true ) 
				#(#{UI.ActionButtonSpec} 
					#layout: #(#{Graphics.Rectangle} 5 350 80 375 ) 
					#name: #createActionButton 
					#flags: 56 
					#model: #create 
					#label: #(#{Kernel.UserMessage} #key: #create #defaultString: 'create' #catalogID: #opentalktools) 
					#defaultable: true ) ) ) )</body>
</methods>

<methods>
<class-id>Opentalk.OpentalkConsole class</class-id> <category>interface specs</category>

<body package="Opentalk-Tools-Console" selector="windowSpec">windowSpec
	"Tools.UIPainter new openOnClass: self andSelector: #windowSpec"

	&lt;resource: #canvas&gt;
	^#(#{UI.FullSpec} 
		#window: 
		#(#{UI.WindowSpec} 
			#label: #(#{Kernel.UserMessage} #key: #OpentalkConsole #defaultString: 'Opentalk Console' #catalogID: #opentalktools) 
			#min: #(#{Core.Point} 870 560 ) 
			#max: #(#{Core.Point} 870 560 ) 
			#bounds: #(#{Graphics.Rectangle} 99 87 969 647 ) 
			#flags: 4 
			#menu: #menuBar ) 
		#component: 
		#(#{UI.SpecCollection} 
			#collection: #(
				#(#{UI.SubCanvasSpec} 
					#layout: #(#{Graphics.Rectangle} 0 0 870 147 ) 
					#name: #componentListSubcanvas 
					#flags: 0 
					#majorKey: #{ComponentListSubcanvas} 
					#minorKey: #windowSpec 
					#clientKey: #componentListSubcanvas ) 
				#(#{UI.SubCanvasSpec} 
					#layout: #(#{Graphics.Rectangle} 0 155 870 535 ) 
					#name: #componentPropertiesSubcanvas 
					#flags: 0 
					#majorKey: #{ComponentPropertiesSubcanvas} 
					#minorKey: #windowSpec 
					#clientKey: #componentPropertiesSubcanvas ) ) ) )</body>
</methods>

<methods>
<class-id>Opentalk.OpentalkConsole class</class-id> <category>resources</category>

<body package="Opentalk-Tools-Console" selector="menuBar">menuBar
	"Tools.MenuEditor new openOnClass: self andSelector: #menuBar"

	&lt;resource: #menu&gt;
	^#(#{UI.Menu} #(
			#(#{UI.MenuItem} 
				#rawLabel: #(#{Kernel.UserMessage} #key: #_Console #defaultString: '&amp;Console' #catalogID: #opentalktools) 
				#nameKey: #console 
				#submenu: #(#{UI.Menu} #(
						#(#{UI.MenuItem} 
							#rawLabel: #(#{Kernel.UserMessage} #key: #_Refresh #defaultString: '&amp;Refresh' #catalogID: #opentalktools) 
							#nameKey: #refreshConsole 
							#value: #refreshConsole ) ) #(1 ) nil ) ) 
			#(#{UI.MenuItem} 
				#rawLabel: #(#{Kernel.UserMessage} #key: #_BrokerAdaptor #defaultString: '&amp;Broker/Adaptor' #catalogID: #opentalktools) 
				#submenu: #(#{UI.Menu} #(
						#(#{UI.MenuItem} 
							#rawLabel: #(#{Kernel.UserMessage} #key: #Star_t #defaultString: 'Star&amp;t' #catalogID: #opentalktools) 
							#nameKey: #startComponent 
							#value: #startComponent ) 
						#(#{UI.MenuItem} 
							#rawLabel: #(#{Kernel.UserMessage} #key: #Sto_p #defaultString: 'Sto&amp;p' #catalogID: #opentalktools) 
							#nameKey: #stopComponent 
							#value: #stopComponent ) 
						#(#{UI.MenuItem} 
							#rawLabel: #(#{Kernel.UserMessage} #key: #I_ncrementPort #defaultString: 'I&amp;ncrement port' #catalogID: #opentalktools) 
							#nameKey: #incrementComponentPort 
							#value: #incrementComponentPort ) 
						#(#{UI.MenuItem} 
							#rawLabel: #(#{Kernel.UserMessage} #key: #D_ecrementPort #defaultString: 'D&amp;ecrement port' #catalogID: #opentalktools) 
							#nameKey: #decrementComponentPort 
							#value: #decrementComponentPort ) 
						#(#{UI.MenuItem} 
							#rawLabel: #(#{Kernel.UserMessage} #key: #_Inspect #defaultString: '&amp;Inspect' #catalogID: #opentalktools) 
							#nameKey: #inspectComponent 
							#value: #inspectComponent ) 
						#(#{UI.MenuItem} 
							#rawLabel: #(#{Kernel.UserMessage} #key: #_Remove #defaultString: '&amp;Remove' #catalogID: #opentalktools) 
							#nameKey: #removeComponent 
							#value: #removeComponent ) ) #(2 2 1 1 ) nil ) ) ) #(2 ) nil ) decodeAsLiteralArray</body>
</methods>

<methods>
<class-id>Opentalk.BrokerCreationBasicsSlice class</class-id> <category>interface specs</category>

<body package="Opentalk-Tools-Console" selector="brokerCreationBasicsSlice">brokerCreationBasicsSlice
	"Tools.UIPainter new openOnClass: self andSelector: #brokerCreationBasicsSlice"

	&lt;resource: #canvas&gt;
	^#(#{UI.FullSpec} 
		#window: 
		#(#{UI.WindowSpec} 
			#label: #(#{Kernel.UserMessage} #key: #BrokerCreationBasicsSlice #defaultString: 'Broker Creation Basics Slice' #catalogID: #opentalktools) 
			#min: #(#{Core.Point} 855 313 ) 
			#max: #(#{Core.Point} 855 313 ) 
			#bounds: #(#{Graphics.Rectangle} 169 384 1024 697 ) ) 
		#component: 
		#(#{UI.SpecCollection} 
			#collection: #(
				#(#{UI.InputFieldSpec} 
					#layout: #(#{Graphics.Rectangle} 16 220 203 245 ) 
					#name: #portInputField 
					#model: #port 
					#type: #number ) 
				#(#{UI.GroupBoxSpec} 
					#layout: #(#{Graphics.Rectangle} 6 200 213 255 ) 
					#name: #portGroupBox 
					#label: #(#{Kernel.UserMessage} #key: #port #defaultString: 'port' #catalogID: #opentalktools) ) 
				#(#{UI.InputFieldSpec} 
					#layout: #(#{Graphics.Rectangle} 16 165 203 190 ) 
					#name: #brokerIdInputField 
					#model: #brokerId 
					#type: #symbol ) 
				#(#{UI.GroupBoxSpec} 
					#layout: #(#{Graphics.Rectangle} 6 145 213 200 ) 
					#name: #brokerIdGroupBox 
					#label: #(#{Kernel.UserMessage} #key: #brokerId #defaultString: 'broker id' #catalogID: #opentalktools) ) 
				#(#{UI.SequenceViewSpec} 
					#layout: #(#{Graphics.Rectangle} 652 20 839 135 ) 
					#name: #marshalerTypeList 
					#model: #marshalerTypeList 
					#selectionType: #checkMark ) 
				#(#{UI.GroupBoxSpec} 
					#layout: #(#{Graphics.Rectangle} 642 0 849 145 ) 
					#name: #marshalerTypeGroupBox 
					#label: #(#{Kernel.UserMessage} #key: #marshalerType #defaultString: 'marshaler type' #catalogID: #opentalktools) ) 
				#(#{UI.SequenceViewSpec} 
					#layout: #(#{Graphics.Rectangle} 440 20 627 135 ) 
					#name: #transportTypeList 
					#model: #transportTypeList 
					#selectionType: #checkMark ) 
				#(#{UI.GroupBoxSpec} 
					#layout: #(#{Graphics.Rectangle} 430 0 637 145 ) 
					#name: #transportTypeGroupBox 
					#label: #(#{Kernel.UserMessage} #key: #transportType #defaultString: 'transport type' #catalogID: #opentalktools) ) 
				#(#{UI.SequenceViewSpec} 
					#layout: #(#{Graphics.Rectangle} 228 20 415 135 ) 
					#name: #adaptorTypeList 
					#model: #adaptorTypeList 
					#selectionType: #checkMark ) 
				#(#{UI.GroupBoxSpec} 
					#layout: #(#{Graphics.Rectangle} 218 0 425 145 ) 
					#name: #adaptorTypeGroupBox 
					#label: #(#{Kernel.UserMessage} #key: #adaptorType #defaultString: 'adaptor type' #catalogID: #opentalktools) ) 
				#(#{UI.SequenceViewSpec} 
					#layout: #(#{Graphics.Rectangle} 16 20 203 135 ) 
					#name: #brokerTypeList 
					#model: #brokerTypeList 
					#selectionType: #checkMark ) 
				#(#{UI.GroupBoxSpec} 
					#layout: #(#{Graphics.Rectangle} 6 0 213 145 ) 
					#name: #brokerTypeGroupBox 
					#label: #(#{Kernel.UserMessage} #key: #brokerType #defaultString: 'broker type' #catalogID: #opentalktools) ) 
				#(#{UI.GroupBoxSpec} 
					#layout: #(#{Graphics.Rectangle} 430 145 637 200 ) 
					#name: #netmaskGroupBox 
					#flags: 48 
					#label: #(#{Kernel.UserMessage} #key: #netmask #defaultString: 'netmask' #catalogID: #opentalktools) ) 
				#(#{UI.InputFieldSpec} 
					#layout: #(#{Graphics.Rectangle} 440 165 627 190 ) 
					#name: #netmaskInputField 
					#flags: 56 
					#model: #netmask 
					#type: #bytearray ) 
				#(#{UI.SequenceViewSpec} 
					#layout: #(#{Graphics.Rectangle} 652 165 839 299 ) 
					#name: #bindingNamedList 
					#flags: 61 
					#model: #bindingNamedList 
					#useModifierKeys: true 
					#selectionType: #checkMark ) 
				#(#{UI.GroupBoxSpec} 
					#layout: #(#{Graphics.Rectangle} 218 145 425 200 ) 
					#name: #adaptorSoReuseAddrGroupBox 
					#label: #(#{Kernel.UserMessage} #key: #soReuseAddr #defaultString: 'soReuseAddr' #catalogID: #opentalktools) ) 
				#(#{UI.GroupBoxSpec} 
					#layout: #(#{Graphics.Rectangle} 430 200 637 255 ) 
					#name: #transportSoReuseAddrGroupBox 
					#label: #(#{Kernel.UserMessage} #key: #soReuseAddr #defaultString: 'soReuseAddr' #catalogID: #opentalktools) ) 
				#(#{UI.GroupBoxSpec} 
					#layout: #(#{Graphics.Rectangle} 642 145 849 309 ) 
					#name: #bindingNamedGroupBox 
					#flags: 48 
					#label: #(#{Kernel.UserMessage} #key: #binding #defaultString: 'binding' #catalogID: #opentalktools) ) 
				#(#{UI.CheckBoxSpec} 
					#layout: #(#{Core.Point} 238 167 ) 
					#name: #adaptorSoReuseAddrCheckBox 
					#model: #adaptorSoReuseAddr 
					#label: #(#{Kernel.UserMessage} #key: #reuseAdaptorPortNumber #defaultString: 'reuse adaptor port number' #catalogID: #opentalktools) ) 
				#(#{UI.CheckBoxSpec} 
					#layout: #(#{Core.Point} 450 222 ) 
					#name: #transportSoReuseAddrCheckBox 
					#model: #transportSoReuseAddr 
					#label: #(#{Kernel.UserMessage} #key: #reuseTransportPortNumber #defaultString: 'reuse transport port number' #catalogID: #opentalktools) ) ) ) )</body>
</methods>

<methods>
<class-id>Opentalk.RequestBrokerSlice class</class-id> <category>interface specs</category>

<body package="Opentalk-Tools-Console" selector="requestBrokerSlice">requestBrokerSlice
	"Tools.UIPainter new openOnClass: self andSelector: #requestBrokerSlice"

	&lt;resource: #canvas&gt;
	^#(#{UI.FullSpec} 
		#window: 
		#(#{UI.WindowSpec} 
			#label: #(#{Kernel.UserMessage} #key: #RequestBrokerSlice #defaultString: 'Request Broker Slice' #catalogID: #opentalktools) 
			#min: #(#{Core.Point} 855 313 ) 
			#max: #(#{Core.Point} 855 3263 ) 
			#bounds: #(#{Graphics.Rectangle} 169 384 1024 697 ) ) 
		#component: 
		#(#{UI.SpecCollection} 
			#collection: #(
				#(#{UI.GroupBoxSpec} 
					#layout: #(#{Graphics.Rectangle} 6 0 213 310 ) 
					#name: #openSelectorsGroupBox 
					#label: #(#{Kernel.UserMessage} #key: #openSelectors #defaultString: 'open selectors' #catalogID: #opentalktools) ) 
				#(#{UI.GroupBoxSpec} 
					#layout: #(#{Graphics.Rectangle} 218 0 637 310 ) 
					#name: #brokerServicesGroupBox 
					#label: #(#{Kernel.UserMessage} #key: #brokerServices #defaultString: 'broker services' #catalogID: #opentalktools) ) 
				#(#{UI.SequenceViewSpec} 
					#layout: #(#{Graphics.Rectangle} 16 20 203 210 ) 
					#name: #openSelectorsList 
					#model: #openSelectorsList 
					#useModifierKeys: true 
					#selectionType: #highlight ) 
				#(#{UI.InputFieldSpec} 
					#layout: #(#{Graphics.Rectangle} 26 230 193 255 ) 
					#name: #currentOpenSelectorInputField 
					#model: #currentOpenSelector ) 
				#(#{UI.ActionButtonSpec} 
					#layout: #(#{Graphics.Rectangle} 16 275 104 300 ) 
					#name: #addSelectorActionButton 
					#model: #addSelector 
					#label: #(#{Kernel.UserMessage} #key: #add #defaultString: 'add' #catalogID: #opentalktools) 
					#defaultable: true ) 
				#(#{UI.ActionButtonSpec} 
					#layout: #(#{Graphics.Rectangle} 114 275 203 300 ) 
					#name: #removeSelectorActionButton 
					#model: #removeSelector 
					#label: #(#{Kernel.UserMessage} #key: #remove #defaultString: 'remove' #catalogID: #opentalktools) 
					#defaultable: true ) 
				#(#{UI.DataSetSpec} 
					#properties: #(#{UI.PropertyListDictionary} #showVerticalLines false #allowColumnReordering true #rowSize 18 #allowColumnResizing true #allowSorting false #showHorizontalLines false ) 
					#layout: #(#{Graphics.Rectangle} 228 20 627 125 ) 
					#name: #servicesDataset 
					#flags: 13 
					#model: #servicesList 
					#columns: #(
						#(#{UI.DataSetColumnSpec} 
							#properties: #(#{UI.PropertyListDictionary} #allowSorting true #labelFromApplication false ) 
							#model: #'servicesListSH key' 
							#label: #(#{Kernel.UserMessage} #key: #serviceId #defaultString: 'service id' #catalogID: #opentalktools) 
							#labelIsImage: false 
							#width: 120 
							#rendererType: #Text 
							#editorType: #None 
							#type: #symbol 
							#noScroll: false 
							#formatString: '' 
							#labelsAsButtons: true ) 
						#(#{UI.DataSetColumnSpec} 
							#properties: #(#{UI.PropertyListDictionary} #allowSorting true #labelFromApplication false ) 
							#model: #'servicesListSH value classname' 
							#label: #(#{Kernel.UserMessage} #key: #serviceProvider #defaultString: 'service provider' #catalogID: #opentalktools) 
							#labelIsImage: false 
							#width: 264 
							#rendererType: #Text 
							#editorType: #None 
							#noScroll: false 
							#formatString: '' 
							#labelsAsButtons: true ) ) 
					#labelsAsButtons: true ) 
				#(#{UI.InputFieldSpec} 
					#layout: #(#{Graphics.Rectangle} 236 150 617 175 ) 
					#name: #currentServiceIdInputField 
					#model: #currentServiceId 
					#type: #symbol ) 
				#(#{UI.ActionButtonSpec} 
					#layout: #(#{Graphics.Rectangle} 228 275 316 300 ) 
					#name: #addServiceActionButton 
					#model: #addService 
					#label: #(#{Kernel.UserMessage} #key: #add #defaultString: 'add' #catalogID: #opentalktools) 
					#defaultable: true ) 
				#(#{UI.ActionButtonSpec} 
					#layout: #(#{Graphics.Rectangle} 326 275 414 300 ) 
					#name: #removeServiceActionButton 
					#model: #removeService 
					#label: #(#{Kernel.UserMessage} #key: #remove #defaultString: 'remove' #catalogID: #opentalktools) 
					#defaultable: true ) 
				#(#{UI.GroupBoxSpec} 
					#layout: #(#{Graphics.Rectangle} 16 210 203 265 ) 
					#name: #selectorGroupBox 
					#label: #(#{Kernel.UserMessage} #key: #selector #defaultString: 'selector' #catalogID: #opentalktools) ) 
				#(#{UI.GroupBoxSpec} 
					#layout: #(#{Graphics.Rectangle} 226 130 627 185 ) 
					#name: #serviceIdGroupBox 
					#label: #(#{Kernel.UserMessage} #key: #serviceId #defaultString: 'service id' #catalogID: #opentalktools) ) 
				#(#{UI.GroupBoxSpec} 
					#layout: #(#{Graphics.Rectangle} 226 185 627 265 ) 
					#name: #serviceCreationExpressionGroupBox 
					#label: #(#{Kernel.UserMessage} #key: #serviceCreationExpression #defaultString: 'service creation expression' #catalogID: #opentalktools) ) 
				#(#{UI.TextEditorSpec} 
					#layout: #(#{Graphics.Rectangle} 236 205 617 255 ) 
					#name: #serviceCReationExpressionTextEditor 
					#model: #serviceCreationExpression 
					#tabRequiresControl: true ) ) ) )</body>
</methods>

<methods>
<class-id>Opentalk.BasicAdaptorSlice class</class-id> <category>interface specs</category>

<body package="Opentalk-Tools-Console" selector="basicAdaptorSlice">basicAdaptorSlice
	"Tools.UIPainter new openOnClass: self andSelector: #basicAdaptorSlice"

	&lt;resource: #canvas&gt;
	^#(#{UI.FullSpec} 
		#window: 
		#(#{UI.WindowSpec} 
			#label: #(#{Kernel.UserMessage} #key: #BasicAdaptorSlice #defaultString: 'Basic Adaptor Slice' #catalogID: #opentalktools) 
			#min: #(#{Core.Point} 855 313 ) 
			#max: #(#{Core.Point} 855 313 ) 
			#bounds: #(#{Graphics.Rectangle} 124 116 979 429 ) ) 
		#component: 
		#(#{UI.SpecCollection} 
			#collection: #(
				#(#{UI.InputFieldSpec} 
					#layout: #(#{Graphics.Rectangle} 16 20 203 45 ) 
					#name: #localAddressInputField 
					#model: #localAddress 
					#isReadOnly: true 
					#type: #bytearray ) 
				#(#{UI.GroupBoxSpec} 
					#layout: #(#{Graphics.Rectangle} 6 0 213 55 ) 
					#name: #localAddressGroupBox 
					#label: #(#{Kernel.UserMessage} #key: #localAddressReadOnly #defaultString: 'local address (read only)' #catalogID: #opentalktools) ) 
				#(#{UI.GroupBoxSpec} 
					#layout: #(#{Graphics.Rectangle} 6 55 213 110 ) 
					#name: #accessAddressGroupBox 
					#label: #(#{Kernel.UserMessage} #key: #accessAddress #defaultString: 'accessAddress' #catalogID: #opentalktools) ) 
				#(#{UI.InputFieldSpec} 
					#layout: #(#{Graphics.Rectangle} 16 75 203 100 ) 
					#name: #accessAddressInputField 
					#model: #accessAddress 
					#type: #bytearray ) 
				#(#{UI.GroupBoxSpec} 
					#layout: #(#{Graphics.Rectangle} 6 110 213 165 ) 
					#name: #portGroupBox 
					#label: #(#{Kernel.UserMessage} #key: #port #defaultString: 'port' #catalogID: #opentalktools) ) 
				#(#{UI.InputFieldSpec} 
					#layout: #(#{Graphics.Rectangle} 16 130 203 155 ) 
					#name: #portInputField 
					#model: #port 
					#type: #number ) ) ) )</body>
</methods>

<methods>
<class-id>Opentalk.BrokerCreationDetailsSlice class</class-id> <category>interface specs</category>

<body package="Opentalk-Tools-Console" selector="brokerCreationDetailsSlice">brokerCreationDetailsSlice
	"Tools.UIPainter new openOnClass: self andSelector: #brokerCreationDetailsSlice"

	&lt;resource: #canvas&gt;
	^#(#{UI.FullSpec} 
		#window: 
		#(#{UI.WindowSpec} 
			#label: #(#{Kernel.UserMessage} #key: #BrokerCreationDetailsSlice #defaultString: 'Broker Creation Details Slice' #catalogID: #opentalktools) 
			#min: #(#{Core.Point} 855 313 ) 
			#max: #(#{Core.Point} 855 313 ) 
			#bounds: #(#{Graphics.Rectangle} 169 384 1024 697 ) ) 
		#component: 
		#(#{UI.SpecCollection} 
			#collection: #(
				#(#{UI.InputFieldSpec} 
					#layout: #(#{Graphics.Rectangle} 652 20 839 45 ) 
					#name: #marshalingBufferSizeInputField1 
					#model: #marshalingBufferSize 
					#type: #number ) 
				#(#{UI.GroupBoxSpec} 
					#layout: #(#{Graphics.Rectangle} 642 0 849 55 ) 
					#name: #marshalingBufferSizeGroupBox 
					#label: #(#{Kernel.UserMessage} #key: #marshalingBufferSize #defaultString: 'marshaling buffer size' #catalogID: #opentalktools) ) 
				#(#{UI.InputFieldSpec} 
					#layout: #(#{Graphics.Rectangle} 440 130 627 155 ) 
					#name: #workerPriorityInputField 
					#model: #workerPriority 
					#type: #number ) 
				#(#{UI.GroupBoxSpec} 
					#layout: #(#{Graphics.Rectangle} 430 110 637 165 ) 
					#name: #workerPriorityGroupBox 
					#label: #(#{Kernel.UserMessage} #key: #workerPriority #defaultString: 'worker priority' #catalogID: #opentalktools) ) 
				#(#{UI.InputFieldSpec} 
					#layout: #(#{Graphics.Rectangle} 440 75 627 100 ) 
					#name: #serverPriorityInputField 
					#model: #serverPriority 
					#type: #number ) 
				#(#{UI.GroupBoxSpec} 
					#layout: #(#{Graphics.Rectangle} 430 55 637 110 ) 
					#name: #serverPriorityGroupBox 
					#label: #(#{Kernel.UserMessage} #key: #serverPriority #defaultString: 'server priority' #catalogID: #opentalktools) ) 
				#(#{UI.InputFieldSpec} 
					#layout: #(#{Graphics.Rectangle} 440 20 627 45 ) 
					#name: #readWriteBufferSizeInputField 
					#model: #readWriteBufferSize 
					#type: #number ) 
				#(#{UI.GroupBoxSpec} 
					#layout: #(#{Graphics.Rectangle} 430 0 637 55 ) 
					#name: #transportReadWriteBufferSizeGroupBox 
					#label: #(#{Kernel.UserMessage} #key: #transportReadWriteBufferSize #defaultString: 'transport read/write buffer size' #catalogID: #opentalktools) ) 
				#(#{UI.InputFieldSpec} 
					#layout: #(#{Graphics.Rectangle} 228 130 415 155 ) 
					#name: #listenerPriorityInputField 
					#flags: 56 
					#model: #listenerPriority 
					#type: #number ) 
				#(#{UI.GroupBoxSpec} 
					#layout: #(#{Graphics.Rectangle} 218 110 425 165 ) 
					#name: #listenerPriorityGroupBox 
					#flags: 48 
					#label: #(#{Kernel.UserMessage} #key: #listenerPriority #defaultString: 'listener priority' #catalogID: #opentalktools) ) 
				#(#{UI.InputFieldSpec} 
					#layout: #(#{Graphics.Rectangle} 228 75 415 100 ) 
					#name: #connectionTimeoutInputField 
					#flags: 56 
					#model: #connectionTimeout 
					#type: #number ) 
				#(#{UI.GroupBoxSpec} 
					#layout: #(#{Graphics.Rectangle} 218 55 425 110 ) 
					#name: #connectionTimeoutGroupBox 
					#flags: 48 
					#label: #(#{Kernel.UserMessage} #key: #connectionTimeout #defaultString: 'connection timeout' #catalogID: #opentalktools) ) 
				#(#{UI.GroupBoxSpec} 
					#layout: #(#{Graphics.Rectangle} 218 0 425 55 ) 
					#name: #connectingTimeoutGroupBox 
					#flags: 48 
					#label: #(#{Kernel.UserMessage} #key: #connectingTimeout #defaultString: 'connecting timeout' #catalogID: #opentalktools) ) 
				#(#{UI.InputFieldSpec} 
					#layout: #(#{Graphics.Rectangle} 16 20 203 45 ) 
					#name: #requestTimeoutInputField 
					#model: #requestTimeout 
					#type: #number ) 
				#(#{UI.GroupBoxSpec} 
					#layout: #(#{Graphics.Rectangle} 6 0 213 55 ) 
					#name: #requestTimeoutGroupBox 
					#label: #(#{Kernel.UserMessage} #key: #requestTimeoutMs #defaultString: 'request timeout (ms)' #catalogID: #opentalktools) ) 
				#(#{UI.InputFieldSpec} 
					#layout: #(#{Graphics.Rectangle} 228 20 415 45 ) 
					#name: #connectingTimeoutInputField 
					#flags: 56 
					#model: #connectingTimeout 
					#type: #number ) 
				#(#{UI.GroupBoxSpec} 
					#layout: #(#{Graphics.Rectangle} 218 165 425 220 ) 
					#name: #listenerBacklogGroupBox 
					#flags: 48 
					#label: #(#{Kernel.UserMessage} #key: #listenerBacklog #defaultString: 'listener backlog' #catalogID: #opentalktools) ) 
				#(#{UI.InputFieldSpec} 
					#layout: #(#{Graphics.Rectangle} 228 185 415 210 ) 
					#name: #listenerBacklogInputField 
					#flags: 56 
					#model: #listenerBacklog 
					#type: #number ) 
				#(#{UI.GroupBoxSpec} 
					#layout: #(#{Graphics.Rectangle} 430 165 637 220 ) 
					#name: #httpSpecificGroupBox 
					#flags: 48 
					#label: #(#{Kernel.UserMessage} #key: #httpspecific #defaultString: 'http-specific' #catalogID: #opentalktools) ) 
				#(#{UI.GroupBoxSpec} 
					#layout: #(#{Graphics.Rectangle} 642 55 849 110 ) 
					#name: #marshalerExceptionPrintingGroupBox 
					#flags: 48 
					#label: #(#{Kernel.UserMessage} #key: #marshalerExceptionPrinting #defaultString: 'marshaler exception printing' #catalogID: #opentalktools) ) 
				#(#{UI.CheckBoxSpec} 
					#layout: #(#{Core.Point} 470 180 ) 
					#name: #persistCheckBox 
					#flags: 48 
					#model: #persist 
					#label: #(#{Kernel.UserMessage} #key: #persist #defaultString: 'persist' #catalogID: #opentalktools) ) 
				#(#{UI.CheckBoxSpec} 
					#layout: #(#{Core.Point} 470 195 ) 
					#name: #stopOnErrorCheckBox 
					#flags: 48 
					#model: #stopOnError 
					#label: #(#{Kernel.UserMessage} #key: #stopOnError #defaultString: 'stop on error' #catalogID: #opentalktools) ) 
				#(#{UI.RadioButtonSpec} 
					#layout: #(#{Core.Point} 682 85 ) 
					#name: #marshalerESPRadioButton 
					#flags: 48 
					#model: #marshalerExceptionPrinter 
					#label: #(#{Kernel.UserMessage} #key: #stackPrinter #defaultString: 'stack printer' #catalogID: #opentalktools) 
					#select: #useExceptionStackPrinter ) 
				#(#{UI.RadioButtonSpec} 
					#layout: #(#{Core.Point} 682 70 ) 
					#name: #marshalerEDPRadioButton 
					#flags: 48 
					#model: #marshalerExceptionPrinter 
					#label: #(#{Kernel.UserMessage} #key: #descriptionPrinter #defaultString: 'description printer' #catalogID: #opentalktools) 
					#select: #useExceptionDescriptionPrinter ) 
				#(#{UI.GroupBoxSpec} 
					#layout: #(#{Graphics.Rectangle} 430 220 637 275 ) 
					#name: #transportExceptionPrintingGroupBox 
					#flags: 48 
					#label: #(#{Kernel.UserMessage} #key: #transportExceptionPrinting #defaultString: 'transport exception printing' #catalogID: #opentalktools) ) 
				#(#{UI.RadioButtonSpec} 
					#layout: #(#{Core.Point} 470 235 ) 
					#name: #transportEDPRadioButton 
					#flags: 48 
					#model: #transportExceptionPrinter 
					#label: #(#{Kernel.UserMessage} #key: #descriptionPrinter #defaultString: 'description printer' #catalogID: #opentalktools) 
					#select: #useExceptionDescriptionPrinter ) 
				#(#{UI.RadioButtonSpec} 
					#layout: #(#{Core.Point} 470 250 ) 
					#name: #transportESPRadioButton 
					#flags: 48 
					#model: #transportExceptionPrinter 
					#label: #(#{Kernel.UserMessage} #key: #stackPrinter #defaultString: 'stack printer' #catalogID: #opentalktools) 
					#select: #useExceptionStackPrinter ) ) ) )</body>
</methods>

<methods>
<class-id>Tools.VisualLauncher</class-id> <category>opentalk</category>

<body package="Opentalk-Tools-Console" selector="toolsOpentalkConsole">toolsOpentalkConsole

	&lt;menuItem: 'Console'
		nameKey: #opentalkConsole
		menu: #(#menuBar #tools #opentalk)
		position: 20.30&gt;
	
	Opentalk.OpentalkConsole open</body>
</methods>

<do-it>"Imported Classes:"</do-it>

<do-it>self error: 'Attempting to file-in parcel imports.  Choose terminate or close'</do-it>

<class>
<name>GenericProtocol</name>
<environment>Opentalk</environment>
<super>Core.EventManager</super>
<private>false</private>
<indexed-type>none</indexed-type>
<inst-vars>state </inst-vars>
<class-inst-vars></class-inst-vars>
<imports></imports>
<category>Opentalk-Core</category>
<attributes>
<package>Opentalk-Core</package>
</attributes>
</class>

<class>
<name>RequestBroker</name>
<environment>Opentalk</environment>
<super>Opentalk.BasicRequestBroker</super>
<private>false</private>
<indexed-type>none</indexed-type>
<inst-vars>serviceDictionary openSelectors </inst-vars>
<class-inst-vars></class-inst-vars>
<imports></imports>
<category>Opentalk-Core</category>
<attributes>
<package>Opentalk-Core</package>
</attributes>
</class>

<class>
<name>Model</name>
<environment>UI</environment>
<super>Core.Object</super>
<private>false</private>
<indexed-type>none</indexed-type>
<inst-vars>dependents </inst-vars>
<class-inst-vars></class-inst-vars>
<imports></imports>
<category>Kernel-Objects</category>
<attributes>
<package>Kernel-Objects</package>
</attributes>
</class>

<class>
<name>ApplicationModel</name>
<environment>UI</environment>
<super>UI.Model</super>
<private>false</private>
<indexed-type>none</indexed-type>
<inst-vars>builder uiSession eventHandlers </inst-vars>
<class-inst-vars>savedWindowInformation </class-inst-vars>
<imports></imports>
<category>UIBuilder-Framework</category>
<attributes>
<package>UIBuilder-Framework</package>
</attributes>
</class>

<class>
<name>VisualLauncher</name>
<environment>Tools</environment>
<super>UI.ApplicationModel</super>
<private>false</private>
<indexed-type>none</indexed-type>
<inst-vars>menuBar toolBar textCollector toolDock </inst-vars>
<class-inst-vars></class-inst-vars>
<imports></imports>
<category>Tools-Misc</category>
<attributes>
<package>Tools-Misc</package>
</attributes>
</class>

</st-source>