You can subscribe to this list here.
2008 |
Jan
|
Feb
|
Mar
|
Apr
|
May
|
Jun
|
Jul
(2) |
Aug
|
Sep
|
Oct
|
Nov
|
Dec
|
---|---|---|---|---|---|---|---|---|---|---|---|---|
2011 |
Jan
|
Feb
|
Mar
|
Apr
(65) |
May
(54) |
Jun
(85) |
Jul
(35) |
Aug
(9) |
Sep
(24) |
Oct
(4) |
Nov
(80) |
Dec
(47) |
2012 |
Jan
(40) |
Feb
(46) |
Mar
(68) |
Apr
(21) |
May
(61) |
Jun
(46) |
Jul
(17) |
Aug
(19) |
Sep
(24) |
Oct
(36) |
Nov
(20) |
Dec
(4) |
2013 |
Jan
(44) |
Feb
(35) |
Mar
(22) |
Apr
(25) |
May
(4) |
Jun
(6) |
Jul
(30) |
Aug
(20) |
Sep
(45) |
Oct
(19) |
Nov
(13) |
Dec
(16) |
2014 |
Jan
(55) |
Feb
(50) |
Mar
(45) |
Apr
(64) |
May
(47) |
Jun
(30) |
Jul
(15) |
Aug
(93) |
Sep
(56) |
Oct
(58) |
Nov
(24) |
Dec
(6) |
2015 |
Jan
(22) |
Feb
(31) |
Mar
(15) |
Apr
(43) |
May
(95) |
Jun
(16) |
Jul
(33) |
Aug
(3) |
Sep
(1) |
Oct
(31) |
Nov
(63) |
Dec
(22) |
2016 |
Jan
(14) |
Feb
(9) |
Mar
(30) |
Apr
(54) |
May
(34) |
Jun
(36) |
Jul
(49) |
Aug
(27) |
Sep
(25) |
Oct
(58) |
Nov
(38) |
Dec
(70) |
2017 |
Jan
(109) |
Feb
(51) |
Mar
(66) |
Apr
(20) |
May
(48) |
Jun
(85) |
Jul
(57) |
Aug
(32) |
Sep
|
Oct
|
Nov
|
Dec
|
From: <for...@li...> - 2017-08-29 12:43:08
|
details: http://fordiac.hg.sourceforge.net/hgweb/fordiac/fordiac-ide/rev/04727c27a3ed changeset: 3079:04727c27a3ed user: Monika Wenger date: Tue Aug 29 14:42:21 2017 +0200 description: Etikett @eclipse zum ?nderungssatz ea344eb303bf hinzugef?gt diffstat: .hgtags | 1 + 1 files changed, 1 insertions(+), 0 deletions(-) diffs (8 lines): diff -r ea344eb303bf -r 04727c27a3ed .hgtags --- a/.hgtags Fri Aug 25 16:43:06 2017 +0200 +++ b/.hgtags Tue Aug 29 14:42:21 2017 +0200 @@ -34,3 +34,4 @@ 12100c1ba2d95e9f4720ea696b07bb5eb6e7f372 1.8.3 37c81adb17d45e96fcdc6f46b736d163783685ad 1.8.4 409dbfdcdf64ee01cd1ad5e2f4b8d655a7290c25 initial contribution +ea344eb303bf5ad252c21e36d1eab87ade9d2e84 @eclipse |
From: <for...@li...> - 2017-08-25 14:43:24
|
details: http://fordiac.hg.sourceforge.net/hgweb/fordiac/fordiac-ide/rev/ea344eb303bf changeset: 3078:ea344eb303bf user: Monika Wenger date: Fri Aug 25 16:43:06 2017 +0200 description: [510954] fix separator for adapter type definitions diffstat: plugins/org.eclipse.fordiac.ide.export.forte_lua/src/org/eclipse/fordiac/ide/export/forte_lua/filter/LuaConstants.xtend | 2 +- plugins/org.eclipse.fordiac.ide.export.forte_lua/xtend-gen/org/eclipse/fordiac/ide/export/forte_lua/filter/LuaConstants.java | 4 +--- 2 files changed, 2 insertions(+), 4 deletions(-) diffs (26 lines): diff -r db73b811d6cb -r ea344eb303bf plugins/org.eclipse.fordiac.ide.export.forte_lua/src/org/eclipse/fordiac/ide/export/forte_lua/filter/LuaConstants.xtend --- a/plugins/org.eclipse.fordiac.ide.export.forte_lua/src/org/eclipse/fordiac/ide/export/forte_lua/filter/LuaConstants.xtend Thu Aug 24 15:06:05 2017 +0200 +++ b/plugins/org.eclipse.fordiac.ide.export.forte_lua/src/org/eclipse/fordiac/ide/export/forte_lua/filter/LuaConstants.xtend Fri Aug 25 16:43:06 2017 +0200 @@ -263,7 +263,7 @@ DODataTypeNames = «ifl.outputVars.typeList.luaValueList», numAdapters = «ifl.plugs.size + ifl.sockets.size», adapterInstanceDefinition = { - «ifl.plugs.map['''{adapterNameID = "«it.name»", adapterTypeNameID = "«it.typeName»", isPlug = true}'''].join(",\n")»«IF !ifl.sockets.isEmpty»,«ENDIF» + «ifl.plugs.map['''{adapterNameID = "«it.name»", adapterTypeNameID = "«it.typeName»", isPlug = true}'''].join(",\n")»«IF !ifl.sockets.isEmpty && !ifl.plugs.isEmpty»,«ENDIF» «ifl.sockets.map['''{adapterNameID = "«it.name»", adapterTypeNameID = "«it.typeName»", isPlug = false}'''].join(",\n")» } }''' diff -r db73b811d6cb -r ea344eb303bf plugins/org.eclipse.fordiac.ide.export.forte_lua/xtend-gen/org/eclipse/fordiac/ide/export/forte_lua/filter/LuaConstants.java --- a/plugins/org.eclipse.fordiac.ide.export.forte_lua/xtend-gen/org/eclipse/fordiac/ide/export/forte_lua/filter/LuaConstants.java Thu Aug 24 15:06:05 2017 +0200 +++ b/plugins/org.eclipse.fordiac.ide.export.forte_lua/xtend-gen/org/eclipse/fordiac/ide/export/forte_lua/filter/LuaConstants.java Fri Aug 25 16:43:06 2017 +0200 @@ -819,9 +819,7 @@ String _join = IterableExtensions.join(ListExtensions.<AdapterDeclaration, String>map(ifl.getPlugs(), _function_4), ",\n"); _builder.append(_join, " "); { - boolean _isEmpty = ifl.getSockets().isEmpty(); - boolean _not = (!_isEmpty); - if (_not) { + if (((!ifl.getSockets().isEmpty()) && (!ifl.getPlugs().isEmpty()))) { _builder.append(","); } } |
From: <for...@li...> - 2017-08-24 15:00:20
|
details: http://fordiac.hg.sourceforge.net/hgweb/fordiac/fordiac-ide/rev/db73b811d6cb changeset: 3077:db73b811d6cb user: Monika Wenger date: Thu Aug 24 15:06:05 2017 +0200 description: [510954] rework fbNum generation during lua cfb generation diffstat: plugins/org.eclipse.fordiac.ide.export.forte_lua/src/org/eclipse/fordiac/ide/export/forte_lua/filter/CompositeFBFilter.xtend | 56 +- plugins/org.eclipse.fordiac.ide.export.forte_lua/xtend-gen/org/eclipse/fordiac/ide/export/forte_lua/ForteLuaExportFilter.java | 25 +- plugins/org.eclipse.fordiac.ide.export.forte_lua/xtend-gen/org/eclipse/fordiac/ide/export/forte_lua/filter/AdapterFilter.java | 49 +- plugins/org.eclipse.fordiac.ide.export.forte_lua/xtend-gen/org/eclipse/fordiac/ide/export/forte_lua/filter/BasicFBFilter.java | 83 +- plugins/org.eclipse.fordiac.ide.export.forte_lua/xtend-gen/org/eclipse/fordiac/ide/export/forte_lua/filter/CompositeFBFilter.java | 316 ++---- plugins/org.eclipse.fordiac.ide.export.forte_lua/xtend-gen/org/eclipse/fordiac/ide/export/forte_lua/filter/LuaConstants.java | 459 +++------ plugins/org.eclipse.fordiac.ide.export.forte_lua/xtend-gen/org/eclipse/fordiac/ide/export/forte_lua/filter/LuaUtils.java | 10 +- plugins/org.eclipse.fordiac.ide.export.forte_lua/xtend-gen/org/eclipse/fordiac/ide/export/forte_lua/filter/STAlgorithmFilter.java | 214 +-- plugins/org.eclipse.fordiac.ide.model.structuredtext.ui/xtend-gen/org/eclipse/fordiac/ide/model/structuredtext/ide/StructuredTextIdeSetup.java | 4 +- plugins/org.eclipse.fordiac.ide.model.structuredtext.ui/xtend-gen/org/eclipse/fordiac/ide/model/structuredtext/ui/ExpressionFactory.java | 7 +- plugins/org.eclipse.fordiac.ide.model.structuredtext.ui/xtend-gen/org/eclipse/fordiac/ide/model/structuredtext/ui/StructuredTextFactory.java | 6 +- plugins/org.eclipse.fordiac.ide.model.structuredtext.ui/xtend-gen/org/eclipse/fordiac/ide/model/structuredtext/ui/StructuredTextUiModule.java | 4 +- plugins/org.eclipse.fordiac.ide.model.structuredtext.ui/xtend-gen/org/eclipse/fordiac/ide/model/structuredtext/ui/labeling/StructuredTextLabelProvider.java | 4 +- plugins/org.eclipse.fordiac.ide.model.structuredtext/xtend-gen/org/eclipse/fordiac/ide/model/structuredtext/ExpressionRuntimeModule.java | 8 +- plugins/org.eclipse.fordiac.ide.model.structuredtext/xtend-gen/org/eclipse/fordiac/ide/model/structuredtext/StructuredTextRuntimeModule.java | 14 +- plugins/org.eclipse.fordiac.ide.model.structuredtext/xtend-gen/org/eclipse/fordiac/ide/model/structuredtext/StructuredTextStandaloneSetup.java | 3 +- plugins/org.eclipse.fordiac.ide.model.structuredtext/xtend-gen/org/eclipse/fordiac/ide/model/structuredtext/converter/Bool_ValueValueConverter.java | 3 +- plugins/org.eclipse.fordiac.ide.model.structuredtext/xtend-gen/org/eclipse/fordiac/ide/model/structuredtext/converter/D_BYTE_CHAR_STRValueConverter.java | 3 +- plugins/org.eclipse.fordiac.ide.model.structuredtext/xtend-gen/org/eclipse/fordiac/ide/model/structuredtext/converter/LongValueConverter.java | 13 +- plugins/org.eclipse.fordiac.ide.model.structuredtext/xtend-gen/org/eclipse/fordiac/ide/model/structuredtext/converter/S_BYTE_CHAR_STRValueConverter.java | 3 +- plugins/org.eclipse.fordiac.ide.model.structuredtext/xtend-gen/org/eclipse/fordiac/ide/model/structuredtext/converter/StringValueConverter.java | 58 +- plugins/org.eclipse.fordiac.ide.model.structuredtext/xtend-gen/org/eclipse/fordiac/ide/model/structuredtext/resource/StructuredTextResource.java | 15 +- plugins/org.eclipse.fordiac.ide.model.structuredtext/xtend-gen/org/eclipse/fordiac/ide/model/structuredtext/scoping/StructuredTextScopeProvider.java | 20 +- plugins/org.eclipse.fordiac.ide.model.xtext.fbt.ui/xtend-gen/org/eclipse/fordiac/ide/model/xtext/fbt/ide/FBTypeIdeSetup.java | 4 +- plugins/org.eclipse.fordiac.ide.model.xtext.fbt/xtend-gen/org/eclipse/fordiac/ide/model/xtext/fbt/FBTypeStandaloneSetup.java | 3 +- 25 files changed, 491 insertions(+), 893 deletions(-) diffs (3281 lines): diff -r be1f701e3b54 -r db73b811d6cb plugins/org.eclipse.fordiac.ide.export.forte_lua/src/org/eclipse/fordiac/ide/export/forte_lua/filter/CompositeFBFilter.xtend --- a/plugins/org.eclipse.fordiac.ide.export.forte_lua/src/org/eclipse/fordiac/ide/export/forte_lua/filter/CompositeFBFilter.xtend Thu Aug 24 10:38:57 2017 +0200 +++ b/plugins/org.eclipse.fordiac.ide.export.forte_lua/src/org/eclipse/fordiac/ide/export/forte_lua/filter/CompositeFBFilter.xtend Thu Aug 24 15:06:05 2017 +0200 @@ -62,37 +62,36 @@ }''' def static luaParameters(FBNetwork fbn){ - var parameters = fbn.getParameters - var numAdapters = fbn.networkElements.filter(AdapterFB).size + var fbs = fbn.networkElements.filter(e| !(e instanceof AdapterFB)) + var parameters = fbs.toList.getParameters ''' parameters = { «FOR p : parameters SEPARATOR ','» - {fbNum = «p.get(0) as Integer - numAdapters», diNameID = "«p.get(1)»", paramValue = "«p.get(2)»"} + {fbNum = «p.get(0) as Integer», diNameID = "«p.get(1)»", paramValue = "«p.get(2)»"} «ENDFOR» }''' } def static luaEventConnections(CompositeFBType type) ''' eventConnections = { - «var numAdapters = type.FBNetwork.networkElements.filter(AdapterFB).size» «var allCons = type.FBNetwork.eventConnections» «var connections = allCons.filter(e| e.source.outputConnections.size == 1 || (e.source.outputConnections.size > 1 && e.source.outputConnections.get(0).equals(e)))» «FOR con : connections SEPARATOR ','» «var sne = con.source.FBNetworkElement» «var dne = con.destination.FBNetworkElement» - «IF null != dne && null != sne» - {«sne.luaConnectionString(con.source, numAdapters, type, "src")», «dne.luaConnectionString(con.destination, numAdapters, type, "dst")»} - «ELSEIF null == dne» - {«sne.luaConnectionString(con.source, numAdapters, type, "src")», dstID = "«con.destination.name»", dstFBNum = -1} - «ELSEIF null == sne» - {srcID = "«con.source.name»", srcFBNum = -1, «dne.luaConnectionString(con.destination, numAdapters, type, "dst")»} + «IF null !== dne && null !== sne» + {«sne.luaConnectionString(con.source, type, "src")», «dne.luaConnectionString(con.destination, type, "dst")»} + «ELSEIF null === dne» + {«sne.luaConnectionString(con.source, type, "src")», dstID = "«con.destination.name»", dstFBNum = -1} + «ELSEIF null === sne» + {srcID = "«con.source.name»", srcFBNum = -1, «dne.luaConnectionString(con.destination, type, "dst")»} «ELSE» {srcID = "«con.source.name»", srcFBNum = -1, dstID = "«con.destination.name»", dstFBNum = -1} «ENDIF» «ENDFOR» }''' - def static String luaConnectionString(FBNetworkElement e, IInterfaceElement ev, int numAdapters, CompositeFBType type, String stringID){ + def static String luaConnectionString(FBNetworkElement e, IInterfaceElement ev, CompositeFBType type, String stringID){ var plugs = type.interfaceList.plugs.map[it.adapterFB].toList var sockets = type.interfaceList.sockets.map[it.adapterFB].toList if (e instanceof AdapterFB){ @@ -102,21 +101,20 @@ return '''«stringID»ID = "«ev.name»", «stringID»FBNum = «ADAPTER_MARKER.bitwiseOr(plugs.size + sockets.indexOf(e))»''' } }else{ - return '''«stringID»ID = "«ev.name»", «stringID»FBNum = «type.FBNetwork.networkElements.indexOf(e) - numAdapters»''' + return '''«stringID»ID = "«ev.name»", «stringID»FBNum = «type.FBNetwork.networkElements.filter(f| !(f instanceof AdapterFB)).toList.indexOf(e)»''' } } def static luaFannedOutEventConnections(CompositeFBType type) ''' fannedOutEventConnections = { - «var numAdapters = type.FBNetwork.networkElements.filter(AdapterFB).size» «var allCons = type.FBNetwork.eventConnections» «var conList = allCons.filter(e| e.source.outputConnections.size == 1 || (e.source.outputConnections.size > 1 && e.source.outputConnections.get(0).equals(e))).toList» «var connections = allCons.filter(e| e.source.outputConnections.size > 1 && !e.source.outputConnections.get(0).equals(e))» «FOR con : connections SEPARATOR ','» «var dne = con.destination.FBNetworkElement» - «IF null != dne» - {connectionNum = «org.eclipse.fordiac.ide.export.forte_lua.filter.CompositeFBFilter.getConnectionNumber(conList, con)», «dne.luaConnectionString(con.destination, numAdapters, type, "dst")»} + «IF null !== dne» + {connectionNum = «org.eclipse.fordiac.ide.export.forte_lua.filter.CompositeFBFilter.getConnectionNumber(conList, con)», «dne.luaConnectionString(con.destination, type, "dst")»} «ELSE» {dstID = "«con.destination.name»", -1} «ENDIF» @@ -130,18 +128,17 @@ def static luaDataConnections(CompositeFBType type) ''' dataConnections = { - «var numAdapters = type.FBNetwork.networkElements.filter(AdapterFB).size» «var allCons = type.FBNetwork.dataConnections» «var connections = allCons.filter(e| e.source.outputConnections.size == 1 || (e.source.outputConnections.size > 1 && e.source.outputConnections.get(0).equals(e)))» «FOR con : connections SEPARATOR ','» «var sne = con.source.FBNetworkElement» «var dne = con.destination.FBNetworkElement» - «IF null != dne && null != sne» - {«sne.luaConnectionString(con.source, numAdapters, type, "src")», «dne.luaConnectionString(con.destination, numAdapters, type, "dst")»} - «ELSEIF null == dne» - {«sne.luaConnectionString(con.source, numAdapters, type, "src")», dstID = "«con.destination.name»", dstFBNum = -1} - «ELSEIF null == sne» - {srcID = "«con.source.name»", srcFBNum = -1, «dne.luaConnectionString(con.destination, numAdapters, type, "dst")»} + «IF null !== dne && null !== sne» + {«sne.luaConnectionString(con.source, type, "src")», «dne.luaConnectionString(con.destination, type, "dst")»} + «ELSEIF null === dne» + {«sne.luaConnectionString(con.source, type, "src")», dstID = "«con.destination.name»", dstFBNum = -1} + «ELSEIF null === sne» + {srcID = "«con.source.name»", srcFBNum = -1, «dne.luaConnectionString(con.destination, type, "dst")»} «ELSE» {srcID = "«con.source.name»", srcFBNum = -1, dstID = "«dne.name».«con.destination.name»", dstFBNum = -1} «ENDIF» @@ -150,14 +147,13 @@ def static luaFannedOutDataConnections(CompositeFBType type) ''' fannedOutDataConnections = { - «var numAdapters = type.FBNetwork.networkElements.filter(AdapterFB).size» «var allCons = type.FBNetwork.dataConnections» «var conList = allCons.filter(e| e.source.outputConnections.size == 1 || (e.source.outputConnections.size > 1 && e.source.outputConnections.get(0).equals(e))).toList» «var connections = allCons.filter(e| e.source.outputConnections.size > 1 && !e.source.outputConnections.get(0).equals(e))» «FOR con : connections SEPARATOR ','» «var dne = con.destination.FBNetworkElement» - «IF null != dne» - {connectionNum = «org.eclipse.fordiac.ide.export.forte_lua.filter.CompositeFBFilter.getConnectionNumber(conList, con)», «dne.luaConnectionString(con.destination, numAdapters, type, "dst")»} + «IF null !== dne» + {connectionNum = «org.eclipse.fordiac.ide.export.forte_lua.filter.CompositeFBFilter.getConnectionNumber(conList, con)», «dne.luaConnectionString(con.destination, type, "dst")»} «ELSE» {dstID = "«con.destination.name»", dstFBNum = -1} «ENDIF» @@ -174,16 +170,16 @@ ''' def static private int getNumParameter(FBNetwork fbn){ - return fbn.getParameters.size + return fbn.networkElements.filter(e| !(e instanceof AdapterFB)).toList.getParameters.size } - def static private ArrayList<ArrayList<?>> getParameters(FBNetwork fbn){ + def static private ArrayList<ArrayList<?>> getParameters(List<FBNetworkElement> fbs){ var parameters = new ArrayList<ArrayList<?>> - for(ne : fbn.networkElements){ + for(ne : fbs){ for(iv : ne.interface.inputVars){ - if(null != iv.value && null != iv.value.value && !iv.value.value.empty){ + if(null !== iv.value && null !== iv.value.value && !iv.value.value.empty){ var list = new ArrayList<Object> - list.add(fbn.networkElements.indexOf(ne)) + list.add(fbs.indexOf(ne)) list.add(iv.name) list.add(iv.value.value) parameters.add(list) diff -r be1f701e3b54 -r db73b811d6cb plugins/org.eclipse.fordiac.ide.export.forte_lua/xtend-gen/org/eclipse/fordiac/ide/export/forte_lua/ForteLuaExportFilter.java --- a/plugins/org.eclipse.fordiac.ide.export.forte_lua/xtend-gen/org/eclipse/fordiac/ide/export/forte_lua/ForteLuaExportFilter.java Thu Aug 24 10:38:57 2017 +0200 +++ b/plugins/org.eclipse.fordiac.ide.export.forte_lua/xtend-gen/org/eclipse/fordiac/ide/export/forte_lua/ForteLuaExportFilter.java Thu Aug 24 15:06:05 2017 +0200 @@ -15,7 +15,6 @@ import java.util.Collections; import java.util.List; import org.eclipse.core.resources.IFile; -import org.eclipse.emf.ecore.EClass; import org.eclipse.fordiac.ide.export.forte_lua.filter.AdapterFilter; import org.eclipse.fordiac.ide.export.forte_lua.filter.BasicFBFilter; import org.eclipse.fordiac.ide.export.forte_lua.filter.CompositeFBFilter; @@ -48,26 +47,22 @@ boolean _matched = false; if (type instanceof BasicFBType) { _matched=true; - CharSequence _lua = this.basicFBFilter.lua(((BasicFBType)type)); - System.out.println(_lua); + System.out.println(this.basicFBFilter.lua(((BasicFBType)type))); } if (!_matched) { if (type instanceof CompositeFBType) { _matched=true; - CharSequence _lua = this.compositeFBFilter.lua(((CompositeFBType)type)); - System.out.println(_lua); + System.out.println(this.compositeFBFilter.lua(((CompositeFBType)type))); } } if (!_matched) { if (type instanceof AdapterType) { _matched=true; - CharSequence _lua = this.adapterFilter.lua(((AdapterType)type)); - System.out.println(_lua); + System.out.println(this.adapterFilter.lua(((AdapterType)type))); } } if (!_matched) { - EClass _eClass = type.eClass(); - String _name = _eClass.getName(); + String _name = type.eClass().getName(); String _plus = ("Unknown library element type " + _name); throw new UnsupportedOperationException(_plus); } @@ -77,25 +72,21 @@ boolean _matched = false; if (type instanceof BasicFBType) { _matched=true; - CharSequence _lua = this.basicFBFilter.lua(((BasicFBType)type)); - return String.valueOf(_lua); + return String.valueOf(this.basicFBFilter.lua(((BasicFBType)type))); } if (!_matched) { if (type instanceof CompositeFBType) { _matched=true; - CharSequence _lua = this.compositeFBFilter.lua(((CompositeFBType)type)); - return String.valueOf(_lua); + return String.valueOf(this.compositeFBFilter.lua(((CompositeFBType)type))); } } if (!_matched) { if (type instanceof AdapterType) { _matched=true; - CharSequence _lua = this.adapterFilter.lua(((AdapterType)type)); - return String.valueOf(_lua); + return String.valueOf(this.adapterFilter.lua(((AdapterType)type))); } } - EClass _eClass = type.eClass(); - String _name = _eClass.getName(); + String _name = type.eClass().getName(); String _plus = ("Unknown library element type " + _name); throw new UnsupportedOperationException(_plus); } diff -r be1f701e3b54 -r db73b811d6cb plugins/org.eclipse.fordiac.ide.export.forte_lua/xtend-gen/org/eclipse/fordiac/ide/export/forte_lua/filter/AdapterFilter.java --- a/plugins/org.eclipse.fordiac.ide.export.forte_lua/xtend-gen/org/eclipse/fordiac/ide/export/forte_lua/filter/AdapterFilter.java Thu Aug 24 10:38:57 2017 +0200 +++ b/plugins/org.eclipse.fordiac.ide.export.forte_lua/xtend-gen/org/eclipse/fordiac/ide/export/forte_lua/filter/AdapterFilter.java Thu Aug 24 15:06:05 2017 +0200 @@ -35,9 +35,8 @@ public CharSequence lua(final AdapterType type) { StringConcatenation _builder = new StringConcatenation(); - InterfaceList _interfaceList = type.getInterfaceList(); - CharSequence _luaEventDataInterfaceSpec = AdapterFilter.luaEventDataInterfaceSpec(_interfaceList); - _builder.append(_luaEventDataInterfaceSpec, ""); + CharSequence _luaEventDataInterfaceSpec = AdapterFilter.luaEventDataInterfaceSpec(type.getInterfaceList()); + _builder.append(_luaEventDataInterfaceSpec); _builder.newLineIfNotEmpty(); _builder.newLine(); _builder.append("return {interfaceSpec = interfaceSpec}"); @@ -52,36 +51,29 @@ final ArrayList<Integer> inputWithIndexes = new ArrayList<Integer>(); EList<Event> _eventInputs = ifl.getEventInputs(); for (final Event e : _eventInputs) { - EList<VarDeclaration> _inputVars = ifl.getInputVars(); - int _eventWith = LuaConstants.getEventWith(e, inputWith, _inputVars); - inputWithIndexes.add(Integer.valueOf(_eventWith)); + inputWithIndexes.add(Integer.valueOf(LuaConstants.getEventWith(e, inputWith, ifl.getInputVars()))); } final ArrayList<Integer> outputWith = new ArrayList<Integer>(); final ArrayList<Integer> outputWithIndexes = new ArrayList<Integer>(); EList<Event> _eventOutputs = ifl.getEventOutputs(); for (final Event e_1 : _eventOutputs) { - EList<VarDeclaration> _outputVars = ifl.getOutputVars(); - int _eventWith_1 = LuaConstants.getEventWith(e_1, outputWith, _outputVars); - outputWithIndexes.add(Integer.valueOf(_eventWith_1)); + outputWithIndexes.add(Integer.valueOf(LuaConstants.getEventWith(e_1, outputWith, ifl.getOutputVars()))); } StringConcatenation _builder = new StringConcatenation(); _builder.append("local interfaceSpec = {"); _builder.newLine(); _builder.append(" "); _builder.append("numEIs = "); - EList<Event> _eventInputs_1 = ifl.getEventInputs(); - int _size = _eventInputs_1.size(); + int _size = ifl.getEventInputs().size(); _builder.append(_size, " "); _builder.append(","); _builder.newLineIfNotEmpty(); _builder.append(" "); _builder.append("EINames = "); - EList<Event> _eventInputs_2 = ifl.getEventInputs(); final Function1<Event, String> _function = (Event it) -> { return it.getName(); }; - List<String> _map = ListExtensions.<Event, String>map(_eventInputs_2, _function); - CharSequence _luaStringList = LuaUtils.luaStringList(_map); + CharSequence _luaStringList = LuaUtils.luaStringList(ListExtensions.<Event, String>map(ifl.getEventInputs(), _function)); _builder.append(_luaStringList, " "); _builder.append(","); _builder.newLineIfNotEmpty(); @@ -99,19 +91,16 @@ _builder.newLineIfNotEmpty(); _builder.append(" "); _builder.append("numEOs = "); - EList<Event> _eventOutputs_1 = ifl.getEventOutputs(); - int _size_1 = _eventOutputs_1.size(); + int _size_1 = ifl.getEventOutputs().size(); _builder.append(_size_1, " "); _builder.append(","); _builder.newLineIfNotEmpty(); _builder.append(" "); _builder.append("EONames = "); - EList<Event> _eventOutputs_2 = ifl.getEventOutputs(); final Function1<Event, String> _function_1 = (Event it) -> { return it.getName(); }; - List<String> _map_1 = ListExtensions.<Event, String>map(_eventOutputs_2, _function_1); - CharSequence _luaStringList_1 = LuaUtils.luaStringList(_map_1); + CharSequence _luaStringList_1 = LuaUtils.luaStringList(ListExtensions.<Event, String>map(ifl.getEventOutputs(), _function_1)); _builder.append(_luaStringList_1, " "); _builder.append(","); _builder.newLineIfNotEmpty(); @@ -129,53 +118,43 @@ _builder.newLineIfNotEmpty(); _builder.append(" "); _builder.append("numDIs = "); - EList<VarDeclaration> _inputVars_1 = ifl.getInputVars(); - int _size_2 = _inputVars_1.size(); + int _size_2 = ifl.getInputVars().size(); _builder.append(_size_2, " "); _builder.append(","); _builder.newLineIfNotEmpty(); _builder.append(" "); _builder.append("DINames = "); - EList<VarDeclaration> _inputVars_2 = ifl.getInputVars(); final Function1<VarDeclaration, String> _function_2 = (VarDeclaration it) -> { return it.getName(); }; - List<String> _map_2 = ListExtensions.<VarDeclaration, String>map(_inputVars_2, _function_2); - CharSequence _luaStringList_2 = LuaUtils.luaStringList(_map_2); + CharSequence _luaStringList_2 = LuaUtils.luaStringList(ListExtensions.<VarDeclaration, String>map(ifl.getInputVars(), _function_2)); _builder.append(_luaStringList_2, " "); _builder.append(","); _builder.newLineIfNotEmpty(); _builder.append(" "); _builder.append("DIDataTypeNames = "); - EList<VarDeclaration> _inputVars_3 = ifl.getInputVars(); - ArrayList<Object> _typeList = LuaConstants.getTypeList(_inputVars_3); - CharSequence _luaValueList = LuaUtils.luaValueList(_typeList); + CharSequence _luaValueList = LuaUtils.luaValueList(LuaConstants.getTypeList(ifl.getInputVars())); _builder.append(_luaValueList, " "); _builder.append(","); _builder.newLineIfNotEmpty(); _builder.append(" "); _builder.append("numDOs = "); - EList<VarDeclaration> _outputVars_1 = ifl.getOutputVars(); - int _size_3 = _outputVars_1.size(); + int _size_3 = ifl.getOutputVars().size(); _builder.append(_size_3, " "); _builder.append(","); _builder.newLineIfNotEmpty(); _builder.append(" "); _builder.append("DONames = "); - EList<VarDeclaration> _outputVars_2 = ifl.getOutputVars(); final Function1<VarDeclaration, String> _function_3 = (VarDeclaration it) -> { return it.getName(); }; - List<String> _map_3 = ListExtensions.<VarDeclaration, String>map(_outputVars_2, _function_3); - CharSequence _luaStringList_3 = LuaUtils.luaStringList(_map_3); + CharSequence _luaStringList_3 = LuaUtils.luaStringList(ListExtensions.<VarDeclaration, String>map(ifl.getOutputVars(), _function_3)); _builder.append(_luaStringList_3, " "); _builder.append(","); _builder.newLineIfNotEmpty(); _builder.append(" "); _builder.append("DODataTypeNames = "); - EList<VarDeclaration> _outputVars_3 = ifl.getOutputVars(); - ArrayList<Object> _typeList_1 = LuaConstants.getTypeList(_outputVars_3); - CharSequence _luaValueList_1 = LuaUtils.luaValueList(_typeList_1); + CharSequence _luaValueList_1 = LuaUtils.luaValueList(LuaConstants.getTypeList(ifl.getOutputVars())); _builder.append(_luaValueList_1, " "); _builder.newLineIfNotEmpty(); _builder.append("}"); diff -r be1f701e3b54 -r db73b811d6cb plugins/org.eclipse.fordiac.ide.export.forte_lua/xtend-gen/org/eclipse/fordiac/ide/export/forte_lua/filter/BasicFBFilter.java --- a/plugins/org.eclipse.fordiac.ide.export.forte_lua/xtend-gen/org/eclipse/fordiac/ide/export/forte_lua/filter/BasicFBFilter.java Thu Aug 24 10:38:57 2017 +0200 +++ b/plugins/org.eclipse.fordiac.ide.export.forte_lua/xtend-gen/org/eclipse/fordiac/ide/export/forte_lua/filter/BasicFBFilter.java Thu Aug 24 15:06:05 2017 +0200 @@ -30,7 +30,6 @@ import org.eclipse.fordiac.ide.model.libraryElement.ECState; import org.eclipse.fordiac.ide.model.libraryElement.ECTransition; import org.eclipse.fordiac.ide.model.libraryElement.Event; -import org.eclipse.fordiac.ide.model.libraryElement.InterfaceList; import org.eclipse.fordiac.ide.model.libraryElement.STAlgorithm; import org.eclipse.fordiac.ide.model.libraryElement.VarDeclaration; import org.eclipse.xtend.lib.annotations.AccessorType; @@ -51,31 +50,27 @@ public CharSequence lua(final BasicFBType type) { StringConcatenation _builder = new StringConcatenation(); CharSequence _luaConstants = LuaConstants.luaConstants(type); - _builder.append(_luaConstants, ""); + _builder.append(_luaConstants); _builder.newLineIfNotEmpty(); _builder.newLine(); CharSequence _luaAlgorithms = this.luaAlgorithms(type); - _builder.append(_luaAlgorithms, ""); + _builder.append(_luaAlgorithms); _builder.newLineIfNotEmpty(); _builder.newLine(); - ECC _eCC = type.getECC(); - CharSequence _luaStates = this.luaStates(_eCC); - _builder.append(_luaStates, ""); + CharSequence _luaStates = this.luaStates(type.getECC()); + _builder.append(_luaStates); _builder.newLineIfNotEmpty(); _builder.newLine(); - ECC _eCC_1 = type.getECC(); - Iterable<VarDeclaration> _variables = this.getVariables(type); - CharSequence _luaECC = this.luaECC(_eCC_1, _variables); - _builder.append(_luaECC, ""); + CharSequence _luaECC = this.luaECC(type.getECC(), this.getVariables(type)); + _builder.append(_luaECC); _builder.newLineIfNotEmpty(); _builder.newLine(); - InterfaceList _interfaceList = type.getInterfaceList(); - CharSequence _luaInterfaceSpec = LuaConstants.luaInterfaceSpec(_interfaceList); - _builder.append(_luaInterfaceSpec, ""); + CharSequence _luaInterfaceSpec = LuaConstants.luaInterfaceSpec(type.getInterfaceList()); + _builder.append(_luaInterfaceSpec); _builder.newLineIfNotEmpty(); _builder.newLine(); CharSequence _luaInternalVarsInformation = LuaConstants.luaInternalVarsInformation(type); - _builder.append(_luaInternalVarsInformation, ""); + _builder.append(_luaInternalVarsInformation); _builder.newLineIfNotEmpty(); _builder.newLine(); _builder.append("return {ECC = executeEvent, interfaceSpec = interfaceSpec, internalVarsInformation = internalVarsInformation}"); @@ -118,10 +113,8 @@ } private Iterable<VarDeclaration> getVariables(final BasicFBType type) { - InterfaceList _interfaceList = type.getInterfaceList(); - EList<VarDeclaration> _inputVars = _interfaceList.getInputVars(); - InterfaceList _interfaceList_1 = type.getInterfaceList(); - EList<VarDeclaration> _outputVars = _interfaceList_1.getOutputVars(); + EList<VarDeclaration> _inputVars = type.getInterfaceList().getInputVars(); + EList<VarDeclaration> _outputVars = type.getInterfaceList().getOutputVars(); Iterable<VarDeclaration> _plus = Iterables.<VarDeclaration>concat(_inputVars, _outputVars); EList<VarDeclaration> _internalVars = type.getInternalVars(); return Iterables.<VarDeclaration>concat(_plus, _internalVars); @@ -135,15 +128,15 @@ for(final ECState state : _eCState) { if (!_hasElements) { _hasElements = true; - _builder.append("if ", ""); + _builder.append("if "); } else { _builder.appendImmediate("\nelseif ", ""); } CharSequence _luaStateName = LuaConstants.luaStateName(state); - _builder.append(_luaStateName, ""); + _builder.append(_luaStateName); _builder.append(" == "); CharSequence _luaStateVariable = LuaConstants.luaStateVariable(); - _builder.append(_luaStateVariable, ""); + _builder.append(_luaStateVariable); _builder.append(" then"); _builder.newLineIfNotEmpty(); _builder.append(" "); @@ -151,7 +144,7 @@ _builder.append(_luaTransition, " "); } if (_hasElements) { - _builder.append("\nelse return false\nend", ""); + _builder.append("\nelse return false\nend"); } } return _builder; @@ -165,20 +158,19 @@ for(final ECTransition tran : _outTransitions) { if (!_hasElements) { _hasElements = true; - _builder.append("if ", ""); + _builder.append("if "); } else { _builder.appendImmediate("\nelseif ", ""); } CharSequence _luaTransitionCondition = this.luaTransitionCondition(tran); - _builder.append(_luaTransitionCondition, ""); + _builder.append(_luaTransitionCondition); _builder.append(" then return enter"); - ECState _destination = tran.getDestination(); - CharSequence _luaStateName = LuaConstants.luaStateName(_destination); - _builder.append(_luaStateName, ""); + CharSequence _luaStateName = LuaConstants.luaStateName(tran.getDestination()); + _builder.append(_luaStateName); _builder.append("(fb)"); } if (_hasElements) { - _builder.append("\nelse return false\nend", ""); + _builder.append("\nelse return false\nend"); } } return _builder; @@ -190,9 +182,8 @@ Event _conditionEvent = tran.getConditionEvent(); boolean _notEquals = (!Objects.equal(_conditionEvent, null)); if (_notEquals) { - Event _conditionEvent_1 = tran.getConditionEvent(); - CharSequence _luaInputEventName = LuaConstants.luaInputEventName(_conditionEvent_1); - _builder.append(_luaInputEventName, ""); + CharSequence _luaInputEventName = LuaConstants.luaInputEventName(tran.getConditionEvent()); + _builder.append(_luaInputEventName); _builder.append(" == id"); } else { _builder.append("true"); @@ -200,12 +191,11 @@ } _builder.append(" and "); { - String _conditionExpression = tran.getConditionExpression(); - boolean _isNullOrEmpty = StringExtensions.isNullOrEmpty(_conditionExpression); + boolean _isNullOrEmpty = StringExtensions.isNullOrEmpty(tran.getConditionExpression()); boolean _not = (!_isNullOrEmpty); if (_not) { CharSequence _luaTransitionConditionExpression = this.luaTransitionConditionExpression(tran); - _builder.append(_luaTransitionConditionExpression, ""); + _builder.append(_luaTransitionConditionExpression); } else { _builder.append("true"); } @@ -218,8 +208,7 @@ { EObject _rootContainer = EcoreUtil.getRootContainer(tran); final BasicFBType type = ((BasicFBType) _rootContainer); - String _conditionExpression = tran.getConditionExpression(); - _xblockexpression = this.stAlgorithmFilter.lua(type, _conditionExpression); + _xblockexpression = this.stAlgorithmFilter.lua(type, tran.getConditionExpression()); } return _xblockexpression; } @@ -230,7 +219,7 @@ EList<ECState> _eCState = ecc.getECState(); for(final ECState state : _eCState) { CharSequence _luaState = this.luaState(state); - _builder.append(_luaState, ""); + _builder.append(_luaState); _builder.newLineIfNotEmpty(); _builder.newLine(); } @@ -242,7 +231,7 @@ StringConcatenation _builder = new StringConcatenation(); _builder.append("local function enter"); CharSequence _luaStateName = LuaConstants.luaStateName(state); - _builder.append(_luaStateName, ""); + _builder.append(_luaStateName); _builder.append("(fb)"); _builder.newLineIfNotEmpty(); _builder.append(" "); @@ -260,8 +249,7 @@ Algorithm _algorithm = action.getAlgorithm(); boolean _notEquals = (!Objects.equal(null, _algorithm)); if (_notEquals) { - Algorithm _algorithm_1 = action.getAlgorithm(); - CharSequence _luaAlgorithmName = LuaConstants.luaAlgorithmName(_algorithm_1); + CharSequence _luaAlgorithmName = LuaConstants.luaAlgorithmName(action.getAlgorithm()); _builder.append(_luaAlgorithmName, " "); _builder.append("(fb)"); } @@ -305,7 +293,7 @@ EList<Algorithm> _algorithm = type.getAlgorithm(); for(final Algorithm alg : _algorithm) { String _luaAlgorithm = this.luaAlgorithm(alg); - _builder.append(_luaAlgorithm, ""); + _builder.append(_luaAlgorithm); _builder.newLineIfNotEmpty(); _builder.newLine(); } @@ -323,7 +311,7 @@ StringConcatenation _builder = new StringConcatenation(); _builder.append("local function "); CharSequence _luaAlgorithmName = LuaConstants.luaAlgorithmName(alg); - _builder.append(_luaAlgorithmName, ""); + _builder.append(_luaAlgorithmName); _builder.append("(fb)"); _builder.newLineIfNotEmpty(); _builder.append(" "); @@ -333,20 +321,17 @@ _builder.append("end"); _builder.newLine(); final String result = _builder.toString(); - List<String> _errors = this.stAlgorithmFilter.getErrors(); final Function1<String, String> _function = (String it) -> { StringConcatenation _builder_1 = new StringConcatenation(); _builder_1.append("Error in algorithm "); String _name = alg.getName(); - _builder_1.append(_name, ""); + _builder_1.append(_name); _builder_1.append(": "); - _builder_1.append(it, ""); + _builder_1.append(it); return _builder_1.toString(); }; - List<String> _map = ListExtensions.<String, String>map(_errors, _function); - this.errors.addAll(_map); - List<String> _errors_1 = this.stAlgorithmFilter.getErrors(); - _errors_1.clear(); + this.errors.addAll(ListExtensions.<String, String>map(this.stAlgorithmFilter.getErrors(), _function)); + this.stAlgorithmFilter.getErrors().clear(); return result; } diff -r be1f701e3b54 -r db73b811d6cb plugins/org.eclipse.fordiac.ide.export.forte_lua/xtend-gen/org/eclipse/fordiac/ide/export/forte_lua/filter/CompositeFBFilter.java --- a/plugins/org.eclipse.fordiac.ide.export.forte_lua/xtend-gen/org/eclipse/fordiac/ide/export/forte_lua/filter/CompositeFBFilter.java Thu Aug 24 10:38:57 2017 +0200 +++ b/plugins/org.eclipse.fordiac.ide.export.forte_lua/xtend-gen/org/eclipse/fordiac/ide/export/forte_lua/filter/CompositeFBFilter.java Thu Aug 24 15:06:05 2017 +0200 @@ -12,8 +12,6 @@ */ package org.eclipse.fordiac.ide.export.forte_lua.filter; -import com.google.common.base.Objects; -import com.google.common.collect.Iterables; import java.util.ArrayList; import java.util.List; import org.eclipse.emf.common.util.EList; @@ -23,13 +21,10 @@ import org.eclipse.fordiac.ide.model.libraryElement.CompositeFBType; import org.eclipse.fordiac.ide.model.libraryElement.Connection; import org.eclipse.fordiac.ide.model.libraryElement.DataConnection; -import org.eclipse.fordiac.ide.model.libraryElement.Event; import org.eclipse.fordiac.ide.model.libraryElement.EventConnection; import org.eclipse.fordiac.ide.model.libraryElement.FBNetwork; import org.eclipse.fordiac.ide.model.libraryElement.FBNetworkElement; import org.eclipse.fordiac.ide.model.libraryElement.IInterfaceElement; -import org.eclipse.fordiac.ide.model.libraryElement.InterfaceList; -import org.eclipse.fordiac.ide.model.libraryElement.Value; import org.eclipse.fordiac.ide.model.libraryElement.VarDeclaration; import org.eclipse.xtend.lib.annotations.AccessorType; import org.eclipse.xtend.lib.annotations.Accessors; @@ -48,23 +43,20 @@ public CharSequence lua(final CompositeFBType type) { StringConcatenation _builder = new StringConcatenation(); - InterfaceList _interfaceList = type.getInterfaceList(); - CharSequence _luaEventConstants = LuaConstants.luaEventConstants(_interfaceList); - _builder.append(_luaEventConstants, ""); + CharSequence _luaEventConstants = LuaConstants.luaEventConstants(type.getInterfaceList()); + _builder.append(_luaEventConstants); _builder.newLineIfNotEmpty(); - InterfaceList _interfaceList_1 = type.getInterfaceList(); - CharSequence _luaFBVariableConstants = LuaConstants.luaFBVariableConstants(_interfaceList_1); - _builder.append(_luaFBVariableConstants, ""); + CharSequence _luaFBVariableConstants = LuaConstants.luaFBVariableConstants(type.getInterfaceList()); + _builder.append(_luaFBVariableConstants); _builder.newLineIfNotEmpty(); _builder.append("\t\t"); _builder.newLine(); - InterfaceList _interfaceList_2 = type.getInterfaceList(); - CharSequence _luaInterfaceSpec = LuaConstants.luaInterfaceSpec(_interfaceList_2); - _builder.append(_luaInterfaceSpec, ""); + CharSequence _luaInterfaceSpec = LuaConstants.luaInterfaceSpec(type.getInterfaceList()); + _builder.append(_luaInterfaceSpec); _builder.newLineIfNotEmpty(); _builder.newLine(); CharSequence _luaFbnSpec = CompositeFBFilter.luaFbnSpec(type); - _builder.append(_luaFbnSpec, ""); + _builder.append(_luaFbnSpec); _builder.newLineIfNotEmpty(); _builder.newLine(); _builder.append("return {interfaceSpec = interfaceSpec, fbnSpec = fbnSpec}"); @@ -77,14 +69,12 @@ _builder.append("local fbnSpec = {"); _builder.newLine(); _builder.append(" "); - FBNetwork _fBNetwork = type.getFBNetwork(); - CharSequence _luaInternalFBs = CompositeFBFilter.luaInternalFBs(_fBNetwork); + CharSequence _luaInternalFBs = CompositeFBFilter.luaInternalFBs(type.getFBNetwork()); _builder.append(_luaInternalFBs, " "); _builder.append(","); _builder.newLineIfNotEmpty(); _builder.append(" "); - FBNetwork _fBNetwork_1 = type.getFBNetwork(); - CharSequence _luaParameters = CompositeFBFilter.luaParameters(_fBNetwork_1); + CharSequence _luaParameters = CompositeFBFilter.luaParameters(type.getFBNetwork()); _builder.append(_luaParameters, " "); _builder.append(","); _builder.newLineIfNotEmpty(); @@ -109,8 +99,7 @@ _builder.append(","); _builder.newLineIfNotEmpty(); _builder.append(" "); - FBNetwork _fBNetwork_2 = type.getFBNetwork(); - CharSequence _luaFbnData = CompositeFBFilter.luaFbnData(_fBNetwork_2); + CharSequence _luaFbnData = CompositeFBFilter.luaFbnData(type.getFBNetwork()); _builder.append(_luaFbnData, " "); _builder.newLineIfNotEmpty(); _builder.append("}"); @@ -122,11 +111,10 @@ _builder.append("internalFBs = {"); _builder.newLine(); _builder.append(" "); - EList<FBNetworkElement> _networkElements = fbn.getNetworkElements(); final Function1<FBNetworkElement, Boolean> _function = (FBNetworkElement e) -> { return Boolean.valueOf((!(e instanceof AdapterFB))); }; - Iterable<FBNetworkElement> fbs = IterableExtensions.<FBNetworkElement>filter(_networkElements, _function); + Iterable<FBNetworkElement> fbs = IterableExtensions.<FBNetworkElement>filter(fbn.getNetworkElements(), _function); _builder.newLineIfNotEmpty(); { boolean _hasElements = false; @@ -158,10 +146,11 @@ public static CharSequence luaParameters(final FBNetwork fbn) { CharSequence _xblockexpression = null; { - ArrayList<ArrayList<?>> parameters = CompositeFBFilter.getParameters(fbn); - EList<FBNetworkElement> _networkElements = fbn.getNetworkElements(); - Iterable<AdapterFB> _filter = Iterables.<AdapterFB>filter(_networkElements, AdapterFB.class); - int numAdapters = IterableExtensions.size(_filter); + final Function1<FBNetworkElement, Boolean> _function = (FBNetworkElement e) -> { + return Boolean.valueOf((!(e instanceof AdapterFB))); + }; + Iterable<FBNetworkElement> fbs = IterableExtensions.<FBNetworkElement>filter(fbn.getNetworkElements(), _function); + ArrayList<ArrayList<?>> parameters = CompositeFBFilter.getParameters(IterableExtensions.<FBNetworkElement>toList(fbs)); StringConcatenation _builder = new StringConcatenation(); _builder.append("parameters = {"); _builder.newLine(); @@ -176,8 +165,7 @@ _builder.append(" "); _builder.append("{fbNum = "); Object _get = p.get(0); - int _minus = ((((Integer) _get)).intValue() - numAdapters); - _builder.append(_minus, " "); + _builder.append(((Integer) _get), " "); _builder.append(", diNameID = \""); Object _get_1 = p.get(1); _builder.append(_get_1, " "); @@ -199,14 +187,7 @@ _builder.append("eventConnections = {"); _builder.newLine(); _builder.append(" "); - FBNetwork _fBNetwork = type.getFBNetwork(); - EList<FBNetworkElement> _networkElements = _fBNetwork.getNetworkElements(); - Iterable<AdapterFB> _filter = Iterables.<AdapterFB>filter(_networkElements, AdapterFB.class); - int numAdapters = IterableExtensions.size(_filter); - _builder.newLineIfNotEmpty(); - _builder.append(" "); - FBNetwork _fBNetwork_1 = type.getFBNetwork(); - EList<EventConnection> allCons = _fBNetwork_1.getEventConnections(); + EList<EventConnection> allCons = type.getFBNetwork().getEventConnections(); _builder.newLineIfNotEmpty(); _builder.append(" "); final Function1<EventConnection, Boolean> _function = (EventConnection e) -> { @@ -223,63 +204,51 @@ _builder.appendImmediate(",", " "); } _builder.append(" "); - Event _source = con.getSource(); - FBNetworkElement sne = _source.getFBNetworkElement(); + FBNetworkElement sne = con.getSource().getFBNetworkElement(); _builder.newLineIfNotEmpty(); _builder.append(" "); - Event _destination = con.getDestination(); - FBNetworkElement dne = _destination.getFBNetworkElement(); + FBNetworkElement dne = con.getDestination().getFBNetworkElement(); _builder.newLineIfNotEmpty(); { - if (((!Objects.equal(null, dne)) && (!Objects.equal(null, sne)))) { + if (((null != dne) && (null != sne))) { _builder.append(" "); _builder.append("{"); - Event _source_1 = con.getSource(); - String _luaConnectionString = CompositeFBFilter.luaConnectionString(sne, _source_1, numAdapters, type, "src"); + String _luaConnectionString = CompositeFBFilter.luaConnectionString(sne, con.getSource(), type, "src"); _builder.append(_luaConnectionString, " "); _builder.append(", "); - Event _destination_1 = con.getDestination(); - String _luaConnectionString_1 = CompositeFBFilter.luaConnectionString(dne, _destination_1, numAdapters, type, "dst"); + String _luaConnectionString_1 = CompositeFBFilter.luaConnectionString(dne, con.getDestination(), type, "dst"); _builder.append(_luaConnectionString_1, " "); _builder.append("}"); _builder.newLineIfNotEmpty(); } else { - boolean _equals = Objects.equal(null, dne); - if (_equals) { + if ((null == dne)) { _builder.append(" "); _builder.append("{"); - Event _source_2 = con.getSource(); - String _luaConnectionString_2 = CompositeFBFilter.luaConnectionString(sne, _source_2, numAdapters, type, "src"); + String _luaConnectionString_2 = CompositeFBFilter.luaConnectionString(sne, con.getSource(), type, "src"); _builder.append(_luaConnectionString_2, " "); _builder.append(", dstID = \""); - Event _destination_2 = con.getDestination(); - String _name = _destination_2.getName(); + String _name = con.getDestination().getName(); _builder.append(_name, " "); _builder.append("\", dstFBNum = -1}"); _builder.newLineIfNotEmpty(); } else { - boolean _equals_1 = Objects.equal(null, sne); - if (_equals_1) { + if ((null == sne)) { _builder.append(" "); _builder.append("{srcID = \""); - Event _source_3 = con.getSource(); - String _name_1 = _source_3.getName(); + String _name_1 = con.getSource().getName(); _builder.append(_name_1, " "); _builder.append("\", srcFBNum = -1, "); - Event _destination_3 = con.getDestination(); - String _luaConnectionString_3 = CompositeFBFilter.luaConnectionString(dne, _destination_3, numAdapters, type, "dst"); + String _luaConnectionString_3 = CompositeFBFilter.luaConnectionString(dne, con.getDestination(), type, "dst"); _builder.append(_luaConnectionString_3, " "); _builder.append("}"); _builder.newLineIfNotEmpty(); } else { _builder.append(" "); _builder.append("{srcID = \""); - Event _source_4 = con.getSource(); - String _name_2 = _source_4.getName(); + String _name_2 = con.getSource().getName(); _builder.append(_name_2, " "); _builder.append("\", srcFBNum = -1, dstID = \""); - Event _destination_4 = con.getDestination(); - String _name_3 = _destination_4.getName(); + String _name_3 = con.getDestination().getName(); _builder.append(_name_3, " "); _builder.append("\", dstFBNum = -1}"); _builder.newLineIfNotEmpty(); @@ -293,66 +262,58 @@ return _builder; } - public static String luaConnectionString(final FBNetworkElement e, final IInterfaceElement ev, final int numAdapters, final CompositeFBType type, final String stringID) { - InterfaceList _interfaceList = type.getInterfaceList(); - EList<AdapterDeclaration> _plugs = _interfaceList.getPlugs(); + public static String luaConnectionString(final FBNetworkElement e, final IInterfaceElement ev, final CompositeFBType type, final String stringID) { final Function1<AdapterDeclaration, AdapterFB> _function = (AdapterDeclaration it) -> { return it.getAdapterFB(); }; - List<AdapterFB> _map = ListExtensions.<AdapterDeclaration, AdapterFB>map(_plugs, _function); - List<AdapterFB> plugs = IterableExtensions.<AdapterFB>toList(_map); - InterfaceList _interfaceList_1 = type.getInterfaceList(); - EList<AdapterDeclaration> _sockets = _interfaceList_1.getSockets(); + List<AdapterFB> plugs = IterableExtensions.<AdapterFB>toList(ListExtensions.<AdapterDeclaration, AdapterFB>map(type.getInterfaceList().getPlugs(), _function)); final Function1<AdapterDeclaration, AdapterFB> _function_1 = (AdapterDeclaration it) -> { return it.getAdapterFB(); }; - List<AdapterFB> _map_1 = ListExtensions.<AdapterDeclaration, AdapterFB>map(_sockets, _function_1); - List<AdapterFB> sockets = IterableExtensions.<AdapterFB>toList(_map_1); + List<AdapterFB> sockets = IterableExtensions.<AdapterFB>toList(ListExtensions.<AdapterDeclaration, AdapterFB>map(type.getInterfaceList().getSockets(), _function_1)); if ((e instanceof AdapterFB)) { boolean _contains = plugs.contains(e); if (_contains) { StringConcatenation _builder = new StringConcatenation(); - _builder.append(stringID, ""); + _builder.append(stringID); _builder.append("ID = \""); String _name = ev.getName(); - _builder.append(_name, ""); + _builder.append(_name); _builder.append("\", "); - _builder.append(stringID, ""); + _builder.append(stringID); _builder.append("FBNum = "); - int _indexOf = plugs.indexOf(e); - int _bitwiseOr = (CompositeFBFilter.ADAPTER_MARKER | _indexOf); - _builder.append(_bitwiseOr, ""); + _builder.append((CompositeFBFilter.ADAPTER_MARKER | plugs.indexOf(e))); return _builder.toString(); } else { StringConcatenation _builder_1 = new StringConcatenation(); - _builder_1.append(stringID, ""); + _builder_1.append(stringID); _builder_1.append("ID = \""); String _name_1 = ev.getName(); - _builder_1.append(_name_1, ""); + _builder_1.append(_name_1); _builder_1.append("\", "); - _builder_1.append(stringID, ""); + _builder_1.append(stringID); _builder_1.append("FBNum = "); int _size = plugs.size(); - int _indexOf_1 = sockets.indexOf(e); - int _plus = (_size + _indexOf_1); - int _bitwiseOr_1 = (CompositeFBFilter.ADAPTER_MARKER | _plus); - _builder_1.append(_bitwiseOr_1, ""); + int _indexOf = sockets.indexOf(e); + int _plus = (_size + _indexOf); + int _bitwiseOr = (CompositeFBFilter.ADAPTER_MARKER | _plus); + _builder_1.append(_bitwiseOr); return _builder_1.toString(); } } else { StringConcatenation _builder_2 = new StringConcatenation(); - _builder_2.append(stringID, ""); + _builder_2.append(stringID); _builder_2.append("ID = \""); String _name_2 = ev.getName(); - _builder_2.append(_name_2, ""); + _builder_2.append(_name_2); _builder_2.append("\", "); - _builder_2.append(stringID, ""); + _builder_2.append(stringID); _builder_2.append("FBNum = "); - FBNetwork _fBNetwork = type.getFBNetwork(); - EList<FBNetworkElement> _networkElements = _fBNetwork.getNetworkElements(); - int _indexOf_2 = _networkElements.indexOf(e); - int _minus = (_indexOf_2 - numAdapters); - _builder_2.append(_minus, ""); + final Function1<FBNetworkElement, Boolean> _function_2 = (FBNetworkElement f) -> { + return Boolean.valueOf((!(f instanceof AdapterFB))); + }; + int _indexOf_1 = IterableExtensions.<FBNetworkElement>toList(IterableExtensions.<FBNetworkElement>filter(type.getFBNetwork().getNetworkElements(), _function_2)).indexOf(e); + _builder_2.append(_indexOf_1); return _builder_2.toString(); } } @@ -362,21 +323,13 @@ _builder.append("fannedOutEventConnections = {"); _builder.newLine(); _builder.append(" "); - FBNetwork _fBNetwork = type.getFBNetwork(); - EList<FBNetworkElement> _networkElements = _fBNetwork.getNetworkElements(); - Iterable<AdapterFB> _filter = Iterables.<AdapterFB>filter(_networkElements, AdapterFB.class); - int numAdapters = IterableExtensions.size(_filter); - _builder.newLineIfNotEmpty(); - _builder.append(" "); - FBNetwork _fBNetwork_1 = type.getFBNetwork(); - EList<EventConnection> allCons = _fBNetwork_1.getEventConnections(); + EList<EventConnection> allCons = type.getFBNetwork().getEventConnections(); _builder.newLineIfNotEmpty(); _builder.append(" "); final Function1<EventConnection, Boolean> _function = (EventConnection e) -> { return Boolean.valueOf(((e.getSource().getOutputConnections().size() == 1) || ((e.getSource().getOutputConnections().size() > 1) && e.getSource().getOutputConnections().get(0).equals(e)))); }; - Iterable<EventConnection> _filter_1 = IterableExtensions.<EventConnection>filter(allCons, _function); - List<EventConnection> conList = IterableExtensions.<EventConnection>toList(_filter_1); + List<EventConnection> conList = IterableExtensions.<EventConnection>toList(IterableExtensions.<EventConnection>filter(allCons, _function)); _builder.newLineIfNotEmpty(); _builder.append(" "); final Function1<EventConnection, Boolean> _function_1 = (EventConnection e) -> { @@ -392,26 +345,22 @@ } else { _builder.appendImmediate(",", ""); } - Event _destination = con.getDestination(); - FBNetworkElement dne = _destination.getFBNetworkElement(); + FBNetworkElement dne = con.getDestination().getFBNetworkElement(); _builder.newLineIfNotEmpty(); { - boolean _notEquals = (!Objects.equal(null, dne)); - if (_notEquals) { + if ((null != dne)) { _builder.append("{connectionNum = "); int _connectionNumber = CompositeFBFilter.getConnectionNumber(conList, con); - _builder.append(_connectionNumber, ""); + _builder.append(_connectionNumber); _builder.append(", "); - Event _destination_1 = con.getDestination(); - String _luaConnectionString = CompositeFBFilter.luaConnectionString(dne, _destination_1, numAdapters, type, "dst"); - _builder.append(_luaConnectionString, ""); + String _luaConnectionString = CompositeFBFilter.luaConnectionString(dne, con.getDestination(), type, "dst"); + _builder.append(_luaConnectionString); _builder.append("}"); _builder.newLineIfNotEmpty(); } else { _builder.append("{dstID = \""); - Event _destination_2 = con.getDestination(); - String _name = _destination_2.getName(); - _builder.append(_name, ""); + String _name = con.getDestination().getName(); + _builder.append(_name); _builder.append("\", -1}"); _builder.newLineIfNotEmpty(); } @@ -423,10 +372,7 @@ } public static int getConnectionNumber(final List<?> allCons, final Connection con) { - IInterfaceElement _source = con.getSource(); - EList<Connection> _outputConnections = _source.getOutputConnections(); - Connection _get = _outputConnections.get(0); - int num = allCons.indexOf(_get); + int num = allCons.indexOf(con.getSource().getOutputConnections().get(0)); return num; } @@ -435,14 +381,7 @@ _builder.append("dataConnections = {"); _builder.newLine(); _builder.append(" "); - FBNetwork _fBNetwork = type.getFBNetwork(); - EList<FBNetworkElement> _networkElements = _fBNetwork.getNetworkElements(); - Iterable<AdapterFB> _filter = Iterables.<AdapterFB>filter(_networkElements, AdapterFB.class); - int numAdapters = IterableExtensions.size(_filter); - _builder.newLineIfNotEmpty(); - _builder.append(" "); - FBNetwork _fBNetwork_1 = type.getFBNetwork(); - EList<DataConnection> allCons = _fBNetwork_1.getDataConnections(); + EList<DataConnection> allCons = type.getFBNetwork().getDataConnections(); _builder.newLineIfNotEmpty(); _builder.append(" "); final Function1<DataConnection, Boolean> _function = (DataConnection e) -> { @@ -459,66 +398,54 @@ _builder.appendImmediate(",", " "); } _builder.append(" "); - VarDeclaration _source = con.getSource(); - FBNetworkElement sne = _source.getFBNetworkElement(); + FBNetworkElement sne = con.getSource().getFBNetworkElement(); _builder.newLineIfNotEmpty(); _builder.append(" "); - VarDeclaration _destination = con.getDestination(); - FBNetworkElement dne = _destination.getFBNetworkElement(); + FBNetworkElement dne = con.getDestination().getFBNetworkElement(); _builder.newLineIfNotEmpty(); { - if (((!Objects.equal(null, dne)) && (!Objects.equal(null, sne)))) { + if (((null != dne) && (null != sne))) { _builder.append(" "); _builder.append("{"); - VarDeclaration _source_1 = con.getSource(); - String _luaConnectionString = CompositeFBFilter.luaConnectionString(sne, _source_1, numAdapters, type, "src"); + String _luaConnectionString = CompositeFBFilter.luaConnectionString(sne, con.getSource(), type, "src"); _builder.append(_luaConnectionString, " "); _builder.append(", "); - VarDeclaration _destination_1 = con.getDestination(); - String _luaConnectionString_1 = CompositeFBFilter.luaConnectionString(dne, _destination_1, numAdapters, type, "dst"); + String _luaConnectionString_1 = CompositeFBFilter.luaConnectionString(dne, con.getDestination(), type, "dst"); _builder.append(_luaConnectionString_1, " "); _builder.append("}"); _builder.newLineIfNotEmpty(); } else { - boolean _equals = Objects.equal(null, dne); - if (_equals) { + if ((null == dne)) { _builder.append(" "); _builder.append("{"); - VarDeclaration _source_2 = con.getSource(); - String _luaConnectionString_2 = CompositeFBFilter.luaConnectionString(sne, _source_2, numAdapters, type, "src"); + String _luaConnectionString_2 = CompositeFBFilter.luaConnectionString(sne, con.getSource(), type, "src"); _builder.append(_luaConnectionString_2, " "); _builder.append(", dstID = \""); - VarDeclaration _destination_2 = con.getDestination(); - String _name = _destination_2.getName(); + String _name = con.getDestination().getName(); _builder.append(_name, " "); _builder.append("\", dstFBNum = -1}"); _builder.newLineIfNotEmpty(); } else { - boolean _equals_1 = Objects.equal(null, sne); - if (_equals_1) { + if ((null == sne)) { _builder.append(" "); _builder.append("{srcID = \""); - VarDeclaration _source_3 = con.getSource(); - String _name_1 = _source_3.getName(); + String _name_1 = con.getSource().getName(); _builder.append(_name_1, " "); _builder.append("\", srcFBNum = -1, "); - VarDeclaration _destination_3 = con.getDestination(); - String _luaConnectionString_3 = CompositeFBFilter.luaConnectionString(dne, _destination_3, numAdapters, type, "dst"); + String _luaConnectionString_3 = CompositeFBFilter.luaConnectionString(dne, con.getDestination(), type, "dst"); _builder.append(_luaConnectionString_3, " "); _builder.append("}"); _builder.newLineIfNotEmpty(); } else { _builder.append(" "); _builder.append("{srcID = \""); - VarDeclaration _source_4 = con.getSource(); - String _name_2 = _source_4.getName(); + String _name_2 = con.getSource().getName(); _builder.append(_name_2, " "); _builder.append("\", srcFBNum = -1, dstID = \""); String _name_3 = dne.getName(); _builder.append(_name_3, " "); _builder.append("."); - VarDeclaration _destination_4 = con.getDestination(); - String _name_4 = _destination_4.getName(); + String _name_4 = con.getDestination().getName(); _builder.append(_name_4, " "); _builder.append("\", dstFBNum = -1}"); _builder.newLineIfNotEmpty(); @@ -537,21 +464,13 @@ _builder.append("fannedOutDataConnections = {"); _builder.newLine(); _builder.append(" "); - FBNetwork _fBNetwork = type.getFBNetwork(); - EList<FBNetworkElement> _networkElements = _fBNetwork.getNetworkElements(); - Iterable<AdapterFB> _filter = Iterables.<AdapterFB>filter(_networkElements, AdapterFB.class); - int numAdapters = IterableExtensions.size(_filter); - _builder.newLineIfNotEmpty(); - _builder.append(" "); - FBNetwork _fBNetwork_1 = type.getFBNetwork(); - EList<DataConnection> allCons = _fBNetwork_1.getDataConnections(); + EList<DataConnection> allCons = type.getFBNetwork().getDataConnections(); _builder.newLineIfNotEmpty(); _builder.append(" "); final Function1<DataConnection, Boolean> _function = (DataConnection e) -> { return Boolean.valueOf(((e.getSource().getOutputConnections().size() == 1) || ((e.getSource().getOutputConnections().size() > 1) && e.getSource().getOutputConnections().get(0).equals(e)))); }; - Iterable<DataConnection> _filter_1 = IterableExtensions.<DataConnection>filter(allCons, _function); - List<DataConnection> conList = IterableExtensions.<DataConnection>toList(_filter_1); + List<DataConnection> conList = IterableExtensions.<DataConnection>toList(IterableExtensions.<DataConnection>filter(allCons, _function)); _builder.newLineIfNotEmpty(); _builder.append(" "); final Function1<DataConnection, Boolean> _function_1 = (DataConnection... [truncated message content] |
From: <for...@li...> - 2017-08-24 08:39:18
|
details: http://fordiac.hg.sourceforge.net/hgweb/fordiac/fordiac-ide/rev/be1f701e3b54 changeset: 3076:be1f701e3b54 user: Monika Wenger date: Thu Aug 24 10:38:57 2017 +0200 description: add missing imgs for cset 435d42c7686f diffstat: plugins/org.eclipse.fordiac.ide/html/communication/img/opc_ua_variable_read_write_app.png | Bin plugins/org.eclipse.fordiac.ide/html/communication/img/opc_ua_variable_read_write_system.png | Bin 2 files changed, 0 insertions(+), 0 deletions(-) diffs (4 lines): diff -r 3007a687eeab -r be1f701e3b54 plugins/org.eclipse.fordiac.ide/html/communication/img/opc_ua_variable_read_write_app.png Binary file plugins/org.eclipse.fordiac.ide/html/communication/img/opc_ua_variable_read_write_app.png has changed diff -r 3007a687eeab -r be1f701e3b54 plugins/org.eclipse.fordiac.ide/html/communication/img/opc_ua_variable_read_write_system.png Binary file plugins/org.eclipse.fordiac.ide/html/communication/img/opc_ua_variable_read_write_system.png has changed |
From: <for...@li...> - 2017-08-24 07:30:35
|
details: http://fordiac.hg.sourceforge.net/hgweb/fordiac/fordiac-ide/rev/8a33dd313dde changeset: 3074:8a33dd313dde user: Ben Schneider <sch...@fo...> date: Mon Aug 14 17:07:06 2017 +0200 description: Initial documentation for 4diac's ROS communication layer diffstat: plugins/org.eclipse.fordiac.ide/html/communication/img/fb_execute_action.PNG | Bin plugins/org.eclipse.fordiac.ide/html/communication/img/fb_trigger_service.PNG | Bin plugins/org.eclipse.fordiac.ide/html/communication/img/topics_example.PNG | Bin plugins/org.eclipse.fordiac.ide/html/communication/ros.html | 415 ++++++++++ 4 files changed, 415 insertions(+), 0 deletions(-) diffs (426 lines): diff -r d2d273844a1f -r 8a33dd313dde plugins/org.eclipse.fordiac.ide/html/communication/img/fb_execute_action.PNG Binary file plugins/org.eclipse.fordiac.ide/html/communication/img/fb_execute_action.PNG has changed diff -r d2d273844a1f -r 8a33dd313dde plugins/org.eclipse.fordiac.ide/html/communication/img/fb_trigger_service.PNG Binary file plugins/org.eclipse.fordiac.ide/html/communication/img/fb_trigger_service.PNG has changed diff -r d2d273844a1f -r 8a33dd313dde plugins/org.eclipse.fordiac.ide/html/communication/img/topics_example.PNG Binary file plugins/org.eclipse.fordiac.ide/html/communication/img/topics_example.PNG has changed diff -r d2d273844a1f -r 8a33dd313dde plugins/org.eclipse.fordiac.ide/html/communication/ros.html --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/plugins/org.eclipse.fordiac.ide/html/communication/ros.html Mon Aug 14 17:07:06 2017 +0200 @@ -0,0 +1,415 @@ +<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"> + +<html> +<head> + <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"> + <title>ROS with IEC 61499 Tutorial</title> + <link rel="stylesheet" type="text/css" href="../help.css"> +</head> + +<body> +<h1>How to use 4DIAC's ROS Communication Interface</h1> +<p> + +4DIAC supports ROS communication for ROS topics, services and actions. ROS +topics have been implemented as a communication layer in FORTE, whereas +services and actions require customized ROS function blocks. The implementation +was tested with ROS indigo and on Ubuntu 14.04. Other versions (ROS or Ubuntu) +might cause problems during the execution of the ROS 4DIAC communication interface. + +The Example service and action FBs can be used to implement your own IEC 61499 +compliant communication FBs for the datatypes you need. The ROS communication layer +for topics can easily be extended by adding the IEC61499-ROS mapping of other +datatypes. + +</p> + +<p> +Prerequisites: +<ol> + <li>ROS indigo installed on Ubuntu 14.04.</li> + <li>4DIAC-IDE installed</li> +</ol> +</p> + +<a name="build"/></a> +<h2>How to Build FORTE with ROS Functionalities</h2> +<!--TODO remove setup_posix script and show all cmake variables that have to be set +Perform the following steps to build forte with ROS communication support:--> +<ol> +<li> Checkout the ros branch of forte +<div class="code">$ git clone git://git.eclipse.org/gitroot/4diac/org.eclipse.4diac.forte.git +$ git checkout ros</div></li> +<li> Set the appropriate CMake variables +<div class="code">$ cd org.eclipse.4diac.forte +$ chmod +x setup_posix.sh +$ ./setup_posix.sh +$ cmake-gui // or via command line</div> +The variables you need to change are: +<div class="code">CMAKE_BUILD_TYPE=Debug +FORTE_MODULE_ROS=On +FORTE_COM_ROS=On +FORTE_RTTI_AND_EXCEPTIONS=true +</div> +</li> +<li> Build the forte +<div class="code">$ cd bin/posix +$ make</div> +</li> + +</ol> + +<a name="topics"/></a> +<h2>ROS Topics</h2> + +<p> +4DIAC implements a Communication Layer for standard ROS topics. Use the +PUBLISH_0 / SUBSCRIBE_0 and PUBLISH_1 / SUBSCRIBE_1 function blocks with the +following datatypes: + +</p> + + +<table> + <tr> + <th>ROS</th> + <th>IEC61499</th> + </tr> + <tr> + <td>std_msgs/Empty</td> + <td> - (empty)</td> + </tr> + <tr> + <tr> + <td>std_msgs/Float64</td> + <td>LREAL</td> + </tr> + <tr> + <td>std_msgs/Bool</td> + <td>BOOL</td> + </tr> + <tr> + <td>std_msgs/Int32</td> + <td>DINT</td> + </tr> + <tr> + <td>std_msgs/String</td> + <td>STRING</td> + </tr> +</table> + + +<p> +The ID data input for a communication layer contains the protocol and a string of vendor +specific parameters and looks like this: + +<pre>protocol[parameter]</pre> + +In our case the protocol string is ros. the parameters in square brackets are a ROS-topic +namespace and/or name and its corresponding ROS message type, separated by a colon. In +general the ID for a ROS publish or subscribe function block looks like this: + +<pre>ros[topic_name:message_name]</pre> + +An example of a ROS publish and subscribe connection within FORTE is shown next. +<br/> +<img src="./img/topics_example.png" alt="Example Application using publish and subscribe to send and receive ROS topics"/> +</p> + +<a name="services"/></a> +<h2>ROS Services</h2> + +The current implementation of ROS Services is limited to a single service type which is +<a href="http://docs.ros.org/kinetic/api/std_srvs/html/srv/Trigger.html">std_srvs/Trigger</a>. +This service client and server function block can be used as a template to implement the +ROS communication function blocks for your specific application. The interfaces of the +trigger service client and server are shown next. +<br/> +<img src="./img/fb_trigger_service.png" alt="Interface of the Trigger Service Server and Client SIFB"/> +<br/> + +A brief Interface description is given by the next 2 tables that show event and data connections of the implemented +ROS function blocks. +<br/> + +<table> + <tr> + <th>Event Name</th> + <th>Description</th> + </tr> + <tr> + <td>CLIENT</td> + <td></td> + </tr> + <tr> + <td>INIT+</td> + <td>Initialize Client FB</td> + </tr> + <tr> + <td>INIT-</td> + <td>Terminate Client FB</td> + </tr> + <tr> + <td>REQ</td> + <td>Send a ROS service request to the connected server</td> + </tr> + <tr> + <td>CNF</td> + <td>Client FB successfully received a response from the server</td> + </tr> + <tr> + <td>SERVER</td> + <td></td> + </tr> + <tr> + <td>INIT+</td> + <td>Initialize Server FB</td> + </tr> + <tr> + <td>INIT-</td> + <td>Terminate Server FB</td> + </tr> + <tr> + <td>IND</td> + <td>Server FB received a request from the connected client</td> + </tr> + <tr> + <td>RSP</td> + <td>Send a response to the client (e.g. when the FBN finished processing the request)</td> + </tr> +</table> + +<br/> + +<table> + <tr> + <th>Data Name</th> + <th>Data Type</th> + <th>Description</th> + </tr> + <tr> + <td>QI</td> + <td>BOOL</td> + <td>Qualifier input</td> + </tr> + <tr> + <td>NAMESPACE</td> + <td>STRING</td> + <td>Namespace of the service</td> + </tr> + <tr> + <td>SRVNAME</td> + <td>STRING</td> + <td>Name of the service</td> + </tr> + <tr> + <td>QO</td> + <td>BOOL</td> + <td>Qualifier output</td> + </tr> + <tr> + <td>STATUS</td> + <td>STRING</td> + <td>Status of the FB</td> + </tr> + <tr> + <td>SUCCESS</td> + <td>BOOL</td> + <td>Value related to response.success in std_srvs/Trigger.srv</td> + </tr> + <tr> + <td>MESSAGE</td> + <td>STRING</td> + <td>Value related to response.message in std_srvs/Trigger.srv</td> + </tr> +</table> +</br> + +<a name="actions"/></a> +<h2>ROS Actions</h2> +<p> +The ROS action type which is currently supported by 4DIAC is reapp_msgs/Execute.action. Its definition +is shown next. +</p> + +<pre> +#goal +string command +int32 id1 +int32 id2 +--- +#result +string result +int32 id +--- +#feedback +string state +</pre> + +<p> +You can install this action on Ubuntu 14.04 running ROS indigo via: +</p> +<pre> +sudo apt-get install ros-indigo-reapp-msgs +</pre> +<p> +The interface of the client and server FBs is shown in the following figure and described in the diagrams below: + +<br/> +<img src="./img/fb_execute_action.png" alt="Interface of the ExecuteAction Server and Client SIFB"/> +<br/> + +</p> +<table> + <tr> + <td>Event Name</td> + <td>Description</td> + </tr> + <tr> + <td>CLIENT</td> + <td></td> + </tr> + <tr> + <td>INIT+</td> + <td>Initialize Client FB</td> + </tr> + <tr> + <td>INIT-</td> + <td>Terminate Client FB</td> + </tr> + <tr> + <td>REQ+</td> + <td>Send a ROS action goal to the connected server</td> + </tr> + <tr> + <td>REQ-</td> + <td>Cancel the current ROS action goal to the connected server</td> + </tr> + <tr> + <td>CNF+</td> + <td>Client FB received a result from the server</td> + </tr> + <tr> + <tr> + <td>CNF-</td> + <td>Client FB received feedback from the server</td> + </tr> + <tr> + <td>SERVER</td> + <td></td> + </tr> + <tr> + <td>INIT+</td> + <td>Initialize Server FB</td> + </tr> + <tr> + <td>INIT-</td> + <td>Terminate Server FB</td> + </tr> + <tr> + <td>IND</td> + <td>Server FB received a goal from the connected client</td> + </tr> + <tr> + <td>RSP+</td> + <td>Send the result to the client (e.g. when the FBN finished processing the goal)</td> + </tr> + <tr> + <td>RSP-</td> + <td>Send feedback to the client (e.g. intermediate results during processing)</th> + </tr> +</table> +<br/> +the data in and outputs of the execute action FBs can be described as shown next: +<br/> +<table> + <tr> + <td>Data Name</td> + <td>Data Type</td> + <td>Description</td> + </tr> + <tr> + <td>QI</td> + <td>BOOL</td> + <td>Qualifier input</td> + </tr> + <tr> + <td>ACTIONNAMESPACE</td> + <td>STRING</td> + <td>Namespace of the action</td> + </tr> + <tr> + <td>ACTIONMSGNAME</td> + <td>STRING</td> + <td>Name of the action</td> + </tr> + <tr> + <td>COMMAND</td> + <td>STRING</td> + <td>Value related to goal.command in reapp_msgs/Execute.action</td> + </tr> + <tr> + <td>ID1</td> + <td>DINT</td> + <td>Value related to goal.id1 in reapp_msgs/Execute.action</td> + </tr> + <tr> + <td>ID2</td> + <td>DINT</td> + <td>Value related to goal.id2 in reapp_msgs/Execute.action</td> + </tr> + <tr> + <td>QO</td> + <td>BOOL</td> + <td>Qualifier output</td> + </tr> + <tr> + <td>FBSTATUS</td> + <td>STRING</td> + <td>Status of the FB</td> + </tr> + <tr> + <td>ACTIONSTATUS</td> + <td>STRING</td> + <td>Status of the action server</td> + </tr> + <tr> + <td>RESULT</td> + <td>STRING</td> + <td>Value related to result.result in reapp_msgs/Execute.action</td> + </tr> + <tr> + <td>ID</td> + <td>DINT</td> + <td>Value related to result.id in reapp_msgs/Execute.action</td> + </tr> + <tr> + <td>STATE</td> + <td>STRING</td> + <td>Value related to feedback.state in std_srvs/Trigger.srv</td> + </tr> +</table> + +<br/> + +A typical workflow with the execute action client would be to initialize it (INIT+), +synchronise the appropriate data for the goal and send the goal (REQ+). +When the goal is processed at the server the server may (depending on the implmentation) +send feedback to the client. This feedback is recognized by the block via a negative confirm +(CNF-). As soon as the server sends the result the client will get the result that is +synchronized at the RESULT and ID data outputs of the function block and a positive confirm +is triggered (CNF+). + +Testing and debugging of the action server and client can easily be done with the axserver/ +axclient provided by ROS. An axserver that connects to an execute action client within 4DIAC +with the configuration + +<pre>ACTIONNAMESPACE=test_execute +ACTIONMSGNAME=localisation</pre> + +can be started like this: + +<pre>rosrun actionlib axserver.py test_execute/localisation reapp_msgs/ExecuteAction</pre> + +</body> +</html> \ No newline at end of file |
From: <for...@li...> - 2017-08-24 07:30:35
|
details: http://fordiac.hg.sourceforge.net/hgweb/fordiac/fordiac-ide/rev/3007a687eeab changeset: 3075:3007a687eeab user: Monika Wenger date: Thu Aug 24 09:30:07 2017 +0200 description: fix for cset 8a33dd313dde diffstat: plugins/org.eclipse.fordiac.ide/html/toc.xml | 1 + 1 files changed, 1 insertions(+), 0 deletions(-) diffs (11 lines): diff -r 8a33dd313dde -r 3007a687eeab plugins/org.eclipse.fordiac.ide/html/toc.xml --- a/plugins/org.eclipse.fordiac.ide/html/toc.xml Mon Aug 14 17:07:06 2017 +0200 +++ b/plugins/org.eclipse.fordiac.ide/html/toc.xml Thu Aug 24 09:30:07 2017 +0200 @@ -180,6 +180,7 @@ <topic href="html/communication/simulation.html" label="Communicating with Simulation Tools"> <topic label="Matlab" href="html/communication/simulation.html#matlab" /> </topic> + <topic href="html/communication/ros.html" label="ROS"/> </topic> <topic href="html/faq/faq.html" label="Frequently Asked Questions"> |
From: <for...@li...> - 2017-08-24 07:30:35
|
details: http://fordiac.hg.sourceforge.net/hgweb/fordiac/fordiac-ide/rev/d2d273844a1f changeset: 3073:d2d273844a1f user: Monika Wenger date: Thu Aug 24 09:03:12 2017 +0200 description: reset patch: 4693116471ce diffstat: plugins/org.fordiac.ide/html/communication/img/fb_execute_action.PNG | Bin plugins/org.fordiac.ide/html/communication/img/fb_trigger_service.PNG | Bin plugins/org.fordiac.ide/html/communication/img/topics_example.PNG | Bin plugins/org.fordiac.ide/html/communication/ros.html | 415 ---------- plugins/org.fordiac.ide/toc.xml | 195 ---- 5 files changed, 0 insertions(+), 610 deletions(-) diffs (625 lines): diff -r 435d42c7686f -r d2d273844a1f plugins/org.fordiac.ide/html/communication/img/fb_execute_action.PNG Binary file plugins/org.fordiac.ide/html/communication/img/fb_execute_action.PNG has changed diff -r 435d42c7686f -r d2d273844a1f plugins/org.fordiac.ide/html/communication/img/fb_trigger_service.PNG Binary file plugins/org.fordiac.ide/html/communication/img/fb_trigger_service.PNG has changed diff -r 435d42c7686f -r d2d273844a1f plugins/org.fordiac.ide/html/communication/img/topics_example.PNG Binary file plugins/org.fordiac.ide/html/communication/img/topics_example.PNG has changed diff -r 435d42c7686f -r d2d273844a1f plugins/org.fordiac.ide/html/communication/ros.html --- a/plugins/org.fordiac.ide/html/communication/ros.html Wed Aug 23 18:18:05 2017 +0200 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,415 +0,0 @@ -<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"> - -<html> -<head> - <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"> - <title>ROS with IEC 61499 Tutorial</title> - <link rel="stylesheet" type="text/css" href="../help.css"> -</head> - -<body> -<h1>How to use 4DIAC's ROS Communication Interface</h1> -<p> - -4DIAC supports ROS communication for ROS topics, services and actions. ROS -topics have been implemented as a communication layer in FORTE, whereas -services and actions require customized ROS function blocks. The implementation -was tested with ROS indigo and on Ubuntu 14.04. Other versions (ROS or Ubuntu) -might cause problems during the execution of the ROS 4DIAC communication interface. - -The Example service and action FBs can be used to implement your own IEC 61499 -compliant communication FBs for the datatypes you need. The ROS communication layer -for topics can easily be extended by adding the IEC61499-ROS mapping of other -datatypes. - -</p> - -<p> -Prerequisites: -<ol> - <li>ROS indigo installed on Ubuntu 14.04.</li> - <li>4DIAC-IDE installed</li> -</ol> -</p> - -<a name="build"/></a> -<h2>How to Build FORTE with ROS Functionalities</h2> -<!--TODO remove setup_posix script and show all cmake variables that have to be set -Perform the following steps to build forte with ROS communication support:--> -<ol> -<li> Checkout the ros branch of forte -<div class="code">$ git clone git://git.eclipse.org/gitroot/4diac/org.eclipse.4diac.forte.git -$ git checkout ros</div></li> -<li> Set the appropriate CMake variables -<div class="code">$ cd org.eclipse.4diac.forte -$ chmod +x setup_posix.sh -$ ./setup_posix.sh -$ cmake-gui // or via command line</div> -The variables you need to change are: -<div class="code">CMAKE_BUILD_TYPE=Debug -FORTE_MODULE_ROS=On -FORTE_COM_ROS=On -FORTE_RTTI_AND_EXCEPTIONS=true -</div> -</li> -<li> Build the forte -<div class="code">$ cd bin/posix -$ make</div> -</li> - -</ol> - -<a name="topics"/></a> -<h2>ROS Topics</h2> - -<p> -4DIAC implements a Communication Layer for standard ROS topics. Use the -PUBLISH_0 / SUBSCRIBE_0 and PUBLISH_1 / SUBSCRIBE_1 function blocks with the -following datatypes: - -</p> - - -<table> - <tr> - <th>ROS</th> - <th>IEC61499</th> - </tr> - <tr> - <td>std_msgs/Empty</td> - <td> - (empty)</td> - </tr> - <tr> - <tr> - <td>std_msgs/Float64</td> - <td>LREAL</td> - </tr> - <tr> - <td>std_msgs/Bool</td> - <td>BOOL</td> - </tr> - <tr> - <td>std_msgs/Int32</td> - <td>DINT</td> - </tr> - <tr> - <td>std_msgs/String</td> - <td>STRING</td> - </tr> -</table> - - -<p> -The ID data input for a communication layer contains the protocol and a string of vendor -specific parameters and looks like this: - -<pre>protocol[parameter]</pre> - -In our case the protocol string is ros. the parameters in square brackets are a ROS-topic -namespace and/or name and its corresponding ROS message type, separated by a colon. In -general the ID for a ROS publish or subscribe function block looks like this: - -<pre>ros[topic_name:message_name]</pre> - -An example of a ROS publish and subscribe connection within FORTE is shown next. -<br/> -<img src="./img/topics_example.png" alt="Example Application using publish and subscribe to send and receive ROS topics"/> -</p> - -<a name="services"/></a> -<h2>ROS Services</h2> - -The current implementation of ROS Services is limited to a single service type which is -<a href="http://docs.ros.org/kinetic/api/std_srvs/html/srv/Trigger.html">std_srvs/Trigger</a>. -This service client and server function block can be used as a template to implement the -ROS communication function blocks for your specific application. The interfaces of the -trigger service client and server are shown next. -<br/> -<img src="./img/fb_trigger_service.png" alt="Interface of the Trigger Service Server and Client SIFB"/> -<br/> - -A brief Interface description is given by the next 2 tables that show event and data connections of the implemented -ROS function blocks. -<br/> - -<table> - <tr> - <th>Event Name</th> - <th>Description</th> - </tr> - <tr> - <td>CLIENT</td> - <td></td> - </tr> - <tr> - <td>INIT+</td> - <td>Initialize Client FB</td> - </tr> - <tr> - <td>INIT-</td> - <td>Terminate Client FB</td> - </tr> - <tr> - <td>REQ</td> - <td>Send a ROS service request to the connected server</td> - </tr> - <tr> - <td>CNF</td> - <td>Client FB successfully received a response from the server</td> - </tr> - <tr> - <td>SERVER</td> - <td></td> - </tr> - <tr> - <td>INIT+</td> - <td>Initialize Server FB</td> - </tr> - <tr> - <td>INIT-</td> - <td>Terminate Server FB</td> - </tr> - <tr> - <td>IND</td> - <td>Server FB received a request from the connected client</td> - </tr> - <tr> - <td>RSP</td> - <td>Send a response to the client (e.g. when the FBN finished processing the request)</td> - </tr> -</table> - -<br/> - -<table> - <tr> - <th>Data Name</th> - <th>Data Type</th> - <th>Description</th> - </tr> - <tr> - <td>QI</td> - <td>BOOL</td> - <td>Qualifier input</td> - </tr> - <tr> - <td>NAMESPACE</td> - <td>STRING</td> - <td>Namespace of the service</td> - </tr> - <tr> - <td>SRVNAME</td> - <td>STRING</td> - <td>Name of the service</td> - </tr> - <tr> - <td>QO</td> - <td>BOOL</td> - <td>Qualifier output</td> - </tr> - <tr> - <td>STATUS</td> - <td>STRING</td> - <td>Status of the FB</td> - </tr> - <tr> - <td>SUCCESS</td> - <td>BOOL</td> - <td>Value related to response.success in std_srvs/Trigger.srv</td> - </tr> - <tr> - <td>MESSAGE</td> - <td>STRING</td> - <td>Value related to response.message in std_srvs/Trigger.srv</td> - </tr> -</table> -</br> - -<a name="actions"/></a> -<h2>ROS Actions</h2> -<p> -The ROS action type which is currently supported by 4DIAC is reapp_msgs/Execute.action. Its definition -is shown next. -</p> - -<pre> -#goal -string command -int32 id1 -int32 id2 ---- -#result -string result -int32 id ---- -#feedback -string state -</pre> - -<p> -You can install this action on Ubuntu 14.04 running ROS indigo via: -</p> -<pre> -sudo apt-get install ros-indigo-reapp-msgs -</pre> -<p> -The interface of the client and server FBs is shown in the following figure and described in the diagrams below: - -<br/> -<img src="./img/fb_execute_action.png" alt="Interface of the ExecuteAction Server and Client SIFB"/> -<br/> - -</p> -<table> - <tr> - <td>Event Name</td> - <td>Description</td> - </tr> - <tr> - <td>CLIENT</td> - <td></td> - </tr> - <tr> - <td>INIT+</td> - <td>Initialize Client FB</td> - </tr> - <tr> - <td>INIT-</td> - <td>Terminate Client FB</td> - </tr> - <tr> - <td>REQ+</td> - <td>Send a ROS action goal to the connected server</td> - </tr> - <tr> - <td>REQ-</td> - <td>Cancel the current ROS action goal to the connected server</td> - </tr> - <tr> - <td>CNF+</td> - <td>Client FB received a result from the server</td> - </tr> - <tr> - <tr> - <td>CNF-</td> - <td>Client FB received feedback from the server</td> - </tr> - <tr> - <td>SERVER</td> - <td></td> - </tr> - <tr> - <td>INIT+</td> - <td>Initialize Server FB</td> - </tr> - <tr> - <td>INIT-</td> - <td>Terminate Server FB</td> - </tr> - <tr> - <td>IND</td> - <td>Server FB received a goal from the connected client</td> - </tr> - <tr> - <td>RSP+</td> - <td>Send the result to the client (e.g. when the FBN finished processing the goal)</td> - </tr> - <tr> - <td>RSP-</td> - <td>Send feedback to the client (e.g. intermediate results during processing)</th> - </tr> -</table> -<br/> -the data in and outputs of the execute action FBs can be described as shown next: -<br/> -<table> - <tr> - <td>Data Name</td> - <td>Data Type</td> - <td>Description</td> - </tr> - <tr> - <td>QI</td> - <td>BOOL</td> - <td>Qualifier input</td> - </tr> - <tr> - <td>ACTIONNAMESPACE</td> - <td>STRING</td> - <td>Namespace of the action</td> - </tr> - <tr> - <td>ACTIONMSGNAME</td> - <td>STRING</td> - <td>Name of the action</td> - </tr> - <tr> - <td>COMMAND</td> - <td>STRING</td> - <td>Value related to goal.command in reapp_msgs/Execute.action</td> - </tr> - <tr> - <td>ID1</td> - <td>DINT</td> - <td>Value related to goal.id1 in reapp_msgs/Execute.action</td> - </tr> - <tr> - <td>ID2</td> - <td>DINT</td> - <td>Value related to goal.id2 in reapp_msgs/Execute.action</td> - </tr> - <tr> - <td>QO</td> - <td>BOOL</td> - <td>Qualifier output</td> - </tr> - <tr> - <td>FBSTATUS</td> - <td>STRING</td> - <td>Status of the FB</td> - </tr> - <tr> - <td>ACTIONSTATUS</td> - <td>STRING</td> - <td>Status of the action server</td> - </tr> - <tr> - <td>RESULT</td> - <td>STRING</td> - <td>Value related to result.result in reapp_msgs/Execute.action</td> - </tr> - <tr> - <td>ID</td> - <td>DINT</td> - <td>Value related to result.id in reapp_msgs/Execute.action</td> - </tr> - <tr> - <td>STATE</td> - <td>STRING</td> - <td>Value related to feedback.state in std_srvs/Trigger.srv</td> - </tr> -</table> - -<br/> - -A typical workflow with the execute action client would be to initialize it (INIT+), -synchronise the appropriate data for the goal and send the goal (REQ+). -When the goal is processed at the server the server may (depending on the implmentation) -send feedback to the client. This feedback is recognized by the block via a negative confirm -(CNF-). As soon as the server sends the result the client will get the result that is -synchronized at the RESULT and ID data outputs of the function block and a positive confirm -is triggered (CNF+). - -Testing and debugging of the action server and client can easily be done with the axserver/ -axclient provided by ROS. An axserver that connects to an execute action client within 4DIAC -with the configuration - -<pre>ACTIONNAMESPACE=test_execute -ACTIONMSGNAME=localisation</pre> - -can be started like this: - -<pre>rosrun actionlib axserver.py test_execute/localisation reapp_msgs/ExecuteAction</pre> - -</body> -</html> \ No newline at end of file diff -r 435d42c7686f -r d2d273844a1f plugins/org.fordiac.ide/toc.xml --- a/plugins/org.fordiac.ide/toc.xml Wed Aug 23 18:18:05 2017 +0200 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,195 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<?NLS TYPE="org.eclipse.help.toc"?> - -<toc label="4diac User Guide"> - <topic href="html/overview/overview.html" label="Overview"> - <topic href="html/overview/perspectives.html" label="4diac-IDE Perspectives"> - <topic href="html/overview/perspectives.html#systemPerspective" label="System Perspective"> - </topic> - <topic href="html/overview/perspectives.html#typeManagementPerspective" label="Type Management Perspective"> - </topic> - <topic href="html/overview/perspectives.html#deploymentPerspective" label="Deployment Perspective"> - </topic> - <topic href="html/overview/perspectives.html#debugPerspective" label="Debug Perspective"> - </topic> - </topic> - <topic href="html/overview/properties.html" label="4diac-IDE Properties"> - <topic href="html/overview/properties.html#preferences" label="Preferences"> - </topic> - <topic href="html/overview/properties.html#toolbar" label="Toolbar"> - </topic> - </topic> - </topic> - - <topic label="Installation" href="html/installation/install.html"> - <topic label="4DIAC-IDE" href="html/installation/install.html#4DIAC-IDE"/> - <topic label="FORTE" href="html/installation/install.html#FORTE"> - <topic label="Setting up FORTE for different platforms" href="html/installation/install.html#BuildFORTE"> - <topic label="Setting up for Windows and Unix based systems" href="html/installation/windowsUnix.html"> - <topic label="Compiling and Debugging FORTE with MS Visual Studio Express" href="html/installation/visualStudio.html" /> - <topic label="Compiling and Debugging FORTE with Eclipse" href="html/installation/eclipse.html"/> - <topic label="Setting up Cygwin for FORTE Development" href="html/installation/cygwin.html"/> - <topic label="Setting up MinGW for FORTE Development" href="html/installation/minGW.html"/> - </topic> - <topic label="Setting up FORTE for lego Mindstorms EV3" href="html/installation/legoMindstormEv3.html"/> - <topic label="Setting up FORTE for lego Mindstorms" href="html/installation/mindstorms.html"/> - <topic label="Setting up FORTE for RaspberryPi" href="html/installation/raspi.html"> - <topic label="Cross-compiling FORTE to the Raspberry Pi" href="html/installation/raspi.html#crossCompiling"> - <topic label="Linux host" href="html/installation/raspi.html#crossCompilingLinux"/> - <topic label="Windows host" href="html/installation/raspi.html#crossCompilingWindows"/> - </topic> - </topic> - <topic label="Setting up FORTE for RaspberrySPS" href="html/installation/raspberrySPS.html"/> - <topic label="Setting up FORTE for WagoPFCs" href="html/installation/wago.html"/> - <topic label="Setting up FORTE for ICNova" href="html/installation/icnova.html"/> - <topic href="html/installation/revpi.html" label="Setting up FORTE for Revolution Pi"> - </topic> - </topic> - </topic> - </topic> - - - - <topic label="4diac-IDE"> - <topic label="Modelling of IEC 61499 Applications using the 4DIAC-IDE" href="html/4diacIDE/applicationModelling.html"> - <topic label="Create a new IEC 61499 System" href="html/4diacIDE/applicationModelling.html#CreateSystem"/> - <topic label="Create a new IEC 61499 Application" href="html/4diacIDE/applicationModelling.html#CreateApplication"/> - <topic label="Create IEC 61499 Subapplications" href="html/4diacIDE/applicationModelling.html#CreateSubapplications"/> - <topic label="Configuration of the Automation Hardware" href="html/4diacIDE/applicationModelling.html#ConfigureHardware"> - <topic label="Configuration of the Device's Configuration Profile" href="html/4diacIDE/applicationModelling.html#DeviceProfileConfiguration"/> - </topic> - <topic label="Mapping of Function Block Networks to Devices/Resources" href="html/4diacIDE/applicationModelling.html#MapNetworks"/> - </topic> - <topic label="Management of IEC 61499 Element Types" href="html/4diacIDE/managementOfTypes.html"> - <topic label="Create Function Block Types" href="html/4diacIDE/managementOfTypes.html#CreateTypes"/> - <topic label="Function Block Type Editor" href="html/4diacIDE/managementOfTypes.html#TypeEditor"/> - <topic label="FORTE Export of IEC 61499 Element Types" href="html/4diacIDE/managementOfTypes.html#ExportTypes"/> - <topic label="Other Type Editors" href="html/4diacIDE/managementOfTypes.html#OtherEditors"/> - <topic label="Function Block Tester" href="html/4diacIDE/managementOfTypes.html#FBTester"/> - </topic> - <topic label="Deployment of IEC 61499 Applications" href="html/4diacIDE/deployment.html"> - <topic label="Selection of Deployable System Configurations/Devices/Resources" href="html/4diacIDE/deployment.html#Deploy"/> - <topic label="Download of System Configurations/Devices/Resources" href="html/4diacIDE/deployment.html#Download"/> - <topic label="Creating Boot-files" href="html/4diacIDE/deployment.html#CreateBootfiles"/> - </topic> - <topic label="Other Useful Features" href="html/4diacIDE/otherUseful.html"> - <topic label="Import an Existing System" href="html/4diacIDE/otherUseful.html#ImportSystem"/> - <topic label="Import an Existing Type" href="html/4diacIDE/otherUseful.html#ImportType"/> - <topic label="Virtual DNS Functionality" href="html/4diacIDE/otherUseful.html#VirtualDNS"/> - </topic> - </topic> - - <topic label="Tutorials"> - <topic label="Explore an Existing System" href="html/tutorials/x3_tutorial.html"> - <topic label="Explore Existing Application" href="html/tutorials/x3_tutorial.html#application" /> - <topic href="html/tutorials/x3_tutorial.html#systemManagement" label="Explore Existing System Configuration"> - <topic href="html/tutorials/x3_tutorial.html#devices" label="Explore Existing Devices"> - </topic> - <topic href="html/tutorials/x3_tutorial.html#resources" label="Explore Existing Resources"> - </topic> - </topic> - <topic label="Deploy Your Application" href="html/tutorials/x3_tutorial.html#deployment" /> - </topic> - <topic label="Create a FlipFlop System" href="html/tutorials/flipFlop_tutorial.html"> - <topic label="Create a System" href="html/tutorials/flipFlop_tutorial.html#system"/> - <topic label="Adding a Device" href="html/tutorials/flipFlop_tutorial.html#device"/> - <topic label="Create the Application" href="html/tutorials/flipFlop_tutorial.html#application"/> - <topic label="Map the Application" href="html/tutorials/flipFlop_tutorial.html#mapping"/> - <topic label="Deploy the System" href="html/tutorials/flipFlop_tutorial.html#deploy"/> - </topic> - <topic href="html/tutorials/fbs.html" label="Developing Function Blocks"> - <topic href="html/tutorials/fbInterface.html" label="Create FB Interface"/> - <topic label="Implement FB Type"> - <topic href="html/tutorials/flipFlop_asCFB.html" label="Create Flip-Flop CFB"/> - <topic href="html/tutorials/flipFlop_asBFB.html" label="Create Flip-Flop BFB"/> - <topic href="html/tutorials/flipFlop_asSIFB.html" label="Create Flip-Flop SIFB"/> - </topic> - <topic href="html/tutorials/fBexport.html" label="Export FB Type for FORTE"/> - <topic href="html/tutorials/cmake.html" label="Add FB Type to FORTE"/> - <topic href="html/tutorials/fbTester.html" label="Test FB with FBTester"/> - </topic> - <topic href="html/tutorials/flipFlop_subapp.html" label="Create Flip-Flop Subapplication"> - <topic href="html/tutorials/flipFlop_subapp.html#create" label="Create a Subapplication"/> - <topic href="html/tutorials/flipFlop_subapp.html#fbnetwork" label="Subapplication Network"/> - <topic href="html/tutorials/flipFlop_subapp.html#interface" label="Subapplication Interface"/> - </topic> - <topic href="html/tutorials/monitoringDebugging.html" label="Monitoring and Debugging"> - <topic href="html/tutorials/monitoringDebugging.html#monitor" label="Start Monitoring"> - </topic> - <topic href="html/tutorial/monitoringDebugging.html#WatchElements" label="Watch Interface Elements"> - </topic> - <topic href="html/tutorials/monitoringDebugging.html#TriggerEvents" label="Trigger Events"> - </topic> - <topic href="html/tutorials/monitoringDebugging.html#ForceValues" label="Force Values"> - </topic> - <topic href="html/tutorials/monitoringDebugging.html#Breakpoints" label="Breakpoints"> - </topic> - </topic> - <topic href="html/tutorials/adapter.html" label="Adapter Usage"> - <topic href="html/tutorials/adapter.html#newAdapterType" label="Create a new Adapter Type"/> - <topic href="html/tutorials/adapter.html#useAdapterType" label="Use your new Adapter Type"/> - </topic> -</topic> - - <topic label="Using Communication Protocols"> - <topic label="FBDK/IP" href="html/communication/fbdkip.html"/> - <topic label="OPC DA" href="html/communication/opc.html"/> - <topic label="Modbus" href="html/communication/modbus.html"/> - <topic label="openPOWERLINK" href="html/communication/openPOWERLINK.html"/> - <topic label="MQTT with Eclipse Paho" href="html/communication/mqttPaho.html"/> - <topic label="OPC UA" href="html/communication/opc_ua.html"> - <topic label="Build FORTE with OPC UA" href="html/communication/opc_ua.html#build" /> - <topic label="OPC UA Variables" href="html/communication/opc_ua.html#variables" /> - <topic label="OPC UA Methods" href="html/communication/opc_ua.html#methods" /> - </topic> - <topic href="html/communication/ros.html" label="ROS"> - </topic> - </topic> - - <topic label="Frequently Asked Questions"> - <topic label="4DIAC-IDE"> - <topic label="When I open a certain perspective a view element is missing, how can I get it back" href="html/faq/ide.html#faq1"/> - <topic label="Download not possible! Defined profile () for RMT_XXX.xxx not supported" href="html/faq/ide.html#faq2"/> - <topic label="When I download my application I get an UNSUPPORTED TYPE error message in the Deployment Console" href="html/faq/ide.html#faq3"/> - <topic label="When I download my application I get a STATUS ACCESS VIOLATION error messages in the Deployment Console" href="html/faq/ide.html#faq4"/> - <topic label="When I download my application I get an Create FB Instance failed error" href="html/faq/ide.html#faq5"/> - <topic label="When I want to download my application I get an connection refused message" href="html/faq/ide.html#faq6"/> - <topic label="How do I use ARRAYs" href="html/faq/ide.html#faq7"/> - <topic label="What does CLEAN Device do" href="html/faq/ide.html#faq8"/> - <topic label="What does KILL Device do" href="html/faq/ide.html#faq9"/> - </topic> - <topic label="FORTE"> - <topic label="Windows/Cygwin: The setup script runs to completion but when building the target I get strange compile errors" href="html/faq/forte.html#faq1"/> - <topic label="CMake/Cygwin: Can not find C and C++ compilers" href="html/faq/forte.html#faq2"/> - <topic label="CMake/Cygwin: Can not find RC Compilers" href="html/faq/forte.html#faq3"/> - <topic label="FORTE is C++ why are you than using the C-style include files for the standard c library instead of the C++ style include files?" href="html/faq/forte.html#faq4"/> - <topic label="Within my FORTE console I get UDP-Socket Send failed: Network is unreachable" href="html/faq/forte.html#faq4"/> - <topic label="Within my FORTE console I get connection closed by peer" href="html/faq/forte.html#faq5"/> - </topic> - </topic> - - <topic label="Development Documentation"> - <topic label="4DIAC-IDE"> - <topic label="Building and Running 4DIAC-IDE from Source" href="html/development/installFromSource.html"> - <topic label="Get the Development Environment" href="html/development/installFromSource.html#devEnvironment"/> - <topic label="Check out the 4DIAC-IDE Repository" href="html/development/installFromSource.html#checkOutRepos"/> - <topic label="Import Plug-Ins into Workspace" href="html/development/installFromSource.html#importPlugins"/> - <topic href="html/development/installFromSource.html#targetPlatform" label="Set Target Platform"/> - <topic href="html/development/installFromSource.html#devMode" label="Run in Development Mode"/> - <topic label="Get 4DIAC-LIB" href="html/development/installFromSource.html#getLib"/> - <topic label="Building your own IDE" href="html/development/installFromSource.html#buildingIDE"/> - </topic> - <topic label="Building a Binary 4DIAC-IDE Package from Source" href="html/development/buildingBinary.html" /> - <topic label="Headless-Build of 4DIAC-IDE" href="html/development/headlessBuild.html" /> - <topic label="Automatic testing with Jubula" href="html/development/ide_jubula.html"/> - </topic> - <topic label="FORTE"> - <topic label="Structured Datatypes" href="html/development/forte_struct.html"/> - <topic label="Monitoring" href="html/development/forte_monitoring.html"/> - <topic label="Communication Architecture" href="html/development/forte_communicationArchitecture.html"/> - <topic label="External Event SIFB" href="html/development/externalEvent_example.html"/> - <topic label="Contributing to FORTE" href="html/development/contributeToForte.html"/> - <topic href="html/development/forte_codequality.html" label="Assuring FORTE Code Quality"/> - </topic> - </topic> -</toc> |
From: <for...@li...> - 2017-08-24 06:42:18
|
details: http://fordiac.hg.sourceforge.net/hgweb/fordiac/fordiac-ide/rev/4693116471ce changeset: 3071:4693116471ce user: Ben Schneider <sch...@fo...> date: Mon Aug 14 17:07:06 2017 +0200 description: Initial documentation for 4diac's ROS communication layer diffstat: plugins/org.fordiac.ide/html/communication/img/fb_execute_action.PNG | Bin plugins/org.fordiac.ide/html/communication/img/fb_trigger_service.PNG | Bin plugins/org.fordiac.ide/html/communication/img/topics_example.PNG | Bin plugins/org.fordiac.ide/html/communication/ros.html | 415 ++++++++++ plugins/org.fordiac.ide/toc.xml | 195 ++++ 5 files changed, 610 insertions(+), 0 deletions(-) diffs (625 lines): diff -r bbc9b4e26aa6 -r 4693116471ce plugins/org.fordiac.ide/html/communication/img/fb_execute_action.PNG Binary file plugins/org.fordiac.ide/html/communication/img/fb_execute_action.PNG has changed diff -r bbc9b4e26aa6 -r 4693116471ce plugins/org.fordiac.ide/html/communication/img/fb_trigger_service.PNG Binary file plugins/org.fordiac.ide/html/communication/img/fb_trigger_service.PNG has changed diff -r bbc9b4e26aa6 -r 4693116471ce plugins/org.fordiac.ide/html/communication/img/topics_example.PNG Binary file plugins/org.fordiac.ide/html/communication/img/topics_example.PNG has changed diff -r bbc9b4e26aa6 -r 4693116471ce plugins/org.fordiac.ide/html/communication/ros.html --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/plugins/org.fordiac.ide/html/communication/ros.html Mon Aug 14 17:07:06 2017 +0200 @@ -0,0 +1,415 @@ +<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"> + +<html> +<head> + <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"> + <title>ROS with IEC 61499 Tutorial</title> + <link rel="stylesheet" type="text/css" href="../help.css"> +</head> + +<body> +<h1>How to use 4DIAC's ROS Communication Interface</h1> +<p> + +4DIAC supports ROS communication for ROS topics, services and actions. ROS +topics have been implemented as a communication layer in FORTE, whereas +services and actions require customized ROS function blocks. The implementation +was tested with ROS indigo and on Ubuntu 14.04. Other versions (ROS or Ubuntu) +might cause problems during the execution of the ROS 4DIAC communication interface. + +The Example service and action FBs can be used to implement your own IEC 61499 +compliant communication FBs for the datatypes you need. The ROS communication layer +for topics can easily be extended by adding the IEC61499-ROS mapping of other +datatypes. + +</p> + +<p> +Prerequisites: +<ol> + <li>ROS indigo installed on Ubuntu 14.04.</li> + <li>4DIAC-IDE installed</li> +</ol> +</p> + +<a name="build"/></a> +<h2>How to Build FORTE with ROS Functionalities</h2> +<!--TODO remove setup_posix script and show all cmake variables that have to be set +Perform the following steps to build forte with ROS communication support:--> +<ol> +<li> Checkout the ros branch of forte +<div class="code">$ git clone git://git.eclipse.org/gitroot/4diac/org.eclipse.4diac.forte.git +$ git checkout ros</div></li> +<li> Set the appropriate CMake variables +<div class="code">$ cd org.eclipse.4diac.forte +$ chmod +x setup_posix.sh +$ ./setup_posix.sh +$ cmake-gui // or via command line</div> +The variables you need to change are: +<div class="code">CMAKE_BUILD_TYPE=Debug +FORTE_MODULE_ROS=On +FORTE_COM_ROS=On +FORTE_RTTI_AND_EXCEPTIONS=true +</div> +</li> +<li> Build the forte +<div class="code">$ cd bin/posix +$ make</div> +</li> + +</ol> + +<a name="topics"/></a> +<h2>ROS Topics</h2> + +<p> +4DIAC implements a Communication Layer for standard ROS topics. Use the +PUBLISH_0 / SUBSCRIBE_0 and PUBLISH_1 / SUBSCRIBE_1 function blocks with the +following datatypes: + +</p> + + +<table> + <tr> + <th>ROS</th> + <th>IEC61499</th> + </tr> + <tr> + <td>std_msgs/Empty</td> + <td> - (empty)</td> + </tr> + <tr> + <tr> + <td>std_msgs/Float64</td> + <td>LREAL</td> + </tr> + <tr> + <td>std_msgs/Bool</td> + <td>BOOL</td> + </tr> + <tr> + <td>std_msgs/Int32</td> + <td>DINT</td> + </tr> + <tr> + <td>std_msgs/String</td> + <td>STRING</td> + </tr> +</table> + + +<p> +The ID data input for a communication layer contains the protocol and a string of vendor +specific parameters and looks like this: + +<pre>protocol[parameter]</pre> + +In our case the protocol string is ros. the parameters in square brackets are a ROS-topic +namespace and/or name and its corresponding ROS message type, separated by a colon. In +general the ID for a ROS publish or subscribe function block looks like this: + +<pre>ros[topic_name:message_name]</pre> + +An example of a ROS publish and subscribe connection within FORTE is shown next. +<br/> +<img src="./img/topics_example.png" alt="Example Application using publish and subscribe to send and receive ROS topics"/> +</p> + +<a name="services"/></a> +<h2>ROS Services</h2> + +The current implementation of ROS Services is limited to a single service type which is +<a href="http://docs.ros.org/kinetic/api/std_srvs/html/srv/Trigger.html">std_srvs/Trigger</a>. +This service client and server function block can be used as a template to implement the +ROS communication function blocks for your specific application. The interfaces of the +trigger service client and server are shown next. +<br/> +<img src="./img/fb_trigger_service.png" alt="Interface of the Trigger Service Server and Client SIFB"/> +<br/> + +A brief Interface description is given by the next 2 tables that show event and data connections of the implemented +ROS function blocks. +<br/> + +<table> + <tr> + <th>Event Name</th> + <th>Description</th> + </tr> + <tr> + <td>CLIENT</td> + <td></td> + </tr> + <tr> + <td>INIT+</td> + <td>Initialize Client FB</td> + </tr> + <tr> + <td>INIT-</td> + <td>Terminate Client FB</td> + </tr> + <tr> + <td>REQ</td> + <td>Send a ROS service request to the connected server</td> + </tr> + <tr> + <td>CNF</td> + <td>Client FB successfully received a response from the server</td> + </tr> + <tr> + <td>SERVER</td> + <td></td> + </tr> + <tr> + <td>INIT+</td> + <td>Initialize Server FB</td> + </tr> + <tr> + <td>INIT-</td> + <td>Terminate Server FB</td> + </tr> + <tr> + <td>IND</td> + <td>Server FB received a request from the connected client</td> + </tr> + <tr> + <td>RSP</td> + <td>Send a response to the client (e.g. when the FBN finished processing the request)</td> + </tr> +</table> + +<br/> + +<table> + <tr> + <th>Data Name</th> + <th>Data Type</th> + <th>Description</th> + </tr> + <tr> + <td>QI</td> + <td>BOOL</td> + <td>Qualifier input</td> + </tr> + <tr> + <td>NAMESPACE</td> + <td>STRING</td> + <td>Namespace of the service</td> + </tr> + <tr> + <td>SRVNAME</td> + <td>STRING</td> + <td>Name of the service</td> + </tr> + <tr> + <td>QO</td> + <td>BOOL</td> + <td>Qualifier output</td> + </tr> + <tr> + <td>STATUS</td> + <td>STRING</td> + <td>Status of the FB</td> + </tr> + <tr> + <td>SUCCESS</td> + <td>BOOL</td> + <td>Value related to response.success in std_srvs/Trigger.srv</td> + </tr> + <tr> + <td>MESSAGE</td> + <td>STRING</td> + <td>Value related to response.message in std_srvs/Trigger.srv</td> + </tr> +</table> +</br> + +<a name="actions"/></a> +<h2>ROS Actions</h2> +<p> +The ROS action type which is currently supported by 4DIAC is reapp_msgs/Execute.action. Its definition +is shown next. +</p> + +<pre> +#goal +string command +int32 id1 +int32 id2 +--- +#result +string result +int32 id +--- +#feedback +string state +</pre> + +<p> +You can install this action on Ubuntu 14.04 running ROS indigo via: +</p> +<pre> +sudo apt-get install ros-indigo-reapp-msgs +</pre> +<p> +The interface of the client and server FBs is shown in the following figure and described in the diagrams below: + +<br/> +<img src="./img/fb_execute_action.png" alt="Interface of the ExecuteAction Server and Client SIFB"/> +<br/> + +</p> +<table> + <tr> + <td>Event Name</td> + <td>Description</td> + </tr> + <tr> + <td>CLIENT</td> + <td></td> + </tr> + <tr> + <td>INIT+</td> + <td>Initialize Client FB</td> + </tr> + <tr> + <td>INIT-</td> + <td>Terminate Client FB</td> + </tr> + <tr> + <td>REQ+</td> + <td>Send a ROS action goal to the connected server</td> + </tr> + <tr> + <td>REQ-</td> + <td>Cancel the current ROS action goal to the connected server</td> + </tr> + <tr> + <td>CNF+</td> + <td>Client FB received a result from the server</td> + </tr> + <tr> + <tr> + <td>CNF-</td> + <td>Client FB received feedback from the server</td> + </tr> + <tr> + <td>SERVER</td> + <td></td> + </tr> + <tr> + <td>INIT+</td> + <td>Initialize Server FB</td> + </tr> + <tr> + <td>INIT-</td> + <td>Terminate Server FB</td> + </tr> + <tr> + <td>IND</td> + <td>Server FB received a goal from the connected client</td> + </tr> + <tr> + <td>RSP+</td> + <td>Send the result to the client (e.g. when the FBN finished processing the goal)</td> + </tr> + <tr> + <td>RSP-</td> + <td>Send feedback to the client (e.g. intermediate results during processing)</th> + </tr> +</table> +<br/> +the data in and outputs of the execute action FBs can be described as shown next: +<br/> +<table> + <tr> + <td>Data Name</td> + <td>Data Type</td> + <td>Description</td> + </tr> + <tr> + <td>QI</td> + <td>BOOL</td> + <td>Qualifier input</td> + </tr> + <tr> + <td>ACTIONNAMESPACE</td> + <td>STRING</td> + <td>Namespace of the action</td> + </tr> + <tr> + <td>ACTIONMSGNAME</td> + <td>STRING</td> + <td>Name of the action</td> + </tr> + <tr> + <td>COMMAND</td> + <td>STRING</td> + <td>Value related to goal.command in reapp_msgs/Execute.action</td> + </tr> + <tr> + <td>ID1</td> + <td>DINT</td> + <td>Value related to goal.id1 in reapp_msgs/Execute.action</td> + </tr> + <tr> + <td>ID2</td> + <td>DINT</td> + <td>Value related to goal.id2 in reapp_msgs/Execute.action</td> + </tr> + <tr> + <td>QO</td> + <td>BOOL</td> + <td>Qualifier output</td> + </tr> + <tr> + <td>FBSTATUS</td> + <td>STRING</td> + <td>Status of the FB</td> + </tr> + <tr> + <td>ACTIONSTATUS</td> + <td>STRING</td> + <td>Status of the action server</td> + </tr> + <tr> + <td>RESULT</td> + <td>STRING</td> + <td>Value related to result.result in reapp_msgs/Execute.action</td> + </tr> + <tr> + <td>ID</td> + <td>DINT</td> + <td>Value related to result.id in reapp_msgs/Execute.action</td> + </tr> + <tr> + <td>STATE</td> + <td>STRING</td> + <td>Value related to feedback.state in std_srvs/Trigger.srv</td> + </tr> +</table> + +<br/> + +A typical workflow with the execute action client would be to initialize it (INIT+), +synchronise the appropriate data for the goal and send the goal (REQ+). +When the goal is processed at the server the server may (depending on the implmentation) +send feedback to the client. This feedback is recognized by the block via a negative confirm +(CNF-). As soon as the server sends the result the client will get the result that is +synchronized at the RESULT and ID data outputs of the function block and a positive confirm +is triggered (CNF+). + +Testing and debugging of the action server and client can easily be done with the axserver/ +axclient provided by ROS. An axserver that connects to an execute action client within 4DIAC +with the configuration + +<pre>ACTIONNAMESPACE=test_execute +ACTIONMSGNAME=localisation</pre> + +can be started like this: + +<pre>rosrun actionlib axserver.py test_execute/localisation reapp_msgs/ExecuteAction</pre> + +</body> +</html> \ No newline at end of file diff -r bbc9b4e26aa6 -r 4693116471ce plugins/org.fordiac.ide/toc.xml --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/plugins/org.fordiac.ide/toc.xml Mon Aug 14 17:07:06 2017 +0200 @@ -0,0 +1,195 @@ +<?xml version="1.0" encoding="UTF-8"?> +<?NLS TYPE="org.eclipse.help.toc"?> + +<toc label="4diac User Guide"> + <topic href="html/overview/overview.html" label="Overview"> + <topic href="html/overview/perspectives.html" label="4diac-IDE Perspectives"> + <topic href="html/overview/perspectives.html#systemPerspective" label="System Perspective"> + </topic> + <topic href="html/overview/perspectives.html#typeManagementPerspective" label="Type Management Perspective"> + </topic> + <topic href="html/overview/perspectives.html#deploymentPerspective" label="Deployment Perspective"> + </topic> + <topic href="html/overview/perspectives.html#debugPerspective" label="Debug Perspective"> + </topic> + </topic> + <topic href="html/overview/properties.html" label="4diac-IDE Properties"> + <topic href="html/overview/properties.html#preferences" label="Preferences"> + </topic> + <topic href="html/overview/properties.html#toolbar" label="Toolbar"> + </topic> + </topic> + </topic> + + <topic label="Installation" href="html/installation/install.html"> + <topic label="4DIAC-IDE" href="html/installation/install.html#4DIAC-IDE"/> + <topic label="FORTE" href="html/installation/install.html#FORTE"> + <topic label="Setting up FORTE for different platforms" href="html/installation/install.html#BuildFORTE"> + <topic label="Setting up for Windows and Unix based systems" href="html/installation/windowsUnix.html"> + <topic label="Compiling and Debugging FORTE with MS Visual Studio Express" href="html/installation/visualStudio.html" /> + <topic label="Compiling and Debugging FORTE with Eclipse" href="html/installation/eclipse.html"/> + <topic label="Setting up Cygwin for FORTE Development" href="html/installation/cygwin.html"/> + <topic label="Setting up MinGW for FORTE Development" href="html/installation/minGW.html"/> + </topic> + <topic label="Setting up FORTE for lego Mindstorms EV3" href="html/installation/legoMindstormEv3.html"/> + <topic label="Setting up FORTE for lego Mindstorms" href="html/installation/mindstorms.html"/> + <topic label="Setting up FORTE for RaspberryPi" href="html/installation/raspi.html"> + <topic label="Cross-compiling FORTE to the Raspberry Pi" href="html/installation/raspi.html#crossCompiling"> + <topic label="Linux host" href="html/installation/raspi.html#crossCompilingLinux"/> + <topic label="Windows host" href="html/installation/raspi.html#crossCompilingWindows"/> + </topic> + </topic> + <topic label="Setting up FORTE for RaspberrySPS" href="html/installation/raspberrySPS.html"/> + <topic label="Setting up FORTE for WagoPFCs" href="html/installation/wago.html"/> + <topic label="Setting up FORTE for ICNova" href="html/installation/icnova.html"/> + <topic href="html/installation/revpi.html" label="Setting up FORTE for Revolution Pi"> + </topic> + </topic> + </topic> + </topic> + + + + <topic label="4diac-IDE"> + <topic label="Modelling of IEC 61499 Applications using the 4DIAC-IDE" href="html/4diacIDE/applicationModelling.html"> + <topic label="Create a new IEC 61499 System" href="html/4diacIDE/applicationModelling.html#CreateSystem"/> + <topic label="Create a new IEC 61499 Application" href="html/4diacIDE/applicationModelling.html#CreateApplication"/> + <topic label="Create IEC 61499 Subapplications" href="html/4diacIDE/applicationModelling.html#CreateSubapplications"/> + <topic label="Configuration of the Automation Hardware" href="html/4diacIDE/applicationModelling.html#ConfigureHardware"> + <topic label="Configuration of the Device's Configuration Profile" href="html/4diacIDE/applicationModelling.html#DeviceProfileConfiguration"/> + </topic> + <topic label="Mapping of Function Block Networks to Devices/Resources" href="html/4diacIDE/applicationModelling.html#MapNetworks"/> + </topic> + <topic label="Management of IEC 61499 Element Types" href="html/4diacIDE/managementOfTypes.html"> + <topic label="Create Function Block Types" href="html/4diacIDE/managementOfTypes.html#CreateTypes"/> + <topic label="Function Block Type Editor" href="html/4diacIDE/managementOfTypes.html#TypeEditor"/> + <topic label="FORTE Export of IEC 61499 Element Types" href="html/4diacIDE/managementOfTypes.html#ExportTypes"/> + <topic label="Other Type Editors" href="html/4diacIDE/managementOfTypes.html#OtherEditors"/> + <topic label="Function Block Tester" href="html/4diacIDE/managementOfTypes.html#FBTester"/> + </topic> + <topic label="Deployment of IEC 61499 Applications" href="html/4diacIDE/deployment.html"> + <topic label="Selection of Deployable System Configurations/Devices/Resources" href="html/4diacIDE/deployment.html#Deploy"/> + <topic label="Download of System Configurations/Devices/Resources" href="html/4diacIDE/deployment.html#Download"/> + <topic label="Creating Boot-files" href="html/4diacIDE/deployment.html#CreateBootfiles"/> + </topic> + <topic label="Other Useful Features" href="html/4diacIDE/otherUseful.html"> + <topic label="Import an Existing System" href="html/4diacIDE/otherUseful.html#ImportSystem"/> + <topic label="Import an Existing Type" href="html/4diacIDE/otherUseful.html#ImportType"/> + <topic label="Virtual DNS Functionality" href="html/4diacIDE/otherUseful.html#VirtualDNS"/> + </topic> + </topic> + + <topic label="Tutorials"> + <topic label="Explore an Existing System" href="html/tutorials/x3_tutorial.html"> + <topic label="Explore Existing Application" href="html/tutorials/x3_tutorial.html#application" /> + <topic href="html/tutorials/x3_tutorial.html#systemManagement" label="Explore Existing System Configuration"> + <topic href="html/tutorials/x3_tutorial.html#devices" label="Explore Existing Devices"> + </topic> + <topic href="html/tutorials/x3_tutorial.html#resources" label="Explore Existing Resources"> + </topic> + </topic> + <topic label="Deploy Your Application" href="html/tutorials/x3_tutorial.html#deployment" /> + </topic> + <topic label="Create a FlipFlop System" href="html/tutorials/flipFlop_tutorial.html"> + <topic label="Create a System" href="html/tutorials/flipFlop_tutorial.html#system"/> + <topic label="Adding a Device" href="html/tutorials/flipFlop_tutorial.html#device"/> + <topic label="Create the Application" href="html/tutorials/flipFlop_tutorial.html#application"/> + <topic label="Map the Application" href="html/tutorials/flipFlop_tutorial.html#mapping"/> + <topic label="Deploy the System" href="html/tutorials/flipFlop_tutorial.html#deploy"/> + </topic> + <topic href="html/tutorials/fbs.html" label="Developing Function Blocks"> + <topic href="html/tutorials/fbInterface.html" label="Create FB Interface"/> + <topic label="Implement FB Type"> + <topic href="html/tutorials/flipFlop_asCFB.html" label="Create Flip-Flop CFB"/> + <topic href="html/tutorials/flipFlop_asBFB.html" label="Create Flip-Flop BFB"/> + <topic href="html/tutorials/flipFlop_asSIFB.html" label="Create Flip-Flop SIFB"/> + </topic> + <topic href="html/tutorials/fBexport.html" label="Export FB Type for FORTE"/> + <topic href="html/tutorials/cmake.html" label="Add FB Type to FORTE"/> + <topic href="html/tutorials/fbTester.html" label="Test FB with FBTester"/> + </topic> + <topic href="html/tutorials/flipFlop_subapp.html" label="Create Flip-Flop Subapplication"> + <topic href="html/tutorials/flipFlop_subapp.html#create" label="Create a Subapplication"/> + <topic href="html/tutorials/flipFlop_subapp.html#fbnetwork" label="Subapplication Network"/> + <topic href="html/tutorials/flipFlop_subapp.html#interface" label="Subapplication Interface"/> + </topic> + <topic href="html/tutorials/monitoringDebugging.html" label="Monitoring and Debugging"> + <topic href="html/tutorials/monitoringDebugging.html#monitor" label="Start Monitoring"> + </topic> + <topic href="html/tutorial/monitoringDebugging.html#WatchElements" label="Watch Interface Elements"> + </topic> + <topic href="html/tutorials/monitoringDebugging.html#TriggerEvents" label="Trigger Events"> + </topic> + <topic href="html/tutorials/monitoringDebugging.html#ForceValues" label="Force Values"> + </topic> + <topic href="html/tutorials/monitoringDebugging.html#Breakpoints" label="Breakpoints"> + </topic> + </topic> + <topic href="html/tutorials/adapter.html" label="Adapter Usage"> + <topic href="html/tutorials/adapter.html#newAdapterType" label="Create a new Adapter Type"/> + <topic href="html/tutorials/adapter.html#useAdapterType" label="Use your new Adapter Type"/> + </topic> +</topic> + + <topic label="Using Communication Protocols"> + <topic label="FBDK/IP" href="html/communication/fbdkip.html"/> + <topic label="OPC DA" href="html/communication/opc.html"/> + <topic label="Modbus" href="html/communication/modbus.html"/> + <topic label="openPOWERLINK" href="html/communication/openPOWERLINK.html"/> + <topic label="MQTT with Eclipse Paho" href="html/communication/mqttPaho.html"/> + <topic label="OPC UA" href="html/communication/opc_ua.html"> + <topic label="Build FORTE with OPC UA" href="html/communication/opc_ua.html#build" /> + <topic label="OPC UA Variables" href="html/communication/opc_ua.html#variables" /> + <topic label="OPC UA Methods" href="html/communication/opc_ua.html#methods" /> + </topic> + <topic href="html/communication/ros.html" label="ROS"> + </topic> + </topic> + + <topic label="Frequently Asked Questions"> + <topic label="4DIAC-IDE"> + <topic label="When I open a certain perspective a view element is missing, how can I get it back" href="html/faq/ide.html#faq1"/> + <topic label="Download not possible! Defined profile () for RMT_XXX.xxx not supported" href="html/faq/ide.html#faq2"/> + <topic label="When I download my application I get an UNSUPPORTED TYPE error message in the Deployment Console" href="html/faq/ide.html#faq3"/> + <topic label="When I download my application I get a STATUS ACCESS VIOLATION error messages in the Deployment Console" href="html/faq/ide.html#faq4"/> + <topic label="When I download my application I get an Create FB Instance failed error" href="html/faq/ide.html#faq5"/> + <topic label="When I want to download my application I get an connection refused message" href="html/faq/ide.html#faq6"/> + <topic label="How do I use ARRAYs" href="html/faq/ide.html#faq7"/> + <topic label="What does CLEAN Device do" href="html/faq/ide.html#faq8"/> + <topic label="What does KILL Device do" href="html/faq/ide.html#faq9"/> + </topic> + <topic label="FORTE"> + <topic label="Windows/Cygwin: The setup script runs to completion but when building the target I get strange compile errors" href="html/faq/forte.html#faq1"/> + <topic label="CMake/Cygwin: Can not find C and C++ compilers" href="html/faq/forte.html#faq2"/> + <topic label="CMake/Cygwin: Can not find RC Compilers" href="html/faq/forte.html#faq3"/> + <topic label="FORTE is C++ why are you than using the C-style include files for the standard c library instead of the C++ style include files?" href="html/faq/forte.html#faq4"/> + <topic label="Within my FORTE console I get UDP-Socket Send failed: Network is unreachable" href="html/faq/forte.html#faq4"/> + <topic label="Within my FORTE console I get connection closed by peer" href="html/faq/forte.html#faq5"/> + </topic> + </topic> + + <topic label="Development Documentation"> + <topic label="4DIAC-IDE"> + <topic label="Building and Running 4DIAC-IDE from Source" href="html/development/installFromSource.html"> + <topic label="Get the Development Environment" href="html/development/installFromSource.html#devEnvironment"/> + <topic label="Check out the 4DIAC-IDE Repository" href="html/development/installFromSource.html#checkOutRepos"/> + <topic label="Import Plug-Ins into Workspace" href="html/development/installFromSource.html#importPlugins"/> + <topic href="html/development/installFromSource.html#targetPlatform" label="Set Target Platform"/> + <topic href="html/development/installFromSource.html#devMode" label="Run in Development Mode"/> + <topic label="Get 4DIAC-LIB" href="html/development/installFromSource.html#getLib"/> + <topic label="Building your own IDE" href="html/development/installFromSource.html#buildingIDE"/> + </topic> + <topic label="Building a Binary 4DIAC-IDE Package from Source" href="html/development/buildingBinary.html" /> + <topic label="Headless-Build of 4DIAC-IDE" href="html/development/headlessBuild.html" /> + <topic label="Automatic testing with Jubula" href="html/development/ide_jubula.html"/> + </topic> + <topic label="FORTE"> + <topic label="Structured Datatypes" href="html/development/forte_struct.html"/> + <topic label="Monitoring" href="html/development/forte_monitoring.html"/> + <topic label="Communication Architecture" href="html/development/forte_communicationArchitecture.html"/> + <topic label="External Event SIFB" href="html/development/externalEvent_example.html"/> + <topic label="Contributing to FORTE" href="html/development/contributeToForte.html"/> + <topic href="html/development/forte_codequality.html" label="Assuring FORTE Code Quality"/> + </topic> + </topic> +</toc> |
From: <for...@li...> - 2017-08-24 06:42:18
|
details: http://fordiac.hg.sourceforge.net/hgweb/fordiac/fordiac-ide/rev/bbc9b4e26aa6 changeset: 3070:bbc9b4e26aa6 user: Monika Wenger date: Thu Aug 24 08:40:48 2017 +0200 description: [510954] fix lua generation for adapterInstanceDefinition diffstat: plugins/org.eclipse.fordiac.ide.export.forte_lua/src/org/eclipse/fordiac/ide/export/forte_lua/filter/LuaConstants.xtend | 2 +- 1 files changed, 1 insertions(+), 1 deletions(-) diffs (12 lines): diff -r 215ba78268b7 -r bbc9b4e26aa6 plugins/org.eclipse.fordiac.ide.export.forte_lua/src/org/eclipse/fordiac/ide/export/forte_lua/filter/LuaConstants.xtend --- a/plugins/org.eclipse.fordiac.ide.export.forte_lua/src/org/eclipse/fordiac/ide/export/forte_lua/filter/LuaConstants.xtend Wed Aug 23 23:05:18 2017 +0200 +++ b/plugins/org.eclipse.fordiac.ide.export.forte_lua/src/org/eclipse/fordiac/ide/export/forte_lua/filter/LuaConstants.xtend Thu Aug 24 08:40:48 2017 +0200 @@ -263,7 +263,7 @@ DODataTypeNames = «ifl.outputVars.typeList.luaValueList», numAdapters = «ifl.plugs.size + ifl.sockets.size», adapterInstanceDefinition = { - «ifl.plugs.map['''{adapterNameID = "«it.name»", adapterTypeNameID = "«it.typeName»", isPlug = true}'''].join(",\n")» + «ifl.plugs.map['''{adapterNameID = "«it.name»", adapterTypeNameID = "«it.typeName»", isPlug = true}'''].join(",\n")»«IF !ifl.sockets.isEmpty»,«ENDIF» «ifl.sockets.map['''{adapterNameID = "«it.name»", adapterTypeNameID = "«it.typeName»", isPlug = false}'''].join(",\n")» } }''' |
From: <for...@li...> - 2017-08-24 06:42:18
|
details: http://fordiac.hg.sourceforge.net/hgweb/fordiac/fordiac-ide/rev/435d42c7686f changeset: 3072:435d42c7686f user: Stefan Profanter <pro...@fo...> date: Wed Aug 23 18:18:05 2017 +0200 description: Add example for variable read/write diffstat: plugins/org.eclipse.fordiac.ide/html/communication/opc_ua.html | 19 +++++++++- 1 files changed, 18 insertions(+), 1 deletions(-) diffs (36 lines): diff -r 4693116471ce -r 435d42c7686f plugins/org.eclipse.fordiac.ide/html/communication/opc_ua.html --- a/plugins/org.eclipse.fordiac.ide/html/communication/opc_ua.html Mon Aug 14 17:07:06 2017 +0200 +++ b/plugins/org.eclipse.fordiac.ide/html/communication/opc_ua.html Wed Aug 23 18:18:05 2017 +0200 @@ -168,6 +168,23 @@ <p>You can then drag the variables into UaExpert's Data Access View and change the value of <span class="specificText">Num1/IN</span> and <span class="specificText">Num2/IN</span>. The value of <span class="specificText">Result/OUT</span> should then be the sum of those two values.</p> +<h3 id="variables_remote">Read and Write OPC UA variables on a remote server</h3> + +<p>This example shows you how you can use a <span class="element4diac">PUBLISH</span> function block to write to an OPC UA variable on a remote server, and how to use a <span class="element4diac">CLIENT</span> function block to read a variable value from a remote server.</p> + <p>Create a new System which includes two System Configurations: One for the remote server, and one for the local variable read/write. By running two FORTE instances on you local PC, it is possible to simulate the use-case where the server and client are in separate FORTE instances. The server could for example run on a device offering the variables, the client is then another device which requests information of the previous one.<br />To start two FORTE instances on the same PC, you can pass the port on the command line, e.g., <span class="specificText">./forte -c localhost:61500</span></p> + <p>The system configuration should then look like this:</p> + + <img src="./img/opc_ua_variable_read_write_system.png" alt="OPC UA Variable Read/Write System"/> + +<p>Then we create the follwing application. On the server side we create an OPC UA variable <span class="specificText">/Objects/1:Incrementer/Increment/IN</span> (<span class="element4diac">SUBSCRIBE_1</span>). When a client writes to this variable, it will be incremented (F_ADD) and then written to another OPC UA variable at <span class="specificText">/Objects/1:Incrementer/Incremented/OUT</span> (<span class="element4diac">PUBLISH_1</span>).</p> +<p>On the client side we create a <span class="element4diac">PUBLISH</span> FB (<span class="element4diac">WRITE_INCREMENT</span>) which should write a number to the variable on the remote server. To read the incremented value from the server, we use a <span class="element4diac">CLIENT</span> FB (<span class="element4diac">READ_INCREMENTED</span>), which reads the variable's value as soon as the REQ event is triggered.</p> +<p>Do not forget to connect the <span class="element4diac">COLD/WARM</span> events in the ressource view to the <span class="element4diac">INIT</span> event ports of the corresponding function blocks.</p> + + <img src="./img/opc_ua_variable_read_write_app.png" alt="OPC UA Variable Read/Write Application"/> + +<p>You can see that there are two <span class="element4diac">PUBLISH</span> function blocks in this APP: <span class="element4diac">PUBLISH_1</span> and <span class="element4diac">WRITE_INCREMENT</span>. Depending on the ID parameter, they differ in their functionality. For <span class="element4diac">PUBLISH_1</span> the ID does not include the OPC UA encpoint <span class="specificText">opc.tcp://localhost:4840</span> therefore the result will be an OPC UA server which offers a variable. <span class="element4diac">WRITE_INCREMENT</span> includes the encpoint in its ID field, therefore this FB will write the value from <span class="element4diac">SD_1</span> to the variable indicated by the ID on the remote server.</p> + <p>The client FB supports calling methods (see following section) and reading variable values. Depending on the OPC UA node given by the ID parameter it will be automatically determined if the remote node is a Variable where the client should read from, or if it is a method which should be called.</p> +<p><b>NOTE:</b> Currently open62541 does not support data change events, therefore you need to use polling to see if a variable has changed on the remote server. When data change events are supported, we will add support for that on <span class="element4diac">SUBSCRIBE</span> FBs.</p> <h2 id="methods">OPC UA Methods</h2> @@ -203,7 +220,7 @@ <h2 id="client">OPC UA Client</h2> -<p>In this step you will see how you can create an OPC UA client in an IEC 61499 application. A client is used to call methods on a OPC UA server. It uses the <span class="element4diac">CLIENT</span> function block which is able to call methods asynchronously.</p> +<p>In this step you will see how you can create an OPC UA client in an IEC 61499 application. A client is used to call methods on an OPC UA server and to write new values to variables. It uses the <span class="element4diac">CLIENT</span> function block which is able to call methods asynchronously.</p> <p>We will create a client which calls the <span class="element4diac">AddValues</span> method from the previous example. Therefore we extend the OPC UA methods example by adding additional function blocks.</p> <ol> |
From: <for...@li...> - 2017-08-23 21:05:42
|
details: http://fordiac.hg.sourceforge.net/hgweb/fordiac/fordiac-ide/rev/215ba78268b7 changeset: 3069:215ba78268b7 user: Alois Zoitl <alo...@gm...> date: Wed Aug 23 23:05:18 2017 +0200 description: [Bug 490695] implemented mirroring of interface elements of mapped supapps Bug: https://bugs.eclipse.org/bugs/show_bug.cgi?id=490695 Signed-off: alo...@gm... diffstat: plugins/org.eclipse.fordiac.ide.application/src/org/eclipse/fordiac/ide/application/commands/CreateSubAppInterfaceElementCommand.java | 57 ++++++++++ plugins/org.eclipse.fordiac.ide.application/src/org/eclipse/fordiac/ide/application/properties/AbstractEditInterfaceSection.java | 3 +- plugins/org.eclipse.fordiac.ide.application/src/org/eclipse/fordiac/ide/application/properties/EditInterfaceAdapterSection.java | 6 +- plugins/org.eclipse.fordiac.ide.application/src/org/eclipse/fordiac/ide/application/properties/EditInterfaceDataSection.java | 6 +- plugins/org.eclipse.fordiac.ide.application/src/org/eclipse/fordiac/ide/application/properties/EditInterfaceEventSection.java | 6 +- plugins/org.eclipse.fordiac.ide.model.commands/src/org/eclipse/fordiac/ide/model/commands/create/CreateInterfaceElementCommand.java | 17 +- 6 files changed, 79 insertions(+), 16 deletions(-) diffs (189 lines): diff -r 932d536c6e02 -r 215ba78268b7 plugins/org.eclipse.fordiac.ide.application/src/org/eclipse/fordiac/ide/application/commands/CreateSubAppInterfaceElementCommand.java --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/plugins/org.eclipse.fordiac.ide.application/src/org/eclipse/fordiac/ide/application/commands/CreateSubAppInterfaceElementCommand.java Wed Aug 23 23:05:18 2017 +0200 @@ -0,0 +1,57 @@ +/******************************************************************************* + * Copyright (c) 2017 fortiss GmbH + * + * All rights reserved. This program and the accompanying materials + * are made available under the terms of the Eclipse Public License v1.0 + * which accompanies this distribution, and is available at + * http://www.eclipse.org/legal/epl-v10.html + * + * Contributors: + * Alois Zoitl + * - initial API and implementation and/or initial documentation + *******************************************************************************/ +package org.eclipse.fordiac.ide.application.commands; + +import org.eclipse.fordiac.ide.model.commands.create.CreateInterfaceElementCommand; +import org.eclipse.fordiac.ide.model.data.DataType; +import org.eclipse.fordiac.ide.model.libraryElement.InterfaceList; + +public class CreateSubAppInterfaceElementCommand extends CreateInterfaceElementCommand { + + CreateInterfaceElementCommand mirroredElement = null; + + public CreateSubAppInterfaceElementCommand(DataType dataType, InterfaceList interfaceList, boolean isInput, + int index) { + super(dataType, interfaceList, isInput, index); + } + + @Override + public void execute() { + super.execute(); + if(interfaceList.getFBNetworkElement().isMapped()) { + //the subapp is mapped so we need to created the interface element also in the opposite entry + mirroredElement = new CreateInterfaceElementCommand(dataType, interfaceList.getFBNetworkElement().getOpposite().getInterface(), + isInput, index); + mirroredElement.execute(); + //Set the same name as the one we have also on the mirrored + mirroredElement.getInterfaceElement().setName(interfaceElement.getName()); + } + } + + @Override + public void redo() { + super.redo(); + if(null != mirroredElement) { + mirroredElement.redo(); + } + } + + @Override + public void undo() { + super.undo(); + if(null != mirroredElement) { + mirroredElement.undo(); + } + } + +} diff -r 932d536c6e02 -r 215ba78268b7 plugins/org.eclipse.fordiac.ide.application/src/org/eclipse/fordiac/ide/application/properties/AbstractEditInterfaceSection.java --- a/plugins/org.eclipse.fordiac.ide.application/src/org/eclipse/fordiac/ide/application/properties/AbstractEditInterfaceSection.java Wed Aug 23 22:35:10 2017 +0200 +++ b/plugins/org.eclipse.fordiac.ide.application/src/org/eclipse/fordiac/ide/application/properties/AbstractEditInterfaceSection.java Wed Aug 23 23:05:18 2017 +0200 @@ -9,6 +9,7 @@ *******************************************************************************/ package org.eclipse.fordiac.ide.application.properties; +import org.eclipse.fordiac.ide.application.commands.CreateSubAppInterfaceElementCommand; import org.eclipse.fordiac.ide.application.editparts.SubAppForFBNetworkEditPart; import org.eclipse.fordiac.ide.application.editparts.UISubAppNetworkEditPart; import org.eclipse.fordiac.ide.gef.DiagramEditorWithFlyoutPalette; @@ -79,7 +80,7 @@ EVENT, DATA, ADAPTER } - protected abstract CreateInterfaceElementCommand newCommand(boolean isInput); + protected abstract CreateSubAppInterfaceElementCommand newCommand(boolean isInput); protected abstract String[] fillTypeCombo(); @Override diff -r 932d536c6e02 -r 215ba78268b7 plugins/org.eclipse.fordiac.ide.application/src/org/eclipse/fordiac/ide/application/properties/EditInterfaceAdapterSection.java --- a/plugins/org.eclipse.fordiac.ide.application/src/org/eclipse/fordiac/ide/application/properties/EditInterfaceAdapterSection.java Wed Aug 23 22:35:10 2017 +0200 +++ b/plugins/org.eclipse.fordiac.ide.application/src/org/eclipse/fordiac/ide/application/properties/EditInterfaceAdapterSection.java Wed Aug 23 23:05:18 2017 +0200 @@ -12,11 +12,11 @@ import java.util.ArrayList; import java.util.Iterator; +import org.eclipse.fordiac.ide.application.commands.CreateSubAppInterfaceElementCommand; import org.eclipse.fordiac.ide.model.Palette.AdapterTypePaletteEntry; import org.eclipse.fordiac.ide.model.Palette.Palette; import org.eclipse.fordiac.ide.model.Palette.PaletteEntry; import org.eclipse.fordiac.ide.model.Palette.PaletteGroup; -import org.eclipse.fordiac.ide.model.commands.create.CreateInterfaceElementCommand; import org.eclipse.fordiac.ide.model.libraryElement.AdapterType; import org.eclipse.fordiac.ide.model.typelibrary.TypeLibrary; import org.eclipse.swt.widgets.Composite; @@ -37,9 +37,9 @@ } @Override - protected CreateInterfaceElementCommand newCommand(boolean isInput) { + protected CreateSubAppInterfaceElementCommand newCommand(boolean isInput) { AdapterType type = (AdapterType) getType().getFbNetwork().getApplication().getAutomationSystem().getPalette().getTypeEntry(fillTypeCombo()[0]).getType(); - return new CreateInterfaceElementCommand(type, getType().getInterface(), isInput, -1); + return new CreateSubAppInterfaceElementCommand(type, getType().getInterface(), isInput, -1); } @Override diff -r 932d536c6e02 -r 215ba78268b7 plugins/org.eclipse.fordiac.ide.application/src/org/eclipse/fordiac/ide/application/properties/EditInterfaceDataSection.java --- a/plugins/org.eclipse.fordiac.ide.application/src/org/eclipse/fordiac/ide/application/properties/EditInterfaceDataSection.java Wed Aug 23 22:35:10 2017 +0200 +++ b/plugins/org.eclipse.fordiac.ide.application/src/org/eclipse/fordiac/ide/application/properties/EditInterfaceDataSection.java Wed Aug 23 23:05:18 2017 +0200 @@ -14,7 +14,7 @@ import java.util.ArrayList; -import org.eclipse.fordiac.ide.model.commands.create.CreateInterfaceElementCommand; +import org.eclipse.fordiac.ide.application.commands.CreateSubAppInterfaceElementCommand; import org.eclipse.fordiac.ide.model.data.DataType; import org.eclipse.fordiac.ide.model.typelibrary.DataTypeLibrary; import org.eclipse.swt.widgets.Composite; @@ -29,8 +29,8 @@ } @Override - protected CreateInterfaceElementCommand newCommand(boolean isInput) { - return new CreateInterfaceElementCommand(DataTypeLibrary.getInstance().getType(fillTypeCombo()[2]), getType().getInterface(), isInput, -1); + protected CreateSubAppInterfaceElementCommand newCommand(boolean isInput) { + return new CreateSubAppInterfaceElementCommand(DataTypeLibrary.getInstance().getType(fillTypeCombo()[2]), getType().getInterface(), isInput, -1); } @Override diff -r 932d536c6e02 -r 215ba78268b7 plugins/org.eclipse.fordiac.ide.application/src/org/eclipse/fordiac/ide/application/properties/EditInterfaceEventSection.java --- a/plugins/org.eclipse.fordiac.ide.application/src/org/eclipse/fordiac/ide/application/properties/EditInterfaceEventSection.java Wed Aug 23 22:35:10 2017 +0200 +++ b/plugins/org.eclipse.fordiac.ide.application/src/org/eclipse/fordiac/ide/application/properties/EditInterfaceEventSection.java Wed Aug 23 23:05:18 2017 +0200 @@ -14,7 +14,7 @@ import java.util.ArrayList; -import org.eclipse.fordiac.ide.model.commands.create.CreateInterfaceElementCommand; +import org.eclipse.fordiac.ide.application.commands.CreateSubAppInterfaceElementCommand; import org.eclipse.fordiac.ide.model.data.DataType; import org.eclipse.fordiac.ide.model.typelibrary.EventTypeLibrary; import org.eclipse.swt.widgets.Composite; @@ -29,8 +29,8 @@ } @Override - protected CreateInterfaceElementCommand newCommand(boolean isInput) { - return new CreateInterfaceElementCommand(EventTypeLibrary.getInstance().getType(fillTypeCombo()[0]), getType().getInterface(), isInput, -1); + protected CreateSubAppInterfaceElementCommand newCommand(boolean isInput) { + return new CreateSubAppInterfaceElementCommand(EventTypeLibrary.getInstance().getType(fillTypeCombo()[0]), getType().getInterface(), isInput, -1); } @Override diff -r 932d536c6e02 -r 215ba78268b7 plugins/org.eclipse.fordiac.ide.model.commands/src/org/eclipse/fordiac/ide/model/commands/create/CreateInterfaceElementCommand.java --- a/plugins/org.eclipse.fordiac.ide.model.commands/src/org/eclipse/fordiac/ide/model/commands/create/CreateInterfaceElementCommand.java Wed Aug 23 22:35:10 2017 +0200 +++ b/plugins/org.eclipse.fordiac.ide.model.commands/src/org/eclipse/fordiac/ide/model/commands/create/CreateInterfaceElementCommand.java Wed Aug 23 23:05:18 2017 +0200 @@ -25,12 +25,13 @@ import org.eclipse.gef.commands.Command; public class CreateInterfaceElementCommand extends Command { - private boolean isInput; - private DataType dataType; - private IInterfaceElement interfaceElement; - private EList<? extends IInterfaceElement> interfaces; - private int index; - private InterfaceList interfaceList; + protected boolean isInput; + protected DataType dataType; + protected IInterfaceElement interfaceElement; + + protected EList<? extends IInterfaceElement> interfaces; + protected int index; + protected InterfaceList interfaceList; private AdapterCreateCommand cmd; public CreateInterfaceElementCommand(DataType dataType, InterfaceList interfaceList, boolean isInput, int index){ @@ -39,6 +40,10 @@ this.index = index; this.interfaceList = interfaceList; } + + public IInterfaceElement getInterfaceElement() { + return interfaceElement; + } @Override public boolean canExecute() { |
From: <for...@li...> - 2017-08-23 21:05:42
|
details: http://fordiac.hg.sourceforge.net/hgweb/fordiac/fordiac-ide/rev/932d536c6e02 changeset: 3068:932d536c6e02 user: Alois Zoitl <alo...@gm...> date: Wed Aug 23 22:35:10 2017 +0200 description: [Bug 490695] cleand-up interface create command in order to simplyfy the mirroring of inteface elemnts as needed for mapped subapps the interface create command was cleaned up. Furthermore a default value for the comment parameter has been introduced. This should releave as from many null checks as we are needeing them now. Bug: https://bugs.eclipse.org/bugs/show_bug.cgi?id=490695 Signed-off: alo...@gm... diffstat: plugins/org.eclipse.fordiac.ide.application/src/org/eclipse/fordiac/ide/application/properties/CreateConnectionSection.java | 2 +- plugins/org.eclipse.fordiac.ide.application/src/org/eclipse/fordiac/ide/application/properties/EditInterfaceAdapterSection.java | 2 +- plugins/org.eclipse.fordiac.ide.application/src/org/eclipse/fordiac/ide/application/properties/EditInterfaceDataSection.java | 6 +- plugins/org.eclipse.fordiac.ide.application/src/org/eclipse/fordiac/ide/application/properties/EditInterfaceEventSection.java | 2 +- plugins/org.eclipse.fordiac.ide.fbtypeeditor.ecc/src/org/eclipse/fordiac/ide/fbtypeeditor/ecc/commands/ChangeAlgorithmTypeCommand.java | 6 +- plugins/org.eclipse.fordiac.ide.fbtypeeditor.servicesequence/META-INF/MANIFEST.MF | 3 +- plugins/org.eclipse.fordiac.ide.fbtypeeditor.servicesequence/src/org/eclipse/fordiac/ide/fbtypeeditor/servicesequence/commands/ChangeSequenceCommentCommand.java | 40 ---------- plugins/org.eclipse.fordiac.ide.fbtypeeditor.servicesequence/src/org/eclipse/fordiac/ide/fbtypeeditor/servicesequence/commands/CreateServiceSequenceCommand.java | 2 - plugins/org.eclipse.fordiac.ide.fbtypeeditor.servicesequence/src/org/eclipse/fordiac/ide/fbtypeeditor/servicesequence/properties/ServiceSequenceSection.java | 4 +- plugins/org.eclipse.fordiac.ide.fbtypeeditor/src/org/eclipse/fordiac/ide/fbtypeeditor/actions/CreateInputEventAction.java | 2 +- plugins/org.eclipse.fordiac.ide.fbtypeeditor/src/org/eclipse/fordiac/ide/fbtypeeditor/actions/CreateInputVariableAction.java | 2 +- plugins/org.eclipse.fordiac.ide.fbtypeeditor/src/org/eclipse/fordiac/ide/fbtypeeditor/actions/CreateNewPlugAction.java | 2 +- plugins/org.eclipse.fordiac.ide.fbtypeeditor/src/org/eclipse/fordiac/ide/fbtypeeditor/actions/CreateNewSocketAction.java | 2 +- plugins/org.eclipse.fordiac.ide.fbtypeeditor/src/org/eclipse/fordiac/ide/fbtypeeditor/actions/CreateOutputEventAction.java | 2 +- plugins/org.eclipse.fordiac.ide.fbtypeeditor/src/org/eclipse/fordiac/ide/fbtypeeditor/actions/CreateOutputVariableAction.java | 2 +- plugins/org.eclipse.fordiac.ide.fbtypeeditor/src/org/eclipse/fordiac/ide/fbtypeeditor/actions/CreatePlugAction.java | 2 +- plugins/org.eclipse.fordiac.ide.fbtypeeditor/src/org/eclipse/fordiac/ide/fbtypeeditor/actions/CreateSocketAction.java | 2 +- plugins/org.eclipse.fordiac.ide.fbtypeeditor/src/org/eclipse/fordiac/ide/fbtypeeditor/policies/EventInputContainerLayoutEditPolicy.java | 4 +- plugins/org.eclipse.fordiac.ide.fbtypeeditor/src/org/eclipse/fordiac/ide/fbtypeeditor/policies/EventOutputContainerLayoutEditPolicy.java | 4 +- plugins/org.eclipse.fordiac.ide.fbtypeeditor/src/org/eclipse/fordiac/ide/fbtypeeditor/policies/PlugContainerLayoutEditPolicy.java | 4 +- plugins/org.eclipse.fordiac.ide.fbtypeeditor/src/org/eclipse/fordiac/ide/fbtypeeditor/policies/SocketContainerLayoutEditPolicy.java | 4 +- plugins/org.eclipse.fordiac.ide.fbtypeeditor/src/org/eclipse/fordiac/ide/fbtypeeditor/policies/VariableInputContainerLayoutEditPolicy.java | 4 +- plugins/org.eclipse.fordiac.ide.fbtypeeditor/src/org/eclipse/fordiac/ide/fbtypeeditor/policies/VariableOutputContainerLayoutEditPolicy.java | 4 +- plugins/org.eclipse.fordiac.ide.model.commands/src/org/eclipse/fordiac/ide/model/commands/create/CreateInterfaceElementCommand.java | 9 +- plugins/org.eclipse.fordiac.ide.model/model/lib.ecore | 3 +- plugins/org.eclipse.fordiac.ide.model/src-gen/org/eclipse/fordiac/ide/model/libraryElement/INamedElement.java | 3 +- plugins/org.eclipse.fordiac.ide.model/src-gen/org/eclipse/fordiac/ide/model/libraryElement/impl/AlgorithmImpl.java | 2 +- plugins/org.eclipse.fordiac.ide.model/src-gen/org/eclipse/fordiac/ide/model/libraryElement/impl/ApplicationImpl.java | 2 +- plugins/org.eclipse.fordiac.ide.model/src-gen/org/eclipse/fordiac/ide/model/libraryElement/impl/ConfigurableObjectImpl.java | 2 +- plugins/org.eclipse.fordiac.ide.model/src-gen/org/eclipse/fordiac/ide/model/libraryElement/impl/ECStateImpl.java | 2 +- plugins/org.eclipse.fordiac.ide.model/src-gen/org/eclipse/fordiac/ide/model/libraryElement/impl/EventImpl.java | 2 +- plugins/org.eclipse.fordiac.ide.model/src-gen/org/eclipse/fordiac/ide/model/libraryElement/impl/LibraryElementImpl.java | 2 +- plugins/org.eclipse.fordiac.ide.model/src-gen/org/eclipse/fordiac/ide/model/libraryElement/impl/LibraryElementPackageImpl.java | 2 +- plugins/org.eclipse.fordiac.ide.model/src-gen/org/eclipse/fordiac/ide/model/libraryElement/impl/ServiceInterfaceImpl.java | 2 +- plugins/org.eclipse.fordiac.ide.model/src-gen/org/eclipse/fordiac/ide/model/libraryElement/impl/ServiceSequenceImpl.java | 2 +- plugins/org.eclipse.fordiac.ide.model/src-gen/org/eclipse/fordiac/ide/model/libraryElement/impl/VarDeclarationImpl.java | 2 +- 36 files changed, 47 insertions(+), 95 deletions(-) diffs (594 lines): diff -r eb2aeb70a7e7 -r 932d536c6e02 plugins/org.eclipse.fordiac.ide.application/src/org/eclipse/fordiac/ide/application/properties/CreateConnectionSection.java --- a/plugins/org.eclipse.fordiac.ide.application/src/org/eclipse/fordiac/ide/application/properties/CreateConnectionSection.java Wed Aug 23 14:38:35 2017 +0200 +++ b/plugins/org.eclipse.fordiac.ide.application/src/org/eclipse/fordiac/ide/application/properties/CreateConnectionSection.java Wed Aug 23 22:35:10 2017 +0200 @@ -158,7 +158,7 @@ return getFBName((INamedElement) element) + "." + ((INamedElement) element).getName(); //$NON-NLS-1$ } - private String getFBName(INamedElement element){ + private static String getFBName(INamedElement element){ return ((FBNetworkElement)element.eContainer().eContainer()).getName(); } diff -r eb2aeb70a7e7 -r 932d536c6e02 plugins/org.eclipse.fordiac.ide.application/src/org/eclipse/fordiac/ide/application/properties/EditInterfaceAdapterSection.java --- a/plugins/org.eclipse.fordiac.ide.application/src/org/eclipse/fordiac/ide/application/properties/EditInterfaceAdapterSection.java Wed Aug 23 14:38:35 2017 +0200 +++ b/plugins/org.eclipse.fordiac.ide.application/src/org/eclipse/fordiac/ide/application/properties/EditInterfaceAdapterSection.java Wed Aug 23 22:35:10 2017 +0200 @@ -39,7 +39,7 @@ @Override protected CreateInterfaceElementCommand newCommand(boolean isInput) { AdapterType type = (AdapterType) getType().getFbNetwork().getApplication().getAutomationSystem().getPalette().getTypeEntry(fillTypeCombo()[0]).getType(); - return new CreateInterfaceElementCommand(type, "", "", getType().getInterface(), isInput, -1); + return new CreateInterfaceElementCommand(type, getType().getInterface(), isInput, -1); } @Override diff -r eb2aeb70a7e7 -r 932d536c6e02 plugins/org.eclipse.fordiac.ide.application/src/org/eclipse/fordiac/ide/application/properties/EditInterfaceDataSection.java --- a/plugins/org.eclipse.fordiac.ide.application/src/org/eclipse/fordiac/ide/application/properties/EditInterfaceDataSection.java Wed Aug 23 14:38:35 2017 +0200 +++ b/plugins/org.eclipse.fordiac.ide.application/src/org/eclipse/fordiac/ide/application/properties/EditInterfaceDataSection.java Wed Aug 23 22:35:10 2017 +0200 @@ -30,11 +30,7 @@ @Override protected CreateInterfaceElementCommand newCommand(boolean isInput) { - return new CreateInterfaceElementCommand( - DataTypeLibrary.getInstance().getType(fillTypeCombo()[2]), - "", - "", - getType().getInterface(), isInput, -1); + return new CreateInterfaceElementCommand(DataTypeLibrary.getInstance().getType(fillTypeCombo()[2]), getType().getInterface(), isInput, -1); } @Override diff -r eb2aeb70a7e7 -r 932d536c6e02 plugins/org.eclipse.fordiac.ide.application/src/org/eclipse/fordiac/ide/application/properties/EditInterfaceEventSection.java --- a/plugins/org.eclipse.fordiac.ide.application/src/org/eclipse/fordiac/ide/application/properties/EditInterfaceEventSection.java Wed Aug 23 14:38:35 2017 +0200 +++ b/plugins/org.eclipse.fordiac.ide.application/src/org/eclipse/fordiac/ide/application/properties/EditInterfaceEventSection.java Wed Aug 23 22:35:10 2017 +0200 @@ -30,7 +30,7 @@ @Override protected CreateInterfaceElementCommand newCommand(boolean isInput) { - return new CreateInterfaceElementCommand(EventTypeLibrary.getInstance().getType(fillTypeCombo()[0]), "", "", getType().getInterface(), isInput, -1); + return new CreateInterfaceElementCommand(EventTypeLibrary.getInstance().getType(fillTypeCombo()[0]), getType().getInterface(), isInput, -1); } @Override diff -r eb2aeb70a7e7 -r 932d536c6e02 plugins/org.eclipse.fordiac.ide.fbtypeeditor.ecc/src/org/eclipse/fordiac/ide/fbtypeeditor/ecc/commands/ChangeAlgorithmTypeCommand.java --- a/plugins/org.eclipse.fordiac.ide.fbtypeeditor.ecc/src/org/eclipse/fordiac/ide/fbtypeeditor/ecc/commands/ChangeAlgorithmTypeCommand.java Wed Aug 23 14:38:35 2017 +0200 +++ b/plugins/org.eclipse.fordiac.ide.fbtypeeditor.ecc/src/org/eclipse/fordiac/ide/fbtypeeditor/ecc/commands/ChangeAlgorithmTypeCommand.java Wed Aug 23 22:35:10 2017 +0200 @@ -38,7 +38,7 @@ @Override public boolean canExecute() { - if(algorithmType.equalsIgnoreCase("ST")){ + if(algorithmType.equalsIgnoreCase("ST")){ //$NON-NLS-1$ if(oldAlgorithm instanceof STAlgorithm) { return false; } else if (!(oldAlgorithm instanceof TextAlgorithm || oldAlgorithm instanceof OtherAlgorithm)){ @@ -57,7 +57,7 @@ // FIXME this only works if there are no more other algorithms // supported!!! - if (algorithmType.equalsIgnoreCase("ST")) { + if (algorithmType.equalsIgnoreCase("ST")) { //$NON-NLS-1$ newAlgorithm = createSTAlgorithm(); }else{ newAlgorithm = createOtherAlgorithm(); @@ -81,7 +81,7 @@ algorithm.setText(((TextAlgorithm) oldAlgorithm).getText()); algorithm.setName(oldAlgorithm.getName()); algorithm.setComment(oldAlgorithm.getComment()); - algorithm.setLanguage("AnyText"); + algorithm.setLanguage("AnyText"); //$NON-NLS-1$ return algorithm; } diff -r eb2aeb70a7e7 -r 932d536c6e02 plugins/org.eclipse.fordiac.ide.fbtypeeditor.servicesequence/META-INF/MANIFEST.MF --- a/plugins/org.eclipse.fordiac.ide.fbtypeeditor.servicesequence/META-INF/MANIFEST.MF Wed Aug 23 14:38:35 2017 +0200 +++ b/plugins/org.eclipse.fordiac.ide.fbtypeeditor.servicesequence/META-INF/MANIFEST.MF Wed Aug 23 22:35:10 2017 +0200 @@ -10,7 +10,8 @@ org.eclipse.emf.edit.ui, org.eclipse.core.resources, org.eclipse.fordiac.ide.ui.controls, - org.eclipse.ui.views.properties.tabbed + org.eclipse.ui.views.properties.tabbed, + org.eclipse.fordiac.ide.model.commands Bundle-Vendor: Eclipse 4diac Bundle-ActivationPolicy: lazy Bundle-Version: 1.9.0.qualifier diff -r eb2aeb70a7e7 -r 932d536c6e02 plugins/org.eclipse.fordiac.ide.fbtypeeditor.servicesequence/src/org/eclipse/fordiac/ide/fbtypeeditor/servicesequence/commands/ChangeSequenceCommentCommand.java --- a/plugins/org.eclipse.fordiac.ide.fbtypeeditor.servicesequence/src/org/eclipse/fordiac/ide/fbtypeeditor/servicesequence/commands/ChangeSequenceCommentCommand.java Wed Aug 23 14:38:35 2017 +0200 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,40 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2014 fortiss GmbH - * - * All rights reserved. This program and the accompanying materials - * are made available under the terms of the Eclipse Public License v1.0 - * which accompanies this distribution, and is available at - * http://www.eclipse.org/legal/epl-v10.html - * - * Contributors: - * Monika Wenger - * - initial API and implementation and/or initial documentation - *******************************************************************************/ -package org.eclipse.fordiac.ide.fbtypeeditor.servicesequence.commands; - -import org.eclipse.fordiac.ide.model.libraryElement.ServiceSequence; -import org.eclipse.gef.commands.Command; - -public class ChangeSequenceCommentCommand extends Command { - private ServiceSequence sequence; - private String comment; - private String oldComment; - - public ChangeSequenceCommentCommand(String comment, ServiceSequence sequence){ - this.sequence = sequence; - this.comment = comment; - } - - public void execute(){ - oldComment = sequence.getComment(); - redo(); - } - - public void undo() { - sequence.setComment(oldComment); - } - - public void redo() { - sequence.setComment(comment); - } -} diff -r eb2aeb70a7e7 -r 932d536c6e02 plugins/org.eclipse.fordiac.ide.fbtypeeditor.servicesequence/src/org/eclipse/fordiac/ide/fbtypeeditor/servicesequence/commands/CreateServiceSequenceCommand.java --- a/plugins/org.eclipse.fordiac.ide.fbtypeeditor.servicesequence/src/org/eclipse/fordiac/ide/fbtypeeditor/servicesequence/commands/CreateServiceSequenceCommand.java Wed Aug 23 14:38:35 2017 +0200 +++ b/plugins/org.eclipse.fordiac.ide.fbtypeeditor.servicesequence/src/org/eclipse/fordiac/ide/fbtypeeditor/servicesequence/commands/CreateServiceSequenceCommand.java Wed Aug 23 22:35:10 2017 +0200 @@ -50,13 +50,11 @@ if (fbType.getService().getLeftInterface() == null) { leftInterface = LibraryElementFactory.eINSTANCE.createServiceInterface(); leftInterface.setName(leftInterfaceName); - leftInterface.setComment(""); fbType.getService().setLeftInterface(leftInterface); } if (fbType.getService().getRightInterface() == null) { rightInterface = LibraryElementFactory.eINSTANCE.createServiceInterface(); rightInterface.setName(rightInterfaceName); - rightInterface.setComment(""); fbType.getService().setRightInterface(rightInterface); } fbType.getService().getServiceSequence().add(sq); diff -r eb2aeb70a7e7 -r 932d536c6e02 plugins/org.eclipse.fordiac.ide.fbtypeeditor.servicesequence/src/org/eclipse/fordiac/ide/fbtypeeditor/servicesequence/properties/ServiceSequenceSection.java --- a/plugins/org.eclipse.fordiac.ide.fbtypeeditor.servicesequence/src/org/eclipse/fordiac/ide/fbtypeeditor/servicesequence/properties/ServiceSequenceSection.java Wed Aug 23 14:38:35 2017 +0200 +++ b/plugins/org.eclipse.fordiac.ide.fbtypeeditor.servicesequence/src/org/eclipse/fordiac/ide/fbtypeeditor/servicesequence/properties/ServiceSequenceSection.java Wed Aug 23 22:35:10 2017 +0200 @@ -14,7 +14,6 @@ import org.eclipse.emf.edit.ui.celleditor.AdapterFactoryTreeEditor; import org.eclipse.emf.edit.ui.provider.AdapterFactoryLabelProvider; -import org.eclipse.fordiac.ide.fbtypeeditor.servicesequence.commands.ChangeSequenceCommentCommand; import org.eclipse.fordiac.ide.fbtypeeditor.servicesequence.commands.ChangeSequenceNameCommand; import org.eclipse.fordiac.ide.fbtypeeditor.servicesequence.commands.CreateTransactionCommand; import org.eclipse.fordiac.ide.fbtypeeditor.servicesequence.commands.DeleteInputPrimitiveCommand; @@ -22,6 +21,7 @@ import org.eclipse.fordiac.ide.fbtypeeditor.servicesequence.commands.DeleteTransactionCommand; import org.eclipse.fordiac.ide.fbtypeeditor.servicesequence.contentprovider.ServiceSequenceContentProvider; import org.eclipse.fordiac.ide.fbtypeeditor.servicesequence.editparts.ServiceSequenceEditPart; +import org.eclipse.fordiac.ide.model.commands.change.ChangeCommentCommand; import org.eclipse.fordiac.ide.model.libraryElement.InputPrimitive; import org.eclipse.fordiac.ide.model.libraryElement.OutputPrimitive; import org.eclipse.fordiac.ide.model.libraryElement.ServiceSequence; @@ -95,7 +95,7 @@ commentText.addModifyListener(new ModifyListener() { public void modifyText(final ModifyEvent e) { removeContentAdapter(); - executeCommand(new ChangeSequenceCommentCommand(commentText.getText(), getType())); + executeCommand(new ChangeCommentCommand(getType(), commentText.getText())); addContentAdapter(); } }); diff -r eb2aeb70a7e7 -r 932d536c6e02 plugins/org.eclipse.fordiac.ide.fbtypeeditor/src/org/eclipse/fordiac/ide/fbtypeeditor/actions/CreateInputEventAction.java --- a/plugins/org.eclipse.fordiac.ide.fbtypeeditor/src/org/eclipse/fordiac/ide/fbtypeeditor/actions/CreateInputEventAction.java Wed Aug 23 14:38:35 2017 +0200 +++ b/plugins/org.eclipse.fordiac.ide.fbtypeeditor/src/org/eclipse/fordiac/ide/fbtypeeditor/actions/CreateInputEventAction.java Wed Aug 23 22:35:10 2017 +0200 @@ -44,7 +44,7 @@ @Override public void run() { - CreateInterfaceElementCommand cmd = new CreateInterfaceElementCommand(EventTypeLibrary.getInstance().getType(null), "", "", fbType.getInterfaceList(), true, -1); + CreateInterfaceElementCommand cmd = new CreateInterfaceElementCommand(EventTypeLibrary.getInstance().getType(null), fbType.getInterfaceList(), true, -1); execute(cmd); } } diff -r eb2aeb70a7e7 -r 932d536c6e02 plugins/org.eclipse.fordiac.ide.fbtypeeditor/src/org/eclipse/fordiac/ide/fbtypeeditor/actions/CreateInputVariableAction.java --- a/plugins/org.eclipse.fordiac.ide.fbtypeeditor/src/org/eclipse/fordiac/ide/fbtypeeditor/actions/CreateInputVariableAction.java Wed Aug 23 14:38:35 2017 +0200 +++ b/plugins/org.eclipse.fordiac.ide.fbtypeeditor/src/org/eclipse/fordiac/ide/fbtypeeditor/actions/CreateInputVariableAction.java Wed Aug 23 22:35:10 2017 +0200 @@ -38,7 +38,7 @@ @Override public void run() { - CreateInterfaceElementCommand cmd = new CreateInterfaceElementCommand(dataType, "", "", fbType.getInterfaceList(), true, -1); //$NON-NLS-1$ //$NON-NLS-2$ + CreateInterfaceElementCommand cmd = new CreateInterfaceElementCommand(dataType, fbType.getInterfaceList(), true, -1); execute(cmd); } diff -r eb2aeb70a7e7 -r 932d536c6e02 plugins/org.eclipse.fordiac.ide.fbtypeeditor/src/org/eclipse/fordiac/ide/fbtypeeditor/actions/CreateNewPlugAction.java --- a/plugins/org.eclipse.fordiac.ide.fbtypeeditor/src/org/eclipse/fordiac/ide/fbtypeeditor/actions/CreateNewPlugAction.java Wed Aug 23 14:38:35 2017 +0200 +++ b/plugins/org.eclipse.fordiac.ide.fbtypeeditor/src/org/eclipse/fordiac/ide/fbtypeeditor/actions/CreateNewPlugAction.java Wed Aug 23 22:35:10 2017 +0200 @@ -31,7 +31,7 @@ } protected Command getCreationCommand(AdapterTypePaletteEntry adpEntry) { - return new CreateInterfaceElementCommand(adpEntry.getAdapterType(), "", "", getFbType().getInterfaceList(), false, -1); //$NON-NLS-1$ //$NON-NLS-2$ + return new CreateInterfaceElementCommand(adpEntry.getAdapterType(), getFbType().getInterfaceList(), false, -1); } } diff -r eb2aeb70a7e7 -r 932d536c6e02 plugins/org.eclipse.fordiac.ide.fbtypeeditor/src/org/eclipse/fordiac/ide/fbtypeeditor/actions/CreateNewSocketAction.java --- a/plugins/org.eclipse.fordiac.ide.fbtypeeditor/src/org/eclipse/fordiac/ide/fbtypeeditor/actions/CreateNewSocketAction.java Wed Aug 23 14:38:35 2017 +0200 +++ b/plugins/org.eclipse.fordiac.ide.fbtypeeditor/src/org/eclipse/fordiac/ide/fbtypeeditor/actions/CreateNewSocketAction.java Wed Aug 23 22:35:10 2017 +0200 @@ -31,6 +31,6 @@ } protected Command getCreationCommand(AdapterTypePaletteEntry adpEntry) { - return new CreateInterfaceElementCommand(adpEntry.getAdapterType(), "", "", getFbType().getInterfaceList(), true, -1); //$NON-NLS-1$ //$NON-NLS-2$ + return new CreateInterfaceElementCommand(adpEntry.getAdapterType(), getFbType().getInterfaceList(), true, -1); } } diff -r eb2aeb70a7e7 -r 932d536c6e02 plugins/org.eclipse.fordiac.ide.fbtypeeditor/src/org/eclipse/fordiac/ide/fbtypeeditor/actions/CreateOutputEventAction.java --- a/plugins/org.eclipse.fordiac.ide.fbtypeeditor/src/org/eclipse/fordiac/ide/fbtypeeditor/actions/CreateOutputEventAction.java Wed Aug 23 14:38:35 2017 +0200 +++ b/plugins/org.eclipse.fordiac.ide.fbtypeeditor/src/org/eclipse/fordiac/ide/fbtypeeditor/actions/CreateOutputEventAction.java Wed Aug 23 22:35:10 2017 +0200 @@ -37,7 +37,7 @@ @Override public void run() { - CreateInterfaceElementCommand cmd = new CreateInterfaceElementCommand(EventTypeLibrary.getInstance().getType(null), "", "", fbType.getInterfaceList(), false, -1); //$NON-NLS-1$ //$NON-NLS-2$ + CreateInterfaceElementCommand cmd = new CreateInterfaceElementCommand(EventTypeLibrary.getInstance().getType(null), fbType.getInterfaceList(), false, -1); execute(cmd); } diff -r eb2aeb70a7e7 -r 932d536c6e02 plugins/org.eclipse.fordiac.ide.fbtypeeditor/src/org/eclipse/fordiac/ide/fbtypeeditor/actions/CreateOutputVariableAction.java --- a/plugins/org.eclipse.fordiac.ide.fbtypeeditor/src/org/eclipse/fordiac/ide/fbtypeeditor/actions/CreateOutputVariableAction.java Wed Aug 23 14:38:35 2017 +0200 +++ b/plugins/org.eclipse.fordiac.ide.fbtypeeditor/src/org/eclipse/fordiac/ide/fbtypeeditor/actions/CreateOutputVariableAction.java Wed Aug 23 22:35:10 2017 +0200 @@ -39,7 +39,7 @@ @Override public void run() { - CreateInterfaceElementCommand cmd = new CreateInterfaceElementCommand(dataType, "", "", fbType.getInterfaceList(), false, -1); //$NON-NLS-1$ //$NON-NLS-2$ + CreateInterfaceElementCommand cmd = new CreateInterfaceElementCommand(dataType, fbType.getInterfaceList(), false, -1); execute(cmd); } diff -r eb2aeb70a7e7 -r 932d536c6e02 plugins/org.eclipse.fordiac.ide.fbtypeeditor/src/org/eclipse/fordiac/ide/fbtypeeditor/actions/CreatePlugAction.java --- a/plugins/org.eclipse.fordiac.ide.fbtypeeditor/src/org/eclipse/fordiac/ide/fbtypeeditor/actions/CreatePlugAction.java Wed Aug 23 14:38:35 2017 +0200 +++ b/plugins/org.eclipse.fordiac.ide.fbtypeeditor/src/org/eclipse/fordiac/ide/fbtypeeditor/actions/CreatePlugAction.java Wed Aug 23 22:35:10 2017 +0200 @@ -39,7 +39,7 @@ @Override public void run() { - CreateInterfaceElementCommand cmd = new CreateInterfaceElementCommand(entry.getAdapterType(), "", "", fbType.getInterfaceList(), false, -1); //$NON-NLS-1$ //$NON-NLS-2$ + CreateInterfaceElementCommand cmd = new CreateInterfaceElementCommand(entry.getAdapterType(), fbType.getInterfaceList(), false, -1); execute(cmd); } diff -r eb2aeb70a7e7 -r 932d536c6e02 plugins/org.eclipse.fordiac.ide.fbtypeeditor/src/org/eclipse/fordiac/ide/fbtypeeditor/actions/CreateSocketAction.java --- a/plugins/org.eclipse.fordiac.ide.fbtypeeditor/src/org/eclipse/fordiac/ide/fbtypeeditor/actions/CreateSocketAction.java Wed Aug 23 14:38:35 2017 +0200 +++ b/plugins/org.eclipse.fordiac.ide.fbtypeeditor/src/org/eclipse/fordiac/ide/fbtypeeditor/actions/CreateSocketAction.java Wed Aug 23 22:35:10 2017 +0200 @@ -39,7 +39,7 @@ @Override public void run() { - CreateInterfaceElementCommand cmd = new CreateInterfaceElementCommand(entry.getAdapterType(), "", "", fbType.getInterfaceList(), true, -1); //$NON-NLS-1$ //$NON-NLS-2$ + CreateInterfaceElementCommand cmd = new CreateInterfaceElementCommand(entry.getAdapterType(), fbType.getInterfaceList(), true, -1); execute(cmd); } diff -r eb2aeb70a7e7 -r 932d536c6e02 plugins/org.eclipse.fordiac.ide.fbtypeeditor/src/org/eclipse/fordiac/ide/fbtypeeditor/policies/EventInputContainerLayoutEditPolicy.java --- a/plugins/org.eclipse.fordiac.ide.fbtypeeditor/src/org/eclipse/fordiac/ide/fbtypeeditor/policies/EventInputContainerLayoutEditPolicy.java Wed Aug 23 14:38:35 2017 +0200 +++ b/plugins/org.eclipse.fordiac.ide.fbtypeeditor/src/org/eclipse/fordiac/ide/fbtypeeditor/policies/EventInputContainerLayoutEditPolicy.java Wed Aug 23 22:35:10 2017 +0200 @@ -49,7 +49,7 @@ @Override protected Command getIECreateCommand(DataType refElement, int ref) { - return new CreateInterfaceElementCommand(refElement, "", "", getFBType().getInterfaceList(), true, ref); //$NON-NLS-1$ //$NON-NLS-2$ + return new CreateInterfaceElementCommand(refElement, getFBType().getInterfaceList(), true, ref); } }; } @@ -85,7 +85,7 @@ index = type.getInterfaceList().getEventInputs().indexOf(ref.getModel()); } if (childClass instanceof EventType && type != null) { - CreateInterfaceElementCommand cmd = new CreateInterfaceElementCommand((DataType)childClass, "", "", type.getInterfaceList(), true, index); //$NON-NLS-1$ //$NON-NLS-2$ + CreateInterfaceElementCommand cmd = new CreateInterfaceElementCommand((DataType)childClass, type.getInterfaceList(), true, index); return cmd; } return null; diff -r eb2aeb70a7e7 -r 932d536c6e02 plugins/org.eclipse.fordiac.ide.fbtypeeditor/src/org/eclipse/fordiac/ide/fbtypeeditor/policies/EventOutputContainerLayoutEditPolicy.java --- a/plugins/org.eclipse.fordiac.ide.fbtypeeditor/src/org/eclipse/fordiac/ide/fbtypeeditor/policies/EventOutputContainerLayoutEditPolicy.java Wed Aug 23 14:38:35 2017 +0200 +++ b/plugins/org.eclipse.fordiac.ide.fbtypeeditor/src/org/eclipse/fordiac/ide/fbtypeeditor/policies/EventOutputContainerLayoutEditPolicy.java Wed Aug 23 22:35:10 2017 +0200 @@ -46,7 +46,7 @@ @Override protected Command getIECreateCommand(DataType refElement, int ref) { - return new CreateInterfaceElementCommand(refElement, "", "", getFBType().getInterfaceList(), false, ref); //$NON-NLS-1$ //$NON-NLS-2$ + return new CreateInterfaceElementCommand(refElement, getFBType().getInterfaceList(), false, ref); } }; } @@ -84,7 +84,7 @@ index = type.getInterfaceList().getEventOutputs().indexOf(ref.getModel()); } if (childClass instanceof EventType && type != null) { - CreateInterfaceElementCommand cmd = new CreateInterfaceElementCommand((DataType) childClass, "", "", type.getInterfaceList(), false, index); //$NON-NLS-1$ //$NON-NLS-2$ + CreateInterfaceElementCommand cmd = new CreateInterfaceElementCommand((DataType) childClass, type.getInterfaceList(), false, index); return cmd; } return null; diff -r eb2aeb70a7e7 -r 932d536c6e02 plugins/org.eclipse.fordiac.ide.fbtypeeditor/src/org/eclipse/fordiac/ide/fbtypeeditor/policies/PlugContainerLayoutEditPolicy.java --- a/plugins/org.eclipse.fordiac.ide.fbtypeeditor/src/org/eclipse/fordiac/ide/fbtypeeditor/policies/PlugContainerLayoutEditPolicy.java Wed Aug 23 14:38:35 2017 +0200 +++ b/plugins/org.eclipse.fordiac.ide.fbtypeeditor/src/org/eclipse/fordiac/ide/fbtypeeditor/policies/PlugContainerLayoutEditPolicy.java Wed Aug 23 22:35:10 2017 +0200 @@ -47,7 +47,7 @@ @Override protected Command getIECreateCommand(DataType refElement, int ref) { - return new CreateInterfaceElementCommand(refElement, "", "", getFBType().getInterfaceList(), false, ref); //$NON-NLS-1$ //$NON-NLS-2$ + return new CreateInterfaceElementCommand(refElement, getFBType().getInterfaceList(), false, ref); } }; } @@ -86,7 +86,7 @@ if (ref != null) { index = type.getInterfaceList().getPlugs().indexOf(ref.getModel()); } - CreateInterfaceElementCommand cmd = new CreateInterfaceElementCommand((DataType) childClass, "", "", type.getInterfaceList(), false, index); //$NON-NLS-1$ //$NON-NLS-2$ + CreateInterfaceElementCommand cmd = new CreateInterfaceElementCommand((DataType) childClass, type.getInterfaceList(), false, index); return cmd; } return null; diff -r eb2aeb70a7e7 -r 932d536c6e02 plugins/org.eclipse.fordiac.ide.fbtypeeditor/src/org/eclipse/fordiac/ide/fbtypeeditor/policies/SocketContainerLayoutEditPolicy.java --- a/plugins/org.eclipse.fordiac.ide.fbtypeeditor/src/org/eclipse/fordiac/ide/fbtypeeditor/policies/SocketContainerLayoutEditPolicy.java Wed Aug 23 14:38:35 2017 +0200 +++ b/plugins/org.eclipse.fordiac.ide.fbtypeeditor/src/org/eclipse/fordiac/ide/fbtypeeditor/policies/SocketContainerLayoutEditPolicy.java Wed Aug 23 22:35:10 2017 +0200 @@ -48,7 +48,7 @@ @Override protected Command getIECreateCommand(DataType type, int ref) { - return new CreateInterfaceElementCommand(type, "", "", getFBType().getInterfaceList(), true, ref); //$NON-NLS-1$ //$NON-NLS-2$ + return new CreateInterfaceElementCommand(type, getFBType().getInterfaceList(), true, ref); } }; } @@ -88,7 +88,7 @@ if (ref != null) { index = type.getInterfaceList().getSockets().indexOf(ref.getModel()); } - CreateInterfaceElementCommand cmd = new CreateInterfaceElementCommand((DataType) childClass, "", "", type.getInterfaceList(), true, index); //$NON-NLS-1$ //$NON-NLS-2$ + CreateInterfaceElementCommand cmd = new CreateInterfaceElementCommand((DataType) childClass, type.getInterfaceList(), true, index); return cmd; } return null; diff -r eb2aeb70a7e7 -r 932d536c6e02 plugins/org.eclipse.fordiac.ide.fbtypeeditor/src/org/eclipse/fordiac/ide/fbtypeeditor/policies/VariableInputContainerLayoutEditPolicy.java --- a/plugins/org.eclipse.fordiac.ide.fbtypeeditor/src/org/eclipse/fordiac/ide/fbtypeeditor/policies/VariableInputContainerLayoutEditPolicy.java Wed Aug 23 14:38:35 2017 +0200 +++ b/plugins/org.eclipse.fordiac.ide.fbtypeeditor/src/org/eclipse/fordiac/ide/fbtypeeditor/policies/VariableInputContainerLayoutEditPolicy.java Wed Aug 23 22:35:10 2017 +0200 @@ -48,7 +48,7 @@ @Override protected Command getIECreateCommand(DataType refElement, int ref) { - return new CreateInterfaceElementCommand(refElement, "", "", getFBType().getInterfaceList(), true, ref); //$NON-NLS-1$ //$NON-NLS-2$ + return new CreateInterfaceElementCommand(refElement, getFBType().getInterfaceList(), true, ref); } }; @@ -89,7 +89,7 @@ if (ref != null) { index = type.getInterfaceList().getInputVars().indexOf(ref.getModel()); } - CreateInterfaceElementCommand cmd = new CreateInterfaceElementCommand((DataType)childClass, "", "", type.getInterfaceList(), true, index); //$NON-NLS-1$ //$NON-NLS-2$ + CreateInterfaceElementCommand cmd = new CreateInterfaceElementCommand((DataType)childClass, type.getInterfaceList(), true, index); //$NON-NLS-1$ return cmd; } return null; diff -r eb2aeb70a7e7 -r 932d536c6e02 plugins/org.eclipse.fordiac.ide.fbtypeeditor/src/org/eclipse/fordiac/ide/fbtypeeditor/policies/VariableOutputContainerLayoutEditPolicy.java --- a/plugins/org.eclipse.fordiac.ide.fbtypeeditor/src/org/eclipse/fordiac/ide/fbtypeeditor/policies/VariableOutputContainerLayoutEditPolicy.java Wed Aug 23 14:38:35 2017 +0200 +++ b/plugins/org.eclipse.fordiac.ide.fbtypeeditor/src/org/eclipse/fordiac/ide/fbtypeeditor/policies/VariableOutputContainerLayoutEditPolicy.java Wed Aug 23 22:35:10 2017 +0200 @@ -48,7 +48,7 @@ @Override protected Command getIECreateCommand(DataType refElement, int ref) { - return new CreateInterfaceElementCommand(refElement, "", "", getFBType().getInterfaceList(), false, ref); //$NON-NLS-1$ //$NON-NLS-2$ + return new CreateInterfaceElementCommand(refElement, getFBType().getInterfaceList(), false, ref); } }; } @@ -89,7 +89,7 @@ if (ref != null) { index = type.getInterfaceList().getOutputVars().indexOf(ref.getModel()); } - CreateInterfaceElementCommand cmd = new CreateInterfaceElementCommand((DataType) childClass, "", "", type.getInterfaceList(), false, index); //$NON-NLS-1$ //$NON-NLS-2$ + CreateInterfaceElementCommand cmd = new CreateInterfaceElementCommand((DataType) childClass, type.getInterfaceList(), false, index); return cmd; } return null; diff -r eb2aeb70a7e7 -r 932d536c6e02 plugins/org.eclipse.fordiac.ide.model.commands/src/org/eclipse/fordiac/ide/model/commands/create/CreateInterfaceElementCommand.java --- a/plugins/org.eclipse.fordiac.ide.model.commands/src/org/eclipse/fordiac/ide/model/commands/create/CreateInterfaceElementCommand.java Wed Aug 23 14:38:35 2017 +0200 +++ b/plugins/org.eclipse.fordiac.ide.model.commands/src/org/eclipse/fordiac/ide/model/commands/create/CreateInterfaceElementCommand.java Wed Aug 23 22:35:10 2017 +0200 @@ -30,17 +30,13 @@ private IInterfaceElement interfaceElement; private EList<? extends IInterfaceElement> interfaces; private int index; - private String name; - private String comment; private InterfaceList interfaceList; private AdapterCreateCommand cmd; - public CreateInterfaceElementCommand(DataType dataType, String name, String comment, InterfaceList interfaceList, boolean isInput, int index){ + public CreateInterfaceElementCommand(DataType dataType, InterfaceList interfaceList, boolean isInput, int index){ this.isInput = isInput; this.dataType = dataType; this.index = index; - this.name = name; - this.comment = comment; this.interfaceList = interfaceList; } @@ -88,12 +84,11 @@ interfaceElement.setIsInput(isInput); interfaceElement.setType(dataType); interfaceElement.setTypeName(dataType.getName()); - interfaceElement.setComment(comment); if(dataType instanceof AdapterType && interfaceList.eContainer() instanceof CompositeFBType){ cmd = new AdapterCreateCommand(10, 10, (AdapterDeclaration) interfaceElement, (CompositeFBType)interfaceList.eContainer()); } redo(); - interfaceElement.setName(NameRepository.createUniqueName(interfaceElement, null == name || name.isEmpty() ? dataType.getName() : name)); + interfaceElement.setName(NameRepository.createUniqueName(interfaceElement, dataType.getName())); } @Override diff -r eb2aeb70a7e7 -r 932d536c6e02 plugins/org.eclipse.fordiac.ide.model/model/lib.ecore --- a/plugins/org.eclipse.fordiac.ide.model/model/lib.ecore Wed Aug 23 14:38:35 2017 +0200 +++ b/plugins/org.eclipse.fordiac.ide.model/model/lib.ecore Wed Aug 23 22:35:10 2017 +0200 @@ -1008,7 +1008,8 @@ eSuperTypes="#//I4DIACElement"> <eStructuralFeatures xsi:type="ecore:EAttribute" name="name" eType="ecore:EDataType http://www.eclipse.org/emf/2003/XMLType#//String" defaultValueLiteral=""""/> - <eStructuralFeatures xsi:type="ecore:EAttribute" name="comment" eType="ecore:EDataType http://www.eclipse.org/emf/2003/XMLType#//String"/> + <eStructuralFeatures xsi:type="ecore:EAttribute" name="comment" eType="ecore:EDataType http://www.eclipse.org/emf/2003/XMLType#//String" + defaultValueLiteral=""""/> </eClassifiers> <eClassifiers xsi:type="ecore:EClass" name="ResourceTypeFB" eSuperTypes="#//FB"> <eOperations name="isResourceTypeFB" lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean"> diff -r eb2aeb70a7e7 -r 932d536c6e02 plugins/org.eclipse.fordiac.ide.model/src-gen/org/eclipse/fordiac/ide/model/libraryElement/INamedElement.java --- a/plugins/org.eclipse.fordiac.ide.model/src-gen/org/eclipse/fordiac/ide/model/libraryElement/INamedElement.java Wed Aug 23 14:38:35 2017 +0200 +++ b/plugins/org.eclipse.fordiac.ide.model/src-gen/org/eclipse/fordiac/ide/model/libraryElement/INamedElement.java Wed Aug 23 22:35:10 2017 +0200 @@ -59,6 +59,7 @@ /** * Returns the value of the '<em><b>Comment</b></em>' attribute. + * The default value is <code>"\"\""</code>. * <!-- begin-user-doc --> * <p> * If the meaning of the '<em>Comment</em>' attribute isn't clear, @@ -68,7 +69,7 @@ * @return the value of the '<em>Comment</em>' attribute. * @see #setComment(String) * @see org.eclipse.fordiac.ide.model.libraryElement.LibraryElementPackage#getINamedElement_Comment() - * @model dataType="org.eclipse.emf.ecore.xml.type.String" + * @model default="\"\"" dataType="org.eclipse.emf.ecore.xml.type.String" * @generated */ String getComment(); diff -r eb2aeb70a7e7 -r 932d536c6e02 plugins/org.eclipse.fordiac.ide.model/src-gen/org/eclipse/fordiac/ide/model/libraryElement/impl/AlgorithmImpl.java --- a/plugins/org.eclipse.fordiac.ide.model/src-gen/org/eclipse/fordiac/ide/model/libraryElement/impl/AlgorithmImpl.java Wed Aug 23 14:38:35 2017 +0200 +++ b/plugins/org.eclipse.fordiac.ide.model/src-gen/org/eclipse/fordiac/ide/model/libraryElement/impl/AlgorithmImpl.java Wed Aug 23 22:35:10 2017 +0200 @@ -62,7 +62,7 @@ * @generated * @ordered */ - protected static final String COMMENT_EDEFAULT = null; + protected static final String COMMENT_EDEFAULT = "\"\""; /** * The cached value of the '{@link #getComment() <em>Comment</em>}' attribute. diff -r eb2aeb70a7e7 -r 932d536c6e02 plugins/org.eclipse.fordiac.ide.model/src-gen/org/eclipse/fordiac/ide/model/libraryElement/impl/ApplicationImpl.java --- a/plugins/org.eclipse.fordiac.ide.model/src-gen/org/eclipse/fordiac/ide/model/libraryElement/impl/ApplicationImpl.java Wed Aug 23 14:38:35 2017 +0200 +++ b/plugins/org.eclipse.fordiac.ide.model/src-gen/org/eclipse/fordiac/ide/model/libraryElement/impl/ApplicationImpl.java Wed Aug 23 22:35:10 2017 +0200 @@ -66,7 +66,7 @@ * @generated * @ordered */ - protected static final String COMMENT_EDEFAULT = null; + protected static final String COMMENT_EDEFAULT = "\"\""; /** * The cached value of the '{@link #getComment() <em>Comment</em>}' attribute. diff -r eb2aeb70a7e7 -r 932d536c6e02 plugins/org.eclipse.fordiac.ide.model/src-gen/org/eclipse/fordiac/ide/model/libraryElement/impl/ConfigurableObjectImpl.java --- a/plugins/org.eclipse.fordiac.ide.model/src-gen/org/eclipse/fordiac/ide/model/libraryElement/impl/ConfigurableObjectImpl.java Wed Aug 23 14:38:35 2017 +0200 +++ b/plugins/org.eclipse.fordiac.ide.model/src-gen/org/eclipse/fordiac/ide/model/libraryElement/impl/ConfigurableObjectImpl.java Wed Aug 23 22:35:10 2017 +0200 @@ -69,7 +69,7 @@ * @generated * @ordered */ - protected static final String COMMENT_EDEFAULT = null; + protected static final String COMMENT_EDEFAULT = "\"\""; /** * The cached value of the '{@link #getComment() <em>Comment</em>}' attribute. * <!-- begin-user-doc --> diff -r eb2aeb70a7e7 -r 932d536c6e02 plugins/org.eclipse.fordiac.ide.model/src-gen/org/eclipse/fordiac/ide/model/libraryElement/impl/ECStateImpl.java --- a/plugins/org.eclipse.fordiac.ide.model/src-gen/org/eclipse/fordiac/ide/model/libraryElement/impl/ECStateImpl.java Wed Aug 23 14:38:35 2017 +0200 +++ b/plugins/org.eclipse.fordiac.ide.model/src-gen/org/eclipse/fordiac/ide/model/libraryElement/impl/ECStateImpl.java Wed Aug 23 22:35:10 2017 +0200 @@ -77,7 +77,7 @@ * @generated * @ordered */ - protected static final String COMMENT_EDEFAULT = null; + protected static final String COMMENT_EDEFAULT = "\"\""; /** * The cached value of the '{@link #getComment() <em>Comment</em>}' attribute. diff -r eb2aeb70a7e7 -r 932d536c6e02 plugins/org.eclipse.fordiac.ide.model/src-gen/org/eclipse/fordiac/ide/model/libraryElement/impl/EventImpl.java --- a/plugins/org.eclipse.fordiac.ide.model/src-gen/org/eclipse/fordiac/ide/model/libraryElement/impl/EventImpl.java Wed Aug 23 14:38:35 2017 +0200 +++ b/plugins/org.eclipse.fordiac.ide.model/src-gen/org/eclipse/fordiac/ide/model/libraryElement/impl/EventImpl.java Wed Aug 23 22:35:10 2017 +0200 @@ -83,7 +83,7 @@ * @generated * @ordered */ - protected static final String COMMENT_EDEFAULT = null; + protected static final String COMMENT_EDEFAULT = "\"\""; /** * The cached value of the '{@link #getComment() <em>Comment</em>}' attribute. diff -r eb2aeb70a7e7 -r 932d536c6e02 plugins/org.eclipse.fordiac.ide.model/src-gen/org/eclipse/fordiac/ide/model/libraryElement/impl/LibraryElementImpl.java --- a/plugins/org.eclipse.fordiac.ide.model/src-gen/org/eclipse/fordiac/ide/model/libraryElement/impl/LibraryElementImpl.java Wed Aug 23 14:38:35 2017 +0200 +++ b/plugins/org.eclipse.fordiac.ide.model/src-gen/org/eclipse/fordiac/ide/model/libraryElement/impl/LibraryElementImpl.java Wed Aug 23 22:35:10 2017 +0200 @@ -72,7 +72,7 @@ * @generated * @ordered */ - protected static final String COMMENT_EDEFAULT = null; + protected static final String COMMENT_EDEFAULT = "\"\""; /** * The cached value of the '{@link #getComment() <em>Comment</em>}' attribute. diff -r eb2aeb70a7e7 -r 932d536c6e02 plugins/org.eclipse.fordiac.ide.model/src-gen/org/eclipse/fordiac/ide/model/libraryElement/impl/LibraryElementPackageImpl.java --- a/plugins/org.eclipse.fordiac.ide.model/src-gen/org/eclipse/fordiac/ide/model/libraryElement/impl/LibraryElementPackageImpl.java Wed Aug 23 14:38:35 2017 +0200 +++ b/plugins/org.eclipse.fordiac.ide.model/src-gen/org/eclipse/fordiac/ide/model/libraryElement/impl/LibraryElementPackageImpl.java Wed Aug 23 22:35:10 2017 +0200 @@ -3370,7 +3370,7 @@ initEClass(iNamedElementEClass, INamedElement.class, "INamedElement", IS_ABSTRACT, IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS); initEAttribute(getINamedElement_Name(), theXMLTypePackage.getString(), "name", "\"\"", 0, 1, INamedElement.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED); - initEAttribute(getINamedElement_Comment(), theXMLTypePackage.getString(), "comment", null, 0, 1, INamedElement.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED); + initEAttribute(getINamedElement_Comment(), theXMLTypePackage.getString(), "comment", "\"\"", 0, 1, INamedElement.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED); initEClass(resourceTypeFBEClass, ResourceTypeFB.class, "ResourceTypeFB", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS); diff -r eb2aeb70a7e7 -r 932d536c6e02 plugins/org.eclipse.fordiac.ide.model/src-gen/org/eclipse/fordiac/ide/model/libraryElement/impl/ServiceInterfaceImpl.java --- a/plugins/org.eclipse.fordiac.ide.model/src-gen/org/eclipse/fordiac/ide/model/libraryElement/impl/ServiceInterfaceImpl.java Wed Aug 23 14:38:35 2017 +0200 +++ b/plugins/org.eclipse.fordiac.ide.model/src-gen/org/eclipse/fordiac/ide/model/libraryElement/impl/ServiceInterfaceImpl.java Wed Aug 23 22:35:10 2017 +0200 @@ -62,7 +62,7 @@ * @generated * @ordered */ - protected static final String COMMENT_EDEFAULT = null; + protected static final String COMMENT_EDEFAULT = "\"\""; /** * The cached value of the '{@link #getComment() <em>Comment</em>}' attribute. diff -r eb2aeb70a7e7 -r 932d536c6e02 plugins/org.eclipse.fordiac.ide.model/src-gen/org/eclipse/fordiac/ide/model/libraryElement/impl/ServiceSequenceImpl.java --- a/plugins/org.eclipse.fordiac.ide.model/src-gen/org/eclipse/fordiac/ide/model/libraryElement/impl/ServiceSequenceImpl.java Wed Aug 23 14:38:35 2017 +0200 +++ b/plugins/org.eclipse.fordiac.ide.model/src-gen/org/eclipse/fordiac/ide/model/libraryElement/impl/ServiceSequenceImpl.java Wed Aug 23 22:35:10 2017 +0200 @@ -72,7 +72,7 @@ * @generated * @ordered */ - protected static final String COMMENT_EDEFAULT = null; + protected static final String COMMENT_EDEFAULT = "\"\""; /** * The cached value of the '{@link #getComment() <em>Comment</em>}' attribute. diff -r eb2aeb70a7e7 -r 932d536c6e02 plugins/org.eclipse.fordiac.ide.model/src-gen/org/eclipse/fordiac/ide/model/libraryElement/impl/VarDeclarationImpl.java --- a/plugins/org.eclipse.fordiac.ide.model/src-gen/org/eclipse/fordiac/ide/model/libraryElement/impl/VarDeclarationImpl.java Wed Aug 23 14:38:35 2017 +0200 +++ b/plugins/org.eclipse.fordiac.ide.model/src-gen/org/eclipse/fordiac/ide/model/libraryElement/impl/VarDeclarationImpl.java Wed Aug 23 22:35:10 2017 +0200 @@ -85,7 +85,7 @@ * @generated * @ordered */ - protected static final String COMMENT_EDEFAULT = null; + protected static final String COMMENT_EDEFAULT = "\"\""; /** * The cached value of the '{@link #getComment() <em>Comment</em>}' attribute. |
From: <for...@li...> - 2017-08-23 12:39:10
|
details: http://fordiac.hg.sourceforge.net/hgweb/fordiac/fordiac-ide/rev/eb2aeb70a7e7 changeset: 3067:eb2aeb70a7e7 user: Alois Zoitl <alo...@gm...> date: Wed Aug 23 14:38:35 2017 +0200 description: [Bug 512072] fixed issue in sub-app adapter interface property sheet Bug: https://bugs.eclipse.org/bugs/show_bug.cgi?id=512072 Signed-off: alo...@gm... diffstat: plugins/org.eclipse.fordiac.ide.application/src/org/eclipse/fordiac/ide/application/properties/EditInterfaceAdapterSection.java | 8 +++++++- 1 files changed, 7 insertions(+), 1 deletions(-) diffs (22 lines): diff -r 54ea51a77b80 -r eb2aeb70a7e7 plugins/org.eclipse.fordiac.ide.application/src/org/eclipse/fordiac/ide/application/properties/EditInterfaceAdapterSection.java --- a/plugins/org.eclipse.fordiac.ide.application/src/org/eclipse/fordiac/ide/application/properties/EditInterfaceAdapterSection.java Tue Aug 22 18:18:40 2017 +0200 +++ b/plugins/org.eclipse.fordiac.ide.application/src/org/eclipse/fordiac/ide/application/properties/EditInterfaceAdapterSection.java Wed Aug 23 14:38:35 2017 +0200 @@ -23,11 +23,17 @@ import org.eclipse.ui.views.properties.tabbed.TabbedPropertySheetPage; public class EditInterfaceAdapterSection extends AbstractEditInterfaceSection { + public void createControls(final Composite parent, final TabbedPropertySheetPage tabbedPropertySheetPage) { super.createControls(parent, tabbedPropertySheetPage); inputsViewer.setContentProvider(new InterfaceContentProvider(true, InterfaceContentProviderType.ADAPTER)); outputsViewer.setContentProvider(new InterfaceContentProvider(false, InterfaceContentProviderType.ADAPTER)); - setCellEditors(); + } + + @Override + protected void setType(Object input) { + super.setType(input); + setCellEditors(); //only now the types are correctly set } @Override |
From: <for...@li...> - 2017-08-22 16:19:02
|
details: http://fordiac.hg.sourceforge.net/hgweb/fordiac/fordiac-ide/rev/54ea51a77b80 changeset: 3066:54ea51a77b80 user: Alois Zoitl <alo...@gm...> date: Tue Aug 22 18:18:40 2017 +0200 description: [Bug 521219] Update Type and Instance Name formatting of segments to match new design updated lookof segement type and instance name to new formatting with instance name bold and type name italic. Bug: https://bugs.eclipse.org/bugs/show_bug.cgi?id=521219 Signed-off: alo...@gm... diffstat: plugins/org.eclipse.fordiac.ide.systemconfiguration/src/org/eclipse/fordiac/ide/systemconfiguration/editparts/SegmentEditPart.java | 15 ++++++++- 1 files changed, 13 insertions(+), 2 deletions(-) diffs (50 lines): diff -r a4c5f7ddbbad -r 54ea51a77b80 plugins/org.eclipse.fordiac.ide.systemconfiguration/src/org/eclipse/fordiac/ide/systemconfiguration/editparts/SegmentEditPart.java --- a/plugins/org.eclipse.fordiac.ide.systemconfiguration/src/org/eclipse/fordiac/ide/systemconfiguration/editparts/SegmentEditPart.java Tue Aug 22 10:48:35 2017 +0200 +++ b/plugins/org.eclipse.fordiac.ide.systemconfiguration/src/org/eclipse/fordiac/ide/systemconfiguration/editparts/SegmentEditPart.java Tue Aug 22 18:18:40 2017 +0200 @@ -16,6 +16,7 @@ import java.util.List; import org.eclipse.draw2d.ChopboxAnchor; +import org.eclipse.draw2d.ColorConstants; import org.eclipse.draw2d.ConnectionAnchor; import org.eclipse.draw2d.Figure; import org.eclipse.draw2d.Graphics; @@ -50,6 +51,7 @@ import org.eclipse.gef.editpolicies.XYLayoutEditPolicy; import org.eclipse.gef.requests.AlignmentRequest; import org.eclipse.gef.requests.CreateRequest; +import org.eclipse.jface.resource.JFaceResources; import org.eclipse.jface.util.IPropertyChangeListener; import org.eclipse.swt.graphics.Color; import org.eclipse.swt.graphics.Pattern; @@ -240,6 +242,7 @@ instanceNameLabel.setText(getINamedElement().getName()); instanceNameLabel.setTextAlignment(PositionConstants.RIGHT); instanceNameLabel.setLabelAlignment(PositionConstants.RIGHT); + instanceNameLabel.setFont(JFaceResources.getFontRegistry().getBold(JFaceResources.DEFAULT_FONT)); GridLayout gridLayout = new GridLayout(1, true); gridLayout.verticalSpacing = 2; gridLayout.marginHeight = 0; @@ -263,12 +266,20 @@ rect.add(instanceNameLabel); instanceNameLabel.setBorder(new MarginBorder(4, 0, 4, 0)); - GridLayout rectLayout = new GridLayout(2, true); + GridLayout rectLayout = new GridLayout(3, false); rectLayout.marginHeight = 2; rectLayout.marginWidth = 0; rect.setLayoutManager(rectLayout); rect.setConstraint(instanceNameLabel, instanceNameLayout); - rect.add(new Label(": " + getModel().getSegmentType().getName())); + rect.add(new Label(":")); //$NON-NLS-1$ + Label typeLabel = new Label(getModel().getSegmentType().getName()); + rect.add(typeLabel); + typeLabel.setFont(JFaceResources.getFontRegistry().getItalic(JFaceResources.DEFAULT_FONT)); + rect.setConstraint(typeLabel, new GridData(GridData.HORIZONTAL_ALIGN_BEGINNING | GridData.GRAB_HORIZONTAL)); + typeLabel.setTextAlignment(PositionConstants.LEFT); + typeLabel.setLabelAlignment(PositionConstants.LEFT); + typeLabel.setBackgroundColor(ColorConstants.blue); + typeLabel.setOpaque(false); } |
From: <for...@li...> - 2017-08-22 08:51:56
|
details: http://fordiac.hg.sourceforge.net/hgweb/fordiac/fordiac-ide/rev/d528ddf559d9 changeset: 3064:d528ddf559d9 user: Alois Zoitl <alo...@gm...> date: Tue Aug 22 10:18:02 2017 +0200 description: [Bug 517856] Segments not named correctly on create As a result of the fixes for the new name checking a default value for name has been set so that less null checks are required all over the code. Bug: https://bugs.eclipse.org/bugs/show_bug.cgi?id=517856 Signed-off: alo...@gm... diffstat: plugins/org.eclipse.fordiac.ide.model/model/data.ecore | 12 -------- plugins/org.eclipse.fordiac.ide.model/model/lib.ecore | 15 +-------- plugins/org.eclipse.fordiac.ide.model/src-gen/org/eclipse/fordiac/ide/model/libraryElement/AdapterType.java | 4 +- plugins/org.eclipse.fordiac.ide.model/src-gen/org/eclipse/fordiac/ide/model/libraryElement/Connection.java | 4 +- plugins/org.eclipse.fordiac.ide.model/src-gen/org/eclipse/fordiac/ide/model/libraryElement/FBNetwork.java | 2 +- plugins/org.eclipse.fordiac.ide.model/src-gen/org/eclipse/fordiac/ide/model/libraryElement/FBNetworkElement.java | 4 +- plugins/org.eclipse.fordiac.ide.model/src-gen/org/eclipse/fordiac/ide/model/libraryElement/INamedElement.java | 3 +- plugins/org.eclipse.fordiac.ide.model/src-gen/org/eclipse/fordiac/ide/model/libraryElement/InterfaceList.java | 2 +- plugins/org.eclipse.fordiac.ide.model/src-gen/org/eclipse/fordiac/ide/model/libraryElement/VarDeclaration.java | 2 +- plugins/org.eclipse.fordiac.ide.model/src-gen/org/eclipse/fordiac/ide/model/libraryElement/impl/AdapterTypeImpl.java | 4 +- plugins/org.eclipse.fordiac.ide.model/src-gen/org/eclipse/fordiac/ide/model/libraryElement/impl/AlgorithmImpl.java | 2 +- plugins/org.eclipse.fordiac.ide.model/src-gen/org/eclipse/fordiac/ide/model/libraryElement/impl/ApplicationImpl.java | 2 +- plugins/org.eclipse.fordiac.ide.model/src-gen/org/eclipse/fordiac/ide/model/libraryElement/impl/ConfigurableObjectImpl.java | 2 +- plugins/org.eclipse.fordiac.ide.model/src-gen/org/eclipse/fordiac/ide/model/libraryElement/impl/ECStateImpl.java | 2 +- plugins/org.eclipse.fordiac.ide.model/src-gen/org/eclipse/fordiac/ide/model/libraryElement/impl/EventImpl.java | 2 +- plugins/org.eclipse.fordiac.ide.model/src-gen/org/eclipse/fordiac/ide/model/libraryElement/impl/FBNetworkImpl.java | 6 ++-- plugins/org.eclipse.fordiac.ide.model/src-gen/org/eclipse/fordiac/ide/model/libraryElement/impl/LibraryElementImpl.java | 2 +- plugins/org.eclipse.fordiac.ide.model/src-gen/org/eclipse/fordiac/ide/model/libraryElement/impl/LibraryElementPackageImpl.java | 2 +- plugins/org.eclipse.fordiac.ide.model/src-gen/org/eclipse/fordiac/ide/model/libraryElement/impl/ServiceInterfaceImpl.java | 2 +- plugins/org.eclipse.fordiac.ide.model/src-gen/org/eclipse/fordiac/ide/model/libraryElement/impl/ServiceSequenceImpl.java | 2 +- plugins/org.eclipse.fordiac.ide.model/src-gen/org/eclipse/fordiac/ide/model/libraryElement/impl/VarDeclarationImpl.java | 2 +- 21 files changed, 28 insertions(+), 50 deletions(-) diffs (330 lines): diff -r 9219d50ce385 -r d528ddf559d9 plugins/org.eclipse.fordiac.ide.model/model/data.ecore --- a/plugins/org.eclipse.fordiac.ide.model/model/data.ecore Mon Aug 21 22:03:44 2017 +0200 +++ b/plugins/org.eclipse.fordiac.ide.model/model/data.ecore Tue Aug 22 10:18:02 2017 +0200 @@ -1,16 +1,4 @@ <?xml version="1.0" encoding="UTF-8"?> -<!-- - Copyright (c) 2008, 2010, 2012 - 2017 Profactor GmbH, TU Wien ACIN, fortiss GmbH - - All rights reserved. This program and the accompanying materials - are made available under the terms of the Eclipse Public License v1.0 - which accompanies this distribution, and is available at - http://www.eclipse.org/legal/epl-v10.html - - Contributors: - Gerhard Ebenhofer, Alois Zoitl, Monika Wenger, Martin Jobst - - initial API and implementation and/or initial documentation ---> <ecore:EPackage xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:ecore="http://www.eclipse.org/emf/2002/Ecore" name="data" nsURI="org.eclipse.fordiac.ide.model.datatype" nsPrefix="data"> <eClassifiers xsi:type="ecore:EClass" name="ArrayType" eSuperTypes="#//DataType"> diff -r 9219d50ce385 -r d528ddf559d9 plugins/org.eclipse.fordiac.ide.model/model/lib.ecore --- a/plugins/org.eclipse.fordiac.ide.model/model/lib.ecore Mon Aug 21 22:03:44 2017 +0200 +++ b/plugins/org.eclipse.fordiac.ide.model/model/lib.ecore Tue Aug 22 10:18:02 2017 +0200 @@ -1,16 +1,4 @@ <?xml version="1.0" encoding="UTF-8"?> -<!-- - Copyright (c) 2008 - 2017 Profactor GmbH, TU Wien ACIN, fortiss GmbH - - All rights reserved. This program and the accompanying materials - are made available under the terms of the Eclipse Public License v1.0 - which accompanies this distribution, and is available at - http://www.eclipse.org/legal/epl-v10.html - - Contributors: - Gerhard Ebenhofer, Alois Zoitl, Ingo Hegny, Monika Wenger - - initial API and implementation and/or initial documentation ---> <ecore:EPackage xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:ecore="http://www.eclipse.org/emf/2002/Ecore" name="libraryElement" nsURI="org.eclipse.fordiac.ide.model.libraryElement" nsPrefix="libraryElement"> @@ -1018,7 +1006,8 @@ </eClassifiers> <eClassifiers xsi:type="ecore:EClass" name="INamedElement" abstract="true" interface="true" eSuperTypes="#//I4DIACElement"> - <eStructuralFeatures xsi:type="ecore:EAttribute" name="name" eType="ecore:EDataType http://www.eclipse.org/emf/2003/XMLType#//String"/> + <eStructuralFeatures xsi:type="ecore:EAttribute" name="name" eType="ecore:EDataType http://www.eclipse.org/emf/2003/XMLType#//String" + defaultValueLiteral=""""/> <eStructuralFeatures xsi:type="ecore:EAttribute" name="comment" eType="ecore:EDataType http://www.eclipse.org/emf/2003/XMLType#//String"/> </eClassifiers> <eClassifiers xsi:type="ecore:EClass" name="ResourceTypeFB" eSuperTypes="#//FB"> diff -r 9219d50ce385 -r d528ddf559d9 plugins/org.eclipse.fordiac.ide.model/src-gen/org/eclipse/fordiac/ide/model/libraryElement/AdapterType.java --- a/plugins/org.eclipse.fordiac.ide.model/src-gen/org/eclipse/fordiac/ide/model/libraryElement/AdapterType.java Mon Aug 21 22:03:44 2017 +0200 +++ b/plugins/org.eclipse.fordiac.ide.model/src-gen/org/eclipse/fordiac/ide/model/libraryElement/AdapterType.java Tue Aug 22 10:18:02 2017 +0200 @@ -80,7 +80,7 @@ * </p> * <!-- end-user-doc --> * @model kind="operation" - * annotation="http://www.eclipse.org/emf/2002/GenModel body='\t\tAdapterFBType temp = (AdapterFBType)EcoreUtil.copy(getAdapterFBType());\r\n\t\t// fetch the interface to invert it; \r\n\t\tArrayList<Event> inputEvents = new ArrayList<Event>(temp.getInterfaceList().getEventOutputs());\r\n\t\tfor (Event event : inputEvents) {\r\n\t\t\tevent.setIsInput(true);\r\n\t\t}\r\n\t\tArrayList<Event> outputEvents = new ArrayList<Event>(temp.getInterfaceList().getEventInputs());\r\n\t\tfor (Event event : outputEvents) {\r\n\t\t\tevent.setIsInput(false);\r\n\t\t}\r\n\t\tArrayList<VarDeclaration> inputVars = new ArrayList<VarDeclaration>(temp.getInterfaceList().getOutputVars());\r\n\t\tfor (VarDeclaration varDecl : inputVars) {\r\n\t\t\tvarDecl.setIsInput(true);\r\n\t\t}\r\n\t\tArrayList<VarDeclaration> outputVars = new ArrayList<VarDeclaration>(temp.getInterfaceList().getInputVars());\r\n\t\tfor (VarDeclaration varDecl : outputVars) {\r\n\t\t\tvarDecl.setIsInput(false);\r\n\t\t}\r\n\t\t\r\n\t\ttemp.getInterfaceList().getEventInputs().clear();\r\n\t\ttemp.getInterfaceList().getEventOutputs().clear();\r\n\t\ttemp.getInterfaceList().getInputVars().clear();\r\n\t\ttemp.getInterfaceList().getOutputVars().clear();\r\n\t\t\r\n\t\ttemp.getInterfaceList().getEventInputs().addAll(inputEvents);\r\n\t\ttemp.getInterfaceList().getEventOutputs().addAll(outputEvents);\r\n\t\ttemp.getInterfaceList().getInputVars().addAll(inputVars);\r\n\t\ttemp.getInterfaceList().getOutputVars().addAll(outputVars);\r\n\t\t\r\n\t\treturn temp;'" + * annotation="http://www.eclipse.org/emf/2002/GenModel body='\t\tAdapterFBType temp = (AdapterFBType)EcoreUtil.copy(getAdapterFBType());\r\n\t\t// fetch the interface to invert it; \r\n\t\tArrayList<Event> inputEvents = new ArrayList<Event>(temp.getInterfaceList().getEventOutputs());\r\n\t\tfor (Event event : inputEvents) {\r\n\t\t\tevent.setIsInput(true);\r\n\t\t}\r\n\t\tArrayList<Event> outputEvents = new ArrayList<Event>(temp.getInterfaceList().getEventInputs());\r\n\t\tfor (Event event : outputEvents) {\r\n\t\t\tevent.setIsInput(false);\r\n\t\t}\r\n\t\tArrayList<VarDeclaration> inputVars = new ArrayList<VarDeclaration>(temp.getInterfaceList().getOutputVars());\r\n\t\tfor (VarDeclaration varDecl : inputVars) {\r\n\t\t\tvarDecl.setIsInput(true);\r\n\t\t}\r\n\t\tArrayList<VarDeclaration> outputVars = new ArrayList<VarDeclaration>(temp.getInterfaceList().getInputVars());\r\n\t\tfor (VarDeclaration varDecl : outputVars) {\r\n\t\t\tvarDecl.setIsInput(false);\r\n\t\t}\r\n\t\t\r\n\t\ttemp.getInterfaceList().getEventInputs().clear();\r\n\t\ttemp.getInterfaceList().getEventOutputs().clear();\r\n\t\ttemp.getInterfaceList().getInputVars().clear();\r\n\t\ttemp.getInterfaceList().getOutputVars().clear();\r\n\t\t\r\n\t\ttemp.getInterfaceList().getEventInputs().addAll(inputEvents);\r\n\t\ttemp.getInterfaceList().getEventOutputs().addAll(outputEvents);\r\n\t\ttemp.getInterfaceList().getInputVars().addAll(inputVars);\r\n\t\ttemp.getInterfaceList().getOutputVars().addAll(outputVars);\r\n\t\t\r\n\t\treturn temp;'" * @generated */ AdapterFBType getPlugType(); @@ -93,7 +93,7 @@ * </p> * <!-- end-user-doc --> * @model kind="operation" - * annotation="http://www.eclipse.org/emf/2002/GenModel body='return (AdapterFBType)<%org.eclipse.emf.ecore.util.EcoreUtil%>.copy(getAdapterFBType());'" + * annotation="http://www.eclipse.org/emf/2002/GenModel body='return (AdapterFBType)<%org.eclipse.emf.ecore.util.EcoreUtil%>.copy(getAdapterFBType());'" * @generated */ AdapterFBType getSocketType(); diff -r 9219d50ce385 -r d528ddf559d9 plugins/org.eclipse.fordiac.ide.model/src-gen/org/eclipse/fordiac/ide/model/libraryElement/Connection.java --- a/plugins/org.eclipse.fordiac.ide.model/src-gen/org/eclipse/fordiac/ide/model/libraryElement/Connection.java Mon Aug 21 22:03:44 2017 +0200 +++ b/plugins/org.eclipse.fordiac.ide.model/src-gen/org/eclipse/fordiac/ide/model/libraryElement/Connection.java Tue Aug 22 10:18:02 2017 +0200 @@ -150,7 +150,7 @@ * </p> * <!-- end-user-doc --> * @model kind="operation" required="true" - * annotation="http://www.eclipse.org/emf/2002/GenModel body='//if source element is null it is a connection from a CFB interface element\nreturn (null != getSourceElement() && null != getSourceElement().getFbNetwork()) ? (getSourceElement().getFbNetwork().eContainer() instanceof Resource) : false;'" + * annotation="http://www.eclipse.org/emf/2002/GenModel body='//if source element is null it is a connection from a CFB interface element\nreturn (null != getSourceElement() && null != getSourceElement().getFbNetwork()) ? (getSourceElement().getFbNetwork().eContainer() instanceof Resource) : false;'" * @generated */ boolean isResourceConnection(); @@ -167,7 +167,7 @@ /** * <!-- begin-user-doc --> * <!-- end-user-doc --> - * @model annotation="http://www.eclipse.org/emf/2002/GenModel body='if(!isResourceConnection()){\n\tResource sourceRes = (null != getSourceElement()) ? getSourceElement().getResource() : null;\n\tResource destinationRes = (null != getDestinationElement()) ? getDestinationElement().getResource() : null;\n\tsetBrokenConnection(((null != sourceRes) && (!sourceRes.equals(destinationRes))) ||\n\t ((null != destinationRes) && (!destinationRes.equals(sourceRes))));\n}'" + * @model annotation="http://www.eclipse.org/emf/2002/GenModel body='if(!isResourceConnection()){\n\tResource sourceRes = (null != getSourceElement()) ? getSourceElement().getResource() : null;\n\tResource destinationRes = (null != getDestinationElement()) ? getDestinationElement().getResource() : null;\n\tsetBrokenConnection(((null != sourceRes) && (!sourceRes.equals(destinationRes))) ||\n\t ((null != destinationRes) && (!destinationRes.equals(sourceRes))));\n}'" * @generated */ void checkIfConnectionBroken(); diff -r 9219d50ce385 -r d528ddf559d9 plugins/org.eclipse.fordiac.ide.model/src-gen/org/eclipse/fordiac/ide/model/libraryElement/FBNetwork.java --- a/plugins/org.eclipse.fordiac.ide.model/src-gen/org/eclipse/fordiac/ide/model/libraryElement/FBNetwork.java Mon Aug 21 22:03:44 2017 +0200 +++ b/plugins/org.eclipse.fordiac.ide.model/src-gen/org/eclipse/fordiac/ide/model/libraryElement/FBNetwork.java Tue Aug 22 10:18:02 2017 +0200 @@ -180,7 +180,7 @@ * <!-- begin-user-doc --> * <!-- end-user-doc --> * @model nameDataType="org.eclipse.emf.ecore.xml.type.String" nameRequired="true" - * annotation="http://www.eclipse.org/emf/2002/GenModel body='for (FBNetworkElement element : getNetworkElements()) {\n\tif((element instanceof FB) && (element.getName().equals(name))){\n\t\treturn (FB)element;\n\t}\n}\nreturn null;'" + * annotation="http://www.eclipse.org/emf/2002/GenModel body='for (FBNetworkElement element : getNetworkElements()) {\n\tif((element instanceof FB) && (element.getName().equals(name))){\n\t\treturn (FB)element;\n\t}\n}\nreturn null;'" * @generated */ FB getFBNamed(String name); diff -r 9219d50ce385 -r d528ddf559d9 plugins/org.eclipse.fordiac.ide.model/src-gen/org/eclipse/fordiac/ide/model/libraryElement/FBNetworkElement.java --- a/plugins/org.eclipse.fordiac.ide.model/src-gen/org/eclipse/fordiac/ide/model/libraryElement/FBNetworkElement.java Mon Aug 21 22:03:44 2017 +0200 +++ b/plugins/org.eclipse.fordiac.ide.model/src-gen/org/eclipse/fordiac/ide/model/libraryElement/FBNetworkElement.java Tue Aug 22 10:18:02 2017 +0200 @@ -87,7 +87,7 @@ * <!-- begin-user-doc --> * <!-- end-user-doc --> * @model kind="operation" required="true" - * annotation="http://www.eclipse.org/emf/2002/GenModel body='if(null != getFbNetwork() && getFbNetwork().eContainer() instanceof Resource){\n\treturn (Resource)getFbNetwork().eContainer();\n} else if(isMapped()){\n\t//get the Resource of the mapped FB\n\treturn getMapping().getTo().getResource();\n}\nreturn null;'" + * annotation="http://www.eclipse.org/emf/2002/GenModel body='if(null != getFbNetwork() && getFbNetwork().eContainer() instanceof Resource){\n\treturn (Resource)getFbNetwork().eContainer();\n} else if(isMapped()){\n\t//get the Resource of the mapped FB\n\treturn getMapping().getTo().getResource();\n}\nreturn null;'" * @generated */ Resource getResource(); @@ -122,7 +122,7 @@ /** * <!-- begin-user-doc --> * <!-- end-user-doc --> - * @model annotation="http://www.eclipse.org/emf/2002/GenModel body='for (IInterfaceElement element : getInterface().getAllInterfaceElements()) {\r\n\t//todo when lambdas are better allowed in EMF replace with .forEach(conn -> conn.checkIfConnectionBroken());\r\n\tfor (org.eclipse.fordiac.ide.model.libraryElement.Connection conn : element.getInputConnections()) {\r\n\t\tconn.checkIfConnectionBroken();\r\n\t}\r\n\tfor (org.eclipse.fordiac.ide.model.libraryElement.Connection conn : element.getOutputConnections()) {\r\n\t\tconn.checkIfConnectionBroken();\r\n\t}\r\n}'" + * @model annotation="http://www.eclipse.org/emf/2002/GenModel body='for (IInterfaceElement element : getInterface().getAllInterfaceElements()) {\r\n\t//todo when lambdas are better allowed in EMF replace with .forEach(conn -> conn.checkIfConnectionBroken());\r\n\tfor (org.eclipse.fordiac.ide.model.libraryElement.Connection conn : element.getInputConnections()) {\r\n\t\tconn.checkIfConnectionBroken();\r\n\t}\r\n\tfor (org.eclipse.fordiac.ide.model.libraryElement.Connection conn : element.getOutputConnections()) {\r\n\t\tconn.checkIfConnectionBroken();\r\n\t}\r\n}'" * @generated */ void checkConnections(); diff -r 9219d50ce385 -r d528ddf559d9 plugins/org.eclipse.fordiac.ide.model/src-gen/org/eclipse/fordiac/ide/model/libraryElement/INamedElement.java --- a/plugins/org.eclipse.fordiac.ide.model/src-gen/org/eclipse/fordiac/ide/model/libraryElement/INamedElement.java Mon Aug 21 22:03:44 2017 +0200 +++ b/plugins/org.eclipse.fordiac.ide.model/src-gen/org/eclipse/fordiac/ide/model/libraryElement/INamedElement.java Tue Aug 22 10:18:02 2017 +0200 @@ -32,6 +32,7 @@ public interface INamedElement extends I4DIACElement { /** * Returns the value of the '<em><b>Name</b></em>' attribute. + * The default value is <code>"\"\""</code>. * <!-- begin-user-doc --> * <p> * If the meaning of the '<em>Name</em>' attribute isn't clear, @@ -41,7 +42,7 @@ * @return the value of the '<em>Name</em>' attribute. * @see #setName(String) * @see org.eclipse.fordiac.ide.model.libraryElement.LibraryElementPackage#getINamedElement_Name() - * @model dataType="org.eclipse.emf.ecore.xml.type.String" + * @model default="\"\"" dataType="org.eclipse.emf.ecore.xml.type.String" * @generated */ String getName(); diff -r 9219d50ce385 -r d528ddf559d9 plugins/org.eclipse.fordiac.ide.model/src-gen/org/eclipse/fordiac/ide/model/libraryElement/InterfaceList.java --- a/plugins/org.eclipse.fordiac.ide.model/src-gen/org/eclipse/fordiac/ide/model/libraryElement/InterfaceList.java Mon Aug 21 22:03:44 2017 +0200 +++ b/plugins/org.eclipse.fordiac.ide.model/src-gen/org/eclipse/fordiac/ide/model/libraryElement/InterfaceList.java Tue Aug 22 10:18:02 2017 +0200 @@ -143,7 +143,7 @@ * <!-- begin-user-doc --> * <!-- end-user-doc --> * @model kind="operation" required="true" many="false" - * annotation="http://www.eclipse.org/emf/2002/GenModel body='EList<IInterfaceElement> retVal = new BasicEList<IInterfaceElement>();\t\t\nretVal.addAll(getEventInputs());\nretVal.addAll(getEventOutputs());\nretVal.addAll(getInputVars());\nretVal.addAll(getOutputVars());\nretVal.addAll(getPlugs());\nretVal.addAll(getSockets());\nreturn retVal;'" + * annotation="http://www.eclipse.org/emf/2002/GenModel body='EList<IInterfaceElement> retVal = new BasicEList<IInterfaceElement>();\t\t\nretVal.addAll(getEventInputs());\nretVal.addAll(getEventOutputs());\nretVal.addAll(getInputVars());\nretVal.addAll(getOutputVars());\nretVal.addAll(getPlugs());\nretVal.addAll(getSockets());\nreturn retVal;'" * @generated */ EList<IInterfaceElement> getAllInterfaceElements(); diff -r 9219d50ce385 -r d528ddf559d9 plugins/org.eclipse.fordiac.ide.model/src-gen/org/eclipse/fordiac/ide/model/libraryElement/VarDeclaration.java --- a/plugins/org.eclipse.fordiac.ide.model/src-gen/org/eclipse/fordiac/ide/model/libraryElement/VarDeclaration.java Mon Aug 21 22:03:44 2017 +0200 +++ b/plugins/org.eclipse.fordiac.ide.model/src-gen/org/eclipse/fordiac/ide/model/libraryElement/VarDeclaration.java Tue Aug 22 10:18:02 2017 +0200 @@ -113,7 +113,7 @@ * </p> * <!-- end-user-doc --> * @model kind="operation" dataType="org.eclipse.emf.ecore.xml.type.Boolean" - * annotation="http://www.eclipse.org/emf/2002/GenModel body='return arraySize > 0;'" + * annotation="http://www.eclipse.org/emf/2002/GenModel body='return arraySize > 0;'" * @generated */ boolean isArray(); diff -r 9219d50ce385 -r d528ddf559d9 plugins/org.eclipse.fordiac.ide.model/src-gen/org/eclipse/fordiac/ide/model/libraryElement/impl/AdapterTypeImpl.java --- a/plugins/org.eclipse.fordiac.ide.model/src-gen/org/eclipse/fordiac/ide/model/libraryElement/impl/AdapterTypeImpl.java Mon Aug 21 22:03:44 2017 +0200 +++ b/plugins/org.eclipse.fordiac.ide.model/src-gen/org/eclipse/fordiac/ide/model/libraryElement/impl/AdapterTypeImpl.java Tue Aug 22 10:18:02 2017 +0200 @@ -105,7 +105,7 @@ * @generated */ public AdapterFBType getPlugType() { - AdapterFBType temp = EcoreUtil.copy(getAdapterFBType()); + AdapterFBType temp = (AdapterFBType)EcoreUtil.copy(getAdapterFBType()); // fetch the interface to invert it; ArrayList<Event> inputEvents = new ArrayList<Event>(temp.getInterfaceList().getEventOutputs()); for (Event event : inputEvents) { @@ -143,7 +143,7 @@ * @generated */ public AdapterFBType getSocketType() { - return EcoreUtil.copy(getAdapterFBType()); + return (AdapterFBType)EcoreUtil.copy(getAdapterFBType()); } /** diff -r 9219d50ce385 -r d528ddf559d9 plugins/org.eclipse.fordiac.ide.model/src-gen/org/eclipse/fordiac/ide/model/libraryElement/impl/AlgorithmImpl.java --- a/plugins/org.eclipse.fordiac.ide.model/src-gen/org/eclipse/fordiac/ide/model/libraryElement/impl/AlgorithmImpl.java Mon Aug 21 22:03:44 2017 +0200 +++ b/plugins/org.eclipse.fordiac.ide.model/src-gen/org/eclipse/fordiac/ide/model/libraryElement/impl/AlgorithmImpl.java Tue Aug 22 10:18:02 2017 +0200 @@ -42,7 +42,7 @@ * @generated * @ordered */ - protected static final String NAME_EDEFAULT = null; + protected static final String NAME_EDEFAULT = "\"\""; /** * The cached value of the '{@link #getName() <em>Name</em>}' attribute. diff -r 9219d50ce385 -r d528ddf559d9 plugins/org.eclipse.fordiac.ide.model/src-gen/org/eclipse/fordiac/ide/model/libraryElement/impl/ApplicationImpl.java --- a/plugins/org.eclipse.fordiac.ide.model/src-gen/org/eclipse/fordiac/ide/model/libraryElement/impl/ApplicationImpl.java Mon Aug 21 22:03:44 2017 +0200 +++ b/plugins/org.eclipse.fordiac.ide.model/src-gen/org/eclipse/fordiac/ide/model/libraryElement/impl/ApplicationImpl.java Tue Aug 22 10:18:02 2017 +0200 @@ -46,7 +46,7 @@ * @generated * @ordered */ - protected static final String NAME_EDEFAULT = null; + protected static final String NAME_EDEFAULT = "\"\""; /** * The cached value of the '{@link #getName() <em>Name</em>}' attribute. diff -r 9219d50ce385 -r d528ddf559d9 plugins/org.eclipse.fordiac.ide.model/src-gen/org/eclipse/fordiac/ide/model/libraryElement/impl/ConfigurableObjectImpl.java --- a/plugins/org.eclipse.fordiac.ide.model/src-gen/org/eclipse/fordiac/ide/model/libraryElement/impl/ConfigurableObjectImpl.java Mon Aug 21 22:03:44 2017 +0200 +++ b/plugins/org.eclipse.fordiac.ide.model/src-gen/org/eclipse/fordiac/ide/model/libraryElement/impl/ConfigurableObjectImpl.java Tue Aug 22 10:18:02 2017 +0200 @@ -51,7 +51,7 @@ * @generated * @ordered */ - protected static final String NAME_EDEFAULT = null; + protected static final String NAME_EDEFAULT = "\"\""; /** * The cached value of the '{@link #getName() <em>Name</em>}' attribute. * <!-- begin-user-doc --> diff -r 9219d50ce385 -r d528ddf559d9 plugins/org.eclipse.fordiac.ide.model/src-gen/org/eclipse/fordiac/ide/model/libraryElement/impl/ECStateImpl.java --- a/plugins/org.eclipse.fordiac.ide.model/src-gen/org/eclipse/fordiac/ide/model/libraryElement/impl/ECStateImpl.java Mon Aug 21 22:03:44 2017 +0200 +++ b/plugins/org.eclipse.fordiac.ide.model/src-gen/org/eclipse/fordiac/ide/model/libraryElement/impl/ECStateImpl.java Tue Aug 22 10:18:02 2017 +0200 @@ -58,7 +58,7 @@ * @generated * @ordered */ - protected static final String NAME_EDEFAULT = null; + protected static final String NAME_EDEFAULT = "\"\""; /** * The cached value of the '{@link #getName() <em>Name</em>}' attribute. <!-- diff -r 9219d50ce385 -r d528ddf559d9 plugins/org.eclipse.fordiac.ide.model/src-gen/org/eclipse/fordiac/ide/model/libraryElement/impl/EventImpl.java --- a/plugins/org.eclipse.fordiac.ide.model/src-gen/org/eclipse/fordiac/ide/model/libraryElement/impl/EventImpl.java Mon Aug 21 22:03:44 2017 +0200 +++ b/plugins/org.eclipse.fordiac.ide.model/src-gen/org/eclipse/fordiac/ide/model/libraryElement/impl/EventImpl.java Tue Aug 22 10:18:02 2017 +0200 @@ -63,7 +63,7 @@ * @generated * @ordered */ - protected static final String NAME_EDEFAULT = null; + protected static final String NAME_EDEFAULT = "\"\""; /** * The cached value of the '{@link #getName() <em>Name</em>}' attribute. diff -r 9219d50ce385 -r d528ddf559d9 plugins/org.eclipse.fordiac.ide.model/src-gen/org/eclipse/fordiac/ide/model/libraryElement/impl/FBNetworkImpl.java --- a/plugins/org.eclipse.fordiac.ide.model/src-gen/org/eclipse/fordiac/ide/model/libraryElement/impl/FBNetworkImpl.java Mon Aug 21 22:03:44 2017 +0200 +++ b/plugins/org.eclipse.fordiac.ide.model/src-gen/org/eclipse/fordiac/ide/model/libraryElement/impl/FBNetworkImpl.java Tue Aug 22 10:18:02 2017 +0200 @@ -180,13 +180,13 @@ */ public void removeConnection(final Connection connection) { if (connection instanceof EventConnection) { - getEventConnections().remove(connection); + getEventConnections().remove((EventConnection)connection); } if (connection instanceof DataConnection) { - getDataConnections().remove(connection); + getDataConnections().remove((DataConnection)connection); } if (connection instanceof AdapterConnection) { - getAdapterConnections().remove(connection); + getAdapterConnections().remove((AdapterConnection)connection); } } diff -r 9219d50ce385 -r d528ddf559d9 plugins/org.eclipse.fordiac.ide.model/src-gen/org/eclipse/fordiac/ide/model/libraryElement/impl/LibraryElementImpl.java --- a/plugins/org.eclipse.fordiac.ide.model/src-gen/org/eclipse/fordiac/ide/model/libraryElement/impl/LibraryElementImpl.java Mon Aug 21 22:03:44 2017 +0200 +++ b/plugins/org.eclipse.fordiac.ide.model/src-gen/org/eclipse/fordiac/ide/model/libraryElement/impl/LibraryElementImpl.java Tue Aug 22 10:18:02 2017 +0200 @@ -54,7 +54,7 @@ * @generated * @ordered */ - protected static final String NAME_EDEFAULT = null; + protected static final String NAME_EDEFAULT = "\"\""; /** * The cached value of the '{@link #getName() <em>Name</em>}' attribute. diff -r 9219d50ce385 -r d528ddf559d9 plugins/org.eclipse.fordiac.ide.model/src-gen/org/eclipse/fordiac/ide/model/libraryElement/impl/LibraryElementPackageImpl.java --- a/plugins/org.eclipse.fordiac.ide.model/src-gen/org/eclipse/fordiac/ide/model/libraryElement/impl/LibraryElementPackageImpl.java Mon Aug 21 22:03:44 2017 +0200 +++ b/plugins/org.eclipse.fordiac.ide.model/src-gen/org/eclipse/fordiac/ide/model/libraryElement/impl/LibraryElementPackageImpl.java Tue Aug 22 10:18:02 2017 +0200 @@ -3369,7 +3369,7 @@ addEParameter(op, ecorePackage.getEString(), "name", 1, 1, IS_UNIQUE, IS_ORDERED); initEClass(iNamedElementEClass, INamedElement.class, "INamedElement", IS_ABSTRACT, IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS); - initEAttribute(getINamedElement_Name(), theXMLTypePackage.getString(), "name", null, 0, 1, INamedElement.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED); + initEAttribute(getINamedElement_Name(), theXMLTypePackage.getString(), "name", "\"\"", 0, 1, INamedElement.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED); initEAttribute(getINamedElement_Comment(), theXMLTypePackage.getString(), "comment", null, 0, 1, INamedElement.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED); initEClass(resourceTypeFBEClass, ResourceTypeFB.class, "ResourceTypeFB", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS); diff -r 9219d50ce385 -r d528ddf559d9 plugins/org.eclipse.fordiac.ide.model/src-gen/org/eclipse/fordiac/ide/model/libraryElement/impl/ServiceInterfaceImpl.java --- a/plugins/org.eclipse.fordiac.ide.model/src-gen/org/eclipse/fordiac/ide/model/libraryElement/impl/ServiceInterfaceImpl.java Mon Aug 21 22:03:44 2017 +0200 +++ b/plugins/org.eclipse.fordiac.ide.model/src-gen/org/eclipse/fordiac/ide/model/libraryElement/impl/ServiceInterfaceImpl.java Tue Aug 22 10:18:02 2017 +0200 @@ -42,7 +42,7 @@ * @generated * @ordered */ - protected static final String NAME_EDEFAULT = null; + protected static final String NAME_EDEFAULT = "\"\""; /** * The cached value of the '{@link #getName() <em>Name</em>}' attribute. diff -r 9219d50ce385 -r d528ddf559d9 plugins/org.eclipse.fordiac.ide.model/src-gen/org/eclipse/fordiac/ide/model/libraryElement/impl/ServiceSequenceImpl.java --- a/plugins/org.eclipse.fordiac.ide.model/src-gen/org/eclipse/fordiac/ide/model/libraryElement/impl/ServiceSequenceImpl.java Mon Aug 21 22:03:44 2017 +0200 +++ b/plugins/org.eclipse.fordiac.ide.model/src-gen/org/eclipse/fordiac/ide/model/libraryElement/impl/ServiceSequenceImpl.java Tue Aug 22 10:18:02 2017 +0200 @@ -52,7 +52,7 @@ * @generated * @ordered */ - protected static final String NAME_EDEFAULT = null; + protected static final String NAME_EDEFAULT = "\"\""; /** * The cached value of the '{@link #getName() <em>Name</em>}' attribute. diff -r 9219d50ce385 -r d528ddf559d9 plugins/org.eclipse.fordiac.ide.model/src-gen/org/eclipse/fordiac/ide/model/libraryElement/impl/VarDeclarationImpl.java --- a/plugins/org.eclipse.fordiac.ide.model/src-gen/org/eclipse/fordiac/ide/model/libraryElement/impl/VarDeclarationImpl.java Mon Aug 21 22:03:44 2017 +0200 +++ b/plugins/org.eclipse.fordiac.ide.model/src-gen/org/eclipse/fordiac/ide/model/libraryElement/impl/VarDeclarationImpl.java Tue Aug 22 10:18:02 2017 +0200 @@ -65,7 +65,7 @@ * @generated * @ordered */ - protected static final String NAME_EDEFAULT = null; + protected static final String NAME_EDEFAULT = "\"\""; /** * The cached value of the '{@link #getName() <em>Name</em>}' attribute. |
From: <for...@li...> - 2017-08-22 08:51:56
|
details: http://fordiac.hg.sourceforge.net/hgweb/fordiac/fordiac-ide/rev/a4c5f7ddbbad changeset: 3065:a4c5f7ddbbad user: Alois Zoitl <alo...@gm...> date: Tue Aug 22 10:48:35 2017 +0200 description: [Bug 521220] Adapter interfaces not stored for untyped subapps Fixed subapp creation so that adapters are correctly inserted into the model. Bug: https://bugs.eclipse.org/bugs/show_bug.cgi?id=521220 Signed-off: alo...@gm... diffstat: plugins/org.eclipse.fordiac.ide.application/src/org/eclipse/fordiac/ide/application/commands/NewSubAppCommand.java | 17 +++++---- 1 files changed, 9 insertions(+), 8 deletions(-) diffs (34 lines): diff -r d528ddf559d9 -r a4c5f7ddbbad plugins/org.eclipse.fordiac.ide.application/src/org/eclipse/fordiac/ide/application/commands/NewSubAppCommand.java --- a/plugins/org.eclipse.fordiac.ide.application/src/org/eclipse/fordiac/ide/application/commands/NewSubAppCommand.java Tue Aug 22 10:18:02 2017 +0200 +++ b/plugins/org.eclipse.fordiac.ide.application/src/org/eclipse/fordiac/ide/application/commands/NewSubAppCommand.java Tue Aug 22 10:48:35 2017 +0200 @@ -230,6 +230,15 @@ getSubApp().getInterface().getEventOutputs().add((Event) newie); } return newie; + } + if(ie instanceof AdapterDeclaration){ + //Currently adapters need to be handled before vars + if(ie.isIsInput()){ + getSubApp().getInterface().getSockets().add((AdapterDeclaration) newie); + }else{ + getSubApp().getInterface().getPlugs().add((AdapterDeclaration) newie); + } + return newie; } if(ie instanceof VarDeclaration){ if(ie.isIsInput()){ @@ -239,14 +248,6 @@ } return newie; } - if(ie instanceof AdapterDeclaration){ - if(ie.isIsInput()){ - getSubApp().getInterface().getSockets().add((AdapterDeclaration) newie); - }else{ - getSubApp().getInterface().getPlugs().add((AdapterDeclaration) newie); - } - return newie; - } }else{ createConnection = false; return getSubApp().getInterfaceElement(newie.getName()); |
From: <for...@li...> - 2017-08-21 20:04:05
|
details: http://fordiac.hg.sourceforge.net/hgweb/fordiac/fordiac-ide/rev/9219d50ce385 changeset: 3063:9219d50ce385 user: Alois Zoitl <alo...@gm...> date: Mon Aug 21 22:03:44 2017 +0200 description: [Bug 521112] Name of Function Blocks are not mirrored between app and resource view Added a change fbnetwork element name command to ahndle this. Bug: https://bugs.eclipse.org/bugs/show_bug.cgi?id=521112 Signed-off: alo...@gm... diffstat: plugins/org.eclipse.fordiac.ide.application/src/org/eclipse/fordiac/ide/application/editparts/AbstractFBNElementEditPart.java | 16 ++ plugins/org.eclipse.fordiac.ide.gef/src/org/eclipse/fordiac/ide/gef/properties/AbstractInterfaceSection.java | 13 ++- plugins/org.eclipse.fordiac.ide.model.commands/src/org/eclipse/fordiac/ide/model/commands/change/ChangeFBNetworkElementName.java | 54 ++++++++++ plugins/org.eclipse.fordiac.ide.model/src/org/eclipse/fordiac/ide/model/NameRepository.java | 2 +- 4 files changed, 82 insertions(+), 3 deletions(-) diffs (155 lines): diff -r fa46c9f6ccd6 -r 9219d50ce385 plugins/org.eclipse.fordiac.ide.application/src/org/eclipse/fordiac/ide/application/editparts/AbstractFBNElementEditPart.java --- a/plugins/org.eclipse.fordiac.ide.application/src/org/eclipse/fordiac/ide/application/editparts/AbstractFBNElementEditPart.java Sun Aug 20 23:54:54 2017 +0200 +++ b/plugins/org.eclipse.fordiac.ide.application/src/org/eclipse/fordiac/ide/application/editparts/AbstractFBNElementEditPart.java Mon Aug 21 22:03:44 2017 +0200 @@ -27,6 +27,8 @@ import org.eclipse.fordiac.ide.gef.editparts.InterfaceEditPart; import org.eclipse.fordiac.ide.gef.editparts.LabelDirectEditManager; import org.eclipse.fordiac.ide.gef.editparts.NameCellEditorLocator; +import org.eclipse.fordiac.ide.gef.policies.AbstractViewRenameEditPolicy; +import org.eclipse.fordiac.ide.model.commands.change.ChangeFBNetworkElementName; import org.eclipse.fordiac.ide.model.libraryElement.Color; import org.eclipse.fordiac.ide.model.libraryElement.Device; import org.eclipse.fordiac.ide.model.libraryElement.FB; @@ -41,7 +43,9 @@ import org.eclipse.gef.EditPart; import org.eclipse.gef.EditPolicy; import org.eclipse.gef.GraphicalEditPart; +import org.eclipse.gef.commands.Command; import org.eclipse.gef.editparts.ZoomManager; +import org.eclipse.gef.requests.DirectEditRequest; import org.eclipse.gef.tools.DirectEditManager; import org.eclipse.jface.util.IPropertyChangeListener; import org.eclipse.jface.util.PropertyChangeEvent; @@ -188,6 +192,18 @@ // Highlight In and Outconnections of the selected fb, allow alignment of FBs installEditPolicy(EditPolicy.SELECTION_FEEDBACK_ROLE, new FBNElementSelectionPolicy()); + + //FBNetwork elements need a special rename command therefore we remove the standard edit policy and add a adjusted one + removeEditPolicy(EditPolicy.DIRECT_EDIT_ROLE); + installEditPolicy(EditPolicy.DIRECT_EDIT_ROLE, new AbstractViewRenameEditPolicy() { + protected Command getDirectEditCommand(DirectEditRequest request) { + if (getHost() instanceof AbstractFBNElementEditPart) { + return new ChangeFBNetworkElementName(((AbstractFBNElementEditPart) getHost()).getModel(), + (String) request.getCellEditor().getValue()); + } + return null; + } + }); } diff -r fa46c9f6ccd6 -r 9219d50ce385 plugins/org.eclipse.fordiac.ide.gef/src/org/eclipse/fordiac/ide/gef/properties/AbstractInterfaceSection.java --- a/plugins/org.eclipse.fordiac.ide.gef/src/org/eclipse/fordiac/ide/gef/properties/AbstractInterfaceSection.java Sun Aug 20 23:54:54 2017 +0200 +++ b/plugins/org.eclipse.fordiac.ide.gef/src/org/eclipse/fordiac/ide/gef/properties/AbstractInterfaceSection.java Mon Aug 21 22:03:44 2017 +0200 @@ -14,6 +14,7 @@ import org.eclipse.core.runtime.Assert; import org.eclipse.fordiac.ide.model.commands.change.ChangeCommentCommand; +import org.eclipse.fordiac.ide.model.commands.change.ChangeFBNetworkElementName; import org.eclipse.fordiac.ide.model.commands.change.ChangeNameCommand; import org.eclipse.fordiac.ide.model.commands.change.ChangeValueCommand; import org.eclipse.fordiac.ide.model.libraryElement.AdapterFB; @@ -93,7 +94,7 @@ nameText.addModifyListener(new ModifyListener() { public void modifyText(final ModifyEvent e) { removeContentAdapter(); - executeCommand(new ChangeNameCommand(getType(), nameText.getText())); + executeCommand(getRenameCommand(nameText.getText())); addContentAdapter(); } }); @@ -173,7 +174,7 @@ }); } - private String getVarDeclarationValue(VarDeclaration v){ + private static String getVarDeclarationValue(VarDeclaration v){ return v.getValue() != null && v.getValue().getValue() != null ? v.getValue().getValue() : ""; //$NON-NLS-1$ } @@ -212,6 +213,14 @@ } } + private ChangeNameCommand getRenameCommand(String newValue) { + INamedElement element = getType(); + if(element instanceof FBNetworkElement) { + return new ChangeFBNetworkElementName((FBNetworkElement) element, newValue); + } + return new ChangeNameCommand(getType(), nameText.getText()); + } + public class InputContentProvider implements IStructuredContentProvider { @Override public Object[] getElements(final Object inputElement) { diff -r fa46c9f6ccd6 -r 9219d50ce385 plugins/org.eclipse.fordiac.ide.model.commands/src/org/eclipse/fordiac/ide/model/commands/change/ChangeFBNetworkElementName.java --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/plugins/org.eclipse.fordiac.ide.model.commands/src/org/eclipse/fordiac/ide/model/commands/change/ChangeFBNetworkElementName.java Mon Aug 21 22:03:44 2017 +0200 @@ -0,0 +1,54 @@ +/******************************************************************************* + * Copyright (c) 2017 fortiss GmbH + * + * All rights reserved. This program and the accompanying materials + * are made available under the terms of the Eclipse Public License v1.0 + * which accompanies this distribution, and is available at + * http://www.eclipse.org/legal/epl-v10.html + * + * Contributors: + * Alois Zoitl + * - initial API and implementation and/or initial documentation + *******************************************************************************/ +package org.eclipse.fordiac.ide.model.commands.change; + +import org.eclipse.fordiac.ide.model.libraryElement.FBNetworkElement; + +public class ChangeFBNetworkElementName extends ChangeNameCommand { + + /* the command for updating the name of the opposite element + * when the FBNetworkelement is mapped + */ + private ChangeNameCommand oppositeChange = null; + + public ChangeFBNetworkElementName(FBNetworkElement element, String name) { + super(element, name); + if(element.isMapped()){ + oppositeChange = new ChangeNameCommand(element.getOpposite(), name); + } + } + + @Override + public void execute() { + super.execute(); + if(null != oppositeChange) { + oppositeChange.execute(); + } + } + + @Override + public void redo() { + super.redo(); + if(null != oppositeChange) { + oppositeChange.redo(); + } + } + + @Override + public void undo() { + super.undo(); + if(null != oppositeChange) { + oppositeChange.undo(); + } + } +} diff -r fa46c9f6ccd6 -r 9219d50ce385 plugins/org.eclipse.fordiac.ide.model/src/org/eclipse/fordiac/ide/model/NameRepository.java --- a/plugins/org.eclipse.fordiac.ide.model/src/org/eclipse/fordiac/ide/model/NameRepository.java Sun Aug 20 23:54:54 2017 +0200 +++ b/plugins/org.eclipse.fordiac.ide.model/src/org/eclipse/fordiac/ide/model/NameRepository.java Mon Aug 21 22:03:44 2017 +0200 @@ -43,7 +43,7 @@ public class NameRepository { - public static final Set<String> RESERVED_KEYWORDS = + private static final Set<String> RESERVED_KEYWORDS = Collections.unmodifiableSet(new HashSet<String>(Arrays.asList(new String[] { "VAR", "END_VAR", "CONSTANT", //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$ "SUPER", "RETURN", //$NON-NLS-1$ //$NON-NLS-2$ |
From: <for...@li...> - 2017-08-20 21:55:15
|
details: http://fordiac.hg.sourceforge.net/hgweb/fordiac/fordiac-ide/rev/fa46c9f6ccd6 changeset: 3062:fa46c9f6ccd6 user: Alois Zoitl <alo...@gm...> date: Sun Aug 20 23:54:54 2017 +0200 description: harmonized look and feal of algorithms and internal vars tab as it felt more natural. diffstat: plugins/org.eclipse.fordiac.ide.fbtypeeditor.ecc/src/org/eclipse/fordiac/ide/fbtypeeditor/ecc/properties/AlgorithmsSection.java | 2 +- plugins/org.eclipse.fordiac.ide.fbtypeeditor.ecc/src/org/eclipse/fordiac/ide/fbtypeeditor/ecc/properties/InternalVarsSection.java | 32 ++++++++- 2 files changed, 29 insertions(+), 5 deletions(-) diffs (85 lines): diff -r deb01318f920 -r fa46c9f6ccd6 plugins/org.eclipse.fordiac.ide.fbtypeeditor.ecc/src/org/eclipse/fordiac/ide/fbtypeeditor/ecc/properties/AlgorithmsSection.java --- a/plugins/org.eclipse.fordiac.ide.fbtypeeditor.ecc/src/org/eclipse/fordiac/ide/fbtypeeditor/ecc/properties/AlgorithmsSection.java Sun Aug 20 23:43:25 2017 +0200 +++ b/plugins/org.eclipse.fordiac.ide.fbtypeeditor.ecc/src/org/eclipse/fordiac/ide/fbtypeeditor/ecc/properties/AlgorithmsSection.java Sun Aug 20 23:54:54 2017 +0200 @@ -155,7 +155,7 @@ }); } - private CellEditor[] createAlgorithmCellEditors(final Table table) { + private static CellEditor[] createAlgorithmCellEditors(final Table table) { TextCellEditor algorithmNameEditor = new TextCellEditor(table); ((Text)algorithmNameEditor.getControl()).addVerifyListener(new IdentifierVerifyListener()); return new CellEditor[] { algorithmNameEditor, diff -r deb01318f920 -r fa46c9f6ccd6 plugins/org.eclipse.fordiac.ide.fbtypeeditor.ecc/src/org/eclipse/fordiac/ide/fbtypeeditor/ecc/properties/InternalVarsSection.java --- a/plugins/org.eclipse.fordiac.ide.fbtypeeditor.ecc/src/org/eclipse/fordiac/ide/fbtypeeditor/ecc/properties/InternalVarsSection.java Sun Aug 20 23:43:25 2017 +0200 +++ b/plugins/org.eclipse.fordiac.ide.fbtypeeditor.ecc/src/org/eclipse/fordiac/ide/fbtypeeditor/ecc/properties/InternalVarsSection.java Sun Aug 20 23:54:54 2017 +0200 @@ -30,7 +30,9 @@ import org.eclipse.jface.viewers.ColumnWeightData; import org.eclipse.jface.viewers.ComboBoxCellEditor; import org.eclipse.jface.viewers.ICellModifier; +import org.eclipse.jface.viewers.ISelectionChangedListener; import org.eclipse.jface.viewers.IStructuredSelection; +import org.eclipse.jface.viewers.SelectionChangedEvent; import org.eclipse.jface.viewers.TableLayout; import org.eclipse.jface.viewers.TableViewer; import org.eclipse.jface.viewers.TextCellEditor; @@ -72,6 +74,8 @@ Composite composite = getWidgetFactory().createComposite(parent); composite.setLayout(new GridLayout(2, false)); composite.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true)); + + createAddDelteButtons(composite); internalVarsViewer = new TableViewer(composite, SWT.FULL_SELECTION | SWT.BORDER | SWT.V_SCROLL); GridData gridDataVersionViewer = new GridData(GridData.FILL, GridData.FILL, true, true); @@ -150,10 +154,23 @@ internalVarsViewer.refresh(data); } } - }); + }); + + internalVarsViewer.addSelectionChangedListener(new ISelectionChangedListener() { + @Override + public void selectionChanged(SelectionChangedEvent event) { + setInternalVarsDeleteState(null != event.getStructuredSelection().getFirstElement()); + } + }); + + } + + private void createAddDelteButtons(Composite composite) { Composite buttonComp = new Composite(composite, SWT.NONE); + GridData buttonCompLayoutData = new GridData(SWT.CENTER, SWT.TOP, false, false); + buttonComp.setLayoutData(buttonCompLayoutData); buttonComp.setLayout(new FillLayout(SWT.VERTICAL)); - internalVarsNew = getWidgetFactory().createButton(buttonComp, "New", SWT.PUSH); + internalVarsNew = getWidgetFactory().createButton(buttonComp, "", SWT.PUSH); //$NON-NLS-1$ internalVarsNew.setImage(PlatformUI.getWorkbench().getSharedImages().getImage(ISharedImages.IMG_OBJ_ADD)); internalVarsNew.addSelectionListener(new SelectionAdapter() { @Override @@ -162,8 +179,8 @@ internalVarsViewer.refresh(); } }); - internalVarsDelete = getWidgetFactory().createButton(buttonComp, "Delete", SWT.PUSH); - internalVarsDelete.setImage(PlatformUI.getWorkbench().getSharedImages().getImage(ISharedImages.IMG_TOOL_DELETE)); + internalVarsDelete = getWidgetFactory().createButton(buttonComp, "", SWT.PUSH); //$NON-NLS-1$ + setInternalVarsDeleteState(false); internalVarsDelete.addSelectionListener(new SelectionAdapter() { @Override public void widgetSelected(final SelectionEvent e) { @@ -172,6 +189,13 @@ } }); } + + private void setInternalVarsDeleteState(boolean enabled) { + internalVarsDelete.setEnabled(enabled); + internalVarsDelete.setImage((enabled) ? + PlatformUI.getWorkbench().getSharedImages().getImage(ISharedImages.IMG_TOOL_DELETE) : + PlatformUI.getWorkbench().getSharedImages().getImage(ISharedImages.IMG_TOOL_DELETE_DISABLED)); + } private CellEditor[] createCellEditors(final Table table) { TextCellEditor varNameEditor = new TextCellEditor(table); |
From: <for...@li...> - 2017-08-20 21:55:15
|
details: http://fordiac.hg.sourceforge.net/hgweb/fordiac/fordiac-ide/rev/deb01318f920 changeset: 3061:deb01318f920 user: Alois Zoitl <alo...@gm...> date: Sun Aug 20 23:43:25 2017 +0200 description: [Bug 517856] Segments not named correctly on create Applied new name cecking and unique name generation to all suitable named elements. Bug: https://bugs.eclipse.org/bugs/show_bug.cgi?id=517856 Signed-off: alo...@gm... diffstat: plugins/org.eclipse.fordiac.ide.application/src/org/eclipse/fordiac/ide/application/commands/PasteCommand.java | 8 +- plugins/org.eclipse.fordiac.ide.comgeneration/src/org/eclipse/fordiac/ide/comgeneration/implementation/CommFBGenerator.java | 3 +- plugins/org.eclipse.fordiac.ide.fbtypeeditor.ecc/src/org/eclipse/fordiac/ide/fbtypeeditor/ecc/commands/CreateAlgorithmCommand.java | 2 +- plugins/org.eclipse.fordiac.ide.fbtypeeditor.ecc/src/org/eclipse/fordiac/ide/fbtypeeditor/ecc/commands/CreateECStateCommand.java | 3 +- plugins/org.eclipse.fordiac.ide.fbtypeeditor.ecc/src/org/eclipse/fordiac/ide/fbtypeeditor/ecc/commands/CreateInternalVariableCommand.java | 11 +- plugins/org.eclipse.fordiac.ide.model.commands/src/org/eclipse/fordiac/ide/model/commands/create/AbstractCreateFBNetworkElementCommand.java | 4 +- plugins/org.eclipse.fordiac.ide.model.commands/src/org/eclipse/fordiac/ide/model/commands/create/CreateInterfaceElementCommand.java | 2 +- plugins/org.eclipse.fordiac.ide.model/src-gen/org/eclipse/fordiac/ide/model/libraryElement/impl/DeviceImpl.java | 5 +- plugins/org.eclipse.fordiac.ide.model/src-gen/org/eclipse/fordiac/ide/model/libraryElement/impl/ECStateImpl.java | 3 - plugins/org.eclipse.fordiac.ide.model/src-gen/org/eclipse/fordiac/ide/model/libraryElement/impl/FBImpl.java | 9 +- plugins/org.eclipse.fordiac.ide.model/src-gen/org/eclipse/fordiac/ide/model/libraryElement/impl/ResourceImpl.java | 2 +- plugins/org.eclipse.fordiac.ide.model/src/org/eclipse/fordiac/ide/model/NameRepository.java | 134 +--------- plugins/org.eclipse.fordiac.ide.systemconfiguration/src/org/eclipse/fordiac/ide/systemconfiguration/commands/DeviceCreateCommand.java | 3 +- plugins/org.eclipse.fordiac.ide.systemconfiguration/src/org/eclipse/fordiac/ide/systemconfiguration/commands/ResourceCreateCommand.java | 7 +- plugins/org.eclipse.fordiac.ide.systemmanagement.ui/src/org/eclipse/fordiac/ide/systemmanagement/ui/handlers/RenameApplication.java | 3 +- plugins/org.eclipse.fordiac.ide.systemmanagement/src/org/eclipse/fordiac/ide/systemmanagement/SystemManager.java | 13 +- 16 files changed, 37 insertions(+), 175 deletions(-) diffs (484 lines): diff -r 9367900f52d4 -r deb01318f920 plugins/org.eclipse.fordiac.ide.application/src/org/eclipse/fordiac/ide/application/commands/PasteCommand.java --- a/plugins/org.eclipse.fordiac.ide.application/src/org/eclipse/fordiac/ide/application/commands/PasteCommand.java Sun Aug 20 22:44:00 2017 +0200 +++ b/plugins/org.eclipse.fordiac.ide.application/src/org/eclipse/fordiac/ide/application/commands/PasteCommand.java Sun Aug 20 23:43:25 2017 +0200 @@ -127,8 +127,9 @@ for (FBNetworkElement element : elementsToCopy) { FBNetworkElement copiedElement = createElementCopyFB(element); copiedElements.put(element.getName(), copiedElement); + destination.getNetworkElements().add(copiedElement); + copiedElement.setName(NameRepository.createUniqueName(copiedElement, element.getName())); } - destination.getNetworkElements().addAll(copiedElements.values()); } private FBNetworkElement createElementCopyFB(FBNetworkElement element) { @@ -141,11 +142,6 @@ ie.getOutputConnections().clear(); } } - - String name = element.getName(); - name = NameRepository.getFBNetworkUniqueFBNetworkElementInstanceName(destination, name); - copiedElement.setName(name); - Point pastePos = calculatePastePos(element); copiedElement.setX(pastePos.x); copiedElement.setY(pastePos.y); diff -r 9367900f52d4 -r deb01318f920 plugins/org.eclipse.fordiac.ide.comgeneration/src/org/eclipse/fordiac/ide/comgeneration/implementation/CommFBGenerator.java --- a/plugins/org.eclipse.fordiac.ide.comgeneration/src/org/eclipse/fordiac/ide/comgeneration/implementation/CommFBGenerator.java Sun Aug 20 22:44:00 2017 +0200 +++ b/plugins/org.eclipse.fordiac.ide.comgeneration/src/org/eclipse/fordiac/ide/comgeneration/implementation/CommFBGenerator.java Sun Aug 20 23:43:25 2017 +0200 @@ -124,8 +124,7 @@ //FBView generateFbView = ApplicationUIFBNetworkManager.createFBView(generatedFB, /*destinationDiagram.getNetwork()*/ null); //destinationDiagram.getChildren().add(generateFbView); //generatedFB.setName("GENERATED_" + generatedFBIndex); - String name = NameRepository.getUniqueResourceInstanceName(resource, "GENERATED_" + generatedFBIndex); - generatedFB.setName(name); + generatedFB.setName(NameRepository.createUniqueName(generatedFB, "GENERATED_" + generatedFBIndex)); //$NON-NLS-1$ generatedFBIndex++; StringBuilder newFBComment = new StringBuilder(); newFBComment.append(GENERATED_ANNOTATION); diff -r 9367900f52d4 -r deb01318f920 plugins/org.eclipse.fordiac.ide.fbtypeeditor.ecc/src/org/eclipse/fordiac/ide/fbtypeeditor/ecc/commands/CreateAlgorithmCommand.java --- a/plugins/org.eclipse.fordiac.ide.fbtypeeditor.ecc/src/org/eclipse/fordiac/ide/fbtypeeditor/ecc/commands/CreateAlgorithmCommand.java Sun Aug 20 22:44:00 2017 +0200 +++ b/plugins/org.eclipse.fordiac.ide.fbtypeeditor.ecc/src/org/eclipse/fordiac/ide/fbtypeeditor/ecc/commands/CreateAlgorithmCommand.java Sun Aug 20 23:43:25 2017 +0200 @@ -45,10 +45,10 @@ oldAlgorithm = action.getAlgorithm(); } newAlgorithm = LibraryElementFactory.eINSTANCE.createSTAlgorithm(); - newAlgorithm.setName(NameRepository.getUniqueAlgorithmName(newAlgorithm, fbType, "ALG")); //$NON-NLS-1$ newAlgorithm.setComment("new algorithm"); //$NON-NLS-1$ newAlgorithm.setText(""); //especially the xtext editor requires at least an empty algorithm text //$NON-NLS-1$ redo(); + newAlgorithm.setName(NameRepository.createUniqueName(newAlgorithm, "ALG")); //$NON-NLS-1$ } @Override diff -r 9367900f52d4 -r deb01318f920 plugins/org.eclipse.fordiac.ide.fbtypeeditor.ecc/src/org/eclipse/fordiac/ide/fbtypeeditor/ecc/commands/CreateECStateCommand.java --- a/plugins/org.eclipse.fordiac.ide.fbtypeeditor.ecc/src/org/eclipse/fordiac/ide/fbtypeeditor/ecc/commands/CreateECStateCommand.java Sun Aug 20 22:44:00 2017 +0200 +++ b/plugins/org.eclipse.fordiac.ide.fbtypeeditor.ecc/src/org/eclipse/fordiac/ide/fbtypeeditor/ecc/commands/CreateECStateCommand.java Sun Aug 20 23:43:25 2017 +0200 @@ -56,12 +56,11 @@ public void execute() { ecState.setX(location.x); ecState.setY(location.y); - ecState.setName(NameRepository.getUniqueECCStateName(ecState, parent, ecState.getName())); if (parent.getECState().size() == 0) { parent.setStart(ecState); } parent.getECState().add(ecState); - + ecState.setName(NameRepository.createUniqueName(ecState, ecState.getName())); } /* diff -r 9367900f52d4 -r deb01318f920 plugins/org.eclipse.fordiac.ide.fbtypeeditor.ecc/src/org/eclipse/fordiac/ide/fbtypeeditor/ecc/commands/CreateInternalVariableCommand.java --- a/plugins/org.eclipse.fordiac.ide.fbtypeeditor.ecc/src/org/eclipse/fordiac/ide/fbtypeeditor/ecc/commands/CreateInternalVariableCommand.java Sun Aug 20 22:44:00 2017 +0200 +++ b/plugins/org.eclipse.fordiac.ide.fbtypeeditor.ecc/src/org/eclipse/fordiac/ide/fbtypeeditor/ecc/commands/CreateInternalVariableCommand.java Sun Aug 20 23:43:25 2017 +0200 @@ -45,7 +45,7 @@ * the fb type */ public CreateInternalVariableCommand(final BasicFBType fbType) { - this.dataType = DataTypeLibrary.getInstance().getType("BOOL"); + this.dataType = DataTypeLibrary.getInstance().getType("BOOL"); //$NON-NLS-1$ this.fbType = fbType; } @@ -59,18 +59,17 @@ public void execute() { varDecl = LibraryElementFactory.eINSTANCE.createVarDeclaration(); varDecl.setType(dataType); - String name = NameRepository.getUniqueInterfaceElementName(varDecl, fbType, "INTERNALVAR"); - varDecl.setName(name); varDecl.setTypeName(dataType.getName()); - varDecl.setComment("Internal Variable"); + varDecl.setComment("Internal Variable"); //$NON-NLS-1$ varDecl.setArraySize(0); VarInitialization varInitialization = DataFactory.eINSTANCE.createVarInitialization(); - varInitialization.setInitialValue(""); + varInitialization.setInitialValue(""); //$NON-NLS-1$ varDecl.setVarInitialization(varInitialization); Value value = LibraryElementFactory.eINSTANCE.createValue(); - value.setValue(""); + value.setValue(""); //$NON-NLS-1$ varDecl.setValue(value); redo(); + varDecl.setName(NameRepository.createUniqueName(varDecl, "INTERNALVAR")); //$NON-NLS-1$ } /* diff -r 9367900f52d4 -r deb01318f920 plugins/org.eclipse.fordiac.ide.model.commands/src/org/eclipse/fordiac/ide/model/commands/create/AbstractCreateFBNetworkElementCommand.java --- a/plugins/org.eclipse.fordiac.ide.model.commands/src/org/eclipse/fordiac/ide/model/commands/create/AbstractCreateFBNetworkElementCommand.java Sun Aug 20 22:44:00 2017 +0200 +++ b/plugins/org.eclipse.fordiac.ide.model.commands/src/org/eclipse/fordiac/ide/model/commands/create/AbstractCreateFBNetworkElementCommand.java Sun Aug 20 23:43:25 2017 +0200 @@ -56,14 +56,12 @@ element.setY(y); createValues(); redo(); + element.setName(NameRepository.createUniqueName(element, getInitalInstanceName())); } @Override public void redo() { - String name = NameRepository.getFBNetworkUniqueFBNetworkElementInstanceName(fbNetwork, getInitalInstanceName()); - //this has to be done before the name is set in order to avoid problems in the name setting fbNetwork.getNetworkElements().add(element); - element.setName(name); } @Override diff -r 9367900f52d4 -r deb01318f920 plugins/org.eclipse.fordiac.ide.model.commands/src/org/eclipse/fordiac/ide/model/commands/create/CreateInterfaceElementCommand.java --- a/plugins/org.eclipse.fordiac.ide.model.commands/src/org/eclipse/fordiac/ide/model/commands/create/CreateInterfaceElementCommand.java Sun Aug 20 22:44:00 2017 +0200 +++ b/plugins/org.eclipse.fordiac.ide.model.commands/src/org/eclipse/fordiac/ide/model/commands/create/CreateInterfaceElementCommand.java Sun Aug 20 23:43:25 2017 +0200 @@ -85,7 +85,6 @@ } } setInterfaces(interfaceList); - interfaceElement.setName(NameRepository.getUniqueInterfaceElementName(interfaceElement, interfaceList, null == name || name.isEmpty() ? dataType.getName() : name)); interfaceElement.setIsInput(isInput); interfaceElement.setType(dataType); interfaceElement.setTypeName(dataType.getName()); @@ -94,6 +93,7 @@ cmd = new AdapterCreateCommand(10, 10, (AdapterDeclaration) interfaceElement, (CompositeFBType)interfaceList.eContainer()); } redo(); + interfaceElement.setName(NameRepository.createUniqueName(interfaceElement, null == name || name.isEmpty() ? dataType.getName() : name)); } @Override diff -r 9367900f52d4 -r deb01318f920 plugins/org.eclipse.fordiac.ide.model/src-gen/org/eclipse/fordiac/ide/model/libraryElement/impl/DeviceImpl.java --- a/plugins/org.eclipse.fordiac.ide.model/src-gen/org/eclipse/fordiac/ide/model/libraryElement/impl/DeviceImpl.java Sun Aug 20 22:44:00 2017 +0200 +++ b/plugins/org.eclipse.fordiac.ide.model/src-gen/org/eclipse/fordiac/ide/model/libraryElement/impl/DeviceImpl.java Sun Aug 20 23:43:25 2017 +0200 @@ -636,10 +636,7 @@ return; } String oldName = name; - - //TODO consider moving this to a rename device command, however then also the device create command needs to be adjusted - name = NameRepository.getUniqueDeviceInstanceName(this, newName); - + name = newName; NameRepository.checkNameIdentifier(this); if (eNotificationRequired()) { diff -r 9367900f52d4 -r deb01318f920 plugins/org.eclipse.fordiac.ide.model/src-gen/org/eclipse/fordiac/ide/model/libraryElement/impl/ECStateImpl.java --- a/plugins/org.eclipse.fordiac.ide.model/src-gen/org/eclipse/fordiac/ide/model/libraryElement/impl/ECStateImpl.java Sun Aug 20 22:44:00 2017 +0200 +++ b/plugins/org.eclipse.fordiac.ide.model/src-gen/org/eclipse/fordiac/ide/model/libraryElement/impl/ECStateImpl.java Sun Aug 20 23:43:25 2017 +0200 @@ -265,9 +265,6 @@ Boolean differentName = true; if (oldName != null) { differentName = !oldName.equals(name); - if((differentName) && eContainer() instanceof ECC) { - name = NameRepository.getUniqueECCStateName(this, (ECC) eContainer(), name); - } } if(differentName){ diff -r 9367900f52d4 -r deb01318f920 plugins/org.eclipse.fordiac.ide.model/src-gen/org/eclipse/fordiac/ide/model/libraryElement/impl/FBImpl.java --- a/plugins/org.eclipse.fordiac.ide.model/src-gen/org/eclipse/fordiac/ide/model/libraryElement/impl/FBImpl.java Sun Aug 20 22:44:00 2017 +0200 +++ b/plugins/org.eclipse.fordiac.ide.model/src-gen/org/eclipse/fordiac/ide/model/libraryElement/impl/FBImpl.java Sun Aug 20 23:43:25 2017 +0200 @@ -90,14 +90,7 @@ getAnnotations().clear(); NameRepository.checkNameIdentifier(this); - - // unique check needs to be before sending the notification in order - // that the annotations are correctly displayed in the graphical editors - if (!NameRepository.isFBNetworkUniqueFBInstanceName(this)) { - Annotation ano = createAnnotation("FB Name not Unique"); - ano.setServity(2); // 2 means error! - } - + if (eNotificationRequired()) eNotify(new ENotificationImpl(this, Notification.SET, LibraryElementPackage.CONFIGURABLE_OBJECT__NAME, oldName, name)); } diff -r 9367900f52d4 -r deb01318f920 plugins/org.eclipse.fordiac.ide.model/src-gen/org/eclipse/fordiac/ide/model/libraryElement/impl/ResourceImpl.java --- a/plugins/org.eclipse.fordiac.ide.model/src-gen/org/eclipse/fordiac/ide/model/libraryElement/impl/ResourceImpl.java Sun Aug 20 22:44:00 2017 +0200 +++ b/plugins/org.eclipse.fordiac.ide.model/src-gen/org/eclipse/fordiac/ide/model/libraryElement/impl/ResourceImpl.java Sun Aug 20 23:43:25 2017 +0200 @@ -520,7 +520,7 @@ } String oldName = name; - name = NameRepository.getUniqueResourceInstanceName(this, newName); + name = newName; NameRepository.checkNameIdentifier(this); diff -r 9367900f52d4 -r deb01318f920 plugins/org.eclipse.fordiac.ide.model/src/org/eclipse/fordiac/ide/model/NameRepository.java --- a/plugins/org.eclipse.fordiac.ide.model/src/org/eclipse/fordiac/ide/model/NameRepository.java Sun Aug 20 22:44:00 2017 +0200 +++ b/plugins/org.eclipse.fordiac.ide.model/src/org/eclipse/fordiac/ide/model/NameRepository.java Sun Aug 20 23:43:25 2017 +0200 @@ -13,7 +13,6 @@ package org.eclipse.fordiac.ide.model; import java.text.MessageFormat; -import java.util.ArrayList; import java.util.Arrays; import java.util.Collections; import java.util.HashSet; @@ -31,10 +30,7 @@ import org.eclipse.fordiac.ide.model.libraryElement.Device; import org.eclipse.fordiac.ide.model.libraryElement.ECC; import org.eclipse.fordiac.ide.model.libraryElement.ECState; -import org.eclipse.fordiac.ide.model.libraryElement.FB; -import org.eclipse.fordiac.ide.model.libraryElement.FBNetwork; import org.eclipse.fordiac.ide.model.libraryElement.FBNetworkElement; -import org.eclipse.fordiac.ide.model.libraryElement.FBType; import org.eclipse.fordiac.ide.model.libraryElement.IInterfaceElement; import org.eclipse.fordiac.ide.model.libraryElement.INamedElement; import org.eclipse.fordiac.ide.model.libraryElement.InterfaceList; @@ -151,7 +147,13 @@ elementsList = ((ECC)((ECState)refElement).eContainer()).getECState(); } else if(refElement instanceof IInterfaceElement) { EList<INamedElement> elements = new BasicEList<INamedElement>(); - InterfaceList interfaceList = (InterfaceList)((IInterfaceElement)refElement).eContainer(); + InterfaceList interfaceList = null; + if(((IInterfaceElement)refElement).eContainer() instanceof InterfaceList) { + interfaceList = (InterfaceList)((IInterfaceElement)refElement).eContainer(); + } else { + //this is an internal variable + interfaceList = ((BasicFBType)((IInterfaceElement)refElement).eContainer()).getInterfaceList(); + } elements.addAll(interfaceList.getAllInterfaceElements()); if(interfaceList.eContainer() instanceof BasicFBType){ elements.addAll(((BasicFBType)interfaceList.eContainer()).getInternalVars()); @@ -164,28 +166,6 @@ return elementsList.stream().filter(element -> element != refElement).map(element -> element.getName()).collect(Collectors.toSet()); } - - /** - * Checks whether the instance name is unique in the fb network it is contained in - * - * @param fb - * @return - */ - public static boolean isFBNetworkUniqueFBInstanceName(FB fb) { - boolean retVal = true; - if (fb != null) { - FBNetwork fbn = fb.getFbNetwork(); - if(null != fbn){ - for (FBNetworkElement element : fbn.getNetworkElements()) { - if((!element.equals(fb)) && (element.getName().equals(fb.getName()))){ - retVal = false; - break; - } - } - } - } - return retVal; - } /** Generating a unique name for a name proposal which is definitely not in the list of given existing names * @@ -207,102 +187,6 @@ return temp; } - - - /** - * Returns a unique Instance name for a FB network - * - * - * @param fbn the fbnetwork where the unique names should be searched for. - * @param nameProposal the proposal for the new name - * @return - */ - public static String getFBNetworkUniqueFBNetworkElementInstanceName( - FBNetwork fbn, String nameProposal) { - if (fbn != null) { - //TODO consider to also add the referenced FB here so that the old name is not considered - Set<String> uniqueNames = getNameList(null, fbn.getNetworkElements()); - return getUniqueName(uniqueNames, nameProposal); - } - return nameProposal; - } - - public static String getResourceUniqueFBInstanceName(final Resource resourceUT, final String name) { - Set<String> resourceNames = getNameList(resourceUT, resourceUT.getFBNetwork().getNetworkElements()); - return getUniqueName(resourceNames, name); - } - - public static String getUniqueResourceInstanceName(final Resource resourceUT, final String name) { - if(null != resourceUT.eContainer()){ - Set<String> resourceNames = getNameList(resourceUT,resourceUT.getDevice().getResource()); - return getUniqueName(resourceNames, name); - } - return name; - } - - public static String getUniqueDeviceInstanceName(final Device deviceUT, final String name) { - if(null != deviceUT.eContainer()){ - Set<String> deviceNames = getNameList(deviceUT, deviceUT.getAutomationSystem().getSystemConfiguration().getDevices()); - return getUniqueName(deviceNames, name); - } - return name; - } - - public static String getUniqueECCStateName(ECState state, ECC ecc, String name) { - Set<String> stateNames = getNameList(state, ecc.getECState()); - return getUniqueName(stateNames, name); - } - - public static String getUniqueInterfaceElementName(IInterfaceElement iElement, InterfaceList interfaceList, String name) { - ArrayList<INamedElement> elements = new ArrayList<INamedElement>(); - elements.addAll(interfaceList.getAllInterfaceElements()); - String retVal = checkReservedKeyWords(name); - int i = 1; - while (!isUnique(iElement, retVal, elements)) { - retVal = name + i; - i++; - } - return retVal; - } - - public static String getUniqueInterfaceElementName(IInterfaceElement iElement, FBType fbType, String name) { - ArrayList<INamedElement> elements = new ArrayList<INamedElement>(); - elements.addAll(fbType.getInterfaceList().getAllInterfaceElements()); - if(fbType instanceof BasicFBType){ - elements.addAll(((BasicFBType)fbType).getInternalVars()); - } - String retVal = checkReservedKeyWords(name); - int i = 1; - while (!isUnique(iElement, retVal, elements)) { - retVal = name + i; - i++; - } - return retVal; - } - - public static String getUniqueAlgorithmName(Algorithm algorithm, BasicFBType fbType, String name){ - ArrayList<INamedElement> elements = new ArrayList<INamedElement>(); - elements.addAll(fbType.getAlgorithm()); - - String retVal = name; - int i = 1; - while (!isUnique(algorithm, retVal, elements)) { - retVal = name + i; - i++; - } - return retVal; - } - - private static boolean isUnique(INamedElement iElement, String name, ArrayList<INamedElement> elements) { - for (INamedElement element : elements) { - if (!element.equals(iElement) && element.getName() - .toUpperCase().equals(name.toUpperCase())) { - return false; - } - } - return true; - } - private static String checkReservedKeyWords(String name) { if(RESERVED_KEYWORDS.contains(name.toUpperCase())) { return name + "1"; //$NON-NLS-1$ @@ -315,8 +199,4 @@ return name; } - private static Set<String> getNameList(INamedElement refElement, EList<?extends INamedElement> elementsList){ - return elementsList.stream().filter(element -> element != refElement).map(element -> element.getName()).collect(Collectors.toSet()); - } - } diff -r 9367900f52d4 -r deb01318f920 plugins/org.eclipse.fordiac.ide.systemconfiguration/src/org/eclipse/fordiac/ide/systemconfiguration/commands/DeviceCreateCommand.java --- a/plugins/org.eclipse.fordiac.ide.systemconfiguration/src/org/eclipse/fordiac/ide/systemconfiguration/commands/DeviceCreateCommand.java Sun Aug 20 22:44:00 2017 +0200 +++ b/plugins/org.eclipse.fordiac.ide.systemconfiguration/src/org/eclipse/fordiac/ide/systemconfiguration/commands/DeviceCreateCommand.java Sun Aug 20 23:43:25 2017 +0200 @@ -16,6 +16,7 @@ import java.util.List; import org.eclipse.draw2d.geometry.Rectangle; +import org.eclipse.fordiac.ide.model.NameRepository; import org.eclipse.fordiac.ide.model.Palette.DeviceTypePaletteEntry; import org.eclipse.fordiac.ide.model.Palette.ResourceTypeEntry; import org.eclipse.fordiac.ide.model.dataimport.SystemImporter; @@ -79,7 +80,7 @@ parent.getDevices().add(device); // the name needs to be set after the device is added to the network // so that name checking works correctly - device.setName(entry.getDeviceType().getName()); + device.setName(NameRepository.createUniqueName(device, entry.getDeviceType().getName())); createResource(); ResourceCreateCommand cmd = null; if (device.getType().getName().contains("FBRT") //$NON-NLS-1$ diff -r 9367900f52d4 -r deb01318f920 plugins/org.eclipse.fordiac.ide.systemconfiguration/src/org/eclipse/fordiac/ide/systemconfiguration/commands/ResourceCreateCommand.java --- a/plugins/org.eclipse.fordiac.ide.systemconfiguration/src/org/eclipse/fordiac/ide/systemconfiguration/commands/ResourceCreateCommand.java Sun Aug 20 22:44:00 2017 +0200 +++ b/plugins/org.eclipse.fordiac.ide.systemconfiguration/src/org/eclipse/fordiac/ide/systemconfiguration/commands/ResourceCreateCommand.java Sun Aug 20 23:43:25 2017 +0200 @@ -15,6 +15,7 @@ import java.util.Hashtable; import org.eclipse.emf.ecore.util.EcoreUtil; +import org.eclipse.fordiac.ide.model.NameRepository; import org.eclipse.fordiac.ide.model.Palette.ResourceTypeEntry; import org.eclipse.fordiac.ide.model.libraryElement.DataConnection; import org.eclipse.fordiac.ide.model.libraryElement.Device; @@ -82,10 +83,8 @@ index = device.getResource().size(); } device.getResource().add(index, resource); - resource.setName(entry.getLabel()); // resource name needs to be added - // after it is inserted in the - // device so that name checking - // works + // resource name needs to be added after it is inserted in the device so that name checking works + resource.setName(NameRepository.createUniqueName(resource, entry.getLabel())); SystemManager.INSTANCE.notifyListeners(); } diff -r 9367900f52d4 -r deb01318f920 plugins/org.eclipse.fordiac.ide.systemmanagement.ui/src/org/eclipse/fordiac/ide/systemmanagement/ui/handlers/RenameApplication.java --- a/plugins/org.eclipse.fordiac.ide.systemmanagement.ui/src/org/eclipse/fordiac/ide/systemmanagement/ui/handlers/RenameApplication.java Sun Aug 20 22:44:00 2017 +0200 +++ b/plugins/org.eclipse.fordiac.ide.systemmanagement.ui/src/org/eclipse/fordiac/ide/systemmanagement/ui/handlers/RenameApplication.java Sun Aug 20 23:43:25 2017 +0200 @@ -15,6 +15,7 @@ import org.eclipse.core.commands.AbstractHandler; import org.eclipse.core.commands.ExecutionEvent; import org.eclipse.core.commands.ExecutionException; +import org.eclipse.fordiac.ide.model.NameRepository; import org.eclipse.fordiac.ide.model.commands.change.ChangeNameCommand; import org.eclipse.fordiac.ide.model.libraryElement.Application; import org.eclipse.fordiac.ide.systemmanagement.SystemManager; @@ -58,7 +59,7 @@ if(application.getName().equals(newText)){ return new String("Application name not different!"); } - if (!SystemManager.isValidAppName(newText, application.getAutomationSystem())) { + if (!NameRepository.isValidName(application, newText)) { return Messages.NewApplicationPage_ErrorMessageInvalidAppName; } return null; diff -r 9367900f52d4 -r deb01318f920 plugins/org.eclipse.fordiac.ide.systemmanagement/src/org/eclipse/fordiac/ide/systemmanagement/SystemManager.java --- a/plugins/org.eclipse.fordiac.ide.systemmanagement/src/org/eclipse/fordiac/ide/systemmanagement/SystemManager.java Sun Aug 20 22:44:00 2017 +0200 +++ b/plugins/org.eclipse.fordiac.ide.systemmanagement/src/org/eclipse/fordiac/ide/systemmanagement/SystemManager.java Sun Aug 20 23:43:25 2017 +0200 @@ -41,6 +41,7 @@ import org.eclipse.core.runtime.NullProgressMonitor; import org.eclipse.core.runtime.Platform; import org.eclipse.emf.common.util.EList; +import org.eclipse.fordiac.ide.model.IdentifierVerifyer; import org.eclipse.fordiac.ide.model.NamedElementComparator; import org.eclipse.fordiac.ide.model.Palette.Palette; import org.eclipse.fordiac.ide.model.dataexport.SystemExporter; @@ -436,20 +437,22 @@ /** * Checks if is valid app name. * - * @param text - * the text + * @param appNameProposal the proposed new name for the application * @param selectedSystem * the selected system * * @return true, if is valid app name */ - public static boolean isValidAppName(final String text, final AutomationSystem selectedSystem) { + public static boolean isValidAppName(final String appNameProposal, final AutomationSystem selectedSystem) { + if(!IdentifierVerifyer.isValidIdentifier(appNameProposal)){ + return false; + } for (Application app : selectedSystem.getApplication()){ - if (text.equalsIgnoreCase(app.getName())) { + if (appNameProposal.equalsIgnoreCase(app.getName())) { return false; } } - if (selectedSystem.getName().equals(text)) { + if (selectedSystem.getName().equals(appNameProposal)) { return false; } return true; |
From: <for...@li...> - 2017-08-20 21:55:14
|
details: http://fordiac.hg.sourceforge.net/hgweb/fordiac/fordiac-ide/rev/88cc5d7efa01 changeset: 3059:88cc5d7efa01 user: Alois Zoitl <alo...@gm...> date: Sun Aug 20 22:15:43 2017 +0200 description: [Bug 517856] Segments not named correctly on create A first fix that will correctly name semgents on creation. As part of this fix the name checking and creation has been reworked. Needs to be applied to all object creations as well as to renaming. Bug: https://bugs.eclipse.org/bugs/show_bug.cgi?id=517856 Signed-off: alo...@gm... diffstat: plugins/org.eclipse.fordiac.ide.model/src/org/eclipse/fordiac/ide/model/NameRepository.java | 85 ++++++++- plugins/org.eclipse.fordiac.ide.systemconfiguration/src/org/eclipse/fordiac/ide/systemconfiguration/commands/SegmentCreateCommand.java | 3 +- 2 files changed, 73 insertions(+), 15 deletions(-) diffs (186 lines): diff -r b3df33bce060 -r 88cc5d7efa01 plugins/org.eclipse.fordiac.ide.model/src/org/eclipse/fordiac/ide/model/NameRepository.java --- a/plugins/org.eclipse.fordiac.ide.model/src/org/eclipse/fordiac/ide/model/NameRepository.java Thu Aug 10 09:55:14 2017 +0200 +++ b/plugins/org.eclipse.fordiac.ide.model/src/org/eclipse/fordiac/ide/model/NameRepository.java Sun Aug 20 22:15:43 2017 +0200 @@ -17,12 +17,16 @@ import java.util.Collections; import java.util.HashSet; import java.util.Set; +import java.util.stream.Collectors; +import org.eclipse.core.runtime.Assert; +import org.eclipse.emf.common.util.BasicEList; import org.eclipse.emf.common.util.EList; import org.eclipse.emf.ecore.EObject; import org.eclipse.fordiac.ide.model.data.DataType; import org.eclipse.fordiac.ide.model.libraryElement.Algorithm; import org.eclipse.fordiac.ide.model.libraryElement.Annotation; +import org.eclipse.fordiac.ide.model.libraryElement.Application; import org.eclipse.fordiac.ide.model.libraryElement.BasicFBType; import org.eclipse.fordiac.ide.model.libraryElement.Device; import org.eclipse.fordiac.ide.model.libraryElement.ECC; @@ -35,7 +39,9 @@ import org.eclipse.fordiac.ide.model.libraryElement.INamedElement; import org.eclipse.fordiac.ide.model.libraryElement.InterfaceList; import org.eclipse.fordiac.ide.model.libraryElement.Resource; +import org.eclipse.fordiac.ide.model.libraryElement.Segment; import org.eclipse.fordiac.ide.model.libraryElement.SubApp; +import org.eclipse.fordiac.ide.model.libraryElement.SystemConfiguration; import org.eclipse.fordiac.ide.model.typelibrary.DataTypeLibrary; public class NameRepository { @@ -76,6 +82,63 @@ } } + /** Check and if necessary adapt the given name proposal so that it is a valid name for the given INamedElement + * + * This method expects that the element is already correctly inserted in the model and that its eContainer returns the correct container. + * The nameProposal needs to be a valid identifier + * + * @param element the element for which the name should be created + * @param nameProposal a proposal for a name of the element + * @return a valid unique element name + */ + public static String createUniqueName(final INamedElement element, final String nameProposal) { + Assert.isTrue(IdentifierVerifyer.isValidIdentifier(nameProposal), "The given name proposal is not a valid identifier!"); //$NON-NLS-1$ + Assert.isNotNull(element.eContainer(), "For a correct operation createuniqueName expects that the model element is already added in its containing model!"); //$NON-NLS-1$ + + String retVal = nameProposal; + if(element instanceof IInterfaceElement) { + //for interface elements we need to check if it not a reserved keyword + retVal = checkReservedKeyWords(nameProposal); + } + return getUniqueName(getRefNames(element), retVal); + } + + + + + private static Set<String> getRefNames(INamedElement refElement){ + EList<?extends INamedElement> elementsList = null; + + //TODO consider moving this instance of cascade into the model + if(refElement instanceof Algorithm) { + elementsList = ((BasicFBType)((Algorithm)refElement).eContainer()).getAlgorithm(); + } else if(refElement instanceof Application) { + elementsList = ((Application)refElement).getAutomationSystem().getApplication(); + } else if(refElement instanceof Device) { + elementsList = ((Device)refElement).getSystemConfiguration().getDevices(); + } else if(refElement instanceof FBNetworkElement) { + elementsList = ((FBNetworkElement)refElement).getFbNetwork().getNetworkElements(); + } else if(refElement instanceof Resource) { + elementsList = ((Resource)refElement).getDevice().getResource(); + } else if(refElement instanceof Segment) { + elementsList = ((SystemConfiguration)((Segment)refElement).eContainer()).getSegments(); + } else if(refElement instanceof ECState) { + elementsList = ((ECC)((ECState)refElement).eContainer()).getECState(); + } else if(refElement instanceof IInterfaceElement) { + EList<INamedElement> elements = new BasicEList<INamedElement>(); + InterfaceList interfaceList = (InterfaceList)((IInterfaceElement)refElement).eContainer(); + elements.addAll(interfaceList.getAllInterfaceElements()); + if(interfaceList.eContainer() instanceof BasicFBType){ + elements.addAll(((BasicFBType)interfaceList.eContainer()).getInternalVars()); + } + elementsList = elements; + } else { + throw new IllegalArgumentException("Refenrence list for given class not available: " + refElement.getClass().toString()); //$NON-NLS-1$ + } + + return elementsList.stream().filter(element -> element != refElement).map(element -> element.getName()).collect(Collectors.toSet()); + } + /** * Checks whether the instance name is unique in the fb network it is contained in @@ -108,7 +171,7 @@ * @param nameProposal a proposal for a name as starting point * @return a unique name */ - static private String getUniqueName(HashSet<String> existingNameList, String nameProposal){ + static private String getUniqueName(Set<String> existingNameList, String nameProposal){ String temp = nameProposal; int i = 1; @@ -133,20 +196,20 @@ FBNetwork fbn, String nameProposal) { if (fbn != null) { //TODO consider to also add the referenced FB here so that the old name is not considered - HashSet<String> uniqueNames = getNameList(null, fbn.getNetworkElements()); + Set<String> uniqueNames = getNameList(null, fbn.getNetworkElements()); return getUniqueName(uniqueNames, nameProposal); } return nameProposal; } public static String getResourceUniqueFBInstanceName(final Resource resourceUT, final String name) { - HashSet<String> resourceNames = getNameList(resourceUT, resourceUT.getFBNetwork().getNetworkElements()); + Set<String> resourceNames = getNameList(resourceUT, resourceUT.getFBNetwork().getNetworkElements()); return getUniqueName(resourceNames, name); } public static String getUniqueResourceInstanceName(final Resource resourceUT, final String name) { if(null != resourceUT.eContainer()){ - HashSet<String> resourceNames = getNameList(resourceUT,resourceUT.getDevice().getResource()); + Set<String> resourceNames = getNameList(resourceUT,resourceUT.getDevice().getResource()); return getUniqueName(resourceNames, name); } return name; @@ -154,7 +217,7 @@ public static String getUniqueDeviceInstanceName(final Device deviceUT, final String name) { if(null != deviceUT.eContainer()){ - HashSet<String> deviceNames = getNameList(deviceUT, deviceUT.getAutomationSystem().getSystemConfiguration().getDevices()); + Set<String> deviceNames = getNameList(deviceUT, deviceUT.getAutomationSystem().getSystemConfiguration().getDevices()); return getUniqueName(deviceNames, name); } return name; @@ -178,7 +241,7 @@ } public static String getUniqueECCStateName(ECState state, ECC ecc, String name) { - HashSet<String> stateNames = getNameList(state, ecc.getECState()); + Set<String> stateNames = getNameList(state, ecc.getECState()); return getUniqueName(stateNames, name); } @@ -244,14 +307,8 @@ return name; } - private static HashSet<String> getNameList(INamedElement refElement, EList<?extends INamedElement> elementsList){ - HashSet<String> nameList = new HashSet<>(); - for (INamedElement element : elementsList) { - if(!element.equals(refElement)){ - nameList.add(element.getName()); - } - } - return nameList; + private static Set<String> getNameList(INamedElement refElement, EList<?extends INamedElement> elementsList){ + return elementsList.stream().filter(element -> element != refElement).map(element -> element.getName()).collect(Collectors.toSet()); } } diff -r b3df33bce060 -r 88cc5d7efa01 plugins/org.eclipse.fordiac.ide.systemconfiguration/src/org/eclipse/fordiac/ide/systemconfiguration/commands/SegmentCreateCommand.java --- a/plugins/org.eclipse.fordiac.ide.systemconfiguration/src/org/eclipse/fordiac/ide/systemconfiguration/commands/SegmentCreateCommand.java Thu Aug 10 09:55:14 2017 +0200 +++ b/plugins/org.eclipse.fordiac.ide.systemconfiguration/src/org/eclipse/fordiac/ide/systemconfiguration/commands/SegmentCreateCommand.java Sun Aug 20 22:15:43 2017 +0200 @@ -14,6 +14,7 @@ import org.eclipse.draw2d.geometry.Rectangle; import org.eclipse.emf.ecore.util.EcoreUtil; +import org.eclipse.fordiac.ide.model.NameRepository; import org.eclipse.fordiac.ide.model.Palette.SegmentTypePaletteEntry; import org.eclipse.fordiac.ide.model.libraryElement.LibraryElementFactory; import org.eclipse.fordiac.ide.model.libraryElement.Segment; @@ -56,11 +57,11 @@ segment.setColor(ColorHelper.createRandomColor()); segment.setPaletteEntry(type); segment.getVarDeclarations().addAll(EcoreUtil.copyAll(type.getSegmentType().getVarDeclaration())); - segment.setName(type.getSegmentType().getName()); segment.setX(bounds.x); segment.setY(bounds.y); segment.setWidth((-1 != bounds.width) ? bounds.width : 300); redo(); + segment.setName(NameRepository.createUniqueName(segment, type.getSegmentType().getName())); } @Override |
From: <for...@li...> - 2017-08-20 21:55:14
|
details: http://fordiac.hg.sourceforge.net/hgweb/fordiac/fordiac-ide/rev/9367900f52d4 changeset: 3060:9367900f52d4 user: Alois Zoitl <alo...@gm...> date: Sun Aug 20 22:44:00 2017 +0200 description: [Bug 517856] Segments not named correctly on create Updated changeNamecommand to use new name checking. Currently only tested with segements. Bug: https://bugs.eclipse.org/bugs/show_bug.cgi?id=517856 Signed-off: alo...@gm... diffstat: plugins/org.eclipse.fordiac.ide.model.commands/src/org/eclipse/fordiac/ide/model/commands/change/ChangeNameCommand.java | 36 +------ plugins/org.eclipse.fordiac.ide.model/bin/org/eclipse/fordiac/ide/model/messages.properties | 3 + plugins/org.eclipse.fordiac.ide.model/src/org/eclipse/fordiac/ide/model/Messages.java | 6 + plugins/org.eclipse.fordiac.ide.model/src/org/eclipse/fordiac/ide/model/NameRepository.java | 52 +++++---- plugins/org.eclipse.fordiac.ide.model/src/org/eclipse/fordiac/ide/model/messages.properties | 3 + 5 files changed, 44 insertions(+), 56 deletions(-) diffs (220 lines): diff -r 88cc5d7efa01 -r 9367900f52d4 plugins/org.eclipse.fordiac.ide.model.commands/src/org/eclipse/fordiac/ide/model/commands/change/ChangeNameCommand.java --- a/plugins/org.eclipse.fordiac.ide.model.commands/src/org/eclipse/fordiac/ide/model/commands/change/ChangeNameCommand.java Sun Aug 20 22:15:43 2017 +0200 +++ b/plugins/org.eclipse.fordiac.ide.model.commands/src/org/eclipse/fordiac/ide/model/commands/change/ChangeNameCommand.java Sun Aug 20 22:44:00 2017 +0200 @@ -12,52 +12,30 @@ *******************************************************************************/ package org.eclipse.fordiac.ide.model.commands.change; -import org.eclipse.emf.ecore.EObject; import org.eclipse.fordiac.ide.model.NameRepository; -import org.eclipse.fordiac.ide.model.libraryElement.Algorithm; -import org.eclipse.fordiac.ide.model.libraryElement.ECState; -import org.eclipse.fordiac.ide.model.libraryElement.FB; -import org.eclipse.fordiac.ide.model.libraryElement.FBType; import org.eclipse.fordiac.ide.model.libraryElement.INamedElement; -import org.eclipse.fordiac.ide.ui.controls.Abstract4DIACUIPlugin; import org.eclipse.gef.commands.Command; public class ChangeNameCommand extends Command { protected INamedElement element; - private final EObject type; protected String name; private String oldName; public ChangeNameCommand(final INamedElement element, final String name) { super(); this.element = element; - if(element instanceof FB){ - this.type = element; - }else{ - if(element.eContainer() instanceof FBType || element instanceof ECState || element instanceof Algorithm){ - this.type = element.eContainer(); - }else{ - if((null != element.eContainer()) && (element.eContainer().eContainer() instanceof FBType)){ - this.type = element.eContainer().eContainer(); - }else{ - this.type = element; - } - } - } this.name = name; } @Override public boolean canExecute() { - return performNameCheck(name); + return NameRepository.isValidName(element, name); } @Override public void execute() { oldName = element.getName(); - if(performNameCheck(name)){ - redo(); - } + redo(); } @Override @@ -70,14 +48,4 @@ element.setName(name); } - public boolean performNameCheck(String nameToCheck) { - if(nameToCheck.equals(NameRepository.getUniqueElementName(element, type, nameToCheck))){ - Abstract4DIACUIPlugin.statusLineErrorMessage(null); - return true; - } - else{ - Abstract4DIACUIPlugin.statusLineErrorMessage("Element with Name: " + nameToCheck + " already exists!"); //$NON-NLS-1$ //$NON-NLS-2$ - return false; - } - } } \ No newline at end of file diff -r 88cc5d7efa01 -r 9367900f52d4 plugins/org.eclipse.fordiac.ide.model/bin/org/eclipse/fordiac/ide/model/messages.properties --- a/plugins/org.eclipse.fordiac.ide.model/bin/org/eclipse/fordiac/ide/model/messages.properties Sun Aug 20 22:15:43 2017 +0200 +++ b/plugins/org.eclipse.fordiac.ide.model/bin/org/eclipse/fordiac/ide/model/messages.properties Sun Aug 20 22:44:00 2017 +0200 @@ -64,6 +64,9 @@ ImportUtils_ERROR_InputEventNameNotDefined=InputEvent name not defined FBTypeLibrary_ERROR_NotImported=\ not imported\! FBTypeLibrary_ERROR_NotSupported=Not supported +NameRepository_NameAlreadyExists=Element with Name: {0} already exists\! +NameRepository_NameNotAValidIdentifier=Name: {0} is not a valid identifier\! +NameRepository_NameReservedKeyWord=Name: {0} is a reserved key word\! TypeLibrary_ImportDataTypeFileDialogTitle=Select Data type file for the referenced Data type (''{0}'') TypeLibrary_LoadReferencedFile_DialogTitle=Select Function Block Type file for the referenced Function Block Type (''{0}'') TypeLibrary_OverwriteMessage=''{0}'' exists. Overwrite? diff -r 88cc5d7efa01 -r 9367900f52d4 plugins/org.eclipse.fordiac.ide.model/src/org/eclipse/fordiac/ide/model/Messages.java --- a/plugins/org.eclipse.fordiac.ide.model/src/org/eclipse/fordiac/ide/model/Messages.java Sun Aug 20 22:15:43 2017 +0200 +++ b/plugins/org.eclipse.fordiac.ide.model/src/org/eclipse/fordiac/ide/model/Messages.java Sun Aug 20 22:44:00 2017 +0200 @@ -180,6 +180,12 @@ /** The Import utils_ erro r_ parameter value not set. */ public static String ImportUtils_ERROR_ParameterValueNotSet; + public static String NameRepository_NameAlreadyExists; + + public static String NameRepository_NameNotAValidIdentifier; + + public static String NameRepository_NameReservedKeyWord; + public static String TypeLibrary_ImportDataTypeFileDialogTitle; public static String TypeLibrary_LoadReferencedFile_DialogTitle; diff -r 88cc5d7efa01 -r 9367900f52d4 plugins/org.eclipse.fordiac.ide.model/src/org/eclipse/fordiac/ide/model/NameRepository.java --- a/plugins/org.eclipse.fordiac.ide.model/src/org/eclipse/fordiac/ide/model/NameRepository.java Sun Aug 20 22:15:43 2017 +0200 +++ b/plugins/org.eclipse.fordiac.ide.model/src/org/eclipse/fordiac/ide/model/NameRepository.java Sun Aug 20 22:44:00 2017 +0200 @@ -12,6 +12,7 @@ ********************************************************************************/ package org.eclipse.fordiac.ide.model; +import java.text.MessageFormat; import java.util.ArrayList; import java.util.Arrays; import java.util.Collections; @@ -22,7 +23,6 @@ import org.eclipse.core.runtime.Assert; import org.eclipse.emf.common.util.BasicEList; import org.eclipse.emf.common.util.EList; -import org.eclipse.emf.ecore.EObject; import org.eclipse.fordiac.ide.model.data.DataType; import org.eclipse.fordiac.ide.model.libraryElement.Algorithm; import org.eclipse.fordiac.ide.model.libraryElement.Annotation; @@ -40,9 +40,9 @@ import org.eclipse.fordiac.ide.model.libraryElement.InterfaceList; import org.eclipse.fordiac.ide.model.libraryElement.Resource; import org.eclipse.fordiac.ide.model.libraryElement.Segment; -import org.eclipse.fordiac.ide.model.libraryElement.SubApp; import org.eclipse.fordiac.ide.model.libraryElement.SystemConfiguration; import org.eclipse.fordiac.ide.model.typelibrary.DataTypeLibrary; +import org.eclipse.fordiac.ide.ui.controls.Abstract4DIACUIPlugin; public class NameRepository { @@ -77,7 +77,7 @@ public static void checkNameIdentifier(INamedElement element){ element.getAnnotations().clear(); if(!IdentifierVerifyer.isValidIdentifier(element.getName())){ - Annotation ano = element.createAnnotation("Name: " + element.getName() + " is not a valid identifier!"); + Annotation ano = element.createAnnotation(MessageFormat.format(Messages.NameRepository_NameNotAValidIdentifier, element.getName())); ano.setServity(2); // 2 means error! } } @@ -103,13 +103,38 @@ return getUniqueName(getRefNames(element), retVal); } - + /** Check if the given nameProposal is a valid name for the given named element. + * + * @param element the named element for which a new name proposal should be checked + * @param nameProposal the new name to be checked + * @return true if the nameProposal is a valid new name for the named element + */ + public static boolean isValidName(final INamedElement element, final String nameProposal) { + Assert.isNotNull(element.eContainer(), "For a correct operation createuniqueName expects that the model element is already added in its containing model!"); //$NON-NLS-1$ + Abstract4DIACUIPlugin.statusLineErrorMessage(null); + + if(!IdentifierVerifyer.isValidIdentifier(nameProposal)){ + Abstract4DIACUIPlugin.statusLineErrorMessage(MessageFormat.format(Messages.NameRepository_NameNotAValidIdentifier, nameProposal)); + return false; + } + if(element instanceof IInterfaceElement && RESERVED_KEYWORDS.contains(nameProposal)) { + Abstract4DIACUIPlugin.statusLineErrorMessage(MessageFormat.format(Messages.NameRepository_NameReservedKeyWord, nameProposal)); + return false; + } + + if(getRefNames(element).contains(nameProposal)) { + Abstract4DIACUIPlugin.statusLineErrorMessage((MessageFormat.format(Messages.NameRepository_NameAlreadyExists, nameProposal))); + return false; + } + + return true; + } private static Set<String> getRefNames(INamedElement refElement){ EList<?extends INamedElement> elementsList = null; - //TODO consider moving this instance of cascade into the model + //TODO consider moving this instance of cascade into the model utilizing the inheritance hierarchy to our advantage if(refElement instanceof Algorithm) { elementsList = ((BasicFBType)((Algorithm)refElement).eContainer()).getAlgorithm(); } else if(refElement instanceof Application) { @@ -222,23 +247,6 @@ } return name; } - - public static String getUniqueElementName(INamedElement element, EObject object, String name){ - if(element instanceof IInterfaceElement){ - IInterfaceElement ie = (IInterfaceElement)element; - if(ie.getFBNetworkElement() instanceof SubApp && null == ie.getFBNetworkElement().getType()){ - return getUniqueInterfaceElementName(ie, (InterfaceList)ie.eContainer(), name); - } - return getUniqueInterfaceElementName(ie, (FBType)object, name); - } - if(element instanceof ECState){ - return getUniqueECCStateName((ECState)element, (ECC)object, name); - } - if(element instanceof Algorithm){ - return getUniqueAlgorithmName((Algorithm)element, (BasicFBType)object, name); - } - return name; - } public static String getUniqueECCStateName(ECState state, ECC ecc, String name) { Set<String> stateNames = getNameList(state, ecc.getECState()); diff -r 88cc5d7efa01 -r 9367900f52d4 plugins/org.eclipse.fordiac.ide.model/src/org/eclipse/fordiac/ide/model/messages.properties --- a/plugins/org.eclipse.fordiac.ide.model/src/org/eclipse/fordiac/ide/model/messages.properties Sun Aug 20 22:15:43 2017 +0200 +++ b/plugins/org.eclipse.fordiac.ide.model/src/org/eclipse/fordiac/ide/model/messages.properties Sun Aug 20 22:44:00 2017 +0200 @@ -64,6 +64,9 @@ ImportUtils_ERROR_InputEventNameNotDefined=InputEvent name not defined FBTypeLibrary_ERROR_NotImported=\ not imported\! FBTypeLibrary_ERROR_NotSupported=Not supported +NameRepository_NameAlreadyExists=Element with Name: {0} already exists\! +NameRepository_NameNotAValidIdentifier=Name: {0} is not a valid identifier\! +NameRepository_NameReservedKeyWord=Name: {0} is a reserved key word\! TypeLibrary_ImportDataTypeFileDialogTitle=Select Data type file for the referenced Data type (''{0}'') TypeLibrary_LoadReferencedFile_DialogTitle=Select Function Block Type file for the referenced Function Block Type (''{0}'') TypeLibrary_OverwriteMessage=''{0}'' exists. Overwrite? |
From: <for...@li...> - 2017-08-10 07:55:32
|
details: http://fordiac.hg.sourceforge.net/hgweb/fordiac/fordiac-ide/rev/b3df33bce060 changeset: 3058:b3df33bce060 user: Monika Wenger date: Thu Aug 10 09:55:14 2017 +0200 description: [512072] Property sheets for modifying subapp interface elements - quick fix for the creation of adapter connections within resources - in resources the adapter types can not be fetched since getApplication returns null diffstat: plugins/org.eclipse.fordiac.ide.gef/src/org/eclipse/fordiac/ide/gef/properties/InterfaceElementSection.java | 14 +++++---- 1 files changed, 8 insertions(+), 6 deletions(-) diffs (31 lines): diff -r 89238a3dca9b -r b3df33bce060 plugins/org.eclipse.fordiac.ide.gef/src/org/eclipse/fordiac/ide/gef/properties/InterfaceElementSection.java --- a/plugins/org.eclipse.fordiac.ide.gef/src/org/eclipse/fordiac/ide/gef/properties/InterfaceElementSection.java Tue Aug 08 16:26:09 2017 +0200 +++ b/plugins/org.eclipse.fordiac.ide.gef/src/org/eclipse/fordiac/ide/gef/properties/InterfaceElementSection.java Thu Aug 10 09:55:14 2017 +0200 @@ -136,7 +136,7 @@ } }else { if(getType() instanceof AdapterDeclaration) { - if(null != getType()) { + if(null != getType() && null != getType().getFBNetworkElement().getFbNetwork().getApplication()) { for (AdapterTypePaletteEntry adaptertype : getAdapterTypes(getType().getFBNetworkElement().getFbNetwork().getApplication().getAutomationSystem().getPalette())){ typeCombo.add(adaptertype.getAdapterType().getName()); } @@ -149,11 +149,13 @@ } } } - int i = typeCombo.getItems().length - 1; - while (!text.equals(typeCombo.getItems()[i]) && i > 0){ - --i; - } - typeCombo.select(i); + if(typeCombo.getItems().length > 0){ + int i = typeCombo.getItems().length - 1; + while (!text.equals(typeCombo.getItems()[i]) && i > 0){ + --i; + } + typeCombo.select(i); + } } private static ArrayList<AdapterTypePaletteEntry> getAdapterTypes(final Palette systemPalette){ |
From: <for...@li...> - 2017-08-09 11:53:04
|
details: http://fordiac.hg.sourceforge.net/hgweb/fordiac/fordiac-ide/rev/89238a3dca9b changeset: 3057:89238a3dca9b user: ca...@fo... date: Tue Aug 08 16:26:09 2017 +0200 description: Small changes from feedback. Improve tester. Improve number in images. Cleaning of double white spaces and tabs diffstat: plugins/org.eclipse.fordiac.ide/html/4diacIDE/distribute4diac.html | 5 +- plugins/org.eclipse.fordiac.ide/html/4diacIDE/img/deploymentExample.png | Bin plugins/org.eclipse.fordiac.ide/html/4diacIDE/img/distributedDownload.png | Bin plugins/org.eclipse.fordiac.ide/html/4diacIDE/img/distributedSystemConfiguration.png | Bin plugins/org.eclipse.fordiac.ide/html/4diacIDE/img/perspective/debugPerspective.png | Bin plugins/org.eclipse.fordiac.ide/html/4diacIDE/img/perspective/deploymentPerspective.png | Bin plugins/org.eclipse.fordiac.ide/html/4diacIDE/img/perspective/systemPerspective.png | Bin plugins/org.eclipse.fordiac.ide/html/4diacIDE/img/typeBasicGeneral.png | Bin plugins/org.eclipse.fordiac.ide/html/4diacIDE/overview.html | 20 +- plugins/org.eclipse.fordiac.ide/html/before4DIAC/iec61499.html | 2 +- plugins/org.eclipse.fordiac.ide/html/checkPages.sh | 100 +++++++++- plugins/org.eclipse.fordiac.ide/html/communication/fbdkip.html | 5 +- plugins/org.eclipse.fordiac.ide/html/communication/opc.html | 6 +- plugins/org.eclipse.fordiac.ide/html/communication/opc_ua.html | 9 +- plugins/org.eclipse.fordiac.ide/html/communication/simulation.html | 2 +- plugins/org.eclipse.fordiac.ide/html/development/building4diac.html | 4 +- plugins/org.eclipse.fordiac.ide/html/development/contributeToForte.html | 52 ++-- plugins/org.eclipse.fordiac.ide/html/development/externalEvent_example.html | 12 +- plugins/org.eclipse.fordiac.ide/html/development/forte_codequality.html | 12 +- plugins/org.eclipse.fordiac.ide/html/examples/bbbTraficControl.html | 10 +- plugins/org.eclipse.fordiac.ide/html/examples/img/bbbTrafficController/Traffic-light-download.jpg | Bin plugins/org.eclipse.fordiac.ide/html/examples/pidMotor.html | 18 +- plugins/org.eclipse.fordiac.ide/html/faq/faq.html | 6 +- plugins/org.eclipse.fordiac.ide/html/installation/eclipse.html | 6 +- plugins/org.eclipse.fordiac.ide/html/installation/img/CMakeFirstStep.png | Bin plugins/org.eclipse.fordiac.ide/html/installation/img/eclipseDebug.png | Bin plugins/org.eclipse.fordiac.ide/html/installation/img/eclipseInstallNewSoftware.png | Bin plugins/org.eclipse.fordiac.ide/html/installation/img/raspiCrossLinux1.png | Bin plugins/org.eclipse.fordiac.ide/html/installation/img/raspiCrossLinux2.png | Bin plugins/org.eclipse.fordiac.ide/html/installation/img/raspiCrossLinux3.png | Bin plugins/org.eclipse.fordiac.ide/html/installation/img/raspiCrossLinux4.png | Bin plugins/org.eclipse.fordiac.ide/html/installation/img/raspiCrossLinux5.png | Bin plugins/org.eclipse.fordiac.ide/html/installation/install.html | 18 +- plugins/org.eclipse.fordiac.ide/html/installation/legoMindstormEv3.html | 12 +- plugins/org.eclipse.fordiac.ide/html/installation/minGW.html | 12 +- plugins/org.eclipse.fordiac.ide/html/installation/mindstorms.html | 2 +- plugins/org.eclipse.fordiac.ide/html/installation/raspi.html | 4 +- plugins/org.eclipse.fordiac.ide/html/installation/visualStudio.html | 2 +- plugins/org.eclipse.fordiac.ide/html/installation/wago.html | 18 +- plugins/org.eclipse.fordiac.ide/html/parameters/parameters.html | 24 +- plugins/org.eclipse.fordiac.ide/html/startHere/startHere.html | 4 +- 41 files changed, 227 insertions(+), 138 deletions(-) diffs (1139 lines): diff -r a578a01c04e2 -r 89238a3dca9b plugins/org.eclipse.fordiac.ide/html/4diacIDE/distribute4diac.html --- a/plugins/org.eclipse.fordiac.ide/html/4diacIDE/distribute4diac.html Wed Aug 09 13:38:29 2017 +0200 +++ b/plugins/org.eclipse.fordiac.ide/html/4diacIDE/distribute4diac.html Tue Aug 08 16:26:09 2017 +0200 @@ -99,11 +99,12 @@ <p>Similar on how it was done to deploy the Blink application is done for two. The only difference is that in this case we launch 1 FORTE instance and 1 FBRT instance in the Deployment Perspective. First set Windows → Preferences → 4DIAC → FBRT Preferences to the fbrt.jar file located under runtime/FBRT in your 4DIAC folder.</p> <ol> - <li>Sele both devices in the Donwload Selection</li> + <li>Select both devices in the Donwload Selection</li> <li>Launch one FORTE instance. The port should be one specified in the System Configuration (has nothing to do with the IP:PORT used with UDP to send events)</li> <li>Launch one FBRT instance. The same care must be taken regarding the port. This will open a GUI frame.</li> <li>Download the application</li> - <li>Check that you don't get any error, and you should see the buttons in the GUI.</li> + <li>Check that you don't get any error.</li> + <li>You should see the buttons in the GUI.</li> </ol> diff -r a578a01c04e2 -r 89238a3dca9b plugins/org.eclipse.fordiac.ide/html/4diacIDE/img/deploymentExample.png Binary file plugins/org.eclipse.fordiac.ide/html/4diacIDE/img/deploymentExample.png has changed diff -r a578a01c04e2 -r 89238a3dca9b plugins/org.eclipse.fordiac.ide/html/4diacIDE/img/distributedDownload.png Binary file plugins/org.eclipse.fordiac.ide/html/4diacIDE/img/distributedDownload.png has changed diff -r a578a01c04e2 -r 89238a3dca9b plugins/org.eclipse.fordiac.ide/html/4diacIDE/img/distributedSystemConfiguration.png Binary file plugins/org.eclipse.fordiac.ide/html/4diacIDE/img/distributedSystemConfiguration.png has changed diff -r a578a01c04e2 -r 89238a3dca9b plugins/org.eclipse.fordiac.ide/html/4diacIDE/img/perspective/debugPerspective.png Binary file plugins/org.eclipse.fordiac.ide/html/4diacIDE/img/perspective/debugPerspective.png has changed diff -r a578a01c04e2 -r 89238a3dca9b plugins/org.eclipse.fordiac.ide/html/4diacIDE/img/perspective/deploymentPerspective.png Binary file plugins/org.eclipse.fordiac.ide/html/4diacIDE/img/perspective/deploymentPerspective.png has changed diff -r a578a01c04e2 -r 89238a3dca9b plugins/org.eclipse.fordiac.ide/html/4diacIDE/img/perspective/systemPerspective.png Binary file plugins/org.eclipse.fordiac.ide/html/4diacIDE/img/perspective/systemPerspective.png has changed diff -r a578a01c04e2 -r 89238a3dca9b plugins/org.eclipse.fordiac.ide/html/4diacIDE/img/typeBasicGeneral.png Binary file plugins/org.eclipse.fordiac.ide/html/4diacIDE/img/typeBasicGeneral.png has changed diff -r a578a01c04e2 -r 89238a3dca9b plugins/org.eclipse.fordiac.ide/html/4diacIDE/overview.html --- a/plugins/org.eclipse.fordiac.ide/html/4diacIDE/overview.html Wed Aug 09 13:38:29 2017 +0200 +++ b/plugins/org.eclipse.fordiac.ide/html/4diacIDE/overview.html Tue Aug 08 16:26:09 2017 +0200 @@ -40,7 +40,7 @@ <h2 id="elements">4DIAC Elements</h2> <p>Since 4DIAC is compliant to the IEC 61499 standard, 4DIAC-IDE provides the standard's elements for work (you can check <a href="../before4DIAC/iec61499.html#IEC61499" target="_blank">here</a> to rememeber the elements):</p> <ul> - <li><img src="./img/system.png" alt="System" class="inlineImg" /> <span class="inlineTitle">System</span>: contains the <span class="view4diac">System Configuration</span> and its corresponding <span class="element61499">Applications</span></li> + <li><img src="./img/system.png" alt="System" class="inlineImg" /> <span class="inlineTitle">System</span>: contains the <span class="view4diac">System Configuration</span> and its corresponding <span class="element61499">Applications</span></li> <li><img src="./img/app16.png" alt="Application" class="inlineImg"/> <span class="inlineTitle">Application</span>: contains the desired application in terms of a FB network</li> <li><img src="./img/device16.png" alt="Device" class="inlineImg"/> <span class="inlineTitle">Device</span>: It represents a hardware device like a programmable logic controller (PLC) or micro controller.</li> <li><img src="./img/resource16.png" alt="Resource" class="inlineImg"/> <span class="inlineTitle">Resource</span>: It is responsible for the execution of the control logic within its own execution context.</li> @@ -48,14 +48,14 @@ <ul> <li><img src="./img/basicfb_16.png" alt="BFB" class="inlineImg"/> <span class="inlineTitle">Basic FB (BFB)</span>: It uses an execution control chart (ECC) to control event execution. Algorithms are associated with the different states inside an ECC.</li> <li><img src="./img/compositefb_16.png" alt="CFB" class="inlineImg"/> <span class="inlineTitle">Composite FB (CFB)</span>: It contains a FB network of existing FBs. Its FB interface passes events and data on to the contained FBs that make up the CFB, which in turn pass events and data among themselves and out to the CFB's normal output interface.</li> - <li><img src="./img/sifb_16.png" alt="SIFB" class="inlineImg"/> <span class="inlineTitle">Service interface FB (SIFB)</span>: It is usually used for something that cannot be done through the IEC 61499 standard like communication with devices or networks segments. It helps to first understand basic and composite FBs. SIFBs are then used to realize only what cannot be done with a BFB/CFB.</li> </ul> + <li><img src="./img/sifb_16.png" alt="SIFB" class="inlineImg"/> <span class="inlineTitle">Service interface FB (SIFB)</span>: It is usually used for something that cannot be done through the IEC 61499 standard like communication with devices or networks segments. It helps to first understand basic and composite FBs. SIFBs are then used to realize only what cannot be done with a BFB/CFB.</li></ul> </li> - <li><img src="./img/adapter.png" alt="Adapter" class="inlineImg"/> <span class="element61499">Adapter</span>: combines a set of input/output events and data to one connection, at the one hand it simplifies the IEC 61499 <span class="element61499">Application</span> and on the other hand it better decouples <span class="element61499">Application</span> parts providing an interface concept allowing to adopt the polymorphic concept of object oriented programming</li> + <li><img src="./img/adapter.png" alt="Adapter" class="inlineImg"/> <span class="element61499">Adapter</span>: combines a set of input/output events and data to one connection, at the one hand it simplifies the IEC 61499 <span class="element61499">Application</span> and on the other hand it better decouples <span class="element61499">Application</span> parts providing an interface concept allowing to adopt the polymorphic concept of object oriented programming</li> </ul> <h2 id="perspectives">4DIAC Perspectives</h2> -<p>The 4DIAC-IDE provides four perspectives, which can be added by the <img src="./img/perspective/new_persp.gif" alt="add perspective" class="inlineImg"/> button in the upper right corner:</p> +<p>The 4DIAC-IDE provides four perspectives, which can be added by the <img src="./img/perspective/new_persp.gif" alt="add perspective" class="inlineImg"/> button in the upper right corner:</p> <ol> <li><span class="inlineTitle">System </span>perspective is used to configure everything regarding your system. It includes: <ul> @@ -70,13 +70,13 @@ </ol> <h3 id="systemPerspective">System Perspective</h3> -<p>In the right upper corner the perspective can be changed. The System perspective is reached by the <img src="./img/system.png" alt="System Perspective Button" class="inlineImg"/> button. The System perspective is divided into the following five areas.</p> +<p>In the right upper corner the perspective can be changed. The System perspective is reached by the <img src="./img/system.png" alt="System Perspective Button" class="inlineImg"/> button. The System perspective is divided into the following five areas.</p> <ol> - <li><span class="inlineTitle">System Management area</span>, which is used for the management of IEC 61499 compliant applications and to configure <span class="element61499">Devices</span> and <span class="element61499">Resources</span>. In a tab next to it, there's the <span class="IDEelement">Type Navigator</span>, which lists the available function block library for every <span class="element61499">System</span> as well as the default library.</li> - <li><span class="inlineTitle">Editor area</span>, which contains the <span class="IDEelement">Application editor</span> for modeling of control applications, the <span class="IDEelement">System editor</span> for modeling the <span class="element61499">System</span> configuration, and the <span class="IDEelement">Device</span> and <span class="IDEelement">Resource editor</span> for modeling the <span class="element61499">Resource</span> configuration</li> + <li><span class="inlineTitle">System Management area</span>, which is used for the management of IEC 61499 compliant applications and to configure <span class="element61499">Devices</span> and <span class="element61499">Resources</span>. In a tab next to it, there's the <span class="IDEelement">Type Navigator</span>, which lists the available function block library for every <span class="element61499">System</span> as well as the default library.</li> + <li><span class="inlineTitle">Editor area</span>, which contains the <span class="IDEelement">Application editor</span> for modeling of control applications, the <span class="IDEelement">System editor</span> for modeling the <span class="element61499">System</span> configuration, and the <span class="IDEelement">Device</span> and <span class="IDEelement">Resource editor</span> for modeling the <span class="element61499">Resource</span> configuration</li> + <li><span class="inlineTitle">Palette</span>: shows the elements that you can add to the editor.</li> + <li><span class="inlineTitle">Outline</span> of <span class="element61499">Applications</span>, <span class="element61499">System</span> configurations, <span class="element61499">Devices</span>, and <span class="element61499">Resources</span></li> <li><span class="inlineTitle">Property view</span>, which allows the parameterization of function block instances, <span class="element61499">Devices</span>, and <span class="element61499">Resources</span></li> - <li><span class="inlineTitle">Outline</span> of <span class="element61499">Applications</span>, <span class="element61499">System</span> configurations, <span class="element61499">Devices</span>, and <span class="element61499">Resources</span></li> - <li><span class="inlineTitle">Palette</span>: shows the elements that you can add to the editor.</li> </ol> <p><img src="./img/perspective/systemPerspective.png" alt="System Perspective Button"/></p> @@ -105,10 +105,10 @@ <p>In the right upper corner the perspective can be changed. The <span class="view4diac">Debug perspective</span> is reached by the <img src="./img/perspective/debugButton.gif" alt="Debug Perspective Button" class="inlineImg"/> button. The <span class="view4diac">Debug perspective</span> is divided into the following five areas.</p> <ol> <li>System selection where Systems can be marked for monitoring with right click and choosing <span class="menu4diac">Monitor System</span></li> - <li>Outline</li> <li>Breakpoints view which lists the defined breakpoints and allows their activation and deactivation, this feature is currently not supported</li> <li>Watches view which allow to watch the actual values of the variables you marked for watching</li> <li>Application editor which shows your <span class="element61499">Application</span> and highlights the variables marked for watching</li> + <li>Outline</li> </ol> <p><img src="./img/perspective/debugPerspective.png" alt="Debug Perspective Button"/></p> diff -r a578a01c04e2 -r 89238a3dca9b plugins/org.eclipse.fordiac.ide/html/before4DIAC/iec61499.html --- a/plugins/org.eclipse.fordiac.ide/html/before4DIAC/iec61499.html Wed Aug 09 13:38:29 2017 +0200 +++ b/plugins/org.eclipse.fordiac.ide/html/before4DIAC/iec61499.html Tue Aug 08 16:26:09 2017 +0200 @@ -46,7 +46,7 @@ <h3>Programming PLCs</h3> -<p>Even tough for each PLC vendor there's a specific IDE, the programming languages for PLC were standardized in <a href="https://en.wikipedia.org/wiki/IEC_61131" target="_blank">IEC-61131</a> part 3. Five different programming languages are part of the standard:</p> +<p>even though for each PLC vendor there's a specific IDE, the programming languages for PLC were standardized in <a href="https://en.wikipedia.org/wiki/IEC_61131" target="_blank">IEC-61131</a> part 3. Five different programming languages are part of the standard:</p> <ul> <li>Ladder diagram (LD), graphical</li> diff -r a578a01c04e2 -r 89238a3dca9b plugins/org.eclipse.fordiac.ide/html/checkPages.sh --- a/plugins/org.eclipse.fordiac.ide/html/checkPages.sh Wed Aug 09 13:38:29 2017 +0200 +++ b/plugins/org.eclipse.fordiac.ide/html/checkPages.sh Tue Aug 08 16:26:09 2017 +0200 @@ -15,6 +15,9 @@ CHECK_LAST=false #check if lastModified is present FIND_RECURSIVELY=false #check if lastModified is present USAGE_REQ=false +W_ERROR=false +USER_CHECK_COLOR="1;33" #yellow +USER_CHECK_TEXT="WARNING" FOLDERS="" FILES="" @@ -27,9 +30,10 @@ echo " -a Enable all checks" echo " -l Enable check for broken links" echo " -t Enable check for HTML 5 syntax" - echo " -s Enable check for user defined syntax. Currently: <span class="code"> should be inlineCode or use div tag. <i> and <b> are bad practice. <span class=""> is wrong" + echo " -s Enable check for user defined syntax. This flag is treated as warning unless -w is specified" echo " -L Enable check for lastModified tag in the file" echo " -r Look in the folders recursively. Default is false" + echo " -w Treat warnings as error" echo " FILES Files to check" echo " FOLDERS Folders to check" echo " -h Print this help" @@ -52,7 +56,7 @@ } OPTIND=1 #needed to call the script many times -while getopts "altsLrh" opt; do +while getopts "altsLrhw" opt; do case "${opt}" in a) CHECK_LINKS=true @@ -79,6 +83,9 @@ usage USAGE_REQ=true ;; + w) + W_ERROR=true + ;; \?) echo "Invalid option: -$OPTARG" return 1 @@ -113,6 +120,7 @@ done fi +WARNING_FILES="" FAILED_FILES="" MAX_LENGTH_FILE=1 @@ -143,6 +151,13 @@ fi fi +#check if Warnings as error is enabled +if [ $W_ERROR = true ] +then + USER_CHECK_COLOR="0;31" + USER_CHECK_TEXT="FAILED" +fi + for file in $FILES do if (( ${#file} > "$MAX_LENGTH_FILE" )) @@ -193,14 +208,74 @@ if [ $CHECK_SYNTAX = true ] && [ ${file: -5} == ".html" ] then - RESULT=$(cat $file | grep -nE "span class=\"code\"\|<i>\|<b>\|<em>\|<strong>\|\b(\t+)\b\|class=\"\"\|\w ") #<span class="code"> is obsolete. <i> and <b> are bad practice. class="" is wrong. And double white space + RESULT=$(cat $file | grep -nE -e "\S"$'\t' -e "[^\-]\->|span class=\"code\"|<i>|<b>|<em>|<strong>|class=\"\"|\S ") #<span class="code"> is obsolete. <i> and <b> are bad practice. class="" is wrong. And double white space if [ "$RESULT" != "" ] then - OK=false - printf "\033[0;31m-----------\033[0m\n" - printf "Checked \033[0;31m%-${MAX_LENGTH_FILE}s FAILED!\033[0m\n" $file - echo "WARNING AT SYNTAX (Use span instead of i, b, em and strong tags. Check double empty space, tabs instead of space and empty classes): $RESULT" - printf "\033[0;31m-----------\033[0m\n" + if [ $W_ERROR = true ] + then + OK=false + else + WARNING_FILES="$WARNING_FILES $file" + echo "$WARNING_FILES" + fi + + printf "\033[0""$USER_CHECK_COLOR""m-----------\033[0m\n" + printf "Checked \033[""$USER_CHECK_COLOR""m%-${MAX_LENGTH_FILE}s $USER_CHECK_TEXT!\033[0m\n" $file + + RES=$(echo "$RESULT" | grep -E "\S"$'\t') + if [ "$RES" != "" ] + then + printf "WARNING AT SYNTAX: Tabs are only allowed at the beginning of the line:\n%s\n" "$RES" + fi + + RES=$(echo "$RESULT" | grep -E "[^\-]\->") + if [ "$RES" != "" ] + then + printf "WARNING AT SYNTAX: Don't use arrows like ->, only for comments:\n%s\n" "$RES" + fi + + RES=$(echo "$RESULT" | grep -E "span class=\"code\"") + if [ "$RES" != "" ] + then + printf "WARNING AT SYNTAX: Don't use a span with class code. Use inlineCode class or use a div with class code:\n%s\n" "$RES" + fi + + RES=$(echo "$RESULT" | grep -E "<i>") + if [ "$RES" != "" ] + then + printf "WARNING AT SYNTAX: Don't use the tag <i>. Put a span aroung it, and use one class that is styled in the css:\n%s\n" "$RES" + fi + + RES=$(echo "$RESULT" | grep -E "<b>") + if [ "$RES" != "" ] + then + printf "WARNING AT SYNTAX: Don't use the tag <b>. Put a span aroung it, and use one class that is styled in the css:\n%s\n" "$RES" + fi + + RES=$(echo "$RESULT" | grep -E "<em>") + if [ "$RES" != "" ] + then + printf "WARNING AT SYNTAX: Don't use the tag <em>. Put a span aroung it, and use one class that is styled in the css:\n%s\n" "$RES" + fi + + RES=$(echo "$RESULT" | grep -E "<strong>") + if [ "$RES" != "" ] + then + printf "WARNING AT SYNTAX: Don't use the tag <strong>. Put a span aroung it, and use one class that is styled in the css:\n%s\n" "$RES" + fi + + RES=$(echo "$RESULT" | grep -E "class=\"\"") + if [ "$RES" != "" ] + then + printf "WARNING AT SYNTAX: The class name is empty.:\n%s\n" "$RES" + fi + + RES=$(echo "$RESULT" | grep -E "\S ") + if [ "$RES" != "" ] + then + printf "WARNING AT SYNTAX: Multiple blank space:\n%s\n" "$RES" + fi + printf "\n\033[""$USER_CHECK_COLOR""m-----------\033[0m\n" fi fi @@ -225,12 +300,19 @@ fi done +if [ "" != "$WARNING_FILES" ] +then + printf "\n\033[""$USER_CHECK_COLOR""mWARNING. Check files: $WARNING_FILES.\033[0m\n" +fi + if [ "$FAILED_FILES" == "" ] then printf "\n\033[0;32mTest SUCCESS. All files are correct.\033[0m\n" return 0 else - printf "\n\033[0;31mTest FAILED. Check files $FAILED_FILES.\033[0m\n" + printf "\n\033[0;31mTest FAILED. Check files: $FAILED_FILES.\033[0m\n" return 5 fi + + diff -r a578a01c04e2 -r 89238a3dca9b plugins/org.eclipse.fordiac.ide/html/communication/fbdkip.html --- a/plugins/org.eclipse.fordiac.ide/html/communication/fbdkip.html Wed Aug 09 13:38:29 2017 +0200 +++ b/plugins/org.eclipse.fordiac.ide/html/communication/fbdkip.html Tue Aug 08 16:26:09 2017 +0200 @@ -36,8 +36,7 @@ <h2 id="publishSubscribe">Publish/Subscribe - UDP/IP</h2> -<p>To communicate using Publish/Subscribe FBs, a UDP/IP connection is utilized, so we have to provide the Publish/Subscribe Function Blocks with a multicast IP address and a port. - The Publish FBs will send data over the network in this multicast IP address/port and the Subscribe FBs will listen to the same multicast IP address/port receiving any data sent by the Publish FBs. Multicast IP addresses can be picked from the range 224.0.0.0 - 239.255.255.255, while the port is arbitrary. So an example ID parameter for the Publish/Subscribe FBs would be:</p> +<p>To communicate using Publish/Subscribe FBs, a UDP/IP connection is utilized, so we have to provide the Publish/Subscribe Function Blocks with a multicast IP address and a port. The Publish FBs will send data over the network in this multicast IP address/port and the Subscribe FBs will listen to the same multicast IP address/port receiving any data sent by the Publish FBs. Multicast IP addresses can be picked from the range 224.0.0.0 - 239.255.255.255, while the port is arbitrary. So an example ID parameter for the Publish/Subscribe FBs would be:</p> <div class="code">225.0.0.1:61499</div> @@ -77,7 +76,7 @@ <div class="code">192.168.0.2:61501</div> -<p>However the "localhost" attribute is just for informational reasons and will not be used by FORTE, i.e. the Server's IP address will always be the same as the device's IP address. Only the port attribute is used. In contrast to Publish/Subscribe FBs, Client/Server FBs work in pairs. Only one Client FB can be connected to a Server FB at a time, while a Client FB can be connected to only one Server FB.</p> +<p>However the "localhost" attribute is just for informational reasons and will not be used by FORTE, i.e. the Server's IP address will always be the same as the device's IP address. Only the port attribute is used. In contrast to Publish/Subscribe FBs, Client/Server FBs work in pairs. Only one Client FB can be connected to a Server FB at a time, while a Client FB can be connected to only one Server FB.</p> <p>An example of using a Client/Server pair can be seen in the figure below and can be summarized as follows:</p> diff -r a578a01c04e2 -r 89238a3dca9b plugins/org.eclipse.fordiac.ide/html/communication/opc.html --- a/plugins/org.eclipse.fordiac.ide/html/communication/opc.html Wed Aug 09 13:38:29 2017 +0200 +++ b/plugins/org.eclipse.fordiac.ide/html/communication/opc.html Tue Aug 08 16:26:09 2017 +0200 @@ -41,7 +41,7 @@ <li>Edit the function init() in OPCClient.cpp from: <div class="code"> void COPCClient::init() -{ +{ HRESULT result = CoInitialize(NULL); if (FAILED(result)) { @@ -62,7 +62,7 @@ <div class="code"> void COPCClient::init() -{ +{ CoInitializeSecurity(NULL, -1, NULL, NULL, RPC_C_AUTHN_LEVEL_NONE, RPC_C_IMP_LEVEL_IMPERSONATE, NULL, EOAC_NONE, NULL); HRESULT result = CoGetMalloc(MEMCTX_TASK, &iMalloc); @@ -80,7 +80,7 @@ <ul> <li>[opcclientroot]/include - put header files from OPCClientToolKit project here </li> <li>[opcclientroot]/lib - OPCClientToolkit.lib </li> - </ul> + </ul> </li> </ol> diff -r a578a01c04e2 -r 89238a3dca9b plugins/org.eclipse.fordiac.ide/html/communication/opc_ua.html --- a/plugins/org.eclipse.fordiac.ide/html/communication/opc_ua.html Wed Aug 09 13:38:29 2017 +0200 +++ b/plugins/org.eclipse.fordiac.ide/html/communication/opc_ua.html Tue Aug 08 16:26:09 2017 +0200 @@ -75,8 +75,7 @@ </li> <li>Use CMake to generate all the build files. Download and install: <a href="https://cmake.org/download/" target="_blank">https://cmake.org/download/</a> </li> - <li>Open the <span class="folderLocation">$HOME/4diac/forte</span> folder in CMake, and set the output for the build binaries to the <span class="folderLocation">forte/build</span> - folder. + <li>Open the <span class="folderLocation">$HOME/4diac/forte</span> folder in CMake, and set the output for the build binaries to the <span class="folderLocation">forte/build</span>folder. </li> <li>Press <span class="button4diac">Configure</span> and select your Visual Studio Version. (Make sure you select your installed VS version. Otherwise CMake does not find the C/C++ compiler. Activate <span class="specificText">Use default native compilers</span></li> <li>Set <span class="specificText">FORTE_ARCHITECTURE</span> to <span class="specificText">Win32</span>, <span class="specificText">FORTE_MODULE_CONVERT=ON</span>, <span class="specificText">FORTE_MODULE_IEC61131=ON</span>, and press two times on cofigure. All red entries should now be gone. @@ -144,7 +143,7 @@ <li>Open UaExpert (you can get it from <a href="https://www.unified-automation.com/de/downloads/opc-ua-clients.html" target="_blank">here</a>) and connect to the OPC UA server running on FORTE: <span class="address">opc.tcp://localhost:4840</span></li> <li>You should see the two variables which have been created by the SUBSCRIBE and PUBLISH function blocks: <div><img src="./img/opc_ua_flipFlop_uaExpert.png" alt="OPC UA Flip-Flop in UaExpert"/></div> - As you can see, below <span class="specificText">Objects</span> there's a <span class="specificText">FolderObjectNode</span> with the name <span class="specificText">FlipFlop</span>. This name comes from the ID configuration of the function block. The two <span class="specificText">ObjectNode</span>s <span class="specificText">Flipper</span> and <span class="specificText">Flopper</span> are created out of the connection of the function blocks: The SUBSCRIBE FB is connected through RD_1 with the G port of the Flipper FB. Therefore there's a <span class="specificText">VariableNode</span> called <span class="specificText">G</span> in <span class="specificText">Flipper</span> ObjectNode. The same was created for the PUBLISH FB. The data type of the variables is derived from the FB's port datatype.<br/> + As you can see, below <span class="specificText">Objects</span> there's a <span class="specificText">FolderObjectNode</span> with the name <span class="specificText">FlipFlop</span>. This name comes from the ID configuration of the function block. The two <span class="specificText">ObjectNode</span>s <span class="specificText">Flipper</span> and <span class="specificText">Flopper</span> are created out of the connection of the function blocks: The SUBSCRIBE FB is connected through RD_1 with the G port of the Flipper FB. Therefore there's a <span class="specificText">VariableNode</span> called <span class="specificText">G</span> in <span class="specificText">Flipper</span> ObjectNode. The same was created for the PUBLISH FB. The data type of the variables is derived from the FB's port datatype.<br/> <span class="inlineTitle">Note:</span> You can change the name of the <span class="specificText">ObjectNode</span> (i.e., Flipper, Flopper) by renaming the function blocks. Currently it is not possible to change the names of the <span class="specificText">VariableNode</span>s. They will always have the name of the port. </li> <li>Optionally you can now monitor the Application in FORTE, e.g., watch the values of SUBSCRIBE and PUBLISH FB. See <a href="../4diacIDE/use4diacLocally.html#monitoringApplication" target="_blank">Use 4DIAC locally Tutorial - Monitor</a> on how to do that. @@ -167,7 +166,7 @@ <p>Try to understand from where the names for <span class="specificText">Num1</span>, <span class="specificText">Num2</span>, and <span class="specificText">Result</span> come from.</p> - <p>You can then drag the variables into UaExpert's Data Access View and change the value of <span class="specificText">Num1/IN</span> and <span class="specificText">Num2/IN</span>. The value of <span class="specificText">Result/OUT</span> should then be the sum of those two values.</p> + <p>You can then drag the variables into UaExpert's Data Access View and change the value of <span class="specificText">Num1/IN</span> and <span class="specificText">Num2/IN</span>. The value of <span class="specificText">Result/OUT</span> should then be the sum of those two values.</p> <h2 id="methods">OPC UA Methods</h2> @@ -197,7 +196,7 @@ <li>In UaExpert Right-Click on the Method Node <span class="specificText">AddValues</span> and select Call... You will be presented with the following window: <div><img src="./img/opc_ua_method_call.png" alt="OPC UA Method Call"/></div> </li> - <li>You can see that the name of the input and output arguments are the names of the connected function blocks. Enter values for <span class="specificText">Num1</span> and <span class="specificText">Num2</span> and press Call. FORTE will trigger the IND event of the SERVER FB, which causes the F_ADD FB to calculate the sum of the two numbers. When the sum is ready, the RSP event on SERVER is triggered and the result is returned to the calling OPC UA Client, which is in this case UaExpert.<br/> + <li>You can see that the name of the input and output arguments are the names of the connected function blocks. Enter values for <span class="specificText">Num1</span> and <span class="specificText">Num2</span> and press Call. FORTE will trigger the IND event of the SERVER FB, which causes the F_ADD FB to calculate the sum of the two numbers. When the sum is ready, the RSP event on SERVER is triggered and the result is returned to the calling OPC UA Client, which is in this case UaExpert.<br/> <span class="inlineTitle">Note:</span> After the IND event is triggered, the result has to be ready (i.e., the RSP event has to be triggered) within 4 seconds. This is the default timeout for a method call. Otherwise the call will fail with a timeout error code.</li> </ol> diff -r a578a01c04e2 -r 89238a3dca9b plugins/org.eclipse.fordiac.ide/html/communication/simulation.html --- a/plugins/org.eclipse.fordiac.ide/html/communication/simulation.html Wed Aug 09 13:38:29 2017 +0200 +++ b/plugins/org.eclipse.fordiac.ide/html/communication/simulation.html Tue Aug 08 16:26:09 2017 +0200 @@ -1,5 +1,5 @@ <!DOCTYPE html> -<!-- +<!-- Copyright (c) 2017 fortiss GmbH All rights reserved. This program and the accompanying materials diff -r a578a01c04e2 -r 89238a3dca9b plugins/org.eclipse.fordiac.ide/html/development/building4diac.html --- a/plugins/org.eclipse.fordiac.ide/html/development/building4diac.html Wed Aug 09 13:38:29 2017 +0200 +++ b/plugins/org.eclipse.fordiac.ide/html/development/building4diac.html Tue Aug 08 16:26:09 2017 +0200 @@ -35,7 +35,7 @@ <ol> <li>Get the development environment</li> <li>Check out the 4DIAC-IDE repository</li> - <li>Import plug-ins into workspace</li> + <li>Import plug-ins into workspace</li> <li>Get the 4DIAC-LIB</li> <li>Run in development mode</li> </ol> @@ -86,7 +86,7 @@ <li>Press Finish</li> <li>Select your new baseline in the API Baselines window and press OK</li> </ul> - </li> + </li> <li>Set the API Baseline error to ignore: <ul> <li>Select: API Baseline</li> diff -r a578a01c04e2 -r 89238a3dca9b plugins/org.eclipse.fordiac.ide/html/development/contributeToForte.html --- a/plugins/org.eclipse.fordiac.ide/html/development/contributeToForte.html Wed Aug 09 13:38:29 2017 +0200 +++ b/plugins/org.eclipse.fordiac.ide/html/development/contributeToForte.html Tue Aug 08 16:26:09 2017 +0200 @@ -56,7 +56,7 @@ </li> - <li> + <li> <p>The next thing is sign the CLA. Go to the CLA <a target="_blank" href="https://eclipse.org/legal/CLA.php"> page</a> to read it and learn more about that. The CLA is to protect copyrights and other legal stuff. Basically, when you sign it, you say that every change you contribute, is completely yours, and this helps protecting intellectual property, yours included. If your contribution is part of your work at some company, you should talk first with your superior and the legal deparment to fully understand how to approach this. </p> <p>The signing is done online. You check boxes, and complete a textbox with "I AGREE". There's no tangible outcome. Eclipse stores your information together with the version of the CLA that you signed. You can print the CLA, but you won't get a certificate to print that says that you signed. Your account will show that you have signed the CLA and there's a tool in Eclipse to validate if an account has signed.</p> @@ -64,7 +64,7 @@ </ol> <p>The first example uses Eclipse and all the git work will be done using EGit, normally already installed. If you think GUI is for weaks and a real programmer should use command line, you can follow the instructions given <a href="#CommandLine">below</a>. Nevertheless users who don't have command line experience should stick to Eclipse.</p> - </li> + </li> <li id="EGit">Using EGit to contribute @@ -86,16 +86,16 @@ <li> <p>Download Forte repository</p> - <p>In Eclipse, go to File -> Import...-> Git -> Projects from Git. Click Next and then select Clone URI. Next. Paste https://git.eclipse.org/r/4diac/org.eclipse.4diac.forte in the URI field and then Next. Eclipse will connect to the repository and retrieve all the branches of it. Select all and click Next. Select the destination folder of the repository in your local machine and click Next. Wait while the repository is beeing downloaded. Click Next until is finished.</p> + <p>In Eclipse, go to File → Import...→ Git → Projects from Git. Click Next and then select Clone URI. Next. Paste https://git.eclipse.org/r/4diac/org.eclipse.4diac.forte in the URI field and then Next. Eclipse will connect to the repository and retrieve all the branches of it. Select all and click Next. Select the destination folder of the repository in your local machine and click Next. Wait while the repository is beeing downloaded. Click Next until is finished.</p> </li> <li> <p>Look around and move between branches</p> <p>Now, you have the newest code of Forte. The first thing to do when you download a project, is to look around. Check the folders, read the Documentation and readme files. Try to understand the folders and hierarchies. </p> - <p>Right Click on the project, and then Team and you find all the possible commands regarding EGit. Team -> Show in History will show you all the commits in the current branch. Normally, master is the main branch. If Forte has another branch, and you want to work with it, you'll have to create a local branch that serves as reference of the original branch. That is, the Eclipse respository has a master branch (seen as origin/master), and for example a develop branch (seen as origin/develop). But you, locally, have only a master branch (seen as master). This local master is a reference to the origin/master and everything you change on it, will be then pushed to the origin/master. But if you want to work on the origin/develop branch, you'll need to create a local branch that references it. </p> + <p>Right Click on the project, and then Team and you find all the possible commands regarding EGit. Team → Show in History will show you all the commits in the current branch. Normally, master is the main branch. If Forte has another branch, and you want to work with it, you'll have to create a local branch that serves as reference of the original branch. That is, the Eclipse respository has a master branch (seen as origin/master), and for example a develop branch (seen as origin/develop). But you, locally, have only a master branch (seen as master). This local master is a reference to the origin/master and everything you change on it, will be then pushed to the origin/master. But if you want to work on the origin/develop branch, you'll need to create a local branch that references it. </p> - <p>Right click on the project -> Team -> Switch To -> Other.... There you see the local and remote branches. Select the remote branch you want to work on, let's say origin/develop, and click Checkout. you'll get a message saying that you can watch the remote branch, or you can create a new branch locally to work on it. Click on Checkout as New Local Branch and then select a name for the local branch. The usual thing is to name the same as the original, so we'll call it develop (wihtout the "origin/" part) and finish. Now you can switch between the branches, and the changes in each one will be reflected in the corresponding origin. </p> + <p>Right click on the project → Team → Switch To → Other.... There you see the local and remote branches. Select the remote branch you want to work on, let's say origin/develop, and click Checkout. you'll get a message saying that you can watch the remote branch, or you can create a new branch locally to work on it. Click on Checkout as New Local Branch and then select a name for the local branch. The usual thing is to name the same as the original, so we'll call it develop (wihtout the "origin/" part) and finish. Now you can switch between the branches, and the changes in each one will be reflected in the corresponding origin. </p> <p>The Forte projects follows the workflow shown <a target="_blank" href="http://nvie.com/posts/a-successful-git-branching-model/">here</a>. Basically, the master branch is used to release versions and the develop for new stuff. You should always branch out from develop to work on something new.</p> @@ -105,11 +105,11 @@ <p>Access the <a target="_blank" href="https://git.eclipse.org/r"> Gerrit </a> page in Eclipse to manage everything about Gerrit regarding your account. Click Sign In in the upper right corner and use the same email and password of your Eclipse account created in <a href="#EclipseAccount">step 1.1</a>. Once logged in, click on your name on the upper right corner, and then Settings. There you can change you preferences of messages, follow projects, manage password, among others. When you push something to Gerrit you can do it using ssh or https. SSH requires that you create the public and private keys, which are stored in files that Eclipse use then to connect to Gerrit. To know more about creating the keys and configuring in Eclipse, visit <a target="_blank" href="http://www.vogella.com/tutorials/EclipseGit/article.html#github"> here</a>, and then add the key in the SSH Public Keys setting in Gerrit. In this example we'll show the usage of https. </p> - <p>Go to HTTP Password in the Settings page of Gerrit, copy the username that appears and click Generate Password. you'll get a random long password that you'll use every time you want to push something to Gerrit. Go to Eclipse, right-click on the project -> Team -> Show in Repositories View. Then, expand Remotes, and right-click on origin -> Gerrit Configuration.... In this step you can choose ssh, https or other as communication protocol. Choose https and paste your username from Gerrit in the field User. This will change the Push URI. In the Destination branch field, you should set the branch to push to. You can't push to a branch that doesn't exist in the Gerrit repository. Note that the destination branch begins with refs/for/. Click finish and see in the Repositories View that the Origin remote has changed the push URI. This means that when you send something to Forte, it will send to Gerrit, but when you get something from it, you'll get it from the actual repository. </p> + <p>Go to HTTP Password in the Settings page of Gerrit, copy the username that appears and click Generate Password. you'll get a random long password that you'll use every time you want to push something to Gerrit. Go to Eclipse, right-click on the project → Team → Show in Repositories View. Then, expand Remotes, and right-click on origin → Gerrit Configuration.... In this step you can choose ssh, https or other as communication protocol. Choose https and paste your username from Gerrit in the field User. This will change the Push URI. In the Destination branch field, you should set the branch to push to. You can't push to a branch that doesn't exist in the Gerrit repository. Note that the destination branch begins with refs/for/. Click finish and see in the Repositories View that the Origin remote has changed the push URI. This means that when you send something to Forte, it will send to Gerrit, but when you get something from it, you'll get it from the actual repository. </p> </li> </ol> </li> - <li> + <li> <p>Contributing</p> <ol> @@ -123,7 +123,7 @@ <p>This is when you actually make the changes to the code. Open the files you want to change and simply make them. Try to make less than a 1000 changes for each commit in order to mantain the size of commits small.</p> - <p>Open the Git Staging View in Eclipse by going to Window -> Show View -> Other... -> Git -> Git Staging. In the Unstaged Changes you see all the files that were changed. Right-click on them and then Add to index. The selected files will be moved to Staged Changes.</p> + <p>Open the Git Staging View in Eclipse by going to Window → Show View → Other... → Git → Git Staging. In the Unstaged Changes you see all the files that were changed. Right-click on them and then Add to index. The selected files will be moved to Staged Changes.</p> </li> <li> <p id="CommitChanges">Commit the changes</p> @@ -186,7 +186,7 @@ <li> <p>Push the commit</p> - <p>In the History View you can see the new commit you have just added. But the commit is locally, and no one else knows about it. It's time to push it to the repository in Eclipse. Right-click on your last commit -> Push commit.... A dialog will open. With the showed configurations, you are trying to push to the develop branch of the Gerrit called refs/heads/develop. But according to the Gerrit documentation you should push to the magic refs/for/[branch] branch. So, in the Dialog, instead of the develop branch as it appear, you should change that to refs/for/develop (not reds/heads/develop). Click next, and you'll be asked to introduce your https Gerrit password generated in <a href="#ConfigureGerrit">step 1.5</a>. The push confirmation says that a new branch is beeing created. Don't worry about that, and click Finish. Put the password again, and the push should succeed. If something fails, the error appears in the log.</p> + <p>In the History View you can see the new commit you have just added. But the commit is locally, and no one else knows about it. It's time to push it to the repository in Eclipse. Right-click on your last commit → Push commit.... A dialog will open. With the showed configurations, you are trying to push to the develop branch of the Gerrit called refs/heads/develop. But according to the Gerrit documentation you should push to the magic refs/for/[branch] branch. So, in the Dialog, instead of the develop branch as it appear, you should change that to refs/for/develop (not reds/heads/develop). Click next, and you'll be asked to introduce your https Gerrit password generated in <a href="#ConfigureGerrit">step 1.5</a>. The push confirmation says that a new branch is beeing created. Don't worry about that, and click Finish. Put the password again, and the push should succeed. If something fails, the error appears in the log.</p> </li> </ol> </li> @@ -213,7 +213,7 @@ git-review  install<br> gitk  install<br> </code> - <p>If you don't see the output above, you'll need to install the git tools with the following command:</p> + <p>If you don't see the output above, you'll need to install the git tools with the following command:</p> <code>johndoe@linuxmint ~/$ sudo apt-get update && sudo apt-get install git</code> </li> @@ -239,7 +239,7 @@ johndoe@linuxmint ~/develop/repos/org.eclipse.4diac.forte $ git branch -a<br> * master<br> remotes/origin/1.8.x<br> - remotes/origin/HEAD -> origin/master<br> + remotes/origin/HEAD → origin/master<br> remotes/origin/OPC_UA<br> remotes/origin/develop<br> remotes/origin/master<br> @@ -278,7 +278,7 @@ Are you sure you want to continue connecting (yes/no)? yes<br> Warning: Permanently added '[git.eclipse.org]:29418,[198.41.30.196]:29418' (RSA) to the list of known hosts.<br> <br> - **** Welcome to Gerrit Code Review ****<br> + **** Welcome to Gerrit Code Review ****<br> <br> Hi John, you have successfully connected over SSH.<br> <br> @@ -329,9 +329,9 @@ Changes to be committed:<br> (use "git reset HEAD file..." to unstage)<br> <br> - new file: src/modules/conmeleon_c1/util/fileres.cpp<br> - new file: src/modules/conmeleon_c1/util/fileres.h<br> - new file: src/modules/conmeleon_c1/util/uncopyable.h<br> + new file: src/modules/conmeleon_c1/util/fileres.cpp<br> + new file: src/modules/conmeleon_c1/util/fileres.h<br> + new file: src/modules/conmeleon_c1/util/uncopyable.h<br> <br> Untracked files:<br> (use "git add file..." to include in what will be committed)<br> @@ -363,7 +363,7 @@ Writing objects: 100% (9/9), 3.84 KiB | 0 bytes/s, done.<br> Total 9 (delta 3), reused 0 (delta 0)<br> remote: Resolving deltas: 100% (3/3)<br> - remote: Processing changes: new: 1, refs: 1, done<br> + remote: Processing changes: new: 1, refs: 1, done<br> remote: ----------<br> remote: Reviewing commit: 3a8de79f<br> remote: Authored by: jdoexy5 (joh...@ex...)<br> @@ -375,10 +375,10 @@ remote: This commit passes Eclipse validation.<br> remote: <br> remote: New Changes:<br> - remote: https://git.eclipse.org/r/74832 [495477] Add conmeleon support to forte<br> + remote: https://git.eclipse.org/r/74832 [495477] Add conmeleon support to forte<br> remote: <br> To https://jd...@gi.../r/4diac/org.eclipse.4diac.forte<br> - * [new branch] HEAD -> refs/for/develop<br> + * [new branch] HEAD → refs/for/develop<br> </code> <p>You have done it, good job! Now it's the reviewers turn and you'll see his or her comments in the Gerrit code review webpage.</p> </li> @@ -389,28 +389,28 @@ <h2>Things to have in mind when contributing.</h2> <ul> - <li> + <li> <p>When creating new files to be added to the project, the copyright terms should be at the beggining. You should add the year of the modification to the file in the first line of the term, and at the end of the term, your name below Contributors, with a little explanation of your contribution to the file.</p> </li> - <li> + <li> <p>Always contribute to a bug.</p> </li> - <li> + <li> <p>Put the bug number between brackets in the subject of the commit message, and the link to the bug in the footer.</p> </li> - <li> + <li> <p>Don't forget to sign the commit.</p> </li> - <li> + <li> <p>Use the Gerrit <a target="_blank" href="https://git.eclipse.org/r"> website </a> to see the commits you pushed and the status of them.</p> </li> - <li> + <li> <p>Don't be afraid to contribute things.</p> </li> - <li> + <li> <p>Use the forums in case of doubt.</p> </li> - <li> + <li> <p>Find more info <a target="_blank" href="https://wiki.eclipse.org/Development_Resources/Contributing_via_Git"> here</a>.</p> </li> diff -r a578a01c04e2 -r 89238a3dca9b plugins/org.eclipse.fordiac.ide/html/development/externalEvent_example.html --- a/plugins/org.eclipse.fordiac.ide/html/development/externalEvent_example.html Wed Aug 09 13:38:29 2017 +0200 +++ b/plugins/org.eclipse.fordiac.ide/html/development/externalEvent_example.html Tue Aug 08 16:26:09 2017 +0200 @@ -47,7 +47,7 @@ <div class="code">EVENT_SOURCE_FUNCTION_BLOCK_CTOR(FORTE_SIBF_T_FF3){ m_stEventSourceEventEntry.m_poFB = this; - setEventChainExecutor(pa_poSrcRes->getResourceEventExecution()); + setEventChainExecutor(pa_poSrcRes->getResourceEventExecution()); m_bActive = false; m_stTimeListEntry.m_stTimeOut.m_nLowerValue = 0; m_stTimeListEntry.m_stTimeOut.m_nUpperValue = 0; @@ -70,13 +70,13 @@ break; case scm_nEventSTOPID: if(m_bActive){ - CTimerHandler::sm_poFORTETimer->unregisterTimedFB(this); + CTimerHandler::sm_poFORTETimer->unregisterTimedFB(this); m_bActive = false; } break; case scm_nEventSTARTID: if(!m_bActive){ - CTimerHandler::sm_poFORTETimer->registerTimedFB( &m_stTimeListEntry, DT()); + CTimerHandler::sm_poFORTETimer->registerTimedFB(&m_stTimeListEntry, DT()); m_bActive = true; } break; @@ -89,11 +89,11 @@ <h2>Sending External Events</h2> <p>To send External Events your Class must inherit from <span class="specificText">CExternalEventHandler</span>. In the Constructor you must register this class:</p> -<div class="specificText">m_nExtEvHandID = sm_poDeviceExecution->registerExternalEventHandler(this);</div> +<div class="specificText">m_nExtEvHandID = sm_poDeviceExecution->registerExternalEventHandler(this);</div> <p>Then you can send External Events with:</p> -<div class="specificText">if(sm_poDeviceExecution->extEvHandlerIsAllowed(m_nExtEvHandID)){ - sm_poDeviceExecution->startNewEventChain(pointerToTargetFB); +<div class="specificText">if(sm_poDeviceExecution->extEvHandlerIsAllowed(m_nExtEvHandID)){ + sm_poDeviceExecution->startNewEventChain(pointerToTargetFB); }</div> <h1>Where to go from here?</h1> diff -r a578a01c04e2 -r 89238a3dca9b plugins/org.eclipse.fordiac.ide/html/development/forte_codequality.html --- a/plugins/org.eclipse.fordiac.ide/html/development/forte_codequality.html Wed Aug 09 13:38:29 2017 +0200 +++ b/plugins/org.eclipse.fordiac.ide/html/development/forte_codequality.html Tue Aug 08 16:26:09 2017 +0200 @@ -41,7 +41,7 @@ <p>for building FORTE. The nice thing about scan-build is that it creates nice html files with explanations about the found problems.</p> </li> -</ul> +</ul> <h2>Dynamic Analysis</h2> <p>Dynamic analysis tools help to find issues during the runtime. Typical issues are memory issues like memory leaks, out of bound access, stack over/underflows, or the use after memory is freed.</p> @@ -51,15 +51,15 @@ </li> <li><span class="inlineTitle">Sanitizers</span>: Sanitizers are means for runtime checking that the complier adds to your application. They can be activated with compiler switches and have the great advantage that they are currently much faster than Valgrind. However they are only available for Clang and gcc. For the latter only partially. Currently we have worked with the following sanitizers - <ul> + <ul> <li>Address: Checks for memory and heap issues. Can be activated by adding <div class="code">-fsanitize=address</div> to the CMake option CMAKE_CXX_FLAGS. - </li> + </li> <li>Undefined Behavior: Checks for undefined behavior in your code (e.g, overflows, div by zero). Can be activated by adding <div class="code">-fsanitize=undefined</div> - to the CMake option CMAKE_CXX_FLAGS. - </li> + to the CMake option CMAKE_CXX_FLAGS. + </li> <li>Thread: To be tested</li> </ul> </ul> @@ -69,7 +69,7 @@ <p>We applied the unit test framework provided by the Boost-library called Boost Test. You can find the current set of available unit test in the directory test. New unit tests are always more then welcome.</p> <h2>Function Block Tests</h2> -<p>Based on Boost Test we developed a helper class which allows you to write unit test for Function Blocks in C++. For examples how to use it have a look on the test cases in the test/stdfblib directory.</p> +<p>Based on Boost Test we developed a helper class which allows you to write unit test for Function Blocks in C++. For examples how to use it have a look on the test cases in the test/stdfblib directory.</p> <h1>Where to go from here?</h1> diff -r a578a01c04e2 -r 89238a3dca9b plugins/org.eclipse.fordiac.ide/html/examples/bbbTraficControl.html --- a/plugins/org.eclipse.fordiac.ide/html/examples/bbbTraficControl.html Wed Aug 09 13:38:29 2017 +0200 +++ b/plugins/org.eclipse.fordiac.ide/html/examples/bbbTraficControl.html Tue Aug 08 16:26:09 2017 +0200 @@ -53,22 +53,22 @@ <h2>Running FORTE in the BBB</h2> - <p>In order to run FORTE on the BBB, you can either use a cross-compiler in your machine and then transfer the forte executable to the BBB, or you can transfer all the source files to the BBB and compile directly in it. This tutorial focuses on compiling directly in the BBB.</p> + <p>In order to run FORTE on the BBB, you can either use a cross-compiler in your machine and then transfer the forte executable to the BBB, or you can transfer all the source files to the BBB and compile directly in it. This tutorial focuses on compiling directly in the BBB.</p> <p>In either way, one more step that must be done is to tell the CMake that you want to include the IO in FORTE. To do that, find first the <span class="fieLocation">setup_posix.sh</span> file on the root folder of FORTE, and find the command <span class="specificText">cmake</span> almost at the bottom, and add the text <span class="specificText">-DFORTE_MODULE_SysFs=ON</span> (without quotes) just before <span class="specificText">-DFORTE_ARCHITECTURE=Posix</span> (leaving the blank spaces between them). </p> <!-- The second step is to navigate to the folder <span class="folderLocation">src/stdflib/</span>, and there you will find the <span class="fileLocation">CMakeLists.txt</span>, and you should add at the bottom in a new line: - <span class="specificText">add_subdirectory(io)</span>. Now you are ready to transfer all to your BBB.</p> --> + <span class="specificText">add_subdirectory(io)</span>. Now you are ready to transfer all to your BBB.</p> --> <h3>Transfering the source code to the BBB</h3> - <p>To transfer the files from a windows machine to the BBB, an easy solution is the software <a target="_blank" href="https://winscp.net/eng/download.php">WinSCP</a> which allows to connect to the BBB and navigate the folders in it in a Graphic Interface. Connect to the BBB using the IP address in the same way as in SSH before. Once connected you will see two folder trees. The one on the left is your local machine and the one on the right is th BBB. In WinSCP, navigate on both trees to the desired folders and select the files to transfer and then click "Upload" to transfer from machine -> BBB and "Download" to transfer BBB -> machine.</p> + <p>To transfer the files from a windows machine to the BBB, an easy solution is the software <a target="_blank" href="https://winscp.net/eng/download.php">WinSCP</a> which allows to connect to the BBB and navigate the folders in it in a Graphic Interface. Connect to the BBB using the IP address in the same way as in SSH before. Once connected you will see two folder trees. The one on the left is your local machine and the one on the right is th BBB. In WinSCP, navigate on both trees to the desired folders and select the files to transfer and then click "Upload" to transfer from machine → BBB and "Download" to transfer BBB → machine.</p> <p>If you can't or don't want to use WinSCP, you can do it via the terminal. In order to do that you will need <a target="_blank" href="http://www.chiark.greenend.org.uk/~sgtatham/putty/download.html">PSCP</a>, which does not have a Graphic Interface but it runs from the Command Windows (Terminal). Once you download it, you can append the folder name where the pscp.exe file is, in the PATH variable. If not, you can navigate in the terminal to the folder where the pscp.exe file is and execute there the following command: <span class="inlineCode">pscp -r "[local FORTE path]" [BBB username]@[ip]:[remote FORTE folder]</span> where <span class="folderLocation">[local FORTE path]</span> is the folder on the windows machine where the source code of FORTE is, <span class="specificText">[BBB username]</span> is the login user for the BBB, <span class="address">[ip]</span> is the IP address of the BBB, and <span class="fileLocation">[remote FORTE folder]</span> is the folder where to copy the files in the BBB. - The -r option indicates to copy recursively all the folders. An example of the command could be <span class="inlineCode">pscp.exe -r "c:\Users\JohnDoe\Documents\forte_repository" root@192.168.7.2:/root/bbb_forte_repository</span></p> + The -r option indicates to copy recursively all the folders. An example of the command could be <span class="inlineCode">pscp.exe -r "c:\Users\JohnDoe\Documents\forte_repository" root@192.168.7.2:/root/bbb_forte_re... [truncated message content] |
From: <for...@li...> - 2017-08-09 11:38:45
|
details: http://fordiac.hg.sourceforge.net/hgweb/fordiac/fordiac-ide/rev/a578a01c04e2 changeset: 3056:a578a01c04e2 user: Monika Wenger date: Wed Aug 09 13:38:29 2017 +0200 description: [511174] support composite function blocks for lua export - fix lua code generation for fanned out data connections diffstat: plugins/org.eclipse.fordiac.ide.export.forte_lua/src/org/eclipse/fordiac/ide/export/forte_lua/filter/CompositeFBFilter.xtend | 2 +- plugins/org.eclipse.fordiac.ide.export.forte_lua/xtend-gen/org/eclipse/fordiac/ide/export/forte_lua/filter/CompositeFBFilter.java | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diffs (29 lines): diff -r 4697decff083 -r a578a01c04e2 plugins/org.eclipse.fordiac.ide.export.forte_lua/src/org/eclipse/fordiac/ide/export/forte_lua/filter/CompositeFBFilter.xtend --- a/plugins/org.eclipse.fordiac.ide.export.forte_lua/src/org/eclipse/fordiac/ide/export/forte_lua/filter/CompositeFBFilter.xtend Mon Aug 07 17:44:00 2017 +0200 +++ b/plugins/org.eclipse.fordiac.ide.export.forte_lua/src/org/eclipse/fordiac/ide/export/forte_lua/filter/CompositeFBFilter.xtend Wed Aug 09 13:38:29 2017 +0200 @@ -159,7 +159,7 @@ «IF null != dne» {connectionNum = «org.eclipse.fordiac.ide.export.forte_lua.filter.CompositeFBFilter.getConnectionNumber(conList, con)», «dne.luaConnectionString(con.destination, numAdapters, type, "dst")»} «ELSE» - {"«con.destination.name»", -1} + {dstID = "«con.destination.name»", dstFBNum = -1} «ENDIF» «ENDFOR» }''' diff -r 4697decff083 -r a578a01c04e2 plugins/org.eclipse.fordiac.ide.export.forte_lua/xtend-gen/org/eclipse/fordiac/ide/export/forte_lua/filter/CompositeFBFilter.java --- a/plugins/org.eclipse.fordiac.ide.export.forte_lua/xtend-gen/org/eclipse/fordiac/ide/export/forte_lua/filter/CompositeFBFilter.java Mon Aug 07 17:44:00 2017 +0200 +++ b/plugins/org.eclipse.fordiac.ide.export.forte_lua/xtend-gen/org/eclipse/fordiac/ide/export/forte_lua/filter/CompositeFBFilter.java Wed Aug 09 13:38:29 2017 +0200 @@ -583,11 +583,11 @@ _builder.append("}"); _builder.newLineIfNotEmpty(); } else { - _builder.append("{\""); + _builder.append("{dstID = \""); VarDeclaration _destination_2 = con.getDestination(); String _name = _destination_2.getName(); _builder.append(_name, ""); - _builder.append("\", -1}"); + _builder.append("\", dstFBNum = -1}"); _builder.newLineIfNotEmpty(); } } |
From: <for...@li...> - 2017-08-07 15:44:24
|
details: http://fordiac.hg.sourceforge.net/hgweb/fordiac/fordiac-ide/rev/4697decff083 changeset: 3055:4697decff083 user: Monika Wenger date: Mon Aug 07 17:44:00 2017 +0200 description: Etikett initial contribution zum ?nderungssatz 409dbfdcdf64 hinzugef?gt diffstat: .hgtags | 1 + 1 files changed, 1 insertions(+), 0 deletions(-) diffs (8 lines): diff -r 409dbfdcdf64 -r 4697decff083 .hgtags --- a/.hgtags Sun Aug 06 22:29:00 2017 +0200 +++ b/.hgtags Mon Aug 07 17:44:00 2017 +0200 @@ -33,3 +33,4 @@ 334ebfb7639e883a4e9a41e0606be6568f422706 1.8.2 12100c1ba2d95e9f4720ea696b07bb5eb6e7f372 1.8.3 37c81adb17d45e96fcdc6f46b736d163783685ad 1.8.4 +409dbfdcdf64ee01cd1ad5e2f4b8d655a7290c25 initial contribution |