Boris Heithecker wrote:
> In your ContextAwareAction, you could use a delegate to your
> ActionListener. Something like: 
> 
>        //Create an instance of your ActionListener, pass the URI
>         MyActionListenerImpl al = new MyActionListenerImpl(uri);
>        //Return a simple delegate
>         AbstractAction ret =  new AbstractAction() {
>             @Override
>             public void actionPerformed(ActionEvent e) {
>                 al.actionPerformed(e);
>             }
>             
>         };
>       ret.setEnabled(uri != null);

That's more or less what I ended up doing, only that I don't bother with
ContextAwareAction at all. One ActionListener-based action simply
delegates to another in its actionPerformed method. This seems simpler
than using AbstractAction + ContextAwareAction, although it does mean
that I cannot selectively disable if the "outer" ActionListener's
injected input is present in the context but cannot be converted to an
URI. Or am I missing some benefit of ContextAwareAction that I don't
know about?

At any rate, it's just a pity that I can't have additional static
create(SomeContextObject) methods in MyActionListenerImpl, annotated
with @ActionRegistration. That would keep all the different entrypoints
into MyActionListenerImpl in one file.

Thank you for your help.

Best wishes,

Andreas

-- 
Dr. Andreas Sewe | s...@cqse.eu | +49 152 56342856
CQSE GmbH | Lichtenbergstrasse 8 | 85748 Garching | www.cqse.eu
Amtsgericht Muenchen | HRB 177678 | GF: F. Deissenboeck, M. Feilkas

Attachment: signature.asc
Description: OpenPGP digital signature

Reply via email to