[ImageJ-devel] @parameter choice update in component callback
Adrian Daerr
adrian.daerr at univ-paris-diderot.fr
Mon Aug 24 09:07:22 CDT 2015
Hi Curtis,
>> I have parameters a, b, c whose initialisation depend on a common
>> calculation (depending on the image gotten through a previous
>> @Parameter ImagePlus imp): can I do this calculation in the
>> initialiser for the first parameter a, and then in the initialisers
>> of b and c rely on the fact that the calculation was already done ?
>
> Perhaps simplest at the moment would be to give your command a
> global initializer -- i.e., set the initializer method in the
> @Plugin annotation itself, rather than on specific parameters.
> The ImagePlus will be populated by a preprocessor _before_ the
> initialize method is called, so when your global initializer gets
> called you will already have access to the ImagePlus.
Thanks for the suggestion, which almost does the job, except that the
initialization also depends on a parameter
@Parameter(persist = false) private RectangleOverlay roi;
which appears to be populated only after the initializer is called
(its value is null in the initializer and valid in the run() method).
I am not sure how to solve this: do I have to write a Preprocessor of
some sorts, or can the initializer 'manually' call the code which
normally harvest the RectangleOverlay parameter later on ? Somehow the
fact that ImagePlus is populated by a Preprocessor but
RectangleOverlay isn't, seems linked to issues that I mentionned in
another post[1], but even after some reading of the tutorials and the
scijava source code around org.scijava.command.CommandInfo my
understanding of how the plugin initialisation works is still poor.
[1]
(e.g. that the Overlay appears in the harvesting dialog, or that an
Exception is thrown because of the overlay after command execution)
http://imagej-devel.54429.x6.nabble.com/Masking-Parameter-from-GUI-harvesting-td1098.html
> But again, scijava/scijava-common#181 is very relevant here.
Would it make sense to distinguish (by an annotation ?) parameters
that are to be initialized from the context (i.e. services, active
image, roi etc), and whose lack should be immediately fatal to the
plugin (no UI harvesting, and in exchange can be assumed final for the
rest of the command execution), from parameters that, if they cannot
be populated from already available data, should be harvested through
a dialog (and may change several times) ?
cheers,
Adrian
More information about the ImageJ-devel
mailing list