Dolphin publishedAspectsOfInstances y PropertyInspector?

0 views
Skip to first unread message

Jose Gregoris

unread,
Feb 19, 2010, 2:20:48 PM2/19/10
to Club smaltalk
Hola Gente


Intento usar lo mismo que usa dolphin en el ViewComposer para mostrar las propiedades de un objeto, el  Property Inspector.
El tema es que necesitaría darle un orden particular para cada objeto y no en orden alfabetico como esta en el ViewComposer.

Es posible hacer esto ?.
Veo que el LookupTable agrega las cosas en orden y no encuentro forma de cambiar esto.

Alguna idea ?




Encontra las mejores recetas con Yahoo! Cocina.
http://ar.mujer.yahoo.com/cocina/

GallegO

unread,
Feb 19, 2010, 6:31:23 PM2/19/10
to clubsm...@googlegroups.com
Kikote:
 
Podes usar un OrderedDictionary. Y subclasificar el PublishedAspectsInspector, no tengo un image a mano, nosotros lo hicimos y anda de maravilla.
 
Saludos
 GallegO


 
--
To post to this group, send email to clubSm...@googlegroups.com
To unsubscribe from this group, send email to clubSmalltal...@googlegroups.com
 
http://www.clubSmalltalk.org

Jose Gregoris

unread,
Feb 21, 2010, 7:53:46 PM2/21/10
to clubsm...@googlegroups.com
Hola gallego

ok, me fijo y cualquier cosa pregunto, gracias

kiko


--- El vie 19-feb-10, GallegO <fxga...@gmail.com> escribió:

Jose Gregoris

unread,
Feb 22, 2010, 12:10:46 PM2/22/10
to clubsm...@googlegroups.com
Hola Gallego

Yo lo resolví subclasificando y reimplementando este método:

getSubAspectsFor: anObject
    "Private - Answer a <sequencedReadableCollection> of the Aspects below anAspectAccessor"

    | aspects |
    aspects := #().
    [aspects := anObject publishedAspects reject: [:each | each name == #yourself]] on: Error
        do:
            [:ex |
            "If an error occurs attempting to access publishedAspects of the object, answer an empty collection"
            ex toTrace].
    ^aspects

En el original , se retornaba una SortedCollecton.

Vos hablastes de un OrderedDictionary, pero  no existe tal clase.
Es una clase que agregaste ?

Pregunto porque mi solución parece un tanto diferente a la  tuya.
Al no  convertir en Sorted queda el orden definido en  #publishedEventsOfInstances

saludos kiko

--- El dom 21-feb-10, Jose Gregoris <kikod...@yahoo.com.ar> escribió:

Jose Gregoris

unread,
Feb 22, 2010, 1:28:00 PM2/22/10
to clubsm...@googlegroups.com
Hola Gallego

Bueno, creo que no anda así jajaj. No había mirado bien el orden en que se mostraban las propiedades.
Ese OrderedDictionary de donde lo sacaste ?
Estuve viendo los goodies y no existe.

Si hay algo como eso en Smalltalk X, lo sacaste de hay ?

saludos kiko



--- El lun 22-feb-10, Jose Gregoris <kikod...@yahoo.com.ar> escribió:

Guillermo Schwarz

unread,
Feb 22, 2010, 2:30:36 PM2/22/10
to clubsm...@googlegroups.com
Y acà hay una implementaciòn.

http://ftp3.gwdg.de/pub/misc/languages/smalltalk/st.cs.uiuc.edu/Smalltalk/st80_r41/ISYSE/ManchGoodies.st

(Hay que sacarlo a mano desafortundamente y hacer que te compile para tu imagen)

2010/2/22 Jose Gregoris <kikod...@yahoo.com.ar>



--
Saludos cordiales,

Guillermo Schwarz
Sun Certified Enterprise Architect

Jose Gregoris

unread,
Feb 22, 2010, 3:58:53 PM2/22/10
to clubsm...@googlegroups.com
Hola Guillermo

Gracias, no conocía esto.
Trataré de hacerlo andar, cualquier cosa pregunto

saludos kiko

--- El lun 22-feb-10, Guillermo Schwarz <guillerm...@gmail.com> escribió:

Jose Gregoris

unread,
Feb 23, 2010, 9:18:20 PM2/23/10
to clubsm...@googlegroups.com
Hola Guillermo, gallego, gente

Ahora anda !.
Tengo dos consultas mas.
1) Se puede  agregar una etiqueta  como título ?
Algo así:

anObject
  + basic settings "Es una etiqueta"
        - name
        - size
        - etc
  + texture settings  "es una etiqueta "
     - baseTexture
     - textureScale
     - etc


Se  entiende ?
De la misma forma  que se ve por ejemplo en las propiedades de un ViewContainer  la posición.
- position = 0@100
    - x = 0
   - y=100.


2) En algunas propiedades debo pedir confirmación en los cambios.
Yo puse un MessageBox en el accessor  algo así:

