[
Date Prev][
Date Next][
Thread Prev][
Thread Next][
Date Index][
Thread Index]
[
List Home]
Re: [e4-dev] Improved handling of ID's - Suggestion for discussion
|
Looks like you've read my mind - this was my next question.
I think the other way round is easier to manage. Make the model editor
generate a Java-Class with static fields because what I still like is to
let me inject ModelElements by their ID using
-----------8<-----------
@Inject
@ElementId(ModelIds.MY_PART)
private MPart part;
-----------8<-----------
or a more generic annotation which accepts an XPath would look like this
-----------8<-----------
@Inject
@ElementPath("//id("+ModelIds.MY_PART+")")
private MPart part;
-----------8<-----------
I think I'll add a custom annotation to my tools.services package for
the it and as a first step add a command to the editor to generate a
Java-Class with the IDs.
Tom
Am 03.02.12 11:09, schrieb Sebastian Zarnekow:
> Hi,
>
> does that mean that we have to load the class eagerly thus lazy bundle
> initialization is no longer possible? Or would you compile the xmi by
> inlining the identifier when the bundles are packaged?
>
> Sorry if I'm missing the point here.
>
> Cheers,
> Sebastian
>
>
> On 03.02.2012, at 10:33, Lars Vogel <lars.vogel@xxxxxxxxxxxxxx
> <mailto:lars.vogel@xxxxxxxxxxxxxx>> wrote:
>
>> Hello Brian & Tom,
>>
>> thanks for the clarification, that is exactly my suggestion. Managing
>> ID's twice is one of the major pain points in Eclipse development and
>> it would be great if we allow such an approach.
>>
>> I will open a bug report for this feature, as this would be additional
>> as you described I don't think its critical but it might be something
>> to look at for Eclpise 4.3.
>>
>> Thanks for the feedback, Lars
>>
>> 2012/1/31 Brian de Alwis <briandealwis@xxxxxxxxx
>> <mailto:briandealwis@xxxxxxxxx>>
>>
>> I think an example of what Lars is talking about is to allow
>> referencing an identifier from within a .e4xmi file that is
>> actually defined in source code. This would allow single-sourcing
>> of an identifier.
>>
>> For example, say we have a command defined for
>> org.eclipse.ui.exit, and some code that wants to programmatically
>> execute this command. Currently we'd define the command in an
>> e4xmi file:
>>
>> <commands elementId="org.eclipse.ui.exit" />
>>
>> And then also reference the command identifier from a source file:
>>
>> public class MyPart {
>> public static final String EXIT_ID =
>> "org.eclipse.ui.exit";
>>
>> // does this work?
>> @Inject @Named(EXIT_ID) MCommand exitCommand;
>> @Inject EHandlerService hs;
>>
>> public void executeExit() {
>> hs.executeHandler(new
>> ParameterizedCommand(exitCommand, null));
>> }
>> }
>>
>> Currently, org.eclipse.ui.exit has to be used both in the .e4xmi
>> file defining the command, and in the code.
>>
>> Lars' suggestion would change the e4xmi to something like:
>>
>> <commands elementId="model://bundle/MyPart/EXIT_ID" />
>>
>> That would cause the command's elementId to be looked up (and
>> validated!) at runtime; mismatches could be reported. (I guess
>> either ApplicationElementImpl#[gs]etElementId() would need to hook
>> in some resolver.)
>>
>> But I see one possible problem: what should happen if the bundle
>> is unloaded or replaced — and the identifier is now different? I
>> suppose since almost all objects now use references, it may only
>> be an issue with fragment's imports.
>>
>> [Incidentally, why is it that the e4xmi elements are plural?
>> <commands/>, <handlers/>, <bindings/>, <addons/>…]
>>
>> Brian.
>>
>> On 31-Jan-2012, at 3:22 PM, Tom Schindl wrote:
>>
>> > Hi Lars,
>> >
>> > I'm not 100% I really understand what you are suggesting here?
>> Is that
>> > the tooling generates constants in an extra class?
>> >
>> > I'm also not sure what the URL modelid:// is good for? Did you
>> e.g. know
>> > that you can simply use XPath on EMF-Models (we don't ship the
>> bundle
>> > but it's part of the e4-git-repo).
>> >
>> > I think you need to elaborate a bit more, so that I can
>> understand what
>> > you propose and how it could be implemented.
>> >
>> > Tom
>> >
>> > Am 30.01.12 23:12, schrieb Lars Vogel:
>> >> Hi,
>> >>
>> >> one thing I like about Android programming, is that you can
>> refer to
>> >> static strings for ID's in a XML file (layout file) as well as
>> in Java
>> >> code. In the layout file you use @id/button1to point to a ID
>> defined in
>> >> a file.
>> >>
>> >> In your Android coding you could reference the ID via a static
>> string.
>> >> This removes the issue that you may have typos either in your
>> coding or
>> >> in your layout and allows consistent refactoring of ID's.
>> >>
>> >> One of the issues I believe still exists in todays Eclipse 4
>> plug-in
>> >> development, is that you have to define a ID twice, once in your
>> >> application model and at least once in your coding.
>> >>
>> >> I really liked the change to bundleclass:// in M5.
>> >>
>> >> Perhaps we could introduce another URI for ID which could be
>> referred to
>> >> an ID defined in a file, e.g.
>> >>
>> >> modelid://Bundle-SymbolicName/path/filename.extension/id
>> >>
>> >> And add another annotation, like @ID, which allows to annotate
>> static
>> >> strings and to mark them a ID's which could be used in the
>> model as well
>> >> in the coding.
>> >>
>> >> @ID
>> >> public static final String part1 = "com.example.test.part1".
>> >>
>> >> Would that be helpful? Is it worth to open a enhancement
>> request for this?
>> >>
>> >> Best regards, Lars
>> >> --
>> >> Lars
>> >> http://www.vogella.de - Eclipse, Android and Java Tutorials
>> >> http://www.twitter.com/vogella - Lars on Twitter
>> >>
>> >>
>> >> _______________________________________________
>> >> e4-dev mailing list
>> >> e4-dev@xxxxxxxxxxx <mailto:e4-dev@xxxxxxxxxxx>
>> >> https://dev.eclipse.org/mailman/listinfo/e4-dev
>> >
>> >
>> > --
>> > B e s t S o l u t i o n . a t EDV
>> Systemhaus GmbH
>> >
>> ------------------------------------------------------------------------
>> > tom schindl geschäftsführer/CEO
>> >
>> ------------------------------------------------------------------------
>> > eduard-bodem-gasse 5-7/1 A-6020 innsbruck fax ++43
>> 512 935833 <tel:%2B%2B43%20512%20935833>
>> > http://www.BestSolution.at phone ++43
>> 512 935834 <tel:%2B%2B43%20512%20935834>
>> > _______________________________________________
>> > e4-dev mailing list
>> > e4-dev@xxxxxxxxxxx <mailto:e4-dev@xxxxxxxxxxx>
>> > https://dev.eclipse.org/mailman/listinfo/e4-dev
>>
>> _______________________________________________
>> e4-dev mailing list
>> e4-dev@xxxxxxxxxxx <mailto:e4-dev@xxxxxxxxxxx>
>> https://dev.eclipse.org/mailman/listinfo/e4-dev
>>
>>
>>
>>
>> --
>> Lars
>> http://www.vogella.de - Eclipse, Android and Java Tutorials
>> http://www.twitter.com/vogella - Lars on Twitter
>> _______________________________________________
>> e4-dev mailing list
>> e4-dev@xxxxxxxxxxx <mailto:e4-dev@xxxxxxxxxxx>
>> https://dev.eclipse.org/mailman/listinfo/e4-dev
>
>
> _______________________________________________
> e4-dev mailing list
> e4-dev@xxxxxxxxxxx
> https://dev.eclipse.org/mailman/listinfo/e4-dev
--
B e s t S o l u t i o n . a t EDV Systemhaus GmbH
------------------------------------------------------------------------
tom schindl geschäftsführer/CEO
------------------------------------------------------------------------
eduard-bodem-gasse 5-7/1 A-6020 innsbruck fax ++43 512 935833
http://www.BestSolution.at phone ++43 512 935834