Closed philip-alldredge closed 6 years ago
Hi Philip,
Do you have a code sample and a plugin that use this method ? (with a plugin.xml, etc...) ?
Below are what I consider the relevant files. Let me know if you need something else.
Plugin.xml
<?xml version="1.0" encoding="UTF-8"?>
<?eclipse version="3.4"?>
<plugin>
<extension
point="org.eclipse.ui.actionSets">
<actionSet
id="edu.uah.rsesc.aadl.codegen.actionSet"
label="Code Generation Action Set"
visible="true">
<menu
id="menu.codegen"
label="Code Generation">
<separator
name="codeGenGroup">
</separator>
</menu>
<action
class="edu.uah.rsesc.aadl.codegen.actions.GenerateProgramsAction"
id="edu.uah.rsesc.aadl.codegen.actions.GenerateProgramsAction"
label="&Generate Programs"
menubarPath="menu.codegen/codeGenGroup"
tooltip="Generate C++ source code for all system instances.">
</action>
</actionSet>
</extension>
</plugin>
GenerateProgramsAction.java
package edu.uah.rsesc.aadl.codegen.actions;
import org.eclipse.core.runtime.IProgressMonitor;
import org.eclipse.jface.action.IAction;
import org.eclipse.jface.viewers.ISelection;
import org.eclipse.ui.IWorkbenchWindow;
import org.eclipse.ui.IWorkbenchWindowActionDelegate;
import org.osate.aadl2.ComponentCategory;
import org.osate.aadl2.Element;
import org.osate.aadl2.instance.ComponentInstance;
import org.osate.aadl2.instance.util.InstanceSwitch;
import org.osate.aadl2.modelsupport.modeltraversal.AadlProcessingSwitch;
import org.osate.aadl2.modelsupport.resources.OsateResourceUtil;
public class GenerateProgramsAction implements IWorkbenchWindowActionDelegate {
public GenerateProgramsAction() {
}
public void run(final IAction action) {
// Clear the resource set. This shouldn't be required but for some reason if it is not done, the same model for subsequent runs
OsateResourceUtil.getResourceSet().getResources().clear();
final AadlProcessingSwitch generationSwitch = new AadlProcessingSwitch() {
@Override
protected void initSwitches() {
this.instanceSwitch = new InstanceSwitch<String>() {
@Override
public String caseComponentInstance(final ComponentInstance ci)
{
System.out.println("COMPONENT");
System.out.println(ci);
return DONE;
}
};
}
};
generationSwitch.defaultTraversalAllInstances();
}
public void selectionChanged(IAction action, ISelection selection) {
}
public void dispose() {
}
public void init(IWorkbenchWindow window) {
}
}
build.properties
source.. = src/,\
src-gen/
output.. = bin/
bin.includes = META-INF/,\
.,\
plugin.xml,\
resources/
MANIFEST.MF
Manifest-Version: 1.0
Bundle-ManifestVersion: 2
Bundle-Name: Codegen
Bundle-SymbolicName: edu.uah.rsesc.aadl.codegen;singleton:=true
Bundle-Version: 1.0.0.qualifier
Bundle-Activator: edu.uah.rsesc.aadl.codegen.Activator
Require-Bundle: org.eclipse.ui,
org.eclipse.core.runtime,
org.osate.aadl2,
org.osate.ui;bundle-version="1.0.0",
org.osate.aadl2.modelsupport;bundle-version="1.0.0",
org.osate.xtext.aadl2.properties;bundle-version="1.0.0",
org.osate.pluginsupport;bundle-version="1.0.0"
Bundle-RequiredExecutionEnvironment: JavaSE-1.7
Bundle-ActivationPolicy: lazy
Hello, I am attempting to traverse all instance models in a workspace using AadlProcessingSwitch.defaultTraversalAllInstances().
Unfortunately, it does not seem to be working. Using the following code, my switch is never called.