Skip to main content

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [List Home]
[epsilon-dev] Changes required for Pinset (based in Epsilon 1.5) to work with Epsilon Interim version

Hello,

As I was considering trying some things with Pinset and Picto, I had to update my pinset sources to be compatible with the Interim version of Epsilon.

If the Epsilon 2.0 launch is coming, maybe this could be useful for people with plugins based in 1.5 (as Pinset was) wanting to update to the new version.

Attached you can find a list of notes I took (small changes list, I think I didn't forget anything) and a diff of the concrete executed changes. I also needed to regenerate the parser classes, but I left that out of the diff to avoid polluting it with autogenerated parser rules.

Cheers,
Alfonso
# Make pinset work with Epsilon interim (March 2020)

## Changes:

1. I had to define a `org.eclipse.epsilon.common.dt.moduleImplementation` extension for pinset. This was necessary to adapt to the new `EpsilonLaunchConfigurationDelegate` where the module to launch from the Eclipse system is taken from the `ModuleImplementationExtension` manager class.
2. Minor things:
   1. Location changed for `AbstractSourceConfigurationTab`.
   2. New methods required for `EpsilonLaunchConfigurationTabGroup`, such as generating an advanced configuration tab through `getAdvancedConfigurationTab()`. Also I had to create that tab extending `AbstractAdvancedConfigurationTab`.
   3. Also, when opening any old run configuration and going to the `Advanced` tab, eclipse automatically detects it as a change, so the run configuration needs to be saved to include the details of this advanced tab.
3. The parsing was not properly working with the previous generated parser for 1.5. For instance, ParameterType was not properly returning EolModelElementType, instead it returned EolAnyType as the `FORMAL` parameter rule was not being properly detected to create a parameter. Re-executing the ant build to generate the pinset parser solved the problems. No changes in the parser were required.

Attachment: pinset1.5-to-interim-changes.pdf
Description: Adobe PDF document

diff --git a/es.unican.istr.pinset.dt/plugin.xml b/es.unican.istr.pinset.dt/plugin.xml
index 3bf0b80..40f81ff 100644
--- a/es.unican.istr.pinset.dt/plugin.xml
+++ b/es.unican.istr.pinset.dt/plugin.xml
@@ -45,5 +45,15 @@
             id="es.unican.istr.pinset.dt.wizards.NewPinsetFileWizard"
             name="Pinset File"/>
    </extension>
+   <extension
+         point="org.eclipse.epsilon.common.dt.moduleImplementation">
+      <implementation
+            class="es.unican.istr.pinset.PinsetModule"
+            default="false"
+            dialog="es.unican.istr.pinset.dt.launching.PinsetModuleConfiguration"
+            language="Pinset"
+            name="Pinset">
+      </implementation>
+   </extension>
 
 </plugin>
diff --git a/es.unican.istr.pinset.dt/src/es/unican/istr/pinset/dt/launching/PinsetLaunchConfigurationDelegate.java b/es.unican.istr.pinset.dt/src/es/unican/istr/pinset/dt/launching/PinsetLaunchConfigurationDelegate.java
index c4a974f..a37a759 100644
--- a/es.unican.istr.pinset.dt/src/es/unican/istr/pinset/dt/launching/PinsetLaunchConfigurationDelegate.java
+++ b/es.unican.istr.pinset.dt/src/es/unican/istr/pinset/dt/launching/PinsetLaunchConfigurationDelegate.java
@@ -15,6 +15,8 @@ import org.eclipse.core.resources.IFile;
 import org.eclipse.core.resources.ResourcesPlugin;
 import org.eclipse.core.runtime.CoreException;
 import org.eclipse.core.runtime.Path;
+import org.eclipse.debug.core.ILaunchConfiguration;
+import org.eclipse.epsilon.common.dt.launching.extensions.ModuleImplementationExtension;
 import org.eclipse.epsilon.eol.IEolModule;
 import org.eclipse.epsilon.eol.dt.debug.EolDebugger;
 import org.eclipse.epsilon.eol.dt.launching.EpsilonLaunchConfigurationDelegate;
@@ -52,4 +54,17 @@ public class PinsetLaunchConfigurationDelegate extends EpsilonLaunchConfiguratio
     return new PinsetDebugger();
   }
 
+  public String getLanguage() {
+    return "Pinset";
+  }
+
+  @Override
+  public PinsetModule getDefaultModule(ILaunchConfiguration configuration) {
+    try {
+      return ModuleImplementationExtension.defaultImplementation(getLanguage()).createModule();
+    } catch (CoreException e) {
+    }
+    return null;
+  }
+
 }
diff --git a/es.unican.istr.pinset.dt/src/es/unican/istr/pinset/dt/launching/PinsetLaunchConfigurationTabGroup.java b/es.unican.istr.pinset.dt/src/es/unican/istr/pinset/dt/launching/PinsetLaunchConfigurationTabGroup.java
index bdbf8a9..1426c04 100644
--- a/es.unican.istr.pinset.dt/src/es/unican/istr/pinset/dt/launching/PinsetLaunchConfigurationTabGroup.java
+++ b/es.unican.istr.pinset.dt/src/es/unican/istr/pinset/dt/launching/PinsetLaunchConfigurationTabGroup.java
@@ -14,6 +14,7 @@ package es.unican.istr.pinset.dt.launching;
 import org.eclipse.debug.ui.ILaunchConfigurationTab;
 import org.eclipse.epsilon.common.dt.launching.tabs.EpsilonLaunchConfigurationTabGroup;
 