>>chunkHeight: aHeightInChunkSize
    "Set  the height of the reciever. "

    (MessageBox confirm: 'Warning! Changing  size flattens the terrain. Proceed?'
        caption: 'Reinitialize?')
            ifTrue:
                [chunkHeight := aHeightInChunkSize.
                self reinitialize]
            ifFalse: [^self]

Esto anda, pero creo que debe haber otra forma de pedir la confirmación.
Estuve mirando la clase Aspect y veo como se colocan dialogos para editar, pero no veo la forma de poner la confirmación hay.


SAludos kiko

GallegO

unread,
Feb 24, 2010, 7:51:09 AM2/24/10
to clubsm...@googlegroups.com
Hola che:

OrderedDictionary, hay varias implementaciones. La verdad estaría bueno poder compartirlas pero no estoy autorizado.
La nuestra hereda de LookupTable y para hacerla me base en la técnica de una de VisualSmalltalk. Supongo que esa era de una empresa Tec4 o algo asi. La implementacion no es la misma pero la técnica ayuda bastante. No es file-in file-out

Con respecto a 1)
La unica forma de hacer eso son cambiar varias cosas es teniendo un objeto para cada cosa que pretendes tener como label. Puede ser un objeto o un wrapper al cual le agregues publishedAspects y le redefinas el #doesNotUnderstand:

Con especto a 2)
Es un tema. Siendo pragmatico te diria que simplemente implementes un metodo que no sea el setter y uses ese como aspect ya que luego si queres settear algo no vas a poder hacerlo sin la confirmación.

Con respecto a como redefiniste PublishedAspectInspector, #getSubAspectsFor: es correcto. Ese es el punto.

Saludos
  GallegO

GallegO

unread,
Feb 24, 2010, 7:52:05 AM2/24/10
to clubsm...@googlegroups.com
> Con respecto a 1)
> La unica forma de hacer eso SIN cambiar varias cosas es teniendo un objeto

Jose Gregoris

unread,
Feb 24, 2010, 2:23:05 PM2/24/10
to clubsm...@googlegroups.com
Hola Gallego !



La nuestra hereda de LookupTable y para hacerla me base en la técnica de una de VisualSmalltalk. Supongo que esa era de una empresa Tec4 o algo asi. La implementacion no es la misma pero la técnica ayuda bastante. No es file-in file-out

Gallego pirataaaaaaaaa ajajjaj.
Yo lo solucione tomando prestada la implementación del STX, hay te la mande si te sirve de algo.

Con respecto a 1)
La unica forma de hacer eso son cambiar varias cosas es teniendo un objeto para cada cosa que pretendes tener como label. Puede ser un objeto o un wrapper al cual le agregues publishedAspects y le redefinas el #doesNotUnderstand:

Siguiendo tu referencía, implemente algo así:

WrapperPublishedAspect>> title: aString publishedAspects: anArrayOfSymbols subject: anObject
"Return a new instance of the reciever"
    ^(self new)
        title: aString;
        publishedAspects: anArrayOfSymbols;
        subject: anObject;
        yourself

