| ... |
... |
@@ -66,48 +66,4 @@ |
| 66 |
66 |
|
| 67 |
67 |
= Parsing = |
| 68 |
68 |
|
| 69 |
|
-The generated code includes a parser for text files in your syntax. This parser is simply used with the same interface as for any other EMF models: resource sets. Your final task for this tutorial is to reuse the Turing controller you implemented in the EMF tutorial for simulating Turing Machine models, this time applying it to {{code language="none"}}.tuxt{{/code}} text files. However, instead of using a fixed path to your model file, we will now use a //menu contribution// in order to set the file path dynamically. This contribution will be put into the popup menu of the //Navigator// / //Project Explorer// view by configuring a visibility expression that tests the currently selected (right-clicked) elements. The contribution shall only be visible if the selected files have the extension tuxt, which is assigned to our mighty textual syntax. |
| 70 |
|
- |
| 71 |
|
-1. Go to the plugin where you created and registered {{code language="none"}}TuringHeadController{{/code}}, the Turing Machine simulator. Open {{code language="none"}}plugin.xml{{/code}} → //Dependencies// and add org.eclipse.ui if not on the list yet. Go to //Extensions// and add org.eclipse.ui.menus. |
| 72 |
|
-1. Add a //menuContribution// element to the new extension and set "popup:org.eclipse.ui.popup.any?after=additions" as //locationURI// (without quotation marks). |
| 73 |
|
-1. Add a //command// element to the //menuContribution// with the following attributes:\\ |
| 74 |
|
-1*. //commandId: //de.cau.cs.rtprak.login.setSimFile |
| 75 |
|
-1*. //label: //Set Simulation File |
| 76 |
|
-1. Add a //visibleWhen// element to the //command//, and add an //iterate// element to the //visibleWhen// with the following attributes:\\ |
| 77 |
|
-1*. //operator~:// and |
| 78 |
|
-1*. //ifEmpty~:// false |
| 79 |
|
-1. Add an //adapt// element to the //iterate// with the following attribute:\\ |
| 80 |
|
-1*. //type~:// org.eclipse.core.resources.IResource |
| 81 |
|
-1. Add a //test// element to the //adapt// with the following attributes:\\ |
| 82 |
|
-1*. //property~:// org.eclipse.core.resources.extension |
| 83 |
|
-1*. //value~:// tuxt |
| 84 |
|
-1. Add a new extension org.eclipse.ui.commands and add a //command// element to it with the following attributes:\\ |
| 85 |
|
-1*. //id~://de.cau.cs.rtprak.login.setSimFile |
| 86 |
|
-1*. //name~://Set Simulation File |
| 87 |
|
-1*. Click on //defaultHandler// to open a dialog for creation of a new handler class. Name the new class {{code language="none"}}SetFileHandler{{/code}} and put it into some package of that plugin. Remove the suggested interface and set {{code language="none"}}org.eclipse.core.commands.AbstractHandler{{/code}} as superclass instead. |
| 88 |
|
-1. ((( |
| 89 |
|
-Use the following method stub for SetFileHandler{{code language="none"}}{{/code}}: |
| 90 |
|
- |
| 91 |
|
-{{code theme="Eclipse" language="java"}} |
| 92 |
|
-/** |
| 93 |
|
- * {@inheritDoc} |
| 94 |
|
- */ |
| 95 |
|
-@Override |
| 96 |
|
-public Object execute(ExecutionEvent event) throws ExecutionException { |
| 97 |
|
- ISelection selection = HandlerUtil.getCurrentSelection(event); |
| 98 |
|
- if (selection instanceof IStructuredSelection) { |
| 99 |
|
- Object element = ((IStructuredSelection) selection).getFirstElement(); |
| 100 |
|
- if (element instanceof IFile) { |
| 101 |
|
- IFile file = (IFile) element; |
| 102 |
|
- // TODO update the static reference to the simulation file |
| 103 |
|
- } |
| 104 |
|
- } |
| 105 |
|
- return null; |
| 106 |
|
-} |
| 107 |
|
-{{/code}} |
| 108 |
|
-))) |
| 109 |
|
-1. Add a public static field named {{code language="none"}}modelFile{{/code}} to {{code language="none"}}TuringHeadController{{/code}} and directly set that field in the TODO part of the {{code language="none"}}execute{{/code}} method shown above. |
| 110 |
|
-1. Use the resource set code shown in the EMF tutorial for loading model files (without the stand-alone part) in order to load the {{code language="none"}}modelFile{{/code}} in the {{code language="none"}}initialize{{/code}} method. |
| 111 |
|
-1. Now you should be able to simulate models written in your textual syntax: start Eclipse, right-click a textual Turing Machine file (*.tuxt), select //Set Simulation File//, and run simulation in your Tape view using the correct controller. |
| 112 |
|
- |
| 113 |
|
-\\ |
|
69 |
+The generated code includes a parser for text files in your syntax. This parser is simply used with the same interface as for any other EMF models: resource sets. |