Eclipse Community Forums
Forum Search:

Search      Help    Register    Login    Home
Home » Eclipse Projects » Sirius » Limit selection of candidates for association(... might be off topic ...)
Limit selection of candidates for association [message #1244400] Wed, 12 February 2014 09:27 Go to next message
Wilbert Alberts is currently offline Wilbert AlbertsFriend
Messages: 169
Registered: June 2010
Senior Member

In short: are there ways to limit the selection of an element from a group of alternatives?

Suppose that I have a model that allows definition of Car configurations by adding a number of Options to a Car object. A CarConfiguration is made for a specific country (it has a Country attribute). Not all Options are allowed in each Country. Therefore, an OptionGroup has been defined that specifies which options are allowed for a certain Country.

Whenever a CarConfiguration is edited, a user has the ability to select a number of options. However, the user should only select options that are valid for the country the CarConfiguration is made for.

When editing the options attribute in a standard properties editor, a dialog is shown holding all Options present in the Model. This list could be limited by only showing the Options valid for the country the CarConfiguration is made for. Are there ways to filter the content of the list (maybe by specifying an OCL constraint)?

I know that this is a more general question (then being Sirius specific) but maybe Sirius provides additional means and on the other hand, this group is read by experts creating sophisticated editors...

For sake of completeness, the example is created using the following meta model:

package example : example = ''
	class Model
		property configs : CarConfig[*] { ordered composes };
		property options : Option[*] { ordered composes };
		property optiongroups : OptionGroup[*] { ordered composes };
	class CarConfig
		attribute id : String;
		attribute country : Country;
		property options : Option[*] { ordered };
		invariant validOptions: 
			let og: OptionGroup =  self.oclContainer().oclAsType(Model).optiongroups->select(g| = 
			in og->includesAll(options);
	class Option
		attribute id : String;
	class OptionGroup
		property options : Option[*] { ordered };
		attribute id : String;
		attribute country : Country;
	enum Country { serializable }
		literal NL;
		literal UK;
		literal GE;

Re: Limit selection of candidates for association [message #1244441 is a reply to message #1244400] Wed, 12 February 2014 10:47 Go to previous message
Pierre-Charles David is currently offline Pierre-Charles DavidFriend
Messages: 379
Registered: July 2009
Senior Member
Le 12/02/2014 10:27, Wilbert Alberts a écrit :
> Hi,


> In short: are there ways to limit the selection of an element from a
> group of alternatives?

This is not a Sirius-specific question (the general EMF forum would be a
better place), but I believe what you need is to provide your own
ItemPropertyDescriptor and override the getChoiceOfValues() method. The
default implementation finds all type-compatible values in the whole
ResourceSet (see ItemPropertyDescriptor.getReachableObjectsOfType()),
but you can filter that to only return the elements matching some
additional criterion.

Pierre-Charles David

Pierre-Charles David - Obeo

Need training or professional services for Sirius?
Previous Topic:Integrating sirius into an RCP application, Best Practices
Next Topic:EEF Integration
Goto Forum:

Current Time: Fri Jan 19 17:54:32 GMT 2018

Powered by FUDForum. Page generated in 0.01262 seconds
.:: Contact :: Home ::.

Powered by: FUDforum 3.0.2.
Copyright ©2001-2010 FUDforum Bulletin Board Software