Merge remote-tracking branch 'origin/freeze' into develop
Change-Id: I2ace5645eb41158cc5618d647822b6ebc4e39615
diff --git a/.mvn/extensions.xml b/.mvn/extensions.xml
index 2db1890..8dd82a2 100644
--- a/.mvn/extensions.xml
+++ b/.mvn/extensions.xml
@@ -3,6 +3,6 @@
<extension>
<groupId>org.eclipse.tycho</groupId>
<artifactId>tycho-build</artifactId>
- <version>4.0.4</version>
+ <version>4.0.6</version>
</extension>
</extensions>
\ No newline at end of file
diff --git a/data/typelibrary/convert-1.0.0/MANIFEST.MF b/data/typelibrary/convert-1.0.0/MANIFEST.MF
index 1bc1088..61a8f71 100644
--- a/data/typelibrary/convert-1.0.0/MANIFEST.MF
+++ b/data/typelibrary/convert-1.0.0/MANIFEST.MF
@@ -1,6 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?>
-<Manifest xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="platform:/resource/org.eclipse.fordiac.ide.library.model/model/library.xsd" scope="Library">
- <product name="Convert" symbolicName="convert" comment="Standard Library - Convert">
- <versionInfo version="1.0.0" author="Eclipse 4diac" date="2024-02-21"/>
- </product>
+<Manifest xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="platform:/resource/org.eclipse.fordiac.ide.library.model/model/library.xsd" Scope="Library">
+ <Product Name="Convert" SymbolicName="convert" Comment="Standard Library - Convert">
+ <VersionInfo Version="1.0.0" Author="Eclipse 4diac" Date="2024-02-21"/>
+ </Product>
</Manifest>
\ No newline at end of file
diff --git a/data/typelibrary/convert-1.0.0/BOOL2BOOL.fbt b/data/typelibrary/convert-1.0.0/typelib/BOOL2BOOL.fbt
similarity index 100%
rename from data/typelibrary/convert-1.0.0/BOOL2BOOL.fbt
rename to data/typelibrary/convert-1.0.0/typelib/BOOL2BOOL.fbt
diff --git a/data/typelibrary/convert-1.0.0/BYTE2BYTE.fbt b/data/typelibrary/convert-1.0.0/typelib/BYTE2BYTE.fbt
similarity index 100%
rename from data/typelibrary/convert-1.0.0/BYTE2BYTE.fbt
rename to data/typelibrary/convert-1.0.0/typelib/BYTE2BYTE.fbt
diff --git a/data/typelibrary/convert-1.0.0/DINT2DINT.fbt b/data/typelibrary/convert-1.0.0/typelib/DINT2DINT.fbt
similarity index 100%
rename from data/typelibrary/convert-1.0.0/DINT2DINT.fbt
rename to data/typelibrary/convert-1.0.0/typelib/DINT2DINT.fbt
diff --git a/data/typelibrary/convert-1.0.0/DWORD2DWORD.fbt b/data/typelibrary/convert-1.0.0/typelib/DWORD2DWORD.fbt
similarity index 100%
rename from data/typelibrary/convert-1.0.0/DWORD2DWORD.fbt
rename to data/typelibrary/convert-1.0.0/typelib/DWORD2DWORD.fbt
diff --git a/data/typelibrary/convert-1.0.0/INT2INT.fbt b/data/typelibrary/convert-1.0.0/typelib/INT2INT.fbt
similarity index 100%
rename from data/typelibrary/convert-1.0.0/INT2INT.fbt
rename to data/typelibrary/convert-1.0.0/typelib/INT2INT.fbt
diff --git a/data/typelibrary/convert-1.0.0/LREAL2LREAL.fbt b/data/typelibrary/convert-1.0.0/typelib/LREAL2LREAL.fbt
similarity index 100%
rename from data/typelibrary/convert-1.0.0/LREAL2LREAL.fbt
rename to data/typelibrary/convert-1.0.0/typelib/LREAL2LREAL.fbt
diff --git a/data/typelibrary/convert-1.0.0/REAL2REAL.fbt b/data/typelibrary/convert-1.0.0/typelib/REAL2REAL.fbt
similarity index 100%
rename from data/typelibrary/convert-1.0.0/REAL2REAL.fbt
rename to data/typelibrary/convert-1.0.0/typelib/REAL2REAL.fbt
diff --git a/data/typelibrary/convert-1.0.0/SINT2SINT.fbt b/data/typelibrary/convert-1.0.0/typelib/SINT2SINT.fbt
similarity index 100%
rename from data/typelibrary/convert-1.0.0/SINT2SINT.fbt
rename to data/typelibrary/convert-1.0.0/typelib/SINT2SINT.fbt
diff --git a/data/typelibrary/convert-1.0.0/STRING2STRING.fbt b/data/typelibrary/convert-1.0.0/typelib/STRING2STRING.fbt
similarity index 100%
rename from data/typelibrary/convert-1.0.0/STRING2STRING.fbt
rename to data/typelibrary/convert-1.0.0/typelib/STRING2STRING.fbt
diff --git a/data/typelibrary/convert-1.0.0/STRUCT_DEMUX.fbt b/data/typelibrary/convert-1.0.0/typelib/STRUCT_DEMUX.fbt
similarity index 100%
rename from data/typelibrary/convert-1.0.0/STRUCT_DEMUX.fbt
rename to data/typelibrary/convert-1.0.0/typelib/STRUCT_DEMUX.fbt
diff --git a/data/typelibrary/convert-1.0.0/STRUCT_MUX.fbt b/data/typelibrary/convert-1.0.0/typelib/STRUCT_MUX.fbt
similarity index 100%
rename from data/typelibrary/convert-1.0.0/STRUCT_MUX.fbt
rename to data/typelibrary/convert-1.0.0/typelib/STRUCT_MUX.fbt
diff --git a/data/typelibrary/convert-1.0.0/TIME2TIME.fbt b/data/typelibrary/convert-1.0.0/typelib/TIME2TIME.fbt
similarity index 100%
rename from data/typelibrary/convert-1.0.0/TIME2TIME.fbt
rename to data/typelibrary/convert-1.0.0/typelib/TIME2TIME.fbt
diff --git a/data/typelibrary/convert-1.0.0/UDINT2UDINT.fbt b/data/typelibrary/convert-1.0.0/typelib/UDINT2UDINT.fbt
similarity index 100%
rename from data/typelibrary/convert-1.0.0/UDINT2UDINT.fbt
rename to data/typelibrary/convert-1.0.0/typelib/UDINT2UDINT.fbt
diff --git a/data/typelibrary/convert-1.0.0/UINT2UINT.fbt b/data/typelibrary/convert-1.0.0/typelib/UINT2UINT.fbt
similarity index 100%
rename from data/typelibrary/convert-1.0.0/UINT2UINT.fbt
rename to data/typelibrary/convert-1.0.0/typelib/UINT2UINT.fbt
diff --git a/data/typelibrary/convert-1.0.0/USINT2USINT.fbt b/data/typelibrary/convert-1.0.0/typelib/USINT2USINT.fbt
similarity index 100%
rename from data/typelibrary/convert-1.0.0/USINT2USINT.fbt
rename to data/typelibrary/convert-1.0.0/typelib/USINT2USINT.fbt
diff --git a/data/typelibrary/convert-1.0.0/WORD2WORD.fbt b/data/typelibrary/convert-1.0.0/typelib/WORD2WORD.fbt
similarity index 100%
rename from data/typelibrary/convert-1.0.0/WORD2WORD.fbt
rename to data/typelibrary/convert-1.0.0/typelib/WORD2WORD.fbt
diff --git a/data/typelibrary/convert-1.0.0/WSTRING2WSTRING.fbt b/data/typelibrary/convert-1.0.0/typelib/WSTRING2WSTRING.fbt
similarity index 100%
rename from data/typelibrary/convert-1.0.0/WSTRING2WSTRING.fbt
rename to data/typelibrary/convert-1.0.0/typelib/WSTRING2WSTRING.fbt
diff --git a/data/typelibrary/devices-1.0.0/MANIFEST.MF b/data/typelibrary/devices-1.0.0/MANIFEST.MF
index 75fe90f..b4a6ffc 100644
--- a/data/typelibrary/devices-1.0.0/MANIFEST.MF
+++ b/data/typelibrary/devices-1.0.0/MANIFEST.MF
@@ -1,6 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?>
-<Manifest xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="platform:/resource/org.eclipse.fordiac.ide.library.model/model/library.xsd" scope="Library">
- <product name="Devices" symbolicName="devices" comment="Standard Library - Devices">
- <versionInfo version="1.0.0" author="Eclipse 4diac" date="2024-02-21"/>
- </product>
+<Manifest xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="platform:/resource/org.eclipse.fordiac.ide.library.model/model/library.xsd" Scope="Library">
+ <Product Name="Devices" SymbolicName="devices" Comment="Standard Library - Devices">
+ <VersionInfo Version="1.0.0" Author="Eclipse 4diac" Date="2024-02-21"/>
+ </Product>
</Manifest>
\ No newline at end of file
diff --git a/data/typelibrary/devices-1.0.0/BeagleBoneBlack.dev b/data/typelibrary/devices-1.0.0/typelib/BeagleBoneBlack.dev
similarity index 100%
rename from data/typelibrary/devices-1.0.0/BeagleBoneBlack.dev
rename to data/typelibrary/devices-1.0.0/typelib/BeagleBoneBlack.dev
diff --git a/data/typelibrary/devices-1.0.0/FBRT_WINDOW.dev b/data/typelibrary/devices-1.0.0/typelib/FBRT_WINDOW.dev
similarity index 100%
rename from data/typelibrary/devices-1.0.0/FBRT_WINDOW.dev
rename to data/typelibrary/devices-1.0.0/typelib/FBRT_WINDOW.dev
diff --git a/data/typelibrary/devices-1.0.0/FORTE_PC.dev b/data/typelibrary/devices-1.0.0/typelib/FORTE_PC.dev
similarity index 100%
rename from data/typelibrary/devices-1.0.0/FORTE_PC.dev
rename to data/typelibrary/devices-1.0.0/typelib/FORTE_PC.dev
diff --git a/data/typelibrary/devices-1.0.0/PFC200.dev b/data/typelibrary/devices-1.0.0/typelib/PFC200.dev
similarity index 100%
rename from data/typelibrary/devices-1.0.0/PFC200.dev
rename to data/typelibrary/devices-1.0.0/typelib/PFC200.dev
diff --git a/data/typelibrary/devices-1.0.0/RaspberryPI.dev b/data/typelibrary/devices-1.0.0/typelib/RaspberryPI.dev
similarity index 100%
rename from data/typelibrary/devices-1.0.0/RaspberryPI.dev
rename to data/typelibrary/devices-1.0.0/typelib/RaspberryPI.dev
diff --git a/data/typelibrary/events-1.0.0/MANIFEST.MF b/data/typelibrary/events-1.0.0/MANIFEST.MF
index 181ab62..4a410cb 100644
--- a/data/typelibrary/events-1.0.0/MANIFEST.MF
+++ b/data/typelibrary/events-1.0.0/MANIFEST.MF
@@ -1,6 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?>
-<Manifest xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="platform:/resource/org.eclipse.fordiac.ide.library.model/model/library.xsd" scope="Library">
- <product name="Events" symbolicName="events" comment="Standard Library - Events">
- <versionInfo version="1.0.0" author="Eclipse 4diac" date="2024-02-21"/>
- </product>
+<Manifest xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="platform:/resource/org.eclipse.fordiac.ide.library.model/model/library.xsd" Scope="Library">
+ <Product Name="Events" SymbolicName="events" Comment="Standard Library - Events">
+ <VersionInfo Version="1.0.0" Author="Eclipse 4diac" Date="2024-02-21"/>
+ </Product>
</Manifest>
\ No newline at end of file
diff --git a/data/typelibrary/events-1.0.0/ARTimeOut.adp b/data/typelibrary/events-1.0.0/typelib/ARTimeOut.adp
similarity index 100%
rename from data/typelibrary/events-1.0.0/ARTimeOut.adp
rename to data/typelibrary/events-1.0.0/typelib/ARTimeOut.adp
diff --git a/data/typelibrary/events-1.0.0/ATimeOut.adp b/data/typelibrary/events-1.0.0/typelib/ATimeOut.adp
similarity index 100%
rename from data/typelibrary/events-1.0.0/ATimeOut.adp
rename to data/typelibrary/events-1.0.0/typelib/ATimeOut.adp
diff --git a/data/typelibrary/events-1.0.0/E_CTD.fbt b/data/typelibrary/events-1.0.0/typelib/E_CTD.fbt
similarity index 100%
rename from data/typelibrary/events-1.0.0/E_CTD.fbt
rename to data/typelibrary/events-1.0.0/typelib/E_CTD.fbt
diff --git a/data/typelibrary/events-1.0.0/E_CTU.fbt b/data/typelibrary/events-1.0.0/typelib/E_CTU.fbt
similarity index 100%
rename from data/typelibrary/events-1.0.0/E_CTU.fbt
rename to data/typelibrary/events-1.0.0/typelib/E_CTU.fbt
diff --git a/data/typelibrary/events-1.0.0/E_CTUD.fbt b/data/typelibrary/events-1.0.0/typelib/E_CTUD.fbt
similarity index 100%
rename from data/typelibrary/events-1.0.0/E_CTUD.fbt
rename to data/typelibrary/events-1.0.0/typelib/E_CTUD.fbt
diff --git a/data/typelibrary/events-1.0.0/E_CTUD_UDINT.fbt b/data/typelibrary/events-1.0.0/typelib/E_CTUD_UDINT.fbt
similarity index 100%
rename from data/typelibrary/events-1.0.0/E_CTUD_UDINT.fbt
rename to data/typelibrary/events-1.0.0/typelib/E_CTUD_UDINT.fbt
Binary files differ
diff --git a/data/typelibrary/events-1.0.0/E_CYCLE.fbt b/data/typelibrary/events-1.0.0/typelib/E_CYCLE.fbt
similarity index 100%
rename from data/typelibrary/events-1.0.0/E_CYCLE.fbt
rename to data/typelibrary/events-1.0.0/typelib/E_CYCLE.fbt
diff --git a/data/typelibrary/events-1.0.0/E_DELAY.fbt b/data/typelibrary/events-1.0.0/typelib/E_DELAY.fbt
similarity index 100%
rename from data/typelibrary/events-1.0.0/E_DELAY.fbt
rename to data/typelibrary/events-1.0.0/typelib/E_DELAY.fbt
diff --git a/data/typelibrary/events-1.0.0/E_DEMUX.fbt b/data/typelibrary/events-1.0.0/typelib/E_DEMUX.fbt
similarity index 100%
rename from data/typelibrary/events-1.0.0/E_DEMUX.fbt
rename to data/typelibrary/events-1.0.0/typelib/E_DEMUX.fbt
diff --git a/data/typelibrary/events-1.0.0/E_D_FF.fbt b/data/typelibrary/events-1.0.0/typelib/E_D_FF.fbt
similarity index 100%
rename from data/typelibrary/events-1.0.0/E_D_FF.fbt
rename to data/typelibrary/events-1.0.0/typelib/E_D_FF.fbt
diff --git a/data/typelibrary/events-1.0.0/E_F_TRIG.fbt b/data/typelibrary/events-1.0.0/typelib/E_F_TRIG.fbt
similarity index 100%
rename from data/typelibrary/events-1.0.0/E_F_TRIG.fbt
rename to data/typelibrary/events-1.0.0/typelib/E_F_TRIG.fbt
diff --git a/data/typelibrary/events-1.0.0/E_MERGE.fbt b/data/typelibrary/events-1.0.0/typelib/E_MERGE.fbt
similarity index 100%
rename from data/typelibrary/events-1.0.0/E_MERGE.fbt
rename to data/typelibrary/events-1.0.0/typelib/E_MERGE.fbt
diff --git a/data/typelibrary/events-1.0.0/E_N_TABLE.fbt b/data/typelibrary/events-1.0.0/typelib/E_N_TABLE.fbt
similarity index 100%
rename from data/typelibrary/events-1.0.0/E_N_TABLE.fbt
rename to data/typelibrary/events-1.0.0/typelib/E_N_TABLE.fbt
Binary files differ
diff --git a/data/typelibrary/events-1.0.0/E_PERMIT.fbt b/data/typelibrary/events-1.0.0/typelib/E_PERMIT.fbt
similarity index 100%
rename from data/typelibrary/events-1.0.0/E_PERMIT.fbt
rename to data/typelibrary/events-1.0.0/typelib/E_PERMIT.fbt
diff --git a/data/typelibrary/events-1.0.0/E_RDELAY.fbt b/data/typelibrary/events-1.0.0/typelib/E_RDELAY.fbt
similarity index 100%
rename from data/typelibrary/events-1.0.0/E_RDELAY.fbt
rename to data/typelibrary/events-1.0.0/typelib/E_RDELAY.fbt
diff --git a/data/typelibrary/events-1.0.0/E_REND.fbt b/data/typelibrary/events-1.0.0/typelib/E_REND.fbt
similarity index 100%
rename from data/typelibrary/events-1.0.0/E_REND.fbt
rename to data/typelibrary/events-1.0.0/typelib/E_REND.fbt
diff --git a/data/typelibrary/events-1.0.0/E_RESTART.fbt b/data/typelibrary/events-1.0.0/typelib/E_RESTART.fbt
similarity index 100%
rename from data/typelibrary/events-1.0.0/E_RESTART.fbt
rename to data/typelibrary/events-1.0.0/typelib/E_RESTART.fbt
diff --git a/data/typelibrary/events-1.0.0/E_RS.fbt b/data/typelibrary/events-1.0.0/typelib/E_RS.fbt
similarity index 100%
rename from data/typelibrary/events-1.0.0/E_RS.fbt
rename to data/typelibrary/events-1.0.0/typelib/E_RS.fbt
diff --git a/data/typelibrary/events-1.0.0/E_RTimeOut.fbt b/data/typelibrary/events-1.0.0/typelib/E_RTimeOut.fbt
similarity index 100%
rename from data/typelibrary/events-1.0.0/E_RTimeOut.fbt
rename to data/typelibrary/events-1.0.0/typelib/E_RTimeOut.fbt
diff --git a/data/typelibrary/events-1.0.0/E_R_TRIG.fbt b/data/typelibrary/events-1.0.0/typelib/E_R_TRIG.fbt
similarity index 100%
rename from data/typelibrary/events-1.0.0/E_R_TRIG.fbt
rename to data/typelibrary/events-1.0.0/typelib/E_R_TRIG.fbt
diff --git a/data/typelibrary/events-1.0.0/E_SELECT.fbt b/data/typelibrary/events-1.0.0/typelib/E_SELECT.fbt
similarity index 100%
rename from data/typelibrary/events-1.0.0/E_SELECT.fbt
rename to data/typelibrary/events-1.0.0/typelib/E_SELECT.fbt
diff --git a/data/typelibrary/events-1.0.0/E_SPLIT.fbt b/data/typelibrary/events-1.0.0/typelib/E_SPLIT.fbt
similarity index 100%
rename from data/typelibrary/events-1.0.0/E_SPLIT.fbt
rename to data/typelibrary/events-1.0.0/typelib/E_SPLIT.fbt
diff --git a/data/typelibrary/events-1.0.0/E_SR.fbt b/data/typelibrary/events-1.0.0/typelib/E_SR.fbt
similarity index 100%
rename from data/typelibrary/events-1.0.0/E_SR.fbt
rename to data/typelibrary/events-1.0.0/typelib/E_SR.fbt
diff --git a/data/typelibrary/events-1.0.0/E_SWITCH.fbt b/data/typelibrary/events-1.0.0/typelib/E_SWITCH.fbt
similarity index 100%
rename from data/typelibrary/events-1.0.0/E_SWITCH.fbt
rename to data/typelibrary/events-1.0.0/typelib/E_SWITCH.fbt
diff --git a/data/typelibrary/events-1.0.0/E_TABLE.fbt b/data/typelibrary/events-1.0.0/typelib/E_TABLE.fbt
similarity index 100%
rename from data/typelibrary/events-1.0.0/E_TABLE.fbt
rename to data/typelibrary/events-1.0.0/typelib/E_TABLE.fbt
Binary files differ
diff --git a/data/typelibrary/events-1.0.0/E_TABLE_CTRL.fbt b/data/typelibrary/events-1.0.0/typelib/E_TABLE_CTRL.fbt
similarity index 100%
rename from data/typelibrary/events-1.0.0/E_TABLE_CTRL.fbt
rename to data/typelibrary/events-1.0.0/typelib/E_TABLE_CTRL.fbt
diff --git a/data/typelibrary/events-1.0.0/E_TRAIN.fbt b/data/typelibrary/events-1.0.0/typelib/E_TRAIN.fbt
similarity index 100%
rename from data/typelibrary/events-1.0.0/E_TRAIN.fbt
rename to data/typelibrary/events-1.0.0/typelib/E_TRAIN.fbt
diff --git a/data/typelibrary/events-1.0.0/E_T_FF.fbt b/data/typelibrary/events-1.0.0/typelib/E_T_FF.fbt
similarity index 100%
rename from data/typelibrary/events-1.0.0/E_T_FF.fbt
rename to data/typelibrary/events-1.0.0/typelib/E_T_FF.fbt
diff --git a/data/typelibrary/events-1.0.0/E_TimeOut.fbt b/data/typelibrary/events-1.0.0/typelib/E_TimeOut.fbt
similarity index 100%
rename from data/typelibrary/events-1.0.0/E_TimeOut.fbt
rename to data/typelibrary/events-1.0.0/typelib/E_TimeOut.fbt
diff --git a/data/typelibrary/events-1.0.0/timers/E_PULSE.fbt b/data/typelibrary/events-1.0.0/typelib/timers/E_PULSE.fbt
similarity index 100%
rename from data/typelibrary/events-1.0.0/timers/E_PULSE.fbt
rename to data/typelibrary/events-1.0.0/typelib/timers/E_PULSE.fbt
diff --git a/data/typelibrary/events-1.0.0/timers/E_TOF.fbt b/data/typelibrary/events-1.0.0/typelib/timers/E_TOF.fbt
similarity index 100%
rename from data/typelibrary/events-1.0.0/timers/E_TOF.fbt
rename to data/typelibrary/events-1.0.0/typelib/timers/E_TOF.fbt
diff --git a/data/typelibrary/events-1.0.0/timers/E_TON.fbt b/data/typelibrary/events-1.0.0/typelib/timers/E_TON.fbt
similarity index 100%
rename from data/typelibrary/events-1.0.0/timers/E_TON.fbt
rename to data/typelibrary/events-1.0.0/typelib/timers/E_TON.fbt
diff --git a/data/typelibrary/events-1.0.0/timers/E_TONOF.fbt b/data/typelibrary/events-1.0.0/typelib/timers/E_TONOF.fbt
similarity index 100%
rename from data/typelibrary/events-1.0.0/timers/E_TONOF.fbt
rename to data/typelibrary/events-1.0.0/typelib/timers/E_TONOF.fbt
diff --git a/data/typelibrary/events-1.0.0/timers/E_TP.fbt b/data/typelibrary/events-1.0.0/typelib/timers/E_TP.fbt
similarity index 100%
rename from data/typelibrary/events-1.0.0/timers/E_TP.fbt
rename to data/typelibrary/events-1.0.0/typelib/timers/E_TP.fbt
diff --git a/data/typelibrary/iec61131-3-1.0.0/MANIFEST.MF b/data/typelibrary/iec61131-3-1.0.0/MANIFEST.MF
index d56f6f2..4fd5c2d 100644
--- a/data/typelibrary/iec61131-3-1.0.0/MANIFEST.MF
+++ b/data/typelibrary/iec61131-3-1.0.0/MANIFEST.MF
@@ -1,6 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?>
-<Manifest xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="platform:/resource/org.eclipse.fordiac.ide.library.model/model/library.xsd" scope="Library">
- <product name="IEC61131-3" symbolicName="iec61131-3" comment="Standard Library - IEC61131-3">
- <versionInfo version="1.0.0" author="Eclipse 4diac" date="2024-02-21"/>
- </product>
+<Manifest xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="platform:/resource/org.eclipse.fordiac.ide.library.model/model/library.xsd" Scope="Library">
+ <Product Name="IEC61131-3" SymbolicName="iec61131-3" Comment="Standard Library - IEC61131-3">
+ <VersionInfo Version="1.0.0" Author="Eclipse 4diac" Date="2024-02-21"/>
+ </Product>
</Manifest>
\ No newline at end of file
diff --git a/data/typelibrary/iec61131-3-1.0.0/arithmetic/F_ADD.fbt b/data/typelibrary/iec61131-3-1.0.0/typelib/arithmetic/F_ADD.fbt
similarity index 100%
rename from data/typelibrary/iec61131-3-1.0.0/arithmetic/F_ADD.fbt
rename to data/typelibrary/iec61131-3-1.0.0/typelib/arithmetic/F_ADD.fbt
diff --git a/data/typelibrary/iec61131-3-1.0.0/arithmetic/F_ADD_3.fbt b/data/typelibrary/iec61131-3-1.0.0/typelib/arithmetic/F_ADD_3.fbt
similarity index 100%
rename from data/typelibrary/iec61131-3-1.0.0/arithmetic/F_ADD_3.fbt
rename to data/typelibrary/iec61131-3-1.0.0/typelib/arithmetic/F_ADD_3.fbt
diff --git a/data/typelibrary/iec61131-3-1.0.0/arithmetic/F_ADD_DT_TIME.fbt b/data/typelibrary/iec61131-3-1.0.0/typelib/arithmetic/F_ADD_DT_TIME.fbt
similarity index 100%
rename from data/typelibrary/iec61131-3-1.0.0/arithmetic/F_ADD_DT_TIME.fbt
rename to data/typelibrary/iec61131-3-1.0.0/typelib/arithmetic/F_ADD_DT_TIME.fbt
diff --git a/data/typelibrary/iec61131-3-1.0.0/arithmetic/F_ADD_TOD_TIME.fbt b/data/typelibrary/iec61131-3-1.0.0/typelib/arithmetic/F_ADD_TOD_TIME.fbt
similarity index 100%
rename from data/typelibrary/iec61131-3-1.0.0/arithmetic/F_ADD_TOD_TIME.fbt
rename to data/typelibrary/iec61131-3-1.0.0/typelib/arithmetic/F_ADD_TOD_TIME.fbt
diff --git a/data/typelibrary/iec61131-3-1.0.0/arithmetic/F_DIV.fbt b/data/typelibrary/iec61131-3-1.0.0/typelib/arithmetic/F_DIV.fbt
similarity index 100%
rename from data/typelibrary/iec61131-3-1.0.0/arithmetic/F_DIV.fbt
rename to data/typelibrary/iec61131-3-1.0.0/typelib/arithmetic/F_DIV.fbt
diff --git a/data/typelibrary/iec61131-3-1.0.0/arithmetic/F_DIVTIME.fbt b/data/typelibrary/iec61131-3-1.0.0/typelib/arithmetic/F_DIVTIME.fbt
similarity index 100%
rename from data/typelibrary/iec61131-3-1.0.0/arithmetic/F_DIVTIME.fbt
rename to data/typelibrary/iec61131-3-1.0.0/typelib/arithmetic/F_DIVTIME.fbt
diff --git a/data/typelibrary/iec61131-3-1.0.0/arithmetic/F_EXPT.fbt b/data/typelibrary/iec61131-3-1.0.0/typelib/arithmetic/F_EXPT.fbt
similarity index 100%
rename from data/typelibrary/iec61131-3-1.0.0/arithmetic/F_EXPT.fbt
rename to data/typelibrary/iec61131-3-1.0.0/typelib/arithmetic/F_EXPT.fbt
diff --git a/data/typelibrary/iec61131-3-1.0.0/arithmetic/F_MOD.fbt b/data/typelibrary/iec61131-3-1.0.0/typelib/arithmetic/F_MOD.fbt
similarity index 100%
rename from data/typelibrary/iec61131-3-1.0.0/arithmetic/F_MOD.fbt
rename to data/typelibrary/iec61131-3-1.0.0/typelib/arithmetic/F_MOD.fbt
diff --git a/data/typelibrary/iec61131-3-1.0.0/arithmetic/F_MOVE.fbt b/data/typelibrary/iec61131-3-1.0.0/typelib/arithmetic/F_MOVE.fbt
similarity index 100%
rename from data/typelibrary/iec61131-3-1.0.0/arithmetic/F_MOVE.fbt
rename to data/typelibrary/iec61131-3-1.0.0/typelib/arithmetic/F_MOVE.fbt
diff --git a/data/typelibrary/iec61131-3-1.0.0/arithmetic/F_MUL.fbt b/data/typelibrary/iec61131-3-1.0.0/typelib/arithmetic/F_MUL.fbt
similarity index 100%
rename from data/typelibrary/iec61131-3-1.0.0/arithmetic/F_MUL.fbt
rename to data/typelibrary/iec61131-3-1.0.0/typelib/arithmetic/F_MUL.fbt
diff --git a/data/typelibrary/iec61131-3-1.0.0/arithmetic/F_MULTIME.fbt b/data/typelibrary/iec61131-3-1.0.0/typelib/arithmetic/F_MULTIME.fbt
similarity index 100%
rename from data/typelibrary/iec61131-3-1.0.0/arithmetic/F_MULTIME.fbt
rename to data/typelibrary/iec61131-3-1.0.0/typelib/arithmetic/F_MULTIME.fbt
diff --git a/data/typelibrary/iec61131-3-1.0.0/arithmetic/F_SUB.fbt b/data/typelibrary/iec61131-3-1.0.0/typelib/arithmetic/F_SUB.fbt
similarity index 100%
rename from data/typelibrary/iec61131-3-1.0.0/arithmetic/F_SUB.fbt
rename to data/typelibrary/iec61131-3-1.0.0/typelib/arithmetic/F_SUB.fbt
diff --git a/data/typelibrary/iec61131-3-1.0.0/arithmetic/F_SUB_DATE_DATE.fbt b/data/typelibrary/iec61131-3-1.0.0/typelib/arithmetic/F_SUB_DATE_DATE.fbt
similarity index 100%
rename from data/typelibrary/iec61131-3-1.0.0/arithmetic/F_SUB_DATE_DATE.fbt
rename to data/typelibrary/iec61131-3-1.0.0/typelib/arithmetic/F_SUB_DATE_DATE.fbt
diff --git a/data/typelibrary/iec61131-3-1.0.0/arithmetic/F_SUB_DT_DT.fbt b/data/typelibrary/iec61131-3-1.0.0/typelib/arithmetic/F_SUB_DT_DT.fbt
similarity index 100%
rename from data/typelibrary/iec61131-3-1.0.0/arithmetic/F_SUB_DT_DT.fbt
rename to data/typelibrary/iec61131-3-1.0.0/typelib/arithmetic/F_SUB_DT_DT.fbt
diff --git a/data/typelibrary/iec61131-3-1.0.0/arithmetic/F_SUB_DT_TIME.fbt b/data/typelibrary/iec61131-3-1.0.0/typelib/arithmetic/F_SUB_DT_TIME.fbt
similarity index 100%
rename from data/typelibrary/iec61131-3-1.0.0/arithmetic/F_SUB_DT_TIME.fbt
rename to data/typelibrary/iec61131-3-1.0.0/typelib/arithmetic/F_SUB_DT_TIME.fbt
diff --git a/data/typelibrary/iec61131-3-1.0.0/arithmetic/F_SUB_TOD_TIME.fbt b/data/typelibrary/iec61131-3-1.0.0/typelib/arithmetic/F_SUB_TOD_TIME.fbt
similarity index 100%
rename from data/typelibrary/iec61131-3-1.0.0/arithmetic/F_SUB_TOD_TIME.fbt
rename to data/typelibrary/iec61131-3-1.0.0/typelib/arithmetic/F_SUB_TOD_TIME.fbt
diff --git a/data/typelibrary/iec61131-3-1.0.0/arithmetic/F_SUB_TOD_TOD.fbt b/data/typelibrary/iec61131-3-1.0.0/typelib/arithmetic/F_SUB_TOD_TOD.fbt
similarity index 100%
rename from data/typelibrary/iec61131-3-1.0.0/arithmetic/F_SUB_TOD_TOD.fbt
rename to data/typelibrary/iec61131-3-1.0.0/typelib/arithmetic/F_SUB_TOD_TOD.fbt
diff --git a/data/typelibrary/iec61131-3-1.0.0/arithmetic/F_TRUNC.fbt b/data/typelibrary/iec61131-3-1.0.0/typelib/arithmetic/F_TRUNC.fbt
similarity index 100%
rename from data/typelibrary/iec61131-3-1.0.0/arithmetic/F_TRUNC.fbt
rename to data/typelibrary/iec61131-3-1.0.0/typelib/arithmetic/F_TRUNC.fbt
diff --git a/data/typelibrary/iec61131-3-1.0.0/bistableElements/FB_RS.fbt b/data/typelibrary/iec61131-3-1.0.0/typelib/bistableElements/FB_RS.fbt
similarity index 100%
rename from data/typelibrary/iec61131-3-1.0.0/bistableElements/FB_RS.fbt
rename to data/typelibrary/iec61131-3-1.0.0/typelib/bistableElements/FB_RS.fbt
diff --git a/data/typelibrary/iec61131-3-1.0.0/bistableElements/FB_SR.fbt b/data/typelibrary/iec61131-3-1.0.0/typelib/bistableElements/FB_SR.fbt
similarity index 100%
rename from data/typelibrary/iec61131-3-1.0.0/bistableElements/FB_SR.fbt
rename to data/typelibrary/iec61131-3-1.0.0/typelib/bistableElements/FB_SR.fbt
diff --git a/data/typelibrary/iec61131-3-1.0.0/bitwiseOperators/AND_10.fbt b/data/typelibrary/iec61131-3-1.0.0/typelib/bitwiseOperators/AND_10.fbt
similarity index 100%
rename from data/typelibrary/iec61131-3-1.0.0/bitwiseOperators/AND_10.fbt
rename to data/typelibrary/iec61131-3-1.0.0/typelib/bitwiseOperators/AND_10.fbt
diff --git a/data/typelibrary/iec61131-3-1.0.0/bitwiseOperators/AND_2.fbt b/data/typelibrary/iec61131-3-1.0.0/typelib/bitwiseOperators/AND_2.fbt
similarity index 100%
rename from data/typelibrary/iec61131-3-1.0.0/bitwiseOperators/AND_2.fbt
rename to data/typelibrary/iec61131-3-1.0.0/typelib/bitwiseOperators/AND_2.fbt
diff --git a/data/typelibrary/iec61131-3-1.0.0/bitwiseOperators/AND_3.fbt b/data/typelibrary/iec61131-3-1.0.0/typelib/bitwiseOperators/AND_3.fbt
similarity index 100%
rename from data/typelibrary/iec61131-3-1.0.0/bitwiseOperators/AND_3.fbt
rename to data/typelibrary/iec61131-3-1.0.0/typelib/bitwiseOperators/AND_3.fbt
diff --git a/data/typelibrary/iec61131-3-1.0.0/bitwiseOperators/AND_4.fbt b/data/typelibrary/iec61131-3-1.0.0/typelib/bitwiseOperators/AND_4.fbt
similarity index 100%
rename from data/typelibrary/iec61131-3-1.0.0/bitwiseOperators/AND_4.fbt
rename to data/typelibrary/iec61131-3-1.0.0/typelib/bitwiseOperators/AND_4.fbt
diff --git a/data/typelibrary/iec61131-3-1.0.0/bitwiseOperators/AND_5.fbt b/data/typelibrary/iec61131-3-1.0.0/typelib/bitwiseOperators/AND_5.fbt
similarity index 100%
rename from data/typelibrary/iec61131-3-1.0.0/bitwiseOperators/AND_5.fbt
rename to data/typelibrary/iec61131-3-1.0.0/typelib/bitwiseOperators/AND_5.fbt
diff --git a/data/typelibrary/iec61131-3-1.0.0/bitwiseOperators/AND_6.fbt b/data/typelibrary/iec61131-3-1.0.0/typelib/bitwiseOperators/AND_6.fbt
similarity index 100%
rename from data/typelibrary/iec61131-3-1.0.0/bitwiseOperators/AND_6.fbt
rename to data/typelibrary/iec61131-3-1.0.0/typelib/bitwiseOperators/AND_6.fbt
diff --git a/data/typelibrary/iec61131-3-1.0.0/bitwiseOperators/AND_7.fbt b/data/typelibrary/iec61131-3-1.0.0/typelib/bitwiseOperators/AND_7.fbt
similarity index 100%
rename from data/typelibrary/iec61131-3-1.0.0/bitwiseOperators/AND_7.fbt
rename to data/typelibrary/iec61131-3-1.0.0/typelib/bitwiseOperators/AND_7.fbt
diff --git a/data/typelibrary/iec61131-3-1.0.0/bitwiseOperators/AND_8.fbt b/data/typelibrary/iec61131-3-1.0.0/typelib/bitwiseOperators/AND_8.fbt
similarity index 100%
rename from data/typelibrary/iec61131-3-1.0.0/bitwiseOperators/AND_8.fbt
rename to data/typelibrary/iec61131-3-1.0.0/typelib/bitwiseOperators/AND_8.fbt
diff --git a/data/typelibrary/iec61131-3-1.0.0/bitwiseOperators/AND_9.fbt b/data/typelibrary/iec61131-3-1.0.0/typelib/bitwiseOperators/AND_9.fbt
similarity index 100%
rename from data/typelibrary/iec61131-3-1.0.0/bitwiseOperators/AND_9.fbt
rename to data/typelibrary/iec61131-3-1.0.0/typelib/bitwiseOperators/AND_9.fbt
diff --git a/data/typelibrary/iec61131-3-1.0.0/bitwiseOperators/F_AND.fbt b/data/typelibrary/iec61131-3-1.0.0/typelib/bitwiseOperators/F_AND.fbt
similarity index 100%
rename from data/typelibrary/iec61131-3-1.0.0/bitwiseOperators/F_AND.fbt
rename to data/typelibrary/iec61131-3-1.0.0/typelib/bitwiseOperators/F_AND.fbt
diff --git a/data/typelibrary/iec61131-3-1.0.0/bitwiseOperators/F_NOT.fbt b/data/typelibrary/iec61131-3-1.0.0/typelib/bitwiseOperators/F_NOT.fbt
similarity index 100%
rename from data/typelibrary/iec61131-3-1.0.0/bitwiseOperators/F_NOT.fbt
rename to data/typelibrary/iec61131-3-1.0.0/typelib/bitwiseOperators/F_NOT.fbt
diff --git a/data/typelibrary/iec61131-3-1.0.0/bitwiseOperators/F_OR.fbt b/data/typelibrary/iec61131-3-1.0.0/typelib/bitwiseOperators/F_OR.fbt
similarity index 100%
rename from data/typelibrary/iec61131-3-1.0.0/bitwiseOperators/F_OR.fbt
rename to data/typelibrary/iec61131-3-1.0.0/typelib/bitwiseOperators/F_OR.fbt
diff --git a/data/typelibrary/iec61131-3-1.0.0/bitwiseOperators/F_ROL.fbt b/data/typelibrary/iec61131-3-1.0.0/typelib/bitwiseOperators/F_ROL.fbt
similarity index 100%
rename from data/typelibrary/iec61131-3-1.0.0/bitwiseOperators/F_ROL.fbt
rename to data/typelibrary/iec61131-3-1.0.0/typelib/bitwiseOperators/F_ROL.fbt
diff --git a/data/typelibrary/iec61131-3-1.0.0/bitwiseOperators/F_ROR.fbt b/data/typelibrary/iec61131-3-1.0.0/typelib/bitwiseOperators/F_ROR.fbt
similarity index 100%
rename from data/typelibrary/iec61131-3-1.0.0/bitwiseOperators/F_ROR.fbt
rename to data/typelibrary/iec61131-3-1.0.0/typelib/bitwiseOperators/F_ROR.fbt
diff --git a/data/typelibrary/iec61131-3-1.0.0/bitwiseOperators/F_SHL.fbt b/data/typelibrary/iec61131-3-1.0.0/typelib/bitwiseOperators/F_SHL.fbt
similarity index 100%
rename from data/typelibrary/iec61131-3-1.0.0/bitwiseOperators/F_SHL.fbt
rename to data/typelibrary/iec61131-3-1.0.0/typelib/bitwiseOperators/F_SHL.fbt
diff --git a/data/typelibrary/iec61131-3-1.0.0/bitwiseOperators/F_SHR.fbt b/data/typelibrary/iec61131-3-1.0.0/typelib/bitwiseOperators/F_SHR.fbt
similarity index 100%
rename from data/typelibrary/iec61131-3-1.0.0/bitwiseOperators/F_SHR.fbt
rename to data/typelibrary/iec61131-3-1.0.0/typelib/bitwiseOperators/F_SHR.fbt
diff --git a/data/typelibrary/iec61131-3-1.0.0/bitwiseOperators/F_XOR.fbt b/data/typelibrary/iec61131-3-1.0.0/typelib/bitwiseOperators/F_XOR.fbt
similarity index 100%
rename from data/typelibrary/iec61131-3-1.0.0/bitwiseOperators/F_XOR.fbt
rename to data/typelibrary/iec61131-3-1.0.0/typelib/bitwiseOperators/F_XOR.fbt
diff --git a/data/typelibrary/iec61131-3-1.0.0/bitwiseOperators/OR_10.fbt b/data/typelibrary/iec61131-3-1.0.0/typelib/bitwiseOperators/OR_10.fbt
similarity index 100%
rename from data/typelibrary/iec61131-3-1.0.0/bitwiseOperators/OR_10.fbt
rename to data/typelibrary/iec61131-3-1.0.0/typelib/bitwiseOperators/OR_10.fbt
diff --git a/data/typelibrary/iec61131-3-1.0.0/bitwiseOperators/OR_2.fbt b/data/typelibrary/iec61131-3-1.0.0/typelib/bitwiseOperators/OR_2.fbt
similarity index 100%
rename from data/typelibrary/iec61131-3-1.0.0/bitwiseOperators/OR_2.fbt
rename to data/typelibrary/iec61131-3-1.0.0/typelib/bitwiseOperators/OR_2.fbt
diff --git a/data/typelibrary/iec61131-3-1.0.0/bitwiseOperators/OR_3.fbt b/data/typelibrary/iec61131-3-1.0.0/typelib/bitwiseOperators/OR_3.fbt
similarity index 100%
rename from data/typelibrary/iec61131-3-1.0.0/bitwiseOperators/OR_3.fbt
rename to data/typelibrary/iec61131-3-1.0.0/typelib/bitwiseOperators/OR_3.fbt
diff --git a/data/typelibrary/iec61131-3-1.0.0/bitwiseOperators/OR_4.fbt b/data/typelibrary/iec61131-3-1.0.0/typelib/bitwiseOperators/OR_4.fbt
similarity index 100%
rename from data/typelibrary/iec61131-3-1.0.0/bitwiseOperators/OR_4.fbt
rename to data/typelibrary/iec61131-3-1.0.0/typelib/bitwiseOperators/OR_4.fbt
diff --git a/data/typelibrary/iec61131-3-1.0.0/bitwiseOperators/OR_5.fbt b/data/typelibrary/iec61131-3-1.0.0/typelib/bitwiseOperators/OR_5.fbt
similarity index 100%
rename from data/typelibrary/iec61131-3-1.0.0/bitwiseOperators/OR_5.fbt
rename to data/typelibrary/iec61131-3-1.0.0/typelib/bitwiseOperators/OR_5.fbt
diff --git a/data/typelibrary/iec61131-3-1.0.0/bitwiseOperators/OR_6.fbt b/data/typelibrary/iec61131-3-1.0.0/typelib/bitwiseOperators/OR_6.fbt
similarity index 100%
rename from data/typelibrary/iec61131-3-1.0.0/bitwiseOperators/OR_6.fbt
rename to data/typelibrary/iec61131-3-1.0.0/typelib/bitwiseOperators/OR_6.fbt
diff --git a/data/typelibrary/iec61131-3-1.0.0/bitwiseOperators/OR_7.fbt b/data/typelibrary/iec61131-3-1.0.0/typelib/bitwiseOperators/OR_7.fbt
similarity index 100%
rename from data/typelibrary/iec61131-3-1.0.0/bitwiseOperators/OR_7.fbt
rename to data/typelibrary/iec61131-3-1.0.0/typelib/bitwiseOperators/OR_7.fbt
diff --git a/data/typelibrary/iec61131-3-1.0.0/bitwiseOperators/OR_8.fbt b/data/typelibrary/iec61131-3-1.0.0/typelib/bitwiseOperators/OR_8.fbt
similarity index 100%
rename from data/typelibrary/iec61131-3-1.0.0/bitwiseOperators/OR_8.fbt
rename to data/typelibrary/iec61131-3-1.0.0/typelib/bitwiseOperators/OR_8.fbt
diff --git a/data/typelibrary/iec61131-3-1.0.0/bitwiseOperators/OR_9.fbt b/data/typelibrary/iec61131-3-1.0.0/typelib/bitwiseOperators/OR_9.fbt
similarity index 100%
rename from data/typelibrary/iec61131-3-1.0.0/bitwiseOperators/OR_9.fbt
rename to data/typelibrary/iec61131-3-1.0.0/typelib/bitwiseOperators/OR_9.fbt
diff --git a/data/typelibrary/iec61131-3-1.0.0/bitwiseOperators/XOR_10.fbt b/data/typelibrary/iec61131-3-1.0.0/typelib/bitwiseOperators/XOR_10.fbt
similarity index 100%
rename from data/typelibrary/iec61131-3-1.0.0/bitwiseOperators/XOR_10.fbt
rename to data/typelibrary/iec61131-3-1.0.0/typelib/bitwiseOperators/XOR_10.fbt
diff --git a/data/typelibrary/iec61131-3-1.0.0/bitwiseOperators/XOR_2.fbt b/data/typelibrary/iec61131-3-1.0.0/typelib/bitwiseOperators/XOR_2.fbt
similarity index 100%
rename from data/typelibrary/iec61131-3-1.0.0/bitwiseOperators/XOR_2.fbt
rename to data/typelibrary/iec61131-3-1.0.0/typelib/bitwiseOperators/XOR_2.fbt
diff --git a/data/typelibrary/iec61131-3-1.0.0/bitwiseOperators/XOR_3.fbt b/data/typelibrary/iec61131-3-1.0.0/typelib/bitwiseOperators/XOR_3.fbt
similarity index 100%
rename from data/typelibrary/iec61131-3-1.0.0/bitwiseOperators/XOR_3.fbt
rename to data/typelibrary/iec61131-3-1.0.0/typelib/bitwiseOperators/XOR_3.fbt
diff --git a/data/typelibrary/iec61131-3-1.0.0/bitwiseOperators/XOR_4.fbt b/data/typelibrary/iec61131-3-1.0.0/typelib/bitwiseOperators/XOR_4.fbt
similarity index 100%
rename from data/typelibrary/iec61131-3-1.0.0/bitwiseOperators/XOR_4.fbt
rename to data/typelibrary/iec61131-3-1.0.0/typelib/bitwiseOperators/XOR_4.fbt
diff --git a/data/typelibrary/iec61131-3-1.0.0/bitwiseOperators/XOR_5.fbt b/data/typelibrary/iec61131-3-1.0.0/typelib/bitwiseOperators/XOR_5.fbt
similarity index 100%
rename from data/typelibrary/iec61131-3-1.0.0/bitwiseOperators/XOR_5.fbt
rename to data/typelibrary/iec61131-3-1.0.0/typelib/bitwiseOperators/XOR_5.fbt
diff --git a/data/typelibrary/iec61131-3-1.0.0/bitwiseOperators/XOR_6.fbt b/data/typelibrary/iec61131-3-1.0.0/typelib/bitwiseOperators/XOR_6.fbt
similarity index 100%
rename from data/typelibrary/iec61131-3-1.0.0/bitwiseOperators/XOR_6.fbt
rename to data/typelibrary/iec61131-3-1.0.0/typelib/bitwiseOperators/XOR_6.fbt
diff --git a/data/typelibrary/iec61131-3-1.0.0/bitwiseOperators/XOR_7.fbt b/data/typelibrary/iec61131-3-1.0.0/typelib/bitwiseOperators/XOR_7.fbt
similarity index 100%
rename from data/typelibrary/iec61131-3-1.0.0/bitwiseOperators/XOR_7.fbt
rename to data/typelibrary/iec61131-3-1.0.0/typelib/bitwiseOperators/XOR_7.fbt
diff --git a/data/typelibrary/iec61131-3-1.0.0/bitwiseOperators/XOR_8.fbt b/data/typelibrary/iec61131-3-1.0.0/typelib/bitwiseOperators/XOR_8.fbt
similarity index 100%
rename from data/typelibrary/iec61131-3-1.0.0/bitwiseOperators/XOR_8.fbt
rename to data/typelibrary/iec61131-3-1.0.0/typelib/bitwiseOperators/XOR_8.fbt
diff --git a/data/typelibrary/iec61131-3-1.0.0/bitwiseOperators/XOR_9.fbt b/data/typelibrary/iec61131-3-1.0.0/typelib/bitwiseOperators/XOR_9.fbt
similarity index 100%
rename from data/typelibrary/iec61131-3-1.0.0/bitwiseOperators/XOR_9.fbt
rename to data/typelibrary/iec61131-3-1.0.0/typelib/bitwiseOperators/XOR_9.fbt
diff --git a/data/typelibrary/iec61131-3-1.0.0/charString/F_CONCAT.fbt b/data/typelibrary/iec61131-3-1.0.0/typelib/charString/F_CONCAT.fbt
similarity index 100%
rename from data/typelibrary/iec61131-3-1.0.0/charString/F_CONCAT.fbt
rename to data/typelibrary/iec61131-3-1.0.0/typelib/charString/F_CONCAT.fbt
diff --git a/data/typelibrary/iec61131-3-1.0.0/charString/F_CONCAT_DATE_TOD.fbt b/data/typelibrary/iec61131-3-1.0.0/typelib/charString/F_CONCAT_DATE_TOD.fbt
similarity index 100%
rename from data/typelibrary/iec61131-3-1.0.0/charString/F_CONCAT_DATE_TOD.fbt
rename to data/typelibrary/iec61131-3-1.0.0/typelib/charString/F_CONCAT_DATE_TOD.fbt
diff --git a/data/typelibrary/iec61131-3-1.0.0/charString/F_DELETE.fbt b/data/typelibrary/iec61131-3-1.0.0/typelib/charString/F_DELETE.fbt
similarity index 100%
rename from data/typelibrary/iec61131-3-1.0.0/charString/F_DELETE.fbt
rename to data/typelibrary/iec61131-3-1.0.0/typelib/charString/F_DELETE.fbt
diff --git a/data/typelibrary/iec61131-3-1.0.0/charString/F_FIND.fbt b/data/typelibrary/iec61131-3-1.0.0/typelib/charString/F_FIND.fbt
similarity index 100%
rename from data/typelibrary/iec61131-3-1.0.0/charString/F_FIND.fbt
rename to data/typelibrary/iec61131-3-1.0.0/typelib/charString/F_FIND.fbt
diff --git a/data/typelibrary/iec61131-3-1.0.0/charString/F_INSERT.fbt b/data/typelibrary/iec61131-3-1.0.0/typelib/charString/F_INSERT.fbt
similarity index 100%
rename from data/typelibrary/iec61131-3-1.0.0/charString/F_INSERT.fbt
rename to data/typelibrary/iec61131-3-1.0.0/typelib/charString/F_INSERT.fbt
diff --git a/data/typelibrary/iec61131-3-1.0.0/charString/F_LEFT.fbt b/data/typelibrary/iec61131-3-1.0.0/typelib/charString/F_LEFT.fbt
similarity index 100%
rename from data/typelibrary/iec61131-3-1.0.0/charString/F_LEFT.fbt
rename to data/typelibrary/iec61131-3-1.0.0/typelib/charString/F_LEFT.fbt
diff --git a/data/typelibrary/iec61131-3-1.0.0/charString/F_LEN.fbt b/data/typelibrary/iec61131-3-1.0.0/typelib/charString/F_LEN.fbt
similarity index 100%
rename from data/typelibrary/iec61131-3-1.0.0/charString/F_LEN.fbt
rename to data/typelibrary/iec61131-3-1.0.0/typelib/charString/F_LEN.fbt
diff --git a/data/typelibrary/iec61131-3-1.0.0/charString/F_MID.fbt b/data/typelibrary/iec61131-3-1.0.0/typelib/charString/F_MID.fbt
similarity index 100%
rename from data/typelibrary/iec61131-3-1.0.0/charString/F_MID.fbt
rename to data/typelibrary/iec61131-3-1.0.0/typelib/charString/F_MID.fbt
diff --git a/data/typelibrary/iec61131-3-1.0.0/charString/F_REPLACE.fbt b/data/typelibrary/iec61131-3-1.0.0/typelib/charString/F_REPLACE.fbt
similarity index 100%
rename from data/typelibrary/iec61131-3-1.0.0/charString/F_REPLACE.fbt
rename to data/typelibrary/iec61131-3-1.0.0/typelib/charString/F_REPLACE.fbt
diff --git a/data/typelibrary/iec61131-3-1.0.0/charString/F_RIGHT.fbt b/data/typelibrary/iec61131-3-1.0.0/typelib/charString/F_RIGHT.fbt
similarity index 100%
rename from data/typelibrary/iec61131-3-1.0.0/charString/F_RIGHT.fbt
rename to data/typelibrary/iec61131-3-1.0.0/typelib/charString/F_RIGHT.fbt
diff --git a/data/typelibrary/iec61131-3-1.0.0/comparison/F_EQ.fbt b/data/typelibrary/iec61131-3-1.0.0/typelib/comparison/F_EQ.fbt
similarity index 100%
rename from data/typelibrary/iec61131-3-1.0.0/comparison/F_EQ.fbt
rename to data/typelibrary/iec61131-3-1.0.0/typelib/comparison/F_EQ.fbt
diff --git a/data/typelibrary/iec61131-3-1.0.0/comparison/F_GE.fbt b/data/typelibrary/iec61131-3-1.0.0/typelib/comparison/F_GE.fbt
similarity index 100%
rename from data/typelibrary/iec61131-3-1.0.0/comparison/F_GE.fbt
rename to data/typelibrary/iec61131-3-1.0.0/typelib/comparison/F_GE.fbt
diff --git a/data/typelibrary/iec61131-3-1.0.0/comparison/F_GT.fbt b/data/typelibrary/iec61131-3-1.0.0/typelib/comparison/F_GT.fbt
similarity index 100%
rename from data/typelibrary/iec61131-3-1.0.0/comparison/F_GT.fbt
rename to data/typelibrary/iec61131-3-1.0.0/typelib/comparison/F_GT.fbt
diff --git a/data/typelibrary/iec61131-3-1.0.0/comparison/F_LE.fbt b/data/typelibrary/iec61131-3-1.0.0/typelib/comparison/F_LE.fbt
similarity index 100%
rename from data/typelibrary/iec61131-3-1.0.0/comparison/F_LE.fbt
rename to data/typelibrary/iec61131-3-1.0.0/typelib/comparison/F_LE.fbt
diff --git a/data/typelibrary/iec61131-3-1.0.0/comparison/F_LT.fbt b/data/typelibrary/iec61131-3-1.0.0/typelib/comparison/F_LT.fbt
similarity index 100%
rename from data/typelibrary/iec61131-3-1.0.0/comparison/F_LT.fbt
rename to data/typelibrary/iec61131-3-1.0.0/typelib/comparison/F_LT.fbt
diff --git a/data/typelibrary/iec61131-3-1.0.0/comparison/F_NE.fbt b/data/typelibrary/iec61131-3-1.0.0/typelib/comparison/F_NE.fbt
similarity index 100%
rename from data/typelibrary/iec61131-3-1.0.0/comparison/F_NE.fbt
rename to data/typelibrary/iec61131-3-1.0.0/typelib/comparison/F_NE.fbt
diff --git a/data/typelibrary/iec61131-3-1.0.0/conversion/BCD/F_BYTE_BCD_TO_USINT.fbt b/data/typelibrary/iec61131-3-1.0.0/typelib/conversion/BCD/F_BYTE_BCD_TO_USINT.fbt
similarity index 100%
rename from data/typelibrary/iec61131-3-1.0.0/conversion/BCD/F_BYTE_BCD_TO_USINT.fbt
rename to data/typelibrary/iec61131-3-1.0.0/typelib/conversion/BCD/F_BYTE_BCD_TO_USINT.fbt
diff --git a/data/typelibrary/iec61131-3-1.0.0/conversion/BCD/F_DWORD_BCD_TO_UDINT.fbt b/data/typelibrary/iec61131-3-1.0.0/typelib/conversion/BCD/F_DWORD_BCD_TO_UDINT.fbt
similarity index 100%
rename from data/typelibrary/iec61131-3-1.0.0/conversion/BCD/F_DWORD_BCD_TO_UDINT.fbt
rename to data/typelibrary/iec61131-3-1.0.0/typelib/conversion/BCD/F_DWORD_BCD_TO_UDINT.fbt
diff --git a/data/typelibrary/iec61131-3-1.0.0/conversion/BCD/F_LWORD_BCD_TO_ULINT.fbt b/data/typelibrary/iec61131-3-1.0.0/typelib/conversion/BCD/F_LWORD_BCD_TO_ULINT.fbt
similarity index 100%
rename from data/typelibrary/iec61131-3-1.0.0/conversion/BCD/F_LWORD_BCD_TO_ULINT.fbt
rename to data/typelibrary/iec61131-3-1.0.0/typelib/conversion/BCD/F_LWORD_BCD_TO_ULINT.fbt
diff --git a/data/typelibrary/iec61131-3-1.0.0/conversion/BCD/F_UDINT_TO_BCD_DWORD.fbt b/data/typelibrary/iec61131-3-1.0.0/typelib/conversion/BCD/F_UDINT_TO_BCD_DWORD.fbt
similarity index 100%
rename from data/typelibrary/iec61131-3-1.0.0/conversion/BCD/F_UDINT_TO_BCD_DWORD.fbt
rename to data/typelibrary/iec61131-3-1.0.0/typelib/conversion/BCD/F_UDINT_TO_BCD_DWORD.fbt
diff --git a/data/typelibrary/iec61131-3-1.0.0/conversion/BCD/F_UINT_TO_BCD_WORD.fbt b/data/typelibrary/iec61131-3-1.0.0/typelib/conversion/BCD/F_UINT_TO_BCD_WORD.fbt
similarity index 100%
rename from data/typelibrary/iec61131-3-1.0.0/conversion/BCD/F_UINT_TO_BCD_WORD.fbt
rename to data/typelibrary/iec61131-3-1.0.0/typelib/conversion/BCD/F_UINT_TO_BCD_WORD.fbt
diff --git a/data/typelibrary/iec61131-3-1.0.0/conversion/BCD/F_ULINT_TO_BCD_LWORD.fbt b/data/typelibrary/iec61131-3-1.0.0/typelib/conversion/BCD/F_ULINT_TO_BCD_LWORD.fbt
similarity index 100%
rename from data/typelibrary/iec61131-3-1.0.0/conversion/BCD/F_ULINT_TO_BCD_LWORD.fbt
rename to data/typelibrary/iec61131-3-1.0.0/typelib/conversion/BCD/F_ULINT_TO_BCD_LWORD.fbt
diff --git a/data/typelibrary/iec61131-3-1.0.0/conversion/BCD/F_USINT_TO_BCD_BYTE.fbt b/data/typelibrary/iec61131-3-1.0.0/typelib/conversion/BCD/F_USINT_TO_BCD_BYTE.fbt
similarity index 100%
rename from data/typelibrary/iec61131-3-1.0.0/conversion/BCD/F_USINT_TO_BCD_BYTE.fbt
rename to data/typelibrary/iec61131-3-1.0.0/typelib/conversion/BCD/F_USINT_TO_BCD_BYTE.fbt
diff --git a/data/typelibrary/iec61131-3-1.0.0/conversion/BCD/F_WORD_BCD_TO_UINT.fbt b/data/typelibrary/iec61131-3-1.0.0/typelib/conversion/BCD/F_WORD_BCD_TO_UINT.fbt
similarity index 100%
rename from data/typelibrary/iec61131-3-1.0.0/conversion/BCD/F_WORD_BCD_TO_UINT.fbt
rename to data/typelibrary/iec61131-3-1.0.0/typelib/conversion/BCD/F_WORD_BCD_TO_UINT.fbt
diff --git a/data/typelibrary/iec61131-3-1.0.0/conversion/BOOL/F_BOOL_AS_STRING.fbt b/data/typelibrary/iec61131-3-1.0.0/typelib/conversion/BOOL/F_BOOL_AS_STRING.fbt
similarity index 100%
rename from data/typelibrary/iec61131-3-1.0.0/conversion/BOOL/F_BOOL_AS_STRING.fbt
rename to data/typelibrary/iec61131-3-1.0.0/typelib/conversion/BOOL/F_BOOL_AS_STRING.fbt
diff --git a/data/typelibrary/iec61131-3-1.0.0/conversion/BOOL/F_BOOL_AS_WSTRING.fbt b/data/typelibrary/iec61131-3-1.0.0/typelib/conversion/BOOL/F_BOOL_AS_WSTRING.fbt
similarity index 100%
rename from data/typelibrary/iec61131-3-1.0.0/conversion/BOOL/F_BOOL_AS_WSTRING.fbt
rename to data/typelibrary/iec61131-3-1.0.0/typelib/conversion/BOOL/F_BOOL_AS_WSTRING.fbt
diff --git a/data/typelibrary/iec61131-3-1.0.0/conversion/BOOL/F_BOOL_TO_BYTE.fbt b/data/typelibrary/iec61131-3-1.0.0/typelib/conversion/BOOL/F_BOOL_TO_BYTE.fbt
similarity index 100%
rename from data/typelibrary/iec61131-3-1.0.0/conversion/BOOL/F_BOOL_TO_BYTE.fbt
rename to data/typelibrary/iec61131-3-1.0.0/typelib/conversion/BOOL/F_BOOL_TO_BYTE.fbt
diff --git a/data/typelibrary/iec61131-3-1.0.0/conversion/BOOL/F_BOOL_TO_DINT.fbt b/data/typelibrary/iec61131-3-1.0.0/typelib/conversion/BOOL/F_BOOL_TO_DINT.fbt
similarity index 100%
rename from data/typelibrary/iec61131-3-1.0.0/conversion/BOOL/F_BOOL_TO_DINT.fbt
rename to data/typelibrary/iec61131-3-1.0.0/typelib/conversion/BOOL/F_BOOL_TO_DINT.fbt
diff --git a/data/typelibrary/iec61131-3-1.0.0/conversion/BOOL/F_BOOL_TO_DWORD.fbt b/data/typelibrary/iec61131-3-1.0.0/typelib/conversion/BOOL/F_BOOL_TO_DWORD.fbt
similarity index 100%
rename from data/typelibrary/iec61131-3-1.0.0/conversion/BOOL/F_BOOL_TO_DWORD.fbt
rename to data/typelibrary/iec61131-3-1.0.0/typelib/conversion/BOOL/F_BOOL_TO_DWORD.fbt
diff --git a/data/typelibrary/iec61131-3-1.0.0/conversion/BOOL/F_BOOL_TO_INT.fbt b/data/typelibrary/iec61131-3-1.0.0/typelib/conversion/BOOL/F_BOOL_TO_INT.fbt
similarity index 100%
rename from data/typelibrary/iec61131-3-1.0.0/conversion/BOOL/F_BOOL_TO_INT.fbt
rename to data/typelibrary/iec61131-3-1.0.0/typelib/conversion/BOOL/F_BOOL_TO_INT.fbt
diff --git a/data/typelibrary/iec61131-3-1.0.0/conversion/BOOL/F_BOOL_TO_LINT.fbt b/data/typelibrary/iec61131-3-1.0.0/typelib/conversion/BOOL/F_BOOL_TO_LINT.fbt
similarity index 100%
rename from data/typelibrary/iec61131-3-1.0.0/conversion/BOOL/F_BOOL_TO_LINT.fbt
rename to data/typelibrary/iec61131-3-1.0.0/typelib/conversion/BOOL/F_BOOL_TO_LINT.fbt
diff --git a/data/typelibrary/iec61131-3-1.0.0/conversion/BOOL/F_BOOL_TO_LWORD.fbt b/data/typelibrary/iec61131-3-1.0.0/typelib/conversion/BOOL/F_BOOL_TO_LWORD.fbt
similarity index 100%
rename from data/typelibrary/iec61131-3-1.0.0/conversion/BOOL/F_BOOL_TO_LWORD.fbt
rename to data/typelibrary/iec61131-3-1.0.0/typelib/conversion/BOOL/F_BOOL_TO_LWORD.fbt
diff --git a/data/typelibrary/iec61131-3-1.0.0/conversion/BOOL/F_BOOL_TO_SINT.fbt b/data/typelibrary/iec61131-3-1.0.0/typelib/conversion/BOOL/F_BOOL_TO_SINT.fbt
similarity index 100%
rename from data/typelibrary/iec61131-3-1.0.0/conversion/BOOL/F_BOOL_TO_SINT.fbt
rename to data/typelibrary/iec61131-3-1.0.0/typelib/conversion/BOOL/F_BOOL_TO_SINT.fbt
diff --git a/data/typelibrary/iec61131-3-1.0.0/conversion/BOOL/F_BOOL_TO_UDINT.fbt b/data/typelibrary/iec61131-3-1.0.0/typelib/conversion/BOOL/F_BOOL_TO_UDINT.fbt
similarity index 100%
rename from data/typelibrary/iec61131-3-1.0.0/conversion/BOOL/F_BOOL_TO_UDINT.fbt
rename to data/typelibrary/iec61131-3-1.0.0/typelib/conversion/BOOL/F_BOOL_TO_UDINT.fbt
diff --git a/data/typelibrary/iec61131-3-1.0.0/conversion/BOOL/F_BOOL_TO_UINT.fbt b/data/typelibrary/iec61131-3-1.0.0/typelib/conversion/BOOL/F_BOOL_TO_UINT.fbt
similarity index 100%
rename from data/typelibrary/iec61131-3-1.0.0/conversion/BOOL/F_BOOL_TO_UINT.fbt
rename to data/typelibrary/iec61131-3-1.0.0/typelib/conversion/BOOL/F_BOOL_TO_UINT.fbt
diff --git a/data/typelibrary/iec61131-3-1.0.0/conversion/BOOL/F_BOOL_TO_ULINT.fbt b/data/typelibrary/iec61131-3-1.0.0/typelib/conversion/BOOL/F_BOOL_TO_ULINT.fbt
similarity index 100%
rename from data/typelibrary/iec61131-3-1.0.0/conversion/BOOL/F_BOOL_TO_ULINT.fbt
rename to data/typelibrary/iec61131-3-1.0.0/typelib/conversion/BOOL/F_BOOL_TO_ULINT.fbt
diff --git a/data/typelibrary/iec61131-3-1.0.0/conversion/BOOL/F_BOOL_TO_USINT.fbt b/data/typelibrary/iec61131-3-1.0.0/typelib/conversion/BOOL/F_BOOL_TO_USINT.fbt
similarity index 100%
rename from data/typelibrary/iec61131-3-1.0.0/conversion/BOOL/F_BOOL_TO_USINT.fbt
rename to data/typelibrary/iec61131-3-1.0.0/typelib/conversion/BOOL/F_BOOL_TO_USINT.fbt
diff --git a/data/typelibrary/iec61131-3-1.0.0/conversion/BOOL/F_BOOL_TO_WORD.fbt b/data/typelibrary/iec61131-3-1.0.0/typelib/conversion/BOOL/F_BOOL_TO_WORD.fbt
similarity index 100%
rename from data/typelibrary/iec61131-3-1.0.0/conversion/BOOL/F_BOOL_TO_WORD.fbt
rename to data/typelibrary/iec61131-3-1.0.0/typelib/conversion/BOOL/F_BOOL_TO_WORD.fbt
diff --git a/data/typelibrary/iec61131-3-1.0.0/conversion/BYTE/F_BYTE_AS_STRING.fbt b/data/typelibrary/iec61131-3-1.0.0/typelib/conversion/BYTE/F_BYTE_AS_STRING.fbt
similarity index 100%
rename from data/typelibrary/iec61131-3-1.0.0/conversion/BYTE/F_BYTE_AS_STRING.fbt
rename to data/typelibrary/iec61131-3-1.0.0/typelib/conversion/BYTE/F_BYTE_AS_STRING.fbt
diff --git a/data/typelibrary/iec61131-3-1.0.0/conversion/BYTE/F_BYTE_AS_WSTRING.fbt b/data/typelibrary/iec61131-3-1.0.0/typelib/conversion/BYTE/F_BYTE_AS_WSTRING.fbt
similarity index 100%
rename from data/typelibrary/iec61131-3-1.0.0/conversion/BYTE/F_BYTE_AS_WSTRING.fbt
rename to data/typelibrary/iec61131-3-1.0.0/typelib/conversion/BYTE/F_BYTE_AS_WSTRING.fbt
diff --git a/data/typelibrary/iec61131-3-1.0.0/conversion/BYTE/F_BYTE_TO_DINT.fbt b/data/typelibrary/iec61131-3-1.0.0/typelib/conversion/BYTE/F_BYTE_TO_DINT.fbt
similarity index 100%
rename from data/typelibrary/iec61131-3-1.0.0/conversion/BYTE/F_BYTE_TO_DINT.fbt
rename to data/typelibrary/iec61131-3-1.0.0/typelib/conversion/BYTE/F_BYTE_TO_DINT.fbt
diff --git a/data/typelibrary/iec61131-3-1.0.0/conversion/BYTE/F_BYTE_TO_DWORD.fbt b/data/typelibrary/iec61131-3-1.0.0/typelib/conversion/BYTE/F_BYTE_TO_DWORD.fbt
similarity index 100%
rename from data/typelibrary/iec61131-3-1.0.0/conversion/BYTE/F_BYTE_TO_DWORD.fbt
rename to data/typelibrary/iec61131-3-1.0.0/typelib/conversion/BYTE/F_BYTE_TO_DWORD.fbt
diff --git a/data/typelibrary/iec61131-3-1.0.0/conversion/BYTE/F_BYTE_TO_INT.fbt b/data/typelibrary/iec61131-3-1.0.0/typelib/conversion/BYTE/F_BYTE_TO_INT.fbt
similarity index 100%
rename from data/typelibrary/iec61131-3-1.0.0/conversion/BYTE/F_BYTE_TO_INT.fbt
rename to data/typelibrary/iec61131-3-1.0.0/typelib/conversion/BYTE/F_BYTE_TO_INT.fbt
diff --git a/data/typelibrary/iec61131-3-1.0.0/conversion/BYTE/F_BYTE_TO_LINT.fbt b/data/typelibrary/iec61131-3-1.0.0/typelib/conversion/BYTE/F_BYTE_TO_LINT.fbt
similarity index 100%
rename from data/typelibrary/iec61131-3-1.0.0/conversion/BYTE/F_BYTE_TO_LINT.fbt
rename to data/typelibrary/iec61131-3-1.0.0/typelib/conversion/BYTE/F_BYTE_TO_LINT.fbt
diff --git a/data/typelibrary/iec61131-3-1.0.0/conversion/BYTE/F_BYTE_TO_LWORD.fbt b/data/typelibrary/iec61131-3-1.0.0/typelib/conversion/BYTE/F_BYTE_TO_LWORD.fbt
similarity index 100%
rename from data/typelibrary/iec61131-3-1.0.0/conversion/BYTE/F_BYTE_TO_LWORD.fbt
rename to data/typelibrary/iec61131-3-1.0.0/typelib/conversion/BYTE/F_BYTE_TO_LWORD.fbt
diff --git a/data/typelibrary/iec61131-3-1.0.0/conversion/BYTE/F_BYTE_TO_SINT.fbt b/data/typelibrary/iec61131-3-1.0.0/typelib/conversion/BYTE/F_BYTE_TO_SINT.fbt
similarity index 100%
rename from data/typelibrary/iec61131-3-1.0.0/conversion/BYTE/F_BYTE_TO_SINT.fbt
rename to data/typelibrary/iec61131-3-1.0.0/typelib/conversion/BYTE/F_BYTE_TO_SINT.fbt
diff --git a/data/typelibrary/iec61131-3-1.0.0/conversion/BYTE/F_BYTE_TO_UDINT.fbt b/data/typelibrary/iec61131-3-1.0.0/typelib/conversion/BYTE/F_BYTE_TO_UDINT.fbt
similarity index 100%
rename from data/typelibrary/iec61131-3-1.0.0/conversion/BYTE/F_BYTE_TO_UDINT.fbt
rename to data/typelibrary/iec61131-3-1.0.0/typelib/conversion/BYTE/F_BYTE_TO_UDINT.fbt
diff --git a/data/typelibrary/iec61131-3-1.0.0/conversion/BYTE/F_BYTE_TO_UINT.fbt b/data/typelibrary/iec61131-3-1.0.0/typelib/conversion/BYTE/F_BYTE_TO_UINT.fbt
similarity index 100%
rename from data/typelibrary/iec61131-3-1.0.0/conversion/BYTE/F_BYTE_TO_UINT.fbt
rename to data/typelibrary/iec61131-3-1.0.0/typelib/conversion/BYTE/F_BYTE_TO_UINT.fbt
diff --git a/data/typelibrary/iec61131-3-1.0.0/conversion/BYTE/F_BYTE_TO_ULINT.fbt b/data/typelibrary/iec61131-3-1.0.0/typelib/conversion/BYTE/F_BYTE_TO_ULINT.fbt
similarity index 100%
rename from data/typelibrary/iec61131-3-1.0.0/conversion/BYTE/F_BYTE_TO_ULINT.fbt
rename to data/typelibrary/iec61131-3-1.0.0/typelib/conversion/BYTE/F_BYTE_TO_ULINT.fbt
diff --git a/data/typelibrary/iec61131-3-1.0.0/conversion/BYTE/F_BYTE_TO_USINT.fbt b/data/typelibrary/iec61131-3-1.0.0/typelib/conversion/BYTE/F_BYTE_TO_USINT.fbt
similarity index 100%
rename from data/typelibrary/iec61131-3-1.0.0/conversion/BYTE/F_BYTE_TO_USINT.fbt
rename to data/typelibrary/iec61131-3-1.0.0/typelib/conversion/BYTE/F_BYTE_TO_USINT.fbt
diff --git a/data/typelibrary/iec61131-3-1.0.0/conversion/BYTE/F_BYTE_TO_WORD.fbt b/data/typelibrary/iec61131-3-1.0.0/typelib/conversion/BYTE/F_BYTE_TO_WORD.fbt
similarity index 100%
rename from data/typelibrary/iec61131-3-1.0.0/conversion/BYTE/F_BYTE_TO_WORD.fbt
rename to data/typelibrary/iec61131-3-1.0.0/typelib/conversion/BYTE/F_BYTE_TO_WORD.fbt
diff --git a/data/typelibrary/iec61131-3-1.0.0/conversion/DINT/F_DINT_AS_STRING.fbt b/data/typelibrary/iec61131-3-1.0.0/typelib/conversion/DINT/F_DINT_AS_STRING.fbt
similarity index 100%
rename from data/typelibrary/iec61131-3-1.0.0/conversion/DINT/F_DINT_AS_STRING.fbt
rename to data/typelibrary/iec61131-3-1.0.0/typelib/conversion/DINT/F_DINT_AS_STRING.fbt
diff --git a/data/typelibrary/iec61131-3-1.0.0/conversion/DINT/F_DINT_AS_WSTRING.fbt b/data/typelibrary/iec61131-3-1.0.0/typelib/conversion/DINT/F_DINT_AS_WSTRING.fbt
similarity index 100%
rename from data/typelibrary/iec61131-3-1.0.0/conversion/DINT/F_DINT_AS_WSTRING.fbt
rename to data/typelibrary/iec61131-3-1.0.0/typelib/conversion/DINT/F_DINT_AS_WSTRING.fbt
diff --git a/data/typelibrary/iec61131-3-1.0.0/conversion/DINT/F_DINT_TO_BYTE.fbt b/data/typelibrary/iec61131-3-1.0.0/typelib/conversion/DINT/F_DINT_TO_BYTE.fbt
similarity index 100%
rename from data/typelibrary/iec61131-3-1.0.0/conversion/DINT/F_DINT_TO_BYTE.fbt
rename to data/typelibrary/iec61131-3-1.0.0/typelib/conversion/DINT/F_DINT_TO_BYTE.fbt
diff --git a/data/typelibrary/iec61131-3-1.0.0/conversion/DINT/F_DINT_TO_DWORD.fbt b/data/typelibrary/iec61131-3-1.0.0/typelib/conversion/DINT/F_DINT_TO_DWORD.fbt
similarity index 100%
rename from data/typelibrary/iec61131-3-1.0.0/conversion/DINT/F_DINT_TO_DWORD.fbt
rename to data/typelibrary/iec61131-3-1.0.0/typelib/conversion/DINT/F_DINT_TO_DWORD.fbt
diff --git a/data/typelibrary/iec61131-3-1.0.0/conversion/DINT/F_DINT_TO_INT.fbt b/data/typelibrary/iec61131-3-1.0.0/typelib/conversion/DINT/F_DINT_TO_INT.fbt
similarity index 100%
rename from data/typelibrary/iec61131-3-1.0.0/conversion/DINT/F_DINT_TO_INT.fbt
rename to data/typelibrary/iec61131-3-1.0.0/typelib/conversion/DINT/F_DINT_TO_INT.fbt
diff --git a/data/typelibrary/iec61131-3-1.0.0/conversion/DINT/F_DINT_TO_LINT.fbt b/data/typelibrary/iec61131-3-1.0.0/typelib/conversion/DINT/F_DINT_TO_LINT.fbt
similarity index 100%
rename from data/typelibrary/iec61131-3-1.0.0/conversion/DINT/F_DINT_TO_LINT.fbt
rename to data/typelibrary/iec61131-3-1.0.0/typelib/conversion/DINT/F_DINT_TO_LINT.fbt
diff --git a/data/typelibrary/iec61131-3-1.0.0/conversion/DINT/F_DINT_TO_LREAL.fbt b/data/typelibrary/iec61131-3-1.0.0/typelib/conversion/DINT/F_DINT_TO_LREAL.fbt
similarity index 100%
rename from data/typelibrary/iec61131-3-1.0.0/conversion/DINT/F_DINT_TO_LREAL.fbt
rename to data/typelibrary/iec61131-3-1.0.0/typelib/conversion/DINT/F_DINT_TO_LREAL.fbt
diff --git a/data/typelibrary/iec61131-3-1.0.0/conversion/DINT/F_DINT_TO_LWORD.fbt b/data/typelibrary/iec61131-3-1.0.0/typelib/conversion/DINT/F_DINT_TO_LWORD.fbt
similarity index 100%
rename from data/typelibrary/iec61131-3-1.0.0/conversion/DINT/F_DINT_TO_LWORD.fbt
rename to data/typelibrary/iec61131-3-1.0.0/typelib/conversion/DINT/F_DINT_TO_LWORD.fbt
diff --git a/data/typelibrary/iec61131-3-1.0.0/conversion/DINT/F_DINT_TO_REAL.fbt b/data/typelibrary/iec61131-3-1.0.0/typelib/conversion/DINT/F_DINT_TO_REAL.fbt
similarity index 100%
rename from data/typelibrary/iec61131-3-1.0.0/conversion/DINT/F_DINT_TO_REAL.fbt
rename to data/typelibrary/iec61131-3-1.0.0/typelib/conversion/DINT/F_DINT_TO_REAL.fbt
diff --git a/data/typelibrary/iec61131-3-1.0.0/conversion/DINT/F_DINT_TO_SINT.fbt b/data/typelibrary/iec61131-3-1.0.0/typelib/conversion/DINT/F_DINT_TO_SINT.fbt
similarity index 100%
rename from data/typelibrary/iec61131-3-1.0.0/conversion/DINT/F_DINT_TO_SINT.fbt
rename to data/typelibrary/iec61131-3-1.0.0/typelib/conversion/DINT/F_DINT_TO_SINT.fbt
diff --git a/data/typelibrary/iec61131-3-1.0.0/conversion/DINT/F_DINT_TO_UDINT.fbt b/data/typelibrary/iec61131-3-1.0.0/typelib/conversion/DINT/F_DINT_TO_UDINT.fbt
similarity index 100%
rename from data/typelibrary/iec61131-3-1.0.0/conversion/DINT/F_DINT_TO_UDINT.fbt
rename to data/typelibrary/iec61131-3-1.0.0/typelib/conversion/DINT/F_DINT_TO_UDINT.fbt
diff --git a/data/typelibrary/iec61131-3-1.0.0/conversion/DINT/F_DINT_TO_UINT.fbt b/data/typelibrary/iec61131-3-1.0.0/typelib/conversion/DINT/F_DINT_TO_UINT.fbt
similarity index 100%
rename from data/typelibrary/iec61131-3-1.0.0/conversion/DINT/F_DINT_TO_UINT.fbt
rename to data/typelibrary/iec61131-3-1.0.0/typelib/conversion/DINT/F_DINT_TO_UINT.fbt
diff --git a/data/typelibrary/iec61131-3-1.0.0/conversion/DINT/F_DINT_TO_ULINT.fbt b/data/typelibrary/iec61131-3-1.0.0/typelib/conversion/DINT/F_DINT_TO_ULINT.fbt
similarity index 100%
rename from data/typelibrary/iec61131-3-1.0.0/conversion/DINT/F_DINT_TO_ULINT.fbt
rename to data/typelibrary/iec61131-3-1.0.0/typelib/conversion/DINT/F_DINT_TO_ULINT.fbt
diff --git a/data/typelibrary/iec61131-3-1.0.0/conversion/DINT/F_DINT_TO_USINT.fbt b/data/typelibrary/iec61131-3-1.0.0/typelib/conversion/DINT/F_DINT_TO_USINT.fbt
similarity index 100%
rename from data/typelibrary/iec61131-3-1.0.0/conversion/DINT/F_DINT_TO_USINT.fbt
rename to data/typelibrary/iec61131-3-1.0.0/typelib/conversion/DINT/F_DINT_TO_USINT.fbt
diff --git a/data/typelibrary/iec61131-3-1.0.0/conversion/DINT/F_DINT_TO_WORD.fbt b/data/typelibrary/iec61131-3-1.0.0/typelib/conversion/DINT/F_DINT_TO_WORD.fbt
similarity index 100%
rename from data/typelibrary/iec61131-3-1.0.0/conversion/DINT/F_DINT_TO_WORD.fbt
rename to data/typelibrary/iec61131-3-1.0.0/typelib/conversion/DINT/F_DINT_TO_WORD.fbt
diff --git a/data/typelibrary/iec61131-3-1.0.0/conversion/DT/F_DT_TO_DATE.fbt b/data/typelibrary/iec61131-3-1.0.0/typelib/conversion/DT/F_DT_TO_DATE.fbt
similarity index 100%
rename from data/typelibrary/iec61131-3-1.0.0/conversion/DT/F_DT_TO_DATE.fbt
rename to data/typelibrary/iec61131-3-1.0.0/typelib/conversion/DT/F_DT_TO_DATE.fbt
diff --git a/data/typelibrary/iec61131-3-1.0.0/conversion/DT/F_DT_TO_TOD.fbt b/data/typelibrary/iec61131-3-1.0.0/typelib/conversion/DT/F_DT_TO_TOD.fbt
similarity index 100%
rename from data/typelibrary/iec61131-3-1.0.0/conversion/DT/F_DT_TO_TOD.fbt
rename to data/typelibrary/iec61131-3-1.0.0/typelib/conversion/DT/F_DT_TO_TOD.fbt
diff --git a/data/typelibrary/iec61131-3-1.0.0/conversion/DWORD/F_DWORD_AS_STRING.fbt b/data/typelibrary/iec61131-3-1.0.0/typelib/conversion/DWORD/F_DWORD_AS_STRING.fbt
similarity index 100%
rename from data/typelibrary/iec61131-3-1.0.0/conversion/DWORD/F_DWORD_AS_STRING.fbt
rename to data/typelibrary/iec61131-3-1.0.0/typelib/conversion/DWORD/F_DWORD_AS_STRING.fbt
diff --git a/data/typelibrary/iec61131-3-1.0.0/conversion/DWORD/F_DWORD_AS_WSTRING.fbt b/data/typelibrary/iec61131-3-1.0.0/typelib/conversion/DWORD/F_DWORD_AS_WSTRING.fbt
similarity index 100%
rename from data/typelibrary/iec61131-3-1.0.0/conversion/DWORD/F_DWORD_AS_WSTRING.fbt
rename to data/typelibrary/iec61131-3-1.0.0/typelib/conversion/DWORD/F_DWORD_AS_WSTRING.fbt
diff --git a/data/typelibrary/iec61131-3-1.0.0/conversion/DWORD/F_DWORD_TO_BYTE.fbt b/data/typelibrary/iec61131-3-1.0.0/typelib/conversion/DWORD/F_DWORD_TO_BYTE.fbt
similarity index 100%
rename from data/typelibrary/iec61131-3-1.0.0/conversion/DWORD/F_DWORD_TO_BYTE.fbt
rename to data/typelibrary/iec61131-3-1.0.0/typelib/conversion/DWORD/F_DWORD_TO_BYTE.fbt
diff --git a/data/typelibrary/iec61131-3-1.0.0/conversion/DWORD/F_DWORD_TO_DINT.fbt b/data/typelibrary/iec61131-3-1.0.0/typelib/conversion/DWORD/F_DWORD_TO_DINT.fbt
similarity index 100%
rename from data/typelibrary/iec61131-3-1.0.0/conversion/DWORD/F_DWORD_TO_DINT.fbt
rename to data/typelibrary/iec61131-3-1.0.0/typelib/conversion/DWORD/F_DWORD_TO_DINT.fbt
diff --git a/data/typelibrary/iec61131-3-1.0.0/conversion/DWORD/F_DWORD_TO_INT.fbt b/data/typelibrary/iec61131-3-1.0.0/typelib/conversion/DWORD/F_DWORD_TO_INT.fbt
similarity index 100%
rename from data/typelibrary/iec61131-3-1.0.0/conversion/DWORD/F_DWORD_TO_INT.fbt
rename to data/typelibrary/iec61131-3-1.0.0/typelib/conversion/DWORD/F_DWORD_TO_INT.fbt
diff --git a/data/typelibrary/iec61131-3-1.0.0/conversion/DWORD/F_DWORD_TO_LINT.fbt b/data/typelibrary/iec61131-3-1.0.0/typelib/conversion/DWORD/F_DWORD_TO_LINT.fbt
similarity index 100%
rename from data/typelibrary/iec61131-3-1.0.0/conversion/DWORD/F_DWORD_TO_LINT.fbt
rename to data/typelibrary/iec61131-3-1.0.0/typelib/conversion/DWORD/F_DWORD_TO_LINT.fbt
diff --git a/data/typelibrary/iec61131-3-1.0.0/conversion/DWORD/F_DWORD_TO_LWORD.fbt b/data/typelibrary/iec61131-3-1.0.0/typelib/conversion/DWORD/F_DWORD_TO_LWORD.fbt
similarity index 100%
rename from data/typelibrary/iec61131-3-1.0.0/conversion/DWORD/F_DWORD_TO_LWORD.fbt
rename to data/typelibrary/iec61131-3-1.0.0/typelib/conversion/DWORD/F_DWORD_TO_LWORD.fbt
diff --git a/data/typelibrary/iec61131-3-1.0.0/conversion/DWORD/F_DWORD_TO_REAL.fbt b/data/typelibrary/iec61131-3-1.0.0/typelib/conversion/DWORD/F_DWORD_TO_REAL.fbt
similarity index 100%
rename from data/typelibrary/iec61131-3-1.0.0/conversion/DWORD/F_DWORD_TO_REAL.fbt
rename to data/typelibrary/iec61131-3-1.0.0/typelib/conversion/DWORD/F_DWORD_TO_REAL.fbt
diff --git a/data/typelibrary/iec61131-3-1.0.0/conversion/DWORD/F_DWORD_TO_SINT.fbt b/data/typelibrary/iec61131-3-1.0.0/typelib/conversion/DWORD/F_DWORD_TO_SINT.fbt
similarity index 100%
rename from data/typelibrary/iec61131-3-1.0.0/conversion/DWORD/F_DWORD_TO_SINT.fbt
rename to data/typelibrary/iec61131-3-1.0.0/typelib/conversion/DWORD/F_DWORD_TO_SINT.fbt
diff --git a/data/typelibrary/iec61131-3-1.0.0/conversion/DWORD/F_DWORD_TO_UDINT.fbt b/data/typelibrary/iec61131-3-1.0.0/typelib/conversion/DWORD/F_DWORD_TO_UDINT.fbt
similarity index 100%
rename from data/typelibrary/iec61131-3-1.0.0/conversion/DWORD/F_DWORD_TO_UDINT.fbt
rename to data/typelibrary/iec61131-3-1.0.0/typelib/conversion/DWORD/F_DWORD_TO_UDINT.fbt
diff --git a/data/typelibrary/iec61131-3-1.0.0/conversion/DWORD/F_DWORD_TO_UINT.fbt b/data/typelibrary/iec61131-3-1.0.0/typelib/conversion/DWORD/F_DWORD_TO_UINT.fbt
similarity index 100%
rename from data/typelibrary/iec61131-3-1.0.0/conversion/DWORD/F_DWORD_TO_UINT.fbt
rename to data/typelibrary/iec61131-3-1.0.0/typelib/conversion/DWORD/F_DWORD_TO_UINT.fbt
diff --git a/data/typelibrary/iec61131-3-1.0.0/conversion/DWORD/F_DWORD_TO_ULINT.fbt b/data/typelibrary/iec61131-3-1.0.0/typelib/conversion/DWORD/F_DWORD_TO_ULINT.fbt
similarity index 100%
rename from data/typelibrary/iec61131-3-1.0.0/conversion/DWORD/F_DWORD_TO_ULINT.fbt
rename to data/typelibrary/iec61131-3-1.0.0/typelib/conversion/DWORD/F_DWORD_TO_ULINT.fbt
diff --git a/data/typelibrary/iec61131-3-1.0.0/conversion/DWORD/F_DWORD_TO_USINT.fbt b/data/typelibrary/iec61131-3-1.0.0/typelib/conversion/DWORD/F_DWORD_TO_USINT.fbt
similarity index 100%
rename from data/typelibrary/iec61131-3-1.0.0/conversion/DWORD/F_DWORD_TO_USINT.fbt
rename to data/typelibrary/iec61131-3-1.0.0/typelib/conversion/DWORD/F_DWORD_TO_USINT.fbt
diff --git a/data/typelibrary/iec61131-3-1.0.0/conversion/DWORD/F_DWORD_TO_WORD.fbt b/data/typelibrary/iec61131-3-1.0.0/typelib/conversion/DWORD/F_DWORD_TO_WORD.fbt
similarity index 100%
rename from data/typelibrary/iec61131-3-1.0.0/conversion/DWORD/F_DWORD_TO_WORD.fbt
rename to data/typelibrary/iec61131-3-1.0.0/typelib/conversion/DWORD/F_DWORD_TO_WORD.fbt
diff --git a/data/typelibrary/iec61131-3-1.0.0/conversion/INT/F_INT_AS_STRING.fbt b/data/typelibrary/iec61131-3-1.0.0/typelib/conversion/INT/F_INT_AS_STRING.fbt
similarity index 100%
rename from data/typelibrary/iec61131-3-1.0.0/conversion/INT/F_INT_AS_STRING.fbt
rename to data/typelibrary/iec61131-3-1.0.0/typelib/conversion/INT/F_INT_AS_STRING.fbt
diff --git a/data/typelibrary/iec61131-3-1.0.0/conversion/INT/F_INT_AS_WSTRING.fbt b/data/typelibrary/iec61131-3-1.0.0/typelib/conversion/INT/F_INT_AS_WSTRING.fbt
similarity index 100%
rename from data/typelibrary/iec61131-3-1.0.0/conversion/INT/F_INT_AS_WSTRING.fbt
rename to data/typelibrary/iec61131-3-1.0.0/typelib/conversion/INT/F_INT_AS_WSTRING.fbt
diff --git a/data/typelibrary/iec61131-3-1.0.0/conversion/INT/F_INT_TO_BYTE.fbt b/data/typelibrary/iec61131-3-1.0.0/typelib/conversion/INT/F_INT_TO_BYTE.fbt
similarity index 100%
rename from data/typelibrary/iec61131-3-1.0.0/conversion/INT/F_INT_TO_BYTE.fbt
rename to data/typelibrary/iec61131-3-1.0.0/typelib/conversion/INT/F_INT_TO_BYTE.fbt
diff --git a/data/typelibrary/iec61131-3-1.0.0/conversion/INT/F_INT_TO_DINT.fbt b/data/typelibrary/iec61131-3-1.0.0/typelib/conversion/INT/F_INT_TO_DINT.fbt
similarity index 100%
rename from data/typelibrary/iec61131-3-1.0.0/conversion/INT/F_INT_TO_DINT.fbt
rename to data/typelibrary/iec61131-3-1.0.0/typelib/conversion/INT/F_INT_TO_DINT.fbt
diff --git a/data/typelibrary/iec61131-3-1.0.0/conversion/INT/F_INT_TO_DWORD.fbt b/data/typelibrary/iec61131-3-1.0.0/typelib/conversion/INT/F_INT_TO_DWORD.fbt
similarity index 100%
rename from data/typelibrary/iec61131-3-1.0.0/conversion/INT/F_INT_TO_DWORD.fbt
rename to data/typelibrary/iec61131-3-1.0.0/typelib/conversion/INT/F_INT_TO_DWORD.fbt
diff --git a/data/typelibrary/iec61131-3-1.0.0/conversion/INT/F_INT_TO_LINT.fbt b/data/typelibrary/iec61131-3-1.0.0/typelib/conversion/INT/F_INT_TO_LINT.fbt
similarity index 100%
rename from data/typelibrary/iec61131-3-1.0.0/conversion/INT/F_INT_TO_LINT.fbt
rename to data/typelibrary/iec61131-3-1.0.0/typelib/conversion/INT/F_INT_TO_LINT.fbt
diff --git a/data/typelibrary/iec61131-3-1.0.0/conversion/INT/F_INT_TO_LREAL.fbt b/data/typelibrary/iec61131-3-1.0.0/typelib/conversion/INT/F_INT_TO_LREAL.fbt
similarity index 100%
rename from data/typelibrary/iec61131-3-1.0.0/conversion/INT/F_INT_TO_LREAL.fbt
rename to data/typelibrary/iec61131-3-1.0.0/typelib/conversion/INT/F_INT_TO_LREAL.fbt
diff --git a/data/typelibrary/iec61131-3-1.0.0/conversion/INT/F_INT_TO_LWORD.fbt b/data/typelibrary/iec61131-3-1.0.0/typelib/conversion/INT/F_INT_TO_LWORD.fbt
similarity index 100%
rename from data/typelibrary/iec61131-3-1.0.0/conversion/INT/F_INT_TO_LWORD.fbt
rename to data/typelibrary/iec61131-3-1.0.0/typelib/conversion/INT/F_INT_TO_LWORD.fbt
diff --git a/data/typelibrary/iec61131-3-1.0.0/conversion/INT/F_INT_TO_REAL.fbt b/data/typelibrary/iec61131-3-1.0.0/typelib/conversion/INT/F_INT_TO_REAL.fbt
similarity index 100%
rename from data/typelibrary/iec61131-3-1.0.0/conversion/INT/F_INT_TO_REAL.fbt
rename to data/typelibrary/iec61131-3-1.0.0/typelib/conversion/INT/F_INT_TO_REAL.fbt
diff --git a/data/typelibrary/iec61131-3-1.0.0/conversion/INT/F_INT_TO_SINT.fbt b/data/typelibrary/iec61131-3-1.0.0/typelib/conversion/INT/F_INT_TO_SINT.fbt
similarity index 100%
rename from data/typelibrary/iec61131-3-1.0.0/conversion/INT/F_INT_TO_SINT.fbt
rename to data/typelibrary/iec61131-3-1.0.0/typelib/conversion/INT/F_INT_TO_SINT.fbt
diff --git a/data/typelibrary/iec61131-3-1.0.0/conversion/INT/F_INT_TO_UDINT.fbt b/data/typelibrary/iec61131-3-1.0.0/typelib/conversion/INT/F_INT_TO_UDINT.fbt
similarity index 100%
rename from data/typelibrary/iec61131-3-1.0.0/conversion/INT/F_INT_TO_UDINT.fbt
rename to data/typelibrary/iec61131-3-1.0.0/typelib/conversion/INT/F_INT_TO_UDINT.fbt
diff --git a/data/typelibrary/iec61131-3-1.0.0/conversion/INT/F_INT_TO_UINT.fbt b/data/typelibrary/iec61131-3-1.0.0/typelib/conversion/INT/F_INT_TO_UINT.fbt
similarity index 100%
rename from data/typelibrary/iec61131-3-1.0.0/conversion/INT/F_INT_TO_UINT.fbt
rename to data/typelibrary/iec61131-3-1.0.0/typelib/conversion/INT/F_INT_TO_UINT.fbt
diff --git a/data/typelibrary/iec61131-3-1.0.0/conversion/INT/F_INT_TO_ULINT.fbt b/data/typelibrary/iec61131-3-1.0.0/typelib/conversion/INT/F_INT_TO_ULINT.fbt
similarity index 100%
rename from data/typelibrary/iec61131-3-1.0.0/conversion/INT/F_INT_TO_ULINT.fbt
rename to data/typelibrary/iec61131-3-1.0.0/typelib/conversion/INT/F_INT_TO_ULINT.fbt
diff --git a/data/typelibrary/iec61131-3-1.0.0/conversion/INT/F_INT_TO_USINT.fbt b/data/typelibrary/iec61131-3-1.0.0/typelib/conversion/INT/F_INT_TO_USINT.fbt
similarity index 100%
rename from data/typelibrary/iec61131-3-1.0.0/conversion/INT/F_INT_TO_USINT.fbt
rename to data/typelibrary/iec61131-3-1.0.0/typelib/conversion/INT/F_INT_TO_USINT.fbt
diff --git a/data/typelibrary/iec61131-3-1.0.0/conversion/INT/F_INT_TO_WORD.fbt b/data/typelibrary/iec61131-3-1.0.0/typelib/conversion/INT/F_INT_TO_WORD.fbt
similarity index 100%
rename from data/typelibrary/iec61131-3-1.0.0/conversion/INT/F_INT_TO_WORD.fbt
rename to data/typelibrary/iec61131-3-1.0.0/typelib/conversion/INT/F_INT_TO_WORD.fbt
diff --git a/data/typelibrary/iec61131-3-1.0.0/conversion/LINT/F_LINT_AS_STRING.fbt b/data/typelibrary/iec61131-3-1.0.0/typelib/conversion/LINT/F_LINT_AS_STRING.fbt
similarity index 100%
rename from data/typelibrary/iec61131-3-1.0.0/conversion/LINT/F_LINT_AS_STRING.fbt
rename to data/typelibrary/iec61131-3-1.0.0/typelib/conversion/LINT/F_LINT_AS_STRING.fbt
diff --git a/data/typelibrary/iec61131-3-1.0.0/conversion/LINT/F_LINT_AS_WSTRING.fbt b/data/typelibrary/iec61131-3-1.0.0/typelib/conversion/LINT/F_LINT_AS_WSTRING.fbt
similarity index 100%
rename from data/typelibrary/iec61131-3-1.0.0/conversion/LINT/F_LINT_AS_WSTRING.fbt
rename to data/typelibrary/iec61131-3-1.0.0/typelib/conversion/LINT/F_LINT_AS_WSTRING.fbt
diff --git a/data/typelibrary/iec61131-3-1.0.0/conversion/LINT/F_LINT_TO_BYTE.fbt b/data/typelibrary/iec61131-3-1.0.0/typelib/conversion/LINT/F_LINT_TO_BYTE.fbt
similarity index 100%
rename from data/typelibrary/iec61131-3-1.0.0/conversion/LINT/F_LINT_TO_BYTE.fbt
rename to data/typelibrary/iec61131-3-1.0.0/typelib/conversion/LINT/F_LINT_TO_BYTE.fbt
diff --git a/data/typelibrary/iec61131-3-1.0.0/conversion/LINT/F_LINT_TO_DINT.fbt b/data/typelibrary/iec61131-3-1.0.0/typelib/conversion/LINT/F_LINT_TO_DINT.fbt
similarity index 100%
rename from data/typelibrary/iec61131-3-1.0.0/conversion/LINT/F_LINT_TO_DINT.fbt
rename to data/typelibrary/iec61131-3-1.0.0/typelib/conversion/LINT/F_LINT_TO_DINT.fbt
diff --git a/data/typelibrary/iec61131-3-1.0.0/conversion/LINT/F_LINT_TO_DWORD.fbt b/data/typelibrary/iec61131-3-1.0.0/typelib/conversion/LINT/F_LINT_TO_DWORD.fbt
similarity index 100%
rename from data/typelibrary/iec61131-3-1.0.0/conversion/LINT/F_LINT_TO_DWORD.fbt
rename to data/typelibrary/iec61131-3-1.0.0/typelib/conversion/LINT/F_LINT_TO_DWORD.fbt
diff --git a/data/typelibrary/iec61131-3-1.0.0/conversion/LINT/F_LINT_TO_INT.fbt b/data/typelibrary/iec61131-3-1.0.0/typelib/conversion/LINT/F_LINT_TO_INT.fbt
similarity index 100%
rename from data/typelibrary/iec61131-3-1.0.0/conversion/LINT/F_LINT_TO_INT.fbt
rename to data/typelibrary/iec61131-3-1.0.0/typelib/conversion/LINT/F_LINT_TO_INT.fbt
diff --git a/data/typelibrary/iec61131-3-1.0.0/conversion/LINT/F_LINT_TO_LREAL.fbt b/data/typelibrary/iec61131-3-1.0.0/typelib/conversion/LINT/F_LINT_TO_LREAL.fbt
similarity index 100%
rename from data/typelibrary/iec61131-3-1.0.0/conversion/LINT/F_LINT_TO_LREAL.fbt
rename to data/typelibrary/iec61131-3-1.0.0/typelib/conversion/LINT/F_LINT_TO_LREAL.fbt
diff --git a/data/typelibrary/iec61131-3-1.0.0/conversion/LINT/F_LINT_TO_LWORD.fbt b/data/typelibrary/iec61131-3-1.0.0/typelib/conversion/LINT/F_LINT_TO_LWORD.fbt
similarity index 100%
rename from data/typelibrary/iec61131-3-1.0.0/conversion/LINT/F_LINT_TO_LWORD.fbt
rename to data/typelibrary/iec61131-3-1.0.0/typelib/conversion/LINT/F_LINT_TO_LWORD.fbt
diff --git a/data/typelibrary/iec61131-3-1.0.0/conversion/LINT/F_LINT_TO_REAL.fbt b/data/typelibrary/iec61131-3-1.0.0/typelib/conversion/LINT/F_LINT_TO_REAL.fbt
similarity index 100%
rename from data/typelibrary/iec61131-3-1.0.0/conversion/LINT/F_LINT_TO_REAL.fbt
rename to data/typelibrary/iec61131-3-1.0.0/typelib/conversion/LINT/F_LINT_TO_REAL.fbt
diff --git a/data/typelibrary/iec61131-3-1.0.0/conversion/LINT/F_LINT_TO_SINT.fbt b/data/typelibrary/iec61131-3-1.0.0/typelib/conversion/LINT/F_LINT_TO_SINT.fbt
similarity index 100%
rename from data/typelibrary/iec61131-3-1.0.0/conversion/LINT/F_LINT_TO_SINT.fbt
rename to data/typelibrary/iec61131-3-1.0.0/typelib/conversion/LINT/F_LINT_TO_SINT.fbt
diff --git a/data/typelibrary/iec61131-3-1.0.0/conversion/LINT/F_LINT_TO_UDINT.fbt b/data/typelibrary/iec61131-3-1.0.0/typelib/conversion/LINT/F_LINT_TO_UDINT.fbt
similarity index 100%
rename from data/typelibrary/iec61131-3-1.0.0/conversion/LINT/F_LINT_TO_UDINT.fbt
rename to data/typelibrary/iec61131-3-1.0.0/typelib/conversion/LINT/F_LINT_TO_UDINT.fbt
diff --git a/data/typelibrary/iec61131-3-1.0.0/conversion/LINT/F_LINT_TO_UINT.fbt b/data/typelibrary/iec61131-3-1.0.0/typelib/conversion/LINT/F_LINT_TO_UINT.fbt
similarity index 100%
rename from data/typelibrary/iec61131-3-1.0.0/conversion/LINT/F_LINT_TO_UINT.fbt
rename to data/typelibrary/iec61131-3-1.0.0/typelib/conversion/LINT/F_LINT_TO_UINT.fbt
diff --git a/data/typelibrary/iec61131-3-1.0.0/conversion/LINT/F_LINT_TO_ULINT.fbt b/data/typelibrary/iec61131-3-1.0.0/typelib/conversion/LINT/F_LINT_TO_ULINT.fbt
similarity index 100%
rename from data/typelibrary/iec61131-3-1.0.0/conversion/LINT/F_LINT_TO_ULINT.fbt
rename to data/typelibrary/iec61131-3-1.0.0/typelib/conversion/LINT/F_LINT_TO_ULINT.fbt
diff --git a/data/typelibrary/iec61131-3-1.0.0/conversion/LINT/F_LINT_TO_USINT.fbt b/data/typelibrary/iec61131-3-1.0.0/typelib/conversion/LINT/F_LINT_TO_USINT.fbt
similarity index 100%
rename from data/typelibrary/iec61131-3-1.0.0/conversion/LINT/F_LINT_TO_USINT.fbt
rename to data/typelibrary/iec61131-3-1.0.0/typelib/conversion/LINT/F_LINT_TO_USINT.fbt
diff --git a/data/typelibrary/iec61131-3-1.0.0/conversion/LINT/F_LINT_TO_WORD.fbt b/data/typelibrary/iec61131-3-1.0.0/typelib/conversion/LINT/F_LINT_TO_WORD.fbt
similarity index 100%
rename from data/typelibrary/iec61131-3-1.0.0/conversion/LINT/F_LINT_TO_WORD.fbt
rename to data/typelibrary/iec61131-3-1.0.0/typelib/conversion/LINT/F_LINT_TO_WORD.fbt
diff --git a/data/typelibrary/iec61131-3-1.0.0/conversion/LREAL/F_LREAL_AS_STRING.fbt b/data/typelibrary/iec61131-3-1.0.0/typelib/conversion/LREAL/F_LREAL_AS_STRING.fbt
similarity index 100%
rename from data/typelibrary/iec61131-3-1.0.0/conversion/LREAL/F_LREAL_AS_STRING.fbt
rename to data/typelibrary/iec61131-3-1.0.0/typelib/conversion/LREAL/F_LREAL_AS_STRING.fbt
diff --git a/data/typelibrary/iec61131-3-1.0.0/conversion/LREAL/F_LREAL_AS_WSTRING.fbt b/data/typelibrary/iec61131-3-1.0.0/typelib/conversion/LREAL/F_LREAL_AS_WSTRING.fbt
similarity index 100%
rename from data/typelibrary/iec61131-3-1.0.0/conversion/LREAL/F_LREAL_AS_WSTRING.fbt
rename to data/typelibrary/iec61131-3-1.0.0/typelib/conversion/LREAL/F_LREAL_AS_WSTRING.fbt
diff --git a/data/typelibrary/iec61131-3-1.0.0/conversion/LREAL/F_LREAL_TO_DINT.fbt b/data/typelibrary/iec61131-3-1.0.0/typelib/conversion/LREAL/F_LREAL_TO_DINT.fbt
similarity index 100%
rename from data/typelibrary/iec61131-3-1.0.0/conversion/LREAL/F_LREAL_TO_DINT.fbt
rename to data/typelibrary/iec61131-3-1.0.0/typelib/conversion/LREAL/F_LREAL_TO_DINT.fbt
diff --git a/data/typelibrary/iec61131-3-1.0.0/conversion/LREAL/F_LREAL_TO_INT.fbt b/data/typelibrary/iec61131-3-1.0.0/typelib/conversion/LREAL/F_LREAL_TO_INT.fbt
similarity index 100%
rename from data/typelibrary/iec61131-3-1.0.0/conversion/LREAL/F_LREAL_TO_INT.fbt
rename to data/typelibrary/iec61131-3-1.0.0/typelib/conversion/LREAL/F_LREAL_TO_INT.fbt
diff --git a/data/typelibrary/iec61131-3-1.0.0/conversion/LREAL/F_LREAL_TO_LINT.fbt b/data/typelibrary/iec61131-3-1.0.0/typelib/conversion/LREAL/F_LREAL_TO_LINT.fbt
similarity index 100%
rename from data/typelibrary/iec61131-3-1.0.0/conversion/LREAL/F_LREAL_TO_LINT.fbt
rename to data/typelibrary/iec61131-3-1.0.0/typelib/conversion/LREAL/F_LREAL_TO_LINT.fbt
diff --git a/data/typelibrary/iec61131-3-1.0.0/conversion/LREAL/F_LREAL_TO_LWORD.fbt b/data/typelibrary/iec61131-3-1.0.0/typelib/conversion/LREAL/F_LREAL_TO_LWORD.fbt
similarity index 100%
rename from data/typelibrary/iec61131-3-1.0.0/conversion/LREAL/F_LREAL_TO_LWORD.fbt
rename to data/typelibrary/iec61131-3-1.0.0/typelib/conversion/LREAL/F_LREAL_TO_LWORD.fbt
diff --git a/data/typelibrary/iec61131-3-1.0.0/conversion/LREAL/F_LREAL_TO_REAL.fbt b/data/typelibrary/iec61131-3-1.0.0/typelib/conversion/LREAL/F_LREAL_TO_REAL.fbt
similarity index 100%
rename from data/typelibrary/iec61131-3-1.0.0/conversion/LREAL/F_LREAL_TO_REAL.fbt
rename to data/typelibrary/iec61131-3-1.0.0/typelib/conversion/LREAL/F_LREAL_TO_REAL.fbt
diff --git a/data/typelibrary/iec61131-3-1.0.0/conversion/LREAL/F_LREAL_TO_SINT.fbt b/data/typelibrary/iec61131-3-1.0.0/typelib/conversion/LREAL/F_LREAL_TO_SINT.fbt
similarity index 100%
rename from data/typelibrary/iec61131-3-1.0.0/conversion/LREAL/F_LREAL_TO_SINT.fbt
rename to data/typelibrary/iec61131-3-1.0.0/typelib/conversion/LREAL/F_LREAL_TO_SINT.fbt
diff --git a/data/typelibrary/iec61131-3-1.0.0/conversion/LREAL/F_LREAL_TO_UDINT.fbt b/data/typelibrary/iec61131-3-1.0.0/typelib/conversion/LREAL/F_LREAL_TO_UDINT.fbt
similarity index 100%
rename from data/typelibrary/iec61131-3-1.0.0/conversion/LREAL/F_LREAL_TO_UDINT.fbt
rename to data/typelibrary/iec61131-3-1.0.0/typelib/conversion/LREAL/F_LREAL_TO_UDINT.fbt
diff --git a/data/typelibrary/iec61131-3-1.0.0/conversion/LREAL/F_LREAL_TO_UINT.fbt b/data/typelibrary/iec61131-3-1.0.0/typelib/conversion/LREAL/F_LREAL_TO_UINT.fbt
similarity index 100%
rename from data/typelibrary/iec61131-3-1.0.0/conversion/LREAL/F_LREAL_TO_UINT.fbt
rename to data/typelibrary/iec61131-3-1.0.0/typelib/conversion/LREAL/F_LREAL_TO_UINT.fbt
diff --git a/data/typelibrary/iec61131-3-1.0.0/conversion/LREAL/F_LREAL_TO_ULINT.fbt b/data/typelibrary/iec61131-3-1.0.0/typelib/conversion/LREAL/F_LREAL_TO_ULINT.fbt
similarity index 100%
rename from data/typelibrary/iec61131-3-1.0.0/conversion/LREAL/F_LREAL_TO_ULINT.fbt
rename to data/typelibrary/iec61131-3-1.0.0/typelib/conversion/LREAL/F_LREAL_TO_ULINT.fbt
diff --git a/data/typelibrary/iec61131-3-1.0.0/conversion/LREAL/F_LREAL_TO_USINT.fbt b/data/typelibrary/iec61131-3-1.0.0/typelib/conversion/LREAL/F_LREAL_TO_USINT.fbt
similarity index 100%
rename from data/typelibrary/iec61131-3-1.0.0/conversion/LREAL/F_LREAL_TO_USINT.fbt
rename to data/typelibrary/iec61131-3-1.0.0/typelib/conversion/LREAL/F_LREAL_TO_USINT.fbt
diff --git a/data/typelibrary/iec61131-3-1.0.0/conversion/LWORD/F_LWORD_AS_STRING.fbt b/data/typelibrary/iec61131-3-1.0.0/typelib/conversion/LWORD/F_LWORD_AS_STRING.fbt
similarity index 100%
rename from data/typelibrary/iec61131-3-1.0.0/conversion/LWORD/F_LWORD_AS_STRING.fbt
rename to data/typelibrary/iec61131-3-1.0.0/typelib/conversion/LWORD/F_LWORD_AS_STRING.fbt
diff --git a/data/typelibrary/iec61131-3-1.0.0/conversion/LWORD/F_LWORD_AS_WSTRING.fbt b/data/typelibrary/iec61131-3-1.0.0/typelib/conversion/LWORD/F_LWORD_AS_WSTRING.fbt
similarity index 100%
rename from data/typelibrary/iec61131-3-1.0.0/conversion/LWORD/F_LWORD_AS_WSTRING.fbt
rename to data/typelibrary/iec61131-3-1.0.0/typelib/conversion/LWORD/F_LWORD_AS_WSTRING.fbt
diff --git a/data/typelibrary/iec61131-3-1.0.0/conversion/LWORD/F_LWORD_TO_BYTE.fbt b/data/typelibrary/iec61131-3-1.0.0/typelib/conversion/LWORD/F_LWORD_TO_BYTE.fbt
similarity index 100%
rename from data/typelibrary/iec61131-3-1.0.0/conversion/LWORD/F_LWORD_TO_BYTE.fbt
rename to data/typelibrary/iec61131-3-1.0.0/typelib/conversion/LWORD/F_LWORD_TO_BYTE.fbt
diff --git a/data/typelibrary/iec61131-3-1.0.0/conversion/LWORD/F_LWORD_TO_DINT.fbt b/data/typelibrary/iec61131-3-1.0.0/typelib/conversion/LWORD/F_LWORD_TO_DINT.fbt
similarity index 100%
rename from data/typelibrary/iec61131-3-1.0.0/conversion/LWORD/F_LWORD_TO_DINT.fbt
rename to data/typelibrary/iec61131-3-1.0.0/typelib/conversion/LWORD/F_LWORD_TO_DINT.fbt
diff --git a/data/typelibrary/iec61131-3-1.0.0/conversion/LWORD/F_LWORD_TO_DWORD.fbt b/data/typelibrary/iec61131-3-1.0.0/typelib/conversion/LWORD/F_LWORD_TO_DWORD.fbt
similarity index 100%
rename from data/typelibrary/iec61131-3-1.0.0/conversion/LWORD/F_LWORD_TO_DWORD.fbt
rename to data/typelibrary/iec61131-3-1.0.0/typelib/conversion/LWORD/F_LWORD_TO_DWORD.fbt
diff --git a/data/typelibrary/iec61131-3-1.0.0/conversion/LWORD/F_LWORD_TO_INT.fbt b/data/typelibrary/iec61131-3-1.0.0/typelib/conversion/LWORD/F_LWORD_TO_INT.fbt
similarity index 100%
rename from data/typelibrary/iec61131-3-1.0.0/conversion/LWORD/F_LWORD_TO_INT.fbt
rename to data/typelibrary/iec61131-3-1.0.0/typelib/conversion/LWORD/F_LWORD_TO_INT.fbt
diff --git a/data/typelibrary/iec61131-3-1.0.0/conversion/LWORD/F_LWORD_TO_LINT.fbt b/data/typelibrary/iec61131-3-1.0.0/typelib/conversion/LWORD/F_LWORD_TO_LINT.fbt
similarity index 100%
rename from data/typelibrary/iec61131-3-1.0.0/conversion/LWORD/F_LWORD_TO_LINT.fbt
rename to data/typelibrary/iec61131-3-1.0.0/typelib/conversion/LWORD/F_LWORD_TO_LINT.fbt
diff --git a/data/typelibrary/iec61131-3-1.0.0/conversion/LWORD/F_LWORD_TO_LREAL.fbt b/data/typelibrary/iec61131-3-1.0.0/typelib/conversion/LWORD/F_LWORD_TO_LREAL.fbt
similarity index 100%
rename from data/typelibrary/iec61131-3-1.0.0/conversion/LWORD/F_LWORD_TO_LREAL.fbt
rename to data/typelibrary/iec61131-3-1.0.0/typelib/conversion/LWORD/F_LWORD_TO_LREAL.fbt
diff --git a/data/typelibrary/iec61131-3-1.0.0/conversion/LWORD/F_LWORD_TO_SINT.fbt b/data/typelibrary/iec61131-3-1.0.0/typelib/conversion/LWORD/F_LWORD_TO_SINT.fbt
similarity index 100%
rename from data/typelibrary/iec61131-3-1.0.0/conversion/LWORD/F_LWORD_TO_SINT.fbt
rename to data/typelibrary/iec61131-3-1.0.0/typelib/conversion/LWORD/F_LWORD_TO_SINT.fbt
diff --git a/data/typelibrary/iec61131-3-1.0.0/conversion/LWORD/F_LWORD_TO_UDINT.fbt b/data/typelibrary/iec61131-3-1.0.0/typelib/conversion/LWORD/F_LWORD_TO_UDINT.fbt
similarity index 100%
rename from data/typelibrary/iec61131-3-1.0.0/conversion/LWORD/F_LWORD_TO_UDINT.fbt
rename to data/typelibrary/iec61131-3-1.0.0/typelib/conversion/LWORD/F_LWORD_TO_UDINT.fbt
diff --git a/data/typelibrary/iec61131-3-1.0.0/conversion/LWORD/F_LWORD_TO_UINT.fbt b/data/typelibrary/iec61131-3-1.0.0/typelib/conversion/LWORD/F_LWORD_TO_UINT.fbt
similarity index 100%
rename from data/typelibrary/iec61131-3-1.0.0/conversion/LWORD/F_LWORD_TO_UINT.fbt
rename to data/typelibrary/iec61131-3-1.0.0/typelib/conversion/LWORD/F_LWORD_TO_UINT.fbt
diff --git a/data/typelibrary/iec61131-3-1.0.0/conversion/LWORD/F_LWORD_TO_ULINT.fbt b/data/typelibrary/iec61131-3-1.0.0/typelib/conversion/LWORD/F_LWORD_TO_ULINT.fbt
similarity index 100%
rename from data/typelibrary/iec61131-3-1.0.0/conversion/LWORD/F_LWORD_TO_ULINT.fbt
rename to data/typelibrary/iec61131-3-1.0.0/typelib/conversion/LWORD/F_LWORD_TO_ULINT.fbt
diff --git a/data/typelibrary/iec61131-3-1.0.0/conversion/LWORD/F_LWORD_TO_USINT.fbt b/data/typelibrary/iec61131-3-1.0.0/typelib/conversion/LWORD/F_LWORD_TO_USINT.fbt
similarity index 100%
rename from data/typelibrary/iec61131-3-1.0.0/conversion/LWORD/F_LWORD_TO_USINT.fbt
rename to data/typelibrary/iec61131-3-1.0.0/typelib/conversion/LWORD/F_LWORD_TO_USINT.fbt
diff --git a/data/typelibrary/iec61131-3-1.0.0/conversion/LWORD/F_LWORD_TO_WORD.fbt b/data/typelibrary/iec61131-3-1.0.0/typelib/conversion/LWORD/F_LWORD_TO_WORD.fbt
similarity index 100%
rename from data/typelibrary/iec61131-3-1.0.0/conversion/LWORD/F_LWORD_TO_WORD.fbt
rename to data/typelibrary/iec61131-3-1.0.0/typelib/conversion/LWORD/F_LWORD_TO_WORD.fbt
diff --git a/data/typelibrary/iec61131-3-1.0.0/conversion/REAL/F_REAL_AS_STRING.fbt b/data/typelibrary/iec61131-3-1.0.0/typelib/conversion/REAL/F_REAL_AS_STRING.fbt
similarity index 100%
rename from data/typelibrary/iec61131-3-1.0.0/conversion/REAL/F_REAL_AS_STRING.fbt
rename to data/typelibrary/iec61131-3-1.0.0/typelib/conversion/REAL/F_REAL_AS_STRING.fbt
diff --git a/data/typelibrary/iec61131-3-1.0.0/conversion/REAL/F_REAL_AS_WSTRING.fbt b/data/typelibrary/iec61131-3-1.0.0/typelib/conversion/REAL/F_REAL_AS_WSTRING.fbt
similarity index 100%
rename from data/typelibrary/iec61131-3-1.0.0/conversion/REAL/F_REAL_AS_WSTRING.fbt
rename to data/typelibrary/iec61131-3-1.0.0/typelib/conversion/REAL/F_REAL_AS_WSTRING.fbt
diff --git a/data/typelibrary/iec61131-3-1.0.0/conversion/REAL/F_REAL_TO_DINT.fbt b/data/typelibrary/iec61131-3-1.0.0/typelib/conversion/REAL/F_REAL_TO_DINT.fbt
similarity index 100%
rename from data/typelibrary/iec61131-3-1.0.0/conversion/REAL/F_REAL_TO_DINT.fbt
rename to data/typelibrary/iec61131-3-1.0.0/typelib/conversion/REAL/F_REAL_TO_DINT.fbt
diff --git a/data/typelibrary/iec61131-3-1.0.0/conversion/REAL/F_REAL_TO_DWORD.fbt b/data/typelibrary/iec61131-3-1.0.0/typelib/conversion/REAL/F_REAL_TO_DWORD.fbt
similarity index 100%
rename from data/typelibrary/iec61131-3-1.0.0/conversion/REAL/F_REAL_TO_DWORD.fbt
rename to data/typelibrary/iec61131-3-1.0.0/typelib/conversion/REAL/F_REAL_TO_DWORD.fbt
diff --git a/data/typelibrary/iec61131-3-1.0.0/conversion/REAL/F_REAL_TO_INT.fbt b/data/typelibrary/iec61131-3-1.0.0/typelib/conversion/REAL/F_REAL_TO_INT.fbt
similarity index 100%
rename from data/typelibrary/iec61131-3-1.0.0/conversion/REAL/F_REAL_TO_INT.fbt
rename to data/typelibrary/iec61131-3-1.0.0/typelib/conversion/REAL/F_REAL_TO_INT.fbt
diff --git a/data/typelibrary/iec61131-3-1.0.0/conversion/REAL/F_REAL_TO_LINT.fbt b/data/typelibrary/iec61131-3-1.0.0/typelib/conversion/REAL/F_REAL_TO_LINT.fbt
similarity index 100%
rename from data/typelibrary/iec61131-3-1.0.0/conversion/REAL/F_REAL_TO_LINT.fbt
rename to data/typelibrary/iec61131-3-1.0.0/typelib/conversion/REAL/F_REAL_TO_LINT.fbt
diff --git a/data/typelibrary/iec61131-3-1.0.0/conversion/REAL/F_REAL_TO_LREAL.fbt b/data/typelibrary/iec61131-3-1.0.0/typelib/conversion/REAL/F_REAL_TO_LREAL.fbt
similarity index 100%
rename from data/typelibrary/iec61131-3-1.0.0/conversion/REAL/F_REAL_TO_LREAL.fbt
rename to data/typelibrary/iec61131-3-1.0.0/typelib/conversion/REAL/F_REAL_TO_LREAL.fbt
diff --git a/data/typelibrary/iec61131-3-1.0.0/conversion/REAL/F_REAL_TO_SINT.fbt b/data/typelibrary/iec61131-3-1.0.0/typelib/conversion/REAL/F_REAL_TO_SINT.fbt
similarity index 100%
rename from data/typelibrary/iec61131-3-1.0.0/conversion/REAL/F_REAL_TO_SINT.fbt
rename to data/typelibrary/iec61131-3-1.0.0/typelib/conversion/REAL/F_REAL_TO_SINT.fbt
diff --git a/data/typelibrary/iec61131-3-1.0.0/conversion/REAL/F_REAL_TO_UDINT.fbt b/data/typelibrary/iec61131-3-1.0.0/typelib/conversion/REAL/F_REAL_TO_UDINT.fbt
similarity index 100%
rename from data/typelibrary/iec61131-3-1.0.0/conversion/REAL/F_REAL_TO_UDINT.fbt
rename to data/typelibrary/iec61131-3-1.0.0/typelib/conversion/REAL/F_REAL_TO_UDINT.fbt
diff --git a/data/typelibrary/iec61131-3-1.0.0/conversion/REAL/F_REAL_TO_UINT.fbt b/data/typelibrary/iec61131-3-1.0.0/typelib/conversion/REAL/F_REAL_TO_UINT.fbt
similarity index 100%
rename from data/typelibrary/iec61131-3-1.0.0/conversion/REAL/F_REAL_TO_UINT.fbt
rename to data/typelibrary/iec61131-3-1.0.0/typelib/conversion/REAL/F_REAL_TO_UINT.fbt
diff --git a/data/typelibrary/iec61131-3-1.0.0/conversion/REAL/F_REAL_TO_ULINT.fbt b/data/typelibrary/iec61131-3-1.0.0/typelib/conversion/REAL/F_REAL_TO_ULINT.fbt
similarity index 100%
rename from data/typelibrary/iec61131-3-1.0.0/conversion/REAL/F_REAL_TO_ULINT.fbt
rename to data/typelibrary/iec61131-3-1.0.0/typelib/conversion/REAL/F_REAL_TO_ULINT.fbt
diff --git a/data/typelibrary/iec61131-3-1.0.0/conversion/REAL/F_REAL_TO_USINT.fbt b/data/typelibrary/iec61131-3-1.0.0/typelib/conversion/REAL/F_REAL_TO_USINT.fbt
similarity index 100%
rename from data/typelibrary/iec61131-3-1.0.0/conversion/REAL/F_REAL_TO_USINT.fbt
rename to data/typelibrary/iec61131-3-1.0.0/typelib/conversion/REAL/F_REAL_TO_USINT.fbt
diff --git a/data/typelibrary/iec61131-3-1.0.0/conversion/SINT/F_SINT_AS_STRING.fbt b/data/typelibrary/iec61131-3-1.0.0/typelib/conversion/SINT/F_SINT_AS_STRING.fbt
similarity index 100%
rename from data/typelibrary/iec61131-3-1.0.0/conversion/SINT/F_SINT_AS_STRING.fbt
rename to data/typelibrary/iec61131-3-1.0.0/typelib/conversion/SINT/F_SINT_AS_STRING.fbt
diff --git a/data/typelibrary/iec61131-3-1.0.0/conversion/SINT/F_SINT_AS_WSTRING.fbt b/data/typelibrary/iec61131-3-1.0.0/typelib/conversion/SINT/F_SINT_AS_WSTRING.fbt
similarity index 100%
rename from data/typelibrary/iec61131-3-1.0.0/conversion/SINT/F_SINT_AS_WSTRING.fbt
rename to data/typelibrary/iec61131-3-1.0.0/typelib/conversion/SINT/F_SINT_AS_WSTRING.fbt
diff --git a/data/typelibrary/iec61131-3-1.0.0/conversion/SINT/F_SINT_TO_BYTE.fbt b/data/typelibrary/iec61131-3-1.0.0/typelib/conversion/SINT/F_SINT_TO_BYTE.fbt
similarity index 100%
rename from data/typelibrary/iec61131-3-1.0.0/conversion/SINT/F_SINT_TO_BYTE.fbt
rename to data/typelibrary/iec61131-3-1.0.0/typelib/conversion/SINT/F_SINT_TO_BYTE.fbt
diff --git a/data/typelibrary/iec61131-3-1.0.0/conversion/SINT/F_SINT_TO_DINT.fbt b/data/typelibrary/iec61131-3-1.0.0/typelib/conversion/SINT/F_SINT_TO_DINT.fbt
similarity index 100%
rename from data/typelibrary/iec61131-3-1.0.0/conversion/SINT/F_SINT_TO_DINT.fbt
rename to data/typelibrary/iec61131-3-1.0.0/typelib/conversion/SINT/F_SINT_TO_DINT.fbt
diff --git a/data/typelibrary/iec61131-3-1.0.0/conversion/SINT/F_SINT_TO_DWORD.fbt b/data/typelibrary/iec61131-3-1.0.0/typelib/conversion/SINT/F_SINT_TO_DWORD.fbt
similarity index 100%
rename from data/typelibrary/iec61131-3-1.0.0/conversion/SINT/F_SINT_TO_DWORD.fbt
rename to data/typelibrary/iec61131-3-1.0.0/typelib/conversion/SINT/F_SINT_TO_DWORD.fbt
diff --git a/data/typelibrary/iec61131-3-1.0.0/conversion/SINT/F_SINT_TO_INT.fbt b/data/typelibrary/iec61131-3-1.0.0/typelib/conversion/SINT/F_SINT_TO_INT.fbt
similarity index 100%
rename from data/typelibrary/iec61131-3-1.0.0/conversion/SINT/F_SINT_TO_INT.fbt
rename to data/typelibrary/iec61131-3-1.0.0/typelib/conversion/SINT/F_SINT_TO_INT.fbt
diff --git a/data/typelibrary/iec61131-3-1.0.0/conversion/SINT/F_SINT_TO_LINT.fbt b/data/typelibrary/iec61131-3-1.0.0/typelib/conversion/SINT/F_SINT_TO_LINT.fbt
similarity index 100%
rename from data/typelibrary/iec61131-3-1.0.0/conversion/SINT/F_SINT_TO_LINT.fbt
rename to data/typelibrary/iec61131-3-1.0.0/typelib/conversion/SINT/F_SINT_TO_LINT.fbt
diff --git a/data/typelibrary/iec61131-3-1.0.0/conversion/SINT/F_SINT_TO_LREAL.fbt b/data/typelibrary/iec61131-3-1.0.0/typelib/conversion/SINT/F_SINT_TO_LREAL.fbt
similarity index 100%
rename from data/typelibrary/iec61131-3-1.0.0/conversion/SINT/F_SINT_TO_LREAL.fbt
rename to data/typelibrary/iec61131-3-1.0.0/typelib/conversion/SINT/F_SINT_TO_LREAL.fbt
diff --git a/data/typelibrary/iec61131-3-1.0.0/conversion/SINT/F_SINT_TO_LWORD.fbt b/data/typelibrary/iec61131-3-1.0.0/typelib/conversion/SINT/F_SINT_TO_LWORD.fbt
similarity index 100%
rename from data/typelibrary/iec61131-3-1.0.0/conversion/SINT/F_SINT_TO_LWORD.fbt
rename to data/typelibrary/iec61131-3-1.0.0/typelib/conversion/SINT/F_SINT_TO_LWORD.fbt
diff --git a/data/typelibrary/iec61131-3-1.0.0/conversion/SINT/F_SINT_TO_REAL.fbt b/data/typelibrary/iec61131-3-1.0.0/typelib/conversion/SINT/F_SINT_TO_REAL.fbt
similarity index 100%
rename from data/typelibrary/iec61131-3-1.0.0/conversion/SINT/F_SINT_TO_REAL.fbt
rename to data/typelibrary/iec61131-3-1.0.0/typelib/conversion/SINT/F_SINT_TO_REAL.fbt
diff --git a/data/typelibrary/iec61131-3-1.0.0/conversion/SINT/F_SINT_TO_UDINT.fbt b/data/typelibrary/iec61131-3-1.0.0/typelib/conversion/SINT/F_SINT_TO_UDINT.fbt
similarity index 100%
rename from data/typelibrary/iec61131-3-1.0.0/conversion/SINT/F_SINT_TO_UDINT.fbt
rename to data/typelibrary/iec61131-3-1.0.0/typelib/conversion/SINT/F_SINT_TO_UDINT.fbt
diff --git a/data/typelibrary/iec61131-3-1.0.0/conversion/SINT/F_SINT_TO_UINT.fbt b/data/typelibrary/iec61131-3-1.0.0/typelib/conversion/SINT/F_SINT_TO_UINT.fbt
similarity index 100%
rename from data/typelibrary/iec61131-3-1.0.0/conversion/SINT/F_SINT_TO_UINT.fbt
rename to data/typelibrary/iec61131-3-1.0.0/typelib/conversion/SINT/F_SINT_TO_UINT.fbt
diff --git a/data/typelibrary/iec61131-3-1.0.0/conversion/SINT/F_SINT_TO_ULINT.fbt b/data/typelibrary/iec61131-3-1.0.0/typelib/conversion/SINT/F_SINT_TO_ULINT.fbt
similarity index 100%
rename from data/typelibrary/iec61131-3-1.0.0/conversion/SINT/F_SINT_TO_ULINT.fbt
rename to data/typelibrary/iec61131-3-1.0.0/typelib/conversion/SINT/F_SINT_TO_ULINT.fbt
diff --git a/data/typelibrary/iec61131-3-1.0.0/conversion/SINT/F_SINT_TO_USINT.fbt b/data/typelibrary/iec61131-3-1.0.0/typelib/conversion/SINT/F_SINT_TO_USINT.fbt
similarity index 100%
rename from data/typelibrary/iec61131-3-1.0.0/conversion/SINT/F_SINT_TO_USINT.fbt
rename to data/typelibrary/iec61131-3-1.0.0/typelib/conversion/SINT/F_SINT_TO_USINT.fbt
diff --git a/data/typelibrary/iec61131-3-1.0.0/conversion/SINT/F_SINT_TO_WORD.fbt b/data/typelibrary/iec61131-3-1.0.0/typelib/conversion/SINT/F_SINT_TO_WORD.fbt
similarity index 100%
rename from data/typelibrary/iec61131-3-1.0.0/conversion/SINT/F_SINT_TO_WORD.fbt
rename to data/typelibrary/iec61131-3-1.0.0/typelib/conversion/SINT/F_SINT_TO_WORD.fbt
diff --git a/data/typelibrary/iec61131-3-1.0.0/conversion/STRING/F_STRING_AS_BOOL.fbt b/data/typelibrary/iec61131-3-1.0.0/typelib/conversion/STRING/F_STRING_AS_BOOL.fbt
similarity index 100%
rename from data/typelibrary/iec61131-3-1.0.0/conversion/STRING/F_STRING_AS_BOOL.fbt
rename to data/typelibrary/iec61131-3-1.0.0/typelib/conversion/STRING/F_STRING_AS_BOOL.fbt
diff --git a/data/typelibrary/iec61131-3-1.0.0/conversion/STRING/F_STRING_AS_BYTE.fbt b/data/typelibrary/iec61131-3-1.0.0/typelib/conversion/STRING/F_STRING_AS_BYTE.fbt
similarity index 100%
rename from data/typelibrary/iec61131-3-1.0.0/conversion/STRING/F_STRING_AS_BYTE.fbt
rename to data/typelibrary/iec61131-3-1.0.0/typelib/conversion/STRING/F_STRING_AS_BYTE.fbt
diff --git a/data/typelibrary/iec61131-3-1.0.0/conversion/STRING/F_STRING_AS_DINT.fbt b/data/typelibrary/iec61131-3-1.0.0/typelib/conversion/STRING/F_STRING_AS_DINT.fbt
similarity index 100%
rename from data/typelibrary/iec61131-3-1.0.0/conversion/STRING/F_STRING_AS_DINT.fbt
rename to data/typelibrary/iec61131-3-1.0.0/typelib/conversion/STRING/F_STRING_AS_DINT.fbt
diff --git a/data/typelibrary/iec61131-3-1.0.0/conversion/STRING/F_STRING_AS_DWORD.fbt b/data/typelibrary/iec61131-3-1.0.0/typelib/conversion/STRING/F_STRING_AS_DWORD.fbt
similarity index 100%
rename from data/typelibrary/iec61131-3-1.0.0/conversion/STRING/F_STRING_AS_DWORD.fbt
rename to data/typelibrary/iec61131-3-1.0.0/typelib/conversion/STRING/F_STRING_AS_DWORD.fbt
diff --git a/data/typelibrary/iec61131-3-1.0.0/conversion/STRING/F_STRING_AS_INT.fbt b/data/typelibrary/iec61131-3-1.0.0/typelib/conversion/STRING/F_STRING_AS_INT.fbt
similarity index 100%
rename from data/typelibrary/iec61131-3-1.0.0/conversion/STRING/F_STRING_AS_INT.fbt
rename to data/typelibrary/iec61131-3-1.0.0/typelib/conversion/STRING/F_STRING_AS_INT.fbt
diff --git a/data/typelibrary/iec61131-3-1.0.0/conversion/STRING/F_STRING_AS_LINT.fbt b/data/typelibrary/iec61131-3-1.0.0/typelib/conversion/STRING/F_STRING_AS_LINT.fbt
similarity index 100%
rename from data/typelibrary/iec61131-3-1.0.0/conversion/STRING/F_STRING_AS_LINT.fbt
rename to data/typelibrary/iec61131-3-1.0.0/typelib/conversion/STRING/F_STRING_AS_LINT.fbt
diff --git a/data/typelibrary/iec61131-3-1.0.0/conversion/STRING/F_STRING_AS_LREAL.fbt b/data/typelibrary/iec61131-3-1.0.0/typelib/conversion/STRING/F_STRING_AS_LREAL.fbt
similarity index 100%
rename from data/typelibrary/iec61131-3-1.0.0/conversion/STRING/F_STRING_AS_LREAL.fbt
rename to data/typelibrary/iec61131-3-1.0.0/typelib/conversion/STRING/F_STRING_AS_LREAL.fbt
diff --git a/data/typelibrary/iec61131-3-1.0.0/conversion/STRING/F_STRING_AS_LWORD.fbt b/data/typelibrary/iec61131-3-1.0.0/typelib/conversion/STRING/F_STRING_AS_LWORD.fbt
similarity index 100%
rename from data/typelibrary/iec61131-3-1.0.0/conversion/STRING/F_STRING_AS_LWORD.fbt
rename to data/typelibrary/iec61131-3-1.0.0/typelib/conversion/STRING/F_STRING_AS_LWORD.fbt
diff --git a/data/typelibrary/iec61131-3-1.0.0/conversion/STRING/F_STRING_AS_REAL.fbt b/data/typelibrary/iec61131-3-1.0.0/typelib/conversion/STRING/F_STRING_AS_REAL.fbt
similarity index 100%
rename from data/typelibrary/iec61131-3-1.0.0/conversion/STRING/F_STRING_AS_REAL.fbt
rename to data/typelibrary/iec61131-3-1.0.0/typelib/conversion/STRING/F_STRING_AS_REAL.fbt
diff --git a/data/typelibrary/iec61131-3-1.0.0/conversion/STRING/F_STRING_AS_SINT.fbt b/data/typelibrary/iec61131-3-1.0.0/typelib/conversion/STRING/F_STRING_AS_SINT.fbt
similarity index 100%
rename from data/typelibrary/iec61131-3-1.0.0/conversion/STRING/F_STRING_AS_SINT.fbt
rename to data/typelibrary/iec61131-3-1.0.0/typelib/conversion/STRING/F_STRING_AS_SINT.fbt
diff --git a/data/typelibrary/iec61131-3-1.0.0/conversion/STRING/F_STRING_AS_TIME.fbt b/data/typelibrary/iec61131-3-1.0.0/typelib/conversion/STRING/F_STRING_AS_TIME.fbt
similarity index 100%
rename from data/typelibrary/iec61131-3-1.0.0/conversion/STRING/F_STRING_AS_TIME.fbt
rename to data/typelibrary/iec61131-3-1.0.0/typelib/conversion/STRING/F_STRING_AS_TIME.fbt
diff --git a/data/typelibrary/iec61131-3-1.0.0/conversion/STRING/F_STRING_AS_UDINT.fbt b/data/typelibrary/iec61131-3-1.0.0/typelib/conversion/STRING/F_STRING_AS_UDINT.fbt
similarity index 100%
rename from data/typelibrary/iec61131-3-1.0.0/conversion/STRING/F_STRING_AS_UDINT.fbt
rename to data/typelibrary/iec61131-3-1.0.0/typelib/conversion/STRING/F_STRING_AS_UDINT.fbt
diff --git a/data/typelibrary/iec61131-3-1.0.0/conversion/STRING/F_STRING_AS_UINT.fbt b/data/typelibrary/iec61131-3-1.0.0/typelib/conversion/STRING/F_STRING_AS_UINT.fbt
similarity index 100%
rename from data/typelibrary/iec61131-3-1.0.0/conversion/STRING/F_STRING_AS_UINT.fbt
rename to data/typelibrary/iec61131-3-1.0.0/typelib/conversion/STRING/F_STRING_AS_UINT.fbt
diff --git a/data/typelibrary/iec61131-3-1.0.0/conversion/STRING/F_STRING_AS_ULINT.fbt b/data/typelibrary/iec61131-3-1.0.0/typelib/conversion/STRING/F_STRING_AS_ULINT.fbt
similarity index 100%
rename from data/typelibrary/iec61131-3-1.0.0/conversion/STRING/F_STRING_AS_ULINT.fbt
rename to data/typelibrary/iec61131-3-1.0.0/typelib/conversion/STRING/F_STRING_AS_ULINT.fbt
diff --git a/data/typelibrary/iec61131-3-1.0.0/conversion/STRING/F_STRING_AS_USINT.fbt b/data/typelibrary/iec61131-3-1.0.0/typelib/conversion/STRING/F_STRING_AS_USINT.fbt
similarity index 100%
rename from data/typelibrary/iec61131-3-1.0.0/conversion/STRING/F_STRING_AS_USINT.fbt
rename to data/typelibrary/iec61131-3-1.0.0/typelib/conversion/STRING/F_STRING_AS_USINT.fbt
diff --git a/data/typelibrary/iec61131-3-1.0.0/conversion/STRING/F_STRING_AS_WORD.fbt b/data/typelibrary/iec61131-3-1.0.0/typelib/conversion/STRING/F_STRING_AS_WORD.fbt
similarity index 100%
rename from data/typelibrary/iec61131-3-1.0.0/conversion/STRING/F_STRING_AS_WORD.fbt
rename to data/typelibrary/iec61131-3-1.0.0/typelib/conversion/STRING/F_STRING_AS_WORD.fbt
diff --git a/data/typelibrary/iec61131-3-1.0.0/conversion/STRING/F_STRING_TO_WSTRING.fbt b/data/typelibrary/iec61131-3-1.0.0/typelib/conversion/STRING/F_STRING_TO_WSTRING.fbt
similarity index 100%
rename from data/typelibrary/iec61131-3-1.0.0/conversion/STRING/F_STRING_TO_WSTRING.fbt
rename to data/typelibrary/iec61131-3-1.0.0/typelib/conversion/STRING/F_STRING_TO_WSTRING.fbt
diff --git a/data/typelibrary/iec61131-3-1.0.0/conversion/TIME/F_TIME_AS_STRING.fbt b/data/typelibrary/iec61131-3-1.0.0/typelib/conversion/TIME/F_TIME_AS_STRING.fbt
similarity index 100%
rename from data/typelibrary/iec61131-3-1.0.0/conversion/TIME/F_TIME_AS_STRING.fbt
rename to data/typelibrary/iec61131-3-1.0.0/typelib/conversion/TIME/F_TIME_AS_STRING.fbt
diff --git a/data/typelibrary/iec61131-3-1.0.0/conversion/TIME/F_TIME_AS_WSTRING.fbt b/data/typelibrary/iec61131-3-1.0.0/typelib/conversion/TIME/F_TIME_AS_WSTRING.fbt
similarity index 100%
rename from data/typelibrary/iec61131-3-1.0.0/conversion/TIME/F_TIME_AS_WSTRING.fbt
rename to data/typelibrary/iec61131-3-1.0.0/typelib/conversion/TIME/F_TIME_AS_WSTRING.fbt
diff --git a/data/typelibrary/iec61131-3-1.0.0/conversion/TIME/F_TIME_IN_MS_TO_DINT.fbt b/data/typelibrary/iec61131-3-1.0.0/typelib/conversion/TIME/F_TIME_IN_MS_TO_DINT.fbt
similarity index 100%
rename from data/typelibrary/iec61131-3-1.0.0/conversion/TIME/F_TIME_IN_MS_TO_DINT.fbt
rename to data/typelibrary/iec61131-3-1.0.0/typelib/conversion/TIME/F_TIME_IN_MS_TO_DINT.fbt
diff --git a/data/typelibrary/iec61131-3-1.0.0/conversion/TIME/F_TIME_IN_MS_TO_LINT.fbt b/data/typelibrary/iec61131-3-1.0.0/typelib/conversion/TIME/F_TIME_IN_MS_TO_LINT.fbt
similarity index 100%
rename from data/typelibrary/iec61131-3-1.0.0/conversion/TIME/F_TIME_IN_MS_TO_LINT.fbt
rename to data/typelibrary/iec61131-3-1.0.0/typelib/conversion/TIME/F_TIME_IN_MS_TO_LINT.fbt
diff --git a/data/typelibrary/iec61131-3-1.0.0/conversion/TIME/F_TIME_IN_MS_TO_LREAL.fbt b/data/typelibrary/iec61131-3-1.0.0/typelib/conversion/TIME/F_TIME_IN_MS_TO_LREAL.fbt
similarity index 100%
rename from data/typelibrary/iec61131-3-1.0.0/conversion/TIME/F_TIME_IN_MS_TO_LREAL.fbt
rename to data/typelibrary/iec61131-3-1.0.0/typelib/conversion/TIME/F_TIME_IN_MS_TO_LREAL.fbt
diff --git a/data/typelibrary/iec61131-3-1.0.0/conversion/TIME/F_TIME_IN_MS_TO_UDINT.fbt b/data/typelibrary/iec61131-3-1.0.0/typelib/conversion/TIME/F_TIME_IN_MS_TO_UDINT.fbt
similarity index 100%
rename from data/typelibrary/iec61131-3-1.0.0/conversion/TIME/F_TIME_IN_MS_TO_UDINT.fbt
rename to data/typelibrary/iec61131-3-1.0.0/typelib/conversion/TIME/F_TIME_IN_MS_TO_UDINT.fbt
Binary files differ
diff --git a/data/typelibrary/iec61131-3-1.0.0/conversion/TIME/F_TIME_IN_MS_TO_ULINT.fbt b/data/typelibrary/iec61131-3-1.0.0/typelib/conversion/TIME/F_TIME_IN_MS_TO_ULINT.fbt
similarity index 100%
rename from data/typelibrary/iec61131-3-1.0.0/conversion/TIME/F_TIME_IN_MS_TO_ULINT.fbt
rename to data/typelibrary/iec61131-3-1.0.0/typelib/conversion/TIME/F_TIME_IN_MS_TO_ULINT.fbt
diff --git a/data/typelibrary/iec61131-3-1.0.0/conversion/TIME/F_TIME_IN_NS_TO_DINT.fbt b/data/typelibrary/iec61131-3-1.0.0/typelib/conversion/TIME/F_TIME_IN_NS_TO_DINT.fbt
similarity index 100%
rename from data/typelibrary/iec61131-3-1.0.0/conversion/TIME/F_TIME_IN_NS_TO_DINT.fbt
rename to data/typelibrary/iec61131-3-1.0.0/typelib/conversion/TIME/F_TIME_IN_NS_TO_DINT.fbt
diff --git a/data/typelibrary/iec61131-3-1.0.0/conversion/TIME/F_TIME_IN_NS_TO_LINT.fbt b/data/typelibrary/iec61131-3-1.0.0/typelib/conversion/TIME/F_TIME_IN_NS_TO_LINT.fbt
similarity index 100%
rename from data/typelibrary/iec61131-3-1.0.0/conversion/TIME/F_TIME_IN_NS_TO_LINT.fbt
rename to data/typelibrary/iec61131-3-1.0.0/typelib/conversion/TIME/F_TIME_IN_NS_TO_LINT.fbt
diff --git a/data/typelibrary/iec61131-3-1.0.0/conversion/TIME/F_TIME_IN_NS_TO_LREAL.fbt b/data/typelibrary/iec61131-3-1.0.0/typelib/conversion/TIME/F_TIME_IN_NS_TO_LREAL.fbt
similarity index 100%
rename from data/typelibrary/iec61131-3-1.0.0/conversion/TIME/F_TIME_IN_NS_TO_LREAL.fbt
rename to data/typelibrary/iec61131-3-1.0.0/typelib/conversion/TIME/F_TIME_IN_NS_TO_LREAL.fbt
diff --git a/data/typelibrary/iec61131-3-1.0.0/conversion/TIME/F_TIME_IN_NS_TO_UDINT.fbt b/data/typelibrary/iec61131-3-1.0.0/typelib/conversion/TIME/F_TIME_IN_NS_TO_UDINT.fbt
similarity index 100%
rename from data/typelibrary/iec61131-3-1.0.0/conversion/TIME/F_TIME_IN_NS_TO_UDINT.fbt
rename to data/typelibrary/iec61131-3-1.0.0/typelib/conversion/TIME/F_TIME_IN_NS_TO_UDINT.fbt
Binary files differ
diff --git a/data/typelibrary/iec61131-3-1.0.0/conversion/TIME/F_TIME_IN_NS_TO_ULINT.fbt b/data/typelibrary/iec61131-3-1.0.0/typelib/conversion/TIME/F_TIME_IN_NS_TO_ULINT.fbt
similarity index 100%
rename from data/typelibrary/iec61131-3-1.0.0/conversion/TIME/F_TIME_IN_NS_TO_ULINT.fbt
rename to data/typelibrary/iec61131-3-1.0.0/typelib/conversion/TIME/F_TIME_IN_NS_TO_ULINT.fbt
diff --git a/data/typelibrary/iec61131-3-1.0.0/conversion/TIME/F_TIME_IN_S_TO_DINT.fbt b/data/typelibrary/iec61131-3-1.0.0/typelib/conversion/TIME/F_TIME_IN_S_TO_DINT.fbt
similarity index 100%
rename from data/typelibrary/iec61131-3-1.0.0/conversion/TIME/F_TIME_IN_S_TO_DINT.fbt
rename to data/typelibrary/iec61131-3-1.0.0/typelib/conversion/TIME/F_TIME_IN_S_TO_DINT.fbt
diff --git a/data/typelibrary/iec61131-3-1.0.0/conversion/TIME/F_TIME_IN_S_TO_LINT.fbt b/data/typelibrary/iec61131-3-1.0.0/typelib/conversion/TIME/F_TIME_IN_S_TO_LINT.fbt
similarity index 100%
rename from data/typelibrary/iec61131-3-1.0.0/conversion/TIME/F_TIME_IN_S_TO_LINT.fbt
rename to data/typelibrary/iec61131-3-1.0.0/typelib/conversion/TIME/F_TIME_IN_S_TO_LINT.fbt
diff --git a/data/typelibrary/iec61131-3-1.0.0/conversion/TIME/F_TIME_IN_S_TO_LREAL.fbt b/data/typelibrary/iec61131-3-1.0.0/typelib/conversion/TIME/F_TIME_IN_S_TO_LREAL.fbt
similarity index 100%
rename from data/typelibrary/iec61131-3-1.0.0/conversion/TIME/F_TIME_IN_S_TO_LREAL.fbt
rename to data/typelibrary/iec61131-3-1.0.0/typelib/conversion/TIME/F_TIME_IN_S_TO_LREAL.fbt
diff --git a/data/typelibrary/iec61131-3-1.0.0/conversion/TIME/F_TIME_IN_S_TO_UDINT.fbt b/data/typelibrary/iec61131-3-1.0.0/typelib/conversion/TIME/F_TIME_IN_S_TO_UDINT.fbt
similarity index 100%
rename from data/typelibrary/iec61131-3-1.0.0/conversion/TIME/F_TIME_IN_S_TO_UDINT.fbt
rename to data/typelibrary/iec61131-3-1.0.0/typelib/conversion/TIME/F_TIME_IN_S_TO_UDINT.fbt
Binary files differ
diff --git a/data/typelibrary/iec61131-3-1.0.0/conversion/TIME/F_TIME_IN_S_TO_ULINT.fbt b/data/typelibrary/iec61131-3-1.0.0/typelib/conversion/TIME/F_TIME_IN_S_TO_ULINT.fbt
similarity index 100%
rename from data/typelibrary/iec61131-3-1.0.0/conversion/TIME/F_TIME_IN_S_TO_ULINT.fbt
rename to data/typelibrary/iec61131-3-1.0.0/typelib/conversion/TIME/F_TIME_IN_S_TO_ULINT.fbt
diff --git a/data/typelibrary/iec61131-3-1.0.0/conversion/TIME/F_TIME_IN_US_TO_DINT.fbt b/data/typelibrary/iec61131-3-1.0.0/typelib/conversion/TIME/F_TIME_IN_US_TO_DINT.fbt
similarity index 100%
rename from data/typelibrary/iec61131-3-1.0.0/conversion/TIME/F_TIME_IN_US_TO_DINT.fbt
rename to data/typelibrary/iec61131-3-1.0.0/typelib/conversion/TIME/F_TIME_IN_US_TO_DINT.fbt
diff --git a/data/typelibrary/iec61131-3-1.0.0/conversion/TIME/F_TIME_IN_US_TO_LINT.fbt b/data/typelibrary/iec61131-3-1.0.0/typelib/conversion/TIME/F_TIME_IN_US_TO_LINT.fbt
similarity index 100%
rename from data/typelibrary/iec61131-3-1.0.0/conversion/TIME/F_TIME_IN_US_TO_LINT.fbt
rename to data/typelibrary/iec61131-3-1.0.0/typelib/conversion/TIME/F_TIME_IN_US_TO_LINT.fbt
diff --git a/data/typelibrary/iec61131-3-1.0.0/conversion/TIME/F_TIME_IN_US_TO_LREAL.fbt b/data/typelibrary/iec61131-3-1.0.0/typelib/conversion/TIME/F_TIME_IN_US_TO_LREAL.fbt
similarity index 100%
rename from data/typelibrary/iec61131-3-1.0.0/conversion/TIME/F_TIME_IN_US_TO_LREAL.fbt
rename to data/typelibrary/iec61131-3-1.0.0/typelib/conversion/TIME/F_TIME_IN_US_TO_LREAL.fbt
diff --git a/data/typelibrary/iec61131-3-1.0.0/conversion/TIME/F_TIME_IN_US_TO_UDINT.fbt b/data/typelibrary/iec61131-3-1.0.0/typelib/conversion/TIME/F_TIME_IN_US_TO_UDINT.fbt
similarity index 100%
rename from data/typelibrary/iec61131-3-1.0.0/conversion/TIME/F_TIME_IN_US_TO_UDINT.fbt
rename to data/typelibrary/iec61131-3-1.0.0/typelib/conversion/TIME/F_TIME_IN_US_TO_UDINT.fbt
Binary files differ
diff --git a/data/typelibrary/iec61131-3-1.0.0/conversion/TIME/F_TIME_IN_US_TO_ULINT.fbt b/data/typelibrary/iec61131-3-1.0.0/typelib/conversion/TIME/F_TIME_IN_US_TO_ULINT.fbt
similarity index 100%
rename from data/typelibrary/iec61131-3-1.0.0/conversion/TIME/F_TIME_IN_US_TO_ULINT.fbt
rename to data/typelibrary/iec61131-3-1.0.0/typelib/conversion/TIME/F_TIME_IN_US_TO_ULINT.fbt
diff --git a/data/typelibrary/iec61131-3-1.0.0/conversion/UDINT/F_UDINT_AS_STRING.fbt b/data/typelibrary/iec61131-3-1.0.0/typelib/conversion/UDINT/F_UDINT_AS_STRING.fbt
similarity index 100%
rename from data/typelibrary/iec61131-3-1.0.0/conversion/UDINT/F_UDINT_AS_STRING.fbt
rename to data/typelibrary/iec61131-3-1.0.0/typelib/conversion/UDINT/F_UDINT_AS_STRING.fbt
diff --git a/data/typelibrary/iec61131-3-1.0.0/conversion/UDINT/F_UDINT_AS_WSTRING.fbt b/data/typelibrary/iec61131-3-1.0.0/typelib/conversion/UDINT/F_UDINT_AS_WSTRING.fbt
similarity index 100%
rename from data/typelibrary/iec61131-3-1.0.0/conversion/UDINT/F_UDINT_AS_WSTRING.fbt
rename to data/typelibrary/iec61131-3-1.0.0/typelib/conversion/UDINT/F_UDINT_AS_WSTRING.fbt
diff --git a/data/typelibrary/iec61131-3-1.0.0/conversion/UDINT/F_UDINT_TO_BYTE.fbt b/data/typelibrary/iec61131-3-1.0.0/typelib/conversion/UDINT/F_UDINT_TO_BYTE.fbt
similarity index 100%
rename from data/typelibrary/iec61131-3-1.0.0/conversion/UDINT/F_UDINT_TO_BYTE.fbt
rename to data/typelibrary/iec61131-3-1.0.0/typelib/conversion/UDINT/F_UDINT_TO_BYTE.fbt
diff --git a/data/typelibrary/iec61131-3-1.0.0/conversion/UDINT/F_UDINT_TO_DINT.fbt b/data/typelibrary/iec61131-3-1.0.0/typelib/conversion/UDINT/F_UDINT_TO_DINT.fbt
similarity index 100%
rename from data/typelibrary/iec61131-3-1.0.0/conversion/UDINT/F_UDINT_TO_DINT.fbt
rename to data/typelibrary/iec61131-3-1.0.0/typelib/conversion/UDINT/F_UDINT_TO_DINT.fbt
diff --git a/data/typelibrary/iec61131-3-1.0.0/conversion/UDINT/F_UDINT_TO_DWORD.fbt b/data/typelibrary/iec61131-3-1.0.0/typelib/conversion/UDINT/F_UDINT_TO_DWORD.fbt
similarity index 100%
rename from data/typelibrary/iec61131-3-1.0.0/conversion/UDINT/F_UDINT_TO_DWORD.fbt
rename to data/typelibrary/iec61131-3-1.0.0/typelib/conversion/UDINT/F_UDINT_TO_DWORD.fbt
diff --git a/data/typelibrary/iec61131-3-1.0.0/conversion/UDINT/F_UDINT_TO_INT.fbt b/data/typelibrary/iec61131-3-1.0.0/typelib/conversion/UDINT/F_UDINT_TO_INT.fbt
similarity index 100%
rename from data/typelibrary/iec61131-3-1.0.0/conversion/UDINT/F_UDINT_TO_INT.fbt
rename to data/typelibrary/iec61131-3-1.0.0/typelib/conversion/UDINT/F_UDINT_TO_INT.fbt
diff --git a/data/typelibrary/iec61131-3-1.0.0/conversion/UDINT/F_UDINT_TO_LINT.fbt b/data/typelibrary/iec61131-3-1.0.0/typelib/conversion/UDINT/F_UDINT_TO_LINT.fbt
similarity index 100%
rename from data/typelibrary/iec61131-3-1.0.0/conversion/UDINT/F_UDINT_TO_LINT.fbt
rename to data/typelibrary/iec61131-3-1.0.0/typelib/conversion/UDINT/F_UDINT_TO_LINT.fbt
diff --git a/data/typelibrary/iec61131-3-1.0.0/conversion/UDINT/F_UDINT_TO_LREAL.fbt b/data/typelibrary/iec61131-3-1.0.0/typelib/conversion/UDINT/F_UDINT_TO_LREAL.fbt
similarity index 100%
rename from data/typelibrary/iec61131-3-1.0.0/conversion/UDINT/F_UDINT_TO_LREAL.fbt
rename to data/typelibrary/iec61131-3-1.0.0/typelib/conversion/UDINT/F_UDINT_TO_LREAL.fbt
diff --git a/data/typelibrary/iec61131-3-1.0.0/conversion/UDINT/F_UDINT_TO_LWORD.fbt b/data/typelibrary/iec61131-3-1.0.0/typelib/conversion/UDINT/F_UDINT_TO_LWORD.fbt
similarity index 100%
rename from data/typelibrary/iec61131-3-1.0.0/conversion/UDINT/F_UDINT_TO_LWORD.fbt
rename to data/typelibrary/iec61131-3-1.0.0/typelib/conversion/UDINT/F_UDINT_TO_LWORD.fbt
diff --git a/data/typelibrary/iec61131-3-1.0.0/conversion/UDINT/F_UDINT_TO_REAL.fbt b/data/typelibrary/iec61131-3-1.0.0/typelib/conversion/UDINT/F_UDINT_TO_REAL.fbt
similarity index 100%
rename from data/typelibrary/iec61131-3-1.0.0/conversion/UDINT/F_UDINT_TO_REAL.fbt
rename to data/typelibrary/iec61131-3-1.0.0/typelib/conversion/UDINT/F_UDINT_TO_REAL.fbt
diff --git a/data/typelibrary/iec61131-3-1.0.0/conversion/UDINT/F_UDINT_TO_SINT.fbt b/data/typelibrary/iec61131-3-1.0.0/typelib/conversion/UDINT/F_UDINT_TO_SINT.fbt
similarity index 100%
rename from data/typelibrary/iec61131-3-1.0.0/conversion/UDINT/F_UDINT_TO_SINT.fbt
rename to data/typelibrary/iec61131-3-1.0.0/typelib/conversion/UDINT/F_UDINT_TO_SINT.fbt
diff --git a/data/typelibrary/iec61131-3-1.0.0/conversion/UDINT/F_UDINT_TO_UINT.fbt b/data/typelibrary/iec61131-3-1.0.0/typelib/conversion/UDINT/F_UDINT_TO_UINT.fbt
similarity index 100%
rename from data/typelibrary/iec61131-3-1.0.0/conversion/UDINT/F_UDINT_TO_UINT.fbt
rename to data/typelibrary/iec61131-3-1.0.0/typelib/conversion/UDINT/F_UDINT_TO_UINT.fbt
diff --git a/data/typelibrary/iec61131-3-1.0.0/conversion/UDINT/F_UDINT_TO_ULINT.fbt b/data/typelibrary/iec61131-3-1.0.0/typelib/conversion/UDINT/F_UDINT_TO_ULINT.fbt
similarity index 100%
rename from data/typelibrary/iec61131-3-1.0.0/conversion/UDINT/F_UDINT_TO_ULINT.fbt
rename to data/typelibrary/iec61131-3-1.0.0/typelib/conversion/UDINT/F_UDINT_TO_ULINT.fbt
diff --git a/data/typelibrary/iec61131-3-1.0.0/conversion/UDINT/F_UDINT_TO_USINT.fbt b/data/typelibrary/iec61131-3-1.0.0/typelib/conversion/UDINT/F_UDINT_TO_USINT.fbt
similarity index 100%
rename from data/typelibrary/iec61131-3-1.0.0/conversion/UDINT/F_UDINT_TO_USINT.fbt
rename to data/typelibrary/iec61131-3-1.0.0/typelib/conversion/UDINT/F_UDINT_TO_USINT.fbt
diff --git a/data/typelibrary/iec61131-3-1.0.0/conversion/UDINT/F_UDINT_TO_WORD.fbt b/data/typelibrary/iec61131-3-1.0.0/typelib/conversion/UDINT/F_UDINT_TO_WORD.fbt
similarity index 100%
rename from data/typelibrary/iec61131-3-1.0.0/conversion/UDINT/F_UDINT_TO_WORD.fbt
rename to data/typelibrary/iec61131-3-1.0.0/typelib/conversion/UDINT/F_UDINT_TO_WORD.fbt
diff --git a/data/typelibrary/iec61131-3-1.0.0/conversion/UINT/F_UINT_AS_STRING.fbt b/data/typelibrary/iec61131-3-1.0.0/typelib/conversion/UINT/F_UINT_AS_STRING.fbt
similarity index 100%
rename from data/typelibrary/iec61131-3-1.0.0/conversion/UINT/F_UINT_AS_STRING.fbt
rename to data/typelibrary/iec61131-3-1.0.0/typelib/conversion/UINT/F_UINT_AS_STRING.fbt
diff --git a/data/typelibrary/iec61131-3-1.0.0/conversion/UINT/F_UINT_AS_WSTRING.fbt b/data/typelibrary/iec61131-3-1.0.0/typelib/conversion/UINT/F_UINT_AS_WSTRING.fbt
similarity index 100%
rename from data/typelibrary/iec61131-3-1.0.0/conversion/UINT/F_UINT_AS_WSTRING.fbt
rename to data/typelibrary/iec61131-3-1.0.0/typelib/conversion/UINT/F_UINT_AS_WSTRING.fbt
diff --git a/data/typelibrary/iec61131-3-1.0.0/conversion/UINT/F_UINT_TO_BYTE.fbt b/data/typelibrary/iec61131-3-1.0.0/typelib/conversion/UINT/F_UINT_TO_BYTE.fbt
similarity index 100%
rename from data/typelibrary/iec61131-3-1.0.0/conversion/UINT/F_UINT_TO_BYTE.fbt
rename to data/typelibrary/iec61131-3-1.0.0/typelib/conversion/UINT/F_UINT_TO_BYTE.fbt
diff --git a/data/typelibrary/iec61131-3-1.0.0/conversion/UINT/F_UINT_TO_DINT.fbt b/data/typelibrary/iec61131-3-1.0.0/typelib/conversion/UINT/F_UINT_TO_DINT.fbt
similarity index 100%
rename from data/typelibrary/iec61131-3-1.0.0/conversion/UINT/F_UINT_TO_DINT.fbt
rename to data/typelibrary/iec61131-3-1.0.0/typelib/conversion/UINT/F_UINT_TO_DINT.fbt
diff --git a/data/typelibrary/iec61131-3-1.0.0/conversion/UINT/F_UINT_TO_DWORD.fbt b/data/typelibrary/iec61131-3-1.0.0/typelib/conversion/UINT/F_UINT_TO_DWORD.fbt
similarity index 100%
rename from data/typelibrary/iec61131-3-1.0.0/conversion/UINT/F_UINT_TO_DWORD.fbt
rename to data/typelibrary/iec61131-3-1.0.0/typelib/conversion/UINT/F_UINT_TO_DWORD.fbt
diff --git a/data/typelibrary/iec61131-3-1.0.0/conversion/UINT/F_UINT_TO_INT.fbt b/data/typelibrary/iec61131-3-1.0.0/typelib/conversion/UINT/F_UINT_TO_INT.fbt
similarity index 100%
rename from data/typelibrary/iec61131-3-1.0.0/conversion/UINT/F_UINT_TO_INT.fbt
rename to data/typelibrary/iec61131-3-1.0.0/typelib/conversion/UINT/F_UINT_TO_INT.fbt
diff --git a/data/typelibrary/iec61131-3-1.0.0/conversion/UINT/F_UINT_TO_LINT.fbt b/data/typelibrary/iec61131-3-1.0.0/typelib/conversion/UINT/F_UINT_TO_LINT.fbt
similarity index 100%
rename from data/typelibrary/iec61131-3-1.0.0/conversion/UINT/F_UINT_TO_LINT.fbt
rename to data/typelibrary/iec61131-3-1.0.0/typelib/conversion/UINT/F_UINT_TO_LINT.fbt
diff --git a/data/typelibrary/iec61131-3-1.0.0/conversion/UINT/F_UINT_TO_LREAL.fbt b/data/typelibrary/iec61131-3-1.0.0/typelib/conversion/UINT/F_UINT_TO_LREAL.fbt
similarity index 100%
rename from data/typelibrary/iec61131-3-1.0.0/conversion/UINT/F_UINT_TO_LREAL.fbt
rename to data/typelibrary/iec61131-3-1.0.0/typelib/conversion/UINT/F_UINT_TO_LREAL.fbt
diff --git a/data/typelibrary/iec61131-3-1.0.0/conversion/UINT/F_UINT_TO_LWORD.fbt b/data/typelibrary/iec61131-3-1.0.0/typelib/conversion/UINT/F_UINT_TO_LWORD.fbt
similarity index 100%
rename from data/typelibrary/iec61131-3-1.0.0/conversion/UINT/F_UINT_TO_LWORD.fbt
rename to data/typelibrary/iec61131-3-1.0.0/typelib/conversion/UINT/F_UINT_TO_LWORD.fbt
diff --git a/data/typelibrary/iec61131-3-1.0.0/conversion/UINT/F_UINT_TO_REAL.fbt b/data/typelibrary/iec61131-3-1.0.0/typelib/conversion/UINT/F_UINT_TO_REAL.fbt
similarity index 100%
rename from data/typelibrary/iec61131-3-1.0.0/conversion/UINT/F_UINT_TO_REAL.fbt
rename to data/typelibrary/iec61131-3-1.0.0/typelib/conversion/UINT/F_UINT_TO_REAL.fbt
diff --git a/data/typelibrary/iec61131-3-1.0.0/conversion/UINT/F_UINT_TO_SINT.fbt b/data/typelibrary/iec61131-3-1.0.0/typelib/conversion/UINT/F_UINT_TO_SINT.fbt
similarity index 100%
rename from data/typelibrary/iec61131-3-1.0.0/conversion/UINT/F_UINT_TO_SINT.fbt
rename to data/typelibrary/iec61131-3-1.0.0/typelib/conversion/UINT/F_UINT_TO_SINT.fbt
diff --git a/data/typelibrary/iec61131-3-1.0.0/conversion/UINT/F_UINT_TO_UDINT.fbt b/data/typelibrary/iec61131-3-1.0.0/typelib/conversion/UINT/F_UINT_TO_UDINT.fbt
similarity index 100%
rename from data/typelibrary/iec61131-3-1.0.0/conversion/UINT/F_UINT_TO_UDINT.fbt
rename to data/typelibrary/iec61131-3-1.0.0/typelib/conversion/UINT/F_UINT_TO_UDINT.fbt
diff --git a/data/typelibrary/iec61131-3-1.0.0/conversion/UINT/F_UINT_TO_ULINT.fbt b/data/typelibrary/iec61131-3-1.0.0/typelib/conversion/UINT/F_UINT_TO_ULINT.fbt
similarity index 100%
rename from data/typelibrary/iec61131-3-1.0.0/conversion/UINT/F_UINT_TO_ULINT.fbt
rename to data/typelibrary/iec61131-3-1.0.0/typelib/conversion/UINT/F_UINT_TO_ULINT.fbt
diff --git a/data/typelibrary/iec61131-3-1.0.0/conversion/UINT/F_UINT_TO_USINT.fbt b/data/typelibrary/iec61131-3-1.0.0/typelib/conversion/UINT/F_UINT_TO_USINT.fbt
similarity index 100%
rename from data/typelibrary/iec61131-3-1.0.0/conversion/UINT/F_UINT_TO_USINT.fbt
rename to data/typelibrary/iec61131-3-1.0.0/typelib/conversion/UINT/F_UINT_TO_USINT.fbt
diff --git a/data/typelibrary/iec61131-3-1.0.0/conversion/UINT/F_UINT_TO_WORD.fbt b/data/typelibrary/iec61131-3-1.0.0/typelib/conversion/UINT/F_UINT_TO_WORD.fbt
similarity index 100%
rename from data/typelibrary/iec61131-3-1.0.0/conversion/UINT/F_UINT_TO_WORD.fbt
rename to data/typelibrary/iec61131-3-1.0.0/typelib/conversion/UINT/F_UINT_TO_WORD.fbt
diff --git a/data/typelibrary/iec61131-3-1.0.0/conversion/ULINT/F_ULINT_AS_STRING.fbt b/data/typelibrary/iec61131-3-1.0.0/typelib/conversion/ULINT/F_ULINT_AS_STRING.fbt
similarity index 100%
rename from data/typelibrary/iec61131-3-1.0.0/conversion/ULINT/F_ULINT_AS_STRING.fbt
rename to data/typelibrary/iec61131-3-1.0.0/typelib/conversion/ULINT/F_ULINT_AS_STRING.fbt
diff --git a/data/typelibrary/iec61131-3-1.0.0/conversion/ULINT/F_ULINT_AS_WSTRING.fbt b/data/typelibrary/iec61131-3-1.0.0/typelib/conversion/ULINT/F_ULINT_AS_WSTRING.fbt
similarity index 100%
rename from data/typelibrary/iec61131-3-1.0.0/conversion/ULINT/F_ULINT_AS_WSTRING.fbt
rename to data/typelibrary/iec61131-3-1.0.0/typelib/conversion/ULINT/F_ULINT_AS_WSTRING.fbt
diff --git a/data/typelibrary/iec61131-3-1.0.0/conversion/ULINT/F_ULINT_TO_BYTE.fbt b/data/typelibrary/iec61131-3-1.0.0/typelib/conversion/ULINT/F_ULINT_TO_BYTE.fbt
similarity index 100%
rename from data/typelibrary/iec61131-3-1.0.0/conversion/ULINT/F_ULINT_TO_BYTE.fbt
rename to data/typelibrary/iec61131-3-1.0.0/typelib/conversion/ULINT/F_ULINT_TO_BYTE.fbt
diff --git a/data/typelibrary/iec61131-3-1.0.0/conversion/ULINT/F_ULINT_TO_DINT.fbt b/data/typelibrary/iec61131-3-1.0.0/typelib/conversion/ULINT/F_ULINT_TO_DINT.fbt
similarity index 100%
rename from data/typelibrary/iec61131-3-1.0.0/conversion/ULINT/F_ULINT_TO_DINT.fbt
rename to data/typelibrary/iec61131-3-1.0.0/typelib/conversion/ULINT/F_ULINT_TO_DINT.fbt
diff --git a/data/typelibrary/iec61131-3-1.0.0/conversion/ULINT/F_ULINT_TO_DWORD.fbt b/data/typelibrary/iec61131-3-1.0.0/typelib/conversion/ULINT/F_ULINT_TO_DWORD.fbt
similarity index 100%
rename from data/typelibrary/iec61131-3-1.0.0/conversion/ULINT/F_ULINT_TO_DWORD.fbt
rename to data/typelibrary/iec61131-3-1.0.0/typelib/conversion/ULINT/F_ULINT_TO_DWORD.fbt
diff --git a/data/typelibrary/iec61131-3-1.0.0/conversion/ULINT/F_ULINT_TO_INT.fbt b/data/typelibrary/iec61131-3-1.0.0/typelib/conversion/ULINT/F_ULINT_TO_INT.fbt
similarity index 100%
rename from data/typelibrary/iec61131-3-1.0.0/conversion/ULINT/F_ULINT_TO_INT.fbt
rename to data/typelibrary/iec61131-3-1.0.0/typelib/conversion/ULINT/F_ULINT_TO_INT.fbt
diff --git a/data/typelibrary/iec61131-3-1.0.0/conversion/ULINT/F_ULINT_TO_LINT.fbt b/data/typelibrary/iec61131-3-1.0.0/typelib/conversion/ULINT/F_ULINT_TO_LINT.fbt
similarity index 100%
rename from data/typelibrary/iec61131-3-1.0.0/conversion/ULINT/F_ULINT_TO_LINT.fbt
rename to data/typelibrary/iec61131-3-1.0.0/typelib/conversion/ULINT/F_ULINT_TO_LINT.fbt
diff --git a/data/typelibrary/iec61131-3-1.0.0/conversion/ULINT/F_ULINT_TO_LREAL.fbt b/data/typelibrary/iec61131-3-1.0.0/typelib/conversion/ULINT/F_ULINT_TO_LREAL.fbt
similarity index 100%
rename from data/typelibrary/iec61131-3-1.0.0/conversion/ULINT/F_ULINT_TO_LREAL.fbt
rename to data/typelibrary/iec61131-3-1.0.0/typelib/conversion/ULINT/F_ULINT_TO_LREAL.fbt
diff --git a/data/typelibrary/iec61131-3-1.0.0/conversion/ULINT/F_ULINT_TO_LWORD.fbt b/data/typelibrary/iec61131-3-1.0.0/typelib/conversion/ULINT/F_ULINT_TO_LWORD.fbt
similarity index 100%
rename from data/typelibrary/iec61131-3-1.0.0/conversion/ULINT/F_ULINT_TO_LWORD.fbt
rename to data/typelibrary/iec61131-3-1.0.0/typelib/conversion/ULINT/F_ULINT_TO_LWORD.fbt
diff --git a/data/typelibrary/iec61131-3-1.0.0/conversion/ULINT/F_ULINT_TO_REAL.fbt b/data/typelibrary/iec61131-3-1.0.0/typelib/conversion/ULINT/F_ULINT_TO_REAL.fbt
similarity index 100%
rename from data/typelibrary/iec61131-3-1.0.0/conversion/ULINT/F_ULINT_TO_REAL.fbt
rename to data/typelibrary/iec61131-3-1.0.0/typelib/conversion/ULINT/F_ULINT_TO_REAL.fbt
diff --git a/data/typelibrary/iec61131-3-1.0.0/conversion/ULINT/F_ULINT_TO_SINT.fbt b/data/typelibrary/iec61131-3-1.0.0/typelib/conversion/ULINT/F_ULINT_TO_SINT.fbt
similarity index 100%
rename from data/typelibrary/iec61131-3-1.0.0/conversion/ULINT/F_ULINT_TO_SINT.fbt
rename to data/typelibrary/iec61131-3-1.0.0/typelib/conversion/ULINT/F_ULINT_TO_SINT.fbt
diff --git a/data/typelibrary/iec61131-3-1.0.0/conversion/ULINT/F_ULINT_TO_UDINT.fbt b/data/typelibrary/iec61131-3-1.0.0/typelib/conversion/ULINT/F_ULINT_TO_UDINT.fbt
similarity index 100%
rename from data/typelibrary/iec61131-3-1.0.0/conversion/ULINT/F_ULINT_TO_UDINT.fbt
rename to data/typelibrary/iec61131-3-1.0.0/typelib/conversion/ULINT/F_ULINT_TO_UDINT.fbt
diff --git a/data/typelibrary/iec61131-3-1.0.0/conversion/ULINT/F_ULINT_TO_UINT.fbt b/data/typelibrary/iec61131-3-1.0.0/typelib/conversion/ULINT/F_ULINT_TO_UINT.fbt
similarity index 100%
rename from data/typelibrary/iec61131-3-1.0.0/conversion/ULINT/F_ULINT_TO_UINT.fbt
rename to data/typelibrary/iec61131-3-1.0.0/typelib/conversion/ULINT/F_ULINT_TO_UINT.fbt
diff --git a/data/typelibrary/iec61131-3-1.0.0/conversion/ULINT/F_ULINT_TO_USINT.fbt b/data/typelibrary/iec61131-3-1.0.0/typelib/conversion/ULINT/F_ULINT_TO_USINT.fbt
similarity index 100%
rename from data/typelibrary/iec61131-3-1.0.0/conversion/ULINT/F_ULINT_TO_USINT.fbt
rename to data/typelibrary/iec61131-3-1.0.0/typelib/conversion/ULINT/F_ULINT_TO_USINT.fbt
diff --git a/data/typelibrary/iec61131-3-1.0.0/conversion/ULINT/F_ULINT_TO_WORD.fbt b/data/typelibrary/iec61131-3-1.0.0/typelib/conversion/ULINT/F_ULINT_TO_WORD.fbt
similarity index 100%
rename from data/typelibrary/iec61131-3-1.0.0/conversion/ULINT/F_ULINT_TO_WORD.fbt
rename to data/typelibrary/iec61131-3-1.0.0/typelib/conversion/ULINT/F_ULINT_TO_WORD.fbt
diff --git a/data/typelibrary/iec61131-3-1.0.0/conversion/USINT/F_USINT_AS_STRING.fbt b/data/typelibrary/iec61131-3-1.0.0/typelib/conversion/USINT/F_USINT_AS_STRING.fbt
similarity index 100%
rename from data/typelibrary/iec61131-3-1.0.0/conversion/USINT/F_USINT_AS_STRING.fbt
rename to data/typelibrary/iec61131-3-1.0.0/typelib/conversion/USINT/F_USINT_AS_STRING.fbt
diff --git a/data/typelibrary/iec61131-3-1.0.0/conversion/USINT/F_USINT_AS_WSTRING.fbt b/data/typelibrary/iec61131-3-1.0.0/typelib/conversion/USINT/F_USINT_AS_WSTRING.fbt
similarity index 100%
rename from data/typelibrary/iec61131-3-1.0.0/conversion/USINT/F_USINT_AS_WSTRING.fbt
rename to data/typelibrary/iec61131-3-1.0.0/typelib/conversion/USINT/F_USINT_AS_WSTRING.fbt
diff --git a/data/typelibrary/iec61131-3-1.0.0/conversion/USINT/F_USINT_TO_BYTE.fbt b/data/typelibrary/iec61131-3-1.0.0/typelib/conversion/USINT/F_USINT_TO_BYTE.fbt
similarity index 100%
rename from data/typelibrary/iec61131-3-1.0.0/conversion/USINT/F_USINT_TO_BYTE.fbt
rename to data/typelibrary/iec61131-3-1.0.0/typelib/conversion/USINT/F_USINT_TO_BYTE.fbt
diff --git a/data/typelibrary/iec61131-3-1.0.0/conversion/USINT/F_USINT_TO_DINT.fbt b/data/typelibrary/iec61131-3-1.0.0/typelib/conversion/USINT/F_USINT_TO_DINT.fbt
similarity index 100%
rename from data/typelibrary/iec61131-3-1.0.0/conversion/USINT/F_USINT_TO_DINT.fbt
rename to data/typelibrary/iec61131-3-1.0.0/typelib/conversion/USINT/F_USINT_TO_DINT.fbt
diff --git a/data/typelibrary/iec61131-3-1.0.0/conversion/USINT/F_USINT_TO_DWORD.fbt b/data/typelibrary/iec61131-3-1.0.0/typelib/conversion/USINT/F_USINT_TO_DWORD.fbt
similarity index 100%
rename from data/typelibrary/iec61131-3-1.0.0/conversion/USINT/F_USINT_TO_DWORD.fbt
rename to data/typelibrary/iec61131-3-1.0.0/typelib/conversion/USINT/F_USINT_TO_DWORD.fbt
diff --git a/data/typelibrary/iec61131-3-1.0.0/conversion/USINT/F_USINT_TO_INT.fbt b/data/typelibrary/iec61131-3-1.0.0/typelib/conversion/USINT/F_USINT_TO_INT.fbt
similarity index 100%
rename from data/typelibrary/iec61131-3-1.0.0/conversion/USINT/F_USINT_TO_INT.fbt
rename to data/typelibrary/iec61131-3-1.0.0/typelib/conversion/USINT/F_USINT_TO_INT.fbt
diff --git a/data/typelibrary/iec61131-3-1.0.0/conversion/USINT/F_USINT_TO_LINT.fbt b/data/typelibrary/iec61131-3-1.0.0/typelib/conversion/USINT/F_USINT_TO_LINT.fbt
similarity index 100%
rename from data/typelibrary/iec61131-3-1.0.0/conversion/USINT/F_USINT_TO_LINT.fbt
rename to data/typelibrary/iec61131-3-1.0.0/typelib/conversion/USINT/F_USINT_TO_LINT.fbt
diff --git a/data/typelibrary/iec61131-3-1.0.0/conversion/USINT/F_USINT_TO_LREAL.fbt b/data/typelibrary/iec61131-3-1.0.0/typelib/conversion/USINT/F_USINT_TO_LREAL.fbt
similarity index 100%
rename from data/typelibrary/iec61131-3-1.0.0/conversion/USINT/F_USINT_TO_LREAL.fbt
rename to data/typelibrary/iec61131-3-1.0.0/typelib/conversion/USINT/F_USINT_TO_LREAL.fbt
diff --git a/data/typelibrary/iec61131-3-1.0.0/conversion/USINT/F_USINT_TO_LWORD.fbt b/data/typelibrary/iec61131-3-1.0.0/typelib/conversion/USINT/F_USINT_TO_LWORD.fbt
similarity index 100%
rename from data/typelibrary/iec61131-3-1.0.0/conversion/USINT/F_USINT_TO_LWORD.fbt
rename to data/typelibrary/iec61131-3-1.0.0/typelib/conversion/USINT/F_USINT_TO_LWORD.fbt
diff --git a/data/typelibrary/iec61131-3-1.0.0/conversion/USINT/F_USINT_TO_REAL.fbt b/data/typelibrary/iec61131-3-1.0.0/typelib/conversion/USINT/F_USINT_TO_REAL.fbt
similarity index 100%
rename from data/typelibrary/iec61131-3-1.0.0/conversion/USINT/F_USINT_TO_REAL.fbt
rename to data/typelibrary/iec61131-3-1.0.0/typelib/conversion/USINT/F_USINT_TO_REAL.fbt
diff --git a/data/typelibrary/iec61131-3-1.0.0/conversion/USINT/F_USINT_TO_SINT.fbt b/data/typelibrary/iec61131-3-1.0.0/typelib/conversion/USINT/F_USINT_TO_SINT.fbt
similarity index 100%
rename from data/typelibrary/iec61131-3-1.0.0/conversion/USINT/F_USINT_TO_SINT.fbt
rename to data/typelibrary/iec61131-3-1.0.0/typelib/conversion/USINT/F_USINT_TO_SINT.fbt
diff --git a/data/typelibrary/iec61131-3-1.0.0/conversion/USINT/F_USINT_TO_UDINT.fbt b/data/typelibrary/iec61131-3-1.0.0/typelib/conversion/USINT/F_USINT_TO_UDINT.fbt
similarity index 100%
rename from data/typelibrary/iec61131-3-1.0.0/conversion/USINT/F_USINT_TO_UDINT.fbt
rename to data/typelibrary/iec61131-3-1.0.0/typelib/conversion/USINT/F_USINT_TO_UDINT.fbt
diff --git a/data/typelibrary/iec61131-3-1.0.0/conversion/USINT/F_USINT_TO_UINT.fbt b/data/typelibrary/iec61131-3-1.0.0/typelib/conversion/USINT/F_USINT_TO_UINT.fbt
similarity index 100%
rename from data/typelibrary/iec61131-3-1.0.0/conversion/USINT/F_USINT_TO_UINT.fbt
rename to data/typelibrary/iec61131-3-1.0.0/typelib/conversion/USINT/F_USINT_TO_UINT.fbt
diff --git a/data/typelibrary/iec61131-3-1.0.0/conversion/USINT/F_USINT_TO_ULINT.fbt b/data/typelibrary/iec61131-3-1.0.0/typelib/conversion/USINT/F_USINT_TO_ULINT.fbt
similarity index 100%
rename from data/typelibrary/iec61131-3-1.0.0/conversion/USINT/F_USINT_TO_ULINT.fbt
rename to data/typelibrary/iec61131-3-1.0.0/typelib/conversion/USINT/F_USINT_TO_ULINT.fbt
diff --git a/data/typelibrary/iec61131-3-1.0.0/conversion/USINT/F_USINT_TO_WORD.fbt b/data/typelibrary/iec61131-3-1.0.0/typelib/conversion/USINT/F_USINT_TO_WORD.fbt
similarity index 100%
rename from data/typelibrary/iec61131-3-1.0.0/conversion/USINT/F_USINT_TO_WORD.fbt
rename to data/typelibrary/iec61131-3-1.0.0/typelib/conversion/USINT/F_USINT_TO_WORD.fbt
diff --git a/data/typelibrary/iec61131-3-1.0.0/conversion/WORD/F_WORD_AS_STRING.fbt b/data/typelibrary/iec61131-3-1.0.0/typelib/conversion/WORD/F_WORD_AS_STRING.fbt
similarity index 100%
rename from data/typelibrary/iec61131-3-1.0.0/conversion/WORD/F_WORD_AS_STRING.fbt
rename to data/typelibrary/iec61131-3-1.0.0/typelib/conversion/WORD/F_WORD_AS_STRING.fbt
diff --git a/data/typelibrary/iec61131-3-1.0.0/conversion/WORD/F_WORD_AS_WSTRING.fbt b/data/typelibrary/iec61131-3-1.0.0/typelib/conversion/WORD/F_WORD_AS_WSTRING.fbt
similarity index 100%
rename from data/typelibrary/iec61131-3-1.0.0/conversion/WORD/F_WORD_AS_WSTRING.fbt
rename to data/typelibrary/iec61131-3-1.0.0/typelib/conversion/WORD/F_WORD_AS_WSTRING.fbt
diff --git a/data/typelibrary/iec61131-3-1.0.0/conversion/WORD/F_WORD_TO_BYTE.fbt b/data/typelibrary/iec61131-3-1.0.0/typelib/conversion/WORD/F_WORD_TO_BYTE.fbt
similarity index 100%
rename from data/typelibrary/iec61131-3-1.0.0/conversion/WORD/F_WORD_TO_BYTE.fbt
rename to data/typelibrary/iec61131-3-1.0.0/typelib/conversion/WORD/F_WORD_TO_BYTE.fbt
diff --git a/data/typelibrary/iec61131-3-1.0.0/conversion/WORD/F_WORD_TO_DINT.fbt b/data/typelibrary/iec61131-3-1.0.0/typelib/conversion/WORD/F_WORD_TO_DINT.fbt
similarity index 100%
rename from data/typelibrary/iec61131-3-1.0.0/conversion/WORD/F_WORD_TO_DINT.fbt
rename to data/typelibrary/iec61131-3-1.0.0/typelib/conversion/WORD/F_WORD_TO_DINT.fbt
diff --git a/data/typelibrary/iec61131-3-1.0.0/conversion/WORD/F_WORD_TO_DWORD.fbt b/data/typelibrary/iec61131-3-1.0.0/typelib/conversion/WORD/F_WORD_TO_DWORD.fbt
similarity index 100%
rename from data/typelibrary/iec61131-3-1.0.0/conversion/WORD/F_WORD_TO_DWORD.fbt
rename to data/typelibrary/iec61131-3-1.0.0/typelib/conversion/WORD/F_WORD_TO_DWORD.fbt
diff --git a/data/typelibrary/iec61131-3-1.0.0/conversion/WORD/F_WORD_TO_INT.fbt b/data/typelibrary/iec61131-3-1.0.0/typelib/conversion/WORD/F_WORD_TO_INT.fbt
similarity index 100%
rename from data/typelibrary/iec61131-3-1.0.0/conversion/WORD/F_WORD_TO_INT.fbt
rename to data/typelibrary/iec61131-3-1.0.0/typelib/conversion/WORD/F_WORD_TO_INT.fbt
diff --git a/data/typelibrary/iec61131-3-1.0.0/conversion/WORD/F_WORD_TO_LINT.fbt b/data/typelibrary/iec61131-3-1.0.0/typelib/conversion/WORD/F_WORD_TO_LINT.fbt
similarity index 100%
rename from data/typelibrary/iec61131-3-1.0.0/conversion/WORD/F_WORD_TO_LINT.fbt
rename to data/typelibrary/iec61131-3-1.0.0/typelib/conversion/WORD/F_WORD_TO_LINT.fbt
diff --git a/data/typelibrary/iec61131-3-1.0.0/conversion/WORD/F_WORD_TO_LWORD.fbt b/data/typelibrary/iec61131-3-1.0.0/typelib/conversion/WORD/F_WORD_TO_LWORD.fbt
similarity index 100%
rename from data/typelibrary/iec61131-3-1.0.0/conversion/WORD/F_WORD_TO_LWORD.fbt
rename to data/typelibrary/iec61131-3-1.0.0/typelib/conversion/WORD/F_WORD_TO_LWORD.fbt
diff --git a/data/typelibrary/iec61131-3-1.0.0/conversion/WORD/F_WORD_TO_SINT.fbt b/data/typelibrary/iec61131-3-1.0.0/typelib/conversion/WORD/F_WORD_TO_SINT.fbt
similarity index 100%
rename from data/typelibrary/iec61131-3-1.0.0/conversion/WORD/F_WORD_TO_SINT.fbt
rename to data/typelibrary/iec61131-3-1.0.0/typelib/conversion/WORD/F_WORD_TO_SINT.fbt
diff --git a/data/typelibrary/iec61131-3-1.0.0/conversion/WORD/F_WORD_TO_UDINT.fbt b/data/typelibrary/iec61131-3-1.0.0/typelib/conversion/WORD/F_WORD_TO_UDINT.fbt
similarity index 100%
rename from data/typelibrary/iec61131-3-1.0.0/conversion/WORD/F_WORD_TO_UDINT.fbt
rename to data/typelibrary/iec61131-3-1.0.0/typelib/conversion/WORD/F_WORD_TO_UDINT.fbt
diff --git a/data/typelibrary/iec61131-3-1.0.0/conversion/WORD/F_WORD_TO_UINT.fbt b/data/typelibrary/iec61131-3-1.0.0/typelib/conversion/WORD/F_WORD_TO_UINT.fbt
similarity index 100%
rename from data/typelibrary/iec61131-3-1.0.0/conversion/WORD/F_WORD_TO_UINT.fbt
rename to data/typelibrary/iec61131-3-1.0.0/typelib/conversion/WORD/F_WORD_TO_UINT.fbt
diff --git a/data/typelibrary/iec61131-3-1.0.0/conversion/WORD/F_WORD_TO_ULINT.fbt b/data/typelibrary/iec61131-3-1.0.0/typelib/conversion/WORD/F_WORD_TO_ULINT.fbt
similarity index 100%
rename from data/typelibrary/iec61131-3-1.0.0/conversion/WORD/F_WORD_TO_ULINT.fbt
rename to data/typelibrary/iec61131-3-1.0.0/typelib/conversion/WORD/F_WORD_TO_ULINT.fbt
diff --git a/data/typelibrary/iec61131-3-1.0.0/conversion/WORD/F_WORD_TO_USINT.fbt b/data/typelibrary/iec61131-3-1.0.0/typelib/conversion/WORD/F_WORD_TO_USINT.fbt
similarity index 100%
rename from data/typelibrary/iec61131-3-1.0.0/conversion/WORD/F_WORD_TO_USINT.fbt
rename to data/typelibrary/iec61131-3-1.0.0/typelib/conversion/WORD/F_WORD_TO_USINT.fbt
diff --git a/data/typelibrary/iec61131-3-1.0.0/conversion/WSTRING/F_WSTRING_AS_BOOL.fbt b/data/typelibrary/iec61131-3-1.0.0/typelib/conversion/WSTRING/F_WSTRING_AS_BOOL.fbt
similarity index 100%
rename from data/typelibrary/iec61131-3-1.0.0/conversion/WSTRING/F_WSTRING_AS_BOOL.fbt
rename to data/typelibrary/iec61131-3-1.0.0/typelib/conversion/WSTRING/F_WSTRING_AS_BOOL.fbt
diff --git a/data/typelibrary/iec61131-3-1.0.0/conversion/WSTRING/F_WSTRING_AS_BYTE.fbt b/data/typelibrary/iec61131-3-1.0.0/typelib/conversion/WSTRING/F_WSTRING_AS_BYTE.fbt
similarity index 100%
rename from data/typelibrary/iec61131-3-1.0.0/conversion/WSTRING/F_WSTRING_AS_BYTE.fbt
rename to data/typelibrary/iec61131-3-1.0.0/typelib/conversion/WSTRING/F_WSTRING_AS_BYTE.fbt
diff --git a/data/typelibrary/iec61131-3-1.0.0/conversion/WSTRING/F_WSTRING_AS_DINT.fbt b/data/typelibrary/iec61131-3-1.0.0/typelib/conversion/WSTRING/F_WSTRING_AS_DINT.fbt
similarity index 100%
rename from data/typelibrary/iec61131-3-1.0.0/conversion/WSTRING/F_WSTRING_AS_DINT.fbt
rename to data/typelibrary/iec61131-3-1.0.0/typelib/conversion/WSTRING/F_WSTRING_AS_DINT.fbt
diff --git a/data/typelibrary/iec61131-3-1.0.0/conversion/WSTRING/F_WSTRING_AS_DWORD.fbt b/data/typelibrary/iec61131-3-1.0.0/typelib/conversion/WSTRING/F_WSTRING_AS_DWORD.fbt
similarity index 100%
rename from data/typelibrary/iec61131-3-1.0.0/conversion/WSTRING/F_WSTRING_AS_DWORD.fbt
rename to data/typelibrary/iec61131-3-1.0.0/typelib/conversion/WSTRING/F_WSTRING_AS_DWORD.fbt
diff --git a/data/typelibrary/iec61131-3-1.0.0/conversion/WSTRING/F_WSTRING_AS_INT.fbt b/data/typelibrary/iec61131-3-1.0.0/typelib/conversion/WSTRING/F_WSTRING_AS_INT.fbt
similarity index 100%
rename from data/typelibrary/iec61131-3-1.0.0/conversion/WSTRING/F_WSTRING_AS_INT.fbt
rename to data/typelibrary/iec61131-3-1.0.0/typelib/conversion/WSTRING/F_WSTRING_AS_INT.fbt
diff --git a/data/typelibrary/iec61131-3-1.0.0/conversion/WSTRING/F_WSTRING_AS_LINT.fbt b/data/typelibrary/iec61131-3-1.0.0/typelib/conversion/WSTRING/F_WSTRING_AS_LINT.fbt
similarity index 100%
rename from data/typelibrary/iec61131-3-1.0.0/conversion/WSTRING/F_WSTRING_AS_LINT.fbt
rename to data/typelibrary/iec61131-3-1.0.0/typelib/conversion/WSTRING/F_WSTRING_AS_LINT.fbt
diff --git a/data/typelibrary/iec61131-3-1.0.0/conversion/WSTRING/F_WSTRING_AS_LREAL.fbt b/data/typelibrary/iec61131-3-1.0.0/typelib/conversion/WSTRING/F_WSTRING_AS_LREAL.fbt
similarity index 100%
rename from data/typelibrary/iec61131-3-1.0.0/conversion/WSTRING/F_WSTRING_AS_LREAL.fbt
rename to data/typelibrary/iec61131-3-1.0.0/typelib/conversion/WSTRING/F_WSTRING_AS_LREAL.fbt
diff --git a/data/typelibrary/iec61131-3-1.0.0/conversion/WSTRING/F_WSTRING_AS_LWORD.fbt b/data/typelibrary/iec61131-3-1.0.0/typelib/conversion/WSTRING/F_WSTRING_AS_LWORD.fbt
similarity index 100%
rename from data/typelibrary/iec61131-3-1.0.0/conversion/WSTRING/F_WSTRING_AS_LWORD.fbt
rename to data/typelibrary/iec61131-3-1.0.0/typelib/conversion/WSTRING/F_WSTRING_AS_LWORD.fbt
diff --git a/data/typelibrary/iec61131-3-1.0.0/conversion/WSTRING/F_WSTRING_AS_REAL.fbt b/data/typelibrary/iec61131-3-1.0.0/typelib/conversion/WSTRING/F_WSTRING_AS_REAL.fbt
similarity index 100%
rename from data/typelibrary/iec61131-3-1.0.0/conversion/WSTRING/F_WSTRING_AS_REAL.fbt
rename to data/typelibrary/iec61131-3-1.0.0/typelib/conversion/WSTRING/F_WSTRING_AS_REAL.fbt
diff --git a/data/typelibrary/iec61131-3-1.0.0/conversion/WSTRING/F_WSTRING_AS_SINT.fbt b/data/typelibrary/iec61131-3-1.0.0/typelib/conversion/WSTRING/F_WSTRING_AS_SINT.fbt
similarity index 100%
rename from data/typelibrary/iec61131-3-1.0.0/conversion/WSTRING/F_WSTRING_AS_SINT.fbt
rename to data/typelibrary/iec61131-3-1.0.0/typelib/conversion/WSTRING/F_WSTRING_AS_SINT.fbt
diff --git a/data/typelibrary/iec61131-3-1.0.0/conversion/WSTRING/F_WSTRING_AS_TIME.fbt b/data/typelibrary/iec61131-3-1.0.0/typelib/conversion/WSTRING/F_WSTRING_AS_TIME.fbt
similarity index 100%
rename from data/typelibrary/iec61131-3-1.0.0/conversion/WSTRING/F_WSTRING_AS_TIME.fbt
rename to data/typelibrary/iec61131-3-1.0.0/typelib/conversion/WSTRING/F_WSTRING_AS_TIME.fbt
diff --git a/data/typelibrary/iec61131-3-1.0.0/conversion/WSTRING/F_WSTRING_AS_UDINT.fbt b/data/typelibrary/iec61131-3-1.0.0/typelib/conversion/WSTRING/F_WSTRING_AS_UDINT.fbt
similarity index 100%
rename from data/typelibrary/iec61131-3-1.0.0/conversion/WSTRING/F_WSTRING_AS_UDINT.fbt
rename to data/typelibrary/iec61131-3-1.0.0/typelib/conversion/WSTRING/F_WSTRING_AS_UDINT.fbt
diff --git a/data/typelibrary/iec61131-3-1.0.0/conversion/WSTRING/F_WSTRING_AS_UINT.fbt b/data/typelibrary/iec61131-3-1.0.0/typelib/conversion/WSTRING/F_WSTRING_AS_UINT.fbt
similarity index 100%
rename from data/typelibrary/iec61131-3-1.0.0/conversion/WSTRING/F_WSTRING_AS_UINT.fbt
rename to data/typelibrary/iec61131-3-1.0.0/typelib/conversion/WSTRING/F_WSTRING_AS_UINT.fbt
diff --git a/data/typelibrary/iec61131-3-1.0.0/conversion/WSTRING/F_WSTRING_AS_ULINT.fbt b/data/typelibrary/iec61131-3-1.0.0/typelib/conversion/WSTRING/F_WSTRING_AS_ULINT.fbt
similarity index 100%
rename from data/typelibrary/iec61131-3-1.0.0/conversion/WSTRING/F_WSTRING_AS_ULINT.fbt
rename to data/typelibrary/iec61131-3-1.0.0/typelib/conversion/WSTRING/F_WSTRING_AS_ULINT.fbt
diff --git a/data/typelibrary/iec61131-3-1.0.0/conversion/WSTRING/F_WSTRING_AS_USINT.fbt b/data/typelibrary/iec61131-3-1.0.0/typelib/conversion/WSTRING/F_WSTRING_AS_USINT.fbt
similarity index 100%
rename from data/typelibrary/iec61131-3-1.0.0/conversion/WSTRING/F_WSTRING_AS_USINT.fbt
rename to data/typelibrary/iec61131-3-1.0.0/typelib/conversion/WSTRING/F_WSTRING_AS_USINT.fbt
diff --git a/data/typelibrary/iec61131-3-1.0.0/conversion/WSTRING/F_WSTRING_AS_WORD.fbt b/data/typelibrary/iec61131-3-1.0.0/typelib/conversion/WSTRING/F_WSTRING_AS_WORD.fbt
similarity index 100%
rename from data/typelibrary/iec61131-3-1.0.0/conversion/WSTRING/F_WSTRING_AS_WORD.fbt
rename to data/typelibrary/iec61131-3-1.0.0/typelib/conversion/WSTRING/F_WSTRING_AS_WORD.fbt
diff --git a/data/typelibrary/iec61131-3-1.0.0/conversion/WSTRING/F_WSTRING_TO_STRING.fbt b/data/typelibrary/iec61131-3-1.0.0/typelib/conversion/WSTRING/F_WSTRING_TO_STRING.fbt
similarity index 100%
rename from data/typelibrary/iec61131-3-1.0.0/conversion/WSTRING/F_WSTRING_TO_STRING.fbt
rename to data/typelibrary/iec61131-3-1.0.0/typelib/conversion/WSTRING/F_WSTRING_TO_STRING.fbt
diff --git a/data/typelibrary/iec61131-3-1.0.0/counters/FB_CTD.fbt b/data/typelibrary/iec61131-3-1.0.0/typelib/counters/FB_CTD.fbt
similarity index 100%
rename from data/typelibrary/iec61131-3-1.0.0/counters/FB_CTD.fbt
rename to data/typelibrary/iec61131-3-1.0.0/typelib/counters/FB_CTD.fbt
diff --git a/data/typelibrary/iec61131-3-1.0.0/counters/FB_CTD_DINT.fbt b/data/typelibrary/iec61131-3-1.0.0/typelib/counters/FB_CTD_DINT.fbt
similarity index 100%
rename from data/typelibrary/iec61131-3-1.0.0/counters/FB_CTD_DINT.fbt
rename to data/typelibrary/iec61131-3-1.0.0/typelib/counters/FB_CTD_DINT.fbt
diff --git a/data/typelibrary/iec61131-3-1.0.0/counters/FB_CTD_LINT.fbt b/data/typelibrary/iec61131-3-1.0.0/typelib/counters/FB_CTD_LINT.fbt
similarity index 100%
rename from data/typelibrary/iec61131-3-1.0.0/counters/FB_CTD_LINT.fbt
rename to data/typelibrary/iec61131-3-1.0.0/typelib/counters/FB_CTD_LINT.fbt
diff --git a/data/typelibrary/iec61131-3-1.0.0/counters/FB_CTD_UDINT.fbt b/data/typelibrary/iec61131-3-1.0.0/typelib/counters/FB_CTD_UDINT.fbt
similarity index 100%
rename from data/typelibrary/iec61131-3-1.0.0/counters/FB_CTD_UDINT.fbt
rename to data/typelibrary/iec61131-3-1.0.0/typelib/counters/FB_CTD_UDINT.fbt
diff --git a/data/typelibrary/iec61131-3-1.0.0/counters/FB_CTD_ULINT.fbt b/data/typelibrary/iec61131-3-1.0.0/typelib/counters/FB_CTD_ULINT.fbt
similarity index 100%
rename from data/typelibrary/iec61131-3-1.0.0/counters/FB_CTD_ULINT.fbt
rename to data/typelibrary/iec61131-3-1.0.0/typelib/counters/FB_CTD_ULINT.fbt
diff --git a/data/typelibrary/iec61131-3-1.0.0/counters/FB_CTU.fbt b/data/typelibrary/iec61131-3-1.0.0/typelib/counters/FB_CTU.fbt
similarity index 100%
rename from data/typelibrary/iec61131-3-1.0.0/counters/FB_CTU.fbt
rename to data/typelibrary/iec61131-3-1.0.0/typelib/counters/FB_CTU.fbt
diff --git a/data/typelibrary/iec61131-3-1.0.0/counters/FB_CTUD.fbt b/data/typelibrary/iec61131-3-1.0.0/typelib/counters/FB_CTUD.fbt
similarity index 100%
rename from data/typelibrary/iec61131-3-1.0.0/counters/FB_CTUD.fbt
rename to data/typelibrary/iec61131-3-1.0.0/typelib/counters/FB_CTUD.fbt
diff --git a/data/typelibrary/iec61131-3-1.0.0/counters/FB_CTUD_DINT.fbt b/data/typelibrary/iec61131-3-1.0.0/typelib/counters/FB_CTUD_DINT.fbt
similarity index 100%
rename from data/typelibrary/iec61131-3-1.0.0/counters/FB_CTUD_DINT.fbt
rename to data/typelibrary/iec61131-3-1.0.0/typelib/counters/FB_CTUD_DINT.fbt
diff --git a/data/typelibrary/iec61131-3-1.0.0/counters/FB_CTUD_LINT.fbt b/data/typelibrary/iec61131-3-1.0.0/typelib/counters/FB_CTUD_LINT.fbt
similarity index 100%
rename from data/typelibrary/iec61131-3-1.0.0/counters/FB_CTUD_LINT.fbt
rename to data/typelibrary/iec61131-3-1.0.0/typelib/counters/FB_CTUD_LINT.fbt
diff --git a/data/typelibrary/iec61131-3-1.0.0/counters/FB_CTUD_ULINT.fbt b/data/typelibrary/iec61131-3-1.0.0/typelib/counters/FB_CTUD_ULINT.fbt
similarity index 100%
rename from data/typelibrary/iec61131-3-1.0.0/counters/FB_CTUD_ULINT.fbt
rename to data/typelibrary/iec61131-3-1.0.0/typelib/counters/FB_CTUD_ULINT.fbt
diff --git a/data/typelibrary/iec61131-3-1.0.0/counters/FB_CTU_DINT.fbt b/data/typelibrary/iec61131-3-1.0.0/typelib/counters/FB_CTU_DINT.fbt
similarity index 100%
rename from data/typelibrary/iec61131-3-1.0.0/counters/FB_CTU_DINT.fbt
rename to data/typelibrary/iec61131-3-1.0.0/typelib/counters/FB_CTU_DINT.fbt
diff --git a/data/typelibrary/iec61131-3-1.0.0/counters/FB_CTU_LINT.fbt b/data/typelibrary/iec61131-3-1.0.0/typelib/counters/FB_CTU_LINT.fbt
similarity index 100%
rename from data/typelibrary/iec61131-3-1.0.0/counters/FB_CTU_LINT.fbt
rename to data/typelibrary/iec61131-3-1.0.0/typelib/counters/FB_CTU_LINT.fbt
diff --git a/data/typelibrary/iec61131-3-1.0.0/counters/FB_CTU_UDINT.fbt b/data/typelibrary/iec61131-3-1.0.0/typelib/counters/FB_CTU_UDINT.fbt
similarity index 100%
rename from data/typelibrary/iec61131-3-1.0.0/counters/FB_CTU_UDINT.fbt
rename to data/typelibrary/iec61131-3-1.0.0/typelib/counters/FB_CTU_UDINT.fbt
diff --git a/data/typelibrary/iec61131-3-1.0.0/counters/FB_CTU_ULINT.fbt b/data/typelibrary/iec61131-3-1.0.0/typelib/counters/FB_CTU_ULINT.fbt
similarity index 100%
rename from data/typelibrary/iec61131-3-1.0.0/counters/FB_CTU_ULINT.fbt
rename to data/typelibrary/iec61131-3-1.0.0/typelib/counters/FB_CTU_ULINT.fbt
diff --git a/data/typelibrary/iec61131-3-1.0.0/edgeDetection/FB_F_TRIG.fbt b/data/typelibrary/iec61131-3-1.0.0/typelib/edgeDetection/FB_F_TRIG.fbt
similarity index 100%
rename from data/typelibrary/iec61131-3-1.0.0/edgeDetection/FB_F_TRIG.fbt
rename to data/typelibrary/iec61131-3-1.0.0/typelib/edgeDetection/FB_F_TRIG.fbt
diff --git a/data/typelibrary/iec61131-3-1.0.0/edgeDetection/FB_R_TRIG.fbt b/data/typelibrary/iec61131-3-1.0.0/typelib/edgeDetection/FB_R_TRIG.fbt
similarity index 100%
rename from data/typelibrary/iec61131-3-1.0.0/edgeDetection/FB_R_TRIG.fbt
rename to data/typelibrary/iec61131-3-1.0.0/typelib/edgeDetection/FB_R_TRIG.fbt
diff --git a/data/typelibrary/iec61131-3-1.0.0/numerical/F_ABS.fbt b/data/typelibrary/iec61131-3-1.0.0/typelib/numerical/F_ABS.fbt
similarity index 100%
rename from data/typelibrary/iec61131-3-1.0.0/numerical/F_ABS.fbt
rename to data/typelibrary/iec61131-3-1.0.0/typelib/numerical/F_ABS.fbt
diff --git a/data/typelibrary/iec61131-3-1.0.0/numerical/F_ACOS.fbt b/data/typelibrary/iec61131-3-1.0.0/typelib/numerical/F_ACOS.fbt
similarity index 100%
rename from data/typelibrary/iec61131-3-1.0.0/numerical/F_ACOS.fbt
rename to data/typelibrary/iec61131-3-1.0.0/typelib/numerical/F_ACOS.fbt
diff --git a/data/typelibrary/iec61131-3-1.0.0/numerical/F_ASIN.fbt b/data/typelibrary/iec61131-3-1.0.0/typelib/numerical/F_ASIN.fbt
similarity index 100%
rename from data/typelibrary/iec61131-3-1.0.0/numerical/F_ASIN.fbt
rename to data/typelibrary/iec61131-3-1.0.0/typelib/numerical/F_ASIN.fbt
diff --git a/data/typelibrary/iec61131-3-1.0.0/numerical/F_ATAN.fbt b/data/typelibrary/iec61131-3-1.0.0/typelib/numerical/F_ATAN.fbt
similarity index 100%
rename from data/typelibrary/iec61131-3-1.0.0/numerical/F_ATAN.fbt
rename to data/typelibrary/iec61131-3-1.0.0/typelib/numerical/F_ATAN.fbt
diff --git a/data/typelibrary/iec61131-3-1.0.0/numerical/F_COS.fbt b/data/typelibrary/iec61131-3-1.0.0/typelib/numerical/F_COS.fbt
similarity index 100%
rename from data/typelibrary/iec61131-3-1.0.0/numerical/F_COS.fbt
rename to data/typelibrary/iec61131-3-1.0.0/typelib/numerical/F_COS.fbt
diff --git a/data/typelibrary/iec61131-3-1.0.0/numerical/F_EXP.fbt b/data/typelibrary/iec61131-3-1.0.0/typelib/numerical/F_EXP.fbt
similarity index 100%
rename from data/typelibrary/iec61131-3-1.0.0/numerical/F_EXP.fbt
rename to data/typelibrary/iec61131-3-1.0.0/typelib/numerical/F_EXP.fbt
diff --git a/data/typelibrary/iec61131-3-1.0.0/numerical/F_LN.fbt b/data/typelibrary/iec61131-3-1.0.0/typelib/numerical/F_LN.fbt
similarity index 100%
rename from data/typelibrary/iec61131-3-1.0.0/numerical/F_LN.fbt
rename to data/typelibrary/iec61131-3-1.0.0/typelib/numerical/F_LN.fbt
diff --git a/data/typelibrary/iec61131-3-1.0.0/numerical/F_LOG.fbt b/data/typelibrary/iec61131-3-1.0.0/typelib/numerical/F_LOG.fbt
similarity index 100%
rename from data/typelibrary/iec61131-3-1.0.0/numerical/F_LOG.fbt
rename to data/typelibrary/iec61131-3-1.0.0/typelib/numerical/F_LOG.fbt
diff --git a/data/typelibrary/iec61131-3-1.0.0/numerical/F_SIN.fbt b/data/typelibrary/iec61131-3-1.0.0/typelib/numerical/F_SIN.fbt
similarity index 100%
rename from data/typelibrary/iec61131-3-1.0.0/numerical/F_SIN.fbt
rename to data/typelibrary/iec61131-3-1.0.0/typelib/numerical/F_SIN.fbt
diff --git a/data/typelibrary/iec61131-3-1.0.0/numerical/F_SQRT.fbt b/data/typelibrary/iec61131-3-1.0.0/typelib/numerical/F_SQRT.fbt
similarity index 100%
rename from data/typelibrary/iec61131-3-1.0.0/numerical/F_SQRT.fbt
rename to data/typelibrary/iec61131-3-1.0.0/typelib/numerical/F_SQRT.fbt
diff --git a/data/typelibrary/iec61131-3-1.0.0/numerical/F_TAN.fbt b/data/typelibrary/iec61131-3-1.0.0/typelib/numerical/F_TAN.fbt
similarity index 100%
rename from data/typelibrary/iec61131-3-1.0.0/numerical/F_TAN.fbt
rename to data/typelibrary/iec61131-3-1.0.0/typelib/numerical/F_TAN.fbt
diff --git a/data/typelibrary/iec61131-3-1.0.0/selection/F_LIMIT.fbt b/data/typelibrary/iec61131-3-1.0.0/typelib/selection/F_LIMIT.fbt
similarity index 100%
rename from data/typelibrary/iec61131-3-1.0.0/selection/F_LIMIT.fbt
rename to data/typelibrary/iec61131-3-1.0.0/typelib/selection/F_LIMIT.fbt
diff --git a/data/typelibrary/iec61131-3-1.0.0/selection/F_MAX.fbt b/data/typelibrary/iec61131-3-1.0.0/typelib/selection/F_MAX.fbt
similarity index 100%
rename from data/typelibrary/iec61131-3-1.0.0/selection/F_MAX.fbt
rename to data/typelibrary/iec61131-3-1.0.0/typelib/selection/F_MAX.fbt
diff --git a/data/typelibrary/iec61131-3-1.0.0/selection/F_MIN.fbt b/data/typelibrary/iec61131-3-1.0.0/typelib/selection/F_MIN.fbt
similarity index 100%
rename from data/typelibrary/iec61131-3-1.0.0/selection/F_MIN.fbt
rename to data/typelibrary/iec61131-3-1.0.0/typelib/selection/F_MIN.fbt
diff --git a/data/typelibrary/iec61131-3-1.0.0/selection/F_MUX_2.fbt b/data/typelibrary/iec61131-3-1.0.0/typelib/selection/F_MUX_2.fbt
similarity index 100%
rename from data/typelibrary/iec61131-3-1.0.0/selection/F_MUX_2.fbt
rename to data/typelibrary/iec61131-3-1.0.0/typelib/selection/F_MUX_2.fbt
diff --git a/data/typelibrary/iec61131-3-1.0.0/selection/F_SEL.fbt b/data/typelibrary/iec61131-3-1.0.0/typelib/selection/F_SEL.fbt
similarity index 100%
rename from data/typelibrary/iec61131-3-1.0.0/selection/F_SEL.fbt
rename to data/typelibrary/iec61131-3-1.0.0/typelib/selection/F_SEL.fbt
diff --git a/data/typelibrary/iec61131-3-1.0.0/timers/FB_TOF.fbt b/data/typelibrary/iec61131-3-1.0.0/typelib/timers/FB_TOF.fbt
similarity index 100%
rename from data/typelibrary/iec61131-3-1.0.0/timers/FB_TOF.fbt
rename to data/typelibrary/iec61131-3-1.0.0/typelib/timers/FB_TOF.fbt
diff --git a/data/typelibrary/iec61131-3-1.0.0/timers/FB_TON.fbt b/data/typelibrary/iec61131-3-1.0.0/typelib/timers/FB_TON.fbt
similarity index 100%
rename from data/typelibrary/iec61131-3-1.0.0/timers/FB_TON.fbt
rename to data/typelibrary/iec61131-3-1.0.0/typelib/timers/FB_TON.fbt
diff --git a/data/typelibrary/iec61131-3-1.0.0/timers/FB_TP.fbt b/data/typelibrary/iec61131-3-1.0.0/typelib/timers/FB_TP.fbt
similarity index 100%
rename from data/typelibrary/iec61131-3-1.0.0/timers/FB_TP.fbt
rename to data/typelibrary/iec61131-3-1.0.0/typelib/timers/FB_TP.fbt
diff --git a/data/typelibrary/io-1.0.0/MANIFEST.MF b/data/typelibrary/io-1.0.0/MANIFEST.MF
index 8e971f9..1d6982a 100644
--- a/data/typelibrary/io-1.0.0/MANIFEST.MF
+++ b/data/typelibrary/io-1.0.0/MANIFEST.MF
@@ -1,6 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?>
-<Manifest xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="platform:/resource/org.eclipse.fordiac.ide.library.model/model/library.xsd" scope="Library">
- <product name="IO" symbolicName="io" comment="Standard Library - IO">
- <versionInfo version="1.0.0" author="Eclipse 4diac" date="2024-02-21"/>
- </product>
+<Manifest xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="platform:/resource/org.eclipse.fordiac.ide.library.model/model/library.xsd" Scope="Library">
+ <Product Name="IO" SymbolicName="io" Comment="Standard Library - IO">
+ <VersionInfo Version="1.0.0" Author="Eclipse 4diac" Date="2024-02-21"/>
+ </Product>
</Manifest>
\ No newline at end of file
diff --git a/data/typelibrary/io-1.0.0/ADS/ADS_SERVER_CONFIG.fbt b/data/typelibrary/io-1.0.0/typelib/ADS/ADS_SERVER_CONFIG.fbt
old mode 100755
new mode 100644
similarity index 100%
rename from data/typelibrary/io-1.0.0/ADS/ADS_SERVER_CONFIG.fbt
rename to data/typelibrary/io-1.0.0/typelib/ADS/ADS_SERVER_CONFIG.fbt
diff --git a/data/typelibrary/io-1.0.0/ADS/SET_LOCAL_ADS_ADDRESS.fbt b/data/typelibrary/io-1.0.0/typelib/ADS/SET_LOCAL_ADS_ADDRESS.fbt
old mode 100755
new mode 100644
similarity index 100%
rename from data/typelibrary/io-1.0.0/ADS/SET_LOCAL_ADS_ADDRESS.fbt
rename to data/typelibrary/io-1.0.0/typelib/ADS/SET_LOCAL_ADS_ADDRESS.fbt
diff --git a/data/typelibrary/io-1.0.0/IB.fbt b/data/typelibrary/io-1.0.0/typelib/IB.fbt
similarity index 100%
rename from data/typelibrary/io-1.0.0/IB.fbt
rename to data/typelibrary/io-1.0.0/typelib/IB.fbt
diff --git a/data/typelibrary/io-1.0.0/ID.fbt b/data/typelibrary/io-1.0.0/typelib/ID.fbt
similarity index 100%
rename from data/typelibrary/io-1.0.0/ID.fbt
rename to data/typelibrary/io-1.0.0/typelib/ID.fbt
diff --git a/data/typelibrary/io-1.0.0/IE.fbt b/data/typelibrary/io-1.0.0/typelib/IE.fbt
similarity index 100%
rename from data/typelibrary/io-1.0.0/IE.fbt
rename to data/typelibrary/io-1.0.0/typelib/IE.fbt
diff --git a/data/typelibrary/io-1.0.0/IL.fbt b/data/typelibrary/io-1.0.0/typelib/IL.fbt
similarity index 100%
rename from data/typelibrary/io-1.0.0/IL.fbt
rename to data/typelibrary/io-1.0.0/typelib/IL.fbt
diff --git a/data/typelibrary/io-1.0.0/IW.fbt b/data/typelibrary/io-1.0.0/typelib/IW.fbt
similarity index 100%
rename from data/typelibrary/io-1.0.0/IW.fbt
rename to data/typelibrary/io-1.0.0/typelib/IW.fbt
diff --git a/data/typelibrary/io-1.0.0/IX.fbt b/data/typelibrary/io-1.0.0/typelib/IX.fbt
similarity index 100%
rename from data/typelibrary/io-1.0.0/IX.fbt
rename to data/typelibrary/io-1.0.0/typelib/IX.fbt
diff --git a/data/typelibrary/io-1.0.0/PLC01A1/PLC01A1.fbt b/data/typelibrary/io-1.0.0/typelib/PLC01A1/PLC01A1.fbt
similarity index 100%
rename from data/typelibrary/io-1.0.0/PLC01A1/PLC01A1.fbt
rename to data/typelibrary/io-1.0.0/typelib/PLC01A1/PLC01A1.fbt
diff --git a/data/typelibrary/io-1.0.0/PLCnext/PLCnextAXLSEDI16.fbt b/data/typelibrary/io-1.0.0/typelib/PLCnext/PLCnextAXLSEDI16.fbt
similarity index 100%
rename from data/typelibrary/io-1.0.0/PLCnext/PLCnextAXLSEDI16.fbt
rename to data/typelibrary/io-1.0.0/typelib/PLCnext/PLCnextAXLSEDI16.fbt
diff --git a/data/typelibrary/io-1.0.0/PLCnext/PLCnextAXLSEDO16.fbt b/data/typelibrary/io-1.0.0/typelib/PLCnext/PLCnextAXLSEDO16.fbt
similarity index 100%
rename from data/typelibrary/io-1.0.0/PLCnext/PLCnextAXLSEDO16.fbt
rename to data/typelibrary/io-1.0.0/typelib/PLCnext/PLCnextAXLSEDO16.fbt
diff --git a/data/typelibrary/io-1.0.0/PLCnext/PLCnextAXLSESC.fbt b/data/typelibrary/io-1.0.0/typelib/PLCnext/PLCnextAXLSESC.fbt
similarity index 100%
rename from data/typelibrary/io-1.0.0/PLCnext/PLCnextAXLSESC.fbt
rename to data/typelibrary/io-1.0.0/typelib/PLCnext/PLCnextAXLSESC.fbt
diff --git a/data/typelibrary/io-1.0.0/PLCnext/PLCnextBusAdapter.adp b/data/typelibrary/io-1.0.0/typelib/PLCnext/PLCnextBusAdapter.adp
similarity index 100%
rename from data/typelibrary/io-1.0.0/PLCnext/PLCnextBusAdapter.adp
rename to data/typelibrary/io-1.0.0/typelib/PLCnext/PLCnextBusAdapter.adp
diff --git a/data/typelibrary/io-1.0.0/PLCnext/PLCnextMaster.fbt b/data/typelibrary/io-1.0.0/typelib/PLCnext/PLCnextMaster.fbt
similarity index 100%
rename from data/typelibrary/io-1.0.0/PLCnext/PLCnextMaster.fbt
rename to data/typelibrary/io-1.0.0/typelib/PLCnext/PLCnextMaster.fbt
diff --git a/data/typelibrary/io-1.0.0/QB.fbt b/data/typelibrary/io-1.0.0/typelib/QB.fbt
similarity index 100%
rename from data/typelibrary/io-1.0.0/QB.fbt
rename to data/typelibrary/io-1.0.0/typelib/QB.fbt
diff --git a/data/typelibrary/io-1.0.0/QD.fbt b/data/typelibrary/io-1.0.0/typelib/QD.fbt
similarity index 100%
rename from data/typelibrary/io-1.0.0/QD.fbt
rename to data/typelibrary/io-1.0.0/typelib/QD.fbt
diff --git a/data/typelibrary/io-1.0.0/QL.fbt b/data/typelibrary/io-1.0.0/typelib/QL.fbt
similarity index 100%
rename from data/typelibrary/io-1.0.0/QL.fbt
rename to data/typelibrary/io-1.0.0/typelib/QL.fbt
diff --git a/data/typelibrary/io-1.0.0/QW.fbt b/data/typelibrary/io-1.0.0/typelib/QW.fbt
similarity index 100%
rename from data/typelibrary/io-1.0.0/QW.fbt
rename to data/typelibrary/io-1.0.0/typelib/QW.fbt
diff --git a/data/typelibrary/io-1.0.0/QX.fbt b/data/typelibrary/io-1.0.0/typelib/QX.fbt
similarity index 100%
rename from data/typelibrary/io-1.0.0/QX.fbt
rename to data/typelibrary/io-1.0.0/typelib/QX.fbt
diff --git a/data/typelibrary/io-1.0.0/eliteboard/EliteBoard.fbt b/data/typelibrary/io-1.0.0/typelib/eliteboard/EliteBoard.fbt
similarity index 100%
rename from data/typelibrary/io-1.0.0/eliteboard/EliteBoard.fbt
rename to data/typelibrary/io-1.0.0/typelib/eliteboard/EliteBoard.fbt
diff --git a/data/typelibrary/io-1.0.0/eliteboard/Port.fbt b/data/typelibrary/io-1.0.0/typelib/eliteboard/Port.fbt
similarity index 100%
rename from data/typelibrary/io-1.0.0/eliteboard/Port.fbt
rename to data/typelibrary/io-1.0.0/typelib/eliteboard/Port.fbt
diff --git a/data/typelibrary/io-1.0.0/eliteboard/PortAdapter.adp b/data/typelibrary/io-1.0.0/typelib/eliteboard/PortAdapter.adp
similarity index 100%
rename from data/typelibrary/io-1.0.0/eliteboard/PortAdapter.adp
rename to data/typelibrary/io-1.0.0/typelib/eliteboard/PortAdapter.adp
diff --git a/data/typelibrary/io-1.0.0/embrick/EBBusAdapter.adp b/data/typelibrary/io-1.0.0/typelib/embrick/EBBusAdapter.adp
similarity index 100%
rename from data/typelibrary/io-1.0.0/embrick/EBBusAdapter.adp
rename to data/typelibrary/io-1.0.0/typelib/embrick/EBBusAdapter.adp
diff --git a/data/typelibrary/io-1.0.0/embrick/EBMaster.fbt b/data/typelibrary/io-1.0.0/typelib/embrick/EBMaster.fbt
similarity index 100%
rename from data/typelibrary/io-1.0.0/embrick/EBMaster.fbt
rename to data/typelibrary/io-1.0.0/typelib/embrick/EBMaster.fbt
diff --git a/data/typelibrary/io-1.0.0/embrick/EBSlave2181.fbt b/data/typelibrary/io-1.0.0/typelib/embrick/EBSlave2181.fbt
similarity index 100%
rename from data/typelibrary/io-1.0.0/embrick/EBSlave2181.fbt
rename to data/typelibrary/io-1.0.0/typelib/embrick/EBSlave2181.fbt
diff --git a/data/typelibrary/io-1.0.0/embrick/EBSlave2301.fbt b/data/typelibrary/io-1.0.0/typelib/embrick/EBSlave2301.fbt
similarity index 100%
rename from data/typelibrary/io-1.0.0/embrick/EBSlave2301.fbt
rename to data/typelibrary/io-1.0.0/typelib/embrick/EBSlave2301.fbt
diff --git a/data/typelibrary/io-1.0.0/wago/Wago1405_6.fbt b/data/typelibrary/io-1.0.0/typelib/wago/Wago1405_6.fbt
similarity index 100%
rename from data/typelibrary/io-1.0.0/wago/Wago1405_6.fbt
rename to data/typelibrary/io-1.0.0/typelib/wago/Wago1405_6.fbt
diff --git a/data/typelibrary/io-1.0.0/wago/Wago1504_5.fbt b/data/typelibrary/io-1.0.0/typelib/wago/Wago1504_5.fbt
similarity index 100%
rename from data/typelibrary/io-1.0.0/wago/Wago1504_5.fbt
rename to data/typelibrary/io-1.0.0/typelib/wago/Wago1504_5.fbt
diff --git a/data/typelibrary/io-1.0.0/wago/Wago1506.fbt b/data/typelibrary/io-1.0.0/typelib/wago/Wago1506.fbt
similarity index 100%
rename from data/typelibrary/io-1.0.0/wago/Wago1506.fbt
rename to data/typelibrary/io-1.0.0/typelib/wago/Wago1506.fbt
diff --git a/data/typelibrary/io-1.0.0/wago/Wago459.fbt b/data/typelibrary/io-1.0.0/typelib/wago/Wago459.fbt
similarity index 100%
rename from data/typelibrary/io-1.0.0/wago/Wago459.fbt
rename to data/typelibrary/io-1.0.0/typelib/wago/Wago459.fbt
diff --git a/data/typelibrary/io-1.0.0/wago/WagoBusAdapter.adp b/data/typelibrary/io-1.0.0/typelib/wago/WagoBusAdapter.adp
similarity index 100%
rename from data/typelibrary/io-1.0.0/wago/WagoBusAdapter.adp
rename to data/typelibrary/io-1.0.0/typelib/wago/WagoBusAdapter.adp
diff --git a/data/typelibrary/io-1.0.0/wago/WagoMaster.fbt b/data/typelibrary/io-1.0.0/typelib/wago/WagoMaster.fbt
similarity index 100%
rename from data/typelibrary/io-1.0.0/wago/WagoMaster.fbt
rename to data/typelibrary/io-1.0.0/typelib/wago/WagoMaster.fbt
diff --git a/data/typelibrary/io-1.0.0/zephyr/Esp32EthernetKitIO.fbt b/data/typelibrary/io-1.0.0/typelib/zephyr/Esp32EthernetKitIO.fbt
similarity index 100%
rename from data/typelibrary/io-1.0.0/zephyr/Esp32EthernetKitIO.fbt
rename to data/typelibrary/io-1.0.0/typelib/zephyr/Esp32EthernetKitIO.fbt
diff --git a/data/typelibrary/io-1.0.0/zephyr/ZephyrIO.fbt b/data/typelibrary/io-1.0.0/typelib/zephyr/ZephyrIO.fbt
similarity index 100%
rename from data/typelibrary/io-1.0.0/zephyr/ZephyrIO.fbt
rename to data/typelibrary/io-1.0.0/typelib/zephyr/ZephyrIO.fbt
diff --git a/data/typelibrary/math-1.0.0/MANIFEST.MF b/data/typelibrary/math-1.0.0/MANIFEST.MF
index 047db4f..0039f80 100644
--- a/data/typelibrary/math-1.0.0/MANIFEST.MF
+++ b/data/typelibrary/math-1.0.0/MANIFEST.MF
@@ -1,6 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?>
-<Manifest xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="platform:/resource/org.eclipse.fordiac.ide.library.model/model/library.xsd" scope="Library">
- <product name="Math" symbolicName="math" comment="Standard Library - Math">
- <versionInfo version="1.0.0" author="Eclipse 4diac" date="2024-02-21"/>
- </product>
+<Manifest xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="platform:/resource/org.eclipse.fordiac.ide.library.model/model/library.xsd" Scope="Library">
+ <Product Name="Math" SymbolicName="math" Comment="Standard Library - Math">
+ <VersionInfo Version="1.0.0" Author="Eclipse 4diac" Date="2024-02-21"/>
+ </Product>
</Manifest>
\ No newline at end of file
diff --git a/data/typelibrary/math-1.0.0/FB_RANDOM.fbt b/data/typelibrary/math-1.0.0/typelib/FB_RANDOM.fbt
similarity index 100%
rename from data/typelibrary/math-1.0.0/FB_RANDOM.fbt
rename to data/typelibrary/math-1.0.0/typelib/FB_RANDOM.fbt
diff --git a/data/typelibrary/net-1.0.0/MANIFEST.MF b/data/typelibrary/net-1.0.0/MANIFEST.MF
index 67b9b27..556efa7 100644
--- a/data/typelibrary/net-1.0.0/MANIFEST.MF
+++ b/data/typelibrary/net-1.0.0/MANIFEST.MF
@@ -1,6 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?>
-<Manifest xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="platform:/resource/org.eclipse.fordiac.ide.library.model/model/library.xsd" scope="Library">
- <product name="Net" symbolicName="net" comment="Standard Library - Net">
- <versionInfo version="1.0.0" author="Eclipse 4diac" date="2024-02-21"/>
- </product>
+<Manifest xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="platform:/resource/org.eclipse.fordiac.ide.library.model/model/library.xsd" Scope="Library">
+ <Product Name="Net" SymbolicName="net" Comment="Standard Library - Net">
+ <VersionInfo Version="1.0.0" Author="Eclipse 4diac" Date="2024-02-21"/>
+ </Product>
</Manifest>
\ No newline at end of file
diff --git a/data/typelibrary/net-1.0.0/CLIENT_1.fbt b/data/typelibrary/net-1.0.0/typelib/CLIENT_1.fbt
similarity index 100%
rename from data/typelibrary/net-1.0.0/CLIENT_1.fbt
rename to data/typelibrary/net-1.0.0/typelib/CLIENT_1.fbt
diff --git a/data/typelibrary/net-1.0.0/CLIENT_2_1.fbt b/data/typelibrary/net-1.0.0/typelib/CLIENT_2_1.fbt
similarity index 100%
rename from data/typelibrary/net-1.0.0/CLIENT_2_1.fbt
rename to data/typelibrary/net-1.0.0/typelib/CLIENT_2_1.fbt
diff --git a/data/typelibrary/net-1.0.0/PUBLISH_0.fbt b/data/typelibrary/net-1.0.0/typelib/PUBLISH_0.fbt
similarity index 100%
rename from data/typelibrary/net-1.0.0/PUBLISH_0.fbt
rename to data/typelibrary/net-1.0.0/typelib/PUBLISH_0.fbt
diff --git a/data/typelibrary/net-1.0.0/PUBLISH_1.fbt b/data/typelibrary/net-1.0.0/typelib/PUBLISH_1.fbt
similarity index 100%
rename from data/typelibrary/net-1.0.0/PUBLISH_1.fbt
rename to data/typelibrary/net-1.0.0/typelib/PUBLISH_1.fbt
diff --git a/data/typelibrary/net-1.0.0/PUBLISH_10.fbt b/data/typelibrary/net-1.0.0/typelib/PUBLISH_10.fbt
similarity index 100%
rename from data/typelibrary/net-1.0.0/PUBLISH_10.fbt
rename to data/typelibrary/net-1.0.0/typelib/PUBLISH_10.fbt
Binary files differ
diff --git a/data/typelibrary/net-1.0.0/PUBLISH_2.fbt b/data/typelibrary/net-1.0.0/typelib/PUBLISH_2.fbt
similarity index 100%
rename from data/typelibrary/net-1.0.0/PUBLISH_2.fbt
rename to data/typelibrary/net-1.0.0/typelib/PUBLISH_2.fbt
diff --git a/data/typelibrary/net-1.0.0/PUBLISH_3.fbt b/data/typelibrary/net-1.0.0/typelib/PUBLISH_3.fbt
similarity index 100%
rename from data/typelibrary/net-1.0.0/PUBLISH_3.fbt
rename to data/typelibrary/net-1.0.0/typelib/PUBLISH_3.fbt
diff --git a/data/typelibrary/net-1.0.0/PUBLISH_4.fbt b/data/typelibrary/net-1.0.0/typelib/PUBLISH_4.fbt
similarity index 100%
rename from data/typelibrary/net-1.0.0/PUBLISH_4.fbt
rename to data/typelibrary/net-1.0.0/typelib/PUBLISH_4.fbt
diff --git a/data/typelibrary/net-1.0.0/PUBLISH_5.fbt b/data/typelibrary/net-1.0.0/typelib/PUBLISH_5.fbt
similarity index 100%
rename from data/typelibrary/net-1.0.0/PUBLISH_5.fbt
rename to data/typelibrary/net-1.0.0/typelib/PUBLISH_5.fbt
diff --git a/data/typelibrary/net-1.0.0/PUBLISH_6.fbt b/data/typelibrary/net-1.0.0/typelib/PUBLISH_6.fbt
similarity index 100%
rename from data/typelibrary/net-1.0.0/PUBLISH_6.fbt
rename to data/typelibrary/net-1.0.0/typelib/PUBLISH_6.fbt
diff --git a/data/typelibrary/net-1.0.0/PUBLISH_7.fbt b/data/typelibrary/net-1.0.0/typelib/PUBLISH_7.fbt
similarity index 100%
rename from data/typelibrary/net-1.0.0/PUBLISH_7.fbt
rename to data/typelibrary/net-1.0.0/typelib/PUBLISH_7.fbt
diff --git a/data/typelibrary/net-1.0.0/PUBLISH_8.fbt b/data/typelibrary/net-1.0.0/typelib/PUBLISH_8.fbt
similarity index 100%
rename from data/typelibrary/net-1.0.0/PUBLISH_8.fbt
rename to data/typelibrary/net-1.0.0/typelib/PUBLISH_8.fbt
diff --git a/data/typelibrary/net-1.0.0/PUBLISH_9.fbt b/data/typelibrary/net-1.0.0/typelib/PUBLISH_9.fbt
similarity index 100%
rename from data/typelibrary/net-1.0.0/PUBLISH_9.fbt
rename to data/typelibrary/net-1.0.0/typelib/PUBLISH_9.fbt
Binary files differ
diff --git a/data/typelibrary/net-1.0.0/SERVER_1.fbt b/data/typelibrary/net-1.0.0/typelib/SERVER_1.fbt
similarity index 100%
rename from data/typelibrary/net-1.0.0/SERVER_1.fbt
rename to data/typelibrary/net-1.0.0/typelib/SERVER_1.fbt
diff --git a/data/typelibrary/net-1.0.0/SERVER_1_2.fbt b/data/typelibrary/net-1.0.0/typelib/SERVER_1_2.fbt
similarity index 100%
rename from data/typelibrary/net-1.0.0/SERVER_1_2.fbt
rename to data/typelibrary/net-1.0.0/typelib/SERVER_1_2.fbt
diff --git a/data/typelibrary/net-1.0.0/SUBSCRIBE_0.fbt b/data/typelibrary/net-1.0.0/typelib/SUBSCRIBE_0.fbt
similarity index 100%
rename from data/typelibrary/net-1.0.0/SUBSCRIBE_0.fbt
rename to data/typelibrary/net-1.0.0/typelib/SUBSCRIBE_0.fbt
diff --git a/data/typelibrary/net-1.0.0/SUBSCRIBE_1.fbt b/data/typelibrary/net-1.0.0/typelib/SUBSCRIBE_1.fbt
similarity index 100%
rename from data/typelibrary/net-1.0.0/SUBSCRIBE_1.fbt
rename to data/typelibrary/net-1.0.0/typelib/SUBSCRIBE_1.fbt
diff --git a/data/typelibrary/net-1.0.0/SUBSCRIBE_10.fbt b/data/typelibrary/net-1.0.0/typelib/SUBSCRIBE_10.fbt
similarity index 100%
rename from data/typelibrary/net-1.0.0/SUBSCRIBE_10.fbt
rename to data/typelibrary/net-1.0.0/typelib/SUBSCRIBE_10.fbt
diff --git a/data/typelibrary/net-1.0.0/SUBSCRIBE_2.fbt b/data/typelibrary/net-1.0.0/typelib/SUBSCRIBE_2.fbt
similarity index 100%
rename from data/typelibrary/net-1.0.0/SUBSCRIBE_2.fbt
rename to data/typelibrary/net-1.0.0/typelib/SUBSCRIBE_2.fbt
diff --git a/data/typelibrary/net-1.0.0/SUBSCRIBE_3.fbt b/data/typelibrary/net-1.0.0/typelib/SUBSCRIBE_3.fbt
similarity index 100%
rename from data/typelibrary/net-1.0.0/SUBSCRIBE_3.fbt
rename to data/typelibrary/net-1.0.0/typelib/SUBSCRIBE_3.fbt
diff --git a/data/typelibrary/net-1.0.0/SUBSCRIBE_4.fbt b/data/typelibrary/net-1.0.0/typelib/SUBSCRIBE_4.fbt
similarity index 100%
rename from data/typelibrary/net-1.0.0/SUBSCRIBE_4.fbt
rename to data/typelibrary/net-1.0.0/typelib/SUBSCRIBE_4.fbt
diff --git a/data/typelibrary/net-1.0.0/SUBSCRIBE_5.fbt b/data/typelibrary/net-1.0.0/typelib/SUBSCRIBE_5.fbt
similarity index 100%
rename from data/typelibrary/net-1.0.0/SUBSCRIBE_5.fbt
rename to data/typelibrary/net-1.0.0/typelib/SUBSCRIBE_5.fbt
diff --git a/data/typelibrary/net-1.0.0/SUBSCRIBE_6.fbt b/data/typelibrary/net-1.0.0/typelib/SUBSCRIBE_6.fbt
similarity index 100%
rename from data/typelibrary/net-1.0.0/SUBSCRIBE_6.fbt
rename to data/typelibrary/net-1.0.0/typelib/SUBSCRIBE_6.fbt
diff --git a/data/typelibrary/net-1.0.0/SUBSCRIBE_7.fbt b/data/typelibrary/net-1.0.0/typelib/SUBSCRIBE_7.fbt
similarity index 100%
rename from data/typelibrary/net-1.0.0/SUBSCRIBE_7.fbt
rename to data/typelibrary/net-1.0.0/typelib/SUBSCRIBE_7.fbt
diff --git a/data/typelibrary/net-1.0.0/SUBSCRIBE_8.fbt b/data/typelibrary/net-1.0.0/typelib/SUBSCRIBE_8.fbt
similarity index 100%
rename from data/typelibrary/net-1.0.0/SUBSCRIBE_8.fbt
rename to data/typelibrary/net-1.0.0/typelib/SUBSCRIBE_8.fbt
diff --git a/data/typelibrary/net-1.0.0/SUBSCRIBE_9.fbt b/data/typelibrary/net-1.0.0/typelib/SUBSCRIBE_9.fbt
similarity index 100%
rename from data/typelibrary/net-1.0.0/SUBSCRIBE_9.fbt
rename to data/typelibrary/net-1.0.0/typelib/SUBSCRIBE_9.fbt
diff --git a/data/typelibrary/reconfiguration-1.0.0/MANIFEST.MF b/data/typelibrary/reconfiguration-1.0.0/MANIFEST.MF
index 8f0374b..f84176a 100644
--- a/data/typelibrary/reconfiguration-1.0.0/MANIFEST.MF
+++ b/data/typelibrary/reconfiguration-1.0.0/MANIFEST.MF
@@ -1,6 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?>
-<Manifest xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="platform:/resource/org.eclipse.fordiac.ide.library.model/model/library.xsd" scope="Library">
- <product name="Reconfiguration" symbolicName="reconfiguration" comment="Standard Library - Reconfiguration">
- <versionInfo version="1.0.0" author="Eclipse 4diac" date="2024-02-21"/>
- </product>
+<Manifest xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="platform:/resource/org.eclipse.fordiac.ide.library.model/model/library.xsd" Scope="Library">
+ <Product Name="Reconfiguration" SymbolicName="reconfiguration" Comment="Standard Library - Reconfiguration">
+ <VersionInfo Version="1.0.0" Author="Eclipse 4diac" Date="2024-02-21"/>
+ </Product>
</Manifest>
\ No newline at end of file
diff --git a/data/typelibrary/reconfiguration-1.0.0/EC_KILL_ELEM.fbt b/data/typelibrary/reconfiguration-1.0.0/typelib/EC_KILL_ELEM.fbt
similarity index 100%
rename from data/typelibrary/reconfiguration-1.0.0/EC_KILL_ELEM.fbt
rename to data/typelibrary/reconfiguration-1.0.0/typelib/EC_KILL_ELEM.fbt
diff --git a/data/typelibrary/reconfiguration-1.0.0/EC_SET_EVT.fbt b/data/typelibrary/reconfiguration-1.0.0/typelib/EC_SET_EVT.fbt
similarity index 100%
rename from data/typelibrary/reconfiguration-1.0.0/EC_SET_EVT.fbt
rename to data/typelibrary/reconfiguration-1.0.0/typelib/EC_SET_EVT.fbt
diff --git a/data/typelibrary/reconfiguration-1.0.0/EC_START_ELEM.fbt b/data/typelibrary/reconfiguration-1.0.0/typelib/EC_START_ELEM.fbt
similarity index 100%
rename from data/typelibrary/reconfiguration-1.0.0/EC_START_ELEM.fbt
rename to data/typelibrary/reconfiguration-1.0.0/typelib/EC_START_ELEM.fbt
diff --git a/data/typelibrary/reconfiguration-1.0.0/EC_STOP_ELEM.fbt b/data/typelibrary/reconfiguration-1.0.0/typelib/EC_STOP_ELEM.fbt
similarity index 100%
rename from data/typelibrary/reconfiguration-1.0.0/EC_STOP_ELEM.fbt
rename to data/typelibrary/reconfiguration-1.0.0/typelib/EC_STOP_ELEM.fbt
diff --git a/data/typelibrary/reconfiguration-1.0.0/ST_CREATE_CONN.fbt b/data/typelibrary/reconfiguration-1.0.0/typelib/ST_CREATE_CONN.fbt
similarity index 100%
rename from data/typelibrary/reconfiguration-1.0.0/ST_CREATE_CONN.fbt
rename to data/typelibrary/reconfiguration-1.0.0/typelib/ST_CREATE_CONN.fbt
diff --git a/data/typelibrary/reconfiguration-1.0.0/ST_CREATE_FB.fbt b/data/typelibrary/reconfiguration-1.0.0/typelib/ST_CREATE_FB.fbt
similarity index 100%
rename from data/typelibrary/reconfiguration-1.0.0/ST_CREATE_FB.fbt
rename to data/typelibrary/reconfiguration-1.0.0/typelib/ST_CREATE_FB.fbt
diff --git a/data/typelibrary/reconfiguration-1.0.0/ST_DEL_CONN.fbt b/data/typelibrary/reconfiguration-1.0.0/typelib/ST_DEL_CONN.fbt
similarity index 100%
rename from data/typelibrary/reconfiguration-1.0.0/ST_DEL_CONN.fbt
rename to data/typelibrary/reconfiguration-1.0.0/typelib/ST_DEL_CONN.fbt
diff --git a/data/typelibrary/reconfiguration-1.0.0/ST_DEL_FB.fbt b/data/typelibrary/reconfiguration-1.0.0/typelib/ST_DEL_FB.fbt
similarity index 100%
rename from data/typelibrary/reconfiguration-1.0.0/ST_DEL_FB.fbt
rename to data/typelibrary/reconfiguration-1.0.0/typelib/ST_DEL_FB.fbt
diff --git a/data/typelibrary/reconfiguration-1.0.0/ST_REC_CONN.fbt b/data/typelibrary/reconfiguration-1.0.0/typelib/ST_REC_CONN.fbt
similarity index 100%
rename from data/typelibrary/reconfiguration-1.0.0/ST_REC_CONN.fbt
rename to data/typelibrary/reconfiguration-1.0.0/typelib/ST_REC_CONN.fbt
diff --git a/data/typelibrary/reconfiguration-1.0.0/ST_SET_PARM.fbt b/data/typelibrary/reconfiguration-1.0.0/typelib/ST_SET_PARM.fbt
similarity index 100%
rename from data/typelibrary/reconfiguration-1.0.0/ST_SET_PARM.fbt
rename to data/typelibrary/reconfiguration-1.0.0/typelib/ST_SET_PARM.fbt
diff --git a/data/typelibrary/resources-1.0.0/MANIFEST.MF b/data/typelibrary/resources-1.0.0/MANIFEST.MF
index 3e697e8..cbe52c9 100644
--- a/data/typelibrary/resources-1.0.0/MANIFEST.MF
+++ b/data/typelibrary/resources-1.0.0/MANIFEST.MF
@@ -1,6 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?>
-<Manifest xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="platform:/resource/org.eclipse.fordiac.ide.library.model/model/library.xsd" scope="Library">
- <product name="Resources" symbolicName="resources" comment="Standard Library - Resources">
- <versionInfo version="1.0.0" author="Eclipse 4diac" date="2024-02-21"/>
- </product>
+<Manifest xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="platform:/resource/org.eclipse.fordiac.ide.library.model/model/library.xsd" Scope="Library">
+ <Product Name="Resources" SymbolicName="resources" Comment="Standard Library - Resources">
+ <VersionInfo Version="1.0.0" Author="Eclipse 4diac" Date="2024-02-21"/>
+ </Product>
</Manifest>
\ No newline at end of file
diff --git a/data/typelibrary/resources-1.0.0/EMB_RES.res b/data/typelibrary/resources-1.0.0/typelib/EMB_RES.res
similarity index 100%
rename from data/typelibrary/resources-1.0.0/EMB_RES.res
rename to data/typelibrary/resources-1.0.0/typelib/EMB_RES.res
diff --git a/data/typelibrary/rtevents-1.0.0/MANIFEST.MF b/data/typelibrary/rtevents-1.0.0/MANIFEST.MF
index 0b0a150..85f2246 100644
--- a/data/typelibrary/rtevents-1.0.0/MANIFEST.MF
+++ b/data/typelibrary/rtevents-1.0.0/MANIFEST.MF
@@ -1,6 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?>
-<Manifest xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="platform:/resource/org.eclipse.fordiac.ide.library.model/model/library.xsd" scope="Library">
- <product name="Rtevents" symbolicName="rtevents" comment="Standard Library - RT Events">
- <versionInfo version="1.0.0" author="Eclipse 4diac" date="2024-02-21"/>
- </product>
+<Manifest xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="platform:/resource/org.eclipse.fordiac.ide.library.model/model/library.xsd" Scope="Library">
+ <Product Name="Rtevents" SymbolicName="rtevents" Comment="Standard Library - RT Events">
+ <VersionInfo Version="1.0.0" Author="Eclipse 4diac" Date="2024-02-21"/>
+ </Product>
</Manifest>
\ No newline at end of file
diff --git a/data/typelibrary/rtevents-1.0.0/RT_Bridge_1.FBT b/data/typelibrary/rtevents-1.0.0/typelib/RT_Bridge_1.FBT
similarity index 100%
rename from data/typelibrary/rtevents-1.0.0/RT_Bridge_1.FBT
rename to data/typelibrary/rtevents-1.0.0/typelib/RT_Bridge_1.FBT
diff --git a/data/typelibrary/rtevents-1.0.0/RT_Bridge_10.FBT b/data/typelibrary/rtevents-1.0.0/typelib/RT_Bridge_10.FBT
similarity index 100%
rename from data/typelibrary/rtevents-1.0.0/RT_Bridge_10.FBT
rename to data/typelibrary/rtevents-1.0.0/typelib/RT_Bridge_10.FBT
diff --git a/data/typelibrary/rtevents-1.0.0/RT_Bridge_11.FBT b/data/typelibrary/rtevents-1.0.0/typelib/RT_Bridge_11.FBT
similarity index 100%
rename from data/typelibrary/rtevents-1.0.0/RT_Bridge_11.FBT
rename to data/typelibrary/rtevents-1.0.0/typelib/RT_Bridge_11.FBT
diff --git a/data/typelibrary/rtevents-1.0.0/RT_Bridge_2.FBT b/data/typelibrary/rtevents-1.0.0/typelib/RT_Bridge_2.FBT
similarity index 100%
rename from data/typelibrary/rtevents-1.0.0/RT_Bridge_2.FBT
rename to data/typelibrary/rtevents-1.0.0/typelib/RT_Bridge_2.FBT
diff --git a/data/typelibrary/rtevents-1.0.0/RT_Bridge_3.FBT b/data/typelibrary/rtevents-1.0.0/typelib/RT_Bridge_3.FBT
similarity index 100%
rename from data/typelibrary/rtevents-1.0.0/RT_Bridge_3.FBT
rename to data/typelibrary/rtevents-1.0.0/typelib/RT_Bridge_3.FBT
diff --git a/data/typelibrary/rtevents-1.0.0/RT_Bridge_4.FBT b/data/typelibrary/rtevents-1.0.0/typelib/RT_Bridge_4.FBT
similarity index 100%
rename from data/typelibrary/rtevents-1.0.0/RT_Bridge_4.FBT
rename to data/typelibrary/rtevents-1.0.0/typelib/RT_Bridge_4.FBT
diff --git a/data/typelibrary/rtevents-1.0.0/RT_Bridge_5.FBT b/data/typelibrary/rtevents-1.0.0/typelib/RT_Bridge_5.FBT
similarity index 100%
rename from data/typelibrary/rtevents-1.0.0/RT_Bridge_5.FBT
rename to data/typelibrary/rtevents-1.0.0/typelib/RT_Bridge_5.FBT
diff --git a/data/typelibrary/rtevents-1.0.0/RT_Bridge_6.FBT b/data/typelibrary/rtevents-1.0.0/typelib/RT_Bridge_6.FBT
similarity index 100%
rename from data/typelibrary/rtevents-1.0.0/RT_Bridge_6.FBT
rename to data/typelibrary/rtevents-1.0.0/typelib/RT_Bridge_6.FBT
diff --git a/data/typelibrary/rtevents-1.0.0/RT_Bridge_7.FBT b/data/typelibrary/rtevents-1.0.0/typelib/RT_Bridge_7.FBT
similarity index 100%
rename from data/typelibrary/rtevents-1.0.0/RT_Bridge_7.FBT
rename to data/typelibrary/rtevents-1.0.0/typelib/RT_Bridge_7.FBT
diff --git a/data/typelibrary/rtevents-1.0.0/RT_Bridge_8.FBT b/data/typelibrary/rtevents-1.0.0/typelib/RT_Bridge_8.FBT
similarity index 100%
rename from data/typelibrary/rtevents-1.0.0/RT_Bridge_8.FBT
rename to data/typelibrary/rtevents-1.0.0/typelib/RT_Bridge_8.FBT
diff --git a/data/typelibrary/rtevents-1.0.0/RT_Bridge_9.FBT b/data/typelibrary/rtevents-1.0.0/typelib/RT_Bridge_9.FBT
similarity index 100%
rename from data/typelibrary/rtevents-1.0.0/RT_Bridge_9.FBT
rename to data/typelibrary/rtevents-1.0.0/typelib/RT_Bridge_9.FBT
diff --git a/data/typelibrary/rtevents-1.0.0/RT_E_CYCLE.fbt b/data/typelibrary/rtevents-1.0.0/typelib/RT_E_CYCLE.fbt
similarity index 100%
rename from data/typelibrary/rtevents-1.0.0/RT_E_CYCLE.fbt
rename to data/typelibrary/rtevents-1.0.0/typelib/RT_E_CYCLE.fbt
diff --git a/data/typelibrary/rtevents-1.0.0/RT_E_DELAY.fbt b/data/typelibrary/rtevents-1.0.0/typelib/RT_E_DELAY.fbt
similarity index 100%
rename from data/typelibrary/rtevents-1.0.0/RT_E_DELAY.fbt
rename to data/typelibrary/rtevents-1.0.0/typelib/RT_E_DELAY.fbt
diff --git a/data/typelibrary/rtevents-1.0.0/RT_E_DEMUX.fbt b/data/typelibrary/rtevents-1.0.0/typelib/RT_E_DEMUX.fbt
similarity index 100%
rename from data/typelibrary/rtevents-1.0.0/RT_E_DEMUX.fbt
rename to data/typelibrary/rtevents-1.0.0/typelib/RT_E_DEMUX.fbt
diff --git a/data/typelibrary/rtevents-1.0.0/RT_E_EC_COUPLER.fbt b/data/typelibrary/rtevents-1.0.0/typelib/RT_E_EC_COUPLER.fbt
similarity index 100%
rename from data/typelibrary/rtevents-1.0.0/RT_E_EC_COUPLER.fbt
rename to data/typelibrary/rtevents-1.0.0/typelib/RT_E_EC_COUPLER.fbt
diff --git a/data/typelibrary/rtevents-1.0.0/RT_E_F_TRIG.fbt b/data/typelibrary/rtevents-1.0.0/typelib/RT_E_F_TRIG.fbt
similarity index 100%
rename from data/typelibrary/rtevents-1.0.0/RT_E_F_TRIG.fbt
rename to data/typelibrary/rtevents-1.0.0/typelib/RT_E_F_TRIG.fbt
diff --git a/data/typelibrary/rtevents-1.0.0/RT_E_MERGE.fbt b/data/typelibrary/rtevents-1.0.0/typelib/RT_E_MERGE.fbt
similarity index 100%
rename from data/typelibrary/rtevents-1.0.0/RT_E_MERGE.fbt
rename to data/typelibrary/rtevents-1.0.0/typelib/RT_E_MERGE.fbt
diff --git a/data/typelibrary/rtevents-1.0.0/RT_E_PERMIT.fbt b/data/typelibrary/rtevents-1.0.0/typelib/RT_E_PERMIT.fbt
similarity index 100%
rename from data/typelibrary/rtevents-1.0.0/RT_E_PERMIT.fbt
rename to data/typelibrary/rtevents-1.0.0/typelib/RT_E_PERMIT.fbt
diff --git a/data/typelibrary/rtevents-1.0.0/RT_E_REND.fbt b/data/typelibrary/rtevents-1.0.0/typelib/RT_E_REND.fbt
similarity index 100%
rename from data/typelibrary/rtevents-1.0.0/RT_E_REND.fbt
rename to data/typelibrary/rtevents-1.0.0/typelib/RT_E_REND.fbt
diff --git a/data/typelibrary/rtevents-1.0.0/RT_E_R_TRIG.fbt b/data/typelibrary/rtevents-1.0.0/typelib/RT_E_R_TRIG.fbt
similarity index 100%
rename from data/typelibrary/rtevents-1.0.0/RT_E_R_TRIG.fbt
rename to data/typelibrary/rtevents-1.0.0/typelib/RT_E_R_TRIG.fbt
diff --git a/data/typelibrary/rtevents-1.0.0/RT_E_SELECT.fbt b/data/typelibrary/rtevents-1.0.0/typelib/RT_E_SELECT.fbt
similarity index 100%
rename from data/typelibrary/rtevents-1.0.0/RT_E_SELECT.fbt
rename to data/typelibrary/rtevents-1.0.0/typelib/RT_E_SELECT.fbt
diff --git a/data/typelibrary/rtevents-1.0.0/RT_E_SPLIT.fbt b/data/typelibrary/rtevents-1.0.0/typelib/RT_E_SPLIT.fbt
similarity index 100%
rename from data/typelibrary/rtevents-1.0.0/RT_E_SPLIT.fbt
rename to data/typelibrary/rtevents-1.0.0/typelib/RT_E_SPLIT.fbt
diff --git a/data/typelibrary/rtevents-1.0.0/RT_E_SWITCH.fbt b/data/typelibrary/rtevents-1.0.0/typelib/RT_E_SWITCH.fbt
similarity index 100%
rename from data/typelibrary/rtevents-1.0.0/RT_E_SWITCH.fbt
rename to data/typelibrary/rtevents-1.0.0/typelib/RT_E_SWITCH.fbt
diff --git a/data/typelibrary/rtevents-1.0.0/RT_E_TRAIN.fbt b/data/typelibrary/rtevents-1.0.0/typelib/RT_E_TRAIN.fbt
similarity index 100%
rename from data/typelibrary/rtevents-1.0.0/RT_E_TRAIN.fbt
rename to data/typelibrary/rtevents-1.0.0/typelib/RT_E_TRAIN.fbt
diff --git a/data/typelibrary/segments-1.0.0/MANIFEST.MF b/data/typelibrary/segments-1.0.0/MANIFEST.MF
index d127536..46da92e 100644
--- a/data/typelibrary/segments-1.0.0/MANIFEST.MF
+++ b/data/typelibrary/segments-1.0.0/MANIFEST.MF
@@ -1,6 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?>
-<Manifest xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="platform:/resource/org.eclipse.fordiac.ide.library.model/model/library.xsd" scope="Library">
- <product name="Segments" symbolicName="segments" comment="Standard Library - Segments">
- <versionInfo version="1.0.0" author="Eclipse 4diac" date="2024-02-21"/>
- </product>
+<Manifest xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="platform:/resource/org.eclipse.fordiac.ide.library.model/model/library.xsd" Scope="Library">
+ <Product Name="Segments" SymbolicName="segments" Comment="Standard Library - Segments">
+ <VersionInfo Version="1.0.0" Author="Eclipse 4diac" Date="2024-02-21"/>
+ </Product>
</Manifest>
\ No newline at end of file
diff --git a/data/typelibrary/segments-1.0.0/Ethernet.seg b/data/typelibrary/segments-1.0.0/typelib/Ethernet.seg
similarity index 100%
rename from data/typelibrary/segments-1.0.0/Ethernet.seg
rename to data/typelibrary/segments-1.0.0/typelib/Ethernet.seg
diff --git a/data/typelibrary/signalprocessing-1.0.0/MANIFEST.MF b/data/typelibrary/signalprocessing-1.0.0/MANIFEST.MF
index 36a848f..35505b1 100644
--- a/data/typelibrary/signalprocessing-1.0.0/MANIFEST.MF
+++ b/data/typelibrary/signalprocessing-1.0.0/MANIFEST.MF
@@ -1,6 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?>
-<Manifest xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="platform:/resource/org.eclipse.fordiac.ide.library.model/model/library.xsd" scope="Library">
- <product name="SignalProcessing" symbolicName="signalprocessing" comment="Standard Library - Signal Processing">
- <versionInfo version="1.0.0" author="Eclipse 4diac" date="2024-02-21"/>
- </product>
+<Manifest xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="platform:/resource/org.eclipse.fordiac.ide.library.model/model/library.xsd" Scope="Library">
+ <Product Name="SignalProcessing" SymbolicName="signalprocessing" Comment="Standard Library - Signal Processing">
+ <VersionInfo Version="1.0.0" Author="Eclipse 4diac" Date="2024-02-21"/>
+ </Product>
</Manifest>
\ No newline at end of file
diff --git a/data/typelibrary/signalprocessing-1.0.0/DualHysteresis.fbt b/data/typelibrary/signalprocessing-1.0.0/typelib/DualHysteresis.fbt
similarity index 100%
rename from data/typelibrary/signalprocessing-1.0.0/DualHysteresis.fbt
rename to data/typelibrary/signalprocessing-1.0.0/typelib/DualHysteresis.fbt
Binary files differ
diff --git a/data/typelibrary/signalprocessing-1.0.0/FIELDBUS_PERCENT_TO_WORD.fct b/data/typelibrary/signalprocessing-1.0.0/typelib/FIELDBUS_PERCENT_TO_WORD.fct
similarity index 100%
rename from data/typelibrary/signalprocessing-1.0.0/FIELDBUS_PERCENT_TO_WORD.fct
rename to data/typelibrary/signalprocessing-1.0.0/typelib/FIELDBUS_PERCENT_TO_WORD.fct
diff --git a/data/typelibrary/signalprocessing-1.0.0/FIELDBUS_SIGNAL.gcf b/data/typelibrary/signalprocessing-1.0.0/typelib/FIELDBUS_SIGNAL.gcf
similarity index 100%
rename from data/typelibrary/signalprocessing-1.0.0/FIELDBUS_SIGNAL.gcf
rename to data/typelibrary/signalprocessing-1.0.0/typelib/FIELDBUS_SIGNAL.gcf
diff --git a/data/typelibrary/signalprocessing-1.0.0/FIELDBUS_WORD_TO_PERCENT.fct b/data/typelibrary/signalprocessing-1.0.0/typelib/FIELDBUS_WORD_TO_PERCENT.fct
similarity index 100%
rename from data/typelibrary/signalprocessing-1.0.0/FIELDBUS_WORD_TO_PERCENT.fct
rename to data/typelibrary/signalprocessing-1.0.0/typelib/FIELDBUS_WORD_TO_PERCENT.fct
diff --git a/data/typelibrary/utils-1.0.0/MANIFEST.MF b/data/typelibrary/utils-1.0.0/MANIFEST.MF
index 021fff9..3596ec6 100644
--- a/data/typelibrary/utils-1.0.0/MANIFEST.MF
+++ b/data/typelibrary/utils-1.0.0/MANIFEST.MF
@@ -1,6 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?>
-<Manifest xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="platform:/resource/org.eclipse.fordiac.ide.library.model/model/library.xsd" scope="Library">
- <product name="Utils" symbolicName="utils" comment="Standard Library - Utils">
- <versionInfo version="1.0.0" author="Eclipse 4diac" date="2024-02-21"/>
- </product>
+<Manifest xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="platform:/resource/org.eclipse.fordiac.ide.library.model/model/library.xsd" Scope="Library">
+ <Product Name="Utils" SymbolicName="utils" Comment="Standard Library - Utils">
+ <VersionInfo Version="1.0.0" Author="Eclipse 4diac" Date="2024-02-21"/>
+ </Product>
</Manifest>
\ No newline at end of file
diff --git a/data/typelibrary/utils-1.0.0/APPEND_STRING_2.fbt b/data/typelibrary/utils-1.0.0/typelib/APPEND_STRING_2.fbt
similarity index 100%
rename from data/typelibrary/utils-1.0.0/APPEND_STRING_2.fbt
rename to data/typelibrary/utils-1.0.0/typelib/APPEND_STRING_2.fbt
diff --git a/data/typelibrary/utils-1.0.0/APPEND_STRING_3.fbt b/data/typelibrary/utils-1.0.0/typelib/APPEND_STRING_3.fbt
similarity index 100%
rename from data/typelibrary/utils-1.0.0/APPEND_STRING_3.fbt
rename to data/typelibrary/utils-1.0.0/typelib/APPEND_STRING_3.fbt
diff --git a/data/typelibrary/utils-1.0.0/ARRAY2ARRAY_2_LREAL.fbt b/data/typelibrary/utils-1.0.0/typelib/ARRAY2ARRAY_2_LREAL.fbt
similarity index 100%
rename from data/typelibrary/utils-1.0.0/ARRAY2ARRAY_2_LREAL.fbt
rename to data/typelibrary/utils-1.0.0/typelib/ARRAY2ARRAY_2_LREAL.fbt
diff --git a/data/typelibrary/utils-1.0.0/ARRAY2VALUES_2_LREAL.fbt b/data/typelibrary/utils-1.0.0/typelib/ARRAY2VALUES_2_LREAL.fbt
similarity index 100%
rename from data/typelibrary/utils-1.0.0/ARRAY2VALUES_2_LREAL.fbt
rename to data/typelibrary/utils-1.0.0/typelib/ARRAY2VALUES_2_LREAL.fbt
diff --git a/data/typelibrary/utils-1.0.0/CSV_WRITER_1.fbt b/data/typelibrary/utils-1.0.0/typelib/CSV_WRITER_1.fbt
similarity index 100%
rename from data/typelibrary/utils-1.0.0/CSV_WRITER_1.fbt
rename to data/typelibrary/utils-1.0.0/typelib/CSV_WRITER_1.fbt
diff --git a/data/typelibrary/utils-1.0.0/CSV_WRITER_10.fbt b/data/typelibrary/utils-1.0.0/typelib/CSV_WRITER_10.fbt
similarity index 100%
rename from data/typelibrary/utils-1.0.0/CSV_WRITER_10.fbt
rename to data/typelibrary/utils-1.0.0/typelib/CSV_WRITER_10.fbt
diff --git a/data/typelibrary/utils-1.0.0/CSV_WRITER_2.fbt b/data/typelibrary/utils-1.0.0/typelib/CSV_WRITER_2.fbt
similarity index 100%
rename from data/typelibrary/utils-1.0.0/CSV_WRITER_2.fbt
rename to data/typelibrary/utils-1.0.0/typelib/CSV_WRITER_2.fbt
diff --git a/data/typelibrary/utils-1.0.0/CSV_WRITER_3.fbt b/data/typelibrary/utils-1.0.0/typelib/CSV_WRITER_3.fbt
similarity index 100%
rename from data/typelibrary/utils-1.0.0/CSV_WRITER_3.fbt
rename to data/typelibrary/utils-1.0.0/typelib/CSV_WRITER_3.fbt
diff --git a/data/typelibrary/utils-1.0.0/CSV_WRITER_4.fbt b/data/typelibrary/utils-1.0.0/typelib/CSV_WRITER_4.fbt
similarity index 100%
rename from data/typelibrary/utils-1.0.0/CSV_WRITER_4.fbt
rename to data/typelibrary/utils-1.0.0/typelib/CSV_WRITER_4.fbt
diff --git a/data/typelibrary/utils-1.0.0/CSV_WRITER_5.fbt b/data/typelibrary/utils-1.0.0/typelib/CSV_WRITER_5.fbt
similarity index 100%
rename from data/typelibrary/utils-1.0.0/CSV_WRITER_5.fbt
rename to data/typelibrary/utils-1.0.0/typelib/CSV_WRITER_5.fbt
diff --git a/data/typelibrary/utils-1.0.0/CSV_WRITER_6.fbt b/data/typelibrary/utils-1.0.0/typelib/CSV_WRITER_6.fbt
similarity index 100%
rename from data/typelibrary/utils-1.0.0/CSV_WRITER_6.fbt
rename to data/typelibrary/utils-1.0.0/typelib/CSV_WRITER_6.fbt
diff --git a/data/typelibrary/utils-1.0.0/CSV_WRITER_7.fbt b/data/typelibrary/utils-1.0.0/typelib/CSV_WRITER_7.fbt
similarity index 100%
rename from data/typelibrary/utils-1.0.0/CSV_WRITER_7.fbt
rename to data/typelibrary/utils-1.0.0/typelib/CSV_WRITER_7.fbt
diff --git a/data/typelibrary/utils-1.0.0/CSV_WRITER_8.fbt b/data/typelibrary/utils-1.0.0/typelib/CSV_WRITER_8.fbt
similarity index 100%
rename from data/typelibrary/utils-1.0.0/CSV_WRITER_8.fbt
rename to data/typelibrary/utils-1.0.0/typelib/CSV_WRITER_8.fbt
diff --git a/data/typelibrary/utils-1.0.0/CSV_WRITER_9.fbt b/data/typelibrary/utils-1.0.0/typelib/CSV_WRITER_9.fbt
similarity index 100%
rename from data/typelibrary/utils-1.0.0/CSV_WRITER_9.fbt
rename to data/typelibrary/utils-1.0.0/typelib/CSV_WRITER_9.fbt
diff --git a/data/typelibrary/utils-1.0.0/E_STOPWATCH.fbt b/data/typelibrary/utils-1.0.0/typelib/E_STOPWATCH.fbt
similarity index 100%
rename from data/typelibrary/utils-1.0.0/E_STOPWATCH.fbt
rename to data/typelibrary/utils-1.0.0/typelib/E_STOPWATCH.fbt
diff --git a/data/typelibrary/utils-1.0.0/F_MUX_2_1.fbt b/data/typelibrary/utils-1.0.0/typelib/F_MUX_2_1.fbt
similarity index 100%
rename from data/typelibrary/utils-1.0.0/F_MUX_2_1.fbt
rename to data/typelibrary/utils-1.0.0/typelib/F_MUX_2_1.fbt
diff --git a/data/typelibrary/utils-1.0.0/F_MUX_2_2.fbt b/data/typelibrary/utils-1.0.0/typelib/F_MUX_2_2.fbt
similarity index 100%
rename from data/typelibrary/utils-1.0.0/F_MUX_2_2.fbt
rename to data/typelibrary/utils-1.0.0/typelib/F_MUX_2_2.fbt
diff --git a/data/typelibrary/utils-1.0.0/GET_AT_INDEX.fbt b/data/typelibrary/utils-1.0.0/typelib/GET_AT_INDEX.fbt
similarity index 100%
rename from data/typelibrary/utils-1.0.0/GET_AT_INDEX.fbt
rename to data/typelibrary/utils-1.0.0/typelib/GET_AT_INDEX.fbt
diff --git a/data/typelibrary/utils-1.0.0/GET_STRUCT_VALUE.fbt b/data/typelibrary/utils-1.0.0/typelib/GET_STRUCT_VALUE.fbt
similarity index 100%
rename from data/typelibrary/utils-1.0.0/GET_STRUCT_VALUE.fbt
rename to data/typelibrary/utils-1.0.0/typelib/GET_STRUCT_VALUE.fbt
diff --git a/data/typelibrary/utils-1.0.0/GetInstancePath.fbt b/data/typelibrary/utils-1.0.0/typelib/GetInstancePath.fbt
similarity index 100%
rename from data/typelibrary/utils-1.0.0/GetInstancePath.fbt
rename to data/typelibrary/utils-1.0.0/typelib/GetInstancePath.fbt
diff --git a/data/typelibrary/utils-1.0.0/OUT_ANY_CONSOLE.fbt b/data/typelibrary/utils-1.0.0/typelib/OUT_ANY_CONSOLE.fbt
similarity index 100%
rename from data/typelibrary/utils-1.0.0/OUT_ANY_CONSOLE.fbt
rename to data/typelibrary/utils-1.0.0/typelib/OUT_ANY_CONSOLE.fbt
diff --git a/data/typelibrary/utils-1.0.0/SET_AT_INDEX.fbt b/data/typelibrary/utils-1.0.0/typelib/SET_AT_INDEX.fbt
similarity index 100%
rename from data/typelibrary/utils-1.0.0/SET_AT_INDEX.fbt
rename to data/typelibrary/utils-1.0.0/typelib/SET_AT_INDEX.fbt
diff --git a/data/typelibrary/utils-1.0.0/SET_STRUCT_VALUE.fbt b/data/typelibrary/utils-1.0.0/typelib/SET_STRUCT_VALUE.fbt
similarity index 100%
rename from data/typelibrary/utils-1.0.0/SET_STRUCT_VALUE.fbt
rename to data/typelibrary/utils-1.0.0/typelib/SET_STRUCT_VALUE.fbt
diff --git a/data/typelibrary/utils-1.0.0/STEST_END.fbt b/data/typelibrary/utils-1.0.0/typelib/STEST_END.fbt
similarity index 100%
rename from data/typelibrary/utils-1.0.0/STEST_END.fbt
rename to data/typelibrary/utils-1.0.0/typelib/STEST_END.fbt
diff --git a/data/typelibrary/utils-1.0.0/TEST_CONDITION.fbt b/data/typelibrary/utils-1.0.0/typelib/TEST_CONDITION.fbt
similarity index 100%
rename from data/typelibrary/utils-1.0.0/TEST_CONDITION.fbt
rename to data/typelibrary/utils-1.0.0/typelib/TEST_CONDITION.fbt
diff --git a/data/typelibrary/utils-1.0.0/VALUES2ARRAY_2_LREAL.fbt b/data/typelibrary/utils-1.0.0/typelib/VALUES2ARRAY_2_LREAL.fbt
similarity index 100%
rename from data/typelibrary/utils-1.0.0/VALUES2ARRAY_2_LREAL.fbt
rename to data/typelibrary/utils-1.0.0/typelib/VALUES2ARRAY_2_LREAL.fbt
diff --git a/data/typelibrary/utils-1.0.0/selection/F_SEL_E_2.fbt b/data/typelibrary/utils-1.0.0/typelib/selection/F_SEL_E_2.fbt
similarity index 100%
rename from data/typelibrary/utils-1.0.0/selection/F_SEL_E_2.fbt
rename to data/typelibrary/utils-1.0.0/typelib/selection/F_SEL_E_2.fbt
Binary files differ
diff --git a/data/typelibrary/utils-1.0.0/selection/F_SEL_E_3.fbt b/data/typelibrary/utils-1.0.0/typelib/selection/F_SEL_E_3.fbt
similarity index 100%
rename from data/typelibrary/utils-1.0.0/selection/F_SEL_E_3.fbt
rename to data/typelibrary/utils-1.0.0/typelib/selection/F_SEL_E_3.fbt
diff --git a/data/typelibrary/utils-1.0.0/selection/F_SEL_E_4.fbt b/data/typelibrary/utils-1.0.0/typelib/selection/F_SEL_E_4.fbt
similarity index 100%
rename from data/typelibrary/utils-1.0.0/selection/F_SEL_E_4.fbt
rename to data/typelibrary/utils-1.0.0/typelib/selection/F_SEL_E_4.fbt
diff --git a/features/org.eclipse.fordiac.ide.comgeneration.feature/feature.xml b/features/org.eclipse.fordiac.ide.comgeneration.feature/feature.xml
index 379ea3f..5cb7cbd 100644
--- a/features/org.eclipse.fordiac.ide.comgeneration.feature/feature.xml
+++ b/features/org.eclipse.fordiac.ide.comgeneration.feature/feature.xml
@@ -2,7 +2,7 @@
<feature
id="org.eclipse.fordiac.ide.comgeneration.feature"
label="Communication FB generation"
- version="2.0.0.qualifier"
+ version="3.0.0.qualifier"
provider-name="Eclipse 4diac">
<description>
@@ -172,9 +172,6 @@
<plugin
id="org.eclipse.fordiac.ide.comgeneration"
- download-size="0"
- install-size="0"
- version="0.0.0"
- unpack="false"/>
+ version="0.0.0"/>
</feature>
diff --git a/features/org.eclipse.fordiac.ide.deployment.feature/feature.xml b/features/org.eclipse.fordiac.ide.deployment.feature/feature.xml
index 8256059..043f3e6 100644
--- a/features/org.eclipse.fordiac.ide.deployment.feature/feature.xml
+++ b/features/org.eclipse.fordiac.ide.deployment.feature/feature.xml
@@ -2,7 +2,7 @@
<feature
id="org.eclipse.fordiac.ide.deployment.feature"
label="Deployment"
- version="2.0.1.qualifier"
+ version="3.0.0.qualifier"
provider-name="Eclipse 4diac">
<description>
@@ -168,6 +168,10 @@
United States, other countries, or both.\n
</license>
+ <includes
+ id="org.eclipse.fordiac.ide.milo"
+ version="0.0.0"/>
+
<requires>
<import feature="org.eclipse.fordiac.ide.workbench.feature"/>
<import feature="org.eclipse.fordiac.ide.typeeditor.feature"/>
@@ -222,4 +226,11 @@
version="0.0.0"
unpack="false"/>
+ <plugin
+ id="org.eclipse.fordiac.ide.deployment.opcua"
+ download-size="0"
+ install-size="0"
+ version="0.0.0"
+ unpack="false"/>
+
</feature>
diff --git a/features/org.eclipse.fordiac.ide.export.feature/feature.xml b/features/org.eclipse.fordiac.ide.export.feature/feature.xml
index 8946278..c139783 100644
--- a/features/org.eclipse.fordiac.ide.export.feature/feature.xml
+++ b/features/org.eclipse.fordiac.ide.export.feature/feature.xml
@@ -2,7 +2,7 @@
<feature
id="org.eclipse.fordiac.ide.export.feature"
label="Export Function Block Types"
- version="2.0.1.qualifier"
+ version="3.0.0.qualifier"
provider-name="Eclipse 4diac">
<description>
diff --git a/features/org.eclipse.fordiac.ide.runtime.feature/feature.xml b/features/org.eclipse.fordiac.ide.runtime.feature/feature.xml
index b624950..e2e88a8 100644
--- a/features/org.eclipse.fordiac.ide.runtime.feature/feature.xml
+++ b/features/org.eclipse.fordiac.ide.runtime.feature/feature.xml
@@ -2,7 +2,7 @@
<feature
id="org.eclipse.fordiac.ide.runtime.feature"
label="Runtime"
- version="2.0.0.qualifier"
+ version="3.0.0.qualifier"
provider-name="Eclipse 4diac">
<description>
diff --git a/features/org.eclipse.fordiac.ide.structuredtext.feature/feature.xml b/features/org.eclipse.fordiac.ide.structuredtext.feature/feature.xml
index f922b13..040b6b1 100644
--- a/features/org.eclipse.fordiac.ide.structuredtext.feature/feature.xml
+++ b/features/org.eclipse.fordiac.ide.structuredtext.feature/feature.xml
@@ -2,7 +2,7 @@
<feature
id="org.eclipse.fordiac.ide.structuredtext.feature"
label="Structured Text Feature"
- version="2.0.1.qualifier"
+ version="3.0.0.qualifier"
provider-name="Eclipse 4diac">
<description>
diff --git a/features/org.eclipse.fordiac.ide.typeeditor.feature/feature.xml b/features/org.eclipse.fordiac.ide.typeeditor.feature/feature.xml
index 8821832..0d3118d 100644
--- a/features/org.eclipse.fordiac.ide.typeeditor.feature/feature.xml
+++ b/features/org.eclipse.fordiac.ide.typeeditor.feature/feature.xml
@@ -2,7 +2,7 @@
<feature
id="org.eclipse.fordiac.ide.typeeditor.feature"
label="Function Block Type Editor"
- version="2.0.1.qualifier"
+ version="3.0.0.qualifier"
provider-name="Eclipse 4diac">
<description>
diff --git a/features/org.eclipse.fordiac.ide.workbench.feature/feature.xml b/features/org.eclipse.fordiac.ide.workbench.feature/feature.xml
index d6d5f04..fc6d3ff 100644
--- a/features/org.eclipse.fordiac.ide.workbench.feature/feature.xml
+++ b/features/org.eclipse.fordiac.ide.workbench.feature/feature.xml
@@ -2,7 +2,7 @@
<feature
id="org.eclipse.fordiac.ide.workbench.feature"
label="Workbench Base"
- version="2.0.1.qualifier"
+ version="3.0.0.qualifier"
provider-name="Eclipse 4diac">
<description>
diff --git a/plugins/org.eclipse.fordiac.ide.ant/META-INF/MANIFEST.MF b/plugins/org.eclipse.fordiac.ide.ant/META-INF/MANIFEST.MF
index d8e3879..5e5cfa2 100644
--- a/plugins/org.eclipse.fordiac.ide.ant/META-INF/MANIFEST.MF
+++ b/plugins/org.eclipse.fordiac.ide.ant/META-INF/MANIFEST.MF
@@ -2,7 +2,7 @@
Bundle-ManifestVersion: 2
Bundle-Name: Ant
Bundle-SymbolicName: org.eclipse.fordiac.ide.ant;singleton:=true
-Bundle-Version: 2.0.1.qualifier
+Bundle-Version: 3.0.0.qualifier
Automatic-Module-Name: org.eclipse.fordiac.ide.ant
Bundle-RequiredExecutionEnvironment: JavaSE-17
Require-Bundle: org.eclipse.core.resources,
diff --git a/plugins/org.eclipse.fordiac.ide.application/META-INF/MANIFEST.MF b/plugins/org.eclipse.fordiac.ide.application/META-INF/MANIFEST.MF
index 23c3b30..d428c37 100644
--- a/plugins/org.eclipse.fordiac.ide.application/META-INF/MANIFEST.MF
+++ b/plugins/org.eclipse.fordiac.ide.application/META-INF/MANIFEST.MF
@@ -29,7 +29,7 @@
org.eclipse.fordiac.ide.model.search
Bundle-Vendor: Eclipse 4diac
Bundle-ActivationPolicy: lazy
-Bundle-Version: 2.0.1.qualifier
+Bundle-Version: 3.0.0.qualifier
Bundle-Name: Application modeling
Bundle-Activator: org.eclipse.fordiac.ide.application.ApplicationPlugin
Bundle-ManifestVersion: 2
diff --git a/plugins/org.eclipse.fordiac.ide.application/src/org/eclipse/fordiac/ide/application/commands/NewSubAppCommand.java b/plugins/org.eclipse.fordiac.ide.application/src/org/eclipse/fordiac/ide/application/commands/NewSubAppCommand.java
index 88010e0..1bb9ebf 100644
--- a/plugins/org.eclipse.fordiac.ide.application/src/org/eclipse/fordiac/ide/application/commands/NewSubAppCommand.java
+++ b/plugins/org.eclipse.fordiac.ide.application/src/org/eclipse/fordiac/ide/application/commands/NewSubAppCommand.java
@@ -26,7 +26,7 @@
import org.eclipse.fordiac.ide.model.libraryElement.InterfaceList;
import org.eclipse.fordiac.ide.model.libraryElement.LibraryElementFactory;
import org.eclipse.fordiac.ide.model.libraryElement.Resource;
-import org.eclipse.fordiac.ide.model.libraryElement.SubApp;
+import org.eclipse.fordiac.ide.model.libraryElement.UntypedSubApp;
import org.eclipse.gef.EditPart;
import org.eclipse.gef.commands.Command;
@@ -37,7 +37,7 @@
// subapp interface is finished
public NewSubAppCommand(final FBNetwork fbNetwork, final List<?> selection, final int x, final int y) {
- super(fbNetwork, LibraryElementFactory.eINSTANCE.createSubApp(), x, y);
+ super(fbNetwork, LibraryElementFactory.eINSTANCE.createUntypedSubApp(), x, y);
getElement().setSubAppNetwork(LibraryElementFactory.eINSTANCE.createFBNetwork());
addElements = new AddElementsToSubAppCommand(getElement(), selection);
checkMapping(selection);
@@ -86,7 +86,8 @@
if (null != mapSubappCmd) {
mapSubappCmd.undo();
}
- // this has to be done before super.undo() as otherwise addElements does not have the correct networks.
+ // this has to be done before super.undo() as otherwise addElements does not
+ // have the correct networks.
addElements.undo();
super.undo();
}
@@ -123,7 +124,7 @@
}
@Override
- public SubApp getElement() {
- return (SubApp) super.getElement();
+ public UntypedSubApp getElement() {
+ return (UntypedSubApp) super.getElement();
}
}
diff --git a/plugins/org.eclipse.fordiac.ide.application/src/org/eclipse/fordiac/ide/application/handlers/ConvertToSubappHandler.java b/plugins/org.eclipse.fordiac.ide.application/src/org/eclipse/fordiac/ide/application/handlers/ConvertToSubappHandler.java
index 37508a4..5485071 100644
--- a/plugins/org.eclipse.fordiac.ide.application/src/org/eclipse/fordiac/ide/application/handlers/ConvertToSubappHandler.java
+++ b/plugins/org.eclipse.fordiac.ide.application/src/org/eclipse/fordiac/ide/application/handlers/ConvertToSubappHandler.java
@@ -20,7 +20,6 @@
import org.eclipse.fordiac.ide.application.commands.ConvertGroupToSubappCommand;
import org.eclipse.fordiac.ide.application.editparts.IContainerEditPart;
import org.eclipse.fordiac.ide.application.policies.ContainerContentLayoutPolicy;
-import org.eclipse.fordiac.ide.model.commands.change.UntypeSubAppCommand;
import org.eclipse.fordiac.ide.model.libraryElement.FBNetworkElement;
import org.eclipse.fordiac.ide.model.libraryElement.Group;
import org.eclipse.fordiac.ide.model.libraryElement.SubApp;
@@ -30,8 +29,6 @@
import org.eclipse.gef.GraphicalViewer;
import org.eclipse.gef.commands.Command;
import org.eclipse.gef.commands.CommandStack;
-import org.eclipse.gef.commands.CommandStackEvent;
-import org.eclipse.gef.commands.CommandStackEventListener;
import org.eclipse.jface.viewers.ISelection;
import org.eclipse.jface.viewers.IStructuredSelection;
import org.eclipse.ui.IEditorPart;
@@ -39,8 +36,7 @@
import org.eclipse.ui.PlatformUI;
import org.eclipse.ui.handlers.HandlerUtil;
-public class ConvertToSubappHandler extends AbstractHandler implements CommandStackEventListener {
- private CommandStack commandStack;
+public class ConvertToSubappHandler extends AbstractHandler {
@Override
public Object execute(final ExecutionEvent event) throws ExecutionException {
@@ -48,11 +44,7 @@
final ISelection selection = HandlerUtil.getCurrentSelection(event);
final Group group = getSelectedGroup(selection);
if (null != group) {
- if (commandStack != null) {
- commandStack.removeCommandStackEventListener(this);
- }
-
- commandStack = HandlerHelper.getCommandStack(editor);
+ final CommandStack commandStack = HandlerHelper.getCommandStack(editor);
final ConvertGroupToSubappCommand conversion = new ConvertGroupToSubappCommand(group);
if (conversion.canExecute()) {
commandStack.execute(conversion);
@@ -62,8 +54,6 @@
final EditPart newSubappEP = (EditPart) v.getEditPartRegistry().get(conversion.getCreatedElement());
adjustMinBounds(commandStack, newSubappEP);
}
-
- commandStack.addCommandStackEventListener(this);
}
return Status.OK_STATUS;
}
@@ -93,8 +83,7 @@
}
private static Group getSelectedGroup(final Object selection) {
- if (selection instanceof IStructuredSelection) {
- final IStructuredSelection structSel = ((IStructuredSelection) selection);
+ if (selection instanceof final IStructuredSelection structSel) {
if (!structSel.isEmpty() && (structSel.size() == 1)) {
return getGroup(structSel.getFirstElement());
}
@@ -104,7 +93,7 @@
private static Group getGroup(final Object currentElement) {
Object elementToCheck = currentElement;
- if(elementToCheck instanceof EditPart) {
+ if (elementToCheck instanceof EditPart) {
elementToCheck = ((EditPart) elementToCheck).getModel();
}
@@ -114,26 +103,10 @@
return null;
}
- @Override
- public void stackChanged(final CommandStackEvent event) {
- if ((event.getCommand() instanceof UntypeSubAppCommand)
- && ((event.getDetail() == CommandStack.POST_UNDO) || (event.getDetail() == CommandStack.POST_REDO))) {
- refreshSelection(((UntypeSubAppCommand) event.getCommand()).getSubapp());
- }
- }
-
private static void refreshSelection(final SubApp subapp) {
final IEditorPart editor = PlatformUI.getWorkbench().getActiveWorkbenchWindow().getActivePage()
.getActiveEditor();
HandlerHelper.getViewer(editor).deselectAll();
HandlerHelper.selectElement(subapp, HandlerHelper.getViewer(editor));
}
-
- @Override
- public void dispose() {
- if (commandStack != null) {
- commandStack.removeCommandStackEventListener(this);
- }
- super.dispose();
- }
}
diff --git a/plugins/org.eclipse.fordiac.ide.application/src/org/eclipse/fordiac/ide/application/handlers/RepairCommandHandler.java b/plugins/org.eclipse.fordiac.ide.application/src/org/eclipse/fordiac/ide/application/handlers/RepairCommandHandler.java
index 2a9ba38..6d6c14a 100644
--- a/plugins/org.eclipse.fordiac.ide.application/src/org/eclipse/fordiac/ide/application/handlers/RepairCommandHandler.java
+++ b/plugins/org.eclipse.fordiac.ide.application/src/org/eclipse/fordiac/ide/application/handlers/RepairCommandHandler.java
@@ -13,6 +13,7 @@
*******************************************************************************/
package org.eclipse.fordiac.ide.application.handlers;
+import java.awt.event.ActionListener;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
@@ -22,9 +23,14 @@
import org.eclipse.core.commands.ExecutionEvent;
import org.eclipse.core.commands.ExecutionException;
import org.eclipse.fordiac.ide.application.editparts.ErrorMarkerFBNEditPart;
+import org.eclipse.fordiac.ide.application.editparts.ErrorMarkerInterfaceEditPart;
import org.eclipse.fordiac.ide.gef.editparts.AbstractConnectableEditPart;
import org.eclipse.fordiac.ide.model.libraryElement.ErrorMarkerDataType;
+import org.eclipse.fordiac.ide.model.libraryElement.FBNetworkElement;
+import org.eclipse.fordiac.ide.model.libraryElement.SubApp;
import org.eclipse.fordiac.ide.model.libraryElement.impl.ErrorMarkerDataTypeImpl;
+import org.eclipse.fordiac.ide.model.search.dialog.FBTypeEntryDataHandler;
+import org.eclipse.fordiac.ide.model.search.dialog.FBTypeSearchResultTable;
import org.eclipse.fordiac.ide.model.typelibrary.TypeEntry;
import org.eclipse.fordiac.ide.model.typelibrary.TypeLibrary;
import org.eclipse.fordiac.ide.model.typelibrary.TypeLibraryManager;
@@ -36,11 +42,21 @@
import org.eclipse.jface.viewers.StructuredSelection;
import org.eclipse.jface.viewers.TableViewer;
import org.eclipse.jface.window.Window;
+import org.eclipse.jface.wizard.IWizardPage;
+import org.eclipse.jface.wizard.Wizard;
import org.eclipse.jface.wizard.WizardDialog;
+import org.eclipse.jface.wizard.WizardPage;
+import org.eclipse.swt.SWT;
+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.Control;
import org.eclipse.swt.widgets.Label;
import org.eclipse.swt.widgets.Text;
+import org.eclipse.swt.widgets.Tree;
+import org.eclipse.swt.widgets.TreeItem;
import org.eclipse.ui.IEditorInput;
import org.eclipse.ui.IEditorPart;
import org.eclipse.ui.PlatformUI;
@@ -48,20 +64,36 @@
import org.eclipse.ui.part.FileEditorInput;
public class RepairCommandHandler extends AbstractHandler {
- private static final String PACKAGE_NAME = ""; //$NON-NLS-1$
- private TypeLibrary typeLib;
- private IEditorPart editor;
+
private IStructuredSelection sel;
+ private enum Choices {
+ ADD(FordiacMessages.Dialog_Repair_Add), REMOVE(FordiacMessages.Dialog_Repair_Remove);
+
+ private final String text;
+
+ Choices(final String s) {
+ text = s;
+ }
+
+ @Override
+ public String toString() {
+ return text;
+ }
+
+ }
+
@Override
public Object execute(final ExecutionEvent event) throws ExecutionException {
+ TypeLibrary typeLib;
+ IEditorPart editor;
sel = HandlerUtil.getCurrentStructuredSelection(event);
editor = HandlerUtil.getActiveEditor(event);
final AbstractConnectableEditPart editPart = getEditPartFromSelection(sel);
typeLib = getTypeLibraryFromEditorInput(editor.getEditorInput());
-
- repairEditPart(editPart);
-
+ if (editPart != null) {
+ repairEditPart(editPart, typeLib.getProject().getName());
+ }
typeLib.reload();
return null;
}
@@ -70,16 +102,85 @@
return TypeLibraryManager.INSTANCE.getTypeEntryForFile(((FileEditorInput) input).getFile()).getTypeLibrary();
}
- private void repairEditPart(final AbstractConnectableEditPart editPart) {
+ private void repairEditPart(final AbstractConnectableEditPart editPart, final String projectName) {
final ErrorMarkerDataType dataTypeMarker = editPart.getAdapter(ErrorMarkerDataTypeImpl.class);
if (dataTypeMarker != null) {
- showRestrictedWizard(dataTypeMarker.getName(), TypeLibraryTags.DATA_TYPE_FILE_ENDING_WITH_DOT);
+ showRestrictedNewTypeWizard(dataTypeMarker.getTypeEntry().getTypeName(),
+ TypeLibraryTags.DATA_TYPE_FILE_ENDING_WITH_DOT, projectName);
}
final ErrorMarkerFBNEditPart fBNEditPartMarker = editPart.getAdapter(ErrorMarkerFBNEditPart.class);
if (fBNEditPartMarker != null) {
- showRestrictedWizard(fBNEditPartMarker.getINamedElement().getName(),
- TypeLibraryTags.FB_TYPE_FILE_ENDING_WITH_DOT);
+ showRestrictedNewTypeWizard(((FBNetworkElement) fBNEditPartMarker.getINamedElement()).getTypeName(),
+ TypeLibraryTags.FB_TYPE_FILE_ENDING_WITH_DOT, projectName);
}
+ final ErrorMarkerInterfaceEditPart interfaceEditPart = editPart.getAdapter(ErrorMarkerInterfaceEditPart.class);
+ if (interfaceEditPart != null) {
+ showAddOrRemoveWizard(interfaceEditPart);
+ }
+ }
+
+ private void showAddOrRemoveWizard(final ErrorMarkerInterfaceEditPart interfaceEditPart) {
+ final ChooseActionWizardPage<Choices> choosePage = new ChooseActionWizardPage<>(
+ FordiacMessages.Dialog_Add_Or_Remove_Pin, Choices.class);
+ final ChangedTypesWizardPage infoPage = new ChangedTypesWizardPage("Pending changes",
+ interfaceEditPart.getParent().getAdapter(SubApp.class).getTypeEntry());
+ final var wizard = new Wizard() {
+
+ @Override
+ public boolean performFinish() {
+ // TODO depending on choice, search instances with faulty pin, and delete pins
+ // or simply add pin to typentry.
+ Choices choice = null;
+ choice = choosePage.getSelection();
+ switch (choice) {
+ case ADD: // TODO add method here to add the pin to the typeEditable
+ break;
+ case REMOVE:
+ removeInterfaceElementFromInstances(interfaceEditPart);
+ break;
+ default:
+ break;
+ }
+ return true;
+ }
+
+ @Override
+ public IWizardPage getNextPage(final IWizardPage page) {
+ if ((page instanceof final ChooseActionWizardPage<?> choosePage)
+ && choosePage.choice.equals(Choices.REMOVE)) {
+ return Arrays.stream(getPages()).filter(ChangedTypesWizardPage.class::isInstance).findFirst()
+ .orElse(null);
+ }
+ return null;
+ }
+
+ @Override
+ public boolean canFinish() {
+ return true;
+ }
+
+ };
+ final WizardDialog dialog = new WizardDialog(PlatformUI.getWorkbench().getActiveWorkbenchWindow()
+ .getActivePage().getActiveEditor().getSite().getShell(), wizard);
+ final ActionListener alist = e -> dialog.updateButtons();
+
+ choosePage.addButtonListener(alist);
+ wizard.addPage(choosePage);
+ infoPage.setPreviousPage(choosePage);
+ wizard.addPage(infoPage);
+
+ dialog.create();
+ dialog.open();
+
+ }
+
+ private static void removeInterfaceElementFromInstances(final ErrorMarkerInterfaceEditPart elem) {
+// TODO use the element to remove similar pins from all instances
+// final FBType te = ((FBType) elem.getParent().getModel()).getTypeEntry().getTypeEditable();
+// te.getInterfaceList().getAllInterfaceElements().removeIf(el -> {
+// System.out.println(el);
+// return true;
+// });
}
private static AbstractConnectableEditPart getEditPartFromSelection(final IStructuredSelection sel) {
@@ -89,12 +190,13 @@
return part.isPresent() ? part.get() : null;
}
- private void showRestrictedWizard(final String name, final String fileEnding) {
+ private void showRestrictedNewTypeWizard(final String name, final String fileEnding, final String projectName) {
final NewTypeWizard wizard = new NewTypeWizard() {
@Override
protected NewFBTypeWizardPage createNewFBTypeWizardPage() {
return new NewFBTypeWizardPage(sel);
}
+
};
final WizardDialog dialog = new WizardDialog(PlatformUI.getWorkbench().getActiveWorkbenchWindow()
.getActivePage().getActiveEditor().getSite().getShell(), wizard);
@@ -102,21 +204,20 @@
final NewFBTypeWizardPage page = (NewFBTypeWizardPage) dialog.getCurrentPage();
page.setTemplateFileFilter(pathname -> pathname.getName().toUpperCase().endsWith(fileEnding));
page.setFileName(name);
- restrictName(page.getControl());
final TableViewer tv = page.getTemplateViewer();
final Object selection = tv.getElementAt(0);
+
// have to check if any template at all could be found
if (selection != null) {
tv.setSelection(new StructuredSelection(selection), true);
- // TODO Check out of you can find the right children via composites.
- // project pre via go into button code
-
// unlock table if there are possible selections
if (tv.getElementAt(1) == null) {
tv.getTable().setEnabled(false);
}
}
+ restrictName(page.getControl());
+ restrictProjectSelection(page.getControl(), projectName);
if (Window.OK == dialog.open()) {
// the type could be created new execute the command
final TypeEntry newEntry = wizard.getTypeEntry();
@@ -140,6 +241,20 @@
}
+ private static void restrictProjectSelection(final Control control, final String projectName) {
+ final Composite root = (Composite) control;
+ final List<Control> elements = getFlattenedList(root);
+ //@formatter:off
+ elements.stream()
+ .filter(Tree.class::isInstance)
+ .map(Tree.class::cast) //get the tree
+ .flatMap(a-> Arrays.stream(a.getItems())) //get all root elements
+ .filter(i -> !i.getText().equals(projectName)) //find all elements which are not the current project
+ .forEach(TreeItem::dispose); //dispose them, so only the current project is left
+ //@formatter:on
+ control.redraw();
+ }
+
private static List<Control> getFlattenedList(final Composite root) {
final List<Control> flattenedSet = new ArrayList<>();
if (root.getChildren().length == 0) {
@@ -156,4 +271,83 @@
return flattenedSet;
}
+ private class ChangedTypesWizardPage extends WizardPage {
+ private final TypeEntry type;
+
+ protected ChangedTypesWizardPage(final String pageName, final TypeEntry type) {
+ super(pageName);
+ this.type = type;
+ }
+
+ @Override
+ public void createControl(final Composite parent) {
+ Composite container;
+ container = new Composite(parent, SWT.NONE);
+ final GridLayout layout = new GridLayout();
+ container.setLayout(layout);
+
+ // search instances with pin and delete pins.
+ final FBTypeSearchResultTable table = new FBTypeSearchResultTable(container,
+ new FBTypeEntryDataHandler(type));
+ table.setLayout(layout);
+ this.setControl(container);
+ this.setDescription(FordiacMessages.Dialog_Repair_Remove);
+ this.setTitle(FordiacMessages.Dialog_Repair_Pin);
+ }
+
+ }
+
+ private class ChooseActionWizardPage<T extends Enum<T>> extends WizardPage {
+ private Class<T> choicesEnum = null;
+ private T choice;
+
+ private final List<ActionListener> listeners = new ArrayList<>();
+
+ protected ChooseActionWizardPage(final String pageName, final Class<T> choicesEnum) {
+ super(pageName);
+ this.choicesEnum = choicesEnum;
+ this.choice = choicesEnum.getEnumConstants()[0];// make default selection work
+ }
+
+ public void addButtonListener(final ActionListener l) {
+ listeners.add(l);
+ }
+
+ @Override
+ public void createControl(final Composite parent) {
+ Composite container;
+ container = new Composite(parent, SWT.NONE);
+ final GridLayout layout = new GridLayout();
+ container.setLayout(layout);
+ layout.numColumns = 1;
+// @formatter:off
+ Arrays.stream(choicesEnum.getEnumConstants())
+ .forEach(s -> {
+ final Button b = new Button(container, SWT.RADIO);
+ b.setText(s.toString());
+ b.addSelectionListener(new SelectionAdapter(){
+ @Override
+ public void widgetSelected(final SelectionEvent e){
+ super.widgetSelected(e);
+ if(b.getSelection()){
+ choice=s;
+ listeners.forEach(l-> l.actionPerformed(null));
+ }
+ }
+ });
+ });
+// @formatter:on
+ this.setControl(container);
+ this.setDescription(FordiacMessages.Dialog_Add_Or_Remove_Pin);
+ this.setTitle(FordiacMessages.Dialog_Repair_Pin);
+ getShell().pack();
+ this.setPageComplete(true);
+ }
+
+ public T getSelection() {
+ return choice;
+ }
+
+ }
+
}
diff --git a/plugins/org.eclipse.fordiac.ide.application/src/org/eclipse/fordiac/ide/application/handlers/UntypeSubApplicationHandler.java b/plugins/org.eclipse.fordiac.ide.application/src/org/eclipse/fordiac/ide/application/handlers/UntypeSubApplicationHandler.java
index f9a7404..3255f9a 100644
--- a/plugins/org.eclipse.fordiac.ide.application/src/org/eclipse/fordiac/ide/application/handlers/UntypeSubApplicationHandler.java
+++ b/plugins/org.eclipse.fordiac.ide.application/src/org/eclipse/fordiac/ide/application/handlers/UntypeSubApplicationHandler.java
@@ -24,8 +24,6 @@
import org.eclipse.fordiac.ide.model.libraryElement.SubApp;
import org.eclipse.fordiac.ide.model.ui.editors.HandlerHelper;
import org.eclipse.gef.commands.CommandStack;
-import org.eclipse.gef.commands.CommandStackEvent;
-import org.eclipse.gef.commands.CommandStackEventListener;
import org.eclipse.jface.viewers.ISelection;
import org.eclipse.jface.viewers.IStructuredSelection;
import org.eclipse.ui.IEditorPart;
@@ -33,8 +31,7 @@
import org.eclipse.ui.PlatformUI;
import org.eclipse.ui.handlers.HandlerUtil;
-public class UntypeSubApplicationHandler extends AbstractHandler implements CommandStackEventListener {
- private CommandStack commandStack;
+public class UntypeSubApplicationHandler extends AbstractHandler {
@Override
public Object execute(final ExecutionEvent event) throws ExecutionException {
@@ -42,16 +39,10 @@
final ISelection selection = HandlerUtil.getCurrentSelection(event);
final SubApp subApp = getSelectedSubApp(selection);
if (null != subApp) {
- if (commandStack != null) {
- commandStack.removeCommandStackEventListener(this);
- }
-
- commandStack = HandlerHelper.getCommandStack(editor);
+ final CommandStack commandStack = HandlerHelper.getCommandStack(editor);
commandStack.execute(new UntypeSubAppCommand(subApp));
refreshSelection(subApp);
-
- commandStack.addCommandStackEventListener(this);
}
return Status.OK_STATUS;
}
@@ -64,8 +55,7 @@
}
private static SubApp getSelectedSubApp(final Object selection) {
- if (selection instanceof IStructuredSelection) {
- final IStructuredSelection structSel = ((IStructuredSelection) selection);
+ if (selection instanceof final IStructuredSelection structSel) {
if (!structSel.isEmpty() && (structSel.size() == 1)) {
return getSubApp(structSel.getFirstElement());
}
@@ -76,7 +66,8 @@
private static SubApp getSubApp(final Object currentElement) {
if (currentElement instanceof SubApp) {
return (SubApp) currentElement;
- } else if (currentElement instanceof SubAppForFBNetworkEditPart) {
+ }
+ if (currentElement instanceof SubAppForFBNetworkEditPart) {
return ((SubAppForFBNetworkEditPart) currentElement).getModel();
} else if (currentElement instanceof UISubAppNetworkEditPart) {
return (SubApp) ((UISubAppNetworkEditPart) currentElement).getModel().eContainer();
@@ -84,26 +75,10 @@
return null;
}
- @Override
- public void stackChanged(final CommandStackEvent event) {
- if (event.getCommand() instanceof UntypeSubAppCommand
- && (event.getDetail() == CommandStack.POST_UNDO || event.getDetail() == CommandStack.POST_REDO)) {
- refreshSelection(((UntypeSubAppCommand) event.getCommand()).getSubapp());
- }
- }
-
- private void refreshSelection(final SubApp subapp) {
+ private static void refreshSelection(final SubApp subapp) {
final IEditorPart editor = PlatformUI.getWorkbench().getActiveWorkbenchWindow().getActivePage()
.getActiveEditor();
HandlerHelper.getViewer(editor).deselectAll();
HandlerHelper.selectElement(subapp, HandlerHelper.getViewer(editor));
}
-
- @Override
- public void dispose() {
- if (commandStack != null) {
- commandStack.removeCommandStackEventListener(this);
- }
- super.dispose();
- }
}
diff --git a/plugins/org.eclipse.fordiac.ide.application/src/org/eclipse/fordiac/ide/application/properties/DemultiplexerSection.java b/plugins/org.eclipse.fordiac.ide.application/src/org/eclipse/fordiac/ide/application/properties/DemultiplexerSection.java
index 9c268bc..9bda07e 100644
--- a/plugins/org.eclipse.fordiac.ide.application/src/org/eclipse/fordiac/ide/application/properties/DemultiplexerSection.java
+++ b/plugins/org.eclipse.fordiac.ide.application/src/org/eclipse/fordiac/ide/application/properties/DemultiplexerSection.java
@@ -64,9 +64,13 @@
public void checkStateChanged(final CheckStateChangedEvent event) {
final CheckableStructTreeNode node = (CheckableStructTreeNode) event.getElement();
final Command cmd = createDemuxPortCommand(node);
- executeCommand(cmd);
- selectStructManipulator(cmd);
-
+ if (cmd.canExecute()) {
+ executeCommand(cmd);
+ selectStructManipulator(cmd);
+ } else {
+ // reset checkmark as command was not executed
+ node.updateNode(!event.getChecked());
+ }
}
private Command createDemuxPortCommand(final CheckableStructTreeNode node) {
diff --git a/plugins/org.eclipse.fordiac.ide.application/src/org/eclipse/fordiac/ide/application/utilities/IntervalVerifyListener.java b/plugins/org.eclipse.fordiac.ide.application/src/org/eclipse/fordiac/ide/application/utilities/IntervalVerifyListener.java
deleted file mode 100644
index 15a36f9..0000000
--- a/plugins/org.eclipse.fordiac.ide.application/src/org/eclipse/fordiac/ide/application/utilities/IntervalVerifyListener.java
+++ /dev/null
@@ -1,57 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2023 Paul Pavlicek
- *
- * This program and the accompanying materials are made available under the
- * terms of the Eclipse Public License 2.0 which is available at
- * http://www.eclipse.org/legal/epl-2.0.
- *
- * SPDX-License-Identifier: EPL-2.0
- *
- * Contributors:
- * Paul Pavlicek
- * - initial API and implementation and/or initial documentation
- *******************************************************************************/
-package org.eclipse.fordiac.ide.application.utilities;
-
-import org.eclipse.swt.SWT;
-import org.eclipse.swt.widgets.Listener;
-import org.eclipse.swt.widgets.Text;
-
-public class IntervalVerifyListener implements Listener {
- private final Text verifiableText;
-
- public IntervalVerifyListener(final Text verifiableText) {
- this.verifiableText = verifiableText;
- }
-
- @Override
- public void handleEvent(final org.eclipse.swt.widgets.Event event) {
- if (event.keyCode == SWT.BS || event.keyCode == SWT.DEL || event.keyCode == SWT.ARROW_LEFT
- || event.keyCode == SWT.ARROW_RIGHT) {
- event.doit = true;
- return;
- }
- final String text = verifiableText.getText();
- if (text.isEmpty() && (event.character == '[') || Character.isDigit(event.character)) {
- event.doit = true;
- return;
- }
- if (!text.isEmpty() && text.contains(",") && Character.isDigit(text.charAt(text.length() - 1)) //$NON-NLS-1$
- && event.character == ']') {
- event.doit = true;
- return;
- }
- if (text.length() > 1 && text.charAt(0) == '[' && Character.isDigit(text.charAt(1)) && !text.contains(",") //$NON-NLS-1$
- && event.character == ',') {
- event.doit = true;
- return;
- }
- if (!text.isEmpty() && Character.isDigit(text.charAt(0)) && Character.isDigit(event.character)) {
- event.doit = true;
- return;
- }
- event.doit = false;
-
- }
-
-}
\ No newline at end of file
diff --git a/plugins/org.eclipse.fordiac.ide.attributetypeeditor/META-INF/MANIFEST.MF b/plugins/org.eclipse.fordiac.ide.attributetypeeditor/META-INF/MANIFEST.MF
index 1c4c0f0..3ac6969 100644
--- a/plugins/org.eclipse.fordiac.ide.attributetypeeditor/META-INF/MANIFEST.MF
+++ b/plugins/org.eclipse.fordiac.ide.attributetypeeditor/META-INF/MANIFEST.MF
@@ -2,7 +2,7 @@
Bundle-ManifestVersion: 2
Bundle-Name: Attribute Type Editor
Bundle-SymbolicName: org.eclipse.fordiac.ide.attributetypeeditor;singleton:=true
-Bundle-Version: 2.0.1.qualifier
+Bundle-Version: 3.0.0.qualifier
Require-Bundle: org.eclipse.ui,
org.eclipse.core.runtime,
org.eclipse.fordiac.ide.ui,
diff --git a/plugins/org.eclipse.fordiac.ide.comgeneration/META-INF/MANIFEST.MF b/plugins/org.eclipse.fordiac.ide.comgeneration/META-INF/MANIFEST.MF
index 612402d..2e890d6 100644
--- a/plugins/org.eclipse.fordiac.ide.comgeneration/META-INF/MANIFEST.MF
+++ b/plugins/org.eclipse.fordiac.ide.comgeneration/META-INF/MANIFEST.MF
@@ -2,7 +2,7 @@
Bundle-ManifestVersion: 2
Bundle-Name: Communication Generation
Bundle-SymbolicName: org.eclipse.fordiac.ide.comgeneration;singleton:=true
-Bundle-Version: 2.0.0.qualifier
+Bundle-Version: 3.0.0.qualifier
Bundle-Vendor: Eclipse 4diac
Require-Bundle: org.eclipse.ui,
org.eclipse.core.runtime,
diff --git a/plugins/org.eclipse.fordiac.ide.contracts/META-INF/MANIFEST.MF b/plugins/org.eclipse.fordiac.ide.contracts/META-INF/MANIFEST.MF
index e432ab9..87e7284 100644
--- a/plugins/org.eclipse.fordiac.ide.contracts/META-INF/MANIFEST.MF
+++ b/plugins/org.eclipse.fordiac.ide.contracts/META-INF/MANIFEST.MF
@@ -2,7 +2,7 @@
Bundle-ManifestVersion: 2
Bundle-Name: Contracts
Bundle-SymbolicName: org.eclipse.fordiac.ide.contracts;singleton:=true
-Bundle-Version: 2.0.1.qualifier
+Bundle-Version: 3.0.0.qualifier
Bundle-Vendor: Eclipse 4diac
Automatic-Module-Name: org.eclipse.fordiac.ide.contracts
Bundle-RequiredExecutionEnvironment: JavaSE-17
diff --git a/plugins/org.eclipse.fordiac.ide.contracts/src/org/eclipse/fordiac/ide/contracts/ContractElementDialog.java b/plugins/org.eclipse.fordiac.ide.contracts/src/org/eclipse/fordiac/ide/contracts/ContractElementDialog.java
index 6eecf4c..11ee4d5 100644
--- a/plugins/org.eclipse.fordiac.ide.contracts/src/org/eclipse/fordiac/ide/contracts/ContractElementDialog.java
+++ b/plugins/org.eclipse.fordiac.ide.contracts/src/org/eclipse/fordiac/ide/contracts/ContractElementDialog.java
@@ -13,6 +13,8 @@
*******************************************************************************/
package org.eclipse.fordiac.ide.contracts;
+import java.util.regex.Pattern;
+
import org.eclipse.fordiac.ide.model.libraryElement.Event;
import org.eclipse.jface.dialogs.MessageDialog;
import org.eclipse.swt.SWT;
@@ -44,14 +46,19 @@
protected void buttonPressed(final int buttonId) {
inputTime = inputTimeText.getText();
final String[] s = DefineContractUtils.getTimeIntervalFromString(inputTimeText.getText());
- if (inputTime.isBlank() || (s.length == 2 && (Integer.parseInt(s[0]) > Integer.parseInt(s[1])))) {
- MessageDialog.openError(this.getShell(), Messages.DefineFBReactionOnePinDialog_Error,
- Messages.DefineFBReactionOnePinDialog_PleaseFill);
+ if (!isTextCompliant(inputTime)) {
+ MessageDialog.openError(this.getShell(), "Wrong Format", "Text is not in the right format.");
} else {
super.buttonPressed(buttonId);
}
}
+ protected static boolean isTextCompliant(final String text) {
+ final Pattern pattern = Pattern
+ .compile("^\\d+((\\.\\d+)?)$|^(([\\(\\[])(\\d*\\.?\\d+), (\\d*\\.?\\d+)([\\)\\]]))$"); //$NON-NLS-1$
+ return pattern.matcher(text).find();
+ }
+
@Override
protected Control createCustomArea(final Composite parent) {
parent.setLayout(new FillLayout());
diff --git a/plugins/org.eclipse.fordiac.ide.contracts/src/org/eclipse/fordiac/ide/contracts/DefineFBGuaranteeTwoPinDialog.java b/plugins/org.eclipse.fordiac.ide.contracts/src/org/eclipse/fordiac/ide/contracts/DefineFBGuaranteeTwoPinDialog.java
index ead34cb..ccade9b 100644
--- a/plugins/org.eclipse.fordiac.ide.contracts/src/org/eclipse/fordiac/ide/contracts/DefineFBGuaranteeTwoPinDialog.java
+++ b/plugins/org.eclipse.fordiac.ide.contracts/src/org/eclipse/fordiac/ide/contracts/DefineFBGuaranteeTwoPinDialog.java
@@ -13,7 +13,6 @@
*******************************************************************************/
package org.eclipse.fordiac.ide.contracts;
-import org.eclipse.fordiac.ide.application.utilities.IntervalVerifyListener;
import org.eclipse.fordiac.ide.model.libraryElement.Event;
import org.eclipse.jface.layout.GridDataFactory;
import org.eclipse.swt.SWT;
@@ -55,7 +54,6 @@
label.setText("occurs within"); //$NON-NLS-1$
inputTimeText = new Text(group, SWT.RIGHT);
- inputTimeText.addListener(SWT.KeyDown, new IntervalVerifyListener(inputTimeText));
inputTimeText.setLayoutData(new GridData(SWT.FILL, SWT.CENTER, true, false));
label = new Label(group, SWT.None);
diff --git a/plugins/org.eclipse.fordiac.ide.contracts/src/org/eclipse/fordiac/ide/contracts/DefineFBReactionOnePinDialog.java b/plugins/org.eclipse.fordiac.ide.contracts/src/org/eclipse/fordiac/ide/contracts/DefineFBReactionOnePinDialog.java
index dc8a8a7..0129615 100644
--- a/plugins/org.eclipse.fordiac.ide.contracts/src/org/eclipse/fordiac/ide/contracts/DefineFBReactionOnePinDialog.java
+++ b/plugins/org.eclipse.fordiac.ide.contracts/src/org/eclipse/fordiac/ide/contracts/DefineFBReactionOnePinDialog.java
@@ -13,7 +13,6 @@
*******************************************************************************/
package org.eclipse.fordiac.ide.contracts;
-import org.eclipse.fordiac.ide.application.utilities.IntervalVerifyListener;
import org.eclipse.fordiac.ide.contracts.model.ContractKeywords;
import org.eclipse.fordiac.ide.model.libraryElement.Event;
import org.eclipse.jface.dialogs.MessageDialog;
@@ -82,7 +81,6 @@
label.setText(ContractKeywords.OCCURS + " " + ContractKeywords.EVERY); //$NON-NLS-1$
inputTimeText = new Text(group, SWT.RIGHT);
- inputTimeText.addListener(SWT.KeyDown, new IntervalVerifyListener(inputTimeText));
inputTimeText.setLayoutData(new GridData(SWT.FILL, SWT.CENTER, true, false));
label = new Label(group, SWT.None);
@@ -93,8 +91,6 @@
labelOffset.setVisible(false);
offset = new Text(group, SWT.RIGHT);
- offset.addListener(SWT.KeyDown, new IntervalVerifyListener(offset));
-
offset.setLayoutData(new GridData(SWT.FILL, SWT.CENTER, true, false));
offset.setVisible(false);
final Label labelOffsetMs = new Label(group, SWT.None);
@@ -131,8 +127,9 @@
offsetText = offset.getText();
}
inputTime = inputTimeText.getText();
+
final String[] strInputTime = DefineContractUtils.getTimeIntervalFromString(inputTime);
- String[] strOffset = { "0", "0" }; //$NON-NLS-1$//$NON-NLS-2$
+ String[] strOffset = { "0", "0" }; //$NON-NLS-1$//$NON-NLS-2$
if (offset.isVisible()) {
strOffset = DefineContractUtils.getTimeIntervalFromString(offsetText);
}
diff --git a/plugins/org.eclipse.fordiac.ide.contracts/src/org/eclipse/fordiac/ide/contracts/DefineFBReactionThreePinDialog.java b/plugins/org.eclipse.fordiac.ide.contracts/src/org/eclipse/fordiac/ide/contracts/DefineFBReactionThreePinDialog.java
index 73444db..dc0bd56 100644
--- a/plugins/org.eclipse.fordiac.ide.contracts/src/org/eclipse/fordiac/ide/contracts/DefineFBReactionThreePinDialog.java
+++ b/plugins/org.eclipse.fordiac.ide.contracts/src/org/eclipse/fordiac/ide/contracts/DefineFBReactionThreePinDialog.java
@@ -15,7 +15,6 @@
import java.util.List;
-import org.eclipse.fordiac.ide.application.utilities.IntervalVerifyListener;
import org.eclipse.fordiac.ide.contracts.model.ContractKeywords;
import org.eclipse.fordiac.ide.model.libraryElement.Event;
import org.eclipse.jface.layout.GridDataFactory;
@@ -53,7 +52,7 @@
Label label = new Label(group, SWT.None);
label.setText("After " + pinFrom.getName() + " the events " + ContractKeywords.EVENTS_OPEN //$NON-NLS-1$//$NON-NLS-2$
- + outputEvents.get(0).getName() + " " //$NON-NLS-1$
+ + outputEvents.get(0).getName() + " " //$NON-NLS-1$
+ outputEvents.get(0).getName() + ContractKeywords.EVENTS_CLOSE);
label.setLayoutData(GridDataFactory.fillDefaults().span(NUM_COLUMNS, 1).grab(true, true).create());
@@ -61,7 +60,6 @@
label.setText(ContractKeywords.OCCURS + " " + ContractKeywords.WITHIN); //$NON-NLS-1$
inputTimeText = new Text(group, SWT.RIGHT);
- inputTimeText.addListener(SWT.KeyDown, new IntervalVerifyListener(inputTimeText));
inputTimeText.setLayoutData(new GridData(SWT.FILL, SWT.CENTER, true, false));
label = new Label(group, SWT.None);
diff --git a/plugins/org.eclipse.fordiac.ide.contracts/src/org/eclipse/fordiac/ide/contracts/DefineFBReactionTwoPinDialog.java b/plugins/org.eclipse.fordiac.ide.contracts/src/org/eclipse/fordiac/ide/contracts/DefineFBReactionTwoPinDialog.java
index 71cdcc6..57fa13e 100644
--- a/plugins/org.eclipse.fordiac.ide.contracts/src/org/eclipse/fordiac/ide/contracts/DefineFBReactionTwoPinDialog.java
+++ b/plugins/org.eclipse.fordiac.ide.contracts/src/org/eclipse/fordiac/ide/contracts/DefineFBReactionTwoPinDialog.java
@@ -13,7 +13,6 @@
*******************************************************************************/
package org.eclipse.fordiac.ide.contracts;
-import org.eclipse.fordiac.ide.application.utilities.IntervalVerifyListener;
import org.eclipse.fordiac.ide.contracts.model.ContractKeywords;
import org.eclipse.fordiac.ide.model.libraryElement.Event;
import org.eclipse.jface.layout.GridDataFactory;
@@ -56,7 +55,6 @@
label.setText(ContractKeywords.OCCURS + " " + ContractKeywords.WITHIN); //$NON-NLS-1$
inputTimeText = new Text(group, SWT.RIGHT);
- inputTimeText.addListener(SWT.KeyDown, new IntervalVerifyListener(inputTimeText));
inputTimeText.setLayoutData(new GridData(SWT.FILL, SWT.CENTER, true, false));
label = new Label(group, SWT.None);
diff --git a/plugins/org.eclipse.fordiac.ide.contracts/src/org/eclipse/fordiac/ide/contracts/model/ModelTest.java b/plugins/org.eclipse.fordiac.ide.contracts/src/org/eclipse/fordiac/ide/contracts/model/ModelTest.java
index 0d4673a..6d23c15 100644
--- a/plugins/org.eclipse.fordiac.ide.contracts/src/org/eclipse/fordiac/ide/contracts/model/ModelTest.java
+++ b/plugins/org.eclipse.fordiac.ide.contracts/src/org/eclipse/fordiac/ide/contracts/model/ModelTest.java
@@ -26,7 +26,7 @@
}
public static void test() {
- final SubApp subApp = LibraryElementFactory.eINSTANCE.createSubApp();
+ final SubApp subApp = LibraryElementFactory.eINSTANCE.createUntypedSubApp();
subApp.setComment("ASSUMPTION VV occurs within [1,2]ms \nGUARANTEE Reaction(VV,BB) within [6,39]ms \n"); //$NON-NLS-1$
subApp.setComment(
"ASSUMPTION CD occurs every 7ms with [8,9]ms offset\n GUARANTEE Reaction(EI1,EO1) within [1,1]ms ConstractState TRUE \n"); //$NON-NLS-1$
diff --git a/plugins/org.eclipse.fordiac.ide.datatypeeditor/META-INF/MANIFEST.MF b/plugins/org.eclipse.fordiac.ide.datatypeeditor/META-INF/MANIFEST.MF
index 4597128..1429fd8 100644
--- a/plugins/org.eclipse.fordiac.ide.datatypeeditor/META-INF/MANIFEST.MF
+++ b/plugins/org.eclipse.fordiac.ide.datatypeeditor/META-INF/MANIFEST.MF
@@ -2,7 +2,7 @@
Bundle-ManifestVersion: 2
Bundle-Name: Data Type Editor
Bundle-SymbolicName: org.eclipse.fordiac.ide.datatypeeditor;singleton:=true
-Bundle-Version: 2.0.1.qualifier
+Bundle-Version: 3.0.0.qualifier
Require-Bundle: org.eclipse.ui,
org.eclipse.core.runtime,
org.eclipse.fordiac.ide.ui,
diff --git a/plugins/org.eclipse.fordiac.ide.debug.st/META-INF/MANIFEST.MF b/plugins/org.eclipse.fordiac.ide.debug.st/META-INF/MANIFEST.MF
index bec4955..abeee5c 100644
--- a/plugins/org.eclipse.fordiac.ide.debug.st/META-INF/MANIFEST.MF
+++ b/plugins/org.eclipse.fordiac.ide.debug.st/META-INF/MANIFEST.MF
@@ -2,7 +2,7 @@
Bundle-ManifestVersion: 2
Bundle-Name: Debug ST
Bundle-SymbolicName: org.eclipse.fordiac.ide.debug.st;singleton:=true
-Bundle-Version: 2.0.1.qualifier
+Bundle-Version: 3.0.0.qualifier
Bundle-Vendor: Eclipse 4diac
Automatic-Module-Name: org.eclipse.fordiac.ide.debug.st
Bundle-RequiredExecutionEnvironment: JavaSE-17
diff --git a/plugins/org.eclipse.fordiac.ide.debug.ui.st/META-INF/MANIFEST.MF b/plugins/org.eclipse.fordiac.ide.debug.ui.st/META-INF/MANIFEST.MF
index 4812778..f7f2da6 100644
--- a/plugins/org.eclipse.fordiac.ide.debug.ui.st/META-INF/MANIFEST.MF
+++ b/plugins/org.eclipse.fordiac.ide.debug.ui.st/META-INF/MANIFEST.MF
@@ -2,7 +2,7 @@
Bundle-ManifestVersion: 2
Bundle-Name: Debug UI
Bundle-SymbolicName: org.eclipse.fordiac.ide.debug.ui.st;singleton:=true
-Bundle-Version: 2.0.1.qualifier
+Bundle-Version: 3.0.0.qualifier
Bundle-Vendor: Eclipse 4diac
Automatic-Module-Name: org.eclipse.fordiac.ide.debug.ui.st
Bundle-RequiredExecutionEnvironment: JavaSE-17
diff --git a/plugins/org.eclipse.fordiac.ide.debug.ui/META-INF/MANIFEST.MF b/plugins/org.eclipse.fordiac.ide.debug.ui/META-INF/MANIFEST.MF
index 9ac60b8..a73c236 100644
--- a/plugins/org.eclipse.fordiac.ide.debug.ui/META-INF/MANIFEST.MF
+++ b/plugins/org.eclipse.fordiac.ide.debug.ui/META-INF/MANIFEST.MF
@@ -2,7 +2,7 @@
Bundle-ManifestVersion: 2
Bundle-Name: Debug UI
Bundle-SymbolicName: org.eclipse.fordiac.ide.debug.ui;singleton:=true
-Bundle-Version: 2.0.1.qualifier
+Bundle-Version: 3.0.0.qualifier
Bundle-Vendor: Eclipse 4diac
Automatic-Module-Name: org.eclipse.fordiac.ide.debug.ui
Bundle-RequiredExecutionEnvironment: JavaSE-17
diff --git a/plugins/org.eclipse.fordiac.ide.debug/META-INF/MANIFEST.MF b/plugins/org.eclipse.fordiac.ide.debug/META-INF/MANIFEST.MF
index fb0cb11..ccd557b 100644
--- a/plugins/org.eclipse.fordiac.ide.debug/META-INF/MANIFEST.MF
+++ b/plugins/org.eclipse.fordiac.ide.debug/META-INF/MANIFEST.MF
@@ -2,7 +2,7 @@
Bundle-ManifestVersion: 2
Bundle-Name: Debug
Bundle-SymbolicName: org.eclipse.fordiac.ide.debug;singleton:=true
-Bundle-Version: 2.0.1.qualifier
+Bundle-Version: 3.0.0.qualifier
Bundle-Vendor: Eclipse 4diac
Automatic-Module-Name: org.eclipse.fordiac.ide.debug
Bundle-RequiredExecutionEnvironment: JavaSE-17
diff --git a/plugins/org.eclipse.fordiac.ide.deployment.bootfile/META-INF/MANIFEST.MF b/plugins/org.eclipse.fordiac.ide.deployment.bootfile/META-INF/MANIFEST.MF
index a2e25dd..f55db7a 100644
--- a/plugins/org.eclipse.fordiac.ide.deployment.bootfile/META-INF/MANIFEST.MF
+++ b/plugins/org.eclipse.fordiac.ide.deployment.bootfile/META-INF/MANIFEST.MF
@@ -2,7 +2,7 @@
Bundle-ManifestVersion: 2
Bundle-Name: Deployment Boot File
Bundle-SymbolicName: org.eclipse.fordiac.ide.deployment.bootfile;singleton:=true
-Bundle-Version: 2.0.1.qualifier
+Bundle-Version: 3.0.0.qualifier
Export-Package: org.eclipse.fordiac.ide.deployment.bootfile,
org.eclipse.fordiac.ide.deployment.bootfile.wizard
Bundle-Vendor: Eclipse 4diac
diff --git a/plugins/org.eclipse.fordiac.ide.deployment.bootfile/src/org/eclipse/fordiac/ide/deployment/bootfile/wizard/CreateBootFilesWizardPage.java b/plugins/org.eclipse.fordiac.ide.deployment.bootfile/src/org/eclipse/fordiac/ide/deployment/bootfile/wizard/CreateBootFilesWizardPage.java
index d189e69..4c5bf61 100644
--- a/plugins/org.eclipse.fordiac.ide.deployment.bootfile/src/org/eclipse/fordiac/ide/deployment/bootfile/wizard/CreateBootFilesWizardPage.java
+++ b/plugins/org.eclipse.fordiac.ide.deployment.bootfile/src/org/eclipse/fordiac/ide/deployment/bootfile/wizard/CreateBootFilesWizardPage.java
@@ -29,7 +29,7 @@
import org.eclipse.fordiac.ide.model.typelibrary.SystemEntry;
import org.eclipse.fordiac.ide.model.typelibrary.TypeLibraryManager;
import org.eclipse.fordiac.ide.model.typelibrary.TypeLibraryTags;
-import org.eclipse.fordiac.ide.ui.DirectoryChooserControl;
+import org.eclipse.fordiac.ide.ui.widget.DirectoryChooserControl;
import org.eclipse.jface.viewers.IStructuredSelection;
import org.eclipse.jface.viewers.StructuredSelection;
import org.eclipse.swt.SWT;
@@ -99,7 +99,7 @@
stretch.horizontalAlignment = SWT.FILL;
dcc = new DirectoryChooserControl(composite, SWT.NONE, Messages.CreateBootFilesWizardPage_Destination);
- dcc.addDirectoryChangedListener(newDirectory -> updatePageCompletion());
+ dcc.addChooserValueChangedListener(newDirectory -> updatePageCompletion());
dcc.setLayoutData(stretch);
}
@@ -131,7 +131,7 @@
@Override
protected boolean validateDestinationGroup() {
- if (dcc.getDirectory() == null || "".equals(dcc.getDirectory())) { //$NON-NLS-1$
+ if (dcc.getValue() == null || "".equals(dcc.getValue())) { //$NON-NLS-1$
setErrorMessage(Messages.CreateBootFilesWizardPage_DestinationNotSelected);
return false;
}
@@ -172,11 +172,11 @@
* @param dir the new directory
*/
public void setDirectory(final String dir) {
- dcc.setDirectory(dir);
+ dcc.setValue(dir);
}
public String getDirectory() {
- return dcc.getDirectory();
+ return dcc.getValue();
}
private void checkSelectedElements() {
diff --git a/plugins/org.eclipse.fordiac.ide.deployment.debug.ui/META-INF/MANIFEST.MF b/plugins/org.eclipse.fordiac.ide.deployment.debug.ui/META-INF/MANIFEST.MF
index a479061..be98204 100644
--- a/plugins/org.eclipse.fordiac.ide.deployment.debug.ui/META-INF/MANIFEST.MF
+++ b/plugins/org.eclipse.fordiac.ide.deployment.debug.ui/META-INF/MANIFEST.MF
@@ -2,7 +2,7 @@
Bundle-ManifestVersion: 2
Bundle-Name: Debug UI
Bundle-SymbolicName: org.eclipse.fordiac.ide.deployment.debug.ui;singleton:=true
-Bundle-Version: 2.0.1.qualifier
+Bundle-Version: 3.0.0.qualifier
Bundle-Vendor: Eclipse 4diac
Automatic-Module-Name: org.eclipse.fordiac.ide.deployment.debug.ui
Bundle-RequiredExecutionEnvironment: JavaSE-17
diff --git a/plugins/org.eclipse.fordiac.ide.deployment.debug/META-INF/MANIFEST.MF b/plugins/org.eclipse.fordiac.ide.deployment.debug/META-INF/MANIFEST.MF
index 84a20a2..c4ab87a 100644
--- a/plugins/org.eclipse.fordiac.ide.deployment.debug/META-INF/MANIFEST.MF
+++ b/plugins/org.eclipse.fordiac.ide.deployment.debug/META-INF/MANIFEST.MF
@@ -2,7 +2,7 @@
Bundle-ManifestVersion: 2
Bundle-Name: Deployment Debug
Bundle-SymbolicName: org.eclipse.fordiac.ide.deployment.debug;singleton:=true
-Bundle-Version: 2.0.1.qualifier
+Bundle-Version: 3.0.0.qualifier
Bundle-Vendor: Eclipse 4diac
Automatic-Module-Name: org.eclipse.fordiac.ide.deployment.debug
Bundle-RequiredExecutionEnvironment: JavaSE-17
diff --git a/plugins/org.eclipse.fordiac.ide.deployment.eval/META-INF/MANIFEST.MF b/plugins/org.eclipse.fordiac.ide.deployment.eval/META-INF/MANIFEST.MF
index c76d9fe..e5bb1b8 100644
--- a/plugins/org.eclipse.fordiac.ide.deployment.eval/META-INF/MANIFEST.MF
+++ b/plugins/org.eclipse.fordiac.ide.deployment.eval/META-INF/MANIFEST.MF
@@ -2,7 +2,7 @@
Bundle-ManifestVersion: 2
Bundle-Name: Deployment Evaluator
Bundle-SymbolicName: org.eclipse.fordiac.ide.deployment.eval;singleton:=true
-Bundle-Version: 2.0.1.qualifier
+Bundle-Version: 3.0.0.qualifier
Bundle-Vendor: Eclipse 4diac
Automatic-Module-Name: org.eclipse.fordiac.ide.deployment.eval
Bundle-RequiredExecutionEnvironment: JavaSE-17
diff --git a/plugins/org.eclipse.fordiac.ide.deployment.eval/src/org/eclipse/fordiac/ide/deployment/eval/fb/DeploymentFBEvaluator.java b/plugins/org.eclipse.fordiac.ide.deployment.eval/src/org/eclipse/fordiac/ide/deployment/eval/fb/DeploymentFBEvaluator.java
index 7300e6f..8a03b40 100644
--- a/plugins/org.eclipse.fordiac.ide.deployment.eval/src/org/eclipse/fordiac/ide/deployment/eval/fb/DeploymentFBEvaluator.java
+++ b/plugins/org.eclipse.fordiac.ide.deployment.eval/src/org/eclipse/fordiac/ide/deployment/eval/fb/DeploymentFBEvaluator.java
@@ -128,7 +128,7 @@
protected void writeVariables(final Iterable<VarDeclaration> varDeclarations) throws DeploymentException {
for (final VarDeclaration varDeclaration : varDeclarations) {
final Variable<?> variable = getVariables().get(varDeclaration.getName());
- sharedState.writeFBParameter(variable.toString(), deploymentData, varDeclaration);
+ sharedState.writeFBParameter(variable.toString(false), deploymentData, varDeclaration);
}
}
diff --git a/plugins/org.eclipse.fordiac.ide.deployment.iec61499/META-INF/MANIFEST.MF b/plugins/org.eclipse.fordiac.ide.deployment.iec61499/META-INF/MANIFEST.MF
index 5884a61..588df6c 100644
--- a/plugins/org.eclipse.fordiac.ide.deployment.iec61499/META-INF/MANIFEST.MF
+++ b/plugins/org.eclipse.fordiac.ide.deployment.iec61499/META-INF/MANIFEST.MF
@@ -19,7 +19,7 @@
org.eclipse.fordiac.ide.application
Bundle-Vendor: Eclipse 4diac
Bundle-ActivationPolicy: lazy
-Bundle-Version: 2.0.0.qualifier
+Bundle-Version: 3.0.0.qualifier
Bundle-Name: IEC 61499 Deployment
Bundle-Activator: org.eclipse.fordiac.ide.deployment.iec61499.Activator
Bundle-ManifestVersion: 2
diff --git a/plugins/org.eclipse.fordiac.ide.deployment.iec61499/src/org/eclipse/fordiac/ide/deployment/iec61499/executors/DeploymentExecutor.java b/plugins/org.eclipse.fordiac.ide.deployment.iec61499/src/org/eclipse/fordiac/ide/deployment/iec61499/executors/DeploymentExecutor.java
index 3431e85..8c514f4 100644
--- a/plugins/org.eclipse.fordiac.ide.deployment.iec61499/src/org/eclipse/fordiac/ide/deployment/iec61499/executors/DeploymentExecutor.java
+++ b/plugins/org.eclipse.fordiac.ide.deployment.iec61499/src/org/eclipse/fordiac/ide/deployment/iec61499/executors/DeploymentExecutor.java
@@ -37,14 +37,12 @@
import org.eclipse.fordiac.ide.deployment.iec61499.ResponseMapping;
import org.eclipse.fordiac.ide.deployment.iec61499.handlers.EthernetDeviceManagementCommunicationHandler;
import org.eclipse.fordiac.ide.deployment.interactors.AbstractDeviceManagementInteractor;
+import org.eclipse.fordiac.ide.deployment.interactors.ForteTypeNameCreator;
import org.eclipse.fordiac.ide.deployment.monitoringbase.MonitoringBaseElement;
-import org.eclipse.fordiac.ide.model.libraryElement.CompilerInfo;
import org.eclipse.fordiac.ide.model.libraryElement.Device;
import org.eclipse.fordiac.ide.model.libraryElement.FBNetworkElement;
import org.eclipse.fordiac.ide.model.libraryElement.IInterfaceElement;
-import org.eclipse.fordiac.ide.model.libraryElement.LibraryElement;
import org.eclipse.fordiac.ide.model.libraryElement.Resource;
-import org.eclipse.fordiac.ide.model.libraryElement.StructManipulator;
import org.eclipse.fordiac.ide.model.libraryElement.VarDeclaration;
import org.xml.sax.InputSource;
@@ -110,32 +108,6 @@
return new EthernetDeviceManagementCommunicationHandler();
}
- private static String getValidType(final FBNetworkElement fb) {
- if (fb != null && fb.getTypeEntry() != null) {
- if (fb instanceof final StructManipulator structMan) {
- // the _1 is needed for 4diac FORTE to separate type name from configuration
- // part
- return fb.getTypeName() + "_1" + getFullForteEncodedTypeName(structMan.getStructType()); //$NON-NLS-1$
- }
- if (fb.getType() != null) {
- return getFullForteEncodedTypeName(fb.getType());
- }
- return fb.getTypeName();
- }
- return null;
- }
-
- private static String getFullForteEncodedTypeName(final LibraryElement libEl) {
- final CompilerInfo compilerInfo = libEl.getCompilerInfo();
- if (compilerInfo != null) {
- final String packageName = compilerInfo.getPackageName();
- if (packageName != null && !packageName.isEmpty()) {
- return packageName.replace(':', '_') + "__" + libEl.getName(); //$NON-NLS-1$
- }
- }
- return libEl.getName();
- }
-
@Override
public void createResource(final Resource resource) throws DeploymentException {
final String request = MessageFormat.format(CREATE_RESOURCE_INSTANCE, getNextId(), resource.getName(),
@@ -305,9 +277,9 @@
@Override
public void createFBInstance(final FBDeploymentData fbData, final Resource res) throws DeploymentException {
- final String fbType = getValidType(fbData.getFb());
+ final String fbType = ForteTypeNameCreator.getForteTypeName(fbData.getFb());
final String fullFbInstanceName = fbData.getPrefix() + fbData.getFb().getName();
- if ("".equals(fbType)) { //$NON-NLS-1$
+ if (fbType.isEmpty()) {
throw new DeploymentException((MessageFormat
.format(Messages.DeploymentExecutor_CreateFBInstanceFailedNoTypeFound, fullFbInstanceName)));
}
diff --git a/plugins/org.eclipse.fordiac.ide.deployment.opcua/.classpath b/plugins/org.eclipse.fordiac.ide.deployment.opcua/.classpath
new file mode 100644
index 0000000..3628e33
--- /dev/null
+++ b/plugins/org.eclipse.fordiac.ide.deployment.opcua/.classpath
@@ -0,0 +1,11 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<classpath>
+ <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-17">
+ <attributes>
+ <attribute name="module" value="true"/>
+ </attributes>
+ </classpathentry>
+ <classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>
+ <classpathentry kind="src" path="src"/>
+ <classpathentry kind="output" path="bin"/>
+</classpath>
diff --git a/plugins/org.eclipse.fordiac.ide.deployment.opcua/.project b/plugins/org.eclipse.fordiac.ide.deployment.opcua/.project
new file mode 100644
index 0000000..24a0fa7
--- /dev/null
+++ b/plugins/org.eclipse.fordiac.ide.deployment.opcua/.project
@@ -0,0 +1,28 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+ <name>org.eclipse.fordiac.ide.deployment.opcua</name>
+ <comment></comment>
+ <projects>
+ </projects>
+ <buildSpec>
+ <buildCommand>
+ <name>org.eclipse.jdt.core.javabuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ <buildCommand>
+ <name>org.eclipse.pde.ManifestBuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ <buildCommand>
+ <name>org.eclipse.pde.SchemaBuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ </buildSpec>
+ <natures>
+ <nature>org.eclipse.pde.PluginNature</nature>
+ <nature>org.eclipse.jdt.core.javanature</nature>
+ </natures>
+</projectDescription>
diff --git a/plugins/org.eclipse.fordiac.ide.deployment.opcua/.settings/org.eclipse.core.resources.prefs b/plugins/org.eclipse.fordiac.ide.deployment.opcua/.settings/org.eclipse.core.resources.prefs
new file mode 100644
index 0000000..99f26c0
--- /dev/null
+++ b/plugins/org.eclipse.fordiac.ide.deployment.opcua/.settings/org.eclipse.core.resources.prefs
@@ -0,0 +1,2 @@
+eclipse.preferences.version=1
+encoding/<project>=UTF-8
diff --git a/plugins/org.eclipse.fordiac.ide.deployment.opcua/.settings/org.eclipse.jdt.core.prefs b/plugins/org.eclipse.fordiac.ide.deployment.opcua/.settings/org.eclipse.jdt.core.prefs
new file mode 100644
index 0000000..79ddd18
--- /dev/null
+++ b/plugins/org.eclipse.fordiac.ide.deployment.opcua/.settings/org.eclipse.jdt.core.prefs
@@ -0,0 +1,501 @@
+eclipse.preferences.version=1
+org.eclipse.jdt.core.builder.annotationPath.allLocations=disabled
+org.eclipse.jdt.core.compiler.annotation.inheritNullAnnotations=disabled
+org.eclipse.jdt.core.compiler.annotation.missingNonNullByDefaultAnnotation=ignore
+org.eclipse.jdt.core.compiler.annotation.nonnull=org.eclipse.jdt.annotation.NonNull
+org.eclipse.jdt.core.compiler.annotation.nonnull.secondary=
+org.eclipse.jdt.core.compiler.annotation.nonnullbydefault=org.eclipse.jdt.annotation.NonNullByDefault
+org.eclipse.jdt.core.compiler.annotation.nonnullbydefault.secondary=
+org.eclipse.jdt.core.compiler.annotation.nullable=org.eclipse.jdt.annotation.Nullable
+org.eclipse.jdt.core.compiler.annotation.nullable.secondary=
+org.eclipse.jdt.core.compiler.annotation.nullanalysis=disabled
+org.eclipse.jdt.core.compiler.problem.APILeak=warning
+org.eclipse.jdt.core.compiler.problem.annotatedTypeArgumentToUnannotated=info
+org.eclipse.jdt.core.compiler.problem.annotationSuperInterface=warning
+org.eclipse.jdt.core.compiler.problem.autoboxing=info
+org.eclipse.jdt.core.compiler.problem.comparingIdentical=warning
+org.eclipse.jdt.core.compiler.problem.deadCode=warning
+org.eclipse.jdt.core.compiler.problem.deprecation=warning
+org.eclipse.jdt.core.compiler.problem.deprecationInDeprecatedCode=disabled
+org.eclipse.jdt.core.compiler.problem.deprecationWhenOverridingDeprecatedMethod=disabled
+org.eclipse.jdt.core.compiler.problem.discouragedReference=warning
+org.eclipse.jdt.core.compiler.problem.emptyStatement=ignore
+org.eclipse.jdt.core.compiler.problem.explicitlyClosedAutoCloseable=warning
+org.eclipse.jdt.core.compiler.problem.fallthroughCase=info
+org.eclipse.jdt.core.compiler.problem.fatalOptionalError=disabled
+org.eclipse.jdt.core.compiler.problem.fieldHiding=ignore
+org.eclipse.jdt.core.compiler.problem.finalParameterBound=warning
+org.eclipse.jdt.core.compiler.problem.finallyBlockNotCompletingNormally=warning
+org.eclipse.jdt.core.compiler.problem.forbiddenReference=error
+org.eclipse.jdt.core.compiler.problem.hiddenCatchBlock=warning
+org.eclipse.jdt.core.compiler.problem.includeNullInfoFromAsserts=enabled
+org.eclipse.jdt.core.compiler.problem.incompatibleNonInheritedInterfaceMethod=warning
+org.eclipse.jdt.core.compiler.problem.incompleteEnumSwitch=warning
+org.eclipse.jdt.core.compiler.problem.indirectStaticAccess=ignore
+org.eclipse.jdt.core.compiler.problem.localVariableHiding=ignore
+org.eclipse.jdt.core.compiler.problem.methodWithConstructorName=warning
+org.eclipse.jdt.core.compiler.problem.missingDefaultCase=info
+org.eclipse.jdt.core.compiler.problem.missingDeprecatedAnnotation=ignore
+org.eclipse.jdt.core.compiler.problem.missingEnumCaseDespiteDefault=disabled
+org.eclipse.jdt.core.compiler.problem.missingHashCodeMethod=ignore
+org.eclipse.jdt.core.compiler.problem.missingOverrideAnnotation=warning
+org.eclipse.jdt.core.compiler.problem.missingOverrideAnnotationForInterfaceMethodImplementation=enabled
+org.eclipse.jdt.core.compiler.problem.missingSerialVersion=warning
+org.eclipse.jdt.core.compiler.problem.missingSynchronizedOnInheritedMethod=info
+org.eclipse.jdt.core.compiler.problem.noEffectAssignment=warning
+org.eclipse.jdt.core.compiler.problem.noImplicitStringConversion=warning
+org.eclipse.jdt.core.compiler.problem.nonExternalizedStringLiteral=info
+org.eclipse.jdt.core.compiler.problem.nonnullParameterAnnotationDropped=warning
+org.eclipse.jdt.core.compiler.problem.nonnullTypeVariableFromLegacyInvocation=warning
+org.eclipse.jdt.core.compiler.problem.nullAnnotationInferenceConflict=error
+org.eclipse.jdt.core.compiler.problem.nullReference=error
+org.eclipse.jdt.core.compiler.problem.nullSpecViolation=error
+org.eclipse.jdt.core.compiler.problem.nullUncheckedConversion=warning
+org.eclipse.jdt.core.compiler.problem.overridingPackageDefaultMethod=warning
+org.eclipse.jdt.core.compiler.problem.parameterAssignment=ignore
+org.eclipse.jdt.core.compiler.problem.pessimisticNullAnalysisForFreeTypeVariables=warning
+org.eclipse.jdt.core.compiler.problem.possibleAccidentalBooleanAssignment=error
+org.eclipse.jdt.core.compiler.problem.potentialNullReference=warning
+org.eclipse.jdt.core.compiler.problem.potentiallyUnclosedCloseable=ignore
+org.eclipse.jdt.core.compiler.problem.rawTypeReference=warning
+org.eclipse.jdt.core.compiler.problem.redundantNullAnnotation=warning
+org.eclipse.jdt.core.compiler.problem.redundantNullCheck=info
+org.eclipse.jdt.core.compiler.problem.redundantSpecificationOfTypeArguments=warning
+org.eclipse.jdt.core.compiler.problem.redundantSuperinterface=info
+org.eclipse.jdt.core.compiler.problem.reportMethodCanBePotentiallyStatic=warning
+org.eclipse.jdt.core.compiler.problem.reportMethodCanBeStatic=warning
+org.eclipse.jdt.core.compiler.problem.specialParameterHidingField=disabled
+org.eclipse.jdt.core.compiler.problem.staticAccessReceiver=warning
+org.eclipse.jdt.core.compiler.problem.suppressOptionalErrors=disabled
+org.eclipse.jdt.core.compiler.problem.suppressWarnings=enabled
+org.eclipse.jdt.core.compiler.problem.suppressWarningsNotFullyAnalysed=ignore
+org.eclipse.jdt.core.compiler.problem.syntacticNullAnalysisForFields=disabled
+org.eclipse.jdt.core.compiler.problem.syntheticAccessEmulation=ignore
+org.eclipse.jdt.core.compiler.problem.terminalDeprecation=warning
+org.eclipse.jdt.core.compiler.problem.typeParameterHiding=warning
+org.eclipse.jdt.core.compiler.problem.unavoidableGenericTypeProblems=disabled
+org.eclipse.jdt.core.compiler.problem.uncheckedTypeOperation=warning
+org.eclipse.jdt.core.compiler.problem.unclosedCloseable=warning
+org.eclipse.jdt.core.compiler.problem.undocumentedEmptyBlock=warning
+org.eclipse.jdt.core.compiler.problem.unhandledWarningToken=warning
+org.eclipse.jdt.core.compiler.problem.unlikelyCollectionMethodArgumentType=warning
+org.eclipse.jdt.core.compiler.problem.unlikelyCollectionMethodArgumentTypeStrict=disabled
+org.eclipse.jdt.core.compiler.problem.unlikelyEqualsArgumentType=info
+org.eclipse.jdt.core.compiler.problem.unnecessaryElse=info
+org.eclipse.jdt.core.compiler.problem.unnecessaryTypeCheck=info
+org.eclipse.jdt.core.compiler.problem.unqualifiedFieldAccess=ignore
+org.eclipse.jdt.core.compiler.problem.unstableAutoModuleName=warning
+org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownException=warning
+org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownExceptionExemptExceptionAndThrowable=enabled
+org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownExceptionIncludeDocCommentReference=enabled
+org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownExceptionWhenOverriding=disabled
+org.eclipse.jdt.core.compiler.problem.unusedExceptionParameter=ignore
+org.eclipse.jdt.core.compiler.problem.unusedImport=warning
+org.eclipse.jdt.core.compiler.problem.unusedLabel=warning
+org.eclipse.jdt.core.compiler.problem.unusedLocal=warning
+org.eclipse.jdt.core.compiler.problem.unusedObjectAllocation=info
+org.eclipse.jdt.core.compiler.problem.unusedParameter=ignore
+org.eclipse.jdt.core.compiler.problem.unusedParameterIncludeDocCommentReference=enabled
+org.eclipse.jdt.core.compiler.problem.unusedParameterWhenImplementingAbstract=disabled
+org.eclipse.jdt.core.compiler.problem.unusedParameterWhenOverridingConcrete=disabled
+org.eclipse.jdt.core.compiler.problem.unusedPrivateMember=warning
+org.eclipse.jdt.core.compiler.problem.unusedTypeParameter=ignore
+org.eclipse.jdt.core.compiler.problem.unusedWarningToken=warning
+org.eclipse.jdt.core.compiler.problem.varargsArgumentNeedCast=warning
+org.eclipse.jdt.core.formatter.align_assignment_statements_on_columns=false
+org.eclipse.jdt.core.formatter.align_fields_grouping_blank_lines=2147483647
+org.eclipse.jdt.core.formatter.align_selector_in_method_invocation_on_expression_first_line=true
+org.eclipse.jdt.core.formatter.align_type_members_on_columns=false
+org.eclipse.jdt.core.formatter.align_variable_declarations_on_columns=false
+org.eclipse.jdt.core.formatter.align_with_spaces=false
+org.eclipse.jdt.core.formatter.alignment_for_additive_operator=16
+org.eclipse.jdt.core.formatter.alignment_for_annotations_on_enum_constant=49
+org.eclipse.jdt.core.formatter.alignment_for_annotations_on_field=49
+org.eclipse.jdt.core.formatter.alignment_for_annotations_on_local_variable=49
+org.eclipse.jdt.core.formatter.alignment_for_annotations_on_method=49
+org.eclipse.jdt.core.formatter.alignment_for_annotations_on_package=49
+org.eclipse.jdt.core.formatter.alignment_for_annotations_on_parameter=0
+org.eclipse.jdt.core.formatter.alignment_for_annotations_on_type=49
+org.eclipse.jdt.core.formatter.alignment_for_arguments_in_allocation_expression=16
+org.eclipse.jdt.core.formatter.alignment_for_arguments_in_annotation=0
+org.eclipse.jdt.core.formatter.alignment_for_arguments_in_enum_constant=16
+org.eclipse.jdt.core.formatter.alignment_for_arguments_in_explicit_constructor_call=16
+org.eclipse.jdt.core.formatter.alignment_for_arguments_in_method_invocation=16
+org.eclipse.jdt.core.formatter.alignment_for_arguments_in_qualified_allocation_expression=16
+org.eclipse.jdt.core.formatter.alignment_for_assertion_message=16
+org.eclipse.jdt.core.formatter.alignment_for_assignment=0
+org.eclipse.jdt.core.formatter.alignment_for_bitwise_operator=16
+org.eclipse.jdt.core.formatter.alignment_for_compact_if=16
+org.eclipse.jdt.core.formatter.alignment_for_compact_loops=16
+org.eclipse.jdt.core.formatter.alignment_for_conditional_expression=80
+org.eclipse.jdt.core.formatter.alignment_for_conditional_expression_chain=0
+org.eclipse.jdt.core.formatter.alignment_for_enum_constants=16
+org.eclipse.jdt.core.formatter.alignment_for_expressions_in_array_initializer=16
+org.eclipse.jdt.core.formatter.alignment_for_expressions_in_for_loop_header=0
+org.eclipse.jdt.core.formatter.alignment_for_expressions_in_switch_case_with_arrow=16
+org.eclipse.jdt.core.formatter.alignment_for_expressions_in_switch_case_with_colon=16
+org.eclipse.jdt.core.formatter.alignment_for_logical_operator=16
+org.eclipse.jdt.core.formatter.alignment_for_method_declaration=0
+org.eclipse.jdt.core.formatter.alignment_for_module_statements=16
+org.eclipse.jdt.core.formatter.alignment_for_multiple_fields=16
+org.eclipse.jdt.core.formatter.alignment_for_multiplicative_operator=16
+org.eclipse.jdt.core.formatter.alignment_for_parameterized_type_references=0
+org.eclipse.jdt.core.formatter.alignment_for_parameters_in_constructor_declaration=16
+org.eclipse.jdt.core.formatter.alignment_for_parameters_in_method_declaration=16
+org.eclipse.jdt.core.formatter.alignment_for_permitted_types_in_type_declaration=16
+org.eclipse.jdt.core.formatter.alignment_for_record_components=16
+org.eclipse.jdt.core.formatter.alignment_for_relational_operator=0
+org.eclipse.jdt.core.formatter.alignment_for_resources_in_try=80
+org.eclipse.jdt.core.formatter.alignment_for_selector_in_method_invocation=16
+org.eclipse.jdt.core.formatter.alignment_for_shift_operator=0
+org.eclipse.jdt.core.formatter.alignment_for_string_concatenation=16
+org.eclipse.jdt.core.formatter.alignment_for_superclass_in_type_declaration=16
+org.eclipse.jdt.core.formatter.alignment_for_superinterfaces_in_enum_declaration=16
+org.eclipse.jdt.core.formatter.alignment_for_superinterfaces_in_record_declaration=16
+org.eclipse.jdt.core.formatter.alignment_for_superinterfaces_in_type_declaration=16
+org.eclipse.jdt.core.formatter.alignment_for_switch_case_with_arrow=20
+org.eclipse.jdt.core.formatter.alignment_for_throws_clause_in_constructor_declaration=16
+org.eclipse.jdt.core.formatter.alignment_for_throws_clause_in_method_declaration=16
+org.eclipse.jdt.core.formatter.alignment_for_type_annotations=0
+org.eclipse.jdt.core.formatter.alignment_for_type_arguments=0
+org.eclipse.jdt.core.formatter.alignment_for_type_parameters=0
+org.eclipse.jdt.core.formatter.alignment_for_union_type_in_multicatch=16
+org.eclipse.jdt.core.formatter.blank_lines_after_imports=1
+org.eclipse.jdt.core.formatter.blank_lines_after_last_class_body_declaration=0
+org.eclipse.jdt.core.formatter.blank_lines_after_package=1
+org.eclipse.jdt.core.formatter.blank_lines_before_abstract_method=1
+org.eclipse.jdt.core.formatter.blank_lines_before_field=0
+org.eclipse.jdt.core.formatter.blank_lines_before_first_class_body_declaration=0
+org.eclipse.jdt.core.formatter.blank_lines_before_imports=1
+org.eclipse.jdt.core.formatter.blank_lines_before_member_type=1
+org.eclipse.jdt.core.formatter.blank_lines_before_method=1
+org.eclipse.jdt.core.formatter.blank_lines_before_new_chunk=1
+org.eclipse.jdt.core.formatter.blank_lines_before_package=0
+org.eclipse.jdt.core.formatter.blank_lines_between_import_groups=1
+org.eclipse.jdt.core.formatter.blank_lines_between_statement_group_in_switch=0
+org.eclipse.jdt.core.formatter.blank_lines_between_type_declarations=1
+org.eclipse.jdt.core.formatter.brace_position_for_annotation_type_declaration=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_anonymous_type_declaration=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_array_initializer=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_block=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_block_in_case=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_constructor_declaration=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_enum_constant=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_enum_declaration=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_lambda_body=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_method_declaration=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_record_constructor=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_record_declaration=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_switch=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_type_declaration=end_of_line
+org.eclipse.jdt.core.formatter.comment.align_tags_descriptions_grouped=true
+org.eclipse.jdt.core.formatter.comment.align_tags_names_descriptions=false
+org.eclipse.jdt.core.formatter.comment.clear_blank_lines_in_block_comment=false
+org.eclipse.jdt.core.formatter.comment.clear_blank_lines_in_javadoc_comment=false
+org.eclipse.jdt.core.formatter.comment.count_line_length_from_starting_position=true
+org.eclipse.jdt.core.formatter.comment.format_block_comments=true
+org.eclipse.jdt.core.formatter.comment.format_header=false
+org.eclipse.jdt.core.formatter.comment.format_html=true
+org.eclipse.jdt.core.formatter.comment.format_javadoc_comments=true
+org.eclipse.jdt.core.formatter.comment.format_line_comments=true
+org.eclipse.jdt.core.formatter.comment.format_source_code=true
+org.eclipse.jdt.core.formatter.comment.indent_parameter_description=false
+org.eclipse.jdt.core.formatter.comment.indent_root_tags=false
+org.eclipse.jdt.core.formatter.comment.indent_tag_description=false
+org.eclipse.jdt.core.formatter.comment.insert_new_line_before_root_tags=insert
+org.eclipse.jdt.core.formatter.comment.insert_new_line_between_different_tags=do not insert
+org.eclipse.jdt.core.formatter.comment.insert_new_line_for_parameter=do not insert
+org.eclipse.jdt.core.formatter.comment.javadoc_do_not_separate_block_tags=false
+org.eclipse.jdt.core.formatter.comment.line_length=80
+org.eclipse.jdt.core.formatter.comment.new_lines_at_block_boundaries=true
+org.eclipse.jdt.core.formatter.comment.new_lines_at_javadoc_boundaries=true
+org.eclipse.jdt.core.formatter.comment.preserve_white_space_between_code_and_line_comments=false
+org.eclipse.jdt.core.formatter.compact_else_if=true
+org.eclipse.jdt.core.formatter.continuation_indentation=2
+org.eclipse.jdt.core.formatter.continuation_indentation_for_array_initializer=2
+org.eclipse.jdt.core.formatter.disabling_tag=@formatter\:off
+org.eclipse.jdt.core.formatter.enabling_tag=@formatter\:on
+org.eclipse.jdt.core.formatter.format_guardian_clause_on_one_line=false
+org.eclipse.jdt.core.formatter.format_line_comment_starting_on_first_column=false
+org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_annotation_declaration_header=true
+org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_enum_constant_header=true
+org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_enum_declaration_header=true
+org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_record_header=true
+org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_type_header=true
+org.eclipse.jdt.core.formatter.indent_breaks_compare_to_cases=true
+org.eclipse.jdt.core.formatter.indent_empty_lines=false
+org.eclipse.jdt.core.formatter.indent_statements_compare_to_block=true
+org.eclipse.jdt.core.formatter.indent_statements_compare_to_body=true
+org.eclipse.jdt.core.formatter.indent_switchstatements_compare_to_cases=true
+org.eclipse.jdt.core.formatter.indent_switchstatements_compare_to_switch=false
+org.eclipse.jdt.core.formatter.indentation.size=4
+org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_enum_constant=insert
+org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_field=insert
+org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_local_variable=insert
+org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_method=insert
+org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_package=insert
+org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_parameter=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_type=insert
+org.eclipse.jdt.core.formatter.insert_new_line_after_label=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_after_opening_brace_in_array_initializer=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_after_type_annotation=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_at_end_of_file_if_missing=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_before_catch_in_try_statement=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_before_closing_brace_in_array_initializer=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_before_else_in_if_statement=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_before_finally_in_try_statement=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_before_while_in_do_statement=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_additive_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_after_and_in_type_parameter=insert
+org.eclipse.jdt.core.formatter.insert_space_after_arrow_in_switch_case=insert
+org.eclipse.jdt.core.formatter.insert_space_after_arrow_in_switch_default=insert
+org.eclipse.jdt.core.formatter.insert_space_after_assignment_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_after_at_in_annotation=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_at_in_annotation_type_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_bitwise_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_after_closing_angle_bracket_in_type_arguments=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_closing_angle_bracket_in_type_parameters=insert
+org.eclipse.jdt.core.formatter.insert_space_after_closing_brace_in_block=insert
+org.eclipse.jdt.core.formatter.insert_space_after_closing_paren_in_cast=insert
+org.eclipse.jdt.core.formatter.insert_space_after_colon_in_assert=insert
+org.eclipse.jdt.core.formatter.insert_space_after_colon_in_case=insert
+org.eclipse.jdt.core.formatter.insert_space_after_colon_in_conditional=insert
+org.eclipse.jdt.core.formatter.insert_space_after_colon_in_for=insert
+org.eclipse.jdt.core.formatter.insert_space_after_colon_in_labeled_statement=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_allocation_expression=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_annotation=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_array_initializer=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_constructor_declaration_parameters=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_constructor_declaration_throws=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_enum_constant_arguments=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_enum_declarations=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_explicitconstructorcall_arguments=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_for_increments=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_for_inits=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_method_declaration_parameters=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_method_declaration_throws=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_method_invocation_arguments=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_multiple_field_declarations=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_multiple_local_declarations=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_parameterized_type_reference=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_permitted_types=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_record_components=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_superinterfaces=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_switch_case_expressions=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_type_arguments=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_type_parameters=insert
+org.eclipse.jdt.core.formatter.insert_space_after_ellipsis=insert
+org.eclipse.jdt.core.formatter.insert_space_after_lambda_arrow=insert
+org.eclipse.jdt.core.formatter.insert_space_after_logical_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_after_multiplicative_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_after_not_operator=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_parameterized_type_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_type_arguments=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_type_parameters=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_brace_in_array_initializer=insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_bracket_in_array_allocation_expression=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_bracket_in_array_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_annotation=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_cast=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_catch=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_constructor_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_enum_constant=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_for=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_if=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_method_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_method_invocation=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_parenthesized_expression=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_record_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_switch=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_synchronized=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_try=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_while=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_postfix_operator=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_prefix_operator=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_question_in_conditional=insert
+org.eclipse.jdt.core.formatter.insert_space_after_question_in_wildcard=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_relational_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_after_semicolon_in_for=insert
+org.eclipse.jdt.core.formatter.insert_space_after_semicolon_in_try_resources=insert
+org.eclipse.jdt.core.formatter.insert_space_after_shift_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_after_string_concatenation=insert
+org.eclipse.jdt.core.formatter.insert_space_after_unary_operator=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_additive_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_before_and_in_type_parameter=insert
+org.eclipse.jdt.core.formatter.insert_space_before_arrow_in_switch_case=insert
+org.eclipse.jdt.core.formatter.insert_space_before_arrow_in_switch_default=insert
+org.eclipse.jdt.core.formatter.insert_space_before_assignment_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_before_at_in_annotation_type_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_before_bitwise_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_parameterized_type_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_type_arguments=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_type_parameters=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_brace_in_array_initializer=insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_bracket_in_array_allocation_expression=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_bracket_in_array_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_annotation=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_cast=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_catch=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_constructor_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_enum_constant=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_for=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_if=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_method_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_method_invocation=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_parenthesized_expression=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_record_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_switch=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_synchronized=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_try=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_while=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_colon_in_assert=insert
+org.eclipse.jdt.core.formatter.insert_space_before_colon_in_case=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_colon_in_conditional=insert
+org.eclipse.jdt.core.formatter.insert_space_before_colon_in_default=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_colon_in_for=insert
+org.eclipse.jdt.core.formatter.insert_space_before_colon_in_labeled_statement=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_allocation_expression=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_annotation=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_array_initializer=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_constructor_declaration_parameters=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_constructor_declaration_throws=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_enum_constant_arguments=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_enum_declarations=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_explicitconstructorcall_arguments=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_for_increments=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_for_inits=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_method_declaration_parameters=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_method_declaration_throws=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_method_invocation_arguments=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_multiple_field_declarations=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_multiple_local_declarations=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_parameterized_type_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_permitted_types=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_record_components=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_superinterfaces=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_switch_case_expressions=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_type_arguments=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_type_parameters=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_ellipsis=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_lambda_arrow=insert
+org.eclipse.jdt.core.formatter.insert_space_before_logical_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_before_multiplicative_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_parameterized_type_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_type_arguments=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_type_parameters=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_annotation_type_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_anonymous_type_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_array_initializer=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_block=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_constructor_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_enum_constant=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_enum_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_method_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_record_constructor=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_record_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_switch=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_type_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_bracket_in_array_allocation_expression=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_bracket_in_array_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_bracket_in_array_type_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_annotation=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_annotation_type_member_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_catch=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_constructor_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_enum_constant=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_for=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_if=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_method_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_method_invocation=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_parenthesized_expression=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_record_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_switch=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_synchronized=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_try=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_while=insert
+org.eclipse.jdt.core.formatter.insert_space_before_parenthesized_expression_in_return=insert
+org.eclipse.jdt.core.formatter.insert_space_before_parenthesized_expression_in_throw=insert
+org.eclipse.jdt.core.formatter.insert_space_before_postfix_operator=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_prefix_operator=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_question_in_conditional=insert
+org.eclipse.jdt.core.formatter.insert_space_before_question_in_wildcard=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_relational_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_before_semicolon=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_semicolon_in_for=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_semicolon_in_try_resources=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_shift_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_before_string_concatenation=insert
+org.eclipse.jdt.core.formatter.insert_space_before_unary_operator=do not insert
+org.eclipse.jdt.core.formatter.insert_space_between_brackets_in_array_type_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_between_empty_braces_in_array_initializer=do not insert
+org.eclipse.jdt.core.formatter.insert_space_between_empty_brackets_in_array_allocation_expression=do not insert
+org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_annotation_type_member_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_constructor_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_enum_constant=do not insert
+org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_method_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_method_invocation=do not insert
+org.eclipse.jdt.core.formatter.join_lines_in_comments=true
+org.eclipse.jdt.core.formatter.join_wrapped_lines=true
+org.eclipse.jdt.core.formatter.keep_annotation_declaration_on_one_line=one_line_never
+org.eclipse.jdt.core.formatter.keep_anonymous_type_declaration_on_one_line=one_line_never
+org.eclipse.jdt.core.formatter.keep_code_block_on_one_line=one_line_never
+org.eclipse.jdt.core.formatter.keep_else_statement_on_same_line=false
+org.eclipse.jdt.core.formatter.keep_empty_array_initializer_on_one_line=false
+org.eclipse.jdt.core.formatter.keep_enum_constant_declaration_on_one_line=one_line_never
+org.eclipse.jdt.core.formatter.keep_enum_declaration_on_one_line=one_line_never
+org.eclipse.jdt.core.formatter.keep_if_then_body_block_on_one_line=one_line_never
+org.eclipse.jdt.core.formatter.keep_imple_if_on_one_line=false
+org.eclipse.jdt.core.formatter.keep_lambda_body_block_on_one_line=one_line_never
+org.eclipse.jdt.core.formatter.keep_loop_body_block_on_one_line=one_line_never
+org.eclipse.jdt.core.formatter.keep_method_body_on_one_line=one_line_never
+org.eclipse.jdt.core.formatter.keep_record_constructor_on_one_line=one_line_never
+org.eclipse.jdt.core.formatter.keep_record_declaration_on_one_line=one_line_never
+org.eclipse.jdt.core.formatter.keep_simple_do_while_body_on_same_line=false
+org.eclipse.jdt.core.formatter.keep_simple_for_body_on_same_line=false
+org.eclipse.jdt.core.formatter.keep_simple_getter_setter_on_one_line=false
+org.eclipse.jdt.core.formatter.keep_simple_while_body_on_same_line=false
+org.eclipse.jdt.core.formatter.keep_switch_body_block_on_one_line=one_line_never
+org.eclipse.jdt.core.formatter.keep_switch_case_with_arrow_on_one_line=one_line_never
+org.eclipse.jdt.core.formatter.keep_then_statement_on_same_line=false
+org.eclipse.jdt.core.formatter.keep_type_declaration_on_one_line=one_line_never
+org.eclipse.jdt.core.formatter.lineSplit=120
+org.eclipse.jdt.core.formatter.never_indent_block_comments_on_first_column=false
+org.eclipse.jdt.core.formatter.never_indent_line_comments_on_first_column=false
+org.eclipse.jdt.core.formatter.number_of_blank_lines_after_code_block=0
+org.eclipse.jdt.core.formatter.number_of_blank_lines_at_beginning_of_code_block=0
+org.eclipse.jdt.core.formatter.number_of_blank_lines_at_beginning_of_method_body=0
+org.eclipse.jdt.core.formatter.number_of_blank_lines_at_end_of_code_block=0
+org.eclipse.jdt.core.formatter.number_of_blank_lines_at_end_of_method_body=0
+org.eclipse.jdt.core.formatter.number_of_blank_lines_before_code_block=0
+org.eclipse.jdt.core.formatter.number_of_empty_lines_to_preserve=1
+org.eclipse.jdt.core.formatter.parentheses_positions_in_annotation=common_lines
+org.eclipse.jdt.core.formatter.parentheses_positions_in_catch_clause=common_lines
+org.eclipse.jdt.core.formatter.parentheses_positions_in_enum_constant_declaration=common_lines
+org.eclipse.jdt.core.formatter.parentheses_positions_in_for_statment=common_lines
+org.eclipse.jdt.core.formatter.parentheses_positions_in_if_while_statement=common_lines
+org.eclipse.jdt.core.formatter.parentheses_positions_in_lambda_declaration=common_lines
+org.eclipse.jdt.core.formatter.parentheses_positions_in_method_delcaration=common_lines
+org.eclipse.jdt.core.formatter.parentheses_positions_in_method_invocation=common_lines
+org.eclipse.jdt.core.formatter.parentheses_positions_in_record_declaration=common_lines
+org.eclipse.jdt.core.formatter.parentheses_positions_in_switch_statement=common_lines
+org.eclipse.jdt.core.formatter.parentheses_positions_in_try_clause=common_lines
+org.eclipse.jdt.core.formatter.put_empty_statement_on_new_line=true
+org.eclipse.jdt.core.formatter.tabulation.char=tab
+org.eclipse.jdt.core.formatter.tabulation.size=4
+org.eclipse.jdt.core.formatter.text_block_indentation=0
+org.eclipse.jdt.core.formatter.use_on_off_tags=true
+org.eclipse.jdt.core.formatter.use_tabs_only_for_leading_indentations=false
+org.eclipse.jdt.core.formatter.wrap_before_additive_operator=true
+org.eclipse.jdt.core.formatter.wrap_before_assertion_message_operator=true
+org.eclipse.jdt.core.formatter.wrap_before_assignment_operator=false
+org.eclipse.jdt.core.formatter.wrap_before_bitwise_operator=true
+org.eclipse.jdt.core.formatter.wrap_before_conditional_operator=true
+org.eclipse.jdt.core.formatter.wrap_before_logical_operator=true
+org.eclipse.jdt.core.formatter.wrap_before_multiplicative_operator=true
+org.eclipse.jdt.core.formatter.wrap_before_or_operator_multicatch=true
+org.eclipse.jdt.core.formatter.wrap_before_relational_operator=true
+org.eclipse.jdt.core.formatter.wrap_before_shift_operator=true
+org.eclipse.jdt.core.formatter.wrap_before_string_concatenation=true
+org.eclipse.jdt.core.formatter.wrap_before_switch_case_arrow_operator=false
+org.eclipse.jdt.core.formatter.wrap_outer_expressions_when_nested=true
+org.eclipse.jdt.core.javaFormatter=org.eclipse.jdt.core.defaultJavaFormatter
diff --git a/plugins/org.eclipse.fordiac.ide.deployment.opcua/.settings/org.eclipse.jdt.ui.prefs b/plugins/org.eclipse.fordiac.ide.deployment.opcua/.settings/org.eclipse.jdt.ui.prefs
new file mode 100644
index 0000000..0d2727b
--- /dev/null
+++ b/plugins/org.eclipse.fordiac.ide.deployment.opcua/.settings/org.eclipse.jdt.ui.prefs
@@ -0,0 +1,147 @@
+cleanup_settings_version=2
+eclipse.preferences.version=1
+editor_save_participant_org.eclipse.jdt.ui.postsavelistener.cleanup=true
+formatter_profile=org.eclipse.jdt.ui.default.eclipse_profile
+formatter_settings_version=23
+org.eclipse.jdt.ui.text.custom_code_templates=
+sp_cleanup.add_all=false
+sp_cleanup.add_default_serial_version_id=true
+sp_cleanup.add_generated_serial_version_id=false
+sp_cleanup.add_missing_annotations=true
+sp_cleanup.add_missing_deprecated_annotations=true
+sp_cleanup.add_missing_methods=false
+sp_cleanup.add_missing_nls_tags=false
+sp_cleanup.add_missing_override_annotations=true
+sp_cleanup.add_missing_override_annotations_interface_methods=true
+sp_cleanup.add_serial_version_id=false
+sp_cleanup.always_use_blocks=true
+sp_cleanup.always_use_parentheses_in_expressions=true
+sp_cleanup.always_use_this_for_non_static_field_access=false
+sp_cleanup.always_use_this_for_non_static_method_access=false
+sp_cleanup.array_with_curly=false
+sp_cleanup.arrays_fill=false
+sp_cleanup.bitwise_conditional_expression=false
+sp_cleanup.boolean_literal=false
+sp_cleanup.boolean_value_rather_than_comparison=true
+sp_cleanup.break_loop=false
+sp_cleanup.collection_cloning=false
+sp_cleanup.comparing_on_criteria=false
+sp_cleanup.comparison_statement=false
+sp_cleanup.controlflow_merge=false
+sp_cleanup.convert_functional_interfaces=true
+sp_cleanup.convert_to_enhanced_for_loop=true
+sp_cleanup.convert_to_enhanced_for_loop_if_loop_var_used=false
+sp_cleanup.convert_to_switch_expressions=true
+sp_cleanup.correct_indentation=true
+sp_cleanup.do_while_rather_than_while=false
+sp_cleanup.double_negation=false
+sp_cleanup.else_if=true
+sp_cleanup.embedded_if=true
+sp_cleanup.evaluate_nullable=true
+sp_cleanup.extract_increment=true
+sp_cleanup.format_source_code=true
+sp_cleanup.format_source_code_changes_only=false
+sp_cleanup.hash=false
+sp_cleanup.if_condition=false
+sp_cleanup.insert_inferred_type_arguments=false
+sp_cleanup.instanceof=true
+sp_cleanup.instanceof_keyword=false
+sp_cleanup.invert_equals=false
+sp_cleanup.join=false
+sp_cleanup.lazy_logical_operator=false
+sp_cleanup.make_local_variable_final=true
+sp_cleanup.make_parameters_final=true
+sp_cleanup.make_private_fields_final=true
+sp_cleanup.make_type_abstract_if_missing_method=false
+sp_cleanup.make_variable_declarations_final=true
+sp_cleanup.map_cloning=false
+sp_cleanup.merge_conditional_blocks=false
+sp_cleanup.multi_catch=true
+sp_cleanup.never_use_blocks=false
+sp_cleanup.never_use_parentheses_in_expressions=false
+sp_cleanup.no_string_creation=false
+sp_cleanup.no_super=true
+sp_cleanup.number_suffix=true
+sp_cleanup.objects_equals=false
+sp_cleanup.on_save_use_additional_actions=true
+sp_cleanup.one_if_rather_than_duplicate_blocks_that_fall_through=false
+sp_cleanup.operand_factorization=false
+sp_cleanup.organize_imports=true
+sp_cleanup.overridden_assignment=false
+sp_cleanup.overridden_assignment_move_decl=false
+sp_cleanup.plain_replacement=false
+sp_cleanup.precompile_regex=false
+sp_cleanup.primitive_comparison=false
+sp_cleanup.primitive_parsing=false
+sp_cleanup.primitive_rather_than_wrapper=false
+sp_cleanup.primitive_serialization=false
+sp_cleanup.pull_out_if_from_if_else=false
+sp_cleanup.pull_up_assignment=true
+sp_cleanup.push_down_negation=false
+sp_cleanup.qualify_static_field_accesses_with_declaring_class=false
+sp_cleanup.qualify_static_member_accesses_through_instances_with_declaring_class=true
+sp_cleanup.qualify_static_member_accesses_through_subtypes_with_declaring_class=true
+sp_cleanup.qualify_static_member_accesses_with_declaring_class=false
+sp_cleanup.qualify_static_method_accesses_with_declaring_class=false
+sp_cleanup.reduce_indentation=true
+sp_cleanup.redundant_comparator=false
+sp_cleanup.redundant_falling_through_block_end=false
+sp_cleanup.remove_private_constructors=true
+sp_cleanup.remove_redundant_modifiers=true
+sp_cleanup.remove_redundant_semicolons=true
+sp_cleanup.remove_redundant_type_arguments=true
+sp_cleanup.remove_trailing_whitespaces=true
+sp_cleanup.remove_trailing_whitespaces_all=true
+sp_cleanup.remove_trailing_whitespaces_ignore_empty=false
+sp_cleanup.remove_unnecessary_array_creation=true
+sp_cleanup.remove_unnecessary_casts=true
+sp_cleanup.remove_unnecessary_nls_tags=true
+sp_cleanup.remove_unused_imports=true
+sp_cleanup.remove_unused_local_variables=false
+sp_cleanup.remove_unused_method_parameters=false
+sp_cleanup.remove_unused_private_fields=true
+sp_cleanup.remove_unused_private_members=false
+sp_cleanup.remove_unused_private_methods=true
+sp_cleanup.remove_unused_private_types=true
+sp_cleanup.return_expression=false
+sp_cleanup.simplify_lambda_expression_and_method_ref=true
+sp_cleanup.single_used_field=false
+sp_cleanup.sort_members=false
+sp_cleanup.sort_members_all=false
+sp_cleanup.standard_comparison=false
+sp_cleanup.static_inner_class=false
+sp_cleanup.strictly_equal_or_different=false
+sp_cleanup.stringbuffer_to_stringbuilder=false
+sp_cleanup.stringbuilder=false
+sp_cleanup.stringbuilder_for_local_vars=false
+sp_cleanup.stringconcat_stringbuffer_stringbuilder=true
+sp_cleanup.stringconcat_to_textblock=true
+sp_cleanup.substring=false
+sp_cleanup.switch=false
+sp_cleanup.system_property=false
+sp_cleanup.system_property_boolean=false
+sp_cleanup.system_property_file_encoding=false
+sp_cleanup.system_property_file_separator=false
+sp_cleanup.system_property_line_separator=false
+sp_cleanup.system_property_path_separator=false
+sp_cleanup.ternary_operator=false
+sp_cleanup.try_with_resource=false
+sp_cleanup.unlooped_while=false
+sp_cleanup.unreachable_block=false
+sp_cleanup.use_anonymous_class_creation=false
+sp_cleanup.use_autoboxing=false
+sp_cleanup.use_blocks=true
+sp_cleanup.use_blocks_only_for_return_and_throw=false
+sp_cleanup.use_directly_map_method=false
+sp_cleanup.use_lambda=true
+sp_cleanup.use_parentheses_in_expressions=false
+sp_cleanup.use_string_is_blank=false
+sp_cleanup.use_this_for_non_static_field_access=false
+sp_cleanup.use_this_for_non_static_field_access_only_if_necessary=true
+sp_cleanup.use_this_for_non_static_method_access=false
+sp_cleanup.use_this_for_non_static_method_access_only_if_necessary=true
+sp_cleanup.use_unboxing=false
+sp_cleanup.use_var=false
+sp_cleanup.useless_continue=false
+sp_cleanup.useless_return=false
+sp_cleanup.valueof_rather_than_instantiation=false
diff --git a/plugins/org.eclipse.fordiac.ide.deployment.opcua/META-INF/MANIFEST.MF b/plugins/org.eclipse.fordiac.ide.deployment.opcua/META-INF/MANIFEST.MF
new file mode 100644
index 0000000..a6fc2b4
--- /dev/null
+++ b/plugins/org.eclipse.fordiac.ide.deployment.opcua/META-INF/MANIFEST.MF
@@ -0,0 +1,28 @@
+Manifest-Version: 1.0
+Bundle-ManifestVersion: 2
+Bundle-Name: OPCUA Deployment
+Bundle-SymbolicName: org.eclipse.fordiac.ide.deployment.opcua;singleton:=true
+Bundle-Version: 3.0.0.qualifier
+Bundle-Vendor: Eclipse 4diac
+Automatic-Module-Name: org.eclipse.fordiac.ide.deployment.opcua
+Bundle-RequiredExecutionEnvironment: JavaSE-17
+Require-Bundle: org.apache.log4j,
+ org.eclipse.core.runtime,
+ org.eclipse.core.resources,
+ org.eclipse.e4.core.services,
+ org.eclipse.ui,
+ org.eclipse.emf.ecore.xmi;visibility:=reexport,
+ org.eclipse.gef,
+ org.eclipse.milo.sdk-core,
+ org.eclipse.milo.sdk-client,
+ org.eclipse.milo.stack-core,
+ org.eclipse.milo.stack-client,
+ org.eclipse.fordiac.ide.model,
+ org.eclipse.fordiac.ide.model.commands,
+ org.eclipse.fordiac.ide.ui,
+ org.eclipse.fordiac.ide.export,
+ org.eclipse.fordiac.ide.export.forte_lua,
+ org.eclipse.fordiac.ide.systemconfiguration,
+ org.eclipse.fordiac.ide.deployment,
+ org.eclipse.fordiac.ide.deployment.iec61499
+Export-Package: org.eclipse.fordiac.ide.deployment.opcua
diff --git a/plugins/org.eclipse.fordiac.ide.deployment.opcua/build.properties b/plugins/org.eclipse.fordiac.ide.deployment.opcua/build.properties
new file mode 100644
index 0000000..99778cd
--- /dev/null
+++ b/plugins/org.eclipse.fordiac.ide.deployment.opcua/build.properties
@@ -0,0 +1,6 @@
+source.. = src/
+output.. = bin/
+bin.includes = META-INF/,\
+ plugin.xml,\
+ .
+
diff --git a/plugins/org.eclipse.fordiac.ide.deployment.opcua/plugin.xml b/plugins/org.eclipse.fordiac.ide.deployment.opcua/plugin.xml
new file mode 100644
index 0000000..5f6155d
--- /dev/null
+++ b/plugins/org.eclipse.fordiac.ide.deployment.opcua/plugin.xml
@@ -0,0 +1,36 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<?eclipse version="3.2"?>
+<plugin>
+ <extension
+ point="org.eclipse.fordiac.ide.deployment.devicemanagementinteractor">
+ <DeviceManagementInteractorProvider
+ class="org.eclipse.fordiac.ide.deployment.opcua.providers.OPCUADevMgmtInteractorProvider">
+ </DeviceManagementInteractorProvider>
+ </extension>
+ <extension
+ point="org.eclipse.ui.menus">
+ <menuContribution
+ locationURI="popup:org.eclipse.ui.popup.any?endof=org.eclipse.gef.group.edit">
+ <command
+ commandId="org.eclipse.fordiac.ide.discovery.getResources"
+ label="Get Resources"
+ icon="fordiacimage://ICON_DISCOVER"
+ style="push">
+ <visibleWhen
+ checkEnabled="true">
+ <with
+ variable="activeEditorId">
+ <equals
+ value="org.eclipse.fordiac.ide.systemconfiguration.editor.SystemConfigurationEditor">
+ </equals>
+ <and>
+ <reference
+ definitionId="org.eclipse.fordiac.ide.deployment.ui.DeviceDefinition">
+ </reference>
+ </and>
+ </with>
+ </visibleWhen>
+ </command>
+ </menuContribution>
+ </extension>
+</plugin>
\ No newline at end of file
diff --git a/plugins/org.eclipse.fordiac.ide.deployment.opcua/src/org/eclipse/fordiac/ide/deployment/opcua/Messages.java b/plugins/org.eclipse.fordiac.ide.deployment.opcua/src/org/eclipse/fordiac/ide/deployment/opcua/Messages.java
new file mode 100644
index 0000000..577a170
--- /dev/null
+++ b/plugins/org.eclipse.fordiac.ide.deployment.opcua/src/org/eclipse/fordiac/ide/deployment/opcua/Messages.java
@@ -0,0 +1,71 @@
+/*******************************************************************************
+ * Copyright (c) 2022, 2024 Markus Meingast, Johannes Kepler University Linz
+ *
+ * This program and the accompanying materials are made available under the
+ * terms of the Eclipse Public License 2.0 which is available at
+ * http://www.eclipse.org/legal/epl-2.0.
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ * Contributors:
+ * Markus Meingast
+ * - initial API and implementation and/or initial documentation
+ *******************************************************************************/
+package org.eclipse.fordiac.ide.deployment.opcua;
+
+import org.eclipse.osgi.util.NLS;
+
+@SuppressWarnings("squid:S3008") // tell sonar the java naming convention does not make sense for this class
+public final class Messages extends NLS {
+ private static final String BUNDLE_NAME = "org.eclipse.fordiac.ide.deployment.opcua.messages"; //$NON-NLS-1$
+ public static String OPCUADeploymentExecutor_GetMgrIDFailed;
+ public static String OPCUADeploymentExecutor_CreateClientFailed;
+ public static String OPCUADeploymentExecutor_CreateResourceFailed;
+ public static String OPCUADeploymentExecutor_CreateFBInstanceFailed;
+ public static String OPCUADeploymentExecutor_CreateFBInstanceFailedNoTypeFound;
+ public static String OPCUADeploymentExecutor_CreateConnectionFailed;
+ public static String OPCUADeploymentExecutor_CreateConnectionFailedNoDataFound;
+
+ public static String OPCUADeploymentExecutor_WriteDeviceFailed;
+ public static String OPCUADeploymentExecutor_WriteResourceFailed;
+ public static String OPCUADeploymentExecutor_WriteFBFailed;
+ public static String OPCUADeploymentExecutor_ErrorOnWriteRequest;
+
+ public static String OPCUADeploymentExecutor_StartDeviceFailed;
+ public static String OPCUADeploymentExecutor_StartResourceFailed;
+ public static String OPCUADeploymentExecutor_StartFBFailed;
+ public static String OPCUADeploymentExecutor_KillDeviceFailed;
+ public static String OPCUADeploymentExecutor_KillResourceFailed;
+ public static String OPCUADeploymentExecutor_KillFBFailed;
+ public static String OPCUADeploymentExecutor_DeleteDeviceFailed;
+ public static String OPCUADeploymentExecutor_DeleteResourceFailed;
+ public static String OPCUADeploymentExecutor_DeleteFBFailed;
+ public static String OPCUADeploymentExecutor_DeleteConnectionFailed;
+ public static String OPCUADeploymentExecutor_AddWatchFailed;
+ public static String OPCUADeploymentExecutor_ReadWatchesFailed;
+ public static String OPCUADeploymentExecutor_RemoveWatchFailed;
+ public static String OPCUADeploymentExecutor_TriggerEventFailed;
+ public static String OPCUADeploymentExecutor_ForceValueFailed;
+ public static String OPCUADeploymentExecutor_ClearForceFailed;
+ public static String OPCUADeploymentExecutor_ErrorOnMonitoringRequest;
+ public static String OPCUADeploymentExecutor_QueryResourcesFailed;
+ public static String OPCUADeploymentExecutor_ErrorOnQueryResources;
+
+ public static String OPCUADeploymentExecutor_BrowseOPCUAFailed;
+
+ public static String OPCUADeploymentExecutor_RequestFailed;
+ public static String OPCUADeploymentExecutor_RequestInterrupted;
+
+ public static String OPCUADeploymentExecutor_CouldNotConnectToDevice;
+ public static String OPCUADeploymentExecutor_CouldNotDisconnectFromDevice;
+ public static String OPCUADeploymentExecutor_UnknownResponseCode;
+
+ static {
+ // initialize resource bundle
+ NLS.initializeMessages(BUNDLE_NAME, Messages.class);
+ }
+
+ private Messages() {
+ // empty private constructor
+ }
+}
\ No newline at end of file
diff --git a/plugins/org.eclipse.fordiac.ide.deployment.opcua/src/org/eclipse/fordiac/ide/deployment/opcua/OPCUADeploymentExecutor.java b/plugins/org.eclipse.fordiac.ide.deployment.opcua/src/org/eclipse/fordiac/ide/deployment/opcua/OPCUADeploymentExecutor.java
new file mode 100644
index 0000000..7bead6a
--- /dev/null
+++ b/plugins/org.eclipse.fordiac.ide.deployment.opcua/src/org/eclipse/fordiac/ide/deployment/opcua/OPCUADeploymentExecutor.java
@@ -0,0 +1,891 @@
+/*******************************************************************************
+ * Copyright (c) 2022, 2024 Markus Meingast, Johannes Kepler University Linz
+ *
+ * This program and the accompanying materials are made available under the
+ * terms of the Eclipse Public License 2.0 which is available at
+ * http://www.eclipse.org/legal/epl-2.0.
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ * Contributors:
+ * Markus Meingast
+ * - initial API and implementation and/or initial documentation
+ *******************************************************************************/
+package org.eclipse.fordiac.ide.deployment.opcua;
+
+import static org.eclipse.milo.opcua.stack.core.types.builtin.unsigned.Unsigned.uint;
+import static org.eclipse.milo.opcua.stack.core.util.ConversionUtil.toList;
+
+import java.io.IOException;
+import java.io.StringReader;
+import java.text.MessageFormat;
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.Collections;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+import java.util.concurrent.CompletableFuture;
+import java.util.concurrent.ExecutionException;
+
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.emf.ecore.xmi.XMLResource;
+import org.eclipse.emf.ecore.xmi.impl.XMLResourceImpl;
+import org.eclipse.fordiac.ide.deployment.data.ConnectionDeploymentData;
+import org.eclipse.fordiac.ide.deployment.data.FBDeploymentData;
+import org.eclipse.fordiac.ide.deployment.devResponse.DevResponseFactory;
+import org.eclipse.fordiac.ide.deployment.devResponse.Response;
+import org.eclipse.fordiac.ide.deployment.exceptions.DeploymentException;
+import org.eclipse.fordiac.ide.deployment.iec61499.ResponseMapping;
+import org.eclipse.fordiac.ide.deployment.interactors.ForteTypeNameCreator;
+import org.eclipse.fordiac.ide.deployment.interactors.IDeviceManagementInteractor;
+import org.eclipse.fordiac.ide.deployment.monitoringbase.MonitoringBaseElement;
+import org.eclipse.fordiac.ide.deployment.opcua.helpers.Constants;
+import org.eclipse.fordiac.ide.deployment.util.DeploymentHelper;
+import org.eclipse.fordiac.ide.deployment.util.IDeploymentListener;
+import org.eclipse.fordiac.ide.deployment.util.IDeploymentListener2;
+import org.eclipse.fordiac.ide.model.libraryElement.Device;
+import org.eclipse.fordiac.ide.model.libraryElement.FBNetworkElement;
+import org.eclipse.fordiac.ide.model.libraryElement.IInterfaceElement;
+import org.eclipse.fordiac.ide.model.libraryElement.Resource;
+import org.eclipse.fordiac.ide.model.libraryElement.VarDeclaration;
+import org.eclipse.fordiac.ide.ui.FordiacLogHelper;
+import org.eclipse.milo.opcua.sdk.client.OpcUaClient;
+import org.eclipse.milo.opcua.sdk.client.SessionActivityListener;
+import org.eclipse.milo.opcua.sdk.client.api.UaSession;
+import org.eclipse.milo.opcua.sdk.client.api.config.OpcUaClientConfigBuilder;
+import org.eclipse.milo.opcua.stack.client.DiscoveryClient;
+import org.eclipse.milo.opcua.stack.core.Identifiers;
+import org.eclipse.milo.opcua.stack.core.UaException;
+import org.eclipse.milo.opcua.stack.core.types.builtin.NodeId;
+import org.eclipse.milo.opcua.stack.core.types.builtin.StatusCode;
+import org.eclipse.milo.opcua.stack.core.types.builtin.Variant;
+import org.eclipse.milo.opcua.stack.core.types.enumerated.BrowseDirection;
+import org.eclipse.milo.opcua.stack.core.types.enumerated.BrowseResultMask;
+import org.eclipse.milo.opcua.stack.core.types.enumerated.NodeClass;
+import org.eclipse.milo.opcua.stack.core.types.structured.BrowseDescription;
+import org.eclipse.milo.opcua.stack.core.types.structured.CallMethodRequest;
+import org.eclipse.milo.opcua.stack.core.types.structured.CallMethodResult;
+import org.eclipse.milo.opcua.stack.core.types.structured.CallResponse;
+import org.eclipse.milo.opcua.stack.core.types.structured.EndpointDescription;
+import org.eclipse.milo.opcua.stack.core.types.structured.ReferenceDescription;
+import org.xml.sax.InputSource;
+
+public class OPCUADeploymentExecutor implements IDeviceManagementInteractor {
+
+ public enum ConnectionStatus {
+ CONNECTED, DISCONNECTED, NOT_CONNECTED
+ }
+
+ private final OpcUaClient client;
+ private ConnectionStatus connectionStatus;
+ private final Device device;
+ private NodeId resourceNode;
+
+ private final List<CallMethodRequest> requests = new ArrayList<>();
+ private final List<String> requestMessages = new ArrayList<>();
+ private boolean combinedRequest = false;
+
+ private final List<IDeploymentListener> listeners = new ArrayList<>();
+ private final Map<String, NodeId> availableResources = new HashMap<>();
+
+ private final ResponseMapping respMapping = new ResponseMapping();
+
+ public OPCUADeploymentExecutor(final Device dev) {
+ this.device = dev;
+ this.client = createClient();
+ this.resourceNode = null;
+ this.connectionStatus = ConnectionStatus.NOT_CONNECTED;
+ }
+
+ protected OpcUaClient createClient() {
+ try {
+ String mgrId = DeploymentHelper.getMgrID(device);
+ mgrId = mgrId.substring(1, mgrId.length() - 1);
+ final List<EndpointDescription> endpoints = DiscoveryClient.getEndpoints(mgrId).get();
+ final OpcUaClientConfigBuilder cfg = new OpcUaClientConfigBuilder();
+
+ cfg.setEndpoint(endpoints.get(0));
+ final OpcUaClient newClient = OpcUaClient.create(cfg.build());
+
+ newClient.addSessionActivityListener(new SessionActivityListener() {
+ @Override
+ public void onSessionActive(final UaSession session) {
+ SessionActivityListener.super.onSessionActive(session);
+ connectionStatus = ConnectionStatus.CONNECTED;
+ }
+
+ @Override
+ public void onSessionInactive(final UaSession session) {
+ SessionActivityListener.super.onSessionInactive(session);
+ connectionStatus = ConnectionStatus.DISCONNECTED;
+ }
+ });
+ return newClient;
+ } catch (final DeploymentException e) {
+ FordiacLogHelper
+ .logError(MessageFormat.format(Messages.OPCUADeploymentExecutor_GetMgrIDFailed, e.getMessage()), e);
+ } catch (final ExecutionException | UaException e) {
+ FordiacLogHelper.logError(
+ MessageFormat.format(Messages.OPCUADeploymentExecutor_CreateClientFailed, e.getMessage()), e);
+ } catch (final InterruptedException e) {
+ Thread.currentThread().interrupt();
+ FordiacLogHelper.logError(
+ MessageFormat.format(Messages.OPCUADeploymentExecutor_RequestInterrupted, e.getMessage()), e);
+ }
+ return null;
+ }
+
+ protected Device getDevice() {
+ return device;
+ }
+
+ @Override
+ public boolean isConnected() {
+ return connectionStatus == ConnectionStatus.CONNECTED;
+ }
+
+ @Override
+ public void connect() throws DeploymentException {
+ if (client == null) {
+ throw new DeploymentException(Messages.OPCUADeploymentExecutor_CouldNotConnectToDevice);
+ }
+ try {
+ client.connect().get();
+ for (final IDeploymentListener listener : listeners) {
+ listener.connectionOpened(device);
+ }
+ } catch (final ExecutionException e) {
+ throw new DeploymentException(Messages.OPCUADeploymentExecutor_CouldNotConnectToDevice, e);
+ } catch (final InterruptedException e) {
+ Thread.currentThread().interrupt();
+ FordiacLogHelper.logError(
+ MessageFormat.format(Messages.OPCUADeploymentExecutor_RequestInterrupted, e.getMessage()), e);
+ }
+ }
+
+ @Override
+ public void disconnect() throws DeploymentException {
+ if (isConnected()) {
+ try {
+ client.disconnect().get();
+ for (final IDeploymentListener listener : listeners) {
+ listener.connectionClosed(device);
+ }
+ } catch (final ExecutionException e) {
+ throw new DeploymentException(Messages.OPCUADeploymentExecutor_CouldNotDisconnectFromDevice, e);
+ } catch (final InterruptedException e) {
+ Thread.currentThread().interrupt();
+ FordiacLogHelper.logError(
+ MessageFormat.format(Messages.OPCUADeploymentExecutor_RequestInterrupted, e.getMessage()), e);
+ }
+ }
+ }
+
+ /**
+ * Sends single request
+ *
+ * @param destination - Only needed for displaying on Deployment Console
+ **/
+ private synchronized CompletableFuture<CallMethodResult> sendREQ(final String destination,
+ final CallMethodRequest request, final String message) {
+ return client.call(request).thenCompose(result -> {
+ if (!result.getStatusCode().isGood()) {
+ displayCommand(result.getStatusCode(), destination, message);
+ }
+ return CompletableFuture.completedFuture(result);
+ });
+ }
+
+ /**
+ * Sends list of requests
+ *
+ * @param destination - Only needed for displaying on Deployment Console
+ */
+ private synchronized List<CallMethodResult> sendREQ(final String destination) throws IOException {
+ CallResponse response;
+ try {
+ response = client.call(requests).get();
+ } catch (final ExecutionException e) {
+ throw new IOException(MessageFormat.format(Messages.OPCUADeploymentExecutor_RequestFailed, destination), e);
+ } catch (final InterruptedException e) {
+ Thread.currentThread().interrupt();
+ FordiacLogHelper.logError(
+ MessageFormat.format(Messages.OPCUADeploymentExecutor_RequestInterrupted, e.getMessage()), e);
+ return Collections.emptyList();
+ }
+ return handleResponse(response, destination);
+ }
+
+ /************************************************************************
+ * Listener commands
+ ************************************************************************/
+
+ @Override
+ public void addDeploymentListener(final IDeploymentListener listener) {
+ if (!listeners.contains(listener)) {
+ listeners.add(listener);
+ }
+ }
+
+ @Override
+ public void removeDeploymentListener(final IDeploymentListener listener) {
+ if (listeners.contains(listener)) {
+ listeners.remove(listener);
+ }
+ }
+
+ /**************************************************************************
+ * Management commands
+ **************************************************************************/
+
+ @Override
+ public void createResource(final Resource resource) throws DeploymentException {
+ combinedRequest = true;
+ final String resName = resource.getName();
+ final String resType = resource.getTypeName();
+ final CallMethodRequest request = new CallMethodRequest(Constants.MGMT_NODE, Constants.CREATE_RESOURCE_NODE,
+ new Variant[] { new Variant(resName), new Variant(resType) });
+ final String message = MessageFormat.format(Constants.CREATE_RESOURCE_INSTANCE, resName, resType);
+ CallMethodResult result = null;
+ try {
+ result = sendREQ(resName, request, message).get();
+ } catch (final ExecutionException e) {
+ throw new DeploymentException(
+ MessageFormat.format(Messages.OPCUADeploymentExecutor_CreateResourceFailed, resName), e);
+ } catch (final InterruptedException e) {
+ Thread.currentThread().interrupt();
+ FordiacLogHelper.logError(
+ MessageFormat.format(Messages.OPCUADeploymentExecutor_RequestInterrupted, e.getMessage()), e);
+ }
+ if (result != null) {
+ resourceNode = processResult(result);
+ }
+ }
+
+ @Override
+ public void writeResourceParameter(final Resource resource, final String parameter, final String value)
+ throws DeploymentException {
+ final String resName = resource.getName();
+ final CallMethodRequest request = new CallMethodRequest(Constants.MGMT_NODE, Constants.WRITE_RESOURCE_NODE,
+ new Variant[] { new Variant(resName), new Variant(value) });
+ final String message = MessageFormat.format(Constants.WRITE_RESOURCE_PARAMETER, value);
+ try {
+ sendREQ(resName, request, message).get();
+ } catch (final ExecutionException e) {
+ throw new DeploymentException(
+ MessageFormat.format(Messages.OPCUADeploymentExecutor_WriteResourceFailed, resName), e);
+ } catch (final InterruptedException e) {
+ Thread.currentThread().interrupt();
+ FordiacLogHelper.logError(
+ MessageFormat.format(Messages.OPCUADeploymentExecutor_RequestInterrupted, e.getMessage()), e);
+ }
+ }
+
+ @Override
+ public void writeDeviceParameter(final Device device, final String parameter, final String value)
+ throws DeploymentException {
+ final String devName = device.getName();
+ final CallMethodRequest request = new CallMethodRequest(Constants.MGMT_NODE, Constants.WRITE_DEVICE_NODE,
+ new Variant[] { new Variant(value) });
+ final String message = MessageFormat.format(Constants.WRITE_DEVICE_PARAMETER, value);
+ try {
+ sendREQ(devName, request, message).get();
+ } catch (final ExecutionException e) {
+ throw new DeploymentException(
+ MessageFormat.format(Messages.OPCUADeploymentExecutor_WriteDeviceFailed, devName), e);
+ } catch (final InterruptedException e) {
+ Thread.currentThread().interrupt();
+ FordiacLogHelper.logError(
+ MessageFormat.format(Messages.OPCUADeploymentExecutor_RequestInterrupted, e.getMessage()), e);
+ }
+ }
+
+ @Override
+ public void createFBInstance(final FBDeploymentData fbData, final Resource res) throws DeploymentException {
+ if (resourceNode == null) {
+ return;
+ }
+ final String fbType = ForteTypeNameCreator.getForteTypeName(fbData.getFb());
+ final String fullFbName = MessageFormat.format(Constants.FB_NAME_FORMAT, fbData.getPrefix(),
+ fbData.getFb().getName());
+ if (fbType.isEmpty()) {
+
+ throw new DeploymentException(MessageFormat
+ .format(Messages.OPCUADeploymentExecutor_CreateFBInstanceFailedNoTypeFound, fullFbName));
+ }
+ final CallMethodRequest request = new CallMethodRequest(resourceNode, Constants.CREATE_FB_NODE,
+ new Variant[] { new Variant(fullFbName), new Variant(fbType) });
+ final String message = MessageFormat.format(Constants.CREATE_FB_INSTANCE, fullFbName, fbType);
+ requests.add(request);
+ requestMessages.add(message);
+ }
+
+ @Override
+ public void writeFBParameter(final Resource resource, final String value, final FBDeploymentData fbData,
+ final VarDeclaration varDecl) throws DeploymentException {
+ final String destination = MessageFormat.format(Constants.FB_PORT_NAME_FORMAT, fbData.getPrefix(),
+ fbData.getFb().getName(), varDecl.getName());
+ final String message = MessageFormat.format(Constants.WRITE_FB_PARAMETER, destination, value);
+ if (combinedRequest) { // Add request to list of requests
+ writeFBParameterCombined(destination, value, message);
+ } else { // Execute single request
+ writeFBParameterSingle(resource.getName(), destination, value, message);
+ }
+ }
+
+ @Override
+ public void createConnection(final Resource res, final ConnectionDeploymentData connData)
+ throws DeploymentException {
+ if (resourceNode == null) {
+ return;
+ }
+ final IInterfaceElement sourceData = connData.getSource();
+ final IInterfaceElement destinationData = connData.getDestination();
+
+ if (sourceData == null || sourceData.getFBNetworkElement() == null || destinationData == null
+ || destinationData.getFBNetworkElement() == null) {
+ throw new DeploymentException(MessageFormat
+ .format(Messages.OPCUADeploymentExecutor_CreateConnectionFailedNoDataFound, res.getName()));
+ }
+
+ final FBNetworkElement sourceFB = sourceData.getFBNetworkElement();
+ final FBNetworkElement destinationFB = destinationData.getFBNetworkElement();
+ final String source = MessageFormat.format(Constants.FB_PORT_NAME_FORMAT, connData.getSourcePrefix(),
+ sourceFB.getName(), sourceData.getName());
+ final String destination = MessageFormat.format(Constants.FB_PORT_NAME_FORMAT, connData.getDestinationPrefix(),
+ destinationFB.getName(), destinationData.getName());
+ final CallMethodRequest request = new CallMethodRequest(resourceNode, Constants.CREATE_CONNECTION_NODE,
+ new Variant[] { new Variant(source), new Variant(destination) });
+ final String message = MessageFormat.format(Constants.CREATE_CONNECTION, destination, source);
+ requests.add(request);
+ requestMessages.add(message);
+ }
+
+ @Override
+ public void startFB(final Resource res, final FBDeploymentData fbData) throws DeploymentException {
+ if (resourceNode == null) {
+ return;
+ }
+ final String fullFbName = MessageFormat.format(Constants.FB_NAME_FORMAT, fbData.getPrefix(),
+ fbData.getFb().getName());
+ final CallMethodRequest request = new CallMethodRequest(resourceNode, Constants.START_FB_NODE,
+ new Variant[] { new Variant(fullFbName) });
+ final String message = MessageFormat.format(Constants.START_FB, fullFbName);
+ try {
+ sendREQ(res.getName(), request, message).get();
+ } catch (final ExecutionException e) {
+ throw new DeploymentException(
+ MessageFormat.format(Messages.OPCUADeploymentExecutor_StartFBFailed, fullFbName), e);
+ } catch (final InterruptedException e) {
+ Thread.currentThread().interrupt();
+ FordiacLogHelper.logError(
+ MessageFormat.format(Messages.OPCUADeploymentExecutor_RequestInterrupted, e.getMessage()), e);
+ }
+ }
+
+ @Override
+ public void startResource(final Resource resource) throws DeploymentException {
+ if (resourceNode == null) {
+ return;
+ }
+ final String resourceName = resource.getName();
+ final CallMethodRequest request = new CallMethodRequest(Constants.MGMT_NODE, Constants.START_RESOURCE_NODE,
+ new Variant[] { new Variant(resourceName) });
+ final String message = MessageFormat.format(Constants.START_RESOURCE, resourceName);
+ requests.add(request);
+ requestMessages.add(message);
+
+ try {
+ sendREQ(resourceName);
+ } catch (final IOException e) {
+ throw new DeploymentException(
+ MessageFormat.format(Messages.OPCUADeploymentExecutor_StartResourceFailed, resourceName), e);
+ }
+ requests.clear();
+ requestMessages.clear();
+ combinedRequest = false;
+ }
+
+ @Override
+ public void startDevice(final Device dev) throws DeploymentException {
+ final String devName = dev.getName();
+ final CallMethodRequest request = new CallMethodRequest(Constants.MGMT_NODE, Constants.START_DEVICE_NODE,
+ new Variant[] {});
+ final String message = MessageFormat.format(Constants.START_DEVICE, devName);
+ try {
+ sendREQ(devName, request, message).get();
+ } catch (final ExecutionException e) {
+ throw new DeploymentException(
+ MessageFormat.format(Messages.OPCUADeploymentExecutor_StartDeviceFailed, devName), e);
+ } catch (final InterruptedException e) {
+ Thread.currentThread().interrupt();
+ FordiacLogHelper.logError(
+ MessageFormat.format(Messages.OPCUADeploymentExecutor_RequestInterrupted, e.getMessage()), e);
+ }
+ }
+
+ @Override
+ public void deleteResource(final String resName) throws DeploymentException {
+ final CallMethodRequest killRequest = new CallMethodRequest(Constants.MGMT_NODE, Constants.KILL_RESOURCE_NODE,
+ new Variant[] { new Variant(resName) });
+ String message = MessageFormat.format(Constants.KILL_RESOURCE, resName);
+ try {
+ sendREQ(resName, killRequest, message).get();
+ } catch (final ExecutionException e) {
+ throw new DeploymentException(
+ MessageFormat.format(Messages.OPCUADeploymentExecutor_KillResourceFailed, resName), e);
+ } catch (final InterruptedException e) {
+ Thread.currentThread().interrupt();
+ FordiacLogHelper.logError(
+ MessageFormat.format(Messages.OPCUADeploymentExecutor_RequestInterrupted, e.getMessage()), e);
+ }
+
+ final CallMethodRequest deleteRequest = new CallMethodRequest(Constants.MGMT_NODE,
+ Constants.DELETE_RESOURCE_NODE, new Variant[] { new Variant(resName) });
+ message = MessageFormat.format(Constants.DELETE_RESOURCE, resName);
+ try {
+ sendREQ(resName, deleteRequest, message).get();
+ } catch (final ExecutionException e) {
+ throw new DeploymentException(
+ MessageFormat.format(Messages.OPCUADeploymentExecutor_DeleteResourceFailed, resName), e);
+ } catch (final InterruptedException e) {
+ Thread.currentThread().interrupt();
+ FordiacLogHelper.logError(
+ MessageFormat.format(Messages.OPCUADeploymentExecutor_RequestInterrupted, e.getMessage()), e);
+ }
+ }
+
+ @Override
+ public void deleteFB(final Resource res, final FBDeploymentData fbData) throws DeploymentException {
+ if (!getResourcesHandle()) {
+ return;
+ }
+
+ final String fullFbName = MessageFormat.format(Constants.FB_NAME_FORMAT, fbData.getPrefix(),
+ fbData.getFb().getName());
+ final String resName = res.getName();
+ final CallMethodRequest request = new CallMethodRequest(availableResources.get(resName),
+ Constants.DELETE_FB_NODE, new Variant[] { new Variant(fullFbName), });
+ final String message = MessageFormat.format(Constants.DELETE_FB_INSTANCE, fullFbName);
+ try {
+ sendREQ(resName, request, message).get();
+ } catch (final ExecutionException e) {
+ throw new DeploymentException(
+ MessageFormat.format(Messages.OPCUADeploymentExecutor_DeleteFBFailed, fullFbName), e);
+ } catch (final InterruptedException e) {
+ Thread.currentThread().interrupt();
+ FordiacLogHelper.logError(
+ MessageFormat.format(Messages.OPCUADeploymentExecutor_RequestInterrupted, e.getMessage()), e);
+ }
+ }
+
+ @Override
+ public void deleteConnection(final Resource res, final ConnectionDeploymentData connData)
+ throws DeploymentException {
+ if (!getResourcesHandle()) {
+ return;
+ }
+
+ final IInterfaceElement sourceData = connData.getSource();
+ final IInterfaceElement destinationData = connData.getDestination();
+
+ if (sourceData == null || sourceData.getFBNetworkElement() == null || destinationData == null
+ || destinationData.getFBNetworkElement() == null) {
+ throw new DeploymentException(Messages.OPCUADeploymentExecutor_CreateConnectionFailedNoDataFound);
+ }
+
+ final FBNetworkElement sourceFB = sourceData.getFBNetworkElement();
+ final FBNetworkElement destinationFB = destinationData.getFBNetworkElement();
+ final String source = MessageFormat.format(Constants.FB_PORT_NAME_FORMAT, connData.getSourcePrefix(),
+ sourceFB.getName(), sourceData.getName());
+ final String destination = MessageFormat.format(Constants.FB_PORT_NAME_FORMAT, connData.getDestinationPrefix(),
+ destinationFB.getName(), destinationData.getName());
+ final String resName = res.getName();
+ final CallMethodRequest request = new CallMethodRequest(availableResources.get(resName),
+ Constants.DELETE_CONNECTION_NODE, new Variant[] { new Variant(source), new Variant(destination) });
+ final String message = MessageFormat.format(Constants.DELETE_CONNECTION, destination, source);
+ try {
+ sendREQ(resName, request, message).get();
+ } catch (final ExecutionException e) {
+ throw new DeploymentException(
+ MessageFormat.format(Messages.OPCUADeploymentExecutor_DeleteConnectionFailed, destination, source),
+ e);
+ } catch (final InterruptedException e) {
+ Thread.currentThread().interrupt();
+ FordiacLogHelper.logError(
+ MessageFormat.format(Messages.OPCUADeploymentExecutor_RequestInterrupted, e.getMessage()), e);
+ }
+ }
+
+ @Override
+ public void killDevice(final Device dev) throws DeploymentException {
+ final String devName = dev.getName();
+ final CallMethodRequest request = new CallMethodRequest(Constants.MGMT_NODE, Constants.KILL_DEVICE_NODE,
+ new Variant[] {});
+ final String message = MessageFormat.format(Constants.KILL_DEVICE, devName);
+ try {
+ sendREQ(devName, request, message).get();
+ } catch (final ExecutionException e) {
+ throw new DeploymentException(
+ MessageFormat.format(Messages.OPCUADeploymentExecutor_KillDeviceFailed, devName), e);
+ } catch (final InterruptedException e) {
+ Thread.currentThread().interrupt();
+ FordiacLogHelper.logError(
+ MessageFormat.format(Messages.OPCUADeploymentExecutor_RequestInterrupted, e.getMessage()), e);
+ }
+ }
+
+ @Override
+ public List<org.eclipse.fordiac.ide.deployment.devResponse.Resource> queryResources() throws DeploymentException {
+ final CallMethodRequest request = new CallMethodRequest(Constants.MGMT_NODE, Constants.QUERY_RESOURCES_NODE,
+ new Variant[] {});
+ final String message = Constants.QUERY_RESOURCES;
+ try {
+ final CallMethodResult result = sendREQ("", request, message).get(); //$NON-NLS-1$
+ final Response response = parseResponse(result, Constants.QUERY_RESPONSE);
+ if (response != Constants.EMPTY_RESPONSE) {
+ return getQueryElements(response);
+ }
+ FordiacLogHelper.logError(MessageFormat.format(Messages.OPCUADeploymentExecutor_ErrorOnQueryResources,
+ getIEC61499Status(result.getStatusCode())));
+ } catch (final IOException | ExecutionException e) {
+ throw new DeploymentException(Messages.OPCUADeploymentExecutor_QueryResourcesFailed, e);
+ } catch (final InterruptedException e) {
+ Thread.currentThread().interrupt();
+ FordiacLogHelper.logError(
+ MessageFormat.format(Messages.OPCUADeploymentExecutor_RequestInterrupted, e.getMessage()), e);
+ }
+ return Collections.emptyList();
+ }
+
+ @Override
+ public Response readWatches() throws DeploymentException {
+ final CallMethodRequest request = new CallMethodRequest(Constants.MGMT_NODE, Constants.READ_WATCHES_NODE,
+ new Variant[] {});
+ final String message = Constants.READ_WATCHES;
+ try {
+ final CallMethodResult result = sendREQ("", request, message).get(); //$NON-NLS-1$
+ return parseResponse(result, Constants.WATCHES_RESPONSE);
+ } catch (final IOException | ExecutionException e) {
+ throw new DeploymentException(Messages.OPCUADeploymentExecutor_ReadWatchesFailed, e);
+ } catch (final InterruptedException e) {
+ Thread.currentThread().interrupt();
+ FordiacLogHelper.logError(
+ MessageFormat.format(Messages.OPCUADeploymentExecutor_RequestInterrupted, e.getMessage()), e);
+ return Constants.EMPTY_RESPONSE;
+ }
+ }
+
+ @Override
+ public void addWatch(final MonitoringBaseElement element) throws DeploymentException {
+ if (availableResources.isEmpty() && !getResourcesHandle()) {
+ return;
+ }
+ final String fullFbName = element.getQualifiedString();
+ final String resName = element.getResourceString();
+ final CallMethodRequest request = new CallMethodRequest(availableResources.get(resName),
+ Constants.ADD_WATCH_NODE, new Variant[] { new Variant(fullFbName) });
+ final String message = MessageFormat.format(Constants.ADD_WATCH, fullFbName);
+ CallMethodResult result;
+ try {
+ result = sendREQ(resName, request, message).get();
+ } catch (final ExecutionException e) {
+ throw new DeploymentException(
+ MessageFormat.format(Messages.OPCUADeploymentExecutor_AddWatchFailed, fullFbName), e);
+ } catch (final InterruptedException e) {
+ Thread.currentThread().interrupt();
+ FordiacLogHelper.logError(
+ MessageFormat.format(Messages.OPCUADeploymentExecutor_RequestInterrupted, e.getMessage()), e);
+ return;
+ }
+ final StatusCode opcuaStatus = result.getStatusCode();
+ logResponseStatus(opcuaStatus, resName, fullFbName, Messages.OPCUADeploymentExecutor_ErrorOnMonitoringRequest);
+ element.setOffline(Constants.MGM_RESPONSE_UNKNOWN.equals(getIEC61499Status(opcuaStatus)));
+ }
+
+ @Override
+ public void removeWatch(final MonitoringBaseElement element) throws DeploymentException {
+ if (availableResources.isEmpty() && !getResourcesHandle()) {
+ return;
+ }
+ final String fullFbName = element.getQualifiedString();
+ final String resName = element.getResourceString();
+ final CallMethodRequest request = new CallMethodRequest(availableResources.get(resName),
+ Constants.REMOVE_WATCH_NODE, new Variant[] { new Variant(fullFbName) });
+ final String message = MessageFormat.format(Constants.REMOVE_WATCH, fullFbName);
+ CallMethodResult result;
+ try {
+ result = sendREQ(resName, request, message).get();
+ } catch (final ExecutionException e) {
+ throw new DeploymentException(
+ MessageFormat.format(Messages.OPCUADeploymentExecutor_RemoveWatchFailed, fullFbName), e);
+ } catch (final InterruptedException e) {
+ Thread.currentThread().interrupt();
+ FordiacLogHelper.logError(
+ MessageFormat.format(Messages.OPCUADeploymentExecutor_RequestInterrupted, e.getMessage()), e);
+ return;
+ }
+ final StatusCode opcuaStatus = result.getStatusCode();
+ logResponseStatus(opcuaStatus, resName, fullFbName, Messages.OPCUADeploymentExecutor_ErrorOnMonitoringRequest);
+ element.setOffline(Constants.MGM_RESPONSE_UNKNOWN.equals(getIEC61499Status(opcuaStatus)));
+ }
+
+ @Override
+ public void triggerEvent(final MonitoringBaseElement element) throws DeploymentException {
+ if (availableResources.isEmpty() && !getResourcesHandle()) {
+ return;
+ }
+ final String fullFbName = element.getQualifiedString();
+ final String resName = element.getResourceString();
+ final CallMethodRequest request = new CallMethodRequest(availableResources.get(resName),
+ Constants.TRIGGER_EVENT_NODE, new Variant[] { new Variant(fullFbName) });
+ final String message = MessageFormat.format(Constants.TRIGGER_EVENT, fullFbName);
+ CallMethodResult result;
+ try {
+ result = sendREQ(resName, request, message).get();
+ } catch (final ExecutionException e) {
+ throw new DeploymentException(
+ MessageFormat.format(Messages.OPCUADeploymentExecutor_TriggerEventFailed, fullFbName), e);
+ } catch (final InterruptedException e) {
+ Thread.currentThread().interrupt();
+ FordiacLogHelper.logError(
+ MessageFormat.format(Messages.OPCUADeploymentExecutor_RequestInterrupted, e.getMessage()), e);
+ return;
+ }
+ logResponseStatus(result.getStatusCode(), resName, fullFbName,
+ Messages.OPCUADeploymentExecutor_ErrorOnMonitoringRequest);
+ }
+
+ @Override
+ public void forceValue(final MonitoringBaseElement element, final String value) throws DeploymentException {
+ if (availableResources.isEmpty() && !getResourcesHandle()) {
+ return;
+ }
+ final String fullFbName = element.getQualifiedString();
+ final String resName = element.getResourceString();
+ final CallMethodRequest request = new CallMethodRequest(availableResources.get(resName),
+ Constants.FORCE_VALUE_NODE, new Variant[] { new Variant(fullFbName), new Variant(value) });
+ final String message = MessageFormat.format(Constants.FORCE_VALUE, fullFbName);
+ CallMethodResult result;
+ try {
+ result = sendREQ(resName, request, message).get();
+ } catch (final ExecutionException e) {
+ throw new DeploymentException(
+ MessageFormat.format(Messages.OPCUADeploymentExecutor_ForceValueFailed, fullFbName), e);
+ } catch (final InterruptedException e) {
+ Thread.currentThread().interrupt();
+ FordiacLogHelper.logError(
+ MessageFormat.format(Messages.OPCUADeploymentExecutor_RequestInterrupted, e.getMessage()), e);
+ return;
+ }
+ logResponseStatus(result.getStatusCode(), resName, fullFbName,
+ Messages.OPCUADeploymentExecutor_ErrorOnMonitoringRequest);
+ }
+
+ @Override
+ public void clearForce(final MonitoringBaseElement element) throws DeploymentException {
+ if (availableResources.isEmpty() && !getResourcesHandle()) {
+ return;
+ }
+ final String fullFbName = element.getQualifiedString();
+ final String resName = element.getResourceString();
+ final CallMethodRequest request = new CallMethodRequest(availableResources.get(resName),
+ Constants.CLEAR_FORCE_NODE, new Variant[] { new Variant(fullFbName) });
+ final String message = MessageFormat.format(Constants.CLEAR_FORCE, fullFbName);
+ CallMethodResult result;
+ try {
+ result = sendREQ(resName, request, message).get();
+ } catch (final ExecutionException e) {
+ throw new DeploymentException(
+ MessageFormat.format(Messages.OPCUADeploymentExecutor_ClearForceFailed, fullFbName), e);
+ } catch (final InterruptedException e) {
+ Thread.currentThread().interrupt();
+ FordiacLogHelper.logError(
+ MessageFormat.format(Messages.OPCUADeploymentExecutor_RequestInterrupted, e.getMessage()), e);
+ return;
+ }
+ logResponseStatus(result.getStatusCode(), resName, fullFbName,
+ Messages.OPCUADeploymentExecutor_ErrorOnMonitoringRequest);
+ }
+
+ /**************************************************************************
+ * Helper Methods
+ **************************************************************************/
+
+ /**
+ * Browses Resource Nodes and caches available Resources
+ *
+ * @return CompletableFuture of Browse result status
+ */
+ private CompletableFuture<StatusCode> browseResources() {
+ final BrowseDescription browse = new BrowseDescription(Constants.MGMT_NODE, BrowseDirection.Forward,
+ Identifiers.References, Boolean.TRUE, uint(NodeClass.Object.getValue()),
+ uint(BrowseResultMask.All.getValue()));
+ return client.browse(browse).thenCompose(result -> {
+ final List<ReferenceDescription> references = toList(result.getReferences());
+ for (final ReferenceDescription rd : references) {
+ rd.getNodeId().toNodeId(client.getNamespaceTable())
+ .ifPresent(nodeId -> availableResources.put(rd.getBrowseName().getName(), nodeId));
+ }
+ return CompletableFuture.completedFuture(result.getStatusCode());
+ });
+ }
+
+ private boolean getResourcesHandle() throws DeploymentException {
+ StatusCode status = StatusCode.BAD;
+ try {
+ status = browseResources().get();
+ } catch (final ExecutionException e) {
+ throw new DeploymentException(Messages.OPCUADeploymentExecutor_BrowseOPCUAFailed);
+ } catch (final InterruptedException e) {
+ Thread.currentThread().interrupt();
+ FordiacLogHelper.logError(
+ MessageFormat.format(Messages.OPCUADeploymentExecutor_RequestInterrupted, e.getMessage()), e);
+ }
+ return status.isGood() && !availableResources.isEmpty();
+ }
+
+ private void writeFBParameterCombined(final String destination, final String value, final String message) {
+ if (resourceNode == null) {
+ return;
+ }
+ final CallMethodRequest request = new CallMethodRequest(resourceNode, Constants.WRITE_FB_NODE,
+ new Variant[] { new Variant(destination), new Variant(value) });
+ requests.add(request);
+ requestMessages.add(message);
+ }
+
+ private void writeFBParameterSingle(final String resName, final String destination, final String value,
+ final String message) throws DeploymentException {
+ if (!availableResources.containsKey(resName) && !getResourcesHandle()) {
+ return;
+ }
+ final CallMethodRequest request = new CallMethodRequest(availableResources.get(resName),
+ Constants.WRITE_FB_NODE, new Variant[] { new Variant(destination), new Variant(value) });
+ CallMethodResult result;
+ try {
+ result = sendREQ(resName, request, message).get();
+ } catch (final ExecutionException e) {
+ throw new DeploymentException(
+ MessageFormat.format(Messages.OPCUADeploymentExecutor_WriteFBFailed, destination, value), e);
+ } catch (final InterruptedException e) {
+ Thread.currentThread().interrupt();
+ FordiacLogHelper.logError(
+ MessageFormat.format(Messages.OPCUADeploymentExecutor_RequestInterrupted, e.getMessage()), e);
+ return;
+ }
+ logResponseStatus(result.getStatusCode(), resName, destination,
+ Messages.OPCUADeploymentExecutor_ErrorOnWriteRequest);
+ }
+
+ private String getDestinationInfo(final String destination) {
+ String info = client.getConfig().getEndpoint().getEndpointUrl();
+ if (!destination.equals("")) { //$NON-NLS-1$
+ info += ": " + destination; //$NON-NLS-1$
+
+ }
+ return info;
+ }
+
+ private static List<org.eclipse.fordiac.ide.deployment.devResponse.Resource> getQueryElements(
+ final Response response) {
+ if (null == response.getFblist() || null == response.getFblist().getFbs()) {
+ return Collections.emptyList();
+ }
+ return response.getFblist().getFbs().stream().map(fb -> {
+ final org.eclipse.fordiac.ide.deployment.devResponse.Resource res = DevResponseFactory.eINSTANCE
+ .createResource();
+ res.setName(fb.getName());
+ res.setType(fb.getType());
+ return res;
+ }).toList();
+ }
+
+ private Response parseResponse(final CallMethodResult result, final String responseType) throws IOException {
+ if ((result != null && result.getStatusCode().isGood())
+ && (result.getOutputArguments()[0].getValue() instanceof final String response)) {
+ return parseXMLResponse(MessageFormat.format(responseType, response));
+ }
+ return Constants.EMPTY_RESPONSE;
+ }
+
+ private Response parseXMLResponse(final String encodedResponse) throws IOException {
+ if (null != encodedResponse) {
+ final InputSource source = new InputSource(new StringReader(encodedResponse));
+ final XMLResource xmlResource = new XMLResourceImpl();
+ xmlResource.load(source, respMapping.getLoadOptions());
+ for (final EObject object : xmlResource.getContents()) {
+ if (object instanceof final Response response) {
+ return response;
+ }
+ }
+ }
+ return Constants.EMPTY_RESPONSE;
+ }
+
+ private static NodeId processResult(final CallMethodResult result) {
+ final StatusCode statusCode = result.getStatusCode();
+ if (statusCode.isGood()) {
+ return (NodeId) result.getOutputArguments()[0].getValue();
+ }
+ final StatusCode[] inputArgumentResults = result.getInputArgumentResults();
+ if (inputArgumentResults != null) {
+ for (int i = 0; i < inputArgumentResults.length; i++) {
+ FordiacLogHelper.logInfo(MessageFormat.format("Input Argument Result {0}: {1}", Integer.valueOf(i), //$NON-NLS-1$
+ inputArgumentResults[i]));
+ }
+ }
+ return null;
+ }
+
+ private List<CallMethodResult> handleResponse(final CallResponse response, final String destination) {
+ final List<CallMethodResult> results = Arrays.asList(response.getResults());
+ if (results.size() != requestMessages.size()) {
+ FordiacLogHelper.logInfo("Result list size does not match number of requests!"); //$NON-NLS-1$
+ }
+ for (int i = 0; i < results.size(); i++) {
+ final CallMethodResult result = results.get(i);
+ final StatusCode opcuaStatus = result.getStatusCode();
+ if (!opcuaStatus.isGood()) {
+ final String message = requestMessages.get(i);
+ displayCommand(opcuaStatus, destination, message);
+ }
+ }
+ return results;
+ }
+
+ private void displayCommand(final StatusCode opcuaStatus, final String destination, final String message) {
+ final String info = getDestinationInfo(destination);
+ final String responseMessage = MessageFormat.format(Constants.RESPONSE, getIEC61499Status(opcuaStatus));
+ for (final IDeploymentListener listener : listeners) {
+ listener.postCommandSent(info, destination, message);
+ }
+ for (final IDeploymentListener listener : listeners) {
+ if (listener instanceof final IDeploymentListener2 listener2) {
+ listener2.postResponseReceived(info, message, responseMessage, destination);
+ } else {
+ listener.postResponseReceived(responseMessage, destination);
+ }
+ }
+ }
+
+ private static void logResponseStatus(final StatusCode opcuaStatus, final String resourceName,
+ final String errorElement, final String messageTemplate) {
+ if (!opcuaStatus.isGood()) {
+ FordiacLogHelper.logError(
+ MessageFormat.format(messageTemplate, getIEC61499Status(opcuaStatus), resourceName, errorElement));
+ }
+ }
+
+ private static String getIEC61499Status(final StatusCode opcuaStatus) {
+ final String status = Constants.RESPONSE_MAP.get(Long.valueOf(opcuaStatus.getValue()));
+ if (status != null) {
+ return status;
+ }
+ FordiacLogHelper.logInfo(
+ MessageFormat.format(Messages.OPCUADeploymentExecutor_UnknownResponseCode, opcuaStatus.toString()));
+ return Constants.MGM_RESPONSE_UNKNOWN;
+ }
+
+}
\ No newline at end of file
diff --git a/plugins/org.eclipse.fordiac.ide.deployment.opcua/src/org/eclipse/fordiac/ide/deployment/opcua/helpers/Constants.java b/plugins/org.eclipse.fordiac.ide.deployment.opcua/src/org/eclipse/fordiac/ide/deployment/opcua/helpers/Constants.java
new file mode 100644
index 0000000..3045fd9
--- /dev/null
+++ b/plugins/org.eclipse.fordiac.ide.deployment.opcua/src/org/eclipse/fordiac/ide/deployment/opcua/helpers/Constants.java
@@ -0,0 +1,128 @@
+/*******************************************************************************
+ * Copyright (c) 2022, 2024 Markus Meingast, Johannes Kepler University Linz
+ *
+ * This program and the accompanying materials are made available under the
+ * terms of the Eclipse Public License 2.0 which is available at
+ * http://www.eclipse.org/legal/epl-2.0.
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ * Contributors:
+ * Markus Meingast
+ * - initial API and implementation and/or initial documentation
+ *******************************************************************************/
+package org.eclipse.fordiac.ide.deployment.opcua.helpers;
+
+import java.util.AbstractMap;
+import java.util.Map;
+
+import org.eclipse.fordiac.ide.deployment.devResponse.DevResponseFactory;
+import org.eclipse.fordiac.ide.deployment.devResponse.Response;
+import org.eclipse.milo.opcua.stack.core.StatusCodes;
+import org.eclipse.milo.opcua.stack.core.types.builtin.NodeId;
+import org.eclipse.milo.opcua.stack.core.types.builtin.StatusCode;
+
+public class Constants {
+
+ /** OPCUA Nodes **/
+ /* Root Node */
+ public static final NodeId MGMT_NODE = new NodeId(1, "IEC61499Mgmt"); //$NON-NLS-1$
+
+ public static final NodeId CREATE_RESOURCE_NODE = new NodeId(1, "createResource"); //$NON-NLS-1$
+ public static final NodeId CREATE_FB_NODE = new NodeId(1, "createFB"); //$NON-NLS-1$
+ public static final NodeId CREATE_CONNECTION_NODE = new NodeId(1, "createConnection"); //$NON-NLS-1$
+ public static final NodeId WRITE_DEVICE_NODE = new NodeId(1, "writeDevice"); //$NON-NLS-1$
+ public static final NodeId WRITE_RESOURCE_NODE = new NodeId(1, "writeResource"); //$NON-NLS-1$
+ public static final NodeId WRITE_FB_NODE = new NodeId(1, "writeFB"); //$NON-NLS-1$
+ public static final NodeId START_DEVICE_NODE = new NodeId(1, "startDevice"); //$NON-NLS-1$
+ public static final NodeId START_RESOURCE_NODE = new NodeId(1, "startResource"); //$NON-NLS-1$
+ public static final NodeId START_FB_NODE = new NodeId(1, "startFB"); //$NON-NLS-1$
+ public static final NodeId KILL_DEVICE_NODE = new NodeId(1, "killDevice"); //$NON-NLS-1$
+ public static final NodeId KILL_RESOURCE_NODE = new NodeId(1, "killResource"); //$NON-NLS-1$
+ public static final NodeId DELETE_RESOURCE_NODE = new NodeId(1, "deleteResource"); //$NON-NLS-1$
+ public static final NodeId DELETE_FB_NODE = new NodeId(1, "deleteFB"); //$NON-NLS-1$
+ public static final NodeId DELETE_CONNECTION_NODE = new NodeId(1, "deleteConnection"); //$NON-NLS-1$
+ public static final NodeId ADD_WATCH_NODE = new NodeId(1, "addWatch"); //$NON-NLS-1$
+ public static final NodeId READ_WATCHES_NODE = new NodeId(1, "readWatches"); //$NON-NLS-1$
+ public static final NodeId REMOVE_WATCH_NODE = new NodeId(1, "removeWatch"); //$NON-NLS-1$
+ public static final NodeId TRIGGER_EVENT_NODE = new NodeId(1, "triggerEvent"); //$NON-NLS-1$
+ public static final NodeId FORCE_VALUE_NODE = new NodeId(1, "forceValue"); //$NON-NLS-1$
+ public static final NodeId CLEAR_FORCE_NODE = new NodeId(1, "clearForce"); //$NON-NLS-1$
+ public static final NodeId QUERY_RESOURCES_NODE = new NodeId(1, "queryResources"); //$NON-NLS-1$
+
+ /** Deployment Console Messages **/
+ public static final String CREATE_RESOURCE_INSTANCE = "<Request Action=\"CREATE RESOURCE\"><FB Name=\"{0}\" Type=\"{1}\" /></Request>"; //$NON-NLS-1$
+ public static final String CREATE_FB_INSTANCE = "<Request Action=\"CREATE FB\"><FB Name=\"{0}\" Type=\"{1}\" /></Request>"; //$NON-NLS-1$
+ public static final String CREATE_CONNECTION = "<Request Action=\"CREATE CONNECTION\"><Connection Destination=\"{0}\" Source=\"{1}\" /></Request>"; //$NON-NLS-1$
+ public static final String WRITE_DEVICE_PARAMETER = "<Request Action=\"WRITE DEVICE\"><Name=\"{0}\" Value=\"{1}\" /></Request>"; //$NON-NLS-1$
+ public static final String WRITE_RESOURCE_PARAMETER = "<Request Action=\"WRITE RESOURCE\"><Name=\"{0}\" Value=\"{1}\" /></Request>"; //$NON-NLS-1$
+ public static final String WRITE_FB_PARAMETER = "<Request Action=\"WRITE FB\"><Connection Destination=\"{0}\" Source=\"{1}\" /></Request>"; //$NON-NLS-1$
+ public static final String START_DEVICE = "<Request Action=\"START DEVICE\"/>"; //$NON-NLS-1$
+ public static final String START_RESOURCE = "<Request Action=\"START RESOURCE\"/>"; //$NON-NLS-1$
+ public static final String START_FB = "<Request Action=\"START FB\"><FB Name=\"{0}\" Type=\"{1}\" /></Request>"; //$NON-NLS-1$
+ public static final String KILL_DEVICE = "<Request Action=\"KILL DEVICE\"/>"; //$NON-NLS-1$
+ public static final String KILL_RESOURCE = "<Request Action=\"KILL RESOURCE\"/>"; //$NON-NLS-1$
+ public static final String DELETE_RESOURCE = "<Request Action=\"DELETE RESOURCE\"><FB Name=\"{0}\" Type=\"{1}\" /></Request>"; //$NON-NLS-1$
+ public static final String DELETE_FB_INSTANCE = "<Request Action=\"DELETE FB\"><FB Name=\"{0}\" /></Request>"; //$NON-NLS-1$
+ public static final String DELETE_CONNECTION = "<Request Action=\"DELETE CONNECTION\"><Connection Destination=\"{0}\" Source=\"{1}\" /></Request>"; //$NON-NLS-1$
+ public static final String ADD_WATCH = "<Request Action=\"ADD WATCH\"><Connection Destination=\"{0}\" /></Request>"; //$NON-NLS-1$
+ public static final String READ_WATCHES = "<Request Action=\"READ\"><Watches/></Request>"; //$NON-NLS-1$
+ public static final String REMOVE_WATCH = "<Request Action=\"REMOVE WATCH\"><Connection Destination=\"{0}\" /></Request>"; //$NON-NLS-1$
+ public static final String TRIGGER_EVENT = "<Request Action=\"WRITE\"><Connection Destination=\"{0}\" /></Request>"; //$NON-NLS-1$
+ public static final String FORCE_VALUE = "<Request Action=\"WRITE\"><Connection Destination=\"{0}\" Value=\"{1}\" /></Request>"; //$NON-NLS-1$
+ public static final String CLEAR_FORCE = "<Request Action=\"WRITE\"><Connection Destination=\"{0}\" /></Request>"; //$NON-NLS-1$
+ public static final String QUERY_RESOURCES = "<Request Action=\"QUERY\"></Request>"; //$NON-NLS-1$
+
+ public static final String RESPONSE = "<Response Reason=\"{0}\" />\n"; //$NON-NLS-1$
+
+ public static final String WATCHES_RESPONSE = "<Response>\n <Watches>\n {0}\n </Watches>\n</Response>"; //$NON-NLS-1$
+ public static final String QUERY_RESPONSE = "<Response>\n <FBList>\n {0}\n </FBList>\n</Response>"; //$NON-NLS-1$
+ public static final Response EMPTY_RESPONSE;
+
+ public static final String FB_NAME_FORMAT = "{0}{1}"; //$NON-NLS-1$
+ public static final String FB_PORT_NAME_FORMAT = "{0}{1}.{2}"; //$NON-NLS-1$
+
+ /* IEC61499 Status Codes */
+ public static final String MGM_RESPONSE_READY = "Ready"; //$NON-NLS-1$
+ public static final String MGM_RESPONSE_BAD_PARAMS = "BadParams"; //$NON-NLS-1$
+ public static final String MGM_RESPONSE_LOCAL_TERMINATION = "LocalTermination"; //$NON-NLS-1$
+ public static final String MGM_RESPONSE_SYSTEM_TERMINATION = "SystemTermination"; //$NON-NLS-1$
+ public static final String MGM_RESPONSE_NOT_READY = "NotReady"; //$NON-NLS-1$
+ public static final String MGM_RESPONSE_UNSUPPORTED_CMD = "UnsupportedCmd"; //$NON-NLS-1$
+ public static final String MGM_RESPONSE_UNSUPPORTED_TYPE = "UnsupportedType"; //$NON-NLS-1$
+ public static final String MGM_RESPONSE_NO_SUCH_OBJECT = "NoSuchObject"; //$NON-NLS-1$
+ public static final String MGM_RESPONSE_INVALID_OBJECT = "InvalidObject"; //$NON-NLS-1$
+ public static final String MGM_RESPONSE_INVALID_OPERATION = "InvalidOperation"; //$NON-NLS-1$
+ public static final String MGM_RESPONSE_INVALID_STATE = "InvalidState"; //$NON-NLS-1$
+ public static final String MGM_RESPONSE_OVERFLOW = "Overflow"; //$NON-NLS-1$
+ public static final String MGM_RESPONSE_UNKNOWN = "Unknown"; //$NON-NLS-1$
+
+ public static final Map<Long, String> RESPONSE_MAP = Map.ofEntries(
+ new AbstractMap.SimpleEntry<>(Long.valueOf(StatusCode.GOOD.getValue()), MGM_RESPONSE_READY),
+ new AbstractMap.SimpleEntry<>(Long.valueOf(StatusCodes.Bad_InvalidArgument), MGM_RESPONSE_BAD_PARAMS),
+ new AbstractMap.SimpleEntry<>(Long.valueOf(StatusCodes.Bad_Shutdown), MGM_RESPONSE_LOCAL_TERMINATION),
+ new AbstractMap.SimpleEntry<>(Long.valueOf(StatusCodes.Bad_ResourceUnavailable),
+ MGM_RESPONSE_SYSTEM_TERMINATION),
+ new AbstractMap.SimpleEntry<>(Long.valueOf(StatusCodes.Bad_StateNotActive), MGM_RESPONSE_NOT_READY),
+ new AbstractMap.SimpleEntry<>(Long.valueOf(StatusCodes.Bad_NotImplemented), MGM_RESPONSE_UNSUPPORTED_CMD),
+ new AbstractMap.SimpleEntry<>(Long.valueOf(StatusCodes.Bad_DataTypeIdUnknown),
+ MGM_RESPONSE_UNSUPPORTED_TYPE),
+ new AbstractMap.SimpleEntry<>(Long.valueOf(StatusCodes.Bad_NotFound), MGM_RESPONSE_NO_SUCH_OBJECT),
+ new AbstractMap.SimpleEntry<>(Long.valueOf(StatusCodes.Bad_NotSupported), MGM_RESPONSE_INVALID_OBJECT),
+ new AbstractMap.SimpleEntry<>(Long.valueOf(StatusCodes.Bad_RequestNotAllowed),
+ MGM_RESPONSE_INVALID_OPERATION),
+ new AbstractMap.SimpleEntry<>(Long.valueOf(StatusCodes.Bad_InvalidState), MGM_RESPONSE_INVALID_STATE),
+ new AbstractMap.SimpleEntry<>(Long.valueOf(StatusCodes.Bad_TcpNotEnoughResources), MGM_RESPONSE_OVERFLOW));
+
+ static {
+ // ensure that all entries in the empty response return appropriate empty values
+ EMPTY_RESPONSE = DevResponseFactory.eINSTANCE.createResponse();
+ EMPTY_RESPONSE.setFblist(DevResponseFactory.eINSTANCE.createFBList());
+ EMPTY_RESPONSE.setID("0"); //$NON-NLS-1$
+ EMPTY_RESPONSE.setWatches(DevResponseFactory.eINSTANCE.createWatches());
+ }
+
+ private Constants() {
+ // empty private constructor
+ }
+}
diff --git a/plugins/org.eclipse.fordiac.ide.deployment.opcua/src/org/eclipse/fordiac/ide/deployment/opcua/messages.properties b/plugins/org.eclipse.fordiac.ide.deployment.opcua/src/org/eclipse/fordiac/ide/deployment/opcua/messages.properties
new file mode 100644
index 0000000..30448db
--- /dev/null
+++ b/plugins/org.eclipse.fordiac.ide.deployment.opcua/src/org/eclipse/fordiac/ide/deployment/opcua/messages.properties
@@ -0,0 +1,54 @@
+#################################################################################
+ # Copyright (c) 2022 - 2024 Markus Meingast, Johannes Kepler University Linz
+ #
+ # This program and the accompanying materials are made available under the
+ # terms of the Eclipse Public License 2.0 which is available at
+ # http://www.eclipse.org/legal/epl-2.0.
+ #
+ # SPDX-License-Identifier: EPL-2.0
+ #
+ # Contributors:
+ # Markus Meingast - initial API and implementation and/or initial documentation
+#################################################################################
+
+OPCUADeploymentExecutor_GetMgrIDFailed=Could not fetch Manager ID. Message: {0}
+OPCUADeploymentExecutor_CreateClientFailed=Could not create OPC UA client. Message: {0}
+OPCUADeploymentExecutor_CreateResourceFailed=Create Resource Instance {0} failed.
+OPCUADeploymentExecutor_CreateFBInstanceFailed=Create FB Instance failed: {0}
+OPCUADeploymentExecutor_CreateFBInstanceFailedNoTypeFound=No FB Type found: {0}
+OPCUADeploymentExecutor_CreateConnectionFailed=Create Connection failed: {0}
+OPCUADeploymentExecutor_CreateConnectionFailedNoDataFound=No Connection Data found: {0}!
+
+OPCUADeploymentExecutor_WriteDeviceFailed=Write device parameter failed for device: {0}.
+OPCUADeploymentExecutor_WriteResourceFailed=Write resource parameter failed for resource: {0}.
+OPCUADeploymentExecutor_WriteFBFailed=Write FB parameter failed for FB: {0}, Value: {1}.
+OPCUADeploymentExecutor_ErrorOnWriteRequest=Error on Write! Reason: {0}. Resource: {1}, Port: {2}.
+
+OPCUADeploymentExecutor_StartDeviceFailed=Starting Device failed for Device: {0}.
+OPCUADeploymentExecutor_StartResourceFailed=Starting Resource failed for Resource: {0}.
+OPCUADeploymentExecutor_StartFBFailed=Starting FB failed for FB: {0}.
+OPCUADeploymentExecutor_KillDeviceFailed=Killing Device failed for Device: {0}.
+OPCUADeploymentExecutor_KillResourceFailed=Killing Resource failed for Resource: {0}.
+OPCUADeploymentExecutor_KillFBFailed=Killing FB failed for FB: {0}.
+OPCUADeploymentExecutor_DeleteDeviceFailed=Deleting Device failed for Device: {0}.
+OPCUADeploymentExecutor_DeleteResourceFailed=Deleting Resource failed for Resource: {0}.
+OPCUADeploymentExecutor_DeleteFBFailed=Deleting FB failed for FB: {0}.
+OPCUADeploymentExecutor_DeleteConnectionFailed=Delete Connection failed for Connection: Destination={0} Source={1}.
+OPCUADeploymentExecutor_AddWatchFailed=Add Watch failed for FB: {0}!
+OPCUADeploymentExecutor_ReadWatchesFailed=Read Watches failed!
+OPCUADeploymentExecutor_RemoveWatchFailed=Remove Watch failed for FB: {0}!
+OPCUADeploymentExecutor_TriggerEventFailed=Trigger Event failed for FB: {0}!
+OPCUADeploymentExecutor_ForceValueFailed=Force Value failed for FB: {0}!
+OPCUADeploymentExecutor_ClearForceFailed=Clear Force failed for FB: {0}!
+OPCUADeploymentExecutor_ErrorOnMonitoringRequest=Error on Watch! Reason: {0}. Resource: {1}, Monitoring Element: {2}
+OPCUADeploymentExecutor_QueryResourcesFailed=Query Resources failed!
+OPCUADeploymentExecutor_ErrorOnQueryResources="Error on Query Resources! Reason: {0}.
+
+OPCUADeploymentExecutor_BrowseOPCUAFailed=Browsing OPCUA Address Space failed!
+
+OPCUADeploymentExecutor_RequestFailed=Request from {0} to OPCUA server failed
+OPCUADeploymentExecutor_RequestInterrupted=Request to OPCUA server was interrupted. Message: {0}
+
+OPCUADeploymentExecutor_CouldNotConnectToDevice=Could not connect to device.
+OPCUADeploymentExecutor_CouldNotDisconnectFromDevice=Could not disconnect from device.
+OPCUADeploymentExecutor_UnknownResponseCode=Received unknown response message from OPCUA Server! Message: {0}
diff --git a/plugins/org.eclipse.fordiac.ide.deployment.opcua/src/org/eclipse/fordiac/ide/deployment/opcua/providers/OPCUADevMgmtInteractorProvider.java b/plugins/org.eclipse.fordiac.ide.deployment.opcua/src/org/eclipse/fordiac/ide/deployment/opcua/providers/OPCUADevMgmtInteractorProvider.java
new file mode 100644
index 0000000..da12e63
--- /dev/null
+++ b/plugins/org.eclipse.fordiac.ide.deployment.opcua/src/org/eclipse/fordiac/ide/deployment/opcua/providers/OPCUADevMgmtInteractorProvider.java
@@ -0,0 +1,40 @@
+/*******************************************************************************
+ * Copyright (c) 2022, 2024 Markus Meingast, Johannes Kepler University Linz
+ *
+ * This program and the accompanying materials are made available under the
+ * terms of the Eclipse Public License 2.0 which is available at
+ * http://www.eclipse.org/legal/epl-2.0.
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ * Contributors:
+ * Markus Meingast
+ * - initial API and implementation and/or initial documentation
+ *******************************************************************************/
+package org.eclipse.fordiac.ide.deployment.opcua.providers;
+
+import org.eclipse.fordiac.ide.deployment.IDeviceManagementCommunicationHandler;
+import org.eclipse.fordiac.ide.deployment.interactors.IDeviceManagementInteractor;
+import org.eclipse.fordiac.ide.deployment.interactors.IDeviceManagementInteractorProvider;
+import org.eclipse.fordiac.ide.deployment.opcua.OPCUADeploymentExecutor;
+import org.eclipse.fordiac.ide.model.libraryElement.Device;
+
+public class OPCUADevMgmtInteractorProvider implements IDeviceManagementInteractorProvider {
+ private static final String PROFILE_NAME = "OPC UA"; //$NON-NLS-1$
+
+ @Override
+ public boolean supports(final String profile) {
+ return getProfileName().equals(profile);
+ }
+
+ @Override
+ public String getProfileName() {
+ return PROFILE_NAME;
+ }
+
+ @Override
+ public IDeviceManagementInteractor createInteractor(final Device dev,
+ final IDeviceManagementCommunicationHandler overrideHandler) {
+ return new OPCUADeploymentExecutor(dev);
+ }
+}
\ No newline at end of file
diff --git a/plugins/org.eclipse.fordiac.ide.deployment/META-INF/MANIFEST.MF b/plugins/org.eclipse.fordiac.ide.deployment/META-INF/MANIFEST.MF
index eb9143d..3e4dc7e 100644
--- a/plugins/org.eclipse.fordiac.ide.deployment/META-INF/MANIFEST.MF
+++ b/plugins/org.eclipse.fordiac.ide.deployment/META-INF/MANIFEST.MF
@@ -21,7 +21,7 @@
Bundle-Vendor: %providerName
Bundle-Localization: plugin
Bundle-ActivationPolicy: lazy
-Bundle-Version: 2.0.1.qualifier
+Bundle-Version: 3.0.0.qualifier
Bundle-ClassPath: .
Bundle-Name: %pluginName
Bundle-ManifestVersion: 2
diff --git a/plugins/org.eclipse.fordiac.ide.deployment/src/org/eclipse/fordiac/ide/deployment/data/ResourceDeploymentData.java b/plugins/org.eclipse.fordiac.ide.deployment/src/org/eclipse/fordiac/ide/deployment/data/ResourceDeploymentData.java
index 4087807..99845d0 100644
--- a/plugins/org.eclipse.fordiac.ide.deployment/src/org/eclipse/fordiac/ide/deployment/data/ResourceDeploymentData.java
+++ b/plugins/org.eclipse.fordiac.ide.deployment/src/org/eclipse/fordiac/ide/deployment/data/ResourceDeploymentData.java
@@ -15,6 +15,7 @@
import java.util.ArrayList;
import java.util.Deque;
import java.util.List;
+import java.util.function.Function;
import java.util.stream.Stream;
import org.eclipse.fordiac.ide.deployment.exceptions.DeploymentException;
@@ -137,15 +138,17 @@
private void addSubAppParams(final SubApp subApp, final Deque<SubApp> subAppHierarchy, final String prefix)
throws DeploymentException {
for (final VarDeclaration dataInput : subApp.getInterface().getInputVars()) {
- final String val = DeploymentHelper.getVariableValue(dataInput);
- if (null != val) {
+ final Function<VarDeclaration, String> dataInputValue = DeploymentHelper
+ .getVariableValueRetargetable(dataInput);
+ if (dataInputValue != null) {
for (final ConDeploymentDest destData : getSubappInterfaceconnections(subAppHierarchy, prefix,
dataInput)) {
- params.add(new ParameterData(val, destData.prefix, (VarDeclaration) destData.destination));
+ final VarDeclaration destVar = (VarDeclaration) destData.destination;
+ final String destDataValue = dataInputValue.apply(destVar);
+ params.add(new ParameterData(destDataValue, destData.prefix, destVar));
}
}
}
-
}
private static FBNetwork getFBNetworkForSubApp(final SubApp subApp) {
diff --git a/plugins/org.eclipse.fordiac.ide.deployment/src/org/eclipse/fordiac/ide/deployment/interactors/ForteTypeNameCreator.java b/plugins/org.eclipse.fordiac.ide.deployment/src/org/eclipse/fordiac/ide/deployment/interactors/ForteTypeNameCreator.java
new file mode 100644
index 0000000..753c54b
--- /dev/null
+++ b/plugins/org.eclipse.fordiac.ide.deployment/src/org/eclipse/fordiac/ide/deployment/interactors/ForteTypeNameCreator.java
@@ -0,0 +1,64 @@
+/*******************************************************************************
+ * Copyright (c) 2007, 2024 TU Wien ACIN, Profactor GmbH, fortiss GmbH,
+ * Johannes Kepler University,
+ * Primetals Technologies Austria GmbH
+ *
+ * This program and the accompanying materials are made available under the
+ * terms of the Eclipse Public License 2.0 which is available at
+ * http://www.eclipse.org/legal/epl-2.0.
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ * Contributors:
+ * Alois Zoitl - Extracted from DeploymentExecutor and extended for Configurable move
+ *******************************************************************************/
+package org.eclipse.fordiac.ide.deployment.interactors;
+
+import org.eclipse.fordiac.ide.model.data.DataType;
+import org.eclipse.fordiac.ide.model.helpers.PackageNameHelper;
+import org.eclipse.fordiac.ide.model.libraryElement.ConfigurableFB;
+import org.eclipse.fordiac.ide.model.libraryElement.ConfigurableMoveFB;
+import org.eclipse.fordiac.ide.model.libraryElement.FBNetworkElement;
+import org.eclipse.fordiac.ide.model.libraryElement.StructManipulator;
+
+public class ForteTypeNameCreator {
+
+ public static String getForteTypeName(final FBNetworkElement fb) {
+ if (fb != null && fb.getTypeEntry() != null) {
+ if (fb instanceof final ConfigurableFB confFB) {
+ return getConfigureFBType(confFB);
+ }
+ return getTypeName(fb);
+ }
+ return ""; //$NON-NLS-1$
+ }
+
+ private static String getTypeName(final FBNetworkElement fb) {
+ return convertFullTypeNameToFORTE(fb.getFullTypeName());
+ }
+
+ private static String getConfigureFBType(final ConfigurableFB confFB) {
+ DataType dt = null;
+ if (confFB instanceof final ConfigurableMoveFB move) {
+ dt = move.getDataType();
+ }
+ if (confFB instanceof final StructManipulator structMan) {
+ dt = structMan.getStructType();
+ }
+ String typeName = getTypeName(confFB);
+ if (dt != null) {
+ // the _1 is needed for 4diac FORTE to separate type name from configuration
+ // part
+ typeName += "_1" + convertFullTypeNameToFORTE(PackageNameHelper.getFullTypeName(dt)); //$NON-NLS-1$
+ }
+ return typeName;
+ }
+
+ private static String convertFullTypeNameToFORTE(final String fullTypeName) {
+ return fullTypeName.replace(':', '_');
+ }
+
+ private ForteTypeNameCreator() {
+ throw new UnsupportedOperationException("Helper class should not be instantiated!"); //$NON-NLS-1$
+ }
+}
diff --git a/plugins/org.eclipse.fordiac.ide.deployment/src/org/eclipse/fordiac/ide/deployment/util/DeploymentHelper.java b/plugins/org.eclipse.fordiac.ide.deployment/src/org/eclipse/fordiac/ide/deployment/util/DeploymentHelper.java
index 7005009..e3910f6 100644
--- a/plugins/org.eclipse.fordiac.ide.deployment/src/org/eclipse/fordiac/ide/deployment/util/DeploymentHelper.java
+++ b/plugins/org.eclipse.fordiac.ide.deployment/src/org/eclipse/fordiac/ide/deployment/util/DeploymentHelper.java
@@ -1,6 +1,6 @@
/*******************************************************************************
- * Copyright (c) 2018 fortiss GmbH, Johannes Kepler University
- * 2023 Martin Erich Jobst
+ * Copyright (c) 2018, 2024 fortiss GmbH, Johannes Kepler University
+ * Martin Erich Jobst
*
* This program and the accompanying materials are made available under the
* terms of the Eclipse Public License 2.0 which is available at
@@ -15,10 +15,12 @@
package org.eclipse.fordiac.ide.deployment.util;
import java.text.MessageFormat;
+import java.util.function.Function;
import org.eclipse.core.runtime.Platform;
import org.eclipse.fordiac.ide.deployment.Messages;
import org.eclipse.fordiac.ide.deployment.exceptions.DeploymentException;
+import org.eclipse.fordiac.ide.model.eval.value.Value;
import org.eclipse.fordiac.ide.model.eval.variable.VariableOperations;
import org.eclipse.fordiac.ide.model.libraryElement.Device;
import org.eclipse.fordiac.ide.model.libraryElement.VarDeclaration;
@@ -26,20 +28,35 @@
public interface DeploymentHelper {
- String MGR_ID = "MGR_ID"; //$NON-NLS-1$
-
+ String MGR_ID = "MGR_ID"; //$NON-NLS-1$
static String getVariableValue(final VarDeclaration varDecl) throws DeploymentException {
if (hasInitalValue(varDecl)) {
try {
- return VariableOperations.newVariable(varDecl).toString();
+ return VariableOperations.newVariable(varDecl).toString(false);
} catch (final Exception e) {
if (forceDeployement()) {
return varDecl.getValue().getValue();
- } else {
- throw new DeploymentException(MessageFormat.format(Messages.DeploymentHelper_VariableValueError,
- varDecl.getValue().getValue(), varDecl.getQualifiedName(), e.getMessage()), e);
}
+ throw new DeploymentException(MessageFormat.format(Messages.DeploymentHelper_VariableValueError,
+ varDecl.getValue().getValue(), varDecl.getQualifiedName(), e.getMessage()), e);
+ }
+ }
+ return null;
+ }
+
+ static Function<VarDeclaration, String> getVariableValueRetargetable(final VarDeclaration varDecl)
+ throws DeploymentException {
+ if (hasInitalValue(varDecl)) {
+ try {
+ final Value value = VariableOperations.newVariable(varDecl).getValue();
+ return destination -> VariableOperations.newVariable(destination, value).toString(false);
+ } catch (final Exception e) {
+ if (forceDeployement()) {
+ return unused -> varDecl.getValue().getValue();
+ }
+ throw new DeploymentException(MessageFormat.format(Messages.DeploymentHelper_VariableValueError,
+ varDecl.getValue().getValue(), varDecl.getQualifiedName(), e.getMessage()), e);
}
}
return null;
diff --git a/plugins/org.eclipse.fordiac.ide.elk/META-INF/MANIFEST.MF b/plugins/org.eclipse.fordiac.ide.elk/META-INF/MANIFEST.MF
index fb8652b..77557f8 100644
--- a/plugins/org.eclipse.fordiac.ide.elk/META-INF/MANIFEST.MF
+++ b/plugins/org.eclipse.fordiac.ide.elk/META-INF/MANIFEST.MF
@@ -3,7 +3,7 @@
Bundle-Name: %pluginName
Bundle-SymbolicName: org.eclipse.fordiac.ide.elk;singleton:=true
Automatic-Module-Name: org.eclipse.fordiac.ide.elk
-Bundle-Version: 2.0.1.qualifier
+Bundle-Version: 3.0.0.qualifier
Require-Bundle: org.eclipse.elk.core,
org.eclipse.elk.graph,
org.eclipse.elk.alg.common,
diff --git a/plugins/org.eclipse.fordiac.ide.emf.compare/META-INF/MANIFEST.MF b/plugins/org.eclipse.fordiac.ide.emf.compare/META-INF/MANIFEST.MF
index a796a83..bdc9ee4 100644
--- a/plugins/org.eclipse.fordiac.ide.emf.compare/META-INF/MANIFEST.MF
+++ b/plugins/org.eclipse.fordiac.ide.emf.compare/META-INF/MANIFEST.MF
@@ -2,7 +2,7 @@
Bundle-ManifestVersion: 2
Bundle-Name: Compare
Bundle-SymbolicName: org.eclipse.fordiac.ide.emf.compare;singleton:=true
-Bundle-Version: 2.0.1.qualifier
+Bundle-Version: 3.0.0.qualifier
Automatic-Module-Name: org.eclipse.fordiac.ide.emf.compare
Bundle-RequiredExecutionEnvironment: JavaSE-17
Bundle-Vendor: Eclipse 4diac
diff --git a/plugins/org.eclipse.fordiac.ide.emf.compare/src/org/eclipse/fordiac/ide/emf/compare/provider/AutomationSystemItemProviderEmfCompare.java b/plugins/org.eclipse.fordiac.ide.emf.compare/src/org/eclipse/fordiac/ide/emf/compare/provider/AutomationSystemItemProviderEmfCompare.java
index ac3ec54..029e072 100644
--- a/plugins/org.eclipse.fordiac.ide.emf.compare/src/org/eclipse/fordiac/ide/emf/compare/provider/AutomationSystemItemProviderEmfCompare.java
+++ b/plugins/org.eclipse.fordiac.ide.emf.compare/src/org/eclipse/fordiac/ide/emf/compare/provider/AutomationSystemItemProviderEmfCompare.java
@@ -27,11 +27,19 @@
}
@Override
- public Adapter createSubAppAdapter() {
- if (subAppItemProvider == null) {
- subAppItemProvider = new SubAppItemProviderEmfCompare(this);
+ public Adapter createTypedSubAppAdapter() {
+ if (typedSubAppItemProvider == null) {
+ typedSubAppItemProvider = new TypedSubAppItemProviderEmfCompare(this);
}
- return subAppItemProvider;
+ return typedSubAppItemProvider;
+ }
+
+ @Override
+ public Adapter createUntypedSubAppAdapter() {
+ if (untypedSubAppItemProvider == null) {
+ untypedSubAppItemProvider = new UntypedSubAppItemProviderEmfCompare(this);
+ }
+ return untypedSubAppItemProvider;
}
@Override
diff --git a/plugins/org.eclipse.fordiac.ide.emf.compare/src/org/eclipse/fordiac/ide/emf/compare/provider/SubAppItemProviderEmfCompare.java b/plugins/org.eclipse.fordiac.ide.emf.compare/src/org/eclipse/fordiac/ide/emf/compare/provider/TypedSubAppItemProviderEmfCompare.java
similarity index 87%
rename from plugins/org.eclipse.fordiac.ide.emf.compare/src/org/eclipse/fordiac/ide/emf/compare/provider/SubAppItemProviderEmfCompare.java
rename to plugins/org.eclipse.fordiac.ide.emf.compare/src/org/eclipse/fordiac/ide/emf/compare/provider/TypedSubAppItemProviderEmfCompare.java
index d662c08..9394256 100644
--- a/plugins/org.eclipse.fordiac.ide.emf.compare/src/org/eclipse/fordiac/ide/emf/compare/provider/SubAppItemProviderEmfCompare.java
+++ b/plugins/org.eclipse.fordiac.ide.emf.compare/src/org/eclipse/fordiac/ide/emf/compare/provider/TypedSubAppItemProviderEmfCompare.java
@@ -20,11 +20,11 @@
import org.eclipse.emf.ecore.EObject;
import org.eclipse.fordiac.ide.model.libraryElement.FBNetwork;
import org.eclipse.fordiac.ide.model.libraryElement.SubApp;
-import org.eclipse.fordiac.ide.systemmanagement.ui.providers.SubAppItemProviderForSystem;
+import org.eclipse.fordiac.ide.systemmanagement.ui.providers.TypedSubAppItemProviderForSystem;
-public class SubAppItemProviderEmfCompare extends SubAppItemProviderForSystem {
+public class TypedSubAppItemProviderEmfCompare extends TypedSubAppItemProviderForSystem {
- public SubAppItemProviderEmfCompare(final AdapterFactory adapterFactory) {
+ public TypedSubAppItemProviderEmfCompare(final AdapterFactory adapterFactory) {
super(adapterFactory);
}
diff --git a/plugins/org.eclipse.fordiac.ide.emf.compare/src/org/eclipse/fordiac/ide/emf/compare/provider/SubAppItemProviderEmfCompare.java b/plugins/org.eclipse.fordiac.ide.emf.compare/src/org/eclipse/fordiac/ide/emf/compare/provider/UntypedSubAppItemProviderEmfCompare.java
similarity index 87%
copy from plugins/org.eclipse.fordiac.ide.emf.compare/src/org/eclipse/fordiac/ide/emf/compare/provider/SubAppItemProviderEmfCompare.java
copy to plugins/org.eclipse.fordiac.ide.emf.compare/src/org/eclipse/fordiac/ide/emf/compare/provider/UntypedSubAppItemProviderEmfCompare.java
index d662c08..3d7e8e2 100644
--- a/plugins/org.eclipse.fordiac.ide.emf.compare/src/org/eclipse/fordiac/ide/emf/compare/provider/SubAppItemProviderEmfCompare.java
+++ b/plugins/org.eclipse.fordiac.ide.emf.compare/src/org/eclipse/fordiac/ide/emf/compare/provider/UntypedSubAppItemProviderEmfCompare.java
@@ -20,11 +20,11 @@
import org.eclipse.emf.ecore.EObject;
import org.eclipse.fordiac.ide.model.libraryElement.FBNetwork;
import org.eclipse.fordiac.ide.model.libraryElement.SubApp;
-import org.eclipse.fordiac.ide.systemmanagement.ui.providers.SubAppItemProviderForSystem;
+import org.eclipse.fordiac.ide.systemmanagement.ui.providers.UntypedSubAppItemProviderForSystem;
-public class SubAppItemProviderEmfCompare extends SubAppItemProviderForSystem {
+public class UntypedSubAppItemProviderEmfCompare extends UntypedSubAppItemProviderForSystem {
- public SubAppItemProviderEmfCompare(final AdapterFactory adapterFactory) {
+ public UntypedSubAppItemProviderEmfCompare(final AdapterFactory adapterFactory) {
super(adapterFactory);
}
diff --git a/plugins/org.eclipse.fordiac.ide.export.compare/META-INF/MANIFEST.MF b/plugins/org.eclipse.fordiac.ide.export.compare/META-INF/MANIFEST.MF
index c71f6f6..69e2c55 100644
--- a/plugins/org.eclipse.fordiac.ide.export.compare/META-INF/MANIFEST.MF
+++ b/plugins/org.eclipse.fordiac.ide.export.compare/META-INF/MANIFEST.MF
@@ -6,7 +6,7 @@
org.eclipse.fordiac.ide.ui
Bundle-Vendor: Eclipse 4diac
Bundle-ActivationPolicy: lazy
-Bundle-Version: 2.0.0.qualifier
+Bundle-Version: 3.0.0.qualifier
Bundle-Name: Compare exported FBs
Bundle-ManifestVersion: 2
Bundle-SymbolicName: org.eclipse.fordiac.ide.export.compare;singleton:=true
diff --git a/plugins/org.eclipse.fordiac.ide.export.forte_lua.st/META-INF/MANIFEST.MF b/plugins/org.eclipse.fordiac.ide.export.forte_lua.st/META-INF/MANIFEST.MF
index 65a4fb7..3e42a3d 100644
--- a/plugins/org.eclipse.fordiac.ide.export.forte_lua.st/META-INF/MANIFEST.MF
+++ b/plugins/org.eclipse.fordiac.ide.export.forte_lua.st/META-INF/MANIFEST.MF
@@ -2,7 +2,7 @@
Bundle-ManifestVersion: 2
Bundle-Name: FORTE Lua Export for FORTE V1.0.x New Generation ST Support
Bundle-SymbolicName: org.eclipse.fordiac.ide.export.forte_lua.st;singleton:=true
-Bundle-Version: 2.0.1.qualifier
+Bundle-Version: 3.0.0.qualifier
Bundle-Vendor: Eclipse 4diac
Automatic-Module-Name: org.eclipse.fordiac.ide.export.forte_lua.st
Bundle-RequiredExecutionEnvironment: JavaSE-17
diff --git a/plugins/org.eclipse.fordiac.ide.export.forte_lua/META-INF/MANIFEST.MF b/plugins/org.eclipse.fordiac.ide.export.forte_lua/META-INF/MANIFEST.MF
index afe90e6..d12eb26 100644
--- a/plugins/org.eclipse.fordiac.ide.export.forte_lua/META-INF/MANIFEST.MF
+++ b/plugins/org.eclipse.fordiac.ide.export.forte_lua/META-INF/MANIFEST.MF
@@ -2,7 +2,7 @@
Bundle-ManifestVersion: 2
Bundle-Name: FORTE Export for Lua
Bundle-SymbolicName: org.eclipse.fordiac.ide.export.forte_lua;singleton:=true
-Bundle-Version: 2.0.0.qualifier
+Bundle-Version: 3.0.0.qualifier
Require-Bundle: org.eclipse.core.runtime,
org.eclipse.core.resources,
org.eclipse.xtend.lib,
diff --git a/plugins/org.eclipse.fordiac.ide.export.forte_ng.st/META-INF/MANIFEST.MF b/plugins/org.eclipse.fordiac.ide.export.forte_ng.st/META-INF/MANIFEST.MF
index b766103..613e5b2 100644
--- a/plugins/org.eclipse.fordiac.ide.export.forte_ng.st/META-INF/MANIFEST.MF
+++ b/plugins/org.eclipse.fordiac.ide.export.forte_ng.st/META-INF/MANIFEST.MF
@@ -2,7 +2,7 @@
Bundle-ManifestVersion: 2
Bundle-Name: FORTE Export for FORTE V1.0.x New Generation ST Support
Bundle-SymbolicName: org.eclipse.fordiac.ide.export.forte_ng.st;singleton:=true
-Bundle-Version: 2.0.1.qualifier
+Bundle-Version: 3.0.0.qualifier
Bundle-Vendor: Eclipse 4diac
Automatic-Module-Name: org.eclipse.fordiac.ide.export.forte_ng.st
Bundle-RequiredExecutionEnvironment: JavaSE-17
diff --git a/plugins/org.eclipse.fordiac.ide.export.forte_ng/META-INF/MANIFEST.MF b/plugins/org.eclipse.fordiac.ide.export.forte_ng/META-INF/MANIFEST.MF
index d48593e..07e4542 100644
--- a/plugins/org.eclipse.fordiac.ide.export.forte_ng/META-INF/MANIFEST.MF
+++ b/plugins/org.eclipse.fordiac.ide.export.forte_ng/META-INF/MANIFEST.MF
@@ -2,7 +2,7 @@
Bundle-ManifestVersion: 2
Bundle-Name: FORTE Export for FORTE V1.0.x New Generation
Bundle-SymbolicName: org.eclipse.fordiac.ide.export.forte_ng;singleton:=true
-Bundle-Version: 2.0.1.qualifier
+Bundle-Version: 3.0.0.qualifier
Bundle-Vendor: Eclipse 4diac
Automatic-Module-Name: org.eclipse.fordiac.ide.export.forte_ng
Bundle-RequiredExecutionEnvironment: JavaSE-17
diff --git a/plugins/org.eclipse.fordiac.ide.export.ui/META-INF/MANIFEST.MF b/plugins/org.eclipse.fordiac.ide.export.ui/META-INF/MANIFEST.MF
index c8dbdd1..b1b26d7 100644
--- a/plugins/org.eclipse.fordiac.ide.export.ui/META-INF/MANIFEST.MF
+++ b/plugins/org.eclipse.fordiac.ide.export.ui/META-INF/MANIFEST.MF
@@ -11,7 +11,7 @@
org.eclipse.fordiac.ide.export
Bundle-Vendor: Eclipse 4diac
Bundle-ActivationPolicy: lazy
-Bundle-Version: 2.0.0.qualifier
+Bundle-Version: 3.0.0.qualifier
Bundle-Name: Export UI
Bundle-ManifestVersion: 2
Bundle-SymbolicName: org.eclipse.fordiac.ide.export.ui;singleton:=true
diff --git a/plugins/org.eclipse.fordiac.ide.export.xmi/META-INF/MANIFEST.MF b/plugins/org.eclipse.fordiac.ide.export.xmi/META-INF/MANIFEST.MF
index bae3262..8b1745f 100644
--- a/plugins/org.eclipse.fordiac.ide.export.xmi/META-INF/MANIFEST.MF
+++ b/plugins/org.eclipse.fordiac.ide.export.xmi/META-INF/MANIFEST.MF
@@ -2,7 +2,7 @@
Bundle-ManifestVersion: 2
Bundle-Name: XMI Export
Bundle-SymbolicName: org.eclipse.fordiac.ide.export.xmi;singleton:=true
-Bundle-Version: 2.0.1.qualifier
+Bundle-Version: 3.0.0.qualifier
Bundle-Vendor: Eclipse 4diac
Automatic-Module-Name: org.eclipse.fordiac.ide.export.xmi
Bundle-RequiredExecutionEnvironment: JavaSE-17
diff --git a/plugins/org.eclipse.fordiac.ide.export/META-INF/MANIFEST.MF b/plugins/org.eclipse.fordiac.ide.export/META-INF/MANIFEST.MF
index f278a10..11ffc76 100644
--- a/plugins/org.eclipse.fordiac.ide.export/META-INF/MANIFEST.MF
+++ b/plugins/org.eclipse.fordiac.ide.export/META-INF/MANIFEST.MF
@@ -10,7 +10,7 @@
org.eclipse.fordiac.ide.util
Bundle-Vendor: Eclipse 4diac
Bundle-ActivationPolicy: lazy
-Bundle-Version: 2.0.0.qualifier
+Bundle-Version: 3.0.0.qualifier
Bundle-Name: Export Utils
Bundle-ManifestVersion: 2
Bundle-SymbolicName: org.eclipse.fordiac.ide.export;singleton:=true
diff --git a/plugins/org.eclipse.fordiac.ide.fb.interpreter.design/META-INF/MANIFEST.MF b/plugins/org.eclipse.fordiac.ide.fb.interpreter.design/META-INF/MANIFEST.MF
index 59b4c20..24d1fc3 100644
--- a/plugins/org.eclipse.fordiac.ide.fb.interpreter.design/META-INF/MANIFEST.MF
+++ b/plugins/org.eclipse.fordiac.ide.fb.interpreter.design/META-INF/MANIFEST.MF
@@ -10,7 +10,7 @@
org.eclipse.core.resources,
org.eclipse.sirius,
org.eclipse.sirius.common.acceleo.aql,
- org.eclipse.fordiac.ide.fb.interpreter;bundle-version="2.0.0"
+ org.eclipse.fordiac.ide.fb.interpreter;bundle-version="3.0.0"
Bundle-ActivationPolicy: lazy
Bundle-RequiredExecutionEnvironment: JavaSE-17
Bundle-Vendor: %providerName
diff --git a/plugins/org.eclipse.fordiac.ide.fb.interpreter.edit/META-INF/MANIFEST.MF b/plugins/org.eclipse.fordiac.ide.fb.interpreter.edit/META-INF/MANIFEST.MF
index 8d944b3..fa1c91a 100644
--- a/plugins/org.eclipse.fordiac.ide.fb.interpreter.edit/META-INF/MANIFEST.MF
+++ b/plugins/org.eclipse.fordiac.ide.fb.interpreter.edit/META-INF/MANIFEST.MF
@@ -3,7 +3,7 @@
Bundle-Name: %pluginName
Bundle-SymbolicName: org.eclipse.fordiac.ide.fb.interpreter.edit;singleton:=true
Automatic-Module-Name: org.eclipse.fordiac.ide.fb.interpreter.edit
-Bundle-Version: 2.0.0.qualifier
+Bundle-Version: 3.0.0.qualifier
Bundle-RequiredExecutionEnvironment: JavaSE-17
Bundle-ClassPath: .
Bundle-Activator: org.eclipse.fordiac.ide.fb.interpreter.provider.OperationalSemanticsEditPlugin$Implementation
diff --git a/plugins/org.eclipse.fordiac.ide.fb.interpreter.editor/META-INF/MANIFEST.MF b/plugins/org.eclipse.fordiac.ide.fb.interpreter.editor/META-INF/MANIFEST.MF
index 66f44e2..fa60ae0 100644
--- a/plugins/org.eclipse.fordiac.ide.fb.interpreter.editor/META-INF/MANIFEST.MF
+++ b/plugins/org.eclipse.fordiac.ide.fb.interpreter.editor/META-INF/MANIFEST.MF
@@ -3,7 +3,7 @@
Bundle-Name: %pluginName
Bundle-SymbolicName: org.eclipse.fordiac.ide.fb.interpreter.editor;singleton:=true
Automatic-Module-Name: org.eclipse.fordiac.ide.fb.interpreter.editor
-Bundle-Version: 2.0.0.qualifier
+Bundle-Version: 3.0.0.qualifier
Bundle-ClassPath: .
Bundle-Activator: org.eclipse.fordiac.ide.fb.intepreter.presentation.OperationalSemanticsEditorPlugin$Implementation
Bundle-Vendor: %providerName
diff --git a/plugins/org.eclipse.fordiac.ide.fb.interpreter/META-INF/MANIFEST.MF b/plugins/org.eclipse.fordiac.ide.fb.interpreter/META-INF/MANIFEST.MF
index 28aae40..5d0170d 100644
--- a/plugins/org.eclipse.fordiac.ide.fb.interpreter/META-INF/MANIFEST.MF
+++ b/plugins/org.eclipse.fordiac.ide.fb.interpreter/META-INF/MANIFEST.MF
@@ -3,7 +3,7 @@
Bundle-Name: %pluginName
Bundle-SymbolicName: org.eclipse.fordiac.ide.fb.interpreter;singleton:=true
Automatic-Module-Name: org.eclipse.fordiac.ide.fb.interpreter
-Bundle-Version: 2.0.0.qualifier
+Bundle-Version: 3.0.0.qualifier
Bundle-ClassPath: .
Bundle-Vendor: %providerName
Bundle-Localization: plugin
@@ -34,5 +34,6 @@
org.eclipse.emf.compare.rcp,
org.eclipse.emf.compare.edit,
org.eclipse.ui.ide,
- org.eclipse.fordiac.ide.model.commands
+ org.eclipse.fordiac.ide.model.commands,
+ org.eclipse.fordiac.ide.fbtypeeditor.ecc
Bundle-ActivationPolicy: lazy
diff --git a/plugins/org.eclipse.fordiac.ide.fb.interpreter/src/org/eclipse/fordiac/ide/fb/interpreter/handler/CreateRuntimeTestFunctionBlockHandler.java b/plugins/org.eclipse.fordiac.ide.fb.interpreter/src/org/eclipse/fordiac/ide/fb/interpreter/handler/CreateRuntimeTestFunctionBlockHandler.java
index 37ac878..9a79149 100644
--- a/plugins/org.eclipse.fordiac.ide.fb.interpreter/src/org/eclipse/fordiac/ide/fb/interpreter/handler/CreateRuntimeTestFunctionBlockHandler.java
+++ b/plugins/org.eclipse.fordiac.ide.fb.interpreter/src/org/eclipse/fordiac/ide/fb/interpreter/handler/CreateRuntimeTestFunctionBlockHandler.java
@@ -9,6 +9,7 @@
*
* Contributors:
* Bianca Wiesmayr - initial API and implementation and/or initial documentation
+ * Melanie Winter - added synchronization
*******************************************************************************/
package org.eclipse.fordiac.ide.fb.interpreter.handler;
@@ -31,7 +32,9 @@
import org.eclipse.fordiac.ide.fb.interpreter.testcasemodel.TestSuite;
import org.eclipse.fordiac.ide.model.libraryElement.CompositeFBType;
import org.eclipse.fordiac.ide.model.libraryElement.FBType;
+import org.eclipse.fordiac.ide.ui.FordiacLogHelper;
import org.eclipse.jface.dialogs.MessageDialog;
+import org.eclipse.swt.widgets.Display;
import org.eclipse.ui.IEditorPart;
import org.eclipse.ui.actions.WorkspaceModifyOperation;
import org.eclipse.ui.handlers.HandlerUtil;
@@ -82,27 +85,48 @@
testType.getTypeEntry().save(testType, monitor);
// matches the expected with the actual behaviour
- final FBType matchType = new MatchFBGenerator(type, testSuite).generateMatchFB();
- matchType.getTypeEntry().save(matchType, monitor);
-
- // sends the outcome of the test and the testname to the outputs of the
- // composite
- final FBType muxType = new MuxFBGenerator(type, testSuite).generateMuxFB();
- muxType.getTypeEntry().save(muxType, monitor);
-
- // generates the signals for the testsignal and mux fb
- final FBType runAllType = new RunAllFBGenerator(type, testSuite).generateRunAllFB();
- runAllType.getTypeEntry().save(runAllType, monitor);
-
- // don't change order, generateCompositeFB won't work then
final List<FBType> list = new ArrayList<>();
- list.add(testType);
- list.add(type);
- list.add(matchType);
- list.add(muxType);
- list.add(runAllType);
+ Display.getDefault().syncExec(() -> {
+ final FBType matchType = new MatchFBGenerator(type, testSuite).generateMatchFB();
- final CompositeFBType compositeType = new CompositeTestFBGenerator(type, testSuite, list).generateCompositeFB();
- compositeType.getTypeEntry().save(compositeType, monitor);
+ try {
+ matchType.getTypeEntry().save(matchType, monitor);
+ } catch (final CoreException e) {
+ FordiacLogHelper.logError(e.getMessage());
+ }
+
+ // sends the outcome of the test and the testname to the outputs of the
+ // composite
+ final FBType muxType = new MuxFBGenerator(type, testSuite).generateMuxFB();
+ try {
+ muxType.getTypeEntry().save(muxType, monitor);
+ } catch (final CoreException e) {
+ FordiacLogHelper.logError(e.getMessage());
+ }
+
+ // generates the signals for the testsignal and mux fb
+ final FBType runAllType = new RunAllFBGenerator(type, testSuite).generateRunAllFB();
+ try {
+ runAllType.getTypeEntry().save(runAllType, monitor);
+ } catch (final CoreException e) {
+ FordiacLogHelper.logError(e.getMessage());
+ }
+
+ // don't change order, generateCompositeFB won't work then
+ list.add(testType);
+ list.add(type);
+ list.add(matchType);
+ list.add(muxType);
+ list.add(runAllType);
+
+ final CompositeFBType compositeType = new CompositeTestFBGenerator(type, testSuite, list)
+ .generateCompositeFB();
+
+ try {
+ compositeType.getTypeEntry().save(compositeType, monitor);
+ } catch (final CoreException e) {
+ FordiacLogHelper.logError(e.getMessage());
+ }
+ });
}
}
\ No newline at end of file
diff --git a/plugins/org.eclipse.fordiac.ide.fb.interpreter/src/org/eclipse/fordiac/ide/fb/interpreter/monitorgen/CompositeMonitorFBGenerator.java b/plugins/org.eclipse.fordiac.ide.fb.interpreter/src/org/eclipse/fordiac/ide/fb/interpreter/monitorgen/CompositeMonitorFBGenerator.java
index 3d16459..9dde94a 100644
--- a/plugins/org.eclipse.fordiac.ide.fb.interpreter/src/org/eclipse/fordiac/ide/fb/interpreter/monitorgen/CompositeMonitorFBGenerator.java
+++ b/plugins/org.eclipse.fordiac.ide.fb.interpreter/src/org/eclipse/fordiac/ide/fb/interpreter/monitorgen/CompositeMonitorFBGenerator.java
@@ -118,9 +118,9 @@
protected void addFBsToNetwork() {
final FBNetwork net = LibraryElementFactory.eINSTANCE.createFBNetwork();
compositeFB.setFBNetwork(net);
- addedSourceType = addFBToNetwork(net, sourceType.getTypeEntry(), 400, 0);
+ addedSourceType = addFBToNetwork(net, sourceType, 400, 0);
for (int i = 0; i < monitorFBs.size(); i++) {
- addedMonitorFBs.add(addFBToNetwork(net, monitorFBs.get(i).getTypeEntry(), 400, 300 * (i + 1)));
+ addedMonitorFBs.add(addFBToNetwork(net, monitorFBs.get(i), 400, 300 * (i + 1)));
}
}
diff --git a/plugins/org.eclipse.fordiac.ide.fb.interpreter/src/org/eclipse/fordiac/ide/fb/interpreter/testappgen/CompositeTestFBGenerator.java b/plugins/org.eclipse.fordiac.ide.fb.interpreter/src/org/eclipse/fordiac/ide/fb/interpreter/testappgen/CompositeTestFBGenerator.java
index 0519db5..b15ef92 100644
--- a/plugins/org.eclipse.fordiac.ide.fb.interpreter/src/org/eclipse/fordiac/ide/fb/interpreter/testappgen/CompositeTestFBGenerator.java
+++ b/plugins/org.eclipse.fordiac.ide.fb.interpreter/src/org/eclipse/fordiac/ide/fb/interpreter/testappgen/CompositeTestFBGenerator.java
@@ -16,7 +16,6 @@
import java.util.ArrayList;
import java.util.List;
-import org.eclipse.emf.ecore.util.EcoreUtil;
import org.eclipse.fordiac.ide.fb.interpreter.testappgen.internal.AbstractCompositeFBGenerator;
import org.eclipse.fordiac.ide.fb.interpreter.testcasemodel.TestSuite;
import org.eclipse.fordiac.ide.model.FordiacKeywords;
@@ -79,7 +78,8 @@
x = 50 + 400 * j;
y = 50 + 250 * i;
}
- final FB addedBlock = addFBToNetwork(net, blocksToAdd.get(j).getTypeEntry(), x, y);
+
+ final FB addedBlock = addFBToNetwork(net, blocksToAdd.get(j), x, y);
// the actual instance of the added blocks get saved to a list for easier access
// when creating connections
addBlockToAccordingList(addedBlock, i, j);
@@ -113,18 +113,19 @@
compEl.setTypeEntry(compType);
addPosition(compEl, x + 200, y + 150);
- compEl.setInterface(EcoreUtil.copy(compEl.getType().getInterfaceList()));
+ compEl.setInterface(compEl.getType().getInterfaceList().copy());
net.getNetworkElements().add(compEl);
final String name = NameRepository.createUniqueName(compEl, "TESTAPPFB1");//$NON-NLS-1$
compEl.setName(name);
// connection between matchFB and timeOut
+
final AdapterConnection a = createAdapterConnection(
matchFBs.get(matchFBs.size() - 1).getInterface().getPlugs().get(0),
compositeFB.getFBNetwork().getFBNamed(name).getInterface().getSockets().get(0));
compositeFB.getFBNetwork().getAdapterConnections().add(a);
- }
+}
private static AdapterConnection createAdapterConnection(final AdapterDeclaration source,
final AdapterDeclaration dest) {
@@ -188,9 +189,11 @@
compositeFB.getFBNetwork().getEventConnections()
.add(createEventConnection(matchFBs.get(index).getInterface().getEventOutputs().get(0),
muxFB.getInterface().getEventInputs().get(muxFB.getInterface().getEventInputs().size() - 2)));
- compositeFB.getFBNetwork().getEventConnections()
- .add(createEventConnection(matchFBs.get(index).getInterface().getEventOutputs().get(1),
- muxFB.getInterface().getEventInputs().get(muxFB.getInterface().getEventInputs().size() - 1)));
+
+ final Event dest = matchFBs.get(index).getInterface().getEventOutputs().get(1);
+ final Event source = muxFB.getInterface().getEventInputs()
+ .get(muxFB.getInterface().getEventInputs().size() - 1);
+ compositeFB.getFBNetwork().getEventConnections().add(createEventConnection(dest, source));
compositeFB.getFBNetwork().getEventConnections()
.add(createEventConnection(runAllFB.getInterface().getEventOutputs().get(index),
muxFB.getInterface().getEventInputs().get(index)));
diff --git a/plugins/org.eclipse.fordiac.ide.fb.interpreter/src/org/eclipse/fordiac/ide/fb/interpreter/testappgen/MatchFBGenerator.java b/plugins/org.eclipse.fordiac.ide.fb.interpreter/src/org/eclipse/fordiac/ide/fb/interpreter/testappgen/MatchFBGenerator.java
index 78d3b9e..8e4ca6c 100644
--- a/plugins/org.eclipse.fordiac.ide.fb.interpreter/src/org/eclipse/fordiac/ide/fb/interpreter/testappgen/MatchFBGenerator.java
+++ b/plugins/org.eclipse.fordiac.ide.fb.interpreter/src/org/eclipse/fordiac/ide/fb/interpreter/testappgen/MatchFBGenerator.java
@@ -18,6 +18,7 @@
import org.eclipse.fordiac.ide.fb.interpreter.testappgen.internal.AbstractBasicFBGenerator;
import org.eclipse.fordiac.ide.fb.interpreter.testcasemodel.TestSuite;
+import org.eclipse.fordiac.ide.fbtypeeditor.ecc.contentprovider.ECCContentAndLabelProvider;
import org.eclipse.fordiac.ide.model.FordiacKeywords;
import org.eclipse.fordiac.ide.model.NameRepository;
import org.eclipse.fordiac.ide.model.commands.create.CreateInterfaceElementCommand;
@@ -94,7 +95,9 @@
// timeout action for wait state
final ECAction waitAct = TestEccGenerator.createAction();
- waitAct.setOutput(plug.getAdapterFB().getInterface().getEventInputs().get(0));
+
+ waitAct.setOutput(ECCContentAndLabelProvider.getOutputEvents(destinationFB).stream()
+ .filter(s -> s.getName().equals("START")).findFirst().orElse(null));
waitAct.setAlgorithm(createTimeOutAlg(destinationFB));
eccGen.getLastState().getECAction().add(waitAct);
@@ -113,16 +116,17 @@
eccGen.getLastState().setName(NameRepository.createUniqueName(eccGen.getLastState(), "ERROR_1")); //$NON-NLS-1$
createErrorTransitions(eccGen, splitName[i]);
eccGen.createTransitionFromTo(eccGen.getNTimesLast(1), eccGen.getLastState(),
- plug.getAdapterFB().getInterface().getEventOutputs().get(0));
+ ECCContentAndLabelProvider.getInputEvents(destinationFB)
+ .get(ECCContentAndLabelProvider.getInputEvents(destinationFB).size() - 1));
eccGen.createTransitionFromTo(eccGen.getLastState(), errState, null);
eccGen.decreaseCaseCount();
if (i == splitName.length - 2) {
// before the success/match state a state with timeout is inserted to check for
// any additional incoming events
- createTimeOutState(eccGen, plug, splitName[i], errState, i);
+ createTimeOutState(eccGen, splitName[i], errState, i);
// success/match state, sends success event when reached and checks data
- createMatchState(eccGen, plug, event, sucState, errState, i);
+ createMatchState(eccGen, event, sucState, errState, i);
}
}
@@ -131,14 +135,16 @@
}
}
- private void createTimeOutState(final TestEccGenerator eccGen, final AdapterDeclaration plug, final String name,
- final ECState errState, final int i) {
+ private void createTimeOutState(final TestEccGenerator eccGen, final String name, final ECState errState,
+ final int i) {
// state
eccGen.createState("WAIT", i + 1); //$NON-NLS-1$
eccGen.getLastState().setName(NameRepository.createUniqueName(eccGen.getLastState(), "WAIT_1")); //$NON-NLS-1$
// action
final ECAction waitAct = TestEccGenerator.createAction();
- waitAct.setOutput(plug.getAdapterFB().getInterface().getEventInputs().get(0));
+
+ waitAct.setOutput(ECCContentAndLabelProvider.getOutputEvents(destinationFB).stream()
+ .filter(s -> s.getName().equals("START")).findFirst().orElse(null)); //$NON-NLS-1$
// algorithm
waitAct.setAlgorithm(createTimeOutAlg(destinationFB));
eccGen.getLastState().getECAction().add(waitAct);
@@ -155,8 +161,8 @@
}
- private void createMatchState(final TestEccGenerator eccGen, final AdapterDeclaration plug, final Event event,
- final ECState sucState, final ECState errState, final int i) {
+ private void createMatchState(final TestEccGenerator eccGen, final Event event, final ECState sucState,
+ final ECState errState, final int i) {
eccGen.createState(event.getName() + "_match", i + 2); //$NON-NLS-1$
eccGen.getLastState()
.setName(NameRepository.createUniqueName(eccGen.getLastState(), event.getName() + "_MATCH_1")); //$NON-NLS-1$
@@ -170,8 +176,10 @@
destinationFB.getInterfaceList().getOutputVars().get(0).getName());
sucAct.setAlgorithm(alg);
}
+
eccGen.createTransitionFromTo(eccGen.getNTimesLast(2), eccGen.getLastState(),
- plug.getAdapterFB().getInterface().getEventOutputs().get(0));
+ ECCContentAndLabelProvider.getInputEvents(destinationFB)
+ .get(ECCContentAndLabelProvider.getInputEvents(destinationFB).size() - 1));
eccGen.createTransitionFromTo(eccGen.getLastState(), sucState, null);
eccGen.createTransitionFromTo(eccGen.getLastState(), errState, null);
@@ -190,13 +198,16 @@
eccGen.createTransitionFromTo(eccGen.getEcc().getStart(), eccGen.getLastState(), getEventInput("expected")); //$NON-NLS-1$
final ECAction act = TestEccGenerator.createAction();
act.setAlgorithm(createTimeOutAlg(destinationFB));
- act.setOutput(plug.getAdapterFB().getInterface().getEventInputs().get(0));
+
+ act.setOutput(ECCContentAndLabelProvider.getOutputEvents(destinationFB).stream()
+ .filter(s -> s.getName().equals("START")).findFirst().orElse(null)); //$NON-NLS-1$
eccGen.getLastState().getECAction().add(act);
eccGen.createState("S1", 1); //$NON-NLS-1$
eccGen.getLastState().setName(NameRepository.createUniqueName(eccGen.getLastState(), "S1")); //$NON-NLS-1$
+
eccGen.createTransitionFromTo(eccGen.getNTimesLast(1), eccGen.getLastState(),
- plug.getAdapterFB().getInterface().getEventOutputs().get(0));
+ plug.getType().getInterfaceList().getEventOutputs().get(0));
eccGen.createTransitionFromTo(eccGen.getLastState(), eccGen.getEcc().getStart(), null);
final ECAction actSuc = TestEccGenerator.createAction();
actSuc.setOutput(destinationFB.getInterfaceList().getEventOutputs().get(1));
@@ -219,9 +230,14 @@
final AdapterTypeEntry timeOutEntry = typelib.getAdapterTypeEntry("ATimeOut"); //$NON-NLS-1$
final CreateInterfaceElementCommand cmd = new CreateInterfaceElementCommand(timeOutEntry.getType(), "timeOut", //$NON-NLS-1$
sourceType.getInterfaceList(), false, -1);
- cmd.execute();
+
+ try {
+ cmd.execute();
+ } catch (final Exception e) {
+ System.out.print(e.getMessage());
+ }
+
final AdapterDeclaration timeOutPlug = (AdapterDeclaration) cmd.getCreatedElement();
- timeOutPlug.setType(timeOutEntry.getType());
destinationFB.getInterfaceList().getPlugs().add(timeOutPlug);
return timeOutPlug;
}
diff --git a/plugins/org.eclipse.fordiac.ide.fb.interpreter/src/org/eclipse/fordiac/ide/fb/interpreter/testappgen/internal/AbstractCompositeFBGenerator.java b/plugins/org.eclipse.fordiac.ide.fb.interpreter/src/org/eclipse/fordiac/ide/fb/interpreter/testappgen/internal/AbstractCompositeFBGenerator.java
index 112cb5c..8138d51 100644
--- a/plugins/org.eclipse.fordiac.ide.fb.interpreter/src/org/eclipse/fordiac/ide/fb/interpreter/testappgen/internal/AbstractCompositeFBGenerator.java
+++ b/plugins/org.eclipse.fordiac.ide.fb.interpreter/src/org/eclipse/fordiac/ide/fb/interpreter/testappgen/internal/AbstractCompositeFBGenerator.java
@@ -14,7 +14,6 @@
package org.eclipse.fordiac.ide.fb.interpreter.testappgen.internal;
import org.eclipse.emf.common.util.EList;
-import org.eclipse.emf.ecore.util.EcoreUtil;
import org.eclipse.fordiac.ide.model.NameRepository;
import org.eclipse.fordiac.ide.model.libraryElement.CompositeFBType;
import org.eclipse.fordiac.ide.model.libraryElement.DataConnection;
@@ -26,7 +25,6 @@
import org.eclipse.fordiac.ide.model.libraryElement.FBType;
import org.eclipse.fordiac.ide.model.libraryElement.LibraryElementFactory;
import org.eclipse.fordiac.ide.model.libraryElement.VarDeclaration;
-import org.eclipse.fordiac.ide.model.typelibrary.TypeEntry;
public abstract class AbstractCompositeFBGenerator extends AbstractBlockGenerator {
protected CompositeFBType compositeFB;
@@ -73,15 +71,18 @@
return con;
}
- protected static FB addFBToNetwork(final FBNetwork net, final TypeEntry blockToAdd, final int x, final int y) {
+ protected static FB addFBToNetwork(final FBNetwork net, final FBType blockToAdd, final int x, final int y) {
+
final FBNetworkElement el = LibraryElementFactory.eINSTANCE.createFB();
- el.setTypeEntry(blockToAdd);
+ el.setTypeEntry(blockToAdd.getTypeEntry());
addPosition(el, x, y);
- el.setInterface(EcoreUtil.copy(el.getType().getInterfaceList()));
+ el.setInterface(blockToAdd.getInterfaceList().copy());
+
net.getNetworkElements().add(el);
final String name = NameRepository.createUniqueName(el, "TESTAPPFB1"); //$NON-NLS-1$
el.setName(name);
return net.getFBNamed(name);
+
}
// some values might be null, so to be sure every value gets set again
diff --git a/plugins/org.eclipse.fordiac.ide.fbrtlauncher/META-INF/MANIFEST.MF b/plugins/org.eclipse.fordiac.ide.fbrtlauncher/META-INF/MANIFEST.MF
index 6c7a4ae..b7d3e9c 100644
--- a/plugins/org.eclipse.fordiac.ide.fbrtlauncher/META-INF/MANIFEST.MF
+++ b/plugins/org.eclipse.fordiac.ide.fbrtlauncher/META-INF/MANIFEST.MF
@@ -1,11 +1,15 @@
Manifest-Version: 1.0
Require-Bundle: org.eclipse.ui,
+ org.eclipse.core.externaltools,
+ org.eclipse.core.runtime,
org.eclipse.core.runtime,
org.eclipse.fordiac.ide.runtime,
- org.eclipse.debug.core
+ org.eclipse.debug.core,
+ org.eclipse.debug.ui,
+ org.eclipse.fordiac.ide.ui
Bundle-Vendor: Eclipse 4diac
Bundle-ActivationPolicy: lazy
-Bundle-Version: 2.0.0.qualifier
+Bundle-Version: 3.0.0.qualifier
Bundle-Name: FBRT Launcher
Bundle-Activator: org.eclipse.fordiac.ide.fbrtlauncher.Activator
Bundle-ManifestVersion: 2
diff --git a/plugins/org.eclipse.fordiac.ide.fbrtlauncher/plugin.xml b/plugins/org.eclipse.fordiac.ide.fbrtlauncher/plugin.xml
index afc9b42..2b1992e 100644
--- a/plugins/org.eclipse.fordiac.ide.fbrtlauncher/plugin.xml
+++ b/plugins/org.eclipse.fordiac.ide.fbrtlauncher/plugin.xml
@@ -22,5 +22,29 @@
class="org.eclipse.fordiac.ide.fbrtlauncher.preferences.PreferenceInitializer">
</initializer>
</extension>
-
+
+ <extension point="org.eclipse.debug.core.launchConfigurationTypes">
+ <launchConfigurationType
+ name="Local FBRT"
+ delegate="org.eclipse.core.externaltools.internal.launchConfigurations.ProgramLaunchDelegate"
+ modes="run"
+ id="org.eclipse.fordiac.ide.runLocalFBRT">
+ </launchConfigurationType>
+ </extension>
+ <extension point="org.eclipse.debug.ui.launchConfigurationTabGroups">
+ <launchConfigurationTabGroup
+ type="org.eclipse.fordiac.ide.runLocalFBRT"
+ class="org.eclipse.fordiac.ide.fbrtlauncher.FBRTLaunchGroup"
+ id="org.eclipse.fordiac.ide.fbrtlauncher.launchConfigurationTabGroup">
+ </launchConfigurationTabGroup>
+ </extension>
+
+ <extension
+ point="org.eclipse.debug.ui.launchConfigurationTypeImages">
+ <launchConfigurationTypeImage
+ configTypeID="org.eclipse.fordiac.ide.runLocalFBRT"
+ icon="platform:/plugin/org.eclipse.ui/icons/full/obj16/elements_obj.png"
+ id="org.eclipse.fordiac.ide.launchConfigurationTypeImage.runLocalFBRT">
+ </launchConfigurationTypeImage>
+ </extension>
</plugin>
diff --git a/plugins/org.eclipse.fordiac.ide.fbrtlauncher/src/org/eclipse/fordiac/ide/fbrtlauncher/FBRTLaunchGroup.java b/plugins/org.eclipse.fordiac.ide.fbrtlauncher/src/org/eclipse/fordiac/ide/fbrtlauncher/FBRTLaunchGroup.java
new file mode 100644
index 0000000..c563806
--- /dev/null
+++ b/plugins/org.eclipse.fordiac.ide.fbrtlauncher/src/org/eclipse/fordiac/ide/fbrtlauncher/FBRTLaunchGroup.java
@@ -0,0 +1,24 @@
+/*******************************************************************************
+ * Copyright (c) 2024 Johannes Kepler University Linz
+ *
+ * This program and the accompanying materials are made available under the
+ * terms of the Eclipse Public License 2.0 which is available at
+ * http://www.eclipse.org/legal/epl-2.0.
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ * Contributors:
+ * Alois Zoitl - initial API and implementation and/or initial documentation
+ *******************************************************************************/
+package org.eclipse.fordiac.ide.fbrtlauncher;
+
+import org.eclipse.debug.ui.AbstractLaunchConfigurationTabGroup;
+import org.eclipse.debug.ui.CommonTab;
+import org.eclipse.debug.ui.ILaunchConfigurationDialog;
+
+public class FBRTLaunchGroup extends AbstractLaunchConfigurationTabGroup {
+ @Override
+ public void createTabs(final ILaunchConfigurationDialog dialog, final String mode) {
+ setTabs(new FBRTLaunchTab(), new CommonTab());
+ }
+}
diff --git a/plugins/org.eclipse.fordiac.ide.fbrtlauncher/src/org/eclipse/fordiac/ide/fbrtlauncher/FBRTLaunchTab.java b/plugins/org.eclipse.fordiac.ide.fbrtlauncher/src/org/eclipse/fordiac/ide/fbrtlauncher/FBRTLaunchTab.java
new file mode 100644
index 0000000..0c5a690
--- /dev/null
+++ b/plugins/org.eclipse.fordiac.ide.fbrtlauncher/src/org/eclipse/fordiac/ide/fbrtlauncher/FBRTLaunchTab.java
@@ -0,0 +1,210 @@
+/*******************************************************************************
+ * Copyright (c) 2008, 2024 Profactor GmbH, TU Wien ACIN, fortiss GmbH,
+ * Johannes Kepler University Linz
+ *
+ * This program and the accompanying materials are made available under the
+ * terms of the Eclipse Public License 2.0 which is available at
+ * http://www.eclipse.org/legal/epl-2.0.
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ * Contributors:
+ * Alois Zoitl - extracted and based on FBRTLauncher
+ *******************************************************************************/
+package org.eclipse.fordiac.ide.fbrtlauncher;
+
+import java.io.File;
+import java.util.Arrays;
+
+import org.eclipse.core.runtime.CoreException;
+import org.eclipse.core.runtime.Platform;
+import org.eclipse.debug.core.ILaunchConfiguration;
+import org.eclipse.debug.core.ILaunchConfigurationWorkingCopy;
+import org.eclipse.fordiac.ide.fbrtlauncher.preferences.PreferenceConstants;
+import org.eclipse.fordiac.ide.runtime.LaunchRuntimeUtils;
+import org.eclipse.fordiac.ide.runtime.RuntimeLaunchTab;
+import org.eclipse.fordiac.ide.ui.FordiacLogHelper;
+import org.eclipse.fordiac.ide.ui.widget.FileChooserControl;
+import org.eclipse.jface.layout.GridDataFactory;
+import org.eclipse.jface.layout.GridLayoutFactory;
+import org.eclipse.swt.SWT;
+import org.eclipse.swt.events.SelectionAdapter;
+import org.eclipse.swt.events.SelectionEvent;
+import org.eclipse.swt.layout.GridData;
+import org.eclipse.swt.widgets.Combo;
+import org.eclipse.swt.widgets.Composite;
+import org.eclipse.swt.widgets.Label;
+import org.eclipse.swt.widgets.Text;
+
+public class FBRTLaunchTab extends RuntimeLaunchTab {
+
+ private static final String DEFAULT_FBRT_PORT = "61500"; //$NON-NLS-1$
+ private static final String ATTR_FBRT_LOCATION = "org.eclipse.fordiac.ide.fbrtlauncher.location"; //$NON-NLS-1$
+ private static final String ATTR_FBRT_DEV_TYPE = "org.eclipse.fordiac.ide.fbrtlauncher.deviceType"; //$NON-NLS-1$
+ private static final String ATTR_FBRT_LIB = "org.eclipse.fordiac.ide.fbrtlauncher.lib"; //$NON-NLS-1$
+ private static final String ATTR_FBRT_PORT = "org.eclipse.fordiac.ide.fbrtlauncher.port"; //$NON-NLS-1$
+
+ private static final String[] FBRT_DEV_TYPES = { "RMT_FRAME", "RMT_DEV" }; //$NON-NLS-1$ //$NON-NLS-2$
+ private static final String DEFAULT_FBRT_DEV_TYPE = FBRT_DEV_TYPES[0];
+
+ private FileChooserControl fbrtChooser;
+ private Text library;
+ private Combo devType;
+
+ @Override
+ public void createControl(final Composite parent) {
+ GridLayoutFactory.swtDefaults().applyTo(parent);
+ GridDataFactory.fillDefaults().align(GridData.FILL, GridData.BEGINNING).grab(true, false).applyTo(parent);
+ final Composite comp = new Composite(parent, SWT.NONE);
+ GridLayoutFactory.swtDefaults().numColumns(2).applyTo(comp);
+ GridDataFactory.fillDefaults().align(GridData.FILL, GridData.BEGINNING).grab(true, false).applyTo(comp);
+ setControl(comp);
+
+ fbrtChooser = new FileChooserControl(comp, SWT.NONE, Messages.FBRTPreferencePage_FBRTLocation, true);
+ fbrtChooser.addChooserValueChangedListener(newVal -> scheduleUpdateJob());
+
+ createLibrary(comp);
+ createDevType(comp);
+ createPortSelection(comp);
+
+ }
+
+ @Override
+ public void setDefaults(final ILaunchConfigurationWorkingCopy configuration) {
+ super.setDefaults(configuration);
+
+ configuration.setAttribute(ATTR_LOCATION, getJavaRte());
+
+ final String fbrtPath = Activator.getDefault().getPreferenceStore().getString(PreferenceConstants.P_PATH);
+ configuration.setAttribute(ATTR_FBRT_LOCATION, (fbrtPath != null && !fbrtPath.isBlank()) ? fbrtPath : ""); //$NON-NLS-1$
+
+ configuration.setAttribute(ATTR_FBRT_LIB,
+ Activator.getDefault().getPreferenceStore().getString(PreferenceConstants.P_LIB));
+ configuration.setAttribute(ATTR_FBRT_DEV_TYPE, DEFAULT_FBRT_DEV_TYPE);
+ configuration.setAttribute(ATTR_FBRT_PORT, DEFAULT_FBRT_PORT);
+
+ updateLaunchArguments(configuration);
+ }
+
+ @Override
+ public void initializeFrom(final ILaunchConfiguration configuration) {
+ try {
+ fbrtChooser.setValue(configuration.getAttribute(ATTR_FBRT_LOCATION, "")); //$NON-NLS-1$
+ library.setText(configuration.getAttribute(ATTR_FBRT_LIB, "")); //$NON-NLS-1$
+ devType.select(
+ getSelectedDevTypeIndex(configuration.getAttribute(ATTR_FBRT_DEV_TYPE, DEFAULT_FBRT_DEV_TYPE)));
+ setPortValue(configuration.getAttribute(ATTR_FBRT_PORT, DEFAULT_FBRT_PORT));
+ } catch (final CoreException e) {
+ FordiacLogHelper.logWarning(e.getMessage(), e);
+ }
+ }
+
+ @Override
+ public void performApply(final ILaunchConfigurationWorkingCopy configuration) {
+ configuration.setAttribute(ATTR_FBRT_LOCATION, fbrtChooser.getValue());
+ configuration.setAttribute(ATTR_FBRT_LIB, library.getText());
+ configuration.setAttribute(ATTR_FBRT_DEV_TYPE, FBRT_DEV_TYPES[devType.getSelectionIndex()]);
+ configuration.setAttribute(ATTR_FBRT_PORT, getPortValue());
+ updateLaunchArguments(configuration);
+ }
+
+ @Override
+ public String getName() {
+ return Messages.FBRTLaunchTab_TabName;
+ }
+
+ @Override
+ public boolean isValid(final ILaunchConfiguration launchConfig) {
+ if (!super.isValid(launchConfig)) {
+ return false;
+ }
+
+ if (fbrtChooser.getValue().isBlank()) {
+ setErrorMessage(Messages.FBRTLaunchTab_NoFBRTJarSet);
+ return false;
+ }
+ return true;
+ }
+
+ private void createLibrary(final Composite parent) {
+ final Label label = new Label(parent, SWT.NONE);
+ label.setText(Messages.FBRTPreferencePage_FBRTLibrary);
+ library = new Text(parent, SWT.BORDER);
+ GridDataFactory.fillDefaults().align(GridData.FILL, GridData.CENTER).applyTo(library);
+ library.addModifyListener(ev -> scheduleUpdateJob());
+ }
+
+ private void createDevType(final Composite parent) {
+ final Label label = new Label(parent, SWT.NONE);
+ label.setText(Messages.FBRTLaunchTab_DeviceType);
+
+ devType = new Combo(parent, SWT.BORDER | SWT.READ_ONLY);
+ Arrays.stream(FBRT_DEV_TYPES).forEach(devType::add);
+ GridDataFactory.fillDefaults().align(GridData.BEGINNING, GridData.CENTER).applyTo(devType);
+ devType.addSelectionListener(new SelectionAdapter() {
+ @Override
+ public void widgetSelected(final SelectionEvent e) {
+ scheduleUpdateJob();
+ }
+ });
+ }
+
+ private static String getJavaRte() {
+ String javaRte = System.getProperty("java.home"); //$NON-NLS-1$
+ if (javaRte.isEmpty()) {
+ return ""; //$NON-NLS-1$
+ }
+ javaRte = javaRte + File.separatorChar + "bin" + File.separatorChar + "java"; //$NON-NLS-1$ //$NON-NLS-2$
+ if (Platform.getOS().equalsIgnoreCase(Platform.OS_WIN32)) {
+ javaRte += ".exe"; //$NON-NLS-1$
+ }
+ return javaRte;
+ }
+
+ private static void updateLaunchArguments(final ILaunchConfigurationWorkingCopy configuration) {
+ try {
+ // update java executable attribute, e.g., using it on a new machine.
+ configuration.setAttribute(ATTR_LOCATION, getJavaRte());
+
+ final File runtimeFile = getRuntimeFile(configuration);
+ final String portNum = configuration.getAttribute(ATTR_FBRT_PORT, DEFAULT_FBRT_PORT);
+ final String devType = configuration.getAttribute(ATTR_FBRT_DEV_TYPE, DEFAULT_FBRT_DEV_TYPE);
+
+ String fbrtPath = "fb.rt."; //$NON-NLS-1$
+ if (FBRT_DEV_TYPES[0].equalsIgnoreCase(devType)) {
+ fbrtPath += "hmi."; //$NON-NLS-1$
+ }
+
+ final String arguments = "-noverify -classpath ./lib" //$NON-NLS-1$
+ + File.pathSeparatorChar + "./" //$NON-NLS-1$
+ + runtimeFile.getName() + File.pathSeparatorChar + " " //$NON-NLS-1$
+ + fbrtPath + devType + " -n " //$NON-NLS-1$
+ + devType + " -s " //$NON-NLS-1$
+ + portNum + " -p " //$NON-NLS-1$
+ + configuration.getAttribute(ATTR_FBRT_LIB, ""); //$NON-NLS-1$
+
+ configuration.setAttribute(LaunchRuntimeUtils.ATTR_TOOL_ARGUMENTS, arguments);
+ final File parentFile = runtimeFile.getParentFile();
+ if (parentFile != null) {
+ configuration.setAttribute(ATTR_WORKING_DIRECTORY, parentFile.getAbsolutePath());
+ }
+
+ } catch (final CoreException e) {
+ FordiacLogHelper.logWarning(e.getMessage(), e);
+ }
+ }
+
+ private static int getSelectedDevTypeIndex(final String devType) {
+ for (int i = 0; i < FBRT_DEV_TYPES.length; i++) {
+ if (FBRT_DEV_TYPES[i].equals(devType)) {
+ return i;
+ }
+ }
+ return 0;
+ }
+
+ private static File getRuntimeFile(final ILaunchConfigurationWorkingCopy configuration) throws CoreException {
+ return new File(configuration.getAttribute(ATTR_FBRT_LOCATION, "")); //$NON-NLS-1$
+ }
+
+}
diff --git a/plugins/org.eclipse.fordiac.ide.fbrtlauncher/src/org/eclipse/fordiac/ide/fbrtlauncher/Messages.java b/plugins/org.eclipse.fordiac.ide.fbrtlauncher/src/org/eclipse/fordiac/ide/fbrtlauncher/Messages.java
index 6997aba..f7195f9 100644
--- a/plugins/org.eclipse.fordiac.ide.fbrtlauncher/src/org/eclipse/fordiac/ide/fbrtlauncher/Messages.java
+++ b/plugins/org.eclipse.fordiac.ide.fbrtlauncher/src/org/eclipse/fordiac/ide/fbrtlauncher/Messages.java
@@ -20,7 +20,7 @@
/**
* The Class Messages.
*/
-@SuppressWarnings("squid:S3008") // tell sonar the java naming convention does not make sense for this class
+@SuppressWarnings("squid:S3008") // tell sonar the java naming convention does not make sense for this class
public final class Messages extends NLS {
private static final String BUNDLE_NAME = "org.eclipse.fordiac.ide.fbrtlauncher.messages"; //$NON-NLS-1$
@@ -45,6 +45,12 @@
public static String FBRTPreferencePage_FBRTPreferencePage;
+ public static String FBRTLaunchTab_TabName;
+ public static String FBRTLaunchTab_DeviceType;
+ public static String FBRTLaunchTab_Port;
+
+ public static String FBRTLaunchTab_NoFBRTJarSet;
+
static {
// initialize resource bundle
NLS.initializeMessages(BUNDLE_NAME, Messages.class);
diff --git a/plugins/org.eclipse.fordiac.ide.fbrtlauncher/src/org/eclipse/fordiac/ide/fbrtlauncher/messages.properties b/plugins/org.eclipse.fordiac.ide.fbrtlauncher/src/org/eclipse/fordiac/ide/fbrtlauncher/messages.properties
index 3ff82e3..1f2b312 100644
--- a/plugins/org.eclipse.fordiac.ide.fbrtlauncher/src/org/eclipse/fordiac/ide/fbrtlauncher/messages.properties
+++ b/plugins/org.eclipse.fordiac.ide.fbrtlauncher/src/org/eclipse/fordiac/ide/fbrtlauncher/messages.properties
@@ -21,5 +21,11 @@
FBRTLauncher_LABEL_DeviceTypeParam=Device Type
FBRTPreferencePage_FBRTPreferencePage=FBRT Preferences Page
-FBRTPreferencePage_FBRTLibrary=&FBRT library:
-FBRTPreferencePage_FBRTLocation=&FBRT location (fbrt.jar):
+FBRTPreferencePage_FBRTLibrary=FBRT library:
+FBRTPreferencePage_FBRTLocation=FBRT location (fbrt.jar):
+
+FBRTLaunchTab_TabName=Main
+FBRTLaunchTab_DeviceType=Device type:
+FBRTLaunchTab_Port=Port:
+
+FBRTLaunchTab_NoFBRTJarSet=No FBRT Jar set!
diff --git a/plugins/org.eclipse.fordiac.ide.fbtypeeditor.doc/META-INF/MANIFEST.MF b/plugins/org.eclipse.fordiac.ide.fbtypeeditor.doc/META-INF/MANIFEST.MF
index fce4f1c..71f331b 100644
--- a/plugins/org.eclipse.fordiac.ide.fbtypeeditor.doc/META-INF/MANIFEST.MF
+++ b/plugins/org.eclipse.fordiac.ide.fbtypeeditor.doc/META-INF/MANIFEST.MF
@@ -2,7 +2,7 @@
Bundle-ManifestVersion: 2
Bundle-Name: Type Documentation Editor
Bundle-SymbolicName: org.eclipse.fordiac.ide.fbtypeeditor.doc;singleton:=true
-Bundle-Version: 2.0.1.qualifier
+Bundle-Version: 3.0.0.qualifier
Automatic-Module-Name: org.eclipse.fordiac.ide.ftypeeditor.doc
Bundle-RequiredExecutionEnvironment: JavaSE-17
Require-Bundle: org.eclipse.ui,
diff --git a/plugins/org.eclipse.fordiac.ide.fbtypeeditor.ecc/META-INF/MANIFEST.MF b/plugins/org.eclipse.fordiac.ide.fbtypeeditor.ecc/META-INF/MANIFEST.MF
index ec040d7..b0a10d8 100644
--- a/plugins/org.eclipse.fordiac.ide.fbtypeeditor.ecc/META-INF/MANIFEST.MF
+++ b/plugins/org.eclipse.fordiac.ide.fbtypeeditor.ecc/META-INF/MANIFEST.MF
@@ -20,7 +20,7 @@
org.eclipse.fordiac.ide.structuredtextalgorithm.ui
Bundle-Vendor: Eclipse 4diac
Bundle-ActivationPolicy: lazy
-Bundle-Version: 2.0.1.qualifier
+Bundle-Version: 3.0.0.qualifier
Bundle-Name: ECC Editor
Bundle-Activator: org.eclipse.fordiac.ide.fbtypeeditor.ecc.Activator
Bundle-ManifestVersion: 2
diff --git a/plugins/org.eclipse.fordiac.ide.fbtypeeditor.network/META-INF/MANIFEST.MF b/plugins/org.eclipse.fordiac.ide.fbtypeeditor.network/META-INF/MANIFEST.MF
index c68d0a7..2c96600 100644
--- a/plugins/org.eclipse.fordiac.ide.fbtypeeditor.network/META-INF/MANIFEST.MF
+++ b/plugins/org.eclipse.fordiac.ide.fbtypeeditor.network/META-INF/MANIFEST.MF
@@ -18,7 +18,7 @@
org.eclipse.fordiac.ide.model.ui
Bundle-Vendor: Eclipse 4diac
Bundle-ActivationPolicy: lazy
-Bundle-Version: 2.0.1.qualifier
+Bundle-Version: 3.0.0.qualifier
Bundle-Name: Composite FB Network
Bundle-ManifestVersion: 2
Bundle-SymbolicName: org.eclipse.fordiac.ide.fbtypeeditor.network;singleton:=true
diff --git a/plugins/org.eclipse.fordiac.ide.fbtypeeditor.servicesequence/META-INF/MANIFEST.MF b/plugins/org.eclipse.fordiac.ide.fbtypeeditor.servicesequence/META-INF/MANIFEST.MF
index 6202424..bca6ab5 100644
--- a/plugins/org.eclipse.fordiac.ide.fbtypeeditor.servicesequence/META-INF/MANIFEST.MF
+++ b/plugins/org.eclipse.fordiac.ide.fbtypeeditor.servicesequence/META-INF/MANIFEST.MF
@@ -19,7 +19,7 @@
org.eclipse.fordiac.ide.fb.interpreter
Bundle-Vendor: Eclipse 4diac
Bundle-ActivationPolicy: lazy
-Bundle-Version: 2.0.1.qualifier
+Bundle-Version: 3.0.0.qualifier
Bundle-Name: Service Sequence Editor
Bundle-Activator: org.eclipse.fordiac.ide.fbtypeeditor.servicesequence.Activator
Bundle-ManifestVersion: 2
diff --git a/plugins/org.eclipse.fordiac.ide.fbtypeeditor.servicesequence/plugin.xml b/plugins/org.eclipse.fordiac.ide.fbtypeeditor.servicesequence/plugin.xml
index 3dc5136..7542fd3 100644
--- a/plugins/org.eclipse.fordiac.ide.fbtypeeditor.servicesequence/plugin.xml
+++ b/plugins/org.eclipse.fordiac.ide.fbtypeeditor.servicesequence/plugin.xml
@@ -115,6 +115,10 @@
commandId="org.eclipse.fordiac.ide.fbtypeeditor.servicesequence.createMaxCoverageSequences">
</handler>
<handler
+ class="org.eclipse.fordiac.ide.fbtypeeditor.servicesequence.handler.LoadServiceSequencesHandler"
+ commandId="org.eclipse.fordiac.ide.fbtypeeditor.servicesequence.loadSequences">
+ </handler>
+ <handler
class="org.eclipse.fordiac.ide.fbtypeeditor.servicesequence.handler.GetCoverageHandler"
commandId="org.eclipse.fordiac.ide.fbtypeeditor.servicesequence.getCoverage">
</handler>
@@ -166,8 +170,12 @@
name="Create max Coverage Sequences">
</command>
<command
+ id="org.eclipse.fordiac.ide.fbtypeeditor.servicesequence.loadSequences"
+ name="Load Service Sequences from File">
+ </command>
+ <command
id="org.eclipse.fordiac.ide.fbtypeeditor.servicesequence.getCoverage"
- name="get Coverage">
+ name="Get Coverage">
</command>
<command
id="org.eclipse.fordiac.ide.fbtypeeditor.servicesequence.exportServiceSequencesAsTest"
@@ -364,6 +372,21 @@
</with>
</visibleWhen>
</command>
+ <command
+ commandId="org.eclipse.fordiac.ide.fbtypeeditor.servicesequence.loadSequences"
+ label="Load Service Sequences from File"
+ style="push">
+ <visibleWhen checkEnabled="true">
+ <with variable="selection">
+ <iterate>
+ <or>
+ <instanceof
+ value="org.eclipse.fordiac.ide.fbtypeeditor.servicesequence.editparts.SequenceRootEditPart" />
+ </or>
+ </iterate>
+ </with>
+ </visibleWhen>
+ </command>
<command
commandId="org.eclipse.fordiac.ide.fbtypeeditor.servicesequence.getCoverage"
label="get Coverage"
diff --git a/plugins/org.eclipse.fordiac.ide.fbtypeeditor.servicesequence/src/org/eclipse/fordiac/ide/fbtypeeditor/servicesequence/exporter/CppBoostTestConstants.java b/plugins/org.eclipse.fordiac.ide.fbtypeeditor.servicesequence/src/org/eclipse/fordiac/ide/fbtypeeditor/servicesequence/exporter/CppBoostTestConstants.java
index 6240042..15621c1 100644
--- a/plugins/org.eclipse.fordiac.ide.fbtypeeditor.servicesequence/src/org/eclipse/fordiac/ide/fbtypeeditor/servicesequence/exporter/CppBoostTestConstants.java
+++ b/plugins/org.eclipse.fordiac.ide.fbtypeeditor.servicesequence/src/org/eclipse/fordiac/ide/fbtypeeditor/servicesequence/exporter/CppBoostTestConstants.java
@@ -18,19 +18,20 @@
static String newLine = System.getProperty("line.separator");
public static String testIncludeString = """
- #include "../../core/fbtests/fbtestfixture.h"
+ #include "core/fbtests/fbtestfixture.h"
#include <forte_uint.h>
#include <forte_bool.h>\n""";
public static String tester_genString = """
#ifdef FORTE_ENABLE_GENERATED_SOURCE_CPP
- #include "{0}_tester_gen.cpp"
+ #include "{0}_ServiceSeq_gen.cpp"
#endif
""";
public static String testFixtureStruct = "struct {0}_TestFixture : public CFBTestFixtureBase '{'";
- public static String testFixtureBase = "{0}_TestFixture() : " + newLine + "CFBTestFixtureBase(g_nStringId{0}) '{'";
+ public static String testFixtureBase = "{0}_TestFixture() : " + newLine
+ + "CFBTestFixtureBase(g_nStringIdservSeq__{0}) '{'";
public static String testFixtureSetup = "CFBTestFixtureBase::setup();" + newLine + "}";
@@ -45,11 +46,13 @@
public static String testCase = "BOOST_AUTO_TEST_CASE({0}) '{'";
+ public static String setECCState = "setECCState(CIEC_STATE({0}));";
+
public static String triggerEvent = "triggerEvent({0});";
public static String triggerEventByID = "triggerEvent(CFBTestFixtureBase::getFB()->getEIID(CStringDictionary::getInstance().getId(\"{0}\")));";
- public static String boostAssertEQUAL = "BOOST_ASSERT(func_EQ({0},{1}));";
- public static String boostAssertNOTEQUAL = "BOOST_ASSERT(func_NE({0},{1}));";
+ public static String boostAssertEQUAL = "BOOST_TEST({0} == {1});";
+ public static String boostAssertNOTEQUAL = "BOOST_TEST({0} != {1});";
private CppBoostTestConstants() {
// empty private constructor
diff --git a/plugins/org.eclipse.fordiac.ide.fbtypeeditor.servicesequence/src/org/eclipse/fordiac/ide/fbtypeeditor/servicesequence/exporter/ExportServiceSequenceToCppTest.java b/plugins/org.eclipse.fordiac.ide.fbtypeeditor.servicesequence/src/org/eclipse/fordiac/ide/fbtypeeditor/servicesequence/exporter/ExportServiceSequenceToCppTest.java
index f66b012..87f1fd3 100644
--- a/plugins/org.eclipse.fordiac.ide.fbtypeeditor.servicesequence/src/org/eclipse/fordiac/ide/fbtypeeditor/servicesequence/exporter/ExportServiceSequenceToCppTest.java
+++ b/plugins/org.eclipse.fordiac.ide.fbtypeeditor.servicesequence/src/org/eclipse/fordiac/ide/fbtypeeditor/servicesequence/exporter/ExportServiceSequenceToCppTest.java
@@ -29,6 +29,7 @@
import org.eclipse.core.runtime.IPath;
import org.eclipse.fordiac.ide.model.data.BoolType;
import org.eclipse.fordiac.ide.model.data.IntType;
+import org.eclipse.fordiac.ide.model.data.StringType;
import org.eclipse.fordiac.ide.model.data.UintType;
import org.eclipse.fordiac.ide.model.libraryElement.BasicFBType;
import org.eclipse.fordiac.ide.model.libraryElement.FBType;
@@ -83,6 +84,12 @@
for (final ServiceSequence sequence : serviceSeq) {
writer.append(MessageFormat.format(CppBoostTestConstants.testCase, sequence.getName()));
writer.newLine();
+ final int stateID = fb.getECC().getECState().indexOf(fb.getECC().getECState().stream()
+ .filter(state -> state.getName().equals(sequence.getStartState())).findFirst().orElse(null));
+ if (stateID > 0) {
+ writer.append(MessageFormat.format(CppBoostTestConstants.setECCState, stateID));
+ writer.newLine();
+ }
for (final ServiceTransaction transaction : sequence.getServiceTransaction()) {
parseAndAddParameters(writer, transaction.getInputPrimitive().getParameters());
@@ -114,7 +121,7 @@
param.subSequence(param.indexOf("=") + 1, param.indexOf("(")).toString()));
writer.append(MessageFormat.format(CppBoostTestConstants.boostAssertEQUAL,
param.subSequence(0, param.indexOf(":")),
- param.subSequence(param.indexOf("=") + 1, param.length())));
+ param.subSequence(param.indexOf("=") + 1, param.length()).toString().replace("'", "\"")));
writer.newLine();
}
}
@@ -191,6 +198,9 @@
if (dataType instanceof UintType) {
return "CIEC_UINT";
}
+ if (dataType instanceof StringType) {
+ return "CIEC_STRING";
+ }
return "";
}
@@ -199,6 +209,7 @@
case "BOOL" -> "CIEC_BOOL";
case "UINT" -> "CIEC_UINT";
case "INT" -> "CIEC_INT";
+ case "STRING" -> "CIEC_STRING";
default -> "";
};
}
diff --git a/plugins/org.eclipse.fordiac.ide.fbtypeeditor.servicesequence/src/org/eclipse/fordiac/ide/fbtypeeditor/servicesequence/handler/LoadServiceSequencesHandler.java b/plugins/org.eclipse.fordiac.ide.fbtypeeditor.servicesequence/src/org/eclipse/fordiac/ide/fbtypeeditor/servicesequence/handler/LoadServiceSequencesHandler.java
new file mode 100644
index 0000000..8588101
--- /dev/null
+++ b/plugins/org.eclipse.fordiac.ide.fbtypeeditor.servicesequence/src/org/eclipse/fordiac/ide/fbtypeeditor/servicesequence/handler/LoadServiceSequencesHandler.java
@@ -0,0 +1,64 @@
+/*******************************************************************************
+ * Copyright (c) 2024 Fabio Gandolfi
+ *
+ * This program and the accompanying materials are made available under the
+ * terms of the Eclipse Public License 2.0 which is available at
+ * http://www.eclipse.org/legal/epl-2.0.
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ * Contributors:
+ * Fabio Gandolfi
+ * - initial API and implementation and/or initial documentation
+ *******************************************************************************/
+package org.eclipse.fordiac.ide.fbtypeeditor.servicesequence.handler;
+
+import org.eclipse.core.commands.AbstractHandler;
+import org.eclipse.core.commands.ExecutionEvent;
+import org.eclipse.core.commands.ExecutionException;
+import org.eclipse.emf.common.util.URI;
+import org.eclipse.emf.ecore.resource.Resource;
+import org.eclipse.emf.ecore.resource.impl.ResourceSetImpl;
+import org.eclipse.fordiac.ide.fbtypeeditor.servicesequence.commands.CreateServiceSequenceCommand;
+import org.eclipse.fordiac.ide.fbtypeeditor.servicesequence.editparts.SequenceRootEditPart;
+import org.eclipse.fordiac.ide.model.libraryElement.ServiceSequence;
+import org.eclipse.gef.commands.CompoundCommand;
+import org.eclipse.jface.viewers.IStructuredSelection;
+import org.eclipse.swt.widgets.FileDialog;
+import org.eclipse.ui.PlatformUI;
+import org.eclipse.ui.handlers.HandlerUtil;
+
+public class LoadServiceSequencesHandler extends AbstractHandler {
+
+ @Override
+ public Object execute(final ExecutionEvent event) throws ExecutionException {
+ final IStructuredSelection selection = (IStructuredSelection) HandlerUtil.getCurrentSelection(event);
+ if (!selection.isEmpty() && selection.getFirstElement() instanceof final SequenceRootEditPart serviceSeqEp) {
+
+ final FileDialog fileDialog = new FileDialog(
+ PlatformUI.getWorkbench().getActiveWorkbenchWindow().getShell());
+ fileDialog.setText("Open File"); //$NON-NLS-1$
+
+ fileDialog.setFilterExtensions(new String[] { "*.opsem" }); //$NON-NLS-1$
+
+ final String selectedFilePath = fileDialog.open();
+ if (selectedFilePath != null) {
+ final var uri = URI.createFileURI(selectedFilePath);
+ final Resource res = new ResourceSetImpl().getResource(uri, true);
+
+ final CompoundCommand cmds = new CompoundCommand();
+
+ res.getContents().forEach(con -> {
+ if (con instanceof final ServiceSequence seqs) {
+ cmds.add(new CreateServiceSequenceCommand(serviceSeqEp.getFBType().getService(), seqs));
+ }
+ });
+
+ if (cmds.canExecute()) {
+ cmds.execute();
+ }
+ }
+ }
+ return null;
+ }
+}
diff --git a/plugins/org.eclipse.fordiac.ide.fbtypeeditor.st/META-INF/MANIFEST.MF b/plugins/org.eclipse.fordiac.ide.fbtypeeditor.st/META-INF/MANIFEST.MF
index b04a915..9923385 100644
--- a/plugins/org.eclipse.fordiac.ide.fbtypeeditor.st/META-INF/MANIFEST.MF
+++ b/plugins/org.eclipse.fordiac.ide.fbtypeeditor.st/META-INF/MANIFEST.MF
@@ -2,7 +2,7 @@
Bundle-ManifestVersion: 2
Bundle-Name: Structured Text FB Editor
Bundle-SymbolicName: org.eclipse.fordiac.ide.fbtypeeditor.st;singleton:=true
-Bundle-Version: 2.0.1.qualifier
+Bundle-Version: 3.0.0.qualifier
Require-Bundle: org.eclipse.ui,
org.eclipse.core.runtime,
org.eclipse.ui.views.properties.tabbed,
diff --git a/plugins/org.eclipse.fordiac.ide.fbtypeeditor/META-INF/MANIFEST.MF b/plugins/org.eclipse.fordiac.ide.fbtypeeditor/META-INF/MANIFEST.MF
index 3e3db31..3c2e66f 100644
--- a/plugins/org.eclipse.fordiac.ide.fbtypeeditor/META-INF/MANIFEST.MF
+++ b/plugins/org.eclipse.fordiac.ide.fbtypeeditor/META-INF/MANIFEST.MF
@@ -32,7 +32,7 @@
org.eclipse.fordiac.ide.model.search
Bundle-Vendor: Eclipse 4diac
Bundle-ActivationPolicy: lazy
-Bundle-Version: 2.0.1.qualifier
+Bundle-Version: 3.0.0.qualifier
Bundle-Name: Function Block Type Editor
Bundle-ManifestVersion: 2
Bundle-SymbolicName: org.eclipse.fordiac.ide.fbtypeeditor;singleton:=true
diff --git a/plugins/org.eclipse.fordiac.ide.fmu/META-INF/MANIFEST.MF b/plugins/org.eclipse.fordiac.ide.fmu/META-INF/MANIFEST.MF
index a505a26..8561635 100644
--- a/plugins/org.eclipse.fordiac.ide.fmu/META-INF/MANIFEST.MF
+++ b/plugins/org.eclipse.fordiac.ide.fmu/META-INF/MANIFEST.MF
@@ -12,7 +12,7 @@
org.eclipse.swt
Bundle-Vendor: Eclipse 4diac
Bundle-ActivationPolicy: lazy
-Bundle-Version: 2.0.0.qualifier
+Bundle-Version: 3.0.0.qualifier
Bundle-Name: FMU exporter
Bundle-Activator: org.eclipse.fordiac.ide.fmu.Activator
Bundle-ManifestVersion: 2
diff --git a/plugins/org.eclipse.fordiac.ide.fortelauncher/META-INF/MANIFEST.MF b/plugins/org.eclipse.fordiac.ide.fortelauncher/META-INF/MANIFEST.MF
index e70a5b6..397bd43 100644
--- a/plugins/org.eclipse.fordiac.ide.fortelauncher/META-INF/MANIFEST.MF
+++ b/plugins/org.eclipse.fordiac.ide.fortelauncher/META-INF/MANIFEST.MF
@@ -1,12 +1,14 @@
Manifest-Version: 1.0
Require-Bundle: org.eclipse.ui,
+ org.eclipse.core.externaltools,
org.eclipse.core.runtime,
org.eclipse.fordiac.ide.runtime,
org.eclipse.debug.core,
- org.eclipse.fordiac.ide.ui
+ org.eclipse.fordiac.ide.ui,
+ org.eclipse.debug.ui
Bundle-Vendor: Eclipse 4diac
Bundle-ActivationPolicy: lazy
-Bundle-Version: 2.0.0.qualifier
+Bundle-Version: 3.0.0.qualifier
Bundle-Name: Forte Launcher
Bundle-Activator: org.eclipse.fordiac.ide.fortelauncher.Activator
Bundle-ManifestVersion: 2
diff --git a/plugins/org.eclipse.fordiac.ide.fortelauncher/plugin.xml b/plugins/org.eclipse.fordiac.ide.fortelauncher/plugin.xml
index 887be2e..231f769 100644
--- a/plugins/org.eclipse.fordiac.ide.fortelauncher/plugin.xml
+++ b/plugins/org.eclipse.fordiac.ide.fortelauncher/plugin.xml
@@ -23,5 +23,31 @@
class="org.eclipse.fordiac.ide.fortelauncher.preferences.PreferenceInitializer">
</initializer>
</extension>
+
+ <extension point="org.eclipse.debug.core.launchConfigurationTypes">
+ <launchConfigurationType
+ name="Local 4diac FORTE"
+ delegate="org.eclipse.core.externaltools.internal.launchConfigurations.ProgramLaunchDelegate"
+ modes="run"
+ id="org.eclipse.fordiac.ide.runLocalFORTE">
+ </launchConfigurationType>
+ </extension>
+
+ <extension point="org.eclipse.debug.ui.launchConfigurationTabGroups">
+ <launchConfigurationTabGroup
+ type="org.eclipse.fordiac.ide.runLocalFORTE"
+ class="org.eclipse.fordiac.ide.fortelauncher.ForteLaunchGroup"
+ id="org.eclipse.fordiac.ide.fortelauncher.launchConfigurationTabGroup">
+ </launchConfigurationTabGroup>
+ </extension>
+
+ <extension
+ point="org.eclipse.debug.ui.launchConfigurationTypeImages">
+ <launchConfigurationTypeImage
+ configTypeID="org.eclipse.fordiac.ide.runLocalFORTE"
+ icon="platform:/plugin/org.eclipse.fordiac.ide.images/images/4diacFORTE.png"
+ id="org.eclipse.fordiac.ide.launchConfigurationTypeImage.runLocalFORTE">
+ </launchConfigurationTypeImage>
+ </extension>
</plugin>
diff --git a/plugins/org.eclipse.fordiac.ide.fortelauncher/src/org/eclipse/fordiac/ide/fortelauncher/ForteLaunchGroup.java b/plugins/org.eclipse.fordiac.ide.fortelauncher/src/org/eclipse/fordiac/ide/fortelauncher/ForteLaunchGroup.java
new file mode 100644
index 0000000..11104c1
--- /dev/null
+++ b/plugins/org.eclipse.fordiac.ide.fortelauncher/src/org/eclipse/fordiac/ide/fortelauncher/ForteLaunchGroup.java
@@ -0,0 +1,26 @@
+/*******************************************************************************
+ * Copyright (c) 2023 Johannes Kepler University Linz
+ *
+ * This program and the accompanying materials are made available under the
+ * terms of the Eclipse Public License 2.0 which is available at
+ * http://www.eclipse.org/legal/epl-2.0.
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ * Contributors:
+ * Alois Zoitl - initial API and implementation and/or initial documentation
+ *******************************************************************************/
+package org.eclipse.fordiac.ide.fortelauncher;
+
+import org.eclipse.debug.ui.AbstractLaunchConfigurationTabGroup;
+import org.eclipse.debug.ui.CommonTab;
+import org.eclipse.debug.ui.ILaunchConfigurationDialog;
+
+public class ForteLaunchGroup extends AbstractLaunchConfigurationTabGroup {
+
+ @Override
+ public void createTabs(final ILaunchConfigurationDialog dialog, final String mode) {
+ setTabs(new ForteLaunchTab(), new CommonTab());
+ }
+
+}
diff --git a/plugins/org.eclipse.fordiac.ide.fortelauncher/src/org/eclipse/fordiac/ide/fortelauncher/ForteLaunchTab.java b/plugins/org.eclipse.fordiac.ide.fortelauncher/src/org/eclipse/fordiac/ide/fortelauncher/ForteLaunchTab.java
new file mode 100644
index 0000000..2213d73
--- /dev/null
+++ b/plugins/org.eclipse.fordiac.ide.fortelauncher/src/org/eclipse/fordiac/ide/fortelauncher/ForteLaunchTab.java
@@ -0,0 +1,110 @@
+/*******************************************************************************
+ * Copyright (c) 2023 Johannes Kepler University Linz
+ *
+ * This program and the accompanying materials are made available under the
+ * terms of the Eclipse Public License 2.0 which is available at
+ * http://www.eclipse.org/legal/epl-2.0.
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ * Contributors:
+ * Alois Zoitl - initial API and implementation and/or initial documentation
+ *******************************************************************************/
+package org.eclipse.fordiac.ide.fortelauncher;
+
+import org.eclipse.core.runtime.CoreException;
+import org.eclipse.debug.core.ILaunchConfiguration;
+import org.eclipse.debug.core.ILaunchConfigurationWorkingCopy;
+import org.eclipse.fordiac.ide.fortelauncher.preferences.PreferenceConstants;
+import org.eclipse.fordiac.ide.runtime.LaunchRuntimeUtils;
+import org.eclipse.fordiac.ide.runtime.RuntimeLaunchTab;
+import org.eclipse.fordiac.ide.ui.FordiacLogHelper;
+import org.eclipse.fordiac.ide.ui.widget.DirectoryChooserControl;
+import org.eclipse.fordiac.ide.ui.widget.FileChooserControl;
+import org.eclipse.jface.layout.GridDataFactory;
+import org.eclipse.jface.layout.GridLayoutFactory;
+import org.eclipse.swt.SWT;
+import org.eclipse.swt.layout.GridData;
+import org.eclipse.swt.widgets.Composite;
+
+public class ForteLaunchTab extends RuntimeLaunchTab {
+
+ private static final String DEFAULT_FORTE_PORT = "61499"; //$NON-NLS-1$
+ private static final String ATTR_FORTE_PORT = "org.eclipse.fordiac.ide.fortelauncher.port"; //$NON-NLS-1$
+
+ private FileChooserControl forteChooser;
+ private DirectoryChooserControl workingDirChooser;
+
+ @Override
+ public void createControl(final Composite parent) {
+ GridLayoutFactory.swtDefaults().applyTo(parent);
+ GridDataFactory.fillDefaults().align(GridData.FILL, GridData.BEGINNING).grab(true, false).applyTo(parent);
+
+ final Composite comp = new Composite(parent, SWT.NONE);
+ GridLayoutFactory.swtDefaults().numColumns(2).applyTo(comp);
+ GridDataFactory.fillDefaults().align(GridData.FILL, GridData.BEGINNING).grab(true, false).applyTo(comp);
+ setControl(comp);
+
+ forteChooser = new FileChooserControl(comp, SWT.NONE, Messages.FortePreferencePage_FORTELocation, true);
+ forteChooser.addChooserValueChangedListener(newVal -> scheduleUpdateJob());
+ workingDirChooser = new DirectoryChooserControl(comp, SWT.NONE, Messages.ForteLaunchTab_WorkingDirectory, true);
+ workingDirChooser.addChooserValueChangedListener(newVal -> scheduleUpdateJob());
+ createPortSelection(comp);
+ }
+
+ @Override
+ public void setDefaults(final ILaunchConfigurationWorkingCopy configuration) {
+ super.setDefaults(configuration);
+ final String fortePath = Activator.getDefault().getPreferenceStore().getString(PreferenceConstants.P_PATH);
+ if (fortePath != null && !fortePath.isBlank()) {
+ configuration.setAttribute(ATTR_LOCATION, fortePath);
+ } else {
+ configuration.removeAttribute(ATTR_LOCATION);
+ }
+ configuration.setAttribute(ATTR_FORTE_PORT, DEFAULT_FORTE_PORT);
+ }
+
+ @Override
+ public void initializeFrom(final ILaunchConfiguration configuration) {
+ try {
+ forteChooser.setValue(configuration.getAttribute(ATTR_LOCATION, "")); //$NON-NLS-1$
+ workingDirChooser.setValue(configuration.getAttribute(ATTR_WORKING_DIRECTORY, "")); //$NON-NLS-1$
+ setPortValue(configuration.getAttribute(ATTR_FORTE_PORT, DEFAULT_FORTE_PORT));
+ } catch (final CoreException e) {
+ FordiacLogHelper.logWarning(e.getMessage(), e);
+ }
+ }
+
+ @Override
+ public void performApply(final ILaunchConfigurationWorkingCopy configuration) {
+ configuration.setAttribute(ATTR_LOCATION, forteChooser.getValue());
+
+ final String workingDir = workingDirChooser.getValue();
+ if (!workingDir.isBlank()) {
+ configuration.setAttribute(ATTR_WORKING_DIRECTORY, workingDir);
+ }
+
+ configuration.setAttribute(ATTR_FORTE_PORT, getPortValue());
+ configuration.setAttribute(LaunchRuntimeUtils.ATTR_TOOL_ARGUMENTS, "-c localhost:" + getPortValue()); //$NON-NLS-1$
+ }
+
+ @Override
+ public String getName() {
+ return Messages.ForteLaunchTab_TabTitle;
+ }
+
+ @Override
+ public boolean isValid(final ILaunchConfiguration launchConfig) {
+ if (!super.isValid(launchConfig)) {
+ return false;
+ }
+
+ if (forteChooser.getValue().isBlank()) {
+ setErrorMessage(Messages.ForteLaunchTabError_No4diacFORTEExecutableSet);
+ return false;
+ }
+
+ return true;
+ }
+
+}
diff --git a/plugins/org.eclipse.fordiac.ide.fortelauncher/src/org/eclipse/fordiac/ide/fortelauncher/Messages.java b/plugins/org.eclipse.fordiac.ide.fortelauncher/src/org/eclipse/fordiac/ide/fortelauncher/Messages.java
index 659cfb0..284e0be 100644
--- a/plugins/org.eclipse.fordiac.ide.fortelauncher/src/org/eclipse/fordiac/ide/fortelauncher/Messages.java
+++ b/plugins/org.eclipse.fordiac.ide.fortelauncher/src/org/eclipse/fordiac/ide/fortelauncher/Messages.java
@@ -21,7 +21,7 @@
/**
* The Class Messages.
*/
-@SuppressWarnings("squid:S3008") // tell sonar the java naming convention does not make sense for this class
+@SuppressWarnings("squid:S3008") // tell sonar the java naming convention does not make sense for this class
public final class Messages extends NLS {
private static final String BUNDLE_NAME = "org.eclipse.fordiac.ide.fortelauncher.messages"; //$NON-NLS-1$
@@ -31,6 +31,11 @@
public static String FortePreferencePage_FORTEPreferencesPage;
public static String FortePreferencePage_FORTELocation;
+ public static String ForteLaunchTab_TabTitle;
+ public static String ForteLaunchTab_WorkingDirectory;
+
+ public static String ForteLaunchTabError_No4diacFORTEExecutableSet;
+
static {
// initialize resource bundle
NLS.initializeMessages(BUNDLE_NAME, Messages.class);
diff --git a/plugins/org.eclipse.fordiac.ide.fortelauncher/src/org/eclipse/fordiac/ide/fortelauncher/messages.properties b/plugins/org.eclipse.fordiac.ide.fortelauncher/src/org/eclipse/fordiac/ide/fortelauncher/messages.properties
index 16ce1a5..5f27044 100644
--- a/plugins/org.eclipse.fordiac.ide.fortelauncher/src/org/eclipse/fordiac/ide/fortelauncher/messages.properties
+++ b/plugins/org.eclipse.fordiac.ide.fortelauncher/src/org/eclipse/fordiac/ide/fortelauncher/messages.properties
@@ -18,4 +18,10 @@
ForteLauncher_ERROR_WrongPort=Wrong Port number. Only values allowed between 1024 and 65535.
ForteLauncher_LABEL_PortParam=Port
FortePreferencePage_FORTEPreferencesPage=FORTE Preferences Page
-FortePreferencePage_FORTELocation=&FORTE location (e.g. forte.exe):
+FortePreferencePage_FORTELocation=FORTE location (e.g. forte.exe):
+
+ForteLaunchTab_TabTitle=Main
+ForteLaunchTab_WorkingDirectory=Working directory:
+
+
+ForteLaunchTabError_No4diacFORTEExecutableSet=No 4diac FORTE executable set!
diff --git a/plugins/org.eclipse.fordiac.ide.gef/META-INF/MANIFEST.MF b/plugins/org.eclipse.fordiac.ide.gef/META-INF/MANIFEST.MF
index 9f1bb7c..62288a1 100644
--- a/plugins/org.eclipse.fordiac.ide.gef/META-INF/MANIFEST.MF
+++ b/plugins/org.eclipse.fordiac.ide.gef/META-INF/MANIFEST.MF
@@ -48,7 +48,7 @@
org.eclipse.xtext.ui
Bundle-Vendor: Eclipse 4diac
Bundle-ActivationPolicy: lazy
-Bundle-Version: 2.0.1.qualifier
+Bundle-Version: 3.0.0.qualifier
Bundle-Name: Graphical Utilites
Bundle-Activator: org.eclipse.fordiac.ide.gef.Activator
Bundle-ManifestVersion: 2
diff --git a/plugins/org.eclipse.fordiac.ide.gitlab/META-INF/MANIFEST.MF b/plugins/org.eclipse.fordiac.ide.gitlab/META-INF/MANIFEST.MF
index f9c29d3..f0f2f92 100644
--- a/plugins/org.eclipse.fordiac.ide.gitlab/META-INF/MANIFEST.MF
+++ b/plugins/org.eclipse.fordiac.ide.gitlab/META-INF/MANIFEST.MF
@@ -2,7 +2,7 @@
Bundle-ManifestVersion: 2
Bundle-Name: Gitlab
Bundle-SymbolicName: org.eclipse.fordiac.ide.gitlab;singleton:=true
-Bundle-Version: 2.0.1.qualifier
+Bundle-Version: 3.0.0.qualifier
Import-Package: org.eclipse.ui.preferences
Require-Bundle: org.eclipse.ui.ide,
org.eclipse.core.resources,
diff --git a/plugins/org.eclipse.fordiac.ide.globalconstantseditor.ide/META-INF/MANIFEST.MF b/plugins/org.eclipse.fordiac.ide.globalconstantseditor.ide/META-INF/MANIFEST.MF
index be71832..b6c9629 100644
--- a/plugins/org.eclipse.fordiac.ide.globalconstantseditor.ide/META-INF/MANIFEST.MF
+++ b/plugins/org.eclipse.fordiac.ide.globalconstantseditor.ide/META-INF/MANIFEST.MF
@@ -3,7 +3,7 @@
Bundle-ManifestVersion: 2
Bundle-Name: org.eclipse.fordiac.ide.globalconstantseditor.ide
Bundle-Vendor: Eclipse 4diac
-Bundle-Version: 2.0.1.qualifier
+Bundle-Version: 3.0.0.qualifier
Bundle-SymbolicName: org.eclipse.fordiac.ide.globalconstantseditor.ide; singleton:=true
Bundle-ActivationPolicy: lazy
Require-Bundle: org.eclipse.fordiac.ide.globalconstantseditor,
diff --git a/plugins/org.eclipse.fordiac.ide.globalconstantseditor.model/META-INF/MANIFEST.MF b/plugins/org.eclipse.fordiac.ide.globalconstantseditor.model/META-INF/MANIFEST.MF
index 426073e..f24222f 100644
--- a/plugins/org.eclipse.fordiac.ide.globalconstantseditor.model/META-INF/MANIFEST.MF
+++ b/plugins/org.eclipse.fordiac.ide.globalconstantseditor.model/META-INF/MANIFEST.MF
@@ -3,7 +3,7 @@
Bundle-Name: ST Global Constants Model
Bundle-SymbolicName: org.eclipse.fordiac.ide.globalconstantseditor.model;singleton:=true
Bundle-ActivationPolicy: lazy
-Bundle-Version: 2.0.1.qualifier
+Bundle-Version: 3.0.0.qualifier
Export-Package: org.eclipse.fordiac.ide.globalconstantseditor.globalConstants,
org.eclipse.fordiac.ide.globalconstantseditor.globalConstants.impl,
org.eclipse.fordiac.ide.globalconstantseditor.globalConstants.util
diff --git a/plugins/org.eclipse.fordiac.ide.globalconstantseditor.tests/META-INF/MANIFEST.MF b/plugins/org.eclipse.fordiac.ide.globalconstantseditor.tests/META-INF/MANIFEST.MF
index adb4412..496c419 100644
--- a/plugins/org.eclipse.fordiac.ide.globalconstantseditor.tests/META-INF/MANIFEST.MF
+++ b/plugins/org.eclipse.fordiac.ide.globalconstantseditor.tests/META-INF/MANIFEST.MF
@@ -2,7 +2,7 @@
Bundle-ManifestVersion: 2
Bundle-Name: org.eclipse.fordiac.ide.globalconstantseditor.tests
Bundle-Vendor: Eclipse 4diac
-Bundle-Version: 2.0.1.qualifier
+Bundle-Version: 3.0.0.qualifier
Bundle-SymbolicName: org.eclipse.fordiac.ide.globalconstantseditor.tests; singleton:=true
Bundle-ActivationPolicy: lazy
Export-Package: org.eclipse.fordiac.ide.globalconstantseditor.tests
diff --git a/plugins/org.eclipse.fordiac.ide.globalconstantseditor.ui.tests/META-INF/MANIFEST.MF b/plugins/org.eclipse.fordiac.ide.globalconstantseditor.ui.tests/META-INF/MANIFEST.MF
index 3b59acd..423d7ab 100644
--- a/plugins/org.eclipse.fordiac.ide.globalconstantseditor.ui.tests/META-INF/MANIFEST.MF
+++ b/plugins/org.eclipse.fordiac.ide.globalconstantseditor.ui.tests/META-INF/MANIFEST.MF
@@ -3,7 +3,7 @@
Bundle-ManifestVersion: 2
Bundle-Name: org.eclipse.fordiac.ide.globalconstantseditor.ui.tests
Bundle-Vendor: Eclipse 4diac
-Bundle-Version: 2.0.1.qualifier
+Bundle-Version: 3.0.0.qualifier
Bundle-SymbolicName: org.eclipse.fordiac.ide.globalconstantseditor.ui.tests; singleton:=true
Bundle-ActivationPolicy: lazy
Require-Bundle: org.eclipse.fordiac.ide.globalconstantseditor.ui,
diff --git a/plugins/org.eclipse.fordiac.ide.globalconstantseditor.ui/META-INF/MANIFEST.MF b/plugins/org.eclipse.fordiac.ide.globalconstantseditor.ui/META-INF/MANIFEST.MF
index 6ed1591..bffac20 100644
--- a/plugins/org.eclipse.fordiac.ide.globalconstantseditor.ui/META-INF/MANIFEST.MF
+++ b/plugins/org.eclipse.fordiac.ide.globalconstantseditor.ui/META-INF/MANIFEST.MF
@@ -3,7 +3,7 @@
Bundle-ManifestVersion: 2
Bundle-Name: org.eclipse.fordiac.ide.globalconstantseditor.ui
Bundle-Vendor: Eclipse 4diac
-Bundle-Version: 2.0.1.qualifier
+Bundle-Version: 3.0.0.qualifier
Bundle-SymbolicName: org.eclipse.fordiac.ide.globalconstantseditor.ui; singleton:=true
Bundle-ActivationPolicy: lazy
Require-Bundle: org.eclipse.fordiac.ide.globalconstantseditor,
diff --git a/plugins/org.eclipse.fordiac.ide.globalconstantseditor/META-INF/MANIFEST.MF b/plugins/org.eclipse.fordiac.ide.globalconstantseditor/META-INF/MANIFEST.MF
index 2c0842e..c11dfa2 100644
--- a/plugins/org.eclipse.fordiac.ide.globalconstantseditor/META-INF/MANIFEST.MF
+++ b/plugins/org.eclipse.fordiac.ide.globalconstantseditor/META-INF/MANIFEST.MF
@@ -3,7 +3,7 @@
Bundle-ManifestVersion: 2
Bundle-Name: org.eclipse.fordiac.ide.globalconstantseditor
Bundle-Vendor: Eclipse 4diac
-Bundle-Version: 2.0.1.qualifier
+Bundle-Version: 3.0.0.qualifier
Bundle-SymbolicName: org.eclipse.fordiac.ide.globalconstantseditor; singleton:=true
Bundle-ActivationPolicy: lazy
Require-Bundle: org.eclipse.xtext,
diff --git a/plugins/org.eclipse.fordiac.ide.hierarchymanager.model.edit/META-INF/MANIFEST.MF b/plugins/org.eclipse.fordiac.ide.hierarchymanager.model.edit/META-INF/MANIFEST.MF
index 90af615..09e6f45 100644
--- a/plugins/org.eclipse.fordiac.ide.hierarchymanager.model.edit/META-INF/MANIFEST.MF
+++ b/plugins/org.eclipse.fordiac.ide.hierarchymanager.model.edit/META-INF/MANIFEST.MF
@@ -3,7 +3,7 @@
Bundle-Name: %pluginName
Bundle-SymbolicName: org.eclipse.fordiac.ide.hierarchymanager.model.edit;singleton:=true
Automatic-Module-Name: org.eclipse.fordiac.ide.hierarchymanager.model.edit
-Bundle-Version: 2.0.1.qualifier
+Bundle-Version: 3.0.0.qualifier
Bundle-ClassPath: .
Bundle-Activator: org.eclipse.fordiac.ide.hierarchymanager.model.hierarchy.provider.HierarchyEditPlugin$Implementation
Bundle-Vendor: %providerName
diff --git a/plugins/org.eclipse.fordiac.ide.hierarchymanager.model/META-INF/MANIFEST.MF b/plugins/org.eclipse.fordiac.ide.hierarchymanager.model/META-INF/MANIFEST.MF
index 8bffa21..dba3da9 100644
--- a/plugins/org.eclipse.fordiac.ide.hierarchymanager.model/META-INF/MANIFEST.MF
+++ b/plugins/org.eclipse.fordiac.ide.hierarchymanager.model/META-INF/MANIFEST.MF
@@ -3,7 +3,7 @@
Bundle-Name: %pluginName
Bundle-SymbolicName: org.eclipse.fordiac.ide.hierarchymanager.model;singleton:=true
Automatic-Module-Name: org.eclipse.fordiac.ide.hierarchymanager.model
-Bundle-Version: 2.0.1.qualifier
+Bundle-Version: 3.0.0.qualifier
Bundle-ClassPath: .
Bundle-Vendor: %providerName
Bundle-Localization: plugin
diff --git a/plugins/org.eclipse.fordiac.ide.hierarchymanager.ui/META-INF/MANIFEST.MF b/plugins/org.eclipse.fordiac.ide.hierarchymanager.ui/META-INF/MANIFEST.MF
index 22f9fbe..089fb09 100644
--- a/plugins/org.eclipse.fordiac.ide.hierarchymanager.ui/META-INF/MANIFEST.MF
+++ b/plugins/org.eclipse.fordiac.ide.hierarchymanager.ui/META-INF/MANIFEST.MF
@@ -2,7 +2,7 @@
Bundle-ManifestVersion: 2
Bundle-Name: Hierarchy Manager UI
Bundle-SymbolicName: org.eclipse.fordiac.ide.hierarchymanager.ui;singleton:=true
-Bundle-Version: 2.1.0.qualifier
+Bundle-Version: 3.0.0.qualifier
Require-Bundle: org.eclipse.core.resources,
org.eclipse.core.runtime,
org.eclipse.emf.edit,
diff --git a/plugins/org.eclipse.fordiac.ide.images/META-INF/MANIFEST.MF b/plugins/org.eclipse.fordiac.ide.images/META-INF/MANIFEST.MF
index 251b073..f150868 100644
--- a/plugins/org.eclipse.fordiac.ide.images/META-INF/MANIFEST.MF
+++ b/plugins/org.eclipse.fordiac.ide.images/META-INF/MANIFEST.MF
@@ -2,7 +2,7 @@
Bundle-ManifestVersion: 2
Bundle-Name: Images
Bundle-SymbolicName: org.eclipse.fordiac.ide.images
-Bundle-Version: 2.0.0.qualifier
+Bundle-Version: 3.0.0.qualifier
Fragment-Host: org.eclipse.fordiac.ide.ui
Bundle-RequiredExecutionEnvironment: JavaSE-17
Bundle-Vendor: Eclipse 4diac
diff --git a/plugins/org.eclipse.fordiac.ide.images/fordiacimages.properties b/plugins/org.eclipse.fordiac.ide.images/fordiacimages.properties
index f7ff886..e1181aa 100644
--- a/plugins/org.eclipse.fordiac.ide.images/fordiacimages.properties
+++ b/plugins/org.eclipse.fordiac.ide.images/fordiacimages.properties
@@ -18,6 +18,7 @@
ICON_4DIAC_16=fordiac16.gif
ICON_4DIAC_32=fordiac32.gif
+ICON_4DIAC_FORTE=4diacFORTE.png
ICON_ADAPTER_LIST=adapter_list.png
ICON_ADAPTER_TYPE=adapter_type.png
ICON_ADD_STATE=ecc_add_state.png
diff --git a/plugins/org.eclipse.fordiac.ide.images/images/4diacFORTE.png b/plugins/org.eclipse.fordiac.ide.images/images/4diacFORTE.png
new file mode 100644
index 0000000..fadefaf
--- /dev/null
+++ b/plugins/org.eclipse.fordiac.ide.images/images/4diacFORTE.png
Binary files differ
diff --git a/plugins/org.eclipse.fordiac.ide.library.model/.settings/org.eclipse.core.resources.prefs b/plugins/org.eclipse.fordiac.ide.library.model/.settings/org.eclipse.core.resources.prefs
index 99f26c0..d72d956 100644
--- a/plugins/org.eclipse.fordiac.ide.library.model/.settings/org.eclipse.core.resources.prefs
+++ b/plugins/org.eclipse.fordiac.ide.library.model/.settings/org.eclipse.core.resources.prefs
@@ -1,2 +1,3 @@
eclipse.preferences.version=1
+encoding//model/library.xsd=UTF8
encoding/<project>=UTF-8
diff --git a/plugins/org.eclipse.fordiac.ide.library.model/.settings/org.eclipse.jdt.core.prefs b/plugins/org.eclipse.fordiac.ide.library.model/.settings/org.eclipse.jdt.core.prefs
index 62ef348..23712ca 100644
--- a/plugins/org.eclipse.fordiac.ide.library.model/.settings/org.eclipse.jdt.core.prefs
+++ b/plugins/org.eclipse.fordiac.ide.library.model/.settings/org.eclipse.jdt.core.prefs
@@ -7,3 +7,400 @@
org.eclipse.jdt.core.compiler.problem.reportPreviewFeatures=warning
org.eclipse.jdt.core.compiler.release=enabled
org.eclipse.jdt.core.compiler.source=17
+org.eclipse.jdt.core.formatter.align_assignment_statements_on_columns=false
+org.eclipse.jdt.core.formatter.align_fields_grouping_blank_lines=2147483647
+org.eclipse.jdt.core.formatter.align_selector_in_method_invocation_on_expression_first_line=true
+org.eclipse.jdt.core.formatter.align_type_members_on_columns=false
+org.eclipse.jdt.core.formatter.align_variable_declarations_on_columns=false
+org.eclipse.jdt.core.formatter.align_with_spaces=false
+org.eclipse.jdt.core.formatter.alignment_for_additive_operator=16
+org.eclipse.jdt.core.formatter.alignment_for_annotations_on_enum_constant=49
+org.eclipse.jdt.core.formatter.alignment_for_annotations_on_field=49
+org.eclipse.jdt.core.formatter.alignment_for_annotations_on_local_variable=49
+org.eclipse.jdt.core.formatter.alignment_for_annotations_on_method=49
+org.eclipse.jdt.core.formatter.alignment_for_annotations_on_package=49
+org.eclipse.jdt.core.formatter.alignment_for_annotations_on_parameter=0
+org.eclipse.jdt.core.formatter.alignment_for_annotations_on_type=49
+org.eclipse.jdt.core.formatter.alignment_for_arguments_in_allocation_expression=16
+org.eclipse.jdt.core.formatter.alignment_for_arguments_in_annotation=0
+org.eclipse.jdt.core.formatter.alignment_for_arguments_in_enum_constant=16
+org.eclipse.jdt.core.formatter.alignment_for_arguments_in_explicit_constructor_call=16
+org.eclipse.jdt.core.formatter.alignment_for_arguments_in_method_invocation=16
+org.eclipse.jdt.core.formatter.alignment_for_arguments_in_qualified_allocation_expression=16
+org.eclipse.jdt.core.formatter.alignment_for_assertion_message=16
+org.eclipse.jdt.core.formatter.alignment_for_assignment=0
+org.eclipse.jdt.core.formatter.alignment_for_bitwise_operator=16
+org.eclipse.jdt.core.formatter.alignment_for_compact_if=16
+org.eclipse.jdt.core.formatter.alignment_for_compact_loops=16
+org.eclipse.jdt.core.formatter.alignment_for_conditional_expression=80
+org.eclipse.jdt.core.formatter.alignment_for_conditional_expression_chain=0
+org.eclipse.jdt.core.formatter.alignment_for_enum_constants=16
+org.eclipse.jdt.core.formatter.alignment_for_expressions_in_array_initializer=16
+org.eclipse.jdt.core.formatter.alignment_for_expressions_in_for_loop_header=0
+org.eclipse.jdt.core.formatter.alignment_for_expressions_in_switch_case_with_arrow=16
+org.eclipse.jdt.core.formatter.alignment_for_expressions_in_switch_case_with_colon=16
+org.eclipse.jdt.core.formatter.alignment_for_logical_operator=16
+org.eclipse.jdt.core.formatter.alignment_for_method_declaration=0
+org.eclipse.jdt.core.formatter.alignment_for_module_statements=16
+org.eclipse.jdt.core.formatter.alignment_for_multiple_fields=16
+org.eclipse.jdt.core.formatter.alignment_for_multiplicative_operator=16
+org.eclipse.jdt.core.formatter.alignment_for_parameterized_type_references=0
+org.eclipse.jdt.core.formatter.alignment_for_parameters_in_constructor_declaration=16
+org.eclipse.jdt.core.formatter.alignment_for_parameters_in_method_declaration=16
+org.eclipse.jdt.core.formatter.alignment_for_permitted_types_in_type_declaration=16
+org.eclipse.jdt.core.formatter.alignment_for_record_components=16
+org.eclipse.jdt.core.formatter.alignment_for_relational_operator=0
+org.eclipse.jdt.core.formatter.alignment_for_resources_in_try=80
+org.eclipse.jdt.core.formatter.alignment_for_selector_in_method_invocation=16
+org.eclipse.jdt.core.formatter.alignment_for_shift_operator=0
+org.eclipse.jdt.core.formatter.alignment_for_string_concatenation=16
+org.eclipse.jdt.core.formatter.alignment_for_superclass_in_type_declaration=16
+org.eclipse.jdt.core.formatter.alignment_for_superinterfaces_in_enum_declaration=16
+org.eclipse.jdt.core.formatter.alignment_for_superinterfaces_in_record_declaration=16
+org.eclipse.jdt.core.formatter.alignment_for_superinterfaces_in_type_declaration=16
+org.eclipse.jdt.core.formatter.alignment_for_switch_case_with_arrow=20
+org.eclipse.jdt.core.formatter.alignment_for_throws_clause_in_constructor_declaration=16
+org.eclipse.jdt.core.formatter.alignment_for_throws_clause_in_method_declaration=16
+org.eclipse.jdt.core.formatter.alignment_for_type_annotations=0
+org.eclipse.jdt.core.formatter.alignment_for_type_arguments=0
+org.eclipse.jdt.core.formatter.alignment_for_type_parameters=0
+org.eclipse.jdt.core.formatter.alignment_for_union_type_in_multicatch=16
+org.eclipse.jdt.core.formatter.blank_lines_after_imports=1
+org.eclipse.jdt.core.formatter.blank_lines_after_last_class_body_declaration=0
+org.eclipse.jdt.core.formatter.blank_lines_after_package=1
+org.eclipse.jdt.core.formatter.blank_lines_before_abstract_method=1
+org.eclipse.jdt.core.formatter.blank_lines_before_field=0
+org.eclipse.jdt.core.formatter.blank_lines_before_first_class_body_declaration=0
+org.eclipse.jdt.core.formatter.blank_lines_before_imports=1
+org.eclipse.jdt.core.formatter.blank_lines_before_member_type=1
+org.eclipse.jdt.core.formatter.blank_lines_before_method=1
+org.eclipse.jdt.core.formatter.blank_lines_before_new_chunk=1
+org.eclipse.jdt.core.formatter.blank_lines_before_package=0
+org.eclipse.jdt.core.formatter.blank_lines_between_import_groups=1
+org.eclipse.jdt.core.formatter.blank_lines_between_statement_group_in_switch=0
+org.eclipse.jdt.core.formatter.blank_lines_between_type_declarations=1
+org.eclipse.jdt.core.formatter.brace_position_for_annotation_type_declaration=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_anonymous_type_declaration=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_array_initializer=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_block=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_block_in_case=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_constructor_declaration=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_enum_constant=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_enum_declaration=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_lambda_body=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_method_declaration=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_record_constructor=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_record_declaration=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_switch=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_type_declaration=end_of_line
+org.eclipse.jdt.core.formatter.comment.align_tags_descriptions_grouped=true
+org.eclipse.jdt.core.formatter.comment.align_tags_names_descriptions=false
+org.eclipse.jdt.core.formatter.comment.clear_blank_lines_in_block_comment=false
+org.eclipse.jdt.core.formatter.comment.clear_blank_lines_in_javadoc_comment=false
+org.eclipse.jdt.core.formatter.comment.count_line_length_from_starting_position=true
+org.eclipse.jdt.core.formatter.comment.format_block_comments=true
+org.eclipse.jdt.core.formatter.comment.format_header=false
+org.eclipse.jdt.core.formatter.comment.format_html=true
+org.eclipse.jdt.core.formatter.comment.format_javadoc_comments=true
+org.eclipse.jdt.core.formatter.comment.format_line_comments=true
+org.eclipse.jdt.core.formatter.comment.format_source_code=true
+org.eclipse.jdt.core.formatter.comment.indent_parameter_description=false
+org.eclipse.jdt.core.formatter.comment.indent_root_tags=false
+org.eclipse.jdt.core.formatter.comment.indent_tag_description=false
+org.eclipse.jdt.core.formatter.comment.insert_new_line_before_root_tags=insert
+org.eclipse.jdt.core.formatter.comment.insert_new_line_between_different_tags=do not insert
+org.eclipse.jdt.core.formatter.comment.insert_new_line_for_parameter=do not insert
+org.eclipse.jdt.core.formatter.comment.javadoc_do_not_separate_block_tags=false
+org.eclipse.jdt.core.formatter.comment.line_length=80
+org.eclipse.jdt.core.formatter.comment.new_lines_at_block_boundaries=true
+org.eclipse.jdt.core.formatter.comment.new_lines_at_javadoc_boundaries=true
+org.eclipse.jdt.core.formatter.comment.preserve_white_space_between_code_and_line_comments=false
+org.eclipse.jdt.core.formatter.compact_else_if=true
+org.eclipse.jdt.core.formatter.continuation_indentation=2
+org.eclipse.jdt.core.formatter.continuation_indentation_for_array_initializer=2
+org.eclipse.jdt.core.formatter.disabling_tag=@formatter\:off
+org.eclipse.jdt.core.formatter.enabling_tag=@formatter\:on
+org.eclipse.jdt.core.formatter.format_guardian_clause_on_one_line=false
+org.eclipse.jdt.core.formatter.format_line_comment_starting_on_first_column=false
+org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_annotation_declaration_header=true
+org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_enum_constant_header=true
+org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_enum_declaration_header=true
+org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_record_header=true
+org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_type_header=true
+org.eclipse.jdt.core.formatter.indent_breaks_compare_to_cases=true
+org.eclipse.jdt.core.formatter.indent_empty_lines=false
+org.eclipse.jdt.core.formatter.indent_statements_compare_to_block=true
+org.eclipse.jdt.core.formatter.indent_statements_compare_to_body=true
+org.eclipse.jdt.core.formatter.indent_switchstatements_compare_to_cases=true
+org.eclipse.jdt.core.formatter.indent_switchstatements_compare_to_switch=false
+org.eclipse.jdt.core.formatter.indentation.size=4
+org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_enum_constant=insert
+org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_field=insert
+org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_local_variable=insert
+org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_method=insert
+org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_package=insert
+org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_parameter=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_type=insert
+org.eclipse.jdt.core.formatter.insert_new_line_after_label=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_after_opening_brace_in_array_initializer=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_after_type_annotation=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_at_end_of_file_if_missing=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_before_catch_in_try_statement=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_before_closing_brace_in_array_initializer=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_before_else_in_if_statement=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_before_finally_in_try_statement=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_before_while_in_do_statement=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_additive_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_after_and_in_type_parameter=insert
+org.eclipse.jdt.core.formatter.insert_space_after_arrow_in_switch_case=insert
+org.eclipse.jdt.core.formatter.insert_space_after_arrow_in_switch_default=insert
+org.eclipse.jdt.core.formatter.insert_space_after_assignment_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_after_at_in_annotation=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_at_in_annotation_type_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_bitwise_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_after_closing_angle_bracket_in_type_arguments=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_closing_angle_bracket_in_type_parameters=insert
+org.eclipse.jdt.core.formatter.insert_space_after_closing_brace_in_block=insert
+org.eclipse.jdt.core.formatter.insert_space_after_closing_paren_in_cast=insert
+org.eclipse.jdt.core.formatter.insert_space_after_colon_in_assert=insert
+org.eclipse.jdt.core.formatter.insert_space_after_colon_in_case=insert
+org.eclipse.jdt.core.formatter.insert_space_after_colon_in_conditional=insert
+org.eclipse.jdt.core.formatter.insert_space_after_colon_in_for=insert
+org.eclipse.jdt.core.formatter.insert_space_after_colon_in_labeled_statement=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_allocation_expression=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_annotation=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_array_initializer=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_constructor_declaration_parameters=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_constructor_declaration_throws=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_enum_constant_arguments=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_enum_declarations=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_explicitconstructorcall_arguments=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_for_increments=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_for_inits=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_method_declaration_parameters=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_method_declaration_throws=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_method_invocation_arguments=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_multiple_field_declarations=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_multiple_local_declarations=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_parameterized_type_reference=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_permitted_types=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_record_components=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_superinterfaces=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_switch_case_expressions=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_type_arguments=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_type_parameters=insert
+org.eclipse.jdt.core.formatter.insert_space_after_ellipsis=insert
+org.eclipse.jdt.core.formatter.insert_space_after_lambda_arrow=insert
+org.eclipse.jdt.core.formatter.insert_space_after_logical_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_after_multiplicative_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_after_not_operator=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_parameterized_type_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_type_arguments=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_type_parameters=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_brace_in_array_initializer=insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_bracket_in_array_allocation_expression=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_bracket_in_array_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_annotation=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_cast=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_catch=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_constructor_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_enum_constant=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_for=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_if=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_method_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_method_invocation=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_parenthesized_expression=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_record_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_switch=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_synchronized=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_try=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_while=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_postfix_operator=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_prefix_operator=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_question_in_conditional=insert
+org.eclipse.jdt.core.formatter.insert_space_after_question_in_wildcard=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_relational_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_after_semicolon_in_for=insert
+org.eclipse.jdt.core.formatter.insert_space_after_semicolon_in_try_resources=insert
+org.eclipse.jdt.core.formatter.insert_space_after_shift_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_after_string_concatenation=insert
+org.eclipse.jdt.core.formatter.insert_space_after_unary_operator=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_additive_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_before_and_in_type_parameter=insert
+org.eclipse.jdt.core.formatter.insert_space_before_arrow_in_switch_case=insert
+org.eclipse.jdt.core.formatter.insert_space_before_arrow_in_switch_default=insert
+org.eclipse.jdt.core.formatter.insert_space_before_assignment_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_before_at_in_annotation_type_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_before_bitwise_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_parameterized_type_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_type_arguments=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_type_parameters=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_brace_in_array_initializer=insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_bracket_in_array_allocation_expression=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_bracket_in_array_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_annotation=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_cast=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_catch=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_constructor_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_enum_constant=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_for=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_if=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_method_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_method_invocation=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_parenthesized_expression=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_record_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_switch=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_synchronized=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_try=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_while=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_colon_in_assert=insert
+org.eclipse.jdt.core.formatter.insert_space_before_colon_in_case=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_colon_in_conditional=insert
+org.eclipse.jdt.core.formatter.insert_space_before_colon_in_default=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_colon_in_for=insert
+org.eclipse.jdt.core.formatter.insert_space_before_colon_in_labeled_statement=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_allocation_expression=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_annotation=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_array_initializer=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_constructor_declaration_parameters=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_constructor_declaration_throws=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_enum_constant_arguments=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_enum_declarations=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_explicitconstructorcall_arguments=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_for_increments=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_for_inits=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_method_declaration_parameters=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_method_declaration_throws=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_method_invocation_arguments=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_multiple_field_declarations=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_multiple_local_declarations=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_parameterized_type_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_permitted_types=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_record_components=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_superinterfaces=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_switch_case_expressions=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_type_arguments=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_type_parameters=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_ellipsis=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_lambda_arrow=insert
+org.eclipse.jdt.core.formatter.insert_space_before_logical_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_before_multiplicative_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_parameterized_type_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_type_arguments=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_type_parameters=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_annotation_type_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_anonymous_type_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_array_initializer=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_block=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_constructor_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_enum_constant=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_enum_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_method_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_record_constructor=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_record_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_switch=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_type_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_bracket_in_array_allocation_expression=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_bracket_in_array_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_bracket_in_array_type_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_annotation=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_annotation_type_member_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_catch=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_constructor_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_enum_constant=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_for=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_if=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_method_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_method_invocation=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_parenthesized_expression=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_record_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_switch=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_synchronized=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_try=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_while=insert
+org.eclipse.jdt.core.formatter.insert_space_before_parenthesized_expression_in_return=insert
+org.eclipse.jdt.core.formatter.insert_space_before_parenthesized_expression_in_throw=insert
+org.eclipse.jdt.core.formatter.insert_space_before_postfix_operator=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_prefix_operator=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_question_in_conditional=insert
+org.eclipse.jdt.core.formatter.insert_space_before_question_in_wildcard=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_relational_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_before_semicolon=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_semicolon_in_for=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_semicolon_in_try_resources=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_shift_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_before_string_concatenation=insert
+org.eclipse.jdt.core.formatter.insert_space_before_unary_operator=do not insert
+org.eclipse.jdt.core.formatter.insert_space_between_brackets_in_array_type_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_between_empty_braces_in_array_initializer=do not insert
+org.eclipse.jdt.core.formatter.insert_space_between_empty_brackets_in_array_allocation_expression=do not insert
+org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_annotation_type_member_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_constructor_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_enum_constant=do not insert
+org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_method_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_method_invocation=do not insert
+org.eclipse.jdt.core.formatter.join_lines_in_comments=true
+org.eclipse.jdt.core.formatter.join_wrapped_lines=true
+org.eclipse.jdt.core.formatter.keep_annotation_declaration_on_one_line=one_line_never
+org.eclipse.jdt.core.formatter.keep_anonymous_type_declaration_on_one_line=one_line_never
+org.eclipse.jdt.core.formatter.keep_code_block_on_one_line=one_line_never
+org.eclipse.jdt.core.formatter.keep_else_statement_on_same_line=false
+org.eclipse.jdt.core.formatter.keep_empty_array_initializer_on_one_line=false
+org.eclipse.jdt.core.formatter.keep_enum_constant_declaration_on_one_line=one_line_never
+org.eclipse.jdt.core.formatter.keep_enum_declaration_on_one_line=one_line_never
+org.eclipse.jdt.core.formatter.keep_if_then_body_block_on_one_line=one_line_never
+org.eclipse.jdt.core.formatter.keep_imple_if_on_one_line=false
+org.eclipse.jdt.core.formatter.keep_lambda_body_block_on_one_line=one_line_never
+org.eclipse.jdt.core.formatter.keep_loop_body_block_on_one_line=one_line_never
+org.eclipse.jdt.core.formatter.keep_method_body_on_one_line=one_line_never
+org.eclipse.jdt.core.formatter.keep_record_constructor_on_one_line=one_line_never
+org.eclipse.jdt.core.formatter.keep_record_declaration_on_one_line=one_line_never
+org.eclipse.jdt.core.formatter.keep_simple_do_while_body_on_same_line=false
+org.eclipse.jdt.core.formatter.keep_simple_for_body_on_same_line=false
+org.eclipse.jdt.core.formatter.keep_simple_getter_setter_on_one_line=false
+org.eclipse.jdt.core.formatter.keep_simple_while_body_on_same_line=false
+org.eclipse.jdt.core.formatter.keep_switch_body_block_on_one_line=one_line_never
+org.eclipse.jdt.core.formatter.keep_switch_case_with_arrow_on_one_line=one_line_never
+org.eclipse.jdt.core.formatter.keep_then_statement_on_same_line=false
+org.eclipse.jdt.core.formatter.keep_type_declaration_on_one_line=one_line_never
+org.eclipse.jdt.core.formatter.lineSplit=120
+org.eclipse.jdt.core.formatter.never_indent_block_comments_on_first_column=false
+org.eclipse.jdt.core.formatter.never_indent_line_comments_on_first_column=false
+org.eclipse.jdt.core.formatter.number_of_blank_lines_after_code_block=0
+org.eclipse.jdt.core.formatter.number_of_blank_lines_at_beginning_of_code_block=0
+org.eclipse.jdt.core.formatter.number_of_blank_lines_at_beginning_of_method_body=0
+org.eclipse.jdt.core.formatter.number_of_blank_lines_at_end_of_code_block=0
+org.eclipse.jdt.core.formatter.number_of_blank_lines_at_end_of_method_body=0
+org.eclipse.jdt.core.formatter.number_of_blank_lines_before_code_block=0
+org.eclipse.jdt.core.formatter.number_of_empty_lines_to_preserve=1
+org.eclipse.jdt.core.formatter.parentheses_positions_in_annotation=common_lines
+org.eclipse.jdt.core.formatter.parentheses_positions_in_catch_clause=common_lines
+org.eclipse.jdt.core.formatter.parentheses_positions_in_enum_constant_declaration=common_lines
+org.eclipse.jdt.core.formatter.parentheses_positions_in_for_statment=common_lines
+org.eclipse.jdt.core.formatter.parentheses_positions_in_if_while_statement=common_lines
+org.eclipse.jdt.core.formatter.parentheses_positions_in_lambda_declaration=common_lines
+org.eclipse.jdt.core.formatter.parentheses_positions_in_method_delcaration=common_lines
+org.eclipse.jdt.core.formatter.parentheses_positions_in_method_invocation=common_lines
+org.eclipse.jdt.core.formatter.parentheses_positions_in_record_declaration=common_lines
+org.eclipse.jdt.core.formatter.parentheses_positions_in_switch_statement=common_lines
+org.eclipse.jdt.core.formatter.parentheses_positions_in_try_clause=common_lines
+org.eclipse.jdt.core.formatter.put_empty_statement_on_new_line=true
+org.eclipse.jdt.core.formatter.tabulation.char=tab
+org.eclipse.jdt.core.formatter.tabulation.size=4
+org.eclipse.jdt.core.formatter.text_block_indentation=0
+org.eclipse.jdt.core.formatter.use_on_off_tags=true
+org.eclipse.jdt.core.formatter.use_tabs_only_for_leading_indentations=false
+org.eclipse.jdt.core.formatter.wrap_before_additive_operator=true
+org.eclipse.jdt.core.formatter.wrap_before_assertion_message_operator=true
+org.eclipse.jdt.core.formatter.wrap_before_assignment_operator=false
+org.eclipse.jdt.core.formatter.wrap_before_bitwise_operator=true
+org.eclipse.jdt.core.formatter.wrap_before_conditional_operator=true
+org.eclipse.jdt.core.formatter.wrap_before_logical_operator=true
+org.eclipse.jdt.core.formatter.wrap_before_multiplicative_operator=true
+org.eclipse.jdt.core.formatter.wrap_before_or_operator_multicatch=true
+org.eclipse.jdt.core.formatter.wrap_before_relational_operator=true
+org.eclipse.jdt.core.formatter.wrap_before_shift_operator=true
+org.eclipse.jdt.core.formatter.wrap_before_string_concatenation=true
+org.eclipse.jdt.core.formatter.wrap_before_switch_case_arrow_operator=false
+org.eclipse.jdt.core.formatter.wrap_outer_expressions_when_nested=true
+org.eclipse.jdt.core.javaFormatter=org.eclipse.jdt.core.defaultJavaFormatter
diff --git a/plugins/org.eclipse.fordiac.ide.library.model/.settings/org.eclipse.jdt.ui.prefs b/plugins/org.eclipse.fordiac.ide.library.model/.settings/org.eclipse.jdt.ui.prefs
new file mode 100644
index 0000000..6b4802f
--- /dev/null
+++ b/plugins/org.eclipse.fordiac.ide.library.model/.settings/org.eclipse.jdt.ui.prefs
@@ -0,0 +1,147 @@
+eclipse.preferences.version=1
+editor_save_participant_org.eclipse.jdt.ui.postsavelistener.cleanup=true
+formatter_profile=org.eclipse.jdt.ui.default.eclipse_profile
+formatter_settings_version=23
+sp_cleanup.add_all=false
+sp_cleanup.add_default_serial_version_id=true
+sp_cleanup.add_generated_serial_version_id=false
+sp_cleanup.add_missing_annotations=true
+sp_cleanup.add_missing_deprecated_annotations=true
+sp_cleanup.add_missing_methods=false
+sp_cleanup.add_missing_nls_tags=false
+sp_cleanup.add_missing_override_annotations=true
+sp_cleanup.add_missing_override_annotations_interface_methods=true
+sp_cleanup.add_serial_version_id=false
+sp_cleanup.also_simplify_lambda=false
+sp_cleanup.always_use_blocks=true
+sp_cleanup.always_use_parentheses_in_expressions=false
+sp_cleanup.always_use_this_for_non_static_field_access=false
+sp_cleanup.always_use_this_for_non_static_method_access=false
+sp_cleanup.array_with_curly=false
+sp_cleanup.arrays_fill=false
+sp_cleanup.bitwise_conditional_expression=false
+sp_cleanup.boolean_literal=false
+sp_cleanup.boolean_value_rather_than_comparison=true
+sp_cleanup.break_loop=false
+sp_cleanup.collection_cloning=false
+sp_cleanup.comparing_on_criteria=false
+sp_cleanup.comparison_statement=false
+sp_cleanup.controlflow_merge=false
+sp_cleanup.convert_functional_interfaces=true
+sp_cleanup.convert_to_enhanced_for_loop=true
+sp_cleanup.convert_to_enhanced_for_loop_if_loop_var_used=false
+sp_cleanup.convert_to_switch_expressions=true
+sp_cleanup.correct_indentation=true
+sp_cleanup.do_while_rather_than_while=false
+sp_cleanup.double_negation=false
+sp_cleanup.else_if=true
+sp_cleanup.embedded_if=true
+sp_cleanup.evaluate_nullable=true
+sp_cleanup.extract_increment=true
+sp_cleanup.format_source_code=true
+sp_cleanup.format_source_code_changes_only=false
+sp_cleanup.hash=false
+sp_cleanup.if_condition=false
+sp_cleanup.insert_inferred_type_arguments=false
+sp_cleanup.instanceof=true
+sp_cleanup.instanceof_keyword=false
+sp_cleanup.invert_equals=false
+sp_cleanup.join=false
+sp_cleanup.lazy_logical_operator=false
+sp_cleanup.make_local_variable_final=true
+sp_cleanup.make_parameters_final=true
+sp_cleanup.make_private_fields_final=true
+sp_cleanup.make_type_abstract_if_missing_method=false
+sp_cleanup.make_variable_declarations_final=true
+sp_cleanup.map_cloning=false
+sp_cleanup.merge_conditional_blocks=false
+sp_cleanup.multi_catch=true
+sp_cleanup.never_use_blocks=false
+sp_cleanup.never_use_parentheses_in_expressions=true
+sp_cleanup.no_string_creation=false
+sp_cleanup.no_super=true
+sp_cleanup.number_suffix=true
+sp_cleanup.objects_equals=false
+sp_cleanup.on_save_use_additional_actions=true
+sp_cleanup.one_if_rather_than_duplicate_blocks_that_fall_through=false
+sp_cleanup.operand_factorization=false
+sp_cleanup.organize_imports=true
+sp_cleanup.overridden_assignment=false
+sp_cleanup.overridden_assignment_move_decl=true
+sp_cleanup.plain_replacement=false
+sp_cleanup.precompile_regex=false
+sp_cleanup.primitive_comparison=false
+sp_cleanup.primitive_parsing=false
+sp_cleanup.primitive_rather_than_wrapper=false
+sp_cleanup.primitive_serialization=false
+sp_cleanup.pull_out_if_from_if_else=false
+sp_cleanup.pull_up_assignment=true
+sp_cleanup.push_down_negation=false
+sp_cleanup.qualify_static_field_accesses_with_declaring_class=false
+sp_cleanup.qualify_static_member_accesses_through_instances_with_declaring_class=true
+sp_cleanup.qualify_static_member_accesses_through_subtypes_with_declaring_class=true
+sp_cleanup.qualify_static_member_accesses_with_declaring_class=false
+sp_cleanup.qualify_static_method_accesses_with_declaring_class=false
+sp_cleanup.reduce_indentation=true
+sp_cleanup.redundant_comparator=false
+sp_cleanup.redundant_falling_through_block_end=false
+sp_cleanup.remove_private_constructors=true
+sp_cleanup.remove_redundant_modifiers=true
+sp_cleanup.remove_redundant_semicolons=true
+sp_cleanup.remove_redundant_type_arguments=true
+sp_cleanup.remove_trailing_whitespaces=true
+sp_cleanup.remove_trailing_whitespaces_all=true
+sp_cleanup.remove_trailing_whitespaces_ignore_empty=false
+sp_cleanup.remove_unnecessary_array_creation=true
+sp_cleanup.remove_unnecessary_casts=true
+sp_cleanup.remove_unnecessary_nls_tags=true
+sp_cleanup.remove_unused_imports=true
+sp_cleanup.remove_unused_local_variables=false
+sp_cleanup.remove_unused_method_parameters=false
+sp_cleanup.remove_unused_private_fields=true
+sp_cleanup.remove_unused_private_members=false
+sp_cleanup.remove_unused_private_methods=true
+sp_cleanup.remove_unused_private_types=true
+sp_cleanup.replace_deprecated_calls=false
+sp_cleanup.return_expression=false
+sp_cleanup.simplify_lambda_expression_and_method_ref=true
+sp_cleanup.single_used_field=false
+sp_cleanup.sort_members=false
+sp_cleanup.sort_members_all=false
+sp_cleanup.standard_comparison=false
+sp_cleanup.static_inner_class=false
+sp_cleanup.strictly_equal_or_different=false
+sp_cleanup.stringbuffer_to_stringbuilder=false
+sp_cleanup.stringbuilder=false
+sp_cleanup.stringbuilder_for_local_vars=true
+sp_cleanup.stringconcat_stringbuffer_stringbuilder=true
+sp_cleanup.stringconcat_to_textblock=true
+sp_cleanup.substring=false
+sp_cleanup.switch=false
+sp_cleanup.system_property=false
+sp_cleanup.system_property_boolean=false
+sp_cleanup.system_property_file_encoding=false
+sp_cleanup.system_property_file_separator=false
+sp_cleanup.system_property_line_separator=false
+sp_cleanup.system_property_path_separator=false
+sp_cleanup.ternary_operator=false
+sp_cleanup.try_with_resource=false
+sp_cleanup.unlooped_while=false
+sp_cleanup.unreachable_block=false
+sp_cleanup.use_anonymous_class_creation=false
+sp_cleanup.use_autoboxing=false
+sp_cleanup.use_blocks=true
+sp_cleanup.use_blocks_only_for_return_and_throw=false
+sp_cleanup.use_directly_map_method=false
+sp_cleanup.use_lambda=true
+sp_cleanup.use_parentheses_in_expressions=false
+sp_cleanup.use_string_is_blank=false
+sp_cleanup.use_this_for_non_static_field_access=false
+sp_cleanup.use_this_for_non_static_field_access_only_if_necessary=true
+sp_cleanup.use_this_for_non_static_method_access=false
+sp_cleanup.use_this_for_non_static_method_access_only_if_necessary=true
+sp_cleanup.use_unboxing=false
+sp_cleanup.use_var=false
+sp_cleanup.useless_continue=false
+sp_cleanup.useless_return=false
+sp_cleanup.valueof_rather_than_instantiation=false
diff --git a/plugins/org.eclipse.fordiac.ide.library.model/META-INF/MANIFEST.MF b/plugins/org.eclipse.fordiac.ide.library.model/META-INF/MANIFEST.MF
index 8addada..8a990f1 100644
--- a/plugins/org.eclipse.fordiac.ide.library.model/META-INF/MANIFEST.MF
+++ b/plugins/org.eclipse.fordiac.ide.library.model/META-INF/MANIFEST.MF
@@ -5,7 +5,7 @@
Automatic-Module-Name: org.eclipse.fordiac.ide.library.model
Bundle-Vendor: %providerName
Bundle-Localization: plugin
-Bundle-Version: 2.0.1.qualifier
+Bundle-Version: 3.0.0.qualifier
Bundle-ClassPath: .
Bundle-RequiredExecutionEnvironment: JavaSE-17
Export-Package: org.eclipse.fordiac.ide.library.model.library,
@@ -14,5 +14,7 @@
org.eclipse.fordiac.ide.library.model.util
Require-Bundle: org.eclipse.core.runtime,
org.eclipse.emf.ecore;visibility:=reexport,
- org.eclipse.emf.ecore.xmi;visibility:=reexport
+ org.eclipse.emf.ecore.xmi;visibility:=reexport,
+ org.eclipse.core.resources,
+ org.eclipse.fordiac.ide.ui
Bundle-ActivationPolicy: lazy
diff --git a/plugins/org.eclipse.fordiac.ide.library.model/src/org/eclipse/fordiac/ide/library/model/util/ManifestHelper.java b/plugins/org.eclipse.fordiac.ide.library.model/src/org/eclipse/fordiac/ide/library/model/util/ManifestHelper.java
new file mode 100644
index 0000000..4208d7e
--- /dev/null
+++ b/plugins/org.eclipse.fordiac.ide.library.model/src/org/eclipse/fordiac/ide/library/model/util/ManifestHelper.java
@@ -0,0 +1,163 @@
+/*******************************************************************************
+ * Copyright (c) 2024 Primetals Technologies Austria GmbH
+ *
+ * This program and the accompanying materials are made available under the
+ * terms of the Eclipse Public License 2.0 which is available at
+ * http://www.eclipse.org/legal/epl-2.0.
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ * Contributors:
+ * Patrick Aigner
+ * - initial API and implementation and/or initial documentation
+ *******************************************************************************/
+package org.eclipse.fordiac.ide.library.model.util;
+
+import java.io.File;
+import java.io.IOException;
+import java.time.LocalDate;
+import java.time.format.DateTimeFormatter;
+import java.util.Collection;
+import java.util.Optional;
+
+import org.eclipse.core.resources.IContainer;
+import org.eclipse.core.resources.IFile;
+import org.eclipse.core.resources.IProject;
+import org.eclipse.core.runtime.Path;
+import org.eclipse.emf.common.util.EList;
+import org.eclipse.emf.common.util.URI;
+import org.eclipse.emf.ecore.resource.Resource;
+import org.eclipse.emf.ecore.xmi.XMLResource;
+import org.eclipse.fordiac.ide.library.model.library.LibraryFactory;
+import org.eclipse.fordiac.ide.library.model.library.Manifest;
+import org.eclipse.fordiac.ide.library.model.library.Product;
+import org.eclipse.fordiac.ide.library.model.library.Required;
+import org.eclipse.fordiac.ide.library.model.library.VersionInfo;
+import org.eclipse.fordiac.ide.library.model.library.util.LibraryResourceFactoryImpl;
+import org.eclipse.fordiac.ide.ui.FordiacLogHelper;
+
+public final class ManifestHelper {
+ private static final String MANIFEST_FILENAME = "MANIFEST.MF";
+ private static final String SCOPE_PROJECT = "Project";
+ private static final String SCOPE_LIBRARY = "Library";
+ private static final String BASE_VERSION = "1.0.0";
+
+ private static LibraryFactory factory = LibraryFactory.eINSTANCE;
+ private static LibraryResourceFactoryImpl resourceFactory = new LibraryResourceFactoryImpl();
+
+ public static Manifest getContainerManifest(final IContainer container) {
+ if (container == null) {
+ return null;
+ }
+ final IFile manifest = container.getFile(new Path(MANIFEST_FILENAME));
+ if (!manifest.exists()) {
+ return null;
+ }
+ return getManifest(URI.createURI(manifest.getLocationURI().toString()));
+ }
+
+ public static Manifest getFolderManifest(final File container) {
+ if (container == null || !container.isDirectory()) {
+ return null;
+ }
+ final File[] files = container.listFiles((dir, name) -> MANIFEST_FILENAME.equals(name));
+ if (files.length == 0) {
+ return null;
+ }
+ return getManifest(URI.createURI(files[0].toURI().toString()));
+ }
+
+ public static Manifest createProjectManifest(final IProject project, final Collection<Required> dependencies) {
+ final Manifest manifest = createManifest(SCOPE_PROJECT);
+ final IFile manifestFile = project.getFile(MANIFEST_FILENAME);
+ final Resource resource = createResource(URI.createURI(manifestFile.getLocationURI().toString()));
+
+ if (dependencies != null) {
+ for (final Required req : dependencies) {
+ addDependency(manifest, req);
+ }
+ }
+
+ resource.getContents().add(manifest);
+ try {
+ resource.save(null);
+ } catch (final IOException e) {
+ FordiacLogHelper.logWarning("Could not create project manifest", e); //$NON-NLS-1$
+ }
+ return manifest;
+ }
+
+ public static Manifest createManifest(final String scope) {
+ final Manifest manifest = factory.createManifest();
+ manifest.setScope(scope);
+
+ final DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd");
+ final VersionInfo versionInfo = factory.createVersionInfo();
+ versionInfo.setAuthor("");
+ versionInfo.setVersion(BASE_VERSION);
+ versionInfo.setDate(formatter.format(LocalDate.now()));
+
+ final Product product = factory.createProduct();
+ product.setVersionInfo(versionInfo);
+ manifest.setProduct(product);
+
+ return manifest;
+ }
+
+ public static boolean isProject(final Manifest manifest) {
+ return SCOPE_PROJECT.equals(manifest.getScope());
+ }
+
+ public static boolean isLibrary(final Manifest manifest) {
+ return SCOPE_LIBRARY.equals(manifest.getScope());
+ }
+
+ public static void addDependency(final Manifest manifest, final Required dependency) {
+ if (manifest.getDependencies() == null) {
+ manifest.setDependencies(factory.createDependencies());
+ }
+ final EList<Required> reqList = manifest.getDependencies().getRequired();
+ final Optional<Required> result = reqList.stream()
+ .filter(r -> r.getSymbolicName().equals(dependency.getSymbolicName())).findAny();
+ if (result.isPresent()) {
+ reqList.remove(result.get());
+ }
+ reqList.add(dependency);
+ }
+
+ public static void removeDependency(final Manifest manifest, final Required dependency) {
+ if (manifest.getDependencies() == null) {
+ return;
+ }
+ final EList<Required> reqList = manifest.getDependencies().getRequired();
+ reqList.remove(dependency);
+ }
+
+ public static Resource createResource(final URI uri) {
+ final XMLResource resource = (XMLResource) resourceFactory.createResource(uri);
+ resource.getDefaultSaveOptions().put(XMLResource.OPTION_ENCODING, "UTF-8");
+ resource.getDefaultLoadOptions().put(XMLResource.OPTION_ENCODING, "UTF-8");
+ return resource;
+ }
+
+ public static Manifest getManifest(final URI uri) {
+ final Resource resource = createResource(uri);
+ try {
+ resource.load(null);
+ } catch (final IOException e) {
+ FordiacLogHelper.logWarning("Could not load manifest", e); //$NON-NLS-1$
+ return null;
+ }
+ return (Manifest) resource.getContents().get(0);
+ }
+
+ public static Required createRequired(final String symbolicName, final String version) {
+ final Required required = factory.createRequired();
+ required.setSymbolicName(symbolicName);
+ required.setVersion(version);
+ return required;
+ }
+
+ private ManifestHelper() {
+ }
+}
diff --git a/plugins/org.eclipse.fordiac.ide.library.model/src/org/eclipse/fordiac/ide/library/model/util/VersionComparator.java b/plugins/org.eclipse.fordiac.ide.library.model/src/org/eclipse/fordiac/ide/library/model/util/VersionComparator.java
index 6ac77a5..d51f2e3 100644
--- a/plugins/org.eclipse.fordiac.ide.library.model/src/org/eclipse/fordiac/ide/library/model/util/VersionComparator.java
+++ b/plugins/org.eclipse.fordiac.ide.library.model/src/org/eclipse/fordiac/ide/library/model/util/VersionComparator.java
@@ -19,8 +19,8 @@
@Override
public int compare(String o1, String o2) {
- if (o1 == o2) return 0;
- if (o1 == null) return -1;
+ if (o1 == null) return (o2 == null) ? 0 : -1;
+ if (o1.equals(o2)) return 0;
if (o2 == null) return 1;
String[] v1 = o1.split("\\.");
diff --git a/plugins/org.eclipse.fordiac.ide.model.commands/META-INF/MANIFEST.MF b/plugins/org.eclipse.fordiac.ide.model.commands/META-INF/MANIFEST.MF
index a07c586..3a463a5 100644
--- a/plugins/org.eclipse.fordiac.ide.model.commands/META-INF/MANIFEST.MF
+++ b/plugins/org.eclipse.fordiac.ide.model.commands/META-INF/MANIFEST.MF
@@ -3,7 +3,7 @@
Bundle-Name: Commands
Bundle-ActivationPolicy: lazy
Bundle-SymbolicName: org.eclipse.fordiac.ide.model.commands;singleton:=true
-Bundle-Version: 2.0.1.qualifier
+Bundle-Version: 3.0.0.qualifier
Bundle-RequiredExecutionEnvironment: JavaSE-17
Require-Bundle: org.eclipse.jdt.annotation;bundle-version="[2.0.0,3.0.0)";resolution:=optional,
org.eclipse.fordiac.ide.model,
diff --git a/plugins/org.eclipse.fordiac.ide.model.commands/src/org/eclipse/fordiac/ide/model/commands/change/AbstractReconnectConnectionCommand.java b/plugins/org.eclipse.fordiac.ide.model.commands/src/org/eclipse/fordiac/ide/model/commands/change/AbstractReconnectConnectionCommand.java
index 3643b23..81422f1 100644
--- a/plugins/org.eclipse.fordiac.ide.model.commands/src/org/eclipse/fordiac/ide/model/commands/change/AbstractReconnectConnectionCommand.java
+++ b/plugins/org.eclipse.fordiac.ide.model.commands/src/org/eclipse/fordiac/ide/model/commands/change/AbstractReconnectConnectionCommand.java
@@ -14,8 +14,11 @@
*******************************************************************************/
package org.eclipse.fordiac.ide.model.commands.change;
+import java.util.HashSet;
import java.util.Objects;
import java.util.Set;
+import java.util.stream.Collectors;
+import java.util.stream.Stream;
import org.eclipse.emf.ecore.EObject;
import org.eclipse.fordiac.ide.model.commands.ScopedCommand;
@@ -119,10 +122,15 @@
@Override
public Set<EObject> getAffectedObjects() {
- if (parent != null) {
- return Set.of(parent);
+ final Set<EObject> result = Stream.of(parent, connection).filter(Objects::nonNull)
+ .collect(Collectors.toCollection(HashSet::new));
+ if (connectionCreateCmd != null) {
+ result.addAll(connectionCreateCmd.getAffectedObjects());
}
- return Set.of(connection);
+ if (deleteConnectionCmd != null) {
+ result.addAll(deleteConnectionCmd.getAffectedObjects());
+ }
+ return Set.copyOf(result);
}
protected abstract AbstractConnectionCreateCommand createConnectionCreateCommand(FBNetwork parent);
diff --git a/plugins/org.eclipse.fordiac.ide.model.commands/src/org/eclipse/fordiac/ide/model/commands/change/AbstractUpdateFBNElementCommand.java b/plugins/org.eclipse.fordiac.ide.model.commands/src/org/eclipse/fordiac/ide/model/commands/change/AbstractUpdateFBNElementCommand.java
index 111a671..28670a8 100644
--- a/plugins/org.eclipse.fordiac.ide.model.commands/src/org/eclipse/fordiac/ide/model/commands/change/AbstractUpdateFBNElementCommand.java
+++ b/plugins/org.eclipse.fordiac.ide.model.commands/src/org/eclipse/fordiac/ide/model/commands/change/AbstractUpdateFBNElementCommand.java
@@ -129,8 +129,10 @@
// set Visible attribute after reconnect, to not hide connected In/Outputs
// transfer attributes from type first (for new vars), then override them from
// old instance
- transferVisibleAndVarConfigAttributes(newElement.getType().getInterfaceList().getInputVars());
- transferVisibleAndVarConfigAttributes(newElement.getType().getInterfaceList().getOutputVars());
+ if (newElement.getType() != null) {
+ transferVisibleAndVarConfigAttributes(newElement.getType().getInterfaceList().getInputVars());
+ transferVisibleAndVarConfigAttributes(newElement.getType().getInterfaceList().getOutputVars());
+ }
transferVisibleAndVarConfigAttributes(oldElement.getInterface().getInputVars());
transferVisibleAndVarConfigAttributes(oldElement.getInterface().getOutputVars());
diff --git a/plugins/org.eclipse.fordiac.ide.model.commands/src/org/eclipse/fordiac/ide/model/commands/change/MapToCommand.java b/plugins/org.eclipse.fordiac.ide.model.commands/src/org/eclipse/fordiac/ide/model/commands/change/MapToCommand.java
index 6c82c99..a224a37 100644
--- a/plugins/org.eclipse.fordiac.ide.model.commands/src/org/eclipse/fordiac/ide/model/commands/change/MapToCommand.java
+++ b/plugins/org.eclipse.fordiac.ide.model.commands/src/org/eclipse/fordiac/ide/model/commands/change/MapToCommand.java
@@ -203,7 +203,7 @@
}
private FBNetworkElement createTargetUntypedSubApp() {
- final SubApp element = LibraryElementFactory.eINSTANCE.createSubApp();
+ final SubApp element = LibraryElementFactory.eINSTANCE.createUntypedSubApp();
element.setPosition(EcoreUtil.copy(srcElement.getPosition()));
element.setInterface(LibraryElementFactory.eINSTANCE.createInterfaceList());
element.setInterface(EcoreUtil.copy(srcElement.getInterface()));
diff --git a/plugins/org.eclipse.fordiac.ide.model.commands/src/org/eclipse/fordiac/ide/model/commands/change/UntypeSubAppCommand.java b/plugins/org.eclipse.fordiac.ide.model.commands/src/org/eclipse/fordiac/ide/model/commands/change/UntypeSubAppCommand.java
index 715c5ed..8b37be9 100644
--- a/plugins/org.eclipse.fordiac.ide.model.commands/src/org/eclipse/fordiac/ide/model/commands/change/UntypeSubAppCommand.java
+++ b/plugins/org.eclipse.fordiac.ide.model.commands/src/org/eclipse/fordiac/ide/model/commands/change/UntypeSubAppCommand.java
@@ -12,63 +12,33 @@
*******************************************************************************/
package org.eclipse.fordiac.ide.model.commands.change;
-import java.util.Objects;
-import java.util.Set;
-
-import org.eclipse.emf.ecore.EObject;
-import org.eclipse.fordiac.ide.model.commands.Messages;
-import org.eclipse.fordiac.ide.model.commands.ScopedCommand;
+import org.eclipse.emf.ecore.util.EcoreUtil;
import org.eclipse.fordiac.ide.model.helpers.FBNetworkHelper;
+import org.eclipse.fordiac.ide.model.libraryElement.LibraryElementFactory;
import org.eclipse.fordiac.ide.model.libraryElement.SubApp;
-import org.eclipse.fordiac.ide.model.typelibrary.SubAppTypeEntry;
-import org.eclipse.gef.commands.Command;
+import org.eclipse.fordiac.ide.model.libraryElement.TypedSubApp;
+import org.eclipse.fordiac.ide.model.libraryElement.UntypedSubApp;
-public class UntypeSubAppCommand extends Command implements ScopedCommand {
- private final SubApp subapp;
- private final SubAppTypeEntry typeEntry;
+public class UntypeSubAppCommand extends AbstractUpdateFBNElementCommand {
public UntypeSubAppCommand(final SubApp subapp) {
- super(Messages.UntypeSubappCommand_Label);
- this.subapp = Objects.requireNonNull(subapp);
- typeEntry = (SubAppTypeEntry) subapp.getTypeEntry();
- }
-
- public SubApp getSubapp() {
- return subapp;
+ super(subapp);
}
@Override
public boolean canExecute() {
- return null != typeEntry;
+ return super.canExecute() && oldElement instanceof final TypedSubApp subapp && subapp.getType() != null;
}
@Override
- public void execute() {
- if (subapp.getSubAppNetwork() == null) {
- // the subapp network was not yet copied from the type, i.e., subapp was never
- // shown in viewer
- subapp.setSubAppNetwork(
- FBNetworkHelper.copyFBNetWork(subapp.getType().getFBNetwork(), subapp.getInterface()));
- }
- removeType();
- }
-
- @Override
- public void redo() {
- removeType();
- }
-
- @Override
- public void undo() {
- subapp.setTypeEntry(typeEntry);
- }
-
- private void removeType() {
- subapp.setTypeEntry(null);
- }
-
- @Override
- public Set<EObject> getAffectedObjects() {
- return Set.of(subapp);
+ protected void createNewFB() {
+ newElement = LibraryElementFactory.eINSTANCE.createUntypedSubApp();
+ newElement.setName(oldElement.getName());
+ newElement.setPosition(EcoreUtil.copy(oldElement.getPosition()));
+ newElement.setInterface(oldElement.getType().getInterfaceList().copy());
+ createValues();
+ transferInstanceComments();
+ ((UntypedSubApp) newElement).setSubAppNetwork(FBNetworkHelper
+ .copyFBNetWork(((TypedSubApp) oldElement).getType().getFBNetwork(), newElement.getInterface()));
}
}
diff --git a/plugins/org.eclipse.fordiac.ide.model.commands/src/org/eclipse/fordiac/ide/model/commands/create/AbstractConnectionCreateCommand.java b/plugins/org.eclipse.fordiac.ide.model.commands/src/org/eclipse/fordiac/ide/model/commands/create/AbstractConnectionCreateCommand.java
index 1e012a9..e10dad8 100644
--- a/plugins/org.eclipse.fordiac.ide.model.commands/src/org/eclipse/fordiac/ide/model/commands/create/AbstractConnectionCreateCommand.java
+++ b/plugins/org.eclipse.fordiac.ide.model.commands/src/org/eclipse/fordiac/ide/model/commands/create/AbstractConnectionCreateCommand.java
@@ -18,7 +18,10 @@
*******************************************************************************/
package org.eclipse.fordiac.ide.model.commands.create;
+import java.util.Objects;
import java.util.Set;
+import java.util.stream.Collectors;
+import java.util.stream.Stream;
import org.eclipse.emf.ecore.EObject;
import org.eclipse.fordiac.ide.model.ConnectionLayoutTagger;
@@ -304,9 +307,7 @@
@Override
public Set<EObject> getAffectedObjects() {
- if (parent != null) {
- return Set.of(parent);
- }
- return Set.of();
+ return Stream.of(parent, connection, source, destination).filter(Objects::nonNull)
+ .collect(Collectors.toUnmodifiableSet());
}
}
diff --git a/plugins/org.eclipse.fordiac.ide.model.commands/src/org/eclipse/fordiac/ide/model/commands/create/AdapterFBCreateCommand.java b/plugins/org.eclipse.fordiac.ide.model.commands/src/org/eclipse/fordiac/ide/model/commands/create/AdapterFBCreateCommand.java
index dcb7e4f..f76b42d 100644
--- a/plugins/org.eclipse.fordiac.ide.model.commands/src/org/eclipse/fordiac/ide/model/commands/create/AdapterFBCreateCommand.java
+++ b/plugins/org.eclipse.fordiac.ide.model.commands/src/org/eclipse/fordiac/ide/model/commands/create/AdapterFBCreateCommand.java
@@ -18,6 +18,7 @@
import org.eclipse.fordiac.ide.model.libraryElement.CompositeFBType;
import org.eclipse.fordiac.ide.model.libraryElement.FBNetwork;
import org.eclipse.fordiac.ide.model.libraryElement.FBType;
+import org.eclipse.fordiac.ide.model.libraryElement.InterfaceList;
import org.eclipse.fordiac.ide.model.libraryElement.LibraryElementFactory;
import org.eclipse.fordiac.ide.model.libraryElement.SubAppType;
import org.eclipse.fordiac.ide.model.typelibrary.FBTypeEntry;
@@ -42,8 +43,11 @@
// we are creating the adapter FB in a CFB we need to set the adapter network fb
// field here, nothing needs to be done in undo or redo
adapterDecl.setAdapterNetworkFB(getAdapterFB());
+ } else {
+ adapterDecl.setAdapterFB(getAdapterFB());
}
super.execute();
+
}
@Override
@@ -61,4 +65,9 @@
return null;
}
+ @Override
+ protected InterfaceList createInterfaceList() {
+ return getAdapterFB().getType().getInterfaceList().copy();
+ }
+
}
diff --git a/plugins/org.eclipse.fordiac.ide.model.commands/src/org/eclipse/fordiac/ide/model/commands/create/CreateSubAppInstanceCommand.java b/plugins/org.eclipse.fordiac.ide.model.commands/src/org/eclipse/fordiac/ide/model/commands/create/CreateSubAppInstanceCommand.java
index 86d02e8..6cdee01 100644
--- a/plugins/org.eclipse.fordiac.ide.model.commands/src/org/eclipse/fordiac/ide/model/commands/create/CreateSubAppInstanceCommand.java
+++ b/plugins/org.eclipse.fordiac.ide.model.commands/src/org/eclipse/fordiac/ide/model/commands/create/CreateSubAppInstanceCommand.java
@@ -17,16 +17,16 @@
import org.eclipse.fordiac.ide.model.libraryElement.FBNetwork;
import org.eclipse.fordiac.ide.model.libraryElement.InterfaceList;
import org.eclipse.fordiac.ide.model.libraryElement.LibraryElementFactory;
-import org.eclipse.fordiac.ide.model.libraryElement.SubApp;
+import org.eclipse.fordiac.ide.model.libraryElement.TypedSubApp;
import org.eclipse.fordiac.ide.model.typelibrary.SubAppTypeEntry;
public class CreateSubAppInstanceCommand extends AbstractCreateFBNetworkElementCommand {
private final SubAppTypeEntry typeEntry;
- public CreateSubAppInstanceCommand(final SubAppTypeEntry typeEntry, final FBNetwork fbNetwork,
- final int x, final int y) {
- super(fbNetwork, LibraryElementFactory.eINSTANCE.createSubApp(), x, y);
+ public CreateSubAppInstanceCommand(final SubAppTypeEntry typeEntry, final FBNetwork fbNetwork, final int x,
+ final int y) {
+ super(fbNetwork, LibraryElementFactory.eINSTANCE.createTypedSubApp(), x, y);
this.typeEntry = typeEntry;
setLabel(Messages.CreateSubAppInstanceCommand_CreateSubapplicationInstance);
getSubApp().setTypeEntry(typeEntry);
@@ -42,8 +42,8 @@
return typeEntry.getType().getInterfaceList().copy();
}
- public SubApp getSubApp() {
- return (SubApp) getElement();
+ public TypedSubApp getSubApp() {
+ return (TypedSubApp) getElement();
}
public SubAppTypeEntry getTypeEntry() {
diff --git a/plugins/org.eclipse.fordiac.ide.model.commands/src/org/eclipse/fordiac/ide/model/commands/delete/DeleteConnectionCommand.java b/plugins/org.eclipse.fordiac.ide.model.commands/src/org/eclipse/fordiac/ide/model/commands/delete/DeleteConnectionCommand.java
index 892c254..f9f8369 100644
--- a/plugins/org.eclipse.fordiac.ide.model.commands/src/org/eclipse/fordiac/ide/model/commands/delete/DeleteConnectionCommand.java
+++ b/plugins/org.eclipse.fordiac.ide.model.commands/src/org/eclipse/fordiac/ide/model/commands/delete/DeleteConnectionCommand.java
@@ -21,6 +21,8 @@
import java.util.Objects;
import java.util.Set;
+import java.util.stream.Collectors;
+import java.util.stream.Stream;
import org.eclipse.emf.ecore.EObject;
import org.eclipse.fordiac.ide.model.commands.Messages;
@@ -171,9 +173,7 @@
@Override
public Set<EObject> getAffectedObjects() {
- if (connectionParent != null) {
- return Set.of(connectionParent);
- }
- return Set.of(connection);
+ return Stream.of(connectionParent, connection, source, destination).filter(Objects::nonNull)
+ .collect(Collectors.toUnmodifiableSet());
}
}
diff --git a/plugins/org.eclipse.fordiac.ide.model.commands/src/org/eclipse/fordiac/ide/model/commands/delete/DeleteDemuxPortCommand.java b/plugins/org.eclipse.fordiac.ide.model.commands/src/org/eclipse/fordiac/ide/model/commands/delete/DeleteDemuxPortCommand.java
index 296a6f6..3e9e36b 100644
--- a/plugins/org.eclipse.fordiac.ide.model.commands/src/org/eclipse/fordiac/ide/model/commands/delete/DeleteDemuxPortCommand.java
+++ b/plugins/org.eclipse.fordiac.ide.model.commands/src/org/eclipse/fordiac/ide/model/commands/delete/DeleteDemuxPortCommand.java
@@ -79,7 +79,8 @@
@Override
public boolean canExecute() {
- return (variable != null) && !(variable instanceof ErrorMarkerInterface);
+ return (variable != null) && !(variable instanceof ErrorMarkerInterface)
+ && variable.getOutputConnections().isEmpty();
}
@Override
diff --git a/plugins/org.eclipse.fordiac.ide.model.edit/META-INF/MANIFEST.MF b/plugins/org.eclipse.fordiac.ide.model.edit/META-INF/MANIFEST.MF
index 82cc57f..4299699 100644
--- a/plugins/org.eclipse.fordiac.ide.model.edit/META-INF/MANIFEST.MF
+++ b/plugins/org.eclipse.fordiac.ide.model.edit/META-INF/MANIFEST.MF
@@ -3,7 +3,7 @@
Bundle-Name: %pluginName
Bundle-SymbolicName: org.eclipse.fordiac.ide.model.edit;singleton:=true
Automatic-Module-Name: org.eclipse.fordiac.ide.model.edit
-Bundle-Version: 2.0.0.qualifier
+Bundle-Version: 3.0.0.qualifier
Bundle-ClassPath: .
Bundle-Activator: org.eclipse.fordiac.ide.model.data.provider.FordiacEditPlugin$Implementation
Bundle-Vendor: %providerName
diff --git a/plugins/org.eclipse.fordiac.ide.model.edit/icons/full/ctool16/CreateFBNetwork_networkElements_TypedSubApp.gif b/plugins/org.eclipse.fordiac.ide.model.edit/icons/full/ctool16/CreateFBNetwork_networkElements_TypedSubApp.gif
new file mode 100644
index 0000000..5b7a810
--- /dev/null
+++ b/plugins/org.eclipse.fordiac.ide.model.edit/icons/full/ctool16/CreateFBNetwork_networkElements_TypedSubApp.gif
Binary files differ
diff --git a/plugins/org.eclipse.fordiac.ide.model.edit/icons/full/ctool16/CreateFBNetwork_networkElements_UntypedSubApp.gif b/plugins/org.eclipse.fordiac.ide.model.edit/icons/full/ctool16/CreateFBNetwork_networkElements_UntypedSubApp.gif
new file mode 100644
index 0000000..847c1de
--- /dev/null
+++ b/plugins/org.eclipse.fordiac.ide.model.edit/icons/full/ctool16/CreateFBNetwork_networkElements_UntypedSubApp.gif
Binary files differ
diff --git a/plugins/org.eclipse.fordiac.ide.model.edit/icons/full/ctool16/CreateServiceSequence_eventManager_TypedSubApp.gif b/plugins/org.eclipse.fordiac.ide.model.edit/icons/full/ctool16/CreateServiceSequence_eventManager_TypedSubApp.gif
new file mode 100644
index 0000000..788abfe
--- /dev/null
+++ b/plugins/org.eclipse.fordiac.ide.model.edit/icons/full/ctool16/CreateServiceSequence_eventManager_TypedSubApp.gif
Binary files differ
diff --git a/plugins/org.eclipse.fordiac.ide.model.edit/icons/full/ctool16/CreateServiceSequence_eventManager_UntypedSubApp.gif b/plugins/org.eclipse.fordiac.ide.model.edit/icons/full/ctool16/CreateServiceSequence_eventManager_UntypedSubApp.gif
new file mode 100644
index 0000000..578475a
--- /dev/null
+++ b/plugins/org.eclipse.fordiac.ide.model.edit/icons/full/ctool16/CreateServiceSequence_eventManager_UntypedSubApp.gif
Binary files differ
diff --git a/plugins/org.eclipse.fordiac.ide.model.edit/icons/full/ctool16/CreateTextMethod_inOutParameters_TypedSubApp.gif b/plugins/org.eclipse.fordiac.ide.model.edit/icons/full/ctool16/CreateTextMethod_inOutParameters_TypedSubApp.gif
new file mode 100644
index 0000000..8c450d0
--- /dev/null
+++ b/plugins/org.eclipse.fordiac.ide.model.edit/icons/full/ctool16/CreateTextMethod_inOutParameters_TypedSubApp.gif
Binary files differ
diff --git a/plugins/org.eclipse.fordiac.ide.model.edit/icons/full/ctool16/CreateTextMethod_inOutParameters_UntypedSubApp.gif b/plugins/org.eclipse.fordiac.ide.model.edit/icons/full/ctool16/CreateTextMethod_inOutParameters_UntypedSubApp.gif
new file mode 100644
index 0000000..ed8ee38
--- /dev/null
+++ b/plugins/org.eclipse.fordiac.ide.model.edit/icons/full/ctool16/CreateTextMethod_inOutParameters_UntypedSubApp.gif
Binary files differ
diff --git a/plugins/org.eclipse.fordiac.ide.model.edit/icons/full/ctool16/CreateTextMethod_inputParameters_TypedSubApp.gif b/plugins/org.eclipse.fordiac.ide.model.edit/icons/full/ctool16/CreateTextMethod_inputParameters_TypedSubApp.gif
new file mode 100644
index 0000000..8c450d0
--- /dev/null
+++ b/plugins/org.eclipse.fordiac.ide.model.edit/icons/full/ctool16/CreateTextMethod_inputParameters_TypedSubApp.gif
Binary files differ
diff --git a/plugins/org.eclipse.fordiac.ide.model.edit/icons/full/ctool16/CreateTextMethod_inputParameters_UntypedSubApp.gif b/plugins/org.eclipse.fordiac.ide.model.edit/icons/full/ctool16/CreateTextMethod_inputParameters_UntypedSubApp.gif
new file mode 100644
index 0000000..ed8ee38
--- /dev/null
+++ b/plugins/org.eclipse.fordiac.ide.model.edit/icons/full/ctool16/CreateTextMethod_inputParameters_UntypedSubApp.gif
Binary files differ
diff --git a/plugins/org.eclipse.fordiac.ide.model.edit/icons/full/ctool16/CreateTextMethod_outputParameters_TypedSubApp.gif b/plugins/org.eclipse.fordiac.ide.model.edit/icons/full/ctool16/CreateTextMethod_outputParameters_TypedSubApp.gif
new file mode 100644
index 0000000..8c450d0
--- /dev/null
+++ b/plugins/org.eclipse.fordiac.ide.model.edit/icons/full/ctool16/CreateTextMethod_outputParameters_TypedSubApp.gif
Binary files differ
diff --git a/plugins/org.eclipse.fordiac.ide.model.edit/icons/full/ctool16/CreateTextMethod_outputParameters_UntypedSubApp.gif b/plugins/org.eclipse.fordiac.ide.model.edit/icons/full/ctool16/CreateTextMethod_outputParameters_UntypedSubApp.gif
new file mode 100644
index 0000000..ed8ee38
--- /dev/null
+++ b/plugins/org.eclipse.fordiac.ide.model.edit/icons/full/ctool16/CreateTextMethod_outputParameters_UntypedSubApp.gif
Binary files differ
diff --git a/plugins/org.eclipse.fordiac.ide.model.edit/icons/full/ctool16/CreateUntypedSubApp_subAppNetwork_FBNetwork.gif b/plugins/org.eclipse.fordiac.ide.model.edit/icons/full/ctool16/CreateUntypedSubApp_subAppNetwork_FBNetwork.gif
new file mode 100644
index 0000000..14f3b47
--- /dev/null
+++ b/plugins/org.eclipse.fordiac.ide.model.edit/icons/full/ctool16/CreateUntypedSubApp_subAppNetwork_FBNetwork.gif
Binary files differ
diff --git a/plugins/org.eclipse.fordiac.ide.model.edit/icons/full/obj16/TypedSubApp.gif b/plugins/org.eclipse.fordiac.ide.model.edit/icons/full/obj16/TypedSubApp.gif
new file mode 100644
index 0000000..5915591
--- /dev/null
+++ b/plugins/org.eclipse.fordiac.ide.model.edit/icons/full/obj16/TypedSubApp.gif
Binary files differ
diff --git a/plugins/org.eclipse.fordiac.ide.model.edit/icons/full/obj16/UntypedSubApp.gif b/plugins/org.eclipse.fordiac.ide.model.edit/icons/full/obj16/UntypedSubApp.gif
new file mode 100644
index 0000000..83afb9b
--- /dev/null
+++ b/plugins/org.eclipse.fordiac.ide.model.edit/icons/full/obj16/UntypedSubApp.gif
Binary files differ
diff --git a/plugins/org.eclipse.fordiac.ide.model.edit/plugin.properties b/plugins/org.eclipse.fordiac.ide.model.edit/plugin.properties
index be0fb7b..89fa78c 100644
--- a/plugins/org.eclipse.fordiac.ide.model.edit/plugin.properties
+++ b/plugins/org.eclipse.fordiac.ide.model.edit/plugin.properties
@@ -712,3 +712,8 @@
_UI_ConfigurableFB_type = Configurable FB
_UI_ConfigurableMoveFB_type = Configurable Move FB
_UI_ConfigurableMoveFB_dataType_feature = Data Type
+_UI_TypedSubApp_type = Typed Sub App
+_UI_UntypedSubApp_type = Untyped Sub App
+_UI_SubApp_locked_feature = Locked
+_UI_TypedSubApp_subAppNetwork_feature = Sub App Network
+_UI_UntypedSubApp_subAppNetwork_feature = Sub App Network
diff --git a/plugins/org.eclipse.fordiac.ide.model.edit/src-gen/org/eclipse/fordiac/ide/model/libraryElement/provider/FBNetworkItemProvider.java b/plugins/org.eclipse.fordiac.ide.model.edit/src-gen/org/eclipse/fordiac/ide/model/libraryElement/provider/FBNetworkItemProvider.java
index d3d0686..7300b3c 100644
--- a/plugins/org.eclipse.fordiac.ide.model.edit/src-gen/org/eclipse/fordiac/ide/model/libraryElement/provider/FBNetworkItemProvider.java
+++ b/plugins/org.eclipse.fordiac.ide.model.edit/src-gen/org/eclipse/fordiac/ide/model/libraryElement/provider/FBNetworkItemProvider.java
@@ -1,13 +1,13 @@
/**
* *******************************************************************************
* Copyright (c) 2008 - 2017 Profactor GmbH, TU Wien ACIN, fortiss GmbH
- *
+ *
* This program and the accompanying materials are made available under the
* terms of the Eclipse Public License 2.0 which is available at
* http://www.eclipse.org/legal/epl-2.0.
*
* SPDX-License-Identifier: EPL-2.0
- *
+ *
* Contributors:
* Gerhard Ebenhofer, Alois Zoitl, Ingo Hegny, Monika Wenger, Martin Jobst
* - initial API and implementation and/or initial documentation
@@ -36,22 +36,31 @@
import org.eclipse.fordiac.ide.model.libraryElement.LibraryElementPackage;
import org.eclipse.fordiac.ide.ui.imageprovider.FordiacImage;
-/** This is the item provider adapter for a {@link org.eclipse.fordiac.ide.model.libraryElement.FBNetwork} object. <!--
+/**
+ * This is the item provider adapter for a
+ * {@link org.eclipse.fordiac.ide.model.libraryElement.FBNetwork} object. <!--
* begin-user-doc --> <!-- end-user-doc -->
- *
- * @generated */
+ *
+ * @generated
+ */
public class FBNetworkItemProvider 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 */
+ /**
+ * This constructs an instance from a factory and a notifier. <!--
+ * begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
public FBNetworkItemProvider(AdapterFactory adapterFactory) {
super(adapterFactory);
}
- /** This returns the property descriptors for the adapted class. <!-- begin-user-doc --> <!-- end-user-doc -->
- *
- * @generated */
+ /**
+ * 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) {
@@ -61,12 +70,13 @@
return itemPropertyDescriptors;
}
- /** This specifies how to implement {@link #getChildren} and is used to deduce an appropriate feature for an
+ /**
+ * 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}. <!-- begin-user-doc --> <!--
- * end-user-doc -->
- *
- * @generated */
+ * {@link org.eclipse.emf.edit.command.MoveCommand} in {@link #createCommand}.
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ * @generated
+ */
@Override
public Collection<? extends EStructuralFeature> getChildrenFeatures(Object object) {
if (childrenFeatures == null) {
@@ -76,9 +86,10 @@
return childrenFeatures;
}
- /** <!-- begin-user-doc --> <!-- end-user-doc -->
- *
- * @generated */
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ * @generated
+ */
@Override
protected EStructuralFeature getChildFeature(Object object, Object child) {
// Check the type of the specified child object and return the proper feature to use for
@@ -87,85 +98,155 @@
return super.getChildFeature(object, child);
}
- /** This returns FBNetwork.gif. <!-- begin-user-doc --> <!-- end-user-doc -->
- *
- * @generated not */
+ /**
+ * This returns FBNetwork.gif. <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated not
+ */
@Override
- public Object getImage(Object object) {
+ public Object getImage(final Object object) {
return overlayImage(object, FordiacImage.ICON_FB_NETWORK.getImage());
}
- /** This returns the label text for the adapted class. <!-- begin-user-doc --> <!-- end-user-doc -->
- *
- * @generated */
+ /**
+ * This returns the label text for the adapted class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
@Override
public String getText(Object object) {
return getString("_UI_FBNetwork_type"); //$NON-NLS-1$
}
- /** 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 */
+ /**
+ * 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(FBNetwork.class)) {
- case LibraryElementPackage.FB_NETWORK__DATA_CONNECTIONS:
- case LibraryElementPackage.FB_NETWORK__EVENT_CONNECTIONS:
- case LibraryElementPackage.FB_NETWORK__ADAPTER_CONNECTIONS:
- fireNotifyChanged(new ViewerNotification(notification, notification.getNotifier(), false, true));
- return;
- case LibraryElementPackage.FB_NETWORK__NETWORK_ELEMENTS:
- fireNotifyChanged(new ViewerNotification(notification, notification.getNotifier(), true, false));
- return;
- default:
- super.notifyChanged(notification);
- return;
- }
+ case LibraryElementPackage.FB_NETWORK__DATA_CONNECTIONS:
+ case LibraryElementPackage.FB_NETWORK__EVENT_CONNECTIONS:
+ case LibraryElementPackage.FB_NETWORK__ADAPTER_CONNECTIONS:
+ fireNotifyChanged(new ViewerNotification(notification, notification.getNotifier(), false, true));
+ return;
+ case LibraryElementPackage.FB_NETWORK__NETWORK_ELEMENTS:
+ fireNotifyChanged(new ViewerNotification(notification, notification.getNotifier(), true, false));
+ return;
+ default:
+ super.notifyChanged(notification);
+ return;
+ }
}
- /** 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 */
+ /**
+ * 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);
- newChildDescriptors.add(createChildParameter(LibraryElementPackage.Literals.FB_NETWORK__NETWORK_ELEMENTS,
- LibraryElementFactory.eINSTANCE.createFB()));
+ newChildDescriptors.add
+ (createChildParameter
+ (LibraryElementPackage.Literals.FB_NETWORK__NETWORK_ELEMENTS,
+ LibraryElementFactory.eINSTANCE.createFB()));
- newChildDescriptors.add(createChildParameter(LibraryElementPackage.Literals.FB_NETWORK__NETWORK_ELEMENTS,
- LibraryElementFactory.eINSTANCE.createSubApp()));
+ newChildDescriptors.add
+ (createChildParameter
+ (LibraryElementPackage.Literals.FB_NETWORK__NETWORK_ELEMENTS,
+ LibraryElementFactory.eINSTANCE.createAdapterFB()));
- newChildDescriptors.add(createChildParameter(LibraryElementPackage.Literals.FB_NETWORK__NETWORK_ELEMENTS,
- LibraryElementFactory.eINSTANCE.createResourceTypeFB()));
+ newChildDescriptors.add
+ (createChildParameter
+ (LibraryElementPackage.Literals.FB_NETWORK__NETWORK_ELEMENTS,
+ LibraryElementFactory.eINSTANCE.createCFBInstance()));
- newChildDescriptors.add(createChildParameter(LibraryElementPackage.Literals.FB_NETWORK__NETWORK_ELEMENTS,
- LibraryElementFactory.eINSTANCE.createAdapterFB()));
+ newChildDescriptors.add
+ (createChildParameter
+ (LibraryElementPackage.Literals.FB_NETWORK__NETWORK_ELEMENTS,
+ LibraryElementFactory.eINSTANCE.createComment()));
- newChildDescriptors.add(createChildParameter(LibraryElementPackage.Literals.FB_NETWORK__NETWORK_ELEMENTS,
- LibraryElementFactory.eINSTANCE.createDemultiplexer()));
+ newChildDescriptors.add
+ (createChildParameter
+ (LibraryElementPackage.Literals.FB_NETWORK__NETWORK_ELEMENTS,
+ LibraryElementFactory.eINSTANCE.createCommunicationChannel()));
- newChildDescriptors.add(createChildParameter(LibraryElementPackage.Literals.FB_NETWORK__NETWORK_ELEMENTS,
- LibraryElementFactory.eINSTANCE.createMultiplexer()));
+ newChildDescriptors.add
+ (createChildParameter
+ (LibraryElementPackage.Literals.FB_NETWORK__NETWORK_ELEMENTS,
+ LibraryElementFactory.eINSTANCE.createConfigurableMoveFB()));
- newChildDescriptors.add(createChildParameter(LibraryElementPackage.Literals.FB_NETWORK__DATA_CONNECTIONS,
- LibraryElementFactory.eINSTANCE.createDataConnection()));
+ newChildDescriptors.add
+ (createChildParameter
+ (LibraryElementPackage.Literals.FB_NETWORK__NETWORK_ELEMENTS,
+ LibraryElementFactory.eINSTANCE.createStructManipulator()));
- newChildDescriptors.add(createChildParameter(LibraryElementPackage.Literals.FB_NETWORK__EVENT_CONNECTIONS,
- LibraryElementFactory.eINSTANCE.createEventConnection()));
+ newChildDescriptors.add
+ (createChildParameter
+ (LibraryElementPackage.Literals.FB_NETWORK__NETWORK_ELEMENTS,
+ LibraryElementFactory.eINSTANCE.createDemultiplexer()));
- newChildDescriptors.add(createChildParameter(LibraryElementPackage.Literals.FB_NETWORK__ADAPTER_CONNECTIONS,
- LibraryElementFactory.eINSTANCE.createAdapterConnection()));
+ newChildDescriptors.add
+ (createChildParameter
+ (LibraryElementPackage.Literals.FB_NETWORK__NETWORK_ELEMENTS,
+ LibraryElementFactory.eINSTANCE.createErrorMarkerFBNElement()));
+
+ newChildDescriptors.add
+ (createChildParameter
+ (LibraryElementPackage.Literals.FB_NETWORK__NETWORK_ELEMENTS,
+ LibraryElementFactory.eINSTANCE.createGroup()));
+
+ newChildDescriptors.add
+ (createChildParameter
+ (LibraryElementPackage.Literals.FB_NETWORK__NETWORK_ELEMENTS,
+ LibraryElementFactory.eINSTANCE.createMultiplexer()));
+
+ newChildDescriptors.add
+ (createChildParameter
+ (LibraryElementPackage.Literals.FB_NETWORK__NETWORK_ELEMENTS,
+ LibraryElementFactory.eINSTANCE.createResourceTypeFB()));
+
+ newChildDescriptors.add
+ (createChildParameter
+ (LibraryElementPackage.Literals.FB_NETWORK__NETWORK_ELEMENTS,
+ LibraryElementFactory.eINSTANCE.createTypedSubApp()));
+
+ newChildDescriptors.add
+ (createChildParameter
+ (LibraryElementPackage.Literals.FB_NETWORK__NETWORK_ELEMENTS,
+ LibraryElementFactory.eINSTANCE.createUntypedSubApp()));
+
+ newChildDescriptors.add
+ (createChildParameter
+ (LibraryElementPackage.Literals.FB_NETWORK__DATA_CONNECTIONS,
+ LibraryElementFactory.eINSTANCE.createDataConnection()));
+
+ newChildDescriptors.add
+ (createChildParameter
+ (LibraryElementPackage.Literals.FB_NETWORK__EVENT_CONNECTIONS,
+ LibraryElementFactory.eINSTANCE.createEventConnection()));
+
+ newChildDescriptors.add
+ (createChildParameter
+ (LibraryElementPackage.Literals.FB_NETWORK__ADAPTER_CONNECTIONS,
+ LibraryElementFactory.eINSTANCE.createAdapterConnection()));
}
- /** Return the resource locator for this item provider's resources. <!-- begin-user-doc --> <!-- end-user-doc -->
- *
- * @generated */
+ /**
+ * Return the resource locator for this item provider's resources. <!--
+ * begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
@Override
public ResourceLocator getResourceLocator() {
return FordiacEditPlugin.INSTANCE;
diff --git a/plugins/org.eclipse.fordiac.ide.model.edit/src-gen/org/eclipse/fordiac/ide/model/libraryElement/provider/LibraryElementItemProviderAdapterFactory.java b/plugins/org.eclipse.fordiac.ide.model.edit/src-gen/org/eclipse/fordiac/ide/model/libraryElement/provider/LibraryElementItemProviderAdapterFactory.java
index b375741..47182c1 100644
--- a/plugins/org.eclipse.fordiac.ide.model.edit/src-gen/org/eclipse/fordiac/ide/model/libraryElement/provider/LibraryElementItemProviderAdapterFactory.java
+++ b/plugins/org.eclipse.fordiac.ide.model.edit/src-gen/org/eclipse/fordiac/ide/model/libraryElement/provider/LibraryElementItemProviderAdapterFactory.java
@@ -1831,29 +1831,6 @@
}
/**
- * This keeps track of the one adapter used for all {@link org.eclipse.fordiac.ide.model.libraryElement.SubApp} instances.
- * <!-- begin-user-doc -->
- * <!-- end-user-doc -->
- * @generated
- */
- protected SubAppItemProvider subAppItemProvider;
-
- /**
- * This creates an adapter for a {@link org.eclipse.fordiac.ide.model.libraryElement.SubApp}.
- * <!-- begin-user-doc -->
- * <!-- end-user-doc -->
- * @generated
- */
- @Override
- public Adapter createSubAppAdapter() {
- if (subAppItemProvider == null) {
- subAppItemProvider = new SubAppItemProvider(this);
- }
-
- return subAppItemProvider;
- }
-
- /**
* This keeps track of the one adapter used for all {@link org.eclipse.fordiac.ide.model.libraryElement.StructManipulator} instances.
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
@@ -1946,6 +1923,52 @@
}
/**
+ * This keeps track of the one adapter used for all {@link org.eclipse.fordiac.ide.model.libraryElement.TypedSubApp} instances.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected TypedSubAppItemProvider typedSubAppItemProvider;
+
+ /**
+ * This creates an adapter for a {@link org.eclipse.fordiac.ide.model.libraryElement.TypedSubApp}.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public Adapter createTypedSubAppAdapter() {
+ if (typedSubAppItemProvider == null) {
+ typedSubAppItemProvider = new TypedSubAppItemProvider(this);
+ }
+
+ return typedSubAppItemProvider;
+ }
+
+ /**
+ * This keeps track of the one adapter used for all {@link org.eclipse.fordiac.ide.model.libraryElement.UntypedSubApp} instances.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected UntypedSubAppItemProvider untypedSubAppItemProvider;
+
+ /**
+ * This creates an adapter for a {@link org.eclipse.fordiac.ide.model.libraryElement.UntypedSubApp}.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public Adapter createUntypedSubAppAdapter() {
+ if (untypedSubAppItemProvider == null) {
+ untypedSubAppItemProvider = new UntypedSubAppItemProvider(this);
+ }
+
+ return untypedSubAppItemProvider;
+ }
+
+ /**
* This keeps track of the one adapter used for all {@link org.eclipse.fordiac.ide.model.libraryElement.Value} instances.
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
diff --git a/plugins/org.eclipse.fordiac.ide.model.edit/src-gen/org/eclipse/fordiac/ide/model/libraryElement/provider/ServiceSequenceItemProvider.java b/plugins/org.eclipse.fordiac.ide.model.edit/src-gen/org/eclipse/fordiac/ide/model/libraryElement/provider/ServiceSequenceItemProvider.java
index 7d3e7ca..680c8a5 100644
--- a/plugins/org.eclipse.fordiac.ide.model.edit/src-gen/org/eclipse/fordiac/ide/model/libraryElement/provider/ServiceSequenceItemProvider.java
+++ b/plugins/org.eclipse.fordiac.ide.model.edit/src-gen/org/eclipse/fordiac/ide/model/libraryElement/provider/ServiceSequenceItemProvider.java
@@ -675,11 +675,6 @@
newChildDescriptors.add
(createChildParameter
(LibraryElementPackage.Literals.SERVICE_SEQUENCE__EVENT_MANAGER,
- LibraryElementFactory.eINSTANCE.createSubApp()));
-
- newChildDescriptors.add
- (createChildParameter
- (LibraryElementPackage.Literals.SERVICE_SEQUENCE__EVENT_MANAGER,
LibraryElementFactory.eINSTANCE.createSubAppType()));
newChildDescriptors.add
@@ -690,6 +685,16 @@
newChildDescriptors.add
(createChildParameter
(LibraryElementPackage.Literals.SERVICE_SEQUENCE__EVENT_MANAGER,
+ LibraryElementFactory.eINSTANCE.createTypedSubApp()));
+
+ newChildDescriptors.add
+ (createChildParameter
+ (LibraryElementPackage.Literals.SERVICE_SEQUENCE__EVENT_MANAGER,
+ LibraryElementFactory.eINSTANCE.createUntypedSubApp()));
+
+ newChildDescriptors.add
+ (createChildParameter
+ (LibraryElementPackage.Literals.SERVICE_SEQUENCE__EVENT_MANAGER,
LibraryElementFactory.eINSTANCE.createValue()));
newChildDescriptors.add
diff --git a/plugins/org.eclipse.fordiac.ide.model.edit/src-gen/org/eclipse/fordiac/ide/model/libraryElement/provider/SubAppItemProvider.java b/plugins/org.eclipse.fordiac.ide.model.edit/src-gen/org/eclipse/fordiac/ide/model/libraryElement/provider/SubAppItemProvider.java
index 36e8dff..1a9a0b4 100644
--- a/plugins/org.eclipse.fordiac.ide.model.edit/src-gen/org/eclipse/fordiac/ide/model/libraryElement/provider/SubAppItemProvider.java
+++ b/plugins/org.eclipse.fordiac.ide.model.edit/src-gen/org/eclipse/fordiac/ide/model/libraryElement/provider/SubAppItemProvider.java
@@ -16,59 +16,57 @@
package org.eclipse.fordiac.ide.model.libraryElement.provider;
import java.util.Collection;
-import java.util.List;
+import java.util.List;
import org.eclipse.emf.common.notify.AdapterFactory;
import org.eclipse.emf.common.notify.Notification;
-import org.eclipse.emf.ecore.EStructuralFeature;
import org.eclipse.emf.edit.provider.ComposeableAdapterFactory;
import org.eclipse.emf.edit.provider.IItemPropertyDescriptor;
import org.eclipse.emf.edit.provider.ItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.ViewerNotification;
import org.eclipse.fordiac.ide.model.libraryElement.LibraryElementPackage;
import org.eclipse.fordiac.ide.model.libraryElement.SubApp;
-import org.eclipse.fordiac.ide.ui.imageprovider.FordiacImage;
-/** This is the item provider adapter for a {@link org.eclipse.fordiac.ide.model.libraryElement.SubApp} object. <!--
+/**
+ * This is the item provider adapter for a
+ * {@link org.eclipse.fordiac.ide.model.libraryElement.SubApp} object. <!--
* begin-user-doc --> <!-- end-user-doc -->
*
- * @generated */
+ * @generated
+ */
public class SubAppItemProvider extends FBNetworkElementItemProvider {
- /** This constructs an instance from a factory and a notifier. <!-- begin-user-doc --> <!-- end-user-doc -->
+ /**
+ * This constructs an instance from a factory and a notifier. <!--
+ * begin-user-doc --> <!-- end-user-doc -->
*
- * @generated */
+ * @generated
+ */
public SubAppItemProvider(AdapterFactory adapterFactory) {
super(adapterFactory);
}
- /** This returns the property descriptors for the adapted class. <!-- begin-user-doc --> <!-- end-user-doc -->
- *
- * @generated */
+ /**
+ * 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);
- addSubAppNetworkPropertyDescriptor(object);
+ addWidthPropertyDescriptor(object);
+ addHeightPropertyDescriptor(object);
+ addLockedPropertyDescriptor(object);
}
return itemPropertyDescriptors;
}
- /** This adds a property descriptor for the Sub App Network feature. <!-- begin-user-doc --> <!-- end-user-doc -->
- *
- * @generated */
- protected void addSubAppNetworkPropertyDescriptor(Object object) {
- itemPropertyDescriptors
- .add(createItemPropertyDescriptor(((ComposeableAdapterFactory) adapterFactory).getRootAdapterFactory(),
- getResourceLocator(), getString("_UI_SubApp_subAppNetwork_feature"), //$NON-NLS-1$
- getString("_UI_PropertyDescriptor_description", "_UI_SubApp_subAppNetwork_feature", //$NON-NLS-1$ //$NON-NLS-2$
- "_UI_SubApp_type"), //$NON-NLS-1$
- LibraryElementPackage.Literals.SUB_APP__SUB_APP_NETWORK, true, false, true, null, null, null));
- }
-
/**
* This adds a property descriptor for the Width feature.
- * <!-- begin-user-doc -->
- * <!-- end-user-doc -->
+ * <!-- begin-user-doc
+ * --> <!-- end-user-doc -->
* @generated
*/
protected void addWidthPropertyDescriptor(Object object) {
@@ -89,8 +87,8 @@
/**
* This adds a property descriptor for the Height feature.
- * <!-- begin-user-doc -->
- * <!-- end-user-doc -->
+ * <!-- begin-user-doc
+ * --> <!-- end-user-doc -->
* @generated
*/
protected void addHeightPropertyDescriptor(Object object) {
@@ -111,8 +109,8 @@
/**
* This adds a property descriptor for the Locked feature.
- * <!-- begin-user-doc -->
- * <!-- end-user-doc -->
+ * <!-- begin-user-doc
+ * --> <!-- end-user-doc -->
* @generated
*/
protected void addLockedPropertyDescriptor(Object object) {
@@ -120,8 +118,8 @@
(createItemPropertyDescriptor
(((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
getResourceLocator(),
- getString("_UI_SubApp_Locked_feature"), //$NON-NLS-1$
- getString("_UI_PropertyDescriptor_description", "_UI_SubApp_Locked_feature", "_UI_SubApp_type"), //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
+ getString("_UI_SubApp_locked_feature"), //$NON-NLS-1$
+ getString("_UI_PropertyDescriptor_description", "_UI_SubApp_locked_feature", "_UI_SubApp_type"), //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
LibraryElementPackage.Literals.SUB_APP__LOCKED,
true,
false,
@@ -131,66 +129,49 @@
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}. <!-- begin-user-doc --> <!--
- * end-user-doc -->
- *
- * @generated */
- @Override
- public Collection<? extends EStructuralFeature> getChildrenFeatures(Object object) {
- if (childrenFeatures == null) {
- super.getChildrenFeatures(object);
- childrenFeatures.add(LibraryElementPackage.Literals.SUB_APP__SUB_APP_NETWORK);
- }
- return childrenFeatures;
- }
-
- /** <!-- begin-user-doc --> <!-- end-user-doc -->
- *
- * @generated */
- @Override
- protected EStructuralFeature getChildFeature(Object object, Object child) {
- // Check the type of the specified child object and return the proper feature to use for
- // adding (see {@link AddCommand}) it as a child.
-
- return super.getChildFeature(object, child);
- }
-
- /** This returns SubApp.gif. <!-- begin-user-doc --> <!-- end-user-doc -->
- *
- * @generated not */
- @Override
- public Object getImage(Object object) {
- FordiacImage subappImage = (((SubApp) object).isTyped()) ? FordiacImage.ICON_SUB_APP_TYPE
- : FordiacImage.ICON_SUB_APP;
- return overlayImage(object, subappImage.getImage());
- }
-
- /** This returns the label text for the adapted class. <!-- begin-user-doc --> <!-- end-user-doc -->
- *
- * @generated not */
+ /**
+ * This returns the label text for the adapted class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
@Override
public String getText(Object object) {
- String label = ((SubApp) object).getName();
- return label == null || label.length() == 0 ? getString("_UI_SubApp_type") : label; //$NON-NLS-1$
+ String label = ((SubApp)object).getName();
+ return label == null || label.length() == 0 ?
+ getString("_UI_SubApp_type") : //$NON-NLS-1$
+ getString("_UI_SubApp_type") + " " + label; //$NON-NLS-1$ //$NON-NLS-2$
}
- /** 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 */
+ /**
+ * 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);
- super.notifyChanged(notification);
+
+ switch (notification.getFeatureID(SubApp.class)) {
+ case LibraryElementPackage.SUB_APP__WIDTH:
+ case LibraryElementPackage.SUB_APP__HEIGHT:
+ case LibraryElementPackage.SUB_APP__LOCKED:
+ fireNotifyChanged(new ViewerNotification(notification, notification.getNotifier(), false, true));
+ return;
+ default:
+ super.notifyChanged(notification);
+ return;
+ }
}
- /** 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 */
+ /**
+ * 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);
diff --git a/plugins/org.eclipse.fordiac.ide.model.edit/src-gen/org/eclipse/fordiac/ide/model/libraryElement/provider/TypedSubAppItemProvider.java b/plugins/org.eclipse.fordiac.ide.model.edit/src-gen/org/eclipse/fordiac/ide/model/libraryElement/provider/TypedSubAppItemProvider.java
new file mode 100644
index 0000000..7bd7466
--- /dev/null
+++ b/plugins/org.eclipse.fordiac.ide.model.edit/src-gen/org/eclipse/fordiac/ide/model/libraryElement/provider/TypedSubAppItemProvider.java
@@ -0,0 +1,138 @@
+/**
+ * *******************************************************************************
+ * Copyright (c) 2008 - 2018 Profactor GmbH, TU Wien ACIN, fortiss GmbH
+ * 2022-2023 Martin Erich Jobst
+ *
+ * This program and the accompanying materials are made available under the
+ * terms of the Eclipse Public License 2.0 which is available at
+ * http://www.eclipse.org/legal/epl-2.0.
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ * Contributors:
+ * Gerhard Ebenhofer, Alois Zoitl, Ingo Hegny, Monika Wenger, Martin Jobst
+ * - initial API and implementation and/or initial documentation
+ * *******************************************************************************
+ */
+package org.eclipse.fordiac.ide.model.libraryElement.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.edit.provider.ComposeableAdapterFactory;
+import org.eclipse.emf.edit.provider.IItemPropertyDescriptor;
+
+import org.eclipse.fordiac.ide.model.libraryElement.LibraryElementPackage;
+import org.eclipse.fordiac.ide.model.libraryElement.TypedSubApp;
+
+import org.eclipse.fordiac.ide.ui.imageprovider.FordiacImage;
+
+/**
+ * This is the item provider adapter for a {@link org.eclipse.fordiac.ide.model.libraryElement.TypedSubApp} object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class TypedSubAppItemProvider extends SubAppItemProvider {
+ /**
+ * This constructs an instance from a factory and a notifier.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public TypedSubAppItemProvider(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);
+
+ addSubAppNetworkPropertyDescriptor(object);
+ }
+ return itemPropertyDescriptors;
+ }
+
+ /**
+ * This adds a property descriptor for the Sub App Network feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected void addSubAppNetworkPropertyDescriptor(Object object) {
+ itemPropertyDescriptors.add
+ (createItemPropertyDescriptor
+ (((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+ getResourceLocator(),
+ getString("_UI_TypedSubApp_subAppNetwork_feature"), //$NON-NLS-1$
+ getString("_UI_PropertyDescriptor_description", "_UI_TypedSubApp_subAppNetwork_feature", "_UI_TypedSubApp_type"), //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
+ LibraryElementPackage.Literals.TYPED_SUB_APP__SUB_APP_NETWORK,
+ true,
+ false,
+ true,
+ null,
+ null,
+ null));
+ }
+
+ /**
+ * This returns TypedSubApp.gif.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated not
+ */
+ @Override
+ public Object getImage(Object object) {
+ return overlayImage(object, FordiacImage.ICON_SUB_APP_TYPE.getImage()); //$NON-NLS-1$
+ }
+
+ /**
+ * This returns the label text for the adapted class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated not
+ */
+ @Override
+ public String getText(Object object) {
+ final String label = ((TypedSubApp) object).getName();
+ return label == null || label.length() == 0 ? getString("_UI_SubApp_type") : label; //$NON-NLS-1$
+ }
+
+
+ /**
+ * 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);
+ 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);
+ }
+
+}
diff --git a/plugins/org.eclipse.fordiac.ide.model.edit/src-gen/org/eclipse/fordiac/ide/model/libraryElement/provider/UntypedSubAppItemProvider.java b/plugins/org.eclipse.fordiac.ide.model.edit/src-gen/org/eclipse/fordiac/ide/model/libraryElement/provider/UntypedSubAppItemProvider.java
new file mode 100644
index 0000000..b9f9240
--- /dev/null
+++ b/plugins/org.eclipse.fordiac.ide.model.edit/src-gen/org/eclipse/fordiac/ide/model/libraryElement/provider/UntypedSubAppItemProvider.java
@@ -0,0 +1,161 @@
+/**
+ * *******************************************************************************
+ * Copyright (c) 2008 - 2018 Profactor GmbH, TU Wien ACIN, fortiss GmbH
+ * 2022-2023 Martin Erich Jobst
+ *
+ * This program and the accompanying materials are made available under the
+ * terms of the Eclipse Public License 2.0 which is available at
+ * http://www.eclipse.org/legal/epl-2.0.
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ * Contributors:
+ * Gerhard Ebenhofer, Alois Zoitl, Ingo Hegny, Monika Wenger, Martin Jobst
+ * - initial API and implementation and/or initial documentation
+ * *******************************************************************************
+ */
+package org.eclipse.fordiac.ide.model.libraryElement.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.ecore.EStructuralFeature;
+
+import org.eclipse.emf.edit.provider.IItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.ViewerNotification;
+
+import org.eclipse.fordiac.ide.model.libraryElement.LibraryElementFactory;
+import org.eclipse.fordiac.ide.model.libraryElement.LibraryElementPackage;
+import org.eclipse.fordiac.ide.model.libraryElement.UntypedSubApp;
+
+import org.eclipse.fordiac.ide.ui.imageprovider.FordiacImage;
+
+/**
+ * This is the item provider adapter for a {@link org.eclipse.fordiac.ide.model.libraryElement.UntypedSubApp} object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class UntypedSubAppItemProvider extends SubAppItemProvider {
+ /**
+ * This constructs an instance from a factory and a notifier.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public UntypedSubAppItemProvider(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);
+
+ }
+ return itemPropertyDescriptors;
+ }
+
+ /**
+ * 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}.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public Collection<? extends EStructuralFeature> getChildrenFeatures(Object object) {
+ if (childrenFeatures == null) {
+ super.getChildrenFeatures(object);
+ childrenFeatures.add(LibraryElementPackage.Literals.UNTYPED_SUB_APP__SUB_APP_NETWORK);
+ }
+ return childrenFeatures;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected EStructuralFeature getChildFeature(Object object, Object child) {
+ // Check the type of the specified child object and return the proper feature to use for
+ // adding (see {@link AddCommand}) it as a child.
+
+ return super.getChildFeature(object, child);
+ }
+
+ /**
+ * This returns UntypedSubApp.gif.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated not
+ */
+ @Override
+ public Object getImage(Object object) {
+ return overlayImage(object, FordiacImage.ICON_SUB_APP.getImage()); //$NON-NLS-1$
+ }
+
+ /**
+ * This returns the label text for the adapted class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated not
+ */
+ @Override
+ public String getText(Object object) {
+ final String label = ((UntypedSubApp) object).getName();
+ return label == null || label.length() == 0 ? getString("_UI_SubApp_type") : label; //$NON-NLS-1$
+ }
+
+
+ /**
+ * 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(UntypedSubApp.class)) {
+ case LibraryElementPackage.UNTYPED_SUB_APP__SUB_APP_NETWORK:
+ fireNotifyChanged(new ViewerNotification(notification, notification.getNotifier(), true, false));
+ return;
+ default:
+ super.notifyChanged(notification);
+ return;
+ }
+ }
+
+ /**
+ * 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);
+
+ newChildDescriptors.add
+ (createChildParameter
+ (LibraryElementPackage.Literals.UNTYPED_SUB_APP__SUB_APP_NETWORK,
+ LibraryElementFactory.eINSTANCE.createFBNetwork()));
+ }
+
+}
diff --git a/plugins/org.eclipse.fordiac.ide.model.eval.st/META-INF/MANIFEST.MF b/plugins/org.eclipse.fordiac.ide.model.eval.st/META-INF/MANIFEST.MF
index 0d2b234..c350935 100644
--- a/plugins/org.eclipse.fordiac.ide.model.eval.st/META-INF/MANIFEST.MF
+++ b/plugins/org.eclipse.fordiac.ide.model.eval.st/META-INF/MANIFEST.MF
@@ -2,7 +2,7 @@
Bundle-ManifestVersion: 2
Bundle-Name: Evaluator
Bundle-SymbolicName: org.eclipse.fordiac.ide.model.eval.st;singleton:=true
-Bundle-Version: 2.0.1.qualifier
+Bundle-Version: 3.0.0.qualifier
Bundle-Vendor: Eclipse 4diac
Automatic-Module-Name: org.eclipse.fordiac.ide.model.eval.st
Bundle-RequiredExecutionEnvironment: JavaSE-17
diff --git a/plugins/org.eclipse.fordiac.ide.model.eval/META-INF/MANIFEST.MF b/plugins/org.eclipse.fordiac.ide.model.eval/META-INF/MANIFEST.MF
index 31fb24c..874425e 100644
--- a/plugins/org.eclipse.fordiac.ide.model.eval/META-INF/MANIFEST.MF
+++ b/plugins/org.eclipse.fordiac.ide.model.eval/META-INF/MANIFEST.MF
@@ -2,7 +2,7 @@
Bundle-ManifestVersion: 2
Bundle-Name: Evaluator
Bundle-SymbolicName: org.eclipse.fordiac.ide.model.eval;singleton:=true
-Bundle-Version: 2.0.1.qualifier
+Bundle-Version: 3.0.0.qualifier
Bundle-Vendor: Eclipse 4diac
Automatic-Module-Name: org.eclipse.fordiac.ide.model.eval
Bundle-RequiredExecutionEnvironment: JavaSE-17
diff --git a/plugins/org.eclipse.fordiac.ide.model.eval/src/org/eclipse/fordiac/ide/model/eval/value/ArrayValue.java b/plugins/org.eclipse.fordiac.ide.model.eval/src/org/eclipse/fordiac/ide/model/eval/value/ArrayValue.java
index 38abf51..de51698 100644
--- a/plugins/org.eclipse.fordiac.ide.model.eval/src/org/eclipse/fordiac/ide/model/eval/value/ArrayValue.java
+++ b/plugins/org.eclipse.fordiac.ide.model.eval/src/org/eclipse/fordiac/ide/model/eval/value/ArrayValue.java
@@ -1,5 +1,5 @@
/**
- * Copyright (c) 2022, 2023 Martin Erich Jobst
+ * Copyright (c) 2022, 2024 Martin Erich Jobst
*
* This program and the accompanying materials are made available under the
* terms of the Eclipse Public License 2.0 which is available at
@@ -16,6 +16,7 @@
import java.util.List;
import java.util.Objects;
import java.util.StringJoiner;
+import java.util.stream.Collectors;
import java.util.stream.IntStream;
import org.eclipse.fordiac.ide.model.data.ArrayType;
@@ -83,40 +84,50 @@
@Override
public String toString() {
+ return toString(true);
+ }
+
+ @Override
+ public String toString(final boolean pretty) {
if (elements.size() > getCollapseElementsSize()) {
- return toCollapsedString();
+ return toCollapsedString(pretty);
}
- return elements.toString();
+ return elements.stream().map(element -> element.toString(pretty))
+ .collect(Collectors.joining(pretty ? ", " : ",", "[", "]")); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$ //$NON-NLS-4$
}
public String toCollapsedString() {
- final StringJoiner result = new StringJoiner(", ", "[", "]"); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
+ return toCollapsedString(true);
+ }
+
+ public String toCollapsedString(final boolean pretty) {
+ final StringJoiner result = new StringJoiner(pretty ? ", " : ",", "[", "]"); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$ //$NON-NLS-4$
int count = 0;
Value lastValue = null;
for (final Variable<?> element : elements) {
if (lastValue != null && !Objects.equals(lastValue, element.getValue())) {
- result.add(toElementString(lastValue, count));
+ result.add(toElementString(lastValue, count, pretty));
count = 0;
}
lastValue = element.getValue();
count++;
}
if (lastValue != null) {
- result.add(toElementString(lastValue, count));
+ result.add(toElementString(lastValue, count, pretty));
}
return result.toString();
}
- protected static CharSequence toElementString(final Value value, final int count) {
+ protected static CharSequence toElementString(final Value value, final int count, final boolean pretty) {
if (count > 1) {
final StringBuilder builder = new StringBuilder();
builder.append(count);
builder.append("("); //$NON-NLS-1$
- builder.append(value);
+ builder.append(value.toString(pretty));
builder.append(")"); //$NON-NLS-1$
return builder;
}
- return value.toString();
+ return value.toString(pretty);
}
@SuppressWarnings("static-method")
diff --git a/plugins/org.eclipse.fordiac.ide.model.eval/src/org/eclipse/fordiac/ide/model/eval/value/FBValue.java b/plugins/org.eclipse.fordiac.ide.model.eval/src/org/eclipse/fordiac/ide/model/eval/value/FBValue.java
index b9ed716..d1d6f23 100644
--- a/plugins/org.eclipse.fordiac.ide.model.eval/src/org/eclipse/fordiac/ide/model/eval/value/FBValue.java
+++ b/plugins/org.eclipse.fordiac.ide.model.eval/src/org/eclipse/fordiac/ide/model/eval/value/FBValue.java
@@ -1,5 +1,5 @@
/**
- * Copyright (c) 2022, 2023 Martin Erich Jobst
+ * Copyright (c) 2022, 2024 Martin Erich Jobst
*
* This program and the accompanying materials are made available under the
* terms of the Eclipse Public License 2.0 which is available at
@@ -58,8 +58,14 @@
@Override
public String toString() {
- return members.values().stream().map(member -> member.getName() + " := " + member.getValue()) //$NON-NLS-1$
- .collect(Collectors.joining(", ", "(", ")")); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
+ return toString(true);
+ }
+
+ @Override
+ public String toString(final boolean pretty) {
+ return members.values().stream()
+ .map(member -> member.getName() + (pretty ? " := " : ":=") + member.toString(pretty)) //$NON-NLS-1$ //$NON-NLS-2$
+ .collect(Collectors.joining(pretty ? ", " : ",", "(", ")")); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$ //$NON-NLS-4$
}
@Override
diff --git a/plugins/org.eclipse.fordiac.ide.model.eval/src/org/eclipse/fordiac/ide/model/eval/value/StructValue.java b/plugins/org.eclipse.fordiac.ide.model.eval/src/org/eclipse/fordiac/ide/model/eval/value/StructValue.java
index c17cfa6..eab6135 100644
--- a/plugins/org.eclipse.fordiac.ide.model.eval/src/org/eclipse/fordiac/ide/model/eval/value/StructValue.java
+++ b/plugins/org.eclipse.fordiac.ide.model.eval/src/org/eclipse/fordiac/ide/model/eval/value/StructValue.java
@@ -1,5 +1,5 @@
/**
- * Copyright (c) 2022, 2023 Martin Erich Jobst
+ * Copyright (c) 2022, 2024 Martin Erich Jobst
*
* This program and the accompanying materials are made available under the
* terms of the Eclipse Public License 2.0 which is available at
@@ -57,8 +57,14 @@
@Override
public String toString() {
- return members.values().stream().map(member -> member.getName() + " := " + member.getValue()) //$NON-NLS-1$
- .collect(Collectors.joining(", ", "(", ")")); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
+ return toString(true);
+ }
+
+ @Override
+ public String toString(final boolean pretty) {
+ return members.values().stream()
+ .map(member -> member.getName() + (pretty ? " := " : ":=") + member.toString(pretty)) //$NON-NLS-1$ //$NON-NLS-2$
+ .collect(Collectors.joining(pretty ? ", " : ",", "(", ")")); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$ //$NON-NLS-4$
}
@Override
diff --git a/plugins/org.eclipse.fordiac.ide.model.eval/src/org/eclipse/fordiac/ide/model/eval/value/Value.java b/plugins/org.eclipse.fordiac.ide.model.eval/src/org/eclipse/fordiac/ide/model/eval/value/Value.java
index ed68dab..abc298d 100644
--- a/plugins/org.eclipse.fordiac.ide.model.eval/src/org/eclipse/fordiac/ide/model/eval/value/Value.java
+++ b/plugins/org.eclipse.fordiac.ide.model.eval/src/org/eclipse/fordiac/ide/model/eval/value/Value.java
@@ -1,5 +1,5 @@
/**
- * Copyright (c) 2022, 2023 Martin Erich Jobst
+ * Copyright (c) 2022, 2024 Martin Erich Jobst
*
* This program and the accompanying materials are made available under the
* terms of the Eclipse Public License 2.0 which is available at
@@ -21,4 +21,17 @@
* @return The type
*/
INamedElement getType();
+
+ /**
+ * Returns a string representation of the value, with optional pretty
+ * formatting.
+ *
+ * @param pretty whether to use pretty formatting
+ * @see java.lang.Object#toString()
+ * @implNote defaults to {@link #toString()} if no optional pretty formatting is
+ * supported
+ */
+ default String toString(final boolean pretty) {
+ return toString();
+ }
}
diff --git a/plugins/org.eclipse.fordiac.ide.model.eval/src/org/eclipse/fordiac/ide/model/eval/variable/AbstractVariable.java b/plugins/org.eclipse.fordiac.ide.model.eval/src/org/eclipse/fordiac/ide/model/eval/variable/AbstractVariable.java
index 21e3771..6553ba1 100644
--- a/plugins/org.eclipse.fordiac.ide.model.eval/src/org/eclipse/fordiac/ide/model/eval/variable/AbstractVariable.java
+++ b/plugins/org.eclipse.fordiac.ide.model.eval/src/org/eclipse/fordiac/ide/model/eval/variable/AbstractVariable.java
@@ -1,5 +1,5 @@
/**
- * Copyright (c) 2022, 2023 Martin Erich Jobst
+ * Copyright (c) 2022, 2024 Martin Erich Jobst
*
* This program and the accompanying materials are made available under the
* terms of the Eclipse Public License 2.0 which is available at
@@ -30,11 +30,16 @@
@Override
public String toString() {
+ return toString(true);
+ }
+
+ @Override
+ public String toString(final boolean pretty) {
if (type instanceof final DataType dataType && IecTypes.GenericTypes.isAnyType(dataType)
&& !(getValue().getType() instanceof AnyDurationType || getValue().getType() instanceof AnyDateType)) {
- return getValue().getType().getName() + '#' + getValue();
+ return getValue().getType().getName() + '#' + getValue().toString(pretty);
}
- return getValue().toString();
+ return getValue().toString(pretty);
}
@Override
diff --git a/plugins/org.eclipse.fordiac.ide.model.eval/src/org/eclipse/fordiac/ide/model/eval/variable/Variable.java b/plugins/org.eclipse.fordiac.ide.model.eval/src/org/eclipse/fordiac/ide/model/eval/variable/Variable.java
index 0f78be0..ada9a2e 100644
--- a/plugins/org.eclipse.fordiac.ide.model.eval/src/org/eclipse/fordiac/ide/model/eval/variable/Variable.java
+++ b/plugins/org.eclipse.fordiac.ide.model.eval/src/org/eclipse/fordiac/ide/model/eval/variable/Variable.java
@@ -1,5 +1,5 @@
/**
- * Copyright (c) 2022, 2023 Martin Erich Jobst
+ * Copyright (c) 2022, 2024 Martin Erich Jobst
*
* This program and the accompanying materials are made available under the
* terms of the Eclipse Public License 2.0 which is available at
@@ -62,4 +62,13 @@
* @return true if the value is valid, false otherwise
*/
boolean validateValue(final String value);
+
+ /**
+ * Returns a string representation of the variable, with optional pretty
+ * formatting.
+ *
+ * @param pretty whether to use pretty formatting
+ * @see java.lang.Object#toString()
+ */
+ String toString(boolean pretty);
}
diff --git a/plugins/org.eclipse.fordiac.ide.model.search/META-INF/MANIFEST.MF b/plugins/org.eclipse.fordiac.ide.model.search/META-INF/MANIFEST.MF
index aa36c92..e4ffcbc 100644
--- a/plugins/org.eclipse.fordiac.ide.model.search/META-INF/MANIFEST.MF
+++ b/plugins/org.eclipse.fordiac.ide.model.search/META-INF/MANIFEST.MF
@@ -2,7 +2,7 @@
Bundle-ManifestVersion: 2
Bundle-Name: Search
Bundle-SymbolicName: org.eclipse.fordiac.ide.model.search;singleton:=true
-Bundle-Version: 2.0.1.qualifier
+Bundle-Version: 3.0.0.qualifier
Bundle-Vendor: Eclipse 4diac
Automatic-Module-Name: org.eclipse.fordiac.ide.model.search
Bundle-RequiredExecutionEnvironment: JavaSE-17
diff --git a/plugins/org.eclipse.fordiac.ide.model.search/src/org/eclipse/fordiac/ide/model/search/ModelSearchQuery.java b/plugins/org.eclipse.fordiac.ide.model.search/src/org/eclipse/fordiac/ide/model/search/ModelSearchQuery.java
index ef358be..2c24888 100644
--- a/plugins/org.eclipse.fordiac.ide.model.search/src/org/eclipse/fordiac/ide/model/search/ModelSearchQuery.java
+++ b/plugins/org.eclipse.fordiac.ide.model.search/src/org/eclipse/fordiac/ide/model/search/ModelSearchQuery.java
@@ -96,7 +96,13 @@
searchResources(sys);
}
- private void searchApplication(final Application app) {
+ /**
+ * (mis)used for search in 4diac Analytics until this functionality is
+ * refactored out of this class
+ *
+ * @param app
+ */
+ public void searchApplication(final Application app) {
if (matchEObject(app)) {
searchResult.addResult(app);
}
diff --git a/plugins/org.eclipse.fordiac.ide.model.ui/META-INF/MANIFEST.MF b/plugins/org.eclipse.fordiac.ide.model.ui/META-INF/MANIFEST.MF
index f10f202..abbc07e 100644
--- a/plugins/org.eclipse.fordiac.ide.model.ui/META-INF/MANIFEST.MF
+++ b/plugins/org.eclipse.fordiac.ide.model.ui/META-INF/MANIFEST.MF
@@ -3,7 +3,7 @@
Bundle-Name: Model UI
Bundle-ActivationPolicy: lazy
Bundle-SymbolicName: org.eclipse.fordiac.ide.model.ui;singleton:=true
-Bundle-Version: 2.0.1.qualifier
+Bundle-Version: 3.0.0.qualifier
Bundle-RequiredExecutionEnvironment: JavaSE-17
Require-Bundle: org.eclipse.emf.ecore.editor,
org.eclipse.fordiac.ide.model,
diff --git a/plugins/org.eclipse.fordiac.ide.model/META-INF/MANIFEST.MF b/plugins/org.eclipse.fordiac.ide.model/META-INF/MANIFEST.MF
index 387d1cf..363b533 100644
--- a/plugins/org.eclipse.fordiac.ide.model/META-INF/MANIFEST.MF
+++ b/plugins/org.eclipse.fordiac.ide.model/META-INF/MANIFEST.MF
@@ -42,7 +42,7 @@
Bundle-ActivationPolicy: lazy
Bundle-Activator: org.eclipse.fordiac.ide.model.ModelPlugin
Bundle-ClassPath: .
-Bundle-Version: 2.0.1.qualifier
+Bundle-Version: 3.0.0.qualifier
Bundle-Localization: plugin
Bundle-Name: %pluginName
Bundle-ManifestVersion: 2
diff --git a/plugins/org.eclipse.fordiac.ide.model/model/fordiac.genmodel b/plugins/org.eclipse.fordiac.ide.model/model/fordiac.genmodel
index 93fc4d8..ae24c8e 100644
--- a/plugins/org.eclipse.fordiac.ide.model/model/fordiac.genmodel
+++ b/plugins/org.eclipse.fordiac.ide.model/model/fordiac.genmodel
@@ -719,16 +719,15 @@
<genClasses ecoreClass="lib.ecore#//STFunction"/>
<genClasses ecoreClass="lib.ecore#//STFunctionBody"/>
<genClasses ecoreClass="lib.ecore#//STMethod"/>
- <genClasses ecoreClass="lib.ecore#//SubApp">
- <genFeatures notify="false" children="true" createChild="false" propertySortChoices="true"
- ecoreFeature="ecore:EReference lib.ecore#//SubApp/subAppNetwork"/>
+ <genClasses image="false" ecoreClass="lib.ecore#//SubApp">
<genFeatures createChild="false" ecoreFeature="ecore:EAttribute lib.ecore#//SubApp/width"/>
<genFeatures createChild="false" ecoreFeature="ecore:EAttribute lib.ecore#//SubApp/height"/>
- <genFeatures createChild="false" ecoreFeature="ecore:EAttribute lib.ecore#//SubApp/Locked"/>
+ <genFeatures createChild="false" ecoreFeature="ecore:EAttribute lib.ecore#//SubApp/locked"/>
<genOperations ecoreOperation="lib.ecore#//SubApp/getType" body="//this cannot be moved to the annotation class because there we don't have the super access!!!
org.eclipse.fordiac.ide.model.libraryElement.LibraryElement type = super.getType();
if(type instanceof SubAppType){
 return (SubAppType) type; 
}
return null;"/>
<genOperations ecoreOperation="lib.ecore#//SubApp/isUnfolded" body="org.eclipse.fordiac.ide.model.libraryElement.Attribute attr = this.getAttribute(org.eclipse.fordiac.ide.model.LibraryElementTags.SUBAPP_REPRESENTATION_ATTRIBUTE);
return (attr != null) && "true".equals(attr.getValue()); //$NON-NLS-1$
"/>
- <genOperations ecoreOperation="lib.ecore#//SubApp/isTyped" body="return (getType() != null);"/>
- <genOperations ecoreOperation="lib.ecore#//SubApp/loadSubAppNetwork" body="return org.eclipse.fordiac.ide.model.annotations.SubAppAnnotations.loadSubAppNetwork(this);"/>
+ <genOperations ecoreOperation="lib.ecore#//SubApp/isTyped"/>
+ <genOperations ecoreOperation="lib.ecore#//SubApp/getSubAppNetwork"/>
+ <genOperations ecoreOperation="lib.ecore#//SubApp/loadSubAppNetwork"/>
<genOperations ecoreOperation="lib.ecore#//SubApp/getVisibleWidth" body="return isUnfolded() ? getWidth() : org.eclipse.fordiac.ide.model.helpers.FBShapeHelper.getWidth(this);"/>
<genOperations ecoreOperation="lib.ecore#//SubApp/getVisibleHeight" body="return isUnfolded() ? getHeight() : org.eclipse.fordiac.ide.model.helpers.FBShapeHelper.getHeight(this);"/>
</genClasses>
@@ -792,6 +791,21 @@
<genParameters ecoreParameter="lib.ecore#//TypedConfigureableObject/validateType/context"/>
</genOperations>
</genClasses>
+ <genClasses ecoreClass="lib.ecore#//TypedSubApp">
+ <genFeatures notify="false" createChild="false" propertySortChoices="true" ecoreFeature="ecore:EReference lib.ecore#//TypedSubApp/subAppNetwork"/>
+ <genOperations ecoreOperation="lib.ecore#//TypedSubApp/isTyped" body="return true;"/>
+ <genOperations ecoreOperation="lib.ecore#//TypedSubApp/loadSubAppNetwork" body="return org.eclipse.fordiac.ide.model.annotations.SubAppAnnotations.loadSubAppNetwork(this);"/>
+ </genClasses>
+ <genClasses ecoreClass="lib.ecore#//UntypedSubApp">
+ <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference lib.ecore#//UntypedSubApp/subAppNetwork"/>
+ <genOperations ecoreOperation="lib.ecore#//UntypedSubApp/getType" body="return null;"/>
+ <genOperations ecoreOperation="lib.ecore#//UntypedSubApp/isTyped" body="return false;"/>
+ <genOperations ecoreOperation="lib.ecore#//UntypedSubApp/setTypeEntry" body="throw new UnsupportedOperationException("Setting the type entry of an untyped subapp is not supported!");">
+ <genParameters ecoreParameter="lib.ecore#//UntypedSubApp/setTypeEntry/typeEntry"/>
+ </genOperations>
+ <genOperations ecoreOperation="lib.ecore#//UntypedSubApp/loadSubAppNetwork"
+ body="return getSubAppNetwork();"/>
+ </genClasses>
<genClasses ecoreClass="lib.ecore#//Value">
<genFeatures createChild="false" ecoreFeature="ecore:EAttribute lib.ecore#//Value/value"/>
<genOperations ecoreOperation="lib.ecore#//Value/getParentIE" body="return (IInterfaceElement) eContainer();"/>
@@ -834,6 +848,16 @@
<genParameters ecoreParameter="lib.ecore#//VarDeclaration/validateVarInOutIsWithed/diagnostics"/>
<genParameters ecoreParameter="lib.ecore#//VarDeclaration/validateVarInOutIsWithed/context"/>
</genOperations>
+ <genOperations ecoreOperation="lib.ecore#//VarDeclaration/validateVarInOutSubappInterface"
+ body="return org.eclipse.fordiac.ide.model.libraryElement.impl.VarDeclarationAnnotations.validateVarInOutSubappInterface(this, diagnostics, context);">
+ <genParameters ecoreParameter="lib.ecore#//VarDeclaration/validateVarInOutSubappInterface/diagnostics"/>
+ <genParameters ecoreParameter="lib.ecore#//VarDeclaration/validateVarInOutSubappInterface/context"/>
+ </genOperations>
+ <genOperations ecoreOperation="lib.ecore#//VarDeclaration/validateVarInOutSubappNetwork"
+ body="return org.eclipse.fordiac.ide.model.libraryElement.impl.VarDeclarationAnnotations.validateVarInOutSubappNetwork(this, diagnostics, context);">
+ <genParameters ecoreParameter="lib.ecore#//VarDeclaration/validateVarInOutSubappNetwork/diagnostics"/>
+ <genParameters ecoreParameter="lib.ecore#//VarDeclaration/validateVarInOutSubappNetwork/context"/>
+ </genOperations>
</genClasses>
<genClasses ecoreClass="lib.ecore#//VersionInfo">
<genFeatures createChild="false" ecoreFeature="ecore:EAttribute lib.ecore#//VersionInfo/author"/>
diff --git a/plugins/org.eclipse.fordiac.ide.model/model/lib.ecore b/plugins/org.eclipse.fordiac.ide.model/model/lib.ecore
index c85f715..9f4617d 100644
--- a/plugins/org.eclipse.fordiac.ide.model/model/lib.ecore
+++ b/plugins/org.eclipse.fordiac.ide.model/model/lib.ecore
@@ -246,7 +246,7 @@
</eAnnotations>
</eOperations>
<eStructuralFeatures xsi:type="ecore:EReference" name="cfbNetwork" eType="#//FBNetwork"
- containment="true"/>
+ transient="true"/>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" name="Color">
<eStructuralFeatures xsi:type="ecore:EAttribute" name="red" eType="ecore:EDataType http://www.eclipse.org/emf/2003/XMLType#//Int"
@@ -1922,7 +1922,7 @@
<eClassifiers xsi:type="ecore:EClass" name="STFunction" eSuperTypes="#//TextFunction"/>
<eClassifiers xsi:type="ecore:EClass" name="STFunctionBody" eSuperTypes="#//TextFunctionBody"/>
<eClassifiers xsi:type="ecore:EClass" name="STMethod" eSuperTypes="#//TextMethod"/>
- <eClassifiers xsi:type="ecore:EClass" name="SubApp" eSuperTypes="#//FBNetworkElement">
+ <eClassifiers xsi:type="ecore:EClass" name="SubApp" abstract="true" eSuperTypes="#//FBNetworkElement">
<eOperations name="getType" lowerBound="1" eType="#//SubAppType">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="body" value="//this cannot be moved to the annotation class because there we don't have the super access!!!
org.eclipse.fordiac.ide.model.libraryElement.LibraryElement type = super.getType();
if(type instanceof SubAppType){
 return (SubAppType) type; 
}
return null;"/>
@@ -1933,17 +1933,9 @@
<details key="body" value="org.eclipse.fordiac.ide.model.libraryElement.Attribute attr = this.getAttribute(org.eclipse.fordiac.ide.model.LibraryElementTags.SUBAPP_REPRESENTATION_ATTRIBUTE);
return (attr != null) && "true".equals(attr.getValue()); //$NON-NLS-1$
"/>
</eAnnotations>
</eOperations>
- <eOperations name="isTyped" eType="ecore:EDataType http://www.eclipse.org/emf/2003/XMLType#//Boolean">
- <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
- <details key="body" value="return (getType() != null);"/>
- </eAnnotations>
- </eOperations>
- <eOperations name="loadSubAppNetwork" eType="#//FBNetwork">
- <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
- <details key="body" value="return org.eclipse.fordiac.ide.model.annotations.SubAppAnnotations.loadSubAppNetwork(this);"/>
- <details key="documentation" value="if it is an untyped subapp and the fbnetwork is not yet loaded load it from the type"/>
- </eAnnotations>
- </eOperations>
+ <eOperations name="isTyped" eType="ecore:EDataType http://www.eclipse.org/emf/2003/XMLType#//Boolean"/>
+ <eOperations name="getSubAppNetwork" eType="#//FBNetwork"/>
+ <eOperations name="loadSubAppNetwork" eType="#//FBNetwork"/>
<eOperations name="getVisibleWidth" eType="ecore:EDataType http://www.eclipse.org/emf/2003/XMLType#//Int">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="body" value="return isUnfolded() ? getWidth() : org.eclipse.fordiac.ide.model.helpers.FBShapeHelper.getWidth(this);"/>
@@ -1954,13 +1946,11 @@
<details key="body" value="return isUnfolded() ? getHeight() : org.eclipse.fordiac.ide.model.helpers.FBShapeHelper.getHeight(this);"/>
</eAnnotations>
</eOperations>
- <eStructuralFeatures xsi:type="ecore:EReference" name="subAppNetwork" eType="#//FBNetwork"
- containment="true"/>
<eStructuralFeatures xsi:type="ecore:EAttribute" name="width" eType="ecore:EDataType http://www.eclipse.org/emf/2003/XMLType#//Int"
defaultValueLiteral="200"/>
<eStructuralFeatures xsi:type="ecore:EAttribute" name="height" eType="ecore:EDataType http://www.eclipse.org/emf/2003/XMLType#//Int"
defaultValueLiteral="100"/>
- <eStructuralFeatures xsi:type="ecore:EAttribute" name="Locked" eType="ecore:EDataType http://www.eclipse.org/emf/2003/XMLType#//Boolean"
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="locked" eType="ecore:EDataType http://www.eclipse.org/emf/2003/XMLType#//Boolean"
defaultValueLiteral="false"/>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" name="StructManipulator" eSuperTypes="#//ConfigurableFB">
@@ -2083,6 +2073,47 @@
<eStructuralFeatures xsi:type="ecore:EAttribute" name="typeEntry" eType="#//TypeEntry"
transient="true"/>
</eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="TypedSubApp" eSuperTypes="#//SubApp">
+ <eOperations name="isTyped" eType="ecore:EDataType http://www.eclipse.org/emf/2003/XMLType#//Boolean">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="body" value="return true;"/>
+ </eAnnotations>
+ </eOperations>
+ <eOperations name="loadSubAppNetwork" eType="#//FBNetwork">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="body" value="return org.eclipse.fordiac.ide.model.annotations.SubAppAnnotations.loadSubAppNetwork(this);"/>
+ <details key="documentation" value=""/>
+ </eAnnotations>
+ </eOperations>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="subAppNetwork" eType="#//FBNetwork"
+ transient="true"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="UntypedSubApp" eSuperTypes="#//SubApp">
+ <eOperations name="getType" lowerBound="1" eType="#//SubAppType">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="body" value="return null;"/>
+ </eAnnotations>
+ </eOperations>
+ <eOperations name="isTyped" eType="ecore:EDataType http://www.eclipse.org/emf/2003/XMLType#//Boolean">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="body" value="return false;"/>
+ </eAnnotations>
+ </eOperations>
+ <eOperations name="setTypeEntry">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="body" value="throw new UnsupportedOperationException("Setting the type entry of an untyped subapp is not supported!");"/>
+ </eAnnotations>
+ <eParameters name="typeEntry" eType="#//TypeEntry"/>
+ </eOperations>
+ <eOperations name="loadSubAppNetwork" eType="#//FBNetwork">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="body" value="return getSubAppNetwork();"/>
+ <details key="documentation" value=""/>
+ </eAnnotations>
+ </eOperations>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="subAppNetwork" eType="#//FBNetwork"
+ containment="true"/>
+ </eClassifiers>
<eClassifiers xsi:type="ecore:EClass" name="Value">
<eOperations name="getParentIE" lowerBound="1" eType="#//IInterfaceElement">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
@@ -2199,6 +2230,36 @@
</eGenericType>
</eParameters>
</eOperations>
+ <eOperations name="validateVarInOutSubappInterface" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/Ecore">
+ <details key="invariant" value="true"/>
+ </eAnnotations>
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="body" value="return org.eclipse.fordiac.ide.model.libraryElement.impl.VarDeclarationAnnotations.validateVarInOutSubappInterface(this, diagnostics, context);"/>
+ </eAnnotations>
+ <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain"/>
+ <eParameters name="context">
+ <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ </eGenericType>
+ </eParameters>
+ </eOperations>
+ <eOperations name="validateVarInOutSubappNetwork" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/Ecore">
+ <details key="invariant" value="true"/>
+ </eAnnotations>
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="body" value="return org.eclipse.fordiac.ide.model.libraryElement.impl.VarDeclarationAnnotations.validateVarInOutSubappNetwork(this, diagnostics, context);"/>
+ </eAnnotations>
+ <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain"/>
+ <eParameters name="context">
+ <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ </eGenericType>
+ </eParameters>
+ </eOperations>
<eStructuralFeatures xsi:type="ecore:EReference" name="arraySize" eType="#//ArraySize"
containment="true" eOpposite="#//ArraySize/varDeclaration"/>
<eStructuralFeatures xsi:type="ecore:EReference" name="withs" upperBound="-1"
diff --git a/plugins/org.eclipse.fordiac.ide.model/src-gen/org/eclipse/fordiac/ide/model/libraryElement/CFBInstance.java b/plugins/org.eclipse.fordiac.ide.model/src-gen/org/eclipse/fordiac/ide/model/libraryElement/CFBInstance.java
index 33e27ad..345afbd 100644
--- a/plugins/org.eclipse.fordiac.ide.model/src-gen/org/eclipse/fordiac/ide/model/libraryElement/CFBInstance.java
+++ b/plugins/org.eclipse.fordiac.ide.model/src-gen/org/eclipse/fordiac/ide/model/libraryElement/CFBInstance.java
@@ -35,22 +35,22 @@
*/
public interface CFBInstance extends FB {
/**
- * Returns the value of the '<em><b>Cfb Network</b></em>' containment reference.
+ * Returns the value of the '<em><b>Cfb Network</b></em>' reference.
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
- * @return the value of the '<em>Cfb Network</em>' containment reference.
+ * @return the value of the '<em>Cfb Network</em>' reference.
* @see #setCfbNetwork(FBNetwork)
* @see org.eclipse.fordiac.ide.model.libraryElement.LibraryElementPackage#getCFBInstance_CfbNetwork()
- * @model containment="true" resolveProxies="true"
+ * @model transient="true"
* @generated
*/
FBNetwork getCfbNetwork();
/**
- * Sets the value of the '{@link org.eclipse.fordiac.ide.model.libraryElement.CFBInstance#getCfbNetwork <em>Cfb Network</em>}' containment reference.
+ * Sets the value of the '{@link org.eclipse.fordiac.ide.model.libraryElement.CFBInstance#getCfbNetwork <em>Cfb Network</em>}' reference.
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
- * @param value the new value of the '<em>Cfb Network</em>' containment reference.
+ * @param value the new value of the '<em>Cfb Network</em>' reference.
* @see #getCfbNetwork()
* @generated
*/
diff --git a/plugins/org.eclipse.fordiac.ide.model/src-gen/org/eclipse/fordiac/ide/model/libraryElement/LibraryElementFactory.java b/plugins/org.eclipse.fordiac.ide.model/src-gen/org/eclipse/fordiac/ide/model/libraryElement/LibraryElementFactory.java
index 10e0d2e..53e8c61 100644
--- a/plugins/org.eclipse.fordiac.ide.model/src-gen/org/eclipse/fordiac/ide/model/libraryElement/LibraryElementFactory.java
+++ b/plugins/org.eclipse.fordiac.ide.model/src-gen/org/eclipse/fordiac/ide/model/libraryElement/LibraryElementFactory.java
@@ -720,15 +720,6 @@
STMethod createSTMethod();
/**
- * Returns a new object of class '<em>Sub App</em>'.
- * <!-- begin-user-doc -->
- * <!-- end-user-doc -->
- * @return a new object of class '<em>Sub App</em>'.
- * @generated
- */
- SubApp createSubApp();
-
- /**
* Returns a new object of class '<em>Struct Manipulator</em>'.
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
@@ -765,6 +756,24 @@
TypedConfigureableObject createTypedConfigureableObject();
/**
+ * Returns a new object of class '<em>Typed Sub App</em>'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return a new object of class '<em>Typed Sub App</em>'.
+ * @generated
+ */
+ TypedSubApp createTypedSubApp();
+
+ /**
+ * Returns a new object of class '<em>Untyped Sub App</em>'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return a new object of class '<em>Untyped Sub App</em>'.
+ * @generated
+ */
+ UntypedSubApp createUntypedSubApp();
+
+ /**
* Returns a new object of class '<em>Value</em>'.
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
diff --git a/plugins/org.eclipse.fordiac.ide.model/src-gen/org/eclipse/fordiac/ide/model/libraryElement/LibraryElementPackage.java b/plugins/org.eclipse.fordiac.ide.model/src-gen/org/eclipse/fordiac/ide/model/libraryElement/LibraryElementPackage.java
index 6e93681..835fdce 100644
--- a/plugins/org.eclipse.fordiac.ide.model/src-gen/org/eclipse/fordiac/ide/model/libraryElement/LibraryElementPackage.java
+++ b/plugins/org.eclipse.fordiac.ide.model/src-gen/org/eclipse/fordiac/ide/model/libraryElement/LibraryElementPackage.java
@@ -2219,7 +2219,7 @@
int CFB_INSTANCE__GROUP = FB__GROUP;
/**
- * The feature id for the '<em><b>Cfb Network</b></em>' containment reference.
+ * The feature id for the '<em><b>Cfb Network</b></em>' reference.
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
* @generated
@@ -4980,7 +4980,7 @@
* @see org.eclipse.fordiac.ide.model.libraryElement.impl.LibraryElementPackageImpl#getVarDeclaration()
* @generated
*/
- int VAR_DECLARATION = 99;
+ int VAR_DECLARATION = 101;
/**
* The feature id for the '<em><b>Name</b></em>' attribute.
@@ -7191,22 +7191,13 @@
int SUB_APP__GROUP = FB_NETWORK_ELEMENT__GROUP;
/**
- * The feature id for the '<em><b>Sub App Network</b></em>' containment reference.
- * <!-- begin-user-doc -->
- * <!-- end-user-doc -->
- * @generated
- * @ordered
- */
- int SUB_APP__SUB_APP_NETWORK = FB_NETWORK_ELEMENT_FEATURE_COUNT + 0;
-
- /**
* The feature id for the '<em><b>Width</b></em>' attribute.
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
* @generated
* @ordered
*/
- int SUB_APP__WIDTH = FB_NETWORK_ELEMENT_FEATURE_COUNT + 1;
+ int SUB_APP__WIDTH = FB_NETWORK_ELEMENT_FEATURE_COUNT + 0;
/**
* The feature id for the '<em><b>Height</b></em>' attribute.
@@ -7215,7 +7206,7 @@
* @generated
* @ordered
*/
- int SUB_APP__HEIGHT = FB_NETWORK_ELEMENT_FEATURE_COUNT + 2;
+ int SUB_APP__HEIGHT = FB_NETWORK_ELEMENT_FEATURE_COUNT + 1;
/**
* The feature id for the '<em><b>Locked</b></em>' attribute.
@@ -7224,7 +7215,7 @@
* @generated
* @ordered
*/
- int SUB_APP__LOCKED = FB_NETWORK_ELEMENT_FEATURE_COUNT + 3;
+ int SUB_APP__LOCKED = FB_NETWORK_ELEMENT_FEATURE_COUNT + 2;
/**
* The number of structural features of the '<em>Sub App</em>' class.
@@ -7233,7 +7224,7 @@
* @generated
* @ordered
*/
- int SUB_APP_FEATURE_COUNT = FB_NETWORK_ELEMENT_FEATURE_COUNT + 4;
+ int SUB_APP_FEATURE_COUNT = FB_NETWORK_ELEMENT_FEATURE_COUNT + 3;
/**
* The meta object id for the '{@link org.eclipse.fordiac.ide.model.libraryElement.impl.SubAppTypeImpl <em>Sub App Type</em>}' class.
@@ -7391,6 +7382,260 @@
int SYSTEM_CONFIGURATION_FEATURE_COUNT = 3;
/**
+ * The meta object id for the '{@link org.eclipse.fordiac.ide.model.libraryElement.impl.TypedSubAppImpl <em>Typed Sub App</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.fordiac.ide.model.libraryElement.impl.TypedSubAppImpl
+ * @see org.eclipse.fordiac.ide.model.libraryElement.impl.LibraryElementPackageImpl#getTypedSubApp()
+ * @generated
+ */
+ int TYPED_SUB_APP = 98;
+
+ /**
+ * The feature id for the '<em><b>Name</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int TYPED_SUB_APP__NAME = SUB_APP__NAME;
+
+ /**
+ * The feature id for the '<em><b>Comment</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int TYPED_SUB_APP__COMMENT = SUB_APP__COMMENT;
+
+ /**
+ * The feature id for the '<em><b>Attributes</b></em>' containment reference list.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int TYPED_SUB_APP__ATTRIBUTES = SUB_APP__ATTRIBUTES;
+
+ /**
+ * The feature id for the '<em><b>Type Entry</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int TYPED_SUB_APP__TYPE_ENTRY = SUB_APP__TYPE_ENTRY;
+
+ /**
+ * The feature id for the '<em><b>Position</b></em>' containment reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int TYPED_SUB_APP__POSITION = SUB_APP__POSITION;
+
+ /**
+ * The feature id for the '<em><b>Interface</b></em>' containment reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int TYPED_SUB_APP__INTERFACE = SUB_APP__INTERFACE;
+
+ /**
+ * The feature id for the '<em><b>Mapping</b></em>' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int TYPED_SUB_APP__MAPPING = SUB_APP__MAPPING;
+
+ /**
+ * The feature id for the '<em><b>Group</b></em>' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int TYPED_SUB_APP__GROUP = SUB_APP__GROUP;
+
+ /**
+ * The feature id for the '<em><b>Width</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int TYPED_SUB_APP__WIDTH = SUB_APP__WIDTH;
+
+ /**
+ * The feature id for the '<em><b>Height</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int TYPED_SUB_APP__HEIGHT = SUB_APP__HEIGHT;
+
+ /**
+ * The feature id for the '<em><b>Locked</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int TYPED_SUB_APP__LOCKED = SUB_APP__LOCKED;
+
+ /**
+ * The feature id for the '<em><b>Sub App Network</b></em>' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int TYPED_SUB_APP__SUB_APP_NETWORK = SUB_APP_FEATURE_COUNT + 0;
+
+ /**
+ * The number of structural features of the '<em>Typed Sub App</em>' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int TYPED_SUB_APP_FEATURE_COUNT = SUB_APP_FEATURE_COUNT + 1;
+
+ /**
+ * The meta object id for the '{@link org.eclipse.fordiac.ide.model.libraryElement.impl.UntypedSubAppImpl <em>Untyped Sub App</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.fordiac.ide.model.libraryElement.impl.UntypedSubAppImpl
+ * @see org.eclipse.fordiac.ide.model.libraryElement.impl.LibraryElementPackageImpl#getUntypedSubApp()
+ * @generated
+ */
+ int UNTYPED_SUB_APP = 99;
+
+ /**
+ * The feature id for the '<em><b>Name</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int UNTYPED_SUB_APP__NAME = SUB_APP__NAME;
+
+ /**
+ * The feature id for the '<em><b>Comment</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int UNTYPED_SUB_APP__COMMENT = SUB_APP__COMMENT;
+
+ /**
+ * The feature id for the '<em><b>Attributes</b></em>' containment reference list.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int UNTYPED_SUB_APP__ATTRIBUTES = SUB_APP__ATTRIBUTES;
+
+ /**
+ * The feature id for the '<em><b>Type Entry</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int UNTYPED_SUB_APP__TYPE_ENTRY = SUB_APP__TYPE_ENTRY;
+
+ /**
+ * The feature id for the '<em><b>Position</b></em>' containment reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int UNTYPED_SUB_APP__POSITION = SUB_APP__POSITION;
+
+ /**
+ * The feature id for the '<em><b>Interface</b></em>' containment reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int UNTYPED_SUB_APP__INTERFACE = SUB_APP__INTERFACE;
+
+ /**
+ * The feature id for the '<em><b>Mapping</b></em>' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int UNTYPED_SUB_APP__MAPPING = SUB_APP__MAPPING;
+
+ /**
+ * The feature id for the '<em><b>Group</b></em>' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int UNTYPED_SUB_APP__GROUP = SUB_APP__GROUP;
+
+ /**
+ * The feature id for the '<em><b>Width</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int UNTYPED_SUB_APP__WIDTH = SUB_APP__WIDTH;
+
+ /**
+ * The feature id for the '<em><b>Height</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int UNTYPED_SUB_APP__HEIGHT = SUB_APP__HEIGHT;
+
+ /**
+ * The feature id for the '<em><b>Locked</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int UNTYPED_SUB_APP__LOCKED = SUB_APP__LOCKED;
+
+ /**
+ * The feature id for the '<em><b>Sub App Network</b></em>' containment reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int UNTYPED_SUB_APP__SUB_APP_NETWORK = SUB_APP_FEATURE_COUNT + 0;
+
+ /**
+ * The number of structural features of the '<em>Untyped Sub App</em>' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int UNTYPED_SUB_APP_FEATURE_COUNT = SUB_APP_FEATURE_COUNT + 1;
+
+ /**
* The meta object id for the '{@link org.eclipse.fordiac.ide.model.libraryElement.impl.ValueImpl <em>Value</em>}' class.
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
@@ -7398,7 +7643,7 @@
* @see org.eclipse.fordiac.ide.model.libraryElement.impl.LibraryElementPackageImpl#getValue()
* @generated
*/
- int VALUE = 98;
+ int VALUE = 100;
/**
* The feature id for the '<em><b>Value</b></em>' attribute.
@@ -7426,7 +7671,7 @@
* @see org.eclipse.fordiac.ide.model.libraryElement.impl.LibraryElementPackageImpl#getVersionInfo()
* @generated
*/
- int VERSION_INFO = 100;
+ int VERSION_INFO = 102;
/**
* The feature id for the '<em><b>Author</b></em>' attribute.
@@ -7490,7 +7735,7 @@
* @see org.eclipse.fordiac.ide.model.libraryElement.impl.LibraryElementPackageImpl#getWith()
* @generated
*/
- int WITH = 101;
+ int WITH = 103;
/**
* The feature id for the '<em><b>Variables</b></em>' reference.
@@ -7518,7 +7763,7 @@
* @see org.eclipse.fordiac.ide.model.libraryElement.impl.LibraryElementPackageImpl#getLanguage()
* @generated
*/
- int LANGUAGE = 102;
+ int LANGUAGE = 104;
/**
* The meta object id for the '<em>Command Stack</em>' data type.
@@ -7528,7 +7773,7 @@
* @see org.eclipse.fordiac.ide.model.libraryElement.impl.LibraryElementPackageImpl#getCommandStack()
* @generated
*/
- int COMMAND_STACK = 103;
+ int COMMAND_STACK = 105;
/**
* The meta object id for the '<em>IFile</em>' data type.
@@ -7538,7 +7783,7 @@
* @see org.eclipse.fordiac.ide.model.libraryElement.impl.LibraryElementPackageImpl#getIFile()
* @generated
*/
- int IFILE = 104;
+ int IFILE = 106;
/**
* The meta object id for the '<em>Interface Element Stream</em>' data type.
@@ -7548,7 +7793,7 @@
* @see org.eclipse.fordiac.ide.model.libraryElement.impl.LibraryElementPackageImpl#getInterfaceElementStream()
* @generated
*/
- int INTERFACE_ELEMENT_STREAM = 105;
+ int INTERFACE_ELEMENT_STREAM = 107;
/**
* The meta object id for the '<em>IProject</em>' data type.
@@ -7558,7 +7803,7 @@
* @see org.eclipse.fordiac.ide.model.libraryElement.impl.LibraryElementPackageImpl#getIProject()
* @generated
*/
- int IPROJECT = 106;
+ int IPROJECT = 108;
/**
* The meta object id for the '<em>Point</em>' data type.
@@ -7568,7 +7813,7 @@
* @see org.eclipse.fordiac.ide.model.libraryElement.impl.LibraryElementPackageImpl#getPoint()
* @generated
*/
- int POINT = 107;
+ int POINT = 109;
/**
* The meta object id for the '<em>Type Entry</em>' data type.
@@ -7578,7 +7823,7 @@
* @see org.eclipse.fordiac.ide.model.libraryElement.impl.LibraryElementPackageImpl#getTypeEntry()
* @generated
*/
- int TYPE_ENTRY = 108;
+ int TYPE_ENTRY = 110;
/**
* The meta object id for the '<em>Type Library</em>' data type.
@@ -7588,7 +7833,7 @@
* @see org.eclipse.fordiac.ide.model.libraryElement.impl.LibraryElementPackageImpl#getTypeLibrary()
* @generated
*/
- int TYPE_LIBRARY = 109;
+ int TYPE_LIBRARY = 111;
/**
* The meta object id for the '<em>Var Decl List</em>' data type.
@@ -7598,7 +7843,7 @@
* @see org.eclipse.fordiac.ide.model.libraryElement.impl.LibraryElementPackageImpl#getVarDeclList()
* @generated
*/
- int VAR_DECL_LIST = 110;
+ int VAR_DECL_LIST = 112;
/**
@@ -7985,10 +8230,10 @@
EClass getCFBInstance();
/**
- * Returns the meta object for the containment reference '{@link org.eclipse.fordiac.ide.model.libraryElement.CFBInstance#getCfbNetwork <em>Cfb Network</em>}'.
+ * Returns the meta object for the reference '{@link org.eclipse.fordiac.ide.model.libraryElement.CFBInstance#getCfbNetwork <em>Cfb Network</em>}'.
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
- * @return the meta object for the containment reference '<em>Cfb Network</em>'.
+ * @return the meta object for the reference '<em>Cfb Network</em>'.
* @see org.eclipse.fordiac.ide.model.libraryElement.CFBInstance#getCfbNetwork()
* @see #getCFBInstance()
* @generated
@@ -10295,17 +10540,6 @@
EClass getSubApp();
/**
- * Returns the meta object for the containment reference '{@link org.eclipse.fordiac.ide.model.libraryElement.SubApp#getSubAppNetwork <em>Sub App Network</em>}'.
- * <!-- begin-user-doc -->
- * <!-- end-user-doc -->
- * @return the meta object for the containment reference '<em>Sub App Network</em>'.
- * @see org.eclipse.fordiac.ide.model.libraryElement.SubApp#getSubAppNetwork()
- * @see #getSubApp()
- * @generated
- */
- EReference getSubApp_SubAppNetwork();
-
- /**
* Returns the meta object for the attribute '{@link org.eclipse.fordiac.ide.model.libraryElement.SubApp#getWidth <em>Width</em>}'.
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
@@ -10606,6 +10840,48 @@
EAttribute getTypedConfigureableObject_TypeEntry();
/**
+ * Returns the meta object for class '{@link org.eclipse.fordiac.ide.model.libraryElement.TypedSubApp <em>Typed Sub App</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for class '<em>Typed Sub App</em>'.
+ * @see org.eclipse.fordiac.ide.model.libraryElement.TypedSubApp
+ * @generated
+ */
+ EClass getTypedSubApp();
+
+ /**
+ * Returns the meta object for the reference '{@link org.eclipse.fordiac.ide.model.libraryElement.TypedSubApp#getSubAppNetwork <em>Sub App Network</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the reference '<em>Sub App Network</em>'.
+ * @see org.eclipse.fordiac.ide.model.libraryElement.TypedSubApp#getSubAppNetwork()
+ * @see #getTypedSubApp()
+ * @generated
+ */
+ EReference getTypedSubApp_SubAppNetwork();
+
+ /**
+ * Returns the meta object for class '{@link org.eclipse.fordiac.ide.model.libraryElement.UntypedSubApp <em>Untyped Sub App</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for class '<em>Untyped Sub App</em>'.
+ * @see org.eclipse.fordiac.ide.model.libraryElement.UntypedSubApp
+ * @generated
+ */
+ EClass getUntypedSubApp();
+
+ /**
+ * Returns the meta object for the containment reference '{@link org.eclipse.fordiac.ide.model.libraryElement.UntypedSubApp#getSubAppNetwork <em>Sub App Network</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the containment reference '<em>Sub App Network</em>'.
+ * @see org.eclipse.fordiac.ide.model.libraryElement.UntypedSubApp#getSubAppNetwork()
+ * @see #getUntypedSubApp()
+ * @generated
+ */
+ EReference getUntypedSubApp_SubAppNetwork();
+
+ /**
* Returns the meta object for class '{@link org.eclipse.fordiac.ide.model.libraryElement.Value <em>Value</em>}'.
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
@@ -11190,7 +11466,7 @@
EClass CFB_INSTANCE = eINSTANCE.getCFBInstance();
/**
- * The meta object literal for the '<em><b>Cfb Network</b></em>' containment reference feature.
+ * The meta object literal for the '<em><b>Cfb Network</b></em>' reference feature.
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
* @generated
@@ -13080,14 +13356,6 @@
EClass SUB_APP = eINSTANCE.getSubApp();
/**
- * The meta object literal for the '<em><b>Sub App Network</b></em>' containment reference feature.
- * <!-- begin-user-doc -->
- * <!-- end-user-doc -->
- * @generated
- */
- EReference SUB_APP__SUB_APP_NETWORK = eINSTANCE.getSubApp_SubAppNetwork();
-
- /**
* The meta object literal for the '<em><b>Width</b></em>' attribute feature.
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
@@ -13328,6 +13596,42 @@
EAttribute TYPED_CONFIGUREABLE_OBJECT__TYPE_ENTRY = eINSTANCE.getTypedConfigureableObject_TypeEntry();
/**
+ * The meta object literal for the '{@link org.eclipse.fordiac.ide.model.libraryElement.impl.TypedSubAppImpl <em>Typed Sub App</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.fordiac.ide.model.libraryElement.impl.TypedSubAppImpl
+ * @see org.eclipse.fordiac.ide.model.libraryElement.impl.LibraryElementPackageImpl#getTypedSubApp()
+ * @generated
+ */
+ EClass TYPED_SUB_APP = eINSTANCE.getTypedSubApp();
+
+ /**
+ * The meta object literal for the '<em><b>Sub App Network</b></em>' reference feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EReference TYPED_SUB_APP__SUB_APP_NETWORK = eINSTANCE.getTypedSubApp_SubAppNetwork();
+
+ /**
+ * The meta object literal for the '{@link org.eclipse.fordiac.ide.model.libraryElement.impl.UntypedSubAppImpl <em>Untyped Sub App</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.fordiac.ide.model.libraryElement.impl.UntypedSubAppImpl
+ * @see org.eclipse.fordiac.ide.model.libraryElement.impl.LibraryElementPackageImpl#getUntypedSubApp()
+ * @generated
+ */
+ EClass UNTYPED_SUB_APP = eINSTANCE.getUntypedSubApp();
+
+ /**
+ * The meta object literal for the '<em><b>Sub App Network</b></em>' containment reference feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EReference UNTYPED_SUB_APP__SUB_APP_NETWORK = eINSTANCE.getUntypedSubApp_SubAppNetwork();
+
+ /**
* The meta object literal for the '{@link org.eclipse.fordiac.ide.model.libraryElement.impl.ValueImpl <em>Value</em>}' class.
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
diff --git a/plugins/org.eclipse.fordiac.ide.model/src-gen/org/eclipse/fordiac/ide/model/libraryElement/SubApp.java b/plugins/org.eclipse.fordiac.ide.model/src-gen/org/eclipse/fordiac/ide/model/libraryElement/SubApp.java
index f2e43ac..42fa6ca 100644
--- a/plugins/org.eclipse.fordiac.ide.model/src-gen/org/eclipse/fordiac/ide/model/libraryElement/SubApp.java
+++ b/plugins/org.eclipse.fordiac.ide.model/src-gen/org/eclipse/fordiac/ide/model/libraryElement/SubApp.java
@@ -26,40 +26,25 @@
* The following features are supported:
* </p>
* <ul>
- * <li>{@link org.eclipse.fordiac.ide.model.libraryElement.SubApp#getSubAppNetwork <em>Sub App Network</em>}</li>
* <li>{@link org.eclipse.fordiac.ide.model.libraryElement.SubApp#getWidth <em>Width</em>}</li>
* <li>{@link org.eclipse.fordiac.ide.model.libraryElement.SubApp#getHeight <em>Height</em>}</li>
* <li>{@link org.eclipse.fordiac.ide.model.libraryElement.SubApp#isLocked <em>Locked</em>}</li>
* </ul>
*
* @see org.eclipse.fordiac.ide.model.libraryElement.LibraryElementPackage#getSubApp()
- * @model
+ * @model abstract="true"
* @generated
*/
public interface SubApp extends FBNetworkElement {
/**
- * Returns the value of the '<em><b>Sub App Network</b></em>' containment reference.
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
- * @return the value of the '<em>Sub App Network</em>' containment reference.
- * @see #setSubAppNetwork(FBNetwork)
- * @see org.eclipse.fordiac.ide.model.libraryElement.LibraryElementPackage#getSubApp_SubAppNetwork()
- * @model containment="true" resolveProxies="true"
+ * @model kind="operation"
* @generated
*/
FBNetwork getSubAppNetwork();
/**
- * Sets the value of the '{@link org.eclipse.fordiac.ide.model.libraryElement.SubApp#getSubAppNetwork <em>Sub App Network</em>}' containment reference.
- * <!-- begin-user-doc -->
- * <!-- end-user-doc -->
- * @param value the new value of the '<em>Sub App Network</em>' containment reference.
- * @see #getSubAppNetwork()
- * @generated
- */
- void setSubAppNetwork(FBNetwork value);
-
- /**
* Returns the value of the '<em><b>Width</b></em>' attribute.
* The default value is <code>"200"</code>.
* <!-- begin-user-doc -->
@@ -155,9 +140,6 @@
/**
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
- * <!-- begin-model-doc -->
- * if it is an untyped subapp and the fbnetwork is not yet loaded load it from the type
- * <!-- end-model-doc -->
* @model
* @generated
*/
diff --git a/plugins/org.eclipse.fordiac.ide.model/src-gen/org/eclipse/fordiac/ide/model/libraryElement/TypedSubApp.java b/plugins/org.eclipse.fordiac.ide.model/src-gen/org/eclipse/fordiac/ide/model/libraryElement/TypedSubApp.java
new file mode 100644
index 0000000..51a2e37
--- /dev/null
+++ b/plugins/org.eclipse.fordiac.ide.model/src-gen/org/eclipse/fordiac/ide/model/libraryElement/TypedSubApp.java
@@ -0,0 +1,78 @@
+/**
+ * *******************************************************************************
+ * Copyright (c) 2008 - 2018 Profactor GmbH, TU Wien ACIN, fortiss GmbH
+ * 2022-2023 Martin Erich Jobst
+ *
+ * This program and the accompanying materials are made available under the
+ * terms of the Eclipse Public License 2.0 which is available at
+ * http://www.eclipse.org/legal/epl-2.0.
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ * Contributors:
+ * Gerhard Ebenhofer, Alois Zoitl, Ingo Hegny, Monika Wenger, Martin Jobst
+ * - initial API and implementation and/or initial documentation
+ * *******************************************************************************
+ */
+package org.eclipse.fordiac.ide.model.libraryElement;
+
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Typed Sub App</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * </p>
+ * <ul>
+ * <li>{@link org.eclipse.fordiac.ide.model.libraryElement.TypedSubApp#getSubAppNetwork <em>Sub App Network</em>}</li>
+ * </ul>
+ *
+ * @see org.eclipse.fordiac.ide.model.libraryElement.LibraryElementPackage#getTypedSubApp()
+ * @model
+ * @generated
+ */
+public interface TypedSubApp extends SubApp {
+ /**
+ * Returns the value of the '<em><b>Sub App Network</b></em>' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Sub App Network</em>' reference.
+ * @see #setSubAppNetwork(FBNetwork)
+ * @see org.eclipse.fordiac.ide.model.libraryElement.LibraryElementPackage#getTypedSubApp_SubAppNetwork()
+ * @model transient="true"
+ * @generated
+ */
+ FBNetwork getSubAppNetwork();
+
+ /**
+ * Sets the value of the '{@link org.eclipse.fordiac.ide.model.libraryElement.TypedSubApp#getSubAppNetwork <em>Sub App Network</em>}' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>Sub App Network</em>' reference.
+ * @see #getSubAppNetwork()
+ * @generated
+ */
+ void setSubAppNetwork(FBNetwork value);
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @model kind="operation" dataType="org.eclipse.emf.ecore.xml.type.Boolean"
+ * @generated
+ */
+ boolean isTyped();
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * <!-- begin-model-doc -->
+ * if it is an untyped subapp and the fbnetwork is not yet loaded load it from the type
+ * <!-- end-model-doc -->
+ * @model
+ * @generated
+ */
+ FBNetwork loadSubAppNetwork();
+
+} // TypedSubApp
diff --git a/plugins/org.eclipse.fordiac.ide.model/src-gen/org/eclipse/fordiac/ide/model/libraryElement/UntypedSubApp.java b/plugins/org.eclipse.fordiac.ide.model/src-gen/org/eclipse/fordiac/ide/model/libraryElement/UntypedSubApp.java
new file mode 100644
index 0000000..5d0af8c
--- /dev/null
+++ b/plugins/org.eclipse.fordiac.ide.model/src-gen/org/eclipse/fordiac/ide/model/libraryElement/UntypedSubApp.java
@@ -0,0 +1,95 @@
+/**
+ * *******************************************************************************
+ * Copyright (c) 2008 - 2018 Profactor GmbH, TU Wien ACIN, fortiss GmbH
+ * 2022-2023 Martin Erich Jobst
+ *
+ * This program and the accompanying materials are made available under the
+ * terms of the Eclipse Public License 2.0 which is available at
+ * http://www.eclipse.org/legal/epl-2.0.
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ * Contributors:
+ * Gerhard Ebenhofer, Alois Zoitl, Ingo Hegny, Monika Wenger, Martin Jobst
+ * - initial API and implementation and/or initial documentation
+ * *******************************************************************************
+ */
+package org.eclipse.fordiac.ide.model.libraryElement;
+
+import org.eclipse.fordiac.ide.model.typelibrary.TypeEntry;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Untyped Sub App</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * </p>
+ * <ul>
+ * <li>{@link org.eclipse.fordiac.ide.model.libraryElement.UntypedSubApp#getSubAppNetwork <em>Sub App Network</em>}</li>
+ * </ul>
+ *
+ * @see org.eclipse.fordiac.ide.model.libraryElement.LibraryElementPackage#getUntypedSubApp()
+ * @model
+ * @generated
+ */
+public interface UntypedSubApp extends SubApp {
+ /**
+ * Returns the value of the '<em><b>Sub App Network</b></em>' containment reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Sub App Network</em>' containment reference.
+ * @see #setSubAppNetwork(FBNetwork)
+ * @see org.eclipse.fordiac.ide.model.libraryElement.LibraryElementPackage#getUntypedSubApp_SubAppNetwork()
+ * @model containment="true" resolveProxies="true"
+ * @generated
+ */
+ FBNetwork getSubAppNetwork();
+
+ /**
+ * Sets the value of the '{@link org.eclipse.fordiac.ide.model.libraryElement.UntypedSubApp#getSubAppNetwork <em>Sub App Network</em>}' containment reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>Sub App Network</em>' containment reference.
+ * @see #getSubAppNetwork()
+ * @generated
+ */
+ void setSubAppNetwork(FBNetwork value);
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @model kind="operation" required="true"
+ * @generated
+ */
+ SubAppType getType();
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @model kind="operation" dataType="org.eclipse.emf.ecore.xml.type.Boolean"
+ * @generated
+ */
+ boolean isTyped();
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @model typeEntryDataType="org.eclipse.fordiac.ide.model.libraryElement.TypeEntry"
+ * @generated
+ */
+ void setTypeEntry(TypeEntry typeEntry);
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * <!-- begin-model-doc -->
+ *
+ * <!-- end-model-doc -->
+ * @model
+ * @generated
+ */
+ FBNetwork loadSubAppNetwork();
+
+} // UntypedSubApp
diff --git a/plugins/org.eclipse.fordiac.ide.model/src-gen/org/eclipse/fordiac/ide/model/libraryElement/VarDeclaration.java b/plugins/org.eclipse.fordiac.ide.model/src-gen/org/eclipse/fordiac/ide/model/libraryElement/VarDeclaration.java
index e84f0b2..de1f67f 100644
--- a/plugins/org.eclipse.fordiac.ide.model/src-gen/org/eclipse/fordiac/ide/model/libraryElement/VarDeclaration.java
+++ b/plugins/org.eclipse.fordiac.ide.model/src-gen/org/eclipse/fordiac/ide/model/libraryElement/VarDeclaration.java
@@ -187,4 +187,20 @@
*/
boolean validateVarInOutIsWithed(DiagnosticChain diagnostics, Map<Object, Object> context);
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @model annotation="http://www.eclipse.org/emf/2002/Ecore invariant='true'"
+ * @generated
+ */
+ boolean validateVarInOutSubappInterface(DiagnosticChain diagnostics, Map<Object, Object> context);
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @model annotation="http://www.eclipse.org/emf/2002/Ecore invariant='true'"
+ * @generated
+ */
+ boolean validateVarInOutSubappNetwork(DiagnosticChain diagnostics, Map<Object, Object> context);
+
} // VarDeclaration
diff --git a/plugins/org.eclipse.fordiac.ide.model/src-gen/org/eclipse/fordiac/ide/model/libraryElement/impl/CFBInstanceImpl.java b/plugins/org.eclipse.fordiac.ide.model/src-gen/org/eclipse/fordiac/ide/model/libraryElement/impl/CFBInstanceImpl.java
index 31b944e..a6ff951 100644
--- a/plugins/org.eclipse.fordiac.ide.model/src-gen/org/eclipse/fordiac/ide/model/libraryElement/impl/CFBInstanceImpl.java
+++ b/plugins/org.eclipse.fordiac.ide.model/src-gen/org/eclipse/fordiac/ide/model/libraryElement/impl/CFBInstanceImpl.java
@@ -17,8 +17,6 @@
package org.eclipse.fordiac.ide.model.libraryElement.impl;
import org.eclipse.emf.common.notify.Notification;
-import org.eclipse.emf.common.notify.NotificationChain;
-
import org.eclipse.emf.ecore.EClass;
import org.eclipse.emf.ecore.InternalEObject;
@@ -44,7 +42,7 @@
*/
public class CFBInstanceImpl extends FBImpl implements CFBInstance {
/**
- * The cached value of the '{@link #getCfbNetwork() <em>Cfb Network</em>}' containment reference.
+ * The cached value of the '{@link #getCfbNetwork() <em>Cfb Network</em>}' reference.
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
* @see #getCfbNetwork()
@@ -83,12 +81,6 @@
InternalEObject oldCfbNetwork = (InternalEObject)cfbNetwork;
cfbNetwork = (FBNetwork)eResolveProxy(oldCfbNetwork);
if (cfbNetwork != oldCfbNetwork) {
- InternalEObject newCfbNetwork = (InternalEObject)cfbNetwork;
- NotificationChain msgs = oldCfbNetwork.eInverseRemove(this, EOPPOSITE_FEATURE_BASE - LibraryElementPackage.CFB_INSTANCE__CFB_NETWORK, null, null);
- if (newCfbNetwork.eInternalContainer() == null) {
- msgs = newCfbNetwork.eInverseAdd(this, EOPPOSITE_FEATURE_BASE - LibraryElementPackage.CFB_INSTANCE__CFB_NETWORK, null, msgs);
- }
- if (msgs != null) msgs.dispatch();
if (eNotificationRequired())
eNotify(new ENotificationImpl(this, Notification.RESOLVE, LibraryElementPackage.CFB_INSTANCE__CFB_NETWORK, oldCfbNetwork, cfbNetwork));
}
@@ -110,34 +102,12 @@
* <!-- end-user-doc -->
* @generated
*/
- public NotificationChain basicSetCfbNetwork(FBNetwork newCfbNetwork, NotificationChain msgs) {
- FBNetwork oldCfbNetwork = cfbNetwork;
- cfbNetwork = newCfbNetwork;
- if (eNotificationRequired()) {
- ENotificationImpl notification = new ENotificationImpl(this, Notification.SET, LibraryElementPackage.CFB_INSTANCE__CFB_NETWORK, oldCfbNetwork, newCfbNetwork);
- if (msgs == null) msgs = notification; else msgs.add(notification);
- }
- return msgs;
- }
-
- /**
- * <!-- begin-user-doc -->
- * <!-- end-user-doc -->
- * @generated
- */
@Override
public void setCfbNetwork(FBNetwork newCfbNetwork) {
- if (newCfbNetwork != cfbNetwork) {
- NotificationChain msgs = null;
- if (cfbNetwork != null)
- msgs = ((InternalEObject)cfbNetwork).eInverseRemove(this, EOPPOSITE_FEATURE_BASE - LibraryElementPackage.CFB_INSTANCE__CFB_NETWORK, null, msgs);
- if (newCfbNetwork != null)
- msgs = ((InternalEObject)newCfbNetwork).eInverseAdd(this, EOPPOSITE_FEATURE_BASE - LibraryElementPackage.CFB_INSTANCE__CFB_NETWORK, null, msgs);
- msgs = basicSetCfbNetwork(newCfbNetwork, msgs);
- if (msgs != null) msgs.dispatch();
- }
- else if (eNotificationRequired())
- eNotify(new ENotificationImpl(this, Notification.SET, LibraryElementPackage.CFB_INSTANCE__CFB_NETWORK, newCfbNetwork, newCfbNetwork));
+ FBNetwork oldCfbNetwork = cfbNetwork;
+ cfbNetwork = newCfbNetwork;
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, LibraryElementPackage.CFB_INSTANCE__CFB_NETWORK, oldCfbNetwork, cfbNetwork));
}
/**
@@ -171,21 +141,6 @@
* @generated
*/
@Override
- public NotificationChain eInverseRemove(InternalEObject otherEnd, int featureID, NotificationChain msgs) {
- switch (featureID) {
- case LibraryElementPackage.CFB_INSTANCE__CFB_NETWORK:
- return basicSetCfbNetwork(null, msgs);
- default:
- return super.eInverseRemove(otherEnd, featureID, msgs);
- }
- }
-
- /**
- * <!-- begin-user-doc -->
- * <!-- end-user-doc -->
- * @generated
- */
- @Override
public Object eGet(int featureID, boolean resolve, boolean coreType) {
switch (featureID) {
case LibraryElementPackage.CFB_INSTANCE__CFB_NETWORK:
diff --git a/plugins/org.eclipse.fordiac.ide.model/src-gen/org/eclipse/fordiac/ide/model/libraryElement/impl/ConfigurableMoveFBImpl.java b/plugins/org.eclipse.fordiac.ide.model/src-gen/org/eclipse/fordiac/ide/model/libraryElement/impl/ConfigurableMoveFBImpl.java
index 476083a..2fbabfa 100644
--- a/plugins/org.eclipse.fordiac.ide.model/src-gen/org/eclipse/fordiac/ide/model/libraryElement/impl/ConfigurableMoveFBImpl.java
+++ b/plugins/org.eclipse.fordiac.ide.model/src-gen/org/eclipse/fordiac/ide/model/libraryElement/impl/ConfigurableMoveFBImpl.java
@@ -26,7 +26,6 @@
import org.eclipse.fordiac.ide.model.data.DataType;
import org.eclipse.fordiac.ide.model.libraryElement.Attribute;
import org.eclipse.fordiac.ide.model.libraryElement.ConfigurableMoveFB;
-import org.eclipse.fordiac.ide.model.libraryElement.LibraryElementFactory;
import org.eclipse.fordiac.ide.model.libraryElement.LibraryElementPackage;
import org.eclipse.fordiac.ide.model.libraryElement.VarDeclaration;
@@ -37,17 +36,15 @@
* The following features are implemented:
* </p>
* <ul>
- * <li>{@link org.eclipse.fordiac.ide.model.libraryElement.impl.ConfigurableMoveFBImpl#getDataType
- * <em>Data Type</em>}</li>
+ * <li>{@link org.eclipse.fordiac.ide.model.libraryElement.impl.ConfigurableMoveFBImpl#getDataType <em>Data Type</em>}</li>
* </ul>
*
* @generated
*/
public class ConfigurableMoveFBImpl extends ConfigurableFBImpl implements ConfigurableMoveFB {
/**
- * The cached value of the '{@link #getDataType() <em>Data Type</em>}'
- * reference. <!-- begin-user-doc --> <!-- end-user-doc -->
- *
+ * The cached value of the '{@link #getDataType() <em>Data Type</em>}' reference.
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
* @see #getDataType()
* @generated
* @ordered
@@ -56,15 +53,14 @@
/**
* <!-- begin-user-doc --> <!-- end-user-doc -->
- *
* @generated
*/
protected ConfigurableMoveFBImpl() {
+ super();
}
/**
* <!-- begin-user-doc --> <!-- end-user-doc -->
- *
* @generated
*/
@Override
@@ -74,17 +70,16 @@
/**
* <!-- begin-user-doc --> <!-- end-user-doc -->
- *
* @generated
*/
@Override
public DataType getDataType() {
if (dataType != null && dataType.eIsProxy()) {
- final InternalEObject oldDataType = (InternalEObject) dataType;
- dataType = (DataType) eResolveProxy(oldDataType);
- if ((dataType != oldDataType) && eNotificationRequired()) {
- eNotify(new ENotificationImpl(this, Notification.RESOLVE,
- LibraryElementPackage.CONFIGURABLE_MOVE_FB__DATA_TYPE, oldDataType, dataType));
+ InternalEObject oldDataType = (InternalEObject)dataType;
+ dataType = (DataType)eResolveProxy(oldDataType);
+ if (dataType != oldDataType) {
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.RESOLVE, LibraryElementPackage.CONFIGURABLE_MOVE_FB__DATA_TYPE, oldDataType, dataType));
}
}
return dataType;
@@ -92,7 +87,6 @@
/**
* <!-- begin-user-doc --> <!-- end-user-doc -->
- *
* @generated
*/
public DataType basicGetDataType() {
@@ -101,22 +95,18 @@
/**
* <!-- begin-user-doc --> <!-- end-user-doc -->
- *
* @generated
*/
@Override
- public void setDataType(final DataType newDataType) {
- final DataType oldDataType = dataType;
+ public void setDataType(DataType newDataType) {
+ DataType oldDataType = dataType;
dataType = newDataType;
- if (eNotificationRequired()) {
- eNotify(new ENotificationImpl(this, Notification.SET, LibraryElementPackage.CONFIGURABLE_MOVE_FB__DATA_TYPE,
- oldDataType, dataType));
- }
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, LibraryElementPackage.CONFIGURABLE_MOVE_FB__DATA_TYPE, oldDataType, dataType));
}
/**
* <!-- begin-user-doc --> <!-- end-user-doc -->
- *
* @generated
*/
@Override
@@ -145,83 +135,72 @@
/**
* <!-- begin-user-doc --> <!-- end-user-doc -->
- *
* @generated
*/
@Override
public EList<Attribute> getConfigurationAsAttributes() {
- if (dataType == null) {
- return ECollections.emptyEList();
- }
- final Attribute attr = LibraryElementFactory.eINSTANCE.createAttribute();
- attr.setName(LibraryElementTags.F_MOVE_CONFIG);
- attr.setValue(dataType.getName());
- return ECollections.asEList(attr);
+ return ECollections.emptyEList();
}
/**
* <!-- begin-user-doc --> <!-- end-user-doc -->
- *
* @generated
*/
@Override
- public Object eGet(final int featureID, final boolean resolve, final boolean coreType) {
+ public Object eGet(int featureID, boolean resolve, boolean coreType) {
switch (featureID) {
- case LibraryElementPackage.CONFIGURABLE_MOVE_FB__DATA_TYPE:
- if (resolve) {
- return getDataType();
- }
- return basicGetDataType();
- default:
- return super.eGet(featureID, resolve, coreType);
+ case LibraryElementPackage.CONFIGURABLE_MOVE_FB__DATA_TYPE:
+ if (resolve) return getDataType();
+ return basicGetDataType();
+ default:
+ return super.eGet(featureID, resolve, coreType);
}
}
/**
* <!-- begin-user-doc --> <!-- end-user-doc -->
- *
* @generated
*/
@Override
- public void eSet(final int featureID, final Object newValue) {
+ public void eSet(int featureID, Object newValue) {
switch (featureID) {
- case LibraryElementPackage.CONFIGURABLE_MOVE_FB__DATA_TYPE:
- setDataType((DataType) newValue);
- return;
- default:
- super.eSet(featureID, newValue);
- return;
+ case LibraryElementPackage.CONFIGURABLE_MOVE_FB__DATA_TYPE:
+ setDataType((DataType)newValue);
+ return;
+ default:
+ super.eSet(featureID, newValue);
+ return;
}
}
/**
* <!-- begin-user-doc --> <!-- end-user-doc -->
- *
* @generated
*/
@Override
- public void eUnset(final int featureID) {
+ public void eUnset(int featureID) {
switch (featureID) {
- case LibraryElementPackage.CONFIGURABLE_MOVE_FB__DATA_TYPE:
- setDataType((DataType) null);
- return;
- default:
- super.eUnset(featureID);
- return;
+ case LibraryElementPackage.CONFIGURABLE_MOVE_FB__DATA_TYPE:
+ setDataType((DataType)null);
+ return;
+ default:
+ super.eUnset(featureID);
+ return;
}
}
/**
* <!-- begin-user-doc --> <!-- end-user-doc -->
- *
* @generated
*/
@Override
- public boolean eIsSet(final int featureID) {
- return switch (featureID) {
- case LibraryElementPackage.CONFIGURABLE_MOVE_FB__DATA_TYPE -> dataType != null;
- default -> super.eIsSet(featureID);
- };
+ public boolean eIsSet(int featureID) {
+ switch (featureID) {
+ case LibraryElementPackage.CONFIGURABLE_MOVE_FB__DATA_TYPE:
+ return dataType != null;
+ default:
+ return super.eIsSet(featureID);
+ }
}
}
// ConfigurableMoveFBImpl
diff --git a/plugins/org.eclipse.fordiac.ide.model/src-gen/org/eclipse/fordiac/ide/model/libraryElement/impl/LibraryElementFactoryImpl.java b/plugins/org.eclipse.fordiac.ide.model/src-gen/org/eclipse/fordiac/ide/model/libraryElement/impl/LibraryElementFactoryImpl.java
index 170f442..6a8a805 100644
--- a/plugins/org.eclipse.fordiac.ide.model/src-gen/org/eclipse/fordiac/ide/model/libraryElement/impl/LibraryElementFactoryImpl.java
+++ b/plugins/org.eclipse.fordiac.ide.model/src-gen/org/eclipse/fordiac/ide/model/libraryElement/impl/LibraryElementFactoryImpl.java
@@ -112,10 +112,11 @@
import org.eclipse.fordiac.ide.model.libraryElement.ServiceTransaction;
import org.eclipse.fordiac.ide.model.libraryElement.SimpleFBType;
import org.eclipse.fordiac.ide.model.libraryElement.StructManipulator;
-import org.eclipse.fordiac.ide.model.libraryElement.SubApp;
import org.eclipse.fordiac.ide.model.libraryElement.SubAppType;
import org.eclipse.fordiac.ide.model.libraryElement.SystemConfiguration;
import org.eclipse.fordiac.ide.model.libraryElement.TypedConfigureableObject;
+import org.eclipse.fordiac.ide.model.libraryElement.TypedSubApp;
+import org.eclipse.fordiac.ide.model.libraryElement.UntypedSubApp;
import org.eclipse.fordiac.ide.model.libraryElement.Value;
import org.eclipse.fordiac.ide.model.libraryElement.VarDeclaration;
import org.eclipse.fordiac.ide.model.libraryElement.VersionInfo;
@@ -246,11 +247,12 @@
case LibraryElementPackage.ST_FUNCTION: return createSTFunction();
case LibraryElementPackage.ST_FUNCTION_BODY: return createSTFunctionBody();
case LibraryElementPackage.ST_METHOD: return createSTMethod();
- case LibraryElementPackage.SUB_APP: return createSubApp();
case LibraryElementPackage.STRUCT_MANIPULATOR: return createStructManipulator();
case LibraryElementPackage.SUB_APP_TYPE: return createSubAppType();
case LibraryElementPackage.SYSTEM_CONFIGURATION: return createSystemConfiguration();
case LibraryElementPackage.TYPED_CONFIGUREABLE_OBJECT: return createTypedConfigureableObject();
+ case LibraryElementPackage.TYPED_SUB_APP: return createTypedSubApp();
+ case LibraryElementPackage.UNTYPED_SUB_APP: return createUntypedSubApp();
case LibraryElementPackage.VALUE: return createValue();
case LibraryElementPackage.VAR_DECLARATION: return createVarDeclaration();
case LibraryElementPackage.VERSION_INFO: return createVersionInfo();
@@ -1164,17 +1166,6 @@
* @generated
*/
@Override
- public SubApp createSubApp() {
- SubAppImpl subApp = new SubAppImpl();
- return subApp;
- }
-
- /**
- * <!-- begin-user-doc -->
- * <!-- end-user-doc -->
- * @generated
- */
- @Override
public StructManipulator createStructManipulator() {
StructManipulatorImpl structManipulator = new StructManipulatorImpl();
return structManipulator;
@@ -1219,6 +1210,28 @@
* @generated
*/
@Override
+ public TypedSubApp createTypedSubApp() {
+ TypedSubAppImpl typedSubApp = new TypedSubAppImpl();
+ return typedSubApp;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public UntypedSubApp createUntypedSubApp() {
+ UntypedSubAppImpl untypedSubApp = new UntypedSubAppImpl();
+ return untypedSubApp;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
public Value createValue() {
ValueImpl value = new ValueImpl();
return value;
diff --git a/plugins/org.eclipse.fordiac.ide.model/src-gen/org/eclipse/fordiac/ide/model/libraryElement/impl/LibraryElementPackageImpl.java b/plugins/org.eclipse.fordiac.ide.model/src-gen/org/eclipse/fordiac/ide/model/libraryElement/impl/LibraryElementPackageImpl.java
index 211423e..5b85633 100644
--- a/plugins/org.eclipse.fordiac.ide.model/src-gen/org/eclipse/fordiac/ide/model/libraryElement/impl/LibraryElementPackageImpl.java
+++ b/plugins/org.eclipse.fordiac.ide.model/src-gen/org/eclipse/fordiac/ide/model/libraryElement/impl/LibraryElementPackageImpl.java
@@ -641,6 +641,20 @@
private EClass typedConfigureableObjectEClass = null;
/**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private EClass typedSubAppEClass = null;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private EClass untypedSubAppEClass = null;
+
+ /**
* <!-- begin-user-doc --> <!-- end-user-doc -->
* @generated
*/
@@ -3091,17 +3105,8 @@
* @generated
*/
@Override
- public EReference getSubApp_SubAppNetwork() {
- return (EReference)subAppEClass.getEStructuralFeatures().get(0);
- }
-
- /**
- * <!-- begin-user-doc --> <!-- end-user-doc -->
- * @generated
- */
- @Override
public EAttribute getSubApp_Width() {
- return (EAttribute)subAppEClass.getEStructuralFeatures().get(1);
+ return (EAttribute)subAppEClass.getEStructuralFeatures().get(0);
}
/**
@@ -3110,7 +3115,7 @@
*/
@Override
public EAttribute getSubApp_Height() {
- return (EAttribute)subAppEClass.getEStructuralFeatures().get(2);
+ return (EAttribute)subAppEClass.getEStructuralFeatures().get(1);
}
/**
@@ -3120,7 +3125,7 @@
*/
@Override
public EAttribute getSubApp_Locked() {
- return (EAttribute)subAppEClass.getEStructuralFeatures().get(3);
+ return (EAttribute)subAppEClass.getEStructuralFeatures().get(2);
}
/**
@@ -3349,6 +3354,46 @@
}
/**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public EClass getTypedSubApp() {
+ return typedSubAppEClass;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public EReference getTypedSubApp_SubAppNetwork() {
+ return (EReference)typedSubAppEClass.getEStructuralFeatures().get(0);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public EClass getUntypedSubApp() {
+ return untypedSubAppEClass;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public EReference getUntypedSubApp_SubAppNetwork() {
+ return (EReference)untypedSubAppEClass.getEStructuralFeatures().get(0);
+ }
+
+ /**
* <!-- begin-user-doc --> <!-- end-user-doc -->
* @generated
*/
@@ -3925,7 +3970,6 @@
stMethodEClass = createEClass(ST_METHOD);
subAppEClass = createEClass(SUB_APP);
- createEReference(subAppEClass, SUB_APP__SUB_APP_NETWORK);
createEAttribute(subAppEClass, SUB_APP__WIDTH);
createEAttribute(subAppEClass, SUB_APP__HEIGHT);
createEAttribute(subAppEClass, SUB_APP__LOCKED);
@@ -3963,6 +4007,12 @@
typedConfigureableObjectEClass = createEClass(TYPED_CONFIGUREABLE_OBJECT);
createEAttribute(typedConfigureableObjectEClass, TYPED_CONFIGUREABLE_OBJECT__TYPE_ENTRY);
+ typedSubAppEClass = createEClass(TYPED_SUB_APP);
+ createEReference(typedSubAppEClass, TYPED_SUB_APP__SUB_APP_NETWORK);
+
+ untypedSubAppEClass = createEClass(UNTYPED_SUB_APP);
+ createEReference(untypedSubAppEClass, UNTYPED_SUB_APP__SUB_APP_NETWORK);
+
valueEClass = createEClass(VALUE);
createEAttribute(valueEClass, VALUE__VALUE);
@@ -4121,6 +4171,8 @@
textMethodEClass.getESuperTypes().add(this.getMethod());
typedConfigureableObjectEClass.getESuperTypes().add(this.getITypedElement());
typedConfigureableObjectEClass.getESuperTypes().add(this.getConfigurableObject());
+ typedSubAppEClass.getESuperTypes().add(this.getSubApp());
+ untypedSubAppEClass.getESuperTypes().add(this.getSubApp());
varDeclarationEClass.getESuperTypes().add(this.getIInterfaceElement());
// Initialize classes and features; add operations and parameters
@@ -4214,7 +4266,7 @@
addEParameter(op, ecorePackage.getEString(), "name", 1, 1, IS_UNIQUE, IS_ORDERED); //$NON-NLS-1$
initEClass(cfbInstanceEClass, CFBInstance.class, "CFBInstance", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS); //$NON-NLS-1$
- initEReference(getCFBInstance_CfbNetwork(), this.getFBNetwork(), null, "cfbNetwork", null, 0, 1, CFBInstance.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED); //$NON-NLS-1$
+ initEReference(getCFBInstance_CfbNetwork(), this.getFBNetwork(), null, "cfbNetwork", null, 0, 1, CFBInstance.class, IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED); //$NON-NLS-1$
addEOperation(cfbInstanceEClass, this.getFBNetwork(), "loadCFBNetwork", 0, 1, IS_UNIQUE, IS_ORDERED); //$NON-NLS-1$
@@ -4990,11 +5042,10 @@
initEClass(stMethodEClass, STMethod.class, "STMethod", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS); //$NON-NLS-1$
- initEClass(subAppEClass, SubApp.class, "SubApp", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS); //$NON-NLS-1$
- initEReference(getSubApp_SubAppNetwork(), this.getFBNetwork(), null, "subAppNetwork", null, 0, 1, SubApp.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED); //$NON-NLS-1$
+ initEClass(subAppEClass, SubApp.class, "SubApp", IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS); //$NON-NLS-1$
initEAttribute(getSubApp_Width(), theXMLTypePackage.getInt(), "width", "200", 0, 1, SubApp.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED); //$NON-NLS-1$ //$NON-NLS-2$
initEAttribute(getSubApp_Height(), theXMLTypePackage.getInt(), "height", "100", 0, 1, SubApp.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED); //$NON-NLS-1$ //$NON-NLS-2$
- initEAttribute(getSubApp_Locked(), theXMLTypePackage.getBoolean(), "Locked", "false", 0, 1, SubApp.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED); //$NON-NLS-1$ //$NON-NLS-2$
+ initEAttribute(getSubApp_Locked(), theXMLTypePackage.getBoolean(), "locked", "false", 0, 1, SubApp.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED); //$NON-NLS-1$ //$NON-NLS-2$
addEOperation(subAppEClass, this.getSubAppType(), "getType", 1, 1, IS_UNIQUE, IS_ORDERED); //$NON-NLS-1$
@@ -5002,6 +5053,8 @@
addEOperation(subAppEClass, theXMLTypePackage.getBoolean(), "isTyped", 0, 1, IS_UNIQUE, IS_ORDERED); //$NON-NLS-1$
+ addEOperation(subAppEClass, this.getFBNetwork(), "getSubAppNetwork", 0, 1, IS_UNIQUE, IS_ORDERED); //$NON-NLS-1$
+
addEOperation(subAppEClass, this.getFBNetwork(), "loadSubAppNetwork", 0, 1, IS_UNIQUE, IS_ORDERED); //$NON-NLS-1$
addEOperation(subAppEClass, theXMLTypePackage.getInt(), "getVisibleWidth", 0, 1, IS_UNIQUE, IS_ORDERED); //$NON-NLS-1$
@@ -5071,6 +5124,25 @@
g1.getETypeArguments().add(g2);
addEParameter(op, g1, "context", 0, 1, IS_UNIQUE, IS_ORDERED); //$NON-NLS-1$
+ initEClass(typedSubAppEClass, TypedSubApp.class, "TypedSubApp", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS); //$NON-NLS-1$
+ initEReference(getTypedSubApp_SubAppNetwork(), this.getFBNetwork(), null, "subAppNetwork", null, 0, 1, TypedSubApp.class, IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED); //$NON-NLS-1$
+
+ addEOperation(typedSubAppEClass, theXMLTypePackage.getBoolean(), "isTyped", 0, 1, IS_UNIQUE, IS_ORDERED); //$NON-NLS-1$
+
+ addEOperation(typedSubAppEClass, this.getFBNetwork(), "loadSubAppNetwork", 0, 1, IS_UNIQUE, IS_ORDERED); //$NON-NLS-1$
+
+ initEClass(untypedSubAppEClass, UntypedSubApp.class, "UntypedSubApp", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS); //$NON-NLS-1$
+ initEReference(getUntypedSubApp_SubAppNetwork(), this.getFBNetwork(), null, "subAppNetwork", null, 0, 1, UntypedSubApp.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED); //$NON-NLS-1$
+
+ addEOperation(untypedSubAppEClass, this.getSubAppType(), "getType", 1, 1, IS_UNIQUE, IS_ORDERED); //$NON-NLS-1$
+
+ addEOperation(untypedSubAppEClass, theXMLTypePackage.getBoolean(), "isTyped", 0, 1, IS_UNIQUE, IS_ORDERED); //$NON-NLS-1$
+
+ op = addEOperation(untypedSubAppEClass, null, "setTypeEntry", 0, 1, IS_UNIQUE, IS_ORDERED); //$NON-NLS-1$
+ addEParameter(op, this.getTypeEntry(), "typeEntry", 0, 1, IS_UNIQUE, IS_ORDERED); //$NON-NLS-1$
+
+ addEOperation(untypedSubAppEClass, this.getFBNetwork(), "loadSubAppNetwork", 0, 1, IS_UNIQUE, IS_ORDERED); //$NON-NLS-1$
+
initEClass(valueEClass, Value.class, "Value", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS); //$NON-NLS-1$
initEAttribute(getValue_Value(), ecorePackage.getEString(), "value", "", 0, 1, Value.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED); //$NON-NLS-1$ //$NON-NLS-2$
@@ -5139,6 +5211,24 @@
g1.getETypeArguments().add(g2);
addEParameter(op, g1, "context", 0, 1, IS_UNIQUE, IS_ORDERED); //$NON-NLS-1$
+ op = addEOperation(varDeclarationEClass, ecorePackage.getEBoolean(), "validateVarInOutSubappInterface", 0, 1, IS_UNIQUE, IS_ORDERED); //$NON-NLS-1$
+ addEParameter(op, ecorePackage.getEDiagnosticChain(), "diagnostics", 0, 1, IS_UNIQUE, IS_ORDERED); //$NON-NLS-1$
+ g1 = createEGenericType(ecorePackage.getEMap());
+ g2 = createEGenericType(ecorePackage.getEJavaObject());
+ g1.getETypeArguments().add(g2);
+ g2 = createEGenericType(ecorePackage.getEJavaObject());
+ g1.getETypeArguments().add(g2);
+ addEParameter(op, g1, "context", 0, 1, IS_UNIQUE, IS_ORDERED); //$NON-NLS-1$
+
+ op = addEOperation(varDeclarationEClass, ecorePackage.getEBoolean(), "validateVarInOutSubappNetwork", 0, 1, IS_UNIQUE, IS_ORDERED); //$NON-NLS-1$
+ addEParameter(op, ecorePackage.getEDiagnosticChain(), "diagnostics", 0, 1, IS_UNIQUE, IS_ORDERED); //$NON-NLS-1$
+ g1 = createEGenericType(ecorePackage.getEMap());
+ g2 = createEGenericType(ecorePackage.getEJavaObject());
+ g1.getETypeArguments().add(g2);
+ g2 = createEGenericType(ecorePackage.getEJavaObject());
+ g1.getETypeArguments().add(g2);
+ addEParameter(op, g1, "context", 0, 1, IS_UNIQUE, IS_ORDERED); //$NON-NLS-1$
+
initEClass(versionInfoEClass, VersionInfo.class, "VersionInfo", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS); //$NON-NLS-1$
initEAttribute(getVersionInfo_Author(), theXMLTypePackage.getString(), "author", "", 1, 1, VersionInfo.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED); //$NON-NLS-1$ //$NON-NLS-2$
initEAttribute(getVersionInfo_Date(), theXMLTypePackage.getString(), "date", "YYYY-MM-DD", 1, 1, VersionInfo.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED); //$NON-NLS-1$ //$NON-NLS-2$
@@ -5927,6 +6017,18 @@
new String[] {
"invariant", "true" //$NON-NLS-1$ //$NON-NLS-2$
});
+ addAnnotation
+ (varDeclarationEClass.getEOperations().get(11),
+ source,
+ new String[] {
+ "invariant", "true" //$NON-NLS-1$ //$NON-NLS-2$
+ });
+ addAnnotation
+ (varDeclarationEClass.getEOperations().get(12),
+ source,
+ new String[] {
+ "invariant", "true" //$NON-NLS-1$ //$NON-NLS-2$
+ });
}
/**
diff --git a/plugins/org.eclipse.fordiac.ide.model/src-gen/org/eclipse/fordiac/ide/model/libraryElement/impl/SubAppImpl.java b/plugins/org.eclipse.fordiac.ide.model/src-gen/org/eclipse/fordiac/ide/model/libraryElement/impl/SubAppImpl.java
index 4b1e43c..b4e9cdb 100644
--- a/plugins/org.eclipse.fordiac.ide.model/src-gen/org/eclipse/fordiac/ide/model/libraryElement/impl/SubAppImpl.java
+++ b/plugins/org.eclipse.fordiac.ide.model/src-gen/org/eclipse/fordiac/ide/model/libraryElement/impl/SubAppImpl.java
@@ -1,7 +1,7 @@
/**
* *******************************************************************************
* Copyright (c) 2008 - 2018 Profactor GmbH, TU Wien ACIN, fortiss GmbH
- * 2022 Martin Erich Jobst
+ * 2022-2023 Martin Erich Jobst
*
* This program and the accompanying materials are made available under the
* terms of the Eclipse Public License 2.0 which is available at
@@ -17,10 +17,8 @@
package org.eclipse.fordiac.ide.model.libraryElement.impl;
import org.eclipse.emf.common.notify.Notification;
-import org.eclipse.emf.common.notify.NotificationChain;
import org.eclipse.emf.ecore.EClass;
-import org.eclipse.emf.ecore.InternalEObject;
import org.eclipse.emf.ecore.impl.ENotificationImpl;
@@ -37,7 +35,6 @@
* The following features are implemented:
* </p>
* <ul>
- * <li>{@link org.eclipse.fordiac.ide.model.libraryElement.impl.SubAppImpl#getSubAppNetwork <em>Sub App Network</em>}</li>
* <li>{@link org.eclipse.fordiac.ide.model.libraryElement.impl.SubAppImpl#getWidth <em>Width</em>}</li>
* <li>{@link org.eclipse.fordiac.ide.model.libraryElement.impl.SubAppImpl#getHeight <em>Height</em>}</li>
* <li>{@link org.eclipse.fordiac.ide.model.libraryElement.impl.SubAppImpl#isLocked <em>Locked</em>}</li>
@@ -45,17 +42,7 @@
*
* @generated
*/
-public class SubAppImpl extends FBNetworkElementImpl implements SubApp {
- /**
- * The cached value of the '{@link #getSubAppNetwork() <em>Sub App Network</em>}' containment reference.
- * <!-- begin-user-doc -->
- * <!-- end-user-doc -->
- * @see #getSubAppNetwork()
- * @generated
- * @ordered
- */
- protected FBNetwork subAppNetwork;
-
+public abstract class SubAppImpl extends FBNetworkElementImpl implements SubApp {
/**
* The default value of the '{@link #getWidth() <em>Width</em>}' attribute.
* <!-- begin-user-doc -->
@@ -141,74 +128,6 @@
* @generated
*/
@Override
- public FBNetwork getSubAppNetwork() {
- if (subAppNetwork != null && subAppNetwork.eIsProxy()) {
- InternalEObject oldSubAppNetwork = (InternalEObject)subAppNetwork;
- subAppNetwork = (FBNetwork)eResolveProxy(oldSubAppNetwork);
- if (subAppNetwork != oldSubAppNetwork) {
- InternalEObject newSubAppNetwork = (InternalEObject)subAppNetwork;
- NotificationChain msgs = oldSubAppNetwork.eInverseRemove(this, EOPPOSITE_FEATURE_BASE - LibraryElementPackage.SUB_APP__SUB_APP_NETWORK, null, null);
- if (newSubAppNetwork.eInternalContainer() == null) {
- msgs = newSubAppNetwork.eInverseAdd(this, EOPPOSITE_FEATURE_BASE - LibraryElementPackage.SUB_APP__SUB_APP_NETWORK, null, msgs);
- }
- if (msgs != null) msgs.dispatch();
- if (eNotificationRequired())
- eNotify(new ENotificationImpl(this, Notification.RESOLVE, LibraryElementPackage.SUB_APP__SUB_APP_NETWORK, oldSubAppNetwork, subAppNetwork));
- }
- }
- return subAppNetwork;
- }
-
- /**
- * <!-- begin-user-doc -->
- * <!-- end-user-doc -->
- * @generated
- */
- public FBNetwork basicGetSubAppNetwork() {
- return subAppNetwork;
- }
-
- /**
- * <!-- begin-user-doc -->
- * <!-- end-user-doc -->
- * @generated
- */
- public NotificationChain basicSetSubAppNetwork(FBNetwork newSubAppNetwork, NotificationChain msgs) {
- FBNetwork oldSubAppNetwork = subAppNetwork;
- subAppNetwork = newSubAppNetwork;
- if (eNotificationRequired()) {
- ENotificationImpl notification = new ENotificationImpl(this, Notification.SET, LibraryElementPackage.SUB_APP__SUB_APP_NETWORK, oldSubAppNetwork, newSubAppNetwork);
- if (msgs == null) msgs = notification; else msgs.add(notification);
- }
- return msgs;
- }
-
- /**
- * <!-- begin-user-doc -->
- * <!-- end-user-doc -->
- * @generated
- */
- @Override
- public void setSubAppNetwork(FBNetwork newSubAppNetwork) {
- if (newSubAppNetwork != subAppNetwork) {
- NotificationChain msgs = null;
- if (subAppNetwork != null)
- msgs = ((InternalEObject)subAppNetwork).eInverseRemove(this, EOPPOSITE_FEATURE_BASE - LibraryElementPackage.SUB_APP__SUB_APP_NETWORK, null, msgs);
- if (newSubAppNetwork != null)
- msgs = ((InternalEObject)newSubAppNetwork).eInverseAdd(this, EOPPOSITE_FEATURE_BASE - LibraryElementPackage.SUB_APP__SUB_APP_NETWORK, null, msgs);
- msgs = basicSetSubAppNetwork(newSubAppNetwork, msgs);
- if (msgs != null) msgs.dispatch();
- }
- else if (eNotificationRequired())
- eNotify(new ENotificationImpl(this, Notification.SET, LibraryElementPackage.SUB_APP__SUB_APP_NETWORK, newSubAppNetwork, newSubAppNetwork));
- }
-
- /**
- * <!-- begin-user-doc -->
- * <!-- end-user-doc -->
- * @generated
- */
- @Override
public int getWidth() {
return width;
}
@@ -306,7 +225,21 @@
*/
@Override
public boolean isTyped() {
- return (getType() != null);
+ // TODO: implement this method
+ // Ensure that you remove @generated or mark it @generated NOT
+ throw new UnsupportedOperationException();
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public FBNetwork getSubAppNetwork() {
+ // TODO: implement this method
+ // Ensure that you remove @generated or mark it @generated NOT
+ throw new UnsupportedOperationException();
}
/**
@@ -316,7 +249,9 @@
*/
@Override
public FBNetwork loadSubAppNetwork() {
- return org.eclipse.fordiac.ide.model.annotations.SubAppAnnotations.loadSubAppNetwork(this);
+ // TODO: implement this method
+ // Ensure that you remove @generated or mark it @generated NOT
+ throw new UnsupportedOperationException();
}
/**
@@ -345,26 +280,8 @@
* @generated
*/
@Override
- public NotificationChain eInverseRemove(InternalEObject otherEnd, int featureID, NotificationChain msgs) {
- switch (featureID) {
- case LibraryElementPackage.SUB_APP__SUB_APP_NETWORK:
- return basicSetSubAppNetwork(null, msgs);
- default:
- return super.eInverseRemove(otherEnd, featureID, msgs);
- }
- }
-
- /**
- * <!-- begin-user-doc -->
- * <!-- end-user-doc -->
- * @generated
- */
- @Override
public Object eGet(int featureID, boolean resolve, boolean coreType) {
switch (featureID) {
- case LibraryElementPackage.SUB_APP__SUB_APP_NETWORK:
- if (resolve) return getSubAppNetwork();
- return basicGetSubAppNetwork();
case LibraryElementPackage.SUB_APP__WIDTH:
return getWidth();
case LibraryElementPackage.SUB_APP__HEIGHT:
@@ -384,9 +301,6 @@
@Override
public void eSet(int featureID, Object newValue) {
switch (featureID) {
- case LibraryElementPackage.SUB_APP__SUB_APP_NETWORK:
- setSubAppNetwork((FBNetwork)newValue);
- return;
case LibraryElementPackage.SUB_APP__WIDTH:
setWidth((Integer)newValue);
return;
@@ -410,9 +324,6 @@
@Override
public void eUnset(int featureID) {
switch (featureID) {
- case LibraryElementPackage.SUB_APP__SUB_APP_NETWORK:
- setSubAppNetwork((FBNetwork)null);
- return;
case LibraryElementPackage.SUB_APP__WIDTH:
setWidth(WIDTH_EDEFAULT);
return;
@@ -436,8 +347,6 @@
@Override
public boolean eIsSet(int featureID) {
switch (featureID) {
- case LibraryElementPackage.SUB_APP__SUB_APP_NETWORK:
- return subAppNetwork != null;
case LibraryElementPackage.SUB_APP__WIDTH:
return width != WIDTH_EDEFAULT;
case LibraryElementPackage.SUB_APP__HEIGHT:
@@ -463,7 +372,7 @@
result.append(width);
result.append(", height: "); //$NON-NLS-1$
result.append(height);
- result.append(", Locked: "); //$NON-NLS-1$
+ result.append(", locked: "); //$NON-NLS-1$
result.append(locked);
result.append(')');
return result.toString();
diff --git a/plugins/org.eclipse.fordiac.ide.model/src-gen/org/eclipse/fordiac/ide/model/libraryElement/impl/TypedSubAppImpl.java b/plugins/org.eclipse.fordiac.ide.model/src-gen/org/eclipse/fordiac/ide/model/libraryElement/impl/TypedSubAppImpl.java
new file mode 100644
index 0000000..28b396d
--- /dev/null
+++ b/plugins/org.eclipse.fordiac.ide.model/src-gen/org/eclipse/fordiac/ide/model/libraryElement/impl/TypedSubAppImpl.java
@@ -0,0 +1,198 @@
+/**
+ * *******************************************************************************
+ * Copyright (c) 2008 - 2018 Profactor GmbH, TU Wien ACIN, fortiss GmbH
+ * 2022-2023 Martin Erich Jobst
+ *
+ * This program and the accompanying materials are made available under the
+ * terms of the Eclipse Public License 2.0 which is available at
+ * http://www.eclipse.org/legal/epl-2.0.
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ * Contributors:
+ * Gerhard Ebenhofer, Alois Zoitl, Ingo Hegny, Monika Wenger, Martin Jobst
+ * - initial API and implementation and/or initial documentation
+ * *******************************************************************************
+ */
+package org.eclipse.fordiac.ide.model.libraryElement.impl;
+
+import org.eclipse.emf.common.notify.Notification;
+
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.InternalEObject;
+
+import org.eclipse.emf.ecore.impl.ENotificationImpl;
+
+import org.eclipse.fordiac.ide.model.libraryElement.FBNetwork;
+import org.eclipse.fordiac.ide.model.libraryElement.LibraryElementPackage;
+import org.eclipse.fordiac.ide.model.libraryElement.TypedSubApp;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Typed Sub App</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * </p>
+ * <ul>
+ * <li>{@link org.eclipse.fordiac.ide.model.libraryElement.impl.TypedSubAppImpl#getSubAppNetwork <em>Sub App Network</em>}</li>
+ * </ul>
+ *
+ * @generated
+ */
+public class TypedSubAppImpl extends SubAppImpl implements TypedSubApp {
+ /**
+ * The cached value of the '{@link #getSubAppNetwork() <em>Sub App Network</em>}' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getSubAppNetwork()
+ * @generated
+ * @ordered
+ */
+ protected FBNetwork subAppNetwork;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected TypedSubAppImpl() {
+ super();
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected EClass eStaticClass() {
+ return LibraryElementPackage.Literals.TYPED_SUB_APP;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public FBNetwork getSubAppNetwork() {
+ if (subAppNetwork != null && subAppNetwork.eIsProxy()) {
+ InternalEObject oldSubAppNetwork = (InternalEObject)subAppNetwork;
+ subAppNetwork = (FBNetwork)eResolveProxy(oldSubAppNetwork);
+ if (subAppNetwork != oldSubAppNetwork) {
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.RESOLVE, LibraryElementPackage.TYPED_SUB_APP__SUB_APP_NETWORK, oldSubAppNetwork, subAppNetwork));
+ }
+ }
+ return subAppNetwork;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public FBNetwork basicGetSubAppNetwork() {
+ return subAppNetwork;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void setSubAppNetwork(FBNetwork newSubAppNetwork) {
+ FBNetwork oldSubAppNetwork = subAppNetwork;
+ subAppNetwork = newSubAppNetwork;
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, LibraryElementPackage.TYPED_SUB_APP__SUB_APP_NETWORK, oldSubAppNetwork, subAppNetwork));
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public boolean isTyped() {
+ return true;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public FBNetwork loadSubAppNetwork() {
+ return org.eclipse.fordiac.ide.model.annotations.SubAppAnnotations.loadSubAppNetwork(this);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public Object eGet(int featureID, boolean resolve, boolean coreType) {
+ switch (featureID) {
+ case LibraryElementPackage.TYPED_SUB_APP__SUB_APP_NETWORK:
+ if (resolve) return getSubAppNetwork();
+ return basicGetSubAppNetwork();
+ default:
+ return super.eGet(featureID, resolve, coreType);
+ }
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void eSet(int featureID, Object newValue) {
+ switch (featureID) {
+ case LibraryElementPackage.TYPED_SUB_APP__SUB_APP_NETWORK:
+ setSubAppNetwork((FBNetwork)newValue);
+ return;
+ default:
+ super.eSet(featureID, newValue);
+ return;
+ }
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void eUnset(int featureID) {
+ switch (featureID) {
+ case LibraryElementPackage.TYPED_SUB_APP__SUB_APP_NETWORK:
+ setSubAppNetwork((FBNetwork)null);
+ return;
+ default:
+ super.eUnset(featureID);
+ return;
+ }
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public boolean eIsSet(int featureID) {
+ switch (featureID) {
+ case LibraryElementPackage.TYPED_SUB_APP__SUB_APP_NETWORK:
+ return subAppNetwork != null;
+ default:
+ return super.eIsSet(featureID);
+ }
+ }
+
+} //TypedSubAppImpl
diff --git a/plugins/org.eclipse.fordiac.ide.model/src-gen/org/eclipse/fordiac/ide/model/libraryElement/impl/UntypedSubAppImpl.java b/plugins/org.eclipse.fordiac.ide.model/src-gen/org/eclipse/fordiac/ide/model/libraryElement/impl/UntypedSubAppImpl.java
new file mode 100644
index 0000000..22de66d
--- /dev/null
+++ b/plugins/org.eclipse.fordiac.ide.model/src-gen/org/eclipse/fordiac/ide/model/libraryElement/impl/UntypedSubAppImpl.java
@@ -0,0 +1,265 @@
+/**
+ * *******************************************************************************
+ * Copyright (c) 2008 - 2018 Profactor GmbH, TU Wien ACIN, fortiss GmbH
+ * 2022-2023 Martin Erich Jobst
+ *
+ * This program and the accompanying materials are made available under the
+ * terms of the Eclipse Public License 2.0 which is available at
+ * http://www.eclipse.org/legal/epl-2.0.
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ * Contributors:
+ * Gerhard Ebenhofer, Alois Zoitl, Ingo Hegny, Monika Wenger, Martin Jobst
+ * - initial API and implementation and/or initial documentation
+ * *******************************************************************************
+ */
+package org.eclipse.fordiac.ide.model.libraryElement.impl;
+
+import org.eclipse.emf.common.notify.Notification;
+import org.eclipse.emf.common.notify.NotificationChain;
+
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.InternalEObject;
+
+import org.eclipse.emf.ecore.impl.ENotificationImpl;
+
+import org.eclipse.fordiac.ide.model.libraryElement.FBNetwork;
+import org.eclipse.fordiac.ide.model.libraryElement.LibraryElementPackage;
+import org.eclipse.fordiac.ide.model.libraryElement.SubAppType;
+import org.eclipse.fordiac.ide.model.libraryElement.UntypedSubApp;
+
+import org.eclipse.fordiac.ide.model.typelibrary.TypeEntry;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Untyped Sub App</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * </p>
+ * <ul>
+ * <li>{@link org.eclipse.fordiac.ide.model.libraryElement.impl.UntypedSubAppImpl#getSubAppNetwork <em>Sub App Network</em>}</li>
+ * </ul>
+ *
+ * @generated
+ */
+public class UntypedSubAppImpl extends SubAppImpl implements UntypedSubApp {
+ /**
+ * The cached value of the '{@link #getSubAppNetwork() <em>Sub App Network</em>}' containment reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getSubAppNetwork()
+ * @generated
+ * @ordered
+ */
+ protected FBNetwork subAppNetwork;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected UntypedSubAppImpl() {
+ super();
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected EClass eStaticClass() {
+ return LibraryElementPackage.Literals.UNTYPED_SUB_APP;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public FBNetwork getSubAppNetwork() {
+ if (subAppNetwork != null && subAppNetwork.eIsProxy()) {
+ InternalEObject oldSubAppNetwork = (InternalEObject)subAppNetwork;
+ subAppNetwork = (FBNetwork)eResolveProxy(oldSubAppNetwork);
+ if (subAppNetwork != oldSubAppNetwork) {
+ InternalEObject newSubAppNetwork = (InternalEObject)subAppNetwork;
+ NotificationChain msgs = oldSubAppNetwork.eInverseRemove(this, EOPPOSITE_FEATURE_BASE - LibraryElementPackage.UNTYPED_SUB_APP__SUB_APP_NETWORK, null, null);
+ if (newSubAppNetwork.eInternalContainer() == null) {
+ msgs = newSubAppNetwork.eInverseAdd(this, EOPPOSITE_FEATURE_BASE - LibraryElementPackage.UNTYPED_SUB_APP__SUB_APP_NETWORK, null, msgs);
+ }
+ if (msgs != null) msgs.dispatch();
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.RESOLVE, LibraryElementPackage.UNTYPED_SUB_APP__SUB_APP_NETWORK, oldSubAppNetwork, subAppNetwork));
+ }
+ }
+ return subAppNetwork;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public FBNetwork basicGetSubAppNetwork() {
+ return subAppNetwork;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public NotificationChain basicSetSubAppNetwork(FBNetwork newSubAppNetwork, NotificationChain msgs) {
+ FBNetwork oldSubAppNetwork = subAppNetwork;
+ subAppNetwork = newSubAppNetwork;
+ if (eNotificationRequired()) {
+ ENotificationImpl notification = new ENotificationImpl(this, Notification.SET, LibraryElementPackage.UNTYPED_SUB_APP__SUB_APP_NETWORK, oldSubAppNetwork, newSubAppNetwork);
+ if (msgs == null) msgs = notification; else msgs.add(notification);
+ }
+ return msgs;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void setSubAppNetwork(FBNetwork newSubAppNetwork) {
+ if (newSubAppNetwork != subAppNetwork) {
+ NotificationChain msgs = null;
+ if (subAppNetwork != null)
+ msgs = ((InternalEObject)subAppNetwork).eInverseRemove(this, EOPPOSITE_FEATURE_BASE - LibraryElementPackage.UNTYPED_SUB_APP__SUB_APP_NETWORK, null, msgs);
+ if (newSubAppNetwork != null)
+ msgs = ((InternalEObject)newSubAppNetwork).eInverseAdd(this, EOPPOSITE_FEATURE_BASE - LibraryElementPackage.UNTYPED_SUB_APP__SUB_APP_NETWORK, null, msgs);
+ msgs = basicSetSubAppNetwork(newSubAppNetwork, msgs);
+ if (msgs != null) msgs.dispatch();
+ }
+ else if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, LibraryElementPackage.UNTYPED_SUB_APP__SUB_APP_NETWORK, newSubAppNetwork, newSubAppNetwork));
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public SubAppType getType() {
+ return null;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public boolean isTyped() {
+ return false;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void setTypeEntry(final TypeEntry typeEntry) {
+ throw new UnsupportedOperationException("Setting the type entry of an untyped subapp is not supported!");
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public FBNetwork loadSubAppNetwork() {
+ return getSubAppNetwork();
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public NotificationChain eInverseRemove(InternalEObject otherEnd, int featureID, NotificationChain msgs) {
+ switch (featureID) {
+ case LibraryElementPackage.UNTYPED_SUB_APP__SUB_APP_NETWORK:
+ return basicSetSubAppNetwork(null, msgs);
+ default:
+ return super.eInverseRemove(otherEnd, featureID, msgs);
+ }
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public Object eGet(int featureID, boolean resolve, boolean coreType) {
+ switch (featureID) {
+ case LibraryElementPackage.UNTYPED_SUB_APP__SUB_APP_NETWORK:
+ if (resolve) return getSubAppNetwork();
+ return basicGetSubAppNetwork();
+ default:
+ return super.eGet(featureID, resolve, coreType);
+ }
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void eSet(int featureID, Object newValue) {
+ switch (featureID) {
+ case LibraryElementPackage.UNTYPED_SUB_APP__SUB_APP_NETWORK:
+ setSubAppNetwork((FBNetwork)newValue);
+ return;
+ default:
+ super.eSet(featureID, newValue);
+ return;
+ }
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void eUnset(int featureID) {
+ switch (featureID) {
+ case LibraryElementPackage.UNTYPED_SUB_APP__SUB_APP_NETWORK:
+ setSubAppNetwork((FBNetwork)null);
+ return;
+ default:
+ super.eUnset(featureID);
+ return;
+ }
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public boolean eIsSet(int featureID) {
+ switch (featureID) {
+ case LibraryElementPackage.UNTYPED_SUB_APP__SUB_APP_NETWORK:
+ return subAppNetwork != null;
+ default:
+ return super.eIsSet(featureID);
+ }
+ }
+
+} //UntypedSubAppImpl
diff --git a/plugins/org.eclipse.fordiac.ide.model/src-gen/org/eclipse/fordiac/ide/model/libraryElement/impl/VarDeclarationImpl.java b/plugins/org.eclipse.fordiac.ide.model/src-gen/org/eclipse/fordiac/ide/model/libraryElement/impl/VarDeclarationImpl.java
index 058d1b5..a3c1d1c 100644
--- a/plugins/org.eclipse.fordiac.ide.model/src-gen/org/eclipse/fordiac/ide/model/libraryElement/impl/VarDeclarationImpl.java
+++ b/plugins/org.eclipse.fordiac.ide.model/src-gen/org/eclipse/fordiac/ide/model/libraryElement/impl/VarDeclarationImpl.java
@@ -632,6 +632,26 @@
* @generated
*/
@Override
+ public boolean validateVarInOutSubappInterface(final DiagnosticChain diagnostics, final Map<Object, Object> context) {
+ return org.eclipse.fordiac.ide.model.libraryElement.impl.VarDeclarationAnnotations.validateVarInOutSubappInterface(this, diagnostics, context);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public boolean validateVarInOutSubappNetwork(final DiagnosticChain diagnostics, final Map<Object, Object> context) {
+ return org.eclipse.fordiac.ide.model.libraryElement.impl.VarDeclarationAnnotations.validateVarInOutSubappNetwork(this, diagnostics, context);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
public FBNetworkElement getFBNetworkElement() {
return org.eclipse.fordiac.ide.model.Annotations.getFBNetworkElement(this);
}
diff --git a/plugins/org.eclipse.fordiac.ide.model/src-gen/org/eclipse/fordiac/ide/model/libraryElement/util/LibraryElementAdapterFactory.java b/plugins/org.eclipse.fordiac.ide.model/src-gen/org/eclipse/fordiac/ide/model/libraryElement/util/LibraryElementAdapterFactory.java
index a839853..cf56c46 100644
--- a/plugins/org.eclipse.fordiac.ide.model/src-gen/org/eclipse/fordiac/ide/model/libraryElement/util/LibraryElementAdapterFactory.java
+++ b/plugins/org.eclipse.fordiac.ide.model/src-gen/org/eclipse/fordiac/ide/model/libraryElement/util/LibraryElementAdapterFactory.java
@@ -475,6 +475,14 @@
return createTypedConfigureableObjectAdapter();
}
@Override
+ public Adapter caseTypedSubApp(TypedSubApp object) {
+ return createTypedSubAppAdapter();
+ }
+ @Override
+ public Adapter caseUntypedSubApp(UntypedSubApp object) {
+ return createUntypedSubAppAdapter();
+ }
+ @Override
public Adapter caseValue(Value object) {
return createValueAdapter();
}
@@ -1887,6 +1895,34 @@
}
/**
+ * Creates a new adapter for an object of class '{@link org.eclipse.fordiac.ide.model.libraryElement.TypedSubApp <em>Typed Sub App</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.fordiac.ide.model.libraryElement.TypedSubApp
+ * @generated
+ */
+ public Adapter createTypedSubAppAdapter() {
+ return null;
+ }
+
+ /**
+ * Creates a new adapter for an object of class '{@link org.eclipse.fordiac.ide.model.libraryElement.UntypedSubApp <em>Untyped Sub App</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.fordiac.ide.model.libraryElement.UntypedSubApp
+ * @generated
+ */
+ public Adapter createUntypedSubAppAdapter() {
+ return null;
+ }
+
+ /**
* Creates a new adapter for an object of class '{@link org.eclipse.fordiac.ide.model.libraryElement.Value <em>Value</em>}'.
* <!-- begin-user-doc -->
* This default implementation returns null so that we can easily ignore cases;
diff --git a/plugins/org.eclipse.fordiac.ide.model/src-gen/org/eclipse/fordiac/ide/model/libraryElement/util/LibraryElementSwitch.java b/plugins/org.eclipse.fordiac.ide.model/src-gen/org/eclipse/fordiac/ide/model/libraryElement/util/LibraryElementSwitch.java
index d97487a..271a7f2 100644
--- a/plugins/org.eclipse.fordiac.ide.model/src-gen/org/eclipse/fordiac/ide/model/libraryElement/util/LibraryElementSwitch.java
+++ b/plugins/org.eclipse.fordiac.ide.model/src-gen/org/eclipse/fordiac/ide/model/libraryElement/util/LibraryElementSwitch.java
@@ -974,6 +974,32 @@
if (result == null) result = defaultCase(theEObject);
return result;
}
+ case LibraryElementPackage.TYPED_SUB_APP: {
+ TypedSubApp typedSubApp = (TypedSubApp)theEObject;
+ T result = caseTypedSubApp(typedSubApp);
+ if (result == null) result = caseSubApp(typedSubApp);
+ if (result == null) result = caseFBNetworkElement(typedSubApp);
+ if (result == null) result = caseTypedConfigureableObject(typedSubApp);
+ if (result == null) result = casePositionableElement(typedSubApp);
+ if (result == null) result = caseITypedElement(typedSubApp);
+ if (result == null) result = caseConfigurableObject(typedSubApp);
+ if (result == null) result = caseINamedElement(typedSubApp);
+ if (result == null) result = defaultCase(theEObject);
+ return result;
+ }
+ case LibraryElementPackage.UNTYPED_SUB_APP: {
+ UntypedSubApp untypedSubApp = (UntypedSubApp)theEObject;
+ T result = caseUntypedSubApp(untypedSubApp);
+ if (result == null) result = caseSubApp(untypedSubApp);
+ if (result == null) result = caseFBNetworkElement(untypedSubApp);
+ if (result == null) result = caseTypedConfigureableObject(untypedSubApp);
+ if (result == null) result = casePositionableElement(untypedSubApp);
+ if (result == null) result = caseITypedElement(untypedSubApp);
+ if (result == null) result = caseConfigurableObject(untypedSubApp);
+ if (result == null) result = caseINamedElement(untypedSubApp);
+ if (result == null) result = defaultCase(theEObject);
+ return result;
+ }
case LibraryElementPackage.VALUE: {
Value value = (Value)theEObject;
T result = caseValue(value);
@@ -2478,6 +2504,36 @@
}
/**
+ * Returns the result of interpreting the object as an instance of '<em>Typed Sub App</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>Typed Sub App</em>'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+ * @generated
+ */
+ public T caseTypedSubApp(TypedSubApp object) {
+ return null;
+ }
+
+ /**
+ * Returns the result of interpreting the object as an instance of '<em>Untyped Sub App</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>Untyped Sub App</em>'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+ * @generated
+ */
+ public T caseUntypedSubApp(UntypedSubApp object) {
+ return null;
+ }
+
+ /**
* Returns the result of interpreting the object as an instance of '<em>Value</em>'.
* <!-- begin-user-doc -->
* This implementation returns null;
diff --git a/plugins/org.eclipse.fordiac.ide.model/src-gen/org/eclipse/fordiac/ide/model/libraryElement/util/LibraryElementValidator.java b/plugins/org.eclipse.fordiac.ide.model/src-gen/org/eclipse/fordiac/ide/model/libraryElement/util/LibraryElementValidator.java
index c4762e3..97859ad 100644
--- a/plugins/org.eclipse.fordiac.ide.model/src-gen/org/eclipse/fordiac/ide/model/libraryElement/util/LibraryElementValidator.java
+++ b/plugins/org.eclipse.fordiac.ide.model/src-gen/org/eclipse/fordiac/ide/model/libraryElement/util/LibraryElementValidator.java
@@ -129,6 +129,8 @@
import org.eclipse.fordiac.ide.model.libraryElement.TextFunctionBody;
import org.eclipse.fordiac.ide.model.libraryElement.TextMethod;
import org.eclipse.fordiac.ide.model.libraryElement.TypedConfigureableObject;
+import org.eclipse.fordiac.ide.model.libraryElement.TypedSubApp;
+import org.eclipse.fordiac.ide.model.libraryElement.UntypedSubApp;
import org.eclipse.fordiac.ide.model.libraryElement.Value;
import org.eclipse.fordiac.ide.model.libraryElement.VarDeclaration;
import org.eclipse.fordiac.ide.model.libraryElement.VersionInfo;
@@ -374,12 +376,28 @@
public static final int VAR_DECLARATION__VALIDATE_VAR_IN_OUT_IS_WITHED = 26;
/**
+ * The {@link org.eclipse.emf.common.util.Diagnostic#getCode() code} for constraint 'Validate Var In Out Subapp Interface' of 'Var Declaration'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public static final int VAR_DECLARATION__VALIDATE_VAR_IN_OUT_SUBAPP_INTERFACE = 27;
+
+ /**
+ * The {@link org.eclipse.emf.common.util.Diagnostic#getCode() code} for constraint 'Validate Var In Out Subapp Network' of 'Var Declaration'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public static final int VAR_DECLARATION__VALIDATE_VAR_IN_OUT_SUBAPP_NETWORK = 28;
+
+ /**
* A constant with a fixed name that can be used as the base value for additional hand written constants.
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
* @generated
*/
- private static final int GENERATED_DIAGNOSTIC_CODE_COUNT = 26;
+ private static final int GENERATED_DIAGNOSTIC_CODE_COUNT = 28;
/**
* A constant with a fixed name that can be used as the base value for additional hand written constants in a derived class.
@@ -616,6 +634,10 @@
return validateTextMethod((TextMethod)value, diagnostics, context);
case LibraryElementPackage.TYPED_CONFIGUREABLE_OBJECT:
return validateTypedConfigureableObject((TypedConfigureableObject)value, diagnostics, context);
+ case LibraryElementPackage.TYPED_SUB_APP:
+ return validateTypedSubApp((TypedSubApp)value, diagnostics, context);
+ case LibraryElementPackage.UNTYPED_SUB_APP:
+ return validateUntypedSubApp((UntypedSubApp)value, diagnostics, context);
case LibraryElementPackage.VALUE:
return validateValue((Value)value, diagnostics, context);
case LibraryElementPackage.VAR_DECLARATION:
@@ -1919,6 +1941,8 @@
if (result || diagnostics != null) result &= validateVarDeclaration_validateValueForGenericInstanceVariable(localVariable, diagnostics, context);
if (result || diagnostics != null) result &= validateVarDeclaration_validateVarInOutSourceTypeIsWellDefined(localVariable, diagnostics, context);
if (result || diagnostics != null) result &= validateVarDeclaration_validateVarInOutIsWithed(localVariable, diagnostics, context);
+ if (result || diagnostics != null) result &= validateVarDeclaration_validateVarInOutSubappInterface(localVariable, diagnostics, context);
+ if (result || diagnostics != null) result &= validateVarDeclaration_validateVarInOutSubappNetwork(localVariable, diagnostics, context);
return result;
}
@@ -2508,6 +2532,46 @@
* <!-- end-user-doc -->
* @generated
*/
+ public boolean validateTypedSubApp(TypedSubApp typedSubApp, DiagnosticChain diagnostics, Map<Object, Object> context) {
+ if (!validate_NoCircularContainment(typedSubApp, diagnostics, context)) return false;
+ boolean result = validate_EveryMultiplicityConforms(typedSubApp, diagnostics, context);
+ if (result || diagnostics != null) result &= validate_EveryDataValueConforms(typedSubApp, diagnostics, context);
+ if (result || diagnostics != null) result &= validate_EveryReferenceIsContained(typedSubApp, diagnostics, context);
+ if (result || diagnostics != null) result &= validate_EveryBidirectionalReferenceIsPaired(typedSubApp, diagnostics, context);
+ if (result || diagnostics != null) result &= validate_EveryProxyResolves(typedSubApp, diagnostics, context);
+ if (result || diagnostics != null) result &= validate_UniqueID(typedSubApp, diagnostics, context);
+ if (result || diagnostics != null) result &= validate_EveryKeyUnique(typedSubApp, diagnostics, context);
+ if (result || diagnostics != null) result &= validate_EveryMapEntryUnique(typedSubApp, diagnostics, context);
+ if (result || diagnostics != null) result &= validateFBNetworkElement_validateName(typedSubApp, diagnostics, context);
+ if (result || diagnostics != null) result &= validateTypedConfigureableObject_validateType(typedSubApp, diagnostics, context);
+ return result;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public boolean validateUntypedSubApp(UntypedSubApp untypedSubApp, DiagnosticChain diagnostics, Map<Object, Object> context) {
+ if (!validate_NoCircularContainment(untypedSubApp, diagnostics, context)) return false;
+ boolean result = validate_EveryMultiplicityConforms(untypedSubApp, diagnostics, context);
+ if (result || diagnostics != null) result &= validate_EveryDataValueConforms(untypedSubApp, diagnostics, context);
+ if (result || diagnostics != null) result &= validate_EveryReferenceIsContained(untypedSubApp, diagnostics, context);
+ if (result || diagnostics != null) result &= validate_EveryBidirectionalReferenceIsPaired(untypedSubApp, diagnostics, context);
+ if (result || diagnostics != null) result &= validate_EveryProxyResolves(untypedSubApp, diagnostics, context);
+ if (result || diagnostics != null) result &= validate_UniqueID(untypedSubApp, diagnostics, context);
+ if (result || diagnostics != null) result &= validate_EveryKeyUnique(untypedSubApp, diagnostics, context);
+ if (result || diagnostics != null) result &= validate_EveryMapEntryUnique(untypedSubApp, diagnostics, context);
+ if (result || diagnostics != null) result &= validateFBNetworkElement_validateName(untypedSubApp, diagnostics, context);
+ if (result || diagnostics != null) result &= validateTypedConfigureableObject_validateType(untypedSubApp, diagnostics, context);
+ return result;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
public boolean validateValue(Value value, DiagnosticChain diagnostics, Map<Object, Object> context) {
return validate_EveryDefaultConstraint(value, diagnostics, context);
}
@@ -2534,6 +2598,8 @@
if (result || diagnostics != null) result &= validateVarDeclaration_validateValueForGenericInstanceVariable(varDeclaration, diagnostics, context);
if (result || diagnostics != null) result &= validateVarDeclaration_validateVarInOutSourceTypeIsWellDefined(varDeclaration, diagnostics, context);
if (result || diagnostics != null) result &= validateVarDeclaration_validateVarInOutIsWithed(varDeclaration, diagnostics, context);
+ if (result || diagnostics != null) result &= validateVarDeclaration_validateVarInOutSubappInterface(varDeclaration, diagnostics, context);
+ if (result || diagnostics != null) result &= validateVarDeclaration_validateVarInOutSubappNetwork(varDeclaration, diagnostics, context);
return result;
}
@@ -2588,6 +2654,26 @@
}
/**
+ * Validates the validateVarInOutSubappInterface constraint of '<em>Var Declaration</em>'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public boolean validateVarDeclaration_validateVarInOutSubappInterface(VarDeclaration varDeclaration, DiagnosticChain diagnostics, Map<Object, Object> context) {
+ return varDeclaration.validateVarInOutSubappInterface(diagnostics, context);
+ }
+
+ /**
+ * Validates the validateVarInOutSubappNetwork constraint of '<em>Var Declaration</em>'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public boolean validateVarDeclaration_validateVarInOutSubappNetwork(VarDeclaration varDeclaration, DiagnosticChain diagnostics, Map<Object, Object> context) {
+ return varDeclaration.validateVarInOutSubappNetwork(diagnostics, context);
+ }
+
+ /**
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
* @generated
diff --git a/plugins/org.eclipse.fordiac.ide.model/src/org/eclipse/fordiac/ide/model/Messages.java b/plugins/org.eclipse.fordiac.ide.model/src/org/eclipse/fordiac/ide/model/Messages.java
index 344f9cf..da20e0d 100644
--- a/plugins/org.eclipse.fordiac.ide.model/src/org/eclipse/fordiac/ide/model/Messages.java
+++ b/plugins/org.eclipse.fordiac.ide.model/src/org/eclipse/fordiac/ide/model/Messages.java
@@ -30,6 +30,8 @@
public static String ConnectionAnnotations_DestinationElementMissing;
public static String ConnectionAnnotations_DestinationEndpointMissing;
public static String ConnectionAnnotations_DuplicateConnection;
+
+ public static String ConnectionAnnotations_GenericEndpoints;
public static String ConnectionAnnotations_SourceElementMissing;
public static String ConnectionAnnotations_SourceEndpointMissing;
public static String ConnectionAnnotations_TypeMismatch;
@@ -118,6 +120,12 @@
public static String VarDeclarationAnnotations_ShouldSpecifyValueForGenericVariableInInstance;
+ public static String VarDeclarationAnnotations_VarInOutLeftNotConnected;
+
+ public static String VarDeclarationAnnotations_VarInOutRightNotConnected;
+
+ public static String VarDeclarationAnnotations_VarInOutSubappNetwork;
+
static {
// initialize resource bundle
NLS.initializeMessages(BUNDLE_NAME, Messages.class);
diff --git a/plugins/org.eclipse.fordiac.ide.model/src/org/eclipse/fordiac/ide/model/annotations/SubAppAnnotations.java b/plugins/org.eclipse.fordiac.ide.model/src/org/eclipse/fordiac/ide/model/annotations/SubAppAnnotations.java
index ad693d6..dba519b 100644
--- a/plugins/org.eclipse.fordiac.ide.model/src/org/eclipse/fordiac/ide/model/annotations/SubAppAnnotations.java
+++ b/plugins/org.eclipse.fordiac.ide.model/src/org/eclipse/fordiac/ide/model/annotations/SubAppAnnotations.java
@@ -14,13 +14,13 @@
import org.eclipse.fordiac.ide.model.helpers.FBNetworkHelper;
import org.eclipse.fordiac.ide.model.libraryElement.FBNetwork;
-import org.eclipse.fordiac.ide.model.libraryElement.SubApp;
+import org.eclipse.fordiac.ide.model.libraryElement.TypedSubApp;
public final class SubAppAnnotations {
- public static FBNetwork loadSubAppNetwork(final SubApp subApp) {
+ public static FBNetwork loadSubAppNetwork(final TypedSubApp subApp) {
FBNetwork subAppNetwork = subApp.getSubAppNetwork();
- if ((null == subAppNetwork) && (subApp.isTyped())) {
+ if (null == subAppNetwork) {
subAppNetwork = FBNetworkHelper.copyFBNetWork(subApp.getType().getFBNetwork(), subApp.getInterface());
subApp.setSubAppNetwork(subAppNetwork);
}
diff --git a/plugins/org.eclipse.fordiac.ide.model/src/org/eclipse/fordiac/ide/model/dataimport/SubAppNetworkImporter.java b/plugins/org.eclipse.fordiac.ide.model/src/org/eclipse/fordiac/ide/model/dataimport/SubAppNetworkImporter.java
index de20953..a263737 100644
--- a/plugins/org.eclipse.fordiac.ide.model/src/org/eclipse/fordiac/ide/model/dataimport/SubAppNetworkImporter.java
+++ b/plugins/org.eclipse.fordiac.ide.model/src/org/eclipse/fordiac/ide/model/dataimport/SubAppNetworkImporter.java
@@ -28,6 +28,8 @@
import org.eclipse.fordiac.ide.model.libraryElement.LibraryElementFactory;
import org.eclipse.fordiac.ide.model.libraryElement.LibraryElementPackage;
import org.eclipse.fordiac.ide.model.libraryElement.SubApp;
+import org.eclipse.fordiac.ide.model.libraryElement.TypedSubApp;
+import org.eclipse.fordiac.ide.model.libraryElement.UntypedSubApp;
import org.eclipse.fordiac.ide.model.libraryElement.VarDeclaration;
import org.eclipse.fordiac.ide.model.typelibrary.SubAppTypeEntry;
@@ -57,13 +59,19 @@
private void parseSubApp() throws TypeImportException, XMLStreamException {
final String type = getAttributeValue(LibraryElementTags.TYPE_ATTRIBUTE);
- final FBNetworkElement subApp = createSubapp(type);
+ final FBNetworkElement subApp;
+ if (type == null) {
+ subApp = LibraryElementFactory.eINSTANCE.createUntypedSubApp();
+ } else {
+ subApp = createTypedSubapp(type);
+ }
+
readNameCommentAttributes(subApp);
getXandY(subApp);
addFBNetworkElement(subApp);
- if (type == null) {
- parseUntypedSubapp((SubApp) subApp);
+ if (subApp instanceof final UntypedSubApp untypedSubApp) {
+ parseUntypedSubapp(untypedSubApp);
} else {
parseFBChildren(subApp, LibraryElementTags.SUBAPP_ELEMENT);
}
@@ -80,12 +88,8 @@
}
}
- public FBNetworkElement createSubapp(final String type) {
- final FBNetworkElement subApp = LibraryElementFactory.eINSTANCE.createSubApp();
- if (type == null) {
- return subApp;
- }
-
+ public FBNetworkElement createTypedSubapp(final String type) {
+ final TypedSubApp subApp = LibraryElementFactory.eINSTANCE.createTypedSubApp();
final SubAppTypeEntry subEntry = addDependency(getTypeLibrary().getSubAppTypeEntry(type));
if (subEntry == null) {
return addDependency(FordiacMarkerHelper.createTypeErrorMarkerFB(type, getTypeLibrary(),
@@ -96,7 +100,7 @@
return subApp;
}
- private void parseUntypedSubapp(final SubApp subApp) throws TypeImportException, XMLStreamException {
+ private void parseUntypedSubapp(final UntypedSubApp subApp) throws TypeImportException, XMLStreamException {
processChildren(LibraryElementTags.SUBAPP_ELEMENT, name -> (switch (name) {
case LibraryElementTags.SUBAPPINTERFACE_LIST_ELEMENT -> {
final SubAppTImporter interfaceImporter = new SubAppTImporter(this);
diff --git a/plugins/org.eclipse.fordiac.ide.model/src/org/eclipse/fordiac/ide/model/helpers/BlockInstanceFactory.java b/plugins/org.eclipse.fordiac.ide.model/src/org/eclipse/fordiac/ide/model/helpers/BlockInstanceFactory.java
index ed12ad8..4a0b684 100644
--- a/plugins/org.eclipse.fordiac.ide.model/src/org/eclipse/fordiac/ide/model/helpers/BlockInstanceFactory.java
+++ b/plugins/org.eclipse.fordiac.ide.model/src/org/eclipse/fordiac/ide/model/helpers/BlockInstanceFactory.java
@@ -30,7 +30,7 @@
return LibraryElementFactory.eINSTANCE.createErrorMarkerFBNElement();
}
if (entry instanceof SubAppTypeEntry) {
- return LibraryElementFactory.eINSTANCE.createSubApp();
+ return LibraryElementFactory.eINSTANCE.createTypedSubApp();
}
if (entry instanceof AdapterTypeEntry) {
return LibraryElementFactory.eINSTANCE.createAdapterFB();
diff --git a/plugins/org.eclipse.fordiac.ide.model/src/org/eclipse/fordiac/ide/model/helpers/VarInOutHelper.java b/plugins/org.eclipse.fordiac.ide.model/src/org/eclipse/fordiac/ide/model/helpers/VarInOutHelper.java
new file mode 100644
index 0000000..934c00f
--- /dev/null
+++ b/plugins/org.eclipse.fordiac.ide.model/src/org/eclipse/fordiac/ide/model/helpers/VarInOutHelper.java
@@ -0,0 +1,57 @@
+/*******************************************************************************
+ * Copyright (c) 2024 Martin Erich Jobst
+ *
+ * This program and the accompanying materials are made available under the
+ * terms of the Eclipse Public License 2.0 which is available at
+ * http://www.eclipse.org/legal/epl-2.0.
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ * Contributors:
+ * Martin Jobst - initial API and implementation and/or initial documentation
+ *******************************************************************************/
+package org.eclipse.fordiac.ide.model.helpers;
+
+import java.util.HashSet;
+import java.util.Set;
+
+import org.eclipse.fordiac.ide.model.libraryElement.VarDeclaration;
+
+public final class VarInOutHelper {
+
+ /**
+ * Get the defining InOut variable
+ * <p>
+ * The defining InOut variable in a network of connected InOut variables is the
+ * one that has no input connections.
+ * <p>
+ * A special case exists for untyped subapps where the search stops at the
+ * subapp boundary, indicated by a source endpoint that is an input. When passed
+ * an InOut variable on the interface of an untyped subapp, this method searches
+ * the outside for an input variable and the inside for an output variable.
+ *
+ * @param varDeclaration The variable to search from
+ * @return The defining variable
+ * @apiNote In order to get meaningful results, the variable to search from
+ * should be an input variable, except for untyped subapps, where an
+ * output variable may also have input connections.
+ */
+ public static VarDeclaration getDefiningVarInOutDeclaration(VarDeclaration varDeclaration) {
+ final Set<VarDeclaration> visited = new HashSet<>();
+ while (!varDeclaration.getInputConnections().isEmpty()
+ && varDeclaration.getInputConnections().get(0).getSource() instanceof final VarDeclaration source) {
+ if (source.isIsInput()) {
+ return source; // subapp boundary
+ }
+ varDeclaration = source.getInOutVarOpposite();
+ if (!visited.add(varDeclaration)) {
+ return null; // loop
+ }
+ }
+ return varDeclaration;
+ }
+
+ private VarInOutHelper() {
+ throw new UnsupportedOperationException();
+ }
+}
diff --git a/plugins/org.eclipse.fordiac.ide.model/src/org/eclipse/fordiac/ide/model/libraryElement/impl/ConnectionAnnotations.java b/plugins/org.eclipse.fordiac.ide.model/src/org/eclipse/fordiac/ide/model/libraryElement/impl/ConnectionAnnotations.java
index 893f07a..3530522 100644
--- a/plugins/org.eclipse.fordiac.ide.model/src/org/eclipse/fordiac/ide/model/libraryElement/impl/ConnectionAnnotations.java
+++ b/plugins/org.eclipse.fordiac.ide.model/src/org/eclipse/fordiac/ide/model/libraryElement/impl/ConnectionAnnotations.java
@@ -14,16 +14,16 @@
package org.eclipse.fordiac.ide.model.libraryElement.impl;
import java.text.MessageFormat;
-import java.util.HashSet;
import java.util.Map;
-import java.util.Set;
import org.eclipse.emf.common.util.BasicDiagnostic;
import org.eclipse.emf.common.util.Diagnostic;
import org.eclipse.emf.common.util.DiagnosticChain;
import org.eclipse.fordiac.ide.model.Messages;
import org.eclipse.fordiac.ide.model.data.AnyStringType;
+import org.eclipse.fordiac.ide.model.datatype.helper.IecTypes.GenericTypes;
import org.eclipse.fordiac.ide.model.errormarker.FordiacMarkerHelper;
+import org.eclipse.fordiac.ide.model.helpers.VarInOutHelper;
import org.eclipse.fordiac.ide.model.libraryElement.Connection;
import org.eclipse.fordiac.ide.model.libraryElement.ErrorMarkerFBNElement;
import org.eclipse.fordiac.ide.model.libraryElement.ErrorMarkerInterface;
@@ -104,7 +104,7 @@
if (isDuplicateConnection(connection)) {
if (diagnostics != null) {
diagnostics.add(new BasicDiagnostic(Diagnostic.ERROR, LibraryElementValidator.DIAGNOSTIC_SOURCE,
- LibraryElementValidator.CONNECTION__VALIDATE_MISSING_DESTINATION_ENDPOINT,
+ LibraryElementValidator.CONNECTION__VALIDATE_DUPLICATE,
MessageFormat.format(Messages.ConnectionAnnotations_DuplicateConnection,
connection.getSource().getQualifiedName(),
connection.getDestination().getQualifiedName()),
@@ -120,7 +120,7 @@
if (!LinkConstraints.typeCheck(connection.getSource(), connection.getDestination())) {
if (diagnostics != null) {
diagnostics.add(new BasicDiagnostic(Diagnostic.ERROR, LibraryElementValidator.DIAGNOSTIC_SOURCE,
- LibraryElementValidator.CONNECTION__VALIDATE_MISSING_DESTINATION_ENDPOINT,
+ LibraryElementValidator.CONNECTION__VALIDATE_TYPE_MISMATCH,
MessageFormat.format(Messages.ConnectionAnnotations_TypeMismatch,
connection.getSource().getQualifiedName(), connection.getSource().getFullTypeName(),
connection.getDestination().getQualifiedName(),
@@ -129,6 +129,20 @@
}
return false;
}
+ if (connection.getSource() != null && connection.getDestination() != null
+ && GenericTypes.isAnyType(connection.getSource().getType())
+ && GenericTypes.isAnyType(connection.getDestination().getType())) {
+ if (diagnostics != null) {
+ diagnostics.add(new BasicDiagnostic(Diagnostic.ERROR, LibraryElementValidator.DIAGNOSTIC_SOURCE,
+ LibraryElementValidator.CONNECTION__VALIDATE_TYPE_MISMATCH,
+ MessageFormat.format(Messages.ConnectionAnnotations_GenericEndpoints,
+ connection.getSource().getQualifiedName(), connection.getSource().getFullTypeName(),
+ connection.getDestination().getQualifiedName(),
+ connection.getDestination().getFullTypeName()),
+ FordiacMarkerHelper.getDiagnosticData(connection)));
+ }
+ return false;
+ }
return true;
}
@@ -161,7 +175,8 @@
final DiagnosticChain diagnostics, final Map<Object, Object> context) {
if (connection.getDestination() instanceof final VarDeclaration connectionDestinationVar
&& connectionDestinationVar.isInOutVar()) { // If the destination is a VAR_IN_OUT the source is also one
- final VarDeclaration definingVarDeclaration = getVarInOutSourceVarDeclaration(connection);
+ final VarDeclaration definingVarDeclaration = VarInOutHelper
+ .getDefiningVarInOutDeclaration(connectionDestinationVar);
if ((definingVarDeclaration != null && definingVarDeclaration.isArray()
&& connectionDestinationVar.isArray())
&& !definingVarDeclaration.getArraySize().getValue()
@@ -185,7 +200,8 @@
final DiagnosticChain diagnostics, final Map<Object, Object> context) {
if (connection.getDestination() instanceof final VarDeclaration connectionDestinationVar
&& connectionDestinationVar.isInOutVar()) { // If the destination is a VAR_IN_OUT the source is also one
- final VarDeclaration definingVarDeclaration = getVarInOutSourceVarDeclaration(connection);
+ final VarDeclaration definingVarDeclaration = VarInOutHelper
+ .getDefiningVarInOutDeclaration(connectionDestinationVar);
if (definingVarDeclaration != null
&& definingVarDeclaration.getType() instanceof final AnyStringType sourceType
&& connectionDestinationVar.getType() instanceof final AnyStringType destinationType
@@ -222,7 +238,8 @@
public static boolean validateVarInOutConnectionsFormsNoLoop(final Connection connection,
final DiagnosticChain diagnostics, final Map<Object, Object> context) {
- if (hasConnectionAVarInOutLoop(connection)) {
+ if (connection.getDestination() instanceof final VarDeclaration destinationVar && destinationVar.isInOutVar()
+ && VarInOutHelper.getDefiningVarInOutDeclaration(destinationVar) == null) {
if (diagnostics != null) {
diagnostics.add(new BasicDiagnostic(Diagnostic.ERROR, LibraryElementValidator.DIAGNOSTIC_SOURCE,
LibraryElementValidator.CONNECTION__VALIDATE_VAR_IN_OUT_CONNECTIONS_FORMS_NO_LOOP,
@@ -234,49 +251,6 @@
return true;
}
- /**
- * Get the VarDeclaration of the first FB in a chain of VAR_IN_OUT connections
- *
- * @param connection a VAR_IN_OUT connection to start from
- * @return The source VarDeclaration
- */
- private static VarDeclaration getVarInOutSourceVarDeclaration(@NonNull final Connection connection) {
- // Reverse search
- if (connection.getSource() instanceof final VarDeclaration sourceVar && sourceVar.isInOutVar()) {
- VarDeclaration outputVarInOut = sourceVar;
- VarDeclaration inputVarInOut = outputVarInOut.getInOutVarOpposite();
- final Set<VarDeclaration> visitedPins = new HashSet<>();
- visitedPins.add(outputVarInOut);
- while (!inputVarInOut.getInputConnections().isEmpty()) { // no fan in possible
- outputVarInOut = (VarDeclaration) inputVarInOut.getInputConnections().get(0).getSource();
- if (!visitedPins.add(outputVarInOut)) {
- return null; // We revisited an already visited pin
- }
- inputVarInOut = outputVarInOut.getInOutVarOpposite();
- }
- return inputVarInOut;
- }
- return null;
- }
-
- private static boolean hasConnectionAVarInOutLoop(@NonNull final Connection connection) {
- // Reverse search
- if (connection.getSource() instanceof final VarDeclaration sourceVar && sourceVar.isInOutVar()) {
- VarDeclaration outputVarInOut = sourceVar;
- VarDeclaration inputVarInOut = outputVarInOut.getInOutVarOpposite();
- final Set<VarDeclaration> visitedPins = new HashSet<>();
- visitedPins.add(outputVarInOut);
- while (!inputVarInOut.getInputConnections().isEmpty()) { // no fan in possible
- outputVarInOut = (VarDeclaration) inputVarInOut.getInputConnections().get(0).getSource();
- if (!visitedPins.add(outputVarInOut)) {
- return true; // We revisited an already visited pin
- }
- inputVarInOut = outputVarInOut.getInOutVarOpposite();
- }
- }
- return false;
- }
-
private static boolean isDuplicateConnection(@NonNull final Connection connection) {
return connection.getSource().getOutputConnections().stream().anyMatch(
candidate -> candidate != connection && candidate.getDestination() == connection.getDestination());
diff --git a/plugins/org.eclipse.fordiac.ide.model/src/org/eclipse/fordiac/ide/model/libraryElement/impl/VarDeclarationAnnotations.java b/plugins/org.eclipse.fordiac.ide.model/src/org/eclipse/fordiac/ide/model/libraryElement/impl/VarDeclarationAnnotations.java
index 81db8f6..ee78b3c 100644
--- a/plugins/org.eclipse.fordiac.ide.model/src/org/eclipse/fordiac/ide/model/libraryElement/impl/VarDeclarationAnnotations.java
+++ b/plugins/org.eclipse.fordiac.ide.model/src/org/eclipse/fordiac/ide/model/libraryElement/impl/VarDeclarationAnnotations.java
@@ -22,10 +22,14 @@
import org.eclipse.fordiac.ide.model.Messages;
import org.eclipse.fordiac.ide.model.datatype.helper.IecTypes.GenericTypes;
import org.eclipse.fordiac.ide.model.errormarker.FordiacMarkerHelper;
+import org.eclipse.fordiac.ide.model.helpers.VarInOutHelper;
import org.eclipse.fordiac.ide.model.libraryElement.FB;
+import org.eclipse.fordiac.ide.model.libraryElement.FBNetworkElement;
+import org.eclipse.fordiac.ide.model.libraryElement.FBType;
import org.eclipse.fordiac.ide.model.libraryElement.INamedElement;
import org.eclipse.fordiac.ide.model.libraryElement.InterfaceList;
import org.eclipse.fordiac.ide.model.libraryElement.LibraryElementPackage;
+import org.eclipse.fordiac.ide.model.libraryElement.SubApp;
import org.eclipse.fordiac.ide.model.libraryElement.SubAppType;
import org.eclipse.fordiac.ide.model.libraryElement.VarDeclaration;
import org.eclipse.fordiac.ide.model.libraryElement.util.LibraryElementValidator;
@@ -119,6 +123,45 @@
return true;
}
+ public static boolean validateVarInOutSubappInterface(@NonNull final VarDeclaration varDeclaration,
+ final DiagnosticChain diagnostics, final Map<Object, Object> context) {
+ if (varDeclaration.isInOutVar() && varDeclaration.getFBNetworkElement() instanceof SubApp
+ && hasAnyOutputConnections(varDeclaration) && !hasAnyInputConnections(varDeclaration)) {
+ if (diagnostics != null) {
+ diagnostics.add(new BasicDiagnostic(Diagnostic.ERROR, LibraryElementValidator.DIAGNOSTIC_SOURCE,
+ LibraryElementValidator.VAR_DECLARATION__VALIDATE_VAR_IN_OUT_SUBAPP_INTERFACE,
+ MessageFormat.format(
+ varDeclaration.isIsInput() ? Messages.VarDeclarationAnnotations_VarInOutLeftNotConnected
+ : Messages.VarDeclarationAnnotations_VarInOutRightNotConnected,
+ varDeclaration.getName()),
+ FordiacMarkerHelper.getDiagnosticData(varDeclaration)));
+ }
+ return false;
+ }
+ return true;
+ }
+
+ public static boolean validateVarInOutSubappNetwork(@NonNull final VarDeclaration varDeclaration,
+ final DiagnosticChain diagnostics, final Map<Object, Object> context) {
+ if (varDeclaration.isInOutVar() && !varDeclaration.isIsInput()
+ && (isUntypedSubappInterface(varDeclaration) || isSubappTypeInterface(varDeclaration))
+ && !varDeclaration.getInOutVarOpposite().getOutputConnections().isEmpty()) {
+ final VarDeclaration source = VarInOutHelper.getDefiningVarInOutDeclaration(varDeclaration);
+ if (source != null && source.eContainer() != varDeclaration.eContainer()) {
+ if (diagnostics != null) {
+ diagnostics
+ .add(new BasicDiagnostic(Diagnostic.ERROR, LibraryElementValidator.DIAGNOSTIC_SOURCE,
+ LibraryElementValidator.VAR_DECLARATION__VALIDATE_VAR_IN_OUT_SUBAPP_NETWORK,
+ MessageFormat.format(Messages.VarDeclarationAnnotations_VarInOutSubappNetwork,
+ varDeclaration.getName()),
+ FordiacMarkerHelper.getDiagnosticData(varDeclaration)));
+ }
+ return false;
+ }
+ }
+ return true;
+ }
+
public static VarDeclaration getInOutVarOpposite(@NonNull final VarDeclaration inOutVar) {
final InterfaceList interfaceList = (InterfaceList) inOutVar.eContainer();
if (inOutVar.isInOutVar()) {
@@ -141,6 +184,36 @@
&& interfaceList.eContainer() instanceof SubAppType;
}
+ static boolean isUntypedSubappInterface(final VarDeclaration varDeclaration) {
+ return varDeclaration.getFBNetworkElement() instanceof final SubApp subapp && !subapp.isTyped();
+ }
+
+ static boolean hasAnyInputConnections(final VarDeclaration varDeclaration) {
+ return varDeclaration != null && (!varDeclaration.getInputConnections().isEmpty()
+ || !getTypeVariable(varDeclaration).getInputConnections().isEmpty());
+ }
+
+ static boolean hasAnyOutputConnections(final VarDeclaration varDeclaration) {
+ return varDeclaration != null && (!varDeclaration.getOutputConnections().isEmpty()
+ || !getTypeVariable(varDeclaration).getOutputConnections().isEmpty());
+ }
+
+ public static VarDeclaration getTypeVariable(final VarDeclaration varDeclaration) {
+ if (varDeclaration != null) {
+ final FBNetworkElement fbne = varDeclaration.getFBNetworkElement();
+ if (fbne != null) {
+ final FBType type = fbne.getType();
+ if (type != null) {
+ final VarDeclaration typeVariable = type.getInterfaceList().getVariable(varDeclaration.getName());
+ return typeVariable.isInOutVar() && typeVariable.isIsInput() != varDeclaration.isIsInput()
+ ? typeVariable.getInOutVarOpposite()
+ : typeVariable;
+ }
+ }
+ }
+ return varDeclaration;
+ }
+
private VarDeclarationAnnotations() {
throw new UnsupportedOperationException("Helper class must not be instantiated"); //$NON-NLS-1$
}
diff --git a/plugins/org.eclipse.fordiac.ide.model/src/org/eclipse/fordiac/ide/model/messages.properties b/plugins/org.eclipse.fordiac.ide.model/src/org/eclipse/fordiac/ide/model/messages.properties
index a896adc..a277652 100644
--- a/plugins/org.eclipse.fordiac.ide.model/src/org/eclipse/fordiac/ide/model/messages.properties
+++ b/plugins/org.eclipse.fordiac.ide.model/src/org/eclipse/fordiac/ide/model/messages.properties
@@ -21,6 +21,7 @@
ConnectionAnnotations_DestinationElementMissing=Connection destination element missing: {0}
ConnectionAnnotations_DestinationEndpointMissing=Connection destination endpoint missing: {0}
ConnectionAnnotations_DuplicateConnection=Duplicate connection from {0} to {1}
+ConnectionAnnotations_GenericEndpoints=Cannot infer type based on {0} ({1}) and {2} ({3})
ConnectionAnnotations_SourceElementMissing=Connection source element missing: {0}
ConnectionAnnotations_SourceEndpointMissing=Connection source endpoint missing: {0}
ConnectionAnnotations_TypeMismatch=Connection type mismatch from {0} ({1}) to {2} ({3})
@@ -105,3 +106,6 @@
VarDeclarationAnnotations_MultipleInputConnections=Multiple input connections on variable
VarDeclarationAnnotations_ShouldNotSpecifyValueForGenericVariableInType=Should not specify a value for variable of generic type in defining type
VarDeclarationAnnotations_ShouldSpecifyValueForGenericVariableInInstance=Should specify a value for unconnected variable of generic type in instance
+VarDeclarationAnnotations_VarInOutLeftNotConnected=VAR_IN_OUT ''{0}'' must be connected on the left, since it is connected on the inside
+VarDeclarationAnnotations_VarInOutRightNotConnected=VAR_IN_OUT ''{0}'' must not be connected on the right, since it is not connected on the inside
+VarDeclarationAnnotations_VarInOutSubappNetwork=VAR_IN_OUT ''{0}'' must form a single network inside subapp
diff --git a/plugins/org.eclipse.fordiac.ide.model/src/org/eclipse/fordiac/ide/model/typelibrary/TypeLibrary.java b/plugins/org.eclipse.fordiac.ide.model/src/org/eclipse/fordiac/ide/model/typelibrary/TypeLibrary.java
index b51b6ae..fe3f252 100644
--- a/plugins/org.eclipse.fordiac.ide.model/src/org/eclipse/fordiac/ide/model/typelibrary/TypeLibrary.java
+++ b/plugins/org.eclipse.fordiac.ide.model/src/org/eclipse/fordiac/ide/model/typelibrary/TypeLibrary.java
@@ -46,22 +46,18 @@
import java.util.concurrent.ConcurrentLinkedQueue;
import java.util.concurrent.atomic.AtomicInteger;
import java.util.function.Predicate;
-import java.util.stream.Stream;
-import org.eclipse.core.internal.resources.ProjectDescription;
import org.eclipse.core.resources.IContainer;
import org.eclipse.core.resources.IFile;
import org.eclipse.core.resources.IFolder;
import org.eclipse.core.resources.IProject;
import org.eclipse.core.resources.IResource;
-import org.eclipse.core.resources.ResourcesPlugin;
import org.eclipse.core.resources.WorkspaceJob;
import org.eclipse.core.runtime.CoreException;
import org.eclipse.core.runtime.IConfigurationElement;
import org.eclipse.core.runtime.IExtension;
import org.eclipse.core.runtime.IExtensionPoint;
import org.eclipse.core.runtime.IExtensionRegistry;
-import org.eclipse.core.runtime.IPath;
import org.eclipse.core.runtime.IProgressMonitor;
import org.eclipse.core.runtime.IStatus;
import org.eclipse.core.runtime.NullProgressMonitor;
@@ -70,14 +66,11 @@
import org.eclipse.core.runtime.jobs.Job;
import org.eclipse.emf.common.util.URI;
import org.eclipse.emf.ecore.EClass;
-import org.eclipse.emf.ecore.resource.Resource;
-import org.eclipse.emf.ecore.resource.ResourceSet;
-import org.eclipse.emf.ecore.resource.impl.ResourceSetImpl;
import org.eclipse.fordiac.ide.gitlab.management.GitLabDownloadManager;
import org.eclipse.fordiac.ide.gitlab.preferences.PreferenceConstants;
import org.eclipse.fordiac.ide.library.model.library.Manifest;
import org.eclipse.fordiac.ide.library.model.library.Required;
-import org.eclipse.fordiac.ide.library.model.library.util.LibraryResourceImpl;
+import org.eclipse.fordiac.ide.library.model.util.ManifestHelper;
import org.eclipse.fordiac.ide.model.FordiacKeywords;
import org.eclipse.fordiac.ide.model.Messages;
import org.eclipse.fordiac.ide.model.buildpath.Buildpath;
@@ -111,6 +104,7 @@
private final Map<String, SubAppTypeEntry> subAppTypes = new ConcurrentHashMap<>();
private final Map<String, SystemEntry> systems = new ConcurrentHashMap<>();
private final Map<String, GlobalConstantsEntry> globalConstants = new ConcurrentHashMap<>();
+ private final Map<String, TypeEntry> programTypes = new ConcurrentHashMap<>();
private final Map<String, TypeEntry> errorTypes = new ConcurrentHashMap<>();
private final Map<IFile, TypeEntry> fileMap = new ConcurrentHashMap<>();
private final Map<String, AtomicInteger> packages = new ConcurrentHashMap<>();
@@ -158,6 +152,10 @@
return globalConstants;
}
+ public Map<String, TypeEntry> getProgramTypes() {
+ return Collections.unmodifiableMap(programTypes);
+ }
+
public Set<String> getPackages() {
return Collections.unmodifiableSet(packages.keySet());
}
@@ -227,6 +225,7 @@
getSystems().clear();
getGlobalConstants().clear();
dataTypeLib.clear();
+ programTypes.clear();
fileMap.clear();
packages.clear();
deleteTypeLibraryMarkers(project);
@@ -278,45 +277,38 @@
}
public void checkManifestFile(final IProject project) {
- final ResourceSet libraryResouceSet = new ResourceSetImpl();
- final Map<String, Object> loadOptions = new HashMap<>();
try {
final List<IResource> resources = Arrays.asList(project.members());
final Optional<IResource> manifestFile = resources.stream()
.filter(res -> res.getName().equals("MANIFEST.MF")).findFirst(); //$NON-NLS-1$
if (manifestFile.isPresent()) {
- final Resource resource = new LibraryResourceImpl(
- URI.createURI(manifestFile.get().getLocationURI().toString()));
- libraryResouceSet.getResources().add(resource);
- resource.load(loadOptions);
- final Manifest manifest = (Manifest) resource.getContents().get(0);
+ final Manifest manifest = ManifestHelper
+ .getManifest(URI.createURI(manifestFile.get().getLocationURI().toString()));
+ Map<String, List<String>> projectLibs;
- final Optional<IResource> projectFile = resources.stream()
- .filter(res -> ".project".equals(res.getName())).findFirst(); //$NON-NLS-1$
-
- final ProjectDescription projectDescription = (ProjectDescription) ResourcesPlugin.getWorkspace()
- .loadProjectDescription(projectFile.get().getLocation());
-
- Map<String, List<String>> projectLibs = new HashMap<>();
- if (projectDescription.getLinks() != null) {
- projectLibs = parseLibraryNameAndVersion(
- projectDescription.getLinks().keySet().stream().map(IPath::lastSegment).toList());
+ final IResource typeLib = project.findMember("Type Library"); //$NON-NLS-1$
+ if (typeLib != null && typeLib instanceof final IFolder typeLibFolder) {
+ projectLibs = parseLibraryNameAndVersion(Arrays.asList(typeLibFolder.members()).stream()
+ .filter(fol -> fol.isLinked() && fol instanceof IFolder).map(IFolder.class::cast).toList());
+ } else {
+ projectLibs = new HashMap<>();
}
- if (manifest.getScope() != null && "Project".equals(manifest.getScope())) { //$NON-NLS-1$
- for (final Required req : manifest.getDependencies().getRequired()) {
- loadLibLinker(req, projectLibs, project);
+ if (manifest != null && ManifestHelper.isProject(manifest) && manifest.getDependencies() != null) {
+ final ILibraryLinker libLinker = loadLibLinker();
+ if (libLinker != null) {
+ for (final Required req : manifest.getDependencies().getRequired()) {
+ checkLibrary(libLinker, req, projectLibs, project);
+ }
}
}
}
} catch (final CoreException e) {
FordiacLogHelper.logError(Messages.TypeLibrary_ProjectLoadingProblem, e);
- } catch (final IOException e) {
- FordiacLogHelper.logError(Messages.TypeLibrary_LibraryLoadingProblem, e);
}
}
- void loadLibLinker(final Required lib, final Map<String, List<String>> projectLibs, final IProject project) {
+ static ILibraryLinker loadLibLinker() {
final IExtensionRegistry registry = Platform.getExtensionRegistry();
final IExtensionPoint point = registry
.getExtensionPoint("org.eclipse.fordiac.ide.model.libraryLinkerExtension"); //$NON-NLS-1$
@@ -327,13 +319,14 @@
try {
final Object obj = element.createExecutableExtension("class"); //$NON-NLS-1$
if (obj instanceof final ILibraryLinker libLinker) {
- checkLibrary(libLinker, lib, projectLibs, project);
+ return libLinker;
}
} catch (final Exception e) {
FordiacLogHelper.logError(e.getMessage(), e);
}
}
}
+ return null;
}
void checkLibrary(final ILibraryLinker libLinker, final Required lib, final Map<String, List<String>> projectLibs,
@@ -361,8 +354,7 @@
} else {
// check local lib
final List<File> libDir = Arrays.asList(libLinker.listExtractedFiles());
- final Map<String, List<String>> localLibs = parseLibraryNameAndVersion(
- libDir.stream().map(File::getName).toList());
+ final Map<String, List<String>> localLibs = parseLocalLibraryNameAndVersion(libDir);
if (localLibs.containsKey(lib.getSymbolicName()) && localLibs.get(lib.getSymbolicName()).stream()
.anyMatch(l -> compareVersion(lib.getVersion(), l))) {
@@ -399,20 +391,38 @@
}
}
- static Map<String, List<String>> parseLibraryNameAndVersion(final List<String> libs) {
-
+ static Map<String, List<String>> parseLibraryNameAndVersion(final List<IFolder> libs) {
final Map<String, List<String>> nameVersionMap = new HashMap<>();
- String name;
- String version;
- for (final String lib : libs) {
- if (lib.lastIndexOf("-") != -1) { //$NON-NLS-1$
- name = lib.substring(0, lib.lastIndexOf("-")); //$NON-NLS-1$
- version = lib.substring(lib.lastIndexOf("-") + 1, lib.length()); //$NON-NLS-1$
- } else {
- name = lib;
- version = "0.0.0"; //$NON-NLS-1$
+ for (final IFolder lib : libs) {
+ final Manifest manifest = ManifestHelper.getContainerManifest(lib);
+ if (manifest == null || !ManifestHelper.isLibrary(manifest)) {
+ continue;
}
+ final String name = manifest.getProduct().getName();
+ final String version = manifest.getProduct().getVersionInfo().getVersion();
+
+ if (nameVersionMap.containsKey(name)) {
+ nameVersionMap.get(name).add(version);
+ } else {
+ nameVersionMap.put(name, new ArrayList<>(Arrays.asList(version)));
+ }
+ }
+
+ return nameVersionMap;
+ }
+
+ static Map<String, List<String>> parseLocalLibraryNameAndVersion(final List<File> libs) {
+ final Map<String, List<String>> nameVersionMap = new HashMap<>();
+ for (final File lib : libs) {
+ final Manifest manifest = ManifestHelper.getFolderManifest(lib);
+ if (manifest == null || !ManifestHelper.isLibrary(manifest)) {
+ continue;
+ }
+
+ final String name = manifest.getProduct().getName();
+ final String version = manifest.getProduct().getVersionInfo().getVersion();
+
if (nameVersionMap.containsKey(name)) {
nameVersionMap.get(name).add(version);
} else {
@@ -495,6 +505,9 @@
handleDuplicateTypeName(entry);
}
}
+ if (isProgramTypeEntry(entry) && programTypes.putIfAbsent(entry.getFullTypeName(), entry) != null) {
+ handleDuplicateTypeName(entry);
+ }
addPackageNameReference(PackageNameHelper.extractPackageName(entry.getFullTypeName()));
}
@@ -522,6 +535,9 @@
} else {
removeBlockTypeEntry(entry);
}
+ if (isProgramTypeEntry(entry)) {
+ programTypes.remove(entry.getFullTypeName(), entry);
+ }
removePackageNameReference(PackageNameHelper.extractPackageName(entry.getFullTypeName()));
deleteTypeLibraryMarkers(entry.getFile());
retryDuplicates();
@@ -618,30 +634,12 @@
}
public TypeEntry find(final String name) {
- TypeEntry entry = getSubAppTypeEntry(name);
- if (entry != null) {
- return entry;
- }
-
- entry = getFBTypeEntry(name);
- if (entry != null) {
- return entry;
- }
-
- entry = dataTypeLib.getDerivedTypeEntry(name);
- if (entry != null) {
- return entry;
- }
-
- return getAdapterTypeEntry(name);
+ return programTypes.get(name);
}
public List<TypeEntry> findUnqualified(final String name) {
final String unqualifiedName = PackageNameHelper.extractPlainTypeName(name);
- return Stream
- .of(getSubAppTypes().values(), getFbTypes().values(), dataTypeLib.getDerivedDataTypes(),
- getAdapterTypes().values())
- .<TypeEntry>flatMap(Collection::stream).filter(entry -> unqualifiedName.equals(entry.getTypeName()))
+ return programTypes.values().stream().filter(entry -> unqualifiedName.equalsIgnoreCase(entry.getTypeName()))
.toList();
}
@@ -701,6 +699,10 @@
}
}
+ private static boolean isProgramTypeEntry(final TypeEntry entry) {
+ return entry instanceof FBTypeEntry || entry instanceof SubAppTypeEntry || entry instanceof DataTypeEntry;
+ }
+
private static void createTypeLibraryMarker(final IResource resource, final String message) {
FordiacMarkerHelper.createMarkers(resource, List.of(
ErrorMarkerBuilder.createErrorMarkerBuilder(message).setType(FordiacErrorMarker.TYPE_LIBRARY_MARKER)));
diff --git a/plugins/org.eclipse.fordiac.ide.monitoring/META-INF/MANIFEST.MF b/plugins/org.eclipse.fordiac.ide.monitoring/META-INF/MANIFEST.MF
index 72e8459..da0a871 100644
--- a/plugins/org.eclipse.fordiac.ide.monitoring/META-INF/MANIFEST.MF
+++ b/plugins/org.eclipse.fordiac.ide.monitoring/META-INF/MANIFEST.MF
@@ -3,7 +3,7 @@
Bundle-Name: %pluginName
Bundle-SymbolicName: org.eclipse.fordiac.ide.monitoring;singleton:=true
Automatic-Module-Name: org.eclipse.fordiac.ide.monitoring
-Bundle-Version: 2.0.1.qualifier
+Bundle-Version: 3.0.0.qualifier
Bundle-Activator: org.eclipse.fordiac.ide.monitoring.Activator
Bundle-Vendor: %providerName
Bundle-Localization: plugin
diff --git a/plugins/org.eclipse.fordiac.ide.monitoring/src-gen/org/eclipse/fordiac/ide/model/monitoring/impl/AdapterMonitoringEventImpl.java b/plugins/org.eclipse.fordiac.ide.monitoring/src-gen/org/eclipse/fordiac/ide/model/monitoring/impl/AdapterMonitoringEventImpl.java
index 8aabbc6..5ee603a 100644
--- a/plugins/org.eclipse.fordiac.ide.monitoring/src-gen/org/eclipse/fordiac/ide/model/monitoring/impl/AdapterMonitoringEventImpl.java
+++ b/plugins/org.eclipse.fordiac.ide.monitoring/src-gen/org/eclipse/fordiac/ide/model/monitoring/impl/AdapterMonitoringEventImpl.java
@@ -53,14 +53,22 @@
* The following features are implemented:
* </p>
* <ul>
- * <li>{@link org.eclipse.fordiac.ide.model.monitoring.impl.AdapterMonitoringEventImpl#getName <em>Name</em>}</li>
- * <li>{@link org.eclipse.fordiac.ide.model.monitoring.impl.AdapterMonitoringEventImpl#getComment <em>Comment</em>}</li>
- * <li>{@link org.eclipse.fordiac.ide.model.monitoring.impl.AdapterMonitoringEventImpl#getAttributes <em>Attributes</em>}</li>
- * <li>{@link org.eclipse.fordiac.ide.model.monitoring.impl.AdapterMonitoringEventImpl#isIsInput <em>Is Input</em>}</li>
- * <li>{@link org.eclipse.fordiac.ide.model.monitoring.impl.AdapterMonitoringEventImpl#getInputConnections <em>Input Connections</em>}</li>
- * <li>{@link org.eclipse.fordiac.ide.model.monitoring.impl.AdapterMonitoringEventImpl#getOutputConnections <em>Output Connections</em>}</li>
- * <li>{@link org.eclipse.fordiac.ide.model.monitoring.impl.AdapterMonitoringEventImpl#getType <em>Type</em>}</li>
- * <li>{@link org.eclipse.fordiac.ide.model.monitoring.impl.AdapterMonitoringEventImpl#getWith <em>With</em>}</li>
+ * <li>{@link org.eclipse.fordiac.ide.model.monitoring.impl.AdapterMonitoringEventImpl#getName
+ * <em>Name</em>}</li>
+ * <li>{@link org.eclipse.fordiac.ide.model.monitoring.impl.AdapterMonitoringEventImpl#getComment
+ * <em>Comment</em>}</li>
+ * <li>{@link org.eclipse.fordiac.ide.model.monitoring.impl.AdapterMonitoringEventImpl#getAttributes
+ * <em>Attributes</em>}</li>
+ * <li>{@link org.eclipse.fordiac.ide.model.monitoring.impl.AdapterMonitoringEventImpl#isIsInput
+ * <em>Is Input</em>}</li>
+ * <li>{@link org.eclipse.fordiac.ide.model.monitoring.impl.AdapterMonitoringEventImpl#getInputConnections
+ * <em>Input Connections</em>}</li>
+ * <li>{@link org.eclipse.fordiac.ide.model.monitoring.impl.AdapterMonitoringEventImpl#getOutputConnections
+ * <em>Output Connections</em>}</li>
+ * <li>{@link org.eclipse.fordiac.ide.model.monitoring.impl.AdapterMonitoringEventImpl#getType
+ * <em>Type</em>}</li>
+ * <li>{@link org.eclipse.fordiac.ide.model.monitoring.impl.AdapterMonitoringEventImpl#getWith
+ * <em>With</em>}</li>
* </ul>
*
* @generated
@@ -89,6 +97,7 @@
/**
* The default value of the '{@link #getComment() <em>Comment</em>}' attribute.
* <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
* @see #getComment()
* @generated
* @ordered
@@ -98,6 +107,7 @@
/**
* The cached value of the '{@link #getComment() <em>Comment</em>}' attribute.
* <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
* @see #getComment()
* @generated
* @ordered
@@ -105,8 +115,9 @@
protected String comment = COMMENT_EDEFAULT;
/**
- * The cached value of the '{@link #getAttributes() <em>Attributes</em>}' containment reference list.
- * <!-- begin-user-doc --> <!-- end-user-doc -->
+ * The cached value of the '{@link #getAttributes() <em>Attributes</em>}'
+ * containment reference list. <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
* @see #getAttributes()
* @generated
* @ordered
@@ -116,6 +127,7 @@
/**
* The default value of the '{@link #isIsInput() <em>Is Input</em>}' attribute.
* <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
* @see #isIsInput()
* @generated
* @ordered
@@ -125,6 +137,7 @@
/**
* The cached value of the '{@link #isIsInput() <em>Is Input</em>}' attribute.
* <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
* @see #isIsInput()
* @generated
* @ordered
@@ -164,8 +177,9 @@
protected DataType type;
/**
- * The cached value of the '{@link #getWith() <em>With</em>}' containment reference list.
- * <!-- begin-user-doc --> <!-- end-user-doc -->
+ * The cached value of the '{@link #getWith() <em>With</em>}' containment
+ * reference list. <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
* @see #getWith()
* @generated
* @ordered
@@ -174,14 +188,15 @@
/**
* <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
* @generated
*/
protected AdapterMonitoringEventImpl() {
- super();
}
/**
* <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
* @generated
*/
@Override
@@ -191,6 +206,7 @@
/**
* <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
* @generated
*/
@Override
@@ -200,18 +216,22 @@
/**
* <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
* @generated
*/
@Override
- public void setName(String newName) {
- String oldName = name;
+ public void setName(final String newName) {
+ final String oldName = name;
name = newName;
- if (eNotificationRequired())
- eNotify(new ENotificationImpl(this, Notification.SET, MonitoringPackage.ADAPTER_MONITORING_EVENT__NAME, oldName, name));
+ if (eNotificationRequired()) {
+ eNotify(new ENotificationImpl(this, Notification.SET, MonitoringPackage.ADAPTER_MONITORING_EVENT__NAME,
+ oldName, name));
+ }
}
/**
* <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
* @generated
*/
@Override
@@ -221,30 +241,36 @@
/**
* <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
* @generated
*/
@Override
- public void setComment(String newComment) {
- String oldComment = comment;
+ public void setComment(final String newComment) {
+ final String oldComment = comment;
comment = newComment;
- if (eNotificationRequired())
- eNotify(new ENotificationImpl(this, Notification.SET, MonitoringPackage.ADAPTER_MONITORING_EVENT__COMMENT, oldComment, comment));
+ if (eNotificationRequired()) {
+ eNotify(new ENotificationImpl(this, Notification.SET, MonitoringPackage.ADAPTER_MONITORING_EVENT__COMMENT,
+ oldComment, comment));
+ }
}
/**
* <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
* @generated
*/
@Override
public EList<Attribute> getAttributes() {
if (attributes == null) {
- attributes = new EObjectContainmentEList.Resolving<>(Attribute.class, this, MonitoringPackage.ADAPTER_MONITORING_EVENT__ATTRIBUTES);
+ attributes = new EObjectContainmentEList.Resolving<>(Attribute.class, this,
+ MonitoringPackage.ADAPTER_MONITORING_EVENT__ATTRIBUTES);
}
return attributes;
}
/**
* <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
* @generated
*/
@Override
@@ -254,24 +280,28 @@
/**
* <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
* @generated
*/
@Override
- public void setIsInput(boolean newIsInput) {
- boolean oldIsInput = isInput;
+ public void setIsInput(final boolean newIsInput) {
+ final boolean oldIsInput = isInput;
isInput = newIsInput;
- if (eNotificationRequired())
- eNotify(new ENotificationImpl(this, Notification.SET, MonitoringPackage.ADAPTER_MONITORING_EVENT__IS_INPUT, oldIsInput, isInput));
+ if (eNotificationRequired()) {
+ eNotify(new ENotificationImpl(this, Notification.SET, MonitoringPackage.ADAPTER_MONITORING_EVENT__IS_INPUT,
+ oldIsInput, isInput));
+ }
}
/**
* <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
* @generated
*/
@Override
public String getTypeName() {
- org.eclipse.fordiac.ide.model.libraryElement.INamedElement type = getType();
- if(type != null){
+ final org.eclipse.fordiac.ide.model.libraryElement.INamedElement type = getType();
+ if (type != null) {
return type.getName();
}
return null;
@@ -279,6 +309,7 @@
/**
* <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
* @generated
*/
@Override
@@ -288,58 +319,69 @@
/**
* <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
* @generated
*/
@Override
public boolean validateType(final DiagnosticChain diagnostics, final Map<Object, Object> context) {
- return org.eclipse.fordiac.ide.model.libraryElement.impl.TypedElementAnnotations.validateType(this, diagnostics, context);
+ return org.eclipse.fordiac.ide.model.libraryElement.impl.TypedElementAnnotations.validateType(this, diagnostics,
+ context);
}
/**
* <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
* @generated
*/
@Override
public boolean validateName(final DiagnosticChain diagnostics, final Map<Object, Object> context) {
- return org.eclipse.fordiac.ide.model.libraryElement.impl.InterfaceElementAnnotations.validateName(this, diagnostics, context);
+ return org.eclipse.fordiac.ide.model.libraryElement.impl.InterfaceElementAnnotations.validateName(this,
+ diagnostics, context);
}
/**
* <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
* @generated
*/
@Override
public EList<Connection> getInputConnections() {
if (inputConnections == null) {
- inputConnections = new EObjectWithInverseResolvingEList<>(Connection.class, this, MonitoringPackage.ADAPTER_MONITORING_EVENT__INPUT_CONNECTIONS, LibraryElementPackage.CONNECTION__DESTINATION);
+ inputConnections = new EObjectWithInverseResolvingEList<>(Connection.class, this,
+ MonitoringPackage.ADAPTER_MONITORING_EVENT__INPUT_CONNECTIONS,
+ LibraryElementPackage.CONNECTION__DESTINATION);
}
return inputConnections;
}
/**
* <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
* @generated
*/
@Override
public EList<Connection> getOutputConnections() {
if (outputConnections == null) {
- outputConnections = new EObjectWithInverseResolvingEList<>(Connection.class, this, MonitoringPackage.ADAPTER_MONITORING_EVENT__OUTPUT_CONNECTIONS, LibraryElementPackage.CONNECTION__SOURCE);
+ outputConnections = new EObjectWithInverseResolvingEList<>(Connection.class, this,
+ MonitoringPackage.ADAPTER_MONITORING_EVENT__OUTPUT_CONNECTIONS,
+ LibraryElementPackage.CONNECTION__SOURCE);
}
return outputConnections;
}
/**
* <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
* @generated
*/
@Override
public DataType getType() {
if (type != null && type.eIsProxy()) {
- InternalEObject oldType = (InternalEObject)type;
- type = (DataType)eResolveProxy(oldType);
- if (type != oldType) {
- if (eNotificationRequired())
- eNotify(new ENotificationImpl(this, Notification.RESOLVE, MonitoringPackage.ADAPTER_MONITORING_EVENT__TYPE, oldType, type));
+ final InternalEObject oldType = (InternalEObject) type;
+ type = (DataType) eResolveProxy(oldType);
+ if ((type != oldType) && eNotificationRequired()) {
+ eNotify(new ENotificationImpl(this, Notification.RESOLVE,
+ MonitoringPackage.ADAPTER_MONITORING_EVENT__TYPE, oldType, type));
}
}
return type;
@@ -347,6 +389,7 @@
/**
* <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
* @generated
*/
public DataType basicGetType() {
@@ -355,30 +398,36 @@
/**
* <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
* @generated
*/
@Override
- public void setType(DataType newType) {
- DataType oldType = type;
+ public void setType(final DataType newType) {
+ final DataType oldType = type;
type = newType;
- if (eNotificationRequired())
- eNotify(new ENotificationImpl(this, Notification.SET, MonitoringPackage.ADAPTER_MONITORING_EVENT__TYPE, oldType, type));
+ if (eNotificationRequired()) {
+ eNotify(new ENotificationImpl(this, Notification.SET, MonitoringPackage.ADAPTER_MONITORING_EVENT__TYPE,
+ oldType, type));
+ }
}
/**
* <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
* @generated
*/
@Override
public EList<With> getWith() {
if (with == null) {
- with = new EObjectContainmentEList<>(With.class, this, MonitoringPackage.ADAPTER_MONITORING_EVENT__WITH);
+ with = new EObjectContainmentEList<>(With.class, this,
+ MonitoringPackage.ADAPTER_MONITORING_EVENT__WITH);
}
return with;
}
/**
* <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
* @generated
*/
@Override
@@ -388,6 +437,7 @@
/**
* <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
* @generated
*/
@Override
@@ -397,6 +447,7 @@
/**
* <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
* @generated
*/
@Override
@@ -406,6 +457,7 @@
/**
* <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
* @generated
*/
@Override
@@ -415,6 +467,7 @@
/**
* <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
* @generated
*/
@Override
@@ -424,15 +477,17 @@
/**
* <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
* @generated
*/
@Override
public void setVisible(final boolean visible) {
- org.eclipse.fordiac.ide.model.annotations.HiddenElementAnnotations.setVisible(this,visible);
+ org.eclipse.fordiac.ide.model.annotations.HiddenElementAnnotations.setVisible(this, visible);
}
/**
* <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
* @generated
*/
@Override
@@ -442,6 +497,7 @@
/**
* <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
* @generated
*/
@Override
@@ -451,17 +507,19 @@
}
/**
- * <!-- begin-user-doc -->
- * <!-- end-user-doc -->
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
* @generated
*/
@Override
- public void setAttribute(final AttributeDeclaration attributeDeclaration, final String value, final String comment) {
+ public void setAttribute(final AttributeDeclaration attributeDeclaration, final String value,
+ final String comment) {
org.eclipse.fordiac.ide.model.Annotations.setAttribute(this, attributeDeclaration, value, comment);
}
/**
* <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
* @generated
*/
@Override
@@ -471,6 +529,7 @@
/**
* <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
* @generated
*/
@Override
@@ -480,6 +539,7 @@
/**
* <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
* @generated
*/
@Override
@@ -489,6 +549,7 @@
/**
* <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
* @generated
*/
@Override
@@ -498,290 +559,287 @@
/**
* <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
* @generated
*/
@SuppressWarnings("unchecked")
@Override
- public NotificationChain eInverseAdd(InternalEObject otherEnd, int featureID, NotificationChain msgs) {
- switch (featureID) {
- case MonitoringPackage.ADAPTER_MONITORING_EVENT__INPUT_CONNECTIONS:
- return ((InternalEList<InternalEObject>)(InternalEList<?>)getInputConnections()).basicAdd(otherEnd, msgs);
- case MonitoringPackage.ADAPTER_MONITORING_EVENT__OUTPUT_CONNECTIONS:
- return ((InternalEList<InternalEObject>)(InternalEList<?>)getOutputConnections()).basicAdd(otherEnd, msgs);
- default:
- return super.eInverseAdd(otherEnd, featureID, msgs);
- }
+ public NotificationChain eInverseAdd(final InternalEObject otherEnd, final int featureID,
+ final NotificationChain msgs) {
+ return switch (featureID) {
+ case MonitoringPackage.ADAPTER_MONITORING_EVENT__INPUT_CONNECTIONS -> ((InternalEList<InternalEObject>) (InternalEList<?>) getInputConnections()).basicAdd(otherEnd, msgs);
+ case MonitoringPackage.ADAPTER_MONITORING_EVENT__OUTPUT_CONNECTIONS -> ((InternalEList<InternalEObject>) (InternalEList<?>) getOutputConnections()).basicAdd(otherEnd,
+ msgs);
+ default -> super.eInverseAdd(otherEnd, featureID, msgs);
+ };
}
/**
* <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
* @generated
*/
@Override
- public NotificationChain eInverseRemove(InternalEObject otherEnd, int featureID, NotificationChain msgs) {
- switch (featureID) {
- case MonitoringPackage.ADAPTER_MONITORING_EVENT__ATTRIBUTES:
- return ((InternalEList<?>)getAttributes()).basicRemove(otherEnd, msgs);
- case MonitoringPackage.ADAPTER_MONITORING_EVENT__INPUT_CONNECTIONS:
- return ((InternalEList<?>)getInputConnections()).basicRemove(otherEnd, msgs);
- case MonitoringPackage.ADAPTER_MONITORING_EVENT__OUTPUT_CONNECTIONS:
- return ((InternalEList<?>)getOutputConnections()).basicRemove(otherEnd, msgs);
- case MonitoringPackage.ADAPTER_MONITORING_EVENT__WITH:
- return ((InternalEList<?>)getWith()).basicRemove(otherEnd, msgs);
- default:
- return super.eInverseRemove(otherEnd, featureID, msgs);
- }
+ public NotificationChain eInverseRemove(final InternalEObject otherEnd, final int featureID,
+ final NotificationChain msgs) {
+ return switch (featureID) {
+ case MonitoringPackage.ADAPTER_MONITORING_EVENT__ATTRIBUTES -> ((InternalEList<?>) getAttributes()).basicRemove(otherEnd, msgs);
+ case MonitoringPackage.ADAPTER_MONITORING_EVENT__INPUT_CONNECTIONS -> ((InternalEList<?>) getInputConnections()).basicRemove(otherEnd, msgs);
+ case MonitoringPackage.ADAPTER_MONITORING_EVENT__OUTPUT_CONNECTIONS -> ((InternalEList<?>) getOutputConnections()).basicRemove(otherEnd, msgs);
+ case MonitoringPackage.ADAPTER_MONITORING_EVENT__WITH -> ((InternalEList<?>) getWith()).basicRemove(otherEnd, msgs);
+ default -> super.eInverseRemove(otherEnd, featureID, msgs);
+ };
}
/**
* <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
* @generated
*/
@Override
- public Object eGet(int featureID, boolean resolve, boolean coreType) {
+ public Object eGet(final int featureID, final boolean resolve, final boolean coreType) {
switch (featureID) {
- case MonitoringPackage.ADAPTER_MONITORING_EVENT__NAME:
- return getName();
- case MonitoringPackage.ADAPTER_MONITORING_EVENT__COMMENT:
- return getComment();
- case MonitoringPackage.ADAPTER_MONITORING_EVENT__ATTRIBUTES:
- return getAttributes();
- case MonitoringPackage.ADAPTER_MONITORING_EVENT__IS_INPUT:
- return isIsInput();
- case MonitoringPackage.ADAPTER_MONITORING_EVENT__INPUT_CONNECTIONS:
- return getInputConnections();
- case MonitoringPackage.ADAPTER_MONITORING_EVENT__OUTPUT_CONNECTIONS:
- return getOutputConnections();
- case MonitoringPackage.ADAPTER_MONITORING_EVENT__TYPE:
- if (resolve) return getType();
- return basicGetType();
- case MonitoringPackage.ADAPTER_MONITORING_EVENT__WITH:
- return getWith();
- default:
- return super.eGet(featureID, resolve, coreType);
- }
- }
-
- /**
- * <!-- begin-user-doc --> <!-- end-user-doc -->
- * @generated
- */
- @SuppressWarnings("unchecked")
- @Override
- public void eSet(int featureID, Object newValue) {
- switch (featureID) {
- case MonitoringPackage.ADAPTER_MONITORING_EVENT__NAME:
- setName((String)newValue);
- return;
- case MonitoringPackage.ADAPTER_MONITORING_EVENT__COMMENT:
- setComment((String)newValue);
- return;
- case MonitoringPackage.ADAPTER_MONITORING_EVENT__ATTRIBUTES:
- getAttributes().clear();
- getAttributes().addAll((Collection<? extends Attribute>)newValue);
- return;
- case MonitoringPackage.ADAPTER_MONITORING_EVENT__IS_INPUT:
- setIsInput((Boolean)newValue);
- return;
- case MonitoringPackage.ADAPTER_MONITORING_EVENT__INPUT_CONNECTIONS:
- getInputConnections().clear();
- getInputConnections().addAll((Collection<? extends Connection>)newValue);
- return;
- case MonitoringPackage.ADAPTER_MONITORING_EVENT__OUTPUT_CONNECTIONS:
- getOutputConnections().clear();
- getOutputConnections().addAll((Collection<? extends Connection>)newValue);
- return;
- case MonitoringPackage.ADAPTER_MONITORING_EVENT__TYPE:
- setType((DataType)newValue);
- return;
- case MonitoringPackage.ADAPTER_MONITORING_EVENT__WITH:
- getWith().clear();
- getWith().addAll((Collection<? extends With>)newValue);
- return;
- default:
- super.eSet(featureID, newValue);
- return;
- }
- }
-
- /**
- * <!-- begin-user-doc --> <!-- end-user-doc -->
- * @generated
- */
- @Override
- public void eUnset(int featureID) {
- switch (featureID) {
- case MonitoringPackage.ADAPTER_MONITORING_EVENT__NAME:
- setName(NAME_EDEFAULT);
- return;
- case MonitoringPackage.ADAPTER_MONITORING_EVENT__COMMENT:
- setComment(COMMENT_EDEFAULT);
- return;
- case MonitoringPackage.ADAPTER_MONITORING_EVENT__ATTRIBUTES:
- getAttributes().clear();
- return;
- case MonitoringPackage.ADAPTER_MONITORING_EVENT__IS_INPUT:
- setIsInput(IS_INPUT_EDEFAULT);
- return;
- case MonitoringPackage.ADAPTER_MONITORING_EVENT__INPUT_CONNECTIONS:
- getInputConnections().clear();
- return;
- case MonitoringPackage.ADAPTER_MONITORING_EVENT__OUTPUT_CONNECTIONS:
- getOutputConnections().clear();
- return;
- case MonitoringPackage.ADAPTER_MONITORING_EVENT__TYPE:
- setType((DataType)null);
- return;
- case MonitoringPackage.ADAPTER_MONITORING_EVENT__WITH:
- getWith().clear();
- return;
- default:
- super.eUnset(featureID);
- return;
- }
- }
-
- /**
- * <!-- begin-user-doc --> <!-- end-user-doc -->
- * @generated
- */
- @Override
- public boolean eIsSet(int featureID) {
- switch (featureID) {
- case MonitoringPackage.ADAPTER_MONITORING_EVENT__NAME:
- return NAME_EDEFAULT == null ? name != null : !NAME_EDEFAULT.equals(name);
- case MonitoringPackage.ADAPTER_MONITORING_EVENT__COMMENT:
- return COMMENT_EDEFAULT == null ? comment != null : !COMMENT_EDEFAULT.equals(comment);
- case MonitoringPackage.ADAPTER_MONITORING_EVENT__ATTRIBUTES:
- return attributes != null && !attributes.isEmpty();
- case MonitoringPackage.ADAPTER_MONITORING_EVENT__IS_INPUT:
- return isInput != IS_INPUT_EDEFAULT;
- case MonitoringPackage.ADAPTER_MONITORING_EVENT__INPUT_CONNECTIONS:
- return inputConnections != null && !inputConnections.isEmpty();
- case MonitoringPackage.ADAPTER_MONITORING_EVENT__OUTPUT_CONNECTIONS:
- return outputConnections != null && !outputConnections.isEmpty();
- case MonitoringPackage.ADAPTER_MONITORING_EVENT__TYPE:
- return type != null;
- case MonitoringPackage.ADAPTER_MONITORING_EVENT__WITH:
- return with != null && !with.isEmpty();
- default:
- return super.eIsSet(featureID);
- }
- }
-
- /**
- * <!-- begin-user-doc --> <!-- end-user-doc -->
- * @generated
- */
- @Override
- public int eBaseStructuralFeatureID(int derivedFeatureID, Class<?> baseClass) {
- if (baseClass == INamedElement.class) {
- switch (derivedFeatureID) {
- case MonitoringPackage.ADAPTER_MONITORING_EVENT__NAME: return LibraryElementPackage.INAMED_ELEMENT__NAME;
- case MonitoringPackage.ADAPTER_MONITORING_EVENT__COMMENT: return LibraryElementPackage.INAMED_ELEMENT__COMMENT;
- default: return -1;
+ case MonitoringPackage.ADAPTER_MONITORING_EVENT__NAME:
+ return getName();
+ case MonitoringPackage.ADAPTER_MONITORING_EVENT__COMMENT:
+ return getComment();
+ case MonitoringPackage.ADAPTER_MONITORING_EVENT__ATTRIBUTES:
+ return getAttributes();
+ case MonitoringPackage.ADAPTER_MONITORING_EVENT__IS_INPUT:
+ return isIsInput();
+ case MonitoringPackage.ADAPTER_MONITORING_EVENT__INPUT_CONNECTIONS:
+ return getInputConnections();
+ case MonitoringPackage.ADAPTER_MONITORING_EVENT__OUTPUT_CONNECTIONS:
+ return getOutputConnections();
+ case MonitoringPackage.ADAPTER_MONITORING_EVENT__TYPE:
+ if (resolve) {
+ return getType();
}
+ return basicGetType();
+ case MonitoringPackage.ADAPTER_MONITORING_EVENT__WITH:
+ return getWith();
+ default:
+ return super.eGet(featureID, resolve, coreType);
+ }
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ @SuppressWarnings("unchecked")
+ @Override
+ public void eSet(final int featureID, final Object newValue) {
+ switch (featureID) {
+ case MonitoringPackage.ADAPTER_MONITORING_EVENT__NAME:
+ setName((String) newValue);
+ return;
+ case MonitoringPackage.ADAPTER_MONITORING_EVENT__COMMENT:
+ setComment((String) newValue);
+ return;
+ case MonitoringPackage.ADAPTER_MONITORING_EVENT__ATTRIBUTES:
+ getAttributes().clear();
+ getAttributes().addAll((Collection<? extends Attribute>) newValue);
+ return;
+ case MonitoringPackage.ADAPTER_MONITORING_EVENT__IS_INPUT:
+ setIsInput((Boolean) newValue);
+ return;
+ case MonitoringPackage.ADAPTER_MONITORING_EVENT__INPUT_CONNECTIONS:
+ getInputConnections().clear();
+ getInputConnections().addAll((Collection<? extends Connection>) newValue);
+ return;
+ case MonitoringPackage.ADAPTER_MONITORING_EVENT__OUTPUT_CONNECTIONS:
+ getOutputConnections().clear();
+ getOutputConnections().addAll((Collection<? extends Connection>) newValue);
+ return;
+ case MonitoringPackage.ADAPTER_MONITORING_EVENT__TYPE:
+ setType((DataType) newValue);
+ return;
+ case MonitoringPackage.ADAPTER_MONITORING_EVENT__WITH:
+ getWith().clear();
+ getWith().addAll((Collection<? extends With>) newValue);
+ return;
+ default:
+ super.eSet(featureID, newValue);
+ }
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ @Override
+ public void eUnset(final int featureID) {
+ switch (featureID) {
+ case MonitoringPackage.ADAPTER_MONITORING_EVENT__NAME:
+ setName(NAME_EDEFAULT);
+ return;
+ case MonitoringPackage.ADAPTER_MONITORING_EVENT__COMMENT:
+ setComment(COMMENT_EDEFAULT);
+ return;
+ case MonitoringPackage.ADAPTER_MONITORING_EVENT__ATTRIBUTES:
+ getAttributes().clear();
+ return;
+ case MonitoringPackage.ADAPTER_MONITORING_EVENT__IS_INPUT:
+ setIsInput(IS_INPUT_EDEFAULT);
+ return;
+ case MonitoringPackage.ADAPTER_MONITORING_EVENT__INPUT_CONNECTIONS:
+ getInputConnections().clear();
+ return;
+ case MonitoringPackage.ADAPTER_MONITORING_EVENT__OUTPUT_CONNECTIONS:
+ getOutputConnections().clear();
+ return;
+ case MonitoringPackage.ADAPTER_MONITORING_EVENT__TYPE:
+ setType((DataType) null);
+ return;
+ case MonitoringPackage.ADAPTER_MONITORING_EVENT__WITH:
+ getWith().clear();
+ return;
+ default:
+ super.eUnset(featureID);
+ }
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ @Override
+ public boolean eIsSet(final int featureID) {
+ return switch (featureID) {
+ case MonitoringPackage.ADAPTER_MONITORING_EVENT__NAME -> NAME_EDEFAULT == null ? name != null : !NAME_EDEFAULT.equals(name);
+ case MonitoringPackage.ADAPTER_MONITORING_EVENT__COMMENT -> COMMENT_EDEFAULT == null ? comment != null : !COMMENT_EDEFAULT.equals(comment);
+ case MonitoringPackage.ADAPTER_MONITORING_EVENT__ATTRIBUTES -> attributes != null && !attributes.isEmpty();
+ case MonitoringPackage.ADAPTER_MONITORING_EVENT__IS_INPUT -> isInput != IS_INPUT_EDEFAULT;
+ case MonitoringPackage.ADAPTER_MONITORING_EVENT__INPUT_CONNECTIONS -> inputConnections != null && !inputConnections.isEmpty();
+ case MonitoringPackage.ADAPTER_MONITORING_EVENT__OUTPUT_CONNECTIONS -> outputConnections != null && !outputConnections.isEmpty();
+ case MonitoringPackage.ADAPTER_MONITORING_EVENT__TYPE -> type != null;
+ case MonitoringPackage.ADAPTER_MONITORING_EVENT__WITH -> with != null && !with.isEmpty();
+ default -> super.eIsSet(featureID);
+ };
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ @Override
+ public int eBaseStructuralFeatureID(final int derivedFeatureID, final Class<?> baseClass) {
+ if (baseClass == INamedElement.class) {
+ return switch (derivedFeatureID) {
+ case MonitoringPackage.ADAPTER_MONITORING_EVENT__NAME -> LibraryElementPackage.INAMED_ELEMENT__NAME;
+ case MonitoringPackage.ADAPTER_MONITORING_EVENT__COMMENT -> LibraryElementPackage.INAMED_ELEMENT__COMMENT;
+ default -> -1;
+ };
}
if (baseClass == ITypedElement.class) {
- switch (derivedFeatureID) {
- default: return -1;
- }
+ return switch (derivedFeatureID) {
+ default -> -1;
+ };
}
if (baseClass == ConfigurableObject.class) {
- switch (derivedFeatureID) {
- case MonitoringPackage.ADAPTER_MONITORING_EVENT__ATTRIBUTES: return LibraryElementPackage.CONFIGURABLE_OBJECT__ATTRIBUTES;
- default: return -1;
- }
+ return switch (derivedFeatureID) {
+ case MonitoringPackage.ADAPTER_MONITORING_EVENT__ATTRIBUTES -> LibraryElementPackage.CONFIGURABLE_OBJECT__ATTRIBUTES;
+ default -> -1;
+ };
}
if (baseClass == HiddenElement.class) {
- switch (derivedFeatureID) {
- default: return -1;
- }
+ return switch (derivedFeatureID) {
+ default -> -1;
+ };
}
if (baseClass == IInterfaceElement.class) {
- switch (derivedFeatureID) {
- case MonitoringPackage.ADAPTER_MONITORING_EVENT__IS_INPUT: return LibraryElementPackage.IINTERFACE_ELEMENT__IS_INPUT;
- case MonitoringPackage.ADAPTER_MONITORING_EVENT__INPUT_CONNECTIONS: return LibraryElementPackage.IINTERFACE_ELEMENT__INPUT_CONNECTIONS;
- case MonitoringPackage.ADAPTER_MONITORING_EVENT__OUTPUT_CONNECTIONS: return LibraryElementPackage.IINTERFACE_ELEMENT__OUTPUT_CONNECTIONS;
- case MonitoringPackage.ADAPTER_MONITORING_EVENT__TYPE: return LibraryElementPackage.IINTERFACE_ELEMENT__TYPE;
- default: return -1;
- }
+ return switch (derivedFeatureID) {
+ case MonitoringPackage.ADAPTER_MONITORING_EVENT__IS_INPUT -> LibraryElementPackage.IINTERFACE_ELEMENT__IS_INPUT;
+ case MonitoringPackage.ADAPTER_MONITORING_EVENT__INPUT_CONNECTIONS -> LibraryElementPackage.IINTERFACE_ELEMENT__INPUT_CONNECTIONS;
+ case MonitoringPackage.ADAPTER_MONITORING_EVENT__OUTPUT_CONNECTIONS -> LibraryElementPackage.IINTERFACE_ELEMENT__OUTPUT_CONNECTIONS;
+ case MonitoringPackage.ADAPTER_MONITORING_EVENT__TYPE -> LibraryElementPackage.IINTERFACE_ELEMENT__TYPE;
+ default -> -1;
+ };
}
if (baseClass == ICallable.class) {
- switch (derivedFeatureID) {
- default: return -1;
- }
+ return switch (derivedFeatureID) {
+ default -> -1;
+ };
}
if (baseClass == Event.class) {
- switch (derivedFeatureID) {
- case MonitoringPackage.ADAPTER_MONITORING_EVENT__WITH: return LibraryElementPackage.EVENT__WITH;
- default: return -1;
- }
+ return switch (derivedFeatureID) {
+ case MonitoringPackage.ADAPTER_MONITORING_EVENT__WITH -> LibraryElementPackage.EVENT__WITH;
+ default -> -1;
+ };
}
return super.eBaseStructuralFeatureID(derivedFeatureID, baseClass);
}
/**
* <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
* @generated
*/
@Override
- public int eDerivedStructuralFeatureID(int baseFeatureID, Class<?> baseClass) {
+ public int eDerivedStructuralFeatureID(final int baseFeatureID, final Class<?> baseClass) {
if (baseClass == INamedElement.class) {
- switch (baseFeatureID) {
- case LibraryElementPackage.INAMED_ELEMENT__NAME: return MonitoringPackage.ADAPTER_MONITORING_EVENT__NAME;
- case LibraryElementPackage.INAMED_ELEMENT__COMMENT: return MonitoringPackage.ADAPTER_MONITORING_EVENT__COMMENT;
- default: return -1;
- }
+ return switch (baseFeatureID) {
+ case LibraryElementPackage.INAMED_ELEMENT__NAME -> MonitoringPackage.ADAPTER_MONITORING_EVENT__NAME;
+ case LibraryElementPackage.INAMED_ELEMENT__COMMENT -> MonitoringPackage.ADAPTER_MONITORING_EVENT__COMMENT;
+ default -> -1;
+ };
}
if (baseClass == ITypedElement.class) {
- switch (baseFeatureID) {
- default: return -1;
- }
+ return switch (baseFeatureID) {
+ default -> -1;
+ };
}
if (baseClass == ConfigurableObject.class) {
- switch (baseFeatureID) {
- case LibraryElementPackage.CONFIGURABLE_OBJECT__ATTRIBUTES: return MonitoringPackage.ADAPTER_MONITORING_EVENT__ATTRIBUTES;
- default: return -1;
- }
+ return switch (baseFeatureID) {
+ case LibraryElementPackage.CONFIGURABLE_OBJECT__ATTRIBUTES -> MonitoringPackage.ADAPTER_MONITORING_EVENT__ATTRIBUTES;
+ default -> -1;
+ };
}
if (baseClass == HiddenElement.class) {
- switch (baseFeatureID) {
- default: return -1;
- }
+ return switch (baseFeatureID) {
+ default -> -1;
+ };
}
if (baseClass == IInterfaceElement.class) {
- switch (baseFeatureID) {
- case LibraryElementPackage.IINTERFACE_ELEMENT__IS_INPUT: return MonitoringPackage.ADAPTER_MONITORING_EVENT__IS_INPUT;
- case LibraryElementPackage.IINTERFACE_ELEMENT__INPUT_CONNECTIONS: return MonitoringPackage.ADAPTER_MONITORING_EVENT__INPUT_CONNECTIONS;
- case LibraryElementPackage.IINTERFACE_ELEMENT__OUTPUT_CONNECTIONS: return MonitoringPackage.ADAPTER_MONITORING_EVENT__OUTPUT_CONNECTIONS;
- case LibraryElementPackage.IINTERFACE_ELEMENT__TYPE: return MonitoringPackage.ADAPTER_MONITORING_EVENT__TYPE;
- default: return -1;
- }
+ return switch (baseFeatureID) {
+ case LibraryElementPackage.IINTERFACE_ELEMENT__IS_INPUT -> MonitoringPackage.ADAPTER_MONITORING_EVENT__IS_INPUT;
+ case LibraryElementPackage.IINTERFACE_ELEMENT__INPUT_CONNECTIONS -> MonitoringPackage.ADAPTER_MONITORING_EVENT__INPUT_CONNECTIONS;
+ case LibraryElementPackage.IINTERFACE_ELEMENT__OUTPUT_CONNECTIONS -> MonitoringPackage.ADAPTER_MONITORING_EVENT__OUTPUT_CONNECTIONS;
+ case LibraryElementPackage.IINTERFACE_ELEMENT__TYPE -> MonitoringPackage.ADAPTER_MONITORING_EVENT__TYPE;
+ default -> -1;
+ };
}
if (baseClass == ICallable.class) {
- switch (baseFeatureID) {
- default: return -1;
- }
+ return switch (baseFeatureID) {
+ default -> -1;
+ };
}
if (baseClass == Event.class) {
- switch (baseFeatureID) {
- case LibraryElementPackage.EVENT__WITH: return MonitoringPackage.ADAPTER_MONITORING_EVENT__WITH;
- default: return -1;
- }
+ return switch (baseFeatureID) {
+ case LibraryElementPackage.EVENT__WITH -> MonitoringPackage.ADAPTER_MONITORING_EVENT__WITH;
+ default -> -1;
+ };
}
return super.eDerivedStructuralFeatureID(baseFeatureID, baseClass);
}
/**
* <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
* @generated
*/
@Override
public String toString() {
- if (eIsProxy()) return super.toString();
+ if (eIsProxy()) {
+ return super.toString();
+ }
- StringBuilder result = new StringBuilder(super.toString());
+ final StringBuilder result = new StringBuilder(super.toString());
result.append(" (name: "); //$NON-NLS-1$
result.append(name);
result.append(", comment: "); //$NON-NLS-1$
diff --git a/plugins/org.eclipse.fordiac.ide.monitoring/src-gen/org/eclipse/fordiac/ide/model/monitoring/impl/AdapterMonitoringVarDeclarationImpl.java b/plugins/org.eclipse.fordiac.ide.monitoring/src-gen/org/eclipse/fordiac/ide/model/monitoring/impl/AdapterMonitoringVarDeclarationImpl.java
index 80a77b5..af0b8d6 100644
--- a/plugins/org.eclipse.fordiac.ide.monitoring/src-gen/org/eclipse/fordiac/ide/model/monitoring/impl/AdapterMonitoringVarDeclarationImpl.java
+++ b/plugins/org.eclipse.fordiac.ide.monitoring/src-gen/org/eclipse/fordiac/ide/model/monitoring/impl/AdapterMonitoringVarDeclarationImpl.java
@@ -55,16 +55,26 @@
* The following features are implemented:
* </p>
* <ul>
- * <li>{@link org.eclipse.fordiac.ide.model.monitoring.impl.AdapterMonitoringVarDeclarationImpl#getName <em>Name</em>}</li>
- * <li>{@link org.eclipse.fordiac.ide.model.monitoring.impl.AdapterMonitoringVarDeclarationImpl#getComment <em>Comment</em>}</li>
- * <li>{@link org.eclipse.fordiac.ide.model.monitoring.impl.AdapterMonitoringVarDeclarationImpl#getAttributes <em>Attributes</em>}</li>
- * <li>{@link org.eclipse.fordiac.ide.model.monitoring.impl.AdapterMonitoringVarDeclarationImpl#isIsInput <em>Is Input</em>}</li>
- * <li>{@link org.eclipse.fordiac.ide.model.monitoring.impl.AdapterMonitoringVarDeclarationImpl#getInputConnections <em>Input Connections</em>}</li>
- * <li>{@link org.eclipse.fordiac.ide.model.monitoring.impl.AdapterMonitoringVarDeclarationImpl#getOutputConnections <em>Output Connections</em>}</li>
- * <li>{@link org.eclipse.fordiac.ide.model.monitoring.impl.AdapterMonitoringVarDeclarationImpl#getType <em>Type</em>}</li>
- * <li>{@link org.eclipse.fordiac.ide.model.monitoring.impl.AdapterMonitoringVarDeclarationImpl#getArraySize <em>Array Size</em>}</li>
- * <li>{@link org.eclipse.fordiac.ide.model.monitoring.impl.AdapterMonitoringVarDeclarationImpl#getWiths <em>Withs</em>}</li>
- * <li>{@link org.eclipse.fordiac.ide.model.monitoring.impl.AdapterMonitoringVarDeclarationImpl#getValue <em>Value</em>}</li>
+ * <li>{@link org.eclipse.fordiac.ide.model.monitoring.impl.AdapterMonitoringVarDeclarationImpl#getName
+ * <em>Name</em>}</li>
+ * <li>{@link org.eclipse.fordiac.ide.model.monitoring.impl.AdapterMonitoringVarDeclarationImpl#getComment
+ * <em>Comment</em>}</li>
+ * <li>{@link org.eclipse.fordiac.ide.model.monitoring.impl.AdapterMonitoringVarDeclarationImpl#getAttributes
+ * <em>Attributes</em>}</li>
+ * <li>{@link org.eclipse.fordiac.ide.model.monitoring.impl.AdapterMonitoringVarDeclarationImpl#isIsInput
+ * <em>Is Input</em>}</li>
+ * <li>{@link org.eclipse.fordiac.ide.model.monitoring.impl.AdapterMonitoringVarDeclarationImpl#getInputConnections
+ * <em>Input Connections</em>}</li>
+ * <li>{@link org.eclipse.fordiac.ide.model.monitoring.impl.AdapterMonitoringVarDeclarationImpl#getOutputConnections
+ * <em>Output Connections</em>}</li>
+ * <li>{@link org.eclipse.fordiac.ide.model.monitoring.impl.AdapterMonitoringVarDeclarationImpl#getType
+ * <em>Type</em>}</li>
+ * <li>{@link org.eclipse.fordiac.ide.model.monitoring.impl.AdapterMonitoringVarDeclarationImpl#getArraySize
+ * <em>Array Size</em>}</li>
+ * <li>{@link org.eclipse.fordiac.ide.model.monitoring.impl.AdapterMonitoringVarDeclarationImpl#getWiths
+ * <em>Withs</em>}</li>
+ * <li>{@link org.eclipse.fordiac.ide.model.monitoring.impl.AdapterMonitoringVarDeclarationImpl#getValue
+ * <em>Value</em>}</li>
* </ul>
*
* @generated
@@ -93,6 +103,7 @@
/**
* The default value of the '{@link #getComment() <em>Comment</em>}' attribute.
* <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
* @see #getComment()
* @generated
* @ordered
@@ -102,6 +113,7 @@
/**
* The cached value of the '{@link #getComment() <em>Comment</em>}' attribute.
* <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
* @see #getComment()
* @generated
* @ordered
@@ -109,8 +121,9 @@
protected String comment = COMMENT_EDEFAULT;
/**
- * The cached value of the '{@link #getAttributes() <em>Attributes</em>}' containment reference list.
- * <!-- begin-user-doc --> <!-- end-user-doc -->
+ * The cached value of the '{@link #getAttributes() <em>Attributes</em>}'
+ * containment reference list. <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
* @see #getAttributes()
* @generated
* @ordered
@@ -120,6 +133,7 @@
/**
* The default value of the '{@link #isIsInput() <em>Is Input</em>}' attribute.
* <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
* @see #isIsInput()
* @generated
* @ordered
@@ -129,6 +143,7 @@
/**
* The cached value of the '{@link #isIsInput() <em>Is Input</em>}' attribute.
* <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
* @see #isIsInput()
* @generated
* @ordered
@@ -168,8 +183,9 @@
protected DataType type;
/**
- * The cached value of the '{@link #getArraySize() <em>Array Size</em>}' containment reference.
- * <!-- begin-user-doc --> <!-- end-user-doc -->
+ * The cached value of the '{@link #getArraySize() <em>Array Size</em>}'
+ * containment reference. <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
* @see #getArraySize()
* @generated
* @ordered
@@ -179,6 +195,7 @@
/**
* The cached value of the '{@link #getWiths() <em>Withs</em>}' reference list.
* <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
* @see #getWiths()
* @generated
* @ordered
@@ -186,8 +203,9 @@
protected EList<With> withs;
/**
- * The cached value of the '{@link #getValue() <em>Value</em>}' containment reference.
- * <!-- begin-user-doc --> <!-- end-user-doc -->
+ * The cached value of the '{@link #getValue() <em>Value</em>}' containment
+ * reference. <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
* @see #getValue()
* @generated
* @ordered
@@ -196,14 +214,15 @@
/**
* <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
* @generated
*/
protected AdapterMonitoringVarDeclarationImpl() {
- super();
}
/**
* <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
* @generated
*/
@Override
@@ -213,6 +232,7 @@
/**
* <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
* @generated
*/
@Override
@@ -222,18 +242,22 @@
/**
* <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
* @generated
*/
@Override
- public void setName(String newName) {
- String oldName = name;
+ public void setName(final String newName) {
+ final String oldName = name;
name = newName;
- if (eNotificationRequired())
- eNotify(new ENotificationImpl(this, Notification.SET, MonitoringPackage.ADAPTER_MONITORING_VAR_DECLARATION__NAME, oldName, name));
+ if (eNotificationRequired()) {
+ eNotify(new ENotificationImpl(this, Notification.SET,
+ MonitoringPackage.ADAPTER_MONITORING_VAR_DECLARATION__NAME, oldName, name));
+ }
}
/**
* <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
* @generated
*/
@Override
@@ -243,30 +267,36 @@
/**
* <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
* @generated
*/
@Override
- public void setComment(String newComment) {
- String oldComment = comment;
+ public void setComment(final String newComment) {
+ final String oldComment = comment;
comment = newComment;
- if (eNotificationRequired())
- eNotify(new ENotificationImpl(this, Notification.SET, MonitoringPackage.ADAPTER_MONITORING_VAR_DECLARATION__COMMENT, oldComment, comment));
+ if (eNotificationRequired()) {
+ eNotify(new ENotificationImpl(this, Notification.SET,
+ MonitoringPackage.ADAPTER_MONITORING_VAR_DECLARATION__COMMENT, oldComment, comment));
+ }
}
/**
* <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
* @generated
*/
@Override
public EList<Attribute> getAttributes() {
if (attributes == null) {
- attributes = new EObjectContainmentEList.Resolving<>(Attribute.class, this, MonitoringPackage.ADAPTER_MONITORING_VAR_DECLARATION__ATTRIBUTES);
+ attributes = new EObjectContainmentEList.Resolving<>(Attribute.class, this,
+ MonitoringPackage.ADAPTER_MONITORING_VAR_DECLARATION__ATTRIBUTES);
}
return attributes;
}
/**
* <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
* @generated
*/
@Override
@@ -276,34 +306,46 @@
/**
* <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
* @generated
*/
@Override
- public void setIsInput(boolean newIsInput) {
- boolean oldIsInput = isInput;
+ public void setIsInput(final boolean newIsInput) {
+ final boolean oldIsInput = isInput;
isInput = newIsInput;
- if (eNotificationRequired())
- eNotify(new ENotificationImpl(this, Notification.SET, MonitoringPackage.ADAPTER_MONITORING_VAR_DECLARATION__IS_INPUT, oldIsInput, isInput));
+ if (eNotificationRequired()) {
+ eNotify(new ENotificationImpl(this, Notification.SET,
+ MonitoringPackage.ADAPTER_MONITORING_VAR_DECLARATION__IS_INPUT, oldIsInput, isInput));
+ }
}
/**
* <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
* @generated
*/
@Override
public Value getValue() {
if (value != null && value.eIsProxy()) {
- InternalEObject oldValue = (InternalEObject)value;
- value = (Value)eResolveProxy(oldValue);
+ final InternalEObject oldValue = (InternalEObject) value;
+ value = (Value) eResolveProxy(oldValue);
if (value != oldValue) {
- InternalEObject newValue = (InternalEObject)value;
- NotificationChain msgs = oldValue.eInverseRemove(this, EOPPOSITE_FEATURE_BASE - MonitoringPackage.ADAPTER_MONITORING_VAR_DECLARATION__VALUE, null, null);
+ final InternalEObject newValue = (InternalEObject) value;
+ NotificationChain msgs = oldValue.eInverseRemove(this,
+ EOPPOSITE_FEATURE_BASE - MonitoringPackage.ADAPTER_MONITORING_VAR_DECLARATION__VALUE, null,
+ null);
if (newValue.eInternalContainer() == null) {
- msgs = newValue.eInverseAdd(this, EOPPOSITE_FEATURE_BASE - MonitoringPackage.ADAPTER_MONITORING_VAR_DECLARATION__VALUE, null, msgs);
+ msgs = newValue.eInverseAdd(this,
+ EOPPOSITE_FEATURE_BASE - MonitoringPackage.ADAPTER_MONITORING_VAR_DECLARATION__VALUE, null,
+ msgs);
}
- if (msgs != null) msgs.dispatch();
- if (eNotificationRequired())
- eNotify(new ENotificationImpl(this, Notification.RESOLVE, MonitoringPackage.ADAPTER_MONITORING_VAR_DECLARATION__VALUE, oldValue, value));
+ if (msgs != null) {
+ msgs.dispatch();
+ }
+ if (eNotificationRequired()) {
+ eNotify(new ENotificationImpl(this, Notification.RESOLVE,
+ MonitoringPackage.ADAPTER_MONITORING_VAR_DECLARATION__VALUE, oldValue, value));
+ }
}
}
return value;
@@ -311,6 +353,7 @@
/**
* <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
* @generated
*/
public Value basicGetValue() {
@@ -319,79 +362,108 @@
/**
* <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
* @generated
*/
- public NotificationChain basicSetValue(Value newValue, NotificationChain msgs) {
- Value oldValue = value;
+ public NotificationChain basicSetValue(final Value newValue, NotificationChain msgs) {
+ final Value oldValue = value;
value = newValue;
if (eNotificationRequired()) {
- ENotificationImpl notification = new ENotificationImpl(this, Notification.SET, MonitoringPackage.ADAPTER_MONITORING_VAR_DECLARATION__VALUE, oldValue, newValue);
- if (msgs == null) msgs = notification; else msgs.add(notification);
+ final ENotificationImpl notification = new ENotificationImpl(this, Notification.SET,
+ MonitoringPackage.ADAPTER_MONITORING_VAR_DECLARATION__VALUE, oldValue, newValue);
+ if (msgs == null) {
+ msgs = notification;
+ } else {
+ msgs.add(notification);
+ }
}
return msgs;
}
/**
* <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
* @generated
*/
@Override
- public void setValue(Value newValue) {
+ public void setValue(final Value newValue) {
if (newValue != value) {
NotificationChain msgs = null;
- if (value != null)
- msgs = ((InternalEObject)value).eInverseRemove(this, EOPPOSITE_FEATURE_BASE - MonitoringPackage.ADAPTER_MONITORING_VAR_DECLARATION__VALUE, null, msgs);
- if (newValue != null)
- msgs = ((InternalEObject)newValue).eInverseAdd(this, EOPPOSITE_FEATURE_BASE - MonitoringPackage.ADAPTER_MONITORING_VAR_DECLARATION__VALUE, null, msgs);
+ if (value != null) {
+ msgs = ((InternalEObject) value).eInverseRemove(this,
+ EOPPOSITE_FEATURE_BASE - MonitoringPackage.ADAPTER_MONITORING_VAR_DECLARATION__VALUE, null,
+ msgs);
+ }
+ if (newValue != null) {
+ msgs = ((InternalEObject) newValue).eInverseAdd(this,
+ EOPPOSITE_FEATURE_BASE - MonitoringPackage.ADAPTER_MONITORING_VAR_DECLARATION__VALUE, null,
+ msgs);
+ }
msgs = basicSetValue(newValue, msgs);
- if (msgs != null) msgs.dispatch();
+ if (msgs != null) {
+ msgs.dispatch();
+ }
+ } else if (eNotificationRequired()) {
+ eNotify(new ENotificationImpl(this, Notification.SET,
+ MonitoringPackage.ADAPTER_MONITORING_VAR_DECLARATION__VALUE, newValue, newValue));
}
- else if (eNotificationRequired())
- eNotify(new ENotificationImpl(this, Notification.SET, MonitoringPackage.ADAPTER_MONITORING_VAR_DECLARATION__VALUE, newValue, newValue));
}
/**
* <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
* @generated
*/
@Override
public EList<Connection> getInputConnections() {
if (inputConnections == null) {
- inputConnections = new EObjectWithInverseResolvingEList<>(Connection.class, this, MonitoringPackage.ADAPTER_MONITORING_VAR_DECLARATION__INPUT_CONNECTIONS, LibraryElementPackage.CONNECTION__DESTINATION);
+ inputConnections = new EObjectWithInverseResolvingEList<>(Connection.class, this,
+ MonitoringPackage.ADAPTER_MONITORING_VAR_DECLARATION__INPUT_CONNECTIONS,
+ LibraryElementPackage.CONNECTION__DESTINATION);
}
return inputConnections;
}
/**
* <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
* @generated
*/
@Override
public EList<Connection> getOutputConnections() {
if (outputConnections == null) {
- outputConnections = new EObjectWithInverseResolvingEList<>(Connection.class, this, MonitoringPackage.ADAPTER_MONITORING_VAR_DECLARATION__OUTPUT_CONNECTIONS, LibraryElementPackage.CONNECTION__SOURCE);
+ outputConnections = new EObjectWithInverseResolvingEList<>(Connection.class, this,
+ MonitoringPackage.ADAPTER_MONITORING_VAR_DECLARATION__OUTPUT_CONNECTIONS,
+ LibraryElementPackage.CONNECTION__SOURCE);
}
return outputConnections;
}
/**
* <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
* @generated
*/
@Override
public ArraySize getArraySize() {
if (arraySize != null && arraySize.eIsProxy()) {
- InternalEObject oldArraySize = (InternalEObject)arraySize;
- arraySize = (ArraySize)eResolveProxy(oldArraySize);
+ final InternalEObject oldArraySize = (InternalEObject) arraySize;
+ arraySize = (ArraySize) eResolveProxy(oldArraySize);
if (arraySize != oldArraySize) {
- InternalEObject newArraySize = (InternalEObject)arraySize;
- NotificationChain msgs = oldArraySize.eInverseRemove(this, LibraryElementPackage.ARRAY_SIZE__VAR_DECLARATION, ArraySize.class, null);
+ final InternalEObject newArraySize = (InternalEObject) arraySize;
+ NotificationChain msgs = oldArraySize.eInverseRemove(this,
+ LibraryElementPackage.ARRAY_SIZE__VAR_DECLARATION, ArraySize.class, null);
if (newArraySize.eInternalContainer() == null) {
- msgs = newArraySize.eInverseAdd(this, LibraryElementPackage.ARRAY_SIZE__VAR_DECLARATION, ArraySize.class, msgs);
+ msgs = newArraySize.eInverseAdd(this, LibraryElementPackage.ARRAY_SIZE__VAR_DECLARATION,
+ ArraySize.class, msgs);
}
- if (msgs != null) msgs.dispatch();
- if (eNotificationRequired())
- eNotify(new ENotificationImpl(this, Notification.RESOLVE, MonitoringPackage.ADAPTER_MONITORING_VAR_DECLARATION__ARRAY_SIZE, oldArraySize, arraySize));
+ if (msgs != null) {
+ msgs.dispatch();
+ }
+ if (eNotificationRequired()) {
+ eNotify(new ENotificationImpl(this, Notification.RESOLVE,
+ MonitoringPackage.ADAPTER_MONITORING_VAR_DECLARATION__ARRAY_SIZE, oldArraySize, arraySize));
+ }
}
}
return arraySize;
@@ -399,6 +471,7 @@
/**
* <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
* @generated
*/
public ArraySize basicGetArraySize() {
@@ -407,49 +480,64 @@
/**
* <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
* @generated
*/
- public NotificationChain basicSetArraySize(ArraySize newArraySize, NotificationChain msgs) {
- ArraySize oldArraySize = arraySize;
+ public NotificationChain basicSetArraySize(final ArraySize newArraySize, NotificationChain msgs) {
+ final ArraySize oldArraySize = arraySize;
arraySize = newArraySize;
if (eNotificationRequired()) {
- ENotificationImpl notification = new ENotificationImpl(this, Notification.SET, MonitoringPackage.ADAPTER_MONITORING_VAR_DECLARATION__ARRAY_SIZE, oldArraySize, newArraySize);
- if (msgs == null) msgs = notification; else msgs.add(notification);
+ final ENotificationImpl notification = new ENotificationImpl(this, Notification.SET,
+ MonitoringPackage.ADAPTER_MONITORING_VAR_DECLARATION__ARRAY_SIZE, oldArraySize, newArraySize);
+ if (msgs == null) {
+ msgs = notification;
+ } else {
+ msgs.add(notification);
+ }
}
return msgs;
}
/**
* <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
* @generated
*/
@Override
- public void setArraySize(ArraySize newArraySize) {
+ public void setArraySize(final ArraySize newArraySize) {
if (newArraySize != arraySize) {
NotificationChain msgs = null;
- if (arraySize != null)
- msgs = ((InternalEObject)arraySize).eInverseRemove(this, LibraryElementPackage.ARRAY_SIZE__VAR_DECLARATION, ArraySize.class, msgs);
- if (newArraySize != null)
- msgs = ((InternalEObject)newArraySize).eInverseAdd(this, LibraryElementPackage.ARRAY_SIZE__VAR_DECLARATION, ArraySize.class, msgs);
+ if (arraySize != null) {
+ msgs = ((InternalEObject) arraySize).eInverseRemove(this,
+ LibraryElementPackage.ARRAY_SIZE__VAR_DECLARATION, ArraySize.class, msgs);
+ }
+ if (newArraySize != null) {
+ msgs = ((InternalEObject) newArraySize).eInverseAdd(this,
+ LibraryElementPackage.ARRAY_SIZE__VAR_DECLARATION, ArraySize.class, msgs);
+ }
msgs = basicSetArraySize(newArraySize, msgs);
- if (msgs != null) msgs.dispatch();
+ if (msgs != null) {
+ msgs.dispatch();
+ }
+ } else if (eNotificationRequired()) {
+ eNotify(new ENotificationImpl(this, Notification.SET,
+ MonitoringPackage.ADAPTER_MONITORING_VAR_DECLARATION__ARRAY_SIZE, newArraySize, newArraySize));
}
- else if (eNotificationRequired())
- eNotify(new ENotificationImpl(this, Notification.SET, MonitoringPackage.ADAPTER_MONITORING_VAR_DECLARATION__ARRAY_SIZE, newArraySize, newArraySize));
}
/**
* <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
* @generated
*/
@Override
public DataType getType() {
if (type != null && type.eIsProxy()) {
- InternalEObject oldType = (InternalEObject)type;
- type = (DataType)eResolveProxy(oldType);
- if (type != oldType) {
- if (eNotificationRequired())
- eNotify(new ENotificationImpl(this, Notification.RESOLVE, MonitoringPackage.ADAPTER_MONITORING_VAR_DECLARATION__TYPE, oldType, type));
+ final InternalEObject oldType = (InternalEObject) type;
+ type = (DataType) eResolveProxy(oldType);
+ if ((type != oldType) && eNotificationRequired()) {
+ eNotify(new ENotificationImpl(this, Notification.RESOLVE,
+ MonitoringPackage.ADAPTER_MONITORING_VAR_DECLARATION__TYPE, oldType, type));
}
}
return type;
@@ -457,6 +545,7 @@
/**
* <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
* @generated
*/
public DataType basicGetType() {
@@ -465,24 +554,28 @@
/**
* <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
* @generated
*/
@Override
- public void setType(DataType newType) {
- DataType oldType = type;
+ public void setType(final DataType newType) {
+ final DataType oldType = type;
type = newType;
- if (eNotificationRequired())
- eNotify(new ENotificationImpl(this, Notification.SET, MonitoringPackage.ADAPTER_MONITORING_VAR_DECLARATION__TYPE, oldType, type));
+ if (eNotificationRequired()) {
+ eNotify(new ENotificationImpl(this, Notification.SET,
+ MonitoringPackage.ADAPTER_MONITORING_VAR_DECLARATION__TYPE, oldType, type));
+ }
}
/**
* <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
* @generated
*/
@Override
public String getTypeName() {
- org.eclipse.fordiac.ide.model.libraryElement.INamedElement type = getType();
- if(type != null){
+ final org.eclipse.fordiac.ide.model.libraryElement.INamedElement type = getType();
+ if (type != null) {
return type.getName();
}
return null;
@@ -490,36 +583,43 @@
/**
* <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
* @generated
*/
@Override
public boolean validateType(final DiagnosticChain diagnostics, final Map<Object, Object> context) {
- return org.eclipse.fordiac.ide.model.libraryElement.impl.TypedElementAnnotations.validateType(this, diagnostics, context);
+ return org.eclipse.fordiac.ide.model.libraryElement.impl.TypedElementAnnotations.validateType(this, diagnostics,
+ context);
}
/**
* <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
* @generated
*/
@Override
public boolean validateName(final DiagnosticChain diagnostics, final Map<Object, Object> context) {
- return org.eclipse.fordiac.ide.model.libraryElement.impl.InterfaceElementAnnotations.validateName(this, diagnostics, context);
+ return org.eclipse.fordiac.ide.model.libraryElement.impl.InterfaceElementAnnotations.validateName(this,
+ diagnostics, context);
}
/**
* <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
* @generated
*/
@Override
public EList<With> getWiths() {
if (withs == null) {
- withs = new EObjectWithInverseResolvingEList<>(With.class, this, MonitoringPackage.ADAPTER_MONITORING_VAR_DECLARATION__WITHS, LibraryElementPackage.WITH__VARIABLES);
+ withs = new EObjectWithInverseResolvingEList<>(With.class, this,
+ MonitoringPackage.ADAPTER_MONITORING_VAR_DECLARATION__WITHS, LibraryElementPackage.WITH__VARIABLES);
}
return withs;
}
/**
* <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
* @generated
*/
@Override
@@ -529,6 +629,7 @@
/**
* <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
* @generated
*/
@Override
@@ -538,15 +639,17 @@
/**
* <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
* @generated
*/
@Override
public void setVisible(final boolean visible) {
- org.eclipse.fordiac.ide.model.annotations.HiddenElementAnnotations.setVisible(this,visible);
+ org.eclipse.fordiac.ide.model.annotations.HiddenElementAnnotations.setVisible(this, visible);
}
/**
* <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
* @generated
*/
@Override
@@ -556,6 +659,7 @@
/**
* <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
* @generated
*/
@Override
@@ -565,17 +669,19 @@
}
/**
- * <!-- begin-user-doc -->
- * <!-- end-user-doc -->
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
* @generated
*/
@Override
- public void setAttribute(final AttributeDeclaration attributeDeclaration, final String value, final String comment) {
+ public void setAttribute(final AttributeDeclaration attributeDeclaration, final String value,
+ final String comment) {
org.eclipse.fordiac.ide.model.Annotations.setAttribute(this, attributeDeclaration, value, comment);
}
/**
* <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
* @generated
*/
@Override
@@ -585,6 +691,7 @@
/**
* <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
* @generated
*/
@Override
@@ -594,6 +701,7 @@
/**
* <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
* @generated
*/
@Override
@@ -603,6 +711,7 @@
/**
* <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
* @generated
*/
@Override
@@ -612,316 +721,318 @@
/**
* <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
* @generated
*/
@SuppressWarnings("unchecked")
@Override
- public NotificationChain eInverseAdd(InternalEObject otherEnd, int featureID, NotificationChain msgs) {
+ public NotificationChain eInverseAdd(final InternalEObject otherEnd, final int featureID, NotificationChain msgs) {
switch (featureID) {
- case MonitoringPackage.ADAPTER_MONITORING_VAR_DECLARATION__INPUT_CONNECTIONS:
- return ((InternalEList<InternalEObject>)(InternalEList<?>)getInputConnections()).basicAdd(otherEnd, msgs);
- case MonitoringPackage.ADAPTER_MONITORING_VAR_DECLARATION__OUTPUT_CONNECTIONS:
- return ((InternalEList<InternalEObject>)(InternalEList<?>)getOutputConnections()).basicAdd(otherEnd, msgs);
- case MonitoringPackage.ADAPTER_MONITORING_VAR_DECLARATION__ARRAY_SIZE:
- if (arraySize != null)
- msgs = ((InternalEObject)arraySize).eInverseRemove(this, EOPPOSITE_FEATURE_BASE - MonitoringPackage.ADAPTER_MONITORING_VAR_DECLARATION__ARRAY_SIZE, null, msgs);
- return basicSetArraySize((ArraySize)otherEnd, msgs);
- case MonitoringPackage.ADAPTER_MONITORING_VAR_DECLARATION__WITHS:
- return ((InternalEList<InternalEObject>)(InternalEList<?>)getWiths()).basicAdd(otherEnd, msgs);
- default:
- return super.eInverseAdd(otherEnd, featureID, msgs);
- }
- }
-
- /**
- * <!-- begin-user-doc --> <!-- end-user-doc -->
- * @generated
- */
- @Override
- public NotificationChain eInverseRemove(InternalEObject otherEnd, int featureID, NotificationChain msgs) {
- switch (featureID) {
- case MonitoringPackage.ADAPTER_MONITORING_VAR_DECLARATION__ATTRIBUTES:
- return ((InternalEList<?>)getAttributes()).basicRemove(otherEnd, msgs);
- case MonitoringPackage.ADAPTER_MONITORING_VAR_DECLARATION__INPUT_CONNECTIONS:
- return ((InternalEList<?>)getInputConnections()).basicRemove(otherEnd, msgs);
- case MonitoringPackage.ADAPTER_MONITORING_VAR_DECLARATION__OUTPUT_CONNECTIONS:
- return ((InternalEList<?>)getOutputConnections()).basicRemove(otherEnd, msgs);
- case MonitoringPackage.ADAPTER_MONITORING_VAR_DECLARATION__ARRAY_SIZE:
- return basicSetArraySize(null, msgs);
- case MonitoringPackage.ADAPTER_MONITORING_VAR_DECLARATION__WITHS:
- return ((InternalEList<?>)getWiths()).basicRemove(otherEnd, msgs);
- case MonitoringPackage.ADAPTER_MONITORING_VAR_DECLARATION__VALUE:
- return basicSetValue(null, msgs);
- default:
- return super.eInverseRemove(otherEnd, featureID, msgs);
- }
- }
-
- /**
- * <!-- begin-user-doc --> <!-- end-user-doc -->
- * @generated
- */
- @Override
- public Object eGet(int featureID, boolean resolve, boolean coreType) {
- switch (featureID) {
- case MonitoringPackage.ADAPTER_MONITORING_VAR_DECLARATION__NAME:
- return getName();
- case MonitoringPackage.ADAPTER_MONITORING_VAR_DECLARATION__COMMENT:
- return getComment();
- case MonitoringPackage.ADAPTER_MONITORING_VAR_DECLARATION__ATTRIBUTES:
- return getAttributes();
- case MonitoringPackage.ADAPTER_MONITORING_VAR_DECLARATION__IS_INPUT:
- return isIsInput();
- case MonitoringPackage.ADAPTER_MONITORING_VAR_DECLARATION__INPUT_CONNECTIONS:
- return getInputConnections();
- case MonitoringPackage.ADAPTER_MONITORING_VAR_DECLARATION__OUTPUT_CONNECTIONS:
- return getOutputConnections();
- case MonitoringPackage.ADAPTER_MONITORING_VAR_DECLARATION__TYPE:
- if (resolve) return getType();
- return basicGetType();
- case MonitoringPackage.ADAPTER_MONITORING_VAR_DECLARATION__ARRAY_SIZE:
- if (resolve) return getArraySize();
- return basicGetArraySize();
- case MonitoringPackage.ADAPTER_MONITORING_VAR_DECLARATION__WITHS:
- return getWiths();
- case MonitoringPackage.ADAPTER_MONITORING_VAR_DECLARATION__VALUE:
- if (resolve) return getValue();
- return basicGetValue();
- default:
- return super.eGet(featureID, resolve, coreType);
- }
- }
-
- /**
- * <!-- begin-user-doc --> <!-- end-user-doc -->
- * @generated
- */
- @SuppressWarnings("unchecked")
- @Override
- public void eSet(int featureID, Object newValue) {
- switch (featureID) {
- case MonitoringPackage.ADAPTER_MONITORING_VAR_DECLARATION__NAME:
- setName((String)newValue);
- return;
- case MonitoringPackage.ADAPTER_MONITORING_VAR_DECLARATION__COMMENT:
- setComment((String)newValue);
- return;
- case MonitoringPackage.ADAPTER_MONITORING_VAR_DECLARATION__ATTRIBUTES:
- getAttributes().clear();
- getAttributes().addAll((Collection<? extends Attribute>)newValue);
- return;
- case MonitoringPackage.ADAPTER_MONITORING_VAR_DECLARATION__IS_INPUT:
- setIsInput((Boolean)newValue);
- return;
- case MonitoringPackage.ADAPTER_MONITORING_VAR_DECLARATION__INPUT_CONNECTIONS:
- getInputConnections().clear();
- getInputConnections().addAll((Collection<? extends Connection>)newValue);
- return;
- case MonitoringPackage.ADAPTER_MONITORING_VAR_DECLARATION__OUTPUT_CONNECTIONS:
- getOutputConnections().clear();
- getOutputConnections().addAll((Collection<? extends Connection>)newValue);
- return;
- case MonitoringPackage.ADAPTER_MONITORING_VAR_DECLARATION__TYPE:
- setType((DataType)newValue);
- return;
- case MonitoringPackage.ADAPTER_MONITORING_VAR_DECLARATION__ARRAY_SIZE:
- setArraySize((ArraySize)newValue);
- return;
- case MonitoringPackage.ADAPTER_MONITORING_VAR_DECLARATION__WITHS:
- getWiths().clear();
- getWiths().addAll((Collection<? extends With>)newValue);
- return;
- case MonitoringPackage.ADAPTER_MONITORING_VAR_DECLARATION__VALUE:
- setValue((Value)newValue);
- return;
- default:
- super.eSet(featureID, newValue);
- return;
- }
- }
-
- /**
- * <!-- begin-user-doc --> <!-- end-user-doc -->
- * @generated
- */
- @Override
- public void eUnset(int featureID) {
- switch (featureID) {
- case MonitoringPackage.ADAPTER_MONITORING_VAR_DECLARATION__NAME:
- setName(NAME_EDEFAULT);
- return;
- case MonitoringPackage.ADAPTER_MONITORING_VAR_DECLARATION__COMMENT:
- setComment(COMMENT_EDEFAULT);
- return;
- case MonitoringPackage.ADAPTER_MONITORING_VAR_DECLARATION__ATTRIBUTES:
- getAttributes().clear();
- return;
- case MonitoringPackage.ADAPTER_MONITORING_VAR_DECLARATION__IS_INPUT:
- setIsInput(IS_INPUT_EDEFAULT);
- return;
- case MonitoringPackage.ADAPTER_MONITORING_VAR_DECLARATION__INPUT_CONNECTIONS:
- getInputConnections().clear();
- return;
- case MonitoringPackage.ADAPTER_MONITORING_VAR_DECLARATION__OUTPUT_CONNECTIONS:
- getOutputConnections().clear();
- return;
- case MonitoringPackage.ADAPTER_MONITORING_VAR_DECLARATION__TYPE:
- setType((DataType)null);
- return;
- case MonitoringPackage.ADAPTER_MONITORING_VAR_DECLARATION__ARRAY_SIZE:
- setArraySize((ArraySize)null);
- return;
- case MonitoringPackage.ADAPTER_MONITORING_VAR_DECLARATION__WITHS:
- getWiths().clear();
- return;
- case MonitoringPackage.ADAPTER_MONITORING_VAR_DECLARATION__VALUE:
- setValue((Value)null);
- return;
- default:
- super.eUnset(featureID);
- return;
- }
- }
-
- /**
- * <!-- begin-user-doc --> <!-- end-user-doc -->
- * @generated
- */
- @Override
- public boolean eIsSet(int featureID) {
- switch (featureID) {
- case MonitoringPackage.ADAPTER_MONITORING_VAR_DECLARATION__NAME:
- return NAME_EDEFAULT == null ? name != null : !NAME_EDEFAULT.equals(name);
- case MonitoringPackage.ADAPTER_MONITORING_VAR_DECLARATION__COMMENT:
- return COMMENT_EDEFAULT == null ? comment != null : !COMMENT_EDEFAULT.equals(comment);
- case MonitoringPackage.ADAPTER_MONITORING_VAR_DECLARATION__ATTRIBUTES:
- return attributes != null && !attributes.isEmpty();
- case MonitoringPackage.ADAPTER_MONITORING_VAR_DECLARATION__IS_INPUT:
- return isInput != IS_INPUT_EDEFAULT;
- case MonitoringPackage.ADAPTER_MONITORING_VAR_DECLARATION__INPUT_CONNECTIONS:
- return inputConnections != null && !inputConnections.isEmpty();
- case MonitoringPackage.ADAPTER_MONITORING_VAR_DECLARATION__OUTPUT_CONNECTIONS:
- return outputConnections != null && !outputConnections.isEmpty();
- case MonitoringPackage.ADAPTER_MONITORING_VAR_DECLARATION__TYPE:
- return type != null;
- case MonitoringPackage.ADAPTER_MONITORING_VAR_DECLARATION__ARRAY_SIZE:
- return arraySize != null;
- case MonitoringPackage.ADAPTER_MONITORING_VAR_DECLARATION__WITHS:
- return withs != null && !withs.isEmpty();
- case MonitoringPackage.ADAPTER_MONITORING_VAR_DECLARATION__VALUE:
- return value != null;
- default:
- return super.eIsSet(featureID);
- }
- }
-
- /**
- * <!-- begin-user-doc --> <!-- end-user-doc -->
- * @generated
- */
- @Override
- public int eBaseStructuralFeatureID(int derivedFeatureID, Class<?> baseClass) {
- if (baseClass == INamedElement.class) {
- switch (derivedFeatureID) {
- case MonitoringPackage.ADAPTER_MONITORING_VAR_DECLARATION__NAME: return LibraryElementPackage.INAMED_ELEMENT__NAME;
- case MonitoringPackage.ADAPTER_MONITORING_VAR_DECLARATION__COMMENT: return LibraryElementPackage.INAMED_ELEMENT__COMMENT;
- default: return -1;
+ case MonitoringPackage.ADAPTER_MONITORING_VAR_DECLARATION__INPUT_CONNECTIONS:
+ return ((InternalEList<InternalEObject>) (InternalEList<?>) getInputConnections()).basicAdd(otherEnd, msgs);
+ case MonitoringPackage.ADAPTER_MONITORING_VAR_DECLARATION__OUTPUT_CONNECTIONS:
+ return ((InternalEList<InternalEObject>) (InternalEList<?>) getOutputConnections()).basicAdd(otherEnd,
+ msgs);
+ case MonitoringPackage.ADAPTER_MONITORING_VAR_DECLARATION__ARRAY_SIZE:
+ if (arraySize != null) {
+ msgs = ((InternalEObject) arraySize).eInverseRemove(this,
+ EOPPOSITE_FEATURE_BASE - MonitoringPackage.ADAPTER_MONITORING_VAR_DECLARATION__ARRAY_SIZE, null,
+ msgs);
}
+ return basicSetArraySize((ArraySize) otherEnd, msgs);
+ case MonitoringPackage.ADAPTER_MONITORING_VAR_DECLARATION__WITHS:
+ return ((InternalEList<InternalEObject>) (InternalEList<?>) getWiths()).basicAdd(otherEnd, msgs);
+ default:
+ return super.eInverseAdd(otherEnd, featureID, msgs);
+ }
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ @Override
+ public NotificationChain eInverseRemove(final InternalEObject otherEnd, final int featureID,
+ final NotificationChain msgs) {
+ return switch (featureID) {
+ case MonitoringPackage.ADAPTER_MONITORING_VAR_DECLARATION__ATTRIBUTES -> ((InternalEList<?>) getAttributes()).basicRemove(otherEnd, msgs);
+ case MonitoringPackage.ADAPTER_MONITORING_VAR_DECLARATION__INPUT_CONNECTIONS -> ((InternalEList<?>) getInputConnections()).basicRemove(otherEnd, msgs);
+ case MonitoringPackage.ADAPTER_MONITORING_VAR_DECLARATION__OUTPUT_CONNECTIONS -> ((InternalEList<?>) getOutputConnections()).basicRemove(otherEnd, msgs);
+ case MonitoringPackage.ADAPTER_MONITORING_VAR_DECLARATION__ARRAY_SIZE -> basicSetArraySize(null, msgs);
+ case MonitoringPackage.ADAPTER_MONITORING_VAR_DECLARATION__WITHS -> ((InternalEList<?>) getWiths()).basicRemove(otherEnd, msgs);
+ case MonitoringPackage.ADAPTER_MONITORING_VAR_DECLARATION__VALUE -> basicSetValue(null, msgs);
+ default -> super.eInverseRemove(otherEnd, featureID, msgs);
+ };
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ @Override
+ public Object eGet(final int featureID, final boolean resolve, final boolean coreType) {
+ switch (featureID) {
+ case MonitoringPackage.ADAPTER_MONITORING_VAR_DECLARATION__NAME:
+ return getName();
+ case MonitoringPackage.ADAPTER_MONITORING_VAR_DECLARATION__COMMENT:
+ return getComment();
+ case MonitoringPackage.ADAPTER_MONITORING_VAR_DECLARATION__ATTRIBUTES:
+ return getAttributes();
+ case MonitoringPackage.ADAPTER_MONITORING_VAR_DECLARATION__IS_INPUT:
+ return isIsInput();
+ case MonitoringPackage.ADAPTER_MONITORING_VAR_DECLARATION__INPUT_CONNECTIONS:
+ return getInputConnections();
+ case MonitoringPackage.ADAPTER_MONITORING_VAR_DECLARATION__OUTPUT_CONNECTIONS:
+ return getOutputConnections();
+ case MonitoringPackage.ADAPTER_MONITORING_VAR_DECLARATION__TYPE:
+ if (resolve) {
+ return getType();
+ }
+ return basicGetType();
+ case MonitoringPackage.ADAPTER_MONITORING_VAR_DECLARATION__ARRAY_SIZE:
+ if (resolve) {
+ return getArraySize();
+ }
+ return basicGetArraySize();
+ case MonitoringPackage.ADAPTER_MONITORING_VAR_DECLARATION__WITHS:
+ return getWiths();
+ case MonitoringPackage.ADAPTER_MONITORING_VAR_DECLARATION__VALUE:
+ if (resolve) {
+ return getValue();
+ }
+ return basicGetValue();
+ default:
+ return super.eGet(featureID, resolve, coreType);
+ }
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ @SuppressWarnings("unchecked")
+ @Override
+ public void eSet(final int featureID, final Object newValue) {
+ switch (featureID) {
+ case MonitoringPackage.ADAPTER_MONITORING_VAR_DECLARATION__NAME:
+ setName((String) newValue);
+ return;
+ case MonitoringPackage.ADAPTER_MONITORING_VAR_DECLARATION__COMMENT:
+ setComment((String) newValue);
+ return;
+ case MonitoringPackage.ADAPTER_MONITORING_VAR_DECLARATION__ATTRIBUTES:
+ getAttributes().clear();
+ getAttributes().addAll((Collection<? extends Attribute>) newValue);
+ return;
+ case MonitoringPackage.ADAPTER_MONITORING_VAR_DECLARATION__IS_INPUT:
+ setIsInput((Boolean) newValue);
+ return;
+ case MonitoringPackage.ADAPTER_MONITORING_VAR_DECLARATION__INPUT_CONNECTIONS:
+ getInputConnections().clear();
+ getInputConnections().addAll((Collection<? extends Connection>) newValue);
+ return;
+ case MonitoringPackage.ADAPTER_MONITORING_VAR_DECLARATION__OUTPUT_CONNECTIONS:
+ getOutputConnections().clear();
+ getOutputConnections().addAll((Collection<? extends Connection>) newValue);
+ return;
+ case MonitoringPackage.ADAPTER_MONITORING_VAR_DECLARATION__TYPE:
+ setType((DataType) newValue);
+ return;
+ case MonitoringPackage.ADAPTER_MONITORING_VAR_DECLARATION__ARRAY_SIZE:
+ setArraySize((ArraySize) newValue);
+ return;
+ case MonitoringPackage.ADAPTER_MONITORING_VAR_DECLARATION__WITHS:
+ getWiths().clear();
+ getWiths().addAll((Collection<? extends With>) newValue);
+ return;
+ case MonitoringPackage.ADAPTER_MONITORING_VAR_DECLARATION__VALUE:
+ setValue((Value) newValue);
+ return;
+ default:
+ super.eSet(featureID, newValue);
+ }
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ @Override
+ public void eUnset(final int featureID) {
+ switch (featureID) {
+ case MonitoringPackage.ADAPTER_MONITORING_VAR_DECLARATION__NAME:
+ setName(NAME_EDEFAULT);
+ return;
+ case MonitoringPackage.ADAPTER_MONITORING_VAR_DECLARATION__COMMENT:
+ setComment(COMMENT_EDEFAULT);
+ return;
+ case MonitoringPackage.ADAPTER_MONITORING_VAR_DECLARATION__ATTRIBUTES:
+ getAttributes().clear();
+ return;
+ case MonitoringPackage.ADAPTER_MONITORING_VAR_DECLARATION__IS_INPUT:
+ setIsInput(IS_INPUT_EDEFAULT);
+ return;
+ case MonitoringPackage.ADAPTER_MONITORING_VAR_DECLARATION__INPUT_CONNECTIONS:
+ getInputConnections().clear();
+ return;
+ case MonitoringPackage.ADAPTER_MONITORING_VAR_DECLARATION__OUTPUT_CONNECTIONS:
+ getOutputConnections().clear();
+ return;
+ case MonitoringPackage.ADAPTER_MONITORING_VAR_DECLARATION__TYPE:
+ setType((DataType) null);
+ return;
+ case MonitoringPackage.ADAPTER_MONITORING_VAR_DECLARATION__ARRAY_SIZE:
+ setArraySize((ArraySize) null);
+ return;
+ case MonitoringPackage.ADAPTER_MONITORING_VAR_DECLARATION__WITHS:
+ getWiths().clear();
+ return;
+ case MonitoringPackage.ADAPTER_MONITORING_VAR_DECLARATION__VALUE:
+ setValue((Value) null);
+ return;
+ default:
+ super.eUnset(featureID);
+ }
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ @Override
+ public boolean eIsSet(final int featureID) {
+ return switch (featureID) {
+ case MonitoringPackage.ADAPTER_MONITORING_VAR_DECLARATION__NAME -> NAME_EDEFAULT == null ? name != null : !NAME_EDEFAULT.equals(name);
+ case MonitoringPackage.ADAPTER_MONITORING_VAR_DECLARATION__COMMENT -> COMMENT_EDEFAULT == null ? comment != null : !COMMENT_EDEFAULT.equals(comment);
+ case MonitoringPackage.ADAPTER_MONITORING_VAR_DECLARATION__ATTRIBUTES -> attributes != null && !attributes.isEmpty();
+ case MonitoringPackage.ADAPTER_MONITORING_VAR_DECLARATION__IS_INPUT -> isInput != IS_INPUT_EDEFAULT;
+ case MonitoringPackage.ADAPTER_MONITORING_VAR_DECLARATION__INPUT_CONNECTIONS -> inputConnections != null && !inputConnections.isEmpty();
+ case MonitoringPackage.ADAPTER_MONITORING_VAR_DECLARATION__OUTPUT_CONNECTIONS -> outputConnections != null && !outputConnections.isEmpty();
+ case MonitoringPackage.ADAPTER_MONITORING_VAR_DECLARATION__TYPE -> type != null;
+ case MonitoringPackage.ADAPTER_MONITORING_VAR_DECLARATION__ARRAY_SIZE -> arraySize != null;
+ case MonitoringPackage.ADAPTER_MONITORING_VAR_DECLARATION__WITHS -> withs != null && !withs.isEmpty();
+ case MonitoringPackage.ADAPTER_MONITORING_VAR_DECLARATION__VALUE -> value != null;
+ default -> super.eIsSet(featureID);
+ };
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ @Override
+ public int eBaseStructuralFeatureID(final int derivedFeatureID, final Class<?> baseClass) {
+ if (baseClass == INamedElement.class) {
+ return switch (derivedFeatureID) {
+ case MonitoringPackage.ADAPTER_MONITORING_VAR_DECLARATION__NAME -> LibraryElementPackage.INAMED_ELEMENT__NAME;
+ case MonitoringPackage.ADAPTER_MONITORING_VAR_DECLARATION__COMMENT -> LibraryElementPackage.INAMED_ELEMENT__COMMENT;
+ default -> -1;
+ };
}
if (baseClass == ITypedElement.class) {
- switch (derivedFeatureID) {
- default: return -1;
- }
+ return switch (derivedFeatureID) {
+ default -> -1;
+ };
}
if (baseClass == ConfigurableObject.class) {
- switch (derivedFeatureID) {
- case MonitoringPackage.ADAPTER_MONITORING_VAR_DECLARATION__ATTRIBUTES: return LibraryElementPackage.CONFIGURABLE_OBJECT__ATTRIBUTES;
- default: return -1;
- }
+ return switch (derivedFeatureID) {
+ case MonitoringPackage.ADAPTER_MONITORING_VAR_DECLARATION__ATTRIBUTES -> LibraryElementPackage.CONFIGURABLE_OBJECT__ATTRIBUTES;
+ default -> -1;
+ };
}
if (baseClass == HiddenElement.class) {
- switch (derivedFeatureID) {
- default: return -1;
- }
+ return switch (derivedFeatureID) {
+ default -> -1;
+ };
}
if (baseClass == IInterfaceElement.class) {
- switch (derivedFeatureID) {
- case MonitoringPackage.ADAPTER_MONITORING_VAR_DECLARATION__IS_INPUT: return LibraryElementPackage.IINTERFACE_ELEMENT__IS_INPUT;
- case MonitoringPackage.ADAPTER_MONITORING_VAR_DECLARATION__INPUT_CONNECTIONS: return LibraryElementPackage.IINTERFACE_ELEMENT__INPUT_CONNECTIONS;
- case MonitoringPackage.ADAPTER_MONITORING_VAR_DECLARATION__OUTPUT_CONNECTIONS: return LibraryElementPackage.IINTERFACE_ELEMENT__OUTPUT_CONNECTIONS;
- case MonitoringPackage.ADAPTER_MONITORING_VAR_DECLARATION__TYPE: return LibraryElementPackage.IINTERFACE_ELEMENT__TYPE;
- default: return -1;
- }
+ return switch (derivedFeatureID) {
+ case MonitoringPackage.ADAPTER_MONITORING_VAR_DECLARATION__IS_INPUT -> LibraryElementPackage.IINTERFACE_ELEMENT__IS_INPUT;
+ case MonitoringPackage.ADAPTER_MONITORING_VAR_DECLARATION__INPUT_CONNECTIONS -> LibraryElementPackage.IINTERFACE_ELEMENT__INPUT_CONNECTIONS;
+ case MonitoringPackage.ADAPTER_MONITORING_VAR_DECLARATION__OUTPUT_CONNECTIONS -> LibraryElementPackage.IINTERFACE_ELEMENT__OUTPUT_CONNECTIONS;
+ case MonitoringPackage.ADAPTER_MONITORING_VAR_DECLARATION__TYPE -> LibraryElementPackage.IINTERFACE_ELEMENT__TYPE;
+ default -> -1;
+ };
}
if (baseClass == VarDeclaration.class) {
- switch (derivedFeatureID) {
- case MonitoringPackage.ADAPTER_MONITORING_VAR_DECLARATION__ARRAY_SIZE: return LibraryElementPackage.VAR_DECLARATION__ARRAY_SIZE;
- case MonitoringPackage.ADAPTER_MONITORING_VAR_DECLARATION__WITHS: return LibraryElementPackage.VAR_DECLARATION__WITHS;
- case MonitoringPackage.ADAPTER_MONITORING_VAR_DECLARATION__VALUE: return LibraryElementPackage.VAR_DECLARATION__VALUE;
- default: return -1;
- }
+ return switch (derivedFeatureID) {
+ case MonitoringPackage.ADAPTER_MONITORING_VAR_DECLARATION__ARRAY_SIZE -> LibraryElementPackage.VAR_DECLARATION__ARRAY_SIZE;
+ case MonitoringPackage.ADAPTER_MONITORING_VAR_DECLARATION__WITHS -> LibraryElementPackage.VAR_DECLARATION__WITHS;
+ case MonitoringPackage.ADAPTER_MONITORING_VAR_DECLARATION__VALUE -> LibraryElementPackage.VAR_DECLARATION__VALUE;
+ default -> -1;
+ };
}
return super.eBaseStructuralFeatureID(derivedFeatureID, baseClass);
}
/**
* <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
* @generated
*/
@Override
- public int eDerivedStructuralFeatureID(int baseFeatureID, Class<?> baseClass) {
+ public int eDerivedStructuralFeatureID(final int baseFeatureID, final Class<?> baseClass) {
if (baseClass == INamedElement.class) {
- switch (baseFeatureID) {
- case LibraryElementPackage.INAMED_ELEMENT__NAME: return MonitoringPackage.ADAPTER_MONITORING_VAR_DECLARATION__NAME;
- case LibraryElementPackage.INAMED_ELEMENT__COMMENT: return MonitoringPackage.ADAPTER_MONITORING_VAR_DECLARATION__COMMENT;
- default: return -1;
- }
+ return switch (baseFeatureID) {
+ case LibraryElementPackage.INAMED_ELEMENT__NAME -> MonitoringPackage.ADAPTER_MONITORING_VAR_DECLARATION__NAME;
+ case LibraryElementPackage.INAMED_ELEMENT__COMMENT -> MonitoringPackage.ADAPTER_MONITORING_VAR_DECLARATION__COMMENT;
+ default -> -1;
+ };
}
if (baseClass == ITypedElement.class) {
- switch (baseFeatureID) {
- default: return -1;
- }
+ return switch (baseFeatureID) {
+ default -> -1;
+ };
}
if (baseClass == ConfigurableObject.class) {
- switch (baseFeatureID) {
- case LibraryElementPackage.CONFIGURABLE_OBJECT__ATTRIBUTES: return MonitoringPackage.ADAPTER_MONITORING_VAR_DECLARATION__ATTRIBUTES;
- default: return -1;
- }
+ return switch (baseFeatureID) {
+ case LibraryElementPackage.CONFIGURABLE_OBJECT__ATTRIBUTES -> MonitoringPackage.ADAPTER_MONITORING_VAR_DECLARATION__ATTRIBUTES;
+ default -> -1;
+ };
}
if (baseClass == HiddenElement.class) {
- switch (baseFeatureID) {
- default: return -1;
- }
+ return switch (baseFeatureID) {
+ default -> -1;
+ };
}
if (baseClass == IInterfaceElement.class) {
- switch (baseFeatureID) {
- case LibraryElementPackage.IINTERFACE_ELEMENT__IS_INPUT: return MonitoringPackage.ADAPTER_MONITORING_VAR_DECLARATION__IS_INPUT;
- case LibraryElementPackage.IINTERFACE_ELEMENT__INPUT_CONNECTIONS: return MonitoringPackage.ADAPTER_MONITORING_VAR_DECLARATION__INPUT_CONNECTIONS;
- case LibraryElementPackage.IINTERFACE_ELEMENT__OUTPUT_CONNECTIONS: return MonitoringPackage.ADAPTER_MONITORING_VAR_DECLARATION__OUTPUT_CONNECTIONS;
- case LibraryElementPackage.IINTERFACE_ELEMENT__TYPE: return MonitoringPackage.ADAPTER_MONITORING_VAR_DECLARATION__TYPE;
- default: return -1;
- }
+ return switch (baseFeatureID) {
+ case LibraryElementPackage.IINTERFACE_ELEMENT__IS_INPUT -> MonitoringPackage.ADAPTER_MONITORING_VAR_DECLARATION__IS_INPUT;
+ case LibraryElementPackage.IINTERFACE_ELEMENT__INPUT_CONNECTIONS -> MonitoringPackage.ADAPTER_MONITORING_VAR_DECLARATION__INPUT_CONNECTIONS;
+ case LibraryElementPackage.IINTERFACE_ELEMENT__OUTPUT_CONNECTIONS -> MonitoringPackage.ADAPTER_MONITORING_VAR_DECLARATION__OUTPUT_CONNECTIONS;
+ case LibraryElementPackage.IINTERFACE_ELEMENT__TYPE -> MonitoringPackage.ADAPTER_MONITORING_VAR_DECLARATION__TYPE;
+ default -> -1;
+ };
}
if (baseClass == VarDeclaration.class) {
- switch (baseFeatureID) {
- case LibraryElementPackage.VAR_DECLARATION__ARRAY_SIZE: return MonitoringPackage.ADAPTER_MONITORING_VAR_DECLARATION__ARRAY_SIZE;
- case LibraryElementPackage.VAR_DECLARATION__WITHS: return MonitoringPackage.ADAPTER_MONITORING_VAR_DECLARATION__WITHS;
- case LibraryElementPackage.VAR_DECLARATION__VALUE: return MonitoringPackage.ADAPTER_MONITORING_VAR_DECLARATION__VALUE;
- default: return -1;
- }
+ return switch (baseFeatureID) {
+ case LibraryElementPackage.VAR_DECLARATION__ARRAY_SIZE -> MonitoringPackage.ADAPTER_MONITORING_VAR_DECLARATION__ARRAY_SIZE;
+ case LibraryElementPackage.VAR_DECLARATION__WITHS -> MonitoringPackage.ADAPTER_MONITORING_VAR_DECLARATION__WITHS;
+ case LibraryElementPackage.VAR_DECLARATION__VALUE -> MonitoringPackage.ADAPTER_MONITORING_VAR_DECLARATION__VALUE;
+ default -> -1;
+ };
}
return super.eDerivedStructuralFeatureID(baseFeatureID, baseClass);
}
/**
* <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
* @generated
*/
@Override
public String toString() {
- if (eIsProxy()) return super.toString();
+ if (eIsProxy()) {
+ return super.toString();
+ }
- StringBuilder result = new StringBuilder(super.toString());
+ final StringBuilder result = new StringBuilder(super.toString());
result.append(" (name: "); //$NON-NLS-1$
result.append(name);
result.append(", comment: "); //$NON-NLS-1$
@@ -950,6 +1061,7 @@
/**
* <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
* @generated
*/
@Override
@@ -959,6 +1071,7 @@
/**
* <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
* @generated
*/
@Override
@@ -968,16 +1081,19 @@
/**
* <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
* @generated
*/
@Override
public boolean validateVarInOutSourceTypeIsWellDefined(final DiagnosticChain diagnostics,
final Map<Object, Object> context) {
- return org.eclipse.fordiac.ide.model.libraryElement.impl.VarDeclarationAnnotations.validateVarInOutSourceTypeIsWellDefined(this, diagnostics, context);
+ return org.eclipse.fordiac.ide.model.libraryElement.impl.VarDeclarationAnnotations
+ .validateVarInOutSourceTypeIsWellDefined(this, diagnostics, context);
}
/**
* <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
* @generated
*/
@Override
@@ -987,41 +1103,72 @@
/**
* <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
* @generated
*/
@Override
public boolean validateMultipleInputConnections(final DiagnosticChain diagnostics,
final Map<Object, Object> context) {
- return org.eclipse.fordiac.ide.model.libraryElement.impl.VarDeclarationAnnotations.validateMultipleInputConnections(this, diagnostics, context);
+ return org.eclipse.fordiac.ide.model.libraryElement.impl.VarDeclarationAnnotations
+ .validateMultipleInputConnections(this, diagnostics, context);
}
/**
* <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
* @generated
*/
@Override
public boolean validateNoValueForGenericTypeVariable(final DiagnosticChain diagnostics,
final Map<Object, Object> context) {
- return org.eclipse.fordiac.ide.model.libraryElement.impl.VarDeclarationAnnotations.validateNoValueForGenericTypeVariable(this, diagnostics, context);
+ return org.eclipse.fordiac.ide.model.libraryElement.impl.VarDeclarationAnnotations
+ .validateNoValueForGenericTypeVariable(this, diagnostics, context);
}
/**
* <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
* @generated
*/
@Override
public boolean validateValueForGenericInstanceVariable(final DiagnosticChain diagnostics,
final Map<Object, Object> context) {
- return org.eclipse.fordiac.ide.model.libraryElement.impl.VarDeclarationAnnotations.validateValueForGenericInstanceVariable(this, diagnostics, context);
+ return org.eclipse.fordiac.ide.model.libraryElement.impl.VarDeclarationAnnotations
+ .validateValueForGenericInstanceVariable(this, diagnostics, context);
}
/**
* <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
* @generated
*/
@Override
public boolean validateVarInOutIsWithed(final DiagnosticChain diagnostics, final Map<Object, Object> context) {
- return org.eclipse.fordiac.ide.model.libraryElement.impl.VarDeclarationAnnotations.validateVarInOutIsWithed(this, diagnostics, context);
+ return org.eclipse.fordiac.ide.model.libraryElement.impl.VarDeclarationAnnotations
+ .validateVarInOutIsWithed(this, diagnostics, context);
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ @Override
+ public boolean validateVarInOutSubappInterface(final DiagnosticChain diagnostics,
+ final Map<Object, Object> context) {
+ return org.eclipse.fordiac.ide.model.libraryElement.impl.VarDeclarationAnnotations
+ .validateVarInOutSubappInterface(this, diagnostics, context);
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ @Override
+ public boolean validateVarInOutSubappNetwork(final DiagnosticChain diagnostics, final Map<Object, Object> context) {
+ return org.eclipse.fordiac.ide.model.libraryElement.impl.VarDeclarationAnnotations
+ .validateVarInOutSubappNetwork(this, diagnostics, context);
}
} // AdapterMonitoringVarDeclarationImpl
diff --git a/plugins/org.eclipse.fordiac.ide.monitoring/src-gen/org/eclipse/fordiac/ide/model/monitoring/util/MonitoringAdapterFactory.java b/plugins/org.eclipse.fordiac.ide.monitoring/src-gen/org/eclipse/fordiac/ide/model/monitoring/util/MonitoringAdapterFactory.java
index a847caf..f47e45b 100644
--- a/plugins/org.eclipse.fordiac.ide.monitoring/src-gen/org/eclipse/fordiac/ide/model/monitoring/util/MonitoringAdapterFactory.java
+++ b/plugins/org.eclipse.fordiac.ide.monitoring/src-gen/org/eclipse/fordiac/ide/model/monitoring/util/MonitoringAdapterFactory.java
@@ -42,21 +42,22 @@
* <!-- begin-user-doc --> The <b>Adapter Factory</b> for the model. It provides
* an adapter <code>createXXX</code> method for each class of the model. <!--
* end-user-doc -->
+ *
* @see org.eclipse.fordiac.ide.model.monitoring.MonitoringPackage
* @generated
*/
public class MonitoringAdapterFactory extends AdapterFactoryImpl {
/**
- * The cached model package.
- * <!-- begin-user-doc --> <!-- end-user-doc -->
+ * The cached model package. <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
* @generated
*/
protected static MonitoringPackage modelPackage;
/**
- * Creates an instance of the adapter factory.
- * <!-- begin-user-doc --> <!--
+ * Creates an instance of the adapter factory. <!-- begin-user-doc --> <!--
* end-user-doc -->
+ *
* @generated
*/
public MonitoringAdapterFactory() {
@@ -75,12 +76,12 @@
* @generated
*/
@Override
- public boolean isFactoryForType(Object object) {
+ public boolean isFactoryForType(final Object object) {
if (object == modelPackage) {
return true;
}
if (object instanceof EObject) {
- return ((EObject)object).eClass().getEPackage() == modelPackage;
+ return ((EObject) object).eClass().getEPackage() == modelPackage;
}
return false;
}
@@ -92,106 +93,127 @@
* @generated
*/
protected MonitoringSwitch<Adapter> modelSwitch = new MonitoringSwitch<>() {
- @Override
- public Adapter caseMonitoringElement(MonitoringElement object) {
- return createMonitoringElementAdapter();
- }
- @Override
- public Adapter caseMonitoringAdapterElement(MonitoringAdapterElement object) {
- return createMonitoringAdapterElementAdapter();
- }
- @Override
- public Adapter caseAdapterPortElement(AdapterPortElement object) {
- return createAdapterPortElementAdapter();
- }
- @Override
- public Adapter caseAdapterMonitoringEvent(AdapterMonitoringEvent object) {
- return createAdapterMonitoringEventAdapter();
- }
- @Override
- public Adapter caseAdapterMonitoringVarDeclaration(AdapterMonitoringVarDeclaration object) {
- return createAdapterMonitoringVarDeclarationAdapter();
- }
- @Override
- public Adapter caseIEditPartCreator(IEditPartCreator object) {
- return createIEditPartCreatorAdapter();
- }
- @Override
- public Adapter caseSubAppPortElement(SubAppPortElement object) {
- return createSubAppPortElementAdapter();
- }
- @Override
- public Adapter caseSubappMonitoringElement(SubappMonitoringElement object) {
- return createSubappMonitoringElementAdapter();
- }
- @Override
- public Adapter caseMonitoringBase_IEditPartCreator(IEditPartCreator object) {
- return createMonitoringBase_IEditPartCreatorAdapter();
- }
- @Override
- public Adapter caseMonitoringBaseElement(MonitoringBaseElement object) {
- return createMonitoringBaseElementAdapter();
- }
- @Override
- public Adapter casePortElement(PortElement object) {
- return createPortElementAdapter();
- }
- @Override
- public Adapter caseINamedElement(INamedElement object) {
- return createINamedElementAdapter();
- }
- @Override
- public Adapter caseITypedElement(ITypedElement object) {
- return createITypedElementAdapter();
- }
- @Override
- public Adapter caseConfigurableObject(ConfigurableObject object) {
- return createConfigurableObjectAdapter();
- }
- @Override
- public Adapter caseHiddenElement(HiddenElement object) {
- return createHiddenElementAdapter();
- }
- @Override
- public Adapter caseIInterfaceElement(IInterfaceElement object) {
- return createIInterfaceElementAdapter();
- }
- @Override
- public Adapter caseICallable(ICallable object) {
- return createICallableAdapter();
- }
- @Override
- public Adapter caseEvent(Event object) {
- return createEventAdapter();
- }
- @Override
- public Adapter caseVarDeclaration(VarDeclaration object) {
- return createVarDeclarationAdapter();
- }
- @Override
- public Adapter defaultCase(EObject object) {
- return createEObjectAdapter();
- }
- };
+ @Override
+ public Adapter caseMonitoringElement(final MonitoringElement object) {
+ return createMonitoringElementAdapter();
+ }
+
+ @Override
+ public Adapter caseMonitoringAdapterElement(final MonitoringAdapterElement object) {
+ return createMonitoringAdapterElementAdapter();
+ }
+
+ @Override
+ public Adapter caseAdapterPortElement(final AdapterPortElement object) {
+ return createAdapterPortElementAdapter();
+ }
+
+ @Override
+ public Adapter caseAdapterMonitoringEvent(final AdapterMonitoringEvent object) {
+ return createAdapterMonitoringEventAdapter();
+ }
+
+ @Override
+ public Adapter caseAdapterMonitoringVarDeclaration(final AdapterMonitoringVarDeclaration object) {
+ return createAdapterMonitoringVarDeclarationAdapter();
+ }
+
+ @Override
+ public Adapter caseIEditPartCreator(final IEditPartCreator object) {
+ return createIEditPartCreatorAdapter();
+ }
+
+ @Override
+ public Adapter caseSubAppPortElement(final SubAppPortElement object) {
+ return createSubAppPortElementAdapter();
+ }
+
+ @Override
+ public Adapter caseSubappMonitoringElement(final SubappMonitoringElement object) {
+ return createSubappMonitoringElementAdapter();
+ }
+
+ @Override
+ public Adapter caseMonitoringBase_IEditPartCreator(final IEditPartCreator object) {
+ return createMonitoringBase_IEditPartCreatorAdapter();
+ }
+
+ @Override
+ public Adapter caseMonitoringBaseElement(final MonitoringBaseElement object) {
+ return createMonitoringBaseElementAdapter();
+ }
+
+ @Override
+ public Adapter casePortElement(final PortElement object) {
+ return createPortElementAdapter();
+ }
+
+ @Override
+ public Adapter caseINamedElement(final INamedElement object) {
+ return createINamedElementAdapter();
+ }
+
+ @Override
+ public Adapter caseITypedElement(final ITypedElement object) {
+ return createITypedElementAdapter();
+ }
+
+ @Override
+ public Adapter caseConfigurableObject(final ConfigurableObject object) {
+ return createConfigurableObjectAdapter();
+ }
+
+ @Override
+ public Adapter caseHiddenElement(final HiddenElement object) {
+ return createHiddenElementAdapter();
+ }
+
+ @Override
+ public Adapter caseIInterfaceElement(final IInterfaceElement object) {
+ return createIInterfaceElementAdapter();
+ }
+
+ @Override
+ public Adapter caseICallable(final ICallable object) {
+ return createICallableAdapter();
+ }
+
+ @Override
+ public Adapter caseEvent(final Event object) {
+ return createEventAdapter();
+ }
+
+ @Override
+ public Adapter caseVarDeclaration(final VarDeclaration object) {
+ return createVarDeclarationAdapter();
+ }
+
+ @Override
+ public Adapter defaultCase(final EObject object) {
+ return createEObjectAdapter();
+ }
+ };
/**
- * Creates an adapter for the <code>target</code>.
- * <!-- begin-user-doc --> <!--
+ * Creates an adapter for the <code>target</code>. <!-- begin-user-doc --> <!--
* end-user-doc -->
+ *
* @param target the object to adapt.
* @return the adapter for the <code>target</code>.
* @generated
*/
@Override
- public Adapter createAdapter(Notifier target) {
- return modelSwitch.doSwitch((EObject)target);
+ public Adapter createAdapter(final Notifier target) {
+ return modelSwitch.doSwitch((EObject) target);
}
/**
- * Creates a new adapter for an object of class '{@link org.eclipse.fordiac.ide.deployment.monitoringbase.MonitoringBaseElement <em>Element</em>}'.
- * <!-- begin-user-doc --> This default implementation
+ * Creates a new adapter for an object of class
+ * '{@link org.eclipse.fordiac.ide.deployment.monitoringbase.MonitoringBaseElement
+ * <em>Element</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.fordiac.ide.deployment.monitoringbase.MonitoringBaseElement
* @generated
@@ -201,10 +223,12 @@
}
/**
- * Creates a new adapter for an object of class '{@link org.eclipse.fordiac.ide.model.monitoring.MonitoringElement <em>Element</em>}'.
- * <!-- begin-user-doc --> This default implementation
+ * Creates a new adapter for an object of class
+ * '{@link org.eclipse.fordiac.ide.model.monitoring.MonitoringElement
+ * <em>Element</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.fordiac.ide.model.monitoring.MonitoringElement
* @generated
@@ -214,11 +238,13 @@
}
/**
- * Creates a new adapter for an object of class '{@link org.eclipse.fordiac.ide.model.monitoring.MonitoringAdapterElement <em>Adapter Element</em>}'.
- * <!-- begin-user-doc --> This default
+ * Creates a new adapter for an object of class
+ * '{@link org.eclipse.fordiac.ide.model.monitoring.MonitoringAdapterElement
+ * <em>Adapter Element</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.fordiac.ide.model.monitoring.MonitoringAdapterElement
* @generated
@@ -228,10 +254,12 @@
}
/**
- * Creates a new adapter for an object of class '{@link org.eclipse.fordiac.ide.gef.editparts.IEditPartCreator <em>IEdit Part Creator</em>}'.
- * <!-- begin-user-doc --> This default implementation returns
+ * Creates a new adapter for an object of class
+ * '{@link org.eclipse.fordiac.ide.gef.editparts.IEditPartCreator <em>IEdit Part
+ * Creator</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.fordiac.ide.gef.editparts.IEditPartCreator
* @generated
@@ -241,10 +269,12 @@
}
/**
- * Creates a new adapter for an object of class '{@link org.eclipse.fordiac.ide.model.monitoring.SubAppPortElement <em>Sub App Port Element</em>}'.
- * <!-- begin-user-doc --> This default implementation
+ * Creates a new adapter for an object of class
+ * '{@link org.eclipse.fordiac.ide.model.monitoring.SubAppPortElement <em>Sub
+ * App Port Element</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.fordiac.ide.model.monitoring.SubAppPortElement
* @generated
@@ -254,11 +284,13 @@
}
/**
- * Creates a new adapter for an object of class '{@link org.eclipse.fordiac.ide.model.monitoring.SubappMonitoringElement <em>Subapp Monitoring Element</em>}'.
- * <!-- begin-user-doc --> This default
+ * Creates a new adapter for an object of class
+ * '{@link org.eclipse.fordiac.ide.model.monitoring.SubappMonitoringElement
+ * <em>Subapp Monitoring Element</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.fordiac.ide.model.monitoring.SubappMonitoringElement
* @generated
@@ -268,10 +300,12 @@
}
/**
- * Creates a new adapter for an object of class '{@link org.eclipse.fordiac.ide.gef.editparts.IEditPartCreator <em>IEdit Part Creator</em>}'.
- * <!-- begin-user-doc --> This default implementation returns
+ * Creates a new adapter for an object of class
+ * '{@link org.eclipse.fordiac.ide.gef.editparts.IEditPartCreator <em>IEdit Part
+ * Creator</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.fordiac.ide.gef.editparts.IEditPartCreator
* @generated
@@ -281,10 +315,12 @@
}
/**
- * Creates a new adapter for an object of class '{@link org.eclipse.fordiac.ide.deployment.monitoringbase.PortElement <em>Port Element</em>}'.
- * <!-- begin-user-doc --> This default implementation
+ * Creates a new adapter for an object of class
+ * '{@link org.eclipse.fordiac.ide.deployment.monitoringbase.PortElement
+ * <em>Port Element</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.fordiac.ide.deployment.monitoringbase.PortElement
* @generated
@@ -294,11 +330,13 @@
}
/**
- * Creates a new adapter for an object of class '{@link org.eclipse.fordiac.ide.model.monitoring.AdapterPortElement <em>Adapter Port Element</em>}'.
- * <!-- begin-user-doc --> This default
+ * Creates a new adapter for an object of class
+ * '{@link org.eclipse.fordiac.ide.model.monitoring.AdapterPortElement
+ * <em>Adapter Port Element</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.fordiac.ide.model.monitoring.AdapterPortElement
* @generated
@@ -308,11 +346,13 @@
}
/**
- * Creates a new adapter for an object of class '{@link org.eclipse.fordiac.ide.model.monitoring.AdapterMonitoringEvent <em>Adapter Monitoring Event</em>}'.
- * <!-- begin-user-doc --> This default
+ * Creates a new adapter for an object of class
+ * '{@link org.eclipse.fordiac.ide.model.monitoring.AdapterMonitoringEvent
+ * <em>Adapter Monitoring Event</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.fordiac.ide.model.monitoring.AdapterMonitoringEvent
* @generated
@@ -322,11 +362,13 @@
}
/**
- * Creates a new adapter for an object of class '{@link org.eclipse.fordiac.ide.model.monitoring.AdapterMonitoringVarDeclaration <em>Adapter Monitoring Var Declaration</em>}'.
- * <!-- begin-user-doc --> This
+ * Creates a new adapter for an object of class
+ * '{@link org.eclipse.fordiac.ide.model.monitoring.AdapterMonitoringVarDeclaration
+ * <em>Adapter Monitoring Var Declaration</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.fordiac.ide.model.monitoring.AdapterMonitoringVarDeclaration
* @generated
@@ -336,10 +378,12 @@
}
/**
- * Creates a new adapter for an object of class '{@link org.eclipse.fordiac.ide.model.libraryElement.INamedElement <em>INamed Element</em>}'.
- * <!-- begin-user-doc --> This default implementation returns
+ * Creates a new adapter for an object of class
+ * '{@link org.eclipse.fordiac.ide.model.libraryElement.INamedElement <em>INamed
+ * Element</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.fordiac.ide.model.libraryElement.INamedElement
* @generated
@@ -349,10 +393,12 @@
}
/**
- * Creates a new adapter for an object of class '{@link org.eclipse.fordiac.ide.model.libraryElement.ITypedElement <em>ITyped Element</em>}'.
- * <!-- begin-user-doc --> This default implementation returns
+ * Creates a new adapter for an object of class
+ * '{@link org.eclipse.fordiac.ide.model.libraryElement.ITypedElement <em>ITyped
+ * Element</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.fordiac.ide.model.libraryElement.ITypedElement
* @generated
@@ -362,11 +408,13 @@
}
/**
- * Creates a new adapter for an object of class '{@link org.eclipse.fordiac.ide.model.libraryElement.ConfigurableObject <em>Configurable Object</em>}'.
- * <!-- begin-user-doc --> This default
+ * Creates a new adapter for an object of class
+ * '{@link org.eclipse.fordiac.ide.model.libraryElement.ConfigurableObject
+ * <em>Configurable Object</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.fordiac.ide.model.libraryElement.ConfigurableObject
* @generated
@@ -376,10 +424,12 @@
}
/**
- * Creates a new adapter for an object of class '{@link org.eclipse.fordiac.ide.model.libraryElement.HiddenElement <em>Hidden Element</em>}'.
- * <!-- begin-user-doc --> This default implementation returns
+ * Creates a new adapter for an object of class
+ * '{@link org.eclipse.fordiac.ide.model.libraryElement.HiddenElement <em>Hidden
+ * Element</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.fordiac.ide.model.libraryElement.HiddenElement
* @generated
@@ -389,11 +439,13 @@
}
/**
- * Creates a new adapter for an object of class '{@link org.eclipse.fordiac.ide.model.libraryElement.IInterfaceElement <em>IInterface Element</em>}'.
- * <!-- begin-user-doc --> This default
+ * Creates a new adapter for an object of class
+ * '{@link org.eclipse.fordiac.ide.model.libraryElement.IInterfaceElement
+ * <em>IInterface Element</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.fordiac.ide.model.libraryElement.IInterfaceElement
* @generated
@@ -403,10 +455,12 @@
}
/**
- * Creates a new adapter for an object of class '{@link org.eclipse.fordiac.ide.model.libraryElement.ICallable <em>ICallable</em>}'.
- * <!-- begin-user-doc --> This default implementation
+ * Creates a new adapter for an object of class
+ * '{@link org.eclipse.fordiac.ide.model.libraryElement.ICallable
+ * <em>ICallable</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.fordiac.ide.model.libraryElement.ICallable
* @generated
@@ -416,10 +470,12 @@
}
/**
- * Creates a new adapter for an object of class '{@link org.eclipse.fordiac.ide.model.libraryElement.Event <em>Event</em>}'.
+ * Creates a new adapter for an object of class
+ * '{@link org.eclipse.fordiac.ide.model.libraryElement.Event <em>Event</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.fordiac.ide.model.libraryElement.Event
* @generated
@@ -429,10 +485,12 @@
}
/**
- * Creates a new adapter for an object of class '{@link org.eclipse.fordiac.ide.model.libraryElement.VarDeclaration <em>Var Declaration</em>}'.
- * <!-- begin-user-doc --> This default implementation
+ * Creates a new adapter for an object of class
+ * '{@link org.eclipse.fordiac.ide.model.libraryElement.VarDeclaration <em>Var
+ * Declaration</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.fordiac.ide.model.libraryElement.VarDeclaration
* @generated
@@ -442,9 +500,9 @@
}
/**
- * Creates a new adapter for the default case.
- * <!-- begin-user-doc --> This
+ * Creates a new adapter for the default case. <!-- begin-user-doc --> This
* default implementation returns null. <!-- end-user-doc -->
+ *
* @return the new adapter.
* @generated
*/
diff --git a/plugins/org.eclipse.fordiac.ide.monitoring/src/org/eclipse/fordiac/ide/monitoring/DeviceMonitoringHandler.java b/plugins/org.eclipse.fordiac.ide.monitoring/src/org/eclipse/fordiac/ide/monitoring/DeviceMonitoringHandler.java
index f81b90b..46d6e4d 100644
--- a/plugins/org.eclipse.fordiac.ide.monitoring/src/org/eclipse/fordiac/ide/monitoring/DeviceMonitoringHandler.java
+++ b/plugins/org.eclipse.fordiac.ide.monitoring/src/org/eclipse/fordiac/ide/monitoring/DeviceMonitoringHandler.java
@@ -86,7 +86,7 @@
try {
Thread.sleep(pollingIntervall);
} catch (final InterruptedException e) {
- Thread.currentThread().interrupt(); // mark interruption
+ Thread.currentThread().interrupt(); // mark interruption
FordiacLogHelper.logError(e.getMessage(), e);
}
if (devInteractor.isConnected()) {
@@ -100,8 +100,8 @@
}
} else {
setRunning(false);
+ clearMonitoredElements();
}
-
}
}
}
@@ -290,6 +290,10 @@
} catch (final DeploymentException e) {
// we don't need to do anything here
}
+ clearMonitoredElements();
+ }
+
+ private void clearMonitoredElements() {
systemMonData.getMonitoredElements().stream()
.filter(el -> (el.getPort().getDevice().equals(device) && (el instanceof MonitoringElement)))
.forEach(el -> ((MonitoringElement) el).setCurrentValue("")); //$NON-NLS-1$
diff --git a/plugins/org.eclipse.fordiac.ide.monitoring/src/org/eclipse/fordiac/ide/monitoring/MonitoringManager.java b/plugins/org.eclipse.fordiac.ide.monitoring/src/org/eclipse/fordiac/ide/monitoring/MonitoringManager.java
index 6b8be37..64e0992 100644
--- a/plugins/org.eclipse.fordiac.ide.monitoring/src/org/eclipse/fordiac/ide/monitoring/MonitoringManager.java
+++ b/plugins/org.eclipse.fordiac.ide.monitoring/src/org/eclipse/fordiac/ide/monitoring/MonitoringManager.java
@@ -1,7 +1,7 @@
/*******************************************************************************
- * Copyright (c) 2012 - 2023 Profactor GmbH, AIT, TU Wien ACIN, fortiss GmbH,
- * Johannes Kepler University
- * Martin Erich Jobst
+ * Copyright (c) 2012, 2024 Profactor GmbH, AIT, TU Wien ACIN, fortiss GmbH,
+ * Johannes Kepler University
+ * Martin Erich Jobst
*
* This program and the accompanying materials are made available under the
* terms of the Eclipse Public License 2.0 which is available at
@@ -209,16 +209,15 @@
}
public Collection<MonitoringBaseElement> getElementsToMonitor(final AutomationSystem sys) {
- if(sys != null) {
+ if (sys != null) {
final SystemMonitoringData sysData = systemMonitoringData.get(sys);
- if(sysData != null) {
+ if (sysData != null) {
return sysData.getMonitoredElements();
}
}
return Collections.emptyList();
}
-
/**
* Enable system.
*
@@ -269,11 +268,13 @@
return getSystemMonitoringData(system).isMonitoringForSystemEnabled();
}
- /** Contains system.
+ /**
+ * Contains system.
*
* @param system the system
*
- * @return true, if successful */
+ * @return true, if successful
+ */
public boolean monitoringForSystemEnabled(final AutomationSystem system) {
final SystemMonitoringData data = getSystemMonitoringData(system);
return data.isMonitoringForSystemEnabled();
@@ -291,9 +292,7 @@
public void triggerEvent(final IInterfaceElement interfaceElement) {
final MonitoringBaseElement element = getMonitoringElement(interfaceElement);
- if (element instanceof MonitoringElement) {
- final MonitoringElement monitoringElement = (MonitoringElement) element;
-
+ if (element instanceof final MonitoringElement monitoringElement) {
final List<MonitoringElement> elements = new ArrayList<>();
final SystemMonitoringData data = getSystemMonitoringData(monitoringElement.getPort().getSystem());
@@ -312,7 +311,6 @@
elements.add((MonitoringElement) element);
}
-
for (final MonitoringElement me : elements) {
final IDeviceManagementInteractor devMgmInteractor = data.getDevMgmInteractor(me.getPort().getDevice());
if (devMgmInteractor != null) {
@@ -344,7 +342,7 @@
final IInterfaceElement interfaceElement = element.getPort().getInterfaceElement();
if (interfaceElement instanceof VarDeclaration) {
try {
- value = VariableOperations.newVariable((VarDeclaration) interfaceElement, value).toString();
+ value = VariableOperations.newVariable((VarDeclaration) interfaceElement, value).toString(false);
} catch (final Exception e) {
showInvalidValueErrorMsg(element, value);
return;
@@ -352,8 +350,7 @@
}
final SystemMonitoringData data = getSystemMonitoringData(automationSystem);
- final IDeviceManagementInteractor devMgmInteractor = data
- .getDevMgmInteractor(device);
+ final IDeviceManagementInteractor devMgmInteractor = data.getDevMgmInteractor(device);
if (devMgmInteractor != null) {
writeElements(element, value, devMgmInteractor);
@@ -445,7 +442,7 @@
private static void showSystemNotFoundErrorMsg(final MonitoringElement element) {
MessageDialog.openError(Display.getDefault().getActiveShell(), "Error", //$NON-NLS-1$
- "System could not be found for FB port: " + element.getPort() + "."); //$NON-NLS-1$//$NON-NLS-2$
+ "System could not be found for FB port: " + element.getPort() + "."); //$NON-NLS-1$//$NON-NLS-2$
}
private static void showInvalidValueErrorMsg(final MonitoringElement element, final String value) {
diff --git a/plugins/org.eclipse.fordiac.ide.product/org.eclipse.fordiac.ide.product.target b/plugins/org.eclipse.fordiac.ide.product/org.eclipse.fordiac.ide.product.target
index 05c9774..1b6248f 100644
--- a/plugins/org.eclipse.fordiac.ide.product/org.eclipse.fordiac.ide.product.target
+++ b/plugins/org.eclipse.fordiac.ide.product/org.eclipse.fordiac.ide.product.target
@@ -3,17 +3,17 @@
<target name="4diac-ide Target" sequenceNumber="21">
<locations>
<location includeAllPlatforms="false" includeConfigurePhase="true" includeMode="planner" includeSource="true" type="InstallableUnit">
- <repository location="https://download.eclipse.org/elk/updates/nightly"/>
- <unit id="org.eclipse.elk.libavoid.feature.feature.group" version="0.0.0"/>
- <unit id="org.eclipse.elk.algorithms.feature.feature.group" version="0.0.0"/>
- <unit id="org.eclipse.elk.algorithms.feature.source.feature.group" version="0.0.0"/>
- <unit id="org.eclipse.elk.feature.feature.group" version="0.0.0"/>
- <unit id="org.eclipse.elk.feature.source.feature.group" version="0.0.0"/>
- <unit id="org.eclipse.elk.libavoid.feature.source.feature.group" version="0.0.0"/>
+ <repository location="https://download.eclipse.org/elk/updates/releases/0.9.0/"/>
+ <unit id="org.eclipse.elk.algorithms.feature.feature.group" version="0.9.0"/>
+ <unit id="org.eclipse.elk.algorithms.feature.source.feature.group" version="0.9.0"/>
+ <unit id="org.eclipse.elk.feature.feature.group" version="0.9.0"/>
+ <unit id="org.eclipse.elk.feature.source.feature.group" version="0.9.0"/>
+ <unit id="org.eclipse.elk.libavoid.feature.feature.group" version="0.9.0"/>
+ <unit id="org.eclipse.elk.libavoid.feature.source.feature.group" version="0.9.0"/>
</location>
<location includeAllPlatforms="false" includeConfigurePhase="true" includeMode="planner" includeSource="true" type="InstallableUnit">
- <repository location="https://download.eclipse.org/nebula/releases/3.1.0/"/>
- <unit id="org.eclipse.nebula.feature.feature.group" version="3.0.0.202312260654"/>
+ <repository location="https://download.eclipse.org/nebula/releases/latest"/>
+ <unit id="org.eclipse.nebula.feature.feature.group" version="3.1.1.202402011804"/>
</location>
<location includeAllPlatforms="false" includeConfigurePhase="true" includeMode="planner" includeSource="true" type="InstallableUnit">
<repository location="https://download.eclipse.org/tools/gef/classic/nightly/latest/"/>
@@ -29,40 +29,78 @@
<unit id="org.eclipse.gef.source.feature.group" version="0.0.0"/>
</location>
<location includeAllPlatforms="false" includeConfigurePhase="true" includeMode="planner" includeSource="true" type="InstallableUnit">
- <repository location="https://download.eclipse.org/eclipse/updates/4.30"/>
- <unit id="org.eclipse.pde.feature.group" version="3.15.200.v20231201-0110"/>
- <unit id="org.eclipse.platform.ide" version="4.30.0.I20231201-0110"/>
+ <repository location="https://download.eclipse.org/eclipse/updates/4.31"/>
+ <unit id="org.eclipse.pde.feature.group" version="3.15.300.v20240229-0520"/>
+ <unit id="org.eclipse.platform.ide" version="4.31.0.I20240229-0520"/>
</location>
<location includeAllPlatforms="false" includeConfigurePhase="true" includeMode="planner" includeSource="true" type="InstallableUnit">
<repository location="http://download.eclipse.org/modeling/emf/compare/updates/releases/3.3"/>
- <unit id="org.eclipse.emf.compare.egit.feature.group" version="3.3.23.202311200811"/>
- <unit id="org.eclipse.emf.compare.egit.source.feature.group" version="3.3.23.202311200811"/>
- <unit id="org.eclipse.emf.compare.feature.group" version="3.3.23.202311200811"/>
- <unit id="org.eclipse.emf.compare.ide.ui.feature.group" version="3.3.23.202311200811"/>
- <unit id="org.eclipse.emf.compare.ide.ui.source.feature.group" version="3.3.23.202311200811"/>
- <unit id="org.eclipse.emf.compare.rcp.ui.feature.group" version="3.3.23.202311200811"/>
- <unit id="org.eclipse.emf.compare.rcp.ui.source.feature.group" version="3.3.23.202311200811"/>
- <unit id="org.eclipse.emf.compare.source.feature.group" version="3.3.23.202311200811"/>
+ <unit id="org.eclipse.emf.compare.egit.feature.group" version="3.3.24.202401051648"/>
+ <unit id="org.eclipse.emf.compare.egit.source.feature.group" version="3.3.24.202401051648"/>
+ <unit id="org.eclipse.emf.compare.feature.group" version="3.3.24.202401051648"/>
+ <unit id="org.eclipse.emf.compare.ide.ui.feature.group" version="3.3.24.202401051648"/>
+ <unit id="org.eclipse.emf.compare.ide.ui.source.feature.group" version="3.3.24.202401051648"/>
+ <unit id="org.eclipse.emf.compare.rcp.ui.feature.group" version="3.3.24.202401051648"/>
+ <unit id="org.eclipse.emf.compare.rcp.ui.source.feature.group" version="3.3.24.202401051648"/>
+ <unit id="org.eclipse.emf.compare.source.feature.group" version="3.3.24.202401051648"/>
</location>
<location includeAllPlatforms="false" includeConfigurePhase="true" includeMode="planner" includeSource="true" type="InstallableUnit">
- <repository location="https://download.eclipse.org/nattable/releases/2.2.1/repository/"/>
- <unit id="org.eclipse.nebula.widgets.nattable.core.feature.feature.group" version="2.2.1.202311151329"/>
- <unit id="org.eclipse.nebula.widgets.nattable.core.source.feature.feature.group" version="2.2.1.202311151329"/>
+ <repository location="https://download.eclipse.org/nattable/releases/2.3.0/repository/"/>
+ <unit id="org.eclipse.nebula.widgets.nattable.core.feature.feature.group" version="2.3.0.202402191815"/>
+ <unit id="org.eclipse.nebula.widgets.nattable.core.source.feature.feature.group" version="2.3.0.202402191815"/>
</location>
<location includeAllPlatforms="false" includeConfigurePhase="true" includeMode="planner" includeSource="true" type="InstallableUnit">
- <repository location="https://download.eclipse.org/releases/2023-12"/>
- <unit id="org.eclipse.egit.feature.group" version="6.8.0.202311291450-r"/>
- <unit id="org.eclipse.emf.sdk.feature.group" version="2.36.0.v20231107-0612"/>
- <unit id="org.eclipse.ocl.all.sdk.feature.group" version="5.19.0.v20231129-1236"/>
- <unit id="org.eclipse.sirius.properties.feature.feature.group" version="7.3.0.202311270829"/>
- <unit id="org.eclipse.sirius.samples.feature.group" version="7.3.0.202311270829"/>
- <unit id="org.eclipse.sirius.specifier.feature.group" version="7.3.0.202311270829"/>
- <unit id="org.eclipse.sirius.specifier.properties.feature.feature.group" version="7.3.0.202311270829"/>
+ <repository location="https://download.eclipse.org/releases/2024-03"/>
+ <unit id="javax.activation" version="1.2.2.v20221203-1659"/>
+ <unit id="org.eclipse.egit.feature.group" version="6.9.0.202403050737-r"/>
+ <unit id="org.eclipse.emf.sdk.feature.group" version="2.37.0.v20240203-1010"/>
+ <unit id="org.eclipse.ocl.all.sdk.feature.group" version="5.20.0.v20240305-1416"/>
+ <unit id="org.eclipse.sirius.properties.feature.feature.group" version="7.4.0.202403051613"/>
+ <unit id="org.eclipse.sirius.samples.feature.group" version="7.4.0.202403051613"/>
+ <unit id="org.eclipse.sirius.specifier.feature.group" version="7.4.0.202403051613"/>
+ <unit id="org.eclipse.sirius.specifier.properties.feature.feature.group" version="7.4.0.202403051613"/>
<unit id="org.eclipse.swtbot.eclipse.feature.group" version="4.1.0.202306071420"/>
<unit id="org.eclipse.swtbot.eclipse.gef.feature.group" version="4.1.0.202306071420"/>
<unit id="org.eclipse.swtbot.feature.group" version="4.1.0.202306071420"/>
<unit id="org.eclipse.swtbot.ide.feature.group" version="4.1.0.202306071420"/>
- <unit id="org.eclipse.xtext.sdk.feature.group" version="2.33.0.v20231121-0955"/>
+ <unit id="org.eclipse.xtext.sdk.feature.group" version="2.34.0.v20240227-0940"/>
+ </location>
+ <location includeDependencyDepth="infinite" includeDependencyScopes="compile" includeSource="true" missingManifest="generate" type="Maven">
+
+ <feature id="org.eclipse.fordiac.ide.milo" label="Milo Dependencies" provider-name="Eclipse 4diac" version="2.0.1.qualifier">
+
+
+
+
+
+
+
+
+ <description url="http://www.example.com/description">
+ [Enter Feature Description here.]
+ </description>
+ <copyright url="http://www.example.com/copyright">
+ [Enter Copyright Description here.]
+ </copyright>
+ <license url="http://www.example.com/license">
+ [Enter License Description here.]
+ </license>
+ <plugin id="javax.activation" version="0.0.0"/>
+ </feature>
+ <dependencies>
+ <dependency>
+ <groupId>org.eclipse.milo</groupId>
+ <artifactId>sdk-client</artifactId>
+ <version>0.6.12</version>
+ <type>jar</type>
+ </dependency>
+ <dependency>
+ <groupId>org.slf4j</groupId>
+ <artifactId>slf4j-simple</artifactId>
+ <version>1.7.32</version>
+ <type>jar</type>
+ </dependency>
+ </dependencies>
</location>
</locations>
</target>
\ No newline at end of file
diff --git a/plugins/org.eclipse.fordiac.ide.product/pom.xml b/plugins/org.eclipse.fordiac.ide.product/pom.xml
index 0e3fee1..0b64a58 100644
--- a/plugins/org.eclipse.fordiac.ide.product/pom.xml
+++ b/plugins/org.eclipse.fordiac.ide.product/pom.xml
@@ -6,7 +6,7 @@
<relativePath>../../pom.xml</relativePath>
<groupId>org.eclipse.fordiac</groupId>
<artifactId>parent</artifactId>
- <version>2.0.1-SNAPSHOT</version>
+ <version>3.0.0-SNAPSHOT</version>
</parent>
@@ -34,7 +34,7 @@
<artifact>
<groupId>org.eclipse.fordiac</groupId>
<artifactId>org.eclipse.fordiac.ide.product</artifactId>
- <version>2.0.1-SNAPSHOT</version>
+ <version>3.0.0-SNAPSHOT</version>
</artifact>
</target>
<filters>
diff --git a/plugins/org.eclipse.fordiac.ide.resourceediting/META-INF/MANIFEST.MF b/plugins/org.eclipse.fordiac.ide.resourceediting/META-INF/MANIFEST.MF
index 4e395f2..f4c2cf7 100644
--- a/plugins/org.eclipse.fordiac.ide.resourceediting/META-INF/MANIFEST.MF
+++ b/plugins/org.eclipse.fordiac.ide.resourceediting/META-INF/MANIFEST.MF
@@ -14,7 +14,7 @@
org.eclipse.fordiac.ide.model.ui
Bundle-Vendor: Eclipse 4diac
Bundle-ActivationPolicy: lazy
-Bundle-Version: 2.0.0.qualifier
+Bundle-Version: 3.0.0.qualifier
Bundle-Name: Resource Editing
Bundle-ManifestVersion: 2
Bundle-SymbolicName: org.eclipse.fordiac.ide.resourceediting;singleton:=true
diff --git a/plugins/org.eclipse.fordiac.ide.runtime/META-INF/MANIFEST.MF b/plugins/org.eclipse.fordiac.ide.runtime/META-INF/MANIFEST.MF
index fd8695c..cc120c7 100644
--- a/plugins/org.eclipse.fordiac.ide.runtime/META-INF/MANIFEST.MF
+++ b/plugins/org.eclipse.fordiac.ide.runtime/META-INF/MANIFEST.MF
@@ -2,7 +2,7 @@
Bundle-ManifestVersion: 2
Bundle-Name: Runtime
Bundle-SymbolicName: org.eclipse.fordiac.ide.runtime;singleton:=true
-Bundle-Version: 2.0.0.qualifier
+Bundle-Version: 3.0.0.qualifier
Bundle-Vendor: Eclipse 4diac
Export-Package: org.eclipse.fordiac.ide.runtime,
org.eclipse.fordiac.ide.runtime.views
@@ -18,6 +18,4 @@
org.eclipse.e4.ui.di
Bundle-RequiredExecutionEnvironment: JavaSE-17
Bundle-ActivationPolicy: lazy
-Import-Package: javax.annotation;version="1.0.0";resolution:=optional,
- javax.inject;version="1.0.0"
Automatic-Module-Name: org.eclipse.fordiac.ide.runtime
diff --git a/plugins/org.eclipse.fordiac.ide.runtime/src/org/eclipse/fordiac/ide/runtime/Messages.java b/plugins/org.eclipse.fordiac.ide.runtime/src/org/eclipse/fordiac/ide/runtime/Messages.java
new file mode 100644
index 0000000..92d90b6
--- /dev/null
+++ b/plugins/org.eclipse.fordiac.ide.runtime/src/org/eclipse/fordiac/ide/runtime/Messages.java
@@ -0,0 +1,36 @@
+/*******************************************************************************
+ * Copyright (c) 2024 Johannes Kepler University Linz
+ *
+ * This program and the accompanying materials are made available under the
+ * terms of the Eclipse Public License 2.0 which is available at
+ * http://www.eclipse.org/legal/epl-2.0.
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ * Contributors:
+ * Alois Zoitl - initial API and implementation and/or initial documentation
+ *******************************************************************************/
+package org.eclipse.fordiac.ide.runtime;
+
+import org.eclipse.osgi.util.NLS;
+
+/**
+ * The Class Messages.
+ */
+@SuppressWarnings("squid:S3008") // tell sonar the java naming convention does not make sense for this class
+public final class Messages extends NLS {
+ private static final String BUNDLE_NAME = "org.eclipse.fordiac.ide.runtime.messages"; //$NON-NLS-1$
+
+ public static String RuntimeLaunchTab_Port;
+
+ public static String RuntimeLaunchTab_ERROR_WrongPort;
+
+ static {
+ // initialize resource bundle
+ NLS.initializeMessages(BUNDLE_NAME, Messages.class);
+ }
+
+ private Messages() {
+ // empty private constructor
+ }
+}
diff --git a/plugins/org.eclipse.fordiac.ide.runtime/src/org/eclipse/fordiac/ide/runtime/RuntimeLaunchTab.java b/plugins/org.eclipse.fordiac.ide.runtime/src/org/eclipse/fordiac/ide/runtime/RuntimeLaunchTab.java
new file mode 100644
index 0000000..c9e0ece
--- /dev/null
+++ b/plugins/org.eclipse.fordiac.ide.runtime/src/org/eclipse/fordiac/ide/runtime/RuntimeLaunchTab.java
@@ -0,0 +1,82 @@
+/*******************************************************************************
+ * Copyright (c) 2024 Johannes Kepler University Linz
+ *
+ * This program and the accompanying materials are made available under the
+ * terms of the Eclipse Public License 2.0 which is available at
+ * http://www.eclipse.org/legal/epl-2.0.
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ * Contributors:
+ * Alois Zoitl - initial API and implementation and/or initial documentation
+ *******************************************************************************/
+package org.eclipse.fordiac.ide.runtime;
+
+import org.eclipse.debug.core.ILaunchConfiguration;
+import org.eclipse.debug.core.ILaunchConfigurationWorkingCopy;
+import org.eclipse.debug.ui.AbstractLaunchConfigurationTab;
+import org.eclipse.jface.layout.GridDataFactory;
+import org.eclipse.swt.SWT;
+import org.eclipse.swt.events.VerifyEvent;
+import org.eclipse.swt.layout.GridData;
+import org.eclipse.swt.widgets.Composite;
+import org.eclipse.swt.widgets.Label;
+import org.eclipse.swt.widgets.Text;
+
+public abstract class RuntimeLaunchTab extends AbstractLaunchConfigurationTab {
+
+ protected static final String ATTR_LOCATION = "org.eclipse.ui.externaltools.ATTR_LOCATION"; //$NON-NLS-1$
+ protected static final String ATTR_WORKING_DIRECTORY = "org.eclipse.ui.externaltools.ATTR_WORKING_DIRECTORY"; //$NON-NLS-1$
+ protected static final String ATTR_BUILD_SCOPE = "org.eclipse.ui.externaltools.ATTR_LAUNCH_CONFIGURATION_BUILD_SCOPE"; //$NON-NLS-1$
+
+ private Text portField;
+
+ @Override
+ public void setDefaults(final ILaunchConfigurationWorkingCopy configuration) {
+ configuration.removeAttribute(LaunchRuntimeUtils.ATTR_TOOL_ARGUMENTS);
+ configuration.removeAttribute(ATTR_WORKING_DIRECTORY);
+ configuration.setAttribute(ATTR_BUILD_SCOPE, "NONE"); //$NON-NLS-1$
+ }
+
+ @Override
+ public boolean isValid(final ILaunchConfiguration launchConfig) {
+ setErrorMessage(null);
+ try {
+ final int port = Integer.parseInt(portField.getText());
+ if ((port < 1024) || (port > 65535)) {
+ throw new NumberFormatException();
+ }
+ } catch (final NumberFormatException nfe) {
+ setErrorMessage(Messages.RuntimeLaunchTab_ERROR_WrongPort);
+ return false;
+ }
+ return true;
+ }
+
+ protected String getPortValue() {
+ return portField.getText();
+ }
+
+ protected void setPortValue(final String portValue) {
+ portField.setText(portValue);
+ }
+
+ protected void createPortSelection(final Composite parent) {
+ final Label label = new Label(parent, SWT.NONE);
+ label.setText(Messages.RuntimeLaunchTab_Port);
+ portField = new Text(parent, SWT.BORDER);
+ GridDataFactory.fillDefaults().align(GridData.FILL, GridData.CENTER).applyTo(portField);
+ portField.addVerifyListener(RuntimeLaunchTab::ensureTextIsValidPortNumber);
+ portField.addModifyListener(ev -> scheduleUpdateJob());
+ }
+
+ private static void ensureTextIsValidPortNumber(final VerifyEvent e) {
+ final String portFieldValue = e.text;
+ e.doit = portFieldValue.matches("\\d*"); //$NON-NLS-1$
+ if (e.doit && !portFieldValue.isBlank()) {
+ final int port = Integer.parseInt(portFieldValue);
+ e.doit = port < 65535;
+ }
+ }
+
+}
diff --git a/plugins/org.eclipse.fordiac.ide.runtime/src/org/eclipse/fordiac/ide/runtime/messages.properties b/plugins/org.eclipse.fordiac.ide.runtime/src/org/eclipse/fordiac/ide/runtime/messages.properties
new file mode 100644
index 0000000..9c7c367
--- /dev/null
+++ b/plugins/org.eclipse.fordiac.ide.runtime/src/org/eclipse/fordiac/ide/runtime/messages.properties
@@ -0,0 +1,19 @@
+ ###############################################################################
+ # Copyright (c) 2008 - 2010 Profactor GmbH
+ # 2020 Andrea Zoitl
+ #
+ # This program and the accompanying materials are made available under the
+ # terms of the Eclipse Public License 2.0 which is available at
+ # http://www.eclipse.org/legal/epl-2.0.
+ #
+ # SPDX-License-Identifier: EPL-2.0
+ #
+ # Contributors:
+ # Martijn Rooker, Gerhard Ebenhofer, Thomas Strasser
+ # - initial API and implementation and/or initial documentation
+ # Andrea Zoitl
+ # - externalized all translatable strings
+ ###############################################################################
+RuntimeLaunchTab_Port=Port:
+
+RuntimeLaunchTab_ERROR_WrongPort=Wrong Port number. Only values allowed between 1024 and 65535.
diff --git a/plugins/org.eclipse.fordiac.ide.structuredtext.mwe/META-INF/MANIFEST.MF b/plugins/org.eclipse.fordiac.ide.structuredtext.mwe/META-INF/MANIFEST.MF
index d66226b..a7900f2 100644
--- a/plugins/org.eclipse.fordiac.ide.structuredtext.mwe/META-INF/MANIFEST.MF
+++ b/plugins/org.eclipse.fordiac.ide.structuredtext.mwe/META-INF/MANIFEST.MF
@@ -3,7 +3,7 @@
Bundle-ManifestVersion: 2
Bundle-Name: org.eclipse.fordiac.ide.structuredtext.mwe
Bundle-Vendor: Eclipse 4diac
-Bundle-Version: 2.0.1.qualifier
+Bundle-Version: 3.0.0.qualifier
Bundle-SymbolicName: org.eclipse.fordiac.ide.structuredtext.mwe; singleton:=true
Bundle-ActivationPolicy: lazy
Require-Bundle: org.eclipse.xtext,
diff --git a/plugins/org.eclipse.fordiac.ide.structuredtextalgorithm.ide/META-INF/MANIFEST.MF b/plugins/org.eclipse.fordiac.ide.structuredtextalgorithm.ide/META-INF/MANIFEST.MF
index 737dfc0..2d74eae 100644
--- a/plugins/org.eclipse.fordiac.ide.structuredtextalgorithm.ide/META-INF/MANIFEST.MF
+++ b/plugins/org.eclipse.fordiac.ide.structuredtextalgorithm.ide/META-INF/MANIFEST.MF
@@ -3,7 +3,7 @@
Bundle-ManifestVersion: 2
Bundle-Name: org.eclipse.fordiac.ide.structuredtextalgorithm.ide
Bundle-Vendor: Eclipse 4diac
-Bundle-Version: 2.0.1.qualifier
+Bundle-Version: 3.0.0.qualifier
Bundle-SymbolicName: org.eclipse.fordiac.ide.structuredtextalgorithm.ide; singleton:=true
Bundle-ActivationPolicy: lazy
Require-Bundle: org.eclipse.fordiac.ide.structuredtextalgorithm,
diff --git a/plugins/org.eclipse.fordiac.ide.structuredtextalgorithm.model/META-INF/MANIFEST.MF b/plugins/org.eclipse.fordiac.ide.structuredtextalgorithm.model/META-INF/MANIFEST.MF
index 1015ae7..0f645d0 100644
--- a/plugins/org.eclipse.fordiac.ide.structuredtextalgorithm.model/META-INF/MANIFEST.MF
+++ b/plugins/org.eclipse.fordiac.ide.structuredtextalgorithm.model/META-INF/MANIFEST.MF
@@ -3,7 +3,7 @@
Bundle-ManifestVersion: 2
Bundle-Name: org.eclipse.fordiac.ide.structuredtextalgorithm.model
Bundle-Vendor: Eclipse 4diac
-Bundle-Version: 2.0.1.qualifier
+Bundle-Version: 3.0.0.qualifier
Bundle-SymbolicName: org.eclipse.fordiac.ide.structuredtextalgorithm.model; singleton:=true
Bundle-ActivationPolicy: lazy
Require-Bundle: org.eclipse.xtext.xbase.lib,
diff --git a/plugins/org.eclipse.fordiac.ide.structuredtextalgorithm.tests/META-INF/MANIFEST.MF b/plugins/org.eclipse.fordiac.ide.structuredtextalgorithm.tests/META-INF/MANIFEST.MF
index cc8bb37..2404048 100644
--- a/plugins/org.eclipse.fordiac.ide.structuredtextalgorithm.tests/META-INF/MANIFEST.MF
+++ b/plugins/org.eclipse.fordiac.ide.structuredtextalgorithm.tests/META-INF/MANIFEST.MF
@@ -2,7 +2,7 @@
Bundle-ManifestVersion: 2
Bundle-Name: org.eclipse.fordiac.ide.structuredtextalgorithm.tests
Bundle-SymbolicName: org.eclipse.fordiac.ide.structuredtextalgorithm.tests;singleton:=true
-Bundle-Version: 0.0.1.qualifier
+Bundle-Version: 3.0.0.qualifier
Bundle-RequiredExecutionEnvironment: JavaSE-17
Bundle-ActivationPolicy: lazy
Export-Package: org.eclipse.fordiac.ide.structuredtextalgorithm.tests;x-internal=true
diff --git a/plugins/org.eclipse.fordiac.ide.structuredtextalgorithm.ui/META-INF/MANIFEST.MF b/plugins/org.eclipse.fordiac.ide.structuredtextalgorithm.ui/META-INF/MANIFEST.MF
index 5c70b6c..f3d2766 100644
--- a/plugins/org.eclipse.fordiac.ide.structuredtextalgorithm.ui/META-INF/MANIFEST.MF
+++ b/plugins/org.eclipse.fordiac.ide.structuredtextalgorithm.ui/META-INF/MANIFEST.MF
@@ -3,7 +3,7 @@
Bundle-ManifestVersion: 2
Bundle-Name: org.eclipse.fordiac.ide.structuredtextalgorithm.ui
Bundle-Vendor: Eclipse 4diac
-Bundle-Version: 2.0.1.qualifier
+Bundle-Version: 3.0.0.qualifier
Bundle-SymbolicName: org.eclipse.fordiac.ide.structuredtextalgorithm.ui; singleton:=true
Bundle-ActivationPolicy: lazy
Require-Bundle: org.eclipse.fordiac.ide.structuredtextalgorithm,
diff --git a/plugins/org.eclipse.fordiac.ide.structuredtextalgorithm/META-INF/MANIFEST.MF b/plugins/org.eclipse.fordiac.ide.structuredtextalgorithm/META-INF/MANIFEST.MF
index c957b83..b967ee3 100644
--- a/plugins/org.eclipse.fordiac.ide.structuredtextalgorithm/META-INF/MANIFEST.MF
+++ b/plugins/org.eclipse.fordiac.ide.structuredtextalgorithm/META-INF/MANIFEST.MF
@@ -3,7 +3,7 @@
Bundle-ManifestVersion: 2
Bundle-Name: org.eclipse.fordiac.ide.structuredtextalgorithm
Bundle-Vendor: Eclipse 4diac
-Bundle-Version: 2.0.1.qualifier
+Bundle-Version: 3.0.0.qualifier
Bundle-SymbolicName: org.eclipse.fordiac.ide.structuredtextalgorithm; singleton:=true
Bundle-ActivationPolicy: lazy
Require-Bundle: org.eclipse.xtext,
diff --git a/plugins/org.eclipse.fordiac.ide.structuredtextcore.ide/META-INF/MANIFEST.MF b/plugins/org.eclipse.fordiac.ide.structuredtextcore.ide/META-INF/MANIFEST.MF
index 7996546..4819a8f 100644
--- a/plugins/org.eclipse.fordiac.ide.structuredtextcore.ide/META-INF/MANIFEST.MF
+++ b/plugins/org.eclipse.fordiac.ide.structuredtextcore.ide/META-INF/MANIFEST.MF
@@ -3,7 +3,7 @@
Bundle-ManifestVersion: 2
Bundle-Name: org.eclipse.fordiac.ide.structuredtextcore.ide
Bundle-Vendor: Eclipse 4diac
-Bundle-Version: 2.0.1.qualifier
+Bundle-Version: 3.0.0.qualifier
Bundle-SymbolicName: org.eclipse.fordiac.ide.structuredtextcore.ide; singleton:=true
Bundle-ActivationPolicy: lazy
Require-Bundle: org.eclipse.fordiac.ide.structuredtextcore,
diff --git a/plugins/org.eclipse.fordiac.ide.structuredtextcore.model/META-INF/MANIFEST.MF b/plugins/org.eclipse.fordiac.ide.structuredtextcore.model/META-INF/MANIFEST.MF
index 51a9b10..5c1f118a 100644
--- a/plugins/org.eclipse.fordiac.ide.structuredtextcore.model/META-INF/MANIFEST.MF
+++ b/plugins/org.eclipse.fordiac.ide.structuredtextcore.model/META-INF/MANIFEST.MF
@@ -3,7 +3,7 @@
Bundle-ManifestVersion: 2
Bundle-Name: org.eclipse.fordiac.ide.structuredtextcore.model
Bundle-Vendor: Eclipse 4diac
-Bundle-Version: 2.0.1.qualifier
+Bundle-Version: 3.0.0.qualifier
Bundle-SymbolicName: org.eclipse.fordiac.ide.structuredtextcore.model; singleton:=true
Bundle-ActivationPolicy: lazy
Require-Bundle: org.eclipse.xtext.xbase.lib,
diff --git a/plugins/org.eclipse.fordiac.ide.structuredtextcore.ui/META-INF/MANIFEST.MF b/plugins/org.eclipse.fordiac.ide.structuredtextcore.ui/META-INF/MANIFEST.MF
index cb613a7..3737366 100644
--- a/plugins/org.eclipse.fordiac.ide.structuredtextcore.ui/META-INF/MANIFEST.MF
+++ b/plugins/org.eclipse.fordiac.ide.structuredtextcore.ui/META-INF/MANIFEST.MF
@@ -3,7 +3,7 @@
Bundle-ManifestVersion: 2
Bundle-Name: org.eclipse.fordiac.ide.structuredtextcore.ui
Bundle-Vendor: Eclipse 4diac
-Bundle-Version: 2.0.1.qualifier
+Bundle-Version: 3.0.0.qualifier
Bundle-SymbolicName: org.eclipse.fordiac.ide.structuredtextcore.ui; singleton:=true
Bundle-ActivationPolicy: lazy
Require-Bundle: org.eclipse.fordiac.ide.model,
diff --git a/plugins/org.eclipse.fordiac.ide.structuredtextcore/META-INF/MANIFEST.MF b/plugins/org.eclipse.fordiac.ide.structuredtextcore/META-INF/MANIFEST.MF
index 4d468db..11442de 100644
--- a/plugins/org.eclipse.fordiac.ide.structuredtextcore/META-INF/MANIFEST.MF
+++ b/plugins/org.eclipse.fordiac.ide.structuredtextcore/META-INF/MANIFEST.MF
@@ -3,7 +3,7 @@
Bundle-ManifestVersion: 2
Bundle-Name: org.eclipse.fordiac.ide.structuredtextcore
Bundle-Vendor: Eclipse 4diac
-Bundle-Version: 2.0.1.qualifier
+Bundle-Version: 3.0.0.qualifier
Bundle-SymbolicName: org.eclipse.fordiac.ide.structuredtextcore; singleton:=true
Bundle-ActivationPolicy: lazy
Require-Bundle: org.eclipse.xtext,
diff --git a/plugins/org.eclipse.fordiac.ide.structuredtextfunctioneditor.ide/META-INF/MANIFEST.MF b/plugins/org.eclipse.fordiac.ide.structuredtextfunctioneditor.ide/META-INF/MANIFEST.MF
index 3935175..2742bb8 100644
--- a/plugins/org.eclipse.fordiac.ide.structuredtextfunctioneditor.ide/META-INF/MANIFEST.MF
+++ b/plugins/org.eclipse.fordiac.ide.structuredtextfunctioneditor.ide/META-INF/MANIFEST.MF
@@ -3,7 +3,7 @@
Bundle-ManifestVersion: 2
Bundle-Name: org.eclipse.fordiac.ide.structuredtextfunctioneditor.ide
Bundle-Vendor: Eclipse 4diac
-Bundle-Version: 2.0.1.qualifier
+Bundle-Version: 3.0.0.qualifier
Bundle-SymbolicName: org.eclipse.fordiac.ide.structuredtextfunctioneditor.ide;singleton:=true
Bundle-ActivationPolicy: lazy
Require-Bundle: org.eclipse.fordiac.ide.structuredtextfunctioneditor,
diff --git a/plugins/org.eclipse.fordiac.ide.structuredtextfunctioneditor.model/META-INF/MANIFEST.MF b/plugins/org.eclipse.fordiac.ide.structuredtextfunctioneditor.model/META-INF/MANIFEST.MF
index d71dcd0..c1ccb02 100644
--- a/plugins/org.eclipse.fordiac.ide.structuredtextfunctioneditor.model/META-INF/MANIFEST.MF
+++ b/plugins/org.eclipse.fordiac.ide.structuredtextfunctioneditor.model/META-INF/MANIFEST.MF
@@ -3,7 +3,7 @@
Bundle-ManifestVersion: 2
Bundle-Name: org.eclipse.fordiac.ide.structuredtextfunctioneditor.model
Bundle-Vendor: Eclipse 4diac
-Bundle-Version: 2.0.1.qualifier
+Bundle-Version: 3.0.0.qualifier
Bundle-SymbolicName: org.eclipse.fordiac.ide.structuredtextfunctioneditor.model; singleton:=true
Bundle-ActivationPolicy: lazy
Require-Bundle: org.eclipse.xtext.xbase.lib,
diff --git a/plugins/org.eclipse.fordiac.ide.structuredtextfunctioneditor.tests/META-INF/MANIFEST.MF b/plugins/org.eclipse.fordiac.ide.structuredtextfunctioneditor.tests/META-INF/MANIFEST.MF
index 745b141..f2697e1 100644
--- a/plugins/org.eclipse.fordiac.ide.structuredtextfunctioneditor.tests/META-INF/MANIFEST.MF
+++ b/plugins/org.eclipse.fordiac.ide.structuredtextfunctioneditor.tests/META-INF/MANIFEST.MF
@@ -3,7 +3,7 @@
Bundle-ManifestVersion: 2
Bundle-Name: org.eclipse.fordiac.ide.structuredtextfunctioneditor.tests
Bundle-Vendor: Eclipse 4diac
-Bundle-Version: 2.0.1.qualifier
+Bundle-Version: 3.0.0.qualifier
Bundle-SymbolicName: org.eclipse.fordiac.ide.structuredtextfunctioneditor.tests; singleton:=true
Bundle-ActivationPolicy: lazy
Import-Package: org.junit.jupiter.api,
diff --git a/plugins/org.eclipse.fordiac.ide.structuredtextfunctioneditor.ui.tests/META-INF/MANIFEST.MF b/plugins/org.eclipse.fordiac.ide.structuredtextfunctioneditor.ui.tests/META-INF/MANIFEST.MF
index 50de849..e89eb26 100644
--- a/plugins/org.eclipse.fordiac.ide.structuredtextfunctioneditor.ui.tests/META-INF/MANIFEST.MF
+++ b/plugins/org.eclipse.fordiac.ide.structuredtextfunctioneditor.ui.tests/META-INF/MANIFEST.MF
@@ -3,7 +3,7 @@
Bundle-ManifestVersion: 2
Bundle-Name: org.eclipse.fordiac.ide.structuredtextfunctioneditor.ui.tests
Bundle-Vendor: Eclipse 4diac
-Bundle-Version: 2.0.1.qualifier
+Bundle-Version: 3.0.0.qualifier
Bundle-SymbolicName: org.eclipse.fordiac.ide.structuredtextfunctioneditor.ui.tests; singleton:=true
Bundle-ActivationPolicy: lazy
Import-Package: org.junit.jupiter.api,
diff --git a/plugins/org.eclipse.fordiac.ide.structuredtextfunctioneditor.ui/META-INF/MANIFEST.MF b/plugins/org.eclipse.fordiac.ide.structuredtextfunctioneditor.ui/META-INF/MANIFEST.MF
index 92f6a70..1951ee0 100644
--- a/plugins/org.eclipse.fordiac.ide.structuredtextfunctioneditor.ui/META-INF/MANIFEST.MF
+++ b/plugins/org.eclipse.fordiac.ide.structuredtextfunctioneditor.ui/META-INF/MANIFEST.MF
@@ -3,7 +3,7 @@
Bundle-ManifestVersion: 2
Bundle-Name: org.eclipse.fordiac.ide.structuredtextfunctioneditor.ui
Bundle-Vendor: Eclipse 4diac
-Bundle-Version: 2.0.1.qualifier
+Bundle-Version: 3.0.0.qualifier
Bundle-SymbolicName: org.eclipse.fordiac.ide.structuredtextfunctioneditor.ui;singleton:=true
Bundle-ActivationPolicy: lazy
Require-Bundle: org.eclipse.fordiac.ide.structuredtextfunctioneditor,
diff --git a/plugins/org.eclipse.fordiac.ide.structuredtextfunctioneditor/META-INF/MANIFEST.MF b/plugins/org.eclipse.fordiac.ide.structuredtextfunctioneditor/META-INF/MANIFEST.MF
index 4c2436c..8fae012 100644
--- a/plugins/org.eclipse.fordiac.ide.structuredtextfunctioneditor/META-INF/MANIFEST.MF
+++ b/plugins/org.eclipse.fordiac.ide.structuredtextfunctioneditor/META-INF/MANIFEST.MF
@@ -3,7 +3,7 @@
Bundle-ManifestVersion: 2
Bundle-Name: org.eclipse.fordiac.ide.structuredtextfunctioneditor
Bundle-Vendor: Eclipse 4diac
-Bundle-Version: 2.0.1.qualifier
+Bundle-Version: 3.0.0.qualifier
Bundle-SymbolicName: org.eclipse.fordiac.ide.structuredtextfunctioneditor;singleton:=true
Bundle-ActivationPolicy: lazy
Require-Bundle: org.eclipse.xtext,
diff --git a/plugins/org.eclipse.fordiac.ide.subapptypeeditor/META-INF/MANIFEST.MF b/plugins/org.eclipse.fordiac.ide.subapptypeeditor/META-INF/MANIFEST.MF
index d16304b..bfe2827 100644
--- a/plugins/org.eclipse.fordiac.ide.subapptypeeditor/META-INF/MANIFEST.MF
+++ b/plugins/org.eclipse.fordiac.ide.subapptypeeditor/META-INF/MANIFEST.MF
@@ -3,7 +3,7 @@
Bundle-ManifestVersion: 2
Bundle-Name: Subapplication Type Editor
Bundle-SymbolicName: org.eclipse.fordiac.ide.subapptypeeditor;singleton:=true
-Bundle-Version: 2.0.1.qualifier
+Bundle-Version: 3.0.0.qualifier
Require-Bundle: org.eclipse.ui,
org.eclipse.core.runtime,
org.eclipse.ui.views.properties.tabbed,
diff --git a/plugins/org.eclipse.fordiac.ide.subapptypeeditor/src/org/eclipse/fordiac/ide/subapptypeeditor/providers/TypedSubAppItemProvider.java b/plugins/org.eclipse.fordiac.ide.subapptypeeditor/src/org/eclipse/fordiac/ide/subapptypeeditor/providers/EditorSubAppTypeItemProvider.java
similarity index 95%
rename from plugins/org.eclipse.fordiac.ide.subapptypeeditor/src/org/eclipse/fordiac/ide/subapptypeeditor/providers/TypedSubAppItemProvider.java
rename to plugins/org.eclipse.fordiac.ide.subapptypeeditor/src/org/eclipse/fordiac/ide/subapptypeeditor/providers/EditorSubAppTypeItemProvider.java
index 8f8141a..feff860 100644
--- a/plugins/org.eclipse.fordiac.ide.subapptypeeditor/src/org/eclipse/fordiac/ide/subapptypeeditor/providers/TypedSubAppItemProvider.java
+++ b/plugins/org.eclipse.fordiac.ide.subapptypeeditor/src/org/eclipse/fordiac/ide/subapptypeeditor/providers/EditorSubAppTypeItemProvider.java
@@ -26,11 +26,11 @@
import org.eclipse.fordiac.ide.model.libraryElement.provider.SubAppTypeItemProvider;
import org.eclipse.fordiac.ide.model.typelibrary.TypeEntry;
-public class TypedSubAppItemProvider extends SubAppTypeItemProvider {
+public class EditorSubAppTypeItemProvider extends SubAppTypeItemProvider {
protected FBNetworkItemProvider subAppNetworkItemProvider = null;
- public TypedSubAppItemProvider(final AdapterFactory adapterFactory) {
+ public EditorSubAppTypeItemProvider(final AdapterFactory adapterFactory) {
super(adapterFactory);
subAppNetworkItemProvider = new FBNetworkItemProvider(adapterFactory) {
diff --git a/plugins/org.eclipse.fordiac.ide.subapptypeeditor/src/org/eclipse/fordiac/ide/subapptypeeditor/providers/SubAppItemProviderForTypedSubapps.java b/plugins/org.eclipse.fordiac.ide.subapptypeeditor/src/org/eclipse/fordiac/ide/subapptypeeditor/providers/SubAppItemProviderForTypedSubapps.java
index e03b9d4..9cf0bc5 100644
--- a/plugins/org.eclipse.fordiac.ide.subapptypeeditor/src/org/eclipse/fordiac/ide/subapptypeeditor/providers/SubAppItemProviderForTypedSubapps.java
+++ b/plugins/org.eclipse.fordiac.ide.subapptypeeditor/src/org/eclipse/fordiac/ide/subapptypeeditor/providers/SubAppItemProviderForTypedSubapps.java
@@ -26,9 +26,9 @@
import org.eclipse.fordiac.ide.model.libraryElement.FBNetwork;
import org.eclipse.fordiac.ide.model.libraryElement.SubApp;
import org.eclipse.fordiac.ide.model.libraryElement.provider.FBNetworkItemProvider;
-import org.eclipse.fordiac.ide.model.libraryElement.provider.SubAppItemProvider;
+import org.eclipse.fordiac.ide.model.libraryElement.provider.TypedSubAppItemProvider;
-public class SubAppItemProviderForTypedSubapps extends SubAppItemProvider {
+public class SubAppItemProviderForTypedSubapps extends TypedSubAppItemProvider {
protected FBNetworkItemProvider subAppNetworkItemProvider = null;
diff --git a/plugins/org.eclipse.fordiac.ide.subapptypeeditor/src/org/eclipse/fordiac/ide/subapptypeeditor/providers/TypedSubappProviderAdapterFactory.java b/plugins/org.eclipse.fordiac.ide.subapptypeeditor/src/org/eclipse/fordiac/ide/subapptypeeditor/providers/TypedSubappProviderAdapterFactory.java
index 213f581..84a03b1 100644
--- a/plugins/org.eclipse.fordiac.ide.subapptypeeditor/src/org/eclipse/fordiac/ide/subapptypeeditor/providers/TypedSubappProviderAdapterFactory.java
+++ b/plugins/org.eclipse.fordiac.ide.subapptypeeditor/src/org/eclipse/fordiac/ide/subapptypeeditor/providers/TypedSubappProviderAdapterFactory.java
@@ -17,21 +17,20 @@
public class TypedSubappProviderAdapterFactory extends LibraryElementItemProviderAdapterFactory {
-
@Override
public Adapter createSubAppTypeAdapter() {
if (subAppTypeItemProvider == null) {
- subAppTypeItemProvider = new TypedSubAppItemProvider(this);
+ subAppTypeItemProvider = new EditorSubAppTypeItemProvider(this);
}
return subAppTypeItemProvider;
}
@Override
- public Adapter createSubAppAdapter() {
- if (subAppItemProvider == null) {
- subAppItemProvider = new SubAppItemProviderForTypedSubapps(this);
+ public Adapter createTypedSubAppAdapter() {
+ if (typedSubAppItemProvider == null) {
+ typedSubAppItemProvider = new SubAppItemProviderForTypedSubapps(this);
}
- return subAppItemProvider;
+ return typedSubAppItemProvider;
}
}
\ No newline at end of file
diff --git a/plugins/org.eclipse.fordiac.ide.systemconfiguration.segment/META-INF/MANIFEST.MF b/plugins/org.eclipse.fordiac.ide.systemconfiguration.segment/META-INF/MANIFEST.MF
index 6af3ebb..9cba93f 100644
--- a/plugins/org.eclipse.fordiac.ide.systemconfiguration.segment/META-INF/MANIFEST.MF
+++ b/plugins/org.eclipse.fordiac.ide.systemconfiguration.segment/META-INF/MANIFEST.MF
@@ -2,7 +2,7 @@
Bundle-ManifestVersion: 2
Bundle-Name: %pluginName
Bundle-SymbolicName: org.eclipse.fordiac.ide.systemconfiguration.segment;singleton:=true
-Bundle-Version: 2.1.0.qualifier
+Bundle-Version: 3.0.0.qualifier
Bundle-ClassPath: .
Bundle-Vendor: %providerName
Bundle-Localization: plugin
diff --git a/plugins/org.eclipse.fordiac.ide.systemconfiguration/META-INF/MANIFEST.MF b/plugins/org.eclipse.fordiac.ide.systemconfiguration/META-INF/MANIFEST.MF
index 2868f4b..fa79080 100644
--- a/plugins/org.eclipse.fordiac.ide.systemconfiguration/META-INF/MANIFEST.MF
+++ b/plugins/org.eclipse.fordiac.ide.systemconfiguration/META-INF/MANIFEST.MF
@@ -25,7 +25,7 @@
org.eclipse.fordiac.ide.model.eval
Bundle-Vendor: Eclipse 4diac
Bundle-ActivationPolicy: lazy
-Bundle-Version: 2.0.0.qualifier
+Bundle-Version: 3.0.0.qualifier
Bundle-Name: System Configuration
Bundle-ManifestVersion: 2
Bundle-SymbolicName: org.eclipse.fordiac.ide.systemconfiguration;singleton:=true
diff --git a/plugins/org.eclipse.fordiac.ide.systemmanagement.ui/META-INF/MANIFEST.MF b/plugins/org.eclipse.fordiac.ide.systemmanagement.ui/META-INF/MANIFEST.MF
index 2dcc665..8e5a294 100644
--- a/plugins/org.eclipse.fordiac.ide.systemmanagement.ui/META-INF/MANIFEST.MF
+++ b/plugins/org.eclipse.fordiac.ide.systemmanagement.ui/META-INF/MANIFEST.MF
@@ -37,7 +37,7 @@
org.eclipse.fordiac.ide.fbtypeeditor.network,
org.eclipse.fordiac.ide.library.model
Bundle-Vendor: Eclipse 4diac
-Bundle-Version: 2.0.1.qualifier
+Bundle-Version: 3.0.0.qualifier
Bundle-ManifestVersion: 2
Bundle-SymbolicName: org.eclipse.fordiac.ide.systemmanagement.ui;singleton:=true
Automatic-Module-Name: org.eclipse.fordiac.ide.systemmanagement.ui
diff --git a/plugins/org.eclipse.fordiac.ide.systemmanagement.ui/src/org/eclipse/fordiac/ide/systemmanagement/ui/providers/AutomationSystemProviderAdapterFactory.java b/plugins/org.eclipse.fordiac.ide.systemmanagement.ui/src/org/eclipse/fordiac/ide/systemmanagement/ui/providers/AutomationSystemProviderAdapterFactory.java
index b22748e..e65cec6 100644
--- a/plugins/org.eclipse.fordiac.ide.systemmanagement.ui/src/org/eclipse/fordiac/ide/systemmanagement/ui/providers/AutomationSystemProviderAdapterFactory.java
+++ b/plugins/org.eclipse.fordiac.ide.systemmanagement.ui/src/org/eclipse/fordiac/ide/systemmanagement/ui/providers/AutomationSystemProviderAdapterFactory.java
@@ -45,11 +45,19 @@
}
@Override
- public Adapter createSubAppAdapter() {
- if (subAppItemProvider == null) {
- subAppItemProvider = new SubAppItemProviderForSystem(this);
+ public Adapter createTypedSubAppAdapter() {
+ if (typedSubAppItemProvider == null) {
+ typedSubAppItemProvider = new TypedSubAppItemProviderForSystem(this);
}
- return subAppItemProvider;
+ return typedSubAppItemProvider;
+ }
+
+ @Override
+ public Adapter createUntypedSubAppAdapter() {
+ if (untypedSubAppItemProvider == null) {
+ untypedSubAppItemProvider = new UntypedSubAppItemProviderForSystem(this);
+ }
+ return untypedSubAppItemProvider;
}
@Override
diff --git a/plugins/org.eclipse.fordiac.ide.systemmanagement.ui/src/org/eclipse/fordiac/ide/systemmanagement/ui/providers/SystemElementItemProviderAdapterFactory.java b/plugins/org.eclipse.fordiac.ide.systemmanagement.ui/src/org/eclipse/fordiac/ide/systemmanagement/ui/providers/SystemElementItemProviderAdapterFactory.java
index c17993a..72b6b5a 100644
--- a/plugins/org.eclipse.fordiac.ide.systemmanagement.ui/src/org/eclipse/fordiac/ide/systemmanagement/ui/providers/SystemElementItemProviderAdapterFactory.java
+++ b/plugins/org.eclipse.fordiac.ide.systemmanagement.ui/src/org/eclipse/fordiac/ide/systemmanagement/ui/providers/SystemElementItemProviderAdapterFactory.java
@@ -31,11 +31,19 @@
}
@Override
- public Adapter createSubAppAdapter() {
- if (subAppItemProvider == null) {
- subAppItemProvider = new SubAppItemProviderForSystem(this);
+ public Adapter createTypedSubAppAdapter() {
+ if (typedSubAppItemProvider == null) {
+ typedSubAppItemProvider = new TypedSubAppItemProviderForSystem(this);
}
- return subAppItemProvider;
+ return typedSubAppItemProvider;
+ }
+
+ @Override
+ public Adapter createUntypedSubAppAdapter() {
+ if (untypedSubAppItemProvider == null) {
+ untypedSubAppItemProvider = new UntypedSubAppItemProviderForSystem(this);
+ }
+ return untypedSubAppItemProvider;
}
@Override
diff --git a/plugins/org.eclipse.fordiac.ide.systemmanagement.ui/src/org/eclipse/fordiac/ide/systemmanagement/ui/providers/SubAppItemProviderForSystem.java b/plugins/org.eclipse.fordiac.ide.systemmanagement.ui/src/org/eclipse/fordiac/ide/systemmanagement/ui/providers/TypedSubAppItemProviderForSystem.java
similarity index 91%
copy from plugins/org.eclipse.fordiac.ide.systemmanagement.ui/src/org/eclipse/fordiac/ide/systemmanagement/ui/providers/SubAppItemProviderForSystem.java
copy to plugins/org.eclipse.fordiac.ide.systemmanagement.ui/src/org/eclipse/fordiac/ide/systemmanagement/ui/providers/TypedSubAppItemProviderForSystem.java
index 24bfa6e..7f4b91f 100644
--- a/plugins/org.eclipse.fordiac.ide.systemmanagement.ui/src/org/eclipse/fordiac/ide/systemmanagement/ui/providers/SubAppItemProviderForSystem.java
+++ b/plugins/org.eclipse.fordiac.ide.systemmanagement.ui/src/org/eclipse/fordiac/ide/systemmanagement/ui/providers/TypedSubAppItemProviderForSystem.java
@@ -27,7 +27,7 @@
import org.eclipse.fordiac.ide.model.libraryElement.SubApp;
import org.eclipse.fordiac.ide.model.libraryElement.TypedConfigureableObject;
import org.eclipse.fordiac.ide.model.libraryElement.provider.FBNetworkItemProvider;
-import org.eclipse.fordiac.ide.model.libraryElement.provider.SubAppItemProvider;
+import org.eclipse.fordiac.ide.model.libraryElement.provider.TypedSubAppItemProvider;
/**
* a dedicated item provider that will ensure that in the system tree the
@@ -37,11 +37,11 @@
* @author alil
*
*/
-public class SubAppItemProviderForSystem extends SubAppItemProvider {
+public class TypedSubAppItemProviderForSystem extends TypedSubAppItemProvider {
private FBNetworkItemProvider subAppNetworkItemProvider = null;
- public SubAppItemProviderForSystem(final AdapterFactory adapterFactory) {
+ public TypedSubAppItemProviderForSystem(final AdapterFactory adapterFactory) {
super(adapterFactory);
subAppNetworkItemProvider = new FBNetworkItemProviderForSystem(adapterFactory);
}
@@ -61,7 +61,8 @@
@Override
public boolean hasChildren(final Object object) {
if (((SubApp) object).isTyped()) {
- // if we are typed subapp we always say we have children, avoids early copying of type network
+ // if we are typed subapp we always say we have children, avoids early copying
+ // of type network
return true;
}
final FBNetwork fbNetwork = getFBNetwork(object);
@@ -81,7 +82,8 @@
final SubApp subapp = ((SubApp) object);
FBNetwork subAppNetwork = subapp.getSubAppNetwork();
if ((null == subAppNetwork) && subapp.isTyped()) {
- // the subapp currently does not have a subappnetwork and it is typed, copy the subapp network from the type
+ // the subapp currently does not have a subappnetwork and it is typed, copy the
+ // subapp network from the type
// to the instance
subAppNetwork = subapp.loadSubAppNetwork();
}
@@ -100,7 +102,8 @@
public void notifyChanged(final Notification notification) {
if (LibraryElementPackage.TYPED_CONFIGUREABLE_OBJECT__TYPE_ENTRY == notification
.getFeatureID(TypedConfigureableObject.class)) {
- // if the type entry get change inform viewer to update the parent's children, this ensures that any
+ // if the type entry get change inform viewer to update the parent's children,
+ // this ensures that any
// filters that may be enabled are applied
final SubApp subapp = (SubApp) notification.getNotifier();
final Notification wrappedNotification = ViewerNotification.wrapNotification(notification,
diff --git a/plugins/org.eclipse.fordiac.ide.systemmanagement.ui/src/org/eclipse/fordiac/ide/systemmanagement/ui/providers/SubAppItemProviderForSystem.java b/plugins/org.eclipse.fordiac.ide.systemmanagement.ui/src/org/eclipse/fordiac/ide/systemmanagement/ui/providers/UntypedSubAppItemProviderForSystem.java
similarity index 91%
rename from plugins/org.eclipse.fordiac.ide.systemmanagement.ui/src/org/eclipse/fordiac/ide/systemmanagement/ui/providers/SubAppItemProviderForSystem.java
rename to plugins/org.eclipse.fordiac.ide.systemmanagement.ui/src/org/eclipse/fordiac/ide/systemmanagement/ui/providers/UntypedSubAppItemProviderForSystem.java
index 24bfa6e..71b087d 100644
--- a/plugins/org.eclipse.fordiac.ide.systemmanagement.ui/src/org/eclipse/fordiac/ide/systemmanagement/ui/providers/SubAppItemProviderForSystem.java
+++ b/plugins/org.eclipse.fordiac.ide.systemmanagement.ui/src/org/eclipse/fordiac/ide/systemmanagement/ui/providers/UntypedSubAppItemProviderForSystem.java
@@ -27,7 +27,7 @@
import org.eclipse.fordiac.ide.model.libraryElement.SubApp;
import org.eclipse.fordiac.ide.model.libraryElement.TypedConfigureableObject;
import org.eclipse.fordiac.ide.model.libraryElement.provider.FBNetworkItemProvider;
-import org.eclipse.fordiac.ide.model.libraryElement.provider.SubAppItemProvider;
+import org.eclipse.fordiac.ide.model.libraryElement.provider.UntypedSubAppItemProvider;
/**
* a dedicated item provider that will ensure that in the system tree the
@@ -37,11 +37,11 @@
* @author alil
*
*/
-public class SubAppItemProviderForSystem extends SubAppItemProvider {
+public class UntypedSubAppItemProviderForSystem extends UntypedSubAppItemProvider {
private FBNetworkItemProvider subAppNetworkItemProvider = null;
- public SubAppItemProviderForSystem(final AdapterFactory adapterFactory) {
+ public UntypedSubAppItemProviderForSystem(final AdapterFactory adapterFactory) {
super(adapterFactory);
subAppNetworkItemProvider = new FBNetworkItemProviderForSystem(adapterFactory);
}
@@ -61,7 +61,8 @@
@Override
public boolean hasChildren(final Object object) {
if (((SubApp) object).isTyped()) {
- // if we are typed subapp we always say we have children, avoids early copying of type network
+ // if we are typed subapp we always say we have children, avoids early copying
+ // of type network
return true;
}
final FBNetwork fbNetwork = getFBNetwork(object);
@@ -81,7 +82,8 @@
final SubApp subapp = ((SubApp) object);
FBNetwork subAppNetwork = subapp.getSubAppNetwork();
if ((null == subAppNetwork) && subapp.isTyped()) {
- // the subapp currently does not have a subappnetwork and it is typed, copy the subapp network from the type
+ // the subapp currently does not have a subappnetwork and it is typed, copy the
+ // subapp network from the type
// to the instance
subAppNetwork = subapp.loadSubAppNetwork();
}
@@ -100,7 +102,8 @@
public void notifyChanged(final Notification notification) {
if (LibraryElementPackage.TYPED_CONFIGUREABLE_OBJECT__TYPE_ENTRY == notification
.getFeatureID(TypedConfigureableObject.class)) {
- // if the type entry get change inform viewer to update the parent's children, this ensures that any
+ // if the type entry get change inform viewer to update the parent's children,
+ // this ensures that any
// filters that may be enabled are applied
final SubApp subapp = (SubApp) notification.getNotifier();
final Notification wrappedNotification = ViewerNotification.wrapNotification(notification,
diff --git a/plugins/org.eclipse.fordiac.ide.systemmanagement.ui/src/org/eclipse/fordiac/ide/systemmanagement/ui/wizard/New4diacProjectLibraryPage.java b/plugins/org.eclipse.fordiac.ide.systemmanagement.ui/src/org/eclipse/fordiac/ide/systemmanagement/ui/wizard/New4diacProjectLibraryPage.java
index 4e0dbf9..d7dde3e 100644
--- a/plugins/org.eclipse.fordiac.ide.systemmanagement.ui/src/org/eclipse/fordiac/ide/systemmanagement/ui/wizard/New4diacProjectLibraryPage.java
+++ b/plugins/org.eclipse.fordiac.ide.systemmanagement.ui/src/org/eclipse/fordiac/ide/systemmanagement/ui/wizard/New4diacProjectLibraryPage.java
@@ -19,6 +19,8 @@
import java.util.Map;
import java.util.stream.Collectors;
+import org.eclipse.fordiac.ide.library.model.library.Required;
+import org.eclipse.fordiac.ide.library.model.util.ManifestHelper;
import org.eclipse.fordiac.ide.library.model.util.VersionComparator;
import org.eclipse.fordiac.ide.model.typelibrary.TypeLibraryManager;
import org.eclipse.fordiac.ide.systemmanagement.ui.Messages;
@@ -103,9 +105,10 @@
libGroupings = libraries.stream().collect(Collectors.groupingBy(lib -> lib.symbolicName));
}
- public Map<String, URI> getChosenLibraries() {
- final Map<String, URI> libs = new HashMap<>();
- libraries.stream().filter(LibDisplay::isSelected).forEach(lib -> libs.put(lib.getSymbolicName(), lib.getUri()));
+ public Map<Required, URI> getChosenLibraries() {
+ final Map<Required, URI> libs = new HashMap<>();
+ libraries.stream().filter(LibDisplay::isSelected).forEach(
+ lib -> libs.put(ManifestHelper.createRequired(lib.getSymbolicName(), lib.getVersion()), lib.getUri()));
return libs;
}
diff --git a/plugins/org.eclipse.fordiac.ide.systemmanagement/META-INF/MANIFEST.MF b/plugins/org.eclipse.fordiac.ide.systemmanagement/META-INF/MANIFEST.MF
index 29d590d..d3d5825 100644
--- a/plugins/org.eclipse.fordiac.ide.systemmanagement/META-INF/MANIFEST.MF
+++ b/plugins/org.eclipse.fordiac.ide.systemmanagement/META-INF/MANIFEST.MF
@@ -15,7 +15,7 @@
org.eclipse.fordiac.ide.library.model
Bundle-Vendor: Eclipse 4diac
Bundle-ActivationPolicy: lazy
-Bundle-Version: 2.0.1.qualifier
+Bundle-Version: 3.0.0.qualifier
Bundle-Name: System Management
Bundle-ManifestVersion: 2
Bundle-SymbolicName: org.eclipse.fordiac.ide.systemmanagement;singleton:=true
diff --git a/plugins/org.eclipse.fordiac.ide.systemmanagement/src/org/eclipse/fordiac/ide/systemmanagement/SystemManager.java b/plugins/org.eclipse.fordiac.ide.systemmanagement/src/org/eclipse/fordiac/ide/systemmanagement/SystemManager.java
index be4c8ee..6610c3a 100644
--- a/plugins/org.eclipse.fordiac.ide.systemmanagement/src/org/eclipse/fordiac/ide/systemmanagement/SystemManager.java
+++ b/plugins/org.eclipse.fordiac.ide.systemmanagement/src/org/eclipse/fordiac/ide/systemmanagement/SystemManager.java
@@ -26,6 +26,7 @@
import java.net.URI;
import java.util.ArrayList;
+import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.stream.Stream;
@@ -45,6 +46,8 @@
import org.eclipse.core.runtime.NullProgressMonitor;
import org.eclipse.core.runtime.Path;
import org.eclipse.core.runtime.Platform;
+import org.eclipse.fordiac.ide.library.model.library.Required;
+import org.eclipse.fordiac.ide.library.model.util.ManifestHelper;
import org.eclipse.fordiac.ide.model.dataimport.SystemImporter;
import org.eclipse.fordiac.ide.model.libraryElement.AutomationSystem;
import org.eclipse.fordiac.ide.model.typelibrary.SystemEntry;
@@ -103,12 +106,17 @@
@SuppressWarnings("static-method")
public IProject createNew4diacProject(final String projectName, final IPath location,
- final Map<String, URI> includedLibraries, final IProgressMonitor monitor) throws CoreException {
+ final Map<Required, URI> includedLibraries, final IProgressMonitor monitor) throws CoreException {
final IWorkspaceRoot root = ResourcesPlugin.getWorkspace().getRoot();
final IProject project = root.getProject(projectName);
final IProjectDescription description = ResourcesPlugin.getWorkspace().newProjectDescription(project.getName());
+ final Map<String, URI> includes = new HashMap<>();
+ includedLibraries.forEach((key, value) -> {
+ includes.put(key.getSymbolicName(), value);
+ });
+
if (!Platform.getLocation().equals(location)) {
description.setLocation(location);
}
@@ -126,10 +134,12 @@
project.open(monitor);
// configure type lib
- SystemPaletteManagement.linkToolTypeLibsToDestination(includedLibraries,
- project.getFolder(TYPE_LIB_FOLDER_NAME));
+ SystemPaletteManagement.linkToolTypeLibsToDestination(includes, project.getFolder(TYPE_LIB_FOLDER_NAME));
TypeLibraryManager.INSTANCE.getTypeLibrary(project); // insert the project into the project list
+
+ ManifestHelper.createProjectManifest(project, includedLibraries.keySet());
+
return project;
}
diff --git a/plugins/org.eclipse.fordiac.ide.systemmanagement/src/org/eclipse/fordiac/ide/systemmanagement/util/SystemPaletteManagement.java b/plugins/org.eclipse.fordiac.ide.systemmanagement/src/org/eclipse/fordiac/ide/systemmanagement/util/SystemPaletteManagement.java
index 7605dd9..0379a9c 100644
--- a/plugins/org.eclipse.fordiac.ide.systemmanagement/src/org/eclipse/fordiac/ide/systemmanagement/util/SystemPaletteManagement.java
+++ b/plugins/org.eclipse.fordiac.ide.systemmanagement/src/org/eclipse/fordiac/ide/systemmanagement/util/SystemPaletteManagement.java
@@ -34,7 +34,7 @@
import org.eclipse.core.runtime.URIUtil;
import org.eclipse.emf.common.util.URI;
import org.eclipse.fordiac.ide.library.model.library.Manifest;
-import org.eclipse.fordiac.ide.library.model.library.util.LibraryResourceImpl;
+import org.eclipse.fordiac.ide.library.model.util.ManifestHelper;
import org.eclipse.fordiac.ide.model.typelibrary.TypeLibraryManager;
import org.eclipse.fordiac.ide.model.typelibrary.TypeLibraryTags;
import org.eclipse.fordiac.ide.ui.FordiacLogHelper;
@@ -70,35 +70,27 @@
public static Map<Manifest, java.net.URI> getStandardLibraries(final IProject project) {
final Map<Manifest, java.net.URI> libraries = new HashMap<>();
- final Map<String, Object> loadOptions = new HashMap<>();
final FilenameFilter filter = (file, name) -> name.equals("MANIFEST.MF"); //$NON-NLS-1$
- try {
- final java.net.URI typeLibURI = new java.net.URI("ECLIPSE_HOME/" + TypeLibraryTags.TYPE_LIBRARY); //$NON-NLS-1$
- final IPathVariableManager varMan = project.getPathVariableManager();
- final java.net.URI typeLibURIResolved = varMan.resolveURI(typeLibURI);
- final File typeLib = new File(typeLibURIResolved);
+ final java.net.URI typeLibURI = java.net.URI.create("ECLIPSE_HOME/" + TypeLibraryTags.TYPE_LIBRARY); //$NON-NLS-1$
+ final IPathVariableManager varMan = project.getPathVariableManager();
+ final java.net.URI typeLibURIResolved = varMan.resolveURI(typeLibURI);
+ final File typeLib = new File(typeLibURIResolved);
- if (typeLib.isDirectory()) {
- for (final File file : typeLib.listFiles()) {
- if (!file.getName().startsWith(".") && file.isDirectory()) { //$NON-NLS-1$
- final File[] manifestArr = file.listFiles(filter);
- if (manifestArr.length > 0) {
- final LibraryResourceImpl res = new LibraryResourceImpl(
- URI.createURI(manifestArr[0].toURI().toString()));
- res.load(loadOptions);
- final Manifest manifest = (Manifest) res.getContents().get(0);
- if ("Library".equals(manifest.getScope()) && manifest.getProduct() != null //$NON-NLS-1$
- && manifest.getProduct().getSymbolicName() != null) {
- libraries.put(manifest, URIUtil.append(typeLibURI, file.getName()));
- }
+ if (typeLib.isDirectory()) {
+ for (final File file : typeLib.listFiles()) {
+ if (!file.getName().startsWith(".") && file.isDirectory()) { //$NON-NLS-1$
+ final File[] manifestArr = file.listFiles(filter);
+ if (manifestArr.length > 0) {
+ final Manifest manifest = ManifestHelper
+ .getManifest(URI.createURI(manifestArr[0].toURI().toString()));
+ if (manifest != null && ManifestHelper.isLibrary(manifest) && manifest.getProduct() != null
+ && manifest.getProduct().getSymbolicName() != null) {
+ libraries.put(manifest, URIUtil.append(typeLibURI, file.getName()));
}
}
}
}
-
- } catch (final Exception e) {
- FordiacLogHelper.logError(e.getMessage(), e);
}
return libraries;
diff --git a/plugins/org.eclipse.fordiac.ide.typemanagement/META-INF/MANIFEST.MF b/plugins/org.eclipse.fordiac.ide.typemanagement/META-INF/MANIFEST.MF
index 6b27163..3b9e73d 100644
--- a/plugins/org.eclipse.fordiac.ide.typemanagement/META-INF/MANIFEST.MF
+++ b/plugins/org.eclipse.fordiac.ide.typemanagement/META-INF/MANIFEST.MF
@@ -22,7 +22,7 @@
org.eclipse.fordiac.ide.model.ui
Bundle-Vendor: Eclipse 4diac
Bundle-ActivationPolicy: lazy
-Bundle-Version: 2.0.1.qualifier
+Bundle-Version: 3.0.0.qualifier
Bundle-Name: FB Type Management
Bundle-ManifestVersion: 2
Bundle-SymbolicName: org.eclipse.fordiac.ide.typemanagement;singleton:=true
diff --git a/plugins/org.eclipse.fordiac.ide.typemanagement/src/org/eclipse/fordiac/ide/typemanagement/refactoring/RenameTypeChange.java b/plugins/org.eclipse.fordiac.ide.typemanagement/src/org/eclipse/fordiac/ide/typemanagement/refactoring/RenameTypeChange.java
deleted file mode 100644
index 3c449d7..0000000
--- a/plugins/org.eclipse.fordiac.ide.typemanagement/src/org/eclipse/fordiac/ide/typemanagement/refactoring/RenameTypeChange.java
+++ /dev/null
@@ -1,50 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2023 Primetals Technologies Austria GmbH
- *
- * This program and the accompanying materials are made available under the
- * terms of the Eclipse Public License 2.0 which is available at
- * http://www.eclipse.org/legal/epl-2.0.
- *
- * SPDX-License-Identifier: EPL-2.0
- *
- * Contributors:
- * Michael Oberlehner - initial API and implementation and/or initial documentation
- *******************************************************************************/
-package org.eclipse.fordiac.ide.typemanagement.refactoring;
-
-import org.eclipse.core.resources.IFile;
-import org.eclipse.core.resources.IResource;
-import org.eclipse.core.resources.ResourcesPlugin;
-import org.eclipse.core.runtime.CoreException;
-import org.eclipse.core.runtime.IPath;
-import org.eclipse.core.runtime.IProgressMonitor;
-import org.eclipse.fordiac.ide.model.typelibrary.TypeEntry;
-import org.eclipse.fordiac.ide.systemmanagement.changelistener.FordiacResourceChangeListener;
-import org.eclipse.ltk.core.refactoring.Change;
-import org.eclipse.ltk.core.refactoring.resource.RenameResourceChange;
-
-public class RenameTypeChange extends RenameResourceChange {
-
- private final TypeEntry typeEntry;
-
- public RenameTypeChange(final TypeEntry typeEntry, final String newName) {
- super(typeEntry.getFile().getFullPath(), newName);
- this.typeEntry = typeEntry;
- }
-
- @Override
- public Change perform(final IProgressMonitor pm) throws CoreException {
- final Change perform = super.perform(pm);
- final IPath newPath = renamedResourcePath(typeEntry.getFile().getFullPath(), getNewName());
- final IResource findMember = ResourcesPlugin.getWorkspace().getRoot().findMember(newPath);
- if (findMember instanceof final IFile file) {
- FordiacResourceChangeListener.updateTypeEntryByRename(file, typeEntry);
- }
- return perform;
- }
-
- private static IPath renamedResourcePath(final IPath path, final String newName) {
- return path.removeLastSegments(1).append(newName);
- }
-
-}
diff --git a/plugins/org.eclipse.fordiac.ide.typemanagement/src/org/eclipse/fordiac/ide/typemanagement/refactoring/RenameTypeRefactoring.java b/plugins/org.eclipse.fordiac.ide.typemanagement/src/org/eclipse/fordiac/ide/typemanagement/refactoring/RenameTypeRefactoring.java
deleted file mode 100644
index 10c9961..0000000
--- a/plugins/org.eclipse.fordiac.ide.typemanagement/src/org/eclipse/fordiac/ide/typemanagement/refactoring/RenameTypeRefactoring.java
+++ /dev/null
@@ -1,233 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2023 Primetals Technologies Austria GmbH
- *
- * This program and the accompanying materials are made available under the
- * terms of the Eclipse Public License 2.0 which is available at
- * http://www.eclipse.org/legal/epl-2.0.
- *
- * SPDX-License-Identifier: EPL-2.0
- *
- * Contributors:
- * Michael Oberlehner - initial API and implementation and/or initial documentation
- *******************************************************************************/
-package org.eclipse.fordiac.ide.typemanagement.refactoring;
-
-import java.text.MessageFormat;
-import java.util.Set;
-
-import org.eclipse.core.runtime.CoreException;
-import org.eclipse.core.runtime.IProgressMonitor;
-import org.eclipse.core.runtime.NullProgressMonitor;
-import org.eclipse.core.runtime.OperationCanceledException;
-import org.eclipse.fordiac.ide.model.data.StructuredType;
-import org.eclipse.fordiac.ide.model.libraryElement.FBNetworkElement;
-import org.eclipse.fordiac.ide.model.libraryElement.FBType;
-import org.eclipse.fordiac.ide.model.libraryElement.INamedElement;
-import org.eclipse.fordiac.ide.model.libraryElement.LibraryElement;
-import org.eclipse.fordiac.ide.model.libraryElement.SubAppType;
-import org.eclipse.fordiac.ide.model.search.types.FBInstanceSearch;
-import org.eclipse.fordiac.ide.model.search.types.FBTypeSearch;
-import org.eclipse.fordiac.ide.model.search.types.InstanceSearch;
-import org.eclipse.fordiac.ide.model.search.types.StructDataTypeSearch;
-import org.eclipse.fordiac.ide.model.typelibrary.DataTypeEntry;
-import org.eclipse.fordiac.ide.model.typelibrary.TypeEntry;
-import org.eclipse.fordiac.ide.model.typelibrary.TypeLibraryManager;
-import org.eclipse.fordiac.ide.model.typelibrary.TypeLibraryTags;
-import org.eclipse.fordiac.ide.typemanagement.Messages;
-import org.eclipse.fordiac.ide.ui.editors.EditorUtils;
-import org.eclipse.jface.dialogs.MessageDialog;
-import org.eclipse.ltk.core.refactoring.Change;
-import org.eclipse.ltk.core.refactoring.CompositeChange;
-import org.eclipse.ltk.core.refactoring.Refactoring;
-import org.eclipse.ltk.core.refactoring.RefactoringStatus;
-import org.eclipse.swt.SWT;
-import org.eclipse.swt.widgets.Display;
-import org.eclipse.swt.widgets.Shell;
-import org.eclipse.ui.IEditorPart;
-import org.eclipse.ui.part.FileEditorInput;
-
-public class RenameTypeRefactoring extends Refactoring {
-
- private final TypeEntry typeEntry;
- private String newName;
- private final String oldName;
-
- protected String getOldName() {
- return oldName;
- }
-
- public RenameTypeRefactoring(final TypeEntry typeEntry, final String oldName) {
- this.typeEntry = typeEntry;
- this.oldName = oldName;
- }
-
- public RenameTypeRefactoring() {
- this.typeEntry = null;
- this.oldName = ""; //$NON-NLS-1$
- }
-
- @Override
- public RefactoringStatus checkFinalConditions(final IProgressMonitor monitor)
- throws CoreException, OperationCanceledException {
- return new RefactoringStatus();
- }
-
- @Override
- public RefactoringStatus checkInitialConditions(final IProgressMonitor monitor)
- throws CoreException, OperationCanceledException {
- final RefactoringStatus status = new RefactoringStatus();
- try {
- monitor.beginTask("Checking preconditions...", 1); //$NON-NLS-1$
- checkEditor(status, typeEntry, getOldName());
-
- } finally {
- monitor.done();
- }
- return status;
- }
-
- public static void checkEditor(final RefactoringStatus result, final TypeEntry typeEntry, final String oldName) {
- // depending if the in-place renaming is active we may not be in the display
- // thread
- Display.getDefault().syncExec(() -> {
- final IEditorPart findEditor = EditorUtils.findEditor(
- (final IEditorPart editor) -> editor.getEditorInput() instanceof final FileEditorInput fei
- && fei.getFile().equals(typeEntry.getFile()));
- if (findEditor != null && findEditor.isDirty()) {
- if (shouldSaveFile(findEditor.getSite().getShell(), oldName)) {
- findEditor.doSave(new NullProgressMonitor());
- } else {
- result.addFatalError("Abort rename as editor is dirty!"); //$NON-NLS-1$
- }
- }
- });
- }
-
- private static boolean shouldSaveFile(final Shell shell, final String oldName) {
- final int result = MessageDialog.open(MessageDialog.QUESTION, shell, "Rename of Type with unsaved changes!", //$NON-NLS-1$
- MessageFormat.format(
- "There are unsaved changes for type \"{0}\". Do you want to save them before renaming?", //$NON-NLS-1$
- TypeEntry.getTypeNameFromFileName(oldName)),
- SWT.NONE, "Save", "Cancel"); //$NON-NLS-1$//$NON-NLS-2$
- return result == 0;
- }
-
- @Override
- public Change createChange(final IProgressMonitor monitor) throws CoreException, OperationCanceledException {
- try {
- monitor.beginTask("Creating change...", 1); //$NON-NLS-1$
-
- final LibraryElement type = typeEntry.getType();
- if (type instanceof final StructuredType structType) {
- return createStructDataChange(structType);
- }
- if (type instanceof final FBType fbType) {
- return createFBDataChange(fbType);
- }
- return null;
-
- } finally {
- monitor.done();
- }
- }
-
- private CompositeChange createStructDataChange(final StructuredType type) {
- InstanceSearch search = StructDataTypeSearch
- .createStructMemberSearch((StructuredType) typeEntry.getTypeEditable());
-
- final Set<INamedElement> allFBWithStruct = InstanceSearch.performProjectSearch(typeEntry.getFile().getProject(),
- StructDataTypeSearch.createStructMemberSearch((StructuredType) typeEntry.getTypeEditable()),
- StructDataTypeSearch.createStructInterfaceSearch((StructuredType) typeEntry.getTypeEditable()),
- new FBInstanceSearch((DataTypeEntry) typeEntry));
- allFBWithStruct.addAll(search.searchStructuredTypes(typeEntry.getTypeLibrary()));
- final CompositeChange parentChange = new CompositeChange(
- MessageFormat.format(Messages.Refactoring_RenameFromTo, typeEntry.getTypeName(), getNewName()));
-
- parentChange.add(new RenameTypeChange(typeEntry, getNewName() + ".dtp")); //$NON-NLS-1$
-
- final CompositeChange change = new CompositeChange(Messages.Refactoring_AffectedStruct);
- final CompositeChange fbTypeChanges = new CompositeChange("Fb Types:"); //$NON-NLS-1$
- search = StructDataTypeSearch.createStructInterfaceSearch((StructuredType) typeEntry.getTypeEditable());
- final Set<INamedElement> fbTypes = search.performTypeLibBlockSearch(typeEntry.getTypeLibrary());
- fbTypes.forEach(fb -> fbTypeChanges.add(new InterfaceDataTypeChange((FBType) fb, typeEntry, oldName)));
- parentChange.add(fbTypeChanges);
- allFBWithStruct.stream().map(this::createSubChange).forEach(change::add);
-
- if (!allFBWithStruct.isEmpty()) {
- parentChange.add(change);
- }
-
- return parentChange;
- }
-
- private CompositeChange createFBDataChange(final FBType type) {
- final CompositeChange parentChange = new CompositeChange(
- MessageFormat.format(Messages.Refactoring_RenameFromTo, typeEntry.getTypeName(), getNewName()));
- Set<INamedElement> allFBs;
- if (type instanceof SubAppType) {
- parentChange.add(
- new RenameTypeChange(typeEntry, getNewName() + TypeLibraryTags.SUBAPP_TYPE_FILE_ENDING_WITH_DOT));
- } else {
- parentChange
- .add(new RenameTypeChange(typeEntry, getNewName() + TypeLibraryTags.FB_TYPE_FILE_ENDING_WITH_DOT));
- }
- final CompositeChange change = new CompositeChange(Messages.Refactoring_AffectedInstancesOfFB);
- allFBs = InstanceSearch.performProjectSearch(typeEntry.getFile().getProject(),
- FBTypeSearch.createFBTypeSearch(type));
- allFBs.stream().map(FBNetworkElement.class::cast).map(fbn -> new UpdateInstancesChange(fbn, typeEntry))
- .forEach(change::add);
- if (!allFBs.isEmpty()) {
- parentChange.add(change);
- }
- return parentChange;
- }
-
- private Change createSubChange(final INamedElement element) {
- if (element instanceof final StructuredType stElement) {
- return new StructuredTypeMemberChange(stElement, typeEntry, typeEntry.getTypeName(), getNewName());
- }
- if (element instanceof final FBType fbType) {
- return new InterfaceDataTypeChange(fbType, typeEntry, oldName);
- }
- if (element instanceof final FBNetworkElement elem) {
- return new UpdateInstancesChange(elem, typeEntry);
- }
- return null;
- }
-
- public RefactoringStatus setAndValidateTypeName(final String name) {
-
- final RefactoringStatus result = new RefactoringStatus();
-
- if (getOldName().equals(name)) {
- result.addFatalError(MessageFormat.format(" {0} is not a new Name", name)); //$NON-NLS-1$
-
- } else if (nameExistsInTypeLibrary(name)) {
- result.addFatalError(MessageFormat.format(Messages.RenameType_TypeExists, name));
- }
-
- if (result.isOK()) {
- newName = name;
- }
- return result;
-
- }
-
- protected boolean nameExistsInTypeLibrary(final String name) {
- return TypeLibraryManager.INSTANCE.getTypeLibrary(typeEntry.getFile().getProject()).find(name) != null;
- }
-
- @Override
- public String getName() {
- return Messages.RenameType_Name;
- }
-
- public TypeEntry getTypeEntry() {
- return typeEntry;
- }
-
- public String getNewName() {
- return newName;
- }
-
-}
\ No newline at end of file
diff --git a/plugins/org.eclipse.fordiac.ide.typemanagement/src/org/eclipse/fordiac/ide/typemanagement/wizards/NewFBTypeWizardPage.java b/plugins/org.eclipse.fordiac.ide.typemanagement/src/org/eclipse/fordiac/ide/typemanagement/wizards/NewFBTypeWizardPage.java
index 6eb5087..fdaecf5 100644
--- a/plugins/org.eclipse.fordiac.ide.typemanagement/src/org/eclipse/fordiac/ide/typemanagement/wizards/NewFBTypeWizardPage.java
+++ b/plugins/org.eclipse.fordiac.ide.typemanagement/src/org/eclipse/fordiac/ide/typemanagement/wizards/NewFBTypeWizardPage.java
@@ -40,7 +40,6 @@
import org.eclipse.fordiac.ide.model.IdentifierVerifier;
import org.eclipse.fordiac.ide.model.buildpath.util.BuildpathUtil;
import org.eclipse.fordiac.ide.model.helpers.PackageNameHelper;
-import org.eclipse.fordiac.ide.model.typelibrary.TypeEntry;
import org.eclipse.fordiac.ide.model.typelibrary.TypeLibrary;
import org.eclipse.fordiac.ide.model.typelibrary.TypeLibraryManager;
import org.eclipse.fordiac.ide.model.typelibrary.TypeLibraryTags;
@@ -181,13 +180,12 @@
getTypeTemplatesFolder().toString()));
return false;
}
- if (super.getFileName().isEmpty()) {
+ if (getTypeName().isEmpty()) {
setErrorMessage(Messages.NewFBTypeWizardPage_EmptyTypenameIsNotValid);
return false;
}
- // use super.getFileName here to get the type name without extension
- final Optional<String> errorMessage = IdentifierVerifier.verifyIdentifier(super.getFileName());
+ final Optional<String> errorMessage = IdentifierVerifier.verifyIdentifier(getTypeName());
if (errorMessage.isPresent()) {
setErrorMessage(errorMessage.get());
return false;
@@ -204,9 +202,8 @@
return false;
}
- // Check for duplicates in typelib if a project is selected
- if (null != getContainerFullPath() && isDuplicate()) {
- setErrorMessage(MessageFormat.format(Messages.NewFBTypeWizardPage_TypeAlreadyExists, getFileName()));
+ if (isDuplicate()) {
+ setErrorMessage(MessageFormat.format(Messages.NewFBTypeWizardPage_TypeAlreadyExists, getFullTypeName()));
return false;
}
@@ -214,38 +211,21 @@
}
private boolean isDuplicate() {
- // here: getContainerFullPath().segment(0) --> name of the selected project
- final TypeLibrary lib = TypeLibraryManager.INSTANCE
- .getTypeLibrary(ResourcesPlugin.getWorkspace().getRoot().getProject(getContainerFullPath().segment(0)));
-
- final String[] s = getTemplate().getName().split("\\."); //$NON-NLS-1$
- final String fileExtension = s[s.length - 1].toUpperCase();
- if (fileExtension.equals(TypeLibraryTags.DATA_TYPE_FILE_ENDING)) {
- return isDtpDuplicate(lib);
+ final TypeLibrary lib = getTypeLibrary();
+ if (lib == null) {
+ return false;
}
- if (fileExtension.equals(TypeLibraryTags.GLOBAL_CONST_FILE_ENDING)) {
- return isGcfDuplicate(lib);
+
+ final String fileExtension = IPath.fromFile(getTemplate()).getFileExtension();
+ final Map<String, ?> types;
+ if (TypeLibraryTags.ATTRIBUTE_TYPE_FILE_ENDING.equalsIgnoreCase(fileExtension)) {
+ types = lib.getAttributeTypes();
+ } else if (TypeLibraryTags.GLOBAL_CONST_FILE_ENDING.equalsIgnoreCase(fileExtension)) {
+ types = lib.getGlobalConstants();
+ } else {
+ types = lib.getProgramTypes();
}
- return isSubFbtAdpDuplicate(lib, fileExtension);
- }
-
- private boolean isSubFbtAdpDuplicate(final TypeLibrary lib, final String fileExtension) {
- final Map<String, ? extends TypeEntry> map = switch (fileExtension) {
- case TypeLibraryTags.SUBAPP_TYPE_FILE_ENDING -> lib.getSubAppTypes();
- case TypeLibraryTags.FB_TYPE_FILE_ENDING, TypeLibraryTags.FC_TYPE_FILE_ENDING -> lib.getFbTypes();
- case TypeLibraryTags.ADAPTER_TYPE_FILE_ENDING -> lib.getAdapterTypes();
- default -> null;
- };
- return (null != map) && (map.containsKey(super.getFileName()));
- }
-
- private boolean isDtpDuplicate(final TypeLibrary lib) {
- return lib.getDataTypeLibrary().getTypeIfExists(super.getFileName()) != null;
- }
-
- private boolean isGcfDuplicate(final TypeLibrary lib) {
- final Map<String, ?> map = lib.getGlobalConstants();
- return map.containsKey(super.getFileName());
+ return types.containsKey(getFullTypeName());
}
public File getTemplate() {
@@ -286,6 +266,19 @@
return retval;
}
+ public String getTypeName() {
+ // use super.getFileName here to get the type name without extension
+ return super.getFileName();
+ }
+
+ public String getFullTypeName() {
+ final String packageName = getPackageName();
+ if (!packageName.isBlank()) {
+ return packageName + PackageNameHelper.PACKAGE_NAME_DELIMITER + getTypeName();
+ }
+ return getTypeName();
+ }
+
public boolean getOpenType() {
return openType;
}
diff --git a/plugins/org.eclipse.fordiac.ide.ui.errormessages/META-INF/MANIFEST.MF b/plugins/org.eclipse.fordiac.ide.ui.errormessages/META-INF/MANIFEST.MF
index 439484f..be76013 100644
--- a/plugins/org.eclipse.fordiac.ide.ui.errormessages/META-INF/MANIFEST.MF
+++ b/plugins/org.eclipse.fordiac.ide.ui.errormessages/META-INF/MANIFEST.MF
@@ -4,7 +4,7 @@
Bundle-ActivationPolicy: lazy
Bundle-SymbolicName: org.eclipse.fordiac.ide.ui.errormessages
Bundle-Activator: org.eclipse.fordiac.ide.ui.errormessages.Activator
-Bundle-Version: 1.13.0.qualifier
+Bundle-Version: 3.0.0.qualifier
Bundle-RequiredExecutionEnvironment: JavaSE-17
Bundle-Vendor: Eclipse 4diac
Automatic-Module-Name: org.eclipse.fordiac.ui.errormessages
diff --git a/plugins/org.eclipse.fordiac.ide.ui/META-INF/MANIFEST.MF b/plugins/org.eclipse.fordiac.ide.ui/META-INF/MANIFEST.MF
index faf9cbd..ecaf7b8 100644
--- a/plugins/org.eclipse.fordiac.ide.ui/META-INF/MANIFEST.MF
+++ b/plugins/org.eclipse.fordiac.ide.ui/META-INF/MANIFEST.MF
@@ -15,7 +15,6 @@
org.eclipse.ui.views.properties.tabbed,
org.eclipse.core.commands,
org.eclipse.e4.core.services,
- org.eclipse.osgi.services,
org.eclipse.e4.core.contexts,
org.eclipse.fordiac.ide.ui.errormessages,
org.eclipse.nebula.widgets.grid;visibility:=reexport,
@@ -23,9 +22,10 @@
org.eclipse.e4.ui.workbench,
org.eclipse.e4.ui.model.workbench,
org.eclipse.emf.ecore
+Import-Package: org.osgi.service.event
Bundle-Vendor: Eclipse 4diac
Bundle-ActivationPolicy: lazy
-Bundle-Version: 2.0.1.qualifier
+Bundle-Version: 3.0.0.qualifier
Bundle-Name: Common UI Controls
Bundle-Activator: org.eclipse.fordiac.ide.ui.UIPlugin
Bundle-ManifestVersion: 2
diff --git a/plugins/org.eclipse.fordiac.ide.ui/src/org/eclipse/fordiac/ide/ui/DirectoryChooserControl.java b/plugins/org.eclipse.fordiac.ide.ui/src/org/eclipse/fordiac/ide/ui/DirectoryChooserControl.java
deleted file mode 100644
index 499fde2..0000000
--- a/plugins/org.eclipse.fordiac.ide.ui/src/org/eclipse/fordiac/ide/ui/DirectoryChooserControl.java
+++ /dev/null
@@ -1,179 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2008, 2011, 2014 Profactor GmbH, fortiss GmbH
- *
- * This program and the accompanying materials are made available under the
- * terms of the Eclipse Public License 2.0 which is available at
- * http://www.eclipse.org/legal/epl-2.0.
- *
- * SPDX-License-Identifier: EPL-2.0
- *
- * Contributors:
- * Gerhard Ebenhofer, Alois Zoitl
- * - initial API and implementation and/or initial documentation
- *******************************************************************************/
-package org.eclipse.fordiac.ide.ui;
-
-import java.util.ArrayList;
-import java.util.Iterator;
-import java.util.List;
-
-import org.eclipse.swt.SWT;
-import org.eclipse.swt.custom.CLabel;
-import org.eclipse.swt.events.FocusAdapter;
-import org.eclipse.swt.layout.GridData;
-import org.eclipse.swt.layout.GridLayout;
-import org.eclipse.swt.widgets.Button;
-import org.eclipse.swt.widgets.Composite;
-import org.eclipse.swt.widgets.DirectoryDialog;
-import org.eclipse.swt.widgets.Display;
-import org.eclipse.swt.widgets.Text;
-
-/**
- * The Class DirectoryChooserControl.
- *
- * @author Gerhard Ebenhofer (gerhard.ebenhofer@profactor.at)
- */
-public class DirectoryChooserControl extends Composite {
-
- /** The text. */
- private Text text = null;
-
- /** The label text. */
- private final String labelText;
-
- /**
- * Instantiates a new directory chooser control.
- *
- * @param parent the parent
- * @param style the style
- * @param label the label
- */
- public DirectoryChooserControl(final Composite parent, final int style, final String label) {
- super(parent, style);
- this.labelText = label;
- initialize(false);
- }
-
- /**
- * Initialize.
- */
- private void initialize(boolean useLabel) {
- GridData gridData = new org.eclipse.swt.layout.GridData();
- gridData.horizontalAlignment = org.eclipse.swt.layout.GridData.FILL;
- gridData.grabExcessHorizontalSpace = true;
- gridData.verticalAlignment = org.eclipse.swt.layout.GridData.CENTER;
- GridLayout gridLayout = new GridLayout();
- gridLayout.numColumns = 3;
- gridLayout.marginHeight = 5;
- gridLayout.marginWidth = 0;
- CLabel cLabel = new CLabel(this, SWT.NONE);
- if (useLabel) {
- cLabel.setText(this.labelText);
- } else {
- cLabel.setText(FordiacMessages.DirectoryChooserControl_LABEL_ChooseDirectory);
- }
- text = new Text(this, SWT.BORDER);
- text.setLayoutData(gridData);
- Button button = new Button(this, SWT.NONE);
- button.setText(FordiacMessages.DirectoryChooserControl_LABEL_Browse);
- button.addSelectionListener(new org.eclipse.swt.events.SelectionAdapter() {
- @Override
- public void widgetSelected(final org.eclipse.swt.events.SelectionEvent e) {
- DirectoryDialog dialog = new DirectoryDialog(Display.getDefault().getActiveShell(), SWT.SAVE);
- String dir = text.getText();
-
- dialog.setText(labelText);
- dialog.setMessage(FordiacMessages.DirectoryChooserControl_LABEL_SelectdDirectoryDialogMessage);
-
- if (!dir.equals("")) { //$NON-NLS-1$
- dialog.setFilterPath(dir);
- }
-
- String selectedDirectory = dialog.open();
-
- if (selectedDirectory != null) {
- text.setText(selectedDirectory);
- notifyDirectoryListeners();
- }
-
- }
- });
-
- text.addTraverseListener(e -> {
- if (e.detail == SWT.TRAVERSE_RETURN) {
- e.doit = false;
- notifyDirectoryListeners();
- }
- });
-
- text.addFocusListener(new FocusAdapter() {
-
- /*
- * (non-Javadoc)
- *
- * @see org.eclipse.swt.events.FocusListener#focusLost(org.eclipse.swt
- * .events.FocusEvent)
- */
- @Override
- public void focusLost(org.eclipse.swt.events.FocusEvent e) {
- notifyDirectoryListeners();
- }
-
- });
-
- this.setLayout(gridLayout);
- }
-
- /** The listeners. */
- private List<IDirectoryChanged> listeners = new ArrayList<>();
-
- /**
- * Adds the directory changed listener.
- *
- * @param listener the listener
- */
- public void addDirectoryChangedListener(final IDirectoryChanged listener) {
- if (!listeners.contains(listener)) {
- listeners.add(listener);
- }
- }
-
- /**
- * Removes the directory changed listener.
- *
- * @param listener the listener
- */
- public void removeDirectoryChangedListener(final IDirectoryChanged listener) {
- if (listeners.contains(listener)) {
- listeners.remove(listener);
- }
- }
-
- /**
- * Notify directory listeners.
- */
- private void notifyDirectoryListeners() {
- for (Iterator<IDirectoryChanged> iter = listeners.iterator(); iter.hasNext();) {
- IDirectoryChanged l = iter.next();
- l.directoryChanged(text.getText());
- }
- }
-
- /**
- * Gets the directory.
- *
- * @return the directory
- */
- public String getDirectory() {
- return text.getText();
- }
-
- /**
- * Sets the directory.
- *
- * @param dir the new directory
- */
- public void setDirectory(final String dir) {
- text.setText(dir);
- }
-} // @jve:decl-index=0:visual-constraint="10,10"
diff --git a/plugins/org.eclipse.fordiac.ide.ui/src/org/eclipse/fordiac/ide/ui/FordiacMessages.java b/plugins/org.eclipse.fordiac.ide.ui/src/org/eclipse/fordiac/ide/ui/FordiacMessages.java
index 77c0b81..9d0590f 100644
--- a/plugins/org.eclipse.fordiac.ide.ui/src/org/eclipse/fordiac/ide/ui/FordiacMessages.java
+++ b/plugins/org.eclipse.fordiac.ide.ui/src/org/eclipse/fordiac/ide/ui/FordiacMessages.java
@@ -122,6 +122,10 @@
public static String Group_LABEL_DisableAutoResize; // NOSONAR
public static String Group_TOOLTIP_DisableAutoResize; // NOSONAR
+ public static String Dialog_Add_Or_Remove_Pin; // NOSONAR
+ public static String Dialog_Repair_Pin;// NOSONAR
+ public static String Dialog_Repair_Add;// NOSONAR
+ public static String Dialog_Repair_Remove;// NOSONAR
public static String Subapp_Size_DisableAutoResize; // NOSONAR
diff --git a/plugins/org.eclipse.fordiac.ide.ui/src/org/eclipse/fordiac/ide/ui/IDirectoryChanged.java b/plugins/org.eclipse.fordiac.ide.ui/src/org/eclipse/fordiac/ide/ui/IDirectoryChanged.java
deleted file mode 100644
index 799d4d2..0000000
--- a/plugins/org.eclipse.fordiac.ide.ui/src/org/eclipse/fordiac/ide/ui/IDirectoryChanged.java
+++ /dev/null
@@ -1,28 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2008 Profactor GmbH
- *
- * This program and the accompanying materials are made available under the
- * terms of the Eclipse Public License 2.0 which is available at
- * http://www.eclipse.org/legal/epl-2.0.
- *
- * SPDX-License-Identifier: EPL-2.0
- *
- * Contributors:
- * Gerhard Ebenhofer
- * - initial API and implementation and/or initial documentation
- *******************************************************************************/
-package org.eclipse.fordiac.ide.ui;
-
-/**
- * The Interface IDirectoryChanged.
- */
-public interface IDirectoryChanged {
-
- /**
- * Directory changed.
- *
- * @param newDirectory the new directory
- */
- void directoryChanged(String newDirectory);
-
-}
diff --git a/plugins/org.eclipse.fordiac.ide.ui/src/org/eclipse/fordiac/ide/ui/IFileChanged.java b/plugins/org.eclipse.fordiac.ide.ui/src/org/eclipse/fordiac/ide/ui/IFileChanged.java
deleted file mode 100644
index 8c1598b..0000000
--- a/plugins/org.eclipse.fordiac.ide.ui/src/org/eclipse/fordiac/ide/ui/IFileChanged.java
+++ /dev/null
@@ -1,28 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2008 Profactor GmbH
- *
- * This program and the accompanying materials are made available under the
- * terms of the Eclipse Public License 2.0 which is available at
- * http://www.eclipse.org/legal/epl-2.0.
- *
- * SPDX-License-Identifier: EPL-2.0
- *
- * Contributors:
- * Gerhard Ebenhofer
- * - initial API and implementation and/or initial documentation
- *******************************************************************************/
-package org.eclipse.fordiac.ide.ui;
-
-/**
- * The Interface IFileChanged.
- */
-public interface IFileChanged {
-
- /**
- * File changed.
- *
- * @param newFile the new file - not guaranted that the file exists
- */
- void fileChanged(String newFile);
-
-}
diff --git a/plugins/org.eclipse.fordiac.ide.ui/src/org/eclipse/fordiac/ide/ui/imageprovider/FordiacImage.java b/plugins/org.eclipse.fordiac.ide.ui/src/org/eclipse/fordiac/ide/ui/imageprovider/FordiacImage.java
index 9f1fe26..ca58721 100644
--- a/plugins/org.eclipse.fordiac.ide.ui/src/org/eclipse/fordiac/ide/ui/imageprovider/FordiacImage.java
+++ b/plugins/org.eclipse.fordiac.ide.ui/src/org/eclipse/fordiac/ide/ui/imageprovider/FordiacImage.java
@@ -42,7 +42,9 @@
// Part Images
// Icon Images
- ICON_4DIAC_16, ICON_4DIAC_32,
+ ICON_4DIAC_16,
+ ICON_4DIAC_32,
+ ICON_4DIAC_FORTE,
ICON_ADAPTER_LIST,
ICON_ADAPTER_TYPE, ICON_ADD_STATE, ICON_ALGORITHM, ICON_APPLICATION,
ICON_ATTRIBUTE_DECLARATION,
diff --git a/plugins/org.eclipse.fordiac.ide.ui/src/org/eclipse/fordiac/ide/ui/messages.properties b/plugins/org.eclipse.fordiac.ide.ui/src/org/eclipse/fordiac/ide/ui/messages.properties
index 2ef95ed..cd2cb4a 100644
--- a/plugins/org.eclipse.fordiac.ide.ui/src/org/eclipse/fordiac/ide/ui/messages.properties
+++ b/plugins/org.eclipse.fordiac.ide.ui/src/org/eclipse/fordiac/ide/ui/messages.properties
@@ -88,7 +88,7 @@
With=With
DirectoryChooserControl_LABEL_ChooseDirectory=Choose Directory
-DirectoryChooserControl_LABEL_Browse=Browse
+DirectoryChooserControl_LABEL_Browse=&Browse...
DirectoryChooserControl_LABEL_SelectdDirectoryDialogMessage=Select the directory ...
FordiacPreferencePage_LABEL_PreferencePageDescription=4diac IDE Preferences Page
@@ -118,5 +118,8 @@
Group_LABEL_DisableAutoResize=Disable Auto-Resize
Group_TOOLTIP_DisableAutoResize=Disable Auto-Resize
-
Subapp_Size_DisableAutoResize=Disable Auto-Resize
+Dialog_Add_Or_Remove_Pin=Add pin to type or remove pin from instances?
+Dialog_Repair_Pin= Repair error pin
+Dialog_Repair_Add=add pin to definition
+Dialog_Repair_Remove=Remove pin from instances
diff --git a/plugins/org.eclipse.fordiac.ide.ui/src/org/eclipse/fordiac/ide/ui/widget/AbstractChooserControl.java b/plugins/org.eclipse.fordiac.ide.ui/src/org/eclipse/fordiac/ide/ui/widget/AbstractChooserControl.java
new file mode 100644
index 0000000..65a6b02
--- /dev/null
+++ b/plugins/org.eclipse.fordiac.ide.ui/src/org/eclipse/fordiac/ide/ui/widget/AbstractChooserControl.java
@@ -0,0 +1,169 @@
+/*******************************************************************************
+ * Copyright (c) 2008, 2024 Profactor GmbH, fortiss GmbH,
+ * Primetals Technologies Austria GmbH
+ *
+ * This program and the accompanying materials are made available under the
+ * terms of the Eclipse Public License 2.0 which is available at
+ * http://www.eclipse.org/legal/epl-2.0.
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ * Contributors:
+ * Gerhard Ebenhofer, Alois Zoitl
+ * - initial API and implementation and/or initial documentation
+ * Alois Zoitl - extracted from DirectoryChooser Control
+ *******************************************************************************/
+package org.eclipse.fordiac.ide.ui.widget;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import org.eclipse.fordiac.ide.ui.FordiacMessages;
+import org.eclipse.jface.layout.GridDataFactory;
+import org.eclipse.jface.layout.GridLayoutFactory;
+import org.eclipse.swt.SWT;
+import org.eclipse.swt.events.FocusAdapter;
+import org.eclipse.swt.layout.GridData;
+import org.eclipse.swt.widgets.Button;
+import org.eclipse.swt.widgets.Composite;
+import org.eclipse.swt.widgets.Label;
+import org.eclipse.swt.widgets.Text;
+
+/**
+ * Base class for a chooser control, which has combined a text field and a
+ * button.
+ *
+ */
+public abstract class AbstractChooserControl extends Composite {
+
+ public interface IChooserValueChanged {
+
+ /**
+ * Value in the c hooser control has changed.
+ *
+ * @param newValue the new value in the chooser control
+ */
+ void chooserChanged(String newValue);
+
+ }
+
+ private final List<IChooserValueChanged> listeners = new ArrayList<>();
+
+ private Text text = null;
+
+ /**
+ * Instantiates a new directory chooser control.
+ *
+ * @param parent the parent
+ * @param style the style
+ * @param label the label
+ */
+ protected AbstractChooserControl(final Composite parent, final int style, final String label,
+ final boolean labelInParent) {
+ super(parent, style);
+ initialize(label, labelInParent);
+ }
+
+ /**
+ * Initialize.
+ *
+ * @param labelInParent
+ */
+ private void initialize(final String labelText, final boolean labelInParent) {
+ GridLayoutFactory.fillDefaults().numColumns(3).margins(0, 5).applyTo(this);
+ GridDataFactory.fillDefaults().align(GridData.FILL, GridData.CENTER).grab(true, false).applyTo(this);
+
+ final Label label = new Label(labelInParent ? getParent() : this, SWT.NONE);
+ label.setText(labelText);
+ if (labelInParent) {
+ label.moveAbove(this);
+ }
+
+ text = new Text(this, SWT.BORDER);
+ GridDataFactory.fillDefaults().align(GridData.FILL, GridData.CENTER).grab(true, false).applyTo(text);
+
+ final Button button = new Button(this, SWT.NONE);
+ button.setText(FordiacMessages.DirectoryChooserControl_LABEL_Browse);
+ button.addSelectionListener(new org.eclipse.swt.events.SelectionAdapter() {
+ @Override
+ public void widgetSelected(final org.eclipse.swt.events.SelectionEvent e) {
+
+ final String selectedValue = openChooserDialog(label.getText(), text.getText());
+
+ if (selectedValue != null) {
+ text.setText(selectedValue);
+ notifyListeners();
+ }
+
+ }
+
+ });
+
+ text.addTraverseListener(e -> {
+ if (e.detail == SWT.TRAVERSE_RETURN) {
+ e.doit = false;
+ notifyListeners();
+ }
+ });
+
+ text.addFocusListener(new FocusAdapter() {
+
+ /*
+ * (non-Javadoc)
+ *
+ * @see org.eclipse.swt.events.FocusListener#focusLost(org.eclipse.swt
+ * .events.FocusEvent)
+ */
+ @Override
+ public void focusLost(final org.eclipse.swt.events.FocusEvent e) {
+ notifyListeners();
+ }
+
+ });
+
+ }
+
+ protected abstract String openChooserDialog(final String labelText, final String value);
+
+ /**
+ * Adds the chooser changed listener.
+ *
+ * @param listener the listener
+ */
+ public void addChooserValueChangedListener(final IChooserValueChanged listener) {
+ if (!listeners.contains(listener)) {
+ listeners.add(listener);
+ }
+ }
+
+ /**
+ * Removes the chooser changed listener.
+ *
+ * @param listener the listener
+ */
+ public void removeChooserChangedListener(final IChooserValueChanged listener) {
+ listeners.remove(listener);
+ }
+
+ /**
+ * Notify chooser listeners.
+ */
+ private void notifyListeners() {
+ for (final IChooserValueChanged l : listeners) {
+ l.chooserChanged(text.getText());
+ }
+ }
+
+ public String getValue() {
+ return text.getText();
+ }
+
+ /**
+ * Sets the value
+ *
+ * @param newValue the new value for the chooser dialog
+ */
+ public void setValue(final String newValue) {
+ text.setText(newValue);
+ }
+}
diff --git a/plugins/org.eclipse.fordiac.ide.ui/src/org/eclipse/fordiac/ide/ui/widget/DirectoryChooserControl.java b/plugins/org.eclipse.fordiac.ide.ui/src/org/eclipse/fordiac/ide/ui/widget/DirectoryChooserControl.java
new file mode 100644
index 0000000..72808e4
--- /dev/null
+++ b/plugins/org.eclipse.fordiac.ide.ui/src/org/eclipse/fordiac/ide/ui/widget/DirectoryChooserControl.java
@@ -0,0 +1,56 @@
+/*******************************************************************************
+ * Copyright (c) 2008, 2024 Profactor GmbH, fortiss GmbH,
+ * Primetals Technologies Austria GmbH
+ *
+ * This program and the accompanying materials are made available under the
+ * terms of the Eclipse Public License 2.0 which is available at
+ * http://www.eclipse.org/legal/epl-2.0.
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ * Contributors:
+ * Gerhard Ebenhofer, Alois Zoitl
+ * - initial API and implementation and/or initial documentation
+ *******************************************************************************/
+package org.eclipse.fordiac.ide.ui.widget;
+
+import org.eclipse.fordiac.ide.ui.FordiacMessages;
+import org.eclipse.swt.SWT;
+import org.eclipse.swt.widgets.Composite;
+import org.eclipse.swt.widgets.DirectoryDialog;
+
+/**
+ * The Class DirectoryChooserControl.
+ *
+ */
+public class DirectoryChooserControl extends AbstractChooserControl {
+
+ /**
+ * Instantiates a new directory chooser control.
+ *
+ * @param parent the parent
+ * @param style the style
+ * @param label the label
+ */
+ public DirectoryChooserControl(final Composite parent, final int style, final String label) {
+ super(parent, style, label, false);
+ }
+
+ public DirectoryChooserControl(final Composite parent, final int style, final String label,
+ final boolean labelInParent) {
+ super(parent, style, label, labelInParent);
+ }
+
+ @Override
+ protected String openChooserDialog(final String labelText, final String value) {
+ final DirectoryDialog dialog = new DirectoryDialog(this.getShell(), SWT.SAVE);
+ dialog.setText(labelText);
+ dialog.setMessage(FordiacMessages.DirectoryChooserControl_LABEL_SelectdDirectoryDialogMessage);
+
+ if (!value.isEmpty()) {
+ dialog.setFilterPath(value);
+ }
+ return dialog.open();
+ }
+
+}
diff --git a/plugins/org.eclipse.fordiac.ide.ui/src/org/eclipse/fordiac/ide/ui/widget/FileChooserControl.java b/plugins/org.eclipse.fordiac.ide.ui/src/org/eclipse/fordiac/ide/ui/widget/FileChooserControl.java
new file mode 100644
index 0000000..ca9b870
--- /dev/null
+++ b/plugins/org.eclipse.fordiac.ide.ui/src/org/eclipse/fordiac/ide/ui/widget/FileChooserControl.java
@@ -0,0 +1,42 @@
+/*******************************************************************************
+ * Copyright (c) 2024 Primetals Technologies Austria GmbH
+ *
+ * This program and the accompanying materials are made available under the
+ * terms of the Eclipse Public License 2.0 which is available at
+ * http://www.eclipse.org/legal/epl-2.0.
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ * Contributors:
+ * Alois Zoitl - initial API and implementation and/or initial documentation
+ *******************************************************************************/
+package org.eclipse.fordiac.ide.ui.widget;
+
+import org.eclipse.swt.SWT;
+import org.eclipse.swt.widgets.Composite;
+import org.eclipse.swt.widgets.FileDialog;
+
+public class FileChooserControl extends AbstractChooserControl {
+
+ public FileChooserControl(final Composite parent, final int style, final String label,
+ final boolean labelInParent) {
+ super(parent, style, label, labelInParent);
+ }
+
+ public FileChooserControl(final Composite parent, final int style, final String label) {
+ super(parent, style, label, false);
+ }
+
+ @Override
+ protected String openChooserDialog(final String labelText, final String value) {
+ final FileDialog dialog = new FileDialog(this.getShell(), SWT.OPEN);
+ dialog.setText(labelText);
+
+ if (!value.isEmpty()) {
+ dialog.setFilterPath(value);
+ }
+
+ return dialog.open();
+ }
+
+}
diff --git a/plugins/org.eclipse.fordiac.ide.util/META-INF/MANIFEST.MF b/plugins/org.eclipse.fordiac.ide.util/META-INF/MANIFEST.MF
index c3d118f..656af87 100644
--- a/plugins/org.eclipse.fordiac.ide.util/META-INF/MANIFEST.MF
+++ b/plugins/org.eclipse.fordiac.ide.util/META-INF/MANIFEST.MF
@@ -9,7 +9,7 @@
org.eclipse.fordiac.ide.systemmanagement
Bundle-Vendor: Eclipse 4diac
Bundle-ActivationPolicy: lazy
-Bundle-Version: 2.0.0.qualifier
+Bundle-Version: 3.0.0.qualifier
Bundle-Name: Utils
Bundle-ManifestVersion: 2
Bundle-SymbolicName: org.eclipse.fordiac.ide.util;singleton:=true
diff --git a/plugins/org.eclipse.fordiac.ide.validation/META-INF/MANIFEST.MF b/plugins/org.eclipse.fordiac.ide.validation/META-INF/MANIFEST.MF
index 4eb0bce..01a78ab 100644
--- a/plugins/org.eclipse.fordiac.ide.validation/META-INF/MANIFEST.MF
+++ b/plugins/org.eclipse.fordiac.ide.validation/META-INF/MANIFEST.MF
@@ -2,7 +2,7 @@
Bundle-ManifestVersion: 2
Bundle-Name: Validation
Bundle-SymbolicName: org.eclipse.fordiac.ide.validation;singleton:=true
-Bundle-Version: 2.0.0.qualifier
+Bundle-Version: 3.0.0.qualifier
Bundle-Activator: org.eclipse.fordiac.ide.validation.Activator
Bundle-RequiredExecutionEnvironment: JavaSE-17
Require-Bundle: org.eclipse.core.runtime,
diff --git a/plugins/org.eclipse.fordiac.ide/META-INF/MANIFEST.MF b/plugins/org.eclipse.fordiac.ide/META-INF/MANIFEST.MF
index 0cb5953..2690d40 100644
--- a/plugins/org.eclipse.fordiac.ide/META-INF/MANIFEST.MF
+++ b/plugins/org.eclipse.fordiac.ide/META-INF/MANIFEST.MF
@@ -6,7 +6,7 @@
org.eclipse.fordiac.ide.systemmanagement
Bundle-Vendor: Eclipse 4diac
Bundle-ActivationPolicy: lazy
-Bundle-Version: 2.0.1.qualifier
+Bundle-Version: 3.0.0.qualifier
Bundle-Name: Main
Bundle-Activator: org.eclipse.fordiac.ide.Activator
Bundle-ManifestVersion: 2
diff --git a/plugins/org.eclipse.fordiac.ide/pom.xml b/plugins/org.eclipse.fordiac.ide/pom.xml
index ca3be49..646cbb6 100644
--- a/plugins/org.eclipse.fordiac.ide/pom.xml
+++ b/plugins/org.eclipse.fordiac.ide/pom.xml
@@ -6,7 +6,7 @@
<relativePath>../../pom.xml</relativePath>
<groupId>org.eclipse.fordiac</groupId>
<artifactId>parent</artifactId>
- <version>2.0.1-SNAPSHOT</version>
+ <version>3.0.0-SNAPSHOT</version>
</parent>
<artifactId>org.eclipse.fordiac.ide</artifactId>
diff --git a/pom.xml b/pom.xml
index 7941c17..485ba3f 100644
--- a/pom.xml
+++ b/pom.xml
@@ -5,7 +5,7 @@
<modelVersion>4.0.0</modelVersion>
<groupId>org.eclipse.fordiac</groupId>
<artifactId>parent</artifactId>
- <version>2.0.1-SNAPSHOT</version>
+ <version>3.0.0-SNAPSHOT</version>
<packaging>pom</packaging>
<name>Eclipse 4diac IDE Parent Project</name>
<modules>
@@ -19,16 +19,16 @@
<maven.compiler.source>17</maven.compiler.source>
<maven.compiler.target>17</maven.compiler.target>
<maven.compiler.release/>
- <tycho.version>4.0.4</tycho.version>
- <tycho-repo.url>https://download.eclipse.org/releases/2023-12</tycho-repo.url>
+ <tycho.version>4.0.6</tycho.version>
+ <tycho-repo.url>https://download.eclipse.org/releases/2024-03</tycho-repo.url>
<sonar.exclusions>**/src-gen/**/*,**/xtend-gen/**/*</sonar.exclusions>
<sonar.projectName>Eclipse 4diac</sonar.projectName>
<sonar.java.source>17</sonar.java.source>
<org.eclipse.justj.jre.repository>https://download.eclipse.org/justj/jres/17/updates/release/latest</org.eclipse.justj.jre.repository>
- <xtend-version>2.33.0</xtend-version>
- <eclipse.platform.version>4.30</eclipse.platform.version>
- <equinox.executable.version>3.8.2300</equinox.executable.version>
- <eclipse.cbi.version>1.4.2</eclipse.cbi.version>
+ <xtend-version>2.34.0</xtend-version>
+ <eclipse.platform.version>4.31</eclipse.platform.version>
+ <equinox.executable.version>3.8.2400</equinox.executable.version>
+ <eclipse.cbi.version>1.4.3</eclipse.cbi.version>
</properties>
<repositories>
@@ -62,7 +62,7 @@
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-clean-plugin</artifactId>
- <version>3.1.0</version>
+ <version>3.3.2</version>
<configuration>
<filesets>
<fileset>
@@ -118,7 +118,7 @@
<artifact>
<groupId>org.eclipse.fordiac</groupId>
<artifactId>org.eclipse.fordiac.ide.product</artifactId>
- <version>2.0.1-SNAPSHOT</version>
+ <version>3.0.0-SNAPSHOT</version>
</artifact>
</target>
@@ -255,7 +255,7 @@
<dependency>
<groupId>org.junit.jupiter</groupId>
<artifactId>junit-jupiter</artifactId>
- <version>5.10.0</version>
+ <version>5.10.2</version>
</dependency>
<dependency>
<groupId>org.eclipse.xtend</groupId>
diff --git a/tests/org.eclipse.fordiac.ide.test.contracts/META-INF/MANIFEST.MF b/tests/org.eclipse.fordiac.ide.test.contracts/META-INF/MANIFEST.MF
index fe018c7..024f381 100644
--- a/tests/org.eclipse.fordiac.ide.test.contracts/META-INF/MANIFEST.MF
+++ b/tests/org.eclipse.fordiac.ide.test.contracts/META-INF/MANIFEST.MF
@@ -2,7 +2,7 @@
Bundle-ManifestVersion: 2
Bundle-Name: Contracts Tests
Bundle-SymbolicName: org.eclipse.fordiac.ide.test.contracts
-Bundle-Version: 2.0.1.qualifier
+Bundle-Version: 3.0.0.qualifier
Fragment-Host: org.eclipse.fordiac.ide.contracts
Automatic-Module-Name: org.eclipse.fordiac.ide.test.contracts
Bundle-RequiredExecutionEnvironment: JavaSE-17
diff --git a/tests/org.eclipse.fordiac.ide.test.contracts/pom.xml b/tests/org.eclipse.fordiac.ide.test.contracts/pom.xml
index 6733482..d21c01b 100644
--- a/tests/org.eclipse.fordiac.ide.test.contracts/pom.xml
+++ b/tests/org.eclipse.fordiac.ide.test.contracts/pom.xml
@@ -6,10 +6,10 @@
<relativePath>../../pom.xml</relativePath>
<groupId>org.eclipse.fordiac</groupId>
<artifactId>parent</artifactId>
- <version>2.0.1-SNAPSHOT</version>
+ <version>3.0.0-SNAPSHOT</version>
</parent>
<artifactId>org.eclipse.fordiac.ide.test.contracts</artifactId>
<packaging>eclipse-test-plugin</packaging>
-<version>2.0.1-SNAPSHOT</version>
+
</project>
diff --git a/tests/org.eclipse.fordiac.ide.test.contracts/src/org/eclipse/fordiac/ide/test/model/contracts/ContractTest.java b/tests/org.eclipse.fordiac.ide.test.contracts/src/org/eclipse/fordiac/ide/test/model/contracts/ContractTest.java
index 922be4c..49c09fc 100644
--- a/tests/org.eclipse.fordiac.ide.test.contracts/src/org/eclipse/fordiac/ide/test/model/contracts/ContractTest.java
+++ b/tests/org.eclipse.fordiac.ide.test.contracts/src/org/eclipse/fordiac/ide/test/model/contracts/ContractTest.java
@@ -21,7 +21,7 @@
import org.eclipse.fordiac.ide.model.libraryElement.Event;
import org.eclipse.fordiac.ide.model.libraryElement.InterfaceList;
import org.eclipse.fordiac.ide.model.libraryElement.LibraryElementFactory;
-import org.eclipse.fordiac.ide.model.libraryElement.SubApp;
+import org.eclipse.fordiac.ide.model.libraryElement.UntypedSubApp;
import org.junit.jupiter.api.Test;
class ContractTest {
@@ -32,7 +32,7 @@
final Contract contract = Contract
.getContractFromComment("ASSUMPTION CU occurs every [11,22]ms" + System.lineSeparator() //$NON-NLS-1$
+ "GUARANTEE Whenever event CU occurs, then event CUO occurs within [7,10]ms"); //$NON-NLS-1$
- final SubApp subApp = LibraryElementFactory.eINSTANCE.createSubApp();
+ final UntypedSubApp subApp = LibraryElementFactory.eINSTANCE.createUntypedSubApp();
subApp.setName("_CONTRACT_Test"); //$NON-NLS-1$
contract.setOwner(subApp);
final InterfaceList iList = LibraryElementFactory.eINSTANCE.createInterfaceList();
@@ -55,7 +55,7 @@
final Contract contract = Contract
.getContractFromComment("ASSUMPTION CU occurs every [11,22]ms" + System.lineSeparator() //$NON-NLS-1$
+ "GUARANTEE Whenever event CU occurs, then event CUO occurs within [7,10]ms"); //$NON-NLS-1$
- final SubApp subApp = LibraryElementFactory.eINSTANCE.createSubApp();
+ final UntypedSubApp subApp = LibraryElementFactory.eINSTANCE.createUntypedSubApp();
subApp.setName("_CONTRACT_Test"); //$NON-NLS-1$
contract.setOwner(subApp);
final InterfaceList iList = LibraryElementFactory.eINSTANCE.createInterfaceList();
diff --git a/tests/org.eclipse.fordiac.ide.test.contracts/src/org/eclipse/fordiac/ide/test/model/contracts/SimplifyAssumptionTest.java b/tests/org.eclipse.fordiac.ide.test.contracts/src/org/eclipse/fordiac/ide/test/model/contracts/SimplifyAssumptionTest.java
index 6f5e734..d0f93d7 100644
--- a/tests/org.eclipse.fordiac.ide.test.contracts/src/org/eclipse/fordiac/ide/test/model/contracts/SimplifyAssumptionTest.java
+++ b/tests/org.eclipse.fordiac.ide.test.contracts/src/org/eclipse/fordiac/ide/test/model/contracts/SimplifyAssumptionTest.java
@@ -21,7 +21,7 @@
import org.eclipse.fordiac.ide.model.libraryElement.Event;
import org.eclipse.fordiac.ide.model.libraryElement.InterfaceList;
import org.eclipse.fordiac.ide.model.libraryElement.LibraryElementFactory;
-import org.eclipse.fordiac.ide.model.libraryElement.SubApp;
+import org.eclipse.fordiac.ide.model.libraryElement.UntypedSubApp;
import org.junit.jupiter.api.Test;
class SimplifyAssumptionTest {
@@ -32,7 +32,7 @@
final Contract contract = Contract
.getContractFromComment("ASSUMPTION CU occurs every [11,22]ms" + System.lineSeparator() //$NON-NLS-1$
+ "ASSUMPTION CU occurs every [5,16]ms"); //$NON-NLS-1$
- final SubApp subApp = LibraryElementFactory.eINSTANCE.createSubApp();
+ final UntypedSubApp subApp = LibraryElementFactory.eINSTANCE.createUntypedSubApp();
subApp.setName("_CONTRACT_Test"); //$NON-NLS-1$
contract.setOwner(subApp);
final InterfaceList iList = LibraryElementFactory.eINSTANCE.createInterfaceList();
diff --git a/tests/org.eclipse.fordiac.ide.test.contracts/src/org/eclipse/fordiac/ide/test/model/contracts/SimplifyGuaranteeTest.java b/tests/org.eclipse.fordiac.ide.test.contracts/src/org/eclipse/fordiac/ide/test/model/contracts/SimplifyGuaranteeTest.java
index d476435..ba3176e 100644
--- a/tests/org.eclipse.fordiac.ide.test.contracts/src/org/eclipse/fordiac/ide/test/model/contracts/SimplifyGuaranteeTest.java
+++ b/tests/org.eclipse.fordiac.ide.test.contracts/src/org/eclipse/fordiac/ide/test/model/contracts/SimplifyGuaranteeTest.java
@@ -21,7 +21,7 @@
import org.eclipse.fordiac.ide.model.libraryElement.Event;
import org.eclipse.fordiac.ide.model.libraryElement.InterfaceList;
import org.eclipse.fordiac.ide.model.libraryElement.LibraryElementFactory;
-import org.eclipse.fordiac.ide.model.libraryElement.SubApp;
+import org.eclipse.fordiac.ide.model.libraryElement.UntypedSubApp;
import org.junit.jupiter.api.Test;
class SimplifyGuaranteeTest {
@@ -31,7 +31,7 @@
final Contract contract = Contract.getContractFromComment(
"GUARANTEE Whenever event CU occurs, then event CUO occurs within [7,100]ms" + System.lineSeparator() //$NON-NLS-1$
+ "GUARANTEE Whenever event CU occurs, then event CUO occurs within [50,90]ms"); //$NON-NLS-1$
- final SubApp subApp = LibraryElementFactory.eINSTANCE.createSubApp();
+ final UntypedSubApp subApp = LibraryElementFactory.eINSTANCE.createUntypedSubApp();
subApp.setName("_CONTRACT_Test"); //$NON-NLS-1$
contract.setOwner(subApp);
final InterfaceList iList = LibraryElementFactory.eINSTANCE.createInterfaceList();
diff --git a/tests/org.eclipse.fordiac.ide.test.export/META-INF/MANIFEST.MF b/tests/org.eclipse.fordiac.ide.test.export/META-INF/MANIFEST.MF
index d7e5242..eef63d7 100644
--- a/tests/org.eclipse.fordiac.ide.test.export/META-INF/MANIFEST.MF
+++ b/tests/org.eclipse.fordiac.ide.test.export/META-INF/MANIFEST.MF
@@ -2,7 +2,7 @@
Bundle-ManifestVersion: 2
Bundle-Name: forte_ng Tests
Bundle-SymbolicName: org.eclipse.fordiac.ide.test.export
-Bundle-Version: 2.0.1.qualifier
+Bundle-Version: 3.0.0.qualifier
Fragment-Host: org.eclipse.fordiac.ide.export.forte_ng
Automatic-Module-Name: org.eclipse.fordiac.ide.test.export
Bundle-RequiredExecutionEnvironment: JavaSE-17
diff --git a/tests/org.eclipse.fordiac.ide.test.export/src/org/eclipse/fordiac/ide/test/export/forte_lua/st/ForteLuaStOperatorTest.xtend b/tests/org.eclipse.fordiac.ide.test.export/src/org/eclipse/fordiac/ide/test/export/forte_lua/st/ForteLuaStOperatorTest.xtend
index 20a87d7..466f308 100644
--- a/tests/org.eclipse.fordiac.ide.test.export/src/org/eclipse/fordiac/ide/test/export/forte_lua/st/ForteLuaStOperatorTest.xtend
+++ b/tests/org.eclipse.fordiac.ide.test.export/src/org/eclipse/fordiac/ide/test/export/forte_lua/st/ForteLuaStOperatorTest.xtend
@@ -14,6 +14,7 @@
import org.eclipse.fordiac.ide.export.forte_lua.st.StructuredTextSupportFactory
import org.eclipse.fordiac.ide.export.language.ILanguageSupportFactory
+import org.eclipse.fordiac.ide.globalconstantseditor.GlobalConstantsStandaloneSetup
import org.eclipse.fordiac.ide.model.libraryElement.LibraryElementFactory
import org.eclipse.fordiac.ide.model.typelibrary.DataTypeLibrary
import org.eclipse.fordiac.ide.structuredtextalgorithm.STAlgorithmStandaloneSetup
@@ -33,6 +34,7 @@
@BeforeAll
def static void setup() {
new DataTypeLibrary()
+ GlobalConstantsStandaloneSetup.doSetup()
STFunctionStandaloneSetup.doSetup()
STAlgorithmStandaloneSetup.doSetup()
StructuredTextSupportFactory.register()
diff --git a/tests/org.eclipse.fordiac.ide.test.fb.interpreter/META-INF/MANIFEST.MF b/tests/org.eclipse.fordiac.ide.test.fb.interpreter/META-INF/MANIFEST.MF
index 5487425..37925dd 100644
--- a/tests/org.eclipse.fordiac.ide.test.fb.interpreter/META-INF/MANIFEST.MF
+++ b/tests/org.eclipse.fordiac.ide.test.fb.interpreter/META-INF/MANIFEST.MF
@@ -2,7 +2,7 @@
Bundle-ManifestVersion: 2
Bundle-Name: FB Interpreter
Bundle-SymbolicName: org.eclipse.fordiac.ide.test.fb.interpreter
-Bundle-Version: 2.0.0.qualifier
+Bundle-Version: 3.0.0.qualifier
Require-Bundle: org.eclipse.ui,
org.eclipse.core.runtime,
org.eclipse.emf.ecore.xmi,
diff --git a/tests/org.eclipse.fordiac.ide.test.model.commands/META-INF/MANIFEST.MF b/tests/org.eclipse.fordiac.ide.test.model.commands/META-INF/MANIFEST.MF
index 99a03f7..1a5f85e 100644
--- a/tests/org.eclipse.fordiac.ide.test.model.commands/META-INF/MANIFEST.MF
+++ b/tests/org.eclipse.fordiac.ide.test.model.commands/META-INF/MANIFEST.MF
@@ -2,7 +2,7 @@
Bundle-ManifestVersion: 2
Bundle-Name: Model Command Tests
Bundle-SymbolicName: org.eclipse.fordiac.ide.test.model.commands
-Bundle-Version: 2.0.1.qualifier
+Bundle-Version: 3.0.0.qualifier
Fragment-Host: org.eclipse.fordiac.ide.model.commands
Automatic-Module-Name: org.eclipse.fordiac.ide.test.model.commands
Bundle-RequiredExecutionEnvironment: JavaSE-17
@@ -10,7 +10,6 @@
Require-Bundle: org.eclipse.core.resources,
org.junit,
org.eclipse.e4.core.services,
- org.eclipse.osgi.services,
org.eclipse.e4.core.contexts,
org.eclipse.fordiac.ide.application,
org.eclipse.fordiac.ide.elk,
@@ -21,4 +20,5 @@
org.junit.jupiter.api,
org.junit.jupiter.params,
org.junit.jupiter.params.provider,
- org.opentest4j
+ org.opentest4j,
+ org.osgi.service.event
diff --git a/tests/org.eclipse.fordiac.ide.test.model.commands/pom.xml b/tests/org.eclipse.fordiac.ide.test.model.commands/pom.xml
index 43af62c..803117d 100644
--- a/tests/org.eclipse.fordiac.ide.test.model.commands/pom.xml
+++ b/tests/org.eclipse.fordiac.ide.test.model.commands/pom.xml
@@ -6,10 +6,10 @@
<relativePath>../../pom.xml</relativePath>
<groupId>org.eclipse.fordiac</groupId>
<artifactId>parent</artifactId>
- <version>2.0.1-SNAPSHOT</version>
+ <version>3.0.0-SNAPSHOT</version>
</parent>
<artifactId>org.eclipse.fordiac.ide.test.model.commands</artifactId>
<packaging>eclipse-test-plugin</packaging>
-<version>2.0.1-SNAPSHOT</version>
+
</project>
\ No newline at end of file
diff --git a/tests/org.eclipse.fordiac.ide.test.model.commands/src/org/eclipse/fordiac/ide/model/commands/change/CreateStructFromInterfaceElementsCommandTest.java b/tests/org.eclipse.fordiac.ide.test.model.commands/src/org/eclipse/fordiac/ide/model/commands/change/CreateStructFromInterfaceElementsCommandTest.java
index f059df6..0dc51ce 100644
--- a/tests/org.eclipse.fordiac.ide.test.model.commands/src/org/eclipse/fordiac/ide/model/commands/change/CreateStructFromInterfaceElementsCommandTest.java
+++ b/tests/org.eclipse.fordiac.ide.test.model.commands/src/org/eclipse/fordiac/ide/model/commands/change/CreateStructFromInterfaceElementsCommandTest.java
@@ -34,14 +34,14 @@
import org.junit.jupiter.params.provider.Arguments;
public class CreateStructFromInterfaceElementsCommandTest
-extends CommandTestBase<CreateStructFromInterfaceElementsCommandTest.State> {
+ extends CommandTestBase<CreateStructFromInterfaceElementsCommandTest.State> {
private static final String SET_STRUCT_NAME = "setStruct"; //$NON-NLS-1$
public static class State extends CommandTestBase.StateBase {
private final SubApp subApp;
public State() {
- subApp = LibraryElementFactory.eINSTANCE.createSubApp();
+ subApp = LibraryElementFactory.eINSTANCE.createUntypedSubApp();
subApp.setInterface(LibraryElementFactory.eINSTANCE.createInterfaceList());
}
@@ -65,12 +65,12 @@
new ExecutionDescription<>("Prepare Functionblocks", //$NON-NLS-1$
CreateStructFromInterfaceElementsCommandTest::createInterfaceElements, //
CreateStructFromInterfaceElementsCommandTest::verifyFBCreation //
- ), //
+ ), //
new ExecutionDescription<>("Replace first element", //$NON-NLS-1$
CreateStructFromInterfaceElementsCommandTest::testWithOneElement, //
CreateStructFromInterfaceElementsCommandTest::verifyTestWithOneElement //
- ) //
- );
+ ) //
+ );
final Collection<Arguments> a = new ArrayList<>();
a.addAll(describeCommand("FB with two inputs and outputs", State::new, //$NON-NLS-1$
(StateVerifier<State>) CreateStructFromInterfaceElementsCommandTest::verifyInitalValues,
diff --git a/tests/org.eclipse.fordiac.ide.test.model.commands/src/org/eclipse/fordiac/ide/model/commands/change/ToggleSubappRepresentationTest.java b/tests/org.eclipse.fordiac.ide.test.model.commands/src/org/eclipse/fordiac/ide/model/commands/change/ToggleSubappRepresentationTest.java
index 23ae31d..27f3b58 100644
--- a/tests/org.eclipse.fordiac.ide.test.model.commands/src/org/eclipse/fordiac/ide/model/commands/change/ToggleSubappRepresentationTest.java
+++ b/tests/org.eclipse.fordiac.ide.test.model.commands/src/org/eclipse/fordiac/ide/model/commands/change/ToggleSubappRepresentationTest.java
@@ -34,10 +34,10 @@
}
public State() {
- subapp = LibraryElementFactory.eINSTANCE.createSubApp();
+ subapp = LibraryElementFactory.eINSTANCE.createUntypedSubApp();
}
- public State(State s) {
+ public State(final State s) {
subapp = EcoreUtil.copy(s.getSubApp());
}
@@ -47,23 +47,24 @@
}
}
- protected static Collection<Arguments> describeCommand(String description, StateInitializer<?> initializer,
- StateVerifier<?> initialVerifier, List<ExecutionDescription<?>> commands) {
+ protected static Collection<Arguments> describeCommand(final String description,
+ final StateInitializer<?> initializer, final StateVerifier<?> initialVerifier,
+ final List<ExecutionDescription<?>> commands) {
return describeCommand(description, initializer, initialVerifier, commands, CommandTestBase::defaultUndoCommand,
CommandTestBase::defaultRedoCommand);
}
- protected static void verifyDefaultInitialValues(State state, State oldState, TestFunction t) {
+ protected static void verifyDefaultInitialValues(final State state, final State oldState, final TestFunction t) {
t.test(state.getSubApp());
t.test(!state.getSubApp().isUnfolded());
}
- protected static void verifyUnfolded(State state, State oldState, TestFunction t) {
+ protected static void verifyUnfolded(final State state, final State oldState, final TestFunction t) {
t.test(state.getSubApp());
t.test(state.getSubApp().isUnfolded());
}
- private static State toggleFolding(State state) {
+ private static State toggleFolding(final State state) {
state.setCommand(new ToggleSubAppRepresentationCommand(state.getSubApp()));
return commandExecution(state);
@@ -71,8 +72,8 @@
// define here the list of test sequences
// multiple execution descriptions are possible -> define in test class
- protected static List<Arguments> createCommands(List<ExecutionDescription<?>> executionDescriptions) {
- List<Arguments> commands = new ArrayList<>();
+ protected static List<Arguments> createCommands(final List<ExecutionDescription<?>> executionDescriptions) {
+ final List<Arguments> commands = new ArrayList<>();
// test series 1
commands.addAll(describeCommand("Toggling Attribute", // //$NON-NLS-1$
State::new, //
diff --git a/tests/org.eclipse.fordiac.ide.test.model.commands/src/org/eclipse/fordiac/ide/model/commands/change/UntypeSubAppCommandTest.java b/tests/org.eclipse.fordiac.ide.test.model.commands/src/org/eclipse/fordiac/ide/model/commands/change/UntypeSubAppCommandTest.java
index 126de0d..2606d09 100644
--- a/tests/org.eclipse.fordiac.ide.test.model.commands/src/org/eclipse/fordiac/ide/model/commands/change/UntypeSubAppCommandTest.java
+++ b/tests/org.eclipse.fordiac.ide.test.model.commands/src/org/eclipse/fordiac/ide/model/commands/change/UntypeSubAppCommandTest.java
@@ -17,7 +17,7 @@
import java.util.Collection;
import java.util.List;
-import org.eclipse.fordiac.ide.application.commands.NewSubAppCommandTest;
+import org.eclipse.fordiac.ide.model.commands.create.CreateSubAppInstanceCommand;
import org.eclipse.fordiac.ide.model.commands.create.FBCreateCommandTest;
import org.eclipse.fordiac.ide.model.commands.testinfra.FBNetworkTestBase;
import org.eclipse.fordiac.ide.model.libraryElement.FB;
@@ -37,17 +37,16 @@
private static State initState() {
State s = new State();
- s = NewSubAppCommandTest.createEmptySubApp(s);
- final SubApp subapp = (SubApp) s.getFbNetwork().getElementNamed(SUBAPP);
final SubAppType subappType = LibraryElementFactory.eINSTANCE.createSubAppType();
subappType.setInterfaceList(LibraryElementFactory.eINSTANCE.createInterfaceList());
subappType.setName(SUBAPP);
- subappType.setFBNetwork(subapp.getSubAppNetwork());
- subapp.setSubAppNetwork(null);
+ subappType.setFBNetwork(LibraryElementFactory.eINSTANCE.createFBNetwork());
- subapp.setTypeEntry(
- new SubAppTypeEntryMock(subappType, TypeLibraryManager.INSTANCE.getTypeLibrary(null), null));
+ final SubAppTypeEntryMock typeEntry = new SubAppTypeEntryMock(subappType,
+ TypeLibraryManager.INSTANCE.getTypeLibrary(null), null);
+ s.setCommand(new CreateSubAppInstanceCommand(typeEntry, s.getFbNetwork(), 0, 0));
+ s = commandExecution(s);
return s;
}
@@ -123,8 +122,8 @@
new ExecutionDescription<>("untype subapp", //$NON-NLS-1$
UntypeSubAppCommandTest::untypeSubApp, //
UntypeSubAppCommandTest::verifyUntypeSubApp //
- )) //
- ));
+ )) //
+ ));
a.addAll(describeCommand("Start with typed subapp and two FBs in subapp network", //$NON-NLS-1$
UntypeSubAppCommandTest::initStateWithFilledSubAppNetwork, //
@@ -133,8 +132,8 @@
new ExecutionDescription<>("untype subapp", //$NON-NLS-1$
UntypeSubAppCommandTest::untypeSubApp, //
UntypeSubAppCommandTest::verifyUntypeSubAppWithFilledSubAppNetwork //
- )) //
- ));
+ )) //
+ ));
return a;
}
diff --git a/tests/org.eclipse.fordiac.ide.test.model.eval/META-INF/MANIFEST.MF b/tests/org.eclipse.fordiac.ide.test.model.eval/META-INF/MANIFEST.MF
index c5b7cad..b43feeb 100644
--- a/tests/org.eclipse.fordiac.ide.test.model.eval/META-INF/MANIFEST.MF
+++ b/tests/org.eclipse.fordiac.ide.test.model.eval/META-INF/MANIFEST.MF
@@ -2,7 +2,7 @@
Bundle-ManifestVersion: 2
Bundle-Name: Evaluator Tests
Bundle-SymbolicName: org.eclipse.fordiac.ide.test.model.eval
-Bundle-Version: 2.0.1.qualifier
+Bundle-Version: 3.0.0.qualifier
Fragment-Host: org.eclipse.fordiac.ide.model.eval
Automatic-Module-Name: org.eclipse.fordiac.ide.test.model.eval
Bundle-RequiredExecutionEnvironment: JavaSE-17
diff --git a/tests/org.eclipse.fordiac.ide.test.model/META-INF/MANIFEST.MF b/tests/org.eclipse.fordiac.ide.test.model/META-INF/MANIFEST.MF
index 428be93..de74786 100644
--- a/tests/org.eclipse.fordiac.ide.test.model/META-INF/MANIFEST.MF
+++ b/tests/org.eclipse.fordiac.ide.test.model/META-INF/MANIFEST.MF
@@ -2,7 +2,7 @@
Bundle-ManifestVersion: 2
Bundle-Name: Model Tests
Bundle-SymbolicName: org.eclipse.fordiac.ide.test.model
-Bundle-Version: 2.0.1.qualifier
+Bundle-Version: 3.0.0.qualifier
Automatic-Module-Name: org.eclipse.fordiac.ide.test.model
Bundle-RequiredExecutionEnvironment: JavaSE-17
Bundle-Vendor: Eclipse 4diac
diff --git a/tests/org.eclipse.fordiac.ide.test.model/pom.xml b/tests/org.eclipse.fordiac.ide.test.model/pom.xml
index 4fd3e52..5ec883d 100644
--- a/tests/org.eclipse.fordiac.ide.test.model/pom.xml
+++ b/tests/org.eclipse.fordiac.ide.test.model/pom.xml
@@ -6,10 +6,10 @@
<relativePath>../../pom.xml</relativePath>
<groupId>org.eclipse.fordiac</groupId>
<artifactId>parent</artifactId>
- <version>2.0.1-SNAPSHOT</version>
+ <version>3.0.0-SNAPSHOT</version>
</parent>
<artifactId>org.eclipse.fordiac.ide.test.model</artifactId>
<packaging>eclipse-test-plugin</packaging>
-<version>2.0.1-SNAPSHOT</version>
+
</project>
\ No newline at end of file
diff --git a/tests/org.eclipse.fordiac.ide.test.model/src/org/eclipse/fordiac/ide/model/AnnotationsIsInterfaceConnectionTest.java b/tests/org.eclipse.fordiac.ide.test.model/src/org/eclipse/fordiac/ide/model/AnnotationsIsInterfaceConnectionTest.java
index d9452ea..4304190 100644
--- a/tests/org.eclipse.fordiac.ide.test.model/src/org/eclipse/fordiac/ide/model/AnnotationsIsInterfaceConnectionTest.java
+++ b/tests/org.eclipse.fordiac.ide.test.model/src/org/eclipse/fordiac/ide/model/AnnotationsIsInterfaceConnectionTest.java
@@ -49,35 +49,34 @@
final var subapp = createSubappBusOutside(struct, muxblock, demuxblock);
addVerifyConnection(subapp, //
- subapp.getInterfaceElement(SUBAPP_INPUT_NAME),//
+ subapp.getInterfaceElement(SUBAPP_INPUT_NAME), //
demuxblock.getInterfaceElement(DEMUX_IN), //
true //
- );
+ );
addVerifyConnection(subapp, //
- muxblock.getInterfaceElement(MUX_OUT),//
+ muxblock.getInterfaceElement(MUX_OUT), //
subapp.getInterfaceElement(SUBAPP_OUTPUT_NAME), //
true //
- );
+ );
addVerifyConnection(subapp, //
- demuxblock.getInterfaceElement(STRUCT_ELEMENT_1),//
+ demuxblock.getInterfaceElement(STRUCT_ELEMENT_1), //
muxblock.getInterfaceElement(STRUCT_ELEMENT_1), //
true //
- );
+ );
addVerifyConnection(subapp, //
- demuxblock.getInterfaceElement(STRUCT_ELEMENT_2),//
+ demuxblock.getInterfaceElement(STRUCT_ELEMENT_2), //
muxblock.getInterfaceElement(STRUCT_ELEMENT_2), //
true //
- );
+ );
}
@SuppressWarnings("squid:S5960")
private static DataConnection addVerifyConnection(final SubApp subapp, final IInterfaceElement source,
- final IInterfaceElement destination,
- final boolean expected) {
+ final IInterfaceElement destination, final boolean expected) {
final var conn = LibraryElementFactory.eINSTANCE.createDataConnection();
conn.setSource(source);
conn.setDestination(destination);
@@ -89,7 +88,7 @@
private static SubApp createSubappBusOutside(final StructuredType struct, final Multiplexer muxblock,
final Demultiplexer demuxblock) {
- final var subapp = LibraryElementFactory.eINSTANCE.createSubApp();
+ final var subapp = LibraryElementFactory.eINSTANCE.createUntypedSubApp();
final var input = LibraryElementFactory.eINSTANCE.createVarDeclaration();
input.setType(struct);
@@ -121,39 +120,39 @@
final var subapp = createSubappBusInside(muxblock, demuxblock);
addVerifyConnection(subapp, //
- subapp.getInterfaceElement(SUBAPP_INPUT_NAME),//
+ subapp.getInterfaceElement(SUBAPP_INPUT_NAME), //
muxblock.getInterfaceElement(STRUCT_ELEMENT_1), //
true //
- );
+ );
addVerifyConnection(subapp, //
- subapp.getInterfaceElement(SUBAPP_INPUT_NAME),//
+ subapp.getInterfaceElement(SUBAPP_INPUT_NAME), //
muxblock.getInterfaceElement(STRUCT_ELEMENT_2), //
true //
- );
+ );
addVerifyConnection(subapp, //
demuxblock.getInterfaceElement(STRUCT_ELEMENT_1), //
- subapp.getInterfaceElement(SUBAPP_OUTPUT_NAME),//
+ subapp.getInterfaceElement(SUBAPP_OUTPUT_NAME), //
true //
- );
+ );
addVerifyConnection(subapp, //
demuxblock.getInterfaceElement(STRUCT_ELEMENT_2), //
- subapp.getInterfaceElement(SUBAPP_OUTPUT_NAME),//
+ subapp.getInterfaceElement(SUBAPP_OUTPUT_NAME), //
true //
- );
+ );
addVerifyConnection(subapp, //
muxblock.getInterfaceElement(MUX_OUT), //
demuxblock.getInterfaceElement(DEMUX_IN), //
true //
- );
+ );
}
private static SubApp createSubappBusInside(final Multiplexer muxblock, final Demultiplexer demuxblock) {
- final var subapp = LibraryElementFactory.eINSTANCE.createSubApp();
+ final var subapp = LibraryElementFactory.eINSTANCE.createUntypedSubApp();
final var input = LibraryElementFactory.eINSTANCE.createVarDeclaration();
input.setType(IecTypes.ElementaryTypes.DINT);
diff --git a/tests/org.eclipse.fordiac.ide.test.ui/META-INF/MANIFEST.MF b/tests/org.eclipse.fordiac.ide.test.ui/META-INF/MANIFEST.MF
index 50229d6..d7c4bde 100644
--- a/tests/org.eclipse.fordiac.ide.test.ui/META-INF/MANIFEST.MF
+++ b/tests/org.eclipse.fordiac.ide.test.ui/META-INF/MANIFEST.MF
@@ -2,7 +2,7 @@
Bundle-ManifestVersion: 2
Bundle-Name: 4diac IDE UI tests
Bundle-SymbolicName: org.eclipse.fordiac.ide.test.ui
-Bundle-Version: 2.0.1.qualifier
+Bundle-Version: 3.0.0.qualifier
Bundle-Vendor: Eclipse 4diac
Automatic-Module-Name: org.eclipse.fordiac.ide.test.ui
Bundle-RequiredExecutionEnvironment: JavaSE-17
diff --git a/tests/org.eclipse.fordiac.ide.test.util/META-INF/MANIFEST.MF b/tests/org.eclipse.fordiac.ide.test.util/META-INF/MANIFEST.MF
index bc7399f..51c891e 100644
--- a/tests/org.eclipse.fordiac.ide.test.util/META-INF/MANIFEST.MF
+++ b/tests/org.eclipse.fordiac.ide.test.util/META-INF/MANIFEST.MF
@@ -2,7 +2,7 @@
Bundle-ManifestVersion: 2
Bundle-Name: Util Tests
Bundle-SymbolicName: org.eclipse.fordiac.ide.test.util
-Bundle-Version: 2.0.1.qualifier
+Bundle-Version: 3.0.0.qualifier
Fragment-Host: org.eclipse.fordiac.ide.util
Automatic-Module-Name: org.eclipse.fordiac.ide.test.util
Bundle-RequiredExecutionEnvironment: JavaSE-17
diff --git a/tests/org.eclipse.fordiac.ide.test.util/pom.xml b/tests/org.eclipse.fordiac.ide.test.util/pom.xml
index 6e2a0ea..bd2db8f 100644
--- a/tests/org.eclipse.fordiac.ide.test.util/pom.xml
+++ b/tests/org.eclipse.fordiac.ide.test.util/pom.xml
@@ -6,10 +6,10 @@
<relativePath>../../pom.xml</relativePath>
<groupId>org.eclipse.fordiac</groupId>
<artifactId>parent</artifactId>
- <version>2.0.1-SNAPSHOT</version>
+ <version>3.0.0-SNAPSHOT</version>
</parent>
<artifactId>org.eclipse.fordiac.ide.test.util</artifactId>
<packaging>eclipse-test-plugin</packaging>
-<version>2.0.1-SNAPSHOT</version>
+
</project>
\ No newline at end of file