Skip to main content

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [List Home]
Re: [cdt-dev] MBS (IManagedOptionValueHandler) questions

I put my recursion check in and the refresh problem still exists. I have raised bug 161605
--
Derek

Sennikovsky, Mikhail wrote:
Hi Derek,

Yes, now I remember we have such limitation in the value handler mechanism.

In order to modify options from value handler the IConfiguration/IResourceConfiguration.setOption() should be used.

Both the IConfiguration and IResourceConfiguration have the following methods that are to be used from the value handler:

*public* IOption setOption(IHoldsOptions parent, IOption option, *boolean* value)

*throws* BuildException; *public* IOption setOption(IHoldsOptions parent, IOption option, String value)

            *throws* BuildException;

*public* IOption setOption(IHoldsOptions parent, IOption option, String[] value)

            *throws* BuildException;

I guess we should put a recursion check in the ManagedBuildManager.setOption() ..

Mikhail

-----Original Message-----
From: cdt-dev-bounces@xxxxxxxxxxx [mailto:cdt-dev-bounces@xxxxxxxxxxx] On Behalf Of Derek Morris
Sent: Thursday, October 19, 2006 8:38 PM
To: CDT General developers list.
Subject: Re: [cdt-dev] MBS (IManagedOptionValueHandler) questions

Mikhail,

Using ManagedBuildManager.setOption() doesn't work... It calls handleValue,

which calls ManagedBuildManager, which...

I guess I could put a recursion check in handleValue, but this seems rather

excessive.

--

Derek

Sennikovsky, Mikhail wrote:

 You should do







 handleValue(..., IBuildObject configuration, ..){



 ...



  if(configuration instanceof IConfiguration){



    ManagedBuildManager.setOption((IConfiguration)configuration, ...);



  } else if (configuration instanceof IResourceConfiguration){



    ManagedBuildManager.setOption((IResourceConfiguration)configuration,

 ...);



 }



 ...



 }







 Mikhail







 -----Original Message-----

 From: cdt-dev-bounces@xxxxxxxxxxx [mailto:cdt-dev-bounces@xxxxxxxxxxx]

 On Behalf Of Derek Morris

 Sent: Thursday, October 19, 2006 7:57 PM

 To: CDT General developers list.

 Subject: Re: [cdt-dev] MBS (IManagedOptionValueHandler) questions







 Just tried that...







 1. I had to add a dependency on org.eclipse.cdt.core and import



 org.eclipse.cdt.core.AbstractCExtension to get ManagedBuildManager

 correctly.







 2. Where do I get an IConfiguration from? I get passed an IBuildObject and



 IOptionHolder and an IOption?







 Thanks,



 --



 Derek







 Sennikovsky, Mikhail wrote:



>  Hi Derek,



>



>



>



>  Please see my response embedded below.



>



>



>



>  Mikhail



>



>



>



>  -----Original Message-----



>  From: cdt-dev-bounces@xxxxxxxxxxx [mailto:cdt-dev-bounces@xxxxxxxxxxx]



>  On Behalf Of Derek Morris



>  Sent: Thursday, October 19, 2006 7:19 PM



>  To: CDT General developers list.



>  Subject: Re: [cdt-dev] MBS (IManagedOptionValueHandler) questions



>



>



>



>  Hi Mikhail,



>



>



>



>  I have written an IManagedOptionValueHandler. I have added a new



>  optionCategory



>



>  and options to that OptionCategory that uses the valueHandler and



>



>  valueHandlerExtraArgument extension. I have added boolean and string



>  options.



>



>



>



>  IManagedOptionValueHandler gets passed IOptionHolder and IOption.



>



>



>



>  From within the valuehandler I am using IOption.setValue(). Using these



>



>  interfaces I am almost getting the behaviour I want... If it setValue()



>  on the



>



>  boolean option, the corresponding checkbox in the GUI is updated.



>  However, if I



>



>  setValue() on the string, the corresponding textbox in the GUI is not



>  updated



>



>  until I interact with the GUI in some way (check the booleans

 checkbox, for



>



>  example).



>



>  */[Mikhail] This seems like a bug. Try using the ManagedBuildManager API



>  instead of IOption (see my comment below) and if this does not help



>  please raise a bug./*



>



>



>



>  I have no docs for ManagedBuildManager so I don't know when/how to use



>  it. As I



>



>  am passed an IOption (and it is working - mostly - for me) I am using

 that.



>



>  */[Mikhail] The org.eclipse.cdt.managedbuilder.core.ManagedBuildManager



>  is the entry-point for all MBS core operations. It should be used for



>  setting option values as well. You should not call IOption.setValue



>  because it will not work for the case of extension options (i.e. options



>  whose values are not overridden by user settings)./*



>



>  */The ManagedBuildManager contains the following methods that should be



>  used for option value modifications (see JavaDoc comments for those



>  methods for more detail):/*



>



>  */ /*



>



>       *public* *static* IOption setOption(IConfiguration config,



>  IHoldsOptions holder, IOption option, *boolean* value)



>



>       *public* *static* IOption setOption(IResourceConfiguration



>  resConfig, IHoldsOptions holder, IOption option, *boolean* value)



>



>       *public* *static* IOption setOption(IConfiguration config,



>  IHoldsOptions holder, IOption option, String value)



>



>  *public* *static* IOption setOption(IResourceConfiguration resConfig,



>  IHoldsOptions holder, IOption option, String value)



>



>       *public* *static* IOption setOption(IConfiguration config,



>  IHoldsOptions holder, IOption option, String[] value)



>



>       *public* *static* IOption setOption(IResourceConfiguration



>  resConfig, IHoldsOptions holder, IOption option, String[] value)



>



>  */ /*



>



>  */The “IBuildObject configuration” argument passed to your value handler



>  is either an IConfiguration or an IResourceConfiguration. You should do



>  instanceof and call the proper ManagedBuildManager.setOption() method.



>  Please let me know if you have any questions with using the



>  ManagedBuildManager.setOption()/*



>



>  */ /*



>



>  */Regards,/*



>



>  */Mikhail/*



>



>  */ /*



>



>  --



>



>  Derek



>



>



>



>  Sennikovsky, Mikhail wrote:



>



> >  Hi Derek,



>



> >



>



> >  I did not fully understand how are you using the value handler



>



> >  mechanism. Could you elaborate a bit more on this (i.e. where are you



>



> >  calling the setValue from) so that I could understand your issue.



>



> >  BTW, you should not call the IOption.setValue directly. You should use



>



> >  the ManagedBuildManager.setOption() instead.



>



> >



>



> >  Mikhail



>



> >



>



> >  -----Original Message-----



>



> >  From: cdt-dev-bounces@xxxxxxxxxxx [mailto:cdt-dev-bounces@xxxxxxxxxxx]



>



> >  On Behalf Of Derek Morris



>



> >  Sent: Thursday, October 19, 2006 5:28 PM



>



> >  To: CDT General developers list.



>



> >  Subject: Re: [cdt-dev] MBS (IManagedOptionValueHandler) questions



>



> >



>



> >  Mikhail,



>



> >



>



> >  When I use option.setValue(boolean), then the UI checkbox is updated



>



> >  However, when I option.setvalue(string), the the UI textbox is NOT



>



> >  updated,



>



> > until I do something else in the UI (for example setting a
checkbox). Is



>



> >  this I bug?



>



> >



>



> >  --



>



> >  Derek



>



> >



>



> >  Sennikovsky, Mikhail wrote:



>



> > > Hi Derek,



>



> > >



>



> > >



>



> > >



>



> > > Please see my answers embedded below.



>



> > >



>



> > >



>



> > >



>



> > > Mikhail



>



> > >



>



> > >



>



> > >



>



> > > -----Original Message-----



>



> > > From: cdt-dev-bounces@xxxxxxxxxxx
[mailto:cdt-dev-bounces@xxxxxxxxxxx]



>



> >



>



> > > On Behalf Of Derek Morris



>



> > > Sent: Wednesday, October 18, 2006 3:20 PM



>



> > > To: CDT General developers list.



>



> > > Subject: [cdt-dev] MBS (IManagedOptionValueHandler) questions



>



> > >



>



> > >



>



> > >



>



> > > Hi,



>



> > >



>



> > >



>



> > >



>



> > > Note: I think you're going to hate this as I'm using this
extension in



>



> >  a



>



> > > way



>



> > >



>



> > > that wasn't planned...



>



> > >



>



> > >



>



> > >



>



> > > In the plugin.xml have added an additional field to a compilers



>



> > > optionCategory,



>



> > >



>



> > > like this:



>



> > >



>



> > > <option



>



> > >



>



> > >     name='Paste area'



>



> > >



>



> > >     category='compiler.exe.debug'



>



> > >



>



> > >     id='paste'



>



> > >



>



> > >     valueType='string'



>



> > >



>



> > >     valueHandler='OptionValueHandler'



>



> > >



>



> > >     valueHandlerExtraArgument="paste"



>



> > >



>



> > >  ></option>



>



> > >



>



> > >



>



> > >



>



> > > I am using the OptionValueHandler to allow a user to paste tool



>



> >  options



>



> > > into a



>



> > >



>



> > > field which is then parsed to set the tool options in the properties



>



> > > GUI. This



>



> > >



>



> > > means I can copy and paste options between configurations and



>



> >  correctly



>



> > > set the



>



> > >



>



> > > properties GUI to match. This is working.



>



> > >



>



> > >



>



> > >



>



> > > The first question is that I would like to add this field to the main



>



> > > compiler



>



> > >



>



> > > page (under 'expert settings'), rather than one of the sub-pages. Is



>



> > > there a way



>



> > >



>



> > > to do this?



>



> > >



>



> > > */[Mikhail] It is not possible to extend/contribute to the main



>



> >  compiler



>



> > > page currently./*



>



> > >



>



> > >



>



> > >



>



> > >



>



> > >



>



> > > The second question is that after I have parsed the options, I
wish to



>



> >



>



> > > clear the



>



> > >



>



> > > entry field in the GUI. I am able to clear the value using



>



> > >



>



> > > (option.setValue("")), but this is not reflected in the GUI until I



>



> > > switch from



>



> > >



>



> > > the page and switch back again. Is there a way to get the entry field



>



> >  to be



>



> > > refreshed?



>



> > >



>



> > > */[Mikhail] The MBS functionality does not have the change



>



> >  notification



>



> > > mechanism currently. That is why MBS GUI has to refresh contents of



>



> >  each



>



> > > page to ensure that proper "live" values are displayed. Currently the



>



> > > refresh is performed in the following situations:/*



>



> > >



>



> > > */1.    /**/the page/tab becomes visible/*



>



> > >



>



> > > */2.    /**/the value of some UI property of the page gets changed/*



>



> > >



>



> > > */ /*



>



> > >



>



> > > */If you need some more flexible mechanism of UI contents update we



>



> > > might consider changing/enhancing the current MBS UI refresh



>



> >  mechanism./*



>



> > > */ /*



>



> > >



>



> > > */Regards,/*



>



> > >



>



> > > */Mikhail/*



>



> > >



>



> > >



>



> > >



>



> > > TIA



>



> > >



>



> > >



>



> > >



>



> > > --



>



> > >



>



> > > Derek



>



> > >



>



> > > _______________________________________________



>



> > >



>



> > > cdt-dev mailing list



>



> > >



>



> > > cdt-dev@xxxxxxxxxxx



>



> > >



>



> > > https://dev.eclipse.org/mailman/listinfo/cdt-dev



>



> > >



>



> > >



>



> > >



>



> >
------------------------------------------------------------------------



>



> > > _______________________________________________



>



> > > cdt-dev mailing list



>



> > > cdt-dev@xxxxxxxxxxx



>



> > > https://dev.eclipse.org/mailman/listinfo/cdt-dev



>



> >



>



> >  _______________________________________________



>



> >  cdt-dev mailing list



>



> >  cdt-dev@xxxxxxxxxxx



>



> >  https://dev.eclipse.org/mailman/listinfo/cdt-dev



>



> >  _______________________________________________



>



> >  cdt-dev mailing list



>



> >  cdt-dev@xxxxxxxxxxx



>



> >  https://dev.eclipse.org/mailman/listinfo/cdt-dev



>



> >



>



>  _______________________________________________



>



>  cdt-dev mailing list



>



>  cdt-dev@xxxxxxxxxxx



>



>  https://dev.eclipse.org/mailman/listinfo/cdt-dev



>



>



>  ------------------------------------------------------------------------



>



>  _______________________________________________



>  cdt-dev mailing list



>  cdt-dev@xxxxxxxxxxx



>  https://dev.eclipse.org/mailman/listinfo/cdt-dev







 _______________________________________________



 cdt-dev mailing list



 cdt-dev@xxxxxxxxxxx



 https://dev.eclipse.org/mailman/listinfo/cdt-dev





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



 _______________________________________________

 cdt-dev mailing list

 cdt-dev@xxxxxxxxxxx

 https://dev.eclipse.org/mailman/listinfo/cdt-dev

_______________________________________________

cdt-dev mailing list

cdt-dev@xxxxxxxxxxx

https://dev.eclipse.org/mailman/listinfo/cdt-dev


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

_______________________________________________
cdt-dev mailing list
cdt-dev@xxxxxxxxxxx
https://dev.eclipse.org/mailman/listinfo/cdt-dev



Back to the top