Login  Register

Re: "No" button within GenericDialog class feature update

Posted by Fred Damen on Sep 26, 2019; 6:09pm
URL: http://imagej.273.s1.nabble.com/No-button-within-GenericDialog-class-feature-update-tp5022458p5022473.html

Greetings,

On a side note, the dialogItemChanged method returns a boolean which controls
the enabled / disabled state of the "OK" button.  I use dialogItemChanged in
part to validate the current field settings and prevent the user from making a
bogus request. The problem is that the default state of the "OK" button is
enabled.  I assume that I could go under the hood and disable the "OK" button
myself before showDialog, albeit, if the form was filled out acceptably the
user would have to change something to get dialogItemChanged; what I would
really like is to be able to have the dialogItemChanged method called, and
"OK" button state determined, before displaying the "OK" button for the first
time; this would allow the 'is the request valid' code in one place.

Thanks for listening,

Fred

On Wed, September 25, 2019 3:53 pm, Michael Schmid wrote:

> Hi Philippe,
>
> the idea with a DialogListener or the ActionPerformed method called back
> by the buttons is exactly for avoiding to write the commands into the
> GenericDialog class (which, obviously, is not a solution); these
> commands would then go into the DialogItemChanged method of your plugin.
>
> So what exactly do you want to do with the button? Maybe it can be done
> already with the current GenericDialog, if your plugin implements the
> DialogListner interface...
>
>
> Michael
> ________________________________________________________________
>
> On 25.09.19 11:05, CARL Philippe (LBP) wrote:
>> Dear Michael,
>> I had missed to answer your following question:
>>
>>> In your sample code, after gd.showDialog() I think that the code will
>>> never again be able to react to the dialog, even if the dialog remains
>>> on the screen?
>>
>> The code is reacting as I expected it.
>> Indeed, if you look at the line 1388 of the modified version of the
>> GenericDialog code I had put under :
>> http://punias.free.fr/ImageJ/test/GenericDialog.java
>> I had written:
>> if (source==okay || source==cancel | source==no) {
>> wasCanceled = source==cancel;
>> wasOKed = source==okay;
>> if(source==no && noDispose) {
>> wasOKed = false;
>> IJ.log("not disposing the window");
>> ImagePlus impTest =
>> IJ.openImage("http://wsr.imagej.net/images/AuPbSn40.jpg");
>> impTest.show();
>> } else
>> dispose();
>> }
>> And the following written code:
>> IJ.log("not disposing the window");
>> ImagePlus impTest =
>> IJ.openImage("http://wsr.imagej.net/images/AuPbSn40.jpg");
>> impTest.show();
>> can be run several times as I wanted it.
>> Nevertheless, the "wished launched code" has to be written within the
>> GenericDialog class which makes it non suitable.
>> Thus, what would just be needed is to have the possibility to pass the
>> pointer to a void defined outside the GenericDialog class.
>> And I'm saying this, since I have already seen such tricky coding in C
>> within the Levmar library (when you are defining the equation to be fitted
>> as well as its jacobians):
>> http://users.ics.forth.gr/~lourakis/levmar/
>> But such advanced coding is way beyond my coding level either in C or in
>> Java...
>> kindest regards,
>> Philippe
>>
>> ----- Mail original -----
>> De: "Michael Schmid" <[hidden email]>
>> À: "imagej" <[hidden email]>
>> Envoyé: Mardi 24 Septembre 2019 18:02:47
>> Objet: Re: "No" button within GenericDialog class feature update
>>
>> Hi Philippe,
>>
>> yes, I would also like to have more functionality for additional
>> buttons, and I am sometimes "misusing" the "No" button for such purposes.
>>
>> In your sample code, after gd.showDialog() I think that the code will
>> never again be able to react to the dialog, even if the dialog remains
>> on the screen?
>>
>> So I think we need some callback, using the DialogListener and/or
>> ActionListener interface.
>>
>> So my dream would be a GenericDialog method
>>     Button[] addBottomButtons(String[] buttonLabels)
>> which adds one or more buttons at the position where usually the 'no'
>> button would appear.
>> Or, alternatively,
>>     Button addBottomButton(String buttonLabel)
>> which could be called multiple times (the buttons would go into a Vector
>> or ArrayList)
>>
>> Then the user plugin could either use the references to the buttons and
>> register as an ActionListener for them, or it could register as
>> DialogListener and it would get its dialogItemChanged method called when
>> the user presses a button while the dialog window is still open.
>>
>> Of course, the same could be done already now by adding a panel with the
>> buttons, and registering for each of them as ActionListener, but that is
>> more cumbersome, and in many cases one wants the button(s) at the bottom.
>>
>> (unfortunately, I can't quickly do the coding now; too much unfinished
>> work on my desk)
>>
>>
>> Michael
>> ________________________________________________________________
>> On 24.09.19 17:09, CARL Philippe (LBP) wrote:
>>> Dear all,
>>> Within the GenericDialog class it is now possible to add an additional
>>> button and even customize its name (see enableYesNoCancel(java.lang.String
>>> yesLabel, java.lang.String noLabel) method).
>>> Nevertheless, it would additionally be interesting to have this custom "No"
>>> button being able to launch a method without launching itself the
>>> GenericDialog dispose() method, for example for having an "Apply" button
>>> which would not close the dialog like I illustrated it within the small
>>> plugin that can be found here:
>>> http://punias.free.fr/ImageJ/test/My_Plugin.java
>>> that can be linked with the GenericDialog update try that can be found
>>> within:
>>> http://punias.free.fr/ImageJ/test/GenericDialog.java
>>> Nevertheless I don't know how I could define the method I would like to
>>> launch from "outside" the GenericDialog class.
>>> I thank you very much in advance for your lighting on this.
>>> My best regards
>>> Philippe
>>>
>>> Philippe CARL
>>> Laboratoire de Bioimagerie et Pathologies
>>> UMR 7021 CNRS - Université de Strasbourg
>>> Faculté de Pharmacie
>>> 74 route du Rhin
>>> 67401 ILLKIRCH
>>> Tel : +33(0)3 68 85 41 84
>>>
>>> --
>>> ImageJ mailing list: http://imagej.nih.gov/ij/list.html
>>>
>>
>> --
>> ImageJ mailing list: http://imagej.nih.gov/ij/list.html
>>
>> --
>> ImageJ mailing list: http://imagej.nih.gov/ij/list.html
>>
>
> --
> ImageJ mailing list: http://imagej.nih.gov/ij/list.html
>

--
ImageJ mailing list: http://imagej.nih.gov/ij/list.html