Eclipse Community Forums
Forum Search:

Search      Help    Register    Login    Home
Home » Modeling » Epsilon » Problems View not Showing Markers from EVL
Problems View not Showing Markers from EVL [message #15157] Mon, 06 April 2009 17:12 Go to next message
Ken Sayers is currently offline Ken Sayers
Messages: 40
Registered: July 2009
Member
Hi,

I have a validation written in EVL. I've followed the tutorial the best I
could, but my situation has a few complications.

We are using two models simultaneously. One is a common model. It
contains some base classes and some reusable classes. It is not intended
to be diagrammed, but instead provide reusable objects pointed to by
multiple other models. Let's call them reusing models. The reusing
models have a different meta-model which has references to the common
model.

At the end of the day, we have an emf editor for the common model and a
gmf editor for the reusing model. If I open the diagram file on the
reusing model (only one file is used to hold the model and the diagram),
in the emf editor, the validation uses the problems view correctly. If I
open the diagram file in the diagram view, the red x's show up in the
diagram, but no markers show up in the problems view.

Any pointers as to where to look are greatly appreciated.

Ken
Re: Problems View not Showing Markers from EVL [message #15190 is a reply to message #15157] Mon, 06 April 2009 18:12 Go to previous messageGo to next message
Dimitrios Kolovos is currently offline Dimitrios Kolovos
Messages: 1776
Registered: July 2009
Senior Member
Hi Ken,

Could you please open a bug report and attach a minimal example that
reproduces this problem? Alternatively, I could have a look at your
actual plug-ins if you could send them to me via email
(dskolovos@gmail.com).

Cheers,
Dimitris

Ken Sayers wrote:
> Hi,
>
> I have a validation written in EVL. I've followed the tutorial the best
> I could, but my situation has a few complications.
>
> We are using two models simultaneously. One is a common model. It
> contains some base classes and some reusable classes. It is not
> intended to be diagrammed, but instead provide reusable objects pointed
> to by multiple other models. Let's call them reusing models. The
> reusing models have a different meta-model which has references to the
> common model.
>
> At the end of the day, we have an emf editor for the common model and a
> gmf editor for the reusing model. If I open the diagram file on the
> reusing model (only one file is used to hold the model and the diagram),
> in the emf editor, the validation uses the problems view correctly. If
> I open the diagram file in the diagram view, the red x's show up in the
> diagram, but no markers show up in the problems view.
>
> Any pointers as to where to look are greatly appreciated.
>
> Ken
>
Re: Problems View not Showing Markers from EVL [message #15224 is a reply to message #15190] Tue, 07 April 2009 21:06 Go to previous messageGo to next message
Ken Sayers is currently offline Ken Sayers
Messages: 40
Registered: July 2009
Member
Hi Dimitris,

I can give you these two .emf files that represent our situation. Note
that one includes the other as a resource and references classes as
references and supertypes.

Maybe I should have started with the question:

Can I use two .emf files in this way?
We have one set of plugins for each.
We found that we have to partially generate the base model to get them all
to work together?
Is there a best practice regarding using multiple .ecore models with
Eugenia?

here is xx.emf which depends on xxxcommon.emf below

@namespace(uri="xxx", prefix="xxx")
package xxx;

import "platform:/resource/com.xxxcommon/model/iaacommon.ecore";

@gmf.diagram(foo="bar")
class XXXModel {
val MarketableProduct[*] marketablePproduct;
val ProductComponent[*] productComponent;
val RoleSpec[*] roleSpec;
val ConstantRole[*] constantRole;
val RequestSpec[*] requestSpec;
val RuleSpec[*] ruleSpec;
val Calculation[*] calculation;
val PropertySpec[*] propertySpec;
val ConstantSpec[*] constantSpec;
val MarketableProductProductComponentCompositionRule[*]
marketableProductProductComponentCompositionRule;
val MarketableProductRoleSpecCompositionRule[*]
marketableProductRoleSpecCompositionRule;
val MarketableProductConstantRoleCompositionRule[*]
marketableProductConstantRoleCompositionRule;
val MarketableProductRequestSpecCompositionRule[*]
marketableProductRequestSpecCompositionRule;
val MarketableProductRuleSpecCompositionRule[*]
marketableProductRuleSpecCompositionRule;
val MarketableProductCalculationCompositionRule[*]
marketableProductCalculationCompositionRule;
val MarketableProductPropertySpecCompositionRule[*]
marketableProductPropertySpecCompositionRule;
val MarketableProductConstantSpecCompositionRule[*]
marketableProductConstantSpecCompositionRule;
val ProductComponentProductComponentCompositionRule[*]
productComponentProductComponentCompositionRule;
val ProductComponentRoleSpecCompositionRule[*]
productComponentRoleCompositionRule;
val ProductComponentConstantRoleCompositionRule[*]
productComponentConstantRoleCompositionRule;
val ProductComponentRequestSpecCompositionRule[*]
productComponentRequestSpecCompositionRule;
val ProductComponentRuleSpecCompositionRule[*]
productComponentRuleSpecCompositionRule;
val ProductComponentCalculationCompositionRule[*]
productComponentCalculationCompositionRule;
val ProductComponentPropertySpecCompositionRule[*]
productComponentPropertySpecCompositionRule;
val ProductComponentConstantSpecCompositionRule[*]
productComponentConstantSpecCompositionRule;
val RoleSpecRuleSpecCompositionRule[*] roleSpecRuleSpecCompositionRule;
val RoleSpecCalculationCompositionRule[*]
roleSpecCalculationCompositionRule;
val RoleSpecPropertySpecCompositionRule[*]
roleSpecPropertySpecCompositionRule;
val RoleSpecConstantSpecCompositionRule[*]
roleSpecConstantSpecCompositionRule;
val ConstantRoleConstantSpecCompositionRule[*]
constantRoleConstantSpecCompositionRule;
val RequestSpecRoleSpecCompositionRule[*]
requestSpecRoleSpecCompositionRule;
val RequestSpecConstantRoleCompositionRule[*]
requestSpecConstantRoleCompositionRule;
val RequestSpecRuleSpecCompositionRule[*]
requestSpecRuleSpecCompositionRule;
val RequestSpecCalculationCompositionRule[*]
requestSpecCalculationCompositionRule;
val RequestSpecPropertySpecCompositionRule[*]
requestSpecPropertySpecCompositionRule;
val RequestSpecConstantSpecCompositionRule[*]
requestSpecConstantSpecCompositionRule;
}

@gmf.node(figure="xxx.figures.MarketableProductShape", label.icon="false",
label="name", color="142,229,238")
class MarketableProduct extends iaacommon.ProductEntity {
ref iaacommon.MarketableProductKind kind;
}

@gmf.node(figure="xxx.figures.ProductComponentShape", label.icon="false",
label="name", color="250,128,114")
class ProductComponent extends iaacommon.ProductEntity {
ref iaacommon.ProductComponentKind kind;
}

@gmf.node(figure="xxx.figures.RoleSpecShape", label.icon="false",
label="name", color="46,139,87")
class RoleSpec extends iaacommon.ProductEntity {
ref iaacommon.RoleKind kind;
}

@gmf.node(figure="xxx.figures.ConstantRoleShape", label.icon="false",
label="name", color="46,139,87")
class ConstantRole extends iaacommon.ProductEntity {
ref iaacommon.ConstantRoleKind kind;
}

@gmf.node(figure="xxx.figures.RequestSpecShape", label.icon="false",
label="name", color="255,165,0")
class RequestSpec extends iaacommon.ProductEntity {
ref iaacommon.RequestKind kind;
}

@gmf.node(figure="xxx.figures.RuleSpecShape", label.icon="false",
label="name", color="135,206,250")
class RuleSpec extends iaacommon.ProductEntity {
ref iaacommon.RuleKind kind;
}

@gmf.node(figure="ellipse", label.icon="false", label="name",
color="135,206,250")
class Calculation extends iaacommon.ProductEntity {
ref iaacommon.CalculationKind kind;
}

@gmf.node(figure="rounded", label.icon="false", label="name",
color="152,251,152")
class PropertySpec extends iaacommon.ProductEntity {
ref iaacommon.PropertyKind kind;
}

@gmf.node(figure="xxx.figures.ConstantSpecShape", label.icon="false",
label="name", color="152,251,152")
class ConstantSpec extends iaacommon.ProductEntity {
ref iaacommon.ConstantKind kind;
}

@gmf.link(source="source", target="target", label.format="{0}..{1}")
class MarketableProductProductComponentCompositionRule extends
CompositionRuleWithCardinality {
ref MarketableProduct source;
ref ProductComponent target;
}

@gmf.link(source="source", target="target", label.format="{0}..{1}")
class MarketableProductRoleSpecCompositionRule extends
CompositionRuleWithCardinality {
ref MarketableProduct source;
ref RoleSpec target;
}

@gmf.link(source="source", target="target")
class MarketableProductConstantRoleCompositionRule extends
CompositionRuleWithoutCardinality {
ref MarketableProduct source;
ref ConstantRole target;
}

@gmf.link(source="source", target="target")
class ProductComponentConstantRoleCompositionRule extends
CompositionRuleWithoutCardinality {
ref ProductComponent source;
ref ConstantRole target;
}

@gmf.link(source="source", target="target")
class MarketableProductRequestSpecCompositionRule extends
CompositionRuleWithoutCardinality {
ref MarketableProduct source;
ref RequestSpec target;
}

@gmf.link(source="source", target="target")
class MarketableProductRuleSpecCompositionRule extends
CompositionRuleWithoutCardinality {
ref MarketableProduct source;
ref RuleSpec target;
}

@gmf.link(source="source", target="target")
class MarketableProductCalculationCompositionRule extends
CompositionRuleWithoutCardinality {
ref MarketableProduct source;
ref Calculation target;
}

@gmf.link(source="source", target="target")
class MarketableProductPropertySpecCompositionRule extends
CompositionRuleWithoutCardinality {
ref MarketableProduct source;
ref PropertySpec target;
}

@gmf.link(source="source", target="target")
class MarketableProductConstantSpecCompositionRule extends
CompositionRuleWithoutCardinality {
ref MarketableProduct source;
ref ConstantSpec target;
}

@gmf.link(source="source", target="target", lable.format="{0}..{1}")
class ProductComponentProductComponentCompositionRule extends
CompositionRuleWithCardinality {
ref ProductComponent source;
ref ProductComponent target;
}

@gmf.link(source="source", target="target", label.format="{0}..{1}")
class ProductComponentRoleSpecCompositionRule extends
CompositionRuleWithCardinality {
ref ProductComponent source;
ref RoleSpec target;
}

@gmf.link(source="source", target="target")
class ProductComponentRequestSpecCompositionRule extends
CompositionRuleWithoutCardinality {
ref ProductComponent source;
ref RequestSpec target;
}

@gmf.link(source="source", target="target")
class ProductComponentRuleSpecCompositionRule extends
CompositionRuleWithoutCardinality {
ref ProductComponent source;
ref RuleSpec target;
}

@gmf.link(source="source", target="target")
class ProductComponentCalculationCompositionRule extends
CompositionRuleWithoutCardinality {
ref ProductComponent source;
ref Calculation target;
}

@gmf.link(source="source", target="target")
class ProductComponentPropertySpecCompositionRule extends
CompositionRuleWithoutCardinality {
ref ProductComponent source;
ref PropertySpec target;
}

@gmf.link(source="source", target="target")
class ProductComponentConstantSpecCompositionRule extends
CompositionRuleWithoutCardinality {
ref ProductComponent source;
ref ConstantSpec target;
}

@gmf.link(source="source", target="target")
class RoleSpecRuleSpecCompositionRule extends
CompositionRuleWithoutCardinality {
ref RoleSpec source;
ref RuleSpec target;
}

@gmf.link(source="source", target="target")
class RoleSpecCalculationCompositionRule extends
CompositionRuleWithoutCardinality {
ref RoleSpec source;
ref Calculation target;
}

@gmf.link(source="source", target="target")
class RoleSpecPropertySpecCompositionRule extends
CompositionRuleWithoutCardinality {
ref RoleSpec source;
ref PropertySpec target;
}

@gmf.link(source="source", target="target")
class RoleSpecConstantSpecCompositionRule extends
CompositionRuleWithoutCardinality {
ref RoleSpec source;
ref ConstantSpec target;
}

@gmf.link(source="source", target="target")
class ConstantRoleConstantSpecCompositionRule extends
CompositionRuleWithoutCardinality {
ref ConstantRole source;
ref ConstantSpec target;
}

@gmf.link(source="source", target="target")
class RequestSpecRoleSpecCompositionRule extends
CompositionRuleWithCardinality {
ref RequestSpec source;
ref RoleSpec target;
}

@gmf.link(source="source", target="target")
class RequestSpecConstantRoleCompositionRule extends
CompositionRuleWithoutCardinality {
ref RequestSpec source;
ref ConstantRole target;
}

@gmf.link(source="source", target="target")
class RequestSpecRuleSpecCompositionRule extends
CompositionRuleWithoutCardinality {
ref RequestSpec source;
ref RuleSpec target;
}

@gmf.link(source="source", target="target")
class RequestSpecCalculationCompositionRule extends
CompositionRuleWithoutCardinality {
ref RequestSpec source;
ref Calculation target;
}

@gmf.link(source="source", target="target")
class RequestSpecPropertySpecCompositionRule extends
CompositionRuleWithoutCardinality {
ref RequestSpec source;
ref PropertySpec target;
}

@gmf.link(source="source", target="target")
class RequestSpecConstantSpecCompositionRule extends
CompositionRuleWithoutCardinality {
ref RequestSpec source;
ref ConstantSpec target;
}

class CompositionRuleWithoutCardinality {
}

@gmf.link(label="cardinality.minimum,cardinality.maximum",
label.format="{0}..{1}")
class CompositionRuleWithCardinality {
!unique !ordered ref iaacommon.Cardinality cardinality;
}




here is xxxcommon.emf

@namespace(uri="xxxcommon", prefix="xxxcommon")
package xxxcommon;

@gmf.diagram(foo="bar")
class XXXCommonModel {
val MarketableProductKinds marketableProductKinds;
val ProductComponentKinds productComponentKinds;
val RoleKinds roleKinds;
val ConstantRoleKinds constantRoleKinds;
val RuleKinds ruleKinds;
val RequestKinds requestKinds;
val CalculationKinds calculationKinds;
val PropertyKinds propertyKinds;
val ConstantKinds constantKinds;
val Cardinalities cardinalities;
}

class MarketableProductKinds {
val MarketableProductKind[*] marketableProductKind;
}
class ProductComponentKinds {
val ProductComponentKind[*] productComponentKind;
}
class RoleKinds {
val RoleKind[*] roleKind;
}

class ConstantRoleKinds {
val ConstantRoleKind[*] constantRoleKind;
}

class RuleKinds {
val RuleKind[*] ruleKind;
}
class RequestKinds {
val RequestKind[*] requestKind;
}
class CalculationKinds {
val CalculationKind[*] calculationKind;
}
class PropertyKinds {
val PropertyKind[*] propertyKind;
}
class ConstantKinds {
val ConstantKind[*] constantKind;
}
class Cardinalities {
val Cardinality[*] cardinality;
}

class MarketableProductKind extends Kind {
}

class ProductComponentKind extends Kind {
}

class RequestKind extends Kind {
}

class RuleKind extends Kind {
}

class RoleKind extends Kind {
}

class ConstantRoleKind extends Kind {
}

class CalculationKind extends Kind {
}

class PropertyKind extends Kind {
}

class ConstantKind extends Kind {
}

class Kind extends ProductEntity {
attr String value;
}

class Cardinality {
attr String minimum = "0";
attr String maximum = "1";
}

class ProductEntity {
attr String name;
id attr Integer identity;
}
Re: Problems View not Showing Markers from EVL [message #15257 is a reply to message #15224] Wed, 08 April 2009 09:22 Go to previous messageGo to next message
Dimitrios Kolovos is currently offline Dimitrios Kolovos
Messages: 1776
Registered: July 2009
Senior Member
Hi Ken,

In order to isolate the problem, I've put together a minimal editor
where both the model and the diagram are stored in the same file but I
can't seem to be able to reproduce this problem (problem markers appear
both on the GMF editor and in the problems view). Could it be the case
that you've applied a filter in the problems view?

If no filter is involved, I'm afraid that the only way for me to look
into this in more detail is that you send me your actual plugins. Please
feel free to contact me directly on this.

I must admit I haven't really contemplated using Eugenia with multiple
ECore models before. I suspect that what you'd like would be that
Eugenia would "merge" all the imported ECore models on the fly and
generate an editor for the whole thing. Is that right? If so, it'd be
great if you could open a relevant enhancement request here, and I'll
have a look at it:

https://bugs.eclipse.org/bugs/enter_bug.cgi?product=GMT& component=Epsilon

Cheers,
Dimitris

Hi Ken Sayers wrote:
> Hi Dimitris,
>
> I can give you these two .emf files that represent our situation. Note
> that one includes the other as a resource and references classes as
> references and supertypes.
> Maybe I should have started with the question:
>
> Can I use two .emf files in this way?
> We have one set of plugins for each.
> We found that we have to partially generate the base model to get them
> all to work together?
> Is there a best practice regarding using multiple .ecore models with
> Eugenia?
>
> here is xx.emf which depends on xxxcommon.emf below
>
> @namespace(uri="xxx", prefix="xxx")
> package xxx;
>
> import "platform:/resource/com.xxxcommon/model/iaacommon.ecore";
>
> @gmf.diagram(foo="bar")
> class XXXModel {
> val MarketableProduct[*] marketablePproduct;
> val ProductComponent[*] productComponent;
> val RoleSpec[*] roleSpec;
> val ConstantRole[*] constantRole;
> val RequestSpec[*] requestSpec;
> val RuleSpec[*] ruleSpec;
> val Calculation[*] calculation;
> val PropertySpec[*] propertySpec;
> val ConstantSpec[*] constantSpec;
> val MarketableProductProductComponentCompositionRule[*]
> marketableProductProductComponentCompositionRule;
> val MarketableProductRoleSpecCompositionRule[*]
> marketableProductRoleSpecCompositionRule;
> val MarketableProductConstantRoleCompositionRule[*]
> marketableProductConstantRoleCompositionRule;
> val MarketableProductRequestSpecCompositionRule[*]
> marketableProductRequestSpecCompositionRule;
> val MarketableProductRuleSpecCompositionRule[*]
> marketableProductRuleSpecCompositionRule;
> val MarketableProductCalculationCompositionRule[*]
> marketableProductCalculationCompositionRule;
> val MarketableProductPropertySpecCompositionRule[*]
> marketableProductPropertySpecCompositionRule;
> val MarketableProductConstantSpecCompositionRule[*]
> marketableProductConstantSpecCompositionRule;
> val ProductComponentProductComponentCompositionRule[*]
> productComponentProductComponentCompositionRule;
> val ProductComponentRoleSpecCompositionRule[*]
> productComponentRoleCompositionRule;
> val ProductComponentConstantRoleCompositionRule[*]
> productComponentConstantRoleCompositionRule;
> val ProductComponentRequestSpecCompositionRule[*]
> productComponentRequestSpecCompositionRule;
> val ProductComponentRuleSpecCompositionRule[*]
> productComponentRuleSpecCompositionRule;
> val ProductComponentCalculationCompositionRule[*]
> productComponentCalculationCompositionRule;
> val ProductComponentPropertySpecCompositionRule[*]
> productComponentPropertySpecCompositionRule;
> val ProductComponentConstantSpecCompositionRule[*]
> productComponentConstantSpecCompositionRule;
> val RoleSpecRuleSpecCompositionRule[*] roleSpecRuleSpecCompositionRule;
> val RoleSpecCalculationCompositionRule[*]
> roleSpecCalculationCompositionRule;
> val RoleSpecPropertySpecCompositionRule[*]
> roleSpecPropertySpecCompositionRule;
> val RoleSpecConstantSpecCompositionRule[*]
> roleSpecConstantSpecCompositionRule;
> val ConstantRoleConstantSpecCompositionRule[*]
> constantRoleConstantSpecCompositionRule;
> val RequestSpecRoleSpecCompositionRule[*]
> requestSpecRoleSpecCompositionRule;
> val RequestSpecConstantRoleCompositionRule[*]
> requestSpecConstantRoleCompositionRule;
> val RequestSpecRuleSpecCompositionRule[*]
> requestSpecRuleSpecCompositionRule;
> val RequestSpecCalculationCompositionRule[*]
> requestSpecCalculationCompositionRule;
> val RequestSpecPropertySpecCompositionRule[*]
> requestSpecPropertySpecCompositionRule;
> val RequestSpecConstantSpecCompositionRule[*]
> requestSpecConstantSpecCompositionRule;
> }
>
> @gmf.node(figure="xxx.figures.MarketableProductShape",
> label.icon="false", label="name", color="142,229,238")
> class MarketableProduct extends iaacommon.ProductEntity {
> ref iaacommon.MarketableProductKind kind;
> }
>
> @gmf.node(figure="xxx.figures.ProductComponentShape",
> label.icon="false", label="name", color="250,128,114")
> class ProductComponent extends iaacommon.ProductEntity {
> ref iaacommon.ProductComponentKind kind;
> }
>
> @gmf.node(figure="xxx.figures.RoleSpecShape", label.icon="false",
> label="name", color="46,139,87")
> class RoleSpec extends iaacommon.ProductEntity {
> ref iaacommon.RoleKind kind;
> }
>
> @gmf.node(figure="xxx.figures.ConstantRoleShape", label.icon="false",
> label="name", color="46,139,87")
> class ConstantRole extends iaacommon.ProductEntity {
> ref iaacommon.ConstantRoleKind kind;
> }
>
> @gmf.node(figure="xxx.figures.RequestSpecShape", label.icon="false",
> label="name", color="255,165,0")
> class RequestSpec extends iaacommon.ProductEntity {
> ref iaacommon.RequestKind kind;
> }
>
> @gmf.node(figure="xxx.figures.RuleSpecShape", label.icon="false",
> label="name", color="135,206,250")
> class RuleSpec extends iaacommon.ProductEntity {
> ref iaacommon.RuleKind kind;
> }
>
> @gmf.node(figure="ellipse", label.icon="false", label="name",
> color="135,206,250")
> class Calculation extends iaacommon.ProductEntity {
> ref iaacommon.CalculationKind kind;
> }
>
> @gmf.node(figure="rounded", label.icon="false", label="name",
> color="152,251,152")
> class PropertySpec extends iaacommon.ProductEntity {
> ref iaacommon.PropertyKind kind;
> }
>
> @gmf.node(figure="xxx.figures.ConstantSpecShape", label.icon="false",
> label="name", color="152,251,152")
> class ConstantSpec extends iaacommon.ProductEntity {
> ref iaacommon.ConstantKind kind;
> }
>
> @gmf.link(source="source", target="target", label.format="{0}..{1}")
> class MarketableProductProductComponentCompositionRule extends
> CompositionRuleWithCardinality {
> ref MarketableProduct source;
> ref ProductComponent target;
> }
>
> @gmf.link(source="source", target="target", label.format="{0}..{1}")
> class MarketableProductRoleSpecCompositionRule extends
> CompositionRuleWithCardinality {
> ref MarketableProduct source;
> ref RoleSpec target;
> }
>
> @gmf.link(source="source", target="target")
> class MarketableProductConstantRoleCompositionRule extends
> CompositionRuleWithoutCardinality {
> ref MarketableProduct source;
> ref ConstantRole target;
> }
>
> @gmf.link(source="source", target="target")
> class ProductComponentConstantRoleCompositionRule extends
> CompositionRuleWithoutCardinality {
> ref ProductComponent source;
> ref ConstantRole target;
> }
>
> @gmf.link(source="source", target="target")
> class MarketableProductRequestSpecCompositionRule extends
> CompositionRuleWithoutCardinality {
> ref MarketableProduct source;
> ref RequestSpec target;
> }
>
> @gmf.link(source="source", target="target")
> class MarketableProductRuleSpecCompositionRule extends
> CompositionRuleWithoutCardinality {
> ref MarketableProduct source;
> ref RuleSpec target;
> }
>
> @gmf.link(source="source", target="target")
> class MarketableProductCalculationCompositionRule extends
> CompositionRuleWithoutCardinality {
> ref MarketableProduct source;
> ref Calculation target;
> }
>
> @gmf.link(source="source", target="target")
> class MarketableProductPropertySpecCompositionRule extends
> CompositionRuleWithoutCardinality {
> ref MarketableProduct source;
> ref PropertySpec target;
> }
>
> @gmf.link(source="source", target="target")
> class MarketableProductConstantSpecCompositionRule extends
> CompositionRuleWithoutCardinality {
> ref MarketableProduct source;
> ref ConstantSpec target;
> }
>
> @gmf.link(source="source", target="target", lable.format="{0}..{1}")
> class ProductComponentProductComponentCompositionRule extends
> CompositionRuleWithCardinality {
> ref ProductComponent source;
> ref ProductComponent target;
> }
>
> @gmf.link(source="source", target="target", label.format="{0}..{1}")
> class ProductComponentRoleSpecCompositionRule extends
> CompositionRuleWithCardinality {
> ref ProductComponent source;
> ref RoleSpec target;
> }
>
> @gmf.link(source="source", target="target")
> class ProductComponentRequestSpecCompositionRule extends
> CompositionRuleWithoutCardinality {
> ref ProductComponent source;
> ref RequestSpec target;
> }
>
> @gmf.link(source="source", target="target")
> class ProductComponentRuleSpecCompositionRule extends
> CompositionRuleWithoutCardinality {
> ref ProductComponent source;
> ref RuleSpec target;
> }
>
> @gmf.link(source="source", target="target")
> class ProductComponentCalculationCompositionRule extends
> CompositionRuleWithoutCardinality {
> ref ProductComponent source;
> ref Calculation target;
> }
>
> @gmf.link(source="source", target="target")
> class ProductComponentPropertySpecCompositionRule extends
> CompositionRuleWithoutCardinality {
> ref ProductComponent source;
> ref PropertySpec target;
> }
>
> @gmf.link(source="source", target="target")
> class ProductComponentConstantSpecCompositionRule extends
> CompositionRuleWithoutCardinality {
> ref ProductComponent source;
> ref ConstantSpec target;
> }
>
> @gmf.link(source="source", target="target")
> class RoleSpecRuleSpecCompositionRule extends
> CompositionRuleWithoutCardinality {
> ref RoleSpec source;
> ref RuleSpec target;
> }
>
> @gmf.link(source="source", target="target")
> class RoleSpecCalculationCompositionRule extends
> CompositionRuleWithoutCardinality {
> ref RoleSpec source;
> ref Calculation target;
> }
>
> @gmf.link(source="source", target="target")
> class RoleSpecPropertySpecCompositionRule extends
> CompositionRuleWithoutCardinality {
> ref RoleSpec source;
> ref PropertySpec target;
> }
>
> @gmf.link(source="source", target="target")
> class RoleSpecConstantSpecCompositionRule extends
> CompositionRuleWithoutCardinality {
> ref RoleSpec source;
> ref ConstantSpec target;
> }
>
> @gmf.link(source="source", target="target")
> class ConstantRoleConstantSpecCompositionRule extends
> CompositionRuleWithoutCardinality {
> ref ConstantRole source;
> ref ConstantSpec target;
> }
>
> @gmf.link(source="source", target="target")
> class RequestSpecRoleSpecCompositionRule extends
> CompositionRuleWithCardinality {
> ref RequestSpec source;
> ref RoleSpec target;
> }
>
> @gmf.link(source="source", target="target")
> class RequestSpecConstantRoleCompositionRule extends
> CompositionRuleWithoutCardinality {
> ref RequestSpec source;
> ref ConstantRole target;
> }
>
> @gmf.link(source="source", target="target")
> class RequestSpecRuleSpecCompositionRule extends
> CompositionRuleWithoutCardinality {
> ref RequestSpec source;
> ref RuleSpec target;
> }
>
> @gmf.link(source="source", target="target")
> class RequestSpecCalculationCompositionRule extends
> CompositionRuleWithoutCardinality {
> ref RequestSpec source;
> ref Calculation target;
> }
>
> @gmf.link(source="source", target="target")
> class RequestSpecPropertySpecCompositionRule extends
> CompositionRuleWithoutCardinality {
> ref RequestSpec source;
> ref PropertySpec target;
> }
>
> @gmf.link(source="source", target="target")
> class RequestSpecConstantSpecCompositionRule extends
> CompositionRuleWithoutCardinality {
> ref RequestSpec source;
> ref ConstantSpec target;
> }
>
> class CompositionRuleWithoutCardinality {
> }
>
> @gmf.link(label="cardinality.minimum,cardinality.maximum",
> label.format="{0}..{1}")
> class CompositionRuleWithCardinality {
> !unique !ordered ref iaacommon.Cardinality cardinality;
> }
>
>
>
>
> here is xxxcommon.emf
>
> @namespace(uri="xxxcommon", prefix="xxxcommon")
> package xxxcommon;
>
> @gmf.diagram(foo="bar")
> class XXXCommonModel {
> val MarketableProductKinds marketableProductKinds;
> val ProductComponentKinds productComponentKinds;
> val RoleKinds roleKinds;
> val ConstantRoleKinds constantRoleKinds;
> val RuleKinds ruleKinds;
> val RequestKinds requestKinds;
> val CalculationKinds calculationKinds;
> val PropertyKinds propertyKinds;
> val ConstantKinds constantKinds;
> val Cardinalities cardinalities;
> }
>
> class MarketableProductKinds {
> val MarketableProductKind[*] marketableProductKind;
> }
> class ProductComponentKinds {
> val ProductComponentKind[*] productComponentKind;
> }
> class RoleKinds {
> val RoleKind[*] roleKind;
> }
>
> class ConstantRoleKinds {
> val ConstantRoleKind[*] constantRoleKind;
> }
>
> class RuleKinds {
> val RuleKind[*] ruleKind;
> }
> class RequestKinds {
> val RequestKind[*] requestKind;
> }
> class CalculationKinds {
> val CalculationKind[*] calculationKind;
> }
> class PropertyKinds {
> val PropertyKind[*] propertyKind;
> }
> class ConstantKinds {
> val ConstantKind[*] constantKind;
> }
> class Cardinalities {
> val Cardinality[*] cardinality;
> }
>
> class MarketableProductKind extends Kind {
> }
>
> class ProductComponentKind extends Kind {
> }
>
> class RequestKind extends Kind {
> }
>
> class RuleKind extends Kind {
> }
>
> class RoleKind extends Kind {
> }
>
> class ConstantRoleKind extends Kind {
> }
>
> class CalculationKind extends Kind {
> }
>
> class PropertyKind extends Kind {
> }
>
> class ConstantKind extends Kind {
> }
>
> class Kind extends ProductEntity {
> attr String value; }
>
> class Cardinality {
> attr String minimum = "0";
> attr String maximum = "1";
> }
>
> class ProductEntity {
> attr String name;
> id attr Integer identity;
> }
>
>
>
Re: Problems View not Showing Markers from EVL [message #15289 is a reply to message #15257] Wed, 08 April 2009 15:14 Go to previous messageGo to next message
Ken Sayers is currently offline Ken Sayers
Messages: 40
Registered: July 2009
Member
Hi Dimitris,

I have a zip file ready to send to you, but I don't know how to get it to
you. I tried the .eu address from the blog, but that can't be resolved.
Any suggestions?

Ken

BTW, I too went back to basics and created a basic model and it doesn't
work. I know it did in the past.
Re: Problems View not Showing Markers from EVL [message #15322 is a reply to message #15289] Wed, 08 April 2009 16:07 Go to previous messageGo to next message
Dimitrios Kolovos is currently offline Dimitrios Kolovos
Messages: 1776
Registered: July 2009
Senior Member
Hi Ken,

Ken Sayers wrote:
> Hi Dimitris,
>
> I have a zip file ready to send to you, but I don't know how to get it
> to you. I tried the .eu address from the blog, but that can't be
> resolved. Any suggestions?

Me email address is dskolovos#gmail.com (#->@) My .eu domain appears to
be acting up at the moment...

>
> Ken
>
> BTW, I too went back to basics and created a basic model and it doesn't
> work. I know it did in the past.
>

This sounds strange indeed! Let me have a look at your plugins and I'll
get back to you on this...

Cheers,
Dimitris
Re: Problems View not Showing Markers from EVL [message #15355 is a reply to message #15322] Wed, 08 April 2009 18:04 Go to previous messageGo to next message
Dimitrios Kolovos is currently offline Dimitrios Kolovos
Messages: 1776
Registered: July 2009
Senior Member
Hi Ken,

I've been able to reproduce the problem and I have found that this is
seems to be the case with any RCP-based GMF editor (switching to
non-RCP-based solves the problem). Is your editor intentionally RCP-based?

I don't think that the EVL/GMF integration has anything to do with this
but the way to further investigate this would be to create a new action
(IObjectActionDelegate) that explicitly creates an error marker on a GMF
node to see if it appears in the navigator/problems view. I'll give this
a shot tomorrow (it's now getting a bit late here) and let you know how
it goes. If you could try this this sooner than that, it'd be great too.

Cheers,
Dimitris

Dimitris Kolovos wrote:
> Hi Ken,
>
> Ken Sayers wrote:
>> Hi Dimitris,
>>
>> I have a zip file ready to send to you, but I don't know how to get it
>> to you. I tried the .eu address from the blog, but that can't be
>> resolved. Any suggestions?
>
> Me email address is dskolovos#gmail.com (#->@) My .eu domain appears to
> be acting up at the moment...
>
>>
>> Ken
>>
>> BTW, I too went back to basics and created a basic model and it
>> doesn't work. I know it did in the past.
>>
>
> This sounds strange indeed! Let me have a look at your plugins and I'll
> get back to you on this...
>
> Cheers,
> Dimitris
Re: Problems View not Showing Markers from EVL [message #15387 is a reply to message #15355] Thu, 09 April 2009 07:24 Go to previous messageGo to next message
Ken Sayers is currently offline Ken Sayers
Messages: 40
Registered: July 2009
Member
Dimitris,

That is the answer I needed. I think. We plan to put the diagram editor
in a larger application, so I don't think it needs to be RCP. We are new
to eclipse so we are just figuring these things out. I switched my little
example to remove RCP and it works! Now for the real thing. I'm goin' in.

Ken

Dimitris Kolovos wrote:

> Hi Ken,

> I've been able to reproduce the problem and I have found that this is
> seems to be the case with any RCP-based GMF editor (switching to
> non-RCP-based solves the problem). Is your editor intentionally RCP-based?

> I don't think that the EVL/GMF integration has anything to do with this
> but the way to further investigate this would be to create a new action
> (IObjectActionDelegate) that explicitly creates an error marker on a GMF
> node to see if it appears in the navigator/problems view. I'll give this
> a shot tomorrow (it's now getting a bit late here) and let you know how
> it goes. If you could try this this sooner than that, it'd be great too.

> Cheers,
> Dimitris

> Dimitris Kolovos wrote:
>> Hi Ken,
>>
>> Ken Sayers wrote:
>>> Hi Dimitris,
>>>
>>> I have a zip file ready to send to you, but I don't know how to get it
>>> to you. I tried the .eu address from the blog, but that can't be
>>> resolved. Any suggestions?
>>
>> Me email address is dskolovos#gmail.com (#->@) My .eu domain appears to
>> be acting up at the moment...
>>
>>>
>>> Ken
>>>
>>> BTW, I too went back to basics and created a basic model and it
>>> doesn't work. I know it did in the past.
>>>
>>
>> This sounds strange indeed! Let me have a look at your plugins and I'll
>> get back to you on this...
>>
>> Cheers,
>> Dimitris
Re: Problems View not Showing Markers from EVL [message #15419 is a reply to message #15387] Thu, 09 April 2009 08:43 Go to previous message
Dimitrios Kolovos is currently offline Dimitrios Kolovos
Messages: 1776
Registered: July 2009
Senior Member
Hi Ken,

Glad this helped. Please feel free to come back if you run into trouble
with the real editor.

Cheers,
Dimitris

Ken Sayers wrote:
> Dimitris,
>
> That is the answer I needed. I think. We plan to put the diagram
> editor in a larger application, so I don't think it needs to be RCP. We
> are new to eclipse so we are just figuring these things out. I switched
> my little example to remove RCP and it works! Now for the real thing.
> I'm goin' in.
>
> Ken
>
> Dimitris Kolovos wrote:
>
>> Hi Ken,
>
>> I've been able to reproduce the problem and I have found that this is
>> seems to be the case with any RCP-based GMF editor (switching to
>> non-RCP-based solves the problem). Is your editor intentionally
>> RCP-based?
>
>> I don't think that the EVL/GMF integration has anything to do with
>> this but the way to further investigate this would be to create a new
>> action (IObjectActionDelegate) that explicitly creates an error marker
>> on a GMF node to see if it appears in the navigator/problems view.
>> I'll give this a shot tomorrow (it's now getting a bit late here) and
>> let you know how it goes. If you could try this this sooner than that,
>> it'd be great too.
>
>> Cheers,
>> Dimitris
>
>> Dimitris Kolovos wrote:
>>> Hi Ken,
>>>
>>> Ken Sayers wrote:
>>>> Hi Dimitris,
>>>>
>>>> I have a zip file ready to send to you, but I don't know how to get
>>>> it to you. I tried the .eu address from the blog, but that can't be
>>>> resolved. Any suggestions?
>>>
>>> Me email address is dskolovos#gmail.com (#->@) My .eu domain appears
>>> to be acting up at the moment...
>>>
>>>>
>>>> Ken
>>>>
>>>> BTW, I too went back to basics and created a basic model and it
>>>> doesn't work. I know it did in the past.
>>>>
>>>
>>> This sounds strange indeed! Let me have a look at your plugins and
>>> I'll get back to you on this...
>>>
>>> Cheers,
>>> Dimitris
>
>
Re: Problems View not Showing Markers from EVL [message #566469 is a reply to message #15157] Mon, 06 April 2009 18:12 Go to previous message
Dimitrios Kolovos is currently offline Dimitrios Kolovos
Messages: 1776
Registered: July 2009
Senior Member
Hi Ken,

Could you please open a bug report and attach a minimal example that
reproduces this problem? Alternatively, I could have a look at your
actual plug-ins if you could send them to me via email
(dskolovos@gmail.com).

Cheers,
Dimitris

Ken Sayers wrote:
> Hi,
>
> I have a validation written in EVL. I've followed the tutorial the best
> I could, but my situation has a few complications.
>
> We are using two models simultaneously. One is a common model. It
> contains some base classes and some reusable classes. It is not
> intended to be diagrammed, but instead provide reusable objects pointed
> to by multiple other models. Let's call them reusing models. The
> reusing models have a different meta-model which has references to the
> common model.
>
> At the end of the day, we have an emf editor for the common model and a
> gmf editor for the reusing model. If I open the diagram file on the
> reusing model (only one file is used to hold the model and the diagram),
> in the emf editor, the validation uses the problems view correctly. If
> I open the diagram file in the diagram view, the red x's show up in the
> diagram, but no markers show up in the problems view.
>
> Any pointers as to where to look are greatly appreciated.
>
> Ken
>
Re: Problems View not Showing Markers from EVL [message #566487 is a reply to message #15190] Tue, 07 April 2009 21:06 Go to previous message
Ken Sayers is currently offline Ken Sayers
Messages: 40
Registered: July 2009
Member
Hi Dimitris,

I can give you these two .emf files that represent our situation. Note
that one includes the other as a resource and references classes as
references and supertypes.

Maybe I should have started with the question:

Can I use two .emf files in this way?
We have one set of plugins for each.
We found that we have to partially generate the base model to get them all
to work together?
Is there a best practice regarding using multiple .ecore models with
Eugenia?

here is xx.emf which depends on xxxcommon.emf below

@namespace(uri="xxx", prefix="xxx")
package xxx;

import "platform:/resource/com.xxxcommon/model/iaacommon.ecore";

@gmf.diagram(foo="bar")
class XXXModel {
val MarketableProduct[*] marketablePproduct;
val ProductComponent[*] productComponent;
val RoleSpec[*] roleSpec;
val ConstantRole[*] constantRole;
val RequestSpec[*] requestSpec;
val RuleSpec[*] ruleSpec;
val Calculation[*] calculation;
val PropertySpec[*] propertySpec;
val ConstantSpec[*] constantSpec;
val MarketableProductProductComponentCompositionRule[*]
marketableProductProductComponentCompositionRule;
val MarketableProductRoleSpecCompositionRule[*]
marketableProductRoleSpecCompositionRule;
val MarketableProductConstantRoleCompositionRule[*]
marketableProductConstantRoleCompositionRule;
val MarketableProductRequestSpecCompositionRule[*]
marketableProductRequestSpecCompositionRule;
val MarketableProductRuleSpecCompositionRule[*]
marketableProductRuleSpecCompositionRule;
val MarketableProductCalculationCompositionRule[*]
marketableProductCalculationCompositionRule;
val MarketableProductPropertySpecCompositionRule[*]
marketableProductPropertySpecCompositionRule;
val MarketableProductConstantSpecCompositionRule[*]
marketableProductConstantSpecCompositionRule;
val ProductComponentProductComponentCompositionRule[*]
productComponentProductComponentCompositionRule;
val ProductComponentRoleSpecCompositionRule[*]
productComponentRoleCompositionRule;
val ProductComponentConstantRoleCompositionRule[*]
productComponentConstantRoleCompositionRule;
val ProductComponentRequestSpecCompositionRule[*]
productComponentRequestSpecCompositionRule;
val ProductComponentRuleSpecCompositionRule[*]
productComponentRuleSpecCompositionRule;
val ProductComponentCalculationCompositionRule[*]
productComponentCalculationCompositionRule;
val ProductComponentPropertySpecCompositionRule[*]
productComponentPropertySpecCompositionRule;
val ProductComponentConstantSpecCompositionRule[*]
productComponentConstantSpecCompositionRule;
val RoleSpecRuleSpecCompositionRule[*] roleSpecRuleSpecCompositionRule;
val RoleSpecCalculationCompositionRule[*]
roleSpecCalculationCompositionRule;
val RoleSpecPropertySpecCompositionRule[*]
roleSpecPropertySpecCompositionRule;
val RoleSpecConstantSpecCompositionRule[*]
roleSpecConstantSpecCompositionRule;
val ConstantRoleConstantSpecCompositionRule[*]
constantRoleConstantSpecCompositionRule;
val RequestSpecRoleSpecCompositionRule[*]
requestSpecRoleSpecCompositionRule;
val RequestSpecConstantRoleCompositionRule[*]
requestSpecConstantRoleCompositionRule;
val RequestSpecRuleSpecCompositionRule[*]
requestSpecRuleSpecCompositionRule;
val RequestSpecCalculationCompositionRule[*]
requestSpecCalculationCompositionRule;
val RequestSpecPropertySpecCompositionRule[*]
requestSpecPropertySpecCompositionRule;
val RequestSpecConstantSpecCompositionRule[*]
requestSpecConstantSpecCompositionRule;
}

@gmf.node(figure="xxx.figures.MarketableProductShape", label.icon="false",
label="name", color="142,229,238")
class MarketableProduct extends iaacommon.ProductEntity {
ref iaacommon.MarketableProductKind kind;
}

@gmf.node(figure="xxx.figures.ProductComponentShape", label.icon="false",
label="name", color="250,128,114")
class ProductComponent extends iaacommon.ProductEntity {
ref iaacommon.ProductComponentKind kind;
}

@gmf.node(figure="xxx.figures.RoleSpecShape", label.icon="false",
label="name", color="46,139,87")
class RoleSpec extends iaacommon.ProductEntity {
ref iaacommon.RoleKind kind;
}

@gmf.node(figure="xxx.figures.ConstantRoleShape", label.icon="false",
label="name", color="46,139,87")
class ConstantRole extends iaacommon.ProductEntity {
ref iaacommon.ConstantRoleKind kind;
}

@gmf.node(figure="xxx.figures.RequestSpecShape", label.icon="false",
label="name", color="255,165,0")
class RequestSpec extends iaacommon.ProductEntity {
ref iaacommon.RequestKind kind;
}

@gmf.node(figure="xxx.figures.RuleSpecShape", label.icon="false",
label="name", color="135,206,250")
class RuleSpec extends iaacommon.ProductEntity {
ref iaacommon.RuleKind kind;
}

@gmf.node(figure="ellipse", label.icon="false", label="name",
color="135,206,250")
class Calculation extends iaacommon.ProductEntity {
ref iaacommon.CalculationKind kind;
}

@gmf.node(figure="rounded", label.icon="false", label="name",
color="152,251,152")
class PropertySpec extends iaacommon.ProductEntity {
ref iaacommon.PropertyKind kind;
}

@gmf.node(figure="xxx.figures.ConstantSpecShape", label.icon="false",
label="name", color="152,251,152")
class ConstantSpec extends iaacommon.ProductEntity {
ref iaacommon.ConstantKind kind;
}

@gmf.link(source="source", target="target", label.format="{0}..{1}")
class MarketableProductProductComponentCompositionRule extends
CompositionRuleWithCardinality {
ref MarketableProduct source;
ref ProductComponent target;
}

@gmf.link(source="source", target="target", label.format="{0}..{1}")
class MarketableProductRoleSpecCompositionRule extends
CompositionRuleWithCardinality {
ref MarketableProduct source;
ref RoleSpec target;
}

@gmf.link(source="source", target="target")
class MarketableProductConstantRoleCompositionRule extends
CompositionRuleWithoutCardinality {
ref MarketableProduct source;
ref ConstantRole target;
}

@gmf.link(source="source", target="target")
class ProductComponentConstantRoleCompositionRule extends
CompositionRuleWithoutCardinality {
ref ProductComponent source;
ref ConstantRole target;
}

@gmf.link(source="source", target="target")
class MarketableProductRequestSpecCompositionRule extends
CompositionRuleWithoutCardinality {
ref MarketableProduct source;
ref RequestSpec target;
}

@gmf.link(source="source", target="target")
class MarketableProductRuleSpecCompositionRule extends
CompositionRuleWithoutCardinality {
ref MarketableProduct source;
ref RuleSpec target;
}

@gmf.link(source="source", target="target")
class MarketableProductCalculationCompositionRule extends
CompositionRuleWithoutCardinality {
ref MarketableProduct source;
ref Calculation target;
}

@gmf.link(source="source", target="target")
class MarketableProductPropertySpecCompositionRule extends
CompositionRuleWithoutCardinality {
ref MarketableProduct source;
ref PropertySpec target;
}

@gmf.link(source="source", target="target")
class MarketableProductConstantSpecCompositionRule extends
CompositionRuleWithoutCardinality {
ref MarketableProduct source;
ref ConstantSpec target;
}

@gmf.link(source="source", target="target", lable.format="{0}..{1}")
class ProductComponentProductComponentCompositionRule extends
CompositionRuleWithCardinality {
ref ProductComponent source;
ref ProductComponent target;
}

@gmf.link(source="source", target="target", label.format="{0}..{1}")
class ProductComponentRoleSpecCompositionRule extends
CompositionRuleWithCardinality {
ref ProductComponent source;
ref RoleSpec target;
}

@gmf.link(source="source", target="target")
class ProductComponentRequestSpecCompositionRule extends
CompositionRuleWithoutCardinality {
ref ProductComponent source;
ref RequestSpec target;
}

@gmf.link(source="source", target="target")
class ProductComponentRuleSpecCompositionRule extends
CompositionRuleWithoutCardinality {
ref ProductComponent source;
ref RuleSpec target;
}

@gmf.link(source="source", target="target")
class ProductComponentCalculationCompositionRule extends
CompositionRuleWithoutCardinality {
ref ProductComponent source;
ref Calculation target;
}

@gmf.link(source="source", target="target")
class ProductComponentPropertySpecCompositionRule extends
CompositionRuleWithoutCardinality {
ref ProductComponent source;
ref PropertySpec target;
}

@gmf.link(source="source", target="target")
class ProductComponentConstantSpecCompositionRule extends
CompositionRuleWithoutCardinality {
ref ProductComponent source;
ref ConstantSpec target;
}

@gmf.link(source="source", target="target")
class RoleSpecRuleSpecCompositionRule extends
CompositionRuleWithoutCardinality {
ref RoleSpec source;
ref RuleSpec target;
}

@gmf.link(source="source", target="target")
class RoleSpecCalculationCompositionRule extends
CompositionRuleWithoutCardinality {
ref RoleSpec source;
ref Calculation target;
}

@gmf.link(source="source", target="target")
class RoleSpecPropertySpecCompositionRule extends
CompositionRuleWithoutCardinality {
ref RoleSpec source;
ref PropertySpec target;
}

@gmf.link(source="source", target="target")
class RoleSpecConstantSpecCompositionRule extends
CompositionRuleWithoutCardinality {
ref RoleSpec source;
ref ConstantSpec target;
}

@gmf.link(source="source", target="target")
class ConstantRoleConstantSpecCompositionRule extends
CompositionRuleWithoutCardinality {
ref ConstantRole source;
ref ConstantSpec target;
}

@gmf.link(source="source", target="target")
class RequestSpecRoleSpecCompositionRule extends
CompositionRuleWithCardinality {
ref RequestSpec source;
ref RoleSpec target;
}

@gmf.link(source="source", target="target")
class RequestSpecConstantRoleCompositionRule extends
CompositionRuleWithoutCardinality {
ref RequestSpec source;
ref ConstantRole target;
}

@gmf.link(source="source", target="target")
class RequestSpecRuleSpecCompositionRule extends
CompositionRuleWithoutCardinality {
ref RequestSpec source;
ref RuleSpec target;
}

@gmf.link(source="source", target="target")
class RequestSpecCalculationCompositionRule extends
CompositionRuleWithoutCardinality {
ref RequestSpec source;
ref Calculation target;
}

@gmf.link(source="source", target="target")
class RequestSpecPropertySpecCompositionRule extends
CompositionRuleWithoutCardinality {
ref RequestSpec source;
ref PropertySpec target;
}

@gmf.link(source="source", target="target")
class RequestSpecConstantSpecCompositionRule extends
CompositionRuleWithoutCardinality {
ref RequestSpec source;
ref ConstantSpec target;
}

class CompositionRuleWithoutCardinality {
}

@gmf.link(label="cardinality.minimum,cardinality.maximum",
label.format="{0}..{1}")
class CompositionRuleWithCardinality {
!unique !ordered ref iaacommon.Cardinality cardinality;
}




here is xxxcommon.emf

@namespace(uri="xxxcommon", prefix="xxxcommon")
package xxxcommon;

@gmf.diagram(foo="bar")
class XXXCommonModel {
val MarketableProductKinds marketableProductKinds;
val ProductComponentKinds productComponentKinds;
val RoleKinds roleKinds;
val ConstantRoleKinds constantRoleKinds;
val RuleKinds ruleKinds;
val RequestKinds requestKinds;
val CalculationKinds calculationKinds;
val PropertyKinds propertyKinds;
val ConstantKinds constantKinds;
val Cardinalities cardinalities;
}

class MarketableProductKinds {
val MarketableProductKind[*] marketableProductKind;
}
class ProductComponentKinds {
val ProductComponentKind[*] productComponentKind;
}
class RoleKinds {
val RoleKind[*] roleKind;
}

class ConstantRoleKinds {
val ConstantRoleKind[*] constantRoleKind;
}

class RuleKinds {
val RuleKind[*] ruleKind;
}
class RequestKinds {
val RequestKind[*] requestKind;
}
class CalculationKinds {
val CalculationKind[*] calculationKind;
}
class PropertyKinds {
val PropertyKind[*] propertyKind;
}
class ConstantKinds {
val ConstantKind[*] constantKind;
}
class Cardinalities {
val Cardinality[*] cardinality;
}

class MarketableProductKind extends Kind {
}

class ProductComponentKind extends Kind {
}

class RequestKind extends Kind {
}

class RuleKind extends Kind {
}

class RoleKind extends Kind {
}

class ConstantRoleKind extends Kind {
}

class CalculationKind extends Kind {
}

class PropertyKind extends Kind {
}

class ConstantKind extends Kind {
}

class Kind extends ProductEntity {
attr String value;
}

class Cardinality {
attr String minimum = "0";
attr String maximum = "1";
}

class ProductEntity {
attr String name;
id attr Integer identity;
}
Re: Problems View not Showing Markers from EVL [message #566504 is a reply to message #15224] Wed, 08 April 2009 09:22 Go to previous message
Dimitrios Kolovos is currently offline Dimitrios Kolovos
Messages: 1776
Registered: July 2009
Senior Member
Hi Ken,

In order to isolate the problem, I've put together a minimal editor
where both the model and the diagram are stored in the same file but I
can't seem to be able to reproduce this problem (problem markers appear
both on the GMF editor and in the problems view). Could it be the case
that you've applied a filter in the problems view?

If no filter is involved, I'm afraid that the only way for me to look
into this in more detail is that you send me your actual plugins. Please
feel free to contact me directly on this.

I must admit I haven't really contemplated using Eugenia with multiple
ECore models before. I suspect that what you'd like would be that
Eugenia would "merge" all the imported ECore models on the fly and
generate an editor for the whole thing. Is that right? If so, it'd be
great if you could open a relevant enhancement request here, and I'll
have a look at it:

https://bugs.eclipse.org/bugs/enter_bug.cgi?product=GMT& component=Epsilon

Cheers,
Dimitris

Hi Ken Sayers wrote:
> Hi Dimitris,
>
> I can give you these two .emf files that represent our situation. Note
> that one includes the other as a resource and references classes as
> references and supertypes.
> Maybe I should have started with the question:
>
> Can I use two .emf files in this way?
> We have one set of plugins for each.
> We found that we have to partially generate the base model to get them
> all to work together?
> Is there a best practice regarding using multiple .ecore models with
> Eugenia?
>
> here is xx.emf which depends on xxxcommon.emf below
>
> @namespace(uri="xxx", prefix="xxx")
> package xxx;
>
> import "platform:/resource/com.xxxcommon/model/iaacommon.ecore";
>
> @gmf.diagram(foo="bar")
> class XXXModel {
> val MarketableProduct[*] marketablePproduct;
> val ProductComponent[*] productComponent;
> val RoleSpec[*] roleSpec;
> val ConstantRole[*] constantRole;
> val RequestSpec[*] requestSpec;
> val RuleSpec[*] ruleSpec;
> val Calculation[*] calculation;
> val PropertySpec[*] propertySpec;
> val ConstantSpec[*] constantSpec;
> val MarketableProductProductComponentCompositionRule[*]
> marketableProductProductComponentCompositionRule;
> val MarketableProductRoleSpecCompositionRule[*]
> marketableProductRoleSpecCompositionRule;
> val MarketableProductConstantRoleCompositionRule[*]
> marketableProductConstantRoleCompositionRule;
> val MarketableProductRequestSpecCompositionRule[*]
> marketableProductRequestSpecCompositionRule;
> val MarketableProductRuleSpecCompositionRule[*]
> marketableProductRuleSpecCompositionRule;
> val MarketableProductCalculationCompositionRule[*]
> marketableProductCalculationCompositionRule;
> val MarketableProductPropertySpecCompositionRule[*]
> marketableProductPropertySpecCompositionRule;
> val MarketableProductConstantSpecCompositionRule[*]
> marketableProductConstantSpecCompositionRule;
> val ProductComponentProductComponentCompositionRule[*]
> productComponentProductComponentCompositionRule;
> val ProductComponentRoleSpecCompositionRule[*]
> productComponentRoleCompositionRule;
> val ProductComponentConstantRoleCompositionRule[*]
> productComponentConstantRoleCompositionRule;
> val ProductComponentRequestSpecCompositionRule[*]
> productComponentRequestSpecCompositionRule;
> val ProductComponentRuleSpecCompositionRule[*]
> productComponentRuleSpecCompositionRule;
> val ProductComponentCalculationCompositionRule[*]
> productComponentCalculationCompositionRule;
> val ProductComponentPropertySpecCompositionRule[*]
> productComponentPropertySpecCompositionRule;
> val ProductComponentConstantSpecCompositionRule[*]
> productComponentConstantSpecCompositionRule;
> val RoleSpecRuleSpecCompositionRule[*] roleSpecRuleSpecCompositionRule;
> val RoleSpecCalculationCompositionRule[*]
> roleSpecCalculationCompositionRule;
> val RoleSpecPropertySpecCompositionRule[*]
> roleSpecPropertySpecCompositionRule;
> val RoleSpecConstantSpecCompositionRule[*]
> roleSpecConstantSpecCompositionRule;
> val ConstantRoleConstantSpecCompositionRule[*]
> constantRoleConstantSpecCompositionRule;
> val RequestSpecRoleSpecCompositionRule[*]
> requestSpecRoleSpecCompositionRule;
> val RequestSpecConstantRoleCompositionRule[*]
> requestSpecConstantRoleCompositionRule;
> val RequestSpecRuleSpecCompositionRule[*]
> requestSpecRuleSpecCompositionRule;
> val RequestSpecCalculationCompositionRule[*]
> requestSpecCalculationCompositionRule;
> val RequestSpecPropertySpecCompositionRule[*]
> requestSpecPropertySpecCompositionRule;
> val RequestSpecConstantSpecCompositionRule[*]
> requestSpecConstantSpecCompositionRule;
> }
>
> @gmf.node(figure="xxx.figures.MarketableProductShape",
> label.icon="false", label="name", color="142,229,238")
> class MarketableProduct extends iaacommon.ProductEntity {
> ref iaacommon.MarketableProductKind kind;
> }
>
> @gmf.node(figure="xxx.figures.ProductComponentShape",
> label.icon="false", label="name", color="250,128,114")
> class ProductComponent extends iaacommon.ProductEntity {
> ref iaacommon.ProductComponentKind kind;
> }
>
> @gmf.node(figure="xxx.figures.RoleSpecShape", label.icon="false",
> label="name", color="46,139,87")
> class RoleSpec extends iaacommon.ProductEntity {
> ref iaacommon.RoleKind kind;
> }
>
> @gmf.node(figure="xxx.figures.ConstantRoleShape", label.icon="false",
> label="name", color="46,139,87")
> class ConstantRole extends iaacommon.ProductEntity {
> ref iaacommon.ConstantRoleKind kind;
> }
>
> @gmf.node(figure="xxx.figures.RequestSpecShape", label.icon="false",
> label="name", color="255,165,0")
> class RequestSpec extends iaacommon.ProductEntity {
> ref iaacommon.RequestKind kind;
> }
>
> @gmf.node(figure="xxx.figures.RuleSpecShape", label.icon="false",
> label="name", color="135,206,250")
> class RuleSpec extends iaacommon.ProductEntity {
> ref iaacommon.RuleKind kind;
> }
>
> @gmf.node(figure="ellipse", label.icon="false", label="name",
> color="135,206,250")
> class Calculation extends iaacommon.ProductEntity {
> ref iaacommon.CalculationKind kind;
> }
>
> @gmf.node(figure="rounded", label.icon="false", label="name",
> color="152,251,152")
> class PropertySpec extends iaacommon.ProductEntity {
> ref iaacommon.PropertyKind kind;
> }
>
> @gmf.node(figure="xxx.figures.ConstantSpecShape", label.icon="false",
> label="name", color="152,251,152")
> class ConstantSpec extends iaacommon.ProductEntity {
> ref iaacommon.ConstantKind kind;
> }
>
> @gmf.link(source="source", target="target", label.format="{0}..{1}")
> class MarketableProductProductComponentCompositionRule extends
> CompositionRuleWithCardinality {
> ref MarketableProduct source;
> ref ProductComponent target;
> }
>
> @gmf.link(source="source", target="target", label.format="{0}..{1}")
> class MarketableProductRoleSpecCompositionRule extends
> CompositionRuleWithCardinality {
> ref MarketableProduct source;
> ref RoleSpec target;
> }
>
> @gmf.link(source="source", target="target")
> class MarketableProductConstantRoleCompositionRule extends
> CompositionRuleWithoutCardinality {
> ref MarketableProduct source;
> ref ConstantRole target;
> }
>
> @gmf.link(source="source", target="target")
> class ProductComponentConstantRoleCompositionRule extends
> CompositionRuleWithoutCardinality {
> ref ProductComponent source;
> ref ConstantRole target;
> }
>
> @gmf.link(source="source", target="target")
> class MarketableProductRequestSpecCompositionRule extends
> CompositionRuleWithoutCardinality {
> ref MarketableProduct source;
> ref RequestSpec target;
> }
>
> @gmf.link(source="source", target="target")
> class MarketableProductRuleSpecCompositionRule extends
> CompositionRuleWithoutCardinality {
> ref MarketableProduct source;
> ref RuleSpec target;
> }
>
> @gmf.link(source="source", target="target")
> class MarketableProductCalculationCompositionRule extends
> CompositionRuleWithoutCardinality {
> ref MarketableProduct source;
> ref Calculation target;
> }
>
> @gmf.link(source="source", target="target")
> class MarketableProductPropertySpecCompositionRule extends
> CompositionRuleWithoutCardinality {
> ref MarketableProduct source;
> ref PropertySpec target;
> }
>
> @gmf.link(source="source", target="target")
> class MarketableProductConstantSpecCompositionRule extends
> CompositionRuleWithoutCardinality {
> ref MarketableProduct source;
> ref ConstantSpec target;
> }
>
> @gmf.link(source="source", target="target", lable.format="{0}..{1}")
> class ProductComponentProductComponentCompositionRule extends
> CompositionRuleWithCardinality {
> ref ProductComponent source;
> ref ProductComponent target;
> }
>
> @gmf.link(source="source", target="target", label.format="{0}..{1}")
> class ProductComponentRoleSpecCompositionRule extends
> CompositionRuleWithCardinality {
> ref ProductComponent source;
> ref RoleSpec target;
> }
>
> @gmf.link(source="source", target="target")
> class ProductComponentRequestSpecCompositionRule extends
> CompositionRuleWithoutCardinality {
> ref ProductComponent source;
> ref RequestSpec target;
> }
>
> @gmf.link(source="source", target="target")
> class ProductComponentRuleSpecCompositionRule extends
> CompositionRuleWithoutCardinality {
> ref ProductComponent source;
> ref RuleSpec target;
> }
>
> @gmf.link(source="source", target="target")
> class ProductComponentCalculationCompositionRule extends
> CompositionRuleWithoutCardinality {
> ref ProductComponent source;
> ref Calculation target;
> }
>
> @gmf.link(source="source", target="target")
> class ProductComponentPropertySpecCompositionRule extends
> CompositionRuleWithoutCardinality {
> ref ProductComponent source;
> ref PropertySpec target;
> }
>
> @gmf.link(source="source", target="target")
> class ProductComponentConstantSpecCompositionRule extends
> CompositionRuleWithoutCardinality {
> ref ProductComponent source;
> ref ConstantSpec target;
> }
>
> @gmf.link(source="source", target="target")
> class RoleSpecRuleSpecCompositionRule extends
> CompositionRuleWithoutCardinality {
> ref RoleSpec source;
> ref RuleSpec target;
> }
>
> @gmf.link(source="source", target="target")
> class RoleSpecCalculationCompositionRule extends
> CompositionRuleWithoutCardinality {
> ref RoleSpec source;
> ref Calculation target;
> }
>
> @gmf.link(source="source", target="target")
> class RoleSpecPropertySpecCompositionRule extends
> CompositionRuleWithoutCardinality {
> ref RoleSpec source;
> ref PropertySpec target;
> }
>
> @gmf.link(source="source", target="target")
> class RoleSpecConstantSpecCompositionRule extends
> CompositionRuleWithoutCardinality {
> ref RoleSpec source;
> ref ConstantSpec target;
> }
>
> @gmf.link(source="source", target="target")
> class ConstantRoleConstantSpecCompositionRule extends
> CompositionRuleWithoutCardinality {
> ref ConstantRole source;
> ref ConstantSpec target;
> }
>
> @gmf.link(source="source", target="target")
> class RequestSpecRoleSpecCompositionRule extends
> CompositionRuleWithCardinality {
> ref RequestSpec source;
> ref RoleSpec target;
> }
>
> @gmf.link(source="source", target="target")
> class RequestSpecConstantRoleCompositionRule extends
> CompositionRuleWithoutCardinality {
> ref RequestSpec source;
> ref ConstantRole target;
> }
>
> @gmf.link(source="source", target="target")
> class RequestSpecRuleSpecCompositionRule extends
> CompositionRuleWithoutCardinality {
> ref RequestSpec source;
> ref RuleSpec target;
> }
>
> @gmf.link(source="source", target="target")
> class RequestSpecCalculationCompositionRule extends
> CompositionRuleWithoutCardinality {
> ref RequestSpec source;
> ref Calculation target;
> }
>
> @gmf.link(source="source", target="target")
> class RequestSpecPropertySpecCompositionRule extends
> CompositionRuleWithoutCardinality {
> ref RequestSpec source;
> ref PropertySpec target;
> }
>
> @gmf.link(source="source", target="target")
> class RequestSpecConstantSpecCompositionRule extends
> CompositionRuleWithoutCardinality {
> ref RequestSpec source;
> ref ConstantSpec target;
> }
>
> class CompositionRuleWithoutCardinality {
> }
>
> @gmf.link(label="cardinality.minimum,cardinality.maximum",
> label.format="{0}..{1}")
> class CompositionRuleWithCardinality {
> !unique !ordered ref iaacommon.Cardinality cardinality;
> }
>
>
>
>
> here is xxxcommon.emf
>
> @namespace(uri="xxxcommon", prefix="xxxcommon")
> package xxxcommon;
>
> @gmf.diagram(foo="bar")
> class XXXCommonModel {
> val MarketableProductKinds marketableProductKinds;
> val ProductComponentKinds productComponentKinds;
> val RoleKinds roleKinds;
> val ConstantRoleKinds constantRoleKinds;
> val RuleKinds ruleKinds;
> val RequestKinds requestKinds;
> val CalculationKinds calculationKinds;
> val PropertyKinds propertyKinds;
> val ConstantKinds constantKinds;
> val Cardinalities cardinalities;
> }
>
> class MarketableProductKinds {
> val MarketableProductKind[*] marketableProductKind;
> }
> class ProductComponentKinds {
> val ProductComponentKind[*] productComponentKind;
> }
> class RoleKinds {
> val RoleKind[*] roleKind;
> }
>
> class ConstantRoleKinds {
> val ConstantRoleKind[*] constantRoleKind;
> }
>
> class RuleKinds {
> val RuleKind[*] ruleKind;
> }
> class RequestKinds {
> val RequestKind[*] requestKind;
> }
> class CalculationKinds {
> val CalculationKind[*] calculationKind;
> }
> class PropertyKinds {
> val PropertyKind[*] propertyKind;
> }
> class ConstantKinds {
> val ConstantKind[*] constantKind;
> }
> class Cardinalities {
> val Cardinality[*] cardinality;
> }
>
> class MarketableProductKind extends Kind {
> }
>
> class ProductComponentKind extends Kind {
> }
>
> class RequestKind extends Kind {
> }
>
> class RuleKind extends Kind {
> }
>
> class RoleKind extends Kind {
> }
>
> class ConstantRoleKind extends Kind {
> }
>
> class CalculationKind extends Kind {
> }
>
> class PropertyKind extends Kind {
> }
>
> class ConstantKind extends Kind {
> }
>
> class Kind extends ProductEntity {
> attr String value; }
>
> class Cardinality {
> attr String minimum = "0";
> attr String maximum = "1";
> }
>
> class ProductEntity {
> attr String name;
> id attr Integer identity;
> }
>
>
>
Re: Problems View not Showing Markers from EVL [message #566531 is a reply to message #15257] Wed, 08 April 2009 15:14 Go to previous message
Ken Sayers is currently offline Ken Sayers
Messages: 40
Registered: July 2009
Member
Hi Dimitris,

I have a zip file ready to send to you, but I don't know how to get it to
you. I tried the .eu address from the blog, but that can't be resolved.
Any suggestions?

Ken

BTW, I too went back to basics and created a basic model and it doesn't
work. I know it did in the past.
Re: Problems View not Showing Markers from EVL [message #566555 is a reply to message #15289] Wed, 08 April 2009 16:07 Go to previous message
Dimitrios Kolovos is currently offline Dimitrios Kolovos
Messages: 1776
Registered: July 2009
Senior Member
Hi Ken,

Ken Sayers wrote:
> Hi Dimitris,
>
> I have a zip file ready to send to you, but I don't know how to get it
> to you. I tried the .eu address from the blog, but that can't be
> resolved. Any suggestions?

Me email address is dskolovos#gmail.com (#->@) My .eu domain appears to
be acting up at the moment...

>
> Ken
>
> BTW, I too went back to basics and created a basic model and it doesn't
> work. I know it did in the past.
>

This sounds strange indeed! Let me have a look at your plugins and I'll
get back to you on this...

Cheers,
Dimitris
Re: Problems View not Showing Markers from EVL [message #566576 is a reply to message #15322] Wed, 08 April 2009 18:04 Go to previous message
Dimitrios Kolovos is currently offline Dimitrios Kolovos
Messages: 1776
Registered: July 2009
Senior Member
Hi Ken,

I've been able to reproduce the problem and I have found that this is
seems to be the case with any RCP-based GMF editor (switching to
non-RCP-based solves the problem). Is your editor intentionally RCP-based?

I don't think that the EVL/GMF integration has anything to do with this
but the way to further investigate this would be to create a new action
(IObjectActionDelegate) that explicitly creates an error marker on a GMF
node to see if it appears in the navigator/problems view. I'll give this
a shot tomorrow (it's now getting a bit late here) and let you know how
it goes. If you could try this this sooner than that, it'd be great too.

Cheers,
Dimitris

Dimitris Kolovos wrote:
> Hi Ken,
>
> Ken Sayers wrote:
>> Hi Dimitris,
>>
>> I have a zip file ready to send to you, but I don't know how to get it
>> to you. I tried the .eu address from the blog, but that can't be
>> resolved. Any suggestions?
>
> Me email address is dskolovos#gmail.com (#->@) My .eu domain appears to
> be acting up at the moment...
>
>>
>> Ken
>>
>> BTW, I too went back to basics and created a basic model and it
>> doesn't work. I know it did in the past.
>>
>
> This sounds strange indeed! Let me have a look at your plugins and I'll
> get back to you on this...
>
> Cheers,
> Dimitris
Re: Problems View not Showing Markers from EVL [message #566599 is a reply to message #15355] Thu, 09 April 2009 07:24 Go to previous message
Ken Sayers is currently offline Ken Sayers
Messages: 40
Registered: July 2009
Member
Dimitris,

That is the answer I needed. I think. We plan to put the diagram editor
in a larger application, so I don't think it needs to be RCP. We are new
to eclipse so we are just figuring these things out. I switched my little
example to remove RCP and it works! Now for the real thing. I'm goin' in.

Ken

Dimitris Kolovos wrote:

> Hi Ken,

> I've been able to reproduce the problem and I have found that this is
> seems to be the case with any RCP-based GMF editor (switching to
> non-RCP-based solves the problem). Is your editor intentionally RCP-based?

> I don't think that the EVL/GMF integration has anything to do with this
> but the way to further investigate this would be to create a new action
> (IObjectActionDelegate) that explicitly creates an error marker on a GMF
> node to see if it appears in the navigator/problems view. I'll give this
> a shot tomorrow (it's now getting a bit late here) and let you know how
> it goes. If you could try this this sooner than that, it'd be great too.

> Cheers,
> Dimitris

> Dimitris Kolovos wrote:
>> Hi Ken,
>>
>> Ken Sayers wrote:
>>> Hi Dimitris,
>>>
>>> I have a zip file ready to send to you, but I don't know how to get it
>>> to you. I tried the .eu address from the blog, but that can't be
>>> resolved. Any suggestions?
>>
>> Me email address is dskolovos#gmail.com (#->@) My .eu domain appears to
>> be acting up at the moment...
>>
>>>
>>> Ken
>>>
>>> BTW, I too went back to basics and created a basic model and it
>>> doesn't work. I know it did in the past.
>>>
>>
>> This sounds strange indeed! Let me have a look at your plugins and I'll
>> get back to you on this...
>>
>> Cheers,
>> Dimitris
Re: Problems View not Showing Markers from EVL [message #566623 is a reply to message #15387] Thu, 09 April 2009 08:43 Go to previous message
Dimitrios Kolovos is currently offline Dimitrios Kolovos
Messages: 1776
Registered: July 2009
Senior Member
Hi Ken,

Glad this helped. Please feel free to come back if you run into trouble
with the real editor.

Cheers,
Dimitris

Ken Sayers wrote:
> Dimitris,
>
> That is the answer I needed. I think. We plan to put the diagram
> editor in a larger application, so I don't think it needs to be RCP. We
> are new to eclipse so we are just figuring these things out. I switched
> my little example to remove RCP and it works! Now for the real thing.
> I'm goin' in.
>
> Ken
>
> Dimitris Kolovos wrote:
>
>> Hi Ken,
>
>> I've been able to reproduce the problem and I have found that this is
>> seems to be the case with any RCP-based GMF editor (switching to
>> non-RCP-based solves the problem). Is your editor intentionally
>> RCP-based?
>
>> I don't think that the EVL/GMF integration has anything to do with
>> this but the way to further investigate this would be to create a new
>> action (IObjectActionDelegate) that explicitly creates an error marker
>> on a GMF node to see if it appears in the navigator/problems view.
>> I'll give this a shot tomorrow (it's now getting a bit late here) and
>> let you know how it goes. If you could try this this sooner than that,
>> it'd be great too.
>
>> Cheers,
>> Dimitris
>
>> Dimitris Kolovos wrote:
>>> Hi Ken,
>>>
>>> Ken Sayers wrote:
>>>> Hi Dimitris,
>>>>
>>>> I have a zip file ready to send to you, but I don't know how to get
>>>> it to you. I tried the .eu address from the blog, but that can't be
>>>> resolved. Any suggestions?
>>>
>>> Me email address is dskolovos#gmail.com (#->@) My .eu domain appears
>>> to be acting up at the moment...
>>>
>>>>
>>>> Ken
>>>>
>>>> BTW, I too went back to basics and created a basic model and it
>>>> doesn't work. I know it did in the past.
>>>>
>>>
>>> This sounds strange indeed! Let me have a look at your plugins and
>>> I'll get back to you on this...
>>>
>>> Cheers,
>>> Dimitris
>
>
Previous Topic:Problems View not Showing Markers from EVL
Next Topic:Customizing my generated Editor
Goto Forum:
  


Current Time: Wed Aug 27 19:14:54 EDT 2014

Powered by FUDForum. Page generated in 0.04049 seconds