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,

 

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


Back to the top