Bug 565945: Progress display in status bar
Change-Id: I5c6348b6eb4b86cbcc42596d2b0013bd0f828c5b
diff --git a/plugins/org.eclipse.skills.ui.questeditor/src-gen/org/eclipse/skills/model/provider/FactorProgressionItemProvider.java b/plugins/org.eclipse.skills.ui.questeditor/src-gen/org/eclipse/skills/model/provider/FactorProgressionItemProvider.java
new file mode 100644
index 0000000..6f3d151
--- /dev/null
+++ b/plugins/org.eclipse.skills.ui.questeditor/src-gen/org/eclipse/skills/model/provider/FactorProgressionItemProvider.java
@@ -0,0 +1,180 @@
+/**
+ */
+package org.eclipse.skills.model.provider;
+
+
+import java.util.Collection;
+import java.util.List;
+
+import org.eclipse.emf.common.notify.AdapterFactory;
+import org.eclipse.emf.common.notify.Notification;
+
+import org.eclipse.emf.common.util.ResourceLocator;
+
+import org.eclipse.emf.edit.provider.ComposeableAdapterFactory;
+import org.eclipse.emf.edit.provider.IEditingDomainItemProvider;
+import org.eclipse.emf.edit.provider.IItemLabelProvider;
+import org.eclipse.emf.edit.provider.IItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.IItemPropertySource;
+import org.eclipse.emf.edit.provider.IStructuredItemContentProvider;
+import org.eclipse.emf.edit.provider.ITreeItemContentProvider;
+import org.eclipse.emf.edit.provider.ItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.ItemProviderAdapter;
+import org.eclipse.emf.edit.provider.ViewerNotification;
+
+import org.eclipse.skills.model.IFactorProgression;
+import org.eclipse.skills.model.ISkillsPackage;
+
+/**
+ * This is the item provider adapter for a {@link org.eclipse.skills.model.IFactorProgression} object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class FactorProgressionItemProvider
+ extends ItemProviderAdapter
+ implements
+ IEditingDomainItemProvider,
+ IStructuredItemContentProvider,
+ ITreeItemContentProvider,
+ IItemLabelProvider,
+ IItemPropertySource {
+ /**
+ * This constructs an instance from a factory and a notifier.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public FactorProgressionItemProvider(AdapterFactory adapterFactory) {
+ super(adapterFactory);
+ }
+
+ /**
+ * This returns the property descriptors for the adapted class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public List<IItemPropertyDescriptor> getPropertyDescriptors(Object object) {
+ if (itemPropertyDescriptors == null) {
+ super.getPropertyDescriptors(object);
+
+ addBaseXpNeededPropertyDescriptor(object);
+ addXpFactorPropertyDescriptor(object);
+ }
+ return itemPropertyDescriptors;
+ }
+
+ /**
+ * This adds a property descriptor for the Base Xp Needed feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected void addBaseXpNeededPropertyDescriptor(Object object) {
+ itemPropertyDescriptors.add
+ (createItemPropertyDescriptor
+ (((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+ getResourceLocator(),
+ getString("_UI_FactorProgression_baseXpNeeded_feature"),
+ getString("_UI_PropertyDescriptor_description", "_UI_FactorProgression_baseXpNeeded_feature", "_UI_FactorProgression_type"),
+ ISkillsPackage.Literals.FACTOR_PROGRESSION__BASE_XP_NEEDED,
+ true,
+ false,
+ false,
+ ItemPropertyDescriptor.INTEGRAL_VALUE_IMAGE,
+ null,
+ null));
+ }
+
+ /**
+ * This adds a property descriptor for the Xp Factor feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected void addXpFactorPropertyDescriptor(Object object) {
+ itemPropertyDescriptors.add
+ (createItemPropertyDescriptor
+ (((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+ getResourceLocator(),
+ getString("_UI_FactorProgression_xpFactor_feature"),
+ getString("_UI_PropertyDescriptor_description", "_UI_FactorProgression_xpFactor_feature", "_UI_FactorProgression_type"),
+ ISkillsPackage.Literals.FACTOR_PROGRESSION__XP_FACTOR,
+ true,
+ false,
+ false,
+ ItemPropertyDescriptor.REAL_VALUE_IMAGE,
+ null,
+ null));
+ }
+
+ /**
+ * This returns FactorProgression.gif.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public Object getImage(Object object) {
+ return overlayImage(object, getResourceLocator().getImage("full/obj16/FactorProgression"));
+ }
+
+ /**
+ * This returns the label text for the adapted class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public String getText(Object object) {
+ IFactorProgression factorProgression = (IFactorProgression)object;
+ return getString("_UI_FactorProgression_type") + " " + factorProgression.getBaseXpNeeded();
+ }
+
+
+ /**
+ * This handles model notifications by calling {@link #updateChildren} to update any cached
+ * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void notifyChanged(Notification notification) {
+ updateChildren(notification);
+
+ switch (notification.getFeatureID(IFactorProgression.class)) {
+ case ISkillsPackage.FACTOR_PROGRESSION__BASE_XP_NEEDED:
+ case ISkillsPackage.FACTOR_PROGRESSION__XP_FACTOR:
+ fireNotifyChanged(new ViewerNotification(notification, notification.getNotifier(), false, true));
+ return;
+ }
+ super.notifyChanged(notification);
+ }
+
+ /**
+ * This adds {@link org.eclipse.emf.edit.command.CommandParameter}s describing the children
+ * that can be created under this object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected void collectNewChildDescriptors(Collection<Object> newChildDescriptors, Object object) {
+ super.collectNewChildDescriptors(newChildDescriptors, object);
+ }
+
+ /**
+ * Return the resource locator for this item provider's resources.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public ResourceLocator getResourceLocator() {
+ return SkillsEditPlugin.INSTANCE;
+ }
+
+}
diff --git a/plugins/org.eclipse.skills.ui.questeditor/src-gen/org/eclipse/skills/model/provider/SkillItemProvider.java b/plugins/org.eclipse.skills.ui.questeditor/src-gen/org/eclipse/skills/model/provider/SkillItemProvider.java
index 7aa28c8..a9641ff 100644
--- a/plugins/org.eclipse.skills.ui.questeditor/src-gen/org/eclipse/skills/model/provider/SkillItemProvider.java
+++ b/plugins/org.eclipse.skills.ui.questeditor/src-gen/org/eclipse/skills/model/provider/SkillItemProvider.java
@@ -12,9 +12,6 @@
import org.eclipse.emf.common.util.ResourceLocator;
import org.eclipse.emf.ecore.EStructuralFeature;
-
-import org.eclipse.emf.ecore.EcoreFactory;
-import org.eclipse.emf.ecore.EcorePackage;
import org.eclipse.emf.edit.provider.ComposeableAdapterFactory;
import org.eclipse.emf.edit.provider.IEditingDomainItemProvider;
import org.eclipse.emf.edit.provider.IItemLabelProvider;
@@ -68,9 +65,6 @@
addNamePropertyDescriptor(object);
addDescriptionPropertyDescriptor(object);
addExperiencePropertyDescriptor(object);
- addXpLevelFactorPropertyDescriptor(object);
- addLevelPropertyDescriptor(object);
- addTitlePropertyDescriptor(object);
}
return itemPropertyDescriptors;
}
@@ -142,72 +136,6 @@
}
/**
- * This adds a property descriptor for the Xp Level Factor feature.
- * <!-- begin-user-doc -->
- * <!-- end-user-doc -->
- * @generated
- */
- protected void addXpLevelFactorPropertyDescriptor(Object object) {
- itemPropertyDescriptors.add
- (createItemPropertyDescriptor
- (((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
- getResourceLocator(),
- getString("_UI_Skill_xpLevelFactor_feature"),
- getString("_UI_PropertyDescriptor_description", "_UI_Skill_xpLevelFactor_feature", "_UI_Skill_type"),
- ISkillsPackage.Literals.SKILL__XP_LEVEL_FACTOR,
- true,
- false,
- false,
- ItemPropertyDescriptor.REAL_VALUE_IMAGE,
- null,
- null));
- }
-
- /**
- * This adds a property descriptor for the Level feature.
- * <!-- begin-user-doc -->
- * <!-- end-user-doc -->
- * @generated
- */
- protected void addLevelPropertyDescriptor(Object object) {
- itemPropertyDescriptors.add
- (createItemPropertyDescriptor
- (((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
- getResourceLocator(),
- getString("_UI_Skill_level_feature"),
- getString("_UI_PropertyDescriptor_description", "_UI_Skill_level_feature", "_UI_Skill_type"),
- ISkillsPackage.Literals.SKILL__LEVEL,
- true,
- false,
- true,
- ItemPropertyDescriptor.INTEGRAL_VALUE_IMAGE,
- null,
- null));
- }
-
- /**
- * This adds a property descriptor for the Title feature.
- * <!-- begin-user-doc -->
- * <!-- end-user-doc -->
- * @generated
- */
- protected void addTitlePropertyDescriptor(Object object) {
- itemPropertyDescriptors.add
- (createItemPropertyDescriptor
- (((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
- getResourceLocator(),
- getString("_UI_Skill_title_feature"),
- getString("_UI_PropertyDescriptor_description", "_UI_Skill_title_feature", "_UI_Skill_type"),
- ISkillsPackage.Literals.SKILL__TITLE,
- false,
- false,
- false,
- ItemPropertyDescriptor.GENERIC_VALUE_IMAGE,
- null,
- null));
- }
-
- /**
* This specifies how to implement {@link #getChildren} and is used to deduce an appropriate feature for an
* {@link org.eclipse.emf.edit.command.AddCommand}, {@link org.eclipse.emf.edit.command.RemoveCommand} or
* {@link org.eclipse.emf.edit.command.MoveCommand} in {@link #createCommand}.
@@ -220,7 +148,7 @@
if (childrenFeatures == null) {
super.getChildrenFeatures(object);
childrenFeatures.add(ISkillsPackage.Literals.SKILL__DESCRIPTION);
- childrenFeatures.add(ISkillsPackage.Literals.SKILL__LEVEL);
+ childrenFeatures.add(ISkillsPackage.Literals.SKILL__PROGRESSION);
}
return childrenFeatures;
}
@@ -278,12 +206,10 @@
switch (notification.getFeatureID(ISkill.class)) {
case ISkillsPackage.SKILL__NAME:
case ISkillsPackage.SKILL__EXPERIENCE:
- case ISkillsPackage.SKILL__XP_LEVEL_FACTOR:
- case ISkillsPackage.SKILL__TITLE:
fireNotifyChanged(new ViewerNotification(notification, notification.getNotifier(), false, true));
return;
case ISkillsPackage.SKILL__DESCRIPTION:
- case ISkillsPackage.SKILL__LEVEL:
+ case ISkillsPackage.SKILL__PROGRESSION:
fireNotifyChanged(new ViewerNotification(notification, notification.getNotifier(), true, false));
return;
}
@@ -313,8 +239,8 @@
newChildDescriptors.add
(createChildParameter
- (ISkillsPackage.Literals.SKILL__LEVEL,
- EcoreFactory.eINSTANCE.createFromString(EcorePackage.Literals.EINT, "0")));
+ (ISkillsPackage.Literals.SKILL__PROGRESSION,
+ ISkillsFactory.eINSTANCE.createFactorProgression()));
}
/**
diff --git a/plugins/org.eclipse.skills.ui.questeditor/src-gen/org/eclipse/skills/model/provider/SkillsItemProviderAdapterFactory.java b/plugins/org.eclipse.skills.ui.questeditor/src-gen/org/eclipse/skills/model/provider/SkillsItemProviderAdapterFactory.java
index d0d0597..3bb3551 100644
--- a/plugins/org.eclipse.skills.ui.questeditor/src-gen/org/eclipse/skills/model/provider/SkillsItemProviderAdapterFactory.java
+++ b/plugins/org.eclipse.skills.ui.questeditor/src-gen/org/eclipse/skills/model/provider/SkillsItemProviderAdapterFactory.java
@@ -532,6 +532,29 @@
}
/**
+ * This keeps track of the one adapter used for all {@link org.eclipse.skills.model.IFactorProgression} instances.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected FactorProgressionItemProvider factorProgressionItemProvider;
+
+ /**
+ * This creates an adapter for a {@link org.eclipse.skills.model.IFactorProgression}.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public Adapter createFactorProgressionAdapter() {
+ if (factorProgressionItemProvider == null) {
+ factorProgressionItemProvider = new FactorProgressionItemProvider(this);
+ }
+
+ return factorProgressionItemProvider;
+ }
+
+ /**
* This returns the root adapter factory that contains this factory.
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
@@ -656,6 +679,7 @@
if (taskDependencyItemProvider != null) taskDependencyItemProvider.dispose();
if (skillDependencyItemProvider != null) skillDependencyItemProvider.dispose();
if (hintItemProvider != null) hintItemProvider.dispose();
+ if (factorProgressionItemProvider != null) factorProgressionItemProvider.dispose();
}
}
diff --git a/plugins/org.eclipse.skills/model/Skills.ecore b/plugins/org.eclipse.skills/model/Skills.ecore
index 2dc4f84..dd8ae1f 100644
--- a/plugins/org.eclipse.skills/model/Skills.ecore
+++ b/plugins/org.eclipse.skills/model/Skills.ecore
@@ -24,7 +24,7 @@
<eStructuralFeatures xsi:type="ecore:EAttribute" name="skillService" eType="#//ISkillService"
transient="true"/>
<eStructuralFeatures xsi:type="ecore:EAttribute" name="id" lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"
- changeable="false" volatile="true" transient="true" derived="true" iD="true"/>
+ changeable="false" volatile="true" transient="true" derived="true"/>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" name="Description">
<eStructuralFeatures xsi:type="ecore:EAttribute" name="text" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"
@@ -66,17 +66,13 @@
<eOperations name="addExperience">
<eParameters name="amount" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EInt"/>
</eOperations>
- <eStructuralFeatures xsi:type="ecore:EAttribute" name="name" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="name" lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"
defaultValueLiteral="<unnamed>"/>
<eStructuralFeatures xsi:type="ecore:EReference" name="description" lowerBound="1"
eType="#//Description" containment="true"/>
<eStructuralFeatures xsi:type="ecore:EAttribute" name="experience" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EInt"/>
- <eStructuralFeatures xsi:type="ecore:EAttribute" name="xpLevelFactor" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDouble"
- defaultValueLiteral="2.4"/>
- <eStructuralFeatures xsi:type="ecore:EAttribute" name="level" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EInt"
- changeable="false" volatile="true" transient="true" derived="true"/>
- <eStructuralFeatures xsi:type="ecore:EAttribute" name="title" lowerBound="1" eType="#//LevelNames"
- changeable="false" volatile="true" transient="true" derived="true"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="progression" lowerBound="1"
+ eType="#//LevelProgression" containment="true"/>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" name="UserTask">
<eOperations name="isCompleted" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean"/>
@@ -171,4 +167,18 @@
<eStructuralFeatures xsi:type="ecore:EReference" name="user" ordered="false" unique="false"
eType="#//User" transient="true" resolveProxies="false"/>
</eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="LevelProgression" abstract="true" interface="true">
+ <eOperations name="getMinimumXpForLevel" lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EInt">
+ <eParameters name="level" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EInt"/>
+ </eOperations>
+ <eOperations name="getLevel" lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EInt">
+ <eParameters name="xp" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EInt"/>
+ </eOperations>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="FactorProgression" eSuperTypes="#//LevelProgression">
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="baseXpNeeded" lowerBound="1"
+ eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EInt" defaultValueLiteral="100"/>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="xpFactor" lowerBound="1"
+ eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDouble" defaultValueLiteral="2.4"/>
+ </eClassifiers>
</ecore:EPackage>
diff --git a/plugins/org.eclipse.skills/model/Skills.genmodel b/plugins/org.eclipse.skills/model/Skills.genmodel
index 1902d4c..c0c2f64 100644
--- a/plugins/org.eclipse.skills/model/Skills.genmodel
+++ b/plugins/org.eclipse.skills/model/Skills.genmodel
@@ -3,10 +3,11 @@
xmlns:genmodel="http://www.eclipse.org/emf/2002/GenModel" modelDirectory="/org.eclipse.skills/src-gen" editDirectory="/org.eclipse.skills.ui.questeditor/src-gen"
editorDirectory="/org.eclipse.skills.ui.questeditor/src-gen" modelPluginID="org.eclipse.skills"
modelName="Skills" rootExtendsClass="org.eclipse.emf.ecore.impl.MinimalEObjectImpl$Container"
+ testsDirectory="/org.eclipse.skills.model.test/src" testSuiteClass="org.eclipse.skills.model.SkillsAllTests"
importerID="org.eclipse.emf.importer.ecore" complianceLevel="8.0" copyrightFields="false"
editPluginID="org.eclipse.skills.ui.questeditor" editorPluginID="org.eclipse.skills.ui.questeditor"
- interfaceNamePattern="I{0}" classNamePattern="M{0}" operationReflection="true"
- importOrganizing="true">
+ testsPluginID="org.eclipse.skills.model.test" interfaceNamePattern="I{0}" classNamePattern="M{0}"
+ operationReflection="true" importOrganizing="true">
<foreignModel>Skills.ecore</foreignModel>
<genPackages prefix="Skills" basePackage="org.eclipse.skills" disposableProviderFactory="true"
ecorePackage="Skills.ecore#/">
@@ -68,9 +69,7 @@
<genFeatures createChild="false" ecoreFeature="ecore:EAttribute Skills.ecore#//Skill/name"/>
<genFeatures children="true" createChild="true" propertySortChoices="true" ecoreFeature="ecore:EReference Skills.ecore#//Skill/description"/>
<genFeatures createChild="false" ecoreFeature="ecore:EAttribute Skills.ecore#//Skill/experience"/>
- <genFeatures createChild="false" ecoreFeature="ecore:EAttribute Skills.ecore#//Skill/xpLevelFactor"/>
- <genFeatures children="true" createChild="true" propertySortChoices="true" ecoreFeature="ecore:EAttribute Skills.ecore#//Skill/level"/>
- <genFeatures property="Readonly" createChild="false" ecoreFeature="ecore:EAttribute Skills.ecore#//Skill/title"/>
+ <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference Skills.ecore#//Skill/progression"/>
<genOperations ecoreOperation="Skills.ecore#//Skill/addExperience">
<genParameters ecoreParameter="Skills.ecore#//Skill/addExperience/amount"/>
</genOperations>
@@ -146,5 +145,17 @@
<genClasses image="false" ecoreClass="Skills.ecore#//UserDependency">
<genFeatures notify="false" createChild="false" propertySortChoices="true" ecoreFeature="ecore:EReference Skills.ecore#//UserDependency/user"/>
</genClasses>
+ <genClasses image="false" ecoreClass="Skills.ecore#//LevelProgression">
+ <genOperations ecoreOperation="Skills.ecore#//LevelProgression/getMinimumXpForLevel">
+ <genParameters ecoreParameter="Skills.ecore#//LevelProgression/getMinimumXpForLevel/level"/>
+ </genOperations>
+ <genOperations ecoreOperation="Skills.ecore#//LevelProgression/getLevel">
+ <genParameters ecoreParameter="Skills.ecore#//LevelProgression/getLevel/xp"/>
+ </genOperations>
+ </genClasses>
+ <genClasses ecoreClass="Skills.ecore#//FactorProgression">
+ <genFeatures createChild="false" ecoreFeature="ecore:EAttribute Skills.ecore#//FactorProgression/baseXpNeeded"/>
+ <genFeatures createChild="false" ecoreFeature="ecore:EAttribute Skills.ecore#//FactorProgression/xpFactor"/>
+ </genClasses>
</genPackages>
</genmodel:GenModel>
diff --git a/plugins/org.eclipse.skills/model/model.aird b/plugins/org.eclipse.skills/model/model.aird
index 1e85bfa..373d589 100644
--- a/plugins/org.eclipse.skills/model/model.aird
+++ b/plugins/org.eclipse.skills/model/model.aird
@@ -5,7 +5,7 @@
<semanticResources>http://eclipse.org/skills/1.0.0</semanticResources>
<ownedViews xmi:type="viewpoint:DView" uid="_m68ZsEwrEeqwHIzbUoB2lQ">
<viewpoint xmi:type="description:Viewpoint" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']"/>
- <ownedRepresentationDescriptors xmi:type="viewpoint:DRepresentationDescriptor" uid="_n6l40EwrEeqwHIzbUoB2lQ" name="Skills Model" repPath="#_n4mUwEwrEeqwHIzbUoB2lQ" changeId="373692e4-6329-42b1-95b6-b28b9cdde2e8">
+ <ownedRepresentationDescriptors xmi:type="viewpoint:DRepresentationDescriptor" uid="_n6l40EwrEeqwHIzbUoB2lQ" name="Skills Model" repPath="#_n4mUwEwrEeqwHIzbUoB2lQ" changeId="e98a7a72-46ad-411d-b4e9-bd05e42ca994">
<description xmi:type="description_1:DiagramDescription" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']"/>
<target xmi:type="ecore:EPackage" href="Skills.ecore#/"/>
</ownedRepresentationDescriptors>
@@ -206,18 +206,6 @@
<styles xmi:type="notation:FontStyle" xmi:id="_rIogdNrpEeq_CZJuNlb8eA" fontName="Cantarell" fontHeight="8"/>
<layoutConstraint xmi:type="notation:Location" xmi:id="_rIogddrpEeq_CZJuNlb8eA"/>
</children>
- <children xmi:type="notation:Node" xmi:id="_FVwmgN4dEeq6k6a2XVHNwA" type="3010" element="_FVfgwN4dEeq6k6a2XVHNwA">
- <styles xmi:type="notation:FontStyle" xmi:id="_FVwmgd4dEeq6k6a2XVHNwA" fontColor="2697711" fontName="Segoe UI" fontHeight="8"/>
- <layoutConstraint xmi:type="notation:Location" xmi:id="_FVwmgt4dEeq6k6a2XVHNwA"/>
- </children>
- <children xmi:type="notation:Node" xmi:id="_x9Co4N4dEeq6k6a2XVHNwA" type="3010" element="_x8zYUN4dEeq6k6a2XVHNwA">
- <styles xmi:type="notation:FontStyle" xmi:id="_x9Co4d4dEeq6k6a2XVHNwA" fontColor="2697711" fontName="Segoe UI" fontHeight="8"/>
- <layoutConstraint xmi:type="notation:Location" xmi:id="_x9Co4t4dEeq6k6a2XVHNwA"/>
- </children>
- <children xmi:type="notation:Node" xmi:id="_62EfEN4dEeq6k6a2XVHNwA" type="3010" element="_614R0N4dEeq6k6a2XVHNwA">
- <styles xmi:type="notation:FontStyle" xmi:id="_62EfEd4dEeq6k6a2XVHNwA" fontColor="2697711" fontName="Segoe UI" fontHeight="8"/>
- <layoutConstraint xmi:type="notation:Location" xmi:id="_62EfEt4dEeq6k6a2XVHNwA"/>
- </children>
<children xmi:type="notation:Node" xmi:id="_rIogdtrpEeq_CZJuNlb8eA" type="3010" element="_rHc0sNrpEeq_CZJuNlb8eA">
<styles xmi:type="notation:FontStyle" xmi:id="_rIogd9rpEeq_CZJuNlb8eA" fontName="Cantarell" fontHeight="8"/>
<layoutConstraint xmi:type="notation:Location" xmi:id="_rIogeNrpEeq_CZJuNlb8eA"/>
@@ -505,7 +493,7 @@
<styles xmi:type="notation:FilteringStyle" xmi:id="_Wt8aVd4dEeq6k6a2XVHNwA"/>
</children>
<styles xmi:type="notation:ShapeStyle" xmi:id="_Wt8aUN4dEeq6k6a2XVHNwA" fontName="Segoe UI" fontHeight="8"/>
- <layoutConstraint xmi:type="notation:Bounds" xmi:id="_Wt8aUd4dEeq6k6a2XVHNwA" x="55" y="375" width="143" height="128"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_Wt8aUd4dEeq6k6a2XVHNwA" x="30" y="-150" width="143" height="128"/>
</children>
<children xmi:type="notation:Node" xmi:id="_gWTLkOBVEeq6k6a2XVHNwA" type="2003" element="_gWD7AOBVEeq6k6a2XVHNwA">
<children xmi:type="notation:Node" xmi:id="_gWTyoOBVEeq6k6a2XVHNwA" type="5007"/>
@@ -555,6 +543,40 @@
<styles xmi:type="notation:ShapeStyle" xmi:id="_Jku50fHQEeqBSeAPWoKPJw" fontName="Cantarell" fontHeight="8"/>
<layoutConstraint xmi:type="notation:Bounds" xmi:id="_Jku50vHQEeqBSeAPWoKPJw" x="2184" y="685" width="120" height="100"/>
</children>
+ <children xmi:type="notation:Node" xmi:id="_7eNdYAIdEeuURJHBrP3sSA" type="2003" element="_7dsgAAIdEeuURJHBrP3sSA">
+ <children xmi:type="notation:Node" xmi:id="_7eRu0AIdEeuURJHBrP3sSA" type="5007"/>
+ <children xmi:type="notation:Node" xmi:id="_7eSV4AIdEeuURJHBrP3sSA" type="7004">
+ <children xmi:type="notation:Node" xmi:id="_F6t4gAIeEeuURJHBrP3sSA" type="3010" element="_F6f2EgIeEeuURJHBrP3sSA">
+ <styles xmi:type="notation:FontStyle" xmi:id="_F6t4gQIeEeuURJHBrP3sSA" fontName="Cantarell" fontHeight="8"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_F6t4ggIeEeuURJHBrP3sSA"/>
+ </children>
+ <children xmi:type="notation:Node" xmi:id="_MaPgsAIeEeuURJHBrP3sSA" type="3010" element="_MZ9M0AIeEeuURJHBrP3sSA">
+ <styles xmi:type="notation:FontStyle" xmi:id="_MaPgsQIeEeuURJHBrP3sSA" fontName="Cantarell" fontHeight="8"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_MaPgsgIeEeuURJHBrP3sSA"/>
+ </children>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_7eSV4QIdEeuURJHBrP3sSA"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_7eSV4gIdEeuURJHBrP3sSA"/>
+ </children>
+ <styles xmi:type="notation:ShapeStyle" xmi:id="_7eNdYQIdEeuURJHBrP3sSA" fontName="Cantarell" fontHeight="8" italic="true"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_7eNdYgIdEeuURJHBrP3sSA" x="85" y="470" width="198" height="100"/>
+ </children>
+ <children xmi:type="notation:Node" xmi:id="_RpU0sAIeEeuURJHBrP3sSA" type="2003" element="_RpFkIAIeEeuURJHBrP3sSA">
+ <children xmi:type="notation:Node" xmi:id="_RpU0swIeEeuURJHBrP3sSA" type="5007"/>
+ <children xmi:type="notation:Node" xmi:id="_RpU0tAIeEeuURJHBrP3sSA" type="7004">
+ <children xmi:type="notation:Node" xmi:id="_VWdNwAIeEeuURJHBrP3sSA" type="3010" element="_VWNWIAIeEeuURJHBrP3sSA">
+ <styles xmi:type="notation:FontStyle" xmi:id="_VWdNwQIeEeuURJHBrP3sSA" fontColor="2697711" fontName="Cantarell" fontHeight="8"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_VWdNwgIeEeuURJHBrP3sSA"/>
+ </children>
+ <children xmi:type="notation:Node" xmi:id="_bUCmgAIeEeuURJHBrP3sSA" type="3010" element="_FVfgwN4dEeq6k6a2XVHNwA">
+ <styles xmi:type="notation:FontStyle" xmi:id="_bUCmgQIeEeuURJHBrP3sSA" fontName="Cantarell" fontHeight="8"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_bUCmggIeEeuURJHBrP3sSA"/>
+ </children>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_RpU0tQIeEeuURJHBrP3sSA"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_RpU0tgIeEeuURJHBrP3sSA"/>
+ </children>
+ <styles xmi:type="notation:ShapeStyle" xmi:id="_RpU0sQIeEeuURJHBrP3sSA" fontName="Cantarell" fontHeight="8"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_RpU0sgIeEeuURJHBrP3sSA" x="85" y="650" width="198" height="100"/>
+ </children>
<styles xmi:type="notation:DiagramStyle" xmi:id="_n6t0okwrEeqwHIzbUoB2lQ"/>
<edges xmi:type="notation:Edge" xmi:id="_rIxDUNrpEeq_CZJuNlb8eA" type="4001" element="_rHvIkNrpEeq_CZJuNlb8eA" source="_rIUXYNrpEeq_CZJuNlb8eA" target="_rIaeANrpEeq_CZJuNlb8eA">
<children xmi:type="notation:Node" xmi:id="_rIyRcNrpEeq_CZJuNlb8eA" type="6001">
@@ -766,17 +788,17 @@
</edges>
<edges xmi:type="notation:Edge" xmi:id="_rJCJENrpEeq_CZJuNlb8eA" type="4001" element="_rIA1YNrpEeq_CZJuNlb8eA" source="_rIf9lNrpEeq_CZJuNlb8eA" target="_rIc6Q9rpEeq_CZJuNlb8eA">
<children xmi:type="notation:Node" xmi:id="_rJCwINrpEeq_CZJuNlb8eA" type="6001">
- <layoutConstraint xmi:type="notation:Bounds" xmi:id="_rJCwIdrpEeq_CZJuNlb8eA" x="70" y="-10"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_rJCwIdrpEeq_CZJuNlb8eA" x="-61" y="153"/>
</children>
<children xmi:type="notation:Node" xmi:id="_rJCwItrpEeq_CZJuNlb8eA" type="6002">
- <layoutConstraint xmi:type="notation:Bounds" xmi:id="_rJCwI9rpEeq_CZJuNlb8eA" x="93" y="-10"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_rJCwI9rpEeq_CZJuNlb8eA" x="96" y="-10"/>
</children>
<children xmi:type="notation:Node" xmi:id="_rJDXMNrpEeq_CZJuNlb8eA" type="6003">
- <layoutConstraint xmi:type="notation:Bounds" xmi:id="_rJDXMdrpEeq_CZJuNlb8eA" x="-185"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_rJDXMdrpEeq_CZJuNlb8eA" x="-188"/>
</children>
<styles xmi:type="notation:ConnectorStyle" xmi:id="_rJCJEdrpEeq_CZJuNlb8eA" routing="Rectilinear"/>
<styles xmi:type="notation:FontStyle" xmi:id="_rJCJEtrpEeq_CZJuNlb8eA" fontColor="7490599" fontName="Cantarell" fontHeight="8"/>
- <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_rJCJE9rpEeq_CZJuNlb8eA" points="[-59, -24, 394, 533]$[-409, -24, 44, 533]$[-409, -508, 44, 49]"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_rJCJE9rpEeq_CZJuNlb8eA" points="[-59, -24, 391, 533]$[-384, -24, 66, 533]$[-384, -508, 66, 49]"/>
<sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_rJDXMtrpEeq_CZJuNlb8eA" id="(0.5,0.5)"/>
<targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_rJDXM9rpEeq_CZJuNlb8eA" id="(0.5,0.5)"/>
</edges>
@@ -1054,17 +1076,17 @@
</edges>
<edges xmi:type="notation:Edge" xmi:id="_2UufINyOEeq6k6a2XVHNwA" type="4001" element="_2Tg-MNyOEeq6k6a2XVHNwA" source="_S_lQQNr-Eeq_nvF5tuZorw" target="_rIc6Q9rpEeq_CZJuNlb8eA">
<children xmi:type="notation:Node" xmi:id="_2U2a8NyOEeq6k6a2XVHNwA" type="6001">
- <layoutConstraint xmi:type="notation:Bounds" xmi:id="_2U2a8dyOEeq6k6a2XVHNwA" x="-466" y="-10"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_2U2a8dyOEeq6k6a2XVHNwA" x="-442" y="-10"/>
</children>
<children xmi:type="notation:Node" xmi:id="_2U3CANyOEeq6k6a2XVHNwA" type="6002">
- <layoutConstraint xmi:type="notation:Bounds" xmi:id="_2U3CAdyOEeq6k6a2XVHNwA" x="-215" y="114"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_2U3CAdyOEeq6k6a2XVHNwA" x="-208" y="114"/>
</children>
<children xmi:type="notation:Node" xmi:id="_2U4QINyOEeq6k6a2XVHNwA" type="6003">
- <layoutConstraint xmi:type="notation:Bounds" xmi:id="_2U4QIdyOEeq6k6a2XVHNwA" x="-1"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_2U4QIdyOEeq6k6a2XVHNwA" x="-8"/>
</children>
<styles xmi:type="notation:ConnectorStyle" xmi:id="_2UvGMNyOEeq6k6a2XVHNwA" routing="Rectilinear"/>
<styles xmi:type="notation:FontStyle" xmi:id="_2UvGMdyOEeq6k6a2XVHNwA" fontColor="7490599" fontName="Segoe UI" fontHeight="8"/>
- <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_2UvGMtyOEeq6k6a2XVHNwA" points="[40, 98, 1825, 681]$[40, 349, 1825, 932]$[-1888, 349, -103, 932]$[-1888, -470, -103, 113]"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_2UvGMtyOEeq6k6a2XVHNwA" points="[20, 98, 1862, 683]$[20, 348, 1862, 933]$[-1880, 348, -38, 933]$[-1880, -497, -38, 88]"/>
<sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_2U7TcNyOEeq6k6a2XVHNwA" id="(0.4807692307692308,0.0)"/>
<targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_2U7TcdyOEeq6k6a2XVHNwA" id="(1.0,0.10204081632653061)"/>
</edges>
@@ -1148,6 +1170,38 @@
<sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_fX8uivHQEeqBSeAPWoKPJw" id="(0.559322033898305,0.0)"/>
<targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_fX8ui_HQEeqBSeAPWoKPJw" id="(1.0,0.04)"/>
</edges>
+ <edges xmi:type="notation:Edge" xmi:id="_f_4DgAIeEeuURJHBrP3sSA" type="4001" element="_f_dz6AIeEeuURJHBrP3sSA" source="_rIc6Q9rpEeq_CZJuNlb8eA" target="_7eNdYAIdEeuURJHBrP3sSA">
+ <children xmi:type="notation:Node" xmi:id="_f_4qkAIeEeuURJHBrP3sSA" type="6001">
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_f_4qkQIeEeuURJHBrP3sSA" x="23" y="-10"/>
+ </children>
+ <children xmi:type="notation:Node" xmi:id="_f_4qkgIeEeuURJHBrP3sSA" type="6002">
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_f_4qkwIeEeuURJHBrP3sSA" x="6" y="10"/>
+ </children>
+ <children xmi:type="notation:Node" xmi:id="_f_5RoAIeEeuURJHBrP3sSA" type="6003">
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_f_5RoQIeEeuURJHBrP3sSA" y="10"/>
+ </children>
+ <styles xmi:type="notation:ConnectorStyle" xmi:id="_f_4DgQIeEeuURJHBrP3sSA" routing="Rectilinear"/>
+ <styles xmi:type="notation:FontStyle" xmi:id="_f_4DggIeEeuURJHBrP3sSA" fontColor="7490599" fontName="Cantarell" fontHeight="8"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_f_4DgwIeEeuURJHBrP3sSA" points="[-10, 0, 0, -147]$[-10, 147, 0, 0]"/>
+ <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_f_7G0AIeEeuURJHBrP3sSA" id="(0.1488095238095238,1.0)"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_f_7G0QIeEeuURJHBrP3sSA" id="(0.5612244897959183,0.0)"/>
+ </edges>
+ <edges xmi:type="notation:Edge" xmi:id="_okvAgAIeEeuURJHBrP3sSA" type="4001" element="_okg-HwIeEeuURJHBrP3sSA" source="_RpU0sAIeEeuURJHBrP3sSA" target="_7eNdYAIdEeuURJHBrP3sSA">
+ <children xmi:type="notation:Node" xmi:id="_okvAhAIeEeuURJHBrP3sSA" type="6001">
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_okvAhQIeEeuURJHBrP3sSA" y="-10"/>
+ </children>
+ <children xmi:type="notation:Node" xmi:id="_okvAhgIeEeuURJHBrP3sSA" type="6002">
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_okvAhwIeEeuURJHBrP3sSA" y="10"/>
+ </children>
+ <children xmi:type="notation:Node" xmi:id="_okvAiAIeEeuURJHBrP3sSA" type="6003">
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_okvAiQIeEeuURJHBrP3sSA" y="10"/>
+ </children>
+ <styles xmi:type="notation:ConnectorStyle" xmi:id="_okvAgQIeEeuURJHBrP3sSA" routing="Tree"/>
+ <styles xmi:type="notation:FontStyle" xmi:id="_okvAggIeEeuURJHBrP3sSA" fontName="Cantarell" fontHeight="8"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_okvAgwIeEeuURJHBrP3sSA" points="[0, 0, 25, 82]$[-25, -82, 0, 0]"/>
+ <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_okvnkAIeEeuURJHBrP3sSA" id="(0.5561224489795918,0.01020408163265306)"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_okvnkQIeEeuURJHBrP3sSA" id="(0.5,0.5)"/>
+ </edges>
</data>
</ownedAnnotationEntries>
<ownedDiagramElements xmi:type="diagram:DNodeList" uid="_rGcIENrpEeq_CZJuNlb8eA" name="Task" tooltipText="" outgoingEdges="_rHvIkNrpEeq_CZJuNlb8eA _rH2dUNrpEeq_CZJuNlb8eA _rH3EZtrpEeq_CZJuNlb8eA _rH3rdtrpEeq_CZJuNlb8eA _rH4ShtrpEeq_CZJuNlb8eA _qKPzVtruEeq_CZJuNlb8eA" incomingEdges="_rH4ShtrpEeq_CZJuNlb8eA _rH9LBtrpEeq_CZJuNlb8eA _rH-ZINrpEeq_CZJuNlb8eA _v_ZPldrzEeq_CZJuNlb8eA" width="12" height="10">
@@ -1362,7 +1416,7 @@
<actualMapping xmi:type="description_1:NodeMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']/@subNodeMappings[name='Operation']"/>
</ownedElements>
</ownedDiagramElements>
- <ownedDiagramElements xmi:type="diagram:DNodeList" uid="_rGpjcdrpEeq_CZJuNlb8eA" name="Skill" tooltipText="" outgoingEdges="_rH785trpEeq_CZJuNlb8eA" incomingEdges="_rH5goNrpEeq_CZJuNlb8eA _rH7V1trpEeq_CZJuNlb8eA _rH_AM9rpEeq_CZJuNlb8eA _rIA1YNrpEeq_CZJuNlb8eA _2Tg-MNyOEeq6k6a2XVHNwA" width="12" height="10">
+ <ownedDiagramElements xmi:type="diagram:DNodeList" uid="_rGpjcdrpEeq_CZJuNlb8eA" name="Skill" tooltipText="" outgoingEdges="_rH785trpEeq_CZJuNlb8eA _f_dz6AIeEeuURJHBrP3sSA" incomingEdges="_rH5goNrpEeq_CZJuNlb8eA _rH7V1trpEeq_CZJuNlb8eA _rH_AM9rpEeq_CZJuNlb8eA _rIA1YNrpEeq_CZJuNlb8eA _2Tg-MNyOEeq6k6a2XVHNwA" width="12" height="10">
<target xmi:type="ecore:EClass" href="Skills.ecore#//Skill"/>
<semanticElements xmi:type="ecore:EClass" href="Skills.ecore#//Skill"/>
<arrangeConstraints>KEEP_LOCATION</arrangeConstraints>
@@ -1375,8 +1429,8 @@
<ownedElements xmi:type="diagram:DNodeListElement" uid="_rHbmkNrpEeq_CZJuNlb8eA" name="name : EString = <unnamed>" tooltipText="">
<target xmi:type="ecore:EAttribute" href="Skills.ecore#//Skill/name"/>
<semanticElements xmi:type="ecore:EAttribute" href="Skills.ecore#//Skill/name"/>
- <ownedStyle xmi:type="diagram:BundledImage" uid="_rHbmkdrpEeq_CZJuNlb8eA" labelAlignment="LEFT">
- <description xmi:type="style:BundledImageDescription" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']/@subNodeMappings[name='EC%20EAttribute']/@style"/>
+ <ownedStyle xmi:type="diagram:BundledImage" uid="_5YOBQQIdEeuURJHBrP3sSA" labelAlignment="LEFT" description="_paxGE-wkEeq5FfcjywLUwQ">
+ <labelFormat>bold</labelFormat>
</ownedStyle>
<actualMapping xmi:type="description_1:NodeMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']/@subNodeMappings[name='EC%20EAttribute']"/>
</ownedElements>
@@ -1388,28 +1442,6 @@
</ownedStyle>
<actualMapping xmi:type="description_1:NodeMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']/@subNodeMappings[name='EC%20EAttribute']"/>
</ownedElements>
- <ownedElements xmi:type="diagram:DNodeListElement" uid="_FVfgwN4dEeq6k6a2XVHNwA" name="xpLevelFactor : EDouble = 2.4" tooltipText="">
- <target xmi:type="ecore:EAttribute" href="Skills.ecore#//Skill/xpLevelFactor"/>
- <semanticElements xmi:type="ecore:EAttribute" href="Skills.ecore#//Skill/xpLevelFactor"/>
- <ownedStyle xmi:type="diagram:BundledImage" uid="_SAz80d4dEeq6k6a2XVHNwA" labelAlignment="LEFT">
- <description xmi:type="style:BundledImageDescription" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']/@subNodeMappings[name='EC%20EAttribute']/@style"/>
- </ownedStyle>
- <actualMapping xmi:type="description_1:NodeMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']/@subNodeMappings[name='EC%20EAttribute']"/>
- </ownedElements>
- <ownedElements xmi:type="diagram:DNodeListElement" uid="_x8zYUN4dEeq6k6a2XVHNwA" name="/level : EInt" tooltipText="">
- <target xmi:type="ecore:EAttribute" href="Skills.ecore#//Skill/level"/>
- <semanticElements xmi:type="ecore:EAttribute" href="Skills.ecore#//Skill/level"/>
- <ownedStyle xmi:type="diagram:BundledImage" uid="_4Yx9Qd4dEeq6k6a2XVHNwA" labelColor="39,76,114" labelAlignment="LEFT" description="_4YxWNt4dEeq6k6a2XVHNwA"/>
- <actualMapping xmi:type="description_1:NodeMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']/@subNodeMappings[name='EC%20EAttribute']"/>
- </ownedElements>
- <ownedElements xmi:type="diagram:DNodeListElement" uid="_614R0N4dEeq6k6a2XVHNwA" name="/title : LevelNames = Apprentice" tooltipText="">
- <target xmi:type="ecore:EAttribute" href="Skills.ecore#//Skill/title"/>
- <semanticElements xmi:type="ecore:EAttribute" href="Skills.ecore#//Skill/title"/>
- <ownedStyle xmi:type="diagram:BundledImage" uid="_9tf_Md4dEeq6k6a2XVHNwA" labelColor="39,76,114" labelAlignment="LEFT" description="_9tfYJN4dEeq6k6a2XVHNwA">
- <labelFormat>bold</labelFormat>
- </ownedStyle>
- <actualMapping xmi:type="description_1:NodeMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']/@subNodeMappings[name='EC%20EAttribute']"/>
- </ownedElements>
<ownedElements xmi:type="diagram:DNodeListElement" uid="_rHc0sNrpEeq_CZJuNlb8eA" name="addExperience(amount EInt)" tooltipText="addExperience(amount)">
<target xmi:type="ecore:EOperation" href="Skills.ecore#//Skill/addExperience"/>
<semanticElements xmi:type="ecore:EOperation" href="Skills.ecore#//Skill/addExperience"/>
@@ -2375,6 +2407,86 @@
</ownedStyle>
<actualMapping xmi:type="description_1:EdgeMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@edgeMappings[name='EC_EReference']"/>
</ownedDiagramElements>
+ <ownedDiagramElements xmi:type="diagram:DNodeList" uid="_7dsgAAIdEeuURJHBrP3sSA" name="LevelProgression" tooltipText="" incomingEdges="_f_dz6AIeEeuURJHBrP3sSA _okg-HwIeEeuURJHBrP3sSA" width="12" height="10">
+ <target xmi:type="ecore:EClass" href="Skills.ecore#//LevelProgression"/>
+ <semanticElements xmi:type="ecore:EClass" href="Skills.ecore#//LevelProgression"/>
+ <arrangeConstraints>KEEP_LOCATION</arrangeConstraints>
+ <arrangeConstraints>KEEP_SIZE</arrangeConstraints>
+ <arrangeConstraints>KEEP_RATIO</arrangeConstraints>
+ <ownedStyle xmi:type="diagram:FlatContainerStyle" uid="_8XSdpgIhEeuoCenS4mFLPw" iconPath="/org.eclipse.emf.ecoretools.design/icons/full/obj16/EClass_interface.gif" borderSize="1" borderSizeComputationExpression="1" borderColor="125,125,125" backgroundStyle="Liquid" foregroundColor="228,228,228">
+ <labelFormat>italic</labelFormat>
+ <description xmi:type="style:FlatContainerStyleDescription" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']/@conditionnalStyles.0/@style"/>
+ </ownedStyle>
+ <actualMapping xmi:type="description_1:ContainerMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']"/>
+ <ownedElements xmi:type="diagram:DNodeListElement" uid="_F6f2EgIeEeuURJHBrP3sSA" name="getMinimumXpForLevel(level EInt) : EInt" tooltipText="getMinimumXpForLevel(level) : EInt">
+ <target xmi:type="ecore:EOperation" href="Skills.ecore#//LevelProgression/getMinimumXpForLevel"/>
+ <semanticElements xmi:type="ecore:EOperation" href="Skills.ecore#//LevelProgression/getMinimumXpForLevel"/>
+ <semanticElements xmi:type="ecore:EParameter" href="Skills.ecore#//LevelProgression/getMinimumXpForLevel/level"/>
+ <ownedStyle xmi:type="diagram:BundledImage" uid="_F6gdIAIeEeuURJHBrP3sSA" labelAlignment="LEFT">
+ <description xmi:type="style:BundledImageDescription" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']/@subNodeMappings[name='Operation']/@style"/>
+ </ownedStyle>
+ <actualMapping xmi:type="description_1:NodeMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']/@subNodeMappings[name='Operation']"/>
+ </ownedElements>
+ <ownedElements xmi:type="diagram:DNodeListElement" uid="_MZ9M0AIeEeuURJHBrP3sSA" name="getLevel(xp EInt) : EInt" tooltipText="getLevel(xp) : EInt">
+ <target xmi:type="ecore:EOperation" href="Skills.ecore#//LevelProgression/getLevel"/>
+ <semanticElements xmi:type="ecore:EOperation" href="Skills.ecore#//LevelProgression/getLevel"/>
+ <semanticElements xmi:type="ecore:EParameter" href="Skills.ecore#//LevelProgression/getLevel/xp"/>
+ <ownedStyle xmi:type="diagram:BundledImage" uid="_MZ9z4AIeEeuURJHBrP3sSA" labelAlignment="LEFT">
+ <description xmi:type="style:BundledImageDescription" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']/@subNodeMappings[name='Operation']/@style"/>
+ </ownedStyle>
+ <actualMapping xmi:type="description_1:NodeMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']/@subNodeMappings[name='Operation']"/>
+ </ownedElements>
+ </ownedDiagramElements>
+ <ownedDiagramElements xmi:type="diagram:DNodeList" uid="_RpFkIAIeEeuURJHBrP3sSA" name="FactorProgression" tooltipText="" outgoingEdges="_okg-HwIeEeuURJHBrP3sSA" width="12" height="10">
+ <target xmi:type="ecore:EClass" href="Skills.ecore#//FactorProgression"/>
+ <semanticElements xmi:type="ecore:EClass" href="Skills.ecore#//FactorProgression"/>
+ <arrangeConstraints>KEEP_LOCATION</arrangeConstraints>
+ <arrangeConstraints>KEEP_SIZE</arrangeConstraints>
+ <arrangeConstraints>KEEP_RATIO</arrangeConstraints>
+ <ownedStyle xmi:type="diagram:FlatContainerStyle" uid="_a5PhAAIeEeuURJHBrP3sSA" borderSize="1" borderSizeComputationExpression="1" backgroundStyle="Liquid" foregroundColor="255,252,216">
+ <description xmi:type="style:FlatContainerStyleDescription" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']/@style"/>
+ </ownedStyle>
+ <actualMapping xmi:type="description_1:ContainerMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']"/>
+ <ownedElements xmi:type="diagram:DNodeListElement" uid="_VWNWIAIeEeuURJHBrP3sSA" name="baseXpNeeded : EInt = 100" tooltipText="">
+ <target xmi:type="ecore:EAttribute" href="Skills.ecore#//FactorProgression/baseXpNeeded"/>
+ <semanticElements xmi:type="ecore:EAttribute" href="Skills.ecore#//FactorProgression/baseXpNeeded"/>
+ <ownedStyle xmi:type="diagram:BundledImage" uid="_YYNulQIeEeuURJHBrP3sSA" labelAlignment="LEFT" description="_paxGE-wkEeq5FfcjywLUwQ">
+ <labelFormat>bold</labelFormat>
+ </ownedStyle>
+ <actualMapping xmi:type="description_1:NodeMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']/@subNodeMappings[name='EC%20EAttribute']"/>
+ </ownedElements>
+ <ownedElements xmi:type="diagram:DNodeListElement" uid="_FVfgwN4dEeq6k6a2XVHNwA" name="xpFactor : EDouble = 2.4" tooltipText="">
+ <target xmi:type="ecore:EAttribute" href="Skills.ecore#//FactorProgression/xpFactor"/>
+ <semanticElements xmi:type="ecore:EAttribute" href="Skills.ecore#//FactorProgression/xpFactor"/>
+ <ownedStyle xmi:type="diagram:BundledImage" uid="_crBAiQIeEeuURJHBrP3sSA" labelAlignment="LEFT" description="_paxGE-wkEeq5FfcjywLUwQ">
+ <labelFormat>bold</labelFormat>
+ </ownedStyle>
+ <actualMapping xmi:type="description_1:NodeMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']/@subNodeMappings[name='EC%20EAttribute']"/>
+ </ownedElements>
+ </ownedDiagramElements>
+ <ownedDiagramElements xmi:type="diagram:DEdge" uid="_f_dz6AIeEeuURJHBrP3sSA" name="[1..1] progression" sourceNode="_rGpjcdrpEeq_CZJuNlb8eA" targetNode="_7dsgAAIdEeuURJHBrP3sSA">
+ <target xmi:type="ecore:EReference" href="Skills.ecore#//Skill/progression"/>
+ <semanticElements xmi:type="ecore:EReference" href="Skills.ecore#//Skill/progression"/>
+ <ownedStyle xmi:type="diagram:EdgeStyle" uid="_hJsLXgIeEeuURJHBrP3sSA" description="_rHw9wNrpEeq_CZJuNlb8eA" sourceArrow="FillDiamond" routingStyle="manhattan" strokeColor="0,0,0">
+ <centerLabelStyle xmi:type="diagram:CenterLabelStyle" uid="_hJsLYAIeEeuURJHBrP3sSA" showIcon="false">
+ <labelFormat>bold</labelFormat>
+ </centerLabelStyle>
+ <endLabelStyle xmi:type="diagram:EndLabelStyle" uid="_hJsLXwIeEeuURJHBrP3sSA" labelSize="6" showIcon="false" labelColor="39,76,114"/>
+ </ownedStyle>
+ <actualMapping xmi:type="description_1:EdgeMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@edgeMappings[name='EC_EReference']"/>
+ </ownedDiagramElements>
+ <ownedDiagramElements xmi:type="diagram:DEdge" uid="_okg-HwIeEeuURJHBrP3sSA" sourceNode="_RpFkIAIeEeuURJHBrP3sSA" targetNode="_7dsgAAIdEeuURJHBrP3sSA">
+ <target xmi:type="ecore:EClass" href="Skills.ecore#//FactorProgression"/>
+ <semanticElements xmi:type="ecore:EClass" href="Skills.ecore#//FactorProgression"/>
+ <ownedStyle xmi:type="diagram:EdgeStyle" uid="_okhlIAIeEeuURJHBrP3sSA" lineStyle="dash" targetArrow="InputClosedArrow" routingStyle="tree">
+ <description xmi:type="style:EdgeStyleDescription" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@edgeMappings[name='EC%20ESupertypes']/@conditionnalStyles.0/@style"/>
+ <beginLabelStyle xmi:type="diagram:BeginLabelStyle" uid="_okhlIQIeEeuURJHBrP3sSA" showIcon="false">
+ <labelFormat>italic</labelFormat>
+ </beginLabelStyle>
+ <centerLabelStyle xmi:type="diagram:CenterLabelStyle" uid="_okhlIgIeEeuURJHBrP3sSA" showIcon="false"/>
+ </ownedStyle>
+ <actualMapping xmi:type="description_1:EdgeMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@edgeMappings[name='EC%20ESupertypes']"/>
+ </ownedDiagramElements>
<description xmi:type="description_1:DiagramDescription" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']"/>
<filterVariableHistory xmi:type="diagram:FilterVariableHistory" uid="_n5CZoEwrEeqwHIzbUoB2lQ"/>
<activatedLayers xmi:type="description_1:Layer" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer"/>
diff --git a/plugins/org.eclipse.skills/plugin.xml b/plugins/org.eclipse.skills/plugin.xml
index 509fa50..09da9f7 100644
--- a/plugins/org.eclipse.skills/plugin.xml
+++ b/plugins/org.eclipse.skills/plugin.xml
@@ -75,5 +75,19 @@
class="org.eclipse.skills.preferences.SkillsPreferenceInitializer">
</initializer>
</extension>
+ <extension
+ point="org.eclipse.ui.menus">
+ <menuContribution
+ allPopups="false"
+ locationURI="toolbar:org.eclipse.ui.trim.status">
+ <toolbar
+ id="org.eclipse.skills.progress"
+ label="Skills">
+ <control
+ class="org.eclipse.skills.ui.status.StatusBarProgressContribution">
+ </control>
+ </toolbar>
+ </menuContribution>
+ </extension>
</plugin>
diff --git a/plugins/org.eclipse.skills/src-gen/org/eclipse/skills/model/IFactorProgression.java b/plugins/org.eclipse.skills/src-gen/org/eclipse/skills/model/IFactorProgression.java
new file mode 100644
index 0000000..c7076df
--- /dev/null
+++ b/plugins/org.eclipse.skills/src-gen/org/eclipse/skills/model/IFactorProgression.java
@@ -0,0 +1,70 @@
+/**
+ */
+package org.eclipse.skills.model;
+
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Factor Progression</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * </p>
+ * <ul>
+ * <li>{@link org.eclipse.skills.model.IFactorProgression#getBaseXpNeeded <em>Base Xp Needed</em>}</li>
+ * <li>{@link org.eclipse.skills.model.IFactorProgression#getXpFactor <em>Xp Factor</em>}</li>
+ * </ul>
+ *
+ * @see org.eclipse.skills.model.ISkillsPackage#getFactorProgression()
+ * @model
+ * @generated
+ */
+public interface IFactorProgression extends ILevelProgression {
+ /**
+ * Returns the value of the '<em><b>Base Xp Needed</b></em>' attribute.
+ * The default value is <code>"100"</code>.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Base Xp Needed</em>' attribute.
+ * @see #setBaseXpNeeded(int)
+ * @see org.eclipse.skills.model.ISkillsPackage#getFactorProgression_BaseXpNeeded()
+ * @model default="100" required="true"
+ * @generated
+ */
+ int getBaseXpNeeded();
+
+ /**
+ * Sets the value of the '{@link org.eclipse.skills.model.IFactorProgression#getBaseXpNeeded <em>Base Xp Needed</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>Base Xp Needed</em>' attribute.
+ * @see #getBaseXpNeeded()
+ * @generated
+ */
+ void setBaseXpNeeded(int value);
+
+ /**
+ * Returns the value of the '<em><b>Xp Factor</b></em>' attribute.
+ * The default value is <code>"2.4"</code>.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Xp Factor</em>' attribute.
+ * @see #setXpFactor(double)
+ * @see org.eclipse.skills.model.ISkillsPackage#getFactorProgression_XpFactor()
+ * @model default="2.4" required="true"
+ * @generated
+ */
+ double getXpFactor();
+
+ /**
+ * Sets the value of the '{@link org.eclipse.skills.model.IFactorProgression#getXpFactor <em>Xp Factor</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>Xp Factor</em>' attribute.
+ * @see #getXpFactor()
+ * @generated
+ */
+ void setXpFactor(double value);
+
+} // IFactorProgression
diff --git a/plugins/org.eclipse.skills/src-gen/org/eclipse/skills/model/ILevelProgression.java b/plugins/org.eclipse.skills/src-gen/org/eclipse/skills/model/ILevelProgression.java
new file mode 100644
index 0000000..4b2db86
--- /dev/null
+++ b/plugins/org.eclipse.skills/src-gen/org/eclipse/skills/model/ILevelProgression.java
@@ -0,0 +1,34 @@
+/**
+ */
+package org.eclipse.skills.model;
+
+import org.eclipse.emf.ecore.EObject;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Level Progression</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ *
+ * @see org.eclipse.skills.model.ISkillsPackage#getLevelProgression()
+ * @model interface="true" abstract="true"
+ * @generated
+ */
+public interface ILevelProgression extends EObject {
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @model required="true"
+ * @generated
+ */
+ int getMinimumXpForLevel(int level);
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @model required="true"
+ * @generated
+ */
+ int getLevel(int xp);
+
+} // ILevelProgression
diff --git a/plugins/org.eclipse.skills/src-gen/org/eclipse/skills/model/ISkill.java b/plugins/org.eclipse.skills/src-gen/org/eclipse/skills/model/ISkill.java
index aa1846f..919fafb 100644
--- a/plugins/org.eclipse.skills/src-gen/org/eclipse/skills/model/ISkill.java
+++ b/plugins/org.eclipse.skills/src-gen/org/eclipse/skills/model/ISkill.java
@@ -16,9 +16,7 @@
* <li>{@link org.eclipse.skills.model.ISkill#getName <em>Name</em>}</li>
* <li>{@link org.eclipse.skills.model.ISkill#getDescription <em>Description</em>}</li>
* <li>{@link org.eclipse.skills.model.ISkill#getExperience <em>Experience</em>}</li>
- * <li>{@link org.eclipse.skills.model.ISkill#getXpLevelFactor <em>Xp Level Factor</em>}</li>
- * <li>{@link org.eclipse.skills.model.ISkill#getLevel <em>Level</em>}</li>
- * <li>{@link org.eclipse.skills.model.ISkill#getTitle <em>Title</em>}</li>
+ * <li>{@link org.eclipse.skills.model.ISkill#getProgression <em>Progression</em>}</li>
* </ul>
*
* @see org.eclipse.skills.model.ISkillsPackage#getSkill()
@@ -34,7 +32,7 @@
* @return the value of the '<em>Name</em>' attribute.
* @see #setName(String)
* @see org.eclipse.skills.model.ISkillsPackage#getSkill_Name()
- * @model default="<unnamed>"
+ * @model default="<unnamed>" required="true"
* @generated
*/
String getName();
@@ -94,51 +92,26 @@
void setExperience(int value);
/**
- * Returns the value of the '<em><b>Xp Level Factor</b></em>' attribute.
- * The default value is <code>"2.4"</code>.
+ * Returns the value of the '<em><b>Progression</b></em>' containment reference.
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
- * @return the value of the '<em>Xp Level Factor</em>' attribute.
- * @see #setXpLevelFactor(double)
- * @see org.eclipse.skills.model.ISkillsPackage#getSkill_XpLevelFactor()
- * @model default="2.4"
+ * @return the value of the '<em>Progression</em>' containment reference.
+ * @see #setProgression(ILevelProgression)
+ * @see org.eclipse.skills.model.ISkillsPackage#getSkill_Progression()
+ * @model containment="true" required="true"
* @generated
*/
- double getXpLevelFactor();
+ ILevelProgression getProgression();
/**
- * Sets the value of the '{@link org.eclipse.skills.model.ISkill#getXpLevelFactor <em>Xp Level Factor</em>}' attribute.
+ * Sets the value of the '{@link org.eclipse.skills.model.ISkill#getProgression <em>Progression</em>}' containment reference.
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
- * @param value the new value of the '<em>Xp Level Factor</em>' attribute.
- * @see #getXpLevelFactor()
+ * @param value the new value of the '<em>Progression</em>' containment reference.
+ * @see #getProgression()
* @generated
*/
- void setXpLevelFactor(double value);
-
- /**
- * Returns the value of the '<em><b>Level</b></em>' attribute.
- * <!-- begin-user-doc -->
- * <!-- end-user-doc -->
- * @return the value of the '<em>Level</em>' attribute.
- * @see org.eclipse.skills.model.ISkillsPackage#getSkill_Level()
- * @model transient="true" changeable="false" volatile="true" derived="true"
- * @generated
- */
- int getLevel();
-
- /**
- * Returns the value of the '<em><b>Title</b></em>' attribute.
- * The literals are from the enumeration {@link org.eclipse.skills.model.LevelNames}.
- * <!-- begin-user-doc -->
- * <!-- end-user-doc -->
- * @return the value of the '<em>Title</em>' attribute.
- * @see org.eclipse.skills.model.LevelNames
- * @see org.eclipse.skills.model.ISkillsPackage#getSkill_Title()
- * @model required="true" transient="true" changeable="false" volatile="true" derived="true"
- * @generated
- */
- LevelNames getTitle();
+ void setProgression(ILevelProgression value);
/**
* <!-- begin-user-doc -->
diff --git a/plugins/org.eclipse.skills/src-gen/org/eclipse/skills/model/ISkillsFactory.java b/plugins/org.eclipse.skills/src-gen/org/eclipse/skills/model/ISkillsFactory.java
index 546dd64..b8b65ed 100644
--- a/plugins/org.eclipse.skills/src-gen/org/eclipse/skills/model/ISkillsFactory.java
+++ b/plugins/org.eclipse.skills/src-gen/org/eclipse/skills/model/ISkillsFactory.java
@@ -202,6 +202,15 @@
IHint createHint();
/**
+ * Returns a new object of class '<em>Factor Progression</em>'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return a new object of class '<em>Factor Progression</em>'.
+ * @generated
+ */
+ IFactorProgression createFactorProgression();
+
+ /**
* Returns the package supported by this factory.
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
diff --git a/plugins/org.eclipse.skills/src-gen/org/eclipse/skills/model/ISkillsPackage.java b/plugins/org.eclipse.skills/src-gen/org/eclipse/skills/model/ISkillsPackage.java
index 08c3824..5921bac 100644
--- a/plugins/org.eclipse.skills/src-gen/org/eclipse/skills/model/ISkillsPackage.java
+++ b/plugins/org.eclipse.skills/src-gen/org/eclipse/skills/model/ISkillsPackage.java
@@ -471,31 +471,13 @@
int SKILL__EXPERIENCE = 2;
/**
- * The feature id for the '<em><b>Xp Level Factor</b></em>' attribute.
+ * The feature id for the '<em><b>Progression</b></em>' containment reference.
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
* @generated
* @ordered
*/
- int SKILL__XP_LEVEL_FACTOR = 3;
-
- /**
- * The feature id for the '<em><b>Level</b></em>' attribute.
- * <!-- begin-user-doc -->
- * <!-- end-user-doc -->
- * @generated
- * @ordered
- */
- int SKILL__LEVEL = 4;
-
- /**
- * The feature id for the '<em><b>Title</b></em>' attribute.
- * <!-- begin-user-doc -->
- * <!-- end-user-doc -->
- * @generated
- * @ordered
- */
- int SKILL__TITLE = 5;
+ int SKILL__PROGRESSION = 3;
/**
* The number of structural features of the '<em>Skill</em>' class.
@@ -504,7 +486,7 @@
* @generated
* @ordered
*/
- int SKILL_FEATURE_COUNT = 6;
+ int SKILL_FEATURE_COUNT = 4;
/**
* The operation id for the '<em>Add Experience</em>' operation.
@@ -1858,6 +1840,116 @@
int HINT_OPERATION_COUNT = DESCRIPTION_OPERATION_COUNT + 0;
/**
+ * The meta object id for the '{@link org.eclipse.skills.model.ILevelProgression <em>Level Progression</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.skills.model.ILevelProgression
+ * @see org.eclipse.skills.model.impl.MSkillsPackage#getLevelProgression()
+ * @generated
+ */
+ int LEVEL_PROGRESSION = 25;
+
+ /**
+ * The number of structural features of the '<em>Level Progression</em>' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int LEVEL_PROGRESSION_FEATURE_COUNT = 0;
+
+ /**
+ * The operation id for the '<em>Get Minimum Xp For Level</em>' operation.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int LEVEL_PROGRESSION___GET_MINIMUM_XP_FOR_LEVEL__INT = 0;
+
+ /**
+ * The operation id for the '<em>Get Level</em>' operation.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int LEVEL_PROGRESSION___GET_LEVEL__INT = 1;
+
+ /**
+ * The number of operations of the '<em>Level Progression</em>' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int LEVEL_PROGRESSION_OPERATION_COUNT = 2;
+
+ /**
+ * The meta object id for the '{@link org.eclipse.skills.model.impl.MFactorProgression <em>Factor Progression</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.skills.model.impl.MFactorProgression
+ * @see org.eclipse.skills.model.impl.MSkillsPackage#getFactorProgression()
+ * @generated
+ */
+ int FACTOR_PROGRESSION = 26;
+
+ /**
+ * The feature id for the '<em><b>Base Xp Needed</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int FACTOR_PROGRESSION__BASE_XP_NEEDED = LEVEL_PROGRESSION_FEATURE_COUNT + 0;
+
+ /**
+ * The feature id for the '<em><b>Xp Factor</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int FACTOR_PROGRESSION__XP_FACTOR = LEVEL_PROGRESSION_FEATURE_COUNT + 1;
+
+ /**
+ * The number of structural features of the '<em>Factor Progression</em>' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int FACTOR_PROGRESSION_FEATURE_COUNT = LEVEL_PROGRESSION_FEATURE_COUNT + 2;
+
+ /**
+ * The operation id for the '<em>Get Minimum Xp For Level</em>' operation.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int FACTOR_PROGRESSION___GET_MINIMUM_XP_FOR_LEVEL__INT = LEVEL_PROGRESSION___GET_MINIMUM_XP_FOR_LEVEL__INT;
+
+ /**
+ * The operation id for the '<em>Get Level</em>' operation.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int FACTOR_PROGRESSION___GET_LEVEL__INT = LEVEL_PROGRESSION___GET_LEVEL__INT;
+
+ /**
+ * The number of operations of the '<em>Factor Progression</em>' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int FACTOR_PROGRESSION_OPERATION_COUNT = LEVEL_PROGRESSION_OPERATION_COUNT + 0;
+
+ /**
* The meta object id for the '{@link org.eclipse.skills.model.LevelNames <em>Level Names</em>}' enum.
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
@@ -1865,7 +1957,7 @@
* @see org.eclipse.skills.model.impl.MSkillsPackage#getLevelNames()
* @generated
*/
- int LEVEL_NAMES = 25;
+ int LEVEL_NAMES = 27;
/**
* The meta object id for the '<em>Date</em>' data type.
@@ -1875,7 +1967,7 @@
* @see org.eclipse.skills.model.impl.MSkillsPackage#getDate()
* @generated
*/
- int DATE = 26;
+ int DATE = 28;
/**
@@ -1886,7 +1978,7 @@
* @see org.eclipse.skills.model.impl.MSkillsPackage#getCustomDependencyDefinition()
* @generated
*/
- int CUSTOM_DEPENDENCY_DEFINITION = 27;
+ int CUSTOM_DEPENDENCY_DEFINITION = 29;
/**
@@ -1897,7 +1989,7 @@
* @see org.eclipse.skills.model.impl.MSkillsPackage#getImageData()
* @generated
*/
- int IMAGE_DATA = 28;
+ int IMAGE_DATA = 30;
/**
@@ -1908,7 +2000,7 @@
* @see org.eclipse.skills.model.impl.MSkillsPackage#getISkillService()
* @generated
*/
- int ISKILL_SERVICE = 29;
+ int ISKILL_SERVICE = 31;
/**
@@ -2284,37 +2376,15 @@
EAttribute getSkill_Experience();
/**
- * Returns the meta object for the attribute '{@link org.eclipse.skills.model.ISkill#getXpLevelFactor <em>Xp Level Factor</em>}'.
+ * Returns the meta object for the containment reference '{@link org.eclipse.skills.model.ISkill#getProgression <em>Progression</em>}'.
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
- * @return the meta object for the attribute '<em>Xp Level Factor</em>'.
- * @see org.eclipse.skills.model.ISkill#getXpLevelFactor()
+ * @return the meta object for the containment reference '<em>Progression</em>'.
+ * @see org.eclipse.skills.model.ISkill#getProgression()
* @see #getSkill()
* @generated
*/
- EAttribute getSkill_XpLevelFactor();
-
- /**
- * Returns the meta object for the attribute '{@link org.eclipse.skills.model.ISkill#getLevel <em>Level</em>}'.
- * <!-- begin-user-doc -->
- * <!-- end-user-doc -->
- * @return the meta object for the attribute '<em>Level</em>'.
- * @see org.eclipse.skills.model.ISkill#getLevel()
- * @see #getSkill()
- * @generated
- */
- EAttribute getSkill_Level();
-
- /**
- * Returns the meta object for the attribute '{@link org.eclipse.skills.model.ISkill#getTitle <em>Title</em>}'.
- * <!-- begin-user-doc -->
- * <!-- end-user-doc -->
- * @return the meta object for the attribute '<em>Title</em>'.
- * @see org.eclipse.skills.model.ISkill#getTitle()
- * @see #getSkill()
- * @generated
- */
- EAttribute getSkill_Title();
+ EReference getSkill_Progression();
/**
* Returns the meta object for the '{@link org.eclipse.skills.model.ISkill#addExperience(int) <em>Add Experience</em>}' operation.
@@ -2893,6 +2963,68 @@
EReference getUserDependency_User();
/**
+ * Returns the meta object for class '{@link org.eclipse.skills.model.ILevelProgression <em>Level Progression</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for class '<em>Level Progression</em>'.
+ * @see org.eclipse.skills.model.ILevelProgression
+ * @generated
+ */
+ EClass getLevelProgression();
+
+ /**
+ * Returns the meta object for the '{@link org.eclipse.skills.model.ILevelProgression#getMinimumXpForLevel(int) <em>Get Minimum Xp For Level</em>}' operation.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the '<em>Get Minimum Xp For Level</em>' operation.
+ * @see org.eclipse.skills.model.ILevelProgression#getMinimumXpForLevel(int)
+ * @generated
+ */
+ EOperation getLevelProgression__GetMinimumXpForLevel__int();
+
+ /**
+ * Returns the meta object for the '{@link org.eclipse.skills.model.ILevelProgression#getLevel(int) <em>Get Level</em>}' operation.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the '<em>Get Level</em>' operation.
+ * @see org.eclipse.skills.model.ILevelProgression#getLevel(int)
+ * @generated
+ */
+ EOperation getLevelProgression__GetLevel__int();
+
+ /**
+ * Returns the meta object for class '{@link org.eclipse.skills.model.IFactorProgression <em>Factor Progression</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for class '<em>Factor Progression</em>'.
+ * @see org.eclipse.skills.model.IFactorProgression
+ * @generated
+ */
+ EClass getFactorProgression();
+
+ /**
+ * Returns the meta object for the attribute '{@link org.eclipse.skills.model.IFactorProgression#getBaseXpNeeded <em>Base Xp Needed</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the attribute '<em>Base Xp Needed</em>'.
+ * @see org.eclipse.skills.model.IFactorProgression#getBaseXpNeeded()
+ * @see #getFactorProgression()
+ * @generated
+ */
+ EAttribute getFactorProgression_BaseXpNeeded();
+
+ /**
+ * Returns the meta object for the attribute '{@link org.eclipse.skills.model.IFactorProgression#getXpFactor <em>Xp Factor</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the attribute '<em>Xp Factor</em>'.
+ * @see org.eclipse.skills.model.IFactorProgression#getXpFactor()
+ * @see #getFactorProgression()
+ * @generated
+ */
+ EAttribute getFactorProgression_XpFactor();
+
+ /**
* Returns the meta object for enum '{@link org.eclipse.skills.model.LevelNames <em>Level Names</em>}'.
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
@@ -3262,28 +3394,12 @@
EAttribute SKILL__EXPERIENCE = eINSTANCE.getSkill_Experience();
/**
- * The meta object literal for the '<em><b>Xp Level Factor</b></em>' attribute feature.
+ * The meta object literal for the '<em><b>Progression</b></em>' containment reference feature.
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
* @generated
*/
- EAttribute SKILL__XP_LEVEL_FACTOR = eINSTANCE.getSkill_XpLevelFactor();
-
- /**
- * The meta object literal for the '<em><b>Level</b></em>' attribute feature.
- * <!-- begin-user-doc -->
- * <!-- end-user-doc -->
- * @generated
- */
- EAttribute SKILL__LEVEL = eINSTANCE.getSkill_Level();
-
- /**
- * The meta object literal for the '<em><b>Title</b></em>' attribute feature.
- * <!-- begin-user-doc -->
- * <!-- end-user-doc -->
- * @generated
- */
- EAttribute SKILL__TITLE = eINSTANCE.getSkill_Title();
+ EReference SKILL__PROGRESSION = eINSTANCE.getSkill_Progression();
/**
* The meta object literal for the '<em><b>Add Experience</b></em>' operation.
@@ -3764,6 +3880,58 @@
EReference USER_DEPENDENCY__USER = eINSTANCE.getUserDependency_User();
/**
+ * The meta object literal for the '{@link org.eclipse.skills.model.ILevelProgression <em>Level Progression</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.skills.model.ILevelProgression
+ * @see org.eclipse.skills.model.impl.MSkillsPackage#getLevelProgression()
+ * @generated
+ */
+ EClass LEVEL_PROGRESSION = eINSTANCE.getLevelProgression();
+
+ /**
+ * The meta object literal for the '<em><b>Get Minimum Xp For Level</b></em>' operation.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EOperation LEVEL_PROGRESSION___GET_MINIMUM_XP_FOR_LEVEL__INT = eINSTANCE.getLevelProgression__GetMinimumXpForLevel__int();
+
+ /**
+ * The meta object literal for the '<em><b>Get Level</b></em>' operation.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EOperation LEVEL_PROGRESSION___GET_LEVEL__INT = eINSTANCE.getLevelProgression__GetLevel__int();
+
+ /**
+ * The meta object literal for the '{@link org.eclipse.skills.model.impl.MFactorProgression <em>Factor Progression</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.skills.model.impl.MFactorProgression
+ * @see org.eclipse.skills.model.impl.MSkillsPackage#getFactorProgression()
+ * @generated
+ */
+ EClass FACTOR_PROGRESSION = eINSTANCE.getFactorProgression();
+
+ /**
+ * The meta object literal for the '<em><b>Base Xp Needed</b></em>' attribute feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EAttribute FACTOR_PROGRESSION__BASE_XP_NEEDED = eINSTANCE.getFactorProgression_BaseXpNeeded();
+
+ /**
+ * The meta object literal for the '<em><b>Xp Factor</b></em>' attribute feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EAttribute FACTOR_PROGRESSION__XP_FACTOR = eINSTANCE.getFactorProgression_XpFactor();
+
+ /**
* The meta object literal for the '{@link org.eclipse.skills.model.LevelNames <em>Level Names</em>}' enum.
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
diff --git a/plugins/org.eclipse.skills/src-gen/org/eclipse/skills/model/ITask.java b/plugins/org.eclipse.skills/src-gen/org/eclipse/skills/model/ITask.java
index 0e1bd10..a6091db 100644
--- a/plugins/org.eclipse.skills/src-gen/org/eclipse/skills/model/ITask.java
+++ b/plugins/org.eclipse.skills/src-gen/org/eclipse/skills/model/ITask.java
@@ -208,7 +208,7 @@
* <!-- end-user-doc -->
* @return the value of the '<em>Id</em>' attribute.
* @see org.eclipse.skills.model.ISkillsPackage#getTask_Id()
- * @model id="true" required="true" transient="true" changeable="false" volatile="true" derived="true"
+ * @model required="true" transient="true" changeable="false" volatile="true" derived="true"
* @generated
*/
String getId();
diff --git a/plugins/org.eclipse.skills/src-gen/org/eclipse/skills/model/impl/MFactorProgression.java b/plugins/org.eclipse.skills/src-gen/org/eclipse/skills/model/impl/MFactorProgression.java
new file mode 100644
index 0000000..6f3f25e
--- /dev/null
+++ b/plugins/org.eclipse.skills/src-gen/org/eclipse/skills/model/impl/MFactorProgression.java
@@ -0,0 +1,245 @@
+/**
+ */
+package org.eclipse.skills.model.impl;
+
+import java.lang.reflect.InvocationTargetException;
+
+import org.eclipse.emf.common.notify.Notification;
+import org.eclipse.emf.common.util.EList;
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.impl.ENotificationImpl;
+import org.eclipse.emf.ecore.impl.MinimalEObjectImpl;
+import org.eclipse.skills.model.IFactorProgression;
+import org.eclipse.skills.model.ISkillsPackage;
+
+/**
+ * <!-- begin-user-doc --> An implementation of the model object '<em><b>Factor Progression</b></em>'. <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * </p>
+ * <ul>
+ * <li>{@link org.eclipse.skills.model.impl.MFactorProgression#getBaseXpNeeded <em>Base Xp Needed</em>}</li>
+ * <li>{@link org.eclipse.skills.model.impl.MFactorProgression#getXpFactor <em>Xp Factor</em>}</li>
+ * </ul>
+ *
+ * @generated
+ */
+public class MFactorProgression extends MinimalEObjectImpl.Container implements IFactorProgression {
+ /**
+ * The default value of the '{@link #getBaseXpNeeded() <em>Base Xp Needed</em>}' attribute.
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ * @see #getBaseXpNeeded()
+ * @generated
+ * @ordered
+ */
+ protected static final int BASE_XP_NEEDED_EDEFAULT = 100;
+
+ /**
+ * The cached value of the '{@link #getBaseXpNeeded() <em>Base Xp Needed</em>}' attribute.
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ * @see #getBaseXpNeeded()
+ * @generated
+ * @ordered
+ */
+ protected int baseXpNeeded = BASE_XP_NEEDED_EDEFAULT;
+
+ /**
+ * The default value of the '{@link #getXpFactor() <em>Xp Factor</em>}' attribute.
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ * @see #getXpFactor()
+ * @generated
+ * @ordered
+ */
+ protected static final double XP_FACTOR_EDEFAULT = 2.4;
+
+ /**
+ * The cached value of the '{@link #getXpFactor() <em>Xp Factor</em>}' attribute.
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ * @see #getXpFactor()
+ * @generated
+ * @ordered
+ */
+ protected double xpFactor = XP_FACTOR_EDEFAULT;
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ * @generated
+ */
+ protected MFactorProgression() {
+ super();
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected EClass eStaticClass() {
+ return ISkillsPackage.Literals.FACTOR_PROGRESSION;
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public int getBaseXpNeeded() {
+ return baseXpNeeded;
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void setBaseXpNeeded(int newBaseXpNeeded) {
+ int oldBaseXpNeeded = baseXpNeeded;
+ baseXpNeeded = newBaseXpNeeded;
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, ISkillsPackage.FACTOR_PROGRESSION__BASE_XP_NEEDED, oldBaseXpNeeded, baseXpNeeded));
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public double getXpFactor() {
+ return xpFactor;
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void setXpFactor(double newXpFactor) {
+ double oldXpFactor = xpFactor;
+ xpFactor = newXpFactor;
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, ISkillsPackage.FACTOR_PROGRESSION__XP_FACTOR, oldXpFactor, xpFactor));
+ }
+
+ /**
+ * @generated NOT
+ */
+ @Override
+ public int getMinimumXpForLevel(int level) {
+ if (level > 2)
+ return (int) (getMinimumXpForLevel(level - 1) * getXpFactor());
+
+ if (level == 2)
+ return getBaseXpNeeded();
+
+ return 0;
+ }
+
+ /**
+ * @generated NOT
+ */
+ @Override
+ public int getLevel(int xp) {
+ int candidate = 1;
+ while (getMinimumXpForLevel(candidate) <= xp)
+ candidate++;
+
+ return candidate - 1;
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public Object eGet(int featureID, boolean resolve, boolean coreType) {
+ switch (featureID) {
+ case ISkillsPackage.FACTOR_PROGRESSION__BASE_XP_NEEDED:
+ return getBaseXpNeeded();
+ case ISkillsPackage.FACTOR_PROGRESSION__XP_FACTOR:
+ return getXpFactor();
+ }
+ return super.eGet(featureID, resolve, coreType);
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void eSet(int featureID, Object newValue) {
+ switch (featureID) {
+ case ISkillsPackage.FACTOR_PROGRESSION__BASE_XP_NEEDED:
+ setBaseXpNeeded((Integer)newValue);
+ return;
+ case ISkillsPackage.FACTOR_PROGRESSION__XP_FACTOR:
+ setXpFactor((Double)newValue);
+ return;
+ }
+ super.eSet(featureID, newValue);
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void eUnset(int featureID) {
+ switch (featureID) {
+ case ISkillsPackage.FACTOR_PROGRESSION__BASE_XP_NEEDED:
+ setBaseXpNeeded(BASE_XP_NEEDED_EDEFAULT);
+ return;
+ case ISkillsPackage.FACTOR_PROGRESSION__XP_FACTOR:
+ setXpFactor(XP_FACTOR_EDEFAULT);
+ return;
+ }
+ super.eUnset(featureID);
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public boolean eIsSet(int featureID) {
+ switch (featureID) {
+ case ISkillsPackage.FACTOR_PROGRESSION__BASE_XP_NEEDED:
+ return baseXpNeeded != BASE_XP_NEEDED_EDEFAULT;
+ case ISkillsPackage.FACTOR_PROGRESSION__XP_FACTOR:
+ return xpFactor != XP_FACTOR_EDEFAULT;
+ }
+ return super.eIsSet(featureID);
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public Object eInvoke(int operationID, EList<?> arguments) throws InvocationTargetException {
+ switch (operationID) {
+ case ISkillsPackage.FACTOR_PROGRESSION___GET_MINIMUM_XP_FOR_LEVEL__INT:
+ return getMinimumXpForLevel((Integer)arguments.get(0));
+ case ISkillsPackage.FACTOR_PROGRESSION___GET_LEVEL__INT:
+ return getLevel((Integer)arguments.get(0));
+ }
+ return super.eInvoke(operationID, arguments);
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public String toString() {
+ if (eIsProxy()) return super.toString();
+
+ StringBuilder result = new StringBuilder(super.toString());
+ result.append(" (baseXpNeeded: ");
+ result.append(baseXpNeeded);
+ result.append(", xpFactor: ");
+ result.append(xpFactor);
+ result.append(')');
+ return result.toString();
+ }
+
+} // MFactorProgression
diff --git a/plugins/org.eclipse.skills/src-gen/org/eclipse/skills/model/impl/MSkill.java b/plugins/org.eclipse.skills/src-gen/org/eclipse/skills/model/impl/MSkill.java
index 8903ee5..0137051 100644
--- a/plugins/org.eclipse.skills/src-gen/org/eclipse/skills/model/impl/MSkill.java
+++ b/plugins/org.eclipse.skills/src-gen/org/eclipse/skills/model/impl/MSkill.java
@@ -12,9 +12,10 @@
import org.eclipse.emf.ecore.impl.ENotificationImpl;
import org.eclipse.emf.ecore.impl.MinimalEObjectImpl;
import org.eclipse.skills.model.IDescription;
+import org.eclipse.skills.model.ILevelProgression;
import org.eclipse.skills.model.ISkill;
+import org.eclipse.skills.model.ISkillsFactory;
import org.eclipse.skills.model.ISkillsPackage;
-import org.eclipse.skills.model.LevelNames;
/**
* <!-- begin-user-doc --> An implementation of the model object '<em><b>Skill</b></em>'. <!-- end-user-doc -->
@@ -25,9 +26,7 @@
* <li>{@link org.eclipse.skills.model.impl.MSkill#getName <em>Name</em>}</li>
* <li>{@link org.eclipse.skills.model.impl.MSkill#getDescription <em>Description</em>}</li>
* <li>{@link org.eclipse.skills.model.impl.MSkill#getExperience <em>Experience</em>}</li>
- * <li>{@link org.eclipse.skills.model.impl.MSkill#getXpLevelFactor <em>Xp Level Factor</em>}</li>
- * <li>{@link org.eclipse.skills.model.impl.MSkill#getLevel <em>Level</em>}</li>
- * <li>{@link org.eclipse.skills.model.impl.MSkill#getTitle <em>Title</em>}</li>
+ * <li>{@link org.eclipse.skills.model.impl.MSkill#getProgression <em>Progression</em>}</li>
* </ul>
*
* @generated
@@ -79,40 +78,13 @@
protected int experience = EXPERIENCE_EDEFAULT;
/**
- * The default value of the '{@link #getXpLevelFactor() <em>Xp Level Factor</em>}' attribute.
+ * The cached value of the '{@link #getProgression() <em>Progression</em>}' containment reference.
* <!-- begin-user-doc --> <!-- end-user-doc -->
- * @see #getXpLevelFactor()
+ * @see #getProgression()
* @generated
* @ordered
*/
- protected static final double XP_LEVEL_FACTOR_EDEFAULT = 2.4;
-
- /**
- * The cached value of the '{@link #getXpLevelFactor() <em>Xp Level Factor</em>}' attribute.
- * <!-- begin-user-doc --> <!-- end-user-doc -->
- * @see #getXpLevelFactor()
- * @generated
- * @ordered
- */
- protected double xpLevelFactor = XP_LEVEL_FACTOR_EDEFAULT;
-
- /**
- * The default value of the '{@link #getLevel() <em>Level</em>}' attribute.
- * <!-- begin-user-doc --> <!-- end-user-doc -->
- * @see #getLevel()
- * @generated
- * @ordered
- */
- protected static final int LEVEL_EDEFAULT = 0;
-
- /**
- * The default value of the '{@link #getTitle() <em>Title</em>}' attribute.
- * <!-- begin-user-doc --> <!-- end-user-doc -->
- * @see #getTitle()
- * @generated
- * @ordered
- */
- protected static final LevelNames TITLE_EDEFAULT = LevelNames.APPRENTICE;
+ protected ILevelProgression progression;
/**
* <!-- begin-user-doc --> <!-- end-user-doc -->
@@ -219,9 +191,35 @@
* <!-- begin-user-doc --> <!-- end-user-doc -->
* @generated
*/
+ public ILevelProgression getProgressionGen() {
+ return progression;
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated NOT
+ */
@Override
- public double getXpLevelFactor() {
- return xpLevelFactor;
+ public ILevelProgression getProgression() {
+ if (getProgressionGen() == null)
+ setProgression(ISkillsFactory.eINSTANCE.createFactorProgression());
+
+ return getProgressionGen();
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ * @generated
+ */
+ public NotificationChain basicSetProgression(ILevelProgression newProgression, NotificationChain msgs) {
+ ILevelProgression oldProgression = progression;
+ progression = newProgression;
+ if (eNotificationRequired()) {
+ ENotificationImpl notification = new ENotificationImpl(this, Notification.SET, ISkillsPackage.SKILL__PROGRESSION, oldProgression, newProgression);
+ if (msgs == null) msgs = notification; else msgs.add(notification);
+ }
+ return msgs;
}
/**
@@ -229,44 +227,18 @@
* @generated
*/
@Override
- public void setXpLevelFactor(double newXpLevelFactor) {
- double oldXpLevelFactor = xpLevelFactor;
- xpLevelFactor = newXpLevelFactor;
- if (eNotificationRequired())
- eNotify(new ENotificationImpl(this, Notification.SET, ISkillsPackage.SKILL__XP_LEVEL_FACTOR, oldXpLevelFactor, xpLevelFactor));
- }
-
- /**
- * <!-- begin-user-doc --> <!-- end-user-doc -->
- *
- * @generated NOT
- */
- @Override
- public int getLevel() {
- double xp = getExperience();
-
- int level = 1;
- while (xp >= 100) {
- xp /= getXpLevelFactor();
- level++;
+ public void setProgression(ILevelProgression newProgression) {
+ if (newProgression != progression) {
+ NotificationChain msgs = null;
+ if (progression != null)
+ msgs = ((InternalEObject)progression).eInverseRemove(this, EOPPOSITE_FEATURE_BASE - ISkillsPackage.SKILL__PROGRESSION, null, msgs);
+ if (newProgression != null)
+ msgs = ((InternalEObject)newProgression).eInverseAdd(this, EOPPOSITE_FEATURE_BASE - ISkillsPackage.SKILL__PROGRESSION, null, msgs);
+ msgs = basicSetProgression(newProgression, msgs);
+ if (msgs != null) msgs.dispatch();
}
-
- return level;
- }
-
- /**
- * <!-- begin-user-doc --> <!-- end-user-doc -->
- *
- * @generated NOT
- */
- @Override
- public LevelNames getTitle() {
- LevelNames title = LevelNames.get(getLevel());
-
- if (title == null)
- title = LevelNames.VALUES.get(LevelNames.VALUES.size() - 1);
-
- return title;
+ else if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, ISkillsPackage.SKILL__PROGRESSION, newProgression, newProgression));
}
/**
@@ -288,6 +260,8 @@
switch (featureID) {
case ISkillsPackage.SKILL__DESCRIPTION:
return basicSetDescription(null, msgs);
+ case ISkillsPackage.SKILL__PROGRESSION:
+ return basicSetProgression(null, msgs);
}
return super.eInverseRemove(otherEnd, featureID, msgs);
}
@@ -305,12 +279,8 @@
return getDescription();
case ISkillsPackage.SKILL__EXPERIENCE:
return getExperience();
- case ISkillsPackage.SKILL__XP_LEVEL_FACTOR:
- return getXpLevelFactor();
- case ISkillsPackage.SKILL__LEVEL:
- return getLevel();
- case ISkillsPackage.SKILL__TITLE:
- return getTitle();
+ case ISkillsPackage.SKILL__PROGRESSION:
+ return getProgression();
}
return super.eGet(featureID, resolve, coreType);
}
@@ -331,8 +301,8 @@
case ISkillsPackage.SKILL__EXPERIENCE:
setExperience((Integer)newValue);
return;
- case ISkillsPackage.SKILL__XP_LEVEL_FACTOR:
- setXpLevelFactor((Double)newValue);
+ case ISkillsPackage.SKILL__PROGRESSION:
+ setProgression((ILevelProgression)newValue);
return;
}
super.eSet(featureID, newValue);
@@ -354,8 +324,8 @@
case ISkillsPackage.SKILL__EXPERIENCE:
setExperience(EXPERIENCE_EDEFAULT);
return;
- case ISkillsPackage.SKILL__XP_LEVEL_FACTOR:
- setXpLevelFactor(XP_LEVEL_FACTOR_EDEFAULT);
+ case ISkillsPackage.SKILL__PROGRESSION:
+ setProgression((ILevelProgression)null);
return;
}
super.eUnset(featureID);
@@ -374,12 +344,8 @@
return description != null;
case ISkillsPackage.SKILL__EXPERIENCE:
return experience != EXPERIENCE_EDEFAULT;
- case ISkillsPackage.SKILL__XP_LEVEL_FACTOR:
- return xpLevelFactor != XP_LEVEL_FACTOR_EDEFAULT;
- case ISkillsPackage.SKILL__LEVEL:
- return getLevel() != LEVEL_EDEFAULT;
- case ISkillsPackage.SKILL__TITLE:
- return getTitle() != TITLE_EDEFAULT;
+ case ISkillsPackage.SKILL__PROGRESSION:
+ return progression != null;
}
return super.eIsSet(featureID);
}
@@ -411,8 +377,6 @@
result.append(name);
result.append(", experience: ");
result.append(experience);
- result.append(", xpLevelFactor: ");
- result.append(xpLevelFactor);
result.append(')');
return result.toString();
}
diff --git a/plugins/org.eclipse.skills/src-gen/org/eclipse/skills/model/impl/MSkillsFactory.java b/plugins/org.eclipse.skills/src-gen/org/eclipse/skills/model/impl/MSkillsFactory.java
index f481578..72dde7a 100644
--- a/plugins/org.eclipse.skills/src-gen/org/eclipse/skills/model/impl/MSkillsFactory.java
+++ b/plugins/org.eclipse.skills/src-gen/org/eclipse/skills/model/impl/MSkillsFactory.java
@@ -82,6 +82,7 @@
case ISkillsPackage.TASK_DEPENDENCY: return createTaskDependency();
case ISkillsPackage.SKILL_DEPENDENCY: return createSkillDependency();
case ISkillsPackage.HINT: return createHint();
+ case ISkillsPackage.FACTOR_PROGRESSION: return createFactorProgression();
default:
throw new IllegalArgumentException("The class '" + eClass.getName() + "' is not a valid classifier");
}
@@ -358,6 +359,17 @@
* <!-- end-user-doc -->
* @generated
*/
+ @Override
+ public IFactorProgression createFactorProgression() {
+ MFactorProgression factorProgression = new MFactorProgression();
+ return factorProgression;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
public LevelNames createLevelNamesFromString(EDataType eDataType, String initialValue) {
LevelNames result = LevelNames.get(initialValue);
if (result == null) throw new IllegalArgumentException("The value '" + initialValue + "' is not a valid enumerator of '" + eDataType.getName() + "'");
diff --git a/plugins/org.eclipse.skills/src-gen/org/eclipse/skills/model/impl/MSkillsPackage.java b/plugins/org.eclipse.skills/src-gen/org/eclipse/skills/model/impl/MSkillsPackage.java
index 26c4f18..9408b16 100644
--- a/plugins/org.eclipse.skills/src-gen/org/eclipse/skills/model/impl/MSkillsPackage.java
+++ b/plugins/org.eclipse.skills/src-gen/org/eclipse/skills/model/impl/MSkillsPackage.java
@@ -26,7 +26,9 @@
import org.eclipse.skills.model.IDependencyWithAttributes;
import org.eclipse.skills.model.IDescription;
import org.eclipse.skills.model.IExperienceReward;
+import org.eclipse.skills.model.IFactorProgression;
import org.eclipse.skills.model.IHint;
+import org.eclipse.skills.model.ILevelProgression;
import org.eclipse.skills.model.INotDependency;
import org.eclipse.skills.model.IOrDependency;
import org.eclipse.skills.model.IQuest;
@@ -233,6 +235,20 @@
* <!-- end-user-doc -->
* @generated
*/
+ private EClass levelProgressionEClass = null;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private EClass factorProgressionEClass = null;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
private EEnum levelNamesEEnum = null;
/**
@@ -680,28 +696,8 @@
* @generated
*/
@Override
- public EAttribute getSkill_XpLevelFactor() {
- return (EAttribute)skillEClass.getEStructuralFeatures().get(3);
- }
-
- /**
- * <!-- begin-user-doc -->
- * <!-- end-user-doc -->
- * @generated
- */
- @Override
- public EAttribute getSkill_Level() {
- return (EAttribute)skillEClass.getEStructuralFeatures().get(4);
- }
-
- /**
- * <!-- begin-user-doc -->
- * <!-- end-user-doc -->
- * @generated
- */
- @Override
- public EAttribute getSkill_Title() {
- return (EAttribute)skillEClass.getEStructuralFeatures().get(5);
+ public EReference getSkill_Progression() {
+ return (EReference)skillEClass.getEStructuralFeatures().get(3);
}
/**
@@ -1260,6 +1256,66 @@
* @generated
*/
@Override
+ public EClass getLevelProgression() {
+ return levelProgressionEClass;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public EOperation getLevelProgression__GetMinimumXpForLevel__int() {
+ return levelProgressionEClass.getEOperations().get(0);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public EOperation getLevelProgression__GetLevel__int() {
+ return levelProgressionEClass.getEOperations().get(1);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public EClass getFactorProgression() {
+ return factorProgressionEClass;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public EAttribute getFactorProgression_BaseXpNeeded() {
+ return (EAttribute)factorProgressionEClass.getEStructuralFeatures().get(0);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public EAttribute getFactorProgression_XpFactor() {
+ return (EAttribute)factorProgressionEClass.getEStructuralFeatures().get(1);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
public EEnum getLevelNames() {
return levelNamesEEnum;
}
@@ -1373,9 +1429,7 @@
createEAttribute(skillEClass, SKILL__NAME);
createEReference(skillEClass, SKILL__DESCRIPTION);
createEAttribute(skillEClass, SKILL__EXPERIENCE);
- createEAttribute(skillEClass, SKILL__XP_LEVEL_FACTOR);
- createEAttribute(skillEClass, SKILL__LEVEL);
- createEAttribute(skillEClass, SKILL__TITLE);
+ createEReference(skillEClass, SKILL__PROGRESSION);
createEOperation(skillEClass, SKILL___ADD_EXPERIENCE__INT);
userTaskEClass = createEClass(USER_TASK);
@@ -1451,6 +1505,14 @@
userDependencyEClass = createEClass(USER_DEPENDENCY);
createEReference(userDependencyEClass, USER_DEPENDENCY__USER);
+ levelProgressionEClass = createEClass(LEVEL_PROGRESSION);
+ createEOperation(levelProgressionEClass, LEVEL_PROGRESSION___GET_MINIMUM_XP_FOR_LEVEL__INT);
+ createEOperation(levelProgressionEClass, LEVEL_PROGRESSION___GET_LEVEL__INT);
+
+ factorProgressionEClass = createEClass(FACTOR_PROGRESSION);
+ createEAttribute(factorProgressionEClass, FACTOR_PROGRESSION__BASE_XP_NEEDED);
+ createEAttribute(factorProgressionEClass, FACTOR_PROGRESSION__XP_FACTOR);
+
// Create enums
levelNamesEEnum = createEEnum(LEVEL_NAMES);
@@ -1505,6 +1567,7 @@
skillDependencyEClass.getESuperTypes().add(this.getUserDependency());
hintEClass.getESuperTypes().add(this.getDescription());
userDependencyEClass.getESuperTypes().add(this.getDependency());
+ factorProgressionEClass.getESuperTypes().add(this.getLevelProgression());
// Initialize classes, features, and operations; add parameters
initEClass(taskEClass, ITask.class, "Task", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
@@ -1517,7 +1580,7 @@
initEReference(getTask_Hints(), this.getHint(), null, "hints", null, 0, -1, ITask.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
initEAttribute(getTask_AutoActivation(), ecorePackage.getEBoolean(), "autoActivation", "true", 0, 1, ITask.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
initEAttribute(getTask_SkillService(), this.getISkillService(), "skillService", null, 0, 1, ITask.class, IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
- initEAttribute(getTask_Id(), ecorePackage.getEString(), "id", null, 1, 1, ITask.class, IS_TRANSIENT, IS_VOLATILE, !IS_CHANGEABLE, !IS_UNSETTABLE, IS_ID, IS_UNIQUE, IS_DERIVED, IS_ORDERED);
+ initEAttribute(getTask_Id(), ecorePackage.getEString(), "id", null, 1, 1, ITask.class, IS_TRANSIENT, IS_VOLATILE, !IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, IS_DERIVED, IS_ORDERED);
initEOperation(getTask__IsAvailable(), ecorePackage.getEBoolean(), "isAvailable", 0, 1, IS_UNIQUE, IS_ORDERED);
@@ -1556,12 +1619,10 @@
initEOperation(getUser__GetAvatar(), this.getImageData(), "getAvatar", 0, 1, IS_UNIQUE, IS_ORDERED);
initEClass(skillEClass, ISkill.class, "Skill", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
- initEAttribute(getSkill_Name(), ecorePackage.getEString(), "name", "<unnamed>", 0, 1, ISkill.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+ initEAttribute(getSkill_Name(), ecorePackage.getEString(), "name", "<unnamed>", 1, 1, ISkill.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
initEReference(getSkill_Description(), this.getDescription(), null, "description", null, 1, 1, ISkill.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
initEAttribute(getSkill_Experience(), ecorePackage.getEInt(), "experience", null, 0, 1, ISkill.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
- initEAttribute(getSkill_XpLevelFactor(), ecorePackage.getEDouble(), "xpLevelFactor", "2.4", 0, 1, ISkill.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
- initEAttribute(getSkill_Level(), ecorePackage.getEInt(), "level", null, 0, 1, ISkill.class, IS_TRANSIENT, IS_VOLATILE, !IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, IS_DERIVED, IS_ORDERED);
- initEAttribute(getSkill_Title(), this.getLevelNames(), "title", null, 1, 1, ISkill.class, IS_TRANSIENT, IS_VOLATILE, !IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, IS_DERIVED, IS_ORDERED);
+ initEReference(getSkill_Progression(), this.getLevelProgression(), null, "progression", null, 1, 1, ISkill.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
op = initEOperation(getSkill__AddExperience__int(), null, "addExperience", 0, 1, IS_UNIQUE, IS_ORDERED);
addEParameter(op, ecorePackage.getEInt(), "amount", 0, 1, IS_UNIQUE, IS_ORDERED);
@@ -1649,6 +1710,18 @@
initEClass(userDependencyEClass, IUserDependency.class, "UserDependency", IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
initEReference(getUserDependency_User(), this.getUser(), null, "user", null, 0, 1, IUserDependency.class, IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, !IS_UNIQUE, !IS_DERIVED, !IS_ORDERED);
+ initEClass(levelProgressionEClass, ILevelProgression.class, "LevelProgression", IS_ABSTRACT, IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+
+ op = initEOperation(getLevelProgression__GetMinimumXpForLevel__int(), ecorePackage.getEInt(), "getMinimumXpForLevel", 1, 1, IS_UNIQUE, IS_ORDERED);
+ addEParameter(op, ecorePackage.getEInt(), "level", 0, 1, IS_UNIQUE, IS_ORDERED);
+
+ op = initEOperation(getLevelProgression__GetLevel__int(), ecorePackage.getEInt(), "getLevel", 1, 1, IS_UNIQUE, IS_ORDERED);
+ addEParameter(op, ecorePackage.getEInt(), "xp", 0, 1, IS_UNIQUE, IS_ORDERED);
+
+ initEClass(factorProgressionEClass, IFactorProgression.class, "FactorProgression", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+ initEAttribute(getFactorProgression_BaseXpNeeded(), ecorePackage.getEInt(), "baseXpNeeded", "100", 1, 1, IFactorProgression.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+ initEAttribute(getFactorProgression_XpFactor(), ecorePackage.getEDouble(), "xpFactor", "2.4", 1, 1, IFactorProgression.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+
// Initialize enums and add enum literals
initEEnum(levelNamesEEnum, LevelNames.class, "LevelNames");
addEEnumLiteral(levelNamesEEnum, LevelNames.APPRENTICE);
diff --git a/plugins/org.eclipse.skills/src-gen/org/eclipse/skills/model/impl/MTaskDependency.java b/plugins/org.eclipse.skills/src-gen/org/eclipse/skills/model/impl/MTaskDependency.java
index c573401..107e041 100644
--- a/plugins/org.eclipse.skills/src-gen/org/eclipse/skills/model/impl/MTaskDependency.java
+++ b/plugins/org.eclipse.skills/src-gen/org/eclipse/skills/model/impl/MTaskDependency.java
@@ -2,6 +2,8 @@
*/
package org.eclipse.skills.model.impl;
+import java.util.Objects;
+
import org.eclipse.emf.common.notify.Notification;
import org.eclipse.emf.common.notify.impl.AdapterImpl;
import org.eclipse.emf.ecore.EClass;
@@ -253,8 +255,7 @@
*/
private IUserTask getUsertask() {
for (final IUserTask usertask : getUser().getUsertasks()) {
-
- if (getTask().equals(usertask.getTask()))
+ if (Objects.equals(getTask(), usertask.getTask()))
return usertask;
}
diff --git a/plugins/org.eclipse.skills/src-gen/org/eclipse/skills/model/util/SkillsAdapterFactory.java b/plugins/org.eclipse.skills/src-gen/org/eclipse/skills/model/util/SkillsAdapterFactory.java
index 4cf06c5..dec2cec 100644
--- a/plugins/org.eclipse.skills/src-gen/org/eclipse/skills/model/util/SkillsAdapterFactory.java
+++ b/plugins/org.eclipse.skills/src-gen/org/eclipse/skills/model/util/SkillsAdapterFactory.java
@@ -168,6 +168,14 @@
return createUserDependencyAdapter();
}
@Override
+ public Adapter caseLevelProgression(ILevelProgression object) {
+ return createLevelProgressionAdapter();
+ }
+ @Override
+ public Adapter caseFactorProgression(IFactorProgression object) {
+ return createFactorProgressionAdapter();
+ }
+ @Override
public Adapter defaultCase(EObject object) {
return createEObjectAdapter();
}
@@ -538,6 +546,34 @@
}
/**
+ * Creates a new adapter for an object of class '{@link org.eclipse.skills.model.ILevelProgression <em>Level Progression</em>}'.
+ * <!-- begin-user-doc -->
+ * This default implementation returns null so that we can easily ignore cases;
+ * it's useful to ignore a case when inheritance will catch all the cases anyway.
+ * <!-- end-user-doc -->
+ * @return the new adapter.
+ * @see org.eclipse.skills.model.ILevelProgression
+ * @generated
+ */
+ public Adapter createLevelProgressionAdapter() {
+ return null;
+ }
+
+ /**
+ * Creates a new adapter for an object of class '{@link org.eclipse.skills.model.IFactorProgression <em>Factor Progression</em>}'.
+ * <!-- begin-user-doc -->
+ * This default implementation returns null so that we can easily ignore cases;
+ * it's useful to ignore a case when inheritance will catch all the cases anyway.
+ * <!-- end-user-doc -->
+ * @return the new adapter.
+ * @see org.eclipse.skills.model.IFactorProgression
+ * @generated
+ */
+ public Adapter createFactorProgressionAdapter() {
+ return null;
+ }
+
+ /**
* Creates a new adapter for the default case.
* <!-- begin-user-doc -->
* This default implementation returns null.
diff --git a/plugins/org.eclipse.skills/src-gen/org/eclipse/skills/model/util/SkillsSwitch.java b/plugins/org.eclipse.skills/src-gen/org/eclipse/skills/model/util/SkillsSwitch.java
index 6e7e9c6..6d6737c 100644
--- a/plugins/org.eclipse.skills/src-gen/org/eclipse/skills/model/util/SkillsSwitch.java
+++ b/plugins/org.eclipse.skills/src-gen/org/eclipse/skills/model/util/SkillsSwitch.java
@@ -242,6 +242,19 @@
if (result == null) result = defaultCase(theEObject);
return result;
}
+ case ISkillsPackage.LEVEL_PROGRESSION: {
+ ILevelProgression levelProgression = (ILevelProgression)theEObject;
+ T result = caseLevelProgression(levelProgression);
+ if (result == null) result = defaultCase(theEObject);
+ return result;
+ }
+ case ISkillsPackage.FACTOR_PROGRESSION: {
+ IFactorProgression factorProgression = (IFactorProgression)theEObject;
+ T result = caseFactorProgression(factorProgression);
+ if (result == null) result = caseLevelProgression(factorProgression);
+ if (result == null) result = defaultCase(theEObject);
+ return result;
+ }
default: return defaultCase(theEObject);
}
}
@@ -622,6 +635,36 @@
}
/**
+ * Returns the result of interpreting the object as an instance of '<em>Level Progression</em>'.
+ * <!-- begin-user-doc -->
+ * This implementation returns null;
+ * returning a non-null result will terminate the switch.
+ * <!-- end-user-doc -->
+ * @param object the target of the switch.
+ * @return the result of interpreting the object as an instance of '<em>Level Progression</em>'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+ * @generated
+ */
+ public T caseLevelProgression(ILevelProgression object) {
+ return null;
+ }
+
+ /**
+ * Returns the result of interpreting the object as an instance of '<em>Factor Progression</em>'.
+ * <!-- begin-user-doc -->
+ * This implementation returns null;
+ * returning a non-null result will terminate the switch.
+ * <!-- end-user-doc -->
+ * @param object the target of the switch.
+ * @return the result of interpreting the object as an instance of '<em>Factor Progression</em>'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+ * @generated
+ */
+ public T caseFactorProgression(IFactorProgression object) {
+ return null;
+ }
+
+ /**
* Returns the result of interpreting the object as an instance of '<em>EObject</em>'.
* <!-- begin-user-doc -->
* This implementation returns null;
diff --git a/plugins/org.eclipse.skills/src/org/eclipse/skills/service/SkillService.java b/plugins/org.eclipse.skills/src/org/eclipse/skills/service/SkillService.java
index e9a5751..3f82dc6 100644
--- a/plugins/org.eclipse.skills/src/org/eclipse/skills/service/SkillService.java
+++ b/plugins/org.eclipse.skills/src/org/eclipse/skills/service/SkillService.java
@@ -109,35 +109,6 @@
return Activator.getDefault().getPreferenceStore().getBoolean(IPreferenceConstants.ACTIVATE_SKILLS);
}
- private class InitializerJob extends Job {
-
- public InitializerJob() {
- super("Initialize Skills System");
- }
-
- @Override
- protected IStatus run(IProgressMonitor monitor) {
- if (isServiceEnabledByPreferences()) {
-
- loadUser();
-
- registerForEvents();
-
- startUserTasks();
- activateOpenTasks();
-
- } else {
-
- stopUserTasks();
- deactivateOpenTasks();
-
- unregisterFromEvents();
- }
-
- return Status.OK_STATUS;
- }
- }
-
private void initializeService() {
new InitializerJob().schedule();
}
@@ -365,4 +336,33 @@
return tasks;
}
+
+ private class InitializerJob extends Job {
+
+ public InitializerJob() {
+ super("Initialize Skills System");
+ }
+
+ @Override
+ protected IStatus run(IProgressMonitor monitor) {
+ if (isServiceEnabledByPreferences()) {
+
+ getUser();
+
+ registerForEvents();
+
+ startUserTasks();
+ activateOpenTasks();
+
+ } else {
+
+ stopUserTasks();
+ deactivateOpenTasks();
+
+ unregisterFromEvents();
+ }
+
+ return Status.OK_STATUS;
+ }
+ }
}
diff --git a/plugins/org.eclipse.skills/src/org/eclipse/skills/ui/status/CustomDrawProgressBar.java b/plugins/org.eclipse.skills/src/org/eclipse/skills/ui/status/CustomDrawProgressBar.java
new file mode 100644
index 0000000..5240381
--- /dev/null
+++ b/plugins/org.eclipse.skills/src/org/eclipse/skills/ui/status/CustomDrawProgressBar.java
@@ -0,0 +1,109 @@
+/*******************************************************************************
+ * Copyright (c) 2020 Christian Pontesegger and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v2.0
+ * which accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ * Contributors:
+ * Christian Pontesegger - initial API and implementation
+ *******************************************************************************/
+
+package org.eclipse.skills.ui.status;
+
+import org.eclipse.swt.SWT;
+import org.eclipse.swt.graphics.GC;
+import org.eclipse.swt.graphics.Point;
+import org.eclipse.swt.graphics.Rectangle;
+import org.eclipse.swt.widgets.Canvas;
+import org.eclipse.swt.widgets.Composite;
+import org.eclipse.ui.internal.TrimUtil;
+
+/**
+ * The Heap Status control, which shows the heap usage statistics in the window trim.
+ *
+ * @since 3.1
+ */
+public class CustomDrawProgressBar extends Canvas {
+
+ private static final int MIN_WIDTH = 150;
+ private String fStatusText = null;
+ private int fMinimum = 0;
+ private int fMaximum = 100;
+ private int fSelection = 0;
+
+ /**
+ * Creates a new heap status control with the given parent, and using the given preference store to obtain settings such as the refresh interval.
+ *
+ * @param parent
+ * the parent composite
+ * @param prefStore
+ * the preference store
+ */
+ public CustomDrawProgressBar(Composite parent) {
+ super(parent, SWT.NONE);
+
+ addPaintListener(e -> {
+ final GC gc = e.gc;
+ final Rectangle area = getClientArea();
+
+ gc.setBackground(getBackground());
+ gc.setForeground(getBackground());
+ gc.fillRectangle(area);
+
+ final int fillWidth = (int) (getFillPercentage() * area.width);
+ gc.setBackground(getForeground());
+ gc.fillRectangle(area.x, area.y, fillWidth, area.height);
+
+ final String statusText = getStatusText();
+ if (statusText != null) {
+ final Point textSize = gc.textExtent(statusText);
+ final int sx = ((area.width - textSize.x) / 2) + area.x + 1;
+ final int sy = ((area.height - textSize.y) / 2) + area.y + 1;
+ gc.setForeground(getDisplay().getSystemColor(SWT.COLOR_BLACK));
+ gc.drawString(statusText, sx, sy, true);
+ }
+ });
+ }
+
+ private double getFillPercentage() {
+ return ((double) (fSelection - fMinimum) / (fMaximum - fMinimum));
+ }
+
+ @Override
+ public Point computeSize(int wHint, int hHint, boolean changed) {
+ final String statusText = getStatusText();
+ final GC gc = new GC(this);
+ final Point p = gc.textExtent((statusText != null) ? statusText : "Lev");
+ int height = p.y + 4;
+ height = Math.max(TrimUtil.TRIM_DEFAULT_HEIGHT, height);
+ final int width = Math.max(p.x, MIN_WIDTH);
+ gc.dispose();
+
+ return new Point(width, height);
+ }
+
+ public String getStatusText() {
+ return fStatusText;
+ }
+
+ public void setStatusText(String statusText) {
+ fStatusText = statusText;
+ // update();
+ getParent().requestLayout();
+ }
+
+ public void setMinimum(int minimum) {
+ fMinimum = minimum;
+ }
+
+ public void setMaximum(int maximum) {
+ fMaximum = maximum;
+ }
+
+ public void setSelection(int selection) {
+ fSelection = selection;
+ }
+}
\ No newline at end of file
diff --git a/plugins/org.eclipse.skills/src/org/eclipse/skills/ui/status/StatusBarProgressContribution.java b/plugins/org.eclipse.skills/src/org/eclipse/skills/ui/status/StatusBarProgressContribution.java
new file mode 100644
index 0000000..8ab53ba
--- /dev/null
+++ b/plugins/org.eclipse.skills/src/org/eclipse/skills/ui/status/StatusBarProgressContribution.java
@@ -0,0 +1,71 @@
+package org.eclipse.skills.ui.status;
+
+import org.eclipse.emf.common.notify.Notification;
+import org.eclipse.emf.common.notify.impl.AdapterImpl;
+import org.eclipse.skills.model.ISkill;
+import org.eclipse.skills.model.ISkillsPackage;
+import org.eclipse.skills.service.ISkillService;
+import org.eclipse.swt.SWT;
+import org.eclipse.swt.widgets.Composite;
+import org.eclipse.swt.widgets.Control;
+import org.eclipse.swt.widgets.Display;
+import org.eclipse.ui.PlatformUI;
+import org.eclipse.ui.menus.WorkbenchWindowControlContribution;
+
+public class StatusBarProgressContribution extends WorkbenchWindowControlContribution {
+
+ public StatusBarProgressContribution() {
+ }
+
+ public StatusBarProgressContribution(String id) {
+ super(id);
+ }
+
+ @Override
+ protected Control createControl(Composite parent) {
+ final CustomDrawProgressBar progressBar = new CustomDrawProgressBar(parent);
+
+ progressBar.setMinimum(0);
+ progressBar.setMaximum(100);
+ progressBar.setSelection(0);
+ progressBar.setStatusText("Level 1");
+ progressBar.setToolTipText("");
+ progressBar.setForeground(parent.getDisplay().getSystemColor(SWT.COLOR_YELLOW));
+
+ addModelListener(progressBar);
+
+ return progressBar;
+ }
+
+ private void addModelListener(CustomDrawProgressBar progressBar) {
+ final ISkillService skillService = PlatformUI.getWorkbench().getService(ISkillService.class);
+ skillService.getUser().getExperience().eAdapters().add(new AdapterImpl() {
+ @Override
+ public void notifyChanged(Notification msg) {
+ if (ISkillsPackage.eINSTANCE.getSkill_Experience().equals(msg.getFeature())) {
+ if (msg.getNotifier() instanceof ISkill)
+ updateProgressBar(progressBar, msg);
+ }
+ }
+ });
+ }
+
+ private void updateProgressBar(CustomDrawProgressBar progressBar, Notification msg) {
+ final ISkill skill = (ISkill) msg.getNotifier();
+ final int currentLevel = skill.getProgression().getLevel(skill.getExperience());
+ final int levelStart = skill.getProgression().getMinimumXpForLevel(currentLevel);
+ final int nextLevelStart = skill.getProgression().getMinimumXpForLevel(currentLevel + 1);
+
+ Display.getDefault().asyncExec(() -> {
+ progressBar.setMinimum(levelStart);
+ progressBar.setMaximum(nextLevelStart);
+ progressBar.setSelection(skill.getExperience());
+
+ progressBar.setStatusText(String.format("Level %d", currentLevel));
+ progressBar.setToolTipText(String.format("%d XP to reach next level", (nextLevelStart - skill.getExperience())));
+
+ progressBar.redraw();
+ });
+ }
+
+}
diff --git a/plugins/org.eclipse.skills/src/org/eclipse/skills/ui/views/CharacterSheet.java b/plugins/org.eclipse.skills/src/org/eclipse/skills/ui/views/CharacterSheet.java
index 7ccc8d3..33aaff4 100644
--- a/plugins/org.eclipse.skills/src/org/eclipse/skills/ui/views/CharacterSheet.java
+++ b/plugins/org.eclipse.skills/src/org/eclipse/skills/ui/views/CharacterSheet.java
@@ -62,21 +62,26 @@
final ISkill xp = ISkillsFactory.eINSTANCE.createSkill();
xp.setName("XP");
xp.setExperience(12345);
+ xp.setProgression(ISkillsFactory.eINSTANCE.createFactorProgression());
+
user.setExperience(xp);
final ISkill flexibility = ISkillsFactory.eINSTANCE.createSkill();
flexibility.setName("Flexibility");
flexibility.setExperience(445);
+ flexibility.setProgression(ISkillsFactory.eINSTANCE.createFactorProgression());
user.getSkills().add(flexibility);
final ISkill knowledge = ISkillsFactory.eINSTANCE.createSkill();
knowledge.setName("Knowledge");
knowledge.setExperience(5774);
+ knowledge.setProgression(ISkillsFactory.eINSTANCE.createFactorProgression());
user.getSkills().add(knowledge);
final ISkill scripting = ISkillsFactory.eINSTANCE.createSkill();
scripting.setName("Scripting");
scripting.setExperience(1111);
+ scripting.setProgression(ISkillsFactory.eINSTANCE.createFactorProgression());
user.getSkills().add(scripting);
user.setName("Hendrik");
@@ -212,7 +217,7 @@
final Label lblNewLabel_1 = new Label(fDataComposite, SWT.NONE);
lblNewLabel_1.setLayoutData(new GridData(SWT.RIGHT, SWT.CENTER, false, false, 1, 1));
- lblNewLabel_1.setText("Level " + skill.getLevel());
+ lblNewLabel_1.setText("Level " + skill.getProgression().getLevel(skill.getExperience()));
}
/**
@@ -267,10 +272,10 @@
private List<ISkill> getSkillsSortedByProgress(final IUser user) {
final List<ISkill> skills = new ArrayList<>(user.getSkills());
Collections.sort(skills, (o1, o2) -> {
- if (o1.getLevel() == o2.getLevel())
+ if (o1.getProgression().getLevel(o1.getExperience()) == o2.getProgression().getLevel(o2.getExperience()))
return o2.getExperience() - o1.getExperience();
- return o2.getLevel() - o1.getLevel();
+ return o2.getProgression().getLevel(o2.getExperience()) - o1.getProgression().getLevel(o1.getExperience());
});
return skills;
diff --git a/plugins/org.eclipse.skills/src/org/eclipse/skills/ui/views/journal/DetailHeaderComposite.java b/plugins/org.eclipse.skills/src/org/eclipse/skills/ui/views/journal/DetailHeaderComposite.java
index ce70ac7..a67dd5c 100644
--- a/plugins/org.eclipse.skills/src/org/eclipse/skills/ui/views/journal/DetailHeaderComposite.java
+++ b/plugins/org.eclipse.skills/src/org/eclipse/skills/ui/views/journal/DetailHeaderComposite.java
@@ -16,6 +16,10 @@
import java.text.DateFormat;
import java.util.Date;
+import org.eclipse.core.runtime.IProgressMonitor;
+import org.eclipse.core.runtime.IStatus;
+import org.eclipse.core.runtime.Status;
+import org.eclipse.core.runtime.jobs.Job;
import org.eclipse.jface.viewers.ISelectionProvider;
import org.eclipse.skills.model.IUserTask;
import org.eclipse.skills.service.ISkillService;
@@ -113,7 +117,15 @@
@Override
public void linkActivated(HyperlinkEvent e) {
- PlatformUI.getWorkbench().getService(ISkillService.class).startTask(getUserTask());
+ new Job("Start skill task") {
+
+ @Override
+ protected IStatus run(IProgressMonitor monitor) {
+ PlatformUI.getWorkbench().getService(ISkillService.class).startTask(getUserTask());
+
+ return Status.OK_STATUS;
+ }
+ }.schedule();
}
});
toolkit.paintBordersFor(hprlnkStartTask);