Luego construyo los aspects según lo que mande en la colección.
Redefiní :
>>doesNotUnderstand: failedMessage
    
    ^failedMessage forwardTo: self subject


Esto anda, pero tiene un problema.
Si el aspect que mande termina siendo un mensaje que entiende el Wrapper, ese aspect  funciona mal. Pues en ves de reenviar el mensaje al subject por medio de #doesNotUnderstand: , usa el mensaje propio.
Ejemplo #size.
Fijate en la captura, yo definí el #size como String y esta mostrando un 0.

Se me occurrio algo medio trucho, que es redefinir esto:

>>onAspectValueChanged: anAspectAccessor
    "Private - The currently inspected aspect value has been updated."

    | oldSubject |
    anAspectAccessor name == #yourself
        ifFalse:
            [oldSubject := anAspectAccessor subject.
            (anAspectAccessor subject: oldSubject subject) editedValue: aspectValueModel value.
            self propagate: anAspectAccessor].
    self refreshAccessor: anAspectAccessor.
    self trigger: #inspecteeChanged

Y cambiar el subject del anAspectAccessor por el del Wrapper.


No sé si esto es lo que pensabas.
Era algo así ?.
Si es así , alguna idea para mejorar esto ?.
Si no es así, podes explicarme tu idea más en detalle ?




Es un tema. Siendo pragmatico te diria que simplemente implementes un metodo que no sea el setter y uses ese como aspect ya que luego si queres settear algo no vas a poder hacerlo sin la confirmación.

Si entiendo, pero en este caso solo puedo setear el valor de la variable por medio de la interface , igual lo voy a tener en cuenta.
Por otro lado, esta bien  hacer esto ?.
Digo colocar la confirmación del lado del modelo y no del presenter ?

Y la última por hoy, fijate que en la captura en basicSetting no solo queda el título, sino basicSetting = Basic Settings.
Se puede sacar el nombre del selector #basicSetting

saludos kiko

--- El mié 24-feb-10, GallegO <fxga...@gmail.com> escribió:

De: GallegO <fxga...@gmail.com>
Asunto: Re: [clubSmalltalk] Dolphin publishedAspectsOfInstances y PropertyInspector?
Para: clubsm...@googlegroups.com
Fecha: miércoles, 24 de febrero de 2010, 10:51

Hola che:

OrderedDictionary, hay varias implementaciones. La verdad estaría bueno poder compartirlas pero no estoy autorizado.
La nuestra hereda de LookupTable y para hacerla me base en la técnica de una de VisualSmalltalk. Supongo que esa era de una empresa Tec4 o algo asi. La implementacion no es la misma pero la técnica ayuda bastante. No es file-in file-out

Con respecto a 1)
La unica forma de hacer eso son cambiar varias cosas es teniendo un objeto para cada cosa que pretendes tener como label. Puede ser un objeto o un wrapper al cual le agregues publishedAspects y le redefinas el #doesNotUnderstand:

Con especto a 2)
Es un tema. Siendo pragmatico te diria que simplemente implementes un metodo que no sea el setter y uses ese como aspect ya que luego si queres settear algo no vas a poder hacerlo sin la confirmación.

Con respecto a como redefiniste PublishedAspectInspector, #getSubAspectsFor: es correcto. Ese es el punto.

Saludos
  GallegO

--
To post to this group, send email to clubSm...@googlegroups.com
To unsubscribe from this group, send email to clubSmalltal...@googlegroups.com
 
http://www.clubSmalltalk.org
OrderedDictionary.cls
published.JPG

GallegO

unread,
Feb 24, 2010, 3:00:41 PM2/24/10
to clubsm...@googlegroups.com

Gallego pirataaaaaaaaa ajajjaj.
Yo lo solucione tomando prestada la implementación del STX, hay te la mande si te sirve de algo.


Algo de credito por saber donde buscar tengo che :) 
 
Con respecto a 1)

Si heredas de ProtoObject no anda?
 

