Commit 2bebdc85 authored by Vincent Aravantinos's avatar Vincent Aravantinos
Browse files

Implements mode aspect

refs 2879
parent bd23a097
......@@ -122,6 +122,12 @@
modelElementClass="org.fortiss.af3.mira.model.ParameterDefinition">
</modelElementClass>
</modelElementHandler>
<modelElementHandler
handler="org.fortiss.af3.mira.ui.handler.AspectHandlers$ModeSpecificationHandler">
<modelElementClass
modelElementClass="org.fortiss.af3.mira.model.ModeSpecification">
</modelElementClass>
</modelElementHandler>
<modelElementHandler
handler="org.fortiss.af3.mira.ui.handler.AspectHandlers$SafetyLevelRequirementSpecificationHandler">
<modelElementClass
......@@ -370,6 +376,12 @@
<modelElementClass
modelElementClass="org.fortiss.af3.mira.model.Requirement">
</modelElementClass>
</modelEditorBinding>
<modelEditorBinding
binding="org.fortiss.af3.mira.ui.editorbinding.AspectBindings$ModeBinding">
<modelElementClass
modelElementClass="org.fortiss.af3.mira.model.Requirement">
</modelElementClass>
</modelEditorBinding>
</extension>
<extension
......
/*--------------------------------------------------------------------------+
$Id$
| |
| Copyright 2011 ForTISS GmbH |
| |
| Licensed under the Apache License, Version 2.0 (the "License"); |
| you may not use this file except in compliance with the License. |
| You may obtain a copy of the License at |
| |
| http://www.apache.org/licenses/LICENSE-2.0 |
| |
| Unless required by applicable law or agreed to in writing, software |
| distributed under the License is distributed on an "AS IS" BASIS, |
| WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
| See the License for the specific language governing permissions and |
| limitations under the License. |
+--------------------------------------------------------------------------*/
package org.fortiss.af3.mira.ui.editor;
import static org.fortiss.tooling.kernel.utils.EcoreUtils.pickFirstInstanceOf;
import java.util.ArrayList;
import java.util.List;
import java.util.stream.Collectors;
import java.util.stream.IntStream;
import org.conqat.ide.commons.ui.jface.TreeContentProviderBase;
import org.eclipse.emf.common.util.EList;
import org.eclipse.jface.layout.GridDataFactory;
import org.eclipse.jface.viewers.CellEditor;
import org.eclipse.jface.viewers.ColumnLabelProvider;
import org.eclipse.jface.viewers.EditingSupport;
import org.eclipse.jface.viewers.TreeViewer;
import org.eclipse.jface.viewers.TreeViewerColumn;
import org.eclipse.swt.SWT;
import org.eclipse.swt.events.KeyAdapter;
import org.eclipse.swt.events.KeyEvent;
import org.eclipse.swt.events.SelectionAdapter;
import org.eclipse.swt.events.SelectionEvent;
import org.eclipse.swt.layout.GridLayout;
import org.eclipse.swt.widgets.Button;
import org.eclipse.swt.widgets.Composite;
import org.eclipse.swt.widgets.Tree;
import org.eclipse.swt.widgets.TreeColumn;
import org.fortiss.af3.mira.model.ModeSpecification;
import org.fortiss.af3.mira.model.Requirement;
import org.fortiss.tooling.base.model.element.IModelElementSpecification;
import org.fortiss.tooling.base.ui.editor.TextCellEditorWithTextStyledTextActionHandler;
import org.fortiss.tooling.kernel.extension.data.ITopLevelElement;
import org.fortiss.tooling.kernel.service.IElementCompositorService;
import org.fortiss.tooling.kernel.service.IPersistencyService;
import org.fortiss.tooling.kernel.ui.service.IActionService;
import org.fortiss.tooling.kernel.ui.util.SelectionUtils;
/**
* Editor for the mode definition aspect of a {@link Requirement}.
*
* @author mou
* @author $Author$
* @version $Rev$
* @ConQAT.Rating YELLOW Hash: B1C9D275AEC2E13C3C133FE9DD187FA2
*/
public class ModeDefinitionEditor<T extends Requirement> extends RequirementEditorBase<T> {
/** The edited mode specification. */
private ModeSpecification modeSpec;
/**
* The tree viewer displaying the modes. Only used as a table, but we use trees because it does
* not cost anything.
*/
private TreeViewer viewer;
/** Top level element for the edited object. */
private ITopLevelElement top;
/** {@inheritDoc} */
@Override
protected void createSections() {
super.createSections();
EList<IModelElementSpecification> specs = editedObject.getSpecifications();
modeSpec = pickFirstInstanceOf(ModeSpecification.class, specs);
addSignalSpecificationSection(modeSpec);
Button deleteButton =
toolkit.createButton(form.getForm().getBody(), "Remove aspect", SWT.None);
deleteButton.addSelectionListener(new SelectionAdapter() {
/** {@inheritDoc} */
@Override
public void widgetSelected(SelectionEvent e) {
ITopLevelElement modelContext =
IPersistencyService.getInstance().getTopLevelElementFor(editedObject);
modelContext.runAsCommand(() -> {
IElementCompositorService.getInstance().decompose(modeSpec);
});
}
});
}
/** Section for signal definition. */
private Composite addSignalSpecificationSection(ModeSpecification ms) {
Composite modeSection =
createNewSection("Modes", "This requirement defines the following modes:");
modeSection.setLayout(new GridLayout(1, false));
viewer = new TreeViewer(modeSection, SWT.BORDER | SWT.FULL_SELECTION);
Tree tree = viewer.getTree();
GridDataFactory.swtDefaults().align(SWT.FILL, SWT.FILL).grab(true, true).minSize(300, 300)
.applyTo(tree);
tree.setLinesVisible(true);
tree.setHeaderVisible(true);
TreeViewerColumn modeColumn = new TreeViewerColumn(viewer, SWT.NONE);
TreeColumn trclmnMode = modeColumn.getColumn();
trclmnMode.setWidth(300);
trclmnMode.setText("Mode");
modeColumn.setLabelProvider(new ColumnLabelProvider() {
/** {@inheritDoc} */
@Override
public String getText(Object element) {
if(element instanceof FakeChild) {
return "Click to add a mode";
}
return modeSpec.getModes().get((Integer)element);
}
});
modeColumn.setEditingSupport(createModeSupport(viewer, modeColumn));
viewer.setContentProvider(new TreeContentProviderBase() {
@Override
public Object[] getChildren(Object parentElement) {
if(parentElement instanceof List<?>) {
List<Object> range = new ArrayList<Object>();
range.add(new FakeChild());
range.addAll(IntStream.rangeClosed(0, ms.getModes().size() - 1).boxed()
.collect(Collectors.toList()));
return range.toArray();
}
return new Object[0];
}
});
viewer.getControl().addKeyListener(new ViewerKeyAdapter());
viewer.setInput(modeSpec.getModes());
return modeSection;
}
/** Fake child used to add new elements. */
private static class FakeChild {
// Nothing to implement: just a marker class
}
/** {@link EditingSupport} for the name column. */
private EditingSupport createModeSupport(TreeViewer viewer, TreeViewerColumn modeColumn) {
top = IPersistencyService.getInstance().getTopLevelElementFor(getEditedObject());
return new EditingSupport(modeColumn.getViewer()) {
@Override
protected void setValue(Object element, Object value) {
if(element instanceof Integer) {
String mode = modeSpec.getModes().get((Integer)element);
if(mode.equals(value)) {
return;
}
top.runAsCommand(() -> {
modeSpec.getModes().set((Integer)element, (String)value);
viewer.refresh();
});
} else {
top.runAsCommand(() -> {
modeSpec.getModes().add((String)value);
viewer.refresh();
});
}
}
@Override
protected Object getValue(Object element) {
return element instanceof Integer ? modeSpec.getModes().get((Integer)element) : "";
}
@Override
protected CellEditor getCellEditor(Object element) {
return new TextCellEditorWithTextStyledTextActionHandler(
getTextStyledTextActionHandler(), (Composite)getViewer().getControl());
}
@Override
protected boolean canEdit(Object element) {
return true;
}
};
}
/** Key adapter to deal with copy/paste/delete/... done through the keyboard. */
public class ViewerKeyAdapter extends KeyAdapter {
/** Constructor. */
public ViewerKeyAdapter() {
}
/** {@inheritDoc} */
@Override
public void keyReleased(KeyEvent e) {
if(e.keyCode == SWT.DEL) {
Integer modeIdx =
SelectionUtils.checkAndPickFirst(viewer.getSelection(), Integer.class);
if(modeIdx != null) {
top.runAsCommand(() -> {
modeSpec.getModes().remove(modeIdx.intValue());
});
viewer.refresh();
}
} else if((e.stateMask & SWT.CTRL) != 0 && e.keyCode == 0x7A) {
IActionService.getInstance().runGlobalUndoAction();
} else if((e.stateMask & SWT.CTRL) != 0 && e.keyCode == 0x79) {
IActionService.getInstance().runGlobalRedoAction();
}
}
}
}
......@@ -21,6 +21,7 @@ import static org.fortiss.af3.mira.utils.MiraUtils.SECONDEDITORPRIORITY;
import static org.fortiss.tooling.kernel.utils.EcoreUtils.pickFirstInstanceOf;
import org.eclipse.ui.IEditorPart;
import org.fortiss.af3.mira.model.ModeSpecification;
import org.fortiss.af3.mira.model.ParameterDefinition;
import org.fortiss.af3.mira.model.Requirement;
import org.fortiss.af3.mira.model.SafetyLevelRequirementSpecification;
......@@ -28,8 +29,9 @@ import org.fortiss.af3.mira.model.functional.FormalSpecification;
import org.fortiss.af3.mira.model.functional.SignalContainerSpecification;
import org.fortiss.af3.mira.model.interfacebehaviour.InterfaceBehaviourSpecification;
import org.fortiss.af3.mira.model.usecase.UseCaseSpecification;
import org.fortiss.af3.mira.ui.editor.InterfaceEditor;
import org.fortiss.af3.mira.ui.editor.InterfaceBehaviourAspectEditor;
import org.fortiss.af3.mira.ui.editor.InterfaceEditor;
import org.fortiss.af3.mira.ui.editor.ModeDefinitionEditor;
import org.fortiss.af3.mira.ui.editor.ParameterDefinitionEditor;
import org.fortiss.af3.mira.ui.editor.SafetyLevelSectionEditor;
import org.fortiss.af3.mira.ui.editor.SignalDefinitionEditor;
......@@ -42,7 +44,7 @@ import org.fortiss.tooling.kernel.ui.extension.base.ModelEditorBindingBase;
* @author mou
* @author $Author$
* @version $Rev$
* @ConQAT.Rating YELLOW Hash: C060F30F27F7A8BD7C3325E06E562C51
* @ConQAT.Rating YELLOW Hash: FB009827E55199EF560B7CB680F9DDEC
*/
public class AspectBindings {
......@@ -196,4 +198,29 @@ public class AspectBindings {
return SECONDEDITORPRIORITY;
}
}
/** Binding for mode definition aspect. */
public static class ModeBinding extends ModelEditorBindingBase<Requirement> {
/** {@inheritDoc} */
@Override
public Class<? extends IEditorPart> getEditorClass(Requirement obj) {
if(pickFirstInstanceOf(ModeSpecification.class, obj.getSpecifications()) == null) {
return null;
}
return ModeDefinitionEditor.class;
}
/** {@inheritDoc} */
@Override
public String getLabel() {
return "Modes";
}
/** {@inheritDoc} */
@Override
public int getPriority() {
return SECONDEDITORPRIORITY;
}
}
}
......@@ -25,6 +25,7 @@ import java.util.List;
import org.eclipse.emf.ecore.EObject;
import org.eclipse.jface.resource.ImageDescriptor;
import org.fortiss.af3.mira.model.ModeSpecification;
import org.fortiss.af3.mira.model.ParameterDefinition;
import org.fortiss.af3.mira.model.Requirement;
import org.fortiss.af3.mira.model.SafetyLevelRequirementSpecification;
......@@ -42,7 +43,7 @@ import org.fortiss.tooling.kernel.ui.service.IModelElementHandlerService;
* @author mou
* @author $Author$
* @version $Rev$
* @ConQAT.Rating YELLOW Hash: 7B6A520CC24DE2E071E69E6D1F3B7C2F
* @ConQAT.Rating YELLOW Hash: 0899C4803983269593D20B8A2FEEE101
*/
public class AspectHandlers {
/** Handler for {@link InterfaceBehaviourSpecification}'s. */
......@@ -56,6 +57,17 @@ public class AspectHandlers {
}
}
/** Handler for {@link ModeSpecification}'s. */
public static class ModeSpecificationHandler extends
SpecificationHandlerBase<ModeSpecification> {
/** {@inheritDoc} */
@Override
public String getName(ModeSpecification element) {
return "Mode aspect";
}
}
/** Handler for {@link InterfaceBehaviourSpecification}'s. */
public static class InterfaceBehaviourSpecificationHandler extends
SpecificationHandlerBase<InterfaceBehaviourSpecification> {
......
......@@ -291,6 +291,16 @@
<eClassifiers xsi:type="ecore:EClass" name="ParameterDefinition" eSuperTypes="platform:/resource/org.fortiss.tooling.base/model/base.ecore#//element/IModelElementSpecification platform:/resource/org.fortiss.tooling.kernel/model/kernel.ecore#//INamedElement">
<eStructuralFeatures xsi:type="ecore:EAttribute" name="value" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" name="PerformanceSpecification" eSuperTypes="platform:/resource/org.fortiss.tooling.base/model/base.ecore#//element/IModelElementSpecification">
<eStructuralFeatures xsi:type="ecore:EAttribute" name="value" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" name="TimingSpecification" eSuperTypes="platform:/resource/org.fortiss.tooling.base/model/base.ecore#//element/IModelElementSpecification">
<eStructuralFeatures xsi:type="ecore:EAttribute" name="value" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" name="ModeSpecification" eSuperTypes="platform:/resource/org.fortiss.tooling.base/model/base.ecore#//element/IModelElementSpecification">
<eStructuralFeatures xsi:type="ecore:EAttribute" name="modes" upperBound="-1"
eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>
</eClassifiers>
<eSubpackages name="usecase" nsURI="http://www.fortiss.org/af3/mira/usecase" nsPrefix="org-fortiss-af3-mira-usecase">
<eClassifiers xsi:type="ecore:EClass" name="UseCase" eSuperTypes="#//Requirement platform:/resource/org.fortiss.tooling.base/model/base.ecore#//element/IHierarchicElementContainer #//usecase/UseCaseSpecification">
<eOperations name="getScopeSpecification" eType="#//usecase/ScopeSpecification">
......@@ -442,7 +452,7 @@
</eSubpackages>
<eSubpackages name="functional" nsURI="http://www.fortiss.org/af3/mira/functional"
nsPrefix="org-fortiss-af3-mira-functional">
<eClassifiers xsi:type="ecore:EClass" name="FormalSpecification" eSuperTypes="platform:/resource/org.fortiss.tooling.base/model/base.ecore#//base/HierarchicElementBase platform:/resource/org.fortiss.af3.project/model/project.ecore#//typesystem/IFunctionScope platform:/resource/org.fortiss.af3.project/model/project.ecore#//typesystem/ITypeScope">
<eClassifiers xsi:type="ecore:EClass" name="FormalSpecification" eSuperTypes="platform:/resource/org.fortiss.tooling.base/model/base.ecore#//base/HierarchicElementBase platform:/resource/org.fortiss.af3.project/model/project.ecore#//typesystem/IFunctionScope platform:/resource/org.fortiss.af3.project/model/project.ecore#//typesystem/ITypeScope platform:/resource/org.fortiss.tooling.base/model/base.ecore#//element/IModelElementSpecification">
<eOperations name="getTopComponent" eType="ecore:EClass platform:/resource/org.fortiss.af3.component/model/component.ecore#//Component">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="body" value="return FormalSpecificationStaticImpl.getTopComponent(this);"/>
......@@ -476,6 +486,7 @@
containment="true"/>
<eStructuralFeatures xsi:type="ecore:EAttribute" name="input" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean"/>
<eStructuralFeatures xsi:type="ecore:EAttribute" name="updateRate" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>
<eStructuralFeatures xsi:type="ecore:EAttribute" name="unit" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" name="ISignalsContainer" abstract="true"
interface="true" eSuperTypes="platform:/resource/org.fortiss.tooling.kernel/model/kernel.ecore#//constraints/IConstrained">
......
......@@ -142,6 +142,15 @@
<genClasses ecoreClass="mira.ecore#//ParameterDefinition">
<genFeatures createChild="false" ecoreFeature="ecore:EAttribute mira.ecore#//ParameterDefinition/value"/>
</genClasses>
<genClasses ecoreClass="mira.ecore#//PerformanceSpecification">
<genFeatures createChild="false" ecoreFeature="ecore:EAttribute mira.ecore#//PerformanceSpecification/value"/>
</genClasses>
<genClasses ecoreClass="mira.ecore#//TimingSpecification">
<genFeatures createChild="false" ecoreFeature="ecore:EAttribute mira.ecore#//TimingSpecification/value"/>
</genClasses>
<genClasses ecoreClass="mira.ecore#//ModeSpecification">
<genFeatures createChild="false" ecoreFeature="ecore:EAttribute mira.ecore#//ModeSpecification/modes"/>
</genClasses>
<nestedGenPackages prefix="Usecase" basePackage="org.fortiss.af3.mira.model" disposableProviderFactory="true"
ecorePackage="mira.ecore#//usecase">
<genEnums typeSafeEnumCompatible="false" ecoreEnum="mira.ecore#//usecase/ScenarioStepActionType">
......@@ -248,6 +257,7 @@
<genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference mira.ecore#//functional/Signal/type"/>
<genFeatures createChild="false" ecoreFeature="ecore:EAttribute mira.ecore#//functional/Signal/input"/>
<genFeatures createChild="false" ecoreFeature="ecore:EAttribute mira.ecore#//functional/Signal/updateRate"/>
<genFeatures createChild="false" ecoreFeature="ecore:EAttribute mira.ecore#//functional/Signal/unit"/>
</genClasses>
<genClasses image="false" ecoreClass="mira.ecore#//functional/ISignalsContainer">
<genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference mira.ecore#//functional/ISignalsContainer/signals"/>
......
......@@ -22,6 +22,7 @@ import static org.fortiss.tooling.kernel.utils.EcoreUtils.pickInstanceOf;
import org.eclipse.emf.common.util.EList;
import org.eclipse.emf.ecore.EObject;
import org.fortiss.af3.mira.model.ModeSpecification;
import org.fortiss.af3.mira.model.ParameterDefinition;
import org.fortiss.af3.mira.model.Requirement;
import org.fortiss.af3.mira.model.SafetyLevelRequirementSpecification;
......@@ -44,7 +45,7 @@ import org.fortiss.tooling.kernel.extension.data.Prototype;
* @author mou
* @author $Author$
* @version $Rev$
* @ConQAT.Rating YELLOW Hash: B70D42BC8F0A706E50589A19B6E56D9C
* @ConQAT.Rating YELLOW Hash: EBAA65CAC02D87327B71686144A5F266
*/
public class RequirementCompositor extends HierarchicElementCompositorBase<Requirement> {
/** {@inheritDoc} */
......@@ -75,6 +76,10 @@ public class RequirementCompositor extends HierarchicElementCompositorBase<Requi
if(slrs == null && contained instanceof SafetyLevelRequirementSpecification) {
return true;
}
ModeSpecification ms = pickFirstInstanceOf(ModeSpecification.class, specs);
if(ms == null && contained instanceof ModeSpecification) {
return true;
}
if(!pickInstanceOf(UseCaseSpecification.class, container.getSpecifications()).isEmpty()) {
return contained instanceof Scenario || contained instanceof MSCSpecification ||
contained instanceof FormalSpecification;
......@@ -89,7 +94,7 @@ public class RequirementCompositor extends HierarchicElementCompositorBase<Requi
@Override
public boolean canComposePrototype(Prototype prototype) {
EObject elt = prototype.getPrototype();
return elt instanceof FormalSpecification ||
return elt instanceof FormalSpecification || elt instanceof ModeSpecification ||
elt instanceof InterfaceBehaviourSpecification ||
elt instanceof SignalContainerSpecification || elt instanceof ParameterDefinition ||
elt instanceof SafetyLevelRequirementSpecification ||
......@@ -116,7 +121,7 @@ public class RequirementCompositor extends HierarchicElementCompositorBase<Requi
/** {@inheritDoc} */
@Override
public boolean canDecompose(EObject contained) {
return contained instanceof FormalSpecification ||
return contained instanceof FormalSpecification || contained instanceof ModeSpecification ||
contained instanceof InterfaceBehaviourSpecification ||
contained instanceof SignalContainerSpecification ||
contained instanceof ParameterDefinition ||
......
......@@ -23,6 +23,7 @@ import static org.fortiss.af3.mira.utils.MiraModelElementFactory.createFunctiona
import static org.fortiss.af3.mira.utils.MiraModelElementFactory.createGlossary;
import static org.fortiss.af3.mira.utils.MiraModelElementFactory.createGlossaryEntry;
import static org.fortiss.af3.mira.utils.MiraModelElementFactory.createInterfaceBehaviourSpecification;
import static org.fortiss.af3.mira.utils.MiraModelElementFactory.createModeSpecification;
import static org.fortiss.af3.mira.utils.MiraModelElementFactory.createParameterDefinition;
import static org.fortiss.af3.mira.utils.MiraModelElementFactory.createRequirement;
import static org.fortiss.af3.mira.utils.MiraModelElementFactory.createRequirementDocument;
......@@ -35,6 +36,7 @@ import static org.fortiss.af3.mira.utils.MiraModelElementFactory.createSignalReq
import static org.fortiss.af3.mira.utils.MiraModelElementFactory.createStakeholder;
import static org.fortiss.af3.mira.utils.MiraModelElementFactory.createUseCaseSpecification;
import org.fortiss.af3.mira.model.ModeSpecification;
import org.fortiss.af3.mira.model.ParameterDefinition;
import org.fortiss.af3.mira.model.Requirement;
import org.fortiss.af3.mira.model.RequirementsContainer;
......@@ -54,7 +56,7 @@ import org.fortiss.tooling.kernel.extension.base.PrototypeProviderBase;
*
* @author mou
* @version $Rev: 18709 $
* @ConQAT.Rating YELLOW Hash: 7A6BED65B71770189E365FD05F86769A
* @ConQAT.Rating YELLOW Hash: 41117A28F8ECF84C0C6D0ED083AB9680
*/
public class PrototypeProvider extends PrototypeProviderBase {
......@@ -102,5 +104,8 @@ public class PrototypeProvider extends PrototypeProviderBase {
SafetyLevelRequirementSpecification slr = createSafetyLevelReqSpecification();
registerPrimaryPrototype("Safety level aspect", slr, CATEGORY_NAME);
ModeSpecification ms = createModeSpecification();
registerPrimaryPrototype("Mode aspect", ms, CATEGORY_NAME);
}
}
......@@ -30,6 +30,7 @@ import org.fortiss.af3.mira.model.ExternalRelation;
import org.fortiss.af3.mira.model.ExternalRelationSpecification;
import org.fortiss.af3.mira.model.ImageItem;
import org.fortiss.af3.mira.model.MiraFactory;
import org.fortiss.af3.mira.model.ModeSpecification;
import org.fortiss.af3.mira.model.ParameterDefinition;
import org.fortiss.af3.mira.model.Requirement;
import org.fortiss.af3.mira.model.RequirementPriority;
......@@ -92,7 +93,7 @@ import org.fortiss.af3.mira.model.verification.CheckList;
* @author hoelzl
* @author $Author$
* @version $Rev$
* @ConQAT.Rating YELLOW Hash: C7B4877538176392BBCDF21FB4E7C22E
* @ConQAT.Rating YELLOW Hash: D1255DFAA376ABD128F295E35FE1A3F5
*/
public final class MiraModelElementFactory {
......@@ -175,6 +176,11 @@ public final class MiraModelElementFactory {
return MiraFactory.eINSTANCE.createSafetyLevelRequirementSpecification();
}
/** Creates a {@link ModeSpecification}. */
public static ModeSpecification createModeSpecification() {
return MiraFactory.eINSTANCE.createModeSpecification();
}
/** Initializes the given use case specification. */
private static void initUseCaseSpecification(UseCaseSpecification uc) {
uc.setInputs(UsecaseFactory.eINSTANCE.createInputs());
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment