Thanks for this.
I was steered fowards proxy-super and was all set.

On Feb 19, 11:19 am, Chouser <chou...@gmail.com> wrote:
> On Thu, Feb 19, 2009 at 9:09 AM, Eric Thorsen <eric.thor...@gmail.com> wrote:
>
> > In some cases, the Java classes give you an interface where you have
> > to do all kinds of shenanigans to handle various cases (like the cell
> > renderer) where a call to a multi-method would be so much cleaner
> > (IMO).  I really just wanted to create a stub class for this 1x.  The
> > above was not bad since it was just 1 function.
> > Anyone else doing similar things?
>
> I've done such shenanigans with JTable cells and proxy, though a
> multimethod was a poor fit in my case:
>
> (.setDefaultRenderer table Object
>   (proxy [DefaultTableCellRenderer] []
>     (getTableCellRendererComponent [tbl obj isSelected hasFocus r c]
>       (let [{:keys [level]} (nth rows r)]
>         (doto this
>           (.setForeground (condp > level
>                              0 Color/white
>                             10 Color/blue
>                             20 Color/red
>                             30 Color/magenta
>                             Color/black))
>           (.setText (str obj)))))))
>
> If you need access to a super class method, you can use proxy-super.
> This, for example, is a really wordy way to do essentially nothing:
>
> (.setDefaultRenderer table Object
>   (proxy [DefaultTableCellRenderer] []
>     (getTableCellRendererComponent [tbl obj isSelected hasFocus r c]
>       (proxy-super getTableCellRendererComponent
>                    tbl obj isSelected hasFocus r c))))
>
> --Chouser
--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups 
"Clojure" group.
To post to this group, send email to clojure@googlegroups.com
To unsubscribe from this group, send email to 
clojure+unsubscr...@googlegroups.com
For more options, visit this group at 
http://groups.google.com/group/clojure?hl=en
-~----------~----~----~----~------~----~------~--~---

Reply via email to