No sé si esto es lo que pensabas.
Era algo así ?.
Si es así , alguna idea para mejorar esto ?.
Si no es así, podes explicarme tu idea más en detalle ?

NO.
Te tire algo para que lo elabores vos :) Por ahora no tengo tiempo che.
 


Si entiendo, pero en este caso solo puedo setear el valor de la variable por medio de la interface , igual lo voy a tener en cuenta.
Por otro lado, esta bien  hacer esto ?.
Digo colocar la confirmación del lado del modelo y no del presenter ?


No, no esta bien.
Cada uno sabe qué está bien y qué no en su aplicación.
Todo depende de los usos que le vas a dar a ese inspector. Ademas, cuando un modelo define su interfaz dinámicamente te va a pasar eso. Empieza a ser difuso donde es modelo y donde es interfaz. La mejor opción que encontre hasta ahora es delegarlo en una session de usuario. Entonces en ese lugar pongo:

( self sessionManager confirm: 'Estas loco?') ifTrue: [...]

el sessionManager es dinamico y sensible al tipo de interfaz. Hay otras opciones como lanzar notificaciones (Notification). Estas son utiles en el caso que quieras atraparlas y juntarlas, por ejemplo si pensas implementar algo tipo (Si, Si a todo, No, Cancelar).
La notification a su vez puede delegar en el sessionManager, por ejemplo para determinar si es una GUI Nativa o Web.

Todo esto es algo elaborado y requiere un tiempo, por eso te puse "para ser PRAGMATICO", a veces es más rapido, facil (y mejor) obtener un resultado inmediato.
 
Y la última por hoy, fijate que en la captura en basicSetting no solo queda el título, sino basicSetting = Basic Settings.
Se puede sacar el nombre del selector #basicSetting


Eso lo haces mejorando a tu gusto el PublishedAspectsInspector. Nuevamente tarea para tu hogar :)

Saludos
  GallegO 

Jose Gregoris

unread,
Feb 25, 2010, 10:12:01 AM2/25/10
to clubsm...@googlegroups.com
Hola Gallego

Bien, ahora funciona ! Hay mando una captura.
Para mostrar la etiqueta sola, puse esto:
>>aspectDisplayOn: aStream

    aStream initialize.
    [self displayOn: aStream] on: Error do: [:ex | ex displayOn: aStream]

Lo reinicialize porque ya  tenía el symbol del Aspect, es algo medio medio, pero funciona.
Se escuchan alternatibas.
Lo que no puedo hacer es poner la etiqueta en negrita y cambiarle el color.
Me tiras una idea de por donde buscar ?.

NO.
Te tire algo para que lo elabores vos :) Por ahora no tengo tiempo che.

No hay drama , yo entiendo perfectamente.

No, no esta bien.
Cada uno sabe qué está bien y qué no en su aplicación.
Todo depende de los usos que le vas a dar a ese inspector. Ademas, cuando un modelo define su interfaz dinámicamente te va a pasar eso. Empieza a ser difuso donde es modelo y donde es interfaz. La mejor opción que encontre hasta ahora es delegarlo en una session de usuario. Entonces en ese lugar pongo:
( self sessionManager confirm: 'Estas loco?') ifTrue: [...]


Hay no entendí, donde estas poniendo eso ?.
No en el accesor ?
A mi se me ocurría que podía poner algo de eso en el editBlock del Aspect, pero no logro que ande.


saludos kiko



--- El mié 24-feb-10, GallegO <fxga...@gmail.com> escribió:

De: GallegO <fxga...@gmail.com>
Asunto: Re: [clubSmalltalk] Dolphin publishedAspectsOfInstances y PropertyInspector?
Para: clubsm...@googlegroups.com
--
To post to this group, send email to clubSm...@googlegroups.com
To unsubscribe from this group, send email to clubSmalltal...@googlegroups.com
 
http://www.clubSmalltalk.org
screenShoot.JPG

GallegO

unread,
Feb 25, 2010, 10:28:23 AM2/25/10
to clubsm...@googlegroups.com
Hola:

 
Lo que no puedo hacer es poner la etiqueta en negrita y cambiarle el color.
Me tiras una idea de por donde buscar ?.

Fijate el customDrawBlock, senders de #customDrawBlock: . Es un bloque que lleva como argumento un context de la clase determinada por los implementors de #customDrawContextClass. Eso viene a traves de una notificacion del control y son las unicas cosas que permite modificar Windows. Cualquier cosa fijate en el msdn, por ahi para windows 7 ya se pueden modificar más cosas. Todo es bastante limitado. La otra es que te implementes tu propio control o uses un ActiveX.

, yo entiendo perfectamente

No, no esta bien.
Cada uno sabe qué está bien y qué no en su aplicación.
Todo depende de los usos que le vas a dar a ese inspector. Ademas, cuando un modelo define su interfaz dinámicamente te va a pasar eso. Empieza a ser difuso donde es modelo y donde es interfaz. La mejor opción que encontre hasta ahora es delegarlo en una session de usuario. Entonces en ese lugar pongo:
( self sessionManager confirm: 'Estas loco?') ifTrue: [...]


Hay no entendí, donde estas poniendo eso ?.
No en el accesor ?
A mi se me ocurría que podía poner algo de eso en el editBlock del Aspect, pero no logro que ande.


mmm no se, podes usar un Presenter tuyo tambien para esa tarea con confirmacion. Si no me equivoco en el #aspect  podes especificar que presenter usa.

Saludos
  GallegO

Jose Gregoris

unread,
Feb 26, 2010, 2:43:01 PM2/26/10
to clubsm...@googlegroups.com
Hola Gallego

Lo de poner en negrita ya esta. Pero tengo un problema mas, fijate la captura.
El texto en negrita no se ve completo. Alguna idea ?


mmm no se, podes usar un Presenter tuyo tambien para esa tarea con confirmacion. Si no me equivoco en el #aspect  podes especificar que presenter usa.

Para la confirmación se me ocurrio esto.
Que el Aspect se encargue de pedir la confirmación
Para eso subclasifique Aspect por  ConfirmedAspect, el nombre no me suena muy bien pero bue(se escuchan ofertas).
Luego reimplmente :
>>writeInto: subjectObject value: valueObject
    "Private - Set the attribute of subjectObject described by the receiver
    to valueObject."

    (subjectObject perform: self getSelector) == valueObject ifTrue: [^self].
    (MessageBox confirm: self confirm caption: self caption)
        ifTrue: [^super writeInto: subjectObject value: valueObject]

Además  le agregué un chequeo para que si el valor es el mismo no lo cambie otra vez.
Es algo que yo suponía  que ya estaba , pero no .
Creo que es una solución mucho mejor que la primera.

Qué te parece ?


saludos kiko
--- El jue 25-feb-10, GallegO <fxga...@gmail.com> escribió:

De: GallegO <fxga...@gmail.com>
Asunto: Re: [clubSmalltalk] Dolphin publishedAspectsOfInstances y PropertyInspector?
Para: clubsm...@googlegroups.com
--
To post to this group, send email to clubSm...@googlegroups.com
To unsubscribe from this group, send email to clubSmalltal...@googlegroups.com
 
http://www.clubSmalltalk.org
screenShoot2.JPG

GallegO

unread,
Feb 28, 2010, 10:34:26 AM2/28/10
to clubsm...@googlegroups.com
El 26 de febrero de 2010 16:43, Jose Gregoris <kikod...@yahoo.com.ar> escribió:
Hola Gallego

Lo de poner en negrita ya esta. Pero tengo un problema mas, fijate la captura.
El texto en negrita no se ve completo. Alguna idea ?

 Lo unico que se me ocurre con respecto a tu problema es que hayas hecho algo mal. Igual el TreeView es uno de los controles famosos por la cantidad de bugs que tiene. No me extrañaria que exista algun truco. Tenelo en cuenta.
 

