View>>isEnabled: question

Previous Topic Next Topic
 
classic Classic list List threaded Threaded
6 messages Options
Reply | Threaded
Open this post in threaded view
|

View>>isEnabled: question

Pieter Emmelot-2
In an UI I want to enable/disable a ReferenceView based on (for example) a
checkbox.

This works only partially, the reference view is disabled (doesn't accept
input or clicks) but the views in the referenced ContainerView (like
TextEdit, PushButton) don't show as disabled.

To solve this it's tempting to override #isEnabled: in ContainerView like
this:

isEnabled: aBoolean
    self presenter subPresenters do:
         [:each |
         each view isEnabled: aBoolean].

But this is to simplistic; first, not every view has a Presenter
(PushButton) and second, there seems to be circularities that cause
isEnabled: to recurse. The first problem can be solved by calling 'super
isEnabled: aBoolean' and the second by keeping a list of visited views. This
all looks a bit complicated to me. So my question is, is there an easier way
or am I overlooking something?

Pieter Emmelot

Dolphin 5.0.3/Win2K

PS. A small package with a demo presenter is attached.





begin 666 DisableDemo.pac
M?"!P86-K86=E('P-"G!A8VMA9V4@.CT@4&%C:V%G92!N86UE.B G1&ES86)L
M941E;6\G+@T*<&%C:V%G92!P87A697)S:6]N.B P.PT*"6)A<VEC0V]M;65N
M=#H@)R<N#0H-"@T*<&%C:V%G92!C;&%S<TYA;65S#0H)861D.B C1&ES86)L
M941E;6]0<F5S96YT97([#0H)>6]U<G-E;&8N#0H-"G!A8VMA9V4@8FEN87)Y
M1VQO8F%L3F%M97,Z("A3970@;F5W#0H)>6]U<G-E;&8I+@T*#0IP86-K86=E
M(&=L;V)A;$%L:6%S97,Z("A3970@;F5W#0H)>6]U<G-E;&8I+@T*#0IP86-K
M86=E(&%L;%)E<V]U<F-E3F%M97,Z("A3970@;F5W#0H)861D.B C1&ES86)L
M941E;6]0<F5S96YT97(@+3X@)T1E9F%U;'0@=FEE=R<[#0H)>6]U<G-E;&8I
M+@T*#0IP86-K86=E('-E=%!R97)E<75I<VET97,Z("A)9&5N=&ET>5-E="!N
M97<-"@EA9&0Z("=/8FIE8W0@07)T<UQ$;VQP:&EN7$)A<V5<1&]L<&AI;B<[
M#0H)861D.B G3V)J96-T($%R='-<1&]L<&AI;EQ-5E!<0F%S95Q$;VQP:&EN
M($U64"!"87-E)SL-"@EA9&0Z("=/8FIE8W0@07)T<UQ$;VQP:&EN7$U64%Q4
M>7!E($-O;G9E<G1E<G-<1&]L<&AI;B!4>7!E($-O;G9E<G1E<G,G.PT*"6%D
M9#H@)T]B:F5C="!!<G1S7$1O;'!H:6Y<35907$UO9&5L<UQ686QU95Q$;VQP
M:&EN(%9A;'5E($UO9&5L<R<[#0H)>6]U<G-E;&8I+@T*#0IP86-K86=E(0T*
M#0HB0VQA<W,@1&5F:6YI=&EO;G,B(0T*#0I0<F5S96YT97(@<W5B8VQA<W,Z
M("-$:7-A8FQE1&5M;U!R97-E;G1E<@T*"6EN<W1A;F-E5F%R:6%B;&5.86UE
M<SH@)V-H96-K4')E<V5N=&5R('1E>'10<F5S96YT97(@8V]N=&%I;F5R4')E
M<V5N=&5R)PT*"6-L87-S5F%R:6%B;&5.86UE<SH@)R<-"@EP;V]L1&EC=&EO
M;F%R:65S.B G)PT*"6-L87-S26YS=&%N8V5687)I86)L94YA;65S.B G)R$-
M"@T*(D=L;V)A;"!!;&EA<V5S(B$-"@T*#0HB3&]O<V4@365T:&]D<R(A#0H-
M"B)%;F0@;V8@<&%C:V%G92!D969I;FET:6]N(B$-"@T*(E-O=7)C92!';&]B
M86QS(B$-"@T*(D-L87-S97,B(0T*#0I$:7-A8FQE1&5M;U!R97-E;G1E<B!G
M=6ED.B H1U5)1"!F<F]M4W1R:6YG.B G>S(R0C)#-4(W+4$W.#<M-#$X.2U"
M0S,W+3@W14,Q,T4W0D1#,GTG*2$-"D1I<V%B;&5$96UO4')E<V5N=&5R(&-O
M;6UE;G0Z("<G(0T*(41I<V%B;&5$96UO4')E<V5N=&5R(&-A=&5G;W)I97-&
M;W)#;&%S<R%-5E M4')E<V5N=&5R<R$@(0T*(41I<V%B;&5$96UO4')E<V5N
M=&5R(&UE=&AO9'-&;W(A#0H-"F-L:6-K#0H-"@E3;W5N9"!B965P(0T*#0IC
M<F5A=&5#;VUP;VYE;G1S#0H-"@ES=7!E<B!C<F5A=&5#;VUP;VYE;G1S+@T*
M"6-O;G1A:6YE<E!R97-E;G1E<B Z/2!S96QF(&%D9#H@4')E<V5N=&5R(&YE
M=R!N86UE.B G8V]N=&%I;F5R)RX-"@ET97AT4')E<V5N=&5R(#H]('-E;&8@
M861D.B!497AT4')E<V5N=&5R(&YE=R!N86UE.B G=&5X="<N#0H)8VAE8VM0
M<F5S96YT97(@(#H]('-E;&[hidden email]!";V]L96%N4')E<V5N=&5R(&YE=R!N
M86UE.B G8VAE8VLG+@T*(0T*#0IC<F5A=&538VAE;6%T:6-7:7)I;F<-"@DB
M0W)E871E('1H92!T<FEG9V5R('=I<FEN9R!F;W(@=&AE(')E8V5I=F5R(@T*
M"0T*"7-U<&5R(&-R96%T95-C:&5M871I8U=I<FEN9RX-"@EC:&5C:U!R97-E
M;G1E<B @=VAE;CH@(W9A;'5E0VAA;F=E9"!S96YD.B C;VY#:&5C:U9A;'5E
M0VAA;F=E9"!T;SH@<V5L9BX-"@T*"2$-"@T*;VY#:&5C:U9A;'5E0VAA;F=E
M9" -"@T*"7P@96YA8FQE9"!\#0H)96YA8FQE9" Z/2!C:&5C:U!R97-E;G1E
M<B!M;V1E;"!V86QU92X-"@ET97AT4')E<V5N=&5R('9I97<@:7-%;F%B;&5D
M.B!E;F%B;&5D+@T*( EC;VYT86EN97)0<F5S96YT97(@=FEE=R!I<T5N86)L
M960Z(&5N86)L960N#0H-"@T*#0HA#0H-"F]N5FEE=T]P96YE9 T*#0H)<W5P
M97(@;VY6:65W3W!E;F5D+@T*"6-H96-K4')E<V5N=&5R(&UO9&5L('9A;'5E
M.B!T<G5E(2 A#0HA1&ES86)L941E;6]0<F5S96YT97(@8V%T96=O<FEE<T9O
M<CH@(V-L:6-K(7!U8FQI8R$@(0T*(41I<V%B;&5$96UO4')E<V5N=&5R(&-A
M=&5G;W)I97-&;W(Z("-C<F5A=&5#;VUP;VYE;G1S(7!U8FQI8R$@(0T*(41I
M<V%B;&5$96UO4')E<V5N=&5R(&-A=&5G;W)I97-&;W(Z("-C<F5A=&538VAE
M;6%T:6-7:7)I;F<A<'5B;&EC(2 A#0HA1&ES86)L941E;6]0<F5S96YT97(@
M8V%T96=O<FEE<T9O<CH@(V]N0VAE8VM686QU94-H86YG960A<'5B;&EC(2 A
M#0HA1&ES86)L941E;6]0<F5S96YT97(@8V%T96=O<FEE<T9O<CH@(V]N5FEE
M=T]P96YE9"%E=F5N="!H86YD;&EN9R%P=6)L:6,A("$-"@T*(D)I;F%R>2!'
M;&]B86QS(B$-"@T*(E)E<V]U<F-E<R(A#0H-"BA297-O=7)C94ED96YT:69I
M97(@8VQA<W,Z($1I<V%B;&5$96UO4')E<V5N=&5R(&YA;64Z("=$969A=6QT
M('9I97<G*2!A<W-I9VXZ("A/8FIE8W0@9G)O;4)I;F%R>5-T;W)E0GET97,Z
M#0HH0GET94%R<F%Y(&9R;VU(97A3=')I;F<Z("<R,34S-30T,C(P,S$R,#0V
M,#(P0S P,#$P,# P,# U-C8Y-C4W-S4R-C4W,S9&-S4W,C8S-C4P,# P,# P
M,#!%,#$R-# P-3,U-#0R-3(V-3<S-D8W-3<R-C,V-34S-30T,C0R-SDW-#8U
M-#$W,C<R-C$W.30Q-C,V,S8U-S,W,S9&-S(U,#<R-D8W.#<Y,# P,# P,# W
M,C P,# P,$(V,$(P,# P,C$U,S4T-#(R,#,Q,C T13 X,$,P,#!!,# P,# P
M-3,U-#0R-38V.38U-S<U,#<R-D8W.#<Y,# P,# P,# Y03 P,# P,# P,# P
M,# P-3(P,# P,# Q,# P,# P,#0T-D8V0S<P-C@V.39%,C T1#4V-3 R,#0R
M-C$W,S8U-3(P,# P,# P1# P,# P,#0S-D8V13<T-C$V.39%-C4W,C4V-CDV
M-3<W-C(P,# P,# P1C P,# P,# P,# P,# P,# P,# P,# V,C P,# P,# R
M,# P,# P.#(P,# P,# P-# P,# P,# P,# P,#0T,#$P,# R,#!!,# Q,# P
M,# P,# P,# P,# P,# P,# P,# P,# P,# W,# P,# P,# P,# P,# P,# P
M,# P,# P,# P,# P03 P,3 P,# P,# P,# P,$5!,# P,# P,# P,# P,# P
M,# Q,# P,#8R,# P,# P,#8P,# P,# Y03 Q,# P,# P,# P,# P0C P,3 P
M,# V,C P,# P,#!&,# P,# P,# P,# P,#!!,# Q,# P,#8R,# P,# P,#(P
M,# P,# X,C P,# P,# T,# P,# P,# P,#@P-#0P,3 P,#(P,#,P,#(P,# P
M,# P,# P,# P,# P,# P,# P,# P,# P,#<P,# P,# P,# P,# P,# P,# P
M,# P,# P,# P,# S,# R,# P,# P,# P,# P14$P,# P,# P,# P,# P,# P
M,#$P,# P-C(P,# P,# P,# P,# P,# P,# P,# P,#8P,3!&,# T1#8U-S,W
M,S8Q-C<V-34S-C4W,3<U-C4V138S-C4P,# P,# P,$-!,# P,# P,# P,# P
M,#!$,# P,# P,#8R,# P,# P,#$P,# P,# P-C S,$(P,#1$-C4W,S<S-C$V
M-S8U-3,V-39%-C0P,# P,# P,$)!,# P,# P,# P,# P,# U,C P,# P,#$P
M,# P,# P-C,W,C8U-C$W-#8U-#$W-#-!-C4W.#<T-C4V13<T,T$V,C P,# P
M,# R,# P,# P,#8P,C U,# U,#9&-CDV13<T,# P,# P,# V-3 P,# P,$0S
M,# P,# P,C(P,S P,# P,# P,# P,#<S,#$P,# P0C4P,# P,# S,# R,# P
M,# V,#$P1C P-3<T.31%-#0T1C4W-3 T0S0Q-#,T-31$-#4T134T,# P,# P
M,# W,C P,# P,#)#,# P,# P,D,P,# P,# P,# P,# P,# Q,# P,# P1D9&
M1D9&1D9&1D9&1D9&1D9&1D9&1D9&1D9&1D9&1D8S,C P,# P,#8Y,# P,# P
M14(P,# P,#!#,S P,# P,$-!,# P,# P,# P,# P,#!$,# P,# P,#8R,# P
M,# P,#,P,# P,# Y03 Q,# P,# P,# P,# P.4$P,# P,# P,# P,# P,$,P
M,#$P,# P-3(P,# P,# P.# P,# P,#4T-C4W.#<T-#4V-#8Y-S0V,C P,# P
M,#$P,# P,# P,# P,# P,# S,# R,# P,#8R,# P,# P,#(P,# P,# X,C P
M,# P,# T,# P,# P.# P,# Q-#0P,3 T,# P,$$P,#,P,# P,# P,# P,# P
M,# P,# P,# P,# P,# P,#<P,# P,# P,# P,# P,# P,# P,# P,# P,# P
M,#!!,# S,# P,# P,# P,# P.#(P,# P,# P-# P,# P,#5&.3-%,3<W,#8P
M,C!$,# T13<U-D,V0S0S-D8V13<V-C4W,C<T-C4W,C P,# P,# P,# P,# P
M,# P,# P,# P,# Q,# P,# P.3(P,C P,# P,# P,# P,$-!,# P,# P,# P
M,# P,#!$,# P,# P,#8R,# P,# P,#0P,# P,#!$,C R,# P,# P,# P,# P
M1C P,C P,# V,C P,# P,# R,# P,# P,C(P,S P,# P,# P,# P,#$U,# P
M,# P,34P,# P,# R,C S,# P,# P,# P,# P-#$P,3 P,# S,S P,# P,$$P
M,#,P,# P1#(P,C P,# P,# P,# P,$)!,# P,# P,# P,# P,# U,C P,# P
M,# U,# P,# P-S0V-3<X-S0S038R,# P,# P,#$P,# P,# U,C P,# P,#$Y
M,# P,# P-30V-3<X-S0T-38T-CDW-#(P-CDV13(P-#,V1C9%-S0V,38Y-D4V
M-3<R-38V.38U-S=!,# S,# P,$0R,#(P,# P,# P,# P,#!"03 P,# P,# P
M,# P,# P-3(P,# P,# P1C P,# P,#<S-C4V0S8U-C,W-#8Y-D8V134R-C$V
M138W-C4S038R,# P,# P,#$P,# P,# P-C S,#@P,#0Y-D4W-#8U-S(W-C8Q
M-D,P,# P,# P,# S,# P,# P,#$P,# P,# P,S P,# P,$$P,#,P,# P1#(P
M,C P,# P,# P,# P,$)!,# P,# P,# P,# P,# U,C P,# P,#!&,# P,# P
M-CDW,S4T-C4W.#<T-$0V1C8T-CDV-C8Y-C4V-#-!-C(P,# P,# P,3 P,# P
M,#(P,# P,# P03 P,S P,# U,C S,# P,# P,# P,# P-S(P,# P,# R0S P
M,# P,#)#,# P,# P,# P,# P,# P,3 P,# P,$9&1D9&1D9&1D9&1D9&1D9&
M1D9&1D9&1D9&1D9&1D9&,$$P,# P,# P03 P,# P,$%!,# P,# P,C,P,# P
M,#!#03 P,# P,# P,# P,# P1# P,# P,# X,# R,# P,#(R,#,P,# P,# P
M,# P,#!#,3 P,# P,$,Q,# P,# P,# P,# P,# Q,S P,# P,#E!,#$P,# P
M,# P,# P,# Y03 P,# P,# P,# P,# P0S P,3 P,# U,C P,# P,# X,# P
M,# P-#,V.#8U-C,V0C0R-D8W.#8R,# P,# P,3 P,# P,# P,# P,# P,#,P
M,#(P,# P-C(P,# P,# P,C P,# P,#@R,# P,# P,#0P,# P,# P,S(P,#$T
M-# Q,# P,# P1# P-3 P,# T-C T,$(P,# R,# P,# P-38V,39#-S4V-30X
M-D8V0S8T-C4W,C P,# P,# P,# P,# P,# P,# P,# P,# V,# Q,3 P-$4V
M-3<V-C4W,C4S-C4V,3<R-C,V.#4P-D8V0S8Y-C,W.3 P,# P,# P,C P,# P
M,# P,# P,# P,# P,# P,# P,#<P,# P,# P,# P,# P,# P,# P,# P,# P
M,# P,#!$,# U,# P,# P,# P,# P.#(P,# P,# P-# P,# P,#)%03)%,C<W
M,3(P-# P,# P,# P,# P,# P,# P,# P,# P,# P,# P,# P,# P,#DR,#(P
M,# P,# P,# P,#!#03 P,# P,# P,# P,# P1# P,# P,# V,C P,# P,# R
M,# P,# P1#(P,C P,# P,# P,# P,$8P,#(P,# P-C(P,# P,# P,C P,# P
M,#(R,#,P,# P,# P,# P,# Q-3 P,# P,#5",# P,# P,C(P,S P,# P,# P
M,# P,#<Y,# P,# P,T0P,# P,#!$,# U,# P,$0R,#(P,# P,# P,# P,#!"
M,# T,# P,#8R,# P,# P,#$P,# P,# U,C P,# P,# T,# P,# P-3@U.#4X
M-3A$,# U,# P,#4R,#,P,# P,# P,# P,# W,C P,# P,#)#,# P,# P,D,P
M,# P,# P,# P,# P,# Q,# P,# P1D9&1D9&1D9&1D9&1D9&1D9&1D9&1D9&
M1D9&1D9&1D8P03 P,# P,#)$,# P,# P-#8P,# P,# T0C P,# P,$-!,# P
M,# P,# P,# P,#!$,# P,# P,#@P,#(P,# P0S P-3 P,# P,# P,# P,#$S
M,# P,# P.4$P,3 P,# P,# P,# P,#E!,# P,# P,# P,# P,#!#,# Q,# P
M,#4R,# P,# P,$$P,# P,# U,#<U-S,V.#0R-S4W-#<T-D8V138R,# P,# P
M,3$P,# P,# P,# P,# P,#,P,#(P,# P-C(P,# P,# P,C P,# P,#@R,# P
M,# P,#0P,# P,# P,#(P,#$T-# Q,# P,# P-C P-S P,# P,# P,# P,# P
M,# P,# P,C(P,S P,# P,# P,# P,#DQ,#$P,# P0SDP,# P,# P-S P,# P
M,# P,# P,# P,# P,# P,# P,# P,# P,#8P,#<P,# P,# P,# P,# X,C P
M,# P,# T,# P,# P,D5!,D4R-S<T-C U,3(P,# T,# P,# P-#,V1C9$-D0V
M,39%-C0T-#8U-S,V,S<R-CDW,#<T-CDV1C9%,# P,# P,#!"03 P,# P,# P
M,# P,# P-3(P,# P,# P-3 P,# P,#8S-D,V.38S-D(P,# P,# P,# Q,# P
M,# P,#$P,# P,# P,# P,# P,# P,# P,# P,#$P,# P,# Y,C R,# P,# P
M,# P,# P0T$P,# P,# P,# P,# P,$0P,# P,# P-C(P,# P,# P,C P,# P
M,$0R,#(P,# P,# P,# P,#!&,# R,# P,#8R,# P,# P,#(P,# P,# R,C S
M,# P,# P,# P,# P04(P,# P,# U0C P,# P,#(R,#,P,# P,# P,# P,#!!
M0C P,# P,#-$,# P,# P-C P-S P,#!$,C R,# P,# P,# P,# P0D$P,# P
M,# P,# P,# P,#4R,# P,# P,$$P,# P,# V.3<S-#4V138Q-C(V0S8U-C0S
M038R,# P,# P,#$P,# P,# R,# P,# P,#8P,#<P,# P-3(P,S P,# P,# P
M,# P,#<R,# P,# P,D,P,# P,# R0S P,# P,# P,# P,# P,#$P,# P,#!&
M1D9&1D9&1D9&1D9&1D9&1D9&1D9&1D9&1D9&1D9&1C4U,# P,# P,D0P,# P
M,#!!03 P,# P,#1",# P,# P0T$P,# P,# P,# P,# P,$0P,# P,# P.# P
M,C P,#!#,# U,# P,# P,# P,# P,3,P,# P,#!#,# U,# P,# P,# P,# P
M,3,P,# P,# U,C P,# P,# Y,# P,# P-C,V1C9%-S0V,38Y-D4V-3<R.4$P
M,3 P,# P,# P,# P,$4P,#4P,# P-C(P,# P,# Q,# P,# P,# P,# P,# P
M03 P,3 P,# V,C P,# P,# R,# P,# P.#(P,# P,# P-# P,# P,# S,C P
M,30T,#$P,# P,# Q,# Y,# P,#,R,#8P,# P,# P,# P,# P,# P,# P,# P
M,# P,# P-3(P-C P,# P,# P,# P,#(P,# P,# P,# P,# P,# P,# P,# P
M,# W,# P,# P,# P,# P,# P,# P,# P,# P,# P,# P,3 P.3 P,# P,# P
M,# P,#@R,# P,# P,#0P,# P,# R14$R13(W-S$R,#0P,# P,# P,# P,# P
M,# P,# P,# P,# P,# P,# P,# P,# Y,C R,# P,# P,# P,# P0T$P,# P
M,# P,# P,# P,$0P,# P,# P-C(P,# P,# P,C P,# P,$0R,#(P,# P,# P
M,# P,#!&,# R,# P,#8R,# P,# P,#(P,# P,# R,C S,# P,# P,# P,# P
M,T0P,# P,# S1# P,# P,#(R,#,P,# P,# P,# P,# U.3 R,# P,#-$,# P
M,# P,3 P.3 P,#!$,C R,# P,# P,# P,# P0C P-# P,# V,C P,# P,# Q
M,# P,# P-3(P,# P,# S,C P,# P,#0S-D,V.38S-D(R,#<T-D8R,#8U-D4V
M,38R-D,V-3)&-C0V.3<S-C$V,C9#-C4R,#4T-C4W.#<T-#4V-#8Y-S0R,#8Q
M-D4V-#(P-#,V1C9%-S0V,38Y-D4V-3<R-38V.38U-S<Q,# Y,# P,#4R,#,P
M,# P,# P,# P,# W,C P,# P,#)#,# P,# P,D,P,# P,# P,# P,# P,# Q
M,# P,# P1D9&1D9&1D9&1D9&1D9&1D9&1D9&1D9&1D9&1D9&1D8Q13 P,# P
M,#%%,# P,# P-$$P,3 P,# S0S P,# P,$-!,# P,# P,# P,# P,#!$,# P
M,# P,#@P,#(P,# P0S P-3 P,# P,# P,# P,#$S,# P,# P-3(P,# P,# P
M-3 P,# P,#8S-C@V-38S-D(Y03 Q,# P,# P,# P,# P0C P,S P,# V,C P
M,# P,#$P,# P,# P,# P,# P,#!!,# Q,# P,#8R,# P,# P,#(P,# P,# X
M,C P,# P,# T,# P,# P.# P,# Q-#0P,3 T,# P,#<P,$$P,# P,# P,# P
M,# P,# P,# P,# P,# P,# P,#<P,# P,# P,# P,# P,# P,# P,# P,# P
M,# P,# W,#!!,# P,# P,# P,# P.#(P,# P,# P-# P,# P,#5&.3-%,3<W
M,3(P-# P,# P,# P,# P,# P,# P,# P,# P,# P,# P,3 P,# P,#DR,#(P
M,# P,# P,# P,#!#03 P,# P,# P,# P,# P1# P,# P,# V,C P,# P,# T
M,# P,# P1#(P,C P,# P,# P,# P,$8P,#(P,# P-C(P,# P,# P,C P,# P
M,#(R,#,P,# P,# P,# P,# V-3 P,# P,#A$,# P,# P,C(P,S P,# P,# P
M,# P,#=$,#$P,# P,S,P,# P,# W,#!!,# P,$0R,#(P,# P,# P,# P,#!"
M,# T,# P,#8R,# P,# P,#$P,# P,# U,C P,# P,# X,# P,# P-30V-3<X
M-S0T-38T-CDW-#<P,$$P,# P1#(P,C P,# P,# P,# P,# P,#4P,# P-C(P
M,# P,# P,3 P,# P,#,R,#4P,# P,# P,# P,# P,S P,# P,# Q,# P,# P
M,#,P,# P,# W,#!!,# P,$0R,#(P,# P,# P,# P,# V,# U,# P,#8R,# P
M,# P,#$P,# P,# R,# P,# P,#<P,$$P,# P-3(P,S P,# P,# P,# P,#<R
M,# P,# P,D,P,# P,# R0S P,# P,# P,# P,# P,#$P,# P,#!&1D9&1D9&
M1D9&1D9&1D9&1D9&1D9&1D9&1D9&1D9&1C,R,# P,# P-#8P,# P,#!&,# P
M,# P,#5&,# P,# P0T$P,# P,# P,# P,# P,$0P,# P,# P.# P,C P,#!#
M,# U,# P,# P,# P,# P,3,P,# P,# U,C P,# P,# T,# P,# P-S0V-3<X
M-S0P,# P,# P,#DR,#(P,# P,# P,# P,#!#03 P,# P,# P,# P,# P1# P
M,# P,# V,C P,# P,# Q,# P,# P1#(P,C P,# P,# P,# P,$8P,#(P,# P
M-C(P,# P,# P,C P,# P,#(R,#,P,# P,# P,# P,# P0C P,# P,#!",# P
M,# P,C(P,S P,# P,# P,# P,$)$,#(P,# P1C4P,3 P,#!!,# Q,# P,#4R
M,#,P,# P,# P,# P,# W,C P,# P,#)#,# P,# P,D,P,# P,# P,# P,# P
M,# P,# P,# P1D9&1D9&1D9&1D9&1D9&1D9&1D9&1D9&1D9&1D9&1D8P-3 P
M,# P,# U,# P,# P-C,P,3 P,#!&1C P,# P,$-!,# P,# P,# P,# P,#!$
M,# P,# P,#8R,# P,# P,#,P,# P,# Q,# Y,# P,#<P,$$P,# P,S P,C P
M,#!#,# U,# P,# P,# P,# P,3,P,# P,# T-C U,#0P,# S,# P,# P-#DV
M,S9&-D4P,# P,# P,# P,# P,# P,3 P,# P,# P13 R,3$P,#4S-30T,C4S
M-CDV138W-D,V-3<T-D8V134P-S(V1C<X-SDP,# P,# P,#E!,# P,# P,# P
M,# P,# U,C P,# P,# W,# P,# P-#0V1C9#-S V.#8Y-D4U,C P,# P,#$X
M,# P,# P-#DV1#8Q-C<V-34R-C4V0S8Q-S0V.3<V-C4T-C8Y-D,V-31#-D8V
M,S8Q-S0V1C<R0D$P,# P,# P,# P,# P,#4R,# P,# P,#<P,# P,# V,S<U
M-S(W,C8U-D4W-#4R,# P,# P,3$P,# P,# T,S9&-D4W-#8Q-CDV138U-S(U
M-C8Y-C4W-S)%-CDV,S9&,$4P,C%&,# U,S4T-#(T-3<X-S0V-3<R-D4V,39#
M-3(V-3<S-D8W-3<R-C,V-31#-CDV,C<R-C$W,C<Y-3 W,C9&-S@W.3 P,# P
M,# P-3(P,# P,# Q,# P,# P,#8T-D8V0S<P-C@V.39%-C0W,C,P,S S-3)%
6-C0V0S9#,# P,# P,# G*2DA#0H-"@``
`
end


Reply | Threaded
Open this post in threaded view
|

Re: View>>isEnabled: question

Ian Bartholomew-18
Pieter,

> This works only partially, the reference view is disabled (doesn't
> accept input or clicks) but the views in the referenced ContainerView
> (like TextEdit, PushButton) don't show as disabled.
[snip]
> visited views. This all looks a bit complicated to me. So my question
> is, is there an easier way or am I overlooking something?

You _could_ add a #isEnabled: method to ContainerView (iterating over
subViews rather than subPresenters) but it seems a bit dangerous to me.
You can't be sure what other methods may have been used to get around
the problem (maybe others want the subviews to still display as enabled)
and how they will interact with the new addition.  It may be fine ....
or it may not.

I would think it would be safer to change your shell method to

onCheckValueChanged
    | enabled |
    enabled := checkPresenter model value.
    textPresenter view isEnabled: enabled.
    containerPresenter view subViews do: [:each |
        each isEnabled: enabled]

One further problem is that, as far as I recall, this sort of thing
won't work with Buttons or any other command sources.  You may disable
the control but Dolphins built-in command enabling mechanism may well
immediately re-enable it for you.

To enable PushButtons it is probably best to go with the flow and use
the #queryCommand procedure ...

queryCommand: aCommandQuery
    aCommandQuery command == #click
        ifTrue:
            [aCommandQuery isEnabled: checkPresenter model value.
            ^true].
    ^super queryCommand: aCommandQuery

--
Ian


Reply | Threaded
Open this post in threaded view
|

Re: View>>isEnabled: question

Pieter Emmelot-2
Ian,
Thanks for your reponse.
The work-a-round you described works for a single level ContainerView, but
suppose I want to build my UI from other views which in turn may also be
build from other views? To enable/disable them would require knowing the
hierarchy!
I would argu that there should be no difference between enabling/disabling
for example a standard combobox and a 'home build' one, composed of a
TextEdit and a PushButton, used as a reference view.
So I digged a bit futher and came up with the following two methods.
Together they give visual feedback on disabled controls and disable
PushButtons without interfering with queryCommand:.

 - Pieter


ContainerView>>isEnabled: aBoolean
    super isEnabled: aBoolean.
    self subViews do:
         [:each |
         each isEnabled: aBoolean].


PushButton>>isEnabled: aBoolean
    super isEnabled: (aBoolean and: [self parentView ifNotNil: [:o | o
isEnabled] ifNil: [true]])





|


Reply | Threaded
Open this post in threaded view
|

Re: View>>isEnabled: question

Ian Bartholomew-18
Pieter,

> ContainerView>>isEnabled: aBoolean
>     super isEnabled: aBoolean.
>     self subViews do:
>          [:each |
>          each isEnabled: aBoolean].

This one seems quite reasonable and would probably be the way I would
implement it if needed.  As you say, it solves the problems of
containers within containers.

The only thing that would concern me is why it's not implemented that
way by default - it seems so obvious.  If you do add this method I'd
keep a close eye on the image just to make sure nothing else gets
broken.

> PushButton>>isEnabled: aBoolean
>     super isEnabled: (aBoolean and: [self parentView ifNotNil: [:o | o
> isEnabled] ifNil: [true]])

This seems a bit more of a risk (although I haven't tried it in
practice) .  The whole of the system is built around command sources
being enabled/disabled dynamically by the #queryCommand methods and
having an alternative system might be asking for trouble.  If it works
though ......

--
Ian


Reply | Threaded
Open this post in threaded view
|

Re: View>>isEnabled: question

Mark Wilden
"Ian Bartholomew" <[hidden email]> wrote in message
news:XnVka.2194$[hidden email]...

> Pieter,
>
> > ContainerView>>isEnabled: aBoolean
> >     super isEnabled: aBoolean.
> >     self subViews do:
> >          [:each |
> >          each isEnabled: aBoolean].
>
> This one seems quite reasonable and would probably be the way I would
> implement it if needed.  As you say, it solves the problems of
> containers within containers.

FWIW, I had to code practically the exact same thing in Visual FoxPro.


Reply | Threaded
Open this post in threaded view
|

Re: View>>isEnabled: question

Pieter Emmelot-2
In reply to this post by Ian Bartholomew-18
Ian,

| The only thing that would concern me is why it's not implemented that
| way by default - it seems so obvious.  If you do add this method I'd
| keep a close eye on the image just to make sure nothing else gets
| broken.

Maybe just a matter of so many thing to do, so little time?
Anyway, so far I didn't see any problems, when I find something I will
post...

 - Pieter