Hello all,
I've just modified ListView and ListViewColumn classes to make possible excluding a column from sorting. For example, I have a long list with only same values in a column, and sort on it can be a very overextended. Please, judge the code below: | package | package := Package name: 'ListViewColumnSorting'. package paxVersion: 0; basicComment: ''. package basicPackageVersion: ''. "Add the package scripts" package basicScriptAt: #preinstall put: 'Object subclass: #ListViewColumn instanceVariableNames: ''text width alignment getTextBlock getSortValueBlock getContentsBlock compareBlock parent getImageBlock isAutoResize getInfoTipBlock customDrawBlock hasSorting'' classVariableNames: '''' poolDictionaries: '''' classInstanceVariableNames: '''''. "Add the class names, loose method names, global names, resource names" package classNames yourself. package methodNames add: #ListView -> #sortOnColumn:; add: #ListViewColumn -> #hasSorting; add: #ListViewColumn -> #hasSorting:; add: 'ListViewColumn class' -> #publishedAspectsOfInstances; add: 'ListViewColumn class' -> #stbConvertFrom:; add: 'ListViewColumn class' -> #stbVersion; yourself. package globalNames yourself. package resourceNames yourself. "Binary Global Names" package binaryGlobalNames: (Set new yourself). "Resource Names" package allResourceNames: (Set new yourself). "Add the prerequisite names" package setPrerequisites: (IdentitySet new add: 'Development System'; add: 'Dolphin'; yourself). package! "Class Definitions"! "Loose Methods"! !ListView methodsFor! sortOnColumn: aListViewColumn "Sorts the receiver according to the sort block in aListViewColumn" aListViewColumn hasSorting ifFalse: [ ^ self ]. "inserted line" Cursor wait showWhile: [ self presenter beSorted: aListViewColumn rowSortBlock]! ! !ListView categoriesFor: #sortOnColumn:!columns!public!sorting! ! !ListViewColumn methodsFor! hasSorting hasSorting isNil ifTrue: [ hasSorting := true ]. ^hasSorting! hasSorting: aBoolean hasSorting := aBoolean! ! !ListViewColumn categoriesFor: #hasSorting!accessing!public! ! !ListViewColumn categoriesFor: #hasSorting:!accessing!public! ! !ListViewColumn class methodsFor! publishedAspectsOfInstances "Answer a Set of the aspects published by instances of the receiver" ^super publishedAspectsOfInstances add: (Aspect autostring: #text); add: (Aspect integer: #width); add: (Aspect block: #getContentsBlock); add: (Aspect block: #getImageBlock); add: (Aspect block: #getTextBlock); add: (Aspect block: #sortBlock); add: (Aspect choice: #alignment from: #(left center right)); add: (Aspect boolean: #isAutoResize); add: (Aspect block: #getInfoTipBlock); add: (Aspect block: #customDrawBlock); add: (Aspect block: #hasSorting); "inserted line" yourself! stbConvertFrom: anSTBClassFormat "Convert from earlier version resource. Version changes: 1: Add a getImageBlock instance variable. 2: Addsan isAutoResize instance variable. 3: Add getInfoTipBlock instance variable. 4: Add customDrawBlock instance variable." ^[:data | | newInstance ver | newInstance := self basicNew. 1 to: data size do: [:i | newInstance instVarAt: i put: (data at: i)]. ver := anSTBClassFormat version. ver < 1 ifTrue: ["Leave the new getImageBlock inst. var. nilled"]. ver < 2 ifTrue: [newInstance instVarAt: 10 put: false]. ver < 3 ifTrue: ["Leave the getInfoTipBlock inst. var. nilled"]. ver < 4 ifTrue: ["Leave the new customDrawBlock inst. var. nilled"]. ver < 4.01 ifTrue: []. "inserted line" newInstance]! stbVersion "Answer the current binary filer version number for instances of the receiver." ^4.01 "inserted line" ! ! !ListViewColumn class categoriesFor: #publishedAspectsOfInstances!constants!development!public! ! !ListViewColumn class categoriesFor: #stbConvertFrom:!binary filing!public! ! !ListViewColumn class categoriesFor: #stbVersion!binary filing!public! ! "End of package definition"! "Binary Globals"! "Resources"! -- Dmitry Zamotkin begin 666 ListViewColumnSorting.pac M?"!P86-K86=E('P-"G!A8VMA9V4@.CT@4&%C:V%G92!N86UE.B G3&ES=%9I M97=#;VQU;6Y3;W)T:6YG)RX-"G!A8VMA9V4@<&%X5F5R<VEO;CH@,#L-"@EB M87-I8T-O;6UE;G0Z("<G+@T*#0IP86-K86=E(&)A<VEC4&%C:V%G959E<G-I M;VXZ("<G+@T*#0HB061D('1H92!P86-K86=E('-C<FEP=',B#0IP86-K86=E M(&)A<VEC4V-R:7!T070Z("-P<F5I;G-T86QL('!U=#H@)T]B:F5C="!S=6)C M;&%S<SH@(TQI<W16:65W0V]L=6UN#0H):6YS=&%N8V5687)I86)L94YA;65S M.B G)W1E>'0@=VED=&@@86QI9VYM96YT(&=E=%1E>'1";&]C:R!G9713;W)T M5F%L=65";&]C:R!G971#;VYT96YT<T)L;V-K(&-O;7!A<F5";&]C:R!P87)E M;G0@9V5T26UA9V5";&]C:R!I<T%U=&]297-I>F4@9V5T26YF;U1I<$)L;V-K M(&-U<W1O;41R87=";&]C:R!H87-3;W)T:6YG)R<-"@EC;&%S<U9A<FEA8FQE M3F%M97,Z("<G)R<-"@EP;V]L1&EC=&EO;F%R:65S.B G)R<G#0H)8VQA<W-) M;G-T86YC959A<FEA8FQE3F%M97,Z("<G)R<G+@T*#0HB061D('1H92!C;&%S M<R!N86UE<RP@;&]O<V4@;65T:&]D(&YA;65S+"!G;&]B86P@;F%M97,L(')E M<V]U<F-E(&YA;65S(@T*<&%C:V%G92!C;&%S<TYA;65S#0H)>6]U<G-E;&8N M#0H-"G!A8VMA9V4@;65T:&]D3F%M97,-"@EA9&0Z("-,:7-T5FEE=R M/B C M<V]R=$]N0V]L=6UN.CL-"@EA9&0Z("-,:7-T5FEE=T-O;'5M;B M/B C:&%S M4V]R=&EN9SL-"@EA9&0Z("-,:7-T5FEE=T-O;'5M;B M/B C:&%S4V]R=&EN M9SH[#0H)861D.B G3&ES=%9I97=#;VQU;6X@8VQA<W,G("T^("-P=6)L:7-H M961!<W!E8W1S3V9);G-T86YC97,[#0H)861D.B G3&ES=%9I97=#;VQU;6X@ M8VQA<W,G("T^("-S=&)#;VYV97)T1G)O;3H[#0H)861D.B G3&ES=%9I97=# M;VQU;6X@8VQA<W,G("T^("-S=&)697)S:6]N.PT*"7EO=7)S96QF+@T*#0IP M86-K86=E(&=L;V)A;$YA;65S#0H)>6]U<G-E;&8N#0H-"G!A8VMA9V4@<F5S M;W5R8V5.86UE<PT*"7EO=7)S96QF+@T*#0HB0FEN87)Y($=L;V)A;"!.86UE M<R(-"G!A8VMA9V4@8FEN87)Y1VQO8F%L3F%M97,Z("A3970@;F5W#0H)>6]U M<G-E;&8I+@T*(E)E<V]U<F-E($YA;65S(@T*<&%C:V%G92!A;&Q297-O=7)C M94YA;65S.B H4V5T(&YE=PT*"7EO=7)S96QF*2X-"@T*(D%D9"!T:&4@<')E M<F5Q=6ES:71E(&YA;65S(@T*<&%C:V%G92!S9710<F5R97%U:7-I=&5S.B H M261E;G1I='E3970@;F5W#0H)861D.B G1&5V96QO<&UE;G0@4WES=&5M)SL- M"@EA9&0Z("=$;VQP:&EN)SL-"@EY;W5R<V5L9BDN#0H-"G!A8VMA9V4A#0H- M"B)#;&%S<R!$969I;FET:6]N<R(A#0H-"B),;V]S92!-971H;V1S(B$-"@T* M(4QI<W16:65W(&UE=&AO9'-&;W(A#0H-"G-O<G1/;D-O;'5M;CH@84QI<W16 M:65W0V]L=6UN#0H)(E-O<G1S('1H92!R96-E:79E<B!A8V-O<F1I;F<@=&\@ M=&AE('-O<G0@8FQO8VL@:6X@84QI<W16:65W0V]L=6UN(@T*#0H)84QI<W16 M:65W0V]L=6UN(&AA<U-O<G1I;F<@:69&86QS93H@6R!>('-E;&8@72X@(FEN M<V5R=&5D(&QI;F4B#0H-"@E#=7)S;W(@=V%I="!S:&]W5VAI;&4Z(%L-"@D) M<V5L9B!P<F5S96YT97(@8F53;W)T960Z(&%,:7-T5FEE=T-O;'5M;B!R;W=3 M;W)T0FQO8VM=(2 A#0HA3&ES=%9I97<@8V%T96=O<FEE<T9O<CH@(W-O<G1/ M;D-O;'5M;CHA8V]L=6UN<R%P=6)L:6,A<V]R=&EN9R$@(0T*#0HA3&ES=%9I M97=#;VQU;6X@;65T:&]D<T9O<B$-"@T*:&%S4V]R=&EN9PT*#0H):&%S4V]R M=&EN9R!I<TYI;"!I9E1R=64Z(%L@:&%S4V]R=&EN9R Z/2!T<G5E(%TN#0H) M7FAA<U-O<G1I;F<A#0H-"FAA<U-O<G1I;F<Z(&%";V]L96%N#0H):&%S4V]R M=&EN9R Z/2!A0F]O;&5A;B$@(0T*(4QI<W16:65W0V]L=6UN(&-A=&5G;W)I M97-&;W(Z("-H87-3;W)T:6YG(6%C8V5S<VEN9R%P=6)L:6,A("$-"B%,:7-T M5FEE=T-O;'5M;B!C871E9V]R:65S1F]R.B C:&%S4V]R=&EN9SHA86-C97-S M:6YG(7!U8FQI8R$@(0T*#0HA3&ES=%9I97=#;VQU;6X@8VQA<W,@;65T:&]D M<T9O<B$-"@T*<'5B;&ES:&5D07-P96-T<T]F26YS=&%N8V5S#0H)(D%N<W=E M<B!A(%-E="!O9B!T:&4@87-P96-T<R!P=6)L:7-H960@8GD@(&EN<W1A;F-E M<R!O9B!T:&4@<F5C96EV97(B#0H-"@E><W5P97(@<'5B;&ES:&5D07-P96-T M<T]F26YS=&%N8V5S( T*"0EA9&0Z("A!<W!E8W0@875T;W-T<FEN9SH@(W1E M>'0I.PT*"0EA9&0Z("A!<W!E8W0@:6YT96=E<CH@(W=I9'1H*3L-"@D)861D M.B H07-P96-T(&)L;V-K.B C9V5T0V]N=&5N='-";&]C:RD[#0H)"6%D9#H@ M*$%S<&5C="!B;&]C:SH@(V=E=$EM86=E0FQO8VLI.PT*"0EA9&0Z("A!<W!E M8W0@8FQO8VLZ("-G971497AT0FQO8VLI.PT*"0EA9&0Z("A!<W!E8W0@8FQO M8VLZ("-S;W)T0FQO8VLI.PT*"0EA9&0Z("A!<W!E8W0@8VAO:6-E.B C86QI M9VYM96YT(&9R;VTZ(",H;&5F="!C96YT97(@<FEG:'0I*3L-"@D)861D.B H M07-P96-T(&)O;VQE86XZ("-I<T%U=&]297-I>F4I.PT*"0EA9&0Z("A!<W!E M8W0@8FQO8VLZ("-G971);F9O5&EP0FQO8VLI.PT*"0EA9&0Z("A!<W!E8W0@ M8FQO8VLZ("-C=7-T;VU$<F%W0FQO8VLI.PT*"0EA9&0Z("A!<W!E8W0@8FQO M8VLZ("-H87-3;W)T:6YG*3L@(FEN<V5R=&5D(&QI;F4B#0H)"7EO=7)S96QF M(0T*#0IS=&)#;VYV97)T1G)O;3H@86Y35$)#;&%S<T9O<FUA= T*"2)#;VYV M97)T(&9R;VT@96%R;&EE<B!V97)S:6]N(')E<V]U<F-E+B -"@E697)S:6]N M(&-H86YG97,Z#0H)"3$Z($%D9"!A(&=E=$EM86=E0FQO8VL@:6YS=&%N8V4@ M=F%R:6%B;&4N#0H)"3(Z($%D9'-A;B!I<T%U=&]297-I>F4@:6YS=&%N8V4@ M=F%R:6%B;&4N#0H)"3,Z($%D9"!G971);F9O5&EP0FQO8VL@:6YS=&%N8V4@ M=F%R:6%B;&4N#0H)"30Z($%D9"!C=7-T;VU$<F%W0FQO8VL@:6YS=&%N8V4@ M=F%R:6%B;&4N(@T*#0H)7ELZ9&%T82!\('P@;F5W26YS=&%N8V4@=F5R('P- M"@D);F5W26YS=&%N8V4@.CT@<V5L9B!B87-I8TYE=RX-"@D),2!T;SH@9&%T M82!S:7IE(&1O.B!;.FD@?"!N97=);G-T86YC92!I;G-T5F%R070Z(&D@<'5T M.B H9&%T82!A=#H@:2E=+@T*"0EV97(@.CT@86Y35$)#;&%S<T9O<FUA="!V M97)S:6]N+@T*"0EV97(@/" Q(&EF5')U93H@6R),96%V92!T:&4@;F5W(&=E M=$EM86=E0FQO8VL@:6YS="X@=F%R+B!N:6QL960B72X-"@D)=F5R(#P@,B!I M9E1R=64Z(%MN97=);G-T86YC92!I;G-T5F%R070Z(#$P('!U=#H@9F%L<V5= M+@T*"0EV97(@/" S(&EF5')U93H@6R),96%V92!T:&4@9V5T26YF;U1I<$)L M;V-K(&EN<W0N('9A<BX@;FEL;&5D(ETN#0H)"79E<B \(#0@:694<G5E.B!; M(DQE879E('1H92!N97<@8W5S=&]M1')A=T)L;V-K(&EN<W0N('9A<BX@;FEL M;&5D(ETN#0H)"79E<B \(#0N,#$@:694<G5E.B!;72X@(FEN<V5R=&5D(&QI M;F4B#0H-"@D);F5W26YS=&%N8V5=(0T*#0IS=&)697)S:6]N#0H)(D%N<W=E M<B!T:&4@8W5R<F5N="!B:6YA<GD@9FEL97(@=F5R<VEO;B!N=6UB97(@9F]R M(&EN<W1A;F-E<R!O9B!T:&4@<F5C96EV97(N(@T*#0H)7C0N,#$@(FEN<V5R M=&5D(&QI;F4B#0HA("$-"B%,:7-T5FEE=T-O;'5M;B!C;&%S<R!C871E9V]R M:65S1F]R.B C<'5B;&ES:&5D07-P96-T<T]F26YS=&%N8V5S(6-O;G-T86YT M<R%D979E;&]P;65N="%P=6)L:6,A("$-"B%,:7-T5FEE=T-O;'5M;B!C;&%S M<R!C871E9V]R:65S1F]R.B C<W1B0V]N=F5R=$9R;VTZ(6)I;F%R>2!F:6QI M;F<A<'5B;&EC(2 A#0HA3&ES=%9I97=#;VQU;6X@8VQA<W,@8V%T96=O<FEE M<T9O<CH@(W-T8E9E<G-I;VXA8FEN87)Y(&9I;&EN9R%P=6)L:6,A("$-"@T* M(D5N9"!O9B!P86-K86=E(&1E9FEN:71I;VXB(0T*#0H@#0HB0FEN87)Y($=L ;;V)A;',B(0T*#0HB4F5S;W5R8V5S(B$-"@T* ` end |
Free forum by Nabble | Edit this page |