Skip to main content

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

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


Back to the top