如何响应ComposableModel上的焦点更改? (规格)

时间:2015-07-19 22:32:39

标签: smalltalk pharo morphic

我试图创建一个DateInputFieldModel(ComposableModel的子类)。

它使用TextInputFieldModel作为inputField 我设置inputField autoAccept: true.

我不想使用return / enter接受。

输入时,我用acceptBlock检查输入文本是否可以解释为日期。
就我而言,例如一位数字已经可以解释为日期 当您键入5时,这将意味着当前当月的第5个月。

当输入字段失去焦点(标签或鼠标)时,我想将日期的最终表示呈现到inputField,并更新我的DateInputFieldModel的日期值。

任何指针如何实现这一目标?

2 个答案:

答案 0 :(得分:0)

基础变形发送#keyboardFocusChange:

您可能需要在ComposableModel层次结构中的某处添加#whenFocusChanged:并确保从正确的AbstractMorphicAdapter子类中调用它

答案 1 :(得分:0)

为了回应Stephan Eggermont的建议我改变了 以下方法

MorphicTextInputFieldAdapter>>adapt: aModel
  super adapt: aModel.
  aModel
    whenBuiltDo: [ :w | 
      w widget color: Smalltalk ui theme backgroundColor.
      w widget widget textMorph 
         onAnnouncement: MorphGotFocus, MorphLostFocus  
         send: #announce: to: aModel ]

这可行,但是向下钻取w小部件小部件textMorph有点尴尬。

在我的DateInputFieldModel中,我订阅了公告

inputField on: MorphLostFocus send: #lostFocus to: self.