+import es.unican.istr.pinset.dt.launching.tabs.PinsetAdvancedConfigurationTab;
 import es.unican.istr.pinset.dt.launching.tabs.PinsetOutputConfigurationTab;
 import es.unican.istr.pinset.dt.launching.tabs.PinsetSourceConfigurationTab;
 
@@ -29,4 +30,9 @@ public class PinsetLaunchConfigurationTabGroup extends EpsilonLaunchConfiguratio
     return new ILaunchConfigurationTab[]{new PinsetOutputConfigurationTab()};
   }
 
+  @Override
+  public ILaunchConfigurationTab getAdvancedConfigurationTab() {
+    return new PinsetAdvancedConfigurationTab();
+  }
+
 }
diff --git a/es.unican.istr.pinset.dt/src/es/unican/istr/pinset/dt/launching/PinsetModuleConfiguration.java b/es.unican.istr.pinset.dt/src/es/unican/istr/pinset/dt/launching/PinsetModuleConfiguration.java
new file mode 100644
index 0000000..68e2259
--- /dev/null
+++ b/es.unican.istr.pinset.dt/src/es/unican/istr/pinset/dt/launching/PinsetModuleConfiguration.java
@@ -0,0 +1,7 @@
+package es.unican.istr.pinset.dt.launching;
+
+import org.eclipse.epsilon.common.dt.launching.tabs.AbstractModuleConfiguration;
+
+public class PinsetModuleConfiguration extends AbstractModuleConfiguration {
+
+}
diff --git a/es.unican.istr.pinset.dt/src/es/unican/istr/pinset/dt/launching/tabs/PinsetAdvancedConfigurationTab.java b/es.unican.istr.pinset.dt/src/es/unican/istr/pinset/dt/launching/tabs/PinsetAdvancedConfigurationTab.java
new file mode 100644
index 0000000..97a3444
--- /dev/null
+++ b/es.unican.istr.pinset.dt/src/es/unican/istr/pinset/dt/launching/tabs/PinsetAdvancedConfigurationTab.java
@@ -0,0 +1,29 @@
+package es.unican.istr.pinset.dt.launching.tabs;
+
+import org.eclipse.debug.core.ILaunchConfiguration;
+import org.eclipse.debug.core.ILaunchConfigurationWorkingCopy;
+import org.eclipse.epsilon.common.dt.EpsilonPlugin;
+import org.eclipse.epsilon.common.dt.launching.tabs.AbstractAdvancedConfigurationTab;
+
+import es.unican.istr.pinset.dt.PinsetPlugin;
+
+public class PinsetAdvancedConfigurationTab extends AbstractAdvancedConfigurationTab {
+
+  @Override
+  public void setDefaults(ILaunchConfigurationWorkingCopy configuration) {
+  }
+
+  @Override
+  public EpsilonPlugin getPlugin() {
+    return PinsetPlugin.getDefault();
+  }
+
+  @Override
+  public String getLanguage(ILaunchConfiguration configuration) {
+    return getLanguage();
+  }
+
+  public String getLanguage() {
+    return "Pinset";
+  }
+}
diff --git a/es.unican.istr.pinset.dt/src/es/unican/istr/pinset/dt/launching/tabs/PinsetSourceConfigurationTab.java b/es.unican.istr.pinset.dt/src/es/unican/istr/pinset/dt/launching/tabs/PinsetSourceConfigurationTab.java
index ea9bc17..dc6cf98 100644
--- a/es.unican.istr.pinset.dt/src/es/unican/istr/pinset/dt/launching/tabs/PinsetSourceConfigurationTab.java
+++ b/es.unican.istr.pinset.dt/src/es/unican/istr/pinset/dt/launching/tabs/PinsetSourceConfigurationTab.java
@@ -12,11 +12,11 @@
 package es.unican.istr.pinset.dt.launching.tabs;
 
 import org.eclipse.epsilon.common.dt.EpsilonPlugin;
-import org.eclipse.epsilon.common.dt.launching.AbstractSourceConfigurationTab;
+import org.eclipse.epsilon.common.dt.launching.tabs.AbstractSourceConfigurationTab;
 
 import es.unican.istr.pinset.dt.PinsetPlugin;
 
-public class PinsetSourceConfigurationTab extends AbstractSourceConfigurationTab{
+public class PinsetSourceConfigurationTab extends AbstractSourceConfigurationTab {
 
   @Override
   public EpsilonPlugin getPlugin() {
diff --git a/es.unican.istr.pinset.engine/src/es/unican/istr/pinset/PinsetModule.java b/es.unican.istr.pinset.engine/src/es/unican/istr/pinset/PinsetModule.java
index a3e7334..3442cc1 100644
--- a/es.unican.istr.pinset.engine/src/es/unican/istr/pinset/PinsetModule.java
+++ b/es.unican.istr.pinset.engine/src/es/unican/istr/pinset/PinsetModule.java
@@ -114,11 +114,6 @@ public class PinsetModule extends ErlModule {
     return null;
   }
 
-  @Override
-  public IEolContext getContext(){
-    return context;
-  }
-
   @Override
   public void setContext(IEolContext context) {
     this.context = context;

Back to the top