Para la confirmación se me ocurrio esto.
Que el Aspect se encargue de pedir la confirmación
Para eso subclasifique Aspect por  ConfirmedAspect, el nombre no me suena muy bien pero bue(se escuchan ofertas).
Luego reimplmente :
>>writeInto: subjectObject value: valueObject
    "Private - Set the attribute of subjectObject described by the receiver
    to valueObject."

    (subjectObject perform: self getSelector) == valueObject ifTrue: [^self].
    (MessageBox confirm: self confirm caption: self caption)
        ifTrue: [^super writeInto: subjectObject value: valueObject]

Definitivamente NO. No es una opcion subclasificar para eso. Por que no haces un Presenter y le pasas al Aspect que use ese presenter. En ese mismo presenter, cuando cambia un valor (o cuando pirde foco), implementas que confirme el usuario. Si tengo tiempo despues te paso un ejemplo.
 
Saludos
  GallegO

Jose Gregoris

unread,
Mar 1, 2010, 8:39:29 AM3/1/10
to clubsm...@googlegroups.com
Hola Gallego


 Lo unico que se me ocurre con respecto a tu problema es que hayas hecho algo mal. Igual el TreeView es uno de los controles famosos por la cantidad de bugs que tiene. No me extrañaria que exista algun truco. Tenelo en cuenta.

mmm, ok . La verdad es que no veo nada mal, pero vere si puedo localizar el error.


Definitivamente NO. No es una opcion subclasificar para eso.

Porque no ¿?


 Por que no haces un Presenter y le pasas al Aspect que use ese presenter. En ese mismo presenter, cuando cambia un valor (o cuando pirde foco), implementas que confirme el usuario. Si tengo tiempo despues te paso un ejemplo.


Esto contradice lo que decis arriba, pero subclasifique ChoicePresenter
donde  implemente  así:

onChoiceChanged
    "Private - Handler for a choice change in the receiver's view"

    | oldSelection newSelection |
    oldSelection := self value.
    newSelection := self getValue.
    oldSelection = newSelection ifTrue: [^self].
    (MessageBox confirm: self confirm caption: self caption) ifTrue: [^self value: self getValue]


Le paso al Aspect este presenter , con todos la opciones más el caption y confirm.
De otra forma tenía que hacer un presenter que es igual a ChoicePresenter , para  hacer esto.
Creo que no tiene sentido, cuando ya  existe ChoicePresenter.

Te parece ¿?  jajaja. Si no , escucho ofertas ...

saludos kiko

--- El dom 28-feb-10, GallegO <fxga...@gmail.com> escribió:

De: GallegO <fxga...@gmail.com>
Asunto: Re: [clubSmalltalk] Dolphin publishedAspectsOfInstances y PropertyInspector?
Para: clubsm...@googlegroups.com
--
To post to this group, send email to clubSm...@googlegroups.com
To unsubscribe from this group, send email to clubSmalltal...@googlegroups.com
 
http://www.clubSmalltalk.org

GallegO

unread,
Mar 1, 2010, 2:47:22 PM3/1/10
to clubsm...@googlegroups.com
Kiko:
 
Y por ahora...
Yo hubiera hecho una subclase de Presenter, por mas que haga los mismo que el ChoicePresenter. Logicamente como hiciste es mas rapido.
 
Saludos
  GallegO

Jose Gregoris

unread,
Mar 1, 2010, 4:38:56 PM3/1/10
to clubsm...@googlegroups.com
Hola Gallego


Yo hubiera hecho una subclase de Presenter, por mas que haga los mismo que el ChoicePresenter.


El problema con esto, es que solo sirve para ChoicePresenter.
Tambien debo pedir confirmación para otros Aspect.

Tratando de entender lo que sugeris, se me ocurre que podría tener un presenter donde pida la confirmación y este presenter agrege de forma dínamica , cualquier tipo de presenter.
Algo como lo que hace el "display" de PublishedAspectInspector .
Algo como esto:

>>createAspectPresenters: anAspectAccessor
    "Private - Create the Workspace and Value presenters for the currently selected aspect"

    aspectPresenter := anAspectAccessor aspectDescriptor presenterFor: aspectValueModel
                in: displayPresenter.

