Skip to main content

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [List Home]
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



Back to the top