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