# HG changeset patch # User ca # Date 864397686 -7200 # Node ID d83c307f3bf5d14f3411543612a863b078edb2e9 # Parent 39acd704ad51a7c5472069876f2a8819a472633a intitial checkin diff -r 39acd704ad51 -r d83c307f3bf5 ResourceRetriever.st --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/ResourceRetriever.st Fri May 23 16:28:06 1997 +0200 @@ -0,0 +1,187 @@ +" + COPYRIGHT (c) 1997 by eXept Software AG + All Rights Reserved + + This software is furnished under a license and may be used + only in accordance with the terms of that license and with the + inclusion of the above copyright notice. This software may not + be provided or otherwise made available to, or used by, any + other person. No title to or ownership of the software is + hereby transferred. +" + + + + +Object subclass:#ResourceRetriever + instanceVariableNames:'className resourceOwner selector labelText' + classVariableNames:'' + poolDictionaries:'' + category:'Interface-UIPainter' +! + +!ResourceRetriever class methodsFor:'documentation'! + +copyright +" + COPYRIGHT (c) 1997 by eXept Software AG + All Rights Reserved + + This software is furnished under a license and may be used + only in accordance with the terms of that license and with the + inclusion of the above copyright notice. This software may not + be provided or otherwise made available to, or used by, any + other person. No title to or ownership of the software is + hereby transferred. +" + + + +! + +documentation +" + This class is used to retrieve resources for a painted interface of + some sort. If the className is specified, then the owner of the resource + is fixed at painting time. If not, then the ApplicationModel which invokes + the painted interface is assumed to be the owner of the resource. + + When the retriever is sent the message #value, it sends the message #valueFor: + to the resource owner, to retrive the resource + + [author:] + Claus Atzkern + + [see also:] + Application + Menu + MenuItem +" + + + +! ! + +!ResourceRetriever methodsFor:'accessing'! + +className + "return the value of the instance variable 'className' (automatically generated)" + + ^ className! + +className:something + "set the class which provides the resources + " + className := something. + resourceOwner := nil. +! + +selector + "return the value of the instance variable 'selector' (automatically generated)" + + ^ selector! + +selector:something + "set the value of the instance variable 'selector' (automatically generated)" + + selector := something. +! + +value + "returns value assigned to resource or nil + " + |resource| + + (resource := self resource) isNil ifTrue:[ + ^ labelText + ]. + + (labelText notNil and:[resource isImage]) ifTrue:[ + ^ LabelAndIcon icon:resource string:(Text string:labelText emphasis:#bold) + ]. + ^ resource +! ! + +!ResourceRetriever methodsFor:'accessing resource'! + +findGuiResourcesIn:aResourceContainer + "setup a resource owner + " + className isNil ifTrue:[ + resourceOwner := aResourceContainer + ]. +! + +resource + "returns form assigned to resource or nil + " + selector isNil ifTrue:[ + ^nil + ]. + + resourceOwner isNil ifTrue:[ + ( className isNil + or:[(resourceOwner := Smalltalk at:className ifAbsent:nil) isNil] + ) ifTrue:[ + ^ nil + ] + ]. + ^ resourceOwner visualFor:selector. +! ! + +!ResourceRetriever methodsFor:'converting'! + +fromLiteralArrayEncoding:anArray + "read my values from an encoding. + " + className := anArray at: 2. + selector := anArray at: 3. + + anArray size == 4 ifTrue:[ + labelText := anArray at:4 + ]. + resourceOwner := nil. + +! + +literalArrayEncoding + "encode myself as an array, from which a copy of the receiver can be + reconstructed with #decodeAsLiteralArray. + + The encoding is: + (#ResourceRetriever className selector) + + or if labelText not nil: + (#ResourceRetriever className selector labelText) + " + labelText isNil ifTrue:[ + ^ Array with:(self class name) with:className with:selector + ] ifFalse:[ + ^ Array with:(self class name) with:className with:selector with:labelText + ]. + +! ! + +!ResourceRetriever methodsFor:'testing'! + +isDefined + "returns true if resource exists + " + selector notNil ifTrue:[ + ^ (resourceOwner notNil or:[className notNil]) + ]. + ^ false +! + +notDefined + "returns false if resource is not defined + " + self isDefined ifTrue:[^ false ] + ifFalse:[^ true ] +! ! + +!ResourceRetriever class methodsFor:'documentation'! + +version + ^ '$Header$' +! !