Filtered Message Browser suggestions

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

Filtered Message Browser suggestions

Schwab,Wilhelm K
Chris,

I hit a problem that reminded me of your FMB, and am finding it to be
very helpful.  I think the drag and drop (from other browsers) would be
slicker if it presented a list of appropriate actions.  For example,
dropping a class could present options to filter on membership in the
class, in the class and its subclasses, etc.  You are most welcome to
use anything from my filtered CHB that might be helpful; there I found
it useful to map drops onto either package or class filters, and used
tabs for the UI, though I suspect a list would make more sense in the FMB.

Is there a way to edit a filter after it is created?  Perhaps you are
saving me from myself (if so, many thanks), but I find myself wanting to
use drag and drop to add a filter that is close to what I want and then
make modifications.

Another feature that might help is to duplicate and then edit existing
filters.  I would find use for a command to file out all matching
methods to a new workspace.

Enough whining about a great tool :)

Thanks!!!!

Bill


--
Wilhelm K. Schwab, Ph.D.
[hidden email]


Reply | Threaded
Open this post in threaded view
|

Re: Filtered Message Browser suggestions

Chris Uppal-3
Bill,

> I think the drag and drop (from other browsers) would be
> slicker if it presented a list of appropriate actions. [...]

Yes; I'm afraid there are a number of ways that it could do with improvement.
I've been toying with the idea of a complete re-write (not /quite/ as wasteful
as it sounds, since that would at the same time be prototyping the design of
something else I may need).  I'd been thinking that most filters could have a
popup menu of "modes" (reference-to-symbol, definitions-of-symbol,
overrides-of-method, in-subclasses-of-class, in-class, etc, etc...) and allow
that to be changed dynamically.  A simple change that would help would be to
'enable' filters when they are first defined; with recent machines there is no
longer any point in creating them in a disabled state.

I've also been pondering making the list into a tree so as to allow nested
boolean combinations of filters.  I'm not yet convinced that the resulting UI
wouldn't be excessively fiddly, though.


> Is there a way to edit a filter after it is created?

Not in the tool's current state.  The surface metaphor is of an area into which
one can drop arbitrary objects and that is carried through right into the
implementation.  So there's nothing in a filter to "edit" -- its just a Class
or a Symbol, or whatever.  That's something else that I'm considering changing.


> [...] I find myself wanting to
> use drag and drop to add a filter that is close to what I want and then
> make modifications.

Odd that. So do I ;-)


> Another feature that might help is to duplicate and then edit existing
> filters.  I would find use for a command to file out all matching
> methods to a new workspace.

Both good ideas.  Thank you.

I don't know how likely it is that I'll make the changes, though.  I don't use
the tool so /very/ often myself and it has never seemed as if anyone else was
using it, so I've not been keen to update it.  Still, it's a lot more likely to
happen now after your kind words (and -- more importantly -- now that someone
else is actually finding it useful).

    -- chris


Reply | Threaded
Open this post in threaded view
|

Re: Filtered Message Browser suggestions

Schwab,Wilhelm K
Chris,

I don't recall seeing your reply on UF's new server.


>>I think the drag and drop (from other browsers) would be
>>slicker if it presented a list of appropriate actions. [...]
>
>
> Yes; I'm afraid there are a number of ways that it could do with improvement.
> I've been toying with the idea of a complete re-write (not /quite/ as wasteful
> as it sounds, since that would at the same time be prototyping the design of
> something else I may need).  I'd been thinking that most filters could have a
> popup menu of "modes" (reference-to-symbol, definitions-of-symbol,
> overrides-of-method, in-subclasses-of-class, in-class, etc, etc...) and allow
> that to be changed dynamically.

I have found the dialog-on-drop trick to work quite well.  Going back to
my filtered browser, I am not sure why I used tabs.  I would like to
think it was with the plan of adding some controls for other options,
but in the end, it's "just one more click" at the moment.  The FMB
probably has enough options to take full advantage of a tabbed dialog.
You might default things to the user's previous settings, perhaps stored
per-tab.


 > A simple change that would help would be to
> 'enable' filters when they are first defined; with recent machines there is no
> longer any point in creating them in a disabled state.

I was starting to wonder about that.  However, I sometimes use an early
tablet PC (the Compaq thing that never should have been released), and
it is slooooooooooooooow, despite it's claim of a 1GHz CPU.  So, I
agree, but might appreciate the option to have them start disabled.


> I've also been pondering making the list into a tree so as to allow nested
> boolean combinations of filters.  I'm not yet convinced that the resulting UI
> wouldn't be excessively fiddly, though.

It might be simpler to mix logic operations with the filters.  Ideally,
one want a way to include some parentheses, but even an and/or "column"
would be useful and easy to program and to use.

Regardless of how much power you add and how you present it, there
probably should be a way to save filters.


> I don't know how likely it is that I'll make the changes, though.  I don't use
> the tool so /very/ often myself and it has never seemed as if anyone else was
> using it, so I've not been keen to update it.  Still, it's a lot more likely to
> happen now after your kind words (and -- more importantly -- now that someone
> else is actually finding it useful).

It is indeed useful, "even" as-is.  Thanks!!!

Have a good one,

Bill


--
Wilhelm K. Schwab, Ph.D.
[hidden email]


Reply | Threaded
Open this post in threaded view
|

Re: Filtered Message Browser suggestions

Chris Uppal-3
Bill,

> I don't recall seeing your reply on UF's new server.

"UF" ?


> > I've also been pondering making the list into a tree so as to allow
> > nested boolean combinations of filters.  I'm not yet convinced that the
> > resulting UI wouldn't be excessively fiddly, though.
>
> It might be simpler to mix logic operations with the filters.

Could you elaborate on that ?  I'd been thinking of having 'And' and 'Or' nodes
that would have children and so form a tree, but I don't (yet) see a way to mix
logic operations into a non-heirarchical list.


> Regardless of how much power you add and how you present it, there
> probably should be a way to save filters.

I'm afraid that isn't going to happen.  I agree that it would be nice to have a
tool that allowed you to compose and explore complicated (perhaps SQL-like)
conditions, and such a tool should certainly be able to save and restore
queries.  But I think that tool would have to be (mostly) text-based (the only
really effective way of handling complexity, IMO), whereas the FMB is intended
to be much more a light-weight, "fluid", thing (more like the method filters
built into a CHB).


> It is indeed useful, "even" as-is.  Thanks!!!

Thank /you/.

    -- chris


Reply | Threaded
Open this post in threaded view
|

Re: Filtered Message Browser suggestions

Schwab,Wilhelm K
Chris,

>>I don't recall seeing your reply on UF's new server.
>
>
> "UF" ?

University of Florida.


>>>I've also been pondering making the list into a tree so as to allow
>>>nested boolean combinations of filters.  I'm not yet convinced that the
>>>resulting UI wouldn't be excessively fiddly, though.
>>
>>It might be simpler to mix logic operations with the filters.
>
>
> Could you elaborate on that ?  I'd been thinking of having 'And' and 'Or' nodes
> that would have children and so form a tree, but I don't (yet) see a way to mix
> logic operations into a non-heirarchical list.

One answer might be to specify filters that exist only to be used as
components of other filters; it might be as simple as giving the
component filters a non-nil #name or something.  A new filter type would
then do logical combinations.  However, I suspect that the result might
be less interactive than you want.




>>Regardless of how much power you add and how you present it, there
>>probably should be a way to save filters.
>
>
> I'm afraid that isn't going to happen.  I agree that it would be nice to have a
> tool that allowed you to compose and explore complicated (perhaps SQL-like)
> conditions, and such a tool should certainly be able to save and restore
> queries.  But I think that tool would have to be (mostly) text-based (the only
> really effective way of handling complexity, IMO), whereas the FMB is intended
> to be much more a light-weight, "fluid", thing (more like the method filters
> built into a CHB).

A couple of small tweaks would make it scriptable:

FilteringMethodBrowser show
        basicAddSelectorReferencesFilter:#this;
        basicAddSelectorDefinitionsFilter:#that;
        basicAddSelectorDefinitionsFilter:#etc:;
        setAnyMode;
        setStateOfAllFilters:#enableFilter;
        yourself.

What do you think?

If I were feeling _really_ pushy, I might point out that the tool could
script things as they are added, perhaps in another tab, or simply into
a string stream that could be dumped into a new
SmalltalkWorkspaceDocument or simply placed on the clipboard on demand.

Have a good one,

Bill


----------------

!FilteringMethodBrowser methodsFor!

basicAddSelectorReferencesFilter:aString
        "command -- prompt to add a 'references to symbol' filter"

        #wks.
        filterPresenter model add:aString asSymbol.
! !
!FilteringMethodBrowser categoriesFor:
#basicAddSelectorReferencesFilter:!commands!public! !

!FilteringMethodBrowser methodsFor!

basicAddSelectorDefinitionsFilter:aString
        "command -- prompt to add a 'definitions of selector' filter"

        | string |

        #wks.
         string := (String writeStream)
                        nextPutAll: '[:it | it selector == ';
                        print:aString asSymbol;
                        nextPutAll: ']';
                        contents.

        self halt.
        self addCompiledExpression: string.
! !
!FilteringMethodBrowser categoriesFor:
#basicAddSelectorDefinitionsFilter:!commands!public! !

!FilteringMethodBrowser methodsFor!

setStateOfAllFilters:aSymbol
        "private -- set the state of the selected filters to aSymbol"

        | sel |

        #wks.
        sel := filterPresenter list.
       
        (sel allSatisfy: [:each | (self stateOf: each) = aSymbol]) ifTrue: [^
self].
        sel do: [:each | filterStates at: each put: aSymbol].

        filterPresenter view invalidate.

        self onFiltersChanged.
! !
!FilteringMethodBrowser categoriesFor:
#setStateOfAllFilters:!commands!public! !



--
Wilhelm K. Schwab, Ph.D.
[hidden email]


Reply | Threaded
Open this post in threaded view
|

Re: Filtered Message Browser suggestions

Chris Uppal-3
Bill,

> A couple of small tweaks would make it scriptable:

That's a good idea.  Looking at the code, I have no idea how I came to make the
thing /not/ scriptable in the first place ;-)   Thanks -- again -- for the
suggestion(s).

BTW, I've started looking at the re-write I mentioned earlier -- first signs
are not encouraging: an order-of-magnitude increase in complexity for not much
gain in functionality -- but I'm going to shelve that till we see what D6 has
in store for us.  I may do a little "tweaking" to the current incarnation
before then, but don't hold your breath...

    -- chris