Solo que esto debería hacerlo mi presenter, que luego se agregaría al
PublishedAspectInspector  de la misma forma.

Aunque parece medio rebuscado.
No sé, no conozco bien la estructura de Presenter y trato de interpretar lo que me comentas.

Voy a ver si puedo hacer algo por el estilo.
Se aceptan sugerencias jajaa

saludos kiko

--- El lun 1-mar-10, GallegO <fxga...@gmail.com> escribió:

Jose Gregoris

unread,
Mar 2, 2010, 2:05:56 PM3/2/10
to clubsm...@googlegroups.com
Hola Gallego


Definitivamente NO. No es una opcion subclasificar para eso. Por que no haces un Presenter y le pasas al Aspect que use ese presenter. En ese mismo presenter, cuando cambia un valor (o cuando pirde foco), implementas que confirme el usuario. Si tengo tiempo despues te paso un ejemplo.



Disculpa la molestia.  Implemente esto y funciona, pero tiene un problema.
El tema es que cuando se captura el #valueChanged, el valor ya se seteo en el objeto que estaba esperando esto.
Si bien uno puede, através de la confirmación deshacer los cambios, el echo es que ya se seteo .
El problema principal con esto, es que una vez seteado el valor de la variable, mi objeto es forzado a reinicializar y es algo que no quiero.
Pues perdería todos los cambios que hay sobre el terreno.
Que es en este caso el objeto en cuestión.

Es posible que no este implementando bien, esto es lo que hay:


ConfirmPresenter>>addPresenter: aClassPresenter on: aModel
    "Add a new presenter  on aModel "

    currentPresenter := aClassPresenter createIn: card on: aModel.
    currentPresenter
        when: #valueChanged
        send: #onValueChanged
        to: self. 
    oldValue := aModel value

ConfirmPresenter>>onValueChanged
    "The model held by the receiver has changed so refresh the parentView. The
    default is to invalidate the receiver and cause it to repaint."

    oldValue = currentPresenter value ifTrue: [^self].

    (MessageBox confirm: self confirm caption: self caption)
        ifFalse: [currentPresenter value: oldValue].
    oldValue := currentPresenter value.

ConfirmPresenter>>addChoicePresenterOn: aModel choiceFrom: aArray
    "Add a Choice presenter  on aModel "

    self addPresenter: ChoicePresenter on: aModel.
    currentPresenter choices: aArray

Test>>basicSetting
    | wrapper aspects |
    aspects := OrderedDictionary new.
    aspects
        add: (Aspect name: #position
                    presenterBlock:
                        [:p :m |
                        | confirm |
                        confirm := ConfirmPresenter createIn: p.
                        confirm addChoicePresenterOn: m
                            choiceFrom: #(#TV_PRECISION_BEST #TV_PRECISION_HIGH #TV_PRECISION_ULTRA #TV_PRECISION_AVERAGE).
                       ]);
        add: (Aspect name: #size
                    presenterBlock:
                        [:p :m |
                        | confirm |
                        confirm := ConfirmPresenter createIn: p.
                        confirm addPresenter: NumberPresenter on: m.
                       ]);
        add: (Aspect string: #name).
    wrapper := WrapperPublishedAspect
                title: ' Basic Settings '
                publishedAspects: aspects
                subject: self.
    ^wrapper



saludos kiko

--- El dom 28-feb-10, GallegO <fxga...@gmail.com> escribió:

De: GallegO <fxga...@gmail.com>
Asunto: Re: [clubSmalltalk] Dolphin publishedAspectsOfInstances y PropertyInspector?
Para: clubsm...@googlegroups.com
Fecha: domingo, 28 de febrero de 2010, 13:34

--
To post to this group, send email to clubSm...@googlegroups.com
To unsubscribe from this group, send email to clubSmalltal...@googlegroups.com
 
http://www.clubSmalltalk.org
Reply all
Reply to author
Forward
0 new messages