From 978519a5014187722b5b5a75db85f0fc2d7e5212 Mon Sep 17 00:00:00 2001 From: vincent Date: Wed, 17 Feb 2016 18:38:05 +0100 Subject: [PATCH 01/13] Initial input for arduino exploration democ --- .../fr.obeo.dsl.arduino.build/.classpath | 7 + .../fr.obeo.dsl.arduino.build/.project | 28 + .../.settings/org.eclipse.jdt.core.prefs | 7 + .../META-INF/MANIFEST.MF | 12 + .../build.properties | 4 + .../fr.obeo.dsl.arduino.build/pom.xml | 42 + .../dsl/arduino/build/ArduinoBuilder.java | 565 + .../build/ArduinoBuilderActivator.java | 77 + .../fr.obeo.dsl.arduino.design/.classpath | 7 + .../fr.obeo.dsl.arduino.design/.gitignore | 1 + .../fr.obeo.dsl.arduino.design/.project | 35 + .../META-INF/MANIFEST.MF | 25 + .../build.properties | 12 + .../description/arduino.odesign | 1511 +++ .../icons/Constant.gif | Bin 0 -> 314 bytes .../icons/Constant.png | Bin 0 -> 565 bytes .../icons/Constant.svg | 60 + .../icons/Delay.gif | Bin 0 -> 861 bytes .../icons/Delay.png | Bin 0 -> 334 bytes .../icons/Delay.svg | 18 + .../icons/Equal.gif | Bin 0 -> 144 bytes .../icons/Equal.png | Bin 0 -> 346 bytes .../icons/Equal.svg | 64 + .../fr.obeo.dsl.arduino.design/icons/Flow.gif | Bin 0 -> 852 bytes .../fr.obeo.dsl.arduino.design/icons/Flow.png | Bin 0 -> 267 bytes .../fr.obeo.dsl.arduino.design/icons/Flow.svg | 19 + .../icons/Function.png | Bin 0 -> 398 bytes .../fr.obeo.dsl.arduino.design/icons/If.gif | Bin 0 -> 861 bytes .../fr.obeo.dsl.arduino.design/icons/If.png | Bin 0 -> 364 bytes .../fr.obeo.dsl.arduino.design/icons/If.svg | 20 + .../icons/Level.gif | Bin 0 -> 856 bytes .../icons/Level.png | Bin 0 -> 343 bytes .../icons/Level.svg | 16 + .../icons/Lower.png | Bin 0 -> 516 bytes .../icons/Lower.svg | 64 + .../icons/LowerOrEqual.png | Bin 0 -> 451 bytes .../icons/LowerOrEqual.svg | 65 + .../icons/Minus.png | Bin 0 -> 296 bytes .../icons/Minus.svg | 65 + .../icons/Module.gif | Bin 0 -> 860 bytes .../icons/Module.png | Bin 0 -> 360 bytes .../icons/Module.svg | 51 + .../icons/Parameter.png | Bin 0 -> 361 bytes .../icons/Platform.gif | Bin 0 -> 854 bytes .../icons/Platform.png | Bin 0 -> 340 bytes .../icons/Platform.svg | 56 + .../fr.obeo.dsl.arduino.design/icons/Plus.png | Bin 0 -> 380 bytes .../fr.obeo.dsl.arduino.design/icons/Plus.svg | 65 + .../icons/Repeat.gif | Bin 0 -> 859 bytes .../icons/Repeat.png | Bin 0 -> 357 bytes .../icons/Repeat.svg | 15 + .../icons/Sensor.gif | Bin 0 -> 862 bytes .../icons/Sensor.png | Bin 0 -> 347 bytes .../icons/Sensor.svg | 18 + .../fr.obeo.dsl.arduino.design/icons/Set.gif | Bin 0 -> 202 bytes .../fr.obeo.dsl.arduino.design/icons/Set.png | Bin 0 -> 369 bytes .../fr.obeo.dsl.arduino.design/icons/Set.svg | 56 + .../icons/Status.gif | Bin 0 -> 863 bytes .../icons/Status.png | Bin 0 -> 356 bytes .../icons/Status.svg | 14 + .../icons/Upper.png | Bin 0 -> 501 bytes .../icons/Upper.svg | 64 + .../icons/UpperOrEqual.png | Bin 0 -> 448 bytes .../icons/UpperOrEqual.svg | 64 + .../icons/UseFunction.png | Bin 0 -> 450 bytes .../icons/Variable.gif | Bin 0 -> 314 bytes .../icons/Variable.png | Bin 0 -> 567 bytes .../icons/Variable.svg | 60 + .../icons/While.gif | Bin 0 -> 854 bytes .../icons/While.png | Bin 0 -> 314 bytes .../icons/While.svg | 13 + .../fr.obeo.dsl.arduino.design/icons/Wire.gif | Bin 0 -> 855 bytes .../fr.obeo.dsl.arduino.design/icons/Wire.png | Bin 0 -> 278 bytes .../fr.obeo.dsl.arduino.design/icons/Wire.svg | 19 + .../icons/channel_16x16.png | Bin 0 -> 680 bytes .../icons/channel_32x32.png | Bin 0 -> 1373 bytes .../icons/thread_16x16.png | Bin 0 -> 817 bytes .../icons/thread_32x32.png | Bin 0 -> 2071 bytes .../icons/thread_64x64.png | Bin 0 -> 5290 bytes .../images/analog.png | Bin 0 -> 844 bytes .../images/analog.svg | 18 + .../images/analog_input.png | Bin 0 -> 522 bytes .../images/analog_input.svg | 59 + .../images/analog_output.png | Bin 0 -> 489 bytes .../images/analog_output.svg | 58 + .../images/connector.png | Bin 0 -> 445 bytes .../images/connector.svg | 21 + .../images/default.svg | 56 + .../images/delay.svg | 18 + .../images/delete.svg | 55 + .../images/dfrobot/ambient_light.jpg | Bin 0 -> 2820 bytes .../images/dfrobot/blue_led.jpg | Bin 0 -> 3396 bytes .../images/dfrobot/buzzer.jpg | Bin 0 -> 6412 bytes .../images/dfrobot/default.svg | 56 + .../images/dfrobot/dfrduino_uno.jpg | Bin 0 -> 12655 bytes .../images/dfrobot/infrared.jpg | Bin 0 -> 2018 bytes .../images/dfrobot/platform.svg | 56 + .../images/dfrobot/push_button.jpg | Bin 0 -> 2564 bytes .../images/dfrobot/red_led.jpg | Bin 0 -> 3426 bytes .../images/dfrobot/rotation_sensor_v1.jpg | Bin 0 -> 2615 bytes .../images/dfrobot/servo.jpg | Bin 0 -> 2231 bytes .../images/dfrobot/sound_sensor.jpg | Bin 0 -> 2814 bytes .../images/dfrobot/white_led.jpg | Bin 0 -> 3212 bytes .../images/digital.png | Bin 0 -> 936 bytes .../images/digital.svg | 21 + .../images/digital_input.png | Bin 0 -> 573 bytes .../images/digital_input.svg | 56 + .../images/digital_output.png | Bin 0 -> 579 bytes .../images/digital_output.svg | 55 + .../images/existing_hardware.svg | 57 + .../images/existing_hardwareKit.svg | 56 + .../images/existing_sketch.png | Bin 0 -> 529 bytes .../images/existing_sketch.svg | 57 + .../fr.obeo.dsl.arduino.design/images/fan.jpg | Bin 0 -> 3947 bytes .../images/hardware.svg | 51 + .../images/hardwareKit.svg | 52 + .../images/hardware_invalid.svg | 52 + .../images/loop.svg | 14 + .../images/loop_invalid.svg | 50 + .../images/music_player.jpg | Bin 0 -> 7851 bytes .../images/platform.png | Bin 0 -> 646 bytes .../images/platform.svg | 56 + .../images/software.svg | 51 + .../images/software_invalid.svg | 52 + .../images/upload.svg | 53 + .../images/upload_invalid.svg | 54 + .../fr.obeo.dsl.arduino.design/plugin.xml | 10 + .../fr.obeo.dsl.arduino.design/pom.xml | 42 + .../resources/ArdublockKit.arduino | 110 + .../arduino/design/ArduinoDesignerPlugin.java | 78 + .../arduino/design/ArduinoDesignerUtils.java | 50 + .../design/services/ArduinoServices.java | 985 ++ .../fr.obeo.dsl.arduino.edit/.classpath | 7 + .../fr.obeo.dsl.arduino.edit/.project | 28 + .../META-INF/MANIFEST.MF | 15 + .../fr.obeo.dsl.arduino.edit/build.properties | 17 + ...ateAnalogPin_module_AmbientLightSensor.gif | Bin 0 -> 223 bytes .../CreateAnalogPin_module_MusicPlayer.gif | Bin 0 -> 223 bytes .../CreateAnalogPin_module_RotationSensor.gif | Bin 0 -> 223 bytes .../CreateAnalogPin_module_SoundSensor.gif | Bin 0 -> 223 bytes ...reateArduinoBoard_analogPins_AnalogPin.gif | Bin 0 -> 223 bytes ...ateArduinoBoard_digitalPins_DigitalPin.gif | Bin 0 -> 223 bytes ...gnment_operand_BinaryBooleanExpression.gif | Bin 0 -> 223 bytes ...gnment_operand_BinaryIntegerExpression.gif | Bin 0 -> 223 bytes ...eateAssignment_operand_BooleanConstant.gif | Bin 0 -> 223 bytes ...ateAssignment_operand_BooleanModuleGet.gif | Bin 0 -> 223 bytes ...eateAssignment_operand_BooleanVariable.gif | Bin 0 -> 223 bytes ...eateAssignment_operand_IntegerConstant.gif | Bin 0 -> 223 bytes ...ateAssignment_operand_IntegerModuleGet.gif | Bin 0 -> 223 bytes ...signment_operand_IntegerSharedResource.gif | Bin 0 -> 223 bytes ...signment_operand_IntegerSharedVariable.gif | Bin 0 -> 223 bytes ...eateAssignment_operand_IntegerVariable.gif | Bin 0 -> 223 bytes ...reateAssignment_operand_SharedResource.gif | Bin 0 -> 223 bytes ...reateAssignment_operand_SharedVariable.gif | Bin 0 -> 223 bytes ...ssignment_operand_SharedVariableAccess.gif | Bin 0 -> 223 bytes ...ignment_operand_UnaryBooleanExpression.gif | Bin 0 -> 223 bytes ...ignment_operand_UnaryIntegerExpression.gif | Bin 0 -> 223 bytes .../CreateAssignment_operand_VariableRef.gif | Bin 0 -> 223 bytes ...xpression_left_BinaryBooleanExpression.gif | Bin 0 -> 223 bytes ...xpression_left_BinaryIntegerExpression.gif | Bin 0 -> 223 bytes ...eBinaryExpression_left_BooleanConstant.gif | Bin 0 -> 223 bytes ...BinaryExpression_left_BooleanModuleGet.gif | Bin 0 -> 223 bytes ...eBinaryExpression_left_BooleanVariable.gif | Bin 0 -> 223 bytes ...eBinaryExpression_left_IntegerConstant.gif | Bin 0 -> 223 bytes ...BinaryExpression_left_IntegerModuleGet.gif | Bin 0 -> 223 bytes ...yExpression_left_IntegerSharedResource.gif | Bin 0 -> 223 bytes ...yExpression_left_IntegerSharedVariable.gif | Bin 0 -> 223 bytes ...eBinaryExpression_left_IntegerVariable.gif | Bin 0 -> 223 bytes ...teBinaryExpression_left_SharedResource.gif | Bin 0 -> 223 bytes ...teBinaryExpression_left_SharedVariable.gif | Bin 0 -> 223 bytes ...ryExpression_left_SharedVariableAccess.gif | Bin 0 -> 223 bytes ...Expression_left_UnaryBooleanExpression.gif | Bin 0 -> 223 bytes ...Expression_left_UnaryIntegerExpression.gif | Bin 0 -> 223 bytes ...reateBinaryExpression_left_VariableRef.gif | Bin 0 -> 223 bytes ...pression_right_BinaryBooleanExpression.gif | Bin 0 -> 223 bytes ...pression_right_BinaryIntegerExpression.gif | Bin 0 -> 223 bytes ...BinaryExpression_right_BooleanConstant.gif | Bin 0 -> 223 bytes ...inaryExpression_right_BooleanModuleGet.gif | Bin 0 -> 223 bytes ...BinaryExpression_right_BooleanVariable.gif | Bin 0 -> 223 bytes ...BinaryExpression_right_IntegerConstant.gif | Bin 0 -> 223 bytes ...inaryExpression_right_IntegerModuleGet.gif | Bin 0 -> 223 bytes ...Expression_right_IntegerSharedResource.gif | Bin 0 -> 223 bytes ...Expression_right_IntegerSharedVariable.gif | Bin 0 -> 223 bytes ...BinaryExpression_right_IntegerVariable.gif | Bin 0 -> 223 bytes ...eBinaryExpression_right_SharedResource.gif | Bin 0 -> 223 bytes ...eBinaryExpression_right_SharedVariable.gif | Bin 0 -> 223 bytes ...yExpression_right_SharedVariableAccess.gif | Bin 0 -> 223 bytes ...xpression_right_UnaryBooleanExpression.gif | Bin 0 -> 223 bytes ...xpression_right_UnaryIntegerExpression.gif | Bin 0 -> 223 bytes ...eateBinaryExpression_right_VariableRef.gif | Bin 0 -> 223 bytes ...ructionBlocks_AbstractInstructionBlock.gif | Bin 0 -> 223 bytes ...ractInstructionBlocks_InstructionBlock.gif | Bin 0 -> 223 bytes ...InstructionBlocks_SynchronizationBlock.gif | Bin 0 -> 223 bytes ...ock_instructionBlocks_InstructionBlock.gif | Bin 0 -> 223 bytes .../CreateBlock_instructions_Block.gif | Bin 0 -> 223 bytes .../CreateBlock_instructions_Delay.gif | Bin 0 -> 223 bytes .../ctool16/CreateBlock_instructions_If.gif | Bin 0 -> 223 bytes ...ateBlock_instructions_ModuleAssignment.gif | Bin 0 -> 223 bytes .../CreateBlock_instructions_Repeat.gif | Bin 0 -> 223 bytes .../CreateBlock_instructions_Sketch.gif | Bin 0 -> 223 bytes ...reateBlock_instructions_Synchonization.gif | Bin 0 -> 223 bytes ...eateBlock_instructions_Synchronization.gif | Bin 0 -> 223 bytes ...eBlock_instructions_VariableAssignment.gif | Bin 0 -> 223 bytes ...Block_instructions_VariableDeclaration.gif | Bin 0 -> 223 bytes .../CreateBlock_instructions_While.gif | Bin 0 -> 223 bytes ...Block_synchronizations_Synchronization.gif | Bin 0 -> 223 bytes .../ctool16/CreateControl_block_Block.gif | Bin 0 -> 223 bytes .../CreateControl_block_InstructionBlock.gif | Bin 0 -> 223 bytes .../ctool16/CreateControl_block_Sketch.gif | Bin 0 -> 223 bytes .../ctool16/CreateControl_block_Thread.gif | Bin 0 -> 223 bytes .../CreateControl_instructions_Delay.gif | Bin 0 -> 223 bytes .../ctool16/CreateControl_instructions_If.gif | Bin 0 -> 223 bytes ...eControl_instructions_ModuleAssignment.gif | Bin 0 -> 223 bytes .../CreateControl_instructions_Repeat.gif | Bin 0 -> 223 bytes .../CreateControl_instructions_Sketch.gif | Bin 0 -> 223 bytes ...ontrol_instructions_VariableAssignment.gif | Bin 0 -> 223 bytes ...ntrol_instructions_VariableDeclaration.gif | Bin 0 -> 223 bytes .../CreateControl_instructions_While.gif | Bin 0 -> 223 bytes .../CreateDigitalPin_module_Buzzer.gif | Bin 0 -> 223 bytes .../ctool16/CreateDigitalPin_module_Fan.gif | Bin 0 -> 223 bytes ...CreateDigitalPin_module_InfraRedSensor.gif | Bin 0 -> 223 bytes .../ctool16/CreateDigitalPin_module_LED.gif | Bin 0 -> 223 bytes .../CreateDigitalPin_module_MicroServo.gif | Bin 0 -> 223 bytes .../CreateDigitalPin_module_PushButton.gif | Bin 0 -> 223 bytes .../CreateHardware_connectors_Connector.gif | Bin 0 -> 223 bytes .../full/ctool16/CreateIf_elseBlock_Block.gif | Bin 0 -> 223 bytes .../CreateIf_elseBlock_InstructionBlock.gif | Bin 0 -> 223 bytes ...ateInstructionBlock_instructions_Delay.gif | Bin 0 -> 223 bytes ...CreateInstructionBlock_instructions_If.gif | Bin 0 -> 223 bytes ...ionBlock_instructions_ModuleAssignment.gif | Bin 0 -> 223 bytes ...teInstructionBlock_instructions_Repeat.gif | Bin 0 -> 223 bytes ...nBlock_instructions_VariableAssignment.gif | Bin 0 -> 223 bytes ...Block_instructions_VariableDeclaration.gif | Bin 0 -> 223 bytes ...ateInstructionBlock_instructions_While.gif | Bin 0 -> 223 bytes .../CreatePlatform_analogPins_AnalogPin.gif | Bin 0 -> 223 bytes .../CreatePlatform_digitalPins_DigitalPin.gif | Bin 0 -> 223 bytes .../CreateProject_board_ArduinoBoard.gif | Bin 0 -> 223 bytes .../CreateProject_boards_ArduinoBoard.gif | Bin 0 -> 223 bytes .../CreateProject_hardware_Hardware.gif | Bin 0 -> 223 bytes .../full/ctool16/CreateProject_links_Link.gif | Bin 0 -> 223 bytes .../CreateProject_modules_Actuator.gif | Bin 0 -> 223 bytes ...eateProject_modules_AmbientLightSensor.gif | Bin 0 -> 223 bytes .../ctool16/CreateProject_modules_Buzzer.gif | Bin 0 -> 223 bytes .../ctool16/CreateProject_modules_Fan.gif | Bin 0 -> 223 bytes .../CreateProject_modules_InfraRedSensor.gif | Bin 0 -> 223 bytes .../ctool16/CreateProject_modules_LED.gif | Bin 0 -> 223 bytes .../CreateProject_modules_MicroServo.gif | Bin 0 -> 223 bytes .../CreateProject_modules_MusicPlayer.gif | Bin 0 -> 223 bytes .../CreateProject_modules_PushButton.gif | Bin 0 -> 223 bytes .../CreateProject_modules_RotationSensor.gif | Bin 0 -> 223 bytes .../ctool16/CreateProject_modules_Sensor.gif | Bin 0 -> 223 bytes .../CreateProject_modules_SoundSensor.gif | Bin 0 -> 223 bytes .../CreateProject_platform_Platform.gif | Bin 0 -> 223 bytes .../ctool16/CreateProject_sketch_Sketch.gif | Bin 0 -> 223 bytes ...haredResource_variable_BooleanVariable.gif | Bin 0 -> 223 bytes ...haredResource_variable_IntegerVariable.gif | Bin 0 -> 223 bytes .../full/ctool16/CreateSketch_block_Block.gif | Bin 0 -> 223 bytes .../ctool16/CreateSketch_block_Thread.gif | Bin 0 -> 223 bytes .../ctool16/CreateSketch_channel_Channel.gif | Bin 0 -> 223 bytes .../ctool16/CreateSketch_channels_Channel.gif | Bin 0 -> 223 bytes .../CreateSketch_instructions_Delay.gif | Bin 0 -> 223 bytes .../ctool16/CreateSketch_instructions_If.gif | Bin 0 -> 223 bytes ...teSketch_instructions_ModuleAssignment.gif | Bin 0 -> 223 bytes .../CreateSketch_instructions_Repeat.gif | Bin 0 -> 223 bytes .../CreateSketch_instructions_Sketch.gif | Bin 0 -> 223 bytes ...Sketch_instructions_VariableAssignment.gif | Bin 0 -> 223 bytes ...ketch_instructions_VariableDeclaration.gif | Bin 0 -> 223 bytes .../CreateSketch_instructions_While.gif | Bin 0 -> 223 bytes ..._sharedResources_IntegerSharedResource.gif | Bin 0 -> 223 bytes ..._sharedResources_IntegerSharedVariable.gif | Bin 0 -> 223 bytes ...eSketch_sharedResources_SharedResource.gif | Bin 0 -> 223 bytes ...eSketch_sharedResources_SharedVariable.gif | Bin 0 -> 223 bytes ...ketch_threadConnectors_ThreadConnector.gif | Bin 0 -> 223 bytes .../ctool16/CreateSketch_threads_Thread.gif | Bin 0 -> 223 bytes ...eThread_accessors_SharedVariableAccess.gif | Bin 0 -> 223 bytes .../full/ctool16/CreateThread_block_Block.gif | Bin 0 -> 223 bytes .../CreateThread_block_InstructionBlock.gif | Bin 0 -> 223 bytes ...reateThread_block_SynchronizationBlock.gif | Bin 0 -> 223 bytes .../ctool16/CreateThread_blocks_Block.gif | Bin 0 -> 223 bytes .../CreateThread_blocks_InstructionBlock.gif | Bin 0 -> 223 bytes ...eateThread_blocks_SynchronizationBlock.gif | Bin 0 -> 223 bytes ...ession_operand_BinaryBooleanExpression.gif | Bin 0 -> 223 bytes ...ession_operand_BinaryIntegerExpression.gif | Bin 0 -> 223 bytes ...naryExpression_operand_BooleanConstant.gif | Bin 0 -> 223 bytes ...aryExpression_operand_BooleanModuleGet.gif | Bin 0 -> 223 bytes ...naryExpression_operand_BooleanVariable.gif | Bin 0 -> 223 bytes ...naryExpression_operand_IntegerConstant.gif | Bin 0 -> 223 bytes ...aryExpression_operand_IntegerModuleGet.gif | Bin 0 -> 223 bytes ...pression_operand_IntegerSharedResource.gif | Bin 0 -> 223 bytes ...pression_operand_IntegerSharedVariable.gif | Bin 0 -> 223 bytes ...naryExpression_operand_IntegerVariable.gif | Bin 0 -> 223 bytes ...UnaryExpression_operand_SharedResource.gif | Bin 0 -> 223 bytes ...UnaryExpression_operand_SharedVariable.gif | Bin 0 -> 223 bytes ...xpression_operand_SharedVariableAccess.gif | Bin 0 -> 223 bytes ...ression_operand_UnaryBooleanExpression.gif | Bin 0 -> 223 bytes ...ression_operand_UnaryIntegerExpression.gif | Bin 0 -> 223 bytes ...ateUnaryExpression_operand_VariableRef.gif | Bin 0 -> 223 bytes ...leDeclaration_variable_BooleanVariable.gif | Bin 0 -> 223 bytes ...aration_variable_IntegerSharedVariable.gif | Bin 0 -> 223 bytes ...leDeclaration_variable_IntegerVariable.gif | Bin 0 -> 223 bytes ...bleDeclaration_variable_SharedResource.gif | Bin 0 -> 223 bytes ...bleDeclaration_variable_SharedVariable.gif | Bin 0 -> 223 bytes ...laration_variable_SharedVariableAccess.gif | Bin 0 -> 223 bytes .../full/obj16/AbstractInstructionBlock.gif | Bin 0 -> 129 bytes .../icons/full/obj16/Actuator.gif | Bin 0 -> 129 bytes .../icons/full/obj16/AmbientLightSensor.gif | Bin 0 -> 129 bytes .../icons/full/obj16/AnalogPin.gif | Bin 0 -> 129 bytes .../icons/full/obj16/ArduinoBoard.gif | Bin 0 -> 129 bytes .../full/obj16/BinaryBooleanExpression.gif | Bin 0 -> 129 bytes .../full/obj16/BinaryIntegerExpression.gif | Bin 0 -> 129 bytes .../icons/full/obj16/Block.gif | Bin 0 -> 129 bytes .../icons/full/obj16/BooleanConstant.gif | Bin 0 -> 129 bytes .../icons/full/obj16/BooleanExpression.gif | Bin 0 -> 129 bytes .../icons/full/obj16/BooleanModuleGet.gif | Bin 0 -> 129 bytes .../icons/full/obj16/BooleanVariable.gif | Bin 0 -> 129 bytes .../icons/full/obj16/Buzzer.gif | Bin 0 -> 129 bytes .../icons/full/obj16/Channel.gif | Bin 0 -> 129 bytes .../icons/full/obj16/Connector.gif | Bin 0 -> 129 bytes .../icons/full/obj16/Constant.gif | Bin 0 -> 129 bytes .../icons/full/obj16/Delay.gif | Bin 0 -> 129 bytes .../icons/full/obj16/DigitalPin.gif | Bin 0 -> 129 bytes .../icons/full/obj16/Fan.gif | Bin 0 -> 129 bytes .../icons/full/obj16/Hardware.gif | Bin 0 -> 129 bytes .../icons/full/obj16/If.gif | Bin 0 -> 129 bytes .../icons/full/obj16/InfraRedSensor.gif | Bin 0 -> 129 bytes .../icons/full/obj16/InstructionBlock.gif | Bin 0 -> 129 bytes .../icons/full/obj16/IntegerConstant.gif | Bin 0 -> 129 bytes .../icons/full/obj16/IntegerModuleGet.gif | Bin 0 -> 129 bytes .../full/obj16/IntegerSharedResource.gif | Bin 0 -> 129 bytes .../full/obj16/IntegerSharedVariable.gif | Bin 0 -> 129 bytes .../icons/full/obj16/IntegerVariable.gif | Bin 0 -> 129 bytes .../icons/full/obj16/LED.gif | Bin 0 -> 129 bytes .../icons/full/obj16/Link.gif | Bin 0 -> 129 bytes .../icons/full/obj16/MicroServo.gif | Bin 0 -> 129 bytes .../icons/full/obj16/ModuleAssignment.gif | Bin 0 -> 129 bytes .../icons/full/obj16/ModuleGet.gif | Bin 0 -> 129 bytes .../icons/full/obj16/MusicPlayer.gif | Bin 0 -> 129 bytes .../icons/full/obj16/Platform.gif | Bin 0 -> 129 bytes .../icons/full/obj16/Project.gif | Bin 0 -> 129 bytes .../icons/full/obj16/PushButton.gif | Bin 0 -> 129 bytes .../icons/full/obj16/Repeat.gif | Bin 0 -> 129 bytes .../icons/full/obj16/RotationSensor.gif | Bin 0 -> 129 bytes .../icons/full/obj16/Sensor.gif | Bin 0 -> 129 bytes .../icons/full/obj16/SharedResource.gif | Bin 0 -> 129 bytes .../icons/full/obj16/SharedVariable.gif | Bin 0 -> 129 bytes .../icons/full/obj16/SharedVariableAccess.gif | Bin 0 -> 129 bytes .../icons/full/obj16/Sketch.gif | Bin 0 -> 129 bytes .../icons/full/obj16/SoundSensor.gif | Bin 0 -> 129 bytes .../icons/full/obj16/Synchonization.gif | Bin 0 -> 129 bytes .../icons/full/obj16/Synchronization.gif | Bin 0 -> 129 bytes .../icons/full/obj16/SynchronizationBlock.gif | Bin 0 -> 129 bytes .../icons/full/obj16/Thread.gif | Bin 0 -> 129 bytes .../icons/full/obj16/ThreadConnector.gif | Bin 0 -> 129 bytes .../full/obj16/UnaryBooleanExpression.gif | Bin 0 -> 129 bytes .../full/obj16/UnaryIntegerExpression.gif | Bin 0 -> 129 bytes .../icons/full/obj16/Variable.gif | Bin 0 -> 129 bytes .../icons/full/obj16/VariableAssignment.gif | Bin 0 -> 129 bytes .../icons/full/obj16/VariableDeclaration.gif | Bin 0 -> 129 bytes .../icons/full/obj16/VariableRef.gif | Bin 0 -> 129 bytes .../icons/full/obj16/While.gif | Bin 0 -> 129 bytes .../plugin.properties | 239 + .../fr.obeo.dsl.arduino.edit/plugin.xml | 30 + .../AmbientLightSensorItemProvider.java | 107 + .../provider/AnalogPinItemProvider.java | 166 + .../ArduinoAnalogModuleItemProvider.java | 96 + .../provider/ArduinoBoardItemProvider.java | 160 + .../ArduinoDigitalModuleItemProvider.java | 96 + .../arduino/provider/ArduinoEditPlugin.java | 97 + .../ArduinoItemProviderAdapterFactory.java | 1095 ++ .../provider/ArduinoModuleItemProvider.java | 129 + .../provider/AssignmentItemProvider.java | 192 + .../BinaryBooleanExpressionItemProvider.java | 165 + .../BinaryExpressionItemProvider.java | 269 + .../BinaryIntegerExpressionItemProvider.java | 165 + .../arduino/provider/BoardItemProvider.java | 121 + .../provider/BooleanConstantItemProvider.java | 138 + .../BooleanExpressionItemProvider.java | 102 + .../BooleanModuleGetItemProvider.java | 102 + .../provider/BooleanVariableItemProvider.java | 164 + .../arduino/provider/BuzzerItemProvider.java | 107 + .../arduino/provider/ChannelItemProvider.java | 258 + .../provider/ConstantItemProvider.java | 102 + .../arduino/provider/ControlItemProvider.java | 142 + .../arduino/provider/DelayItemProvider.java | 164 + .../provider/DigitalPinItemProvider.java | 176 + .../provider/ExpressionItemProvider.java | 117 + .../dsl/arduino/provider/FanItemProvider.java | 107 + .../dsl/arduino/provider/IfItemProvider.java | 200 + .../provider/InfraRedSensorItemProvider.java | 107 + .../InstructionBlockItemProvider.java | 230 + .../provider/InstructionItemProvider.java | 98 + .../provider/IntegerConstantItemProvider.java | 138 + .../IntegerExpressionItemProvider.java | 91 + .../IntegerModuleGetItemProvider.java | 102 + .../provider/IntegerVariableItemProvider.java | 164 + .../dsl/arduino/provider/LEDItemProvider.java | 107 + .../arduino/provider/LinkItemProvider.java | 155 + .../provider/MicroServoItemProvider.java | 107 + .../ModuleAssignmentItemProvider.java | 203 + .../provider/ModuleGetItemProvider.java | 128 + .../ModuleInstructionItemProvider.java | 121 + .../provider/MusicPlayerItemProvider.java | 107 + .../provider/NamedElementItemProvider.java | 155 + .../dsl/arduino/provider/PinItemProvider.java | 177 + .../arduino/provider/ProjectItemProvider.java | 167 + .../provider/PushButtonItemProvider.java | 107 + .../arduino/provider/RepeatItemProvider.java | 140 + .../provider/RotationSensorItemProvider.java | 107 + .../arduino/provider/SketchItemProvider.java | 160 + .../provider/SoundSensorItemProvider.java | 107 + .../SynchronizationBlockItemProvider.java | 155 + .../ThreadInstructionBlockItemProvider.java | 96 + .../arduino/provider/ThreadItemProvider.java | 277 + .../UnaryBooleanExpressionItemProvider.java | 142 + .../provider/UnaryExpressionItemProvider.java | 189 + .../UnaryIntegerExpressionItemProvider.java | 142 + .../provider/UtilitiesItemProvider.java | 96 + .../VariableAssignmentItemProvider.java | 227 + .../VariableDeclarationItemProvider.java | 158 + .../provider/VariableItemProvider.java | 140 + .../provider/VariableRefItemProvider.java | 128 + .../arduino/provider/WhileItemProvider.java | 132 + .../fr.obeo.dsl.arduino.editor/.classpath | 7 + .../fr.obeo.dsl.arduino.editor/.project | 28 + .../META-INF/MANIFEST.MF | 18 + .../build.properties | 17 + .../icons/full/obj16/ArduinoModelFile.gif | Bin 0 -> 346 bytes .../icons/full/wizban/NewArduino.gif | Bin 0 -> 2462 bytes .../plugin.properties | 60 + .../fr.obeo.dsl.arduino.editor/plugin.xml | 45 + .../ArduinoActionBarContributor.java | 431 + .../arduino/presentation/ArduinoEditor.java | 1826 +++ .../presentation/ArduinoEditorPlugin.java | 99 + .../presentation/ArduinoModelWizard.java | 636 + .../fr.obeo.dsl.arduino.gen.ui/.classpath | 7 + .../fr.obeo.dsl.arduino.gen.ui/.project | 28 + .../.settings/org.eclipse.jdt.core.prefs | 6 + .../META-INF/MANIFEST.MF | 23 + .../build.properties | 7 + .../icons/default.gif | Bin 0 -> 534 bytes .../fr.obeo.dsl.arduino.gen.ui/plugin.xml | 24 + .../fr/obeo/dsl/arduino/gen/ui/Activator.java | 66 + .../arduino/gen/ui/common/GenerateAll.java | 148 + .../popupMenus/AcceleoGenerateGenAction.java | 112 + .../fr.obeo.dsl.arduino.gen/.classpath | 7 + .../fr.obeo.dsl.arduino.gen/.project | 35 + .../META-INF/MANIFEST.MF | 23 + .../fr.obeo.dsl.arduino.gen/build.properties | 6 + .../fr.obeo.dsl.arduino.gen/pom.xml | 72 + .../fr/obeo/dsl/arduino/gen/Activator.java | 82 + .../arduino/gen/main/ArduinoGenServices.java | 188 + .../obeo/dsl/arduino/gen/main/Generate.java | 429 + .../dsl/arduino/gen/main/arduinoservices.mtl | 18 + .../fr/obeo/dsl/arduino/gen/main/generate.mtl | 258 + .../tasks/generate.xml | 71 + .../tasks/generateTarget.xml | 19 + .../.classpath | 7 + .../.gitignore | 1 + .../fr.obeo.dsl.arduino.preferences/.project | 28 + .../.settings/org.eclipse.jdt.core.prefs | 7 + .../META-INF/MANIFEST.MF | 14 + .../build.properties | 5 + .../plugin.xml | 13 + .../fr.obeo.dsl.arduino.preferences/pom.xml | 42 + .../preferences/ArduinoPreferences.java | 66 + .../preferences/ArduinoPreferencesPage.java | 57 + .../preferences/ArduinoPreferencesPlugin.java | 60 + .../arduino/preferences/ArduinoSdkDialog.java | 62 + .../fr.obeo.dsl.arduino.ui/.classpath | 7 + .../fr.obeo.dsl.arduino.ui/.gitignore | 1 + .../fr.obeo.dsl.arduino.ui/.project | 28 + .../.settings/org.eclipse.jdt.core.prefs | 7 + .../META-INF/MANIFEST.MF | 31 + .../fr.obeo.dsl.arduino.ui/build.properties | 6 + .../icons/128x128/hardware.png | Bin 0 -> 4109 bytes .../icons/128x128/hardwareHover.png | Bin 0 -> 65912 bytes .../icons/128x128/hardwareInvalid.png | Bin 0 -> 65912 bytes .../icons/128x128/hardwareInvalidHover.png | Bin 0 -> 66938 bytes .../icons/128x128/iconmonstr-bug-icon-128.png | Bin 0 -> 3290 bytes .../128x128/iconmonstr-laptop-3-icon-128.png | Bin 0 -> 1297 bytes .../icons/128x128/newProject.png | Bin 0 -> 776 bytes .../icons/128x128/newProjectHover.png | Bin 0 -> 1155 bytes .../icons/128x128/openProject.png | Bin 0 -> 801 bytes .../icons/128x128/openProjectHover.png | Bin 0 -> 1144 bytes .../icons/128x128/preferences.png | Bin 0 -> 4833 bytes .../icons/128x128/preferencesHover.png | Bin 0 -> 8614 bytes .../icons/128x128/sketch.png | Bin 0 -> 1603 bytes .../icons/128x128/sketchHover.png | Bin 0 -> 2527 bytes .../icons/128x128/sketchInvalid.png | Bin 0 -> 65912 bytes .../icons/128x128/sketchInvalidHover.png | Bin 0 -> 70076 bytes .../icons/128x128/upload.png | Bin 0 -> 2975 bytes .../icons/128x128/uploadHover.png | Bin 0 -> 4962 bytes .../icons/32x32/hardware.png | Bin 0 -> 778 bytes .../icons/32x32/newHardwareKit.png | Bin 0 -> 456 bytes .../icons/32x32/project.png | Bin 0 -> 586 bytes .../icons/32x32/simulator.png | Bin 0 -> 941 bytes .../icons/32x32/sketch.png | Bin 0 -> 498 bytes .../icons/32x32/upload.png | Bin 0 -> 535 bytes .../fr.obeo.dsl.arduino.ui/icons/svg/README | 25 + .../icons/svg/hardware.svg | 27 + .../icons/svg/hardware2.svg | 53 + .../icons/svg/newProject.svg | 19 + .../icons/svg/openProject.svg | 19 + .../icons/svg/preferences.svg | 16 + .../icons/svg/sketch.svg | 14 + .../icons/svg/upload.svg | 21 + .../fr.obeo.dsl.arduino.ui/plugin.xml | 286 + .../fr.obeo.dsl.arduino.ui/pom.xml | 42 + .../commands/DeleteProjectHandler.java | 96 + .../arduino/commands/DeleteSketchHandler.java | 25 + .../arduino/commands/NewProjectHandler.java | 34 + .../commands/OpenDashboardHandler.java | 39 + .../arduino/commands/OpenHardwareHandler.java | 33 + .../commands/OpenHardwareKitHandler.java | 41 + .../arduino/commands/OpenProjectHandler.java | 37 + .../arduino/commands/OpenSketchHandler.java | 34 + .../arduino/commands/PreferencesHandler.java | 37 + .../arduino/commands/UploadSketchHandler.java | 34 + .../dsl/arduino/menus/ArduinoUiActivator.java | 98 + .../ArduinoPerspectiveFactory.java | 24 + .../properties/ArduinoPropertyTester.java | 46 + .../dsl/arduino/utils/ArduinoServices.java | 235 + .../dsl/arduino/utils/ProjectServices.java | 340 + .../obeo/dsl/arduino/views/DashboardView.java | 376 + .../ArduinoExternalProjectImportWizard.java | 81 + ...duinoModelingProjectCreationOperation.java | 48 + .../arduino/wizard/ArduinoProjectWizard.java | 89 + .../ArduinoWizardProjectsImportPage.java | 1056 ++ .../dsl/arduino/wizard/SWTThreadingUtils.java | 44 + .../fr.obeo.dsl.arduino/.classpath | 8 + .../fr.obeo.dsl.arduino/.gitignore | 1 + .../fr.obeo.dsl.arduino/.project | 29 + .../fr.obeo.dsl.arduino/META-INF/MANIFEST.MF | 15 + .../fr.obeo.dsl.arduino/build.properties | 11 + .../model/arduino class diagram.png | Bin 0 -> 143932 bytes .../fr.obeo.dsl.arduino/model/arduino.aird | 11331 ++++++++++++++++ .../fr.obeo.dsl.arduino/model/arduino.ecore | 255 + .../model/arduino.genmodel | 376 + .../fr.obeo.dsl.arduino/plugin.properties | 4 + .../fr.obeo.dsl.arduino/plugin.xml | 16 + .../fr.obeo.dsl.arduino/pom.xml | 42 + .../fr.obeo.dsl.arduino/refactoring.txt | 21 + .../dsl/arduino/AbstractInstructionBlock.java | 25 + .../obeo/dsl/arduino/AmbientLightSensor.java | 25 + .../fr/obeo/dsl/arduino/AnalogPin.java | 57 + .../obeo/dsl/arduino/ArduinoAnalogModule.java | 25 + .../fr/obeo/dsl/arduino/ArduinoBoard.java | 65 + .../dsl/arduino/ArduinoDigitalModule.java | 25 + .../fr/obeo/dsl/arduino/ArduinoFactory.java | 383 + .../fr/obeo/dsl/arduino/ArduinoModule.java | 25 + .../fr/obeo/dsl/arduino/ArduinoPackage.java | 5072 +++++++ .../fr/obeo/dsl/arduino/Assignment.java | 57 + .../dsl/arduino/BinaryBooleanExpression.java | 60 + .../arduino/BinaryBooleanOperatorKind.java | 378 + .../fr/obeo/dsl/arduino/BinaryExpression.java | 84 + .../dsl/arduino/BinaryIntegerExpression.java | 60 + .../arduino/BinaryIntegerOperatorKind.java | 351 + .../src-gen/fr/obeo/dsl/arduino/Block.java | 79 + .../src-gen/fr/obeo/dsl/arduino/Board.java | 94 + .../fr/obeo/dsl/arduino/BooleanConstant.java | 58 + .../obeo/dsl/arduino/BooleanExpression.java | 25 + .../fr/obeo/dsl/arduino/BooleanModuleGet.java | 25 + .../fr/obeo/dsl/arduino/BooleanVariable.java | 86 + .../src-gen/fr/obeo/dsl/arduino/Buzzer.java | 25 + .../src-gen/fr/obeo/dsl/arduino/Channel.java | 210 + .../src-gen/fr/obeo/dsl/arduino/Constant.java | 25 + .../src-gen/fr/obeo/dsl/arduino/Control.java | 57 + .../src-gen/fr/obeo/dsl/arduino/Delay.java | 87 + .../fr/obeo/dsl/arduino/DigitalPin.java | 57 + .../fr/obeo/dsl/arduino/Expression.java | 26 + .../src-gen/fr/obeo/dsl/arduino/Fan.java | 25 + .../src-gen/fr/obeo/dsl/arduino/If.java | 84 + .../fr/obeo/dsl/arduino/InfraRedSensor.java | 25 + .../fr/obeo/dsl/arduino/Instruction.java | 68 + .../fr/obeo/dsl/arduino/InstructionBlock.java | 108 + .../fr/obeo/dsl/arduino/IntegerConstant.java | 58 + .../obeo/dsl/arduino/IntegerExpression.java | 25 + .../fr/obeo/dsl/arduino/IntegerModuleGet.java | 25 + .../fr/obeo/dsl/arduino/IntegerVariable.java | 86 + .../src-gen/fr/obeo/dsl/arduino/LED.java | 25 + .../src-gen/fr/obeo/dsl/arduino/Link.java | 84 + .../fr/obeo/dsl/arduino/MicroServo.java | 25 + .../src-gen/fr/obeo/dsl/arduino/Module.java | 57 + .../fr/obeo/dsl/arduino/ModuleAssignment.java | 25 + .../fr/obeo/dsl/arduino/ModuleGet.java | 57 + .../obeo/dsl/arduino/ModuleInstruction.java | 57 + .../fr/obeo/dsl/arduino/MusicPlayer.java | 25 + .../fr/obeo/dsl/arduino/NamedElement.java | 58 + .../src-gen/fr/obeo/dsl/arduino/Pin.java | 85 + .../src-gen/fr/obeo/dsl/arduino/Project.java | 97 + .../fr/obeo/dsl/arduino/PushButton.java | 25 + .../src-gen/fr/obeo/dsl/arduino/Repeat.java | 58 + .../fr/obeo/dsl/arduino/RotationSensor.java | 25 + .../src-gen/fr/obeo/dsl/arduino/Sketch.java | 94 + .../fr/obeo/dsl/arduino/SoundSensor.java | 25 + .../fr/obeo/dsl/arduino/Synchonization.java | 33 + .../fr/obeo/dsl/arduino/Synchronization.java | 33 + .../dsl/arduino/SynchronizationBlock.java | 88 + .../src-gen/fr/obeo/dsl/arduino/Thread.java | 185 + .../dsl/arduino/ThreadInstructionBlock.java | 67 + .../src-gen/fr/obeo/dsl/arduino/Time.java | 215 + .../dsl/arduino/UnaryBooleanExpression.java | 60 + .../dsl/arduino/UnaryBooleanOperatorKind.java | 189 + .../fr/obeo/dsl/arduino/UnaryExpression.java | 57 + .../dsl/arduino/UnaryIntegerExpression.java | 60 + .../dsl/arduino/UnaryIntegerOperatorKind.java | 216 + .../fr/obeo/dsl/arduino/Utilities.java | 25 + .../src-gen/fr/obeo/dsl/arduino/Variable.java | 25 + .../obeo/dsl/arduino/VariableAssignment.java | 57 + .../obeo/dsl/arduino/VariableDeclaration.java | 57 + .../fr/obeo/dsl/arduino/VariableRef.java | 57 + .../src-gen/fr/obeo/dsl/arduino/While.java | 57 + .../arduino/impl/AmbientLightSensorImpl.java | 47 + .../obeo/dsl/arduino/impl/AnalogPinImpl.java | 185 + .../arduino/impl/ArduinoAnalogModuleImpl.java | 53 + .../dsl/arduino/impl/ArduinoBoardImpl.java | 196 + .../impl/ArduinoDigitalModuleImpl.java | 53 + .../dsl/arduino/impl/ArduinoFactoryImpl.java | 704 + .../dsl/arduino/impl/ArduinoModuleImpl.java | 170 + .../dsl/arduino/impl/ArduinoPackageImpl.java | 2324 ++++ .../obeo/dsl/arduino/impl/AssignmentImpl.java | 183 + .../impl/BinaryBooleanExpressionImpl.java | 171 + .../arduino/impl/BinaryExpressionImpl.java | 249 + .../impl/BinaryIntegerExpressionImpl.java | 171 + .../fr/obeo/dsl/arduino/impl/BoardImpl.java | 263 + .../dsl/arduino/impl/BooleanConstantImpl.java | 170 + .../arduino/impl/BooleanExpressionImpl.java | 47 + .../arduino/impl/BooleanModuleGetImpl.java | 47 + .../dsl/arduino/impl/BooleanVariableImpl.java | 224 + .../fr/obeo/dsl/arduino/impl/BuzzerImpl.java | 47 + .../fr/obeo/dsl/arduino/impl/ChannelImpl.java | 528 + .../obeo/dsl/arduino/impl/ConstantImpl.java | 47 + .../fr/obeo/dsl/arduino/impl/ControlImpl.java | 182 + .../fr/obeo/dsl/arduino/impl/DelayImpl.java | 225 + .../obeo/dsl/arduino/impl/DigitalPinImpl.java | 185 + .../obeo/dsl/arduino/impl/ExpressionImpl.java | 49 + .../fr/obeo/dsl/arduino/impl/FanImpl.java | 47 + .../fr/obeo/dsl/arduino/impl/IfImpl.java | 251 + .../dsl/arduino/impl/InfraRedSensorImpl.java | 47 + .../arduino/impl/InstructionBlockImpl.java | 354 + .../dsl/arduino/impl/InstructionImpl.java | 216 + .../dsl/arduino/impl/IntegerConstantImpl.java | 170 + .../arduino/impl/IntegerExpressionImpl.java | 47 + .../arduino/impl/IntegerModuleGetImpl.java | 47 + .../dsl/arduino/impl/IntegerVariableImpl.java | 224 + .../fr/obeo/dsl/arduino/impl/LEDImpl.java | 47 + .../fr/obeo/dsl/arduino/impl/LinkImpl.java | 224 + .../obeo/dsl/arduino/impl/MicroServoImpl.java | 47 + .../arduino/impl/ModuleAssignmentImpl.java | 216 + .../obeo/dsl/arduino/impl/ModuleGetImpl.java | 164 + .../arduino/impl/ModuleInstructionImpl.java | 164 + .../dsl/arduino/impl/MusicPlayerImpl.java | 47 + .../dsl/arduino/impl/NamedElementImpl.java | 171 + .../fr/obeo/dsl/arduino/impl/PinImpl.java | 225 + .../fr/obeo/dsl/arduino/impl/ProjectImpl.java | 283 + .../obeo/dsl/arduino/impl/PushButtonImpl.java | 47 + .../fr/obeo/dsl/arduino/impl/RepeatImpl.java | 170 + .../dsl/arduino/impl/RotationSensorImpl.java | 47 + .../fr/obeo/dsl/arduino/impl/SketchImpl.java | 283 + .../dsl/arduino/impl/SoundSensorImpl.java | 47 + .../impl/SynchronizationBlockImpl.java | 305 + .../fr/obeo/dsl/arduino/impl/ThreadImpl.java | 476 + .../impl/ThreadInstructionBlockImpl.java | 213 + .../impl/UnaryBooleanExpressionImpl.java | 171 + .../dsl/arduino/impl/UnaryExpressionImpl.java | 183 + .../impl/UnaryIntegerExpressionImpl.java | 171 + .../obeo/dsl/arduino/impl/UtilitiesImpl.java | 47 + .../arduino/impl/VariableAssignmentImpl.java | 277 + .../arduino/impl/VariableDeclarationImpl.java | 183 + .../obeo/dsl/arduino/impl/VariableImpl.java | 203 + .../dsl/arduino/impl/VariableRefImpl.java | 164 + .../fr/obeo/dsl/arduino/impl/WhileImpl.java | 183 + .../arduino/util/ArduinoAdapterFactory.java | 1234 ++ .../obeo/dsl/arduino/util/ArduinoSwitch.java | 1533 +++ .../src/fr/obeo/dsl/arduino/ArduinoUtils.java | 163 + .../.classpath | 7 + .../org.gemoc.arduino.arduino.trace/.project | 28 + .../META-INF/MANIFEST.MF | 35 + .../build.properties | 10 + .../model/arduinoTrace.ecore | 172 + .../model/arduinoTrace.genmodel | 274 + .../plugin.properties | 4 + .../plugin.xml | 25 + .../src/arduinoTrace/ArduinoTraceFactory.java | 42 + .../src/arduinoTrace/ArduinoTracePackage.java | 496 + .../States/BooleanVariable_value_Value.java | 103 + .../States/IntegerVariable_value_Value.java | 103 + .../arduinoTrace/States/Pin_level_Value.java | 102 + .../src/arduinoTrace/States/State.java | 122 + .../arduinoTrace/States/StatesFactory.java | 69 + .../arduinoTrace/States/StatesPackage.java | 669 + .../States/arduino/ArduinoFactory.java | 78 + .../States/arduino/ArduinoPackage.java | 900 ++ .../States/arduino/TracedAnalogPin.java | 78 + .../arduino/TracedBooleanExpression.java | 17 + .../States/arduino/TracedBooleanVariable.java | 73 + .../States/arduino/TracedDigitalPin.java | 78 + .../States/arduino/TracedExpression.java | 18 + .../arduino/TracedIntegerExpression.java | 17 + .../States/arduino/TracedIntegerVariable.java | 73 + .../States/arduino/TracedNamedElement.java | 18 + .../States/arduino/TracedPin.java | 46 + .../States/arduino/TracedSharedResource.java | 17 + .../States/arduino/TracedVariable.java | 17 + .../arduino/impl/ArduinoFactoryImpl.java | 139 + .../arduino/impl/ArduinoPackageImpl.java | 516 + .../arduino/impl/TracedAnalogPinImpl.java | 218 + .../impl/TracedBooleanExpressionImpl.java | 39 + .../impl/TracedBooleanVariableImpl.java | 232 + .../arduino/impl/TracedDigitalPinImpl.java | 218 + .../arduino/impl/TracedExpressionImpl.java | 41 + .../impl/TracedIntegerExpressionImpl.java | 39 + .../impl/TracedIntegerVariableImpl.java | 232 + .../arduino/impl/TracedNamedElementImpl.java | 41 + .../States/arduino/impl/TracedPinImpl.java | 169 + .../impl/TracedSharedResourceImpl.java | 39 + .../arduino/impl/TracedVariableImpl.java | 39 + .../arduino/util/ArduinoAdapterFactory.java | 300 + .../States/arduino/util/ArduinoSwitch.java | 339 + .../impl/BooleanVariable_value_ValueImpl.java | 313 + .../impl/IntegerVariable_value_ValueImpl.java | 313 + .../States/impl/Pin_level_ValueImpl.java | 313 + .../arduinoTrace/States/impl/StateImpl.java | 324 + .../States/impl/StatesFactoryImpl.java | 128 + .../States/impl/StatesPackageImpl.java | 476 + .../States/util/StatesAdapterFactory.java | 174 + .../States/util/StatesSwitch.java | 173 + .../Steps/Arduino_Delay_Execute.java | 51 + ...Arduino_Delay_Execute_AbstractSubStep.java | 18 + .../Arduino_Delay_Execute_ImplicitStep.java | 17 + .../Steps/Arduino_If_Execute.java | 51 + .../Arduino_If_Execute_AbstractSubStep.java | 18 + .../Arduino_If_Execute_ImplicitStep.java | 17 + .../Arduino_ModuleAssignment_Execute.java | 51 + ...uleAssignment_Execute_AbstractSubStep.java | 18 + ...ModuleAssignment_Execute_ImplicitStep.java | 17 + .../Steps/Arduino_Project_Setup.java | 27 + .../Arduino_VariableAssignment_Execute.java | 51 + ...bleAssignment_Execute_AbstractSubStep.java | 18 + ...riableAssignment_Execute_ImplicitStep.java | 17 + .../Arduino_VariableDeclaration_Execute.java | 51 + ...leDeclaration_Execute_AbstractSubStep.java | 18 + ...iableDeclaration_Execute_ImplicitStep.java | 17 + .../src/arduinoTrace/Steps/BigStep.java | 17 + .../arduinoTrace/Steps/RootImplicitStep.java | 17 + .../src/arduinoTrace/Steps/SmallStep.java | 17 + .../src/arduinoTrace/Steps/Step.java | 83 + .../src/arduinoTrace/Steps/StepsFactory.java | 141 + .../src/arduinoTrace/Steps/StepsPackage.java | 2197 +++ .../Steps/impl/Arduino_Delay_ExecuteImpl.java | 720 + ...ino_Delay_Execute_AbstractSubStepImpl.java | 41 + ...rduino_Delay_Execute_ImplicitStepImpl.java | 609 + .../Steps/impl/Arduino_If_ExecuteImpl.java | 719 + ...rduino_If_Execute_AbstractSubStepImpl.java | 41 + .../Arduino_If_Execute_ImplicitStepImpl.java | 609 + .../Arduino_ModuleAssignment_ExecuteImpl.java | 719 + ...ssignment_Execute_AbstractSubStepImpl.java | 41 + ...leAssignment_Execute_ImplicitStepImpl.java | 609 + .../Steps/impl/Arduino_Project_SetupImpl.java | 69 + ...rduino_VariableAssignment_ExecuteImpl.java | 719 + ...ssignment_Execute_AbstractSubStepImpl.java | 41 + ...leAssignment_Execute_ImplicitStepImpl.java | 609 + ...duino_VariableDeclaration_ExecuteImpl.java | 719 + ...claration_Execute_AbstractSubStepImpl.java | 41 + ...eDeclaration_Execute_ImplicitStepImpl.java | 609 + .../arduinoTrace/Steps/impl/BigStepImpl.java | 39 + .../Steps/impl/RootImplicitStepImpl.java | 39 + .../Steps/impl/SmallStepImpl.java | 39 + .../src/arduinoTrace/Steps/impl/StepImpl.java | 301 + .../Steps/impl/StepsFactoryImpl.java | 216 + .../Steps/impl/StepsPackageImpl.java | 791 ++ .../Steps/util/StepsAdapterFactory.java | 482 + .../arduinoTrace/Steps/util/StepsSwitch.java | 597 + .../src/arduinoTrace/Trace.java | 262 + .../impl/ArduinoTraceFactoryImpl.java | 95 + .../impl/ArduinoTracePackageImpl.java | 348 + .../src/arduinoTrace/impl/TraceImpl.java | 589 + .../util/ArduinoTraceAdapterFactory.java | 120 + .../arduinoTrace/util/ArduinoTraceSwitch.java | 110 + .../tracemanager/ArduinoTraceEngineAddon.java | 25 + .../tracemanager/ArduinoTraceManager.java | 1111 ++ .../tracemanager/ArduinoTraceStepFactory.java | 51 + .../org.gemoc.arduino.design/.classpath | 7 + .../org.gemoc.arduino.design/.project | 34 + .../.settings/org.eclipse.jdt.core.prefs | 7 + .../META-INF/MANIFEST.MF | 33 + .../org.gemoc.arduino.design/build.properties | 9 + .../description/simulator.odesign | 215 + .../icons/breakpoint.gif | Bin 0 -> 197 bytes .../icons/breakpoint_disabled.gif | Bin 0 -> 139 bytes .../icons/breakpoint_enabled.gif | Bin 0 -> 197 bytes .../icons/debug_exc.gif | Bin 0 -> 348 bytes .../org.gemoc.arduino.design/icons/launch.png | Bin 0 -> 398 bytes .../icons/simulator.png | Bin 0 -> 941 bytes .../images/dfrobot/blue_led_1023.jpg | Bin 0 -> 22020 bytes .../images/dfrobot/red_led_1023.jpg | Bin 0 -> 6796 bytes .../images/dfrobot/white_led_1023.jpg | Bin 0 -> 6242 bytes .../org.gemoc.arduino.design/plugin.xml | 10 + .../org.gemoc.arduino.design/pom.xml | 42 + .../org/gemoc/arduino/design/Activator.java | 67 + .../services/ArduinoAnimatorServices.java | 22 + .../services/ArduinoDebuggerServices.java | 81 + .../org.gemoc.arduino.dse/.project | 28 + .../META-INF/MANIFEST.MF | 5 + .../org.gemoc.arduino.dse/build.properties | 2 + .../org.gemoc.arduino.dse/ecl/Arduino.moccml | 72 + .../ecl/ArduinoLanguage.ecl | 256 + .../org.gemoc.arduino.dse/ecl/arduino.ecore | 255 + .../org.gemoc.arduino.dse/moc2as.properties | 1 + .../mtl-gen/ArduinoLanguage.clocksystem | 85 + .../mtl-gen/ArduinoLanguagetoClockSystem.mtl | 209 + .../mtl-gen/ArduinoLanguagetoFiacre.mtl | 256 + .../org.gemoc.arduino.dse/mtl-gen/allURI.txt | 5 + .../qvto-gen/language/ArduinoLanguage.qvto | 915 ++ .../qvto-gen/modeling/ArduinoLanguage.qvto | 915 ++ .../org.gemoc.arduino.mocc/.project | 29 + .../META-INF/MANIFEST.MF | 5 + .../org.gemoc.arduino.mocc/build.properties | 1 + .../mocc/Arduino.moccml | 74 + .../representations.aird | 969 ++ .../.classpath | 8 + .../.project | 34 + .../.settings/org.eclipse.jdt.core.prefs | 7 + .../META-INF/MANIFEST.MF | 20 + ...onalsemantics.k3_aspect_mapping.properties | 31 + .../build.properties | 4 + .../OperationalSemantics.xtend | 531 + .../arduino/operationalsemantics/.gitignore | 106 + .../org.gemoc.arduino.trace/.classpath | 7 + .../org.gemoc.arduino.trace/.project | 28 + .../META-INF/MANIFEST.MF | 35 + .../org.gemoc.arduino.trace/build.properties | 10 + .../model/arduinoTrace.ecore | 170 + .../model/arduinoTrace.genmodel | 268 + .../org.gemoc.arduino.trace/plugin.properties | 4 + .../org.gemoc.arduino.trace/plugin.xml | 25 + .../src/arduinoTrace/ArduinoTraceFactory.java | 42 + .../src/arduinoTrace/ArduinoTracePackage.java | 468 + .../States/BooleanVariable_value_Value.java | 103 + .../States/IntegerVariable_value_Value.java | 103 + .../arduinoTrace/States/Pin_level_Value.java | 102 + .../src/arduinoTrace/States/State.java | 122 + .../arduinoTrace/States/StatesFactory.java | 69 + .../arduinoTrace/States/StatesPackage.java | 669 + .../States/arduino/ArduinoFactory.java | 69 + .../States/arduino/ArduinoPackage.java | 834 ++ .../States/arduino/TracedAnalogPin.java | 78 + .../arduino/TracedBooleanExpression.java | 17 + .../States/arduino/TracedBooleanVariable.java | 73 + .../States/arduino/TracedDigitalPin.java | 78 + .../States/arduino/TracedExpression.java | 18 + .../arduino/TracedIntegerExpression.java | 17 + .../States/arduino/TracedIntegerVariable.java | 73 + .../States/arduino/TracedNamedElement.java | 18 + .../States/arduino/TracedPin.java | 46 + .../States/arduino/TracedVariable.java | 17 + .../arduino/impl/ArduinoFactoryImpl.java | 128 + .../arduino/impl/ArduinoPackageImpl.java | 494 + .../arduino/impl/TracedAnalogPinImpl.java | 218 + .../impl/TracedBooleanExpressionImpl.java | 39 + .../impl/TracedBooleanVariableImpl.java | 232 + .../arduino/impl/TracedDigitalPinImpl.java | 218 + .../arduino/impl/TracedExpressionImpl.java | 41 + .../impl/TracedIntegerExpressionImpl.java | 39 + .../impl/TracedIntegerVariableImpl.java | 232 + .../arduino/impl/TracedNamedElementImpl.java | 41 + .../States/arduino/impl/TracedPinImpl.java | 169 + .../arduino/impl/TracedVariableImpl.java | 39 + .../arduino/util/ArduinoAdapterFactory.java | 282 + .../States/arduino/util/ArduinoSwitch.java | 313 + .../impl/BooleanVariable_value_ValueImpl.java | 313 + .../impl/IntegerVariable_value_ValueImpl.java | 313 + .../States/impl/Pin_level_ValueImpl.java | 313 + .../arduinoTrace/States/impl/StateImpl.java | 324 + .../States/impl/StatesFactoryImpl.java | 128 + .../States/impl/StatesPackageImpl.java | 476 + .../States/util/StatesAdapterFactory.java | 174 + .../States/util/StatesSwitch.java | 173 + .../Steps/Arduino_Delay_Execute.java | 51 + ...Arduino_Delay_Execute_AbstractSubStep.java | 18 + .../Arduino_Delay_Execute_ImplicitStep.java | 17 + .../Steps/Arduino_If_Execute.java | 51 + .../Arduino_If_Execute_AbstractSubStep.java | 18 + .../Arduino_If_Execute_ImplicitStep.java | 17 + .../Arduino_ModuleAssignment_Execute.java | 51 + ...uleAssignment_Execute_AbstractSubStep.java | 18 + ...ModuleAssignment_Execute_ImplicitStep.java | 17 + .../Steps/Arduino_Project_Setup.java | 27 + .../Arduino_VariableAssignment_Execute.java | 51 + ...bleAssignment_Execute_AbstractSubStep.java | 18 + ...riableAssignment_Execute_ImplicitStep.java | 17 + .../Arduino_VariableDeclaration_Execute.java | 51 + ...leDeclaration_Execute_AbstractSubStep.java | 18 + ...iableDeclaration_Execute_ImplicitStep.java | 17 + .../src/arduinoTrace/Steps/BigStep.java | 17 + .../arduinoTrace/Steps/RootImplicitStep.java | 17 + .../src/arduinoTrace/Steps/SmallStep.java | 17 + .../src/arduinoTrace/Steps/Step.java | 83 + .../src/arduinoTrace/Steps/StepsFactory.java | 141 + .../src/arduinoTrace/Steps/StepsPackage.java | 2197 +++ .../Steps/impl/Arduino_Delay_ExecuteImpl.java | 720 + ...ino_Delay_Execute_AbstractSubStepImpl.java | 41 + ...rduino_Delay_Execute_ImplicitStepImpl.java | 609 + .../Steps/impl/Arduino_If_ExecuteImpl.java | 719 + ...rduino_If_Execute_AbstractSubStepImpl.java | 41 + .../Arduino_If_Execute_ImplicitStepImpl.java | 609 + .../Arduino_ModuleAssignment_ExecuteImpl.java | 719 + ...ssignment_Execute_AbstractSubStepImpl.java | 41 + ...leAssignment_Execute_ImplicitStepImpl.java | 609 + .../Steps/impl/Arduino_Project_SetupImpl.java | 69 + ...rduino_VariableAssignment_ExecuteImpl.java | 719 + ...ssignment_Execute_AbstractSubStepImpl.java | 41 + ...leAssignment_Execute_ImplicitStepImpl.java | 609 + ...duino_VariableDeclaration_ExecuteImpl.java | 719 + ...claration_Execute_AbstractSubStepImpl.java | 41 + ...eDeclaration_Execute_ImplicitStepImpl.java | 609 + .../arduinoTrace/Steps/impl/BigStepImpl.java | 39 + .../Steps/impl/RootImplicitStepImpl.java | 39 + .../Steps/impl/SmallStepImpl.java | 39 + .../src/arduinoTrace/Steps/impl/StepImpl.java | 301 + .../Steps/impl/StepsFactoryImpl.java | 216 + .../Steps/impl/StepsPackageImpl.java | 791 ++ .../Steps/util/StepsAdapterFactory.java | 482 + .../arduinoTrace/Steps/util/StepsSwitch.java | 597 + .../src/arduinoTrace/Trace.java | 244 + .../impl/ArduinoTraceFactoryImpl.java | 95 + .../impl/ArduinoTracePackageImpl.java | 337 + .../src/arduinoTrace/impl/TraceImpl.java | 552 + .../util/ArduinoTraceAdapterFactory.java | 120 + .../arduinoTrace/util/ArduinoTraceSwitch.java | 110 + .../tracemanager/ArduinoTraceEngineAddon.java | 25 + .../tracemanager/ArduinoTraceManager.java | 1044 ++ .../tracemanager/ArduinoTraceStepFactory.java | 51 + .../org.gemoc.arduino.xdsml/.classpath | 29 + .../org.gemoc.arduino.xdsml/.project | 40 + .../org.eclipse.core.resources.prefs | 2 + .../META-INF/MANIFEST.MF | 45 + .../org.gemoc.arduino.xdsml/build.properties | 4 + .../model-gen/ArduinoMT.ecore | 351 + .../model-gen/ArduinoMT.genmodel | 577 + .../org.gemoc.arduino.xdsml/plugin.xml | 15 + .../org/gemoc/arduino/xdsml/.gitignore | 1 + .../org/gemoc/arduino/xdsml/Arduino.java | 35 + .../gemoc/arduino/xdsml/StandaloneSetup.java | 51 + .../arduino/adapters/arduinomt/.gitignore | 5 + .../arduinomt/AmbientLightSensorAdapter.java | 81 + .../adapters/arduinomt/AnalogPinAdapter.java | 104 + .../adapters/arduinomt/ArduinoAdapter.java | 25 + .../arduinomt/ArduinoAnalogModuleAdapter.java | 81 + .../arduinomt/ArduinoBoardAdapter.java | 155 + .../ArduinoDigitalModuleAdapter.java | 81 + .../arduinomt/ArduinoMTAdaptersFactory.java | 1146 ++ .../arduinomt/ArduinoModuleAdapter.java | 81 + .../adapters/arduinomt/AssignmentAdapter.java | 119 + .../BinaryBooleanExpressionAdapter.java | 114 + .../BinaryIntegerExpressionAdapter.java | 114 + .../adapters/arduinomt/BoardAdapter.java | 117 + .../arduinomt/BooleanConstantAdapter.java | 68 + .../arduinomt/BooleanExpressionAdapter.java | 50 + .../arduinomt/BooleanModuleGetAdapter.java | 73 + .../arduinomt/BooleanVariableAdapter.java | 104 + .../adapters/arduinomt/BuzzerAdapter.java | 81 + .../adapters/arduinomt/ChannelAdapter.java | 189 + .../adapters/arduinomt/ConstantAdapter.java | 50 + .../adapters/arduinomt/ControlAdapter.java | 123 + .../adapters/arduinomt/DelayAdapter.java | 133 + .../adapters/arduinomt/DigitalPinAdapter.java | 104 + .../adapters/arduinomt/FanAdapter.java | 81 + .../arduino/adapters/arduinomt/IfAdapter.java | 168 + .../arduinomt/InfraRedSensorAdapter.java | 81 + .../arduinomt/InstructionAdapter.java | 96 + .../arduinomt/IntegerConstantAdapter.java | 68 + .../arduinomt/IntegerExpressionAdapter.java | 50 + .../arduinomt/IntegerModuleGetAdapter.java | 73 + .../adapters/arduinomt/LEDAdapter.java | 81 + .../adapters/arduinomt/LinkAdapter.java | 108 + .../adapters/arduinomt/MicroServoAdapter.java | 81 + .../adapters/arduinomt/ModuleAdapter.java | 81 + .../arduinomt/ModuleAssignmentAdapter.java | 142 + .../adapters/arduinomt/ModuleGetAdapter.java | 73 + .../arduinomt/ModuleInstructionAdapter.java | 119 + .../arduinomt/MusicPlayerAdapter.java | 81 + .../arduinomt/NamedElementAdapter.java | 63 + .../adapters/arduinomt/PinAdapter.java | 81 + .../adapters/arduinomt/ProjectAdapter.java | 155 + .../adapters/arduinomt/PushButtonAdapter.java | 81 + .../adapters/arduinomt/RepeatAdapter.java | 141 + .../arduinomt/RotationSensorAdapter.java | 81 + .../adapters/arduinomt/SketchAdapter.java | 126 + .../arduinomt/SoundSensorAdapter.java | 81 + .../SynchronizationBlockAdapter.java | 135 + .../adapters/arduinomt/ThreadAdapter.java | 198 + .../ThreadInstructionBlockAdapter.java | 90 + .../UnaryBooleanExpressionAdapter.java | 92 + .../arduinomt/UnaryExpressionAdapter.java | 73 + .../UnaryIntegerExpressionAdapter.java | 92 + .../adapters/arduinomt/UtilitiesAdapter.java | 96 + .../adapters/arduinomt/VariableAdapter.java | 68 + .../arduinomt/VariableAssignmentAdapter.java | 142 + .../arduinomt/VariableDeclarationAdapter.java | 119 + .../arduinomt/VariableRefAdapter.java | 73 + .../adapters/arduinomt/WhileAdapter.java | 146 + .../arduinomt/arduino/AmbientLightSensor.java | 17 + .../xdsml/arduinomt/arduino/AnalogPin.java | 49 + .../arduino/ArduinoAnalogModule.java | 17 + .../xdsml/arduinomt/arduino/ArduinoBoard.java | 57 + .../arduino/ArduinoDigitalModule.java | 17 + .../arduinomt/arduino/ArduinoFactory.java | 375 + .../arduinomt/arduino/ArduinoModule.java | 17 + .../arduinomt/arduino/ArduinoPackage.java | 5096 +++++++ .../xdsml/arduinomt/arduino/Assignment.java | 49 + .../arduino/BinaryBooleanExpression.java | 60 + .../arduino/BinaryBooleanOperatorKind.java | 370 + .../arduinomt/arduino/BinaryExpression.java | 76 + .../arduino/BinaryIntegerExpression.java | 60 + .../arduino/BinaryIntegerOperatorKind.java | 343 + .../xdsml/arduinomt/arduino/Board.java | 85 + .../arduinomt/arduino/BooleanConstant.java | 58 + .../arduinomt/arduino/BooleanExpression.java | 17 + .../arduinomt/arduino/BooleanModuleGet.java | 25 + .../arduinomt/arduino/BooleanVariable.java | 86 + .../xdsml/arduinomt/arduino/Buzzer.java | 17 + .../xdsml/arduinomt/arduino/Channel.java | 202 + .../xdsml/arduinomt/arduino/Constant.java | 25 + .../xdsml/arduinomt/arduino/Control.java | 65 + .../xdsml/arduinomt/arduino/Delay.java | 87 + .../xdsml/arduinomt/arduino/DigitalPin.java | 49 + .../xdsml/arduinomt/arduino/Expression.java | 26 + .../arduino/xdsml/arduinomt/arduino/Fan.java | 17 + .../arduino/xdsml/arduinomt/arduino/If.java | 84 + .../arduinomt/arduino/InfraRedSensor.java | 17 + .../xdsml/arduinomt/arduino/Instruction.java | 67 + .../arduinomt/arduino/InstructionBlock.java | 109 + .../arduinomt/arduino/IntegerConstant.java | 58 + .../arduinomt/arduino/IntegerExpression.java | 17 + .../arduinomt/arduino/IntegerModuleGet.java | 25 + .../arduinomt/arduino/IntegerVariable.java | 86 + .../arduino/xdsml/arduinomt/arduino/LED.java | 17 + .../arduino/xdsml/arduinomt/arduino/Link.java | 76 + .../xdsml/arduinomt/arduino/MicroServo.java | 17 + .../xdsml/arduinomt/arduino/Module.java | 49 + .../arduinomt/arduino/ModuleAssignment.java | 25 + .../xdsml/arduinomt/arduino/ModuleGet.java | 49 + .../arduinomt/arduino/ModuleInstruction.java | 57 + .../xdsml/arduinomt/arduino/MusicPlayer.java | 17 + .../xdsml/arduinomt/arduino/NamedElement.java | 50 + .../arduino/xdsml/arduinomt/arduino/Pin.java | 77 + .../xdsml/arduinomt/arduino/Project.java | 120 + .../xdsml/arduinomt/arduino/PushButton.java | 17 + .../xdsml/arduinomt/arduino/Repeat.java | 74 + .../arduinomt/arduino/RotationSensor.java | 17 + .../xdsml/arduinomt/arduino/Sketch.java | 86 + .../xdsml/arduinomt/arduino/SoundSensor.java | 17 + .../arduino/SynchronizationBlock.java | 88 + .../xdsml/arduinomt/arduino/Thread.java | 185 + .../arduino/ThreadInstructionBlock.java | 59 + .../arduino/xdsml/arduinomt/arduino/Time.java | 207 + .../arduino/UnaryBooleanExpression.java | 52 + .../arduino/UnaryBooleanOperatorKind.java | 181 + .../arduinomt/arduino/UnaryExpression.java | 49 + .../arduino/UnaryIntegerExpression.java | 52 + .../arduino/UnaryIntegerOperatorKind.java | 208 + .../xdsml/arduinomt/arduino/Utilities.java | 25 + .../xdsml/arduinomt/arduino/Variable.java | 17 + .../arduinomt/arduino/VariableAssignment.java | 57 + .../arduino/VariableDeclaration.java | 57 + .../xdsml/arduinomt/arduino/VariableRef.java | 57 + .../xdsml/arduinomt/arduino/While.java | 65 + .../arduino/impl/ArduinoFactoryImpl.java | 676 + .../arduino/impl/ArduinoPackageImpl.java | 2587 ++++ .../arduino/util/ArduinoAdapterFactory.java | 1222 ++ .../arduinomt/arduino/util/ArduinoSwitch.java | 1521 +++ .../src/org/gemoc/arduino/xdsml/Main.melange | 77 + .../xdsml/api/impl/ArduinoCodeExecutor.java | 27 + .../xdsml/api/impl/ArduinoMTCodeExecutor.java | 27 + 1075 files changed, 138344 insertions(+) create mode 100644 dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.build/.classpath create mode 100644 dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.build/.project create mode 100644 dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.build/.settings/org.eclipse.jdt.core.prefs create mode 100644 dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.build/META-INF/MANIFEST.MF create mode 100644 dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.build/build.properties create mode 100644 dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.build/pom.xml create mode 100644 dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.build/src/fr/obeo/dsl/arduino/build/ArduinoBuilder.java create mode 100644 dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.build/src/fr/obeo/dsl/arduino/build/ArduinoBuilderActivator.java create mode 100644 dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.design/.classpath create mode 100644 dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.design/.gitignore create mode 100644 dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.design/.project create mode 100644 dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.design/META-INF/MANIFEST.MF create mode 100644 dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.design/build.properties create mode 100644 dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.design/description/arduino.odesign create mode 100644 dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.design/icons/Constant.gif create mode 100644 dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.design/icons/Constant.png create mode 100644 dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.design/icons/Constant.svg create mode 100644 dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.design/icons/Delay.gif create mode 100644 dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.design/icons/Delay.png create mode 100644 dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.design/icons/Delay.svg create mode 100644 dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.design/icons/Equal.gif create mode 100644 dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.design/icons/Equal.png create mode 100644 dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.design/icons/Equal.svg create mode 100644 dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.design/icons/Flow.gif create mode 100644 dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.design/icons/Flow.png create mode 100644 dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.design/icons/Flow.svg create mode 100644 dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.design/icons/Function.png create mode 100644 dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.design/icons/If.gif create mode 100644 dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.design/icons/If.png create mode 100644 dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.design/icons/If.svg create mode 100644 dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.design/icons/Level.gif create mode 100644 dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.design/icons/Level.png create mode 100644 dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.design/icons/Level.svg create mode 100644 dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.design/icons/Lower.png create mode 100644 dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.design/icons/Lower.svg create mode 100644 dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.design/icons/LowerOrEqual.png create mode 100644 dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.design/icons/LowerOrEqual.svg create mode 100644 dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.design/icons/Minus.png create mode 100644 dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.design/icons/Minus.svg create mode 100644 dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.design/icons/Module.gif create mode 100644 dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.design/icons/Module.png create mode 100644 dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.design/icons/Module.svg create mode 100644 dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.design/icons/Parameter.png create mode 100644 dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.design/icons/Platform.gif create mode 100644 dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.design/icons/Platform.png create mode 100644 dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.design/icons/Platform.svg create mode 100644 dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.design/icons/Plus.png create mode 100644 dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.design/icons/Plus.svg create mode 100644 dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.design/icons/Repeat.gif create mode 100644 dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.design/icons/Repeat.png create mode 100644 dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.design/icons/Repeat.svg create mode 100644 dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.design/icons/Sensor.gif create mode 100644 dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.design/icons/Sensor.png create mode 100644 dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.design/icons/Sensor.svg create mode 100644 dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.design/icons/Set.gif create mode 100644 dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.design/icons/Set.png create mode 100644 dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.design/icons/Set.svg create mode 100644 dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.design/icons/Status.gif create mode 100644 dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.design/icons/Status.png create mode 100644 dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.design/icons/Status.svg create mode 100644 dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.design/icons/Upper.png create mode 100644 dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.design/icons/Upper.svg create mode 100644 dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.design/icons/UpperOrEqual.png create mode 100644 dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.design/icons/UpperOrEqual.svg create mode 100644 dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.design/icons/UseFunction.png create mode 100644 dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.design/icons/Variable.gif create mode 100644 dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.design/icons/Variable.png create mode 100644 dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.design/icons/Variable.svg create mode 100644 dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.design/icons/While.gif create mode 100644 dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.design/icons/While.png create mode 100644 dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.design/icons/While.svg create mode 100644 dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.design/icons/Wire.gif create mode 100644 dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.design/icons/Wire.png create mode 100644 dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.design/icons/Wire.svg create mode 100644 dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.design/icons/channel_16x16.png create mode 100644 dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.design/icons/channel_32x32.png create mode 100644 dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.design/icons/thread_16x16.png create mode 100644 dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.design/icons/thread_32x32.png create mode 100644 dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.design/icons/thread_64x64.png create mode 100644 dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.design/images/analog.png create mode 100644 dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.design/images/analog.svg create mode 100644 dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.design/images/analog_input.png create mode 100644 dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.design/images/analog_input.svg create mode 100644 dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.design/images/analog_output.png create mode 100644 dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.design/images/analog_output.svg create mode 100644 dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.design/images/connector.png create mode 100644 dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.design/images/connector.svg create mode 100644 dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.design/images/default.svg create mode 100644 dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.design/images/delay.svg create mode 100644 dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.design/images/delete.svg create mode 100644 dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.design/images/dfrobot/ambient_light.jpg create mode 100644 dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.design/images/dfrobot/blue_led.jpg create mode 100644 dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.design/images/dfrobot/buzzer.jpg create mode 100644 dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.design/images/dfrobot/default.svg create mode 100644 dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.design/images/dfrobot/dfrduino_uno.jpg create mode 100644 dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.design/images/dfrobot/infrared.jpg create mode 100644 dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.design/images/dfrobot/platform.svg create mode 100644 dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.design/images/dfrobot/push_button.jpg create mode 100644 dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.design/images/dfrobot/red_led.jpg create mode 100644 dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.design/images/dfrobot/rotation_sensor_v1.jpg create mode 100644 dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.design/images/dfrobot/servo.jpg create mode 100644 dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.design/images/dfrobot/sound_sensor.jpg create mode 100644 dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.design/images/dfrobot/white_led.jpg create mode 100644 dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.design/images/digital.png create mode 100644 dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.design/images/digital.svg create mode 100644 dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.design/images/digital_input.png create mode 100644 dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.design/images/digital_input.svg create mode 100644 dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.design/images/digital_output.png create mode 100644 dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.design/images/digital_output.svg create mode 100644 dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.design/images/existing_hardware.svg create mode 100644 dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.design/images/existing_hardwareKit.svg create mode 100644 dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.design/images/existing_sketch.png create mode 100644 dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.design/images/existing_sketch.svg create mode 100644 dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.design/images/fan.jpg create mode 100644 dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.design/images/hardware.svg create mode 100644 dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.design/images/hardwareKit.svg create mode 100644 dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.design/images/hardware_invalid.svg create mode 100644 dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.design/images/loop.svg create mode 100644 dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.design/images/loop_invalid.svg create mode 100644 dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.design/images/music_player.jpg create mode 100644 dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.design/images/platform.png create mode 100644 dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.design/images/platform.svg create mode 100644 dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.design/images/software.svg create mode 100644 dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.design/images/software_invalid.svg create mode 100644 dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.design/images/upload.svg create mode 100644 dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.design/images/upload_invalid.svg create mode 100644 dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.design/plugin.xml create mode 100644 dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.design/pom.xml create mode 100644 dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.design/resources/ArdublockKit.arduino create mode 100644 dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.design/src/fr/obeo/dsl/arduino/design/ArduinoDesignerPlugin.java create mode 100644 dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.design/src/fr/obeo/dsl/arduino/design/ArduinoDesignerUtils.java create mode 100644 dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.design/src/fr/obeo/dsl/arduino/design/services/ArduinoServices.java create mode 100644 dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.edit/.classpath create mode 100644 dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.edit/.project create mode 100644 dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.edit/META-INF/MANIFEST.MF create mode 100644 dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.edit/build.properties create mode 100644 dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.edit/icons/full/ctool16/CreateAnalogPin_module_AmbientLightSensor.gif create mode 100644 dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.edit/icons/full/ctool16/CreateAnalogPin_module_MusicPlayer.gif create mode 100644 dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.edit/icons/full/ctool16/CreateAnalogPin_module_RotationSensor.gif create mode 100644 dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.edit/icons/full/ctool16/CreateAnalogPin_module_SoundSensor.gif create mode 100644 dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.edit/icons/full/ctool16/CreateArduinoBoard_analogPins_AnalogPin.gif create mode 100644 dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.edit/icons/full/ctool16/CreateArduinoBoard_digitalPins_DigitalPin.gif create mode 100644 dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.edit/icons/full/ctool16/CreateAssignment_operand_BinaryBooleanExpression.gif create mode 100644 dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.edit/icons/full/ctool16/CreateAssignment_operand_BinaryIntegerExpression.gif create mode 100644 dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.edit/icons/full/ctool16/CreateAssignment_operand_BooleanConstant.gif create mode 100644 dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.edit/icons/full/ctool16/CreateAssignment_operand_BooleanModuleGet.gif create mode 100644 dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.edit/icons/full/ctool16/CreateAssignment_operand_BooleanVariable.gif create mode 100644 dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.edit/icons/full/ctool16/CreateAssignment_operand_IntegerConstant.gif create mode 100644 dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.edit/icons/full/ctool16/CreateAssignment_operand_IntegerModuleGet.gif create mode 100644 dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.edit/icons/full/ctool16/CreateAssignment_operand_IntegerSharedResource.gif create mode 100644 dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.edit/icons/full/ctool16/CreateAssignment_operand_IntegerSharedVariable.gif create mode 100644 dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.edit/icons/full/ctool16/CreateAssignment_operand_IntegerVariable.gif create mode 100644 dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.edit/icons/full/ctool16/CreateAssignment_operand_SharedResource.gif create mode 100644 dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.edit/icons/full/ctool16/CreateAssignment_operand_SharedVariable.gif create mode 100644 dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.edit/icons/full/ctool16/CreateAssignment_operand_SharedVariableAccess.gif create mode 100644 dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.edit/icons/full/ctool16/CreateAssignment_operand_UnaryBooleanExpression.gif create mode 100644 dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.edit/icons/full/ctool16/CreateAssignment_operand_UnaryIntegerExpression.gif create mode 100644 dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.edit/icons/full/ctool16/CreateAssignment_operand_VariableRef.gif create mode 100644 dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.edit/icons/full/ctool16/CreateBinaryExpression_left_BinaryBooleanExpression.gif create mode 100644 dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.edit/icons/full/ctool16/CreateBinaryExpression_left_BinaryIntegerExpression.gif create mode 100644 dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.edit/icons/full/ctool16/CreateBinaryExpression_left_BooleanConstant.gif create mode 100644 dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.edit/icons/full/ctool16/CreateBinaryExpression_left_BooleanModuleGet.gif create mode 100644 dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.edit/icons/full/ctool16/CreateBinaryExpression_left_BooleanVariable.gif create mode 100644 dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.edit/icons/full/ctool16/CreateBinaryExpression_left_IntegerConstant.gif create mode 100644 dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.edit/icons/full/ctool16/CreateBinaryExpression_left_IntegerModuleGet.gif create mode 100644 dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.edit/icons/full/ctool16/CreateBinaryExpression_left_IntegerSharedResource.gif create mode 100644 dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.edit/icons/full/ctool16/CreateBinaryExpression_left_IntegerSharedVariable.gif create mode 100644 dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.edit/icons/full/ctool16/CreateBinaryExpression_left_IntegerVariable.gif create mode 100644 dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.edit/icons/full/ctool16/CreateBinaryExpression_left_SharedResource.gif create mode 100644 dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.edit/icons/full/ctool16/CreateBinaryExpression_left_SharedVariable.gif create mode 100644 dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.edit/icons/full/ctool16/CreateBinaryExpression_left_SharedVariableAccess.gif create mode 100644 dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.edit/icons/full/ctool16/CreateBinaryExpression_left_UnaryBooleanExpression.gif create mode 100644 dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.edit/icons/full/ctool16/CreateBinaryExpression_left_UnaryIntegerExpression.gif create mode 100644 dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.edit/icons/full/ctool16/CreateBinaryExpression_left_VariableRef.gif create mode 100644 dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.edit/icons/full/ctool16/CreateBinaryExpression_right_BinaryBooleanExpression.gif create mode 100644 dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.edit/icons/full/ctool16/CreateBinaryExpression_right_BinaryIntegerExpression.gif create mode 100644 dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.edit/icons/full/ctool16/CreateBinaryExpression_right_BooleanConstant.gif create mode 100644 dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.edit/icons/full/ctool16/CreateBinaryExpression_right_BooleanModuleGet.gif create mode 100644 dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.edit/icons/full/ctool16/CreateBinaryExpression_right_BooleanVariable.gif create mode 100644 dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.edit/icons/full/ctool16/CreateBinaryExpression_right_IntegerConstant.gif create mode 100644 dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.edit/icons/full/ctool16/CreateBinaryExpression_right_IntegerModuleGet.gif create mode 100644 dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.edit/icons/full/ctool16/CreateBinaryExpression_right_IntegerSharedResource.gif create mode 100644 dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.edit/icons/full/ctool16/CreateBinaryExpression_right_IntegerSharedVariable.gif create mode 100644 dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.edit/icons/full/ctool16/CreateBinaryExpression_right_IntegerVariable.gif create mode 100644 dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.edit/icons/full/ctool16/CreateBinaryExpression_right_SharedResource.gif create mode 100644 dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.edit/icons/full/ctool16/CreateBinaryExpression_right_SharedVariable.gif create mode 100644 dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.edit/icons/full/ctool16/CreateBinaryExpression_right_SharedVariableAccess.gif create mode 100644 dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.edit/icons/full/ctool16/CreateBinaryExpression_right_UnaryBooleanExpression.gif create mode 100644 dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.edit/icons/full/ctool16/CreateBinaryExpression_right_UnaryIntegerExpression.gif create mode 100644 dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.edit/icons/full/ctool16/CreateBinaryExpression_right_VariableRef.gif create mode 100644 dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.edit/icons/full/ctool16/CreateBlock_abstractInstructionBlocks_AbstractInstructionBlock.gif create mode 100644 dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.edit/icons/full/ctool16/CreateBlock_abstractInstructionBlocks_InstructionBlock.gif create mode 100644 dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.edit/icons/full/ctool16/CreateBlock_abstractInstructionBlocks_SynchronizationBlock.gif create mode 100644 dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.edit/icons/full/ctool16/CreateBlock_instructionBlocks_InstructionBlock.gif create mode 100644 dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.edit/icons/full/ctool16/CreateBlock_instructions_Block.gif create mode 100644 dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.edit/icons/full/ctool16/CreateBlock_instructions_Delay.gif create mode 100644 dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.edit/icons/full/ctool16/CreateBlock_instructions_If.gif create mode 100644 dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.edit/icons/full/ctool16/CreateBlock_instructions_ModuleAssignment.gif create mode 100644 dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.edit/icons/full/ctool16/CreateBlock_instructions_Repeat.gif create mode 100644 dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.edit/icons/full/ctool16/CreateBlock_instructions_Sketch.gif create mode 100644 dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.edit/icons/full/ctool16/CreateBlock_instructions_Synchonization.gif create mode 100644 dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.edit/icons/full/ctool16/CreateBlock_instructions_Synchronization.gif create mode 100644 dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.edit/icons/full/ctool16/CreateBlock_instructions_VariableAssignment.gif create mode 100644 dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.edit/icons/full/ctool16/CreateBlock_instructions_VariableDeclaration.gif create mode 100644 dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.edit/icons/full/ctool16/CreateBlock_instructions_While.gif create mode 100644 dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.edit/icons/full/ctool16/CreateBlock_synchronizations_Synchronization.gif create mode 100644 dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.edit/icons/full/ctool16/CreateControl_block_Block.gif create mode 100644 dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.edit/icons/full/ctool16/CreateControl_block_InstructionBlock.gif create mode 100644 dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.edit/icons/full/ctool16/CreateControl_block_Sketch.gif create mode 100644 dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.edit/icons/full/ctool16/CreateControl_block_Thread.gif create mode 100644 dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.edit/icons/full/ctool16/CreateControl_instructions_Delay.gif create mode 100644 dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.edit/icons/full/ctool16/CreateControl_instructions_If.gif create mode 100644 dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.edit/icons/full/ctool16/CreateControl_instructions_ModuleAssignment.gif create mode 100644 dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.edit/icons/full/ctool16/CreateControl_instructions_Repeat.gif create mode 100644 dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.edit/icons/full/ctool16/CreateControl_instructions_Sketch.gif create mode 100644 dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.edit/icons/full/ctool16/CreateControl_instructions_VariableAssignment.gif create mode 100644 dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.edit/icons/full/ctool16/CreateControl_instructions_VariableDeclaration.gif create mode 100644 dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.edit/icons/full/ctool16/CreateControl_instructions_While.gif create mode 100644 dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.edit/icons/full/ctool16/CreateDigitalPin_module_Buzzer.gif create mode 100644 dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.edit/icons/full/ctool16/CreateDigitalPin_module_Fan.gif create mode 100644 dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.edit/icons/full/ctool16/CreateDigitalPin_module_InfraRedSensor.gif create mode 100644 dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.edit/icons/full/ctool16/CreateDigitalPin_module_LED.gif create mode 100644 dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.edit/icons/full/ctool16/CreateDigitalPin_module_MicroServo.gif create mode 100644 dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.edit/icons/full/ctool16/CreateDigitalPin_module_PushButton.gif create mode 100644 dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.edit/icons/full/ctool16/CreateHardware_connectors_Connector.gif create mode 100644 dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.edit/icons/full/ctool16/CreateIf_elseBlock_Block.gif create mode 100644 dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.edit/icons/full/ctool16/CreateIf_elseBlock_InstructionBlock.gif create mode 100644 dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.edit/icons/full/ctool16/CreateInstructionBlock_instructions_Delay.gif create mode 100644 dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.edit/icons/full/ctool16/CreateInstructionBlock_instructions_If.gif create mode 100644 dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.edit/icons/full/ctool16/CreateInstructionBlock_instructions_ModuleAssignment.gif create mode 100644 dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.edit/icons/full/ctool16/CreateInstructionBlock_instructions_Repeat.gif create mode 100644 dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.edit/icons/full/ctool16/CreateInstructionBlock_instructions_VariableAssignment.gif create mode 100644 dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.edit/icons/full/ctool16/CreateInstructionBlock_instructions_VariableDeclaration.gif create mode 100644 dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.edit/icons/full/ctool16/CreateInstructionBlock_instructions_While.gif create mode 100644 dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.edit/icons/full/ctool16/CreatePlatform_analogPins_AnalogPin.gif create mode 100644 dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.edit/icons/full/ctool16/CreatePlatform_digitalPins_DigitalPin.gif create mode 100644 dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.edit/icons/full/ctool16/CreateProject_board_ArduinoBoard.gif create mode 100644 dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.edit/icons/full/ctool16/CreateProject_boards_ArduinoBoard.gif create mode 100644 dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.edit/icons/full/ctool16/CreateProject_hardware_Hardware.gif create mode 100644 dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.edit/icons/full/ctool16/CreateProject_links_Link.gif create mode 100644 dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.edit/icons/full/ctool16/CreateProject_modules_Actuator.gif create mode 100644 dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.edit/icons/full/ctool16/CreateProject_modules_AmbientLightSensor.gif create mode 100644 dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.edit/icons/full/ctool16/CreateProject_modules_Buzzer.gif create mode 100644 dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.edit/icons/full/ctool16/CreateProject_modules_Fan.gif create mode 100644 dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.edit/icons/full/ctool16/CreateProject_modules_InfraRedSensor.gif create mode 100644 dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.edit/icons/full/ctool16/CreateProject_modules_LED.gif create mode 100644 dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.edit/icons/full/ctool16/CreateProject_modules_MicroServo.gif create mode 100644 dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.edit/icons/full/ctool16/CreateProject_modules_MusicPlayer.gif create mode 100644 dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.edit/icons/full/ctool16/CreateProject_modules_PushButton.gif create mode 100644 dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.edit/icons/full/ctool16/CreateProject_modules_RotationSensor.gif create mode 100644 dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.edit/icons/full/ctool16/CreateProject_modules_Sensor.gif create mode 100644 dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.edit/icons/full/ctool16/CreateProject_modules_SoundSensor.gif create mode 100644 dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.edit/icons/full/ctool16/CreateProject_platform_Platform.gif create mode 100644 dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.edit/icons/full/ctool16/CreateProject_sketch_Sketch.gif create mode 100644 dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.edit/icons/full/ctool16/CreateSharedResource_variable_BooleanVariable.gif create mode 100644 dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.edit/icons/full/ctool16/CreateSharedResource_variable_IntegerVariable.gif create mode 100644 dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.edit/icons/full/ctool16/CreateSketch_block_Block.gif create mode 100644 dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.edit/icons/full/ctool16/CreateSketch_block_Thread.gif create mode 100644 dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.edit/icons/full/ctool16/CreateSketch_channel_Channel.gif create mode 100644 dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.edit/icons/full/ctool16/CreateSketch_channels_Channel.gif create mode 100644 dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.edit/icons/full/ctool16/CreateSketch_instructions_Delay.gif create mode 100644 dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.edit/icons/full/ctool16/CreateSketch_instructions_If.gif create mode 100644 dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.edit/icons/full/ctool16/CreateSketch_instructions_ModuleAssignment.gif create mode 100644 dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.edit/icons/full/ctool16/CreateSketch_instructions_Repeat.gif create mode 100644 dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.edit/icons/full/ctool16/CreateSketch_instructions_Sketch.gif create mode 100644 dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.edit/icons/full/ctool16/CreateSketch_instructions_VariableAssignment.gif create mode 100644 dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.edit/icons/full/ctool16/CreateSketch_instructions_VariableDeclaration.gif create mode 100644 dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.edit/icons/full/ctool16/CreateSketch_instructions_While.gif create mode 100644 dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.edit/icons/full/ctool16/CreateSketch_sharedResources_IntegerSharedResource.gif create mode 100644 dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.edit/icons/full/ctool16/CreateSketch_sharedResources_IntegerSharedVariable.gif create mode 100644 dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.edit/icons/full/ctool16/CreateSketch_sharedResources_SharedResource.gif create mode 100644 dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.edit/icons/full/ctool16/CreateSketch_sharedResources_SharedVariable.gif create mode 100644 dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.edit/icons/full/ctool16/CreateSketch_threadConnectors_ThreadConnector.gif create mode 100644 dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.edit/icons/full/ctool16/CreateSketch_threads_Thread.gif create mode 100644 dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.edit/icons/full/ctool16/CreateThread_accessors_SharedVariableAccess.gif create mode 100644 dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.edit/icons/full/ctool16/CreateThread_block_Block.gif create mode 100644 dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.edit/icons/full/ctool16/CreateThread_block_InstructionBlock.gif create mode 100644 dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.edit/icons/full/ctool16/CreateThread_block_SynchronizationBlock.gif create mode 100644 dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.edit/icons/full/ctool16/CreateThread_blocks_Block.gif create mode 100644 dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.edit/icons/full/ctool16/CreateThread_blocks_InstructionBlock.gif create mode 100644 dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.edit/icons/full/ctool16/CreateThread_blocks_SynchronizationBlock.gif create mode 100644 dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.edit/icons/full/ctool16/CreateUnaryExpression_operand_BinaryBooleanExpression.gif create mode 100644 dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.edit/icons/full/ctool16/CreateUnaryExpression_operand_BinaryIntegerExpression.gif create mode 100644 dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.edit/icons/full/ctool16/CreateUnaryExpression_operand_BooleanConstant.gif create mode 100644 dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.edit/icons/full/ctool16/CreateUnaryExpression_operand_BooleanModuleGet.gif create mode 100644 dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.edit/icons/full/ctool16/CreateUnaryExpression_operand_BooleanVariable.gif create mode 100644 dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.edit/icons/full/ctool16/CreateUnaryExpression_operand_IntegerConstant.gif create mode 100644 dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.edit/icons/full/ctool16/CreateUnaryExpression_operand_IntegerModuleGet.gif create mode 100644 dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.edit/icons/full/ctool16/CreateUnaryExpression_operand_IntegerSharedResource.gif create mode 100644 dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.edit/icons/full/ctool16/CreateUnaryExpression_operand_IntegerSharedVariable.gif create mode 100644 dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.edit/icons/full/ctool16/CreateUnaryExpression_operand_IntegerVariable.gif create mode 100644 dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.edit/icons/full/ctool16/CreateUnaryExpression_operand_SharedResource.gif create mode 100644 dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.edit/icons/full/ctool16/CreateUnaryExpression_operand_SharedVariable.gif create mode 100644 dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.edit/icons/full/ctool16/CreateUnaryExpression_operand_SharedVariableAccess.gif create mode 100644 dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.edit/icons/full/ctool16/CreateUnaryExpression_operand_UnaryBooleanExpression.gif create mode 100644 dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.edit/icons/full/ctool16/CreateUnaryExpression_operand_UnaryIntegerExpression.gif create mode 100644 dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.edit/icons/full/ctool16/CreateUnaryExpression_operand_VariableRef.gif create mode 100644 dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.edit/icons/full/ctool16/CreateVariableDeclaration_variable_BooleanVariable.gif create mode 100644 dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.edit/icons/full/ctool16/CreateVariableDeclaration_variable_IntegerSharedVariable.gif create mode 100644 dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.edit/icons/full/ctool16/CreateVariableDeclaration_variable_IntegerVariable.gif create mode 100644 dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.edit/icons/full/ctool16/CreateVariableDeclaration_variable_SharedResource.gif create mode 100644 dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.edit/icons/full/ctool16/CreateVariableDeclaration_variable_SharedVariable.gif create mode 100644 dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.edit/icons/full/ctool16/CreateVariableDeclaration_variable_SharedVariableAccess.gif create mode 100644 dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.edit/icons/full/obj16/AbstractInstructionBlock.gif create mode 100644 dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.edit/icons/full/obj16/Actuator.gif create mode 100644 dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.edit/icons/full/obj16/AmbientLightSensor.gif create mode 100644 dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.edit/icons/full/obj16/AnalogPin.gif create mode 100644 dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.edit/icons/full/obj16/ArduinoBoard.gif create mode 100644 dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.edit/icons/full/obj16/BinaryBooleanExpression.gif create mode 100644 dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.edit/icons/full/obj16/BinaryIntegerExpression.gif create mode 100644 dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.edit/icons/full/obj16/Block.gif create mode 100644 dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.edit/icons/full/obj16/BooleanConstant.gif create mode 100644 dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.edit/icons/full/obj16/BooleanExpression.gif create mode 100644 dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.edit/icons/full/obj16/BooleanModuleGet.gif create mode 100644 dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.edit/icons/full/obj16/BooleanVariable.gif create mode 100644 dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.edit/icons/full/obj16/Buzzer.gif create mode 100644 dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.edit/icons/full/obj16/Channel.gif create mode 100644 dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.edit/icons/full/obj16/Connector.gif create mode 100644 dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.edit/icons/full/obj16/Constant.gif create mode 100644 dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.edit/icons/full/obj16/Delay.gif create mode 100644 dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.edit/icons/full/obj16/DigitalPin.gif create mode 100644 dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.edit/icons/full/obj16/Fan.gif create mode 100644 dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.edit/icons/full/obj16/Hardware.gif create mode 100644 dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.edit/icons/full/obj16/If.gif create mode 100644 dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.edit/icons/full/obj16/InfraRedSensor.gif create mode 100644 dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.edit/icons/full/obj16/InstructionBlock.gif create mode 100644 dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.edit/icons/full/obj16/IntegerConstant.gif create mode 100644 dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.edit/icons/full/obj16/IntegerModuleGet.gif create mode 100644 dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.edit/icons/full/obj16/IntegerSharedResource.gif create mode 100644 dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.edit/icons/full/obj16/IntegerSharedVariable.gif create mode 100644 dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.edit/icons/full/obj16/IntegerVariable.gif create mode 100644 dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.edit/icons/full/obj16/LED.gif create mode 100644 dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.edit/icons/full/obj16/Link.gif create mode 100644 dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.edit/icons/full/obj16/MicroServo.gif create mode 100644 dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.edit/icons/full/obj16/ModuleAssignment.gif create mode 100644 dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.edit/icons/full/obj16/ModuleGet.gif create mode 100644 dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.edit/icons/full/obj16/MusicPlayer.gif create mode 100644 dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.edit/icons/full/obj16/Platform.gif create mode 100644 dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.edit/icons/full/obj16/Project.gif create mode 100644 dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.edit/icons/full/obj16/PushButton.gif create mode 100644 dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.edit/icons/full/obj16/Repeat.gif create mode 100644 dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.edit/icons/full/obj16/RotationSensor.gif create mode 100644 dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.edit/icons/full/obj16/Sensor.gif create mode 100644 dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.edit/icons/full/obj16/SharedResource.gif create mode 100644 dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.edit/icons/full/obj16/SharedVariable.gif create mode 100644 dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.edit/icons/full/obj16/SharedVariableAccess.gif create mode 100644 dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.edit/icons/full/obj16/Sketch.gif create mode 100644 dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.edit/icons/full/obj16/SoundSensor.gif create mode 100644 dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.edit/icons/full/obj16/Synchonization.gif create mode 100644 dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.edit/icons/full/obj16/Synchronization.gif create mode 100644 dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.edit/icons/full/obj16/SynchronizationBlock.gif create mode 100644 dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.edit/icons/full/obj16/Thread.gif create mode 100644 dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.edit/icons/full/obj16/ThreadConnector.gif create mode 100644 dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.edit/icons/full/obj16/UnaryBooleanExpression.gif create mode 100644 dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.edit/icons/full/obj16/UnaryIntegerExpression.gif create mode 100644 dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.edit/icons/full/obj16/Variable.gif create mode 100644 dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.edit/icons/full/obj16/VariableAssignment.gif create mode 100644 dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.edit/icons/full/obj16/VariableDeclaration.gif create mode 100644 dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.edit/icons/full/obj16/VariableRef.gif create mode 100644 dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.edit/icons/full/obj16/While.gif create mode 100644 dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.edit/plugin.properties create mode 100644 dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.edit/plugin.xml create mode 100644 dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.edit/src-gen/fr/obeo/dsl/arduino/provider/AmbientLightSensorItemProvider.java create mode 100644 dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.edit/src-gen/fr/obeo/dsl/arduino/provider/AnalogPinItemProvider.java create mode 100644 dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.edit/src-gen/fr/obeo/dsl/arduino/provider/ArduinoAnalogModuleItemProvider.java create mode 100644 dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.edit/src-gen/fr/obeo/dsl/arduino/provider/ArduinoBoardItemProvider.java create mode 100644 dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.edit/src-gen/fr/obeo/dsl/arduino/provider/ArduinoDigitalModuleItemProvider.java create mode 100644 dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.edit/src-gen/fr/obeo/dsl/arduino/provider/ArduinoEditPlugin.java create mode 100644 dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.edit/src-gen/fr/obeo/dsl/arduino/provider/ArduinoItemProviderAdapterFactory.java create mode 100644 dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.edit/src-gen/fr/obeo/dsl/arduino/provider/ArduinoModuleItemProvider.java create mode 100644 dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.edit/src-gen/fr/obeo/dsl/arduino/provider/AssignmentItemProvider.java create mode 100644 dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.edit/src-gen/fr/obeo/dsl/arduino/provider/BinaryBooleanExpressionItemProvider.java create mode 100644 dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.edit/src-gen/fr/obeo/dsl/arduino/provider/BinaryExpressionItemProvider.java create mode 100644 dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.edit/src-gen/fr/obeo/dsl/arduino/provider/BinaryIntegerExpressionItemProvider.java create mode 100644 dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.edit/src-gen/fr/obeo/dsl/arduino/provider/BoardItemProvider.java create mode 100644 dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.edit/src-gen/fr/obeo/dsl/arduino/provider/BooleanConstantItemProvider.java create mode 100644 dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.edit/src-gen/fr/obeo/dsl/arduino/provider/BooleanExpressionItemProvider.java create mode 100644 dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.edit/src-gen/fr/obeo/dsl/arduino/provider/BooleanModuleGetItemProvider.java create mode 100644 dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.edit/src-gen/fr/obeo/dsl/arduino/provider/BooleanVariableItemProvider.java create mode 100644 dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.edit/src-gen/fr/obeo/dsl/arduino/provider/BuzzerItemProvider.java create mode 100644 dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.edit/src-gen/fr/obeo/dsl/arduino/provider/ChannelItemProvider.java create mode 100644 dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.edit/src-gen/fr/obeo/dsl/arduino/provider/ConstantItemProvider.java create mode 100644 dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.edit/src-gen/fr/obeo/dsl/arduino/provider/ControlItemProvider.java create mode 100644 dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.edit/src-gen/fr/obeo/dsl/arduino/provider/DelayItemProvider.java create mode 100644 dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.edit/src-gen/fr/obeo/dsl/arduino/provider/DigitalPinItemProvider.java create mode 100644 dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.edit/src-gen/fr/obeo/dsl/arduino/provider/ExpressionItemProvider.java create mode 100644 dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.edit/src-gen/fr/obeo/dsl/arduino/provider/FanItemProvider.java create mode 100644 dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.edit/src-gen/fr/obeo/dsl/arduino/provider/IfItemProvider.java create mode 100644 dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.edit/src-gen/fr/obeo/dsl/arduino/provider/InfraRedSensorItemProvider.java create mode 100644 dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.edit/src-gen/fr/obeo/dsl/arduino/provider/InstructionBlockItemProvider.java create mode 100644 dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.edit/src-gen/fr/obeo/dsl/arduino/provider/InstructionItemProvider.java create mode 100644 dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.edit/src-gen/fr/obeo/dsl/arduino/provider/IntegerConstantItemProvider.java create mode 100644 dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.edit/src-gen/fr/obeo/dsl/arduino/provider/IntegerExpressionItemProvider.java create mode 100644 dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.edit/src-gen/fr/obeo/dsl/arduino/provider/IntegerModuleGetItemProvider.java create mode 100644 dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.edit/src-gen/fr/obeo/dsl/arduino/provider/IntegerVariableItemProvider.java create mode 100644 dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.edit/src-gen/fr/obeo/dsl/arduino/provider/LEDItemProvider.java create mode 100644 dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.edit/src-gen/fr/obeo/dsl/arduino/provider/LinkItemProvider.java create mode 100644 dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.edit/src-gen/fr/obeo/dsl/arduino/provider/MicroServoItemProvider.java create mode 100644 dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.edit/src-gen/fr/obeo/dsl/arduino/provider/ModuleAssignmentItemProvider.java create mode 100644 dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.edit/src-gen/fr/obeo/dsl/arduino/provider/ModuleGetItemProvider.java create mode 100644 dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.edit/src-gen/fr/obeo/dsl/arduino/provider/ModuleInstructionItemProvider.java create mode 100644 dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.edit/src-gen/fr/obeo/dsl/arduino/provider/MusicPlayerItemProvider.java create mode 100644 dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.edit/src-gen/fr/obeo/dsl/arduino/provider/NamedElementItemProvider.java create mode 100644 dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.edit/src-gen/fr/obeo/dsl/arduino/provider/PinItemProvider.java create mode 100644 dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.edit/src-gen/fr/obeo/dsl/arduino/provider/ProjectItemProvider.java create mode 100644 dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.edit/src-gen/fr/obeo/dsl/arduino/provider/PushButtonItemProvider.java create mode 100644 dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.edit/src-gen/fr/obeo/dsl/arduino/provider/RepeatItemProvider.java create mode 100644 dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.edit/src-gen/fr/obeo/dsl/arduino/provider/RotationSensorItemProvider.java create mode 100644 dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.edit/src-gen/fr/obeo/dsl/arduino/provider/SketchItemProvider.java create mode 100644 dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.edit/src-gen/fr/obeo/dsl/arduino/provider/SoundSensorItemProvider.java create mode 100644 dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.edit/src-gen/fr/obeo/dsl/arduino/provider/SynchronizationBlockItemProvider.java create mode 100644 dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.edit/src-gen/fr/obeo/dsl/arduino/provider/ThreadInstructionBlockItemProvider.java create mode 100644 dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.edit/src-gen/fr/obeo/dsl/arduino/provider/ThreadItemProvider.java create mode 100644 dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.edit/src-gen/fr/obeo/dsl/arduino/provider/UnaryBooleanExpressionItemProvider.java create mode 100644 dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.edit/src-gen/fr/obeo/dsl/arduino/provider/UnaryExpressionItemProvider.java create mode 100644 dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.edit/src-gen/fr/obeo/dsl/arduino/provider/UnaryIntegerExpressionItemProvider.java create mode 100644 dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.edit/src-gen/fr/obeo/dsl/arduino/provider/UtilitiesItemProvider.java create mode 100644 dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.edit/src-gen/fr/obeo/dsl/arduino/provider/VariableAssignmentItemProvider.java create mode 100644 dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.edit/src-gen/fr/obeo/dsl/arduino/provider/VariableDeclarationItemProvider.java create mode 100644 dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.edit/src-gen/fr/obeo/dsl/arduino/provider/VariableItemProvider.java create mode 100644 dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.edit/src-gen/fr/obeo/dsl/arduino/provider/VariableRefItemProvider.java create mode 100644 dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.edit/src-gen/fr/obeo/dsl/arduino/provider/WhileItemProvider.java create mode 100644 dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.editor/.classpath create mode 100644 dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.editor/.project create mode 100644 dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.editor/META-INF/MANIFEST.MF create mode 100644 dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.editor/build.properties create mode 100644 dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.editor/icons/full/obj16/ArduinoModelFile.gif create mode 100644 dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.editor/icons/full/wizban/NewArduino.gif create mode 100644 dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.editor/plugin.properties create mode 100644 dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.editor/plugin.xml create mode 100644 dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.editor/src-gen/fr/obeo/dsl/arduino/presentation/ArduinoActionBarContributor.java create mode 100644 dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.editor/src-gen/fr/obeo/dsl/arduino/presentation/ArduinoEditor.java create mode 100644 dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.editor/src-gen/fr/obeo/dsl/arduino/presentation/ArduinoEditorPlugin.java create mode 100644 dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.editor/src-gen/fr/obeo/dsl/arduino/presentation/ArduinoModelWizard.java create mode 100644 dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.gen.ui/.classpath create mode 100644 dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.gen.ui/.project create mode 100644 dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.gen.ui/.settings/org.eclipse.jdt.core.prefs create mode 100644 dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.gen.ui/META-INF/MANIFEST.MF create mode 100644 dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.gen.ui/build.properties create mode 100644 dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.gen.ui/icons/default.gif create mode 100644 dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.gen.ui/plugin.xml create mode 100644 dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.gen.ui/src/fr/obeo/dsl/arduino/gen/ui/Activator.java create mode 100644 dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.gen.ui/src/fr/obeo/dsl/arduino/gen/ui/common/GenerateAll.java create mode 100644 dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.gen.ui/src/fr/obeo/dsl/arduino/gen/ui/popupMenus/AcceleoGenerateGenAction.java create mode 100644 dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.gen/.classpath create mode 100644 dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.gen/.project create mode 100644 dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.gen/META-INF/MANIFEST.MF create mode 100644 dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.gen/build.properties create mode 100644 dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.gen/pom.xml create mode 100644 dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.gen/src/fr/obeo/dsl/arduino/gen/Activator.java create mode 100644 dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.gen/src/fr/obeo/dsl/arduino/gen/main/ArduinoGenServices.java create mode 100644 dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.gen/src/fr/obeo/dsl/arduino/gen/main/Generate.java create mode 100644 dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.gen/src/fr/obeo/dsl/arduino/gen/main/arduinoservices.mtl create mode 100644 dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.gen/src/fr/obeo/dsl/arduino/gen/main/generate.mtl create mode 100644 dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.gen/tasks/generate.xml create mode 100644 dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.gen/tasks/generateTarget.xml create mode 100644 dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.preferences/.classpath create mode 100644 dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.preferences/.gitignore create mode 100644 dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.preferences/.project create mode 100644 dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.preferences/.settings/org.eclipse.jdt.core.prefs create mode 100644 dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.preferences/META-INF/MANIFEST.MF create mode 100644 dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.preferences/build.properties create mode 100644 dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.preferences/plugin.xml create mode 100644 dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.preferences/pom.xml create mode 100644 dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.preferences/src/fr/obeo/dsl/arduino/preferences/ArduinoPreferences.java create mode 100644 dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.preferences/src/fr/obeo/dsl/arduino/preferences/ArduinoPreferencesPage.java create mode 100644 dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.preferences/src/fr/obeo/dsl/arduino/preferences/ArduinoPreferencesPlugin.java create mode 100644 dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.preferences/src/fr/obeo/dsl/arduino/preferences/ArduinoSdkDialog.java create mode 100644 dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.ui/.classpath create mode 100644 dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.ui/.gitignore create mode 100644 dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.ui/.project create mode 100644 dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.ui/.settings/org.eclipse.jdt.core.prefs create mode 100644 dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.ui/META-INF/MANIFEST.MF create mode 100644 dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.ui/build.properties create mode 100644 dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.ui/icons/128x128/hardware.png create mode 100644 dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.ui/icons/128x128/hardwareHover.png create mode 100644 dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.ui/icons/128x128/hardwareInvalid.png create mode 100644 dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.ui/icons/128x128/hardwareInvalidHover.png create mode 100644 dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.ui/icons/128x128/iconmonstr-bug-icon-128.png create mode 100644 dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.ui/icons/128x128/iconmonstr-laptop-3-icon-128.png create mode 100644 dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.ui/icons/128x128/newProject.png create mode 100644 dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.ui/icons/128x128/newProjectHover.png create mode 100644 dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.ui/icons/128x128/openProject.png create mode 100644 dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.ui/icons/128x128/openProjectHover.png create mode 100644 dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.ui/icons/128x128/preferences.png create mode 100644 dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.ui/icons/128x128/preferencesHover.png create mode 100644 dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.ui/icons/128x128/sketch.png create mode 100644 dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.ui/icons/128x128/sketchHover.png create mode 100644 dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.ui/icons/128x128/sketchInvalid.png create mode 100644 dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.ui/icons/128x128/sketchInvalidHover.png create mode 100644 dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.ui/icons/128x128/upload.png create mode 100644 dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.ui/icons/128x128/uploadHover.png create mode 100644 dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.ui/icons/32x32/hardware.png create mode 100644 dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.ui/icons/32x32/newHardwareKit.png create mode 100644 dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.ui/icons/32x32/project.png create mode 100644 dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.ui/icons/32x32/simulator.png create mode 100644 dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.ui/icons/32x32/sketch.png create mode 100644 dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.ui/icons/32x32/upload.png create mode 100644 dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.ui/icons/svg/README create mode 100644 dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.ui/icons/svg/hardware.svg create mode 100644 dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.ui/icons/svg/hardware2.svg create mode 100644 dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.ui/icons/svg/newProject.svg create mode 100644 dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.ui/icons/svg/openProject.svg create mode 100644 dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.ui/icons/svg/preferences.svg create mode 100644 dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.ui/icons/svg/sketch.svg create mode 100644 dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.ui/icons/svg/upload.svg create mode 100644 dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.ui/plugin.xml create mode 100644 dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.ui/pom.xml create mode 100644 dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.ui/src/fr/obeo/dsl/arduino/commands/DeleteProjectHandler.java create mode 100644 dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.ui/src/fr/obeo/dsl/arduino/commands/DeleteSketchHandler.java create mode 100644 dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.ui/src/fr/obeo/dsl/arduino/commands/NewProjectHandler.java create mode 100644 dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.ui/src/fr/obeo/dsl/arduino/commands/OpenDashboardHandler.java create mode 100644 dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.ui/src/fr/obeo/dsl/arduino/commands/OpenHardwareHandler.java create mode 100644 dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.ui/src/fr/obeo/dsl/arduino/commands/OpenHardwareKitHandler.java create mode 100644 dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.ui/src/fr/obeo/dsl/arduino/commands/OpenProjectHandler.java create mode 100644 dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.ui/src/fr/obeo/dsl/arduino/commands/OpenSketchHandler.java create mode 100644 dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.ui/src/fr/obeo/dsl/arduino/commands/PreferencesHandler.java create mode 100644 dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.ui/src/fr/obeo/dsl/arduino/commands/UploadSketchHandler.java create mode 100644 dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.ui/src/fr/obeo/dsl/arduino/menus/ArduinoUiActivator.java create mode 100644 dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.ui/src/fr/obeo/dsl/arduino/perspective/ArduinoPerspectiveFactory.java create mode 100644 dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.ui/src/fr/obeo/dsl/arduino/properties/ArduinoPropertyTester.java create mode 100644 dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.ui/src/fr/obeo/dsl/arduino/utils/ArduinoServices.java create mode 100644 dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.ui/src/fr/obeo/dsl/arduino/utils/ProjectServices.java create mode 100644 dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.ui/src/fr/obeo/dsl/arduino/views/DashboardView.java create mode 100644 dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.ui/src/fr/obeo/dsl/arduino/wizard/ArduinoExternalProjectImportWizard.java create mode 100644 dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.ui/src/fr/obeo/dsl/arduino/wizard/ArduinoModelingProjectCreationOperation.java create mode 100644 dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.ui/src/fr/obeo/dsl/arduino/wizard/ArduinoProjectWizard.java create mode 100644 dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.ui/src/fr/obeo/dsl/arduino/wizard/ArduinoWizardProjectsImportPage.java create mode 100644 dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.ui/src/fr/obeo/dsl/arduino/wizard/SWTThreadingUtils.java create mode 100644 dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino/.classpath create mode 100644 dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino/.gitignore create mode 100644 dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino/.project create mode 100644 dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino/META-INF/MANIFEST.MF create mode 100644 dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino/build.properties create mode 100644 dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino/model/arduino class diagram.png create mode 100644 dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino/model/arduino.aird create mode 100644 dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino/model/arduino.ecore create mode 100644 dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino/model/arduino.genmodel create mode 100644 dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino/plugin.properties create mode 100644 dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino/plugin.xml create mode 100644 dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino/pom.xml create mode 100644 dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino/refactoring.txt create mode 100644 dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino/src-gen/fr/obeo/dsl/arduino/AbstractInstructionBlock.java create mode 100644 dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino/src-gen/fr/obeo/dsl/arduino/AmbientLightSensor.java create mode 100644 dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino/src-gen/fr/obeo/dsl/arduino/AnalogPin.java create mode 100644 dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino/src-gen/fr/obeo/dsl/arduino/ArduinoAnalogModule.java create mode 100644 dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino/src-gen/fr/obeo/dsl/arduino/ArduinoBoard.java create mode 100644 dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino/src-gen/fr/obeo/dsl/arduino/ArduinoDigitalModule.java create mode 100644 dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino/src-gen/fr/obeo/dsl/arduino/ArduinoFactory.java create mode 100644 dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino/src-gen/fr/obeo/dsl/arduino/ArduinoModule.java create mode 100644 dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino/src-gen/fr/obeo/dsl/arduino/ArduinoPackage.java create mode 100644 dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino/src-gen/fr/obeo/dsl/arduino/Assignment.java create mode 100644 dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino/src-gen/fr/obeo/dsl/arduino/BinaryBooleanExpression.java create mode 100644 dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino/src-gen/fr/obeo/dsl/arduino/BinaryBooleanOperatorKind.java create mode 100644 dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino/src-gen/fr/obeo/dsl/arduino/BinaryExpression.java create mode 100644 dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino/src-gen/fr/obeo/dsl/arduino/BinaryIntegerExpression.java create mode 100644 dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino/src-gen/fr/obeo/dsl/arduino/BinaryIntegerOperatorKind.java create mode 100644 dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino/src-gen/fr/obeo/dsl/arduino/Block.java create mode 100644 dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino/src-gen/fr/obeo/dsl/arduino/Board.java create mode 100644 dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino/src-gen/fr/obeo/dsl/arduino/BooleanConstant.java create mode 100644 dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino/src-gen/fr/obeo/dsl/arduino/BooleanExpression.java create mode 100644 dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino/src-gen/fr/obeo/dsl/arduino/BooleanModuleGet.java create mode 100644 dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino/src-gen/fr/obeo/dsl/arduino/BooleanVariable.java create mode 100644 dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino/src-gen/fr/obeo/dsl/arduino/Buzzer.java create mode 100644 dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino/src-gen/fr/obeo/dsl/arduino/Channel.java create mode 100644 dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino/src-gen/fr/obeo/dsl/arduino/Constant.java create mode 100644 dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino/src-gen/fr/obeo/dsl/arduino/Control.java create mode 100644 dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino/src-gen/fr/obeo/dsl/arduino/Delay.java create mode 100644 dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino/src-gen/fr/obeo/dsl/arduino/DigitalPin.java create mode 100644 dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino/src-gen/fr/obeo/dsl/arduino/Expression.java create mode 100644 dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino/src-gen/fr/obeo/dsl/arduino/Fan.java create mode 100644 dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino/src-gen/fr/obeo/dsl/arduino/If.java create mode 100644 dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino/src-gen/fr/obeo/dsl/arduino/InfraRedSensor.java create mode 100644 dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino/src-gen/fr/obeo/dsl/arduino/Instruction.java create mode 100644 dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino/src-gen/fr/obeo/dsl/arduino/InstructionBlock.java create mode 100644 dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino/src-gen/fr/obeo/dsl/arduino/IntegerConstant.java create mode 100644 dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino/src-gen/fr/obeo/dsl/arduino/IntegerExpression.java create mode 100644 dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino/src-gen/fr/obeo/dsl/arduino/IntegerModuleGet.java create mode 100644 dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino/src-gen/fr/obeo/dsl/arduino/IntegerVariable.java create mode 100644 dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino/src-gen/fr/obeo/dsl/arduino/LED.java create mode 100644 dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino/src-gen/fr/obeo/dsl/arduino/Link.java create mode 100644 dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino/src-gen/fr/obeo/dsl/arduino/MicroServo.java create mode 100644 dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino/src-gen/fr/obeo/dsl/arduino/Module.java create mode 100644 dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino/src-gen/fr/obeo/dsl/arduino/ModuleAssignment.java create mode 100644 dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino/src-gen/fr/obeo/dsl/arduino/ModuleGet.java create mode 100644 dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino/src-gen/fr/obeo/dsl/arduino/ModuleInstruction.java create mode 100644 dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino/src-gen/fr/obeo/dsl/arduino/MusicPlayer.java create mode 100644 dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino/src-gen/fr/obeo/dsl/arduino/NamedElement.java create mode 100644 dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino/src-gen/fr/obeo/dsl/arduino/Pin.java create mode 100644 dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino/src-gen/fr/obeo/dsl/arduino/Project.java create mode 100644 dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino/src-gen/fr/obeo/dsl/arduino/PushButton.java create mode 100644 dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino/src-gen/fr/obeo/dsl/arduino/Repeat.java create mode 100644 dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino/src-gen/fr/obeo/dsl/arduino/RotationSensor.java create mode 100644 dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino/src-gen/fr/obeo/dsl/arduino/Sketch.java create mode 100644 dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino/src-gen/fr/obeo/dsl/arduino/SoundSensor.java create mode 100644 dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino/src-gen/fr/obeo/dsl/arduino/Synchonization.java create mode 100644 dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino/src-gen/fr/obeo/dsl/arduino/Synchronization.java create mode 100644 dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino/src-gen/fr/obeo/dsl/arduino/SynchronizationBlock.java create mode 100644 dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino/src-gen/fr/obeo/dsl/arduino/Thread.java create mode 100644 dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino/src-gen/fr/obeo/dsl/arduino/ThreadInstructionBlock.java create mode 100644 dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino/src-gen/fr/obeo/dsl/arduino/Time.java create mode 100644 dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino/src-gen/fr/obeo/dsl/arduino/UnaryBooleanExpression.java create mode 100644 dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino/src-gen/fr/obeo/dsl/arduino/UnaryBooleanOperatorKind.java create mode 100644 dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino/src-gen/fr/obeo/dsl/arduino/UnaryExpression.java create mode 100644 dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino/src-gen/fr/obeo/dsl/arduino/UnaryIntegerExpression.java create mode 100644 dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino/src-gen/fr/obeo/dsl/arduino/UnaryIntegerOperatorKind.java create mode 100644 dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino/src-gen/fr/obeo/dsl/arduino/Utilities.java create mode 100644 dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino/src-gen/fr/obeo/dsl/arduino/Variable.java create mode 100644 dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino/src-gen/fr/obeo/dsl/arduino/VariableAssignment.java create mode 100644 dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino/src-gen/fr/obeo/dsl/arduino/VariableDeclaration.java create mode 100644 dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino/src-gen/fr/obeo/dsl/arduino/VariableRef.java create mode 100644 dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino/src-gen/fr/obeo/dsl/arduino/While.java create mode 100644 dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino/src-gen/fr/obeo/dsl/arduino/impl/AmbientLightSensorImpl.java create mode 100644 dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino/src-gen/fr/obeo/dsl/arduino/impl/AnalogPinImpl.java create mode 100644 dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino/src-gen/fr/obeo/dsl/arduino/impl/ArduinoAnalogModuleImpl.java create mode 100644 dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino/src-gen/fr/obeo/dsl/arduino/impl/ArduinoBoardImpl.java create mode 100644 dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino/src-gen/fr/obeo/dsl/arduino/impl/ArduinoDigitalModuleImpl.java create mode 100644 dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino/src-gen/fr/obeo/dsl/arduino/impl/ArduinoFactoryImpl.java create mode 100644 dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino/src-gen/fr/obeo/dsl/arduino/impl/ArduinoModuleImpl.java create mode 100644 dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino/src-gen/fr/obeo/dsl/arduino/impl/ArduinoPackageImpl.java create mode 100644 dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino/src-gen/fr/obeo/dsl/arduino/impl/AssignmentImpl.java create mode 100644 dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino/src-gen/fr/obeo/dsl/arduino/impl/BinaryBooleanExpressionImpl.java create mode 100644 dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino/src-gen/fr/obeo/dsl/arduino/impl/BinaryExpressionImpl.java create mode 100644 dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino/src-gen/fr/obeo/dsl/arduino/impl/BinaryIntegerExpressionImpl.java create mode 100644 dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino/src-gen/fr/obeo/dsl/arduino/impl/BoardImpl.java create mode 100644 dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino/src-gen/fr/obeo/dsl/arduino/impl/BooleanConstantImpl.java create mode 100644 dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino/src-gen/fr/obeo/dsl/arduino/impl/BooleanExpressionImpl.java create mode 100644 dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino/src-gen/fr/obeo/dsl/arduino/impl/BooleanModuleGetImpl.java create mode 100644 dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino/src-gen/fr/obeo/dsl/arduino/impl/BooleanVariableImpl.java create mode 100644 dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino/src-gen/fr/obeo/dsl/arduino/impl/BuzzerImpl.java create mode 100644 dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino/src-gen/fr/obeo/dsl/arduino/impl/ChannelImpl.java create mode 100644 dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino/src-gen/fr/obeo/dsl/arduino/impl/ConstantImpl.java create mode 100644 dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino/src-gen/fr/obeo/dsl/arduino/impl/ControlImpl.java create mode 100644 dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino/src-gen/fr/obeo/dsl/arduino/impl/DelayImpl.java create mode 100644 dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino/src-gen/fr/obeo/dsl/arduino/impl/DigitalPinImpl.java create mode 100644 dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino/src-gen/fr/obeo/dsl/arduino/impl/ExpressionImpl.java create mode 100644 dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino/src-gen/fr/obeo/dsl/arduino/impl/FanImpl.java create mode 100644 dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino/src-gen/fr/obeo/dsl/arduino/impl/IfImpl.java create mode 100644 dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino/src-gen/fr/obeo/dsl/arduino/impl/InfraRedSensorImpl.java create mode 100644 dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino/src-gen/fr/obeo/dsl/arduino/impl/InstructionBlockImpl.java create mode 100644 dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino/src-gen/fr/obeo/dsl/arduino/impl/InstructionImpl.java create mode 100644 dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino/src-gen/fr/obeo/dsl/arduino/impl/IntegerConstantImpl.java create mode 100644 dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino/src-gen/fr/obeo/dsl/arduino/impl/IntegerExpressionImpl.java create mode 100644 dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino/src-gen/fr/obeo/dsl/arduino/impl/IntegerModuleGetImpl.java create mode 100644 dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino/src-gen/fr/obeo/dsl/arduino/impl/IntegerVariableImpl.java create mode 100644 dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino/src-gen/fr/obeo/dsl/arduino/impl/LEDImpl.java create mode 100644 dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino/src-gen/fr/obeo/dsl/arduino/impl/LinkImpl.java create mode 100644 dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino/src-gen/fr/obeo/dsl/arduino/impl/MicroServoImpl.java create mode 100644 dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino/src-gen/fr/obeo/dsl/arduino/impl/ModuleAssignmentImpl.java create mode 100644 dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino/src-gen/fr/obeo/dsl/arduino/impl/ModuleGetImpl.java create mode 100644 dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino/src-gen/fr/obeo/dsl/arduino/impl/ModuleInstructionImpl.java create mode 100644 dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino/src-gen/fr/obeo/dsl/arduino/impl/MusicPlayerImpl.java create mode 100644 dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino/src-gen/fr/obeo/dsl/arduino/impl/NamedElementImpl.java create mode 100644 dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino/src-gen/fr/obeo/dsl/arduino/impl/PinImpl.java create mode 100644 dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino/src-gen/fr/obeo/dsl/arduino/impl/ProjectImpl.java create mode 100644 dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino/src-gen/fr/obeo/dsl/arduino/impl/PushButtonImpl.java create mode 100644 dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino/src-gen/fr/obeo/dsl/arduino/impl/RepeatImpl.java create mode 100644 dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino/src-gen/fr/obeo/dsl/arduino/impl/RotationSensorImpl.java create mode 100644 dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino/src-gen/fr/obeo/dsl/arduino/impl/SketchImpl.java create mode 100644 dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino/src-gen/fr/obeo/dsl/arduino/impl/SoundSensorImpl.java create mode 100644 dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino/src-gen/fr/obeo/dsl/arduino/impl/SynchronizationBlockImpl.java create mode 100644 dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino/src-gen/fr/obeo/dsl/arduino/impl/ThreadImpl.java create mode 100644 dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino/src-gen/fr/obeo/dsl/arduino/impl/ThreadInstructionBlockImpl.java create mode 100644 dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino/src-gen/fr/obeo/dsl/arduino/impl/UnaryBooleanExpressionImpl.java create mode 100644 dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino/src-gen/fr/obeo/dsl/arduino/impl/UnaryExpressionImpl.java create mode 100644 dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino/src-gen/fr/obeo/dsl/arduino/impl/UnaryIntegerExpressionImpl.java create mode 100644 dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino/src-gen/fr/obeo/dsl/arduino/impl/UtilitiesImpl.java create mode 100644 dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino/src-gen/fr/obeo/dsl/arduino/impl/VariableAssignmentImpl.java create mode 100644 dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino/src-gen/fr/obeo/dsl/arduino/impl/VariableDeclarationImpl.java create mode 100644 dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino/src-gen/fr/obeo/dsl/arduino/impl/VariableImpl.java create mode 100644 dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino/src-gen/fr/obeo/dsl/arduino/impl/VariableRefImpl.java create mode 100644 dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino/src-gen/fr/obeo/dsl/arduino/impl/WhileImpl.java create mode 100644 dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino/src-gen/fr/obeo/dsl/arduino/util/ArduinoAdapterFactory.java create mode 100644 dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino/src-gen/fr/obeo/dsl/arduino/util/ArduinoSwitch.java create mode 100644 dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino/src/fr/obeo/dsl/arduino/ArduinoUtils.java create mode 100644 dev/language_workbench_concurrency_demo/org.gemoc.arduino.arduino.trace/.classpath create mode 100644 dev/language_workbench_concurrency_demo/org.gemoc.arduino.arduino.trace/.project create mode 100644 dev/language_workbench_concurrency_demo/org.gemoc.arduino.arduino.trace/META-INF/MANIFEST.MF create mode 100644 dev/language_workbench_concurrency_demo/org.gemoc.arduino.arduino.trace/build.properties create mode 100644 dev/language_workbench_concurrency_demo/org.gemoc.arduino.arduino.trace/model/arduinoTrace.ecore create mode 100644 dev/language_workbench_concurrency_demo/org.gemoc.arduino.arduino.trace/model/arduinoTrace.genmodel create mode 100644 dev/language_workbench_concurrency_demo/org.gemoc.arduino.arduino.trace/plugin.properties create mode 100644 dev/language_workbench_concurrency_demo/org.gemoc.arduino.arduino.trace/plugin.xml create mode 100644 dev/language_workbench_concurrency_demo/org.gemoc.arduino.arduino.trace/src/arduinoTrace/ArduinoTraceFactory.java create mode 100644 dev/language_workbench_concurrency_demo/org.gemoc.arduino.arduino.trace/src/arduinoTrace/ArduinoTracePackage.java create mode 100644 dev/language_workbench_concurrency_demo/org.gemoc.arduino.arduino.trace/src/arduinoTrace/States/BooleanVariable_value_Value.java create mode 100644 dev/language_workbench_concurrency_demo/org.gemoc.arduino.arduino.trace/src/arduinoTrace/States/IntegerVariable_value_Value.java create mode 100644 dev/language_workbench_concurrency_demo/org.gemoc.arduino.arduino.trace/src/arduinoTrace/States/Pin_level_Value.java create mode 100644 dev/language_workbench_concurrency_demo/org.gemoc.arduino.arduino.trace/src/arduinoTrace/States/State.java create mode 100644 dev/language_workbench_concurrency_demo/org.gemoc.arduino.arduino.trace/src/arduinoTrace/States/StatesFactory.java create mode 100644 dev/language_workbench_concurrency_demo/org.gemoc.arduino.arduino.trace/src/arduinoTrace/States/StatesPackage.java create mode 100644 dev/language_workbench_concurrency_demo/org.gemoc.arduino.arduino.trace/src/arduinoTrace/States/arduino/ArduinoFactory.java create mode 100644 dev/language_workbench_concurrency_demo/org.gemoc.arduino.arduino.trace/src/arduinoTrace/States/arduino/ArduinoPackage.java create mode 100644 dev/language_workbench_concurrency_demo/org.gemoc.arduino.arduino.trace/src/arduinoTrace/States/arduino/TracedAnalogPin.java create mode 100644 dev/language_workbench_concurrency_demo/org.gemoc.arduino.arduino.trace/src/arduinoTrace/States/arduino/TracedBooleanExpression.java create mode 100644 dev/language_workbench_concurrency_demo/org.gemoc.arduino.arduino.trace/src/arduinoTrace/States/arduino/TracedBooleanVariable.java create mode 100644 dev/language_workbench_concurrency_demo/org.gemoc.arduino.arduino.trace/src/arduinoTrace/States/arduino/TracedDigitalPin.java create mode 100644 dev/language_workbench_concurrency_demo/org.gemoc.arduino.arduino.trace/src/arduinoTrace/States/arduino/TracedExpression.java create mode 100644 dev/language_workbench_concurrency_demo/org.gemoc.arduino.arduino.trace/src/arduinoTrace/States/arduino/TracedIntegerExpression.java create mode 100644 dev/language_workbench_concurrency_demo/org.gemoc.arduino.arduino.trace/src/arduinoTrace/States/arduino/TracedIntegerVariable.java create mode 100644 dev/language_workbench_concurrency_demo/org.gemoc.arduino.arduino.trace/src/arduinoTrace/States/arduino/TracedNamedElement.java create mode 100644 dev/language_workbench_concurrency_demo/org.gemoc.arduino.arduino.trace/src/arduinoTrace/States/arduino/TracedPin.java create mode 100644 dev/language_workbench_concurrency_demo/org.gemoc.arduino.arduino.trace/src/arduinoTrace/States/arduino/TracedSharedResource.java create mode 100644 dev/language_workbench_concurrency_demo/org.gemoc.arduino.arduino.trace/src/arduinoTrace/States/arduino/TracedVariable.java create mode 100644 dev/language_workbench_concurrency_demo/org.gemoc.arduino.arduino.trace/src/arduinoTrace/States/arduino/impl/ArduinoFactoryImpl.java create mode 100644 dev/language_workbench_concurrency_demo/org.gemoc.arduino.arduino.trace/src/arduinoTrace/States/arduino/impl/ArduinoPackageImpl.java create mode 100644 dev/language_workbench_concurrency_demo/org.gemoc.arduino.arduino.trace/src/arduinoTrace/States/arduino/impl/TracedAnalogPinImpl.java create mode 100644 dev/language_workbench_concurrency_demo/org.gemoc.arduino.arduino.trace/src/arduinoTrace/States/arduino/impl/TracedBooleanExpressionImpl.java create mode 100644 dev/language_workbench_concurrency_demo/org.gemoc.arduino.arduino.trace/src/arduinoTrace/States/arduino/impl/TracedBooleanVariableImpl.java create mode 100644 dev/language_workbench_concurrency_demo/org.gemoc.arduino.arduino.trace/src/arduinoTrace/States/arduino/impl/TracedDigitalPinImpl.java create mode 100644 dev/language_workbench_concurrency_demo/org.gemoc.arduino.arduino.trace/src/arduinoTrace/States/arduino/impl/TracedExpressionImpl.java create mode 100644 dev/language_workbench_concurrency_demo/org.gemoc.arduino.arduino.trace/src/arduinoTrace/States/arduino/impl/TracedIntegerExpressionImpl.java create mode 100644 dev/language_workbench_concurrency_demo/org.gemoc.arduino.arduino.trace/src/arduinoTrace/States/arduino/impl/TracedIntegerVariableImpl.java create mode 100644 dev/language_workbench_concurrency_demo/org.gemoc.arduino.arduino.trace/src/arduinoTrace/States/arduino/impl/TracedNamedElementImpl.java create mode 100644 dev/language_workbench_concurrency_demo/org.gemoc.arduino.arduino.trace/src/arduinoTrace/States/arduino/impl/TracedPinImpl.java create mode 100644 dev/language_workbench_concurrency_demo/org.gemoc.arduino.arduino.trace/src/arduinoTrace/States/arduino/impl/TracedSharedResourceImpl.java create mode 100644 dev/language_workbench_concurrency_demo/org.gemoc.arduino.arduino.trace/src/arduinoTrace/States/arduino/impl/TracedVariableImpl.java create mode 100644 dev/language_workbench_concurrency_demo/org.gemoc.arduino.arduino.trace/src/arduinoTrace/States/arduino/util/ArduinoAdapterFactory.java create mode 100644 dev/language_workbench_concurrency_demo/org.gemoc.arduino.arduino.trace/src/arduinoTrace/States/arduino/util/ArduinoSwitch.java create mode 100644 dev/language_workbench_concurrency_demo/org.gemoc.arduino.arduino.trace/src/arduinoTrace/States/impl/BooleanVariable_value_ValueImpl.java create mode 100644 dev/language_workbench_concurrency_demo/org.gemoc.arduino.arduino.trace/src/arduinoTrace/States/impl/IntegerVariable_value_ValueImpl.java create mode 100644 dev/language_workbench_concurrency_demo/org.gemoc.arduino.arduino.trace/src/arduinoTrace/States/impl/Pin_level_ValueImpl.java create mode 100644 dev/language_workbench_concurrency_demo/org.gemoc.arduino.arduino.trace/src/arduinoTrace/States/impl/StateImpl.java create mode 100644 dev/language_workbench_concurrency_demo/org.gemoc.arduino.arduino.trace/src/arduinoTrace/States/impl/StatesFactoryImpl.java create mode 100644 dev/language_workbench_concurrency_demo/org.gemoc.arduino.arduino.trace/src/arduinoTrace/States/impl/StatesPackageImpl.java create mode 100644 dev/language_workbench_concurrency_demo/org.gemoc.arduino.arduino.trace/src/arduinoTrace/States/util/StatesAdapterFactory.java create mode 100644 dev/language_workbench_concurrency_demo/org.gemoc.arduino.arduino.trace/src/arduinoTrace/States/util/StatesSwitch.java create mode 100644 dev/language_workbench_concurrency_demo/org.gemoc.arduino.arduino.trace/src/arduinoTrace/Steps/Arduino_Delay_Execute.java create mode 100644 dev/language_workbench_concurrency_demo/org.gemoc.arduino.arduino.trace/src/arduinoTrace/Steps/Arduino_Delay_Execute_AbstractSubStep.java create mode 100644 dev/language_workbench_concurrency_demo/org.gemoc.arduino.arduino.trace/src/arduinoTrace/Steps/Arduino_Delay_Execute_ImplicitStep.java create mode 100644 dev/language_workbench_concurrency_demo/org.gemoc.arduino.arduino.trace/src/arduinoTrace/Steps/Arduino_If_Execute.java create mode 100644 dev/language_workbench_concurrency_demo/org.gemoc.arduino.arduino.trace/src/arduinoTrace/Steps/Arduino_If_Execute_AbstractSubStep.java create mode 100644 dev/language_workbench_concurrency_demo/org.gemoc.arduino.arduino.trace/src/arduinoTrace/Steps/Arduino_If_Execute_ImplicitStep.java create mode 100644 dev/language_workbench_concurrency_demo/org.gemoc.arduino.arduino.trace/src/arduinoTrace/Steps/Arduino_ModuleAssignment_Execute.java create mode 100644 dev/language_workbench_concurrency_demo/org.gemoc.arduino.arduino.trace/src/arduinoTrace/Steps/Arduino_ModuleAssignment_Execute_AbstractSubStep.java create mode 100644 dev/language_workbench_concurrency_demo/org.gemoc.arduino.arduino.trace/src/arduinoTrace/Steps/Arduino_ModuleAssignment_Execute_ImplicitStep.java create mode 100644 dev/language_workbench_concurrency_demo/org.gemoc.arduino.arduino.trace/src/arduinoTrace/Steps/Arduino_Project_Setup.java create mode 100644 dev/language_workbench_concurrency_demo/org.gemoc.arduino.arduino.trace/src/arduinoTrace/Steps/Arduino_VariableAssignment_Execute.java create mode 100644 dev/language_workbench_concurrency_demo/org.gemoc.arduino.arduino.trace/src/arduinoTrace/Steps/Arduino_VariableAssignment_Execute_AbstractSubStep.java create mode 100644 dev/language_workbench_concurrency_demo/org.gemoc.arduino.arduino.trace/src/arduinoTrace/Steps/Arduino_VariableAssignment_Execute_ImplicitStep.java create mode 100644 dev/language_workbench_concurrency_demo/org.gemoc.arduino.arduino.trace/src/arduinoTrace/Steps/Arduino_VariableDeclaration_Execute.java create mode 100644 dev/language_workbench_concurrency_demo/org.gemoc.arduino.arduino.trace/src/arduinoTrace/Steps/Arduino_VariableDeclaration_Execute_AbstractSubStep.java create mode 100644 dev/language_workbench_concurrency_demo/org.gemoc.arduino.arduino.trace/src/arduinoTrace/Steps/Arduino_VariableDeclaration_Execute_ImplicitStep.java create mode 100644 dev/language_workbench_concurrency_demo/org.gemoc.arduino.arduino.trace/src/arduinoTrace/Steps/BigStep.java create mode 100644 dev/language_workbench_concurrency_demo/org.gemoc.arduino.arduino.trace/src/arduinoTrace/Steps/RootImplicitStep.java create mode 100644 dev/language_workbench_concurrency_demo/org.gemoc.arduino.arduino.trace/src/arduinoTrace/Steps/SmallStep.java create mode 100644 dev/language_workbench_concurrency_demo/org.gemoc.arduino.arduino.trace/src/arduinoTrace/Steps/Step.java create mode 100644 dev/language_workbench_concurrency_demo/org.gemoc.arduino.arduino.trace/src/arduinoTrace/Steps/StepsFactory.java create mode 100644 dev/language_workbench_concurrency_demo/org.gemoc.arduino.arduino.trace/src/arduinoTrace/Steps/StepsPackage.java create mode 100644 dev/language_workbench_concurrency_demo/org.gemoc.arduino.arduino.trace/src/arduinoTrace/Steps/impl/Arduino_Delay_ExecuteImpl.java create mode 100644 dev/language_workbench_concurrency_demo/org.gemoc.arduino.arduino.trace/src/arduinoTrace/Steps/impl/Arduino_Delay_Execute_AbstractSubStepImpl.java create mode 100644 dev/language_workbench_concurrency_demo/org.gemoc.arduino.arduino.trace/src/arduinoTrace/Steps/impl/Arduino_Delay_Execute_ImplicitStepImpl.java create mode 100644 dev/language_workbench_concurrency_demo/org.gemoc.arduino.arduino.trace/src/arduinoTrace/Steps/impl/Arduino_If_ExecuteImpl.java create mode 100644 dev/language_workbench_concurrency_demo/org.gemoc.arduino.arduino.trace/src/arduinoTrace/Steps/impl/Arduino_If_Execute_AbstractSubStepImpl.java create mode 100644 dev/language_workbench_concurrency_demo/org.gemoc.arduino.arduino.trace/src/arduinoTrace/Steps/impl/Arduino_If_Execute_ImplicitStepImpl.java create mode 100644 dev/language_workbench_concurrency_demo/org.gemoc.arduino.arduino.trace/src/arduinoTrace/Steps/impl/Arduino_ModuleAssignment_ExecuteImpl.java create mode 100644 dev/language_workbench_concurrency_demo/org.gemoc.arduino.arduino.trace/src/arduinoTrace/Steps/impl/Arduino_ModuleAssignment_Execute_AbstractSubStepImpl.java create mode 100644 dev/language_workbench_concurrency_demo/org.gemoc.arduino.arduino.trace/src/arduinoTrace/Steps/impl/Arduino_ModuleAssignment_Execute_ImplicitStepImpl.java create mode 100644 dev/language_workbench_concurrency_demo/org.gemoc.arduino.arduino.trace/src/arduinoTrace/Steps/impl/Arduino_Project_SetupImpl.java create mode 100644 dev/language_workbench_concurrency_demo/org.gemoc.arduino.arduino.trace/src/arduinoTrace/Steps/impl/Arduino_VariableAssignment_ExecuteImpl.java create mode 100644 dev/language_workbench_concurrency_demo/org.gemoc.arduino.arduino.trace/src/arduinoTrace/Steps/impl/Arduino_VariableAssignment_Execute_AbstractSubStepImpl.java create mode 100644 dev/language_workbench_concurrency_demo/org.gemoc.arduino.arduino.trace/src/arduinoTrace/Steps/impl/Arduino_VariableAssignment_Execute_ImplicitStepImpl.java create mode 100644 dev/language_workbench_concurrency_demo/org.gemoc.arduino.arduino.trace/src/arduinoTrace/Steps/impl/Arduino_VariableDeclaration_ExecuteImpl.java create mode 100644 dev/language_workbench_concurrency_demo/org.gemoc.arduino.arduino.trace/src/arduinoTrace/Steps/impl/Arduino_VariableDeclaration_Execute_AbstractSubStepImpl.java create mode 100644 dev/language_workbench_concurrency_demo/org.gemoc.arduino.arduino.trace/src/arduinoTrace/Steps/impl/Arduino_VariableDeclaration_Execute_ImplicitStepImpl.java create mode 100644 dev/language_workbench_concurrency_demo/org.gemoc.arduino.arduino.trace/src/arduinoTrace/Steps/impl/BigStepImpl.java create mode 100644 dev/language_workbench_concurrency_demo/org.gemoc.arduino.arduino.trace/src/arduinoTrace/Steps/impl/RootImplicitStepImpl.java create mode 100644 dev/language_workbench_concurrency_demo/org.gemoc.arduino.arduino.trace/src/arduinoTrace/Steps/impl/SmallStepImpl.java create mode 100644 dev/language_workbench_concurrency_demo/org.gemoc.arduino.arduino.trace/src/arduinoTrace/Steps/impl/StepImpl.java create mode 100644 dev/language_workbench_concurrency_demo/org.gemoc.arduino.arduino.trace/src/arduinoTrace/Steps/impl/StepsFactoryImpl.java create mode 100644 dev/language_workbench_concurrency_demo/org.gemoc.arduino.arduino.trace/src/arduinoTrace/Steps/impl/StepsPackageImpl.java create mode 100644 dev/language_workbench_concurrency_demo/org.gemoc.arduino.arduino.trace/src/arduinoTrace/Steps/util/StepsAdapterFactory.java create mode 100644 dev/language_workbench_concurrency_demo/org.gemoc.arduino.arduino.trace/src/arduinoTrace/Steps/util/StepsSwitch.java create mode 100644 dev/language_workbench_concurrency_demo/org.gemoc.arduino.arduino.trace/src/arduinoTrace/Trace.java create mode 100644 dev/language_workbench_concurrency_demo/org.gemoc.arduino.arduino.trace/src/arduinoTrace/impl/ArduinoTraceFactoryImpl.java create mode 100644 dev/language_workbench_concurrency_demo/org.gemoc.arduino.arduino.trace/src/arduinoTrace/impl/ArduinoTracePackageImpl.java create mode 100644 dev/language_workbench_concurrency_demo/org.gemoc.arduino.arduino.trace/src/arduinoTrace/impl/TraceImpl.java create mode 100644 dev/language_workbench_concurrency_demo/org.gemoc.arduino.arduino.trace/src/arduinoTrace/util/ArduinoTraceAdapterFactory.java create mode 100644 dev/language_workbench_concurrency_demo/org.gemoc.arduino.arduino.trace/src/arduinoTrace/util/ArduinoTraceSwitch.java create mode 100644 dev/language_workbench_concurrency_demo/org.gemoc.arduino.arduino.trace/src/org/gemoc/arduino/arduino/trace/tracemanager/ArduinoTraceEngineAddon.java create mode 100644 dev/language_workbench_concurrency_demo/org.gemoc.arduino.arduino.trace/src/org/gemoc/arduino/arduino/trace/tracemanager/ArduinoTraceManager.java create mode 100644 dev/language_workbench_concurrency_demo/org.gemoc.arduino.arduino.trace/src/org/gemoc/arduino/arduino/trace/tracemanager/ArduinoTraceStepFactory.java create mode 100644 dev/language_workbench_concurrency_demo/org.gemoc.arduino.design/.classpath create mode 100644 dev/language_workbench_concurrency_demo/org.gemoc.arduino.design/.project create mode 100644 dev/language_workbench_concurrency_demo/org.gemoc.arduino.design/.settings/org.eclipse.jdt.core.prefs create mode 100644 dev/language_workbench_concurrency_demo/org.gemoc.arduino.design/META-INF/MANIFEST.MF create mode 100644 dev/language_workbench_concurrency_demo/org.gemoc.arduino.design/build.properties create mode 100644 dev/language_workbench_concurrency_demo/org.gemoc.arduino.design/description/simulator.odesign create mode 100644 dev/language_workbench_concurrency_demo/org.gemoc.arduino.design/icons/breakpoint.gif create mode 100644 dev/language_workbench_concurrency_demo/org.gemoc.arduino.design/icons/breakpoint_disabled.gif create mode 100644 dev/language_workbench_concurrency_demo/org.gemoc.arduino.design/icons/breakpoint_enabled.gif create mode 100644 dev/language_workbench_concurrency_demo/org.gemoc.arduino.design/icons/debug_exc.gif create mode 100644 dev/language_workbench_concurrency_demo/org.gemoc.arduino.design/icons/launch.png create mode 100644 dev/language_workbench_concurrency_demo/org.gemoc.arduino.design/icons/simulator.png create mode 100644 dev/language_workbench_concurrency_demo/org.gemoc.arduino.design/images/dfrobot/blue_led_1023.jpg create mode 100644 dev/language_workbench_concurrency_demo/org.gemoc.arduino.design/images/dfrobot/red_led_1023.jpg create mode 100644 dev/language_workbench_concurrency_demo/org.gemoc.arduino.design/images/dfrobot/white_led_1023.jpg create mode 100644 dev/language_workbench_concurrency_demo/org.gemoc.arduino.design/plugin.xml create mode 100644 dev/language_workbench_concurrency_demo/org.gemoc.arduino.design/pom.xml create mode 100644 dev/language_workbench_concurrency_demo/org.gemoc.arduino.design/src/org/gemoc/arduino/design/Activator.java create mode 100644 dev/language_workbench_concurrency_demo/org.gemoc.arduino.design/src/org/gemoc/arduino/design/services/ArduinoAnimatorServices.java create mode 100644 dev/language_workbench_concurrency_demo/org.gemoc.arduino.design/src/org/gemoc/arduino/design/services/ArduinoDebuggerServices.java create mode 100644 dev/language_workbench_concurrency_demo/org.gemoc.arduino.dse/.project create mode 100644 dev/language_workbench_concurrency_demo/org.gemoc.arduino.dse/META-INF/MANIFEST.MF create mode 100644 dev/language_workbench_concurrency_demo/org.gemoc.arduino.dse/build.properties create mode 100644 dev/language_workbench_concurrency_demo/org.gemoc.arduino.dse/ecl/Arduino.moccml create mode 100644 dev/language_workbench_concurrency_demo/org.gemoc.arduino.dse/ecl/ArduinoLanguage.ecl create mode 100644 dev/language_workbench_concurrency_demo/org.gemoc.arduino.dse/ecl/arduino.ecore create mode 100644 dev/language_workbench_concurrency_demo/org.gemoc.arduino.dse/moc2as.properties create mode 100644 dev/language_workbench_concurrency_demo/org.gemoc.arduino.dse/mtl-gen/ArduinoLanguage.clocksystem create mode 100644 dev/language_workbench_concurrency_demo/org.gemoc.arduino.dse/mtl-gen/ArduinoLanguagetoClockSystem.mtl create mode 100644 dev/language_workbench_concurrency_demo/org.gemoc.arduino.dse/mtl-gen/ArduinoLanguagetoFiacre.mtl create mode 100644 dev/language_workbench_concurrency_demo/org.gemoc.arduino.dse/mtl-gen/allURI.txt create mode 100644 dev/language_workbench_concurrency_demo/org.gemoc.arduino.dse/qvto-gen/language/ArduinoLanguage.qvto create mode 100644 dev/language_workbench_concurrency_demo/org.gemoc.arduino.dse/qvto-gen/modeling/ArduinoLanguage.qvto create mode 100644 dev/language_workbench_concurrency_demo/org.gemoc.arduino.mocc/.project create mode 100644 dev/language_workbench_concurrency_demo/org.gemoc.arduino.mocc/META-INF/MANIFEST.MF create mode 100644 dev/language_workbench_concurrency_demo/org.gemoc.arduino.mocc/build.properties create mode 100644 dev/language_workbench_concurrency_demo/org.gemoc.arduino.mocc/mocc/Arduino.moccml create mode 100644 dev/language_workbench_concurrency_demo/org.gemoc.arduino.mocc/representations.aird create mode 100644 dev/language_workbench_concurrency_demo/org.gemoc.arduino.operationalsemantics/.classpath create mode 100644 dev/language_workbench_concurrency_demo/org.gemoc.arduino.operationalsemantics/.project create mode 100644 dev/language_workbench_concurrency_demo/org.gemoc.arduino.operationalsemantics/.settings/org.eclipse.jdt.core.prefs create mode 100644 dev/language_workbench_concurrency_demo/org.gemoc.arduino.operationalsemantics/META-INF/MANIFEST.MF create mode 100644 dev/language_workbench_concurrency_demo/org.gemoc.arduino.operationalsemantics/META-INF/xtend-gen/org.gemoc.arduino.operationalsemantics.k3_aspect_mapping.properties create mode 100644 dev/language_workbench_concurrency_demo/org.gemoc.arduino.operationalsemantics/build.properties create mode 100644 dev/language_workbench_concurrency_demo/org.gemoc.arduino.operationalsemantics/src/org/gemoc/arduino/operationalsemantics/OperationalSemantics.xtend create mode 100644 dev/language_workbench_concurrency_demo/org.gemoc.arduino.operationalsemantics/xtend-gen/org/gemoc/arduino/operationalsemantics/.gitignore create mode 100644 dev/language_workbench_concurrency_demo/org.gemoc.arduino.trace/.classpath create mode 100644 dev/language_workbench_concurrency_demo/org.gemoc.arduino.trace/.project create mode 100644 dev/language_workbench_concurrency_demo/org.gemoc.arduino.trace/META-INF/MANIFEST.MF create mode 100644 dev/language_workbench_concurrency_demo/org.gemoc.arduino.trace/build.properties create mode 100644 dev/language_workbench_concurrency_demo/org.gemoc.arduino.trace/model/arduinoTrace.ecore create mode 100644 dev/language_workbench_concurrency_demo/org.gemoc.arduino.trace/model/arduinoTrace.genmodel create mode 100644 dev/language_workbench_concurrency_demo/org.gemoc.arduino.trace/plugin.properties create mode 100644 dev/language_workbench_concurrency_demo/org.gemoc.arduino.trace/plugin.xml create mode 100644 dev/language_workbench_concurrency_demo/org.gemoc.arduino.trace/src/arduinoTrace/ArduinoTraceFactory.java create mode 100644 dev/language_workbench_concurrency_demo/org.gemoc.arduino.trace/src/arduinoTrace/ArduinoTracePackage.java create mode 100644 dev/language_workbench_concurrency_demo/org.gemoc.arduino.trace/src/arduinoTrace/States/BooleanVariable_value_Value.java create mode 100644 dev/language_workbench_concurrency_demo/org.gemoc.arduino.trace/src/arduinoTrace/States/IntegerVariable_value_Value.java create mode 100644 dev/language_workbench_concurrency_demo/org.gemoc.arduino.trace/src/arduinoTrace/States/Pin_level_Value.java create mode 100644 dev/language_workbench_concurrency_demo/org.gemoc.arduino.trace/src/arduinoTrace/States/State.java create mode 100644 dev/language_workbench_concurrency_demo/org.gemoc.arduino.trace/src/arduinoTrace/States/StatesFactory.java create mode 100644 dev/language_workbench_concurrency_demo/org.gemoc.arduino.trace/src/arduinoTrace/States/StatesPackage.java create mode 100644 dev/language_workbench_concurrency_demo/org.gemoc.arduino.trace/src/arduinoTrace/States/arduino/ArduinoFactory.java create mode 100644 dev/language_workbench_concurrency_demo/org.gemoc.arduino.trace/src/arduinoTrace/States/arduino/ArduinoPackage.java create mode 100644 dev/language_workbench_concurrency_demo/org.gemoc.arduino.trace/src/arduinoTrace/States/arduino/TracedAnalogPin.java create mode 100644 dev/language_workbench_concurrency_demo/org.gemoc.arduino.trace/src/arduinoTrace/States/arduino/TracedBooleanExpression.java create mode 100644 dev/language_workbench_concurrency_demo/org.gemoc.arduino.trace/src/arduinoTrace/States/arduino/TracedBooleanVariable.java create mode 100644 dev/language_workbench_concurrency_demo/org.gemoc.arduino.trace/src/arduinoTrace/States/arduino/TracedDigitalPin.java create mode 100644 dev/language_workbench_concurrency_demo/org.gemoc.arduino.trace/src/arduinoTrace/States/arduino/TracedExpression.java create mode 100644 dev/language_workbench_concurrency_demo/org.gemoc.arduino.trace/src/arduinoTrace/States/arduino/TracedIntegerExpression.java create mode 100644 dev/language_workbench_concurrency_demo/org.gemoc.arduino.trace/src/arduinoTrace/States/arduino/TracedIntegerVariable.java create mode 100644 dev/language_workbench_concurrency_demo/org.gemoc.arduino.trace/src/arduinoTrace/States/arduino/TracedNamedElement.java create mode 100644 dev/language_workbench_concurrency_demo/org.gemoc.arduino.trace/src/arduinoTrace/States/arduino/TracedPin.java create mode 100644 dev/language_workbench_concurrency_demo/org.gemoc.arduino.trace/src/arduinoTrace/States/arduino/TracedVariable.java create mode 100644 dev/language_workbench_concurrency_demo/org.gemoc.arduino.trace/src/arduinoTrace/States/arduino/impl/ArduinoFactoryImpl.java create mode 100644 dev/language_workbench_concurrency_demo/org.gemoc.arduino.trace/src/arduinoTrace/States/arduino/impl/ArduinoPackageImpl.java create mode 100644 dev/language_workbench_concurrency_demo/org.gemoc.arduino.trace/src/arduinoTrace/States/arduino/impl/TracedAnalogPinImpl.java create mode 100644 dev/language_workbench_concurrency_demo/org.gemoc.arduino.trace/src/arduinoTrace/States/arduino/impl/TracedBooleanExpressionImpl.java create mode 100644 dev/language_workbench_concurrency_demo/org.gemoc.arduino.trace/src/arduinoTrace/States/arduino/impl/TracedBooleanVariableImpl.java create mode 100644 dev/language_workbench_concurrency_demo/org.gemoc.arduino.trace/src/arduinoTrace/States/arduino/impl/TracedDigitalPinImpl.java create mode 100644 dev/language_workbench_concurrency_demo/org.gemoc.arduino.trace/src/arduinoTrace/States/arduino/impl/TracedExpressionImpl.java create mode 100644 dev/language_workbench_concurrency_demo/org.gemoc.arduino.trace/src/arduinoTrace/States/arduino/impl/TracedIntegerExpressionImpl.java create mode 100644 dev/language_workbench_concurrency_demo/org.gemoc.arduino.trace/src/arduinoTrace/States/arduino/impl/TracedIntegerVariableImpl.java create mode 100644 dev/language_workbench_concurrency_demo/org.gemoc.arduino.trace/src/arduinoTrace/States/arduino/impl/TracedNamedElementImpl.java create mode 100644 dev/language_workbench_concurrency_demo/org.gemoc.arduino.trace/src/arduinoTrace/States/arduino/impl/TracedPinImpl.java create mode 100644 dev/language_workbench_concurrency_demo/org.gemoc.arduino.trace/src/arduinoTrace/States/arduino/impl/TracedVariableImpl.java create mode 100644 dev/language_workbench_concurrency_demo/org.gemoc.arduino.trace/src/arduinoTrace/States/arduino/util/ArduinoAdapterFactory.java create mode 100644 dev/language_workbench_concurrency_demo/org.gemoc.arduino.trace/src/arduinoTrace/States/arduino/util/ArduinoSwitch.java create mode 100644 dev/language_workbench_concurrency_demo/org.gemoc.arduino.trace/src/arduinoTrace/States/impl/BooleanVariable_value_ValueImpl.java create mode 100644 dev/language_workbench_concurrency_demo/org.gemoc.arduino.trace/src/arduinoTrace/States/impl/IntegerVariable_value_ValueImpl.java create mode 100644 dev/language_workbench_concurrency_demo/org.gemoc.arduino.trace/src/arduinoTrace/States/impl/Pin_level_ValueImpl.java create mode 100644 dev/language_workbench_concurrency_demo/org.gemoc.arduino.trace/src/arduinoTrace/States/impl/StateImpl.java create mode 100644 dev/language_workbench_concurrency_demo/org.gemoc.arduino.trace/src/arduinoTrace/States/impl/StatesFactoryImpl.java create mode 100644 dev/language_workbench_concurrency_demo/org.gemoc.arduino.trace/src/arduinoTrace/States/impl/StatesPackageImpl.java create mode 100644 dev/language_workbench_concurrency_demo/org.gemoc.arduino.trace/src/arduinoTrace/States/util/StatesAdapterFactory.java create mode 100644 dev/language_workbench_concurrency_demo/org.gemoc.arduino.trace/src/arduinoTrace/States/util/StatesSwitch.java create mode 100644 dev/language_workbench_concurrency_demo/org.gemoc.arduino.trace/src/arduinoTrace/Steps/Arduino_Delay_Execute.java create mode 100644 dev/language_workbench_concurrency_demo/org.gemoc.arduino.trace/src/arduinoTrace/Steps/Arduino_Delay_Execute_AbstractSubStep.java create mode 100644 dev/language_workbench_concurrency_demo/org.gemoc.arduino.trace/src/arduinoTrace/Steps/Arduino_Delay_Execute_ImplicitStep.java create mode 100644 dev/language_workbench_concurrency_demo/org.gemoc.arduino.trace/src/arduinoTrace/Steps/Arduino_If_Execute.java create mode 100644 dev/language_workbench_concurrency_demo/org.gemoc.arduino.trace/src/arduinoTrace/Steps/Arduino_If_Execute_AbstractSubStep.java create mode 100644 dev/language_workbench_concurrency_demo/org.gemoc.arduino.trace/src/arduinoTrace/Steps/Arduino_If_Execute_ImplicitStep.java create mode 100644 dev/language_workbench_concurrency_demo/org.gemoc.arduino.trace/src/arduinoTrace/Steps/Arduino_ModuleAssignment_Execute.java create mode 100644 dev/language_workbench_concurrency_demo/org.gemoc.arduino.trace/src/arduinoTrace/Steps/Arduino_ModuleAssignment_Execute_AbstractSubStep.java create mode 100644 dev/language_workbench_concurrency_demo/org.gemoc.arduino.trace/src/arduinoTrace/Steps/Arduino_ModuleAssignment_Execute_ImplicitStep.java create mode 100644 dev/language_workbench_concurrency_demo/org.gemoc.arduino.trace/src/arduinoTrace/Steps/Arduino_Project_Setup.java create mode 100644 dev/language_workbench_concurrency_demo/org.gemoc.arduino.trace/src/arduinoTrace/Steps/Arduino_VariableAssignment_Execute.java create mode 100644 dev/language_workbench_concurrency_demo/org.gemoc.arduino.trace/src/arduinoTrace/Steps/Arduino_VariableAssignment_Execute_AbstractSubStep.java create mode 100644 dev/language_workbench_concurrency_demo/org.gemoc.arduino.trace/src/arduinoTrace/Steps/Arduino_VariableAssignment_Execute_ImplicitStep.java create mode 100644 dev/language_workbench_concurrency_demo/org.gemoc.arduino.trace/src/arduinoTrace/Steps/Arduino_VariableDeclaration_Execute.java create mode 100644 dev/language_workbench_concurrency_demo/org.gemoc.arduino.trace/src/arduinoTrace/Steps/Arduino_VariableDeclaration_Execute_AbstractSubStep.java create mode 100644 dev/language_workbench_concurrency_demo/org.gemoc.arduino.trace/src/arduinoTrace/Steps/Arduino_VariableDeclaration_Execute_ImplicitStep.java create mode 100644 dev/language_workbench_concurrency_demo/org.gemoc.arduino.trace/src/arduinoTrace/Steps/BigStep.java create mode 100644 dev/language_workbench_concurrency_demo/org.gemoc.arduino.trace/src/arduinoTrace/Steps/RootImplicitStep.java create mode 100644 dev/language_workbench_concurrency_demo/org.gemoc.arduino.trace/src/arduinoTrace/Steps/SmallStep.java create mode 100644 dev/language_workbench_concurrency_demo/org.gemoc.arduino.trace/src/arduinoTrace/Steps/Step.java create mode 100644 dev/language_workbench_concurrency_demo/org.gemoc.arduino.trace/src/arduinoTrace/Steps/StepsFactory.java create mode 100644 dev/language_workbench_concurrency_demo/org.gemoc.arduino.trace/src/arduinoTrace/Steps/StepsPackage.java create mode 100644 dev/language_workbench_concurrency_demo/org.gemoc.arduino.trace/src/arduinoTrace/Steps/impl/Arduino_Delay_ExecuteImpl.java create mode 100644 dev/language_workbench_concurrency_demo/org.gemoc.arduino.trace/src/arduinoTrace/Steps/impl/Arduino_Delay_Execute_AbstractSubStepImpl.java create mode 100644 dev/language_workbench_concurrency_demo/org.gemoc.arduino.trace/src/arduinoTrace/Steps/impl/Arduino_Delay_Execute_ImplicitStepImpl.java create mode 100644 dev/language_workbench_concurrency_demo/org.gemoc.arduino.trace/src/arduinoTrace/Steps/impl/Arduino_If_ExecuteImpl.java create mode 100644 dev/language_workbench_concurrency_demo/org.gemoc.arduino.trace/src/arduinoTrace/Steps/impl/Arduino_If_Execute_AbstractSubStepImpl.java create mode 100644 dev/language_workbench_concurrency_demo/org.gemoc.arduino.trace/src/arduinoTrace/Steps/impl/Arduino_If_Execute_ImplicitStepImpl.java create mode 100644 dev/language_workbench_concurrency_demo/org.gemoc.arduino.trace/src/arduinoTrace/Steps/impl/Arduino_ModuleAssignment_ExecuteImpl.java create mode 100644 dev/language_workbench_concurrency_demo/org.gemoc.arduino.trace/src/arduinoTrace/Steps/impl/Arduino_ModuleAssignment_Execute_AbstractSubStepImpl.java create mode 100644 dev/language_workbench_concurrency_demo/org.gemoc.arduino.trace/src/arduinoTrace/Steps/impl/Arduino_ModuleAssignment_Execute_ImplicitStepImpl.java create mode 100644 dev/language_workbench_concurrency_demo/org.gemoc.arduino.trace/src/arduinoTrace/Steps/impl/Arduino_Project_SetupImpl.java create mode 100644 dev/language_workbench_concurrency_demo/org.gemoc.arduino.trace/src/arduinoTrace/Steps/impl/Arduino_VariableAssignment_ExecuteImpl.java create mode 100644 dev/language_workbench_concurrency_demo/org.gemoc.arduino.trace/src/arduinoTrace/Steps/impl/Arduino_VariableAssignment_Execute_AbstractSubStepImpl.java create mode 100644 dev/language_workbench_concurrency_demo/org.gemoc.arduino.trace/src/arduinoTrace/Steps/impl/Arduino_VariableAssignment_Execute_ImplicitStepImpl.java create mode 100644 dev/language_workbench_concurrency_demo/org.gemoc.arduino.trace/src/arduinoTrace/Steps/impl/Arduino_VariableDeclaration_ExecuteImpl.java create mode 100644 dev/language_workbench_concurrency_demo/org.gemoc.arduino.trace/src/arduinoTrace/Steps/impl/Arduino_VariableDeclaration_Execute_AbstractSubStepImpl.java create mode 100644 dev/language_workbench_concurrency_demo/org.gemoc.arduino.trace/src/arduinoTrace/Steps/impl/Arduino_VariableDeclaration_Execute_ImplicitStepImpl.java create mode 100644 dev/language_workbench_concurrency_demo/org.gemoc.arduino.trace/src/arduinoTrace/Steps/impl/BigStepImpl.java create mode 100644 dev/language_workbench_concurrency_demo/org.gemoc.arduino.trace/src/arduinoTrace/Steps/impl/RootImplicitStepImpl.java create mode 100644 dev/language_workbench_concurrency_demo/org.gemoc.arduino.trace/src/arduinoTrace/Steps/impl/SmallStepImpl.java create mode 100644 dev/language_workbench_concurrency_demo/org.gemoc.arduino.trace/src/arduinoTrace/Steps/impl/StepImpl.java create mode 100644 dev/language_workbench_concurrency_demo/org.gemoc.arduino.trace/src/arduinoTrace/Steps/impl/StepsFactoryImpl.java create mode 100644 dev/language_workbench_concurrency_demo/org.gemoc.arduino.trace/src/arduinoTrace/Steps/impl/StepsPackageImpl.java create mode 100644 dev/language_workbench_concurrency_demo/org.gemoc.arduino.trace/src/arduinoTrace/Steps/util/StepsAdapterFactory.java create mode 100644 dev/language_workbench_concurrency_demo/org.gemoc.arduino.trace/src/arduinoTrace/Steps/util/StepsSwitch.java create mode 100644 dev/language_workbench_concurrency_demo/org.gemoc.arduino.trace/src/arduinoTrace/Trace.java create mode 100644 dev/language_workbench_concurrency_demo/org.gemoc.arduino.trace/src/arduinoTrace/impl/ArduinoTraceFactoryImpl.java create mode 100644 dev/language_workbench_concurrency_demo/org.gemoc.arduino.trace/src/arduinoTrace/impl/ArduinoTracePackageImpl.java create mode 100644 dev/language_workbench_concurrency_demo/org.gemoc.arduino.trace/src/arduinoTrace/impl/TraceImpl.java create mode 100644 dev/language_workbench_concurrency_demo/org.gemoc.arduino.trace/src/arduinoTrace/util/ArduinoTraceAdapterFactory.java create mode 100644 dev/language_workbench_concurrency_demo/org.gemoc.arduino.trace/src/arduinoTrace/util/ArduinoTraceSwitch.java create mode 100644 dev/language_workbench_concurrency_demo/org.gemoc.arduino.trace/src/org/gemoc/arduino/arduino/trace/tracemanager/ArduinoTraceEngineAddon.java create mode 100644 dev/language_workbench_concurrency_demo/org.gemoc.arduino.trace/src/org/gemoc/arduino/arduino/trace/tracemanager/ArduinoTraceManager.java create mode 100644 dev/language_workbench_concurrency_demo/org.gemoc.arduino.trace/src/org/gemoc/arduino/arduino/trace/tracemanager/ArduinoTraceStepFactory.java create mode 100644 dev/language_workbench_concurrency_demo/org.gemoc.arduino.xdsml/.classpath create mode 100644 dev/language_workbench_concurrency_demo/org.gemoc.arduino.xdsml/.project create mode 100644 dev/language_workbench_concurrency_demo/org.gemoc.arduino.xdsml/.settings/org.eclipse.core.resources.prefs create mode 100644 dev/language_workbench_concurrency_demo/org.gemoc.arduino.xdsml/META-INF/MANIFEST.MF create mode 100644 dev/language_workbench_concurrency_demo/org.gemoc.arduino.xdsml/build.properties create mode 100644 dev/language_workbench_concurrency_demo/org.gemoc.arduino.xdsml/model-gen/ArduinoMT.ecore create mode 100644 dev/language_workbench_concurrency_demo/org.gemoc.arduino.xdsml/model-gen/ArduinoMT.genmodel create mode 100644 dev/language_workbench_concurrency_demo/org.gemoc.arduino.xdsml/plugin.xml create mode 100644 dev/language_workbench_concurrency_demo/org.gemoc.arduino.xdsml/src-gen/org/gemoc/arduino/xdsml/.gitignore create mode 100644 dev/language_workbench_concurrency_demo/org.gemoc.arduino.xdsml/src-gen/org/gemoc/arduino/xdsml/Arduino.java create mode 100644 dev/language_workbench_concurrency_demo/org.gemoc.arduino.xdsml/src-gen/org/gemoc/arduino/xdsml/StandaloneSetup.java create mode 100644 dev/language_workbench_concurrency_demo/org.gemoc.arduino.xdsml/src-gen/org/gemoc/arduino/xdsml/arduino/adapters/arduinomt/.gitignore create mode 100644 dev/language_workbench_concurrency_demo/org.gemoc.arduino.xdsml/src-gen/org/gemoc/arduino/xdsml/arduino/adapters/arduinomt/AmbientLightSensorAdapter.java create mode 100644 dev/language_workbench_concurrency_demo/org.gemoc.arduino.xdsml/src-gen/org/gemoc/arduino/xdsml/arduino/adapters/arduinomt/AnalogPinAdapter.java create mode 100644 dev/language_workbench_concurrency_demo/org.gemoc.arduino.xdsml/src-gen/org/gemoc/arduino/xdsml/arduino/adapters/arduinomt/ArduinoAdapter.java create mode 100644 dev/language_workbench_concurrency_demo/org.gemoc.arduino.xdsml/src-gen/org/gemoc/arduino/xdsml/arduino/adapters/arduinomt/ArduinoAnalogModuleAdapter.java create mode 100644 dev/language_workbench_concurrency_demo/org.gemoc.arduino.xdsml/src-gen/org/gemoc/arduino/xdsml/arduino/adapters/arduinomt/ArduinoBoardAdapter.java create mode 100644 dev/language_workbench_concurrency_demo/org.gemoc.arduino.xdsml/src-gen/org/gemoc/arduino/xdsml/arduino/adapters/arduinomt/ArduinoDigitalModuleAdapter.java create mode 100644 dev/language_workbench_concurrency_demo/org.gemoc.arduino.xdsml/src-gen/org/gemoc/arduino/xdsml/arduino/adapters/arduinomt/ArduinoMTAdaptersFactory.java create mode 100644 dev/language_workbench_concurrency_demo/org.gemoc.arduino.xdsml/src-gen/org/gemoc/arduino/xdsml/arduino/adapters/arduinomt/ArduinoModuleAdapter.java create mode 100644 dev/language_workbench_concurrency_demo/org.gemoc.arduino.xdsml/src-gen/org/gemoc/arduino/xdsml/arduino/adapters/arduinomt/AssignmentAdapter.java create mode 100644 dev/language_workbench_concurrency_demo/org.gemoc.arduino.xdsml/src-gen/org/gemoc/arduino/xdsml/arduino/adapters/arduinomt/BinaryBooleanExpressionAdapter.java create mode 100644 dev/language_workbench_concurrency_demo/org.gemoc.arduino.xdsml/src-gen/org/gemoc/arduino/xdsml/arduino/adapters/arduinomt/BinaryIntegerExpressionAdapter.java create mode 100644 dev/language_workbench_concurrency_demo/org.gemoc.arduino.xdsml/src-gen/org/gemoc/arduino/xdsml/arduino/adapters/arduinomt/BoardAdapter.java create mode 100644 dev/language_workbench_concurrency_demo/org.gemoc.arduino.xdsml/src-gen/org/gemoc/arduino/xdsml/arduino/adapters/arduinomt/BooleanConstantAdapter.java create mode 100644 dev/language_workbench_concurrency_demo/org.gemoc.arduino.xdsml/src-gen/org/gemoc/arduino/xdsml/arduino/adapters/arduinomt/BooleanExpressionAdapter.java create mode 100644 dev/language_workbench_concurrency_demo/org.gemoc.arduino.xdsml/src-gen/org/gemoc/arduino/xdsml/arduino/adapters/arduinomt/BooleanModuleGetAdapter.java create mode 100644 dev/language_workbench_concurrency_demo/org.gemoc.arduino.xdsml/src-gen/org/gemoc/arduino/xdsml/arduino/adapters/arduinomt/BooleanVariableAdapter.java create mode 100644 dev/language_workbench_concurrency_demo/org.gemoc.arduino.xdsml/src-gen/org/gemoc/arduino/xdsml/arduino/adapters/arduinomt/BuzzerAdapter.java create mode 100644 dev/language_workbench_concurrency_demo/org.gemoc.arduino.xdsml/src-gen/org/gemoc/arduino/xdsml/arduino/adapters/arduinomt/ChannelAdapter.java create mode 100644 dev/language_workbench_concurrency_demo/org.gemoc.arduino.xdsml/src-gen/org/gemoc/arduino/xdsml/arduino/adapters/arduinomt/ConstantAdapter.java create mode 100644 dev/language_workbench_concurrency_demo/org.gemoc.arduino.xdsml/src-gen/org/gemoc/arduino/xdsml/arduino/adapters/arduinomt/ControlAdapter.java create mode 100644 dev/language_workbench_concurrency_demo/org.gemoc.arduino.xdsml/src-gen/org/gemoc/arduino/xdsml/arduino/adapters/arduinomt/DelayAdapter.java create mode 100644 dev/language_workbench_concurrency_demo/org.gemoc.arduino.xdsml/src-gen/org/gemoc/arduino/xdsml/arduino/adapters/arduinomt/DigitalPinAdapter.java create mode 100644 dev/language_workbench_concurrency_demo/org.gemoc.arduino.xdsml/src-gen/org/gemoc/arduino/xdsml/arduino/adapters/arduinomt/FanAdapter.java create mode 100644 dev/language_workbench_concurrency_demo/org.gemoc.arduino.xdsml/src-gen/org/gemoc/arduino/xdsml/arduino/adapters/arduinomt/IfAdapter.java create mode 100644 dev/language_workbench_concurrency_demo/org.gemoc.arduino.xdsml/src-gen/org/gemoc/arduino/xdsml/arduino/adapters/arduinomt/InfraRedSensorAdapter.java create mode 100644 dev/language_workbench_concurrency_demo/org.gemoc.arduino.xdsml/src-gen/org/gemoc/arduino/xdsml/arduino/adapters/arduinomt/InstructionAdapter.java create mode 100644 dev/language_workbench_concurrency_demo/org.gemoc.arduino.xdsml/src-gen/org/gemoc/arduino/xdsml/arduino/adapters/arduinomt/IntegerConstantAdapter.java create mode 100644 dev/language_workbench_concurrency_demo/org.gemoc.arduino.xdsml/src-gen/org/gemoc/arduino/xdsml/arduino/adapters/arduinomt/IntegerExpressionAdapter.java create mode 100644 dev/language_workbench_concurrency_demo/org.gemoc.arduino.xdsml/src-gen/org/gemoc/arduino/xdsml/arduino/adapters/arduinomt/IntegerModuleGetAdapter.java create mode 100644 dev/language_workbench_concurrency_demo/org.gemoc.arduino.xdsml/src-gen/org/gemoc/arduino/xdsml/arduino/adapters/arduinomt/LEDAdapter.java create mode 100644 dev/language_workbench_concurrency_demo/org.gemoc.arduino.xdsml/src-gen/org/gemoc/arduino/xdsml/arduino/adapters/arduinomt/LinkAdapter.java create mode 100644 dev/language_workbench_concurrency_demo/org.gemoc.arduino.xdsml/src-gen/org/gemoc/arduino/xdsml/arduino/adapters/arduinomt/MicroServoAdapter.java create mode 100644 dev/language_workbench_concurrency_demo/org.gemoc.arduino.xdsml/src-gen/org/gemoc/arduino/xdsml/arduino/adapters/arduinomt/ModuleAdapter.java create mode 100644 dev/language_workbench_concurrency_demo/org.gemoc.arduino.xdsml/src-gen/org/gemoc/arduino/xdsml/arduino/adapters/arduinomt/ModuleAssignmentAdapter.java create mode 100644 dev/language_workbench_concurrency_demo/org.gemoc.arduino.xdsml/src-gen/org/gemoc/arduino/xdsml/arduino/adapters/arduinomt/ModuleGetAdapter.java create mode 100644 dev/language_workbench_concurrency_demo/org.gemoc.arduino.xdsml/src-gen/org/gemoc/arduino/xdsml/arduino/adapters/arduinomt/ModuleInstructionAdapter.java create mode 100644 dev/language_workbench_concurrency_demo/org.gemoc.arduino.xdsml/src-gen/org/gemoc/arduino/xdsml/arduino/adapters/arduinomt/MusicPlayerAdapter.java create mode 100644 dev/language_workbench_concurrency_demo/org.gemoc.arduino.xdsml/src-gen/org/gemoc/arduino/xdsml/arduino/adapters/arduinomt/NamedElementAdapter.java create mode 100644 dev/language_workbench_concurrency_demo/org.gemoc.arduino.xdsml/src-gen/org/gemoc/arduino/xdsml/arduino/adapters/arduinomt/PinAdapter.java create mode 100644 dev/language_workbench_concurrency_demo/org.gemoc.arduino.xdsml/src-gen/org/gemoc/arduino/xdsml/arduino/adapters/arduinomt/ProjectAdapter.java create mode 100644 dev/language_workbench_concurrency_demo/org.gemoc.arduino.xdsml/src-gen/org/gemoc/arduino/xdsml/arduino/adapters/arduinomt/PushButtonAdapter.java create mode 100644 dev/language_workbench_concurrency_demo/org.gemoc.arduino.xdsml/src-gen/org/gemoc/arduino/xdsml/arduino/adapters/arduinomt/RepeatAdapter.java create mode 100644 dev/language_workbench_concurrency_demo/org.gemoc.arduino.xdsml/src-gen/org/gemoc/arduino/xdsml/arduino/adapters/arduinomt/RotationSensorAdapter.java create mode 100644 dev/language_workbench_concurrency_demo/org.gemoc.arduino.xdsml/src-gen/org/gemoc/arduino/xdsml/arduino/adapters/arduinomt/SketchAdapter.java create mode 100644 dev/language_workbench_concurrency_demo/org.gemoc.arduino.xdsml/src-gen/org/gemoc/arduino/xdsml/arduino/adapters/arduinomt/SoundSensorAdapter.java create mode 100644 dev/language_workbench_concurrency_demo/org.gemoc.arduino.xdsml/src-gen/org/gemoc/arduino/xdsml/arduino/adapters/arduinomt/SynchronizationBlockAdapter.java create mode 100644 dev/language_workbench_concurrency_demo/org.gemoc.arduino.xdsml/src-gen/org/gemoc/arduino/xdsml/arduino/adapters/arduinomt/ThreadAdapter.java create mode 100644 dev/language_workbench_concurrency_demo/org.gemoc.arduino.xdsml/src-gen/org/gemoc/arduino/xdsml/arduino/adapters/arduinomt/ThreadInstructionBlockAdapter.java create mode 100644 dev/language_workbench_concurrency_demo/org.gemoc.arduino.xdsml/src-gen/org/gemoc/arduino/xdsml/arduino/adapters/arduinomt/UnaryBooleanExpressionAdapter.java create mode 100644 dev/language_workbench_concurrency_demo/org.gemoc.arduino.xdsml/src-gen/org/gemoc/arduino/xdsml/arduino/adapters/arduinomt/UnaryExpressionAdapter.java create mode 100644 dev/language_workbench_concurrency_demo/org.gemoc.arduino.xdsml/src-gen/org/gemoc/arduino/xdsml/arduino/adapters/arduinomt/UnaryIntegerExpressionAdapter.java create mode 100644 dev/language_workbench_concurrency_demo/org.gemoc.arduino.xdsml/src-gen/org/gemoc/arduino/xdsml/arduino/adapters/arduinomt/UtilitiesAdapter.java create mode 100644 dev/language_workbench_concurrency_demo/org.gemoc.arduino.xdsml/src-gen/org/gemoc/arduino/xdsml/arduino/adapters/arduinomt/VariableAdapter.java create mode 100644 dev/language_workbench_concurrency_demo/org.gemoc.arduino.xdsml/src-gen/org/gemoc/arduino/xdsml/arduino/adapters/arduinomt/VariableAssignmentAdapter.java create mode 100644 dev/language_workbench_concurrency_demo/org.gemoc.arduino.xdsml/src-gen/org/gemoc/arduino/xdsml/arduino/adapters/arduinomt/VariableDeclarationAdapter.java create mode 100644 dev/language_workbench_concurrency_demo/org.gemoc.arduino.xdsml/src-gen/org/gemoc/arduino/xdsml/arduino/adapters/arduinomt/VariableRefAdapter.java create mode 100644 dev/language_workbench_concurrency_demo/org.gemoc.arduino.xdsml/src-gen/org/gemoc/arduino/xdsml/arduino/adapters/arduinomt/WhileAdapter.java create mode 100644 dev/language_workbench_concurrency_demo/org.gemoc.arduino.xdsml/src-gen/org/gemoc/arduino/xdsml/arduinomt/arduino/AmbientLightSensor.java create mode 100644 dev/language_workbench_concurrency_demo/org.gemoc.arduino.xdsml/src-gen/org/gemoc/arduino/xdsml/arduinomt/arduino/AnalogPin.java create mode 100644 dev/language_workbench_concurrency_demo/org.gemoc.arduino.xdsml/src-gen/org/gemoc/arduino/xdsml/arduinomt/arduino/ArduinoAnalogModule.java create mode 100644 dev/language_workbench_concurrency_demo/org.gemoc.arduino.xdsml/src-gen/org/gemoc/arduino/xdsml/arduinomt/arduino/ArduinoBoard.java create mode 100644 dev/language_workbench_concurrency_demo/org.gemoc.arduino.xdsml/src-gen/org/gemoc/arduino/xdsml/arduinomt/arduino/ArduinoDigitalModule.java create mode 100644 dev/language_workbench_concurrency_demo/org.gemoc.arduino.xdsml/src-gen/org/gemoc/arduino/xdsml/arduinomt/arduino/ArduinoFactory.java create mode 100644 dev/language_workbench_concurrency_demo/org.gemoc.arduino.xdsml/src-gen/org/gemoc/arduino/xdsml/arduinomt/arduino/ArduinoModule.java create mode 100644 dev/language_workbench_concurrency_demo/org.gemoc.arduino.xdsml/src-gen/org/gemoc/arduino/xdsml/arduinomt/arduino/ArduinoPackage.java create mode 100644 dev/language_workbench_concurrency_demo/org.gemoc.arduino.xdsml/src-gen/org/gemoc/arduino/xdsml/arduinomt/arduino/Assignment.java create mode 100644 dev/language_workbench_concurrency_demo/org.gemoc.arduino.xdsml/src-gen/org/gemoc/arduino/xdsml/arduinomt/arduino/BinaryBooleanExpression.java create mode 100644 dev/language_workbench_concurrency_demo/org.gemoc.arduino.xdsml/src-gen/org/gemoc/arduino/xdsml/arduinomt/arduino/BinaryBooleanOperatorKind.java create mode 100644 dev/language_workbench_concurrency_demo/org.gemoc.arduino.xdsml/src-gen/org/gemoc/arduino/xdsml/arduinomt/arduino/BinaryExpression.java create mode 100644 dev/language_workbench_concurrency_demo/org.gemoc.arduino.xdsml/src-gen/org/gemoc/arduino/xdsml/arduinomt/arduino/BinaryIntegerExpression.java create mode 100644 dev/language_workbench_concurrency_demo/org.gemoc.arduino.xdsml/src-gen/org/gemoc/arduino/xdsml/arduinomt/arduino/BinaryIntegerOperatorKind.java create mode 100644 dev/language_workbench_concurrency_demo/org.gemoc.arduino.xdsml/src-gen/org/gemoc/arduino/xdsml/arduinomt/arduino/Board.java create mode 100644 dev/language_workbench_concurrency_demo/org.gemoc.arduino.xdsml/src-gen/org/gemoc/arduino/xdsml/arduinomt/arduino/BooleanConstant.java create mode 100644 dev/language_workbench_concurrency_demo/org.gemoc.arduino.xdsml/src-gen/org/gemoc/arduino/xdsml/arduinomt/arduino/BooleanExpression.java create mode 100644 dev/language_workbench_concurrency_demo/org.gemoc.arduino.xdsml/src-gen/org/gemoc/arduino/xdsml/arduinomt/arduino/BooleanModuleGet.java create mode 100644 dev/language_workbench_concurrency_demo/org.gemoc.arduino.xdsml/src-gen/org/gemoc/arduino/xdsml/arduinomt/arduino/BooleanVariable.java create mode 100644 dev/language_workbench_concurrency_demo/org.gemoc.arduino.xdsml/src-gen/org/gemoc/arduino/xdsml/arduinomt/arduino/Buzzer.java create mode 100644 dev/language_workbench_concurrency_demo/org.gemoc.arduino.xdsml/src-gen/org/gemoc/arduino/xdsml/arduinomt/arduino/Channel.java create mode 100644 dev/language_workbench_concurrency_demo/org.gemoc.arduino.xdsml/src-gen/org/gemoc/arduino/xdsml/arduinomt/arduino/Constant.java create mode 100644 dev/language_workbench_concurrency_demo/org.gemoc.arduino.xdsml/src-gen/org/gemoc/arduino/xdsml/arduinomt/arduino/Control.java create mode 100644 dev/language_workbench_concurrency_demo/org.gemoc.arduino.xdsml/src-gen/org/gemoc/arduino/xdsml/arduinomt/arduino/Delay.java create mode 100644 dev/language_workbench_concurrency_demo/org.gemoc.arduino.xdsml/src-gen/org/gemoc/arduino/xdsml/arduinomt/arduino/DigitalPin.java create mode 100644 dev/language_workbench_concurrency_demo/org.gemoc.arduino.xdsml/src-gen/org/gemoc/arduino/xdsml/arduinomt/arduino/Expression.java create mode 100644 dev/language_workbench_concurrency_demo/org.gemoc.arduino.xdsml/src-gen/org/gemoc/arduino/xdsml/arduinomt/arduino/Fan.java create mode 100644 dev/language_workbench_concurrency_demo/org.gemoc.arduino.xdsml/src-gen/org/gemoc/arduino/xdsml/arduinomt/arduino/If.java create mode 100644 dev/language_workbench_concurrency_demo/org.gemoc.arduino.xdsml/src-gen/org/gemoc/arduino/xdsml/arduinomt/arduino/InfraRedSensor.java create mode 100644 dev/language_workbench_concurrency_demo/org.gemoc.arduino.xdsml/src-gen/org/gemoc/arduino/xdsml/arduinomt/arduino/Instruction.java create mode 100644 dev/language_workbench_concurrency_demo/org.gemoc.arduino.xdsml/src-gen/org/gemoc/arduino/xdsml/arduinomt/arduino/InstructionBlock.java create mode 100644 dev/language_workbench_concurrency_demo/org.gemoc.arduino.xdsml/src-gen/org/gemoc/arduino/xdsml/arduinomt/arduino/IntegerConstant.java create mode 100644 dev/language_workbench_concurrency_demo/org.gemoc.arduino.xdsml/src-gen/org/gemoc/arduino/xdsml/arduinomt/arduino/IntegerExpression.java create mode 100644 dev/language_workbench_concurrency_demo/org.gemoc.arduino.xdsml/src-gen/org/gemoc/arduino/xdsml/arduinomt/arduino/IntegerModuleGet.java create mode 100644 dev/language_workbench_concurrency_demo/org.gemoc.arduino.xdsml/src-gen/org/gemoc/arduino/xdsml/arduinomt/arduino/IntegerVariable.java create mode 100644 dev/language_workbench_concurrency_demo/org.gemoc.arduino.xdsml/src-gen/org/gemoc/arduino/xdsml/arduinomt/arduino/LED.java create mode 100644 dev/language_workbench_concurrency_demo/org.gemoc.arduino.xdsml/src-gen/org/gemoc/arduino/xdsml/arduinomt/arduino/Link.java create mode 100644 dev/language_workbench_concurrency_demo/org.gemoc.arduino.xdsml/src-gen/org/gemoc/arduino/xdsml/arduinomt/arduino/MicroServo.java create mode 100644 dev/language_workbench_concurrency_demo/org.gemoc.arduino.xdsml/src-gen/org/gemoc/arduino/xdsml/arduinomt/arduino/Module.java create mode 100644 dev/language_workbench_concurrency_demo/org.gemoc.arduino.xdsml/src-gen/org/gemoc/arduino/xdsml/arduinomt/arduino/ModuleAssignment.java create mode 100644 dev/language_workbench_concurrency_demo/org.gemoc.arduino.xdsml/src-gen/org/gemoc/arduino/xdsml/arduinomt/arduino/ModuleGet.java create mode 100644 dev/language_workbench_concurrency_demo/org.gemoc.arduino.xdsml/src-gen/org/gemoc/arduino/xdsml/arduinomt/arduino/ModuleInstruction.java create mode 100644 dev/language_workbench_concurrency_demo/org.gemoc.arduino.xdsml/src-gen/org/gemoc/arduino/xdsml/arduinomt/arduino/MusicPlayer.java create mode 100644 dev/language_workbench_concurrency_demo/org.gemoc.arduino.xdsml/src-gen/org/gemoc/arduino/xdsml/arduinomt/arduino/NamedElement.java create mode 100644 dev/language_workbench_concurrency_demo/org.gemoc.arduino.xdsml/src-gen/org/gemoc/arduino/xdsml/arduinomt/arduino/Pin.java create mode 100644 dev/language_workbench_concurrency_demo/org.gemoc.arduino.xdsml/src-gen/org/gemoc/arduino/xdsml/arduinomt/arduino/Project.java create mode 100644 dev/language_workbench_concurrency_demo/org.gemoc.arduino.xdsml/src-gen/org/gemoc/arduino/xdsml/arduinomt/arduino/PushButton.java create mode 100644 dev/language_workbench_concurrency_demo/org.gemoc.arduino.xdsml/src-gen/org/gemoc/arduino/xdsml/arduinomt/arduino/Repeat.java create mode 100644 dev/language_workbench_concurrency_demo/org.gemoc.arduino.xdsml/src-gen/org/gemoc/arduino/xdsml/arduinomt/arduino/RotationSensor.java create mode 100644 dev/language_workbench_concurrency_demo/org.gemoc.arduino.xdsml/src-gen/org/gemoc/arduino/xdsml/arduinomt/arduino/Sketch.java create mode 100644 dev/language_workbench_concurrency_demo/org.gemoc.arduino.xdsml/src-gen/org/gemoc/arduino/xdsml/arduinomt/arduino/SoundSensor.java create mode 100644 dev/language_workbench_concurrency_demo/org.gemoc.arduino.xdsml/src-gen/org/gemoc/arduino/xdsml/arduinomt/arduino/SynchronizationBlock.java create mode 100644 dev/language_workbench_concurrency_demo/org.gemoc.arduino.xdsml/src-gen/org/gemoc/arduino/xdsml/arduinomt/arduino/Thread.java create mode 100644 dev/language_workbench_concurrency_demo/org.gemoc.arduino.xdsml/src-gen/org/gemoc/arduino/xdsml/arduinomt/arduino/ThreadInstructionBlock.java create mode 100644 dev/language_workbench_concurrency_demo/org.gemoc.arduino.xdsml/src-gen/org/gemoc/arduino/xdsml/arduinomt/arduino/Time.java create mode 100644 dev/language_workbench_concurrency_demo/org.gemoc.arduino.xdsml/src-gen/org/gemoc/arduino/xdsml/arduinomt/arduino/UnaryBooleanExpression.java create mode 100644 dev/language_workbench_concurrency_demo/org.gemoc.arduino.xdsml/src-gen/org/gemoc/arduino/xdsml/arduinomt/arduino/UnaryBooleanOperatorKind.java create mode 100644 dev/language_workbench_concurrency_demo/org.gemoc.arduino.xdsml/src-gen/org/gemoc/arduino/xdsml/arduinomt/arduino/UnaryExpression.java create mode 100644 dev/language_workbench_concurrency_demo/org.gemoc.arduino.xdsml/src-gen/org/gemoc/arduino/xdsml/arduinomt/arduino/UnaryIntegerExpression.java create mode 100644 dev/language_workbench_concurrency_demo/org.gemoc.arduino.xdsml/src-gen/org/gemoc/arduino/xdsml/arduinomt/arduino/UnaryIntegerOperatorKind.java create mode 100644 dev/language_workbench_concurrency_demo/org.gemoc.arduino.xdsml/src-gen/org/gemoc/arduino/xdsml/arduinomt/arduino/Utilities.java create mode 100644 dev/language_workbench_concurrency_demo/org.gemoc.arduino.xdsml/src-gen/org/gemoc/arduino/xdsml/arduinomt/arduino/Variable.java create mode 100644 dev/language_workbench_concurrency_demo/org.gemoc.arduino.xdsml/src-gen/org/gemoc/arduino/xdsml/arduinomt/arduino/VariableAssignment.java create mode 100644 dev/language_workbench_concurrency_demo/org.gemoc.arduino.xdsml/src-gen/org/gemoc/arduino/xdsml/arduinomt/arduino/VariableDeclaration.java create mode 100644 dev/language_workbench_concurrency_demo/org.gemoc.arduino.xdsml/src-gen/org/gemoc/arduino/xdsml/arduinomt/arduino/VariableRef.java create mode 100644 dev/language_workbench_concurrency_demo/org.gemoc.arduino.xdsml/src-gen/org/gemoc/arduino/xdsml/arduinomt/arduino/While.java create mode 100644 dev/language_workbench_concurrency_demo/org.gemoc.arduino.xdsml/src-gen/org/gemoc/arduino/xdsml/arduinomt/arduino/impl/ArduinoFactoryImpl.java create mode 100644 dev/language_workbench_concurrency_demo/org.gemoc.arduino.xdsml/src-gen/org/gemoc/arduino/xdsml/arduinomt/arduino/impl/ArduinoPackageImpl.java create mode 100644 dev/language_workbench_concurrency_demo/org.gemoc.arduino.xdsml/src-gen/org/gemoc/arduino/xdsml/arduinomt/arduino/util/ArduinoAdapterFactory.java create mode 100644 dev/language_workbench_concurrency_demo/org.gemoc.arduino.xdsml/src-gen/org/gemoc/arduino/xdsml/arduinomt/arduino/util/ArduinoSwitch.java create mode 100644 dev/language_workbench_concurrency_demo/org.gemoc.arduino.xdsml/src/org/gemoc/arduino/xdsml/Main.melange create mode 100644 dev/language_workbench_concurrency_demo/org.gemoc.arduino.xdsml/xdsml-java-gen/arduino/xdsml/api/impl/ArduinoCodeExecutor.java create mode 100644 dev/language_workbench_concurrency_demo/org.gemoc.arduino.xdsml/xdsml-java-gen/arduinomt/xdsml/api/impl/ArduinoMTCodeExecutor.java diff --git a/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.build/.classpath b/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.build/.classpath new file mode 100644 index 00000000..098194ca --- /dev/null +++ b/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.build/.classpath @@ -0,0 +1,7 @@ + + + + + + + diff --git a/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.build/.project b/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.build/.project new file mode 100644 index 00000000..14a8f640 --- /dev/null +++ b/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.build/.project @@ -0,0 +1,28 @@ + + + fr.obeo.dsl.arduino.build + + + + + + org.eclipse.jdt.core.javabuilder + + + + + org.eclipse.pde.ManifestBuilder + + + + + org.eclipse.pde.SchemaBuilder + + + + + + org.eclipse.pde.PluginNature + org.eclipse.jdt.core.javanature + + diff --git a/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.build/.settings/org.eclipse.jdt.core.prefs b/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.build/.settings/org.eclipse.jdt.core.prefs new file mode 100644 index 00000000..f42de363 --- /dev/null +++ b/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.build/.settings/org.eclipse.jdt.core.prefs @@ -0,0 +1,7 @@ +eclipse.preferences.version=1 +org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled +org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.7 +org.eclipse.jdt.core.compiler.compliance=1.7 +org.eclipse.jdt.core.compiler.problem.assertIdentifier=error +org.eclipse.jdt.core.compiler.problem.enumIdentifier=error +org.eclipse.jdt.core.compiler.source=1.7 diff --git a/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.build/META-INF/MANIFEST.MF b/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.build/META-INF/MANIFEST.MF new file mode 100644 index 00000000..4c69f060 --- /dev/null +++ b/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.build/META-INF/MANIFEST.MF @@ -0,0 +1,12 @@ +Manifest-Version: 1.0 +Bundle-ManifestVersion: 2 +Bundle-Name: Arduino designer Build +Bundle-SymbolicName: fr.obeo.dsl.arduino.build +Bundle-Version: 1.0.0.qualifier +Bundle-Activator: fr.obeo.dsl.arduino.build.ArduinoBuilderActivator +Require-Bundle: org.eclipse.ui, + org.eclipse.core.runtime, + com.google.guava +Bundle-RequiredExecutionEnvironment: JavaSE-1.7 +Bundle-ActivationPolicy: lazy +Export-Package: fr.obeo.dsl.arduino.build diff --git a/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.build/build.properties b/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.build/build.properties new file mode 100644 index 00000000..34d2e4d2 --- /dev/null +++ b/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.build/build.properties @@ -0,0 +1,4 @@ +source.. = src/ +output.. = bin/ +bin.includes = META-INF/,\ + . diff --git a/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.build/pom.xml b/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.build/pom.xml new file mode 100644 index 00000000..1414810c --- /dev/null +++ b/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.build/pom.xml @@ -0,0 +1,42 @@ + + + + 4.0.0 + + + fr.obeo.dsl.arduino + parent + 1.0.0-SNAPSHOT + ../../releng/fr.obeo.dsl.arduino.parent + + + fr.obeo.dsl.arduino.build + eclipse-plugin + + Cross-compilation tools for Arduino + + + + + org.eclipse.tycho + tycho-source-plugin + + + org.apache.maven.plugins + maven-pmd-plugin + + + + + diff --git a/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.build/src/fr/obeo/dsl/arduino/build/ArduinoBuilder.java b/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.build/src/fr/obeo/dsl/arduino/build/ArduinoBuilder.java new file mode 100644 index 00000000..10ad52c3 --- /dev/null +++ b/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.build/src/fr/obeo/dsl/arduino/build/ArduinoBuilder.java @@ -0,0 +1,565 @@ +/** + * Copyright (c) 2013 Obeo. + * 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: + * Obeo - initial API and implementation + */ +package fr.obeo.dsl.arduino.build; + +import java.io.File; +import java.io.IOException; +import java.io.InputStream; +import java.io.PrintStream; +import java.util.ArrayList; +import java.util.List; +import java.util.Scanner; + +import org.eclipse.core.runtime.IStatus; +import org.eclipse.core.runtime.Status; + +import com.google.common.collect.Lists; + +/** + * Arduino builder is used to cross-compile ino files in order to be able to + * execute the code on an Arduino board. + * + * @author Melanie Batsmelanie + * .bats@obeo.fr + */ +public class ArduinoBuilder { + private static final String WINDOWS = "win"; + + private static final String MACOS = "mac os"; + + /** + * Arduino SDK path. + */ + private final String arduinoSdk; + + /** + * Arduino serial port. + */ + private final String serialPort; + + /** + * Board tag. + */ + private final String boardTag; + /** + * Working directory. + */ + private final File directory; + + /** + * OS. + */ + private String os; + + /** + * Arduino builder is used to cross-compile ino files in order to be able to + * execute the code on an Arduino board. + * + * @param arduinoSdk + * Path to the Arduino SDK + * @param boardTag + * Board tag + * @param directory + * Working directory + * @param serialPort + * the name of the Arduino serial port. + */ + public ArduinoBuilder(String arduinoSdk, String boardTag, String directory, + String serialPort) { + this.boardTag = boardTag; + this.directory = new File(directory); + this.os = System.getProperty("os.name").toLowerCase(); + this.arduinoSdk = getCorrectedPath(arduinoSdk, os); + this.serialPort = serialPort; + } + + private static String getCorrectedPath(String arduinoSdkPath, + String currentOS) { + String path = arduinoSdkPath; + if (!path.endsWith(File.separator)) { + path += File.separator; + } + if (currentOS.contains(MACOS) && arduinoSdkPath != null + && !arduinoSdkPath.contains(".app")) { + path = path + "Arduino.app/Contents/Resources/Java/"; + } + return path; + } + + /** + * To test. + * + * @param args + */ + public static void main(String[] args) { + String BOARD_TAG = "uno"; + String ARDUINO_SDK_LINUX = "/home/melanie/Obeo/dev/arduino/arduino-1.0.5/"; + String FOLDER_LINUX = "/home/melanie/Obeo/dev/arduino/workspace_sirius/fr.obeo.dsl.arduino.build/test/"; + String ARDUINO_SDK_MACOSX = "/Users/MpoObeo/Dev/arduino/arduino-1.0.6/Arduino/"; + String FOLDER_MACOSX = "/Users/MpoObeo/Dev/arduino/workspace_sirius/fr.obeo.dsl.arduino.build/test/"; + String ARDUINO_SDK_WIN = "C:\\Program Files\\Arduino\\"; + String FOLDER_WIN = "C:\\Documents and Settings\\toto\\runtime-EclipseApplication\\test\\"; + + String os = System.getProperty("os.name").toLowerCase(); + String arduinoSdk = null; + String folder = null; + String serialPort = null; + if (os.contains(WINDOWS)) { + arduinoSdk = ARDUINO_SDK_WIN; + folder = FOLDER_WIN; + serialPort= "COM3"; + } else if (os.contains("nux")) { + arduinoSdk = ARDUINO_SDK_LINUX; + folder = FOLDER_LINUX; + serialPort = "/dev/ttyACM0"; + } else if (os.contains(MACOS)) { + arduinoSdk = ARDUINO_SDK_MACOSX; + folder = FOLDER_MACOSX; + serialPort = "/dev/tty.usbmodem1421"; + } + ArduinoBuilder builder = new ArduinoBuilder(arduinoSdk, BOARD_TAG, + folder, serialPort); + List libraries = new ArrayList(); + libraries.add("Servo"); + IStatus status = builder.compile("Sketch", libraries); + System.out.println(status); + } + + /** + * Compile a sketch and its specific libraries. + * + * @param sketchName + * Sketch name + * @param libraries + * Specific libraries names. + */ + public IStatus compile(String sketchName, List libraries) { + + // Compile sketch + IStatus sketchStatus = compileSketch(sketchName, libraries); + if (sketchStatus.getSeverity() != IStatus.OK) { + return sketchStatus; + } + + // Compile main libraries + IStatus mainLibrariesStatus = compileMainLibraries(); + if (mainLibrariesStatus.getSeverity() != IStatus.OK) { + return mainLibrariesStatus; + } + + // Compile specific libraries + if (libraries != null) { + for (String library : libraries) { + String libraryName = Character.toUpperCase(library.charAt(0)) + + library.substring(1); + IStatus specificLibraryStatus = compileSpecificLibrary( + arduinoSdk + "libraries" + File.separator + libraryName + + File.separator, libraryName); + if (specificLibraryStatus.getSeverity() != IStatus.OK) { + return specificLibraryStatus; + } + } + } + + // Link all + IStatus linkStatus = link(sketchName, libraries); + if (linkStatus.getSeverity() != IStatus.OK) { + return linkStatus; + } + + // Generate arduino.hex + return generateArduinoHex(); + } + + public IStatus upload() { + System.out.println("Upload arduino.hex"); + String command = arduinoSdk + "hardware" + File.separator + "tools" + + File.separator; + ProcessBuilder builder = null; + if (os.contains(WINDOWS)) { + command += "avr" + File.separator + "bin" + File.separator + + "avrdude.exe"; + builder = new ProcessBuilder(command, "-q", "-V", "-p", getMMCU(), + "-C", arduinoSdk + "hardware" + File.separator + "tools" + + File.separator + "avr" + File.separator + "etc" + + File.separator + "avrdude.conf", "-c", "arduino", + "-b", "115200", "-P", serialPort, "-U", "flash:w:arduino.hex:i"); + } else if (os.contains(MACOS)) { + command += "avr" + File.separator + "bin" + File.separator + + "avrdude"; + builder = new ProcessBuilder(command, "-q", "-V", "-p", getMMCU(), + "-C", arduinoSdk + "hardware" + File.separator + "tools" + + File.separator + "avr" + File.separator + "etc" + + File.separator + "avrdude.conf", "-c", "arduino", + "-b", "115200", "-P", serialPort, "-U", + "flash:w:arduino.hex:i"); + } else { + command += "avrdude"; + builder = new ProcessBuilder(command, "-q", "-V", "-p", getMMCU(), + "-C", arduinoSdk + "hardware" + File.separator + "tools" + + File.separator + "avrdude.conf", "-c", "arduino", + "-b", "115200", "-P", serialPort, "-U", + "flash:w:arduino.hex:i"); + } + return executeCommand(directory, builder); + } + + /** + * Generate arduino.hex file. + */ + private IStatus generateArduinoHex() { + System.out.println("Generate arduino.hex"); + String command = arduinoSdk + "hardware" + File.separator + "tools" + + File.separator + "avr" + File.separator + "bin" + + File.separator + "avr-objcopy"; + ProcessBuilder builder = new ProcessBuilder(command, "-j", ".eeprom", + "--set-section-flags=.eeprom=alloc,load", + "--change-section-lma", ".eeprom=0", "-O", "ihex", + "arduino.elf", "arduino.eep"); + executeCommand(directory, builder); + builder = new ProcessBuilder(command, "-O", "ihex", "-R", ".eeprom", + "arduino.elf", "arduino.hex"); + return executeCommand(directory, builder); + } + + /** + * Link all. + * + * @param sketchName + * Arduino sketch file name + */ + private IStatus link(String sketchName, List libraries) { + System.out.println("Link all"); + String command = arduinoSdk + "hardware" + File.separator + "tools" + + File.separator + "avr" + File.separator + "bin" + + File.separator + "avr-gcc"; + List commands = Lists.newArrayList(); + ProcessBuilder builder = new ProcessBuilder(commands); + commands.add(command); + commands.add("-mmcu=" + getMMCU()); + commands.add("-Wl,--gc-sections"); + commands.add("-Os"); + commands.add("-o"); + commands.add("arduino.elf"); + commands.add(sketchName + ".o"); + commands.add("WInterrupts.o"); + commands.add("wiring_analog.o"); + commands.add("wiring.o"); + commands.add("wiring_digital.o"); + commands.add("wiring_pulse.o"); + commands.add("wiring_shift.o"); + commands.add("CDC.o"); + commands.add("HardwareSerial.o"); + commands.add("HID.o"); + commands.add("IPAddress.o"); + commands.add("main.o"); + commands.add("new.o"); + commands.add("Print.o"); + commands.add("Stream.o"); + commands.add("Tone.o"); + commands.add("USBCore.o"); + commands.add("WMath.o"); + commands.add("WString.o"); + for (String library : libraries) { + String libraryName = Character.toUpperCase(library.charAt(0)) + + library.substring(1); + commands.add(libraryName + ".o"); + } + commands.add("-lc"); + commands.add("-lm"); + return executeCommand(directory, builder); + } + + /** + * Compile specific library. + * + * @param libraryName + * Library name + */ + private IStatus compileSpecificLibrary(String libraryPath, + String libraryName) { + System.out.println("Compile Specific Libraries"); + return compileCPPFile(libraryPath, libraryName); + } + + /** + * Compile the main Arduino libraries. + */ + private IStatus compileMainLibraries() { + System.out.println("Compile main libraries"); + String arduinoMainLibraryPath = arduinoSdk + "hardware" + + File.separator + "arduino" + File.separator + "cores" + + File.separator + "arduino" + File.separator; + IStatus status = null; + status = compileCFile(arduinoMainLibraryPath, "WInterrupts"); + if (status.getSeverity() != IStatus.OK) + return status; + status = compileCFile(arduinoMainLibraryPath, "wiring_analog"); + if (status.getSeverity() != IStatus.OK) + return status; + status = compileCFile(arduinoMainLibraryPath, "wiring"); + if (status.getSeverity() != IStatus.OK) + return status; + status = compileCFile(arduinoMainLibraryPath, "wiring_digital"); + if (status.getSeverity() != IStatus.OK) + return status; + status = compileCFile(arduinoMainLibraryPath, "wiring_pulse"); + if (status.getSeverity() != IStatus.OK) + return status; + status = compileCFile(arduinoMainLibraryPath, "wiring_shift"); + if (status.getSeverity() != IStatus.OK) + return status; + status = compileCPPFile(arduinoMainLibraryPath, "CDC"); + if (status.getSeverity() != IStatus.OK) + return status; + status = compileCPPFile(arduinoMainLibraryPath, "HardwareSerial"); + if (status.getSeverity() != IStatus.OK) + return status; + status = compileCPPFile(arduinoMainLibraryPath, "HID"); + if (status.getSeverity() != IStatus.OK) + return status; + status = compileCPPFile(arduinoMainLibraryPath, "IPAddress"); + + if (status.getSeverity() != IStatus.OK) + return status; + status = compileCPPFile(arduinoMainLibraryPath, "main"); + if (status.getSeverity() != IStatus.OK) + return status; + status = compileCPPFile(arduinoMainLibraryPath, "new"); + if (status.getSeverity() != IStatus.OK) + return status; + status = compileCPPFile(arduinoMainLibraryPath, "Print"); + if (status.getSeverity() != IStatus.OK) + return status; + status = compileCPPFile(arduinoMainLibraryPath, "Stream"); + if (status.getSeverity() != IStatus.OK) + return status; + status = compileCPPFile(arduinoMainLibraryPath, "Tone"); + if (status.getSeverity() != IStatus.OK) + return status; + status = compileCPPFile(arduinoMainLibraryPath, "USBCore"); + if (status.getSeverity() != IStatus.OK) + return status; + status = compileCPPFile(arduinoMainLibraryPath, "WMath"); + if (status.getSeverity() != IStatus.OK) + return status; + compileCPPFile(arduinoMainLibraryPath, "WString"); + return status; + } + + /** + * Compile ino file. + * + * @param filePath + * Path of the ino file to compile + */ + private IStatus compileSketch(String fileName, List libraries) { + System.out.println("Compile Sketch"); + String command = arduinoSdk + "hardware" + File.separator + "tools" + + File.separator + "avr" + File.separator + "bin" + + File.separator + "avr-g++"; + + if (os.contains(WINDOWS)) { + command += ".exe"; + } + List commands = Lists.newArrayList(); + commands.add(command); + commands.add("-x"); + commands.add("c++"); + commands.add("-include"); + commands.add("Arduino.h"); + commands.add("-c"); + commands.add("-mmcu=" + getMMCU()); + commands.add("-DF_CPU=" + getDFCPU()); + commands.add("-DARDUINO=" + getDArduino()); + commands.add("-I."); + commands.add("-I" + arduinoSdk + "hardware" + File.separator + + "arduino" + File.separator + "cores" + File.separator + + "arduino"); + commands.add("-I" + arduinoSdk + "hardware" + File.separator + + "arduino" + File.separator + "variants" + File.separator + + "standard"); + for (String library : libraries) { + String libraryName = Character.toUpperCase(library.charAt(0)) + + library.substring(1); + commands.add("-I" + arduinoSdk + "libraries" + File.separator + + libraryName); + } + commands.add("-g"); + commands.add("-Os"); + commands.add("-Wall"); + commands.add("-ffunction-sections"); + commands.add("-fdata-sections"); + commands.add("-fno-exceptions"); + commands.add(fileName + ".ino"); + commands.add("-o"); + commands.add(fileName + ".o"); + + ProcessBuilder builder = new ProcessBuilder(commands); + + return executeCommand(directory, builder); + } + + /** + * Compile C file. + * + * @param filePath + * Path of the C file to compile + */ + private IStatus compileCFile(String filePath, String fileName) { + System.out.println("Compile C file : " + filePath + fileName); + String command = arduinoSdk + "hardware" + File.separator + "tools" + + File.separator + "avr" + File.separator + "bin" + + File.separator + "avr-gcc"; + if (os.contains(WINDOWS)) { + command += ".exe"; + } + ProcessBuilder builder = new ProcessBuilder(command, "-c", "-mmcu=" + + getMMCU(), "-DF_CPU=" + getDFCPU(), "-DARDUINO=" + + getDArduino(), "-I.", "-I" + arduinoSdk + "hardware" + + File.separator + "arduino" + File.separator + "cores" + + File.separator + "arduino", "-I" + arduinoSdk + "hardware" + + File.separator + "arduino" + File.separator + "variants" + + File.separator + "standard", "-g", "-Os", "-Wall", + "-ffunction-sections", "-fdata-sections", "-std=gnu99", + filePath + fileName + ".c", "-o", fileName + ".o"); + return executeCommand(directory, builder); + } + + /** + * Compile CPP file. + * + * @param filePath + * Path of the CPP file to compile + */ + private IStatus compileCPPFile(String filePath, String fileName) { + System.out.println("Compile CPP file : " + filePath + fileName); + String command = arduinoSdk + "hardware" + File.separator + "tools" + + File.separator + "avr" + File.separator + "bin" + + File.separator + "avr-g++"; + if (os.contains(WINDOWS)) { + command += ".exe"; + } + List commands = new ArrayList<>(); + commands.add(command); + commands.add("-c"); + commands.add("-mmcu=" + getMMCU()); + commands.add("-DF_CPU=" + getDFCPU()); + commands.add("-DARDUINO=" + getDArduino()); + commands.add("-I."); + commands.add("-I" + arduinoSdk + "hardware" + File.separator + + "arduino" + File.separator + "cores" + File.separator + + "arduino"); + commands.add("-I" + arduinoSdk + "hardware" + File.separator + + "arduino" + File.separator + "variants" + File.separator + + "standard"); + commands.add("-g"); + commands.add("-Os"); + commands.add("-Wall"); + commands.add("-ffunction-sections"); + commands.add("-fdata-sections"); + commands.add("-fno-exceptions"); + commands.add(filePath + fileName + ".cpp"); + commands.add("-o"); + commands.add(fileName + ".o"); + ProcessBuilder builder = new ProcessBuilder(commands); + return executeCommand(directory, builder); + } + + /** + * Execute a command. + * + * @param directory + * Current directory + * @param builder + * Command to execute + */ + private IStatus executeCommand(File directory, ProcessBuilder builder) { + System.out.println(builder.command()); + builder.directory(directory); + try { + Process process = builder.start(); + inheritIO(process.getInputStream(), System.out); + // inheritIO(process.getErrorStream(), System.err); + process.waitFor(); + if (process.exitValue() > 0) { + String error = convertStreamToString(process.getErrorStream()); + return new Status(IStatus.ERROR, + ArduinoBuilderActivator.PLUGIN_ID, error); + } + } catch (IOException e) { + return new Status(IStatus.ERROR, ArduinoBuilderActivator.PLUGIN_ID, + e.getMessage(), e); + } catch (InterruptedException e) { + return new Status(IStatus.ERROR, ArduinoBuilderActivator.PLUGIN_ID, + e.getMessage(), e); + } + return new Status(IStatus.OK, ArduinoBuilderActivator.PLUGIN_ID, null); + } + + /** + * Get information from {$ARDUINO_SDK}/lib/version.txt in the Arduino SDK. + * + * @return + */ + private String getDArduino() { + // TODO Auto-generated method stub + return "106"; + } + + /** + * Get information from {$ARDUINO_SDK}/hardware/arduino/boards.txt file in + * the Arduino SDK : {$BOARD_TAG}.build.mcu=xxxx. + * + * @return + */ + private String getMMCU() { + // TODO Auto-generated method stub + return "atmega328p"; + } + + /** + * Get information from b{$ARDUINO_SDK}/hardware/arduino/boards.txtt file in + * the Arduino SDK : {$BOARD_TAG}.build.f_cpu=xxxx. + * + * @return + */ + private String getDFCPU() { + // TODO Auto-generated method stub + return "16000000L"; + } + + /** + * Inherit IO in console. + * + * @param src + * Source stream + * @param dest + * Destination stream + */ + private static void inheritIO(final InputStream src, final PrintStream dest) { + new Thread(new Runnable() { + @Override + public void run() { + Scanner sc = new Scanner(src); + while (sc.hasNextLine()) { + dest.println(sc.nextLine()); + } + sc.close(); + } + }).start(); + } + + private static String convertStreamToString(java.io.InputStream is) { + java.util.Scanner s = new java.util.Scanner(is).useDelimiter("\\A"); + return s.hasNext() ? s.next() : ""; + } +} \ No newline at end of file diff --git a/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.build/src/fr/obeo/dsl/arduino/build/ArduinoBuilderActivator.java b/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.build/src/fr/obeo/dsl/arduino/build/ArduinoBuilderActivator.java new file mode 100644 index 00000000..f68c6bde --- /dev/null +++ b/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.build/src/fr/obeo/dsl/arduino/build/ArduinoBuilderActivator.java @@ -0,0 +1,77 @@ +/** + * Copyright (c) 2013 Obeo. + * 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: + * Obeo - initial API and implementation + */ +package fr.obeo.dsl.arduino.build; + +import org.eclipse.core.runtime.Status; +import org.eclipse.ui.plugin.AbstractUIPlugin; +import org.osgi.framework.BundleContext; + +/** + * The activator class controls the plug-in life cycle + */ +public class ArduinoBuilderActivator extends AbstractUIPlugin { + + // The plug-in ID + public static final String PLUGIN_ID = "fr.obeo.dsl.arduino.build"; //$NON-NLS-1$ + + // The shared instance + private static ArduinoBuilderActivator plugin; + + /** + * The constructor + */ + public ArduinoBuilderActivator() { + } + + /* + * (non-Javadoc) + * @see org.eclipse.ui.plugin.AbstractUIPlugin#start(org.osgi.framework.BundleContext) + */ + @Override + public void start(BundleContext context) throws Exception { + super.start(context); + plugin = this; + } + + /* + * (non-Javadoc) + * @see org.eclipse.ui.plugin.AbstractUIPlugin#stop(org.osgi.framework.BundleContext) + */ + @Override + public void stop(BundleContext context) throws Exception { + plugin = null; + super.stop(context); + } + + /** + * Returns the shared instance + * + * @return the shared instance + */ + public static ArduinoBuilderActivator getDefault() { + return plugin; + } + + /** + * A helper to log plugin errors. + * + * @param severity + * the error severity. + * @param message + * the error message. + * @param exception + * the error exception. + */ + public static void log(int severity, String message, Throwable exception) { + getDefault().getLog().log( + new Status(severity, PLUGIN_ID, message, exception)); + } +} diff --git a/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.design/.classpath b/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.design/.classpath new file mode 100644 index 00000000..39810b7d --- /dev/null +++ b/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.design/.classpath @@ -0,0 +1,7 @@ + + + + + + + diff --git a/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.design/.gitignore b/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.design/.gitignore new file mode 100644 index 00000000..5e56e040 --- /dev/null +++ b/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.design/.gitignore @@ -0,0 +1 @@ +/bin diff --git a/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.design/.project b/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.design/.project new file mode 100644 index 00000000..7f9b0b0c --- /dev/null +++ b/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.design/.project @@ -0,0 +1,35 @@ + + + fr.obeo.dsl.arduino.design + + + + + + org.eclipse.jdt.core.javabuilder + + + + + org.eclipse.pde.ManifestBuilder + + + + + org.eclipse.pde.SchemaBuilder + + + + + org.eclipse.acceleo.ide.ui.acceleoBuilder + + + + + + org.eclipse.acceleo.ide.ui.acceleoNature + org.eclipse.jdt.core.javanature + org.eclipse.pde.PluginNature + + + diff --git a/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.design/META-INF/MANIFEST.MF b/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.design/META-INF/MANIFEST.MF new file mode 100644 index 00000000..d7a054a9 --- /dev/null +++ b/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.design/META-INF/MANIFEST.MF @@ -0,0 +1,25 @@ +Manifest-Version: 1.0 +Bundle-ManifestVersion: 2 +Bundle-Name: fr.obeo.dsl.arduino.design +Bundle-SymbolicName: fr.obeo.dsl.arduino.design;singleton:=true +Bundle-Version: 1.0.0.qualifier +Bundle-Activator: fr.obeo.dsl.arduino.design.ArduinoDesignerPlugin +Require-Bundle: org.eclipse.ui, + org.eclipse.core.runtime, + fr.obeo.dsl.arduino, + fr.obeo.dsl.arduino.ui;bundle-version="1.0.0", + fr.obeo.dsl.arduino.gen, + org.eclipse.acceleo.engine;bundle-version="3.3.2", + org.eclipse.core.resources;bundle-version="3.8.1", + org.eclipse.emf.transaction, + org.eclipse.sirius;bundle-version="2.0.0", + org.eclipse.sirius.common.acceleo.mtl;bundle-version="2.0.0", + org.eclipse.sirius.ui;bundle-version="2.0.0", + org.eclipse.sirius.common;bundle-version="2.0.0", + org.eclipse.sirius.common.ui;bundle-version="2.0.0", + org.eclipse.sirius.diagram;bundle-version="2.0.0" +Bundle-ActivationPolicy: lazy +Bundle-RequiredExecutionEnvironment: JavaSE-1.6 +Import-Package: com.google.common.collect +Export-Package: fr.obeo.dsl.arduino.design, + fr.obeo.dsl.arduino.design.services diff --git a/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.design/build.properties b/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.design/build.properties new file mode 100644 index 00000000..a01d3679 --- /dev/null +++ b/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.design/build.properties @@ -0,0 +1,12 @@ +# +#Sun Sep 08 12:38:13 CEST 2013 +bin.includes = META-INF/,\ + .,\ + description/,\ + plugin.xml,\ + icons/,\ + images/,\ + resources/ +output..=bin/ +source..=src/ +customBuildCallbacks=build.acceleo diff --git a/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.design/description/arduino.odesign b/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.design/description/arduino.odesign new file mode 100644 index 00000000..115ca1cf --- /dev/null +++ b/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.design/description/arduino.odesign @@ -0,0 +1,1511 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.design/icons/Constant.gif b/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.design/icons/Constant.gif new file mode 100644 index 0000000000000000000000000000000000000000..bb57b1435e621be280f05b07326939331ae3b369 GIT binary patch literal 314 zcmZ?wbhEHb6krfwSgOfT;^)^87SAuyuPGl zb9woeii$n8wVxI){JCt|ujR{s1JQ~Ve^#vcyK?2fl`H?RTJ_=69mMyPRz+H)!SsEhPEF)FCAOmSvl@^@sg1^_fR BsVe{g literal 0 HcmV?d00001 diff --git a/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.design/icons/Constant.png b/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.design/icons/Constant.png new file mode 100644 index 0000000000000000000000000000000000000000..df1e4ae10c35546bedcd2fc21305590f42e57562 GIT binary patch literal 565 zcmV-50?Pe~P)Px#24YJ`L;&yr@&Me3Qqp4p000SaNLh0L01ejw01ejxLMWSf00007bV*G`2i*!8 z2RH#>0zVA^00Fg0L_t(I%VS``0X$Vy*w>eoJeZb}vYP=9V8JG6DI>#~?C*awz|2gR zfq_9@h?n#| zc>etPKV$;t13j+fK!_<_NGqHAd1U18e zw~>(?2P^9h1_lNV<{4>edoo>Jtrm$VimtzyJO*%-y$dZuXoxsmu%v3=BIiTv*J>&TeR-rl!F}z>wd6 z|1$J#*)qFe!GctjXxwx8@(KY?PEAu)RUKT0{QLi(Vb1Q|3knu4Ou?EGcU`))hLe?5 z(Ogy4fSHL2L-X{VJ6B}Sn-_~WDet{ + + +image/svg+xml + + + + \ No newline at end of file diff --git a/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.design/icons/Delay.gif b/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.design/icons/Delay.gif new file mode 100644 index 0000000000000000000000000000000000000000..574dbc6ed550b9f30521ccc63bb816a2087e195b GIT binary patch literal 861 zcmV-j1ETy#Nk%w1VGsZi0OxZ6000010RaL60s{jB1Ox;H1qB8M1_uWR2nYxX2?+`c z3JVJh3=9kn4Gj(s4i66x5D*X%5fKs+5)%^>6ciK{6%`g178e&67#J8C85tTH8XFrM z92^`S9UUGX9v>ecARr(iAt53nA|oRsBqSsyB_$>%CMPE+C@3f?DJd!{Dl021EG#T7 zEiEoCE-x=HFfcGNF)=bSGBYzXG&D3dH8nOiHa9mnI5;>tIXOByIy*Z%JUl!-Jv}}? zK0iM{KtMo2K|w-7LPJACL_|bIMMXwNMn^|SNJvOYNl8jdN=r*iOiWBoO-)WtPESuy zP*6}&QBhJ-Qd3h?R8&+|RaI72R##V7SXfwDSy@_IT3cINTwGjTU0q&YUSD5dU|?Wj zVPRroVq;@tWMpJzWo2e&W@l$-XlQ6@X=!R|YHMq2Y;0_8ZEbFDZf|dIaBy&OadC2T za&vQYbaZreb#-=jc6WDoczAeud3kzzdV70&e0+R;eSLm@et&;|fPjF3fq{a8f`fyD zgoK2Jg@uNOhKGlTh=_=ZiHVAeii?YjjEszpjg5|uj*pLzkdTm(k&%*;l9Q8@l$4Z} zm6ev3mY0{8n3$NEnVFiJnwy)OoSdAUot>VZo}ZteprD|kp`oIpqNAguq@<*!rKP5( zrl+T;sHmu^si~@}s;jH3tgNi9t*x%EuCK4Ju&}VPv9YqUva_?Zw6wIfwY9dkwzs#p zxVX5vxw*Q!y1To(yu7@dCU$jHda z$;ryf%FD~k%*@Qq&CSlv&d<-!(9qD)(b3Y<($mw^)YR0~)z#M4*4Nk9*x1lt)=I7_<=;-L_>FMg~>g((4 z?Ck9A?d|UF?(gsK@bK{Q@$vHV^7Hfa^z`)g_4W4l_V@Sq`1ttw`T6?#`uqF){QUg= z{r&#_{{R2~A^8LW3IP8AEC2ui01yBW000O&0RIUbNU)&6g9rgAT&OUiK>!IM4r~~a nA;O6ZFJh#q(W1tG5+z;~334RFh8znr^!RXP%8xKF1_S^*^m&=F literal 0 HcmV?d00001 diff --git a/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.design/icons/Delay.png b/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.design/icons/Delay.png new file mode 100644 index 0000000000000000000000000000000000000000..18b3d99491103401bea70272ab58ff7d5e97295d GIT binary patch literal 334 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`jKx9jP7LeL$-D$|*pj^6T^Rm@ z;DWu&Cj&(|3p^r=f!eQwFr$;k>MXVzpwKx_7sn8b(`zr; zW;q24us-nruw3}kan>c?%3SLdJ?BsG+i-P_!p%l$jz!)c3OBl@y$s&jr6IvPeWScWd}a8?!@PP$JC2G?y%AB|!~a3} zOp66zjLJjc0B|b0v9xY%zVubWLK3 z*!Jew?>qP^IAXM26B@%!KJ=N#B#G!uEAr5fNS*eh_xS{En + + + + + + + diff --git a/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.design/icons/Equal.gif b/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.design/icons/Equal.gif new file mode 100644 index 0000000000000000000000000000000000000000..4188b14c170929b8baa24f2dd13fc4375bf5ee70 GIT binary patch literal 144 zcmZ?wbhEHb6krfwc+ATXf4R5l#;lT?b4qW{ExS3l{MNjRTl0JFubuR8)0BssU;cdm z_us$&|NnpZbO(YIf3h%gG4M0!FaQC_3Ape=^a2$t3Oo1BrgNgYQizUv;ybcg~zkZ>@b#nRO=vgEauq`$TO3 literal 0 HcmV?d00001 diff --git a/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.design/icons/Equal.png b/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.design/icons/Equal.png new file mode 100644 index 0000000000000000000000000000000000000000..06e72731c432bd654d14c3ad27243ab1c5dc8eed GIT binary patch literal 346 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`jKx9jP7LeL$-D$|*pj^6T^K$v zd}6rM5p*dTD8gCb5m^k>ejS7voit`w00r4gJbhi+?{Z0UaO4=ugF_M@r&qm^keqqu|KI=TTl|@Yl^@%;)$^!}y%3jelNKmndVS(Y`@?oYIsd-T zznHi&?xJHy?*IR=jhLf@weE7L{wMfinV79yb@6Z3!AHIE0w~#;F zz<1S!P0fa{>g#J}=bLLQcks^mRl&_HENA}b$9L}5{=@?}{kMB^aq}>%++dZI__*W2 z`TzTQ*4Nh_$#t0Rb%>$m;Qs&r{~w;?n~< jOzrt^9NV6%*2T!sJloGHtNwBl(3cFJu6{1-oD!M + + +image/svg+xml + + + += + \ No newline at end of file diff --git a/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.design/icons/Flow.gif b/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.design/icons/Flow.gif new file mode 100644 index 0000000000000000000000000000000000000000..a01c12aa0a99ad9abb9bd03c25509474b4724d30 GIT binary patch literal 852 zcmV-a1FQT;Nk%w1VGsZi0Oxc7000010RaL60s{jB1Ox;H1qB8M1_uWR2nYxX2?+`c z3JVJh3=9kn4Gj(s4i66x5D*X%5fKs+5)%^>6ciK{6%`g178e&67#J8C85tTH8XFrM z92^`S9UUGX9v>ecARr(iAt53nA|oRsBqSsyB_$>%CMPE+C@3f?DJd!{Dl021EG#T7 zEiEoCE-x=HFfcGNF)=bSGBYzXG&D3dH8nOiHa9mnI5;>tIXOByIy*Z%JUl!-Jv}}? zK0iM{KtMo2K|w-7LPJACL_|bIMMXwNMn^|SNJvOYNl8jdN=r*iOiWBoO-)WtPESuy zP*6}&QBhJ-Qd3h?R8&+|RaI72R##V7SXfwDSy@_IT3cINTwGjTU0q&YUSD5dU|?Wj zVPRroVq;@tWMpJzWo2e&W@l$-XlQ6@X=!R|YHMq2Y;0_8ZEbFDZf|dIaBy&OadC2T za&vQYbaZreb#-=jc6WDoczAeud3kzzdV70&e0+R;eSLm@et&;|fPjF3fq{a8f`fyD zgoK2Jg@uNOhKGlTh=_=ZiHVAeii?YjjEszpjg5|uj*pLzkdTm(k&%*;l9Q8@l$4Z} zm6ev3mY0{8n3$NEnVFiJnwy)OoSdAUot>VZo}ZteprD|kp`oIpqNAguq@<*!rKP5( zrl+T;sHmu^si~@}s;jH3tgNi9t*x%EuCK4Ju&}VPv9YqUva_?Zw6wIfwY9dkwzs#p zxVX5vxw*Q!y1To(yu7@dCU$jHda z$;ryf%FD~k%*@Qq&CSlv&d<-!(9qD)(b3Y<($mw^)YR0~)z#M4*4Nk9*x1lt)=I7_<=;-L_>FMg~>g((4 z?Ck9A?d|UF?(gsK@bK{Q@$vHV^7Hfa^z`)g_4W4l_V@Sq`1ttw`T6?#`uqF){QUg= z{r&#_{{R2~A^8LW3IP8AEC2ui01yBW000Ov0RIUbNU)&6g9sBUTxbx0Lxut!0%$0) eqQrt0Gfo_+(IUZ)7Z-+9I1-}ClPD1e1OPje?v-}{ literal 0 HcmV?d00001 diff --git a/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.design/icons/Flow.png b/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.design/icons/Flow.png new file mode 100644 index 0000000000000000000000000000000000000000..823c741159a46b75722a30e3c1e9e582b399b4f8 GIT binary patch literal 267 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`jKx9jP7LeL$-D$|*pj^6T^Rm@ z;DWu&Cj&(|3p^r=f!eQwFr$;k>~OO0-K8gK%s6=7sn8b({C>x z(&IQsB>?8Ze$oHV}s>g?%H-}Ie9?vR_=sivT9VnJa!YEQ2{{q_Eet*NQ$Wy{O? zKdMdlotd5CT7UTO^#(b!iU%Eg-Za^{sj4ySTsSBfJg3Y1v&YJy{OKv2caB9Q&d6dA zj|t|zHly_ + + + + + + + + + + + + + diff --git a/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.design/icons/Function.png b/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.design/icons/Function.png new file mode 100644 index 0000000000000000000000000000000000000000..bf354c2bf09cd0c808fae69106934c0e2c758407 GIT binary patch literal 398 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`jKx9jP7LeL$-D$|*pj^6T^Rm@ z;DWu&Cj&(|3p^r=85p>QL70(Y)*K0-AbW|YuPggKCJ}xk(~n0cTL4Yr^K@|xvG89y zd9NQ+pg`-zQxSrym+tkQYU-Q*aOR2^<{LLEhS@ai-KsWi53^!R$Gm*wcAj$cq(>@~ ze_E%Py?e8_*)hB;$ou8;68SFwzFX@*EqPV`V)Yv(k^7Yfdp`*-aQn83-LX%q_rSc) z{Wj~lZ4D)6%~8{wn4$H-_X*?rrTi=Trqw7OFXH%hY+rbt_Ft|u98L)j59Dq?J4t8z z$>XJy7yk)eb+GaFKdo)K3qM;N-SLk(f_u*2Qr40k6CbPPe=^?ayt4m;63gRvO&$GJ zU6CagvJ2xL#VS3!`0?%wLxZc>9y q%=+|B|N6K1{*z}duFs$UnSY93PVNN8rwPEoV(@hJb6Mw<&;$U_j;O@| literal 0 HcmV?d00001 diff --git a/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.design/icons/If.gif b/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.design/icons/If.gif new file mode 100644 index 0000000000000000000000000000000000000000..93147e5bcfea9b5e7bcfc66dda94432632b85700 GIT binary patch literal 861 zcmV-j1ETy#Nk%w1VGsZi0OySW000010RaL60s{jB1Ox;H1qB8M1_uWR2nYxX2?+`c z3JVJh3=9kn4Gj(s4i66x5D*X%5fKs+5)%^>6ciK{6%`g178e&67#J8C85tTH8XFrM z92^`S9UUGX9v>ecARr(iAt53nA|oRsBqSsyB_$>%CMPE+C@3f?DJd!{Dl021EG#T7 zEiEoCE-x=HFfcGNF)=bSGBYzXG&D3dH8nOiHa9mnI5;>tIXOByIy*Z%JUl!-Jv}}? zK0iM{KtMo2K|w-7LPJACL_|bIMMXwNMn^|SNJvOYNl8jdN=r*iOiWBoO-)WtPESuy zP*6}&QBhJ-Qd3h?R8&+|RaI72R##V7SXfwDSy@_IT3cINTwGjTU0q&YUSD5dU|?Wj zVPRroVq;@tWMpJzWo2e&W@l$-XlQ6@X=!R|YHMq2Y;0_8ZEbFDZf|dIaBy&OadC2T za&vQYbaZreb#-=jc6WDoczAeud3kzzdV70&e0+R;eSLm@et&;|fPjF3fq{a8f`fyD zgoK2Jg@uNOhKGlTh=_=ZiHVAeii?YjjEszpjg5|uj*pLzkdTm(k&%*;l9Q8@l$4Z} zm6ev3mY0{8n3$NEnVFiJnwy)OoSdAUot>VZo}ZteprD|kp`oIpqNAguq@<*!rKP5( zrl+T;sHmu^si~@}s;jH3tgNi9t*x%EuCK4Ju&}VPv9YqUva_?Zw6wIfwY9dkwzs#p zxVX5vxw*Q!y1To(yu7@dCU$jHda z$;ryf%FD~k%*@Qq&CSlv&d<-!(9qD)(b3Y<($mw^)YR0~)z#M4*4Nk9*x1lt)=I7_<=;-L_>FMg~>g((4 z?Ck9A?d|UF?(gsK@bK{Q@$vHV^7Hfa^z`)g_4W4l_V@Sq`1ttw`T6?#`uqF){QUg= z{r&#_{{R2~A^8LW3IP8AEC2ui01yBW000O&0RIUbNU)&6g9rx#0FY21!+#4M9*kI! nV#A9SA7&&-(IP~K3oUx&s1YN^ksl{Id{}Z~OOr4U1_S^*I!u^V literal 0 HcmV?d00001 diff --git a/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.design/icons/If.png b/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.design/icons/If.png new file mode 100644 index 0000000000000000000000000000000000000000..a212f891b40172b0ec677a3befa5a8026323ac64 GIT binary patch literal 364 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`jKx9jP7LeL$-D$|*pj^6T^K$v zd}6rM5p*dTD8gCb5m^k>ejS7voit`w00r4gJbhi+?{Z19bD7*exIP{z^v2W0F~s8Z z*~@#qoE-&NADo}>7a-v3vE0dOBfpTLOVABXj<9E%IajW&=uf_47SYklKY@LNkyw{T z#LBZQk5bo_^5tx_PX9J%=FQYO7hS}|Gp0;j#`QaMPBLeI#4+x58~d5Re26W3$T~03 zKgpEG=|TS^0pStGg@tL9I&?A82TVI>4+wua^;P$kN&*QaG$BEm)x^e z<=O%5bN{M6Y<1jvnPuAV+FkqDGI^6+O4r?pvmgH!?oaB}4y?B2e-HFGgQu&X%Q~lo FCIAzwk&gfX literal 0 HcmV?d00001 diff --git a/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.design/icons/If.svg b/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.design/icons/If.svg new file mode 100644 index 00000000..bbbedf02 --- /dev/null +++ b/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.design/icons/If.svg @@ -0,0 +1,20 @@ + + + + + + + + diff --git a/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.design/icons/Level.gif b/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.design/icons/Level.gif new file mode 100644 index 0000000000000000000000000000000000000000..aedb45054c66cca17dd88bb27a4311e2eba7e9b7 GIT binary patch literal 856 zcmV-e1E>5)Nk%w1VGsZi0OyJT000010RaL60s{jB1Ox;H1qB8M1_uWR2nYxX2?+`c z3JVJh3=9kn4Gj(s4i66x5D*X%5fKs+5)%^>6ciK{6%`g178e&67#J8C85tTH8XFrM z92^`S9UUGX9v>ecARr(iAt53nA|oRsBqSsyB_$>%CMPE+C@3f?DJd!{Dl021EG#T7 zEiEoCE-x=HFfcGNF)=bSGBYzXG&D3dH8nOiHa9mnI5;>tIXOByIy*Z%JUl!-Jv}}? zK0iM{KtMo2K|w-7LPJACL_|bIMMXwNMn^|SNJvOYNl8jdN=r*iOiWBoO-)WtPESuy zP*6}&QBhJ-Qd3h?R8&+|RaI72R##V7SXfwDSy@_IT3cINTwGjTU0q&YUSD5dU|?Wj zVPRroVq;@tWMpJzWo2e&W@l$-XlQ6@X=!R|YHMq2Y;0_8ZEbFDZf|dIaBy&OadC2T za&vQYbaZreb#-=jc6WDoczAeud3kzzdV70&e0+R;eSLm@et&;|fPjF3fq{a8f`fyD zgoK2Jg@uNOhKGlTh=_=ZiHVAeii?YjjEszpjg5|uj*pLzkdTm(k&%*;l9Q8@l$4Z} zm6ev3mY0{8n3$NEnVFiJnwy)OoSdAUot>VZo}ZteprD|kp`oIpqNAguq@<*!rKP5( zrl+T;sHmu^si~@}s;jH3tgNi9t*x%EuCK4Ju&}VPv9YqUva_?Zw6wIfwY9dkwzs#p zxVX5vxw*Q!y1To(yu7@dCU$jHda z$;ryf%FD~k%*@Qq&CSlv&d<-!(9qD)(b3Y<($mw^)YR0~)z#M4*4Nk9*x1lt)=I7_<=;-L_>FMg~>g((4 z?Ck9A?d|UF?(gsK@bK{Q@$vHV^7Hfa^z`)g_4W4l_V@Sq`1ttw`T6?#`uqF){QUg= z{r&#_{{R2~A^8LW3IP8AEC2ui01yBW000Oz0RIUbNU)&6g9sBU1OPzcKZXP$7Hs&C ip+$idF=m{&aiGPE2tk5$NV1|thbK#_T**>lKma>mikY+k literal 0 HcmV?d00001 diff --git a/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.design/icons/Level.png b/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.design/icons/Level.png new file mode 100644 index 0000000000000000000000000000000000000000..47508a24711acdc8e3bd7f10a4fdb1ef6607ce68 GIT binary patch literal 343 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`jKx9jP7LeL$-D$|*pj^6T^Rm@ z;DWu&Cj&(|3p^r=f!eQwFr$;k>!umnpP-M}<2^^PC_8baX=KNwySEth(hTR*PdR;V=gamUEmn~2VyurYwD0x;h z?xDS)ta|0i+V79=l)tb1Q`r;pWBP`^opPF3+MXkbfk^+Q$ z9&v=f+}2*cM~uZ(CYe$C#_`(`LTQG*p*9Z%gfrCY+WBP? + + + + + + + diff --git a/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.design/icons/Lower.png b/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.design/icons/Lower.png new file mode 100644 index 0000000000000000000000000000000000000000..8cc83c40ab8c19d08e9cec36b96971b99b9a5f42 GIT binary patch literal 516 zcmV+f0{i`mP)Px#24YJ`L;&yr@&Me3Qqp4p000SaNLh0L01ejw01ejxLMWSf00007bV*G`2i*!8 z2n-rp5ke~f00D$aL_t(I%cYaeNJ`f8 zs0VNm1cI*+1esz*~ah*PJgiugi9N0YJ24FL`=OPS&ZYonoR(w`Zs9KFNYuDBZodp18%@$#-{bMcH zheh5D1|T3_*IOYCKs$|ThT+!Ru)v$4=2Q?q9vXnUngA-IgniHix88=yej`e>jLY`~ zf|)4p^QopHGQj$%6V9O-=oA_}72n`X9pgM3M}d~wx|9J{4RcTu1x~ZK@TX6ZuSkCm zQwH!pAHr?0!NFT#A21=3OCl%=xNBj(B_NVZB9cqOsMf=!x5B|sV~MvQC5Z@$QJiIO z@L4I!gVl + + +image/svg+xml + + + +< + \ No newline at end of file diff --git a/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.design/icons/LowerOrEqual.png b/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.design/icons/LowerOrEqual.png new file mode 100644 index 0000000000000000000000000000000000000000..2d0aef581a156b6f02ccf8e17ea2757c6425bdef GIT binary patch literal 451 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`jKx9jP7LeL$-D$|*pj^6T^K$v zd}6rM5p*dTD8gCb5m^k>ejS7voit`w00r4gJbhi+?{Z0Un6jHsUhDxh#o5!vF~s6@ za>4=ugF_M@r&qm^keqqu|KI=TTl|@Yl^@%;)$^!}y%3jelNKmndVS(Y`@?oYIsd-T zznHi&?xJHy?*IR=jhLf@weE7rupDOAwT5__&$YUe7ph*Yo%*98Q zk3UdNI(6XanR6RnpS5h8zTeK^2KOtYADuH7XUzIvVt)AQdj3G(0x_cm4zcZNGyYX* zAAYLO|DcP1-~KZNAO5E5BsM&23Z9>5#Id2s_=uOK;hcXJ-HG3CbMwgmt4S;nxs?1t zc&o!joA)pE+O*^47f5~hdA_`DtA4*xPGxP^!MK3w3xhPLBtAOq%k%qwY|@SY?}QS? z4;(mOzhAO!ukG;--|w=v)&KuLS*+v4gZKaIkGQIdcp}y6Yze3}FUOS3j3^P6 + + +image/svg+xml + + + +<= + + \ No newline at end of file diff --git a/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.design/icons/Minus.png b/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.design/icons/Minus.png new file mode 100644 index 0000000000000000000000000000000000000000..dcc6f682030ac71f72e3c3d7c2bfb82c900ed585 GIT binary patch literal 296 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`jKx9jP7LeL$-D$|*pj^6T^K$v zd}6rM5p*dTD8gCb5m^k>ejS7voit`w00r4gJbhi+?{Z0U@N#SJ3Z4NJTH)#97-DgH z?_@)+Lk + + +image/svg+xml + + + +- + + \ No newline at end of file diff --git a/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.design/icons/Module.gif b/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.design/icons/Module.gif new file mode 100644 index 0000000000000000000000000000000000000000..b74ba23627ae435c26636bc43a0f47e41c8398f6 GIT binary patch literal 860 zcmV-i1Ec&$Nk%w1VGsZi0Oy1N000010RaL60s{jB1Ox;H1qB8M1_uWR2nYxX2?+`c z3JVJh3=9kn4Gj(s4i66x5D*X%5fKs+5)%^>6ciK{6%`g178e&67#J8C85tTH8XFrM z92^`S9UUGX9v>ecARr(iAt53nA|oRsBqSsyB_$>%CMPE+C@3f?DJd!{Dl021EG#T7 zEiEoCE-x=HFfcGNF)=bSGBYzXG&D3dH8nOiHa9mnI5;>tIXOByIy*Z%JUl!-Jv}}? zK0iM{KtMo2K|w-7LPJACL_|bIMMXwNMn^|SNJvOYNl8jdN=r*iOiWBoO-)WtPESuy zP*6}&QBhJ-Qd3h?R8&+|RaI72R##V7SXfwDSy@_IT3cINTwGjTU0q&YUSD5dU|?Wj zVPRroVq;@tWMpJzWo2e&W@l$-XlQ6@X=!R|YHMq2Y;0_8ZEbFDZf|dIaBy&OadC2T za&vQYbaZreb#-=jc6WDoczAeud3kzzdV70&e0+R;eSLm@et&;|fPjF3fq{a8f`fyD zgoK2Jg@uNOhKGlTh=_=ZiHVAeii?YjjEszpjg5|uj*pLzkdTm(k&%*;l9Q8@l$4Z} zm6ev3mY0{8n3$NEnVFiJnwy)OoSdAUot>VZo}ZteprD|kp`oIpqNAguq@<*!rKP5( zrl+T;sHmu^si~@}s;jH3tgNi9t*x%EuCK4Ju&}VPv9YqUva_?Zw6wIfwY9dkwzs#p zxVX5vxw*Q!y1To(yu7@dCU$jHda z$;ryf%FD~k%*@Qq&CSlv&d<-!(9qD)(b3Y<($mw^)YR0~)z#M4*4Nk9*x1lt)=I7_<=;-L_>FMg~>g((4 z?Ck9A?d|UF?(gsK@bK{Q@$vHV^7Hfa^z`)g_4W4l_V@Sq`1ttw`T6?#`uqF){QUg= z{r&#_{{R2~A^8LW3IP8AEC2ui01yBW000O%0RIUbNU)&6g9rrzP?&HafQJhk{(~4% mqC|=qAsWp15Fy8k4nJxv`0=1fkP{bXOzCl?#g`HT0suR`N}B5c literal 0 HcmV?d00001 diff --git a/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.design/icons/Module.png b/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.design/icons/Module.png new file mode 100644 index 0000000000000000000000000000000000000000..2337805e6c6d85324e5bbe80e172126f53355efc GIT binary patch literal 360 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`jKx9jP7LeL$-D$|*pj^6T^Rm@ z;DWu&Cj&(|3p^r=f!eQwFr$;k>ZW@RX@JtV5rGdKK#@XZ7!@dL^c4m}r{q!)`E3p%q|;Req$ zN4eGd7d_Qx-~9Xi|NptN|1`H(8%}1l-)()x;-2chv+uCNj=p#QYik%U$@)LE{U8 + + +image/svg+xml + + + \ No newline at end of file diff --git a/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.design/icons/Parameter.png b/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.design/icons/Parameter.png new file mode 100644 index 0000000000000000000000000000000000000000..dd138ced3488da740cd13ce24420f9612f993168 GIT binary patch literal 361 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`jKx9jP7LeL$-D$|*pj^6T^Rm@ z;DWu&Cj&(|3p^r=85p>QL70(Y)*K0-AbW|YuPggKCJ}yPzQ`-yu|T1ho-U3d7XDKw z?&Uocz|(U0JQI(jW9JJE0q%fJ47{?^3S8R~_}LaXCNXMNadAa)vD{(b_C;uphULpI ze(Cc+KboEzc}@KOqhOoPzKuVxT;QvEaa8^H(Gxw>&+V?o1=?1NZSu}*(p5dSEc z@^4MAOub#b-yXM!+X8G0okMgBSGVX3%06N?ei=}|)LZl~(9;Z_u6{1-oD!M6ciK{6%`g178e&67#J8C85tTH8XFrM z92^`S9UUGX9v>ecARr(iAt53nA|oRsBqSsyB_$>%CMPE+C@3f?DJd!{Dl021EG#T7 zEiEoCE-x=HFfcGNF)=bSGBYzXG&D3dH8nOiHa9mnI5;>tIXOByIy*Z%JUl!-Jv}}? zK0iM{KtMo2K|w-7LPJACL_|bIMMXwNMn^|SNJvOYNl8jdN=r*iOiWBoO-)WtPESuy zP*6}&QBhJ-Qd3h?R8&+|RaI72R##V7SXfwDSy@_IT3cINTwGjTU0q&YUSD5dU|?Wj zVPRroVq;@tWMpJzWo2e&W@l$-XlQ6@X=!R|YHMq2Y;0_8ZEbFDZf|dIaBy&OadC2T za&vQYbaZreb#-=jc6WDoczAeud3kzzdV70&e0+R;eSLm@et&;|fPjF3fq{a8f`fyD zgoK2Jg@uNOhKGlTh=_=ZiHVAeii?YjjEszpjg5|uj*pLzkdTm(k&%*;l9Q8@l$4Z} zm6ev3mY0{8n3$NEnVFiJnwy)OoSdAUot>VZo}ZteprD|kp`oIpqNAguq@<*!rKP5( zrl+T;sHmu^si~@}s;jH3tgNi9t*x%EuCK4Ju&}VPv9YqUva_?Zw6wIfwY9dkwzs#p zxVX5vxw*Q!y1To(yu7@dCU$jHda z$;ryf%FD~k%*@Qq&CSlv&d<-!(9qD)(b3Y<($mw^)YR0~)z#M4*4Nk9*x1lt)=I7_<=;-L_>FMg~>g((4 z?Ck9A?d|UF?(gsK@bK{Q@$vHV^7Hfa^z`)g_4W4l_V@Sq`1ttw`T6?#`uqF){QUg= z{r&#_{{R2~A^8LW3IP8AEC2ui01yBW000Ox0RIUbNU)&6g9sBUT*$B>fQJACLX1do gqD6=m2Ts(OQ6ff(6)#$J_;F*ylPFWFJQxrFJG*?Bp8x;= literal 0 HcmV?d00001 diff --git a/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.design/icons/Platform.png b/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.design/icons/Platform.png new file mode 100644 index 0000000000000000000000000000000000000000..60aa71b3d7cfd7387d7b2d4e59d738b7680b22da GIT binary patch literal 340 zcmeAS@N?(olHy`uVBq!ia0vp^0zk~c!3HEhl+{lMQY^(zo*^7SP{WbZ0pxQQctjQh z=}r)4w47bA4akrzag8Vm&QB{TPb^AhC@(M9%goCzPEIUH)ypqRpZ(583aIF!r;B5V z#>Cu#zM$#4qLYAP+;k2z&RZHs4#{r_ly>Ci4D2=u zJbdF!yY~++)iRV!FHUE+~YdxpqNX^V3w fubQuOZ?R7;&7XGQz@Lpk&oOwq`njxgN@xNAY2|^% literal 0 HcmV?d00001 diff --git a/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.design/icons/Platform.svg b/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.design/icons/Platform.svg new file mode 100644 index 00000000..6b236c2c --- /dev/null +++ b/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.design/icons/Platform.svg @@ -0,0 +1,56 @@ + + + +image/svg+xml + + + + \ No newline at end of file diff --git a/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.design/icons/Plus.png b/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.design/icons/Plus.png new file mode 100644 index 0000000000000000000000000000000000000000..239623feb2f11f1e85b76ff7d2b1766537e1b2f1 GIT binary patch literal 380 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`jKx9jP7LeL$-D$|*pj^6T^K$v zd}6rM5p*dTD8gCb5m^k>ejS7voit`w00r4gJbhi+?{Z0U@M?75ReA*!`s3;17-DgH z>tuUxr$mwV`Nex5y7petout;TR+z2vXjl6eS*hQAkM904=wtJ1++pFmMTC#nS5>G{ zfaBM^Y2V}C9NViQe!e8m;(2BLbNLh#&bifZ<0PNN9PsoGFlh2wx74_gftfd|%kIsm z&5wTMzU-0l&OO4+_hCiAVb%Exv9lANa%p{R&{`f-;5~D)N`p&-&NRsfd3IbO0@gEZ zR2gjeG=sMG8vpq)m*>OI!;0V47o7BcvOdCS$#kBICH*&6^;s-CryA_0GlMZ9V)^tB z2eY3@hcVQAJU3_iU(<_vlU}UrOzg}4{?pR$N6M)N1>O%|-p>#@w@u`qkX&%uZ`SBi W+w;4F#PopSz~JfX=d#Wzp$Pz^JC + + +image/svg+xml + + + ++ + + \ No newline at end of file diff --git a/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.design/icons/Repeat.gif b/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.design/icons/Repeat.gif new file mode 100644 index 0000000000000000000000000000000000000000..fa36f216ab1cc546a9771e5bf26bff0faf6c7bac GIT binary patch literal 859 zcmV-h1El;%Nk%w1VGsZi0Oxc7000010RaL60s{jB1Ox;H1qB8M1_uWR2nYxX2?+`c z3JVJh3=9kn4Gj(s4i66x5D*X%5fKs+5)%^>6ciK{6%`g178e&67#J8C85tTH8XFrM z92^`S9UUGX9v>ecARr(iAt53nA|oRsBqSsyB_$>%CMPE+C@3f?DJd!{Dl021EG#T7 zEiEoCE-x=HFfcGNF)=bSGBYzXG&D3dH8nOiHa9mnI5;>tIXOByIy*Z%JUl!-Jv}}? zK0iM{KtMo2K|w-7LPJACL_|bIMMXwNMn^|SNJvOYNl8jdN=r*iOiWBoO-)WtPESuy zP*6}&QBhJ-Qd3h?R8&+|RaI72R##V7SXfwDSy@_IT3cINTwGjTU0q&YUSD5dU|?Wj zVPRroVq;@tWMpJzWo2e&W@l$-XlQ6@X=!R|YHMq2Y;0_8ZEbFDZf|dIaBy&OadC2T za&vQYbaZreb#-=jc6WDoczAeud3kzzdV70&e0+R;eSLm@et&;|fPjF3fq{a8f`fyD zgoK2Jg@uNOhKGlTh=_=ZiHVAeii?YjjEszpjg5|uj*pLzkdTm(k&%*;l9Q8@l$4Z} zm6ev3mY0{8n3$NEnVFiJnwy)OoSdAUot>VZo}ZteprD|kp`oIpqNAguq@<*!rKP5( zrl+T;sHmu^si~@}s;jH3tgNi9t*x%EuCK4Ju&}VPv9YqUva_?Zw6wIfwY9dkwzs#p zxVX5vxw*Q!y1To(yu7@dCU$jHda z$;ryf%FD~k%*@Qq&CSlv&d<-!(9qD)(b3Y<($mw^)YR0~)z#M4*4Nk9*x1lt)=I7_<=;-L_>FMg~>g((4 z?Ck9A?d|UF?(gsK@bK{Q@$vHV^7Hfa^z`)g_4W4l_V@Sq`1ttw`T6?#`uqF){QUg= z{r&#_{{R2~A^8LW3IP8AEC2ui01yBW000O$0RIUbNU)&6g9sBUTu2ZALjVvX{*&0y l;lzRv8!EIYkYhxT6&+@@n6ctSksT9$WXQ6m%a;KG06Xz3n@Iow literal 0 HcmV?d00001 diff --git a/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.design/icons/Repeat.png b/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.design/icons/Repeat.png new file mode 100644 index 0000000000000000000000000000000000000000..a9b7391eef26dd5dcd3c43ec94708f85dcbc3310 GIT binary patch literal 357 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`jKx9jP7LeL$-D$|*pj^6T^K$v zd}6rM5p*dTD8gCb5m^k>ejS7voit`w00r4gJbhi+?{Z19v&ywUs&WGgJ@s^P46!(U z_oA(rbD#k01AW6~A4DBRS`-|Em!D$N3DId8;-&ZC{?>PM8 zwzaF_$^4D~CO-|AS=4xU#+LqsDqER;8K(4{4Vde_ z04O!5ledn=)OwWbGen)b19y3n==x)f;7U8OXZo2BZQ-bLm`zJ>{ y`mp`8Sb^AN{SPfsamjLCHxB9Sl9=IB!&o<6Uu(w6H%dScGkCiCxvX + + + + + + + diff --git a/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.design/icons/Sensor.gif b/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.design/icons/Sensor.gif new file mode 100644 index 0000000000000000000000000000000000000000..be4c534e1a389d5225620a38ea39381ac22c5a30 GIT binary patch literal 862 zcmV-k1EKs!Nk%w1VGsZi0Oy1N000010RaL60s{jB1Ox;H1qB8M1_uWR2nYxX2?+`c z3JVJh3=9kn4Gj(s4i66x5D*X%5fKs+5)%^>6ciK{6%`g178e&67#J8C85tTH8XFrM z92^`S9UUGX9v>ecARr(iAt53nA|oRsBqSsyB_$>%CMPE+C@3f?DJd!{Dl021EG#T7 zEiEoCE-x=HFfcGNF)=bSGBYzXG&D3dH8nOiHa9mnI5;>tIXOByIy*Z%JUl!-Jv}}? zK0iM{KtMo2K|w-7LPJACL_|bIMMXwNMn^|SNJvOYNl8jdN=r*iOiWBoO-)WtPESuy zP*6}&QBhJ-Qd3h?R8&+|RaI72R##V7SXfwDSy@_IT3cINTwGjTU0q&YUSD5dU|?Wj zVPRroVq;@tWMpJzWo2e&W@l$-XlQ6@X=!R|YHMq2Y;0_8ZEbFDZf|dIaBy&OadC2T za&vQYbaZreb#-=jc6WDoczAeud3kzzdV70&e0+R;eSLm@et&;|fPjF3fq{a8f`fyD zgoK2Jg@uNOhKGlTh=_=ZiHVAeii?YjjEszpjg5|uj*pLzkdTm(k&%*;l9Q8@l$4Z} zm6ev3mY0{8n3$NEnVFiJnwy)OoSdAUot>VZo}ZteprD|kp`oIpqNAguq@<*!rKP5( zrl+T;sHmu^si~@}s;jH3tgNi9t*x%EuCK4Ju&}VPv9YqUva_?Zw6wIfwY9dkwzs#p zxVX5vxw*Q!y1To(yu7@dCU$jHda z$;ryf%FD~k%*@Qq&CSlv&d<-!(9qD)(b3Y<($mw^)YR0~)z#M4*4Nk9*x1lt)=I7_<=;-L_>FMg~>g((4 z?Ck9A?d|UF?(gsK@bK{Q@$vHV^7Hfa^z`)g_4W4l_V@Sq`1ttw`T6?#`uqF){QUg= z{r&#_{{R2~A^8LW3IP8AEC2ui01yBW000O(0RIUbNU)&6g9rrzSeTF?fPW7gDugI; oVnm4#7cw-c@#4gS5j|1_iBRN6k_Sba9H_Ek$Bh+ZCJYDwJJg(-O#lD@ literal 0 HcmV?d00001 diff --git a/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.design/icons/Sensor.png b/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.design/icons/Sensor.png new file mode 100644 index 0000000000000000000000000000000000000000..31d8f8a008ead58584465dd81372f6ebe0c49eda GIT binary patch literal 347 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`jKx9jP7LeL$-D$|*pj^6T^Rm@ z;DWu&Cj&(|3p^r=f!eQwFr$;k>%E3fw?zF=RIa$(8sb@1p4%;;v_3t>f&L2#fFOl28*nm?Yi7!5kT} zvGZx0;l0fVPuDzXt3J2$yyYMM>GdJ(%Wvp>s$ieLjKvFyf()DO*^Ml}g7i&yMua`*YzGuxz2v_0dIO#F>g#u*PyeM{S3FSuy?O}Ri) z@6ui|i5}tUF`*y(9xK#Ou+X`h$285ow&C6?-8~N()ftyh|LI^kBdNpNMC?)Zk2n_b kwOgd0 + + + + + + + diff --git a/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.design/icons/Set.gif b/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.design/icons/Set.gif new file mode 100644 index 0000000000000000000000000000000000000000..d2a959495f4cf474ab1f3a38f0f425c2bbcb2477 GIT binary patch literal 202 zcmZ?wbhEHb6krfwXpv$_&Mr^MF3&8i%POhQD{U&MXeq30E2?ZSs_H7P>L{)5Dyiu# zZ|E;?>aT2?P}wxGs(Er%%jBBYskN)NN+c1)}5n11o$?@N#VTz&fg!>2oFNbx5N zBNu}_gAM}_fb3*ob$_7Vm*UChz-1AdJvBn@yos4xiJi34lGp4LpG^1eP;_r&ySv!@^iK*RCyS)2tKx!I67(iB!`BK9rt-B-w|PAum%8KU0go^ literal 0 HcmV?d00001 diff --git a/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.design/icons/Set.png b/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.design/icons/Set.png new file mode 100644 index 0000000000000000000000000000000000000000..70262351fd39baec893827a6eb4708186b03aa91 GIT binary patch literal 369 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`jKx9jP7LeL$-D$|*pj^6T^K$v zd}6rM5p*dTD8gCb5m^k>ejS7voit`w00r4gJbhi+?{Z0UFbY=WK79ui`snH67-DgH z?c|MK&W-}E=ilrT7wT}4R^6}2VOG~VH}-&+uU2PMlkWkimX3dcI)5Y-U6K~=nYoeU zn6KiVUO!WvJDb0sGx%_P()(rQMmF6_?DO_8=DaUSzL=rHRCqbdXxA%y1`&ql?u$P^ zzI+&cRaF-A&!^N>+ww8I?LAi)Yv|A;sQ8AFg`wtZ+1@uw-VPj!^%avCT1;hH zT2mM!jyJ0F-O-VL@Ms^)ikZ)uLax?rQ%GUHbM`XFO@_-X3DfLbPEF>x{PML+=G4DBlZ{GZO`Eoz|e=*7b2)Mu{^}Z75c?M5c KKbLh*2~7akV3WZB literal 0 HcmV?d00001 diff --git a/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.design/icons/Set.svg b/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.design/icons/Set.svg new file mode 100644 index 00000000..72ed503d --- /dev/null +++ b/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.design/icons/Set.svg @@ -0,0 +1,56 @@ + + + +image/svg+xml + + + + \ No newline at end of file diff --git a/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.design/icons/Status.gif b/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.design/icons/Status.gif new file mode 100644 index 0000000000000000000000000000000000000000..1c93efa160452ac715103383354539d4f92e19d9 GIT binary patch literal 863 zcmV-l1EBmzNk%w1VGsZi0Oyqe000010RaL60s{jB1Ox;H1qB8M1_uWR2nYxX2?+`c z3JVJh3=9kn4Gj(s4i66x5D*X%5fKs+5)%^>6ciK{6%`g178e&67#J8C85tTH8XFrM z92^`S9UUGX9v>ecARr(iAt53nA|oRsBqSsyB_$>%CMPE+C@3f?DJd!{Dl021EG#T7 zEiEoCE-x=HFfcGNF)=bSGBYzXG&D3dH8nOiHa9mnI5;>tIXOByIy*Z%JUl!-Jv}}? zK0iM{KtMo2K|w-7LPJACL_|bIMMXwNMn^|SNJvOYNl8jdN=r*iOiWBoO-)WtPESuy zP*6}&QBhJ-Qd3h?R8&+|RaI72R##V7SXfwDSy@_IT3cINTwGjTU0q&YUSD5dU|?Wj zVPRroVq;@tWMpJzWo2e&W@l$-XlQ6@X=!R|YHMq2Y;0_8ZEbFDZf|dIaBy&OadC2T za&vQYbaZreb#-=jc6WDoczAeud3kzzdV70&e0+R;eSLm@et&;|fPjF3fq{a8f`fyD zgoK2Jg@uNOhKGlTh=_=ZiHVAeii?YjjEszpjg5|uj*pLzkdTm(k&%*;l9Q8@l$4Z} zm6ev3mY0{8n3$NEnVFiJnwy)OoSdAUot>VZo}ZteprD|kp`oIpqNAguq@<*!rKP5( zrl+T;sHmu^si~@}s;jH3tgNi9t*x%EuCK4Ju&}VPv9YqUva_?Zw6wIfwY9dkwzs#p zxVX5vxw*Q!y1To(yu7@dCU$jHda z$;ryf%FD~k%*@Qq&CSlv&d<-!(9qD)(b3Y<($mw^)YR0~)z#M4*4Nk9*x1lt)=I7_<=;-L_>FMg~>g((4 z?Ck9A?d|UF?(gsK@bK{Q@$vHV^7Hfa^z`)g_4W4l_V@Sq`1ttw`T6?#`uqF){QUg= z{r&#_{{R2~A^8LW3IP8AEC2ui01yBW000O)0RIUbNU)&6g9rx#0FbcY!iN7CMwBSg pp~8w41wPb>F=Ix99vg;C=<(x4iw8|kB)BoNT|J`YBvnbL0@K#}1Z_u14iEe2mN!dgrn_z3JqrG*f-) zvESZFeQL?o?_a}1WAFYc6g9oUQD!<|PhcE1~m1hn6_WS2bn9e-X{CMB+q)L^K zw%76x4RzfgzZK4B_A9vfVFy>tBMtU*4@Ij@nSLLX3=!P+q4To*62@~$Ewg=X*FCg4 u_FX3I5tnwZeQ@K^4DP%~bzcAX?qleYHPE!&`*jo0zYLzPelF{r5}E)A&XBkO literal 0 HcmV?d00001 diff --git a/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.design/icons/Status.svg b/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.design/icons/Status.svg new file mode 100644 index 00000000..a98915ca --- /dev/null +++ b/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.design/icons/Status.svg @@ -0,0 +1,14 @@ + + + + + + + + diff --git a/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.design/icons/Upper.png b/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.design/icons/Upper.png new file mode 100644 index 0000000000000000000000000000000000000000..9d731e6842c2e1682215ace2e1d89a706c1cde82 GIT binary patch literal 501 zcmVPx#24YJ`L;&yr@&Me3Qqp4p000SaNLh0L01ejw01ejxLMWSf00007bV*G`2i*!8 z2o3^!OSu0400DJLL_t(I%cYauD}!Me#(&S-tI@((h(I^KbQ zfdl>lM@mj8#}2S0LW<2-MonxXHe0q?+TOStDj+JtH-Cw!^2mLLU5y$BdvKfGOV+&Bj_Bnw4Iyjs6N7-gtoZ zkemI;1xcC83;^)P0(fHq7H(a1n_6&a7RKv_c&>iI_2gmse(UEb|5=Nr608OfnDi~O z8#$*`En%R-mfb;GW@8<8%|d5+6RJ=-iC(i7I?N0xRZHkGwPM#SR2wv+sRV05H?EMI z``2*xB~CO9Q(s)gW&D;|{|bAN^FJ5&3!qCW1%k!9O~T0-H;IQFk|^bu10g&}IEr57 roJ1*=!(Yb)m~)D;RL;`JRIuIvu|tHTi0Ut>00000NkvXXu0mjf5C+t) literal 0 HcmV?d00001 diff --git a/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.design/icons/Upper.svg b/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.design/icons/Upper.svg new file mode 100644 index 00000000..906892dd --- /dev/null +++ b/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.design/icons/Upper.svg @@ -0,0 +1,64 @@ + + + +image/svg+xml + + + +> + \ No newline at end of file diff --git a/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.design/icons/UpperOrEqual.png b/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.design/icons/UpperOrEqual.png new file mode 100644 index 0000000000000000000000000000000000000000..e6e65795360b10fea18af98bc822a6ccb55535cd GIT binary patch literal 448 zcmV;x0YCnUP)Px#24YJ`L;&yr@&Me3Qqp4p000SaNLh0L01ejw01ejxLMWSf00007bV*G`2i*!8 z2o4@^O60Hr00BTrL_t(I%cYY)OG053#((c6Y%$8hj3A_@NV)|LHuTSyHff5M>NDhA z-=K!RKn1lnG!+GkM9|=nSEa!rB`zVzbto;O?%SaE!mX%YJkwd8-}AihIS1M-;WQh@ z&YTch)Rt2FO`r*3V{>yjk+^aJ>-pW7kR(-{Z7CLx^hCPpCZ(<%UD%TVS}T@N1vnb_ zy%B$ywZTP#zHTK@htm`rCLv!Bo8e_1UaOo{Gn8H`%m>Da_eVXV1M`wXz3c_N+3zH+ zEGa9?Od!J6$SQl~Q_{5@>00iGKlqXWV4yR=Qr{F~{vl2(*AyEjv0j~caM~l@H!sN7 zOJ0E9HOxwAmh)ZHHYdy$N q1xTsgemf>$^j~W%wL9mS+OAJ6-ED9|78`{C0000 + + +image/svg+xml + + + +>= + \ No newline at end of file diff --git a/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.design/icons/UseFunction.png b/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.design/icons/UseFunction.png new file mode 100644 index 0000000000000000000000000000000000000000..cb8976f09c69f0551ec409ba06c37d87dfb11b74 GIT binary patch literal 450 zcmV;z0X_bSP)Px#24YJ`L;(K){{a7>y{D4^000SaNLh0L01FcU01FcV0GgZ_00007bV*G`2i^h{ z4>JN#Vh45r00BZtL_t(IPkocUN<%>qh1VZYh=t+i1a587koLP4FZbGP!llpcDV?zv0>6gNyFlqT( z`E`hYK;Dw_W4LqtRJ<|ZHldX@=2U+;ZB6`5_!5fD8_Q?mxT@i_5%F8$CHEajV9Qfk z<6brA?m8V0US`Tb*!P0*3FSwDZ9lj^US?u&;}lC)w=Ji{m!c0gO~gyx9Mw-@;+5qc zhbl<%CkrDNgFS-| z0}z1x#K0DQV1B`m+cq5@i=LGnQkf{JHu;l?*^;2s#*IhgCQQxSZd}rFbe{Z^nr9w2 zVkbUoH#q3OPx#24YJ`L;&yr@&Me3Qqp4p000SaNLh0L01ejw01ejxLMWSf00007bV*G`2i*!8 z2RbVLh@{T|00Fm2L_t(I%VS``0X$Va*{4^`f6$!KwVMGCV8JG6DPzg$6BKgO&D=|t zfq_AupPT<&UT?ZF0|Uc@o%go(mqRx=$T3XE*C6aXx*lW~FxREDU5xcg)WYRo4FxSRWf_&I*T0_6 zc>etPKV$lmy2IhPt8CFmm&ZD|6^FWYw3cPc{M3mQ{s^e2iCB& zvMU;>85uA$F=J?6x_#k_`dQ_%c$4z+%SSc{^NT5IDeLIN4Eg{6Kf~JnD>m0mFAX6& zl=H*O`Y$cJ`~T+Jr~gZ1Dz}moQw%8q+0%-ms}A8)0|4z)jcUNHrP%-g002ovPDHLk FV1hhd1fu`| literal 0 HcmV?d00001 diff --git a/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.design/icons/Variable.svg b/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.design/icons/Variable.svg new file mode 100644 index 00000000..2241baf5 --- /dev/null +++ b/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.design/icons/Variable.svg @@ -0,0 +1,60 @@ + + + +image/svg+xml + + + + \ No newline at end of file diff --git a/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.design/icons/While.gif b/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.design/icons/While.gif new file mode 100644 index 0000000000000000000000000000000000000000..22ade752eb911ddca1ae194792f733d1539c7b61 GIT binary patch literal 854 zcmV-c1F8H+Nk%w1VGsZi0Owi&000010RaL60s{jB1Ox;H1qB8M1_uWR2nYxX2?+`c z3JVJh3=9kn4Gj(s4i66x5D*X%5fKs+5)%^>6ciK{6%`g178e&67#J8C85tTH8XFrM z92^`S9UUGX9v>ecARr(iAt53nA|oRsBqSsyB_$>%CMPE+C@3f?DJd!{Dl021EG#T7 zEiEoCE-x=HFfcGNF)=bSGBYzXG&D3dH8nOiHa9mnI5;>tIXOByIy*Z%JUl!-Jv}}? zK0iM{KtMo2K|w-7LPJACL_|bIMMXwNMn^|SNJvOYNl8jdN=r*iOiWBoO-)WtPESuy zP*6}&QBhJ-Qd3h?R8&+|RaI72R##V7SXfwDSy@_IT3cINTwGjTU0q&YUSD5dU|?Wj zVPRroVq;@tWMpJzWo2e&W@l$-XlQ6@X=!R|YHMq2Y;0_8ZEbFDZf|dIaBy&OadC2T za&vQYbaZreb#-=jc6WDoczAeud3kzzdV70&e0+R;eSLm@et&;|fPjF3fq{a8f`fyD zgoK2Jg@uNOhKGlTh=_=ZiHVAeii?YjjEszpjg5|uj*pLzkdTm(k&%*;l9Q8@l$4Z} zm6ev3mY0{8n3$NEnVFiJnwy)OoSdAUot>VZo}ZteprD|kp`oIpqNAguq@<*!rKP5( zrl+T;sHmu^si~@}s;jH3tgNi9t*x%EuCK4Ju&}VPv9YqUva_?Zw6wIfwY9dkwzs#p zxVX5vxw*Q!y1To(yu7@dCU$jHda z$;ryf%FD~k%*@Qq&CSlv&d<-!(9qD)(b3Y<($mw^)YR0~)z#M4*4Nk9*x1lt)=I7_<=;-L_>FMg~>g((4 z?Ck9A?d|UF?(gsK@bK{Q@$vHV^7Hfa^z`)g_4W4l_V@Sq`1ttw`T6?#`uqF){QUg= z{r&#_{{R2~A^8LW3IP8AEC2ui01yBW000Ox0RIUbNU)&6g9sBUT!;_=fP)SrN_ejS7voit`w00r4gJbhi+?{Z19vrB4k=uHO-?ecVS46!)< z^pb8KlY;>3gZ}vfs}v53^giRe!_ca9@G*z_O6LLw3x+n~2U=1dtX&TTwyaV$aX33c zK}^WScV^0_nU$OKzn#_LPn{ZKRL*|T`qYev6SP(&wwP|?w13oM9&&!VQQKF0eWSGxn;S#9t_@PPm(~pC3EC!r!d3iq6xVnk? z)+AS1G8@j&eD!fsXww6c+b@z|dbRV3)ql$TxAHI38w>U8B2CBV0DZyW>FVdQ&MBb@ E0I)Z2_W%F@ literal 0 HcmV?d00001 diff --git a/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.design/icons/While.svg b/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.design/icons/While.svg new file mode 100644 index 00000000..1e1ada80 --- /dev/null +++ b/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.design/icons/While.svg @@ -0,0 +1,13 @@ + + + + + + + + diff --git a/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.design/icons/Wire.gif b/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.design/icons/Wire.gif new file mode 100644 index 0000000000000000000000000000000000000000..b55ba122a47e3b4fe457d9a584d321a333205b9a GIT binary patch literal 855 zcmV-d1E~B*Nk%w1VGsZi0OwNx000010RaL60s{jB1Ox;H1qB8M1_uWR2nYxX2?+`c z3JVJh3=9kn4Gj(s4i66x5D*X%5fKs+5)%^>6ciK{6%`g178e&67#J8C85tTH8XFrM z92^`S9UUGX9v>ecARr(iAt53nA|oRsBqSsyB_$>%CMPE+C@3f?DJd!{Dl021EG#T7 zEiEoCE-x=HFfcGNF)=bSGBYzXG&D3dH8nOiHa9mnI5;>tIXOByIy*Z%JUl!-Jv}}? zK0iM{KtMo2K|w-7LPJACL_|bIMMXwNMn^|SNJvOYNl8jdN=r*iOiWBoO-)WtPESuy zP*6}&QBhJ-Qd3h?R8&+|RaI72R##V7SXfwDSy@_IT3cINTwGjTU0q&YUSD5dU|?Wj zVPRroVq;@tWMpJzWo2e&W@l$-XlQ6@X=!R|YHMq2Y;0_8ZEbFDZf|dIaBy&OadC2T za&vQYbaZreb#-=jc6WDoczAeud3kzzdV70&e0+R;eSLm@et&;|fPjF3fq{a8f`fyD zgoK2Jg@uNOhKGlTh=_=ZiHVAeii?YjjEszpjg5|uj*pLzkdTm(k&%*;l9Q8@l$4Z} zm6ev3mY0{8n3$NEnVFiJnwy)OoSdAUot>VZo}ZteprD|kp`oIpqNAguq@<*!rKP5( zrl+T;sHmu^si~@}s;jH3tgNi9t*x%EuCK4Ju&}VPv9YqUva_?Zw6wIfwY9dkwzs#p zxVX5vxw*Q!y1To(yu7@dCU$jHda z$;ryf%FD~k%*@Qq&CSlv&d<-!(9qD)(b3Y<($mw^)YR0~)z#M4*4Nk9*x1lt)=I7_<=;-L_>FMg~>g((4 z?Ck9A?d|UF?(gsK@bK{Q@$vHV^7Hfa^z`)g_4W4l_V@Sq`1ttw`T6?#`uqF){QUg= z{r&#_{{R2~A^8LW3IP8AEC2ui01yBW000Oy0RIUbNU)&6g9sBUT*we1fQSDe7JNui hqQrp}D+;_AF(bu}1U*9JIB_I^hA302T$wN+06Pt}m$(1` literal 0 HcmV?d00001 diff --git a/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.design/icons/Wire.png b/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.design/icons/Wire.png new file mode 100644 index 0000000000000000000000000000000000000000..e55d329ffbb0971eba9c3c440e69df4e79137bd7 GIT binary patch literal 278 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`jKx9jP7LeL$-D$|*pj^6T^Rm@ z;DWu&Cj&(|3p^r=f!eQwFr$;k>9xWsa7WuEh&@x-uw12vEH4X zviaz_H)qtm`}QwvV4XK(QK$B|6-SQ*y@=&8@|N3?*kfH4k=V@VXILq6=iXJ8wG&d> zv!uR8Pg$Jmxytv@hTb~2fFlB;XEq#>dR}nouMO Rd7uj!JYD@<);T3K0RV`eWpV%j literal 0 HcmV?d00001 diff --git a/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.design/icons/Wire.svg b/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.design/icons/Wire.svg new file mode 100644 index 00000000..03c64368 --- /dev/null +++ b/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.design/icons/Wire.svg @@ -0,0 +1,19 @@ + + + + + + + + + + + + + + diff --git a/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.design/icons/channel_16x16.png b/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.design/icons/channel_16x16.png new file mode 100644 index 0000000000000000000000000000000000000000..7371daf5871f0c069576052ae691c37d6050eb2b GIT binary patch literal 680 zcmV;Z0$2TsP)(TTvLr&r71uJZ(xyX=0!VMUkgf5Yo^$xWu90 zs+meQp>=U8ln#PWT)MP$sHM=Qf>Im`2~r3;DJ=*NiH)g9UmBxL+x)?3jPK>oI~_D> zT1YRP<=)?S&v)-VS0IU2BbO`PJ~%jeaduYjaymO#`}!P@0sLJ+vZXdRlTlH8LST+# zV{c3GcqT~F(#)7z+5@g=^p``|YXE@tb=4XOyuZ7G67Bi`A;p*mZF5I#*Ww-(>lk0^p}W^2X_@5e zHT4dfR)yW(f$8Z{SS&ywAXj^P?Ke><@Y(Eaz5?tK)~AH|1JOQDAVNT;ET_1*s8Uhh zaC!L$hlUP0GIGdJD9?OeUq!KK6kM((fltKfJYjoI_~r;PL_j5=Qc=D$94=B66OB2q z_lW6qxopxjBj)jl03_gx093C6(KeuF0{}Q2Cd|y(FgclpuK#&KpHGA&nfE|)d}pUz z92iIurjG=^62b-nm6DX;(o&HZ9jXm^JV%Vh^a{ywfuv9>8PmFsN9lC!N}*6|*hrGl z<@aaW_xCFe=l=dS1cOekr^ozI6iqMx4bLr-cP^!@t(8*E&Te;-k%<18q_tl2-z08t zYa3SU#l<5J~WUhmP&nT`d}Jk(N+mQ^hIJwd7%YAsHr7UX+%t|QZRmipbN{g zyWG2b@0mXE5fpZ@=p>Vzd(J=qnK^gP%pfAXg1T*6z6l1y9j0jo0s-@uhia`t?=rKp;H2 zpPD+I%a@CcdGn@UjgNP3212oTrs}}kO3A~lte^C2*E+`?rlcfr;lg%f>C%+j2??%T zpf4JcJ{9Z0dxl}z6B!5adI!nQu8hBay(`@?tR`UY>vll5ETv)r0)a5Oxo6|+>;GM7 z7}j-Q@kF?ZenAqjVpwNK;g3^F_OD%gMr&$%6w_0OL!+{Ci(OdwelRZ1kq`VC%>f7S zr3hu3hC3!JVB3nWt^gSs6?naaF|nEk$ByN*ckfDEF8v2!A7GDlAPM*l_%IX_sjd!c zH*T2RyB8r^jyjzhWo2)Ym^esIP8FS<15s}vJ^d}hVViB+KA@x|8>dsh17rdHBk!?N zMC9VdL0P!)fk3;!J%PW5*X;tghqZlFG1cL&E!SM^&A<)x6%?Ir=ARr$B^TtF7 z6%{FL-s~hV?<_4X-MCyjH8tBD2Repb+4| zf!<-`0FMC!@&RcF{clK9kS3ttc_9~I_iis$RVIy%JIKy{hcjnBX33IyWM)30rY1xn zpa_M8+S(B7*7e}?IZ#Rf3Y|cvQqb6FjG^^IGVm@?r@-Nd1;a-jewg3^78m>I?S=aK zBK&?KE31p19(x?Fzh6;S*3aqFvj8%65n0^bZ8Isd>b_4A^XU|BkOdEIn$SW$6z z??!ODHGoCBrfGLP9tSBYV{4KI7DGDjTbq!ysOSxj97(32;0ZTxh9|^~$eJ~7Oj7{< z(Sc@w4I8G7fy@S0G_)VZj0yiHVv5){fMHZ$(5}TTNN9;?Z+&J(ez8_E5ZDOO77xn-uGIcSvL7 zp!j^lMPbP1XeD$5KLelGHge^Pp*1&~w6$48YuAa18YLw&sI3jLbLX>|k?T5~KR<{3 z{DhI@I}dygm@iH!TScT(UP3HOq@^V+4#(s-b@HTN3`2>CbPwB@bRt^BP&Z5^O4{2t z-)-9T#8FolyAhR^CQE7Q48!GO3s64}FvWQ=Swti)?P1KwckOyAk%%%yWOX#IsSYGQ z!w~PPRnfb4LBTXCDrQ+ur}il?%mAZ^0`~22ScM`H84L#1 fuOhPMWjX!>FiX0vLuOQ;00000NkvXXu0mjf<-Bq^ literal 0 HcmV?d00001 diff --git a/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.design/icons/thread_16x16.png b/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.design/icons/thread_16x16.png new file mode 100644 index 0000000000000000000000000000000000000000..348777e0b6798b394a2f3e6f283245110950ee07 GIT binary patch literal 817 zcmV-11J3-3P)gOeAWlO*M#UB>2LZrlsD2 zrVEpeiWoO8T?!(I&_zbng@}SH{{azH5L-ed($*-GCS9ae)EP&k4nAUhL?+49dEI-z zE+(dE4jed~^F2?_*GS?^F?GiJ?Xcawt;gSFfXTFBWsgp(sKPw3q&X#m_2hcw#D^FA zrQnSey?N2mnkW(zbA!1N$w<6r{@&@eP@goQ3RzrgDR7?`nX zb-EAGsvDrm>dMv@AbS(;1EJXh0dPAGWl)2Q-c@_8UCvI20B-#bH94paL1V@c4nwF0 z9J>k(0;qTp`XRyegF)WkgXtM)+6~tGyHFd2VgYI!SJ8Az*zF1YWiG`cluA%6g8!Av zf}eUZ-?-$aU@8xpG+AreKF%y}hiDYS#W5<`TQqF%rGE1+VljxtprO@e@%Cc?c*z9y zQE2=Y)^%~gNaEFy8LHf*BT|6+78mEoUijLb_qD<0IQjG-xf!TwgYyG?XC!g|tcf>& z&!1MZdIusvvkNQS>JdF)C;=ZJ$isj2@OTLqH*~AVd?HgiWxCds=`(4d4p<6=0ShPt zQ@~4L5foZTM)t5xqY6GF)7!UnPXCRRL3)Jr9BCZsDN+gr8T9ZkF41AEd1RV%bQ*i& v28prT^cS8ZKaU=d@FF+P@n28S@g@EvJy>~$g$w#t00000NkvXXu0mjfsw8Tz literal 0 HcmV?d00001 diff --git a/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.design/icons/thread_32x32.png b/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.design/icons/thread_32x32.png new file mode 100644 index 0000000000000000000000000000000000000000..37923a7d97faaa2a8c88d2bdade9fb36304ae47a GIT binary patch literal 2071 zcmV+y2t;+uwD_TO~h#yagNGB>o?@= zHnqRHO4neIjWy;JsECT3`zt#p-2BZsf#^bzaiH>61lhhr zTsro9_xSeCWlNrPU%ze)C|gC^_VbVNlfQh6Vby|^fGz=5Jc5J`Dg>B-0ND`)65z%` z;-GrzJ^4KQwqCq@$$GX)e*x1R1|C(``PXS2KdJT>L%Wb`2bBWSpoW+p1hIVu48M04 zBn^`E%?EdTKzb>eb}Mt1BpTKnO)LQRj3S^SO1<$b)>qFC)fu`6at5e=(ET6--c$91 zQ4G2UjN0K^x}D%&1n1Nc1$sex!0m=yHzkuxSoQt*Gb*a)NK(?n2&}AQ-oiUsZJH@a zcY;cS?(@9SNuVF>RbWgTdpYUxo*6Ze`ZG8uKze-zy20(j)ZNs~VAjs{tWy#7i1hob z02_7aHFoAY5$Qmr4Uu+4IQO+s)2$^`L^ZXWmK{5@d%6% zX2xtLqbX7p5$xGbsw4!&Ms%)x0H*!H?=%PpY)|q0)Qlt`fEZBqGbmmR#dE!XyH%kb zKmanOu;FnYGEoG_RRYaG+XwLbP zuldrum|z+~N(bXWE9Cw=9ABrJFgihN(CtmA4(}ZWYN!I@ABqCvg6n`d;5r#{XX}(I{B)CITm$Fauy3U>IO%pO6~vl?b>lI4(G@ zCN%HoSH5F!)sxK@;?S@lG7;2xFuPLpXw$1qr68RK%YsB7jKBFyMCc}U=`g10)dzzf z5$$`g@>4H)a0tw}hsa_tcqNzN%q#U|vfkKA+rEXHPSU$$J(&+0NXPz-p}i@{lgN9Y_t>hKc}1Dnj^BF!9PgiLc+Q5);e&%@ zG>XjSb0kBhP*mX&2nQh?f`MaOyjTcEDZ6VeAN$b}%J1EX9fn94Y#Z$GaEn$=q4-ay=WT&L1FqgiJuAYesg9?KVDUA7R3H%^|o;dGH+jQfPuS{wF8Lfbl8{tF6@6e=`h@d{9 z0?jXQx+Kn|zC&R4dEizM?8$Qper+4{U4V*NqZGMXkv}aWbD@cJ#tXhw8q!(suq;~y z>({gJu}!jD1ITH~9y!XoqUlgv3qjk9_>cvG*gkl!47SXM_NMD2C(pySMX2s3Z`BO3 za3vH?hqlY?ef*#7g&`@K{O;AIb0x5JdXVd@Wu1IONh z);Hn!27gBcG9Vd9ryy+rQ^1`FtDa)!=B;vU7y*D~%hjh|tmn8r0QxML9|A)OSU@pg z`(*OFq2L{2DIkG&q-Vgps(7byb|N^nu>E~jEMLbadDnM*s1pq>oY>#M(p(vsGk{4x zkm-Y$0pozMZ?$;Lu(g7CfWwlf&+?+tS$gf;!D#7R%x}E7>@~ zqE_|!61zTN$S07`D4l}bWc?{o;8-x2gT@OyaPKeFA7!6A`rdfWYtup%I`$^NPM$)X zn4d3RMx@ir?W6~hUPQY5x^^$0blQ+?C(^QyeXAc*vzV{c)iADmIaP}_I>@-wYvd B>74)o literal 0 HcmV?d00001 diff --git a/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.design/icons/thread_64x64.png b/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.design/icons/thread_64x64.png new file mode 100644 index 0000000000000000000000000000000000000000..811b89df76e7d4155eef09a13e037b0b9420da7b GIT binary patch literal 5290 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 literal 0 HcmV?d00001 diff --git a/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.design/images/analog.png b/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.design/images/analog.png new file mode 100644 index 0000000000000000000000000000000000000000..38adf4de44f16d9801e94e340046fc48c6e57e47 GIT binary patch literal 844 zcmV-S1GD^zP)23L}W)N*5vtB4(3K zbRm&|pyEO|A|fty#GSYkL_u&PE+pVe&@AG@ge1lh1BMtuL>KBPzR^4!jIVal)ue3d zKE|0l1&4d<@6-P|U0wB8b(ZJ3R$7*2-B^S^EC|1S=)x@w;yO;^$2`wpx0E=~^M=4U zY{7lxE#d(Vp{Hs72EsM0$BkhKSMd+F7y-~q`a|e_bW%iAZ!4Rz>}R3ilrGF27?Dd1n;=Hi{n%vDKm9so0K7?&7GbJ`E4o5n?MU z2A)uq$M{KmqxUux;-5z&^H+%d5Si)^u?tabW0d!+=#^cL;=}OY)!q%x+j+3Hld8fiX9`B;j|8FY19Lu8XA7drH zggpuJ{=_WaoZ!7iUxn9I8Ril{OB_rDC#kjEkI5LXnCUO-@CNZ&c)zpoT^(MIQ&@rz zL*5L!@wmv$ zh>qbc8;Feb;IR6|Duw%s58AF~`LnVfH)~mzb>a)fp57ab_256nsVK(TJkOuClJ_k| W-Mw0P3T=k~0000 + + + + + + + diff --git a/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.design/images/analog_input.png b/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.design/images/analog_input.png new file mode 100644 index 0000000000000000000000000000000000000000..081b0d5b9810f12e9b13bdf00f27560e223912b9 GIT binary patch literal 522 zcmV+l0`>igP)y z`?%L-0TIv2cz+1tJU*ab=QV(Z5W+Y@1-{b0Z$k)uF~<2Kq1NQ2e>=pgbgP}!$|D#< zBZ1#=MW%_P6nlru_?Z0T9t((gk#bwXW86u=Lp;DGe8QG&j!$p_do4QDjlG1gGW8G1 ze!&6!zyd}viMuK37+#%X0dugJoHsJT)RVuL5?;h=iY=us{5g%&=OdUZ1b0fLW9*h< zzj4rG@_H`9kWSseRn^v}OpIqL^7}Ab@ar+g*Z;iKhTF21cdGmsZuM{x)&9c^#8IrZ zNxp%bJzT}lo8ciB0)!CG;Sp}&x@0wjFYcK?M)S?^6X0+WA3BJm`2YX_ M07*qoM6N<$f(2pYlmGw# literal 0 HcmV?d00001 diff --git a/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.design/images/analog_input.svg b/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.design/images/analog_input.svg new file mode 100644 index 00000000..d5aaa78c --- /dev/null +++ b/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.design/images/analog_input.svg @@ -0,0 +1,59 @@ + + + +image/svg+xml + + \ No newline at end of file diff --git a/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.design/images/analog_output.png b/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.design/images/analog_output.png new file mode 100644 index 0000000000000000000000000000000000000000..14d96685df4b053dc9c508a4c05aac2b575d61f6 GIT binary patch literal 489 zcmVMsZMr z&?Qn-oN93s+FYW=S#WGCs-aO3g|;G55HWJ;7lECIcOO2*pT8$PFMNmdecyNQ_nv#s z5fQ2a-FRM6+leK-#{u@Rj#>1a(O%KSEd*v;=*H5a(FETx{J$mwb4@g(Xk22Tz#lw{ z2pL|gzB;g2isvI@r3kVt>rA)2U2(tfxTAvOR+ukk;n@Y>|F+;3>M#*lNG94bgssGX z#XUThr$6upeOOEJhq_FJ{F&Zj1`iWADKFAKyv7l3;)%Szj|hoB zm@XN7fEU=U`#CmJyn;6QObGnO{dD_JiTjA&^k1!o`Lx6zp3|M+$2sm86Lq&}8#Zyb z;(iAhxQ<~pf?rLtRz?G(*EzNaown&k*vD9*&x*pRva&4e##BVSs-W$_IELk&a06fP f4yzH-D760o{yZeG_{7k<00000NkvXXu0mjf`wG;) literal 0 HcmV?d00001 diff --git a/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.design/images/analog_output.svg b/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.design/images/analog_output.svg new file mode 100644 index 00000000..483e25d7 --- /dev/null +++ b/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.design/images/analog_output.svg @@ -0,0 +1,58 @@ + + + +image/svg+xml + + \ No newline at end of file diff --git a/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.design/images/connector.png b/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.design/images/connector.png new file mode 100644 index 0000000000000000000000000000000000000000..428ff0524f2a81c73673270cd22a032ed59efea7 GIT binary patch literal 445 zcmV;u0Yd(XP)UD@bI!ei3dS?@ zR-Y6Ri>PGgStsupmayNiSY%6wIz9b{Co-QsV#7!p7oVy6+{?+^j% zv0DWAGXj9bUS=xc8s80H2N6*o!_f$mzo~W(mqv61b%1Hy4>9>$5f-X(1&;$x+}wr@ zJvoVAUdQJkk~a;asP|$~5ix~%%-|coqSRz;uaA%7UM`(}Tt=VSRX2LZMrIzjGYk^o nKYnE9>3gP@HPEX*^CWu#IrI2TRmMPT00000NkvXXu0mjfK)AIb literal 0 HcmV?d00001 diff --git a/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.design/images/connector.svg b/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.design/images/connector.svg new file mode 100644 index 00000000..531f77e6 --- /dev/null +++ b/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.design/images/connector.svg @@ -0,0 +1,21 @@ + + + + + + + + + + + + + + diff --git a/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.design/images/default.svg b/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.design/images/default.svg new file mode 100644 index 00000000..6b236c2c --- /dev/null +++ b/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.design/images/default.svg @@ -0,0 +1,56 @@ + + + +image/svg+xml + + + + \ No newline at end of file diff --git a/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.design/images/delay.svg b/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.design/images/delay.svg new file mode 100644 index 00000000..add7c763 --- /dev/null +++ b/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.design/images/delay.svg @@ -0,0 +1,18 @@ + + + + + + + + diff --git a/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.design/images/delete.svg b/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.design/images/delete.svg new file mode 100644 index 00000000..e9bf6205 --- /dev/null +++ b/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.design/images/delete.svg @@ -0,0 +1,55 @@ + + + +image/svg+xml + + + + \ No newline at end of file diff --git a/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.design/images/dfrobot/ambient_light.jpg b/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.design/images/dfrobot/ambient_light.jpg new file mode 100644 index 0000000000000000000000000000000000000000..fda1c0d4647a9a7093631eee396f991a956ab23c GIT binary patch literal 2820 zcmbW&XHe5y769;nNN9;fK)MtOK|w^3UXswIcN9#d35t}cfV2SeXrd?}@IXW%^dbUM zLML>BB_KtJ6nUWvJdq$x6!LI)=k3gX+TC;Ke7a}uoZs9#=Q3%`KLBpi3nmu;5C{ag z9xi}63Fre*c6JVSHYf)N2Mh{@!G*ZtTwHK5egPgKDG6yLLINRqQcmsMNm*rCNrZy# zd1VbP3gFe@tra#$U4xDP;hSa~JS z>#`lQabrjL@hL{7Z(w-A z$k@cx&i>*h2gl1;caLk=J#Tn<2iyq^3JwV+#Kgwki@*OMAvNvy^o%E&PqXq13X6(M zO3Pl<)Yg&e8ycIMySjUN`zZad-wcn8ei$34eVm}r&do0@E`45JVQhTc+}hsR{l53h z1p>hTWc@As4;Rm&ive+oVoAA+lhW1IU`e2M~YfyqT65i}z@t%nf4=9~>swlZ% zXICs7l0cWZV?HyjJ$;Jgs}_H!`h{w42BRA_AG%hatR%*{Q%15-vPw2<{APb94E}`@ zW1ek6z;3k1Gl650&+O8=33WdUKu|* z-^GpDJDSQ$?s$&S?gq+lgS}^ZRi9|aX80>y2J=r$fs>}j6L$wGB1HoQk%g1a*Sj=6 zx?j_f4j93tmsI)S3$OH#%WX#moVZa8g&8*F-SQ*0ERPR2Sykh1G{6E&k(!SLWz6s5 z+;b>=vsu`L<%~Ki8`pU}$%?!86m3Ztc~!8RJ8WruvPxx{coZW$G2_exTvzPWkJrqU4wW=~2L^R!!Vf4_%&=pG8+~6?eg-OE3JZbOA%Eu4s>D&6G%Wg z%~`QI)f4?sq=#-)ntLvZw~AhWT(3$#;Zs4M;d69$G_KHyt#}tYdy#!%u>Fb%rImpn zd`SBI#rKR(J&o7oRN76nUlQ0~2YokvX=pI8YIVr!<;u~U4XJKlrR_+O#c~cd5gd+iU)(q^jPk7O5`+nbtH@W zAske-tZAS1eEov!!+lqyDR<#D?XFiZtCng;-NWOLMl$FWX?Kbqqj8gs8XThKUW7UiHgZ83kP zGup{P+HrfwQX2~S*xwluSvh@qxn>5hN9XR>`z^vm%xbJ{wQKLkG6Uy@ZQHnVk3}o2 z&+S{i`lX#s?fDI|`1(>z-Z~?Cakg`f?rB!$aU$c|Rrm;v5aBb3WQbKwo~!tp5n(!{ zZ{*Qs5vM^<7JYuivjW{yhsn!tEukm(Y>h&&0!`|ID0$Lb;ubl9^5au{`&iqh6t5|) zOny|Hdq_dIDn@qLqq> z*HocpMzkl_*EYy5PQ8)Ru?m=3cCp&+?o!2^9Tp#0)_cR|mI=3M?`n-PT=&4Dsnnv4 z=GCC#wYYaVSfqOjg2)71(A8%BI0*5G$9vo3Ee~5leb}Yj!JkfhJrxF` zIT(|k}+r>=~XryRR) z;nB2uMP#P#!n$5g$PV?WuF~s3mw3U)H2nY{(V;Mk*(bO?LFBW#nv{4e1L<>oD18>-FDL($ev(h&S<|6RweJp%?yF?A4MT& z`{aD6+LvMzv4RMFWDd5I`}685k&*+K(~C?HQK^5X%vto5B=o)~t!l5nW3o|ne`H*! z%7`%-jSs(E!kcRt!Am@C^V8+ehEkP3#LwV$x9nfFyuz8tx8He{yB4vJX4jFK@s}@4 zxu(qHVkAFmaYnK;RRv!ZfBUHSrkLF9SVhTOuDVC5UMszhv251aO>0K0IA`%)s}lLt z$QwAbh#-4mg#}xs{h_4Bt(R6};VQ{`bq7NusNPrw-cHGZcRTFEi9(_2tqyZ7$=oLL z_p(vt-f)`_j#e0>)3*tcajv+}+Si1MzE7l%j|PZBjaUbF+S*(uj`B_xEz}^qgL+Vw1PnYVYqc~Nj_W>j rd|1<)agzqs1~JeV3arL2O7rYltrdVTmL;yHorZjNLWhqD#QgXd_%JL; literal 0 HcmV?d00001 diff --git a/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.design/images/dfrobot/blue_led.jpg b/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.design/images/dfrobot/blue_led.jpg new file mode 100644 index 0000000000000000000000000000000000000000..62b1f931ca518a4308acd023fe14308435ab7171 GIT binary patch literal 3396 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 literal 0 HcmV?d00001 diff --git a/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.design/images/dfrobot/buzzer.jpg b/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.design/images/dfrobot/buzzer.jpg new file mode 100644 index 0000000000000000000000000000000000000000..bf42a54d77454a6c00a7e6a28fba4ad99f7c633d GIT binary patch literal 6412 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 F{{YH9k@Elm literal 0 HcmV?d00001 diff --git a/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.design/images/dfrobot/default.svg b/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.design/images/dfrobot/default.svg new file mode 100644 index 00000000..6b236c2c --- /dev/null +++ b/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.design/images/dfrobot/default.svg @@ -0,0 +1,56 @@ + + + +image/svg+xml + + + + \ No newline at end of file diff --git a/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.design/images/dfrobot/dfrduino_uno.jpg b/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.design/images/dfrobot/dfrduino_uno.jpg new file mode 100644 index 0000000000000000000000000000000000000000..31b5ab2f4b2525bfb05c125f63b0e365195bc135 GIT binary patch literal 12655 zcmd6Nbx>T*yXN2!2<{Fu0fGg02}!UJG{N124DRmkmIMd{5AN>n?#|4hgJf_g%eQ;) z-QV5aKX$ijtF}+Qr~AC!bxuFk-B0)Fe*P}~-2&i$l#!PKAR!?EjGiyR-&MeS02=CZ zK>6p6j)sPg`4STo0|OHu8wcwp5k4^yAwD4?F&Pa7F)1}EAt5D@lA4x|fq{XT0>liW zXQH8Jp#SG3NNDKjm>8INn3#CQk@p{@Wn|^#KYsqA zuA!-=tz&9tZejV=%G%k*)y>_*(>_Vor587LZpBL1N-G z{el$42YGe+548V^?0*kf(Ek;({{Z&iajgJwP>`M*4}}0A3ApEsV)=#q|E;msuRj(< zp*R2dEKb&Z_d+cxs_lD*yndQ>>{YpO5vQG{x~-*=80=0H35pkyBwuK)45_tuewEp2 z>A%90N3N2^rYlw6%8mmY$8yM+M?GgeJEHsu*h*4D8L`0O7Bv!rn1;D7HVVgdz z#a2^)eXihK5wZsHL?c$!mw`wVt04WW$t%de#r{{vf22vMXM61l(mYA|XcVZ`>{hCp zUr9N;gDnZtcFiL(oV*r+B@gds>W-Cqy5)EbhK5NmjXSMRgt}mHyKR;I5(3`q<~c!k z;H%l_kTaT(N|^z1av*?zYh3D{=3o!@+I%K|b;?1dyM~uRE$k-MmCcuGBnv*k@rUAv zdL#bFV&>2Zk@T~1-2pN|C#%L%M+Z)b+W9-sOKee2u0aalHW(^ixzqJZ>PDVBXb~r1 zdoS7s6SnIu7R}qi$Sr^vaQDsLp35emJw&d zVn)>{nOiUtK8H&-Q7M9tDR4o%W)KhM1R)lt)=e>#a0E<@X=xi@~f@!RDlZ;_Oa^ebfq6I-d?u&ebTbqrWE zA=4-}WZPNIDobR+@5N2CBn12Pi^#waC)7m|+l-j6$_P0w!Zur4vS*~K&gse~ zs&LOnv9l_E$kWqw->>QT$i_KosC8lGDsCc|6I*Gp!a&X(FFGQ1(g!=g%HIyy%#C^- zpejua_{Y@LW>k=;|Lx(wIZ;DVs{y$AQ%H*La#L+_1hQ&_08P=7n@+{qowx-GLhm1u zT8kb?5fnm~2Pnj<8H}*179Cs5giWgL0vMX ztc=m8Ot~VPc~pe0W1btjV;YIkMMy;K|zuJxZjgOVi}sXEodXD zx8Ju+c<_`8n`|}-tTh`17UD(8kEdinMq-07v>yS~SvOr}OOq2y!u=ku)#_|^7h)fm zhUcahvo+^9ZNX*R%_%EAL3}b!{Q=~o)jRRc6+TMQ&|WXW~KLHL9984D(sn4^Jz z+0CT<)Dwf>C8%{7yscD~cwe}gNqvpd2+>w8U@iY$TKhsJRbys8D-;NlDohRfkjFme zKz_^Zq88!lSrYud|ic}(L|-%etP z5g4@Nw6JZI7Vl4Yy((AyB(6E=l{!EEn7%RTnY;E8GwOiA>}Vqqn@ zp#WMPm$HbFCcV0F-u48reLU|Yy9-OTFI3*n@OIJ`7(g+*+$%1R52qz*IL(f~IL21# zc$%EuHhr}|W&WA?qcG5&f*Igzox9!+b4e1eOHDRqVA*$~@R0oJjnPwya+3{}YDs@X z2tU*7oR(&l| zb`@!c2CaF8*0Pb8G6qfVjqWmg`PqNh^LUs+FcbbvRxMkkwtMR78<{4E1p9Q0SRN{zw~TS#-1 z{zuT8D@iW4>#BbCvN>ypR899h6dJ?^OC>GYhfVocC^ z?_C*Ta)=Wn3mMQ8#hG-E9LYgyw`4rWT7t17x=(^{uDlGq0{G35#D@eJ!muCt6}*_` zAp~uvYTk-AJrvAdaZe0F<*MpA&))bXY??KieI06M0RN`hp(6(|ijF9s0>^Pbjr;`| zbX*?I7Ljvm0T)7rx^-9wT^(T=;&h)xWW&pB^)=r81y~ChAwQyU9yN=ZnO9*8AfY!Y ztiL;Xf>hX77L6%dVq zPt@-VH>C@QVg4lbb;;{1<19fm44*7*lT2BIGlPz(eYZq48aj3(L7tnz68JZH{b`#k zjqiN4i5OT21=8o}%;%Q0mt=WaPdbo7V0s8Vy^Qn;0KV zo(0h6-=*)?E5vF*FEcdLcTR{CG`2E}e9$CaoTrR5RUve!OzlORHaa_qSr-LSD+|to zPm8!EZXh|oD?JwGs__py z#i01ioe4bt5g%?}=DsK1dPGs=cG_RShdG~V5Jyv;lP&0D>^wEWoa??5n{1CHIdt~o z`@?J4y5JLGJZ_t@dPRb~_>X-qmi+xWA01z1C zMg3y?qIFzBj+=@l?F9SRP<(xLkV9{b(LLq9u4?SIWdXQpZ_L4@#?cs3#iOxs= z)G)M7r*WmQ*4@8goUwe3sP&TpJs0Mhhl7aGJ@w*ud>nHnIUojlew08Q1BHn?hK3Np zJDr`a_CmLJg9p(W1$zT|v|D&g<4=UeNwp&#G<(GlG?t!^cJ=lVdHk?zquNs_w%T7* zLUfELR=&xSkr5j7fuVP_-k6`Z_H+^?+M>_^4OKp*gQt6iX+D|3Jg)A0n+o7+mc`GD zoq>NLNA2{z2tLD?R`JC)Eh(g=#Scymyhj*nzM*6&O0}---qMJTWX{q`>$DYc%=9_ZT{&jqdBD%~03~X2x5pH}LmGmVYnOT)+x%eA;1Vo> z8Iunf0ay+^y@=g54ST}%#t2Rh%O;C3n`D<@$AP_1bhao5oBW2l)pHkLjqA=s7R&=0 z)6gGRSJQ^D4})X&GB3N!sH*Mli`h1n7?D24G;#zc$nLFFIqdl%*5el55Z!!J^IUehNJicn=Dc-pmN=dvv)Cr28f28=du!c42vyc&2;$eTH< z*ehFIP~j7zAMe1{Iqiq@@Ntn&+S~Ajp{!L|;+6L>(KT!Mla4S2OVb|6NyMVe#t)_S zM)Q=3O_|oi;!uAIlJS*`ceVdFa*^FImxJ@1>#ba6;~y7&Kgr;$mN&g9V2HRPhp~;W z&7Te5M7*)-#*JPl87St2O|F3TzViDWD>1ZF=Wef24_dIG`a&IfuI`Tt7okkH0VJbR z20%ibbL}5XQ8{M*VZ)oCf!yjsD-63(H`-<^YhG9oIS?~p) zKNZ-AIroqb*H7p#;Oi)qg&|G2!j^$n{ep+n^lbe_s!0)5glgghw;>a}WgyfXTK>)u zO8yVDY5D_{V}meZVbbgjA%0^ z)=5b?`BFuYd{xBS#n%RV@v)JdBTms&Yag*vnYqP#$@xI*i(x(07(HssTDoQWn3|u! zo&4tnn4MEBzlJpfoZ%N@n>Z=VLFy$Q6dpihZ;4;dc_|hM*fuk3oN_M*qx5(!M%TsK ze{Ps#uZvb>;y5dqYieq8%Fq8AygO=&^6R=p#}3`Rsi~ziT5-0#aLyGg!_2K=M1Sed zQTG56{TcGp?@wR)U%-_{XTjQI6b;Gqv~7#>Bm0-0nPYN#ttZqT=jI*W3qucQ+2*NB zZx)O7P;P&-?vr2+;`g+HBL#(%j7}d1bM&HG!nl_lh|7<-m7fKYPJ<9 z^OBA104-aS-FZycMZbJ?bR3$lr!_E*2{iAEBJ0rFa~yTx*3)P&0eOWWk6#;fZ8*-s zQX5Cc+%1J+6o-q#yH&>=C$88LM;D`3c1%D~AdUFsuZrsrh=xRCM{|K%W)me1?B@$tr}x}36tGLQN> z17qw~moLeZ-jW+Ak_Pp5y|6cN_F_)wQuYoeT7gL`UsSEz&Vn<8_isUuLY3lmh`yEM zyh&)ZsQ1^g))_XRVl#|w4Vvo1h1PKq%&C4GtX@rH(PibNG7#=98tiUt@ABF5C*^RX@PLft=g;&J@4>{ZLb1s4T_)Lv zKU)popO75?u75edULITa&ApLZS9d^Atfop`^+fT@LWL`pBI&L#;{sc|l*%o>B2#~2 zJJzuw!OeaD2Hz=DEq`ZprA6>iLj2J-y3iJ|VPkJ?w>IVINKLlU6wO5p>F zI*0;D@q1GPdBvJ&X)SWgp)$6tOpvV@UM3oRp!2yGJkUD>iK)kx<$ILm7%EtASX02ECm%f-V{qrzt9)$@(PdSvjMy9 z4I#FPMi_ZFf)e$%2@Qw=)nZO1+?hsksZ%Sf9yT8uTM;MmW}KmyZPn{=otiK!M=BD6 z)wAlLF5?VNkyCAvD9V&yJ2~fljf=ClQ(B-jFYf@c&~HH6(3ZyHNs422*z9{5oEWX- zn82>`QY@FlgIBXB>+I&ZVx?)4EXVbOMV+<_YdU_#tp4U}R&vR@nRR0E;-Vt>#Uc;3GSqgzD`)ByrX!s(jDNdw@(xnI1{sJ8Q@fMRWD(b8j zt{nI$nyH&HUy1KPYzA9 zI--6|Tl|FChlPKpKOp0dtRzQHvPY@W48seTV6i9l(9}#;jhgdKum%$;poHmp+L9+Y zh!2r(&BsTllNOo6WEU#Iz?!G^Kv&d;a8~-*4wVpEFBV~O=W*qHkB;6x+-i?>ygImy z7WkNBftx0&51^(^98*OB$EzAHXUJ`HBhrC8c8Yh`YE zAuZto%GTmi;gp7<4^-|@-6c+wxf6Dnc4Eg^f!cz!F!|818ZLmDKF;G{=;mAZT~Rnw zoVJOlZISxdqOPGe9ukDy%L|YfWmAW_3v*tr@M#)@syuT5;84FZ#Fc6ixBGXE)(YQs zHLJ8EtA&jkuDgtXNMeEwokE=GR}Fava{pU!{7k*762d<$gUGB#o@0Ehb_gn;51tXE zFok~wR2n$SC(-5nG)2+QcYNARV%wYJ999f!;ul_M#a$p`uqhxOq>KW@FE z7zxG=k7$F1dekT)&flX~(E<4s?;J8MQ2w7te3+=j62#IXS_m#(&S?$HWXFT?Q0jdlXDrB>p1(nNQBe%ETvPpoO0%V{&;nic6WWN zJ68H@|M*qvRW>Br`{yg}?fS6@Ne}MPu*-@+pQg*%eM%$08yK>p*?fD8)pdN3tuuje z3ByCO^0N}ndbyod1j^otiq<}rZV%vo_h}X^^kMrhEA_6<{?)L&4%<%74Oq!iAgkgp z0P%8l{T=q#boreZJo3X8g6gMnm1r?78!@C*Hq2^`gb8AUsK#ID+I-(0>#eP%UR4$^ z_nTGQH1h1krhMAaQ;1J#jlpe~@ph8-R_-+naHmX#--P$uP-m=-RNs0V#biwnPCa@# zZge>FOdxK)9H{7>KagEs)9zxh{FEutoOTnhh2X`zDo03QL~Aa%yml$=>k%cmFU^u% zkj--N#Z&%l5UTESEHJB3tE($?m3z$$dbFPRp%yOxW9RFA#sWX7wj!G7N__DHlQzJj z4aKky;Xlw+)Ht)EOGl{t0o2%ZCVNb8o%fctB@0#Ce9J6kd+ zQ|ZgTL~LJ09Z_eXtwkc$?pr+iJ;_vKwTA=F0$Gd6c>Z=~b;NGHL~{9xJlGutY;HaX zI}tyWoH&u#@~4KDc4Hv(jPPh`{~v+&k{| z8(J4D66_Qu=4n}gG%;t1*}hS{ab>Ta3-ZH9HU?kj-YDyy0!R4n%@wrJ?cP+F5$NjT zX(l$&DHT;!#Pu9@caS#8`G^x6a4hnW-M>5IX;5i=fX++T!0APt>1F zWj2q}>x%Lo$QsbEJTkIAVQntGaf&9+J}GgUnwDx+EYF!Orn+9c>n%hu=4j?WD&X7{ z*NlqeR&nC%E<5cboO{5ntH1iHys9bmB;`+syu5@R`rB@_w@>>d+ad++>tV(G?Fat# zGF<|Oo&!kKds9)X{`mDL8TLiirL=`%y1A%q> z+@q2d>}i_g_#-k|>FL3%S>FeE{Mssl^9~5Czn$LHz!hHG0#=KTME`&$#HxBv?)EzE zb@m@V=X)eWHafjpQXKSj;fdr%odHdsDa2B{$;C&g7v4lry=!)~g#7;F8hM;(4pyIE zP%HrmOHF?PU=)?ReNIZTCv!1=Wog;G@7^Jp4Y^8kd1P7PheH_Ut|-7jdVEUhA@EW! zQsx#>*sz4w#_PEXojZlnZ|9u3UsL*`P_4()Vvr@i2!leqC)o1hd)-bAXcYRdm5U9A znamr)jHJixY1Pz!%CB@KCiLDdihAa-eV9484@89ufL8-9#K-l_l4{NPmx^pkluZdD zhIgeJtzs&ibyV~sjx~0fcvb~bEq7z?D0@iH2MZtT8~FSz)9yXL4jr`4inlweX-o5c z;~FFxSsfG&;k;dHgEOf}h`IvKHbTT@~y%>oLSf$Y3hgv#VJY*F)VX0|SmY;R{OSJm`c zM5Npu3D(MVK?7K#;zGvYW?tXXUpO35i9FLEQxvZ1%-gDE`M^8TL{>_bFDMqv4i%; z$9&Zr8VQ;`8u>wrpWhbXHfdj^b6HNL*eqvzEGE`qDJ#iaD-}B=yKZ-Tr*ZNFvbxAS zT)t7?$IInt_jaX;+E*f|g+vY-Y8tCf;054fn@A~A-T3sVfEC=mQ}>ugD(Gu)eclnj zUH95*g*2m}E=gyVCGpl$EPHaM2`^SNND^JAE5t wr`CT`{P6O4I(GOXfpu^$IcV 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 literal 0 HcmV?d00001 diff --git a/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.design/images/dfrobot/infrared.jpg b/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.design/images/dfrobot/infrared.jpg new file mode 100644 index 0000000000000000000000000000000000000000..2fa3cc15d69b7c1545a113c1728dd9ab52293228 GIT binary patch literal 2018 zcmbW!dpy$%8vyX%Z<}pR)>fl(8=DwAd0j)o88H)*Tt~;jC@fyeh|^iRNDA+0PRc2z z<9=LnEk%S0rxG@~&HYwb3UjF)-t&IW`}w?oo%24==lSb-KF{a*ejZ7$WEjBM+0bkN z5CnnmHxrQb16BYEfj}bQC?paojY3JI_h8U6GH4}PIqV)HexDivPf%4S8~sCF(?C;| zphM9$FflbZH{Yjym}Ygz*2v77*t9M2HTuIzu5<1SgD<= zx)k`XW4;JNI8HB)b00~xENhT;?i8u%`$b&bhLYR8XRrJ|bq$iHmVw~`BV&_;R)?)^ zsJ1k_<1Vgl?jD|We?~yy$x}hWXU;~lqN2~mT)KQE{%XRt#MHE#-1MJrW!!#{{qUEZ z+`RmPN97fjRn;|*pESN`YHs1RzHEEj)!oAv^uFsG866v+n4FrPnfGRU^igO#gbU|P+C=9XX0wGbG1;xUoRCVDyDaR1L;kyWWaY&pc=YCnkHln_> zNY*c+6D6l+FtYFC7VY1%zXrSbf64xY{nyn8Y=?rI&x2wC3t&0ej@d;G+jYd?y5cFl z4jzCSGqgxNXqcHpwhes79L6cQe9`|6!kh~#p4qvZ(}Rl)G=@A~t zUYw7}zJkbMYl)^e0;1Qd`zs2An71y-D?|zR^0MYWPu7|#jP7J|4NX1e&OID>wL3@= zOv;^cEpYceJ9IT`--dk_H{i9ONxoFKhPZ60*m-}T3GbGoPH2Qy<1C4t;NJAwqPZoz z!u6TO@ZGcq8ZkR{7Wp8Ek%7eoWZVHzEy_ls_j(CSQaACV)@nOSWZR?5o7|T9!oYJ} zPfjNJOuZ6f${Xk9Wm6N~OMH|*&X8YY*6wnbrMTuRc#jsMX%Y9n^%}5>gdBxkR}0lE z%2nyEoD#y9wv{~9(6ggq1~3^PkO=(GF)}f5Uu&Eb;-?L&AXIz4*r1R_4)ev{W-s?c zfprGI{=$ZCK<+ea?Xu|Mihwq0@Mt?1k>%q^Ml`d&`N5&E&wsM}wD;ljUZ=jdFl>(e z5$w+Hc}iro3ZGU}wigb1ve&v>XCsV;(0szjT^@Pqi~PCUw%VEF&9lWr!o1=YYtdj; zQtlTnaI;>oyg2G!?k~&-qxWos6svNF&2~8XYxKJH`AdNPrzHT3t=dp*1s%@Uj?p?kU$&W^}^lS1$L7!j#kE;Mlk-e9$#30pxYHkG zcz;%U;(jNw{nRL4zjIYN9Ix#cpFO~qbC-Jkd=0{Di2P)1HZ!8r>Yn#9JyMLTL z-#@YRifaDuYve){ooQ6MN86W{9hx^rDBb^~{50zm89AX#Uci*kJF%5RN@S?L&My2a zllMK#TqVb`y4};iWs47D33IXOdYrlE_^dA>rA2s*xWrym`9wO^vvpN9rPv~?SUW6P z?w__`XCOlZxE9amhWeh3;mUSIhw%C=t}#4R^t=X2+g|82gxy~_VFoo8Cdj*#&vXV? zUAX?U*+xg)E1}N|;A>>Nr%(IHdc{X`?%p)}XQpAlx_|X}IS_lM)m&WS&Vg!fhmyBr zViP|lx!cx?&VLqE>6|a5J|2x_DR3ztUUYTVMrEa^P`WA=9NgMW+chtjwi*-j%rCPH zgP*21dL?O%RN|2XtILZ&yq$SlI#f^D@PBjZ_B69j>(uxv{h_{xqj3O34Z0x#?BE## zo!+hD>m!86U*BDhJ7;Xl@u;Ws;yUc*co!L{)T=~?(;Hw+B)wg39;@VoF*5%sjxNhI$WzW{Qo{`%5)qqoQp`IeB#3jM@I1UtMiZ>l2S$J<_#wJ>*v8 z-jm6D5!@<5GR?T5B&MAmwNzpv5;j(s*2TYftE2Jd(4~jbZ>jca3*T{QTuhE08G>vz zqbykC5=~C{j7+BGnK}eBx+eWo`BM`bg0Q1)k82mM^!2=1lmH_t${K-vLJJl&t^& literal 0 HcmV?d00001 diff --git a/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.design/images/dfrobot/platform.svg b/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.design/images/dfrobot/platform.svg new file mode 100644 index 00000000..6b236c2c --- /dev/null +++ b/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.design/images/dfrobot/platform.svg @@ -0,0 +1,56 @@ + + + +image/svg+xml + + + + \ No newline at end of file diff --git a/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.design/images/dfrobot/push_button.jpg b/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.design/images/dfrobot/push_button.jpg new file mode 100644 index 0000000000000000000000000000000000000000..a16a25a3c14a02fa725ce475621e29d5af9cbaf0 GIT binary patch literal 2564 zcmbW(c{JPU8VB%SBoRx6XlSWeB8hcStui#JNX62cJC?CTOKla^TI(XH(yFDkld7q$ z2({Ei#jcpPLR(U5YZ!x4+gMU-Ya8ypXYM)ouY2$Fp69RkIq&&?&U?;#-u>bIaX`$R zY(@q^AP{inU;+Ch00|I+!31FZLIMH;!a_pA@Z(}|5fL~_LK1OYQ4Whi%b^u;YPy;@ zmD4H;Xf5K&)888q2n4Lgc{9>kQ(Zj4;P4QTkgzaZ1TG^cCS#zCRyO#bYrhRZ2mp?N z7Z`*F_z)m40<`}MkOKe^^dRkF;C~f}4-A3w!vq9{gbxN-VgMfq4CaG?p->3qU^?Pp zAAlgB;tD5;{6{TaU}%4&c2sJCfT9tzUBaq&1#`+ZAX-pJ^4M`HX)I1jSw;1<&KX_3 z@AXONjmajaX6Dv5KiS&ZJ5b!*J+69Ey{-k`4ElR;NGR>j-I#l^aq$Uh=^2^yhgpxZ zpA;4qGfGOImQ_EmVb#{vH#GkG^404Oc4ya{z7PEagG0j~xf7G0rlvp7%+Ag8zO1gT zZ)|RT{dVXA0pNeK{*wKN3vuA$gFwI#*r5x=7ktoQ1O%#Zl3$!?33Ks3iq?)2KpLeM zFxv$cPg$)qdfg`VGdd#g>Qvwh9wvT)EY29J4WCH#46pO3oe6lXkBE+apI{i^q*lYr9ILDz zvOdFg6aDRHOV;Y_Z~K63res>K{QIS|AD)gnvy*dAJkpKEC;#Z(K(~oEb3HkGjrH4Z z*?9%(PS?kP)Uv&XSyimwYh5Mxn5$hkTUD@XR^Qg`JK)P_ImmH%!ZSM_vPSi zmmsN$pMg-naTVFb+$W8%`>(=MN>-|*9rpOOr$75nT`%qFD3-7l?$3yEVYZTN%LiUg zdbuia%3M z;77v4QzGM%okAqqx7>(4%*TQJ`a}(BBQv^lPW;}=8euK#S=g~GSH+^7eQN8ZbD7Z%&D%YF0nhL@n-Zy??lwMWNq&RsxjR$7I9qymvM5LHlHV;Bdc>N+n_euU1Q?@we7{>lzM8+~ z!alqA6DLn>p1T`6EPpq&7g)U%l~O8ti8ciE%{O+x>?v1YK0X@G{8hBri&Nn+*Qiz3 z>$3!@qe?DfVDibNk=%a0Id|-LJ~yS+2bo(-U`X!OE7YloENsgUdbk!TEcc8oaVpF% zp303K_7uOecwO9XSp~)3vMZnCvTC1Fv9(#IFp(s!2$67KF_)4>H@o7Bo_A-{ZFTM^ zQ@k?Z>pAL6ndXjjrfuUxJso#E9cqSDTP)nS(ybg(Xvcf-woK>rDqKPQXr8uh8>&0N zNt35~xwM*fog}sUN8uJHf1}Dyy}dCjYs7tNkE~Nv$Zx?2VgK0oY4*q&(JOegKMe81|b{;Jl} z$}-~^VyLHYtAUfP7TV7`J1#X2ySj&9p>FINEZ|@p^HBz2SxU?(Qpr3n!kP}(h*-DLe44$tD*@-LHr*R@q*BuMI*!jsz z5A!Yz=RLIJkpGd9tZi{GCS^Rg%&=2udSkP<`Ao-IGu0F(Nlaezmv6Zxm55eLZKHj_ z-TngR;;=_jw>_OSQW9xJvkMyMfV(hHD;6S~QyUU+Q_4?wP~*|hb9^a=LxHFTIghnx zTSu&=4G(@RS}>Oj#>h8^PaYI$X?WOD-(KAJsB~blricTvFqwqaU87aU6`3Z!E`KUp zV4;6oW+gI*7DEd3@(lw;&m*&O^GVvO6!1%(-=!7^Sai31noh=I`+VR?UsDxm=iGg> ycpVY4)~334>D$d)tp1TLXHrd$=bejD?xf7?p0E*}a>EK_jpaobW27~B|Kp!@#iX+U literal 0 HcmV?d00001 diff --git a/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.design/images/dfrobot/red_led.jpg b/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.design/images/dfrobot/red_led.jpg new file mode 100644 index 0000000000000000000000000000000000000000..f5a70df198a6572fe0f9139c2cb5716e923d72bb GIT binary patch literal 3426 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 WX0z$(om$E2x@J!W961!n8u||uLgP~a literal 0 HcmV?d00001 diff --git a/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.design/images/dfrobot/rotation_sensor_v1.jpg b/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.design/images/dfrobot/rotation_sensor_v1.jpg new file mode 100644 index 0000000000000000000000000000000000000000..490bc6d735ae4cdc30cf6bd4fdf82fd1f04f1684 GIT binary patch literal 2615 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 literal 0 HcmV?d00001 diff --git a/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.design/images/dfrobot/white_led.jpg b/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.design/images/dfrobot/white_led.jpg new file mode 100644 index 0000000000000000000000000000000000000000..0e82573fa02c76e46575b10ee00674062426b57f GIT binary patch literal 3212 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 J86)1?e*tl%TMhsK literal 0 HcmV?d00001 diff --git a/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.design/images/digital.png b/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.design/images/digital.png new file mode 100644 index 0000000000000000000000000000000000000000..85e3a12e4a3db1359b7c9dd995945fa7e55bf0f1 GIT binary patch literal 936 zcmV;Z16TZsP)i>Y6TkU|$la3d5&+l3GX zb)mQ}xRAIB8W5pME!i4yl^~)n3PoJ_1q!7IK~m~YTv(`3g$n9M(`Z8C*Ku*@*?A}T zB`-F)aCq;|{Lg>po|$uIPN$S&kf+n>4C5%Cz(MSf0YApLfRFHbDP?sa;!?`GBaF;o z5oN%!7<2Y-$iI%^U6{hsCJfhODL8iZv(sq{L8sFh!H2lNQZ3*tzDZ*Rci?V3f-&r= z=6#7LODR8X7y=x^IaK*)wLf#r(hG7ha90*tg6e;vCwGTh?G0nE2JG1BTl z#Qc0U;pNR5uAJC`NvtN$^EoFnc&ai!c`e2(M^Iz35!{UL6Xt^!2VO|}RUEGLr;~mb=K45LaITvCS_|fI(huX; zN`I!}IF@vCa4`uUz-@RV$wt%CUJBV)_&xr=mB^o}$P50)T?um}VJ?cL?h5V+&`qvp z?8%Tlm~hV|Cl_&JU_K7ng~*kE;{BB>hjN&E92iZ&_d@m^cH-T5{~6a+M9<=O{1NXj z2FKZWzr=rqZ;b;v1V@qsk0tr@nyObYoiOJ@_BE#C{|asi{nLr#XviL_Ly(j3SR&u4 z>2eDGN|<{S=D8&QGk#B1+pf#8jQ8G<4re*_<$s<4Ua3i9U5;I&x>Fa$tT^2YfLjMRipP_k z<|qzDE=J2Zunl!!Ulp#V7=^Mf$Me{+#SXla_72n|0gG~yUML%y{0rxY-`JxHO<7(0EYMCgtb+%wJqQ5#pDV; z!x>Fq@PlR>A57!X`1 + + + + + + + diff --git a/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.design/images/digital_input.png b/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.design/images/digital_input.png new file mode 100644 index 0000000000000000000000000000000000000000..0964bdcabb2068d7b6b010f9a23aa0021498e997 GIT binary patch literal 573 zcmV-D0>b@?P)q@{*T3WuoTJ9E;y`r(d^wxidefPS49Z zo#)&4Ip-@Pv>g37gL`<7Pk4w6SXa(nisM|@SSe{QUgIZjVkrAKKI0<}E)zflm%9SM zKFs4W209d2n?VJREfYXsq&-$kDb+ECcQ_Ie4Q&@+N;rRPd{%n(pVzDQwG^S1^fs_DNjJv5OgS6##+jNC_V@ zq5*8cdA!7{oHU0)Y{l-pPV~zCKkP;=Zx(P#F$KSH2TyPoO^hg} zGQGDkgPrKZG~Qw*w&NRqtNsP^INs`kVf;|gpRlpie5qY?3a3AC5%?vIG4onn6g=HVYw7tOkC00000 LNkvXXu0mjfsj2d2 literal 0 HcmV?d00001 diff --git a/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.design/images/digital_input.svg b/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.design/images/digital_input.svg new file mode 100644 index 00000000..0d7e7ef3 --- /dev/null +++ b/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.design/images/digital_input.svg @@ -0,0 +1,56 @@ + + + +image/svg+xml + + \ No newline at end of file diff --git a/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.design/images/digital_output.png b/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.design/images/digital_output.png new file mode 100644 index 0000000000000000000000000000000000000000..0d9c2b9faa064d5e73861092bc66b80f0b5ea885 GIT binary patch literal 579 zcmV-J0=)f+P)0s~#K@vpJP*7u2 zQBySrtv0yS5Jb2%*CI8#l%W+yFVK{c1`QGpy--AALeMq*f7X*c=%aRU@c(gl+fg73PfvscoIv545cMDkv|!~nkH8m?d# z7x5}04*dzp%%&CRkeI=)2KGIe$0)Wpuy4f>e&KLt3S3_S13g%%eg+3K^IbvSif4tT z-pu^C1WQBMk8TCgYV|$33c6GHiM~asWAQh(;S>7TT0mkNJ26<^Q`lP)UBx48LPud} zpxAC>I7-l3Wg4F`jxX4U^O(R}+(ZjbqZeH`iA$~jAvqQ5EePCDwdOMJ;=XG7+fIJ<(Y=d>zo(*R!BHHmpwF%v;Jwy+&afw584?7yzJ8(zcAzIB4 zKE}}ni literal 0 HcmV?d00001 diff --git a/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.design/images/digital_output.svg b/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.design/images/digital_output.svg new file mode 100644 index 00000000..c5ae6a23 --- /dev/null +++ b/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.design/images/digital_output.svg @@ -0,0 +1,55 @@ + + + +image/svg+xml + + \ No newline at end of file diff --git a/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.design/images/existing_hardware.svg b/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.design/images/existing_hardware.svg new file mode 100644 index 00000000..0c4c32a9 --- /dev/null +++ b/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.design/images/existing_hardware.svg @@ -0,0 +1,57 @@ + + + +image/svg+xml + + \ No newline at end of file diff --git a/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.design/images/existing_hardwareKit.svg b/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.design/images/existing_hardwareKit.svg new file mode 100644 index 00000000..e2448738 --- /dev/null +++ b/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.design/images/existing_hardwareKit.svg @@ -0,0 +1,56 @@ + + + +image/svg+xml + + \ No newline at end of file diff --git a/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.design/images/existing_sketch.png b/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.design/images/existing_sketch.png new file mode 100644 index 0000000000000000000000000000000000000000..bf264d2707e427fd9967a0477f2e6a9a8059712c GIT binary patch literal 529 zcmV+s0`C2ZP)X1^@s6P!BAT00004b3#c}2nYxW zdrZkKMPcGV$(bj5sz^ZUvRh0*1K>M2QibG=TQiVh+}wz zz?IB=)bx~yIF2Jd>4nUETh=G=!=GR91x(@+?v%Mxnfbc1e@0==XLP#9w7S5Y&9=Vm zs!!L{=P`n%a{oLtbs}OM=So$#GxOI!y5EOanC&TTM8uxVT*p1dH+59u>H$2>%$10k zQoQ1`5iuTkfiw7tYglg*@ShmPr*b`v2iS{e)Z4jJF}GVWtDnaHK6KuMCEWTAD?A@$ TqbbCm00000NkvXXu0mjfC4lAb literal 0 HcmV?d00001 diff --git a/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.design/images/existing_sketch.svg b/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.design/images/existing_sketch.svg new file mode 100644 index 00000000..79e992bd --- /dev/null +++ b/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.design/images/existing_sketch.svg @@ -0,0 +1,57 @@ + + + +image/svg+xml + + \ No newline at end of file diff --git a/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.design/images/fan.jpg b/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.design/images/fan.jpg new file mode 100644 index 0000000000000000000000000000000000000000..55b2e0bbf80fb6a77fd16e2279d35f7a6b6d2eed GIT binary patch literal 3947 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 + + +image/svg+xml + + + \ No newline at end of file diff --git a/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.design/images/hardwareKit.svg b/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.design/images/hardwareKit.svg new file mode 100644 index 00000000..85c72776 --- /dev/null +++ b/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.design/images/hardwareKit.svg @@ -0,0 +1,52 @@ + + + +image/svg+xml + + \ No newline at end of file diff --git a/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.design/images/hardware_invalid.svg b/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.design/images/hardware_invalid.svg new file mode 100644 index 00000000..1020f4d3 --- /dev/null +++ b/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.design/images/hardware_invalid.svg @@ -0,0 +1,52 @@ + + + +image/svg+xml + + + \ No newline at end of file diff --git a/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.design/images/loop.svg b/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.design/images/loop.svg new file mode 100644 index 00000000..325f5021 --- /dev/null +++ b/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.design/images/loop.svg @@ -0,0 +1,14 @@ + + + + + + + + diff --git a/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.design/images/loop_invalid.svg b/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.design/images/loop_invalid.svg new file mode 100644 index 00000000..9c4ccbeb --- /dev/null +++ b/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.design/images/loop_invalid.svg @@ -0,0 +1,50 @@ + + + +image/svg+xml + + \ No newline at end of file diff --git a/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.design/images/music_player.jpg b/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.design/images/music_player.jpg new file mode 100644 index 0000000000000000000000000000000000000000..6f505e3185bf64ba7c174e900b79e83db2f3b06e GIT binary patch literal 7851 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

`J~9eU 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 TwQoT`YyZ>h>i^gGk2C)VBDKy_ literal 0 HcmV?d00001 diff --git a/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.design/images/platform.png b/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.design/images/platform.png new file mode 100644 index 0000000000000000000000000000000000000000..4b60253aad17857055776a48e204afbfccf58704 GIT binary patch literal 646 zcmV;10(t$3P)#Nwi@M zu>x<J@FV%zN_@ z+l9OuW!)cKK~v(R4WAR+K^RSx4=S4Md>(YUvi?SI1^;qlKL*o@vTr#Dxsz_p)d)V1 z6Lq+|63$FRUe>aFP%V@AT0=i8+Zk1|KKcIDfLDof-*W5_!d^Vb<{HP%coss~Uy(px z@;w1JEiKEG(xS*q7toLImVf^ObFyvPnD}VHm&A4;;1HfBnf<_B*(kN53p;Dv=oV&h zwZ_?7jNm=C;T$$3HV2FB?ycZvDQ+a)osMWd+%Ip!jrg<*^0gWr-miK@%a}&%Vgk8? zW<0DzoWiAwF*_!kk}4lhu&LmL^6wZz2t7EAJ+gP7lJ&wU24jqKDkOx^gfloLTjMP` g|AlOVhGHq`e + + +image/svg+xml + + + + \ No newline at end of file diff --git a/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.design/images/software.svg b/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.design/images/software.svg new file mode 100644 index 00000000..20d38f7e --- /dev/null +++ b/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.design/images/software.svg @@ -0,0 +1,51 @@ + + + +image/svg+xml + + + \ No newline at end of file diff --git a/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.design/images/software_invalid.svg b/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.design/images/software_invalid.svg new file mode 100644 index 00000000..54134814 --- /dev/null +++ b/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.design/images/software_invalid.svg @@ -0,0 +1,52 @@ + + + +image/svg+xml + + + \ No newline at end of file diff --git a/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.design/images/upload.svg b/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.design/images/upload.svg new file mode 100644 index 00000000..c7d292c7 --- /dev/null +++ b/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.design/images/upload.svg @@ -0,0 +1,53 @@ + + + +image/svg+xml + + + + + \ No newline at end of file diff --git a/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.design/images/upload_invalid.svg b/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.design/images/upload_invalid.svg new file mode 100644 index 00000000..39597b32 --- /dev/null +++ b/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.design/images/upload_invalid.svg @@ -0,0 +1,54 @@ + + + +image/svg+xml + + + + + \ No newline at end of file diff --git a/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.design/plugin.xml b/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.design/plugin.xml new file mode 100644 index 00000000..8386fd1d --- /dev/null +++ b/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.design/plugin.xml @@ -0,0 +1,10 @@ + + + + + + + + diff --git a/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.design/pom.xml b/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.design/pom.xml new file mode 100644 index 00000000..eba4343d --- /dev/null +++ b/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.design/pom.xml @@ -0,0 +1,42 @@ + + + + 4.0.0 + + + fr.obeo.dsl.arduino + parent + 1.0.0-SNAPSHOT + ../../releng/fr.obeo.dsl.arduino.parent + + + fr.obeo.dsl.arduino.design + eclipse-plugin + + Viewpoint Based Modeler for Arduino + + + + + org.eclipse.tycho + tycho-source-plugin + + + org.apache.maven.plugins + maven-pmd-plugin + + + + + diff --git a/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.design/resources/ArdublockKit.arduino b/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.design/resources/ArdublockKit.arduino new file mode 100644 index 00000000..a8fa65d7 --- /dev/null +++ b/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.design/resources/ArdublockKit.arduino @@ -0,0 +1,110 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.design/src/fr/obeo/dsl/arduino/design/ArduinoDesignerPlugin.java b/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.design/src/fr/obeo/dsl/arduino/design/ArduinoDesignerPlugin.java new file mode 100644 index 00000000..161f4efa --- /dev/null +++ b/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.design/src/fr/obeo/dsl/arduino/design/ArduinoDesignerPlugin.java @@ -0,0 +1,78 @@ +/** + * Copyright (c) 2013 Obeo. + * 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: + * Obeo - initial API and implementation + */ +package fr.obeo.dsl.arduino.design; + +import java.util.HashSet; +import java.util.Set; + +import org.eclipse.ui.plugin.AbstractUIPlugin; +import org.osgi.framework.BundleContext; +import org.eclipse.sirius.business.api.componentization.ViewpointRegistry; +import org.eclipse.sirius.viewpoint.description.Viewpoint; + +/** + * The activator class controls the plug-in life cycle + */ +public class ArduinoDesignerPlugin extends AbstractUIPlugin { + // The plug-in ID + public static final String PLUGIN_ID = "fr.obeo.dsl.arduino.design"; + + // The shared instance + private static ArduinoDesignerPlugin plugin; + + private static Set viewpoints; + + /** + * The constructor + */ + public ArduinoDesignerPlugin() { + } + + /* + * (non-Javadoc) + * + * @see org.eclipse.ui.plugin.AbstractUIPlugin#start(org.osgi.framework.BundleContext) + */ + @Override + public void start(BundleContext context) throws Exception { + super.start(context); + plugin = this; + viewpoints = new HashSet(); + viewpoints.addAll(ViewpointRegistry.getInstance().registerFromPlugin(PLUGIN_ID + "/description/arduino.odesign")); + } + + /* + * (non-Javadoc) + * + * @see org.eclipse.ui.plugin.AbstractUIPlugin#stop(org.osgi.framework.BundleContext) + */ + @Override + public void stop(BundleContext context) throws Exception { + plugin = null; + if (viewpoints != null) { + for (final Viewpoint viewpoint: viewpoints) { + ViewpointRegistry.getInstance().disposeFromPlugin(viewpoint); + } + viewpoints.clear(); + viewpoints = null; + } + super.stop(context); + } + + /** + * Returns the shared instance + * + * @return the shared instance + */ + public static ArduinoDesignerPlugin getDefault() { + return plugin; + } +} diff --git a/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.design/src/fr/obeo/dsl/arduino/design/ArduinoDesignerUtils.java b/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.design/src/fr/obeo/dsl/arduino/design/ArduinoDesignerUtils.java new file mode 100644 index 00000000..440605f8 --- /dev/null +++ b/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.design/src/fr/obeo/dsl/arduino/design/ArduinoDesignerUtils.java @@ -0,0 +1,50 @@ +package fr.obeo.dsl.arduino.design; + +import org.eclipse.emf.ecore.EObject; +import org.eclipse.emf.ecore.resource.Resource; +import org.eclipse.sirius.ui.business.api.session.IEditingSession; +import org.eclipse.sirius.ui.business.api.session.SessionUIManager; + +import fr.obeo.dsl.arduino.Project; + +/** + * Utility for arduino designer. + * + * @author Yvan Lussaud + * + */ +public final class ArduinoDesignerUtils { + + /** + * Constructor. + */ + private ArduinoDesignerUtils() { + // nothing to do here + } + + /** + * Gets the opened {@link Project}. + * + * @return the opened {@link Project} if nay, null otherwise + */ + public static Project getOpenedProject() { + Project res = null; + + for (IEditingSession session : SessionUIManager.INSTANCE + .getUISessions()) { + for (Resource resource : session.getSession() + .getSemanticResources()) { + for (EObject eObj : resource.getContents()) { + if (eObj instanceof Project + && eObj.eResource().getURI().isPlatformResource()) { + res = (Project) eObj; + break; + } + } + } + } + + return res; + } + +} diff --git a/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.design/src/fr/obeo/dsl/arduino/design/services/ArduinoServices.java b/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.design/src/fr/obeo/dsl/arduino/design/services/ArduinoServices.java new file mode 100644 index 00000000..24d46e53 --- /dev/null +++ b/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.design/src/fr/obeo/dsl/arduino/design/services/ArduinoServices.java @@ -0,0 +1,985 @@ +/** + * Copyright (c) 2013 Obeo. + * 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: + * Obeo - initial API and implementation + */ +package fr.obeo.dsl.arduino.design.services; + +import java.util.ArrayList; +import java.util.Collection; +import java.util.Iterator; +import java.util.List; + +import org.eclipse.core.runtime.NullProgressMonitor; +import org.eclipse.emf.common.util.Enumerator; +import org.eclipse.emf.common.util.TreeIterator; +import org.eclipse.emf.ecore.EObject; +import org.eclipse.emf.ecore.EStructuralFeature.Setting; +import org.eclipse.emf.ecore.resource.Resource; +import org.eclipse.emf.ecore.resource.ResourceSet; +import org.eclipse.emf.ecore.util.ECrossReferenceAdapter; +import org.eclipse.emf.ecore.util.EcoreUtil; +import org.eclipse.sirius.business.api.dialect.DialectManager; +import org.eclipse.sirius.business.api.session.Session; +import org.eclipse.sirius.business.api.session.SessionManager; +import org.eclipse.sirius.diagram.DDiagram; +import org.eclipse.sirius.diagram.DDiagramElement; +import org.eclipse.sirius.diagram.DEdge; +import org.eclipse.sirius.ui.business.api.dialect.DialectUIManager; +import org.eclipse.sirius.viewpoint.DRepresentation; +import org.eclipse.sirius.viewpoint.DSemanticDecorator; +import org.eclipse.sirius.viewpoint.description.RepresentationDescription; +import org.eclipse.sirius.viewpoint.description.Viewpoint; + +import com.google.common.collect.ImmutableList; +import com.google.common.collect.Lists; + +import fr.obeo.dsl.arduino.AnalogPin; +import fr.obeo.dsl.arduino.ArduinoAnalogModule; +import fr.obeo.dsl.arduino.ArduinoBoard; +import fr.obeo.dsl.arduino.ArduinoDigitalModule; +import fr.obeo.dsl.arduino.ArduinoFactory; +import fr.obeo.dsl.arduino.BinaryBooleanExpression; +import fr.obeo.dsl.arduino.BinaryBooleanOperatorKind; +import fr.obeo.dsl.arduino.BinaryExpression; +import fr.obeo.dsl.arduino.BinaryIntegerExpression; +import fr.obeo.dsl.arduino.BinaryIntegerOperatorKind; +import fr.obeo.dsl.arduino.Block; +import fr.obeo.dsl.arduino.Board; +import fr.obeo.dsl.arduino.BooleanConstant; +import fr.obeo.dsl.arduino.BooleanExpression; +import fr.obeo.dsl.arduino.BooleanModuleGet; +import fr.obeo.dsl.arduino.Constant; +import fr.obeo.dsl.arduino.Control; +import fr.obeo.dsl.arduino.DigitalPin; +import fr.obeo.dsl.arduino.Expression; +import fr.obeo.dsl.arduino.If; +import fr.obeo.dsl.arduino.Instruction; +import fr.obeo.dsl.arduino.IntegerConstant; +import fr.obeo.dsl.arduino.IntegerModuleGet; +import fr.obeo.dsl.arduino.Module; +import fr.obeo.dsl.arduino.ModuleAssignment; +import fr.obeo.dsl.arduino.ModuleGet; +import fr.obeo.dsl.arduino.ModuleInstruction; +import fr.obeo.dsl.arduino.Pin; +import fr.obeo.dsl.arduino.Project; +import fr.obeo.dsl.arduino.Sketch; +import fr.obeo.dsl.arduino.UnaryBooleanExpression; +import fr.obeo.dsl.arduino.UnaryBooleanOperatorKind; +import fr.obeo.dsl.arduino.UnaryExpression; +import fr.obeo.dsl.arduino.UnaryIntegerExpression; +import fr.obeo.dsl.arduino.UnaryIntegerOperatorKind; +import fr.obeo.dsl.arduino.Variable; +import fr.obeo.dsl.arduino.VariableAssignment; +import fr.obeo.dsl.arduino.VariableDeclaration; +import fr.obeo.dsl.arduino.While; + +public class ArduinoServices { + + private static final String IMAGES_PATH = "/fr.obeo.dsl.arduino.design/images/"; + + public void updateDigitalPins(ArduinoBoard platform, String totalOfPins) { + List pinsTmp = new ArrayList(); + pinsTmp.addAll(platform.getDigitalPins()); + + int total = Integer.parseInt(totalOfPins); + if (total > platform.getDigitalPins().size()) { + // Create missing pins + for (int i = pinsTmp.size(); i < total; i++) { + DigitalPin pin = ArduinoFactory.eINSTANCE.createDigitalPin(); + pin.setId(i); + platform.getDigitalPins().add(pin); + } + } else { + if (total > 0) { + // Delete the other pins + for (int i = total; i < pinsTmp.size(); i++) { + DigitalPin pin = pinsTmp.get(i); + EcoreUtil.delete(pin); + } + } else { + platform.getDigitalPins().clear(); + } + } + } + + public void updateAnalogPins(ArduinoBoard platform, String totalOfPins) { + List pinsTmp = new ArrayList(); + pinsTmp.addAll(platform.getAnalogPins()); + + int total = Integer.parseInt(totalOfPins); + if (total > platform.getAnalogPins().size()) { + // Create missing pins + for (int i = pinsTmp.size(); i < total; i++) { + AnalogPin pin = ArduinoFactory.eINSTANCE.createAnalogPin(); + pin.setId(i); + platform.getAnalogPins().add(pin); + } + } else { + if (total > 0) { + // Delete the other pins + for (int i = total; i < pinsTmp.size(); i++) { + AnalogPin pin = pinsTmp.get(i); + EcoreUtil.delete(pin); + } + } else { + platform.getAnalogPins().clear(); + } + } + } + + public Module getModule(Pin pin) { + Module res = null; + if (pin instanceof AnalogPin) { + res = ((AnalogPin) pin).getModule(); + } else if (pin instanceof DigitalPin) { + res = ((DigitalPin) pin).getModule(); + } + return res; + } + + public String getImage(Module module) { +// String imageName = module.getImage(); + return getImage(""); + } + + public String getImage(ArduinoBoard platform) { +// String imageName = platform.getImage(); + return getImage(""); + } + + private String getImage(String imageName) { + if (imageName != null && imageName.length() > 0) { + return IMAGES_PATH + imageName; + } + return IMAGES_PATH + "default.svg"; + } + + public List getPlatforms(EObject object) { + List result = Lists.newArrayList(); + Session session = SessionManager.INSTANCE.getSession(object); + + for (Resource resource : session.getSemanticResources()) { + for (Iterator iterator = resource.getAllContents(); iterator + .hasNext();) { + EObject content = iterator.next(); + if (content instanceof Board) { + result.add((Board) content); + } + } + } + + return result; + } + + public List getModules(EObject object) { + List result = Lists.newArrayList(); + Session session = SessionManager.INSTANCE.getSession(object); + + for (Resource resource : session.getSemanticResources()) { + for (Iterator iterator = resource.getAllContents(); iterator + .hasNext();) { + EObject content = iterator.next(); + if (content instanceof Module) { + result.add((Module) content); + } + } + } + return result; + } + + public List getActuators(Sketch sketch) { + List result = new ArrayList<>(); + List modules = ImmutableList + .copyOf(getConnectedModules(sketch.getProject().getBoards())); + + /*for (Module module : modules) { + if (module instanceof Actuator) { + result.add(module); + } + }*/ + return result; + } + + public List getSensors(Sketch sketch) { + List result = new ArrayList<>(); + List modules = ImmutableList + .copyOf(getConnectedModules(sketch.getProject().getBoards())); + + /* for (Module module : modules) { + if (module instanceof Sensor) { + result.add(module); + } + }*/ + return result; + } + + public List getLevelModules(Sketch sketch) { + List result = new ArrayList(); + //List modules = ImmutableList.copyOf(getActuators(sketch)); + + for(Board board : sketch.getProject().getBoards()){ + if(board instanceof ArduinoBoard){ + ArduinoBoard arduino = (ArduinoBoard)board; + for(DigitalPin pin : arduino.getDigitalPins()){ + if (pin.getModule().isLevel()) { + result.add(pin.getModule()); + } + } + for(AnalogPin pin : arduino.getAnalogPins()){ + if (pin.getModule().isLevel()) { + result.add(pin.getModule()); + } + } + } + } + + /*for (Module module : modules) { + if (module.isLevel()) { + result.add(module); + } + }*/ + return result; + } + + public Sketch getSketch(EObject eObject) { + if (eObject instanceof Sketch) { + return (Sketch) eObject; + } + + while (eObject != null && !(eObject instanceof Sketch)) { + eObject = eObject.eContainer(); + } + + return (Sketch) eObject; + } + + private List getConnectedModules(Board board) { + List result = new ArrayList<>(); + if (board instanceof ArduinoBoard) { + ArduinoBoard arduinoBoard = (ArduinoBoard) board; + for (AnalogPin pin : arduinoBoard.getAnalogPins()) { + final Module module = pin.getModule(); + if (module != null) { + result.add(module); + } + } + for (DigitalPin pin : arduinoBoard.getDigitalPins()) { + final Module module = pin.getModule(); + if (module != null) { + result.add(module); + } + } + } + return result; + } + + public String computeExpressionLabel(fr.obeo.dsl.arduino.ModuleAssignment e) { + String label = e.getModule().getName(); + if (e.getOperand() instanceof BooleanConstant) { + if (((BooleanConstant)e.getOperand()).isValue()){ + label += " : on"; + }else{ + label += " : off"; + } + } + if (e.getOperand() instanceof IntegerConstant) { + label += " : "+((IntegerConstant)e.getOperand()).getValue(); + } + return label; + } + + public String computeExpressionLabel(fr.obeo.dsl.arduino.Module e) { + String label = e.getName(); + return label; + } + + public String computeLinkLabel(DDiagramElement edgeLink) { + String label = ""; + if (edgeLink instanceof DEdge + && ((DEdge) edgeLink).getTargetNode() instanceof DSemanticDecorator) { + EObject target = ((DSemanticDecorator) ((DEdge) edgeLink) + .getTargetNode()).getTarget(); + if (target instanceof ModuleAssignment) { + ModuleAssignment ms = (ModuleAssignment) target; + if (ms.getOperand() instanceof BooleanConstant) { + if (((BooleanConstant)ms.getOperand()).isValue()){ + label = "on"; + }else{ + label = "off"; + } + } + } + } + + return label; + } + + + public String computeLabel(Expression Expression) { + if (Expression instanceof Variable) { + return ((Variable) Expression).getName(); + } + if (Expression instanceof BooleanConstant) { + return String.valueOf(((BooleanConstant) Expression).isValue()); + } + if (Expression instanceof IntegerConstant) { + return String.valueOf(((IntegerConstant) Expression).getValue()); + } + if (Expression instanceof ModuleGet) { + return "get("+((ModuleGet) Expression).getModule().getName()+")"; + } + if (Expression instanceof BinaryBooleanExpression) { + String label = ""; + label += computeLabel(((BinaryBooleanExpression)Expression).getLeft()) + " "; + label += getOperator(((BinaryBooleanExpression)Expression).getOperator()); + label += " " + computeLabel(((BinaryBooleanExpression)Expression).getRight()); + return label; + } + if (Expression instanceof BinaryIntegerExpression) { + return "(" + computeLabel(((BinaryExpression) Expression).getLeft()) + + getOperator(((BinaryIntegerExpression) Expression).getOperator()) + + computeLabel(((BinaryExpression) Expression).getRight()) + ")"; + } + if (Expression instanceof BinaryBooleanExpression) { + return "(" + computeLabel(((BinaryExpression) Expression).getLeft()) + + getOperator(((BinaryBooleanExpression) Expression).getOperator()) + + computeLabel(((BinaryExpression) Expression).getRight()) + ")"; + } + + + return "null"; + } + + + public String computeLabel(While instruction) { + String label = "While "; + if (instruction.getCondition() == null){ + label+= "null condition"; + return label; + } + Expression cond = instruction.getCondition(); + if (cond instanceof BinaryBooleanExpression + && ((BinaryBooleanExpression)instruction.getCondition()).getLeft() != null + && ((BinaryBooleanExpression)instruction.getCondition()).getRight() != null) { + label += computeLabel(((BinaryBooleanExpression)cond).getLeft()) + " "; + label += getOperator(((BinaryBooleanExpression)cond).getOperator()); + label += " " + computeLabel(((BinaryBooleanExpression)cond).getRight()); + } + if (cond instanceof BooleanModuleGet + && + ((BooleanModuleGet)cond).getModule() != null) { + label += computeLabel(cond); + } + + return label; + } + + public String computeLabelOperator(BinaryIntegerOperatorKind operator) { + return getOperator(operator); + } + public String computeLabelOperator(BinaryBooleanOperatorKind operator) { + return getOperator(operator); + } + public String computeLabelOperator(UnaryIntegerOperatorKind operator) { + return getOperator(operator); + } + public String computeLabelOperator(UnaryBooleanOperatorKind operator) { + return getOperator(operator); + } + + public String computeLabelOperator(BinaryIntegerExpression operator) { + return getOperator(operator.getOperator()); + } + public String computeLabelOperator(BinaryBooleanExpression operator) { + return getOperator(operator.getOperator()); + } + public String computeLabelOperator(UnaryIntegerExpression operator) { + return getOperator(operator.getOperator()); + } + public String computeLabelOperator(UnaryBooleanExpression operator) { + return getOperator(operator.getOperator()); + } + + public String computeLabel(ModuleGet instruction) { + return instruction.getModule().getName(); + } + public String computeLabel(IntegerModuleGet instruction) { + return instruction.getModule().getName(); + } + public String computeLabel(BooleanModuleGet instruction) { + return instruction.getModule().getName(); + } + + public String computeLabel(If instruction) { + String label = "If "; + if (instruction.getCondition() != null) { + label += computeLabel(instruction.getCondition()); + } + return label; + } + + public String computeLabel(VariableAssignment set) { + String label = "Set "; + if (set.getVariable() != null && set.getOperand() != null) { + label += set.getVariable().getName() + " = " + + computeLabel(set.getOperand()); + } + return label; + } + + public String computeLabel(String operator) { + return getOperator(getOperator(operator)); + } + + public String getOperator(Enumerator operator) { + return "operator not supported"; + } + public String getOperator(BinaryIntegerOperatorKind operator) { + switch (operator) { + case DIV: + return "/"; + case MAX: + return "max"; + case MIN: + return "min"; + case MINUS: + return "-"; + case MUL: + return "*"; + case PLUS: + return "+"; + case POURCENT: + return "%"; + } + return null; + } + + public String getOperator(UnaryIntegerOperatorKind operator) { + switch (operator) { + case MINUS: + return "-"; + case SQUARE_ROOT: + return "sqrt"; + } + return null; + } + + public String getOperator(UnaryBooleanOperatorKind operator) { + switch (operator) { + case NOT: + return "!"; + } + return null; + } + + public String getOperator(BinaryBooleanOperatorKind operator) { + switch (operator) { + case AND: + return "&"; + case DIFFERENT: + return "!="; + case EQUAL: + return "=="; + case OR: + return "or"; + case SUP: + return ">"; + case SUP_OR_EQUAL: + return ">="; + case INF: + return "<"; + case INF_OR_EQUAL: + return "<="; + } + return null; + } + + public Enumerator getOperator(String operator) { + + if (operator.equals("/") || operator.equals("div")) { + return BinaryIntegerOperatorKind.DIV; + } + if (operator.equals("max")) { + return BinaryIntegerOperatorKind.MAX; + } + if (operator.equals("min")) { + return BinaryIntegerOperatorKind.MIN; + } + if (operator.equals("-") || operator.equals("minus")) { + return BinaryIntegerOperatorKind.MINUS; + } + if (operator.equals("*") || operator.equals("mul")) { + return BinaryIntegerOperatorKind.MUL; + } + if (operator.equals("+") || operator.equals("plus")) { + return BinaryIntegerOperatorKind.PLUS; + } + if (operator.equals("%") || operator.equals("pourcent")) { + return BinaryIntegerOperatorKind.POURCENT; + } + + if (operator.equals("&") || operator.equals("and")) { + return BinaryBooleanOperatorKind.AND; + } + if (operator.equals("!=") || operator.equals("diff")) { + return BinaryBooleanOperatorKind.DIFFERENT; + } + if (operator.equals("==") || operator.equals("equal")) { + return BinaryBooleanOperatorKind.EQUAL; + } + if (operator.equals("<") || operator.equals("lower")) { + return BinaryBooleanOperatorKind.INF; + } + if (operator.equals("<=") || operator.equals("lowerOrEqual")) { + return BinaryBooleanOperatorKind.INF_OR_EQUAL; + } + if (operator.equals("or")) { + return BinaryBooleanOperatorKind.OR; + } + if (operator.equals(">") || operator.equals("upper")) { + return BinaryBooleanOperatorKind.SUP; + } + if (operator.equals(">=") || operator.equals("upperOrEqual")) { + return BinaryBooleanOperatorKind.SUP_OR_EQUAL; + } + if (operator.equals("not")) { + return UnaryBooleanOperatorKind.NOT; + } + + return null; + } + + public Expression getExpression(Sketch sketch, String expression) { + if (isInteger(expression)) { + fr.obeo.dsl.arduino.IntegerConstant constant = ArduinoFactory.eINSTANCE + .createIntegerConstant(); + constant.setValue(Integer.parseInt(expression)); + return constant; + } + Variable var = ArduinoFactory.eINSTANCE.createIntegerVariable(); + var.setName(expression); +// var.setExpression("0"); + return var; + } + + private boolean isInteger(String s) { + try { + Integer.parseInt(s); + } catch (NumberFormatException e) { + return false; + } + return true; + } + +// public void editLabel(While instruction, Sketch sketch, String left, +// String operator, String right) { +// BooleanExpression condition = ((BooleanExpression)instruction.getCondition()); +// if (condition == null) { +// condition = ArduinoFactory.eINSTANCE.createBooleanExpression(); +// sketch.getInstructions().add(condition); +// instruction.setCondition(condition); +// } +// +// Expression oldLeft = condition.getLeft(); +// Expression oldRight = condition.getRight(); +// +// condition.setLeft(getExpression(sketch, left)); +// condition.setOperator(getOperator(operator)); +// condition.setRight(getExpression(sketch, right)); +// +// deleteUnusedExpression(sketch, oldLeft); +// deleteUnusedExpression(sketch, oldRight); +// } + + public void editLabel(VariableAssignment instruction, Sketch sketch, String variable, + String Expression) { + Expression oldVariable = instruction.getVariable(); + Expression oldExpression = instruction.getOperand(); + instruction.setVariable((Variable) getExpression(sketch, variable)); + instruction.setOperand(getExpression(sketch, Expression)); + + // Clean unused Expressions + deleteUnusedExpression(sketch, oldVariable); + deleteUnusedExpression(sketch, oldExpression); + } + + public void editLabel(Expression Expression, String newExpression) { + + } + + public void deleteUnusedExpressions(Sketch sketch) { + ImmutableList instructions = ImmutableList.copyOf(getAllInstructions(sketch)); + for (Instruction instruction : instructions) { + if (instruction instanceof Expression) { + deleteUnusedExpression(sketch, (Expression) instruction); + } + } + } + + private void deleteUnusedExpression(Sketch sketch, Expression Expression) { + if (Expression != null && isNotUsedAnymore(sketch, Expression)) { + EcoreUtil.delete(Expression); + } + } + + private boolean isNotUsedAnymore(Sketch sketch, Expression Expression) { + ResourceSet resourceSet = Expression.eResource().getResourceSet(); + ECrossReferenceAdapter adapter = new ECrossReferenceAdapter(); + resourceSet.eAdapters().add(adapter); + Collection refs = adapter.getInverseReferences(Expression, true); + return refs.size() == 1; + } + + public List getVariableDeclarations(EObject container) { + List variableDeclarations = Lists.newArrayList(); + TreeIterator it = container.eAllContents(); + while(it.hasNext()){ + EObject eo = it.next(); + if (eo instanceof VariableDeclaration){ + variableDeclarations.add((VariableDeclaration) eo); + } + } + return variableDeclarations; + } + + public EObject getConnectedPin(EObject module) { + return module.eContainer(); + } + + + public Instruction getLastInstruction(Block block) { + List instructions = block.getInstructions(); + if (!instructions.isEmpty()) { + return instructions.get(instructions.size()-1); + } + return null; + } + + public EObject getNextInstruction(EObject current) { + EObject res = null; + if (current instanceof Instruction) { + Block block = (Block)current.eContainer(); + List instructions = block.getInstructions(); + int index = instructions.indexOf(current); + if (index != -1) { + index++; + if (index == instructions.size() && block instanceof Sketch) { + res = block; + } else if (index < instructions.size()) { + res = instructions.get(index); + } + } + } else if (current instanceof Sketch) { + List instructions = getAllInstructions((Sketch)current); + res = instructions.isEmpty() ? null : instructions.get(0); + } + return res; + } + + public List getNumericalExpressions(EObject container) { + List expressions = Lists.newArrayList(); + if (container instanceof VariableAssignment) { + Expression Expression = ((VariableAssignment) container).getOperand(); + if (Expression instanceof BinaryIntegerExpression) { + expressions.add((BinaryIntegerExpression) Expression); + } + } else if (container instanceof BinaryExpression) { + Expression left = ((BinaryExpression) container).getLeft(); + Expression right = ((BinaryExpression) container).getRight(); + if (left instanceof BinaryIntegerExpression) { + expressions.add((BinaryIntegerExpression) left); + } + if (right instanceof BinaryIntegerExpression) { + expressions.add((BinaryIntegerExpression) right); + } + } + return expressions; + } + + public List getModuleGets(EObject container) { + List moduleGetters = Lists.newArrayList(); + if (container instanceof Sketch) { + List instructions = getAllInstructions((Sketch)container); + for (Instruction instruction : instructions) { + if (instruction instanceof ModuleGet) { + if ( +// instruction.getNext() == null || + isNotUsedAnymore((Sketch) container, + (ModuleGet) instruction)) { + moduleGetters.add((ModuleGet) instruction); + } + } + } + } else if (container instanceof BinaryExpression) { + Expression left = ((BinaryExpression) container).getLeft(); + Expression right = ((BinaryExpression) container).getRight(); + if (left instanceof ModuleGet) { + moduleGetters.add((ModuleGet) left); + } + if (right instanceof ModuleGet) { + moduleGetters.add((ModuleGet) right); + } + } + return moduleGetters; + } + + public List getBooleanExpressions(EObject container) { + List booleanExpressions = Lists.newArrayList(); + Iterator it = container.eContents().iterator(); + while(it.hasNext()){ + EObject eo = it.next(); + if (eo instanceof BooleanExpression){ + booleanExpressions.add((BooleanExpression) eo); + } + } + return booleanExpressions; + } + + public List getConstants(EObject container) { + List constants = Lists.newArrayList(); + if (container instanceof VariableAssignment) { + Expression Expression = ((VariableAssignment) container).getOperand(); + if (Expression instanceof Constant) { + constants.add((Constant) Expression); + } + }else if (container instanceof UnaryExpression) { + Expression Expression = ((UnaryExpression) container).getOperand(); + if (Expression instanceof Constant) { + constants.add((Constant) Expression); + } + } else if (container instanceof BinaryExpression) { + Expression left = ((BinaryExpression) container).getLeft(); + Expression right = ((BinaryExpression) container).getRight(); + if (left instanceof Constant) { + constants.add((Constant) left); + } + if (right instanceof Constant) { + constants.add((Constant) right); + } + } + return constants; + } + + public IntegerConstant createConstant(Sketch sketch, int expression) { + for (Iterator iterator = sketch.eAllContents(); iterator + .hasNext();) { + EObject object = iterator.next(); + if (object instanceof IntegerConstant) { + if (((IntegerConstant) object).getValue() == expression) { + return (IntegerConstant) object; + } + } + } + + IntegerConstant constant = ArduinoFactory.eINSTANCE.createIntegerConstant(); + constant.setValue(expression); + return constant; + } + + public void removeWire(Board board, Module module) { + if (board instanceof ArduinoBoard) { + boolean found = false; + ArduinoBoard arduinoBoard = (ArduinoBoard) board; + for (AnalogPin pin : arduinoBoard.getAnalogPins()) { + if (pin.getModule() == module) { + pin.setModule(null); + found = true; + break; + } + } + if (!found) { + for (DigitalPin pin : arduinoBoard.getDigitalPins()) { + pin.setModule(null); + break; + } + } + } + } + + public void removeWire(Board board) { + if (board instanceof ArduinoBoard) { + ArduinoBoard arduinoBoard = (ArduinoBoard) board; + for (AnalogPin pin : arduinoBoard.getAnalogPins()) { + pin.setModule(null); + } + for (DigitalPin pin : arduinoBoard.getDigitalPins()) { + pin.setModule(null); + } + } + } + + public boolean isValidSketch(Project project) { + Sketch sketch = project.getSketch(); + if (sketch == null) { + return false; + } + fr.obeo.dsl.arduino.utils.ArduinoServices service = new fr.obeo.dsl.arduino.utils.ArduinoServices(); + return service.isValidSketch(sketch); + } + + public boolean isValidConnector(Module module, Pin pin) { + boolean result = false; + if (pin instanceof AnalogPin) { + result = module instanceof ArduinoAnalogModule; + } else if (pin instanceof DigitalPin){ + result = module instanceof ArduinoDigitalModule; + } + return result; + } + + public boolean isValidHardware(Project project) { + return project.getBoards() != null; + } + + public boolean isUploadable(Project project) { + return isValidHardware(project) && isValidSketch(project); + } + + public String getImage(ModuleInstruction instruction) { + return "/fr.obeo.dsl.arduino.design/images/default.svg"; +// return "/fr.obeo.dsl.arduino.design/images/" +// + instruction.getModule().getImage(); + } + + public String getImage(ModuleGet instruction) { + return "/fr.obeo.dsl.arduino.design/images/default.svg"; +// return "/fr.obeo.dsl.arduino.design/images/" +// + instruction.getModule().getImage(); + } + + public void addVariable(Instruction container, Variable variable) { + if (container instanceof BinaryExpression) { + addMathOperatorExpression((BinaryExpression) container, variable); + } else if (container instanceof VariableAssignment) { + ((VariableAssignment) container).setVariable(variable); + } + deleteUnusedExpressions(getSketch(variable)); + } + + public void addExpression(Instruction container, Constant Expression) { + if (container instanceof BinaryExpression) { + addMathOperatorExpression((BinaryExpression) container, Expression); + } else if (container instanceof VariableAssignment) { + ((VariableAssignment) container).setOperand(Expression); + } + deleteUnusedExpressions(getSketch(Expression)); + } + + private void addMathOperatorExpression(BinaryExpression container, Expression Expression) { + Expression left = container.getLeft(); + Expression right = container.getRight(); + + if (left == null && right == null) { + container.setLeft(Expression); + } else if (left != null && right == null) { + container.setRight(Expression); + } else if (left == null && right != null) { + container.setLeft(Expression); + } else if (left != null && right != null) { + container.setLeft(Expression); + } + deleteUnusedExpressions(getSketch(Expression)); + } + + public void updateExpression(Instruction container, Expression newExpression, + Expression oldExpression) { + if (container instanceof VariableAssignment) { + if (newExpression instanceof Variable) { + ((VariableAssignment) container).setVariable((Variable) newExpression); + } else { + ((VariableAssignment) container).setOperand(newExpression); + } + } else if (container instanceof BinaryExpression) { + Expression left = ((BinaryExpression) container).getLeft(); + Expression right = ((BinaryExpression) container).getRight(); + if (oldExpression.equals(left)) { + ((BinaryExpression) container).setLeft(newExpression); + } else if (oldExpression.equals(right)) { + ((BinaryExpression) container).setRight(newExpression); + } + + } + deleteUnusedExpressions(getSketch(container)); + } + + public void openHardwareDiagram(Board hardware) { + Session session = SessionManager.INSTANCE.getSession(hardware); + DRepresentation hardwareDiagram = getBoardDiagram(hardware); + DialectUIManager.INSTANCE.openEditor(session, hardwareDiagram, + new NullProgressMonitor()); + } + + public void openSketchDiagram(Sketch sketch) { + Session session = SessionManager.INSTANCE.getSession(sketch); + DRepresentation sketchDiagram = getSketchDiagram(sketch); + DialectUIManager.INSTANCE.openEditor(session, sketchDiagram, + new NullProgressMonitor()); + } + + private RepresentationDescription getDiagramDescription(Session session, + String diagramDescriptionName) { + for (Viewpoint vp : session.getSelectedViewpoints(false)) { + for (RepresentationDescription representationDescription : vp + .getOwnedRepresentations()) { + if (representationDescription.getName().equals( + diagramDescriptionName)) { + return representationDescription; + } + } + } + return null; + } + + private DRepresentation getBoardDiagram(Board board) { + return getDiagram(board, "Hardware", "Hardware"); + } + + private DRepresentation getSketchDiagram(Sketch sketch) { + return getDiagram(sketch, "Sketch", "Sketch"); + } + + private DRepresentation getDiagram(EObject semantic, String diagramName, String diagramDescriptionName) { + fr.obeo.dsl.arduino.utils.ArduinoServices service = new fr.obeo.dsl.arduino.utils.ArduinoServices(); + Session session = SessionManager.INSTANCE.getSession(semantic); + DRepresentation diagram = service.getDiagram(session, diagramName); + // Create representation if does not exist + if (diagram == null) { + diagram = (DDiagram) DialectManager.INSTANCE.createRepresentation( + diagramName, semantic, + getDiagramDescription(session, diagramDescriptionName), + session, new NullProgressMonitor()); + } + + return diagram; + } + + private List getAllInstructions(Sketch sketch){ + List instructions = new ArrayList(); + for(fr.obeo.dsl.arduino.Thread thread : sketch.getThreads()){ + instructions.addAll(getAllInstructions(thread)); + } + return instructions; + } + + private List getAllInstructions(fr.obeo.dsl.arduino.Thread thread){ + return thread.getBlock().getInstructions(); + } + + public List getAllInstructions(fr.obeo.dsl.arduino.Block block){ + List instructions = new ArrayList(); + for(Instruction insts : block.getInstructions()){ + instructions.add(insts); + if(insts instanceof Control){ + Control control = (Control)insts; + instructions.addAll(getAllInstructions(control.getBlock())); + } + } + return instructions; + } +} diff --git a/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.edit/.classpath b/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.edit/.classpath new file mode 100644 index 00000000..858bac42 --- /dev/null +++ b/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.edit/.classpath @@ -0,0 +1,7 @@ + + + + + + + diff --git a/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.edit/.project b/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.edit/.project new file mode 100644 index 00000000..81ef93d8 --- /dev/null +++ b/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.edit/.project @@ -0,0 +1,28 @@ + + + fr.obeo.dsl.arduino.edit + + + + + + org.eclipse.jdt.core.javabuilder + + + + + org.eclipse.pde.ManifestBuilder + + + + + org.eclipse.pde.SchemaBuilder + + + + + + org.eclipse.jdt.core.javanature + org.eclipse.pde.PluginNature + + diff --git a/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.edit/META-INF/MANIFEST.MF b/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.edit/META-INF/MANIFEST.MF new file mode 100644 index 00000000..3511db89 --- /dev/null +++ b/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.edit/META-INF/MANIFEST.MF @@ -0,0 +1,15 @@ +Manifest-Version: 1.0 +Bundle-ManifestVersion: 2 +Bundle-Name: %pluginName +Bundle-SymbolicName: fr.obeo.dsl.arduino.edit;singleton:=true +Bundle-Version: 1.0.0.qualifier +Bundle-ClassPath: . +Bundle-Activator: fr.obeo.dsl.arduino.provider.ArduinoEditPlugin$Implementation +Bundle-Vendor: %providerName +Bundle-Localization: plugin +Bundle-RequiredExecutionEnvironment: JavaSE-1.6 +Export-Package: fr.obeo.dsl.arduino.provider +Require-Bundle: org.eclipse.core.runtime, + fr.obeo.dsl.arduino;visibility:=reexport, + org.eclipse.emf.edit;visibility:=reexport +Bundle-ActivationPolicy: lazy diff --git a/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.edit/build.properties b/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.edit/build.properties new file mode 100644 index 00000000..972dc84a --- /dev/null +++ b/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.edit/build.properties @@ -0,0 +1,17 @@ +# Copyright (c) 2013 Obeo. +# 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: +# Obeo - initial API and implementation + +bin.includes = .,\ + icons/,\ + META-INF/,\ + plugin.xml,\ + plugin.properties +jars.compile.order = . +source.. = src-gen/ +output.. = bin/ diff --git a/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.edit/icons/full/ctool16/CreateAnalogPin_module_AmbientLightSensor.gif b/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.edit/icons/full/ctool16/CreateAnalogPin_module_AmbientLightSensor.gif new file mode 100644 index 0000000000000000000000000000000000000000..8ab34c64a3fa8865811b8b9ab624dffa204edeb8 GIT binary patch literal 223 zcmZ?wbhEHb6krfwIKsg2|NsB{_xIb|$1^Z695`@b&YU?18XSP&|Nr>;@%I1k+cz{c zK*TGTT>^^lnyv;!TPG>6>ylsEBsH&6Y-Wk@zrXK+=1sf1OPi$TRf^3l5&rl0JrMo)AYJYW3#ZZps{2vGdV z!U$sNfC!MC46HE<3VkV&c4`bW&mNv~Ve6#+=DtZKp2nX|dah+p(iBtgmrBlb4%C>v z`~$f8PVq-_PfP=+E=Tzwb5! zO@jc%pDc_ZmJWyj*~!2fqoB~25^1N#F!Su;DHpa*>Tm9wRN`s;*`()M_9RU)^?s@3 zOy@w2*~?F`i}Y#DId#&_ia|&1zPF2oKv2W%7YQF0oor`XnBXRVqow9{uGZ<7>G=#f OHBG6FP1&l74Auax-C$1u literal 0 HcmV?d00001 diff --git a/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.edit/icons/full/ctool16/CreateArduinoBoard_analogPins_AnalogPin.gif b/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.edit/icons/full/ctool16/CreateArduinoBoard_analogPins_AnalogPin.gif new file mode 100644 index 0000000000000000000000000000000000000000..1b2d814f92e6714ec4830c22115f64fb7a9f2d9d GIT binary patch literal 223 zcmZ?wbhEHb6krfwIKsg2|NsB{_xIb|$1^Z695`@b&YU@w%Pu)MIQ;(~KR@37|9$(0 zhKAq2zrJ~M^#1+%mo8QAnyv;!TPG>6>ylsEBsH&6Y-Wk@zrXK+=zg-6@86$)=~Csc>1sf$f8PVq-_PfP=+E=Tzwb5! zO@jc%pDc_ZmJWyj*~!2fqoB~25^1N#F!Su;DHpa*>Tm9wRN`s;*`()M_9RU)^?s@3 zOy@w2*~?F`i}Y#DId#&_ia|&1zPF2oKv2W%7YQF0oor`XnBXRVqow9{uGZ<7>G=#f OHBG6FP1&l74AuawFm=oMUGhttq~=wM%`6fA_xC*z{r!9%i2giZ{QGV* z&@>28{K>)yV(EYgkev*yF$xNODUo(+3^UIjo^oO9r2gi6>ylsEBsH&6Y-Wk@zrXK+=$`>IQ;(~KR@37|9$(0 zh6bqkGLZPL>1sfB0|1SSVSE4p literal 0 HcmV?d00001 diff --git a/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.edit/icons/full/ctool16/CreateAssignment_operand_IntegerConstant.gif b/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.edit/icons/full/ctool16/CreateAssignment_operand_IntegerConstant.gif new file mode 100644 index 0000000000000000000000000000000000000000..89badf28dc7e4ad4afd46af3b4026431876f9844 GIT binary patch literal 223 zcmZ?wbhEHb6krfwIKsg2|NsB{_xIb|$1^Z695`?w?MzxjLxY2Z!~g&B^W*LR-?s;H zf#P%K%(=9z5-7fFx*8B|ous_3OMYpS)VxZunI*#i{=NsIzn{+o(Vypwf8T8eng#)i zKUo+-EFBO5vXg-|MnR!3CDKlfVdmMxQ!Z?s)Zg4Usl?Oxvq{gj>`9tp>its5na+V4 zvzMP>7wOZQbLym<6@!l2eQy^FfuM%jFA_d1I@!*&Fu_g!MoZ1@T&>eD)AJc}YMN3T Ko3d3E8LR=g5nx*Y literal 0 HcmV?d00001 diff --git a/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.edit/icons/full/ctool16/CreateAssignment_operand_IntegerModuleGet.gif b/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.edit/icons/full/ctool16/CreateAssignment_operand_IntegerModuleGet.gif new file mode 100644 index 0000000000000000000000000000000000000000..62e1e1aeb815a400ce0fe9bb3c8ca41ffd05007c GIT binary patch literal 223 zcmZ?wbhEHb6krfwIKsg2|NsB{_xIb|$1^Z6TwBw0tS5L)v1MDN&j0`M^W*LR-?wjQ zXgF}-z??aAE-kBcaB$c)T@8q~PEuaiCBL*uYF?$-%o5>$f8PVq-_PfP=+E=Tzwb5! zO@jc%pDc_ZmJWyj*~!2fqoB~25^1N#F!Su;DHpa*>Tm9wRN`s;*`()M_9RU)^?s@3 zOy@w2*~?F`i}Y#DId#&_ia|&1zPF2oKv2W%7YQF0oor`XnBXRVqow9{uGZ<7>G=#f OHBG6FP1&l74Auayk6=## literal 0 HcmV?d00001 diff --git a/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.edit/icons/full/ctool16/CreateAssignment_operand_IntegerSharedResource.gif b/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.edit/icons/full/ctool16/CreateAssignment_operand_IntegerSharedResource.gif new file mode 100644 index 0000000000000000000000000000000000000000..ab7abfd64fc4f4572ab39590a681268f186ca185 GIT binary patch literal 223 zcmZ?wbhEHb6krfwIKsg2|NsB{_xIb|$1^Z6ym+za=FOfnXVMNFaQOc}etx|D|NHh0 z4Gjkl9GEj_&ZT9Q4h{~xrmF$b)=A3iy5yHONzJPin^_|K@9%pc`uq7j5dC?+`1jpr zplJ}G_>+YZ#L@u~AUhdYV-ytnQX=it7-pV5JmtdHN&U@zlS({|Kb!Pi%buhurrs}= zoar2>F?;z5c9A}8}5D03R{UYJRqLb}R3lrSrZ?x3h&eb~oGCiLm Pr=}^ju_;?sk--`Oi`Zhz literal 0 HcmV?d00001 diff --git a/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.edit/icons/full/ctool16/CreateAssignment_operand_IntegerSharedVariable.gif b/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.edit/icons/full/ctool16/CreateAssignment_operand_IntegerSharedVariable.gif new file mode 100644 index 0000000000000000000000000000000000000000..34ee4512b98a8b61cd24bd2e7d99c4897f9d6cbe GIT binary patch literal 223 zcmZ?wbhEHb6krfwIKsg2|NsB{_xIb|$1^Z695`@b&YU?74GqVFd;b5ApC51k|Gqtt z3lYDxtkS{3Vb^puAlf=fd0m(M(k7{Sm0~kXg#Z104@7@Ip9i8p&lmr`+YB@f0u+C; zFoIY*AOd7318aB0|1TwVSE4p literal 0 HcmV?d00001 diff --git a/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.edit/icons/full/ctool16/CreateAssignment_operand_IntegerVariable.gif b/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.edit/icons/full/ctool16/CreateAssignment_operand_IntegerVariable.gif new file mode 100644 index 0000000000000000000000000000000000000000..a92469c4a6a37c3fdc13390d3567a4a724d01570 GIT binary patch literal 223 zcmZ?wbhEHb6krfwIKsg2|NsB{_xIb|$1^Z6G+k>7J{D}b#!{zE=l}os`SJGu@7p&t zG#of^V9uO5mzGsJI5_N@t_DO~Cn>M%l3&^+HLp@^W{L2>zwd$Q@8|PC^ym5F-*=mV zra^$>PZmZHO9w=N>||h#QBdehiL_H=n0fZ_lnYxY^*8rTD)BV_Y|?Wrdy=M@dcRb1 zrgNai?ByreMf$YnoI2@d#h{~h-`mAPAgE#Xi-Zr0PPQ{GOmLIG(Nc3eSL^i4^n8Y# Onx@porfgM325SHnC0~UA literal 0 HcmV?d00001 diff --git a/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.edit/icons/full/ctool16/CreateAssignment_operand_SharedResource.gif b/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.edit/icons/full/ctool16/CreateAssignment_operand_SharedResource.gif new file mode 100644 index 0000000000000000000000000000000000000000..f545273d2034e06789cf5951ffc2e0d1b811d391 GIT binary patch literal 223 zcmZ?wbhEHb6krfwIKsg2|NsB{_xIb|$1^Z6?Ai08r{`u`+8GCj1ONZW&yTnNf8V~L zq2a)R19RrgxwNd(!NFnIbTuH_I!Sq5m;BNusd<%RGfRa3{e2Hae?OlGqCd|U|GwJ{ zGz|h2f3h%wSUMmAWG4e_jDkX6N~E0{!_2dXr(D=NslT~zQi-SWXOo_5*^@NI)cd89 zGo1r9W-mX%F4Ctp=hR6zD+V34``#`V0znP4UnG23bh4dkVS=0djh33*xmu@Rrsp%{ P)HJ0wHf5_SGFSrug1cdC literal 0 HcmV?d00001 diff --git a/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.edit/icons/full/ctool16/CreateAssignment_operand_SharedVariable.gif b/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.edit/icons/full/ctool16/CreateAssignment_operand_SharedVariable.gif new file mode 100644 index 0000000000000000000000000000000000000000..f42688853256dee69540a7c79c5ab5a2fe2cffd2 GIT binary patch literal 223 zcmZ?wbhEHb6krfwIKsg2|NsB{_xIb|$1^Z695`@b&YU?74GqRK)BgXDpC51k|Gqtt z3lYDxtkS{3Vb^puAlf=fd0m(M(k7{Sm0~kXg#Z104@7@Ip9i8p&lmr`+YB@f0u+C; zFoIY*AOd7318aB0{}T4VF>^L literal 0 HcmV?d00001 diff --git a/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.edit/icons/full/ctool16/CreateAssignment_operand_SharedVariableAccess.gif b/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.edit/icons/full/ctool16/CreateAssignment_operand_SharedVariableAccess.gif new file mode 100644 index 0000000000000000000000000000000000000000..5a0697e635e720b7919e9f90498825d6c456916b GIT binary patch literal 223 zcmZ?wbhEHb6krfwIKsg2|NsB{_xIb|$1^Z6?0NB`=jP3{GiMwQ9Qgk~etx|D|NHh0 z4Gjkl9GEj_&ZT9Q4h{~xrmF$b)=A3iy5yHONzJPin^_|K@9%pc`uq7j5dC?+`1jpr zplJ}G_>+YZ#L@u~AUhdYV-ytnQX=it7-pV5JmtdHN&U@zlS({|Kb!Pi%buhurrs}= zoar2>F?;z5c9A}8}5D03R{UYJRqLb}R3lrSrZ?x3h&eb~oGCiLm Pr=}^ju_;?sk--`Oi5g+YZ#L@u~AUhdYV-ytnQX=it7-pV5JmtdHN&U@zlS({|Kb!Pi%buhurrs}= zoar2>F?;z5c9A}8}5D03R{UYJRqLb}R3lrSrZ?x3h&eb~oGCiLm Pr=}^ju_;?sk--`Oig{wo literal 0 HcmV?d00001 diff --git a/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.edit/icons/full/ctool16/CreateAssignment_operand_UnaryIntegerExpression.gif b/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.edit/icons/full/ctool16/CreateAssignment_operand_UnaryIntegerExpression.gif new file mode 100644 index 0000000000000000000000000000000000000000..7effa79008299f2926f0ddf07fb56a5b9fc209f7 GIT binary patch literal 223 zcmZ?wbhEHb6krfwIKsg2|NsB{_xIb|$1^Z6eEs_S=+QUx=ijfay!8Kn{QP+P|M%@1 z8X689I520Um4mOV*ROub(! zIny~%WA^eB>>_7J{D}b#!{zE=l}os`SJGu@7p&t zG#of^V9uO5mzGsJI5_N@t_DO~Cn>M%l3&^+HLp@^W{L2>zwd$Q@8|PC^ym5F-*=mV zra^$>PZmZHO9w=N>||h#QBdehiL_H=n0fZ_lnYxY^*8rTD)BV_Y|?Wrdy=M@dcRb1 zrgNai?ByreMf$YnoI2@d#h{~h-`mAPAgE#Xi-Zr0PPQ{GOmLIG(Nc3eSL^i4^n8Y# Onx@porfgM325SHnC0~UA literal 0 HcmV?d00001 diff --git a/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.edit/icons/full/ctool16/CreateBinaryExpression_left_BinaryBooleanExpression.gif b/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.edit/icons/full/ctool16/CreateBinaryExpression_left_BinaryBooleanExpression.gif new file mode 100644 index 0000000000000000000000000000000000000000..3494d53102c767513b568dfcf27e6b1cbfa7e8dd GIT binary patch literal 223 zcmZ?wbhEHb6krfwIKsg2|NsB{_xIb|$1^Z6G+kR0e5}WEO|ec}$f8PVq-_PfP=+E=Tzwb5! zO@jc%pDc_ZmJWyj*~!2fqoB~25^1N#F!Su;DHpa*>Tm9wRN`s;*`()M_9RU)^?s@3 zOy@w2*~?F`i}Y#DId#&_ia|&1zPF2oKv2W%7YQF0oor`XnBXRVqow9{uGZ<7>G=#f OHBG6FP1&l74AuZ%X<=dj literal 0 HcmV?d00001 diff --git a/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.edit/icons/full/ctool16/CreateBinaryExpression_left_BinaryIntegerExpression.gif b/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.edit/icons/full/ctool16/CreateBinaryExpression_left_BinaryIntegerExpression.gif new file mode 100644 index 0000000000000000000000000000000000000000..de6af47e2ec62aa673c0620d5143bb49b5863877 GIT binary patch literal 223 zcmZ?wbhEHb6krfwIKsg2|NsB{_xIb|$1^Z6Tzau*)6JflXVMxDIQ;(~KR@37|9$(0 zhK5UfUTo^QIWz4{gTsMc)75}z>m=oMUGhttq~=wM%`6fA_xC*z{r!9%i2giZ{QGV* z&@>28{K>)yV(EYgkev*yF$xNODUo(+3^UIjo^oO9r2gi6>ylsEBsH&6Y-Wk@zrXK+=$`>IQ;(~KR@37|9$(0 zhK5UfUTo^QIWz4{gTsMc)75}z>m=oMUGhttq~=wM%`6fA_xC*z{r!9%i2giZ{QGV* z&@>28{K>)yV(EYgkev*yF$xNODUo(+3^UIjo^oO9r2giC>8X>ZF?$gO1vLZx;)JpoZBm5VS1C5LMEKv|_dxXb^LZfp^L+8|yUjq; zAVBda3nPf710q0nGO)%dDDA99YNmER{Un)7% zIZ$Kv@)PVLeOhx)opiHe&{4bZ?P4Ji)G+%+!iPmC+nE+7xXIsWskxo2b^2v`K0{7T NQ)**VwyGk7H2`W!VQv5b literal 0 HcmV?d00001 diff --git a/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.edit/icons/full/ctool16/CreateBinaryExpression_left_IntegerModuleGet.gif b/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.edit/icons/full/ctool16/CreateBinaryExpression_left_IntegerModuleGet.gif new file mode 100644 index 0000000000000000000000000000000000000000..88ba66a57dc0896fb48f053cda1c15394579da22 GIT binary patch literal 223 zcmZ?wbhEHb6krfwIKsg2|NsB{_xIb|$1^Z6TwBw0tS5L)v1MDN&j0`M^W*LR-?wjQ zXt=cJ#ipK{Gt$f8PVq-_PfP=+E=Tzwb5! zO@jc%pDc_ZmJWyj*~!2fqoB~25^1N#F!Su;DHpa*>Tm9wRN`s;*`()M_9RU)^?s@3 zOy@w2*~?F`i}Y#DId#&_ia|&1zPF2oKv2W%7YQF0oor`XnBXRVqow9{uGZ<7>G=#f OHBG6FP1&l74AuZ($6;as literal 0 HcmV?d00001 diff --git a/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.edit/icons/full/ctool16/CreateBinaryExpression_left_IntegerSharedResource.gif b/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.edit/icons/full/ctool16/CreateBinaryExpression_left_IntegerSharedResource.gif new file mode 100644 index 0000000000000000000000000000000000000000..01d1dbbbfdb468ce4be840ea9ade06b86d71d94f GIT binary patch literal 223 zcmZ?wbhEHb6krfwIKsg2|NsB{_xIb|$1^Z6ym+za=FOfnXVMNFaQOc}etx|D|NHh0 z4Gov}yx7!pb7tC^28RQ?rmF$b)=A3iy5yHONzJPin^_|K@9%pc`uq7j5dC?+`1jpr zplJ}G_>+YZ#L@u~AUhdYV-ytnQX=it7-pV5JmtdHN&U@zlS({|Kb!Pi%buhurrs}= zoar2>F?;z5c9A}8}5D03R{UYJRqLb}R3lrSrZ?x3h&eb~oGCiLm Pr=}^ju_;?sk--`OJ`iKx literal 0 HcmV?d00001 diff --git a/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.edit/icons/full/ctool16/CreateBinaryExpression_left_IntegerSharedVariable.gif b/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.edit/icons/full/ctool16/CreateBinaryExpression_left_IntegerSharedVariable.gif new file mode 100644 index 0000000000000000000000000000000000000000..3145841c1a0be900efa5d34fa8ade58aacfc7b7d GIT binary patch literal 223 zcmZ?wbhEHb6krfwIKsg2|NsB{_xIb|$1^Z695`@b&YU?74GqVFd;b5ApC51k|Gqtt zduh*$O+7bfrk!bUIIwHF8W3%rq`a<6erc1`yh^c|CBpyyz6YYepU(r)pXZBz-)#n( z1_6pcSr|bq9S{MslYuoxL7^`t(oT(G=GntjE^M9D-`qE;#MAh*Nzb+HNt$Bn{Zh%9 z&Vd@Um!Du4>C>8X>ZF?$gO1vLZx;)JpoZBm57J{D}b#!{zE=l}os`SJGu@7p&t zG+f&AVpGq}nQ3Pl91iT7t_DO~Cn>M%l3&^+HLp@^W{L2>zwd$Q@8|PC^ym5F-*=mV zra^$>PZmZHO9w=N>||h#QBdehiL_H=n0fZ_lnYxY^*8rTD)BV_Y|?Wrdy=M@dcRb1 zrgNai?ByreMf$YnoI2@d#h{~h-`mAPAgE#Xi-Zr0PPQ{GOmLIG(Nc3eSL^i4^n8Y# Onx@porfgM325SJvPGFb- literal 0 HcmV?d00001 diff --git a/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.edit/icons/full/ctool16/CreateBinaryExpression_left_SharedResource.gif b/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.edit/icons/full/ctool16/CreateBinaryExpression_left_SharedResource.gif new file mode 100644 index 0000000000000000000000000000000000000000..99f2fe57165b1e26aece1358e1efdca5e2b78b8b GIT binary patch literal 223 zcmZ?wbhEHb6krfwIKsg2|NsB{_xIb|$1^Z6?Ai08r{`u`+8GCj1ONZW&yTnNf8V~L zq2bb=7n^!+&P+Sg;Ba8qbTuH_I!Sq5m;BNusd<%RGfRa3{e2Hae?OlGqCd|U|GwJ{ zGz|h2f3h%wSUMmAWG4e_jDkX6N~E0{!_2dXr(D=NslT~zQi-SWXOo_5*^@NI)cd89 zGo1r9W-mX%F4Ctp=hR6zD+V34``#`V0znP4UnG23bh4dkVS=0djh33*xmu@Rrsp%{ P)HJ0wHf5_SGFSruH1lGA literal 0 HcmV?d00001 diff --git a/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.edit/icons/full/ctool16/CreateBinaryExpression_left_SharedVariable.gif b/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.edit/icons/full/ctool16/CreateBinaryExpression_left_SharedVariable.gif new file mode 100644 index 0000000000000000000000000000000000000000..be1e90e848fff3d162db49f00afb3b33820a5632 GIT binary patch literal 223 zcmZ?wbhEHb6krfwIKsg2|NsB{_xIb|$1^Z695`@b&YU?74GqRK)BgXDpC51k|Gqtt zduh*$O+7bfrk!bUIIwHF8W3%rq`a<6erc1`yh^c|CBpyyz6YYepU(r)pXZBz-)#n( z1_6pcSr|bq9S{MslYuoxL7^`t(oT(G=GntjE^M9D-`qE;#MAh*Nzb+HNt$Bn{Zh%9 z&Vd@Um!Du4>C>8X>ZF?$gO1vLZx;)JpoZBm5+YZ#L@u~AUhdYV-ytnQX=it7-pV5JmtdHN&U@zlS({|Kb!Pi%buhurrs}= zoar2>F?;z5c9A}8}5D03R{UYJRqLb}R3lrSrZ?x3h&eb~oGCiLm Pr=}^ju_;?sk--`OJ5pob literal 0 HcmV?d00001 diff --git a/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.edit/icons/full/ctool16/CreateBinaryExpression_left_UnaryBooleanExpression.gif b/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.edit/icons/full/ctool16/CreateBinaryExpression_left_UnaryBooleanExpression.gif new file mode 100644 index 0000000000000000000000000000000000000000..535a30abfd7ef64ee0a1b7fce30a90d0a740e909 GIT binary patch literal 223 zcmZ?wbhEHb6krfwIKsg2|NsB{_xIb|$1^Z6yx8;NX3xztX=e^N9Qgk~etx|D|NHh0 z4Gov}yx7!pb7tC^28RQ?rmF$b)=A3iy5yHONzJPin^_|K@9%pc`uq7j5dC?+`1jpr zplJ}G_>+YZ#L@u~AUhdYV-ytnQX=it7-pV5JmtdHN&U@zlS({|Kb!Pi%buhurrs}= zoar2>F?;z5c9A}8}5D03R{UYJRqLb}R3lrSrZ?x3h&eb~oGCiLm Pr=}^ju_;?sk--`OJh5Zm literal 0 HcmV?d00001 diff --git a/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.edit/icons/full/ctool16/CreateBinaryExpression_left_UnaryIntegerExpression.gif b/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.edit/icons/full/ctool16/CreateBinaryExpression_left_UnaryIntegerExpression.gif new file mode 100644 index 0000000000000000000000000000000000000000..99a4283bbe78b326fcd1950e5f2d7eb03f6efb48 GIT binary patch literal 223 zcmZ?wbhEHb6krfwIKsg2|NsB{_xIb|$1^Z6eEs_S=+QUx=ijfay!8Kn{QP+P|M%@1 z8X7L`d9kVI=FGG+4Gsr(O;-b=t&^13b;&PnlA2d3HnT+d-{1E@^!M|5Ao}xs@$b9M zK+_;V@h1x-h@}G}Kz1^)#waNCr9|4PG0Z%Bc*=#Xllq(cCY5*^e>Um4mOV*ROub(! zIny~%WA^eB>>_7J{D}b#!{zE=l}os`SJGu@7p&t zG+f&AVpGq}nQ3Pl91iT7t_DO~Cn>M%l3&^+HLp@^W{L2>zwd$Q@8|PC^ym5F-*=mV zra^$>PZmZHO9w=N>||h#QBdehiL_H=n0fZ_lnYxY^*8rTD)BV_Y|?Wrdy=M@dcRb1 zrgNai?ByreMf$YnoI2@d#h{~h-`mAPAgE#Xi-Zr0PPQ{GOmLIG(Nc3eSL^i4^n8Y# Onx@porfgM325SJvPGFb- literal 0 HcmV?d00001 diff --git a/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.edit/icons/full/ctool16/CreateBinaryExpression_right_BinaryBooleanExpression.gif b/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.edit/icons/full/ctool16/CreateBinaryExpression_right_BinaryBooleanExpression.gif new file mode 100644 index 0000000000000000000000000000000000000000..3494d53102c767513b568dfcf27e6b1cbfa7e8dd GIT binary patch literal 223 zcmZ?wbhEHb6krfwIKsg2|NsB{_xIb|$1^Z6G+kR0e5}WEO|ec}$f8PVq-_PfP=+E=Tzwb5! zO@jc%pDc_ZmJWyj*~!2fqoB~25^1N#F!Su;DHpa*>Tm9wRN`s;*`()M_9RU)^?s@3 zOy@w2*~?F`i}Y#DId#&_ia|&1zPF2oKv2W%7YQF0oor`XnBXRVqow9{uGZ<7>G=#f OHBG6FP1&l74AuZ%X<=dj literal 0 HcmV?d00001 diff --git a/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.edit/icons/full/ctool16/CreateBinaryExpression_right_BinaryIntegerExpression.gif b/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.edit/icons/full/ctool16/CreateBinaryExpression_right_BinaryIntegerExpression.gif new file mode 100644 index 0000000000000000000000000000000000000000..de6af47e2ec62aa673c0620d5143bb49b5863877 GIT binary patch literal 223 zcmZ?wbhEHb6krfwIKsg2|NsB{_xIb|$1^Z6Tzau*)6JflXVMxDIQ;(~KR@37|9$(0 zhK5UfUTo^QIWz4{gTsMc)75}z>m=oMUGhttq~=wM%`6fA_xC*z{r!9%i2giZ{QGV* z&@>28{K>)yV(EYgkev*yF$xNODUo(+3^UIjo^oO9r2gi6>ylsEBsH&6Y-Wk@zrXK+=$`>IQ;(~KR@37|9$(0 zhK5UfUTo^QIWz4{gTsMc)75}z>m=oMUGhttq~=wM%`6fA_xC*z{r!9%i2giZ{QGV* z&@>28{K>)yV(EYgkev*yF$xNODUo(+3^UIjo^oO9r2giC>8X>ZF?$gO1vLZx;)JpoZBm5VS1C5LMEKv|_dxXb^LZfp^L+8|yUjq; zAVBda3nPf710q0nGO)%dDDA99YNmER{Un)7% zIZ$Kv@)PVLeOhx)opiHe&{4bZ?P4Ji)G+%+!iPmC+nE+7xXIsWskxo2b^2v`K0{7T NQ)**VwyGk7H2`W!VQv5b literal 0 HcmV?d00001 diff --git a/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.edit/icons/full/ctool16/CreateBinaryExpression_right_IntegerModuleGet.gif b/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.edit/icons/full/ctool16/CreateBinaryExpression_right_IntegerModuleGet.gif new file mode 100644 index 0000000000000000000000000000000000000000..88ba66a57dc0896fb48f053cda1c15394579da22 GIT binary patch literal 223 zcmZ?wbhEHb6krfwIKsg2|NsB{_xIb|$1^Z6TwBw0tS5L)v1MDN&j0`M^W*LR-?wjQ zXt=cJ#ipK{Gt$f8PVq-_PfP=+E=Tzwb5! zO@jc%pDc_ZmJWyj*~!2fqoB~25^1N#F!Su;DHpa*>Tm9wRN`s;*`()M_9RU)^?s@3 zOy@w2*~?F`i}Y#DId#&_ia|&1zPF2oKv2W%7YQF0oor`XnBXRVqow9{uGZ<7>G=#f OHBG6FP1&l74AuZ($6;as literal 0 HcmV?d00001 diff --git a/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.edit/icons/full/ctool16/CreateBinaryExpression_right_IntegerSharedResource.gif b/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.edit/icons/full/ctool16/CreateBinaryExpression_right_IntegerSharedResource.gif new file mode 100644 index 0000000000000000000000000000000000000000..01d1dbbbfdb468ce4be840ea9ade06b86d71d94f GIT binary patch literal 223 zcmZ?wbhEHb6krfwIKsg2|NsB{_xIb|$1^Z6ym+za=FOfnXVMNFaQOc}etx|D|NHh0 z4Gov}yx7!pb7tC^28RQ?rmF$b)=A3iy5yHONzJPin^_|K@9%pc`uq7j5dC?+`1jpr zplJ}G_>+YZ#L@u~AUhdYV-ytnQX=it7-pV5JmtdHN&U@zlS({|Kb!Pi%buhurrs}= zoar2>F?;z5c9A}8}5D03R{UYJRqLb}R3lrSrZ?x3h&eb~oGCiLm Pr=}^ju_;?sk--`OJ`iKx literal 0 HcmV?d00001 diff --git a/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.edit/icons/full/ctool16/CreateBinaryExpression_right_IntegerSharedVariable.gif b/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.edit/icons/full/ctool16/CreateBinaryExpression_right_IntegerSharedVariable.gif new file mode 100644 index 0000000000000000000000000000000000000000..3145841c1a0be900efa5d34fa8ade58aacfc7b7d GIT binary patch literal 223 zcmZ?wbhEHb6krfwIKsg2|NsB{_xIb|$1^Z695`@b&YU?74GqVFd;b5ApC51k|Gqtt zduh*$O+7bfrk!bUIIwHF8W3%rq`a<6erc1`yh^c|CBpyyz6YYepU(r)pXZBz-)#n( z1_6pcSr|bq9S{MslYuoxL7^`t(oT(G=GntjE^M9D-`qE;#MAh*Nzb+HNt$Bn{Zh%9 z&Vd@Um!Du4>C>8X>ZF?$gO1vLZx;)JpoZBm57J{D}b#!{zE=l}os`SJGu@7p&t zG+f&AVpGq}nQ3Pl91iT7t_DO~Cn>M%l3&^+HLp@^W{L2>zwd$Q@8|PC^ym5F-*=mV zra^$>PZmZHO9w=N>||h#QBdehiL_H=n0fZ_lnYxY^*8rTD)BV_Y|?Wrdy=M@dcRb1 zrgNai?ByreMf$YnoI2@d#h{~h-`mAPAgE#Xi-Zr0PPQ{GOmLIG(Nc3eSL^i4^n8Y# Onx@porfgM325SJvPGFb- literal 0 HcmV?d00001 diff --git a/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.edit/icons/full/ctool16/CreateBinaryExpression_right_SharedResource.gif b/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.edit/icons/full/ctool16/CreateBinaryExpression_right_SharedResource.gif new file mode 100644 index 0000000000000000000000000000000000000000..99f2fe57165b1e26aece1358e1efdca5e2b78b8b GIT binary patch literal 223 zcmZ?wbhEHb6krfwIKsg2|NsB{_xIb|$1^Z6?Ai08r{`u`+8GCj1ONZW&yTnNf8V~L zq2bb=7n^!+&P+Sg;Ba8qbTuH_I!Sq5m;BNusd<%RGfRa3{e2Hae?OlGqCd|U|GwJ{ zGz|h2f3h%wSUMmAWG4e_jDkX6N~E0{!_2dXr(D=NslT~zQi-SWXOo_5*^@NI)cd89 zGo1r9W-mX%F4Ctp=hR6zD+V34``#`V0znP4UnG23bh4dkVS=0djh33*xmu@Rrsp%{ P)HJ0wHf5_SGFSruH1lGA literal 0 HcmV?d00001 diff --git a/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.edit/icons/full/ctool16/CreateBinaryExpression_right_SharedVariable.gif b/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.edit/icons/full/ctool16/CreateBinaryExpression_right_SharedVariable.gif new file mode 100644 index 0000000000000000000000000000000000000000..be1e90e848fff3d162db49f00afb3b33820a5632 GIT binary patch literal 223 zcmZ?wbhEHb6krfwIKsg2|NsB{_xIb|$1^Z695`@b&YU?74GqRK)BgXDpC51k|Gqtt zduh*$O+7bfrk!bUIIwHF8W3%rq`a<6erc1`yh^c|CBpyyz6YYepU(r)pXZBz-)#n( z1_6pcSr|bq9S{MslYuoxL7^`t(oT(G=GntjE^M9D-`qE;#MAh*Nzb+HNt$Bn{Zh%9 z&Vd@Um!Du4>C>8X>ZF?$gO1vLZx;)JpoZBm5+YZ#L@u~AUhdYV-ytnQX=it7-pV5JmtdHN&U@zlS({|Kb!Pi%buhurrs}= zoar2>F?;z5c9A}8}5D03R{UYJRqLb}R3lrSrZ?x3h&eb~oGCiLm Pr=}^ju_;?sk--`OJ5pob literal 0 HcmV?d00001 diff --git a/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.edit/icons/full/ctool16/CreateBinaryExpression_right_UnaryBooleanExpression.gif b/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.edit/icons/full/ctool16/CreateBinaryExpression_right_UnaryBooleanExpression.gif new file mode 100644 index 0000000000000000000000000000000000000000..535a30abfd7ef64ee0a1b7fce30a90d0a740e909 GIT binary patch literal 223 zcmZ?wbhEHb6krfwIKsg2|NsB{_xIb|$1^Z6yx8;NX3xztX=e^N9Qgk~etx|D|NHh0 z4Gov}yx7!pb7tC^28RQ?rmF$b)=A3iy5yHONzJPin^_|K@9%pc`uq7j5dC?+`1jpr zplJ}G_>+YZ#L@u~AUhdYV-ytnQX=it7-pV5JmtdHN&U@zlS({|Kb!Pi%buhurrs}= zoar2>F?;z5c9A}8}5D03R{UYJRqLb}R3lrSrZ?x3h&eb~oGCiLm Pr=}^ju_;?sk--`OJh5Zm literal 0 HcmV?d00001 diff --git a/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.edit/icons/full/ctool16/CreateBinaryExpression_right_UnaryIntegerExpression.gif b/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.edit/icons/full/ctool16/CreateBinaryExpression_right_UnaryIntegerExpression.gif new file mode 100644 index 0000000000000000000000000000000000000000..99a4283bbe78b326fcd1950e5f2d7eb03f6efb48 GIT binary patch literal 223 zcmZ?wbhEHb6krfwIKsg2|NsB{_xIb|$1^Z6eEs_S=+QUx=ijfay!8Kn{QP+P|M%@1 z8X7L`d9kVI=FGG+4Gsr(O;-b=t&^13b;&PnlA2d3HnT+d-{1E@^!M|5Ao}xs@$b9M zK+_;V@h1x-h@}G}Kz1^)#waNCr9|4PG0Z%Bc*=#Xllq(cCY5*^e>Um4mOV*ROub(! zIny~%WA^eB>>_7J{D}b#!{zE=l}os`SJGu@7p&t zG+f&AVpGq}nQ3Pl91iT7t_DO~Cn>M%l3&^+HLp@^W{L2>zwd$Q@8|PC^ym5F-*=mV zra^$>PZmZHO9w=N>||h#QBdehiL_H=n0fZ_lnYxY^*8rTD)BV_Y|?Wrdy=M@dcRb1 zrgNai?ByreMf$YnoI2@d#h{~h-`mAPAgE#Xi-Zr0PPQ{GOmLIG(Nc3eSL^i4^n8Y# Onx@porfgM325SJvPGFb- literal 0 HcmV?d00001 diff --git a/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.edit/icons/full/ctool16/CreateBlock_abstractInstructionBlocks_AbstractInstructionBlock.gif b/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.edit/icons/full/ctool16/CreateBlock_abstractInstructionBlocks_AbstractInstructionBlock.gif new file mode 100644 index 0000000000000000000000000000000000000000..671932c7dd09ccf50e601510bae5594e6972860b GIT binary patch literal 223 zcmZ?wbhEHb6krfwIKsg2|NsB{_xIb|$1^Z6ym+za=FOfnXVMNFaQOc}etx|D|NHh0 z4GllO{=RYa&HnlKmsMWcHC+vewoX!B*CoHSNoroD*vt~)e}CTt(cjPKf#}ck#lP=1 z15JYf#h)yUAeIh@0NKgF8l#}lmlA2G#xV2j;VBokPU>&&n^fXy{Mn@ETJ|JOG4+0_ z=y|i7M*NoTA1J_f1{=5cCOaxm+AQo PIW1sf+YZ#L@u~AUhdYV-ytnQX=it7-pV5JmtdHN&U@zlS({|Kb!Pi%buhurrs}= zoar2>F?;z5c9A}8}5D03R{UYJRqLb}R3lrSrZ?x3h&eb~oGCiLm Pr=}^ju_;?sk--`OA!B3n literal 0 HcmV?d00001 diff --git a/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.edit/icons/full/ctool16/CreateBlock_instructionBlocks_InstructionBlock.gif b/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.edit/icons/full/ctool16/CreateBlock_instructionBlocks_InstructionBlock.gif new file mode 100644 index 0000000000000000000000000000000000000000..d056aafcb7f1cdac41f8102d728030d07868d183 GIT binary patch literal 223 zcmZ?wbhEHb6krfwIKsg2|NsB{_xIb|$1^Z6G+kR0e5}WEO|ec}1sf$ zwC0>T>1M^Cqjulh#X=ycVfKrJ4~tH=Gc8PTlfThYb30e-^vm>ohMbzF)W)W4RYeAC E06N%ayZ`_I literal 0 HcmV?d00001 diff --git a/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.edit/icons/full/ctool16/CreateBlock_instructions_Delay.gif b/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.edit/icons/full/ctool16/CreateBlock_instructions_Delay.gif new file mode 100644 index 0000000000000000000000000000000000000000..7926c34197a07b0edbcff171838e21d13464ccb5 GIT binary patch literal 223 zcmZ?wbhEHb6krfwIKsg2|NsB{_xIb|$1^Z6eEt37=$jk!@9(d?wCw-?`1$en|L@y3 zG&KD9`uoPwH~Z(`Usic(*K{=?+B!*jU6=gQCaHOqVlzvG|NVUrM1Mb@2ckdE7yrK7 z3^WY_6o0ZXf>=5r0%RuxYm9q!{Ee2H+qqh&U#90X Q$wC0>T>1M^Cqjulh#X=ycVfKrJ4~tH=Gc8PTlfThYb30e-^vm>ohMbzF M)W)W4RYeAC023Z#+5i9m literal 0 HcmV?d00001 diff --git a/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.edit/icons/full/ctool16/CreateBlock_instructions_ModuleAssignment.gif b/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.edit/icons/full/ctool16/CreateBlock_instructions_ModuleAssignment.gif new file mode 100644 index 0000000000000000000000000000000000000000..903b6817092c6cc788c173df412ccf33f4e4323e GIT binary patch literal 223 zcmZ?wbhEHb6krfwIKsg2|NsB{_xIb|$1^Z695`@b&YU?74GqD^j{W~1KR@37|9yKP z_s7@YH;%s9KmY!+%1gVZs{zs0Ny_WG_ja)m2x^%9BH_cLlkH3k6Wru)wA9?r)jIt$J)a?` OrYW_tDO**M!5RRS{bY~; literal 0 HcmV?d00001 diff --git a/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.edit/icons/full/ctool16/CreateBlock_instructions_Repeat.gif b/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.edit/icons/full/ctool16/CreateBlock_instructions_Repeat.gif new file mode 100644 index 0000000000000000000000000000000000000000..fc17ce1f3934e33bc78e9dc80b93d8e8a0038f3a GIT binary patch literal 223 zcmZ?wbhEHb6krfwIKsg2|NsB{_xIb|$1^Z695`@b&YU@wm6seG9RB~0pC51k|Gs@g zL&J}+zi%9Uvw!~mWtEq9O;-b=t&^13b;&PnlA2d3HnT+d-{1E@^!M|5Ao}xs@$b9M zK+_;V@h1x-h@}G}Kz1^)#waNCr9|4PG0Z%Bc*=#Xllq(cCY5*^e>Um4mOV*ROub(! zIny~%WA^eB>>_6>ylsEBsH&6Y-Wk@zrXK+=+YZ#L@u~AUhdYV-ytnQX=it7-pV5JmtdHN&U@zlS({|Kb!Pi%buhurrs}= zoar2>F?;z5c9A}8}5D03R{UYJRqLb}R3lrSrZ?x3h&eb~oGCiLm Pr=}^ju_;?sk--`OVlHGx literal 0 HcmV?d00001 diff --git a/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.edit/icons/full/ctool16/CreateBlock_instructions_Synchronization.gif b/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.edit/icons/full/ctool16/CreateBlock_instructions_Synchronization.gif new file mode 100644 index 0000000000000000000000000000000000000000..e853fb3919443c51dbfc378b6025622c7add64c0 GIT binary patch literal 223 zcmZ?wbhEHb6krfwIKsg2|NsB{_xIb|$1^Z695`@b&YU?84F?Um4mOV*ROub(! zIny~%WA^eB>>_3|53oeZoo3JQHGk#=efGtVBLa$)PF{^q_(C7#BgO?s|nPtp`q@0Uu> zbPm**z5E2bNT1f6QzzZ57*B$#$lN32yQ?T54|RYMp+Wp3jg| O)0EoSl&z}BU=095Z)6<+ literal 0 HcmV?d00001 diff --git a/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.edit/icons/full/ctool16/CreateBlock_instructions_VariableDeclaration.gif b/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.edit/icons/full/ctool16/CreateBlock_instructions_VariableDeclaration.gif new file mode 100644 index 0000000000000000000000000000000000000000..0915e4085d68de35f7be73632011c1bff4bbd772 GIT binary patch literal 223 zcmZ?wbhEHb6krfwIKsg2|NsB{_xIb|$1^Z695`?w?MzxjLxY2Z!~g&B^W*LR-?s;H ze|-IYC>8X>ZF?$gO1vLZx;)JpoZBm5JK( literal 0 HcmV?d00001 diff --git a/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.edit/icons/full/ctool16/CreateBlock_instructions_While.gif b/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.edit/icons/full/ctool16/CreateBlock_instructions_While.gif new file mode 100644 index 0000000000000000000000000000000000000000..e853fb3919443c51dbfc378b6025622c7add64c0 GIT binary patch literal 223 zcmZ?wbhEHb6krfwIKsg2|NsB{_xIb|$1^Z695`@b&YU?84F?Um4mOV*ROub(! zIny~%WA^eB>>_Um4mOV*ROub(! zIny~%WA^eB>>_=5r0%RuxYm9q!{Ee2H+qqh&U#90X QOV literal 0 HcmV?d00001 diff --git a/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.edit/icons/full/ctool16/CreateControl_block_InstructionBlock.gif b/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.edit/icons/full/ctool16/CreateControl_block_InstructionBlock.gif new file mode 100644 index 0000000000000000000000000000000000000000..0f9364baeebd68fcf2f2dec0086bb32bb281d282 GIT binary patch literal 223 zcmZ?wbhEHb6krfwIKsg2|NsB{_xIb|$1^Z6G+kR0e5}WEO|ec}1sf6>ylsEBsH&6Y-Wk@zrXK+=S<)vNI)qrU0B;|Eo@=Kef=2eQ#ED`?q_dO8({d^vX{ybm&`))JP zGzd`q$-)R?>3|53oeZoo3JQHGk#=efGtVBLa$)PF{^q_(C7#BgO?s|nPtp`q@0Uu> zbPm**z5E2bNT1f6QzzZ57*B$#$lN32yQ?T54|RYMp+Wp3jg| O)0EoSl&z}BU=09Q^JGQ< literal 0 HcmV?d00001 diff --git a/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.edit/icons/full/ctool16/CreateControl_instructions_Delay.gif b/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.edit/icons/full/ctool16/CreateControl_instructions_Delay.gif new file mode 100644 index 0000000000000000000000000000000000000000..794791ad9f0ed2e2b2ef655bbc8a37934f7733e3 GIT binary patch literal 223 zcmZ?wbhEHb6krfwIKsg2|NsB{_xIb|$1^Z6eEt37=$jk!@9(d?wCw-?`1$en|L@y3 zG&KDF`uok%H}~h?zf^f?*K{=?+B!*jU6=gQCaHOqVlzvG|NVUrM1Mb@2ckdE7yrK7 z3^WY_6o0ZXf>=5r0%RuxYm9q!{Ee2H+qqh&U#90X QOV literal 0 HcmV?d00001 diff --git a/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.edit/icons/full/ctool16/CreateControl_instructions_If.gif b/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.edit/icons/full/ctool16/CreateControl_instructions_If.gif new file mode 100644 index 0000000000000000000000000000000000000000..4833facbbbe2e81dbf0a255d06a51ec1c7580442 GIT binary patch literal 223 zcmZ?wbhEHb6krfwIKsg2|NsB{_xIb|$1^Z695`@b|NQ$64Gj(s4*&nh&yTnNf8QR+ z{r&a#o1<^;&%b}E^3ty9YCyDglJdGP`K3)#^D4z=mI(j*`yPn?em)OGf1WS?eYY8C z8U!f*WMKrcbU*~iP6pN(1%MmLCOy}(CuxeQ_e&*b zItOaZUVegIq)%(ksgrJ23_5D}yf*NMONcgbmWINNs1ULB`Ej71uwNAfG&u7S~ OX-aKu%2rimum%8A;AA}j literal 0 HcmV?d00001 diff --git a/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.edit/icons/full/ctool16/CreateControl_instructions_ModuleAssignment.gif b/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.edit/icons/full/ctool16/CreateControl_instructions_ModuleAssignment.gif new file mode 100644 index 0000000000000000000000000000000000000000..ebd55acfa4101d64501bc2c3107cb51676448dfa GIT binary patch literal 223 zcmZ?wbhEHb6krfwIKsg2|NsB{_xIb|$1^Z695`@b&YU?74GqD^j{W~1KR@37|9yKP z_xIP|Z;rmXKmY!v%1gVZs{zs0Ny_WG_ja)m2x^%9BH_cLlkH3k6Wru)wA9?r)jIt$J)a?` OrYW_tDO**M!5RS8zhv_O literal 0 HcmV?d00001 diff --git a/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.edit/icons/full/ctool16/CreateControl_instructions_Repeat.gif b/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.edit/icons/full/ctool16/CreateControl_instructions_Repeat.gif new file mode 100644 index 0000000000000000000000000000000000000000..82fdfc3e72cb6604436db1ce0ede2a19423ffbfb GIT binary patch literal 223 zcmZ?wbhEHb6krfwIKsg2|NsB{_xIb|$1^Z695`@b&YU@wm6seG9RB~0pC51k|Gs@g zL&NW{zuz2vbASH*OO=;)O;-b=t&^13b;&PnlA2d3HnT+d-{1E@^!M|5Ao}xs@$b9M zK+_;V@h1x-h@}G}Kz1^)#waNCr9|4PG0Z%Bc*=#Xllq(cCY5*^e>Um4mOV*ROub(! zIny~%WA^eB>>_6>ylsEBsH&6Y-Wk@zrXK+=S<)vNI)qrU0B;|Eo@=Kef=2eQ#ED`?q_dO8({d^vX{ybm&`))JP zGzd`q$-)R?>3|53oeZoo3JQHGk#=efGtVBLa$)PF{^q_(C7#BgO?s|nPtp`q@0Uu> zbPm**z5E2bNT1f6QzzZ57*B$#$lN32yQ?T54|RYMp+Wp3jg| O)0EoSl&z}BU=09+F=T)M literal 0 HcmV?d00001 diff --git a/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.edit/icons/full/ctool16/CreateControl_instructions_VariableDeclaration.gif b/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.edit/icons/full/ctool16/CreateControl_instructions_VariableDeclaration.gif new file mode 100644 index 0000000000000000000000000000000000000000..07f63f9f8435b853b42b1410caf0930fba2c4abc GIT binary patch literal 223 zcmZ?wbhEHb6krfwIKsg2|NsB{_xIb|$1^Z695`?w?MzxjLxY2Z!~g&B^W*LR-?s;H ze}Db`=IERI^Y34(ytHe&8W3%rq`a<6erc1`yh^c|CBpyyz6YYepU(r)pXZBz-)#n( z1_6pcSr|bq9S{MslYuoxL7^`t(oT(G=GntjE^M9D-`qE;#MAh*Nzb+HNt$Bn{Zh%9 z&Vd@Um!Du4>C>8X>ZF?$gO1vLZx;)JpoZBm5Um4mOV*ROub(! zIny~%WA^eB>>_3$Vw6p^b4*&nh&yTnNf8V~L zp`q#8n&4wSmTQW2+9G#NR|BH0la$wW$uDh^npY_{vqbpc-}gZD_w#um`tyA8@4L-F z(;z_cCkrEpr2`^Bb~3QWC@A!$MB1q_%shK|%7v|y`kVVEm3SI|HtD&RJxNncyYLM_VN?#B7ItOPMvhKV$e~$@9knC5Y#aHMZ$+gC)=48Cb-GpXsNlKt9ANidOkx= OO;c)PQ?{xigEasM(O|Ox literal 0 HcmV?d00001 diff --git a/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.edit/icons/full/ctool16/CreateDigitalPin_module_Fan.gif b/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.edit/icons/full/ctool16/CreateDigitalPin_module_Fan.gif new file mode 100644 index 0000000000000000000000000000000000000000..5c173f1248b32445fff26444972020074953f952 GIT binary patch literal 223 zcmZ?wbhEHb6krfwIKsg2|NsB{_xIb|$1^Z695`@b&YU?74GqVFga7}JpC51k|Gqtt z+jMPB@Ub4tHN`q@k-Mg=0nye;%Imu1mo`bws}!4ABK+^~dm#Gz`8*K)dA|7f-DaR^ z5TN*zg%QNk0TCcO8CYW!6#7yk?bH}%o;^I}!q!Rs&3%(fJdHn_^jyoHq$#G}FO{6> z9H=pS`3ZKBKCL;YPP$n!=&0TIcCio$YMA{Z;lrYn?Mw?3+~jYx)ZEV1I{h*|pCPBF NDYdaFTUC+48UW{{V2S_$ literal 0 HcmV?d00001 diff --git a/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.edit/icons/full/ctool16/CreateDigitalPin_module_InfraRedSensor.gif b/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.edit/icons/full/ctool16/CreateDigitalPin_module_InfraRedSensor.gif new file mode 100644 index 0000000000000000000000000000000000000000..7e487021af0d3dd87f258c62e08efcfd91ee8858 GIT binary patch literal 223 zcmZ?wbhEHb6krfwIKsg2|NsB{_xIb|$1^Z695`@b|NQ$64Gj(s4*&nh&yTnNf8QR+ zZMwE5_*jqSnqr-{$X(ObfN1L^<#k>1OPi$TRf^3l5&rl0JrMo)AYJYW3#ZZps{ z2vGdV!U$sNfC!MC46HE<3VkV&c4`bW&mNv~Ve6#+=DtZKp2nX|dah+p(iBtgmrBlb z4%C>v`~1OPi$TRf^3l5&rl0JrMo)AYJYW3#ZZps{ z2vGdV!U$sNfC!MC46HE<3VkV&c4`bW&mNv~Ve6#+=DtZKp2nX|dah+p(iBtgmrBlb z4%C>v`~ z9H=pS`3ZKBKCL;YPP$n!=&0TIcCio$YMA{Z;lrYn?Mw?3+~jYx)ZEV1I{h*|pCPBF NDYdaFTUC+48UVazU{C-6 literal 0 HcmV?d00001 diff --git a/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.edit/icons/full/ctool16/CreateDigitalPin_module_PushButton.gif b/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.edit/icons/full/ctool16/CreateDigitalPin_module_PushButton.gif new file mode 100644 index 0000000000000000000000000000000000000000..20c81ccc068a719c82456f0dcdb51053d1e93fc6 GIT binary patch literal 223 zcmZ?wbhEHb6krfwIKsg2|NsB{_xIb|$1^Z6Tx(i$EVyTlWpSHM3|53oeZoo3JQHGk#=efGtVBLa$)PF{^q_(C7#BgO?s|nPtp`q@0Uu> zbPm**z5E2bNT1f6QzzZ57*B$#$lN32yQ?T54|RYMp+Wp3jg| O)0EoSl&z}BU=08<9bc9J literal 0 HcmV?d00001 diff --git a/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.edit/icons/full/ctool16/CreateHardware_connectors_Connector.gif b/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.edit/icons/full/ctool16/CreateHardware_connectors_Connector.gif new file mode 100644 index 0000000000000000000000000000000000000000..0cf5f67ddb4615b64cf03dc297119f242688f2b9 GIT binary patch literal 223 zcmZ?wbhEHb6krfwIKsg2|NsB{_xIb|$1^Z695`@b&YU?74GqRKXa4^mKR@37|9yKP z_u93lW5Y&-2B!EQ}zQ4u}BR$-o+;pwO2RX{W|8^X%a%7q(97Z|<8^;%WTZq~}`pBuz2(eyQY4 z=Rl3w%TKV2^l8mGb<)j>K}YSrw~K{9P{ZsO2_F`nY-d`S;3j{grRH|7*6Ek&`3yNV NO{tAd*{X^R)&OYzVNC!4 literal 0 HcmV?d00001 diff --git a/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.edit/icons/full/ctool16/CreateIf_elseBlock_Block.gif b/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.edit/icons/full/ctool16/CreateIf_elseBlock_Block.gif new file mode 100644 index 0000000000000000000000000000000000000000..27dbe98817d277835298f5a9a58814b152f1aa84 GIT binary patch literal 223 zcmZ?wbhEHb6krfwIKsg2|NsB{_xIb|$1^Z6{P_C&#?d$X=igsedFlWE`1$en|L@y3 zG&CGIZ~!O>WH>lD?3%6yL|Z2*uj`Uu+9WlvQfy|4@V~$Bf#~n&^FZ|H`QqPqn}Mc5 zfZ|UUMi5H}M1bsMV2x2w=u3&TQ)8HU_VAPoTPO85_f0DCH2!STb1i$4rkHxaRC1$wC0>T>1M^Cqjulh#X=ycVfKrJ4~tH=Gc8PTlfThYb30e-^vm>ohMbzF M)W)W4RYeAC09a0A+5i9m literal 0 HcmV?d00001 diff --git a/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.edit/icons/full/ctool16/CreateIf_elseBlock_InstructionBlock.gif b/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.edit/icons/full/ctool16/CreateIf_elseBlock_InstructionBlock.gif new file mode 100644 index 0000000000000000000000000000000000000000..5a66bf41807538a8e5a276e80060e86ed4089def GIT binary patch literal 223 zcmZ?wbhEHb6krfwIKsg2|NsB{_xIb|$1^Z6G+kR0e5}WEO|ec}1OPi$TRf^3l5&rl0JrMo)AYJYW3#ZZps{ z2vGdV!U$sNfC!MC46HE<3VkV&c4`bW&mNv~Ve6#+=DtZKp2nX|dah+p(iBtgmrBlb z4%C>v`~1sf1OPi$TRf^3l5&rl0JrMo)AYJYW3#ZZps{ z2vGdV!U$sNfC!MC46HE<3VkV&c4`bW&mNv~Ve6#+=DtZKp2nX|dah+p(iBtgmrBlb z4%C>v`~VS1C5LMEKv|_dxXb^LZfp^L+8|yUjq; zAVBda3nPf710q0nGO)%dDDA99YNmER{Un)7% zIZ$Kv@)PVLeOhx)opiHe&{4bZ?P4Ji)G+%+!iPmC+nE+7xXIsWskxo2b^2v`K0{7T NQ)**VwyGk7H2^z7VEq69 literal 0 HcmV?d00001 diff --git a/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.edit/icons/full/ctool16/CreateInstructionBlock_instructions_Repeat.gif b/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.edit/icons/full/ctool16/CreateInstructionBlock_instructions_Repeat.gif new file mode 100644 index 0000000000000000000000000000000000000000..ea45c99e9d4f5cf619c501599cc8d1c605db696c GIT binary patch literal 223 zcmZ?wbhEHb6krfwIKsg2|NsB{_xIb|$1^Z695`@b&YU@wm6seG9RB~0pC51k|Gs@g zLqpTGHNnSvEY}q4v_M%l3&^+HLp@^W{L2>zwd$Q@8|PC^ym5F-*=mV zra^$>PZmZHO9w=N>||h#QBdehiL_H=n0fZ_lnYxY^*8rTD)BV_Y|?Wrdy=M@dcRb1 zrgNai?ByreMf$YnoI2@d#h{~h-`mAPAgE#Xi-Zr0PPQ{GOmLIG(Nc3eSL^i4^n8Y# Onx@porfgM325SJDL|`HS literal 0 HcmV?d00001 diff --git a/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.edit/icons/full/ctool16/CreateInstructionBlock_instructions_VariableAssignment.gif b/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.edit/icons/full/ctool16/CreateInstructionBlock_instructions_VariableAssignment.gif new file mode 100644 index 0000000000000000000000000000000000000000..5c173f1248b32445fff26444972020074953f952 GIT binary patch literal 223 zcmZ?wbhEHb6krfwIKsg2|NsB{_xIb|$1^Z695`@b&YU?74GqVFga7}JpC51k|Gqtt z+jMPB@Ub4tHN`q@k-Mg=0nye;%Imu1mo`bws}!4ABK+^~dm#Gz`8*K)dA|7f-DaR^ z5TN*zg%QNk0TCcO8CYW!6#7yk?bH}%o;^I}!q!Rs&3%(fJdHn_^jyoHq$#G}FO{6> z9H=pS`3ZKBKCL;YPP$n!=&0TIcCio$YMA{Z;lrYn?Mw?3+~jYx)ZEV1I{h*|pCPBF NDYdaFTUC+48UW{{V2S_$ literal 0 HcmV?d00001 diff --git a/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.edit/icons/full/ctool16/CreateInstructionBlock_instructions_VariableDeclaration.gif b/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.edit/icons/full/ctool16/CreateInstructionBlock_instructions_VariableDeclaration.gif new file mode 100644 index 0000000000000000000000000000000000000000..b03b80a73ef21a13b9dd2f653ffda169f034b9aa GIT binary patch literal 223 zcmZ?wbhEHb6krfwIKsg2|NsB{_xIb|$1^Z695`?w?MzxjLxY2Z!~g&B^W*LR-?s;H zo35=1KGtKordX#fa@TYB0{}Z|U!nj2 literal 0 HcmV?d00001 diff --git a/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.edit/icons/full/ctool16/CreateInstructionBlock_instructions_While.gif b/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.edit/icons/full/ctool16/CreateInstructionBlock_instructions_While.gif new file mode 100644 index 0000000000000000000000000000000000000000..1010ed82e50374c77a8a0d88ea93f182fd9dfbb4 GIT binary patch literal 223 zcmZ?wbhEHb6krfwIKsg2|NsB{_xIb|$1^Z695`@b&YU?84F?M%l3&^+HLp@^W{L2>zwd$Q@8|PC^ym5F-*=mV zra^$>PZmZHO9w=N>||h#QBdehiL_H=n0fZ_lnYxY^*8rTD)BV_Y|?Wrdy=M@dcRb1 zrgNai?ByreMf$YnoI2@d#h{~h-`mAPAgE#Xi-Zr0PPQ{GOmLIG(Nc3eSL^i4^n8Y# Onx@porfgM325SIlVPD<= literal 0 HcmV?d00001 diff --git a/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.edit/icons/full/ctool16/CreatePlatform_analogPins_AnalogPin.gif b/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.edit/icons/full/ctool16/CreatePlatform_analogPins_AnalogPin.gif new file mode 100644 index 0000000000000000000000000000000000000000..36e9ea8424e85a4ff6c75b9e8cd040e24632ebbc GIT binary patch literal 223 zcmZ?wbhEHb6krfwIKsg2|NsB{_xIb|$1^Z695`@b&YU@w%Pu)MIQ;(~KR@37|9$(0 zhK3)%zutIrbpQSN%Pv*!nyv;!TPG>6>ylsEBsH&6Y-Wk@zrXK+=y0-@_urqt>{8{f>1sf+YZ#L@u~AUhdYV-ytnQX=it7-pV5JmtdHN&U@zlS({|Kb!Pi%buhurrs}= zoar2>F?;z5c9A}8}5D03R{UYJRqLb}R3lrSrZ?x3h&eb~oGCiLm Pr=}^ju_;?sk--`O=C5R_ literal 0 HcmV?d00001 diff --git a/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.edit/icons/full/ctool16/CreateProject_boards_ArduinoBoard.gif b/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.edit/icons/full/ctool16/CreateProject_boards_ArduinoBoard.gif new file mode 100644 index 0000000000000000000000000000000000000000..b822374d0aaad1062bd5ab8dbc618666445f6650 GIT binary patch literal 223 zcmZ?wbhEHb6krfwIKsg2|NsB{_xIb|$1^Z6{Qmv*&6}h5@6W$+YZ#L@u~AUhdYV-ytnQX=it7-pV5JmtdHN&U@zlS({|Kb!Pi%buhurrs}= zoar2>F?;z5c9A}8}5D03R{UYJRqLb}R3lrSrZ?x3h&eb~oGCiLm Pr=}^ju_;?sk--`O=C5R_ literal 0 HcmV?d00001 diff --git a/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.edit/icons/full/ctool16/CreateProject_hardware_Hardware.gif b/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.edit/icons/full/ctool16/CreateProject_hardware_Hardware.gif new file mode 100644 index 0000000000000000000000000000000000000000..4b44067c2900a19ee37ba132975af937d0b4bd41 GIT binary patch literal 223 zcmZ?wbhEHb6krfwIKsg2|NsB{_xIb|$1^Z6T)WnE>{#%cHI{8{I{*L2&yTnNf8V~L zp<&OS7d<^U)6&j3I2_nDT@8q~PEuaiCBL*uYF?$-%o5>$f8PVq-_PfP=+E=Tzwb5! zO@jc%pDc_ZmJWyj*~!2fqoB~25^1N#F!Su;DHpa*>Tm9wRN`s;*`()M_9RU)^?s@3 zOy@w2*~?F`i}Y#DId#&_ia|&1zPF2oKv2W%7YQF0oor`XnBXRVqow9{uGZ<7>G=#f OHBG6FP1&l74AuaJl3{%S literal 0 HcmV?d00001 diff --git a/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.edit/icons/full/ctool16/CreateProject_links_Link.gif b/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.edit/icons/full/ctool16/CreateProject_links_Link.gif new file mode 100644 index 0000000000000000000000000000000000000000..1061b8f488df1d7be83556d44927c4e36e76a3ad GIT binary patch literal 223 zcmZ?wbhEHb6krfwIKsg2|NsB{_xIb|$1^Z6{P_C&#?d$X=igsedFlWE`1$en|L@y3 zG&Jnl^P;EcW?I@A2ZsZ@rmF$b)=A3iy5yHONzJPin^_|K@9%pc`uq7j5dC?+`1jpr zplJ}G_>+YZ#L@u~AUhdYV-ytnQX=it7-pV5JmtdHN&U@zlS({|Kb!Pi%buhurrs}= zoar2>F?;z5c9A}8}5D03R{UYJRqLb}R3lrSrZ?x3h&eb~oGCiLm Pr=}^ju_;?sk--`Oo8M$c literal 0 HcmV?d00001 diff --git a/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.edit/icons/full/ctool16/CreateProject_modules_Actuator.gif b/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.edit/icons/full/ctool16/CreateProject_modules_Actuator.gif new file mode 100644 index 0000000000000000000000000000000000000000..41eefa22134c4e66ad6abc15118aef44a6d81a93 GIT binary patch literal 223 zcmZ?wbhEHb6krfwIKsg2|NsB{_xIb|$1^Z6eEt37=$jk!@9(d?wCw-?`1$en|L@y3 zG&Jnl^P;EcW?I@A2ZsZ@rmF$b)=A3iy5yHONzJPin^_|K@9%pc`uq7j5dC?+`1jpr zplJ}G_>+YZ#L@u~AUhdYV-ytnQX=it7-pV5JmtdHN&U@zlS({|Kb!Pi%buhurrs}= zoar2>F?;z5c9A}8}5D03R{UYJRqLb}R3lrSrZ?x3h&eb~oGCiLm Pr=}^ju_;?sk--`Oo8M$c literal 0 HcmV?d00001 diff --git a/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.edit/icons/full/ctool16/CreateProject_modules_AmbientLightSensor.gif b/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.edit/icons/full/ctool16/CreateProject_modules_AmbientLightSensor.gif new file mode 100644 index 0000000000000000000000000000000000000000..a39b79615d5e86d335cfbebd1d6d35a21e195317 GIT binary patch literal 223 zcmZ?wbhEHb6krfwIKsg2|NsB{_xIb|$1^Z695`@b&YU?18XSP&|Nr>;@%I1k+cz{c z?Ai08r{`u`+8GCj1G}cH0nye;%Imu1mo`bws}!4ABK+^~dm#Gz`8*K)dA|7f-DaR^ z5TN*zg%QNk0TCcO8CYW!6#7yk?bH}%o;^I}!q!Rs&3%(fJdHn_^jyoHq$#G}FO{6> z9H=pS`3ZKBKCL;YPP$n!=&0TIcCio$YMA{Z;lrYn?Mw?3+~jYx)ZEV1I{h*|pCPBF NDYdaFTUC+48UQ6TVEX_7 literal 0 HcmV?d00001 diff --git a/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.edit/icons/full/ctool16/CreateProject_modules_Buzzer.gif b/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.edit/icons/full/ctool16/CreateProject_modules_Buzzer.gif new file mode 100644 index 0000000000000000000000000000000000000000..13449f59b0b547a90a583f77d29f623c8cf196c6 GIT binary patch literal 223 zcmZ?wbhEHb6krfwIKsg2|NsB{_xIb|$1^Z6yx6nnW>3$Vw6p^b4*&nh&yTnNf8V~L zp<&OS7d<^U)6&j3I2_nDT@8q~PEuaiCBL*uYF?$-%o5>$f8PVq-_PfP=+E=Tzwb5! zO@jc%pDc_ZmJWyj*~!2fqoB~25^1N#F!Su;DHpa*>Tm9wRN`s;*`()M_9RU)^?s@3 zOy@w2*~?F`i}Y#DId#&_ia|&1zPF2oKv2W%7YQF0oor`XnBXRVqow9{uGZ<7>G=#f OHBG6FP1&l74Aua|lwr^S literal 0 HcmV?d00001 diff --git a/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.edit/icons/full/ctool16/CreateProject_modules_Fan.gif b/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.edit/icons/full/ctool16/CreateProject_modules_Fan.gif new file mode 100644 index 0000000000000000000000000000000000000000..7d4073e351f2f665217095381e951744e14f0bca GIT binary patch literal 223 zcmZ?wbhEHb6krfwIKsg2|NsB{_xIb|$1^Z695`@b&YU?74GqVFga7}JpC51k|Gqtt zyJydfo}Qa&X=fZ94(yt)21HvYDX;62U)m%!uTpGgiSWO_?}6y==kq}H=lSB_cbkEx zL4e{<7Df3tK1kH}_2{@ihKy(sM0)lBSq?zf^Lj zbD+lTg4sA2Ytgb#~OwlghEaFf5$Qgb_3>-5X?e1@Ew Nrqsr!Y*j@DYXGBmVW$89 literal 0 HcmV?d00001 diff --git a/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.edit/icons/full/ctool16/CreateProject_modules_InfraRedSensor.gif b/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.edit/icons/full/ctool16/CreateProject_modules_InfraRedSensor.gif new file mode 100644 index 0000000000000000000000000000000000000000..6fa04d1a02e3e1642fec35ca72af634cc213fd0b GIT binary patch literal 223 zcmZ?wbhEHb6krfwIKsg2|NsB{_xIb|$1^Z695`@b|NQ$64Gj(s4*&nh&yTnNf8QR+ z-LvOKPtVP?v@;G42X;+Y1EQ^yl-G61FKv>VS1C5LMEKv|_dxXb^LZfp^L+8|yUjq; zAVBda3nPf710q0nGO)%dDDA99YNmER{Un)7% zIZ$Kv@)PVLeOhx)opiHe&{4bZ?P4Ji)G+%+!iPmC+nE+7xXIsWskxo2b^2v`K0{7T NQ)**VwyGk7H2`!aVPpUR literal 0 HcmV?d00001 diff --git a/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.edit/icons/full/ctool16/CreateProject_modules_LED.gif b/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.edit/icons/full/ctool16/CreateProject_modules_LED.gif new file mode 100644 index 0000000000000000000000000000000000000000..a2c85842d0e426ec83ed5236c0a4ebe7dade270a GIT binary patch literal 223 zcmZ?wbhEHb6krfwIKsg2|NsB{_xIb|$1^Z695`@b|NZ$54Gj(s4*&nh&yTnNf8QR+ z-LvOKPtVP?v@;G42X;+Y1EQ^yl-G61FKv>VS1C5LMEKv|_dxXb^LZfp^L+8|yUjq; zAVBda3nPf710q0nGO)%dDDA99YNmER{Un)7% zIZ$Kv@)PVLeOhx)opiHe&{4bZ?P4Ji)G+%+!iPmC+nE+7xXIsWskxo2b^2v`K0{7T NQ)**VwyGk7H2`#FVPpUR literal 0 HcmV?d00001 diff --git a/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.edit/icons/full/ctool16/CreateProject_modules_MicroServo.gif b/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.edit/icons/full/ctool16/CreateProject_modules_MicroServo.gif new file mode 100644 index 0000000000000000000000000000000000000000..80dd10a5f60888e16f4d85a35e8717321ccb9e38 GIT binary patch literal 223 zcmZ?wbhEHb6krfwIKsg2|NsB{_xIb|$1^Z695`@b&YU?74GqRK)BgXDpC51k|Gqtt zyJydfo}Qa&X=fZ94(yt)21HvYDX;62U)m%!uTpGgiSWO_?}6y==kq}H=lSB_cbkEx zL4e{<7Df3tK1kH}_2{@ihKy(sM0)lBSq?zf^Lj zbD+lTg4sA2Ytgb#~OwlghEaFf5$Qgb_3>-5X?e1@Ew Nrqsr!Y*j@DYXEpSVQl~a literal 0 HcmV?d00001 diff --git a/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.edit/icons/full/ctool16/CreateProject_modules_MusicPlayer.gif b/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.edit/icons/full/ctool16/CreateProject_modules_MusicPlayer.gif new file mode 100644 index 0000000000000000000000000000000000000000..6fa04d1a02e3e1642fec35ca72af634cc213fd0b GIT binary patch literal 223 zcmZ?wbhEHb6krfwIKsg2|NsB{_xIb|$1^Z695`@b|NQ$64Gj(s4*&nh&yTnNf8QR+ z-LvOKPtVP?v@;G42X;+Y1EQ^yl-G61FKv>VS1C5LMEKv|_dxXb^LZfp^L+8|yUjq; zAVBda3nPf710q0nGO)%dDDA99YNmER{Un)7% zIZ$Kv@)PVLeOhx)opiHe&{4bZ?P4Ji)G+%+!iPmC+nE+7xXIsWskxo2b^2v`K0{7T NQ)**VwyGk7H2`!aVPpUR literal 0 HcmV?d00001 diff --git a/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.edit/icons/full/ctool16/CreateProject_modules_PushButton.gif b/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.edit/icons/full/ctool16/CreateProject_modules_PushButton.gif new file mode 100644 index 0000000000000000000000000000000000000000..3fa9c54bf01917d3cea4e0e8cc53da4b8d527d47 GIT binary patch literal 223 zcmZ?wbhEHb6krfwIKsg2|NsB{_xIb|$1^Z6Tx(i$EVyTlWpSHMYLM_VN?#B7ItOPMvhKV$e~$@9knC5Y#aHMZ$+gC)=48Cb-GpXsNlKt9ANidOkx= OO;c)PQ?{xigEau`;9#== literal 0 HcmV?d00001 diff --git a/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.edit/icons/full/ctool16/CreateProject_modules_RotationSensor.gif b/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.edit/icons/full/ctool16/CreateProject_modules_RotationSensor.gif new file mode 100644 index 0000000000000000000000000000000000000000..72306dc1e084fe5f95a3b581a1d4ebb6fbce7818 GIT binary patch literal 223 zcmZ?wbhEHb6krfwIKsg2|NsB{_xIb|$1^Z695`@b&YU@ymQ^}9IQ;(~KR@37|9$(0 zhK4=5r z0%RuxYm9q!{Ee2H+qqh&U#90XYLM_VN?#B7ItOPMvhKV$e~$@9knC5Y#aHMZ$+gC)=48Cb-GpXsNlKt9ANidOkx= OO;c)PQ?{xigEau{s$jDK literal 0 HcmV?d00001 diff --git a/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.edit/icons/full/ctool16/CreateProject_platform_Platform.gif b/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.edit/icons/full/ctool16/CreateProject_platform_Platform.gif new file mode 100644 index 0000000000000000000000000000000000000000..90f4828ff162190fa4f4802ceb631f2344ae78e1 GIT binary patch literal 223 zcmZ?wbhEHb6krfwIKsg2|NsB{_xIb|$1^Z6{P_L##+#%2@6TU$sq+8-`1$en|L@y3 zG&Jnl^P;EcW?I@A2ZsZ@rmF$b)=A3iy5yHONzJPin^_|K@9%pc`uq7j5dC?+`1jpr zplJ}G_>+YZ#L@u~AUhdYV-ytnQX=it7-pV5JmtdHN&U@zlS({|Kb!Pi%buhurrs}= zoar2>F?;z5c9A}8}5D03R{UYJRqLb}R3lrSrZ?x3h&eb~oGCiLm Pr=}^ju_;?sk--`OoTX$& literal 0 HcmV?d00001 diff --git a/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.edit/icons/full/ctool16/CreateProject_sketch_Sketch.gif b/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.edit/icons/full/ctool16/CreateProject_sketch_Sketch.gif new file mode 100644 index 0000000000000000000000000000000000000000..3548c7d0d72d38d7dbe96f71b469e39346199365 GIT binary patch literal 223 zcmZ?wbhEHb6krfwIKsg2|NsB{_xIb|$1^Z695`@b&YU@w%Pu)MIQ;(~KR@37|9$(0 zhK43tK1kH}_2{@ihKy(sM0)lBSq?zf^Lj zbD+lTg4sA2Ytgb#~OwlghEaFf5$Qgb_3>-5X?e1@Ew Nrqsr!Y*j@DYXHoqVc-A& literal 0 HcmV?d00001 diff --git a/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.edit/icons/full/ctool16/CreateSharedResource_variable_IntegerVariable.gif b/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.edit/icons/full/ctool16/CreateSharedResource_variable_IntegerVariable.gif new file mode 100644 index 0000000000000000000000000000000000000000..bdfb88b8d53ff5617794ef9ebf642169ce00ab65 GIT binary patch literal 223 zcmZ?wbhEHb6krfwIKsg2|NsB{_xIb|$1^Z6G+k>7J{D}b#!{zE=l}os`SJGu@7p&t zH0;^)qNnF(TG|;0hXcE&s{zs0Ny_WG_ja)m2x^%9BH_cLlkH3k6Wru)wA9?r)jIt$J)a?` OrYW_tDO**M!5RQmKws$q literal 0 HcmV?d00001 diff --git a/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.edit/icons/full/ctool16/CreateSketch_block_Block.gif b/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.edit/icons/full/ctool16/CreateSketch_block_Block.gif new file mode 100644 index 0000000000000000000000000000000000000000..d4308a5e4572b4a62720c642b85616d274e9b32c GIT binary patch literal 223 zcmZ?wbhEHb6krfwIKsg2|NsB{_xIb|$1^Z6{P_C&#?d$X=igsedFlWE`1$en|L@y3 zG&CGIaA3}yIhD&UIXF1%nyv;!TPG>6>ylsEBsH&6Y-Wk@zrXK+=B0{}Q{VF>^L literal 0 HcmV?d00001 diff --git a/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.edit/icons/full/ctool16/CreateSketch_channel_Channel.gif b/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.edit/icons/full/ctool16/CreateSketch_channel_Channel.gif new file mode 100644 index 0000000000000000000000000000000000000000..8ab34c64a3fa8865811b8b9ab624dffa204edeb8 GIT binary patch literal 223 zcmZ?wbhEHb6krfwIKsg2|NsB{_xIb|$1^Z695`@b&YU?18XSP&|Nr>;@%I1k+cz{c zK*TGTT>^^lnyv;!TPG>6>ylsEBsH&6Y-Wk@zrXK+=;@%I1k+cz{c zK*TGTT>^^lnyv;!TPG>6>ylsEBsH&6Y-Wk@zrXK+=6>ylsEBsH&6Y-Wk@zrXK+=1sf;LSK(uv|^13ehrA<=vD#d1&2><*09*F*aJ`Y5Ho-h7=w;5;}1StMw zVFa;sKm^E62G$q_g}#(XJ2i%xXAe)guys;@bKj&APvg%fJ=d})X^N@$OC@JI2Wre- zeu7=3PixMplWtZFI%@a5T`UBG8fL#p_^{|?JJZ4hH~AYaHMeuMPQOggXUM5(N^NY) JR#jxM1^~A=VYUDO literal 0 HcmV?d00001 diff --git a/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.edit/icons/full/ctool16/CreateSketch_instructions_Repeat.gif b/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.edit/icons/full/ctool16/CreateSketch_instructions_Repeat.gif new file mode 100644 index 0000000000000000000000000000000000000000..f018488de3d3af65424acd47cebdd5ffb9b9a281 GIT binary patch literal 223 zcmZ?wbhEHb6krfwIKsg2|NsB{_xIb|$1^Z695`@b&YU@wm6seG9RB~0pC51k|Gs@g zLjzQN8AyEBbTuH_I!Sq5m;BNusd<%RGfRa3{e2Hae?OlGqCd|U|GwJ{Gz|h2f3h%w zSUMmAWG4e_jDkX6N~E0{!_2dXr(D=NslT~zQi-SWXOo_5*^@NI)cd89Go1r9W-mX% zF4Ctp=hR6zD+V34``#`V0znP4UnG23bh4dkVS=0djh33*xmu@Rrsp%{)HJ0wHf5_S HGFSru7fE2- literal 0 HcmV?d00001 diff --git a/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.edit/icons/full/ctool16/CreateSketch_instructions_Sketch.gif b/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.edit/icons/full/ctool16/CreateSketch_instructions_Sketch.gif new file mode 100644 index 0000000000000000000000000000000000000000..cb3d509b1b9253d44e3ad8b6dd020ff614cc5d8c GIT binary patch literal 223 zcmZ?wbhEHb6krfwIKsg2|NsB{_xIb|$1^Z695`@b&YU@w%Pu)MIQ;(~KR@37|9$(0 zh6ZHuUDMToXzL{9bzSmHo22Gdip?w${`dDi5dHmp9*F)tU;O)SGte{$Q2fcl2x94g z2#}o&tT74-eJPQ4Y78^a9-eYx>!kkXzDXsX#-B}ku4PZs6jSe)O3ri+)R?{e1iMI| z)|^u(-K-dN)b4w`SO^3)%zlyZVbRHUriBS^@;6#)Zs%&9ewm)nkWs>oms E065%X2mk;8 literal 0 HcmV?d00001 diff --git a/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.edit/icons/full/ctool16/CreateSketch_instructions_VariableAssignment.gif b/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.edit/icons/full/ctool16/CreateSketch_instructions_VariableAssignment.gif new file mode 100644 index 0000000000000000000000000000000000000000..f52d6a90d0891fba447da4faa65e03cfbcc61564 GIT binary patch literal 223 zcmZ?wbhEHb6krfwIKsg2|NsB{_xIb|$1^Z695`@b&YU?74GqVFga7}JpC51k|Gqtt z3lXnecFDoPVb^puAlf=fd0m(M(k7{Sm0~kXg#Z104@7@Ip9i8p&lmr`+YB@f0u+C; zFoIY*AOd7318aB0{~;GVM71_ literal 0 HcmV?d00001 diff --git a/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.edit/icons/full/ctool16/CreateSketch_instructions_VariableDeclaration.gif b/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.edit/icons/full/ctool16/CreateSketch_instructions_VariableDeclaration.gif new file mode 100644 index 0000000000000000000000000000000000000000..d39e9f13fab0d7bcec8b2c6b81d876f2343008e4 GIT binary patch literal 223 zcmZ?wbhEHb6krfwIKsg2|NsB{_xIb|$1^Z695`?w?MzxjLxY2Z!~g&B^W*LR-?s;H zf#P%K%&A;<2`Ij6x*8B|ous_3OMYpS)VxZunI*#i{=NsIzn{+o(Vypwf8T8eng#)i zKUo+-EFBO5vXg-|MnR!3CDKlfVdmMxQ!Z?s)Zg4Usl?Oxvq{gj>`9tp>its5na+V4 zvzMP>7wOZQbLym<6@!l2eQy^FfuM%jFA_d1I@!*&Fu_g!MoZ1@T&>eD)AJc}YMN3T Ko3d3E8LR=fUtn7R literal 0 HcmV?d00001 diff --git a/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.edit/icons/full/ctool16/CreateSketch_instructions_While.gif b/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.edit/icons/full/ctool16/CreateSketch_instructions_While.gif new file mode 100644 index 0000000000000000000000000000000000000000..4e47629dccd1a3ceb230a3cbff1ef729b8ecbe01 GIT binary patch literal 223 zcmZ?wbhEHb6krfwIKsg2|NsB{_xIb|$1^Z695`@b&YU?84F?<*09*F*aJ`Y5Ho-h7=w;5;}1StMw zVFa;sKm^E62G$q_g}#(XJ2i%xXAe)guys;@bKj&APvg%fJ=d})X^N@$OC@JI2Wre- zeu7=3PixMplWtZFI%@a5T`UBG8fL#p_^{|?JJZ4hH~AYaHMeuMPQOggXUM5(N^NY) JR#jxM1_0z&V3z;@ literal 0 HcmV?d00001 diff --git a/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.edit/icons/full/ctool16/CreateSketch_sharedResources_IntegerSharedResource.gif b/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.edit/icons/full/ctool16/CreateSketch_sharedResources_IntegerSharedResource.gif new file mode 100644 index 0000000000000000000000000000000000000000..f418bb97fb6229ad83f678ce26566edd5b47b812 GIT binary patch literal 223 zcmZ?wbhEHb6krfwIKsg2|NsB{_xIb|$1^Z6ym+za=FOfnXVMNFaQOc}etx|D|NHh0 z4Gjkl9GEj_PUW&o4h{~xrmF$b)=A3iy5yHONzJPin^_|K@9%pc`uq7j5dC?+`1jpr zplJ}G_>+YZ#L@u~AUhdYV-ytnQX=it7-pV5JmtdHN&U@zlS({|Kb!Pi%buhurrs}= zoar2>F?;z5c9A}8}5D03R{UYJRqLb}R3lrSrZ?x3h&eb~oGCiLm Pr=}^ju_;?sk--`OizZ^r literal 0 HcmV?d00001 diff --git a/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.edit/icons/full/ctool16/CreateSketch_sharedResources_IntegerSharedVariable.gif b/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.edit/icons/full/ctool16/CreateSketch_sharedResources_IntegerSharedVariable.gif new file mode 100644 index 0000000000000000000000000000000000000000..2397f66e020ba7b42f4300a79bdce1e3823539d9 GIT binary patch literal 223 zcmZ?wbhEHb6krfwIKsg2|NsB{_xIb|$1^Z695`@b&YU?74GqVFd;b5ApC51k|Gqtt z3lXnecFDoPVb^puAlf=fd0m(M(k7{Sm0~kXg#Z104@7@Ip9i8p&lmr`+YB@f0u+C; zFoIY*AOd7318aB0|1RoVSE4p literal 0 HcmV?d00001 diff --git a/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.edit/icons/full/ctool16/CreateSketch_sharedResources_SharedResource.gif b/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.edit/icons/full/ctool16/CreateSketch_sharedResources_SharedResource.gif new file mode 100644 index 0000000000000000000000000000000000000000..bcaa16d30169ff72575ec9399bad4ee5d12b6c82 GIT binary patch literal 223 zcmZ?wbhEHb6krfwIKsg2|NsB{_xIb|$1^Z6?Ai08r{`u`+8GCj1ONZW&yTnNf8V~L zq2a)R19Rrgsa$r+!NFnIbTuH_I!Sq5m;BNusd<%RGfRa3{e2Hae?OlGqCd|U|GwJ{ zGz|h2f3h%wSUMmAWG4e_jDkX6N~E0{!_2dXr(D=NslT~zQi-SWXOo_5*^@NI)cd89 zGo1r9W-mX%F4Ctp=hR6zD+V34``#`V0znP4UnG23bh4dkVS=0djh33*xmu@Rrsp%{ P)HJ0wHf5_SGFSruf(c=4 literal 0 HcmV?d00001 diff --git a/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.edit/icons/full/ctool16/CreateSketch_sharedResources_SharedVariable.gif b/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.edit/icons/full/ctool16/CreateSketch_sharedResources_SharedVariable.gif new file mode 100644 index 0000000000000000000000000000000000000000..e75685c1aec3a3717798c6a2117c1ce7902edc21 GIT binary patch literal 223 zcmZ?wbhEHb6krfwIKsg2|NsB{_xIb|$1^Z695`@b&YU?74GqRK)BgXDpC51k|Gqtt z3lXnecFDoPVb^puAlf=fd0m(M(k7{Sm0~kXg#Z104@7@Ip9i8p&lmr`+YB@f0u+C; zFoIY*AOd7318aB0{}Q{VF>^L literal 0 HcmV?d00001 diff --git a/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.edit/icons/full/ctool16/CreateSketch_threadConnectors_ThreadConnector.gif b/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.edit/icons/full/ctool16/CreateSketch_threadConnectors_ThreadConnector.gif new file mode 100644 index 0000000000000000000000000000000000000000..43bee183bc20e920dae171be5ced0bc443342f39 GIT binary patch literal 223 zcmZ?wbhEHb6krfwIKsg2|NsB{_xIb|$1^Z6ytuUI=BA!AGt&+m=oMUGhttq~=wM%`6fA_xC*z{r!9%i2giZ{QGV* z&@>28{K>)yV(EYgkev*yF$xNODUo(+3^UIjo^oO9r2giB0{}Q{VF>^L literal 0 HcmV?d00001 diff --git a/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.edit/icons/full/ctool16/CreateThread_accessors_SharedVariableAccess.gif b/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.edit/icons/full/ctool16/CreateThread_accessors_SharedVariableAccess.gif new file mode 100644 index 0000000000000000000000000000000000000000..95a524524a9e3b19814c752c7c2c4c7329eb6552 GIT binary patch literal 223 zcmZ?wbhEHb6krfwIKsg2|NsB{_xIb|$1^Z6?0NB`=jP3{GiMwQ9Qgk~etx|D|NHh0 z4Gjkl9GEj_4v=9yGi}#&H6YqLNqJqD{L&_=d6i-_ON9UZeGf!`Kc5GpKhGEczS|5m z4FVK@vM_>JIv@gMCj)DYfrlb&nYlQhND`=ydI zodY#yFF(O9(x)}&)JZoh1|7Bg-YymbK@GECBz#zOvYlyRf}8w}mYUnSTBl#8=QHHg OG^I8+WvePOSOWlu-(t)F literal 0 HcmV?d00001 diff --git a/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.edit/icons/full/ctool16/CreateThread_block_Block.gif b/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.edit/icons/full/ctool16/CreateThread_block_Block.gif new file mode 100644 index 0000000000000000000000000000000000000000..889f3af917f8e9ebb5f86d346093826b74c47966 GIT binary patch literal 223 zcmZ?wbhEHb6krfwIKsg2|NsB{_xIb|$1^Z6{P_C&#?d$X=igsedFlWE`1$en|L@y3 zG&CGIaA3}yIY5T-%(Pw8)qrU0B;|Eo@=Kef=2eQ#ED`?q_dO8({d^vX{ybm&`))JP zGzd`q$-)R?>3|53oeZoo3JQHGk#=efGtVBLa$)PF{^q_(C7#BgO?s|nPtp`q@0Uu> zbPm**z5E2bNT1f6QzzZ57*B$#$lN32yQ?T54|RYMp+Wp3jg| O)0EoSl&z}BU=09UiDTmc literal 0 HcmV?d00001 diff --git a/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.edit/icons/full/ctool16/CreateThread_block_InstructionBlock.gif b/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.edit/icons/full/ctool16/CreateThread_block_InstructionBlock.gif new file mode 100644 index 0000000000000000000000000000000000000000..0f107c5ff075ff9c05d6ae8c40bb44f6e285d920 GIT binary patch literal 223 zcmZ?wbhEHb6krfwIKsg2|NsB{_xIb|$1^Z6G+kR0e5}WEO|ec} z9H=pS`3ZKBKCL;YPP$n!=&0TIcCio$YMA{Z;lrYn?Mw?3+~jYx)ZEV1I{h*|pCPBF NDYdaFTUC+48UU*HU{C-6 literal 0 HcmV?d00001 diff --git a/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.edit/icons/full/ctool16/CreateThread_block_SynchronizationBlock.gif b/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.edit/icons/full/ctool16/CreateThread_block_SynchronizationBlock.gif new file mode 100644 index 0000000000000000000000000000000000000000..fac7c9b1014c4ba240279c2c69d034e46190bd22 GIT binary patch literal 223 zcmZ?wbhEHb6krfwIKsg2|NsB{_xIb|$1^Z6G+nzEeC(Lznl(CYZU6tr&yTnNf8V~L zq2a)R19Rrg0WyqdrtO-p21HvYDX;62U)m%!uTpGgiSWO_?}6y==kq}H=lSB_cbkEx zL4e{<7Df3tK1kH}_2{@ihKy(sM0)lBSq?zf^Lj zbD+lTg4sA2Ytgb#~OwlghEaFf5$Qgb_3>-5X?e1@Ew Nrqsr!Y*j@DYXCwNVHyAc literal 0 HcmV?d00001 diff --git a/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.edit/icons/full/ctool16/CreateThread_blocks_Block.gif b/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.edit/icons/full/ctool16/CreateThread_blocks_Block.gif new file mode 100644 index 0000000000000000000000000000000000000000..889f3af917f8e9ebb5f86d346093826b74c47966 GIT binary patch literal 223 zcmZ?wbhEHb6krfwIKsg2|NsB{_xIb|$1^Z6{P_C&#?d$X=igsedFlWE`1$en|L@y3 zG&CGIaA3}yIY5T-%(Pw8)qrU0B;|Eo@=Kef=2eQ#ED`?q_dO8({d^vX{ybm&`))JP zGzd`q$-)R?>3|53oeZoo3JQHGk#=efGtVBLa$)PF{^q_(C7#BgO?s|nPtp`q@0Uu> zbPm**z5E2bNT1f6QzzZ57*B$#$lN32yQ?T54|RYMp+Wp3jg| O)0EoSl&z}BU=09UiDTmc literal 0 HcmV?d00001 diff --git a/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.edit/icons/full/ctool16/CreateThread_blocks_InstructionBlock.gif b/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.edit/icons/full/ctool16/CreateThread_blocks_InstructionBlock.gif new file mode 100644 index 0000000000000000000000000000000000000000..0f107c5ff075ff9c05d6ae8c40bb44f6e285d920 GIT binary patch literal 223 zcmZ?wbhEHb6krfwIKsg2|NsB{_xIb|$1^Z6G+kR0e5}WEO|ec} z9H=pS`3ZKBKCL;YPP$n!=&0TIcCio$YMA{Z;lrYn?Mw?3+~jYx)ZEV1I{h*|pCPBF NDYdaFTUC+48UU*HU{C-6 literal 0 HcmV?d00001 diff --git a/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.edit/icons/full/ctool16/CreateThread_blocks_SynchronizationBlock.gif b/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.edit/icons/full/ctool16/CreateThread_blocks_SynchronizationBlock.gif new file mode 100644 index 0000000000000000000000000000000000000000..fac7c9b1014c4ba240279c2c69d034e46190bd22 GIT binary patch literal 223 zcmZ?wbhEHb6krfwIKsg2|NsB{_xIb|$1^Z6G+nzEeC(Lznl(CYZU6tr&yTnNf8V~L zq2a)R19Rrg0WyqdrtO-p21HvYDX;62U)m%!uTpGgiSWO_?}6y==kq}H=lSB_cbkEx zL4e{<7Df3tK1kH}_2{@ihKy(sM0)lBSq?zf^Lj zbD+lTg4sA2Ytgb#~OwlghEaFf5$Qgb_3>-5X?e1@Ew Nrqsr!Y*j@DYXCwNVHyAc literal 0 HcmV?d00001 diff --git a/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.edit/icons/full/ctool16/CreateUnaryExpression_operand_BinaryBooleanExpression.gif b/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.edit/icons/full/ctool16/CreateUnaryExpression_operand_BinaryBooleanExpression.gif new file mode 100644 index 0000000000000000000000000000000000000000..46c6860669018a65c9a62de7fa9ee8555fa31a46 GIT binary patch literal 223 zcmZ?wbhEHb6krfwIKsg2|NsB{_xIb|$1^Z6G+kR0e5}WEO|ec}`9tp>its5 zna+V4vzMP>7wOZQbLym<6@!l2eQy^FfuM%jFA_d1I@!*&Fu_g!MoZ1@T&>eD)AJc} OYMN3To3d3E8LR=*fnpK> literal 0 HcmV?d00001 diff --git a/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.edit/icons/full/ctool16/CreateUnaryExpression_operand_BinaryIntegerExpression.gif b/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.edit/icons/full/ctool16/CreateUnaryExpression_operand_BinaryIntegerExpression.gif new file mode 100644 index 0000000000000000000000000000000000000000..258ed0ecd05d3c8385e9a3721b56abbe4f65e9fe GIT binary patch literal 223 zcmZ?wbhEHb6krfwIKsg2|NsB{_xIb|$1^Z6Tzau*)6JflXVMxDIQ;(~KR@37|9$(0 zhK3g}_T0SLbLLFifddY^rmF$b)=A3iy5yHONzJPin^_|K@9%pc`uq7j5dC?+`1jpr zplJ}G_>+YZ#L@u~AUhdYV-ytnQX=it7-pV5JmtdHN&U@zlS({|Kb!Pi%buhurrs}= zoar2>F?;z5c9A}8}5D03R{UYJRqLb}R3lrSrZ?x3h&eb~oGCiLm Pr=}^ju_;?sk--`OF7IRB literal 0 HcmV?d00001 diff --git a/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.edit/icons/full/ctool16/CreateUnaryExpression_operand_BooleanConstant.gif b/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.edit/icons/full/ctool16/CreateUnaryExpression_operand_BooleanConstant.gif new file mode 100644 index 0000000000000000000000000000000000000000..961acc569eeb7e4c29325471ff08355036e604fd GIT binary patch literal 223 zcmZ?wbhEHb6krfwIKsg2|NsB{_xIb|$1^Z6eEt3V=$kk5@87Sybm{;9`1$en|L@y3 zG&H<;vFGN^o-=3C4jgdUHC+vewoX!B*CoHSNoroD*vt~)e}CTt(cjPKf#}ck#lP=1 z15JYf#h)yUAeIh@0NKgF8l#}lmlA2G#xV2j;VBokPU>&&n^fXy{Mn@ETJ|JOG4+0_ z=y|i7M*NoTA1J_f1{=5cCOaxm+AQo PIW$`>IQ;(~KR@37|9$(0 zhK3g}_T0SLbLLFifddY^rmF$b)=A3iy5yHONzJPin^_|K@9%pc`uq7j5dC?+`1jpr zplJ}G_>+YZ#L@u~AUhdYV-ytnQX=it7-pV5JmtdHN&U@zlS({|Kb!Pi%buhurrs}= zoar2>F?;z5c9A}8}5D03R{UYJRqLb}R3lrSrZ?x3h&eb~oGCiLm Pr=}^ju_;?sk--`Of@EU% literal 0 HcmV?d00001 diff --git a/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.edit/icons/full/ctool16/CreateUnaryExpression_operand_BooleanVariable.gif b/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.edit/icons/full/ctool16/CreateUnaryExpression_operand_BooleanVariable.gif new file mode 100644 index 0000000000000000000000000000000000000000..80c6c9e54bbfda59e50e020de9c03aa46f190810 GIT binary patch literal 223 zcmZ?wbhEHb6krfwIKsg2|NsB{_xIb|$1^Z695`@b&YU?74GqD^dj9{9pC51k|Gqtt z`{Ko(n>TyToJl)yz+u;PH6YqLNqJqD{L&_=d6i-_ON9UZeGf!`Kc5GpKhGEczS|5m z4FVK@vM_>JIv@gMCj)DYfrlb&nYlQhND`=ydI zodY#yFF(O9(x)}&)JZoh1|7Bg-YymbK@GECBz#zOvYlyRf}8w}mYUnSTBl#8=QHHg OG^I8+WvePOSOWmG+hacf literal 0 HcmV?d00001 diff --git a/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.edit/icons/full/ctool16/CreateUnaryExpression_operand_IntegerConstant.gif b/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.edit/icons/full/ctool16/CreateUnaryExpression_operand_IntegerConstant.gif new file mode 100644 index 0000000000000000000000000000000000000000..3a9f24e0fde5deb6d31c0cf3a252b72fe0debde8 GIT binary patch literal 223 zcmZ?wbhEHb6krfwIKsg2|NsB{_xIb|$1^Z695`?w?MzxjLxY2Z!~g&B^W*LR-?s;H zU%c3J^JdSPGie77IP99P21HvYDX;62U)m%!uTpGgiSWO_?}6y==kq}H=lSB_cbkEx zL4e{<7Df3tK1kH}_2{@ihKy(sM0)lBSq?zf^Lj zbD+lTg4sA2Ytgb#~OwlghEaFf5$Qgb_3>-5X?e1@Ew Nrqsr!Y*j@DYXIM2Vjchh literal 0 HcmV?d00001 diff --git a/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.edit/icons/full/ctool16/CreateUnaryExpression_operand_IntegerModuleGet.gif b/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.edit/icons/full/ctool16/CreateUnaryExpression_operand_IntegerModuleGet.gif new file mode 100644 index 0000000000000000000000000000000000000000..5e689e64ff8a4d75d0261ebf4de5d8aa692d11f8 GIT binary patch literal 223 zcmZ?wbhEHb6krfwIKsg2|NsB{_xIb|$1^Z6TwBw0tS5L)v1MDN&j0`M^W*LR-?wjQ zXn65r&&``XXU?P@IN-2rx*8B|ous_3OMYpS)VxZunI*#i{=NsIzn{+o(Vypwf8T8e zng#)iKUo+-EFBO5vXg-|MnR!3CDKlfVdmMxQ!Z?s)Zg4Usl?Oxvq{gj>`9tp>its5 zna+V4vzMP>7wOZQbLym<6@!l2eQy^FfuM%jFA_d1I@!*&Fu_g!MoZ1@T&>eD)AJc} OYMN3To3d3E8LR=--(nH~ literal 0 HcmV?d00001 diff --git a/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.edit/icons/full/ctool16/CreateUnaryExpression_operand_IntegerSharedResource.gif b/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.edit/icons/full/ctool16/CreateUnaryExpression_operand_IntegerSharedResource.gif new file mode 100644 index 0000000000000000000000000000000000000000..9cae865ec32e043ee1ef18086d9415098973154b GIT binary patch literal 223 zcmZ?wbhEHb6krfwIKsg2|NsB{_xIb|$1^Z6ym+za=FOfnXVMNFaQOc}etx|D|NHh0 z4GqZRyQZrF(bh@I>$>EZHc8E^6q{Kh{O|93Ao~0HJP`ePzWDduW}s;hp!k!85ya8~ z5g+&ksNMH=u@DGqnEfK*!=jVzObZj-TyToJl)yz+u;PH6YqLNqJqD{L&_=d6i-_ON9UZeGf!`Kc5GpKhGEczS|5m z4FVK@vM_>JIv@gMCj)DYfrlb&nYlQhND`=ydI zodY#yFF(O9(x)}&)JZoh1|7Bg-YymbK@GECBz#zOvYlyRf}8w}mYUnSTBl#8=QHHg OG^I8+WvePOSOWmHPGdg+ literal 0 HcmV?d00001 diff --git a/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.edit/icons/full/ctool16/CreateUnaryExpression_operand_IntegerVariable.gif b/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.edit/icons/full/ctool16/CreateUnaryExpression_operand_IntegerVariable.gif new file mode 100644 index 0000000000000000000000000000000000000000..b325c758df8633966e1e79857e8f6e5bb8e9fb16 GIT binary patch literal 223 zcmZ?wbhEHb6krfwIKsg2|NsB{_xIb|$1^Z6G+k>7J{D}b#!{zE=l}os`SJGu@7p&t zG`x7R=jP3xGiTBc9B|k*T@8q~PEuaiCBL*uYF?$-%o5>$f8PVq-_PfP=+E=Tzwb5! zO@jc%pDc_ZmJWyj*~!2fqoB~25^1N#F!Su;DHpa*>Tm9wRN`s;*`()M_9RU)^?s@3 zOy@w2*~?F`i}Y#DId#&_ia|&1zPF2oKv2W%7YQF0oor`XnBXRVqow9{uGZ<7>G=#f OHBG6FP1&l74AuZVbzw*V literal 0 HcmV?d00001 diff --git a/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.edit/icons/full/ctool16/CreateUnaryExpression_operand_SharedResource.gif b/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.edit/icons/full/ctool16/CreateUnaryExpression_operand_SharedResource.gif new file mode 100644 index 0000000000000000000000000000000000000000..cc494d4c87b341477d066cd7fcb71a3ea2277be3 GIT binary patch literal 223 zcmZ?wbhEHb6krfwIKsg2|NsB{_xIb|$1^Z6?Ai08r{`u`+8GCj1ONZW&yTnNf8V~L zq2a}gJvVRmoH>(r;DE!f>1sfTyToJl)yz+u;PH6YqLNqJqD{L&_=d6i-_ON9UZeGf!`Kc5GpKhGEczS|5m z4FVK@vM_>JIv@gMCj)DYfrlb&nYlQhND`=ydI zodY#yFF(O9(x)}&)JZoh1|7Bg-YymbK@GECBz#zOvYlyRf}8w}mYUnSTBl#8=QHHg OG^I8+WvePOSOWlHZDPy- literal 0 HcmV?d00001 diff --git a/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.edit/icons/full/ctool16/CreateUnaryExpression_operand_SharedVariableAccess.gif b/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.edit/icons/full/ctool16/CreateUnaryExpression_operand_SharedVariableAccess.gif new file mode 100644 index 0000000000000000000000000000000000000000..81084b9c15e88da17d03a0fe67e06a85cf4b96dd GIT binary patch literal 223 zcmZ?wbhEHb6krfwIKsg2|NsB{_xIb|$1^Z6?0NB`=jP3{GiMwQ9Qgk~etx|D|NHh0 z4Gk||?74Zf=ggV30|y*-O;-b=t&^13b;&PnlA2d3HnT+d-{1E@^!M|5Ao}xs@$b9M zK+_;V@h1x-h@}G}Kz1^)#waNCr9|4PG0Z%Bc*=#Xllq(cCY5*^e>Um4mOV*ROub(! zIny~%WA^eB>>_Um4mOV*ROub(! zIny~%WA^eB>>_6>ylsEBsH&6Y-Wk@zrXK+=7J{D}b#!{zE=l}os`SJGu@7p&t zG`x7R=jP3xGiTBc9B|k*T@8q~PEuaiCBL*uYF?$-%o5>$f8PVq-_PfP=+E=Tzwb5! zO@jc%pDc_ZmJWyj*~!2fqoB~25^1N#F!Su;DHpa*>Tm9wRN`s;*`()M_9RU)^?s@3 zOy@w2*~?F`i}Y#DId#&_ia|&1zPF2oKv2W%7YQF0oor`XnBXRVqow9{uGZ<7>G=#f OHBG6FP1&l74AuZVbzw*V literal 0 HcmV?d00001 diff --git a/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.edit/icons/full/ctool16/CreateVariableDeclaration_variable_BooleanVariable.gif b/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.edit/icons/full/ctool16/CreateVariableDeclaration_variable_BooleanVariable.gif new file mode 100644 index 0000000000000000000000000000000000000000..9c4e0af14ec6bfbad916a196b2c28ed9eaf2683d GIT binary patch literal 223 zcmZ?wbhEHb6krfwIKsg2|NsB{_xIb|$1^Z695`@b&YU?74GqD^dj9{9pC51k|Gqtt z3lvW~lLllsI5_N@t_DO~Cn>M%l3&^+HLp@^W{L2>zwd$Q@8|PC^ym5F-*=mVra^$> zPZmZHO9w=N>||h#QBdehiL_H=n0fZ_lnYxY^*8rTD)BV_Y|?Wrdy=M@dcRb1rgNai z?ByreMf$YnoI2@d#h{~h-`mAPAgE#Xi-Zr0PPQ{GOmLIG(Nc3eSL^i4^n8Y#nx@po KrfgM325SHtqhQYf literal 0 HcmV?d00001 diff --git a/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.edit/icons/full/ctool16/CreateVariableDeclaration_variable_IntegerSharedVariable.gif b/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.edit/icons/full/ctool16/CreateVariableDeclaration_variable_IntegerSharedVariable.gif new file mode 100644 index 0000000000000000000000000000000000000000..f5be1558dc0cd59aa93291bd9bcf0d3e65b8ff94 GIT binary patch literal 223 zcmZ?wbhEHb6krfwIKsg2|NsB{_xIb|$1^Z695`@b&YU?74GqVFd;b5ApC51k|Gqtt z3lvW~lLllsI5_N@t_DO~Cn>M%l3&^+HLp@^W{L2>zwd$Q@8|PC^ym5F-*=mVra^$> zPZmZHO9w=N>||h#QBdehiL_H=n0fZ_lnYxY^*8rTD)BV_Y|?Wrdy=M@dcRb1rgNai z?ByreMf$YnoI2@d#h{~h-`mAPAgE#Xi-Zr0PPQ{GOmLIG(Nc3eSL^i4^n8Y#nx@po KrfgM325SHu7GTc+ literal 0 HcmV?d00001 diff --git a/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.edit/icons/full/ctool16/CreateVariableDeclaration_variable_IntegerVariable.gif b/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.edit/icons/full/ctool16/CreateVariableDeclaration_variable_IntegerVariable.gif new file mode 100644 index 0000000000000000000000000000000000000000..205071f21539ca12f3279c9bd7998159be53ad48 GIT binary patch literal 223 zcmZ?wbhEHb6krfwIKsg2|NsB{_xIb|$1^Z6G+k>7J{D}b#!{zE=l}os`SJGu@7p&t zG#of^Ani;Vkm2Cquxq*+5N(~Lysk@rX_M5vO0k(G!vFrh2co~9&jZn)=Zk;eZ3dbK z0g69a7(px@5CO82fi*@!p)V!UPK{ya*~3#VY@O8K+&8Jj)A+MV&$aAHnqunxQpuUl zff}=ypI{g1)0%VYq?;9kj@o^17Yl))hS@I?J}f%f&a^PWP5wqp&Fx&R(=XHW8FFfx MQX8AHRTUYm0i!Nn*Z=?k literal 0 HcmV?d00001 diff --git a/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.edit/icons/full/ctool16/CreateVariableDeclaration_variable_SharedResource.gif b/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.edit/icons/full/ctool16/CreateVariableDeclaration_variable_SharedResource.gif new file mode 100644 index 0000000000000000000000000000000000000000..2dde1a2a0e519b5c9361bac9e304b2b1564f5f72 GIT binary patch literal 223 zcmZ?wbhEHb6krfwIKsg2|NsB{_xIb|$1^Z6?Ai08r{`u`+8GCj1ONZW&yTnNf8V~L zq2a)R18HZ{fD8u*hh5XvfN1L^<#k>1OPi$TRf^3l5&rl0JrMo)AYJYW3#ZZps{ z2vGdV!U$sNfC!MC46HE<3VkV&c4`bW&mNv~Ve6#+=DtZKp2nX|dah+p(iBtgmrBlb z4%C>v`~M%l3&^+HLp@^W{L2>zwd$Q@8|PC^ym5F-*=mVra^$> zPZmZHO9w=N>||h#QBdehiL_H=n0fZ_lnYxY^*8rTD)BV_Y|?Wrdy=M@dcRb1rgNai z?ByreMf$YnoI2@d#h{~h-`mAPAgE#Xi-Zr0PPQ{GOmLIG(Nc3eSL^i4^n8Y#nx@po KrfgM325SJvCSY6u literal 0 HcmV?d00001 diff --git a/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.edit/icons/full/ctool16/CreateVariableDeclaration_variable_SharedVariableAccess.gif b/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.edit/icons/full/ctool16/CreateVariableDeclaration_variable_SharedVariableAccess.gif new file mode 100644 index 0000000000000000000000000000000000000000..7f00aa632e4fbd85e12f14d6943654402da6c1ed GIT binary patch literal 223 zcmZ?wbhEHb6krfwIKsg2|NsB{_xIb|$1^Z6?0NB`=jP3{GiMwQ9Qgk~etx|D|NHh0 z4Gjkl97sEp24pxmIP99P21HvYDX;62U)m%!uTpGgiSWO_?}6y==kq}H=lSB_cbkEx zL4e{<7Df3tK1kH}_2{@ihKy(sM0)lBSq?zf^Lj zbD+lTg4sA2Ytgb#~OwlghEaFf5$Qgb_3>-5X?e1@Ew Nrqsr!Y*j@DYXBEAVjchh literal 0 HcmV?d00001 diff --git a/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.edit/icons/full/obj16/AbstractInstructionBlock.gif b/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.edit/icons/full/obj16/AbstractInstructionBlock.gif new file mode 100644 index 0000000000000000000000000000000000000000..5915591825a5301b9f9a3d398baea497ef02311d GIT binary patch literal 129 zcmZ?wbhEHb6krfw*vtS14M4Jip`qcxfddT<4GjN*-2XuK|Nmgt|Nk#u?74Zf=ggV3 z0|y)wf3h$#FmN*HfOLY)U|`WRIO(~1uf^*x-&FV?7P@XXWxbV>;I&}kR~x;L)6}k- WmG`XFk literal 0 HcmV?d00001 diff --git a/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.edit/icons/full/obj16/Actuator.gif b/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.edit/icons/full/obj16/Actuator.gif new file mode 100644 index 0000000000000000000000000000000000000000..be22463d2919f13a6345bad3166fc216c3f0942a GIT binary patch literal 129 zcmZ?wbhEHb6krfw*vtS14M4Jip`qcxfddT<4GjN*-2XuK|Nmgt|Nmcq|2X>Q#{B#H zD=#fm{K>+|z`)6%1JVgHgMmfQ;H2m3y%w*(d{g0nSm?Ull=W6hg4cqDUv2b0PE)&T WR^GExlV5i^W2f7Zi9*7R4AuaR0y3!p literal 0 HcmV?d00001 diff --git a/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.edit/icons/full/obj16/AmbientLightSensor.gif b/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.edit/icons/full/obj16/AmbientLightSensor.gif new file mode 100644 index 0000000000000000000000000000000000000000..b1f8afa47661703c49bd5fa535dcb1342deb6fc4 GIT binary patch literal 129 zcmZ?wbhEHb6krfw*vtS14M4Jip`qcxfddT<4GjN*-2XuK|Nmgte-L}loH+*?9DqRa zCkrD311EzHNGHe)1{OVolb);hTD<=9O@;qqq3d>2)>|nFUJDj}wbA=HP3@{#dCy8s Se%_b*-m literal 0 HcmV?d00001 diff --git a/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.edit/icons/full/obj16/AnalogPin.gif b/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.edit/icons/full/obj16/AnalogPin.gif new file mode 100644 index 0000000000000000000000000000000000000000..904159880b359f157463f3cb9230da602e5b3d3a GIT binary patch literal 129 zcmZ?wbhEHb6krfw*vtS14M4Jip`qcxfddT<4GjN*-2XuK|Nmgte-L}loH>=tE;%?j zDE?$&WMJTA&;jWLnZdxKXK>PU^qmH literal 0 HcmV?d00001 diff --git a/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.edit/icons/full/obj16/ArduinoBoard.gif b/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.edit/icons/full/obj16/ArduinoBoard.gif new file mode 100644 index 0000000000000000000000000000000000000000..c00aedf4135a384d1a98a5344c27454f488cbe42 GIT binary patch literal 129 zcmZ?wbhEHb6krfw*vtS14M4Jip`qcxfddT<4GjN*-2XuK|Nmgt|Np;#e|_`j=>7Zi zFI}os{K>+|z`)6%1JVgHgMmfQ;H2m3y%w*(d{g0nSm?Ull=W6hg4cqDUv2b0PE)&T WR^GExlV5i^W2f7Zi9*7R4AuauFf$AQ literal 0 HcmV?d00001 diff --git a/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.edit/icons/full/obj16/BinaryBooleanExpression.gif b/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.edit/icons/full/obj16/BinaryBooleanExpression.gif new file mode 100644 index 0000000000000000000000000000000000000000..106881e5d9bf05cb0cf3375cfd102e8039b8ace9 GIT binary patch literal 129 zcmZ?wbhEHb6krfw*vtS14M4Jip`qcxfddT<4GjN*-2XuK|Nmgt|Nl+b)&w8xv0PKE z(-x`tlZBCifs;W8q!VNY1B;%)Nzc`LEna{5ro#WQ&~>{h>#dXouLTRg+UR|prgqh= Vyl15*zwUCzPPZcyg@hRytO0^gFBSj* literal 0 HcmV?d00001 diff --git a/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.edit/icons/full/obj16/BinaryIntegerExpression.gif b/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.edit/icons/full/obj16/BinaryIntegerExpression.gif new file mode 100644 index 0000000000000000000000000000000000000000..e4bc22dd17e82d9350631bd55ad9671957cdaf50 GIT binary patch literal 129 zcmZ?wbhEHb6krfw*vtS14M4Jip`qcxfddT<4GjN*-2XuK|Nmgt|Noa>?Adg)XXcr- zh64_YKUo+V7&sYpKsrHYFtF$uob+71*W&e;Zz}u`3thLHvffHb@LI6&tBu~rX=+!^ W%6nF7^6M^V>~uRaQAn7P!5RPwrZD0F literal 0 HcmV?d00001 diff --git a/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.edit/icons/full/obj16/Block.gif b/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.edit/icons/full/obj16/Block.gif new file mode 100644 index 0000000000000000000000000000000000000000..89ad5da38ab3060f14ba925b1251bd5cb8454012 GIT binary patch literal 129 zcmZ?wbhEHb6krfw*vtS14M4Jip`qcxfddT<4GjN*-2XuK|Nmgt|NlR}{=RYa&HnlK zmsMU;{K>+|z`)6%1JVgHgMmfQ;H2m3y%w*(d{g0nSm?Ull=W6hg4cqDUv2b0PE)&T WR^GExlV5i^W2f7Zi9*7R4AuaR0y3!p literal 0 HcmV?d00001 diff --git a/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.edit/icons/full/obj16/BooleanConstant.gif b/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.edit/icons/full/obj16/BooleanConstant.gif new file mode 100644 index 0000000000000000000000000000000000000000..badaab0664ae45de5d990f64638197daeabf31bf GIT binary patch literal 129 zcmZ?wbhEHb6krfw*vtS14M4Jip`qcxfddT<4GjN*-2XuK|Nmgt|Nmcq|33QW&HVfK zD=%GA{K>+|z`)6%1JVgHgMmfQ;H2m3y%w*(d{g0nSm?Ull=W6hg4cqDUv2b0PE)&T WR^GExlV5i^W2f7Zi9*7R4Auasq%#Zv literal 0 HcmV?d00001 diff --git a/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.edit/icons/full/obj16/BooleanExpression.gif b/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.edit/icons/full/obj16/BooleanExpression.gif new file mode 100644 index 0000000000000000000000000000000000000000..ea58a657dc0c287f6bb84e6cbd38008c96713db3 GIT binary patch literal 129 zcmZ?wbhEHb6krfw*vtS14M4Jip`qcxfddT<4GjN*-2XuK|Nmgt|Nk%cT)Nq_=}g+p z0}c&}KUo+V7&sYpKsrHYFtF$uob+71*W&e;Zz}u`3thLHvffHb@LI6&tBu~rX=+!^ W%6nF7^6M^V>~uRaQAn7P!5RPwr!e9G literal 0 HcmV?d00001 diff --git a/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.edit/icons/full/obj16/BooleanModuleGet.gif b/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.edit/icons/full/obj16/BooleanModuleGet.gif new file mode 100644 index 0000000000000000000000000000000000000000..53500daf98e17bc98acd04b14eb7b16938ceb4dd GIT binary patch literal 129 zcmZ?wbhEHb6krfw*vtS14M4Jip`qcxfddT<4GjN*-2XuK|Nmgte-L}loH>^+RXR90 zDE?$&WMJTA&;jWLnZdxKXK>PU^~uRaQAn7P!5RSA+%Q7` literal 0 HcmV?d00001 diff --git a/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.edit/icons/full/obj16/Buzzer.gif b/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.edit/icons/full/obj16/Buzzer.gif new file mode 100644 index 0000000000000000000000000000000000000000..c3370c7ddd5e0817a59de6fd45ad0993b52abe28 GIT binary patch literal 129 zcmZ?wbhEHb6krfw*vtS14M4Jip`qcxfddT<4GjN*-2XuK|Nmgt|Nk%c?77*~b0#hA zfP;hLPZmZ722KVYkWP>p3@myECp}m1wRrvIn+pHKLf7r4thZ7UycR6{YNPjYn%Y&f W@}8BN{JP5-JKc^<6cT1+um%9wDljtu literal 0 HcmV?d00001 diff --git a/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.edit/icons/full/obj16/Channel.gif b/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.edit/icons/full/obj16/Channel.gif new file mode 100644 index 0000000000000000000000000000000000000000..b1f8afa47661703c49bd5fa535dcb1342deb6fc4 GIT binary patch literal 129 zcmZ?wbhEHb6krfw*vtS14M4Jip`qcxfddT<4GjN*-2XuK|Nmgte-L}loH+*?9DqRa zCkrD311EzHNGHe)1{OVolb);hTD<=9O@;qqq3d>2)>|nFUJDj}wbA=HP3@{#dCy8s Se%_b*-m literal 0 HcmV?d00001 diff --git a/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.edit/icons/full/obj16/Connector.gif b/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.edit/icons/full/obj16/Connector.gif new file mode 100644 index 0000000000000000000000000000000000000000..ed8747474012f8278002a9785026a1a40155b192 GIT binary patch literal 129 zcmZ?wbhEHb6krfw*vtS14M4Jip`qcxfddT<4GjN*-2XuK|Nmgte-L}loH;-#;I&}kR~x;L)6}k-mG`XF Sp3@myECp}m1wRrvIn+pHKLf7r4thZ7UycR6{YNPjYn%Y&f@}8BN S{JP5-JKc^<6cT1+um%98?=Oe| literal 0 HcmV?d00001 diff --git a/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.edit/icons/full/obj16/Delay.gif b/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.edit/icons/full/obj16/Delay.gif new file mode 100644 index 0000000000000000000000000000000000000000..be22463d2919f13a6345bad3166fc216c3f0942a GIT binary patch literal 129 zcmZ?wbhEHb6krfw*vtS14M4Jip`qcxfddT<4GjN*-2XuK|Nmgt|Nmcq|2X>Q#{B#H zD=#fm{K>+|z`)6%1JVgHgMmfQ;H2m3y%w*(d{g0nSm?Ull=W6hg4cqDUv2b0PE)&T WR^GExlV5i^W2f7Zi9*7R4AuaR0y3!p literal 0 HcmV?d00001 diff --git a/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.edit/icons/full/obj16/DigitalPin.gif b/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.edit/icons/full/obj16/DigitalPin.gif new file mode 100644 index 0000000000000000000000000000000000000000..106881e5d9bf05cb0cf3375cfd102e8039b8ace9 GIT binary patch literal 129 zcmZ?wbhEHb6krfw*vtS14M4Jip`qcxfddT<4GjN*-2XuK|Nmgt|Nl+b)&w8xv0PKE z(-x`tlZBCifs;W8q!VNY1B;%)Nzc`LEna{5ro#WQ&~>{h>#dXouLTRg+UR|prgqh= Vyl15*zwUCzPPZcyg@hRytO0^gFBSj* literal 0 HcmV?d00001 diff --git a/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.edit/icons/full/obj16/Fan.gif b/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.edit/icons/full/obj16/Fan.gif new file mode 100644 index 0000000000000000000000000000000000000000..30f0c48da8d4450f7e94a696c4de0a7cc41aa728 GIT binary patch literal 129 zcmZ?wbhEHb6krfw*vtS14M4Jip`qcxfddT<4GjN*-2XuK|Nmgte-L}loH;~uRaQAn7P!5RR`@-PYj literal 0 HcmV?d00001 diff --git a/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.edit/icons/full/obj16/Hardware.gif b/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.edit/icons/full/obj16/Hardware.gif new file mode 100644 index 0000000000000000000000000000000000000000..db7414e937292c344d6fd0d0805085b67650f5c8 GIT binary patch literal 129 zcmZ?wbhEHb6krfw*vtS14M4Jip`qcxfddT<4GjN*-2XuK|Nmgt|NqynH61$^yk?DM zTbqvJPZmZ722KVYkWP>p3@myECp}m1wRrvIn+pHKLf7r4thZ7UycR6{YNPjYn%Y&f W@}8BN{JP5-JKc^<6cT1+um%9XYA@gb literal 0 HcmV?d00001 diff --git a/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.edit/icons/full/obj16/If.gif b/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.edit/icons/full/obj16/If.gif new file mode 100644 index 0000000000000000000000000000000000000000..7b7c428c715e615c179d42a8462ee953741414d4 GIT binary patch literal 129 zcmZ?wbhEHb6krfw*vtS14M4Jip`qcxfddT<4GjN*-2XuK|Nmgte-L~B{QE#D2L}hm zpDc_F44e!)Ae|sH7+CZSPI|81Yw`NaHx>Seg|6F8S#PBzcr94?)kg2*G_|W{Seg|6F8S#PBzcr94?)kg2*G_|W{{h>#dXouLTRg+UR|prgqh= Vyl15*zwUCzPPZcyg@hRytO0^gFBSj* literal 0 HcmV?d00001 diff --git a/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.edit/icons/full/obj16/IntegerConstant.gif b/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.edit/icons/full/obj16/IntegerConstant.gif new file mode 100644 index 0000000000000000000000000000000000000000..48e3cf2268736efbb8bc3c5bd29315702f2b38c4 GIT binary patch literal 129 zcmZ?wbhEHb6krfw*vtS14M4Jip`qcxfddT<4GjN*-2XuK|Nmgte-JzEOd3$i!NEcC zCkrD311EzHNGHe)1{OVolb);hTD<=9O@;qqq3d>2)>|nFUJDj}wbA=HP3@{#dCy8s Se%+UQ=w@ z7OA87lZBCifs;W8q!VNY1B;%)Nzc`LEna{5ro#WQ&~>{h>#dXouLTRg+UR|prgqh= Vyl15*zwUCzPPZcyg@hRytO10rFBSj* literal 0 HcmV?d00001 diff --git a/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.edit/icons/full/obj16/IntegerSharedResource.gif b/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.edit/icons/full/obj16/IntegerSharedResource.gif new file mode 100644 index 0000000000000000000000000000000000000000..5915591825a5301b9f9a3d398baea497ef02311d GIT binary patch literal 129 zcmZ?wbhEHb6krfw*vtS14M4Jip`qcxfddT<4GjN*-2XuK|Nmgt|Nk#u?74Zf=ggV3 z0|y)wf3h$#FmN*HfOLY)U|`WRIO(~1uf^*x-&FV?7P@XXWxbV>;I&}kR~x;L)6}k- WmG`XFk literal 0 HcmV?d00001 diff --git a/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.edit/icons/full/obj16/IntegerSharedVariable.gif b/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.edit/icons/full/obj16/IntegerSharedVariable.gif new file mode 100644 index 0000000000000000000000000000000000000000..cb1755a712505aeaaa447d9b1cc5940e602f87b6 GIT binary patch literal 129 zcmZ?wbhEHb6krfw*vtS14M4Jip`qcxfddT<4GjN*-2XuK|Nmgte-L}loH;~uRaQAn7P!5RSBPcTCO literal 0 HcmV?d00001 diff --git a/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.edit/icons/full/obj16/IntegerVariable.gif b/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.edit/icons/full/obj16/IntegerVariable.gif new file mode 100644 index 0000000000000000000000000000000000000000..c673a5200a53ebd68c78c5cdb9d1bd4eaa855afb GIT binary patch literal 129 zcmZ?wbhEHb6krfw*vtS14M4Jip`qcxfddT<4GjN*-2XuK|Nmgt|Nl+bnu3o7TduLx zY12{s$->CMz{#Kk(g`wyfkn^Yr043r7O%g2Q{jJD=(^pM^;SxP*Mfy#ZS+1)Q@d(b V-m_AZUw1iUr`wTSeg|6F8S#PBzcr94?)kg2*G_|W{+|z`)6%1JVgHgMmfQ;H2m3y%w*(d{g0nSm?Ull=W6hg4cqDUv2b0PE)&T WR^GExlV5i^W2f7Zi9*7R4AuaR0y3!p literal 0 HcmV?d00001 diff --git a/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.edit/icons/full/obj16/MicroServo.gif b/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.edit/icons/full/obj16/MicroServo.gif new file mode 100644 index 0000000000000000000000000000000000000000..c4a8af418445186dec6bb4f750c13a832181fe76 GIT binary patch literal 129 zcmZ?wbhEHb6krfw*vtS14M4Jip`qcxfddT<4GjN*-2XuK|Nmgte-L}loH;-#~uRaQAn7P!5RR$a4*mR literal 0 HcmV?d00001 diff --git a/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.edit/icons/full/obj16/ModuleAssignment.gif b/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.edit/icons/full/obj16/ModuleAssignment.gif new file mode 100644 index 0000000000000000000000000000000000000000..c4fb30e96873d2484faec9d508dcbdd69e73d82e GIT binary patch literal 129 zcmZ?wbhEHb6krfw*vtS14M4Jip`qcxfddT<4GjN*-2XuK|Nmgte-L}loH;;I&}kR~x;L)6}k-mG`XF S{h>#dXouLTRg+UR|prgqh= Vyl15*zwUCzPPZcyg@hRytO0?AFBSj* literal 0 HcmV?d00001 diff --git a/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.edit/icons/full/obj16/MusicPlayer.gif b/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.edit/icons/full/obj16/MusicPlayer.gif new file mode 100644 index 0000000000000000000000000000000000000000..7b7c428c715e615c179d42a8462ee953741414d4 GIT binary patch literal 129 zcmZ?wbhEHb6krfw*vtS14M4Jip`qcxfddT<4GjN*-2XuK|Nmgte-L~B{QE#D2L}hm zpDc_F44e!)Ae|sH7+CZSPI|81Yw`NaHx>Seg|6F8S#PBzcr94?)kg2*G_|W{Gfj zmtCq<{K>+|z`)6%1JVgHgMmfQ;H2m3y%w*(d{g0nSm?Ull=W6hg4cqDUv2b0PE)&T WR^GExlV5i^W2f7Zi9*7R4AuaR$TFz_ literal 0 HcmV?d00001 diff --git a/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.edit/icons/full/obj16/Project.gif b/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.edit/icons/full/obj16/Project.gif new file mode 100644 index 0000000000000000000000000000000000000000..7bac4fd3808df6247660dfb8d76e15609f279841 GIT binary patch literal 129 zcmZ?wbhEHb6krfw*vtS14M4Jip`qcxfddT<4GjN*-2XuK|Nmgt|NndTyy)qp3@myECp}m1wRrvIn+pHKLf7r4thZ7UycR6{YNPjYn%Y&f W@}8BN{JP5-JKc^<6cT1+um%9tY%ntb literal 0 HcmV?d00001 diff --git a/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.edit/icons/full/obj16/PushButton.gif b/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.edit/icons/full/obj16/PushButton.gif new file mode 100644 index 0000000000000000000000000000000000000000..9250fecbffd185d174d53f6b7ea979f63ce222d2 GIT binary patch literal 129 zcmZ?wbhEHb6krfw*vtS14M4Jip`qcxfddT<4GjN*-2XuK|Nmgt|NqyT)*K7&Sz}q; zrW2|7lZBCifs;W8q!VNY1B;%)Nzc`LEna{5ro#WQ&~>{h>#dXouLTRg+UR|prgqh= Vyl15*zwUCzPPZcyg@hRytO0}LFBSj* literal 0 HcmV?d00001 diff --git a/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.edit/icons/full/obj16/Repeat.gif b/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.edit/icons/full/obj16/Repeat.gif new file mode 100644 index 0000000000000000000000000000000000000000..134551bff7eb3f0beb14a6c4a270a2a94f782ec5 GIT binary patch literal 129 zcmZ?wbhEHb6krfw*vtS14M4Jip`qcxfddT<4GjN*-2XuK|Nmgte-L}loH>=1mmC}% z6o0ZXGB9v5=zw&B%wS;AGdStFdauRnFW*%79~Qc9H)Xw*lHj#q;a3~IkJHqynw9sg T)a2J)&e-X8WTKETBZD;nt%5J2 literal 0 HcmV?d00001 diff --git a/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.edit/icons/full/obj16/RotationSensor.gif b/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.edit/icons/full/obj16/RotationSensor.gif new file mode 100644 index 0000000000000000000000000000000000000000..05dc74ad5da0d7b040b29537d5b24f2b120b11d5 GIT binary patch literal 129 zcmZ?wbhEHb6krfw*vtS14M4Jip`qcxfddT<4GjN*-2XuK|Nmgte-L}loH>`4RXR90 zDE?$&WMJTA&;jWLnZdxKXK>PU^p3@myECp}m1wRrvIn+pHKLf7r4thZ7UycR6{YNPjYn%Y&f W@}8BN{JP5-JKc^<6cT1+um%9tY%ntb literal 0 HcmV?d00001 diff --git a/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.edit/icons/full/obj16/SharedResource.gif b/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.edit/icons/full/obj16/SharedResource.gif new file mode 100644 index 0000000000000000000000000000000000000000..7bac4fd3808df6247660dfb8d76e15609f279841 GIT binary patch literal 129 zcmZ?wbhEHb6krfw*vtS14M4Jip`qcxfddT<4GjN*-2XuK|Nmgt|NndTyy)qp3@myECp}m1wRrvIn+pHKLf7r4thZ7UycR6{YNPjYn%Y&f W@}8BN{JP5-JKc^<6cT1+um%9tY%ntb literal 0 HcmV?d00001 diff --git a/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.edit/icons/full/obj16/SharedVariable.gif b/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.edit/icons/full/obj16/SharedVariable.gif new file mode 100644 index 0000000000000000000000000000000000000000..c4a8af418445186dec6bb4f750c13a832181fe76 GIT binary patch literal 129 zcmZ?wbhEHb6krfw*vtS14M4Jip`qcxfddT<4GjN*-2XuK|Nmgte-L}loH;-#~uRaQAn7P!5RR$a4*mR literal 0 HcmV?d00001 diff --git a/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.edit/icons/full/obj16/SharedVariableAccess.gif b/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.edit/icons/full/obj16/SharedVariableAccess.gif new file mode 100644 index 0000000000000000000000000000000000000000..33854e98c25a13543eb9477dc67b0baf87fc81aa GIT binary patch literal 129 zcmZ?wbhEHb6krfw*vtS14M4Jip`qcxfddT<4GjN*-2XuK|Nmgt|Nnblyy&@kGwsY7 zhXV%`f3h$#FmN*HfOLY)U|`WRIO(~1uf^*x-&FV?7P@XXWxbV>;I&}kR~x;L)6}k- WmG`XF=tE;%?j zDE?$&WMJTA&;jWLnZdxKXK>PU^qmH literal 0 HcmV?d00001 diff --git a/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.edit/icons/full/obj16/SoundSensor.gif b/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.edit/icons/full/obj16/SoundSensor.gif new file mode 100644 index 0000000000000000000000000000000000000000..afb82ea48a50d3fb875ce03cf0ec154e51c97cb7 GIT binary patch literal 129 zcmZ?wbhEHb6krfw*vtS14M4Jip`qcxfddT<4GjN*-2XuK|Nmgt|Nqz4G#%>+UQ=w@ z7OA87lZBCifs;W8q!VNY1B;%)Nzc`LEna{5ro#WQ&~>{h>#dXouLTRg+UR|prgqh= Vyl15*zwUCzPPZcyg@hRytO10rFBSj* literal 0 HcmV?d00001 diff --git a/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.edit/icons/full/obj16/Synchonization.gif b/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.edit/icons/full/obj16/Synchonization.gif new file mode 100644 index 0000000000000000000000000000000000000000..8a5c70cbd74c87cb3b1df383e0c242ede4660c3b GIT binary patch literal 129 zcmZ?wbhEHb6krfw*vtS14M4Jip`qcxfddT<4GjN*-2XuK|Nmgt|Nnbl?CH7LlXfP} z;ednUPZmZ722KVYkWP>p3@myECp}m1wRrvIn+pHKLf7r4thZ7UycR6{YNPjYn%Y&f W@}8BN{JP5-JKc^<6cT1+um%9u%P=zl literal 0 HcmV?d00001 diff --git a/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.edit/icons/full/obj16/Synchronization.gif b/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.edit/icons/full/obj16/Synchronization.gif new file mode 100644 index 0000000000000000000000000000000000000000..35ef84e20e26f1cef1dcd7ae80d192fd40472368 GIT binary patch literal 129 zcmZ?wbhEHb6krfw*vtS14M4Jip`qcxfddT<4GjN*-2XuK|Nmgte-L}loH-5+2OJz6 z6o0ZXGB9v5=zw&B%wS;AGdStFdauRnFW*%79~Qc9H)Xw*lHj#q;a3~IkJHqynw9sg T)a2J)&e-X8WTKETBZD;nnfEVV literal 0 HcmV?d00001 diff --git a/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.edit/icons/full/obj16/SynchronizationBlock.gif b/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.edit/icons/full/obj16/SynchronizationBlock.gif new file mode 100644 index 0000000000000000000000000000000000000000..d3dc5a9ad8159548d5ada4a1cd545ec1d4de029c GIT binary patch literal 129 zcmZ?wbhEHb6krfw*vtS14M4Jip`qcxfddT<4GjN*-2XuK|Nmgt|Nl+bt_2@EX1QjK zPFtJePZmZ722KVYkWP>p3@myECp}m1wRrvIn+pHKLf7r4thZ7UycR6{YNPjYn%Y&f W@}8BN{JP5-JKc^<6cT1+um%9ULNDL| literal 0 HcmV?d00001 diff --git a/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.edit/icons/full/obj16/Thread.gif b/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.edit/icons/full/obj16/Thread.gif new file mode 100644 index 0000000000000000000000000000000000000000..c4a8af418445186dec6bb4f750c13a832181fe76 GIT binary patch literal 129 zcmZ?wbhEHb6krfw*vtS14M4Jip`qcxfddT<4GjN*-2XuK|Nmgte-L}loH;-#~uRaQAn7P!5RR$a4*mR literal 0 HcmV?d00001 diff --git a/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.edit/icons/full/obj16/ThreadConnector.gif b/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.edit/icons/full/obj16/ThreadConnector.gif new file mode 100644 index 0000000000000000000000000000000000000000..14af8aaee9f431cebfb2b13249821419380131a3 GIT binary patch literal 129 zcmZ?wbhEHb6krfw*vtS14M4Jip`qcxfddT<4GjN*-2XuK|Nmgt|Nk#8?YX(B=giEs z0}T#}KUo+V7&sYpKsrHYFtF$uob+71*W&e;Zz}u`3thLHvffHb@LI6&tBu~rX=+!^ W%6nF7^6M^V>~uRaQAn7P!5RPxRxsiK literal 0 HcmV?d00001 diff --git a/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.edit/icons/full/obj16/UnaryBooleanExpression.gif b/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.edit/icons/full/obj16/UnaryBooleanExpression.gif new file mode 100644 index 0000000000000000000000000000000000000000..739ebbfa6ac7b44cc1632663c006f47e20f05127 GIT binary patch literal 129 zcmZ?wbhEHb6krfw*vtS14M4Jip`qcxfddT<4GjN*-2XuK|Nmgt|Nk%cytvtO^Gw>A z0}clif3h$#FmN*HfOLY)U|`WRIO(~1uf^*x-&FV?7P@XXWxbV>;I&}kR~x;L)6}k- WmG`XFR{v WEALsU$*;SdvD59yL?K~D25SItpfW}P literal 0 HcmV?d00001 diff --git a/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.edit/icons/full/obj16/Variable.gif b/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.edit/icons/full/obj16/Variable.gif new file mode 100644 index 0000000000000000000000000000000000000000..83afb9b3c9a3c3e261dd043d2232d39254ac8e4a GIT binary patch literal 129 zcmZ?wbhEHb6krfw*vtS14M4Jip`qcxfddT<4GjN*-2XuK|Nmgt|NqyTt{n?Lw#ITz zn@*eJPZmZ722KVYkWP>p3@myECp}m1wRrvIn+pHKLf7r4thZ7UycR6{YNPjYn%Y&f W@}8BN{JP5-JKc^<6cT1+um%9V)-T`y literal 0 HcmV?d00001 diff --git a/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.edit/icons/full/obj16/VariableAssignment.gif b/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.edit/icons/full/obj16/VariableAssignment.gif new file mode 100644 index 0000000000000000000000000000000000000000..30f0c48da8d4450f7e94a696c4de0a7cc41aa728 GIT binary patch literal 129 zcmZ?wbhEHb6krfw*vtS14M4Jip`qcxfddT<4GjN*-2XuK|Nmgte-L}loH;~uRaQAn7P!5RR`@-PYj literal 0 HcmV?d00001 diff --git a/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.edit/icons/full/obj16/VariableDeclaration.gif b/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.edit/icons/full/obj16/VariableDeclaration.gif new file mode 100644 index 0000000000000000000000000000000000000000..48e3cf2268736efbb8bc3c5bd29315702f2b38c4 GIT binary patch literal 129 zcmZ?wbhEHb6krfw*vtS14M4Jip`qcxfddT<4GjN*-2XuK|Nmgte-JzEOd3$i!NEcC zCkrD311EzHNGHe)1{OVolb);hTD<=9O@;qqq3d>2)>|nFUJDj}wbA=HP3@{#dCy8s Se%CMz{#Kk(g`wyfkn^Yr043r7O%g2Q{jJD=(^pM^;SxP*Mfy#ZS+1)Q@d(b V-m_AZUw1iUr`wT + + + + + + + + + + + + diff --git a/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.edit/src-gen/fr/obeo/dsl/arduino/provider/AmbientLightSensorItemProvider.java b/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.edit/src-gen/fr/obeo/dsl/arduino/provider/AmbientLightSensorItemProvider.java new file mode 100644 index 00000000..b70265af --- /dev/null +++ b/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.edit/src-gen/fr/obeo/dsl/arduino/provider/AmbientLightSensorItemProvider.java @@ -0,0 +1,107 @@ +/** + * Copyright (c) 2013 Obeo. + * 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: + * Obeo - initial API and implementation + */ +package fr.obeo.dsl.arduino.provider; + + +import fr.obeo.dsl.arduino.AmbientLightSensor; + +import java.util.Collection; +import java.util.List; + +import org.eclipse.emf.common.notify.AdapterFactory; +import org.eclipse.emf.common.notify.Notification; + +import org.eclipse.emf.edit.provider.IItemPropertyDescriptor; + +/** + * This is the item provider adapter for a {@link fr.obeo.dsl.arduino.AmbientLightSensor} object. + * + * + * @generated + */ +public class AmbientLightSensorItemProvider extends ArduinoAnalogModuleItemProvider { + /** + * This constructs an instance from a factory and a notifier. + * + * + * @generated + */ + public AmbientLightSensorItemProvider(AdapterFactory adapterFactory) { + super(adapterFactory); + } + + /** + * This returns the property descriptors for the adapted class. + * + * + * @generated + */ + @Override + public List getPropertyDescriptors(Object object) { + if (itemPropertyDescriptors == null) { + super.getPropertyDescriptors(object); + + } + return itemPropertyDescriptors; + } + + /** + * This returns AmbientLightSensor.gif. + * + * + * @generated + */ + @Override + public Object getImage(Object object) { + return overlayImage(object, getResourceLocator().getImage("full/obj16/AmbientLightSensor")); + } + + /** + * This returns the label text for the adapted class. + * + * + * @generated + */ + @Override + public String getText(Object object) { + String label = ((AmbientLightSensor)object).getName(); + return label == null || label.length() == 0 ? + getString("_UI_AmbientLightSensor_type") : + getString("_UI_AmbientLightSensor_type") + " " + label; + } + + + /** + * This handles model notifications by calling {@link #updateChildren} to update any cached + * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}. + * + * + * @generated + */ + @Override + public void notifyChanged(Notification notification) { + updateChildren(notification); + super.notifyChanged(notification); + } + + /** + * This adds {@link org.eclipse.emf.edit.command.CommandParameter}s describing the children + * that can be created under this object. + * + * + * @generated + */ + @Override + protected void collectNewChildDescriptors(Collection newChildDescriptors, Object object) { + super.collectNewChildDescriptors(newChildDescriptors, object); + } + +} diff --git a/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.edit/src-gen/fr/obeo/dsl/arduino/provider/AnalogPinItemProvider.java b/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.edit/src-gen/fr/obeo/dsl/arduino/provider/AnalogPinItemProvider.java new file mode 100644 index 00000000..d7cf93d3 --- /dev/null +++ b/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.edit/src-gen/fr/obeo/dsl/arduino/provider/AnalogPinItemProvider.java @@ -0,0 +1,166 @@ +/** + * Copyright (c) 2013 Obeo. + * 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: + * Obeo - initial API and implementation + */ +package fr.obeo.dsl.arduino.provider; + + +import fr.obeo.dsl.arduino.AnalogPin; +import fr.obeo.dsl.arduino.ArduinoFactory; +import fr.obeo.dsl.arduino.ArduinoPackage; + +import java.util.Collection; +import java.util.List; + +import org.eclipse.emf.common.notify.AdapterFactory; +import org.eclipse.emf.common.notify.Notification; + +import org.eclipse.emf.ecore.EStructuralFeature; + +import org.eclipse.emf.edit.provider.IItemPropertyDescriptor; +import org.eclipse.emf.edit.provider.ViewerNotification; + +/** + * This is the item provider adapter for a {@link fr.obeo.dsl.arduino.AnalogPin} object. + * + * + * @generated + */ +public class AnalogPinItemProvider extends PinItemProvider { + /** + * This constructs an instance from a factory and a notifier. + * + * + * @generated + */ + public AnalogPinItemProvider(AdapterFactory adapterFactory) { + super(adapterFactory); + } + + /** + * This returns the property descriptors for the adapted class. + * + * + * @generated + */ + @Override + public List getPropertyDescriptors(Object object) { + if (itemPropertyDescriptors == null) { + super.getPropertyDescriptors(object); + + } + return itemPropertyDescriptors; + } + + /** + * This specifies how to implement {@link #getChildren} and is used to deduce an appropriate feature for an + * {@link org.eclipse.emf.edit.command.AddCommand}, {@link org.eclipse.emf.edit.command.RemoveCommand} or + * {@link org.eclipse.emf.edit.command.MoveCommand} in {@link #createCommand}. + * + * + * @generated + */ + @Override + public Collection getChildrenFeatures(Object object) { + if (childrenFeatures == null) { + super.getChildrenFeatures(object); + childrenFeatures.add(ArduinoPackage.Literals.ANALOG_PIN__MODULE); + } + return childrenFeatures; + } + + /** + * + * + * @generated + */ + @Override + protected EStructuralFeature getChildFeature(Object object, Object child) { + // Check the type of the specified child object and return the proper feature to use for + // adding (see {@link AddCommand}) it as a child. + + return super.getChildFeature(object, child); + } + + /** + * This returns AnalogPin.gif. + * + * + * @generated + */ + @Override + public Object getImage(Object object) { + return overlayImage(object, getResourceLocator().getImage("full/obj16/AnalogPin")); + } + + /** + * This returns the label text for the adapted class. + * + * + * @generated + */ + @Override + public String getText(Object object) { + AnalogPin analogPin = (AnalogPin)object; + return getString("_UI_AnalogPin_type") + " " + analogPin.getId(); + } + + + /** + * This handles model notifications by calling {@link #updateChildren} to update any cached + * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}. + * + * + * @generated + */ + @Override + public void notifyChanged(Notification notification) { + updateChildren(notification); + + switch (notification.getFeatureID(AnalogPin.class)) { + case ArduinoPackage.ANALOG_PIN__MODULE: + fireNotifyChanged(new ViewerNotification(notification, notification.getNotifier(), true, false)); + return; + } + super.notifyChanged(notification); + } + + /** + * This adds {@link org.eclipse.emf.edit.command.CommandParameter}s describing the children + * that can be created under this object. + * + * + * @generated + */ + @Override + protected void collectNewChildDescriptors(Collection newChildDescriptors, Object object) { + super.collectNewChildDescriptors(newChildDescriptors, object); + + newChildDescriptors.add + (createChildParameter + (ArduinoPackage.Literals.ANALOG_PIN__MODULE, + ArduinoFactory.eINSTANCE.createRotationSensor())); + + newChildDescriptors.add + (createChildParameter + (ArduinoPackage.Literals.ANALOG_PIN__MODULE, + ArduinoFactory.eINSTANCE.createAmbientLightSensor())); + + newChildDescriptors.add + (createChildParameter + (ArduinoPackage.Literals.ANALOG_PIN__MODULE, + ArduinoFactory.eINSTANCE.createSoundSensor())); + + newChildDescriptors.add + (createChildParameter + (ArduinoPackage.Literals.ANALOG_PIN__MODULE, + ArduinoFactory.eINSTANCE.createMusicPlayer())); + } + +} diff --git a/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.edit/src-gen/fr/obeo/dsl/arduino/provider/ArduinoAnalogModuleItemProvider.java b/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.edit/src-gen/fr/obeo/dsl/arduino/provider/ArduinoAnalogModuleItemProvider.java new file mode 100644 index 00000000..44b74537 --- /dev/null +++ b/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.edit/src-gen/fr/obeo/dsl/arduino/provider/ArduinoAnalogModuleItemProvider.java @@ -0,0 +1,96 @@ +/** + * Copyright (c) 2013 Obeo. + * 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: + * Obeo - initial API and implementation + */ +package fr.obeo.dsl.arduino.provider; + + +import fr.obeo.dsl.arduino.ArduinoAnalogModule; + +import java.util.Collection; +import java.util.List; + +import org.eclipse.emf.common.notify.AdapterFactory; +import org.eclipse.emf.common.notify.Notification; + +import org.eclipse.emf.edit.provider.IItemPropertyDescriptor; + +/** + * This is the item provider adapter for a {@link fr.obeo.dsl.arduino.ArduinoAnalogModule} object. + * + * + * @generated + */ +public class ArduinoAnalogModuleItemProvider extends ArduinoModuleItemProvider { + /** + * This constructs an instance from a factory and a notifier. + * + * + * @generated + */ + public ArduinoAnalogModuleItemProvider(AdapterFactory adapterFactory) { + super(adapterFactory); + } + + /** + * This returns the property descriptors for the adapted class. + * + * + * @generated + */ + @Override + public List getPropertyDescriptors(Object object) { + if (itemPropertyDescriptors == null) { + super.getPropertyDescriptors(object); + + } + return itemPropertyDescriptors; + } + + /** + * This returns the label text for the adapted class. + * + * + * @generated + */ + @Override + public String getText(Object object) { + String label = ((ArduinoAnalogModule)object).getName(); + return label == null || label.length() == 0 ? + getString("_UI_ArduinoAnalogModule_type") : + getString("_UI_ArduinoAnalogModule_type") + " " + label; + } + + + /** + * This handles model notifications by calling {@link #updateChildren} to update any cached + * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}. + * + * + * @generated + */ + @Override + public void notifyChanged(Notification notification) { + updateChildren(notification); + super.notifyChanged(notification); + } + + /** + * This adds {@link org.eclipse.emf.edit.command.CommandParameter}s describing the children + * that can be created under this object. + * + * + * @generated + */ + @Override + protected void collectNewChildDescriptors(Collection newChildDescriptors, Object object) { + super.collectNewChildDescriptors(newChildDescriptors, object); + } + +} diff --git a/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.edit/src-gen/fr/obeo/dsl/arduino/provider/ArduinoBoardItemProvider.java b/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.edit/src-gen/fr/obeo/dsl/arduino/provider/ArduinoBoardItemProvider.java new file mode 100644 index 00000000..05642608 --- /dev/null +++ b/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.edit/src-gen/fr/obeo/dsl/arduino/provider/ArduinoBoardItemProvider.java @@ -0,0 +1,160 @@ +/** + * Copyright (c) 2013 Obeo. + * 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: + * Obeo - initial API and implementation + */ +package fr.obeo.dsl.arduino.provider; + + +import fr.obeo.dsl.arduino.ArduinoBoard; +import fr.obeo.dsl.arduino.ArduinoFactory; +import fr.obeo.dsl.arduino.ArduinoPackage; + +import java.util.Collection; +import java.util.List; + +import org.eclipse.emf.common.notify.AdapterFactory; +import org.eclipse.emf.common.notify.Notification; + +import org.eclipse.emf.ecore.EStructuralFeature; + +import org.eclipse.emf.edit.provider.IItemPropertyDescriptor; +import org.eclipse.emf.edit.provider.ViewerNotification; + +/** + * This is the item provider adapter for a {@link fr.obeo.dsl.arduino.ArduinoBoard} object. + * + * + * @generated + */ +public class ArduinoBoardItemProvider extends BoardItemProvider { + /** + * This constructs an instance from a factory and a notifier. + * + * + * @generated + */ + public ArduinoBoardItemProvider(AdapterFactory adapterFactory) { + super(adapterFactory); + } + + /** + * This returns the property descriptors for the adapted class. + * + * + * @generated + */ + @Override + public List getPropertyDescriptors(Object object) { + if (itemPropertyDescriptors == null) { + super.getPropertyDescriptors(object); + + } + return itemPropertyDescriptors; + } + + /** + * This specifies how to implement {@link #getChildren} and is used to deduce an appropriate feature for an + * {@link org.eclipse.emf.edit.command.AddCommand}, {@link org.eclipse.emf.edit.command.RemoveCommand} or + * {@link org.eclipse.emf.edit.command.MoveCommand} in {@link #createCommand}. + * + * + * @generated + */ + @Override + public Collection getChildrenFeatures(Object object) { + if (childrenFeatures == null) { + super.getChildrenFeatures(object); + childrenFeatures.add(ArduinoPackage.Literals.ARDUINO_BOARD__DIGITAL_PINS); + childrenFeatures.add(ArduinoPackage.Literals.ARDUINO_BOARD__ANALOG_PINS); + } + return childrenFeatures; + } + + /** + * + * + * @generated + */ + @Override + protected EStructuralFeature getChildFeature(Object object, Object child) { + // Check the type of the specified child object and return the proper feature to use for + // adding (see {@link AddCommand}) it as a child. + + return super.getChildFeature(object, child); + } + + /** + * This returns ArduinoBoard.gif. + * + * + * @generated + */ + @Override + public Object getImage(Object object) { + return overlayImage(object, getResourceLocator().getImage("full/obj16/ArduinoBoard")); + } + + /** + * This returns the label text for the adapted class. + * + * + * @generated + */ + @Override + public String getText(Object object) { + String label = ((ArduinoBoard)object).getName(); + return label == null || label.length() == 0 ? + getString("_UI_ArduinoBoard_type") : + getString("_UI_ArduinoBoard_type") + " " + label; + } + + + /** + * This handles model notifications by calling {@link #updateChildren} to update any cached + * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}. + * + * + * @generated + */ + @Override + public void notifyChanged(Notification notification) { + updateChildren(notification); + + switch (notification.getFeatureID(ArduinoBoard.class)) { + case ArduinoPackage.ARDUINO_BOARD__DIGITAL_PINS: + case ArduinoPackage.ARDUINO_BOARD__ANALOG_PINS: + fireNotifyChanged(new ViewerNotification(notification, notification.getNotifier(), true, false)); + return; + } + super.notifyChanged(notification); + } + + /** + * This adds {@link org.eclipse.emf.edit.command.CommandParameter}s describing the children + * that can be created under this object. + * + * + * @generated + */ + @Override + protected void collectNewChildDescriptors(Collection newChildDescriptors, Object object) { + super.collectNewChildDescriptors(newChildDescriptors, object); + + newChildDescriptors.add + (createChildParameter + (ArduinoPackage.Literals.ARDUINO_BOARD__DIGITAL_PINS, + ArduinoFactory.eINSTANCE.createDigitalPin())); + + newChildDescriptors.add + (createChildParameter + (ArduinoPackage.Literals.ARDUINO_BOARD__ANALOG_PINS, + ArduinoFactory.eINSTANCE.createAnalogPin())); + } + +} diff --git a/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.edit/src-gen/fr/obeo/dsl/arduino/provider/ArduinoDigitalModuleItemProvider.java b/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.edit/src-gen/fr/obeo/dsl/arduino/provider/ArduinoDigitalModuleItemProvider.java new file mode 100644 index 00000000..cad1f28d --- /dev/null +++ b/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.edit/src-gen/fr/obeo/dsl/arduino/provider/ArduinoDigitalModuleItemProvider.java @@ -0,0 +1,96 @@ +/** + * Copyright (c) 2013 Obeo. + * 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: + * Obeo - initial API and implementation + */ +package fr.obeo.dsl.arduino.provider; + + +import fr.obeo.dsl.arduino.ArduinoDigitalModule; + +import java.util.Collection; +import java.util.List; + +import org.eclipse.emf.common.notify.AdapterFactory; +import org.eclipse.emf.common.notify.Notification; + +import org.eclipse.emf.edit.provider.IItemPropertyDescriptor; + +/** + * This is the item provider adapter for a {@link fr.obeo.dsl.arduino.ArduinoDigitalModule} object. + * + * + * @generated + */ +public class ArduinoDigitalModuleItemProvider extends ArduinoModuleItemProvider { + /** + * This constructs an instance from a factory and a notifier. + * + * + * @generated + */ + public ArduinoDigitalModuleItemProvider(AdapterFactory adapterFactory) { + super(adapterFactory); + } + + /** + * This returns the property descriptors for the adapted class. + * + * + * @generated + */ + @Override + public List getPropertyDescriptors(Object object) { + if (itemPropertyDescriptors == null) { + super.getPropertyDescriptors(object); + + } + return itemPropertyDescriptors; + } + + /** + * This returns the label text for the adapted class. + * + * + * @generated + */ + @Override + public String getText(Object object) { + String label = ((ArduinoDigitalModule)object).getName(); + return label == null || label.length() == 0 ? + getString("_UI_ArduinoDigitalModule_type") : + getString("_UI_ArduinoDigitalModule_type") + " " + label; + } + + + /** + * This handles model notifications by calling {@link #updateChildren} to update any cached + * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}. + * + * + * @generated + */ + @Override + public void notifyChanged(Notification notification) { + updateChildren(notification); + super.notifyChanged(notification); + } + + /** + * This adds {@link org.eclipse.emf.edit.command.CommandParameter}s describing the children + * that can be created under this object. + * + * + * @generated + */ + @Override + protected void collectNewChildDescriptors(Collection newChildDescriptors, Object object) { + super.collectNewChildDescriptors(newChildDescriptors, object); + } + +} diff --git a/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.edit/src-gen/fr/obeo/dsl/arduino/provider/ArduinoEditPlugin.java b/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.edit/src-gen/fr/obeo/dsl/arduino/provider/ArduinoEditPlugin.java new file mode 100644 index 00000000..fe6061cb --- /dev/null +++ b/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.edit/src-gen/fr/obeo/dsl/arduino/provider/ArduinoEditPlugin.java @@ -0,0 +1,97 @@ +/** + * Copyright (c) 2013 Obeo. + * 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: + * Obeo - initial API and implementation + */ +package fr.obeo.dsl.arduino.provider; + +import org.eclipse.emf.common.EMFPlugin; + +import org.eclipse.emf.common.util.ResourceLocator; + +/** + * This is the central singleton for the Arduino edit plugin. + * + * + * @generated + */ +public final class ArduinoEditPlugin extends EMFPlugin { + /** + * Keep track of the singleton. + * + * + * @generated + */ + public static final ArduinoEditPlugin INSTANCE = new ArduinoEditPlugin(); + + /** + * Keep track of the singleton. + * + * + * @generated + */ + private static Implementation plugin; + + /** + * Create the instance. + * + * + * @generated + */ + public ArduinoEditPlugin() { + super + (new ResourceLocator [] { + }); + } + + /** + * Returns the singleton instance of the Eclipse plugin. + * + * + * @return the singleton instance. + * @generated + */ + @Override + public ResourceLocator getPluginResourceLocator() { + return plugin; + } + + /** + * Returns the singleton instance of the Eclipse plugin. + * + * + * @return the singleton instance. + * @generated + */ + public static Implementation getPlugin() { + return plugin; + } + + /** + * The actual implementation of the Eclipse Plugin. + * + * + * @generated + */ + public static class Implementation extends EclipsePlugin { + /** + * Creates an instance. + * + * + * @generated + */ + public Implementation() { + super(); + + // Remember the static instance. + // + plugin = this; + } + } + +} diff --git a/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.edit/src-gen/fr/obeo/dsl/arduino/provider/ArduinoItemProviderAdapterFactory.java b/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.edit/src-gen/fr/obeo/dsl/arduino/provider/ArduinoItemProviderAdapterFactory.java new file mode 100644 index 00000000..8f5a446a --- /dev/null +++ b/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.edit/src-gen/fr/obeo/dsl/arduino/provider/ArduinoItemProviderAdapterFactory.java @@ -0,0 +1,1095 @@ +/** + * Copyright (c) 2013 Obeo. + * 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: + * Obeo - initial API and implementation + */ +package fr.obeo.dsl.arduino.provider; + +import fr.obeo.dsl.arduino.util.ArduinoAdapterFactory; + +import java.util.ArrayList; +import java.util.Collection; + +import org.eclipse.emf.common.notify.Adapter; +import org.eclipse.emf.common.notify.Notification; +import org.eclipse.emf.common.notify.Notifier; + +import org.eclipse.emf.edit.provider.ChangeNotifier; +import org.eclipse.emf.edit.provider.ComposeableAdapterFactory; +import org.eclipse.emf.edit.provider.ComposedAdapterFactory; +import org.eclipse.emf.edit.provider.IChangeNotifier; +import org.eclipse.emf.edit.provider.IDisposable; +import org.eclipse.emf.edit.provider.IEditingDomainItemProvider; +import org.eclipse.emf.edit.provider.IItemLabelProvider; +import org.eclipse.emf.edit.provider.IItemPropertySource; +import org.eclipse.emf.edit.provider.INotifyChangedListener; +import org.eclipse.emf.edit.provider.IStructuredItemContentProvider; +import org.eclipse.emf.edit.provider.ITreeItemContentProvider; + +/** + * This is the factory that is used to provide the interfaces needed to support Viewers. + * The adapters generated by this factory convert EMF adapter notifications into calls to {@link #fireNotifyChanged fireNotifyChanged}. + * The adapters also support Eclipse property sheets. + * Note that most of the adapters are shared among multiple instances. + * + * + * @generated + */ +public class ArduinoItemProviderAdapterFactory extends ArduinoAdapterFactory implements ComposeableAdapterFactory, IChangeNotifier, IDisposable { + /** + * This keeps track of the root adapter factory that delegates to this adapter factory. + * + * + * @generated + */ + protected ComposedAdapterFactory parentAdapterFactory; + + /** + * This is used to implement {@link org.eclipse.emf.edit.provider.IChangeNotifier}. + * + * + * @generated + */ + protected IChangeNotifier changeNotifier = new ChangeNotifier(); + + /** + * This keeps track of all the supported types checked by {@link #isFactoryForType isFactoryForType}. + * + * + * @generated + */ + protected Collection supportedTypes = new ArrayList(); + + /** + * This constructs an instance. + * + * + * @generated + */ + public ArduinoItemProviderAdapterFactory() { + supportedTypes.add(IEditingDomainItemProvider.class); + supportedTypes.add(IStructuredItemContentProvider.class); + supportedTypes.add(ITreeItemContentProvider.class); + supportedTypes.add(IItemLabelProvider.class); + supportedTypes.add(IItemPropertySource.class); + } + + /** + * This keeps track of the one adapter used for all {@link fr.obeo.dsl.arduino.DigitalPin} instances. + * + * + * @generated + */ + protected DigitalPinItemProvider digitalPinItemProvider; + + /** + * This creates an adapter for a {@link fr.obeo.dsl.arduino.DigitalPin}. + * + * + * @generated + */ + @Override + public Adapter createDigitalPinAdapter() { + if (digitalPinItemProvider == null) { + digitalPinItemProvider = new DigitalPinItemProvider(this); + } + + return digitalPinItemProvider; + } + + /** + * This keeps track of the one adapter used for all {@link fr.obeo.dsl.arduino.AnalogPin} instances. + * + * + * @generated + */ + protected AnalogPinItemProvider analogPinItemProvider; + + /** + * This creates an adapter for a {@link fr.obeo.dsl.arduino.AnalogPin}. + * + * + * @generated + */ + @Override + public Adapter createAnalogPinAdapter() { + if (analogPinItemProvider == null) { + analogPinItemProvider = new AnalogPinItemProvider(this); + } + + return analogPinItemProvider; + } + + /** + * This keeps track of the one adapter used for all {@link fr.obeo.dsl.arduino.Sketch} instances. + * + * + * @generated + */ + protected SketchItemProvider sketchItemProvider; + + /** + * This creates an adapter for a {@link fr.obeo.dsl.arduino.Sketch}. + * + * + * @generated + */ + @Override + public Adapter createSketchAdapter() { + if (sketchItemProvider == null) { + sketchItemProvider = new SketchItemProvider(this); + } + + return sketchItemProvider; + } + + /** + * This keeps track of the one adapter used for all {@link fr.obeo.dsl.arduino.Project} instances. + * + * + * @generated + */ + protected ProjectItemProvider projectItemProvider; + + /** + * This creates an adapter for a {@link fr.obeo.dsl.arduino.Project}. + * + * + * @generated + */ + @Override + public Adapter createProjectAdapter() { + if (projectItemProvider == null) { + projectItemProvider = new ProjectItemProvider(this); + } + + return projectItemProvider; + } + + /** + * This keeps track of the one adapter used for all {@link fr.obeo.dsl.arduino.ModuleAssignment} instances. + * + * + * @generated + */ + protected ModuleAssignmentItemProvider moduleAssignmentItemProvider; + + /** + * This creates an adapter for a {@link fr.obeo.dsl.arduino.ModuleAssignment}. + * + * + * @generated + */ + @Override + public Adapter createModuleAssignmentAdapter() { + if (moduleAssignmentItemProvider == null) { + moduleAssignmentItemProvider = new ModuleAssignmentItemProvider(this); + } + + return moduleAssignmentItemProvider; + } + + /** + * This keeps track of the one adapter used for all {@link fr.obeo.dsl.arduino.Delay} instances. + * + * + * @generated + */ + protected DelayItemProvider delayItemProvider; + + /** + * This creates an adapter for a {@link fr.obeo.dsl.arduino.Delay}. + * + * + * @generated + */ + @Override + public Adapter createDelayAdapter() { + if (delayItemProvider == null) { + delayItemProvider = new DelayItemProvider(this); + } + + return delayItemProvider; + } + + /** + * This keeps track of the one adapter used for all {@link fr.obeo.dsl.arduino.Repeat} instances. + * + * + * @generated + */ + protected RepeatItemProvider repeatItemProvider; + + /** + * This creates an adapter for a {@link fr.obeo.dsl.arduino.Repeat}. + * + * + * @generated + */ + @Override + public Adapter createRepeatAdapter() { + if (repeatItemProvider == null) { + repeatItemProvider = new RepeatItemProvider(this); + } + + return repeatItemProvider; + } + + /** + * This keeps track of the one adapter used for all {@link fr.obeo.dsl.arduino.While} instances. + * + * + * @generated + */ + protected WhileItemProvider whileItemProvider; + + /** + * This creates an adapter for a {@link fr.obeo.dsl.arduino.While}. + * + * + * @generated + */ + @Override + public Adapter createWhileAdapter() { + if (whileItemProvider == null) { + whileItemProvider = new WhileItemProvider(this); + } + + return whileItemProvider; + } + + /** + * This keeps track of the one adapter used for all {@link fr.obeo.dsl.arduino.VariableAssignment} instances. + * + * + * @generated + */ + protected VariableAssignmentItemProvider variableAssignmentItemProvider; + + /** + * This creates an adapter for a {@link fr.obeo.dsl.arduino.VariableAssignment}. + * + * + * @generated + */ + @Override + public Adapter createVariableAssignmentAdapter() { + if (variableAssignmentItemProvider == null) { + variableAssignmentItemProvider = new VariableAssignmentItemProvider(this); + } + + return variableAssignmentItemProvider; + } + + /** + * This keeps track of the one adapter used for all {@link fr.obeo.dsl.arduino.BinaryIntegerExpression} instances. + * + * + * @generated + */ + protected BinaryIntegerExpressionItemProvider binaryIntegerExpressionItemProvider; + + /** + * This creates an adapter for a {@link fr.obeo.dsl.arduino.BinaryIntegerExpression}. + * + * + * @generated + */ + @Override + public Adapter createBinaryIntegerExpressionAdapter() { + if (binaryIntegerExpressionItemProvider == null) { + binaryIntegerExpressionItemProvider = new BinaryIntegerExpressionItemProvider(this); + } + + return binaryIntegerExpressionItemProvider; + } + + /** + * This keeps track of the one adapter used for all {@link fr.obeo.dsl.arduino.BinaryBooleanExpression} instances. + * + * + * @generated + */ + protected BinaryBooleanExpressionItemProvider binaryBooleanExpressionItemProvider; + + /** + * This creates an adapter for a {@link fr.obeo.dsl.arduino.BinaryBooleanExpression}. + * + * + * @generated + */ + @Override + public Adapter createBinaryBooleanExpressionAdapter() { + if (binaryBooleanExpressionItemProvider == null) { + binaryBooleanExpressionItemProvider = new BinaryBooleanExpressionItemProvider(this); + } + + return binaryBooleanExpressionItemProvider; + } + + /** + * This keeps track of the one adapter used for all {@link fr.obeo.dsl.arduino.If} instances. + * + * + * @generated + */ + protected IfItemProvider ifItemProvider; + + /** + * This creates an adapter for a {@link fr.obeo.dsl.arduino.If}. + * + * + * @generated + */ + @Override + public Adapter createIfAdapter() { + if (ifItemProvider == null) { + ifItemProvider = new IfItemProvider(this); + } + + return ifItemProvider; + } + + /** + * This keeps track of the one adapter used for all {@link fr.obeo.dsl.arduino.IntegerConstant} instances. + * + * + * @generated + */ + protected IntegerConstantItemProvider integerConstantItemProvider; + + /** + * This creates an adapter for a {@link fr.obeo.dsl.arduino.IntegerConstant}. + * + * + * @generated + */ + @Override + public Adapter createIntegerConstantAdapter() { + if (integerConstantItemProvider == null) { + integerConstantItemProvider = new IntegerConstantItemProvider(this); + } + + return integerConstantItemProvider; + } + + /** + * This keeps track of the one adapter used for all {@link fr.obeo.dsl.arduino.BooleanConstant} instances. + * + * + * @generated + */ + protected BooleanConstantItemProvider booleanConstantItemProvider; + + /** + * This creates an adapter for a {@link fr.obeo.dsl.arduino.BooleanConstant}. + * + * + * @generated + */ + @Override + public Adapter createBooleanConstantAdapter() { + if (booleanConstantItemProvider == null) { + booleanConstantItemProvider = new BooleanConstantItemProvider(this); + } + + return booleanConstantItemProvider; + } + + /** + * This keeps track of the one adapter used for all {@link fr.obeo.dsl.arduino.IntegerVariable} instances. + * + * + * @generated + */ + protected IntegerVariableItemProvider integerVariableItemProvider; + + /** + * This creates an adapter for a {@link fr.obeo.dsl.arduino.IntegerVariable}. + * + * + * @generated + */ + @Override + public Adapter createIntegerVariableAdapter() { + if (integerVariableItemProvider == null) { + integerVariableItemProvider = new IntegerVariableItemProvider(this); + } + + return integerVariableItemProvider; + } + + /** + * This keeps track of the one adapter used for all {@link fr.obeo.dsl.arduino.BooleanVariable} instances. + * + * + * @generated + */ + protected BooleanVariableItemProvider booleanVariableItemProvider; + + /** + * This creates an adapter for a {@link fr.obeo.dsl.arduino.BooleanVariable}. + * + * + * @generated + */ + @Override + public Adapter createBooleanVariableAdapter() { + if (booleanVariableItemProvider == null) { + booleanVariableItemProvider = new BooleanVariableItemProvider(this); + } + + return booleanVariableItemProvider; + } + + /** + * This keeps track of the one adapter used for all {@link fr.obeo.dsl.arduino.BooleanModuleGet} instances. + * + * + * @generated + */ + protected BooleanModuleGetItemProvider booleanModuleGetItemProvider; + + /** + * This creates an adapter for a {@link fr.obeo.dsl.arduino.BooleanModuleGet}. + * + * + * @generated + */ + @Override + public Adapter createBooleanModuleGetAdapter() { + if (booleanModuleGetItemProvider == null) { + booleanModuleGetItemProvider = new BooleanModuleGetItemProvider(this); + } + + return booleanModuleGetItemProvider; + } + + /** + * This keeps track of the one adapter used for all {@link fr.obeo.dsl.arduino.IntegerModuleGet} instances. + * + * + * @generated + */ + protected IntegerModuleGetItemProvider integerModuleGetItemProvider; + + /** + * This creates an adapter for a {@link fr.obeo.dsl.arduino.IntegerModuleGet}. + * + * + * @generated + */ + @Override + public Adapter createIntegerModuleGetAdapter() { + if (integerModuleGetItemProvider == null) { + integerModuleGetItemProvider = new IntegerModuleGetItemProvider(this); + } + + return integerModuleGetItemProvider; + } + + /** + * This keeps track of the one adapter used for all {@link fr.obeo.dsl.arduino.UnaryBooleanExpression} instances. + * + * + * @generated + */ + protected UnaryBooleanExpressionItemProvider unaryBooleanExpressionItemProvider; + + /** + * This creates an adapter for a {@link fr.obeo.dsl.arduino.UnaryBooleanExpression}. + * + * + * @generated + */ + @Override + public Adapter createUnaryBooleanExpressionAdapter() { + if (unaryBooleanExpressionItemProvider == null) { + unaryBooleanExpressionItemProvider = new UnaryBooleanExpressionItemProvider(this); + } + + return unaryBooleanExpressionItemProvider; + } + + /** + * This keeps track of the one adapter used for all {@link fr.obeo.dsl.arduino.UnaryIntegerExpression} instances. + * + * + * @generated + */ + protected UnaryIntegerExpressionItemProvider unaryIntegerExpressionItemProvider; + + /** + * This creates an adapter for a {@link fr.obeo.dsl.arduino.UnaryIntegerExpression}. + * + * + * @generated + */ + @Override + public Adapter createUnaryIntegerExpressionAdapter() { + if (unaryIntegerExpressionItemProvider == null) { + unaryIntegerExpressionItemProvider = new UnaryIntegerExpressionItemProvider(this); + } + + return unaryIntegerExpressionItemProvider; + } + + /** + * This keeps track of the one adapter used for all {@link fr.obeo.dsl.arduino.VariableDeclaration} instances. + * + * + * @generated + */ + protected VariableDeclarationItemProvider variableDeclarationItemProvider; + + /** + * This creates an adapter for a {@link fr.obeo.dsl.arduino.VariableDeclaration}. + * + * + * @generated + */ + @Override + public Adapter createVariableDeclarationAdapter() { + if (variableDeclarationItemProvider == null) { + variableDeclarationItemProvider = new VariableDeclarationItemProvider(this); + } + + return variableDeclarationItemProvider; + } + + /** + * This keeps track of the one adapter used for all {@link fr.obeo.dsl.arduino.VariableRef} instances. + * + * + * @generated + */ + protected VariableRefItemProvider variableRefItemProvider; + + /** + * This creates an adapter for a {@link fr.obeo.dsl.arduino.VariableRef}. + * + * + * @generated + */ + @Override + public Adapter createVariableRefAdapter() { + if (variableRefItemProvider == null) { + variableRefItemProvider = new VariableRefItemProvider(this); + } + + return variableRefItemProvider; + } + + /** + * This keeps track of the one adapter used for all {@link fr.obeo.dsl.arduino.LED} instances. + * + * + * @generated + */ + protected LEDItemProvider ledItemProvider; + + /** + * This creates an adapter for a {@link fr.obeo.dsl.arduino.LED}. + * + * + * @generated + */ + @Override + public Adapter createLEDAdapter() { + if (ledItemProvider == null) { + ledItemProvider = new LEDItemProvider(this); + } + + return ledItemProvider; + } + + /** + * This keeps track of the one adapter used for all {@link fr.obeo.dsl.arduino.PushButton} instances. + * + * + * @generated + */ + protected PushButtonItemProvider pushButtonItemProvider; + + /** + * This creates an adapter for a {@link fr.obeo.dsl.arduino.PushButton}. + * + * + * @generated + */ + @Override + public Adapter createPushButtonAdapter() { + if (pushButtonItemProvider == null) { + pushButtonItemProvider = new PushButtonItemProvider(this); + } + + return pushButtonItemProvider; + } + + /** + * This keeps track of the one adapter used for all {@link fr.obeo.dsl.arduino.Buzzer} instances. + * + * + * @generated + */ + protected BuzzerItemProvider buzzerItemProvider; + + /** + * This creates an adapter for a {@link fr.obeo.dsl.arduino.Buzzer}. + * + * + * @generated + */ + @Override + public Adapter createBuzzerAdapter() { + if (buzzerItemProvider == null) { + buzzerItemProvider = new BuzzerItemProvider(this); + } + + return buzzerItemProvider; + } + + /** + * This keeps track of the one adapter used for all {@link fr.obeo.dsl.arduino.RotationSensor} instances. + * + * + * @generated + */ + protected RotationSensorItemProvider rotationSensorItemProvider; + + /** + * This creates an adapter for a {@link fr.obeo.dsl.arduino.RotationSensor}. + * + * + * @generated + */ + @Override + public Adapter createRotationSensorAdapter() { + if (rotationSensorItemProvider == null) { + rotationSensorItemProvider = new RotationSensorItemProvider(this); + } + + return rotationSensorItemProvider; + } + + /** + * This keeps track of the one adapter used for all {@link fr.obeo.dsl.arduino.MicroServo} instances. + * + * + * @generated + */ + protected MicroServoItemProvider microServoItemProvider; + + /** + * This creates an adapter for a {@link fr.obeo.dsl.arduino.MicroServo}. + * + * + * @generated + */ + @Override + public Adapter createMicroServoAdapter() { + if (microServoItemProvider == null) { + microServoItemProvider = new MicroServoItemProvider(this); + } + + return microServoItemProvider; + } + + /** + * This keeps track of the one adapter used for all {@link fr.obeo.dsl.arduino.InfraRedSensor} instances. + * + * + * @generated + */ + protected InfraRedSensorItemProvider infraRedSensorItemProvider; + + /** + * This creates an adapter for a {@link fr.obeo.dsl.arduino.InfraRedSensor}. + * + * + * @generated + */ + @Override + public Adapter createInfraRedSensorAdapter() { + if (infraRedSensorItemProvider == null) { + infraRedSensorItemProvider = new InfraRedSensorItemProvider(this); + } + + return infraRedSensorItemProvider; + } + + /** + * This keeps track of the one adapter used for all {@link fr.obeo.dsl.arduino.AmbientLightSensor} instances. + * + * + * @generated + */ + protected AmbientLightSensorItemProvider ambientLightSensorItemProvider; + + /** + * This creates an adapter for a {@link fr.obeo.dsl.arduino.AmbientLightSensor}. + * + * + * @generated + */ + @Override + public Adapter createAmbientLightSensorAdapter() { + if (ambientLightSensorItemProvider == null) { + ambientLightSensorItemProvider = new AmbientLightSensorItemProvider(this); + } + + return ambientLightSensorItemProvider; + } + + /** + * This keeps track of the one adapter used for all {@link fr.obeo.dsl.arduino.SoundSensor} instances. + * + * + * @generated + */ + protected SoundSensorItemProvider soundSensorItemProvider; + + /** + * This creates an adapter for a {@link fr.obeo.dsl.arduino.SoundSensor}. + * + * + * @generated + */ + @Override + public Adapter createSoundSensorAdapter() { + if (soundSensorItemProvider == null) { + soundSensorItemProvider = new SoundSensorItemProvider(this); + } + + return soundSensorItemProvider; + } + + /** + * This keeps track of the one adapter used for all {@link fr.obeo.dsl.arduino.Fan} instances. + * + * + * @generated + */ + protected FanItemProvider fanItemProvider; + + /** + * This creates an adapter for a {@link fr.obeo.dsl.arduino.Fan}. + * + * + * @generated + */ + @Override + public Adapter createFanAdapter() { + if (fanItemProvider == null) { + fanItemProvider = new FanItemProvider(this); + } + + return fanItemProvider; + } + + /** + * This keeps track of the one adapter used for all {@link fr.obeo.dsl.arduino.MusicPlayer} instances. + * + * + * @generated + */ + protected MusicPlayerItemProvider musicPlayerItemProvider; + + /** + * This creates an adapter for a {@link fr.obeo.dsl.arduino.MusicPlayer}. + * + * + * @generated + */ + @Override + public Adapter createMusicPlayerAdapter() { + if (musicPlayerItemProvider == null) { + musicPlayerItemProvider = new MusicPlayerItemProvider(this); + } + + return musicPlayerItemProvider; + } + + /** + * This keeps track of the one adapter used for all {@link fr.obeo.dsl.arduino.ArduinoBoard} instances. + * + * + * @generated + */ + protected ArduinoBoardItemProvider arduinoBoardItemProvider; + + /** + * This creates an adapter for a {@link fr.obeo.dsl.arduino.ArduinoBoard}. + * + * + * @generated + */ + @Override + public Adapter createArduinoBoardAdapter() { + if (arduinoBoardItemProvider == null) { + arduinoBoardItemProvider = new ArduinoBoardItemProvider(this); + } + + return arduinoBoardItemProvider; + } + + /** + * This keeps track of the one adapter used for all {@link fr.obeo.dsl.arduino.Thread} instances. + * + * + * @generated + */ + protected ThreadItemProvider threadItemProvider; + + /** + * This creates an adapter for a {@link fr.obeo.dsl.arduino.Thread}. + * + * + * @generated + */ + @Override + public Adapter createThreadAdapter() { + if (threadItemProvider == null) { + threadItemProvider = new ThreadItemProvider(this); + } + + return threadItemProvider; + } + + /** + * This keeps track of the one adapter used for all {@link fr.obeo.dsl.arduino.Channel} instances. + * + * + * @generated + */ + protected ChannelItemProvider channelItemProvider; + + /** + * This creates an adapter for a {@link fr.obeo.dsl.arduino.Channel}. + * + * + * @generated + */ + @Override + public Adapter createChannelAdapter() { + if (channelItemProvider == null) { + channelItemProvider = new ChannelItemProvider(this); + } + + return channelItemProvider; + } + + /** + * This keeps track of the one adapter used for all {@link fr.obeo.dsl.arduino.Link} instances. + * + * + * @generated + */ + protected LinkItemProvider linkItemProvider; + + /** + * This creates an adapter for a {@link fr.obeo.dsl.arduino.Link}. + * + * + * @generated + */ + @Override + public Adapter createLinkAdapter() { + if (linkItemProvider == null) { + linkItemProvider = new LinkItemProvider(this); + } + + return linkItemProvider; + } + + /** + * This keeps track of the one adapter used for all {@link fr.obeo.dsl.arduino.SynchronizationBlock} instances. + * + * + * @generated + */ + protected SynchronizationBlockItemProvider synchronizationBlockItemProvider; + + /** + * This creates an adapter for a {@link fr.obeo.dsl.arduino.SynchronizationBlock}. + * + * + * @generated + */ + @Override + public Adapter createSynchronizationBlockAdapter() { + if (synchronizationBlockItemProvider == null) { + synchronizationBlockItemProvider = new SynchronizationBlockItemProvider(this); + } + + return synchronizationBlockItemProvider; + } + + /** + * This keeps track of the one adapter used for all {@link fr.obeo.dsl.arduino.InstructionBlock} instances. + * + * + * @generated + */ + protected InstructionBlockItemProvider instructionBlockItemProvider; + + /** + * This creates an adapter for a {@link fr.obeo.dsl.arduino.InstructionBlock}. + * + * + * @generated + */ + @Override + public Adapter createInstructionBlockAdapter() { + if (instructionBlockItemProvider == null) { + instructionBlockItemProvider = new InstructionBlockItemProvider(this); + } + + return instructionBlockItemProvider; + } + + /** + * This returns the root adapter factory that contains this factory. + * + * + * @generated + */ + public ComposeableAdapterFactory getRootAdapterFactory() { + return parentAdapterFactory == null ? this : parentAdapterFactory.getRootAdapterFactory(); + } + + /** + * This sets the composed adapter factory that contains this factory. + * + * + * @generated + */ + public void setParentAdapterFactory(ComposedAdapterFactory parentAdapterFactory) { + this.parentAdapterFactory = parentAdapterFactory; + } + + /** + * + * + * @generated + */ + @Override + public boolean isFactoryForType(Object type) { + return supportedTypes.contains(type) || super.isFactoryForType(type); + } + + /** + * This implementation substitutes the factory itself as the key for the adapter. + * + * + * @generated + */ + @Override + public Adapter adapt(Notifier notifier, Object type) { + return super.adapt(notifier, this); + } + + /** + * + * + * @generated + */ + @Override + public Object adapt(Object object, Object type) { + if (isFactoryForType(type)) { + Object adapter = super.adapt(object, type); + if (!(type instanceof Class) || (((Class)type).isInstance(adapter))) { + return adapter; + } + } + + return null; + } + + /** + * This adds a listener. + * + * + * @generated + */ + public void addListener(INotifyChangedListener notifyChangedListener) { + changeNotifier.addListener(notifyChangedListener); + } + + /** + * This removes a listener. + * + * + * @generated + */ + public void removeListener(INotifyChangedListener notifyChangedListener) { + changeNotifier.removeListener(notifyChangedListener); + } + + /** + * This delegates to {@link #changeNotifier} and to {@link #parentAdapterFactory}. + * + * + * @generated + */ + public void fireNotifyChanged(Notification notification) { + changeNotifier.fireNotifyChanged(notification); + + if (parentAdapterFactory != null) { + parentAdapterFactory.fireNotifyChanged(notification); + } + } + + /** + * This disposes all of the item providers created by this factory. + * + * + * @generated + */ + public void dispose() { + if (digitalPinItemProvider != null) digitalPinItemProvider.dispose(); + if (analogPinItemProvider != null) analogPinItemProvider.dispose(); + if (sketchItemProvider != null) sketchItemProvider.dispose(); + if (projectItemProvider != null) projectItemProvider.dispose(); + if (moduleAssignmentItemProvider != null) moduleAssignmentItemProvider.dispose(); + if (delayItemProvider != null) delayItemProvider.dispose(); + if (repeatItemProvider != null) repeatItemProvider.dispose(); + if (whileItemProvider != null) whileItemProvider.dispose(); + if (variableAssignmentItemProvider != null) variableAssignmentItemProvider.dispose(); + if (binaryIntegerExpressionItemProvider != null) binaryIntegerExpressionItemProvider.dispose(); + if (binaryBooleanExpressionItemProvider != null) binaryBooleanExpressionItemProvider.dispose(); + if (ifItemProvider != null) ifItemProvider.dispose(); + if (integerConstantItemProvider != null) integerConstantItemProvider.dispose(); + if (booleanConstantItemProvider != null) booleanConstantItemProvider.dispose(); + if (integerVariableItemProvider != null) integerVariableItemProvider.dispose(); + if (booleanVariableItemProvider != null) booleanVariableItemProvider.dispose(); + if (booleanModuleGetItemProvider != null) booleanModuleGetItemProvider.dispose(); + if (integerModuleGetItemProvider != null) integerModuleGetItemProvider.dispose(); + if (unaryBooleanExpressionItemProvider != null) unaryBooleanExpressionItemProvider.dispose(); + if (unaryIntegerExpressionItemProvider != null) unaryIntegerExpressionItemProvider.dispose(); + if (variableDeclarationItemProvider != null) variableDeclarationItemProvider.dispose(); + if (variableRefItemProvider != null) variableRefItemProvider.dispose(); + if (ledItemProvider != null) ledItemProvider.dispose(); + if (pushButtonItemProvider != null) pushButtonItemProvider.dispose(); + if (buzzerItemProvider != null) buzzerItemProvider.dispose(); + if (rotationSensorItemProvider != null) rotationSensorItemProvider.dispose(); + if (microServoItemProvider != null) microServoItemProvider.dispose(); + if (infraRedSensorItemProvider != null) infraRedSensorItemProvider.dispose(); + if (ambientLightSensorItemProvider != null) ambientLightSensorItemProvider.dispose(); + if (soundSensorItemProvider != null) soundSensorItemProvider.dispose(); + if (fanItemProvider != null) fanItemProvider.dispose(); + if (musicPlayerItemProvider != null) musicPlayerItemProvider.dispose(); + if (arduinoBoardItemProvider != null) arduinoBoardItemProvider.dispose(); + if (threadItemProvider != null) threadItemProvider.dispose(); + if (channelItemProvider != null) channelItemProvider.dispose(); + if (linkItemProvider != null) linkItemProvider.dispose(); + if (synchronizationBlockItemProvider != null) synchronizationBlockItemProvider.dispose(); + if (instructionBlockItemProvider != null) instructionBlockItemProvider.dispose(); + } + +} diff --git a/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.edit/src-gen/fr/obeo/dsl/arduino/provider/ArduinoModuleItemProvider.java b/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.edit/src-gen/fr/obeo/dsl/arduino/provider/ArduinoModuleItemProvider.java new file mode 100644 index 00000000..1fc1bfb7 --- /dev/null +++ b/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.edit/src-gen/fr/obeo/dsl/arduino/provider/ArduinoModuleItemProvider.java @@ -0,0 +1,129 @@ +/** + * Copyright (c) 2013 Obeo. + * 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: + * Obeo - initial API and implementation + */ +package fr.obeo.dsl.arduino.provider; + + +import fr.obeo.dsl.arduino.ArduinoModule; +import fr.obeo.dsl.arduino.ArduinoPackage; + +import java.util.Collection; +import java.util.List; + +import org.eclipse.emf.common.notify.AdapterFactory; +import org.eclipse.emf.common.notify.Notification; + +import org.eclipse.emf.edit.provider.ComposeableAdapterFactory; +import org.eclipse.emf.edit.provider.IItemPropertyDescriptor; +import org.eclipse.emf.edit.provider.ItemPropertyDescriptor; +import org.eclipse.emf.edit.provider.ViewerNotification; + +/** + * This is the item provider adapter for a {@link fr.obeo.dsl.arduino.ArduinoModule} object. + * + * + * @generated + */ +public class ArduinoModuleItemProvider extends NamedElementItemProvider { + /** + * This constructs an instance from a factory and a notifier. + * + * + * @generated + */ + public ArduinoModuleItemProvider(AdapterFactory adapterFactory) { + super(adapterFactory); + } + + /** + * This returns the property descriptors for the adapted class. + * + * + * @generated + */ + @Override + public List getPropertyDescriptors(Object object) { + if (itemPropertyDescriptors == null) { + super.getPropertyDescriptors(object); + + addLevelPropertyDescriptor(object); + } + return itemPropertyDescriptors; + } + + /** + * This adds a property descriptor for the Level feature. + * + * + * @generated + */ + protected void addLevelPropertyDescriptor(Object object) { + itemPropertyDescriptors.add + (createItemPropertyDescriptor + (((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(), + getResourceLocator(), + getString("_UI_Module_level_feature"), + getString("_UI_PropertyDescriptor_description", "_UI_Module_level_feature", "_UI_Module_type"), + ArduinoPackage.Literals.MODULE__LEVEL, + true, + false, + false, + ItemPropertyDescriptor.BOOLEAN_VALUE_IMAGE, + null, + null)); + } + + /** + * This returns the label text for the adapted class. + * + * + * @generated + */ + @Override + public String getText(Object object) { + String label = ((ArduinoModule)object).getName(); + return label == null || label.length() == 0 ? + getString("_UI_ArduinoModule_type") : + getString("_UI_ArduinoModule_type") + " " + label; + } + + + /** + * This handles model notifications by calling {@link #updateChildren} to update any cached + * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}. + * + * + * @generated + */ + @Override + public void notifyChanged(Notification notification) { + updateChildren(notification); + + switch (notification.getFeatureID(ArduinoModule.class)) { + case ArduinoPackage.ARDUINO_MODULE__LEVEL: + fireNotifyChanged(new ViewerNotification(notification, notification.getNotifier(), false, true)); + return; + } + super.notifyChanged(notification); + } + + /** + * This adds {@link org.eclipse.emf.edit.command.CommandParameter}s describing the children + * that can be created under this object. + * + * + * @generated + */ + @Override + protected void collectNewChildDescriptors(Collection newChildDescriptors, Object object) { + super.collectNewChildDescriptors(newChildDescriptors, object); + } + +} diff --git a/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.edit/src-gen/fr/obeo/dsl/arduino/provider/AssignmentItemProvider.java b/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.edit/src-gen/fr/obeo/dsl/arduino/provider/AssignmentItemProvider.java new file mode 100644 index 00000000..27404a1a --- /dev/null +++ b/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.edit/src-gen/fr/obeo/dsl/arduino/provider/AssignmentItemProvider.java @@ -0,0 +1,192 @@ +/** + * Copyright (c) 2013 Obeo. + * 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: + * Obeo - initial API and implementation + */ +package fr.obeo.dsl.arduino.provider; + + +import fr.obeo.dsl.arduino.ArduinoFactory; +import fr.obeo.dsl.arduino.ArduinoPackage; +import fr.obeo.dsl.arduino.Assignment; + +import java.util.Collection; +import java.util.List; + +import org.eclipse.emf.common.notify.AdapterFactory; +import org.eclipse.emf.common.notify.Notification; + +import org.eclipse.emf.ecore.EStructuralFeature; + +import org.eclipse.emf.edit.provider.IItemPropertyDescriptor; +import org.eclipse.emf.edit.provider.ViewerNotification; + +/** + * This is the item provider adapter for a {@link fr.obeo.dsl.arduino.Assignment} object. + * + * + * @generated + */ +public class AssignmentItemProvider extends InstructionItemProvider { + /** + * This constructs an instance from a factory and a notifier. + * + * + * @generated + */ + public AssignmentItemProvider(AdapterFactory adapterFactory) { + super(adapterFactory); + } + + /** + * This returns the property descriptors for the adapted class. + * + * + * @generated + */ + @Override + public List getPropertyDescriptors(Object object) { + if (itemPropertyDescriptors == null) { + super.getPropertyDescriptors(object); + + } + return itemPropertyDescriptors; + } + + /** + * This specifies how to implement {@link #getChildren} and is used to deduce an appropriate feature for an + * {@link org.eclipse.emf.edit.command.AddCommand}, {@link org.eclipse.emf.edit.command.RemoveCommand} or + * {@link org.eclipse.emf.edit.command.MoveCommand} in {@link #createCommand}. + * + * + * @generated + */ + @Override + public Collection getChildrenFeatures(Object object) { + if (childrenFeatures == null) { + super.getChildrenFeatures(object); + childrenFeatures.add(ArduinoPackage.Literals.ASSIGNMENT__OPERAND); + } + return childrenFeatures; + } + + /** + * + * + * @generated + */ + @Override + protected EStructuralFeature getChildFeature(Object object, Object child) { + // Check the type of the specified child object and return the proper feature to use for + // adding (see {@link AddCommand}) it as a child. + + return super.getChildFeature(object, child); + } + + /** + * This returns the label text for the adapted class. + * + * + * @generated + */ + @Override + public String getText(Object object) { + String label = ((Assignment)object).getName(); + return label == null || label.length() == 0 ? + getString("_UI_Assignment_type") : + getString("_UI_Assignment_type") + " " + label; + } + + + /** + * This handles model notifications by calling {@link #updateChildren} to update any cached + * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}. + * + * + * @generated + */ + @Override + public void notifyChanged(Notification notification) { + updateChildren(notification); + + switch (notification.getFeatureID(Assignment.class)) { + case ArduinoPackage.ASSIGNMENT__OPERAND: + fireNotifyChanged(new ViewerNotification(notification, notification.getNotifier(), true, false)); + return; + } + super.notifyChanged(notification); + } + + /** + * This adds {@link org.eclipse.emf.edit.command.CommandParameter}s describing the children + * that can be created under this object. + * + * + * @generated + */ + @Override + protected void collectNewChildDescriptors(Collection newChildDescriptors, Object object) { + super.collectNewChildDescriptors(newChildDescriptors, object); + + newChildDescriptors.add + (createChildParameter + (ArduinoPackage.Literals.ASSIGNMENT__OPERAND, + ArduinoFactory.eINSTANCE.createBinaryIntegerExpression())); + + newChildDescriptors.add + (createChildParameter + (ArduinoPackage.Literals.ASSIGNMENT__OPERAND, + ArduinoFactory.eINSTANCE.createBinaryBooleanExpression())); + + newChildDescriptors.add + (createChildParameter + (ArduinoPackage.Literals.ASSIGNMENT__OPERAND, + ArduinoFactory.eINSTANCE.createIntegerConstant())); + + newChildDescriptors.add + (createChildParameter + (ArduinoPackage.Literals.ASSIGNMENT__OPERAND, + ArduinoFactory.eINSTANCE.createBooleanConstant())); + + newChildDescriptors.add + (createChildParameter + (ArduinoPackage.Literals.ASSIGNMENT__OPERAND, + ArduinoFactory.eINSTANCE.createIntegerVariable())); + + newChildDescriptors.add + (createChildParameter + (ArduinoPackage.Literals.ASSIGNMENT__OPERAND, + ArduinoFactory.eINSTANCE.createBooleanVariable())); + + newChildDescriptors.add + (createChildParameter + (ArduinoPackage.Literals.ASSIGNMENT__OPERAND, + ArduinoFactory.eINSTANCE.createBooleanModuleGet())); + + newChildDescriptors.add + (createChildParameter + (ArduinoPackage.Literals.ASSIGNMENT__OPERAND, + ArduinoFactory.eINSTANCE.createIntegerModuleGet())); + + newChildDescriptors.add + (createChildParameter + (ArduinoPackage.Literals.ASSIGNMENT__OPERAND, + ArduinoFactory.eINSTANCE.createUnaryBooleanExpression())); + + newChildDescriptors.add + (createChildParameter + (ArduinoPackage.Literals.ASSIGNMENT__OPERAND, + ArduinoFactory.eINSTANCE.createUnaryIntegerExpression())); + + newChildDescriptors.add + (createChildParameter + (ArduinoPackage.Literals.ASSIGNMENT__OPERAND, + ArduinoFactory.eINSTANCE.createVariableRef())); + } + +} diff --git a/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.edit/src-gen/fr/obeo/dsl/arduino/provider/BinaryBooleanExpressionItemProvider.java b/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.edit/src-gen/fr/obeo/dsl/arduino/provider/BinaryBooleanExpressionItemProvider.java new file mode 100644 index 00000000..a50ab54a --- /dev/null +++ b/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.edit/src-gen/fr/obeo/dsl/arduino/provider/BinaryBooleanExpressionItemProvider.java @@ -0,0 +1,165 @@ +/** + * Copyright (c) 2013 Obeo. + * 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: + * Obeo - initial API and implementation + */ +package fr.obeo.dsl.arduino.provider; + + +import fr.obeo.dsl.arduino.ArduinoPackage; +import fr.obeo.dsl.arduino.BinaryBooleanExpression; +import fr.obeo.dsl.arduino.BinaryBooleanOperatorKind; + +import java.util.Collection; +import java.util.List; + +import org.eclipse.emf.common.notify.AdapterFactory; +import org.eclipse.emf.common.notify.Notification; + +import org.eclipse.emf.edit.provider.ComposeableAdapterFactory; +import org.eclipse.emf.edit.provider.IItemPropertyDescriptor; +import org.eclipse.emf.edit.provider.ItemPropertyDescriptor; +import org.eclipse.emf.edit.provider.ViewerNotification; + +/** + * This is the item provider adapter for a {@link fr.obeo.dsl.arduino.BinaryBooleanExpression} object. + * + * + * @generated + */ +public class BinaryBooleanExpressionItemProvider extends BinaryExpressionItemProvider { + /** + * This constructs an instance from a factory and a notifier. + * + * + * @generated + */ + public BinaryBooleanExpressionItemProvider(AdapterFactory adapterFactory) { + super(adapterFactory); + } + + /** + * This returns the property descriptors for the adapted class. + * + * + * @generated + */ + @Override + public List getPropertyDescriptors(Object object) { + if (itemPropertyDescriptors == null) { + super.getPropertyDescriptors(object); + + addOperatorPropertyDescriptor(object); + } + return itemPropertyDescriptors; + } + + /** + * This adds a property descriptor for the Operator feature. + * + * + * @generated + */ + protected void addOperatorPropertyDescriptor(Object object) { + itemPropertyDescriptors.add + (createItemPropertyDescriptor + (((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(), + getResourceLocator(), + getString("_UI_BinaryBooleanExpression_operator_feature"), + getString("_UI_PropertyDescriptor_description", "_UI_BinaryBooleanExpression_operator_feature", "_UI_BinaryBooleanExpression_type"), + ArduinoPackage.Literals.BINARY_BOOLEAN_EXPRESSION__OPERATOR, + true, + false, + false, + ItemPropertyDescriptor.GENERIC_VALUE_IMAGE, + null, + null)); + } + + /** + * This returns BinaryBooleanExpression.gif. + * + * + * @generated + */ + @Override + public Object getImage(Object object) { + return overlayImage(object, getResourceLocator().getImage("full/obj16/BinaryBooleanExpression")); + } + + /** + * This returns the label text for the adapted class. + * + * + * @generated + */ + @Override + public String getText(Object object) { + BinaryBooleanOperatorKind labelValue = ((BinaryBooleanExpression)object).getOperator(); + String label = labelValue == null ? null : labelValue.toString(); + return label == null || label.length() == 0 ? + getString("_UI_BinaryBooleanExpression_type") : + getString("_UI_BinaryBooleanExpression_type") + " " + label; + } + + + /** + * This handles model notifications by calling {@link #updateChildren} to update any cached + * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}. + * + * + * @generated + */ + @Override + public void notifyChanged(Notification notification) { + updateChildren(notification); + + switch (notification.getFeatureID(BinaryBooleanExpression.class)) { + case ArduinoPackage.BINARY_BOOLEAN_EXPRESSION__OPERATOR: + fireNotifyChanged(new ViewerNotification(notification, notification.getNotifier(), false, true)); + return; + } + super.notifyChanged(notification); + } + + /** + * This adds {@link org.eclipse.emf.edit.command.CommandParameter}s describing the children + * that can be created under this object. + * + * + * @generated + */ + @Override + protected void collectNewChildDescriptors(Collection newChildDescriptors, Object object) { + super.collectNewChildDescriptors(newChildDescriptors, object); + } + + /** + * This returns the label text for {@link org.eclipse.emf.edit.command.CreateChildCommand}. + * + * + * @generated + */ + @Override + public String getCreateChildText(Object owner, Object feature, Object child, Collection selection) { + Object childFeature = feature; + Object childObject = child; + + boolean qualify = + childFeature == ArduinoPackage.Literals.BINARY_EXPRESSION__LEFT || + childFeature == ArduinoPackage.Literals.BINARY_EXPRESSION__RIGHT; + + if (qualify) { + return getString + ("_UI_CreateChild_text2", + new Object[] { getTypeText(childObject), getFeatureText(childFeature), getTypeText(owner) }); + } + return super.getCreateChildText(owner, feature, child, selection); + } + +} diff --git a/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.edit/src-gen/fr/obeo/dsl/arduino/provider/BinaryExpressionItemProvider.java b/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.edit/src-gen/fr/obeo/dsl/arduino/provider/BinaryExpressionItemProvider.java new file mode 100644 index 00000000..54826b5c --- /dev/null +++ b/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.edit/src-gen/fr/obeo/dsl/arduino/provider/BinaryExpressionItemProvider.java @@ -0,0 +1,269 @@ +/** + * Copyright (c) 2013 Obeo. + * 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: + * Obeo - initial API and implementation + */ +package fr.obeo.dsl.arduino.provider; + + +import fr.obeo.dsl.arduino.ArduinoFactory; +import fr.obeo.dsl.arduino.ArduinoPackage; +import fr.obeo.dsl.arduino.BinaryExpression; + +import java.util.Collection; +import java.util.List; + +import org.eclipse.emf.common.notify.AdapterFactory; +import org.eclipse.emf.common.notify.Notification; + +import org.eclipse.emf.ecore.EStructuralFeature; + +import org.eclipse.emf.edit.provider.IItemPropertyDescriptor; +import org.eclipse.emf.edit.provider.ViewerNotification; + +/** + * This is the item provider adapter for a {@link fr.obeo.dsl.arduino.BinaryExpression} object. + * + * + * @generated + */ +public class BinaryExpressionItemProvider extends ExpressionItemProvider { + /** + * This constructs an instance from a factory and a notifier. + * + * + * @generated + */ + public BinaryExpressionItemProvider(AdapterFactory adapterFactory) { + super(adapterFactory); + } + + /** + * This returns the property descriptors for the adapted class. + * + * + * @generated + */ + @Override + public List getPropertyDescriptors(Object object) { + if (itemPropertyDescriptors == null) { + super.getPropertyDescriptors(object); + + } + return itemPropertyDescriptors; + } + + /** + * This specifies how to implement {@link #getChildren} and is used to deduce an appropriate feature for an + * {@link org.eclipse.emf.edit.command.AddCommand}, {@link org.eclipse.emf.edit.command.RemoveCommand} or + * {@link org.eclipse.emf.edit.command.MoveCommand} in {@link #createCommand}. + * + * + * @generated + */ + @Override + public Collection getChildrenFeatures(Object object) { + if (childrenFeatures == null) { + super.getChildrenFeatures(object); + childrenFeatures.add(ArduinoPackage.Literals.BINARY_EXPRESSION__LEFT); + childrenFeatures.add(ArduinoPackage.Literals.BINARY_EXPRESSION__RIGHT); + } + return childrenFeatures; + } + + /** + * + * + * @generated + */ + @Override + protected EStructuralFeature getChildFeature(Object object, Object child) { + // Check the type of the specified child object and return the proper feature to use for + // adding (see {@link AddCommand}) it as a child. + + return super.getChildFeature(object, child); + } + + /** + * This returns the label text for the adapted class. + * + * + * @generated + */ + @Override + public String getText(Object object) { + return getString("_UI_BinaryExpression_type"); + } + + + /** + * This handles model notifications by calling {@link #updateChildren} to update any cached + * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}. + * + * + * @generated + */ + @Override + public void notifyChanged(Notification notification) { + updateChildren(notification); + + switch (notification.getFeatureID(BinaryExpression.class)) { + case ArduinoPackage.BINARY_EXPRESSION__LEFT: + case ArduinoPackage.BINARY_EXPRESSION__RIGHT: + fireNotifyChanged(new ViewerNotification(notification, notification.getNotifier(), true, false)); + return; + } + super.notifyChanged(notification); + } + + /** + * This adds {@link org.eclipse.emf.edit.command.CommandParameter}s describing the children + * that can be created under this object. + * + * + * @generated + */ + @Override + protected void collectNewChildDescriptors(Collection newChildDescriptors, Object object) { + super.collectNewChildDescriptors(newChildDescriptors, object); + + newChildDescriptors.add + (createChildParameter + (ArduinoPackage.Literals.BINARY_EXPRESSION__LEFT, + ArduinoFactory.eINSTANCE.createBinaryIntegerExpression())); + + newChildDescriptors.add + (createChildParameter + (ArduinoPackage.Literals.BINARY_EXPRESSION__LEFT, + ArduinoFactory.eINSTANCE.createBinaryBooleanExpression())); + + newChildDescriptors.add + (createChildParameter + (ArduinoPackage.Literals.BINARY_EXPRESSION__LEFT, + ArduinoFactory.eINSTANCE.createIntegerConstant())); + + newChildDescriptors.add + (createChildParameter + (ArduinoPackage.Literals.BINARY_EXPRESSION__LEFT, + ArduinoFactory.eINSTANCE.createBooleanConstant())); + + newChildDescriptors.add + (createChildParameter + (ArduinoPackage.Literals.BINARY_EXPRESSION__LEFT, + ArduinoFactory.eINSTANCE.createIntegerVariable())); + + newChildDescriptors.add + (createChildParameter + (ArduinoPackage.Literals.BINARY_EXPRESSION__LEFT, + ArduinoFactory.eINSTANCE.createBooleanVariable())); + + newChildDescriptors.add + (createChildParameter + (ArduinoPackage.Literals.BINARY_EXPRESSION__LEFT, + ArduinoFactory.eINSTANCE.createBooleanModuleGet())); + + newChildDescriptors.add + (createChildParameter + (ArduinoPackage.Literals.BINARY_EXPRESSION__LEFT, + ArduinoFactory.eINSTANCE.createIntegerModuleGet())); + + newChildDescriptors.add + (createChildParameter + (ArduinoPackage.Literals.BINARY_EXPRESSION__LEFT, + ArduinoFactory.eINSTANCE.createUnaryBooleanExpression())); + + newChildDescriptors.add + (createChildParameter + (ArduinoPackage.Literals.BINARY_EXPRESSION__LEFT, + ArduinoFactory.eINSTANCE.createUnaryIntegerExpression())); + + newChildDescriptors.add + (createChildParameter + (ArduinoPackage.Literals.BINARY_EXPRESSION__LEFT, + ArduinoFactory.eINSTANCE.createVariableRef())); + + newChildDescriptors.add + (createChildParameter + (ArduinoPackage.Literals.BINARY_EXPRESSION__RIGHT, + ArduinoFactory.eINSTANCE.createBinaryIntegerExpression())); + + newChildDescriptors.add + (createChildParameter + (ArduinoPackage.Literals.BINARY_EXPRESSION__RIGHT, + ArduinoFactory.eINSTANCE.createBinaryBooleanExpression())); + + newChildDescriptors.add + (createChildParameter + (ArduinoPackage.Literals.BINARY_EXPRESSION__RIGHT, + ArduinoFactory.eINSTANCE.createIntegerConstant())); + + newChildDescriptors.add + (createChildParameter + (ArduinoPackage.Literals.BINARY_EXPRESSION__RIGHT, + ArduinoFactory.eINSTANCE.createBooleanConstant())); + + newChildDescriptors.add + (createChildParameter + (ArduinoPackage.Literals.BINARY_EXPRESSION__RIGHT, + ArduinoFactory.eINSTANCE.createIntegerVariable())); + + newChildDescriptors.add + (createChildParameter + (ArduinoPackage.Literals.BINARY_EXPRESSION__RIGHT, + ArduinoFactory.eINSTANCE.createBooleanVariable())); + + newChildDescriptors.add + (createChildParameter + (ArduinoPackage.Literals.BINARY_EXPRESSION__RIGHT, + ArduinoFactory.eINSTANCE.createBooleanModuleGet())); + + newChildDescriptors.add + (createChildParameter + (ArduinoPackage.Literals.BINARY_EXPRESSION__RIGHT, + ArduinoFactory.eINSTANCE.createIntegerModuleGet())); + + newChildDescriptors.add + (createChildParameter + (ArduinoPackage.Literals.BINARY_EXPRESSION__RIGHT, + ArduinoFactory.eINSTANCE.createUnaryBooleanExpression())); + + newChildDescriptors.add + (createChildParameter + (ArduinoPackage.Literals.BINARY_EXPRESSION__RIGHT, + ArduinoFactory.eINSTANCE.createUnaryIntegerExpression())); + + newChildDescriptors.add + (createChildParameter + (ArduinoPackage.Literals.BINARY_EXPRESSION__RIGHT, + ArduinoFactory.eINSTANCE.createVariableRef())); + } + + /** + * This returns the label text for {@link org.eclipse.emf.edit.command.CreateChildCommand}. + * + * + * @generated + */ + @Override + public String getCreateChildText(Object owner, Object feature, Object child, Collection selection) { + Object childFeature = feature; + Object childObject = child; + + boolean qualify = + childFeature == ArduinoPackage.Literals.BINARY_EXPRESSION__LEFT || + childFeature == ArduinoPackage.Literals.BINARY_EXPRESSION__RIGHT; + + if (qualify) { + return getString + ("_UI_CreateChild_text2", + new Object[] { getTypeText(childObject), getFeatureText(childFeature), getTypeText(owner) }); + } + return super.getCreateChildText(owner, feature, child, selection); + } + +} diff --git a/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.edit/src-gen/fr/obeo/dsl/arduino/provider/BinaryIntegerExpressionItemProvider.java b/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.edit/src-gen/fr/obeo/dsl/arduino/provider/BinaryIntegerExpressionItemProvider.java new file mode 100644 index 00000000..9dbf8627 --- /dev/null +++ b/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.edit/src-gen/fr/obeo/dsl/arduino/provider/BinaryIntegerExpressionItemProvider.java @@ -0,0 +1,165 @@ +/** + * Copyright (c) 2013 Obeo. + * 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: + * Obeo - initial API and implementation + */ +package fr.obeo.dsl.arduino.provider; + + +import fr.obeo.dsl.arduino.ArduinoPackage; +import fr.obeo.dsl.arduino.BinaryIntegerExpression; +import fr.obeo.dsl.arduino.BinaryIntegerOperatorKind; + +import java.util.Collection; +import java.util.List; + +import org.eclipse.emf.common.notify.AdapterFactory; +import org.eclipse.emf.common.notify.Notification; + +import org.eclipse.emf.edit.provider.ComposeableAdapterFactory; +import org.eclipse.emf.edit.provider.IItemPropertyDescriptor; +import org.eclipse.emf.edit.provider.ItemPropertyDescriptor; +import org.eclipse.emf.edit.provider.ViewerNotification; + +/** + * This is the item provider adapter for a {@link fr.obeo.dsl.arduino.BinaryIntegerExpression} object. + * + * + * @generated + */ +public class BinaryIntegerExpressionItemProvider extends BinaryExpressionItemProvider { + /** + * This constructs an instance from a factory and a notifier. + * + * + * @generated + */ + public BinaryIntegerExpressionItemProvider(AdapterFactory adapterFactory) { + super(adapterFactory); + } + + /** + * This returns the property descriptors for the adapted class. + * + * + * @generated + */ + @Override + public List getPropertyDescriptors(Object object) { + if (itemPropertyDescriptors == null) { + super.getPropertyDescriptors(object); + + addOperatorPropertyDescriptor(object); + } + return itemPropertyDescriptors; + } + + /** + * This adds a property descriptor for the Operator feature. + * + * + * @generated + */ + protected void addOperatorPropertyDescriptor(Object object) { + itemPropertyDescriptors.add + (createItemPropertyDescriptor + (((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(), + getResourceLocator(), + getString("_UI_BinaryIntegerExpression_operator_feature"), + getString("_UI_PropertyDescriptor_description", "_UI_BinaryIntegerExpression_operator_feature", "_UI_BinaryIntegerExpression_type"), + ArduinoPackage.Literals.BINARY_INTEGER_EXPRESSION__OPERATOR, + true, + false, + false, + ItemPropertyDescriptor.GENERIC_VALUE_IMAGE, + null, + null)); + } + + /** + * This returns BinaryIntegerExpression.gif. + * + * + * @generated + */ + @Override + public Object getImage(Object object) { + return overlayImage(object, getResourceLocator().getImage("full/obj16/BinaryIntegerExpression")); + } + + /** + * This returns the label text for the adapted class. + * + * + * @generated + */ + @Override + public String getText(Object object) { + BinaryIntegerOperatorKind labelValue = ((BinaryIntegerExpression)object).getOperator(); + String label = labelValue == null ? null : labelValue.toString(); + return label == null || label.length() == 0 ? + getString("_UI_BinaryIntegerExpression_type") : + getString("_UI_BinaryIntegerExpression_type") + " " + label; + } + + + /** + * This handles model notifications by calling {@link #updateChildren} to update any cached + * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}. + * + * + * @generated + */ + @Override + public void notifyChanged(Notification notification) { + updateChildren(notification); + + switch (notification.getFeatureID(BinaryIntegerExpression.class)) { + case ArduinoPackage.BINARY_INTEGER_EXPRESSION__OPERATOR: + fireNotifyChanged(new ViewerNotification(notification, notification.getNotifier(), false, true)); + return; + } + super.notifyChanged(notification); + } + + /** + * This adds {@link org.eclipse.emf.edit.command.CommandParameter}s describing the children + * that can be created under this object. + * + * + * @generated + */ + @Override + protected void collectNewChildDescriptors(Collection newChildDescriptors, Object object) { + super.collectNewChildDescriptors(newChildDescriptors, object); + } + + /** + * This returns the label text for {@link org.eclipse.emf.edit.command.CreateChildCommand}. + * + * + * @generated + */ + @Override + public String getCreateChildText(Object owner, Object feature, Object child, Collection selection) { + Object childFeature = feature; + Object childObject = child; + + boolean qualify = + childFeature == ArduinoPackage.Literals.BINARY_EXPRESSION__LEFT || + childFeature == ArduinoPackage.Literals.BINARY_EXPRESSION__RIGHT; + + if (qualify) { + return getString + ("_UI_CreateChild_text2", + new Object[] { getTypeText(childObject), getFeatureText(childFeature), getTypeText(owner) }); + } + return super.getCreateChildText(owner, feature, child, selection); + } + +} diff --git a/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.edit/src-gen/fr/obeo/dsl/arduino/provider/BoardItemProvider.java b/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.edit/src-gen/fr/obeo/dsl/arduino/provider/BoardItemProvider.java new file mode 100644 index 00000000..032882f5 --- /dev/null +++ b/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.edit/src-gen/fr/obeo/dsl/arduino/provider/BoardItemProvider.java @@ -0,0 +1,121 @@ +/** + * Copyright (c) 2013 Obeo. + * 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: + * Obeo - initial API and implementation + */ +package fr.obeo.dsl.arduino.provider; + + +import fr.obeo.dsl.arduino.ArduinoPackage; +import fr.obeo.dsl.arduino.Board; + +import java.util.Collection; +import java.util.List; + +import org.eclipse.emf.common.notify.AdapterFactory; +import org.eclipse.emf.common.notify.Notification; + +import org.eclipse.emf.edit.provider.ComposeableAdapterFactory; +import org.eclipse.emf.edit.provider.IItemPropertyDescriptor; + +/** + * This is the item provider adapter for a {@link fr.obeo.dsl.arduino.Board} object. + * + * + * @generated + */ +public class BoardItemProvider extends NamedElementItemProvider { + /** + * This constructs an instance from a factory and a notifier. + * + * + * @generated + */ + public BoardItemProvider(AdapterFactory adapterFactory) { + super(adapterFactory); + } + + /** + * This returns the property descriptors for the adapted class. + * + * + * @generated + */ + @Override + public List getPropertyDescriptors(Object object) { + if (itemPropertyDescriptors == null) { + super.getPropertyDescriptors(object); + + addThreadsPropertyDescriptor(object); + } + return itemPropertyDescriptors; + } + + /** + * This adds a property descriptor for the Threads feature. + * + * + * @generated + */ + protected void addThreadsPropertyDescriptor(Object object) { + itemPropertyDescriptors.add + (createItemPropertyDescriptor + (((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(), + getResourceLocator(), + getString("_UI_Board_threads_feature"), + getString("_UI_PropertyDescriptor_description", "_UI_Board_threads_feature", "_UI_Board_type"), + ArduinoPackage.Literals.BOARD__THREADS, + true, + false, + true, + null, + null, + null)); + } + + /** + * This returns the label text for the adapted class. + * + * + * @generated + */ + @Override + public String getText(Object object) { + String label = ((Board)object).getName(); + return label == null || label.length() == 0 ? + getString("_UI_Board_type") : + getString("_UI_Board_type") + " " + label; + } + + + /** + * This handles model notifications by calling {@link #updateChildren} to update any cached + * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}. + * + * + * @generated + */ + @Override + public void notifyChanged(Notification notification) { + updateChildren(notification); + super.notifyChanged(notification); + } + + /** + * This adds {@link org.eclipse.emf.edit.command.CommandParameter}s describing the children + * that can be created under this object. + * + * + * @generated + */ + @Override + protected void collectNewChildDescriptors(Collection newChildDescriptors, Object object) { + super.collectNewChildDescriptors(newChildDescriptors, object); + } + +} diff --git a/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.edit/src-gen/fr/obeo/dsl/arduino/provider/BooleanConstantItemProvider.java b/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.edit/src-gen/fr/obeo/dsl/arduino/provider/BooleanConstantItemProvider.java new file mode 100644 index 00000000..c7f391fc --- /dev/null +++ b/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.edit/src-gen/fr/obeo/dsl/arduino/provider/BooleanConstantItemProvider.java @@ -0,0 +1,138 @@ +/** + * Copyright (c) 2013 Obeo. + * 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: + * Obeo - initial API and implementation + */ +package fr.obeo.dsl.arduino.provider; + + +import fr.obeo.dsl.arduino.ArduinoPackage; +import fr.obeo.dsl.arduino.BooleanConstant; + +import java.util.Collection; +import java.util.List; + +import org.eclipse.emf.common.notify.AdapterFactory; +import org.eclipse.emf.common.notify.Notification; + +import org.eclipse.emf.edit.provider.ComposeableAdapterFactory; +import org.eclipse.emf.edit.provider.IItemPropertyDescriptor; +import org.eclipse.emf.edit.provider.ItemPropertyDescriptor; +import org.eclipse.emf.edit.provider.ViewerNotification; + +/** + * This is the item provider adapter for a {@link fr.obeo.dsl.arduino.BooleanConstant} object. + * + * + * @generated + */ +public class BooleanConstantItemProvider extends ConstantItemProvider { + /** + * This constructs an instance from a factory and a notifier. + * + * + * @generated + */ + public BooleanConstantItemProvider(AdapterFactory adapterFactory) { + super(adapterFactory); + } + + /** + * This returns the property descriptors for the adapted class. + * + * + * @generated + */ + @Override + public List getPropertyDescriptors(Object object) { + if (itemPropertyDescriptors == null) { + super.getPropertyDescriptors(object); + + addValuePropertyDescriptor(object); + } + return itemPropertyDescriptors; + } + + /** + * This adds a property descriptor for the Value feature. + * + * + * @generated + */ + protected void addValuePropertyDescriptor(Object object) { + itemPropertyDescriptors.add + (createItemPropertyDescriptor + (((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(), + getResourceLocator(), + getString("_UI_BooleanConstant_value_feature"), + getString("_UI_PropertyDescriptor_description", "_UI_BooleanConstant_value_feature", "_UI_BooleanConstant_type"), + ArduinoPackage.Literals.BOOLEAN_CONSTANT__VALUE, + true, + false, + false, + ItemPropertyDescriptor.BOOLEAN_VALUE_IMAGE, + null, + null)); + } + + /** + * This returns BooleanConstant.gif. + * + * + * @generated + */ + @Override + public Object getImage(Object object) { + return overlayImage(object, getResourceLocator().getImage("full/obj16/BooleanConstant")); + } + + /** + * This returns the label text for the adapted class. + * + * + * @generated + */ + @Override + public String getText(Object object) { + BooleanConstant booleanConstant = (BooleanConstant)object; + return getString("_UI_BooleanConstant_type") + " " + booleanConstant.isValue(); + } + + + /** + * This handles model notifications by calling {@link #updateChildren} to update any cached + * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}. + * + * + * @generated + */ + @Override + public void notifyChanged(Notification notification) { + updateChildren(notification); + + switch (notification.getFeatureID(BooleanConstant.class)) { + case ArduinoPackage.BOOLEAN_CONSTANT__VALUE: + fireNotifyChanged(new ViewerNotification(notification, notification.getNotifier(), false, true)); + return; + } + super.notifyChanged(notification); + } + + /** + * This adds {@link org.eclipse.emf.edit.command.CommandParameter}s describing the children + * that can be created under this object. + * + * + * @generated + */ + @Override + protected void collectNewChildDescriptors(Collection newChildDescriptors, Object object) { + super.collectNewChildDescriptors(newChildDescriptors, object); + } + +} diff --git a/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.edit/src-gen/fr/obeo/dsl/arduino/provider/BooleanExpressionItemProvider.java b/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.edit/src-gen/fr/obeo/dsl/arduino/provider/BooleanExpressionItemProvider.java new file mode 100644 index 00000000..1e5e422a --- /dev/null +++ b/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.edit/src-gen/fr/obeo/dsl/arduino/provider/BooleanExpressionItemProvider.java @@ -0,0 +1,102 @@ +/** + * Copyright (c) 2013 Obeo. + * 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: + * Obeo - initial API and implementation + */ +package fr.obeo.dsl.arduino.provider; + + +import java.util.Collection; +import java.util.List; + +import org.eclipse.emf.common.notify.AdapterFactory; +import org.eclipse.emf.common.notify.Notification; + +import org.eclipse.emf.edit.provider.IItemPropertyDescriptor; + +/** + * This is the item provider adapter for a {@link fr.obeo.dsl.arduino.BooleanExpression} object. + * + * + * @generated + */ +public class BooleanExpressionItemProvider extends ExpressionItemProvider { + /** + * This constructs an instance from a factory and a notifier. + * + * + * @generated + */ + public BooleanExpressionItemProvider(AdapterFactory adapterFactory) { + super(adapterFactory); + } + + /** + * This returns the property descriptors for the adapted class. + * + * + * @generated + */ + @Override + public List getPropertyDescriptors(Object object) { + if (itemPropertyDescriptors == null) { + super.getPropertyDescriptors(object); + + } + return itemPropertyDescriptors; + } + + /** + * This returns BooleanExpression.gif. + * + * + * @generated + */ + @Override + public Object getImage(Object object) { + return overlayImage(object, getResourceLocator().getImage("full/obj16/BooleanExpression")); + } + + /** + * This returns the label text for the adapted class. + * + * + * @generated + */ + @Override + public String getText(Object object) { + return getString("_UI_BooleanExpression_type"); + } + + + /** + * This handles model notifications by calling {@link #updateChildren} to update any cached + * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}. + * + * + * @generated + */ + @Override + public void notifyChanged(Notification notification) { + updateChildren(notification); + super.notifyChanged(notification); + } + + /** + * This adds {@link org.eclipse.emf.edit.command.CommandParameter}s describing the children + * that can be created under this object. + * + * + * @generated + */ + @Override + protected void collectNewChildDescriptors(Collection newChildDescriptors, Object object) { + super.collectNewChildDescriptors(newChildDescriptors, object); + } + +} diff --git a/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.edit/src-gen/fr/obeo/dsl/arduino/provider/BooleanModuleGetItemProvider.java b/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.edit/src-gen/fr/obeo/dsl/arduino/provider/BooleanModuleGetItemProvider.java new file mode 100644 index 00000000..16564bf0 --- /dev/null +++ b/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.edit/src-gen/fr/obeo/dsl/arduino/provider/BooleanModuleGetItemProvider.java @@ -0,0 +1,102 @@ +/** + * Copyright (c) 2013 Obeo. + * 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: + * Obeo - initial API and implementation + */ +package fr.obeo.dsl.arduino.provider; + + +import java.util.Collection; +import java.util.List; + +import org.eclipse.emf.common.notify.AdapterFactory; +import org.eclipse.emf.common.notify.Notification; + +import org.eclipse.emf.edit.provider.IItemPropertyDescriptor; + +/** + * This is the item provider adapter for a {@link fr.obeo.dsl.arduino.BooleanModuleGet} object. + * + * + * @generated + */ +public class BooleanModuleGetItemProvider extends ModuleGetItemProvider { + /** + * This constructs an instance from a factory and a notifier. + * + * + * @generated + */ + public BooleanModuleGetItemProvider(AdapterFactory adapterFactory) { + super(adapterFactory); + } + + /** + * This returns the property descriptors for the adapted class. + * + * + * @generated + */ + @Override + public List getPropertyDescriptors(Object object) { + if (itemPropertyDescriptors == null) { + super.getPropertyDescriptors(object); + + } + return itemPropertyDescriptors; + } + + /** + * This returns BooleanModuleGet.gif. + * + * + * @generated + */ + @Override + public Object getImage(Object object) { + return overlayImage(object, getResourceLocator().getImage("full/obj16/BooleanModuleGet")); + } + + /** + * This returns the label text for the adapted class. + * + * + * @generated + */ + @Override + public String getText(Object object) { + return getString("_UI_BooleanModuleGet_type"); + } + + + /** + * This handles model notifications by calling {@link #updateChildren} to update any cached + * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}. + * + * + * @generated + */ + @Override + public void notifyChanged(Notification notification) { + updateChildren(notification); + super.notifyChanged(notification); + } + + /** + * This adds {@link org.eclipse.emf.edit.command.CommandParameter}s describing the children + * that can be created under this object. + * + * + * @generated + */ + @Override + protected void collectNewChildDescriptors(Collection newChildDescriptors, Object object) { + super.collectNewChildDescriptors(newChildDescriptors, object); + } + +} diff --git a/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.edit/src-gen/fr/obeo/dsl/arduino/provider/BooleanVariableItemProvider.java b/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.edit/src-gen/fr/obeo/dsl/arduino/provider/BooleanVariableItemProvider.java new file mode 100644 index 00000000..780c723f --- /dev/null +++ b/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.edit/src-gen/fr/obeo/dsl/arduino/provider/BooleanVariableItemProvider.java @@ -0,0 +1,164 @@ +/** + * Copyright (c) 2013 Obeo. + * 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: + * Obeo - initial API and implementation + */ +package fr.obeo.dsl.arduino.provider; + + +import fr.obeo.dsl.arduino.ArduinoPackage; +import fr.obeo.dsl.arduino.BooleanVariable; + +import java.util.Collection; +import java.util.List; + +import org.eclipse.emf.common.notify.AdapterFactory; +import org.eclipse.emf.common.notify.Notification; + +import org.eclipse.emf.edit.provider.ComposeableAdapterFactory; +import org.eclipse.emf.edit.provider.IItemPropertyDescriptor; +import org.eclipse.emf.edit.provider.ItemPropertyDescriptor; +import org.eclipse.emf.edit.provider.ViewerNotification; + +/** + * This is the item provider adapter for a {@link fr.obeo.dsl.arduino.BooleanVariable} object. + * + * + * @generated + */ +public class BooleanVariableItemProvider extends VariableItemProvider { + /** + * This constructs an instance from a factory and a notifier. + * + * + * @generated + */ + public BooleanVariableItemProvider(AdapterFactory adapterFactory) { + super(adapterFactory); + } + + /** + * This returns the property descriptors for the adapted class. + * + * + * @generated + */ + @Override + public List getPropertyDescriptors(Object object) { + if (itemPropertyDescriptors == null) { + super.getPropertyDescriptors(object); + + addInitialValuePropertyDescriptor(object); + addValuePropertyDescriptor(object); + } + return itemPropertyDescriptors; + } + + /** + * This adds a property descriptor for the Initial Value feature. + * + * + * @generated + */ + protected void addInitialValuePropertyDescriptor(Object object) { + itemPropertyDescriptors.add + (createItemPropertyDescriptor + (((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(), + getResourceLocator(), + getString("_UI_BooleanVariable_initialValue_feature"), + getString("_UI_PropertyDescriptor_description", "_UI_BooleanVariable_initialValue_feature", "_UI_BooleanVariable_type"), + ArduinoPackage.Literals.BOOLEAN_VARIABLE__INITIAL_VALUE, + true, + false, + false, + ItemPropertyDescriptor.BOOLEAN_VALUE_IMAGE, + null, + null)); + } + + /** + * This adds a property descriptor for the Value feature. + * + * + * @generated + */ + protected void addValuePropertyDescriptor(Object object) { + itemPropertyDescriptors.add + (createItemPropertyDescriptor + (((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(), + getResourceLocator(), + getString("_UI_BooleanVariable_value_feature"), + getString("_UI_PropertyDescriptor_description", "_UI_BooleanVariable_value_feature", "_UI_BooleanVariable_type"), + ArduinoPackage.Literals.BOOLEAN_VARIABLE__VALUE, + true, + false, + false, + ItemPropertyDescriptor.GENERIC_VALUE_IMAGE, + null, + null)); + } + + /** + * This returns BooleanVariable.gif. + * + * + * @generated + */ + @Override + public Object getImage(Object object) { + return overlayImage(object, getResourceLocator().getImage("full/obj16/BooleanVariable")); + } + + /** + * This returns the label text for the adapted class. + * + * + * @generated + */ + @Override + public String getText(Object object) { + String label = ((BooleanVariable)object).getName(); + return label == null || label.length() == 0 ? + getString("_UI_BooleanVariable_type") : + getString("_UI_BooleanVariable_type") + " " + label; + } + + + /** + * This handles model notifications by calling {@link #updateChildren} to update any cached + * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}. + * + * + * @generated + */ + @Override + public void notifyChanged(Notification notification) { + updateChildren(notification); + + switch (notification.getFeatureID(BooleanVariable.class)) { + case ArduinoPackage.BOOLEAN_VARIABLE__INITIAL_VALUE: + case ArduinoPackage.BOOLEAN_VARIABLE__VALUE: + fireNotifyChanged(new ViewerNotification(notification, notification.getNotifier(), false, true)); + return; + } + super.notifyChanged(notification); + } + + /** + * This adds {@link org.eclipse.emf.edit.command.CommandParameter}s describing the children + * that can be created under this object. + * + * + * @generated + */ + @Override + protected void collectNewChildDescriptors(Collection newChildDescriptors, Object object) { + super.collectNewChildDescriptors(newChildDescriptors, object); + } + +} diff --git a/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.edit/src-gen/fr/obeo/dsl/arduino/provider/BuzzerItemProvider.java b/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.edit/src-gen/fr/obeo/dsl/arduino/provider/BuzzerItemProvider.java new file mode 100644 index 00000000..db820027 --- /dev/null +++ b/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.edit/src-gen/fr/obeo/dsl/arduino/provider/BuzzerItemProvider.java @@ -0,0 +1,107 @@ +/** + * Copyright (c) 2013 Obeo. + * 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: + * Obeo - initial API and implementation + */ +package fr.obeo.dsl.arduino.provider; + + +import fr.obeo.dsl.arduino.Buzzer; + +import java.util.Collection; +import java.util.List; + +import org.eclipse.emf.common.notify.AdapterFactory; +import org.eclipse.emf.common.notify.Notification; + +import org.eclipse.emf.edit.provider.IItemPropertyDescriptor; + +/** + * This is the item provider adapter for a {@link fr.obeo.dsl.arduino.Buzzer} object. + * + * + * @generated + */ +public class BuzzerItemProvider extends ArduinoDigitalModuleItemProvider { + /** + * This constructs an instance from a factory and a notifier. + * + * + * @generated + */ + public BuzzerItemProvider(AdapterFactory adapterFactory) { + super(adapterFactory); + } + + /** + * This returns the property descriptors for the adapted class. + * + * + * @generated + */ + @Override + public List getPropertyDescriptors(Object object) { + if (itemPropertyDescriptors == null) { + super.getPropertyDescriptors(object); + + } + return itemPropertyDescriptors; + } + + /** + * This returns Buzzer.gif. + * + * + * @generated + */ + @Override + public Object getImage(Object object) { + return overlayImage(object, getResourceLocator().getImage("full/obj16/Buzzer")); + } + + /** + * This returns the label text for the adapted class. + * + * + * @generated + */ + @Override + public String getText(Object object) { + String label = ((Buzzer)object).getName(); + return label == null || label.length() == 0 ? + getString("_UI_Buzzer_type") : + getString("_UI_Buzzer_type") + " " + label; + } + + + /** + * This handles model notifications by calling {@link #updateChildren} to update any cached + * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}. + * + * + * @generated + */ + @Override + public void notifyChanged(Notification notification) { + updateChildren(notification); + super.notifyChanged(notification); + } + + /** + * This adds {@link org.eclipse.emf.edit.command.CommandParameter}s describing the children + * that can be created under this object. + * + * + * @generated + */ + @Override + protected void collectNewChildDescriptors(Collection newChildDescriptors, Object object) { + super.collectNewChildDescriptors(newChildDescriptors, object); + } + +} diff --git a/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.edit/src-gen/fr/obeo/dsl/arduino/provider/ChannelItemProvider.java b/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.edit/src-gen/fr/obeo/dsl/arduino/provider/ChannelItemProvider.java new file mode 100644 index 00000000..874c1344 --- /dev/null +++ b/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.edit/src-gen/fr/obeo/dsl/arduino/provider/ChannelItemProvider.java @@ -0,0 +1,258 @@ +/** + * Copyright (c) 2013 Obeo. + * 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: + * Obeo - initial API and implementation + */ +package fr.obeo.dsl.arduino.provider; + + +import fr.obeo.dsl.arduino.ArduinoPackage; +import fr.obeo.dsl.arduino.Channel; + +import java.util.Collection; +import java.util.List; + +import org.eclipse.emf.common.notify.AdapterFactory; +import org.eclipse.emf.common.notify.Notification; + +import org.eclipse.emf.edit.provider.ComposeableAdapterFactory; +import org.eclipse.emf.edit.provider.IItemPropertyDescriptor; +import org.eclipse.emf.edit.provider.ItemPropertyDescriptor; +import org.eclipse.emf.edit.provider.ViewerNotification; + +/** + * This is the item provider adapter for a {@link fr.obeo.dsl.arduino.Channel} object. + * + * + * @generated + */ +public class ChannelItemProvider extends NamedElementItemProvider { + /** + * This constructs an instance from a factory and a notifier. + * + * + * @generated + */ + public ChannelItemProvider(AdapterFactory adapterFactory) { + super(adapterFactory); + } + + /** + * This returns the property descriptors for the adapted class. + * + * + * @generated + */ + @Override + public List getPropertyDescriptors(Object object) { + if (itemPropertyDescriptors == null) { + super.getPropertyDescriptors(object); + + addSourcePropertyDescriptor(object); + addTargetPropertyDescriptor(object); + addInRatePropertyDescriptor(object); + addOutRatePropertyDescriptor(object); + addCapacityPropertyDescriptor(object); + addCurrentSizePropertyDescriptor(object); + } + return itemPropertyDescriptors; + } + + /** + * This adds a property descriptor for the Source feature. + * + * + * @generated + */ + protected void addSourcePropertyDescriptor(Object object) { + itemPropertyDescriptors.add + (createItemPropertyDescriptor + (((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(), + getResourceLocator(), + getString("_UI_Channel_source_feature"), + getString("_UI_PropertyDescriptor_description", "_UI_Channel_source_feature", "_UI_Channel_type"), + ArduinoPackage.Literals.CHANNEL__SOURCE, + true, + false, + true, + null, + null, + null)); + } + + /** + * This adds a property descriptor for the Target feature. + * + * + * @generated + */ + protected void addTargetPropertyDescriptor(Object object) { + itemPropertyDescriptors.add + (createItemPropertyDescriptor + (((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(), + getResourceLocator(), + getString("_UI_Channel_target_feature"), + getString("_UI_PropertyDescriptor_description", "_UI_Channel_target_feature", "_UI_Channel_type"), + ArduinoPackage.Literals.CHANNEL__TARGET, + true, + false, + true, + null, + null, + null)); + } + + /** + * This adds a property descriptor for the In Rate feature. + * + * + * @generated + */ + protected void addInRatePropertyDescriptor(Object object) { + itemPropertyDescriptors.add + (createItemPropertyDescriptor + (((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(), + getResourceLocator(), + getString("_UI_Channel_inRate_feature"), + getString("_UI_PropertyDescriptor_description", "_UI_Channel_inRate_feature", "_UI_Channel_type"), + ArduinoPackage.Literals.CHANNEL__IN_RATE, + true, + false, + false, + ItemPropertyDescriptor.INTEGRAL_VALUE_IMAGE, + null, + null)); + } + + /** + * This adds a property descriptor for the Out Rate feature. + * + * + * @generated + */ + protected void addOutRatePropertyDescriptor(Object object) { + itemPropertyDescriptors.add + (createItemPropertyDescriptor + (((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(), + getResourceLocator(), + getString("_UI_Channel_outRate_feature"), + getString("_UI_PropertyDescriptor_description", "_UI_Channel_outRate_feature", "_UI_Channel_type"), + ArduinoPackage.Literals.CHANNEL__OUT_RATE, + true, + false, + false, + ItemPropertyDescriptor.INTEGRAL_VALUE_IMAGE, + null, + null)); + } + + /** + * This adds a property descriptor for the Capacity feature. + * + * + * @generated + */ + protected void addCapacityPropertyDescriptor(Object object) { + itemPropertyDescriptors.add + (createItemPropertyDescriptor + (((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(), + getResourceLocator(), + getString("_UI_Channel_capacity_feature"), + getString("_UI_PropertyDescriptor_description", "_UI_Channel_capacity_feature", "_UI_Channel_type"), + ArduinoPackage.Literals.CHANNEL__CAPACITY, + true, + false, + false, + ItemPropertyDescriptor.INTEGRAL_VALUE_IMAGE, + null, + null)); + } + + /** + * This adds a property descriptor for the Current Size feature. + * + * + * @generated + */ + protected void addCurrentSizePropertyDescriptor(Object object) { + itemPropertyDescriptors.add + (createItemPropertyDescriptor + (((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(), + getResourceLocator(), + getString("_UI_Channel_currentSize_feature"), + getString("_UI_PropertyDescriptor_description", "_UI_Channel_currentSize_feature", "_UI_Channel_type"), + ArduinoPackage.Literals.CHANNEL__CURRENT_SIZE, + true, + false, + false, + ItemPropertyDescriptor.INTEGRAL_VALUE_IMAGE, + null, + null)); + } + + /** + * This returns Channel.gif. + * + * + * @generated + */ + @Override + public Object getImage(Object object) { + return overlayImage(object, getResourceLocator().getImage("full/obj16/Channel")); + } + + /** + * This returns the label text for the adapted class. + * + * + * @generated + */ + @Override + public String getText(Object object) { + String label = ((Channel)object).getName(); + return label == null || label.length() == 0 ? + getString("_UI_Channel_type") : + getString("_UI_Channel_type") + " " + label; + } + + + /** + * This handles model notifications by calling {@link #updateChildren} to update any cached + * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}. + * + * + * @generated + */ + @Override + public void notifyChanged(Notification notification) { + updateChildren(notification); + + switch (notification.getFeatureID(Channel.class)) { + case ArduinoPackage.CHANNEL__IN_RATE: + case ArduinoPackage.CHANNEL__OUT_RATE: + case ArduinoPackage.CHANNEL__CAPACITY: + case ArduinoPackage.CHANNEL__CURRENT_SIZE: + fireNotifyChanged(new ViewerNotification(notification, notification.getNotifier(), false, true)); + return; + } + super.notifyChanged(notification); + } + + /** + * This adds {@link org.eclipse.emf.edit.command.CommandParameter}s describing the children + * that can be created under this object. + * + * + * @generated + */ + @Override + protected void collectNewChildDescriptors(Collection newChildDescriptors, Object object) { + super.collectNewChildDescriptors(newChildDescriptors, object); + } + +} diff --git a/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.edit/src-gen/fr/obeo/dsl/arduino/provider/ConstantItemProvider.java b/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.edit/src-gen/fr/obeo/dsl/arduino/provider/ConstantItemProvider.java new file mode 100644 index 00000000..e8b62841 --- /dev/null +++ b/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.edit/src-gen/fr/obeo/dsl/arduino/provider/ConstantItemProvider.java @@ -0,0 +1,102 @@ +/** + * Copyright (c) 2013 Obeo. + * 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: + * Obeo - initial API and implementation + */ +package fr.obeo.dsl.arduino.provider; + + +import java.util.Collection; +import java.util.List; + +import org.eclipse.emf.common.notify.AdapterFactory; +import org.eclipse.emf.common.notify.Notification; + +import org.eclipse.emf.edit.provider.IItemPropertyDescriptor; + +/** + * This is the item provider adapter for a {@link fr.obeo.dsl.arduino.Constant} object. + * + * + * @generated + */ +public class ConstantItemProvider extends ExpressionItemProvider { + /** + * This constructs an instance from a factory and a notifier. + * + * + * @generated + */ + public ConstantItemProvider(AdapterFactory adapterFactory) { + super(adapterFactory); + } + + /** + * This returns the property descriptors for the adapted class. + * + * + * @generated + */ + @Override + public List getPropertyDescriptors(Object object) { + if (itemPropertyDescriptors == null) { + super.getPropertyDescriptors(object); + + } + return itemPropertyDescriptors; + } + + /** + * This returns Constant.gif. + * + * + * @generated + */ + @Override + public Object getImage(Object object) { + return overlayImage(object, getResourceLocator().getImage("full/obj16/Constant")); + } + + /** + * This returns the label text for the adapted class. + * + * + * @generated + */ + @Override + public String getText(Object object) { + return getString("_UI_Constant_type"); + } + + + /** + * This handles model notifications by calling {@link #updateChildren} to update any cached + * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}. + * + * + * @generated + */ + @Override + public void notifyChanged(Notification notification) { + updateChildren(notification); + super.notifyChanged(notification); + } + + /** + * This adds {@link org.eclipse.emf.edit.command.CommandParameter}s describing the children + * that can be created under this object. + * + * + * @generated + */ + @Override + protected void collectNewChildDescriptors(Collection newChildDescriptors, Object object) { + super.collectNewChildDescriptors(newChildDescriptors, object); + } + +} diff --git a/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.edit/src-gen/fr/obeo/dsl/arduino/provider/ControlItemProvider.java b/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.edit/src-gen/fr/obeo/dsl/arduino/provider/ControlItemProvider.java new file mode 100644 index 00000000..86fc68a5 --- /dev/null +++ b/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.edit/src-gen/fr/obeo/dsl/arduino/provider/ControlItemProvider.java @@ -0,0 +1,142 @@ +/** + * Copyright (c) 2013 Obeo. + * 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: + * Obeo - initial API and implementation + */ +package fr.obeo.dsl.arduino.provider; + + +import fr.obeo.dsl.arduino.ArduinoFactory; +import fr.obeo.dsl.arduino.ArduinoPackage; +import fr.obeo.dsl.arduino.Control; + +import java.util.Collection; +import java.util.List; + +import org.eclipse.emf.common.notify.AdapterFactory; +import org.eclipse.emf.common.notify.Notification; + +import org.eclipse.emf.ecore.EStructuralFeature; + +import org.eclipse.emf.edit.provider.IItemPropertyDescriptor; +import org.eclipse.emf.edit.provider.ViewerNotification; + +/** + * This is the item provider adapter for a {@link fr.obeo.dsl.arduino.Control} object. + * + * + * @generated + */ +public class ControlItemProvider extends InstructionItemProvider { + /** + * This constructs an instance from a factory and a notifier. + * + * + * @generated + */ + public ControlItemProvider(AdapterFactory adapterFactory) { + super(adapterFactory); + } + + /** + * This returns the property descriptors for the adapted class. + * + * + * @generated + */ + @Override + public List getPropertyDescriptors(Object object) { + if (itemPropertyDescriptors == null) { + super.getPropertyDescriptors(object); + + } + return itemPropertyDescriptors; + } + + /** + * This specifies how to implement {@link #getChildren} and is used to deduce an appropriate feature for an + * {@link org.eclipse.emf.edit.command.AddCommand}, {@link org.eclipse.emf.edit.command.RemoveCommand} or + * {@link org.eclipse.emf.edit.command.MoveCommand} in {@link #createCommand}. + * + * + * @generated + */ + @Override + public Collection getChildrenFeatures(Object object) { + if (childrenFeatures == null) { + super.getChildrenFeatures(object); + childrenFeatures.add(ArduinoPackage.Literals.CONTROL__BLOCK); + } + return childrenFeatures; + } + + /** + * + * + * @generated + */ + @Override + protected EStructuralFeature getChildFeature(Object object, Object child) { + // Check the type of the specified child object and return the proper feature to use for + // adding (see {@link AddCommand}) it as a child. + + return super.getChildFeature(object, child); + } + + /** + * This returns the label text for the adapted class. + * + * + * @generated + */ + @Override + public String getText(Object object) { + String label = ((Control)object).getName(); + return label == null || label.length() == 0 ? + getString("_UI_Control_type") : + getString("_UI_Control_type") + " " + label; + } + + + /** + * This handles model notifications by calling {@link #updateChildren} to update any cached + * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}. + * + * + * @generated + */ + @Override + public void notifyChanged(Notification notification) { + updateChildren(notification); + + switch (notification.getFeatureID(Control.class)) { + case ArduinoPackage.CONTROL__BLOCK: + fireNotifyChanged(new ViewerNotification(notification, notification.getNotifier(), true, false)); + return; + } + super.notifyChanged(notification); + } + + /** + * This adds {@link org.eclipse.emf.edit.command.CommandParameter}s describing the children + * that can be created under this object. + * + * + * @generated + */ + @Override + protected void collectNewChildDescriptors(Collection newChildDescriptors, Object object) { + super.collectNewChildDescriptors(newChildDescriptors, object); + + newChildDescriptors.add + (createChildParameter + (ArduinoPackage.Literals.CONTROL__BLOCK, + ArduinoFactory.eINSTANCE.createInstructionBlock())); + } + +} diff --git a/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.edit/src-gen/fr/obeo/dsl/arduino/provider/DelayItemProvider.java b/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.edit/src-gen/fr/obeo/dsl/arduino/provider/DelayItemProvider.java new file mode 100644 index 00000000..9189731c --- /dev/null +++ b/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.edit/src-gen/fr/obeo/dsl/arduino/provider/DelayItemProvider.java @@ -0,0 +1,164 @@ +/** + * Copyright (c) 2013 Obeo. + * 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: + * Obeo - initial API and implementation + */ +package fr.obeo.dsl.arduino.provider; + + +import fr.obeo.dsl.arduino.ArduinoPackage; +import fr.obeo.dsl.arduino.Delay; + +import java.util.Collection; +import java.util.List; + +import org.eclipse.emf.common.notify.AdapterFactory; +import org.eclipse.emf.common.notify.Notification; + +import org.eclipse.emf.edit.provider.ComposeableAdapterFactory; +import org.eclipse.emf.edit.provider.IItemPropertyDescriptor; +import org.eclipse.emf.edit.provider.ItemPropertyDescriptor; +import org.eclipse.emf.edit.provider.ViewerNotification; + +/** + * This is the item provider adapter for a {@link fr.obeo.dsl.arduino.Delay} object. + * + * + * @generated + */ +public class DelayItemProvider extends UtilitiesItemProvider { + /** + * This constructs an instance from a factory and a notifier. + * + * + * @generated + */ + public DelayItemProvider(AdapterFactory adapterFactory) { + super(adapterFactory); + } + + /** + * This returns the property descriptors for the adapted class. + * + * + * @generated + */ + @Override + public List getPropertyDescriptors(Object object) { + if (itemPropertyDescriptors == null) { + super.getPropertyDescriptors(object); + + addUnitPropertyDescriptor(object); + addValuePropertyDescriptor(object); + } + return itemPropertyDescriptors; + } + + /** + * This adds a property descriptor for the Unit feature. + * + * + * @generated + */ + protected void addUnitPropertyDescriptor(Object object) { + itemPropertyDescriptors.add + (createItemPropertyDescriptor + (((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(), + getResourceLocator(), + getString("_UI_Delay_unit_feature"), + getString("_UI_PropertyDescriptor_description", "_UI_Delay_unit_feature", "_UI_Delay_type"), + ArduinoPackage.Literals.DELAY__UNIT, + true, + false, + false, + ItemPropertyDescriptor.GENERIC_VALUE_IMAGE, + null, + null)); + } + + /** + * This adds a property descriptor for the Value feature. + * + * + * @generated + */ + protected void addValuePropertyDescriptor(Object object) { + itemPropertyDescriptors.add + (createItemPropertyDescriptor + (((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(), + getResourceLocator(), + getString("_UI_Delay_value_feature"), + getString("_UI_PropertyDescriptor_description", "_UI_Delay_value_feature", "_UI_Delay_type"), + ArduinoPackage.Literals.DELAY__VALUE, + true, + false, + false, + ItemPropertyDescriptor.INTEGRAL_VALUE_IMAGE, + null, + null)); + } + + /** + * This returns Delay.gif. + * + * + * @generated + */ + @Override + public Object getImage(Object object) { + return overlayImage(object, getResourceLocator().getImage("full/obj16/Delay")); + } + + /** + * This returns the label text for the adapted class. + * + * + * @generated + */ + @Override + public String getText(Object object) { + String label = ((Delay)object).getName(); + return label == null || label.length() == 0 ? + getString("_UI_Delay_type") : + getString("_UI_Delay_type") + " " + label; + } + + + /** + * This handles model notifications by calling {@link #updateChildren} to update any cached + * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}. + * + * + * @generated + */ + @Override + public void notifyChanged(Notification notification) { + updateChildren(notification); + + switch (notification.getFeatureID(Delay.class)) { + case ArduinoPackage.DELAY__UNIT: + case ArduinoPackage.DELAY__VALUE: + fireNotifyChanged(new ViewerNotification(notification, notification.getNotifier(), false, true)); + return; + } + super.notifyChanged(notification); + } + + /** + * This adds {@link org.eclipse.emf.edit.command.CommandParameter}s describing the children + * that can be created under this object. + * + * + * @generated + */ + @Override + protected void collectNewChildDescriptors(Collection newChildDescriptors, Object object) { + super.collectNewChildDescriptors(newChildDescriptors, object); + } + +} diff --git a/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.edit/src-gen/fr/obeo/dsl/arduino/provider/DigitalPinItemProvider.java b/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.edit/src-gen/fr/obeo/dsl/arduino/provider/DigitalPinItemProvider.java new file mode 100644 index 00000000..17fbbf66 --- /dev/null +++ b/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.edit/src-gen/fr/obeo/dsl/arduino/provider/DigitalPinItemProvider.java @@ -0,0 +1,176 @@ +/** + * Copyright (c) 2013 Obeo. + * 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: + * Obeo - initial API and implementation + */ +package fr.obeo.dsl.arduino.provider; + + +import fr.obeo.dsl.arduino.ArduinoFactory; +import fr.obeo.dsl.arduino.ArduinoPackage; +import fr.obeo.dsl.arduino.DigitalPin; + +import java.util.Collection; +import java.util.List; + +import org.eclipse.emf.common.notify.AdapterFactory; +import org.eclipse.emf.common.notify.Notification; + +import org.eclipse.emf.ecore.EStructuralFeature; + +import org.eclipse.emf.edit.provider.IItemPropertyDescriptor; +import org.eclipse.emf.edit.provider.ViewerNotification; + +/** + * This is the item provider adapter for a {@link fr.obeo.dsl.arduino.DigitalPin} object. + * + * + * @generated + */ +public class DigitalPinItemProvider extends PinItemProvider { + /** + * This constructs an instance from a factory and a notifier. + * + * + * @generated + */ + public DigitalPinItemProvider(AdapterFactory adapterFactory) { + super(adapterFactory); + } + + /** + * This returns the property descriptors for the adapted class. + * + * + * @generated + */ + @Override + public List getPropertyDescriptors(Object object) { + if (itemPropertyDescriptors == null) { + super.getPropertyDescriptors(object); + + } + return itemPropertyDescriptors; + } + + /** + * This specifies how to implement {@link #getChildren} and is used to deduce an appropriate feature for an + * {@link org.eclipse.emf.edit.command.AddCommand}, {@link org.eclipse.emf.edit.command.RemoveCommand} or + * {@link org.eclipse.emf.edit.command.MoveCommand} in {@link #createCommand}. + * + * + * @generated + */ + @Override + public Collection getChildrenFeatures(Object object) { + if (childrenFeatures == null) { + super.getChildrenFeatures(object); + childrenFeatures.add(ArduinoPackage.Literals.DIGITAL_PIN__MODULE); + } + return childrenFeatures; + } + + /** + * + * + * @generated + */ + @Override + protected EStructuralFeature getChildFeature(Object object, Object child) { + // Check the type of the specified child object and return the proper feature to use for + // adding (see {@link AddCommand}) it as a child. + + return super.getChildFeature(object, child); + } + + /** + * This returns DigitalPin.gif. + * + * + * @generated + */ + @Override + public Object getImage(Object object) { + return overlayImage(object, getResourceLocator().getImage("full/obj16/DigitalPin")); + } + + /** + * This returns the label text for the adapted class. + * + * + * @generated + */ + @Override + public String getText(Object object) { + DigitalPin digitalPin = (DigitalPin)object; + return getString("_UI_DigitalPin_type") + " " + digitalPin.getId(); + } + + + /** + * This handles model notifications by calling {@link #updateChildren} to update any cached + * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}. + * + * + * @generated + */ + @Override + public void notifyChanged(Notification notification) { + updateChildren(notification); + + switch (notification.getFeatureID(DigitalPin.class)) { + case ArduinoPackage.DIGITAL_PIN__MODULE: + fireNotifyChanged(new ViewerNotification(notification, notification.getNotifier(), true, false)); + return; + } + super.notifyChanged(notification); + } + + /** + * This adds {@link org.eclipse.emf.edit.command.CommandParameter}s describing the children + * that can be created under this object. + * + * + * @generated + */ + @Override + protected void collectNewChildDescriptors(Collection newChildDescriptors, Object object) { + super.collectNewChildDescriptors(newChildDescriptors, object); + + newChildDescriptors.add + (createChildParameter + (ArduinoPackage.Literals.DIGITAL_PIN__MODULE, + ArduinoFactory.eINSTANCE.createLED())); + + newChildDescriptors.add + (createChildParameter + (ArduinoPackage.Literals.DIGITAL_PIN__MODULE, + ArduinoFactory.eINSTANCE.createPushButton())); + + newChildDescriptors.add + (createChildParameter + (ArduinoPackage.Literals.DIGITAL_PIN__MODULE, + ArduinoFactory.eINSTANCE.createBuzzer())); + + newChildDescriptors.add + (createChildParameter + (ArduinoPackage.Literals.DIGITAL_PIN__MODULE, + ArduinoFactory.eINSTANCE.createMicroServo())); + + newChildDescriptors.add + (createChildParameter + (ArduinoPackage.Literals.DIGITAL_PIN__MODULE, + ArduinoFactory.eINSTANCE.createInfraRedSensor())); + + newChildDescriptors.add + (createChildParameter + (ArduinoPackage.Literals.DIGITAL_PIN__MODULE, + ArduinoFactory.eINSTANCE.createFan())); + } + +} diff --git a/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.edit/src-gen/fr/obeo/dsl/arduino/provider/ExpressionItemProvider.java b/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.edit/src-gen/fr/obeo/dsl/arduino/provider/ExpressionItemProvider.java new file mode 100644 index 00000000..b4acf5f9 --- /dev/null +++ b/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.edit/src-gen/fr/obeo/dsl/arduino/provider/ExpressionItemProvider.java @@ -0,0 +1,117 @@ +/** + * Copyright (c) 2013 Obeo. + * 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: + * Obeo - initial API and implementation + */ +package fr.obeo.dsl.arduino.provider; + + +import java.util.Collection; +import java.util.List; + +import org.eclipse.emf.common.notify.AdapterFactory; +import org.eclipse.emf.common.notify.Notification; + +import org.eclipse.emf.common.util.ResourceLocator; + +import org.eclipse.emf.edit.provider.IEditingDomainItemProvider; +import org.eclipse.emf.edit.provider.IItemLabelProvider; +import org.eclipse.emf.edit.provider.IItemPropertyDescriptor; +import org.eclipse.emf.edit.provider.IItemPropertySource; +import org.eclipse.emf.edit.provider.IStructuredItemContentProvider; +import org.eclipse.emf.edit.provider.ITreeItemContentProvider; +import org.eclipse.emf.edit.provider.ItemProviderAdapter; + +/** + * This is the item provider adapter for a {@link fr.obeo.dsl.arduino.Expression} object. + * + * + * @generated + */ +public class ExpressionItemProvider + extends ItemProviderAdapter + implements + IEditingDomainItemProvider, + IStructuredItemContentProvider, + ITreeItemContentProvider, + IItemLabelProvider, + IItemPropertySource { + /** + * This constructs an instance from a factory and a notifier. + * + * + * @generated + */ + public ExpressionItemProvider(AdapterFactory adapterFactory) { + super(adapterFactory); + } + + /** + * This returns the property descriptors for the adapted class. + * + * + * @generated + */ + @Override + public List getPropertyDescriptors(Object object) { + if (itemPropertyDescriptors == null) { + super.getPropertyDescriptors(object); + + } + return itemPropertyDescriptors; + } + + /** + * This returns the label text for the adapted class. + * + * + * @generated + */ + @Override + public String getText(Object object) { + return getString("_UI_Expression_type"); + } + + + /** + * This handles model notifications by calling {@link #updateChildren} to update any cached + * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}. + * + * + * @generated + */ + @Override + public void notifyChanged(Notification notification) { + updateChildren(notification); + super.notifyChanged(notification); + } + + /** + * This adds {@link org.eclipse.emf.edit.command.CommandParameter}s describing the children + * that can be created under this object. + * + * + * @generated + */ + @Override + protected void collectNewChildDescriptors(Collection newChildDescriptors, Object object) { + super.collectNewChildDescriptors(newChildDescriptors, object); + } + + /** + * Return the resource locator for this item provider's resources. + * + * + * @generated + */ + @Override + public ResourceLocator getResourceLocator() { + return ArduinoEditPlugin.INSTANCE; + } + +} diff --git a/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.edit/src-gen/fr/obeo/dsl/arduino/provider/FanItemProvider.java b/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.edit/src-gen/fr/obeo/dsl/arduino/provider/FanItemProvider.java new file mode 100644 index 00000000..5d815878 --- /dev/null +++ b/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.edit/src-gen/fr/obeo/dsl/arduino/provider/FanItemProvider.java @@ -0,0 +1,107 @@ +/** + * Copyright (c) 2013 Obeo. + * 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: + * Obeo - initial API and implementation + */ +package fr.obeo.dsl.arduino.provider; + + +import fr.obeo.dsl.arduino.Fan; + +import java.util.Collection; +import java.util.List; + +import org.eclipse.emf.common.notify.AdapterFactory; +import org.eclipse.emf.common.notify.Notification; + +import org.eclipse.emf.edit.provider.IItemPropertyDescriptor; + +/** + * This is the item provider adapter for a {@link fr.obeo.dsl.arduino.Fan} object. + * + * + * @generated + */ +public class FanItemProvider extends ArduinoDigitalModuleItemProvider { + /** + * This constructs an instance from a factory and a notifier. + * + * + * @generated + */ + public FanItemProvider(AdapterFactory adapterFactory) { + super(adapterFactory); + } + + /** + * This returns the property descriptors for the adapted class. + * + * + * @generated + */ + @Override + public List getPropertyDescriptors(Object object) { + if (itemPropertyDescriptors == null) { + super.getPropertyDescriptors(object); + + } + return itemPropertyDescriptors; + } + + /** + * This returns Fan.gif. + * + * + * @generated + */ + @Override + public Object getImage(Object object) { + return overlayImage(object, getResourceLocator().getImage("full/obj16/Fan")); + } + + /** + * This returns the label text for the adapted class. + * + * + * @generated + */ + @Override + public String getText(Object object) { + String label = ((Fan)object).getName(); + return label == null || label.length() == 0 ? + getString("_UI_Fan_type") : + getString("_UI_Fan_type") + " " + label; + } + + + /** + * This handles model notifications by calling {@link #updateChildren} to update any cached + * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}. + * + * + * @generated + */ + @Override + public void notifyChanged(Notification notification) { + updateChildren(notification); + super.notifyChanged(notification); + } + + /** + * This adds {@link org.eclipse.emf.edit.command.CommandParameter}s describing the children + * that can be created under this object. + * + * + * @generated + */ + @Override + protected void collectNewChildDescriptors(Collection newChildDescriptors, Object object) { + super.collectNewChildDescriptors(newChildDescriptors, object); + } + +} diff --git a/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.edit/src-gen/fr/obeo/dsl/arduino/provider/IfItemProvider.java b/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.edit/src-gen/fr/obeo/dsl/arduino/provider/IfItemProvider.java new file mode 100644 index 00000000..d7c1df73 --- /dev/null +++ b/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.edit/src-gen/fr/obeo/dsl/arduino/provider/IfItemProvider.java @@ -0,0 +1,200 @@ +/** + * Copyright (c) 2013 Obeo. + * 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: + * Obeo - initial API and implementation + */ +package fr.obeo.dsl.arduino.provider; + + +import fr.obeo.dsl.arduino.ArduinoFactory; +import fr.obeo.dsl.arduino.ArduinoPackage; +import fr.obeo.dsl.arduino.If; + +import java.util.Collection; +import java.util.List; + +import org.eclipse.emf.common.notify.AdapterFactory; +import org.eclipse.emf.common.notify.Notification; + +import org.eclipse.emf.ecore.EStructuralFeature; + +import org.eclipse.emf.edit.provider.ComposeableAdapterFactory; +import org.eclipse.emf.edit.provider.IItemPropertyDescriptor; +import org.eclipse.emf.edit.provider.ViewerNotification; + +/** + * This is the item provider adapter for a {@link fr.obeo.dsl.arduino.If} object. + * + * + * @generated + */ +public class IfItemProvider extends ControlItemProvider { + /** + * This constructs an instance from a factory and a notifier. + * + * + * @generated + */ + public IfItemProvider(AdapterFactory adapterFactory) { + super(adapterFactory); + } + + /** + * This returns the property descriptors for the adapted class. + * + * + * @generated + */ + @Override + public List getPropertyDescriptors(Object object) { + if (itemPropertyDescriptors == null) { + super.getPropertyDescriptors(object); + + addConditionPropertyDescriptor(object); + } + return itemPropertyDescriptors; + } + + /** + * This adds a property descriptor for the Condition feature. + * + * + * @generated + */ + protected void addConditionPropertyDescriptor(Object object) { + itemPropertyDescriptors.add + (createItemPropertyDescriptor + (((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(), + getResourceLocator(), + getString("_UI_If_condition_feature"), + getString("_UI_PropertyDescriptor_description", "_UI_If_condition_feature", "_UI_If_type"), + ArduinoPackage.Literals.IF__CONDITION, + true, + false, + true, + null, + null, + null)); + } + + /** + * This specifies how to implement {@link #getChildren} and is used to deduce an appropriate feature for an + * {@link org.eclipse.emf.edit.command.AddCommand}, {@link org.eclipse.emf.edit.command.RemoveCommand} or + * {@link org.eclipse.emf.edit.command.MoveCommand} in {@link #createCommand}. + * + * + * @generated + */ + @Override + public Collection getChildrenFeatures(Object object) { + if (childrenFeatures == null) { + super.getChildrenFeatures(object); + childrenFeatures.add(ArduinoPackage.Literals.IF__ELSE_BLOCK); + } + return childrenFeatures; + } + + /** + * + * + * @generated + */ + @Override + protected EStructuralFeature getChildFeature(Object object, Object child) { + // Check the type of the specified child object and return the proper feature to use for + // adding (see {@link AddCommand}) it as a child. + + return super.getChildFeature(object, child); + } + + /** + * This returns If.gif. + * + * + * @generated + */ + @Override + public Object getImage(Object object) { + return overlayImage(object, getResourceLocator().getImage("full/obj16/If")); + } + + /** + * This returns the label text for the adapted class. + * + * + * @generated + */ + @Override + public String getText(Object object) { + String label = ((If)object).getName(); + return label == null || label.length() == 0 ? + getString("_UI_If_type") : + getString("_UI_If_type") + " " + label; + } + + + /** + * This handles model notifications by calling {@link #updateChildren} to update any cached + * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}. + * + * + * @generated + */ + @Override + public void notifyChanged(Notification notification) { + updateChildren(notification); + + switch (notification.getFeatureID(If.class)) { + case ArduinoPackage.IF__ELSE_BLOCK: + fireNotifyChanged(new ViewerNotification(notification, notification.getNotifier(), true, false)); + return; + } + super.notifyChanged(notification); + } + + /** + * This adds {@link org.eclipse.emf.edit.command.CommandParameter}s describing the children + * that can be created under this object. + * + * + * @generated + */ + @Override + protected void collectNewChildDescriptors(Collection newChildDescriptors, Object object) { + super.collectNewChildDescriptors(newChildDescriptors, object); + + newChildDescriptors.add + (createChildParameter + (ArduinoPackage.Literals.IF__ELSE_BLOCK, + ArduinoFactory.eINSTANCE.createInstructionBlock())); + } + + /** + * This returns the label text for {@link org.eclipse.emf.edit.command.CreateChildCommand}. + * + * + * @generated + */ + @Override + public String getCreateChildText(Object owner, Object feature, Object child, Collection selection) { + Object childFeature = feature; + Object childObject = child; + + boolean qualify = + childFeature == ArduinoPackage.Literals.CONTROL__BLOCK || + childFeature == ArduinoPackage.Literals.IF__ELSE_BLOCK; + + if (qualify) { + return getString + ("_UI_CreateChild_text2", + new Object[] { getTypeText(childObject), getFeatureText(childFeature), getTypeText(owner) }); + } + return super.getCreateChildText(owner, feature, child, selection); + } + +} diff --git a/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.edit/src-gen/fr/obeo/dsl/arduino/provider/InfraRedSensorItemProvider.java b/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.edit/src-gen/fr/obeo/dsl/arduino/provider/InfraRedSensorItemProvider.java new file mode 100644 index 00000000..d16ca359 --- /dev/null +++ b/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.edit/src-gen/fr/obeo/dsl/arduino/provider/InfraRedSensorItemProvider.java @@ -0,0 +1,107 @@ +/** + * Copyright (c) 2013 Obeo. + * 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: + * Obeo - initial API and implementation + */ +package fr.obeo.dsl.arduino.provider; + + +import fr.obeo.dsl.arduino.InfraRedSensor; + +import java.util.Collection; +import java.util.List; + +import org.eclipse.emf.common.notify.AdapterFactory; +import org.eclipse.emf.common.notify.Notification; + +import org.eclipse.emf.edit.provider.IItemPropertyDescriptor; + +/** + * This is the item provider adapter for a {@link fr.obeo.dsl.arduino.InfraRedSensor} object. + * + * + * @generated + */ +public class InfraRedSensorItemProvider extends ArduinoDigitalModuleItemProvider { + /** + * This constructs an instance from a factory and a notifier. + * + * + * @generated + */ + public InfraRedSensorItemProvider(AdapterFactory adapterFactory) { + super(adapterFactory); + } + + /** + * This returns the property descriptors for the adapted class. + * + * + * @generated + */ + @Override + public List getPropertyDescriptors(Object object) { + if (itemPropertyDescriptors == null) { + super.getPropertyDescriptors(object); + + } + return itemPropertyDescriptors; + } + + /** + * This returns InfraRedSensor.gif. + * + * + * @generated + */ + @Override + public Object getImage(Object object) { + return overlayImage(object, getResourceLocator().getImage("full/obj16/InfraRedSensor")); + } + + /** + * This returns the label text for the adapted class. + * + * + * @generated + */ + @Override + public String getText(Object object) { + String label = ((InfraRedSensor)object).getName(); + return label == null || label.length() == 0 ? + getString("_UI_InfraRedSensor_type") : + getString("_UI_InfraRedSensor_type") + " " + label; + } + + + /** + * This handles model notifications by calling {@link #updateChildren} to update any cached + * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}. + * + * + * @generated + */ + @Override + public void notifyChanged(Notification notification) { + updateChildren(notification); + super.notifyChanged(notification); + } + + /** + * This adds {@link org.eclipse.emf.edit.command.CommandParameter}s describing the children + * that can be created under this object. + * + * + * @generated + */ + @Override + protected void collectNewChildDescriptors(Collection newChildDescriptors, Object object) { + super.collectNewChildDescriptors(newChildDescriptors, object); + } + +} diff --git a/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.edit/src-gen/fr/obeo/dsl/arduino/provider/InstructionBlockItemProvider.java b/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.edit/src-gen/fr/obeo/dsl/arduino/provider/InstructionBlockItemProvider.java new file mode 100644 index 00000000..d72df9e3 --- /dev/null +++ b/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.edit/src-gen/fr/obeo/dsl/arduino/provider/InstructionBlockItemProvider.java @@ -0,0 +1,230 @@ +/** + * Copyright (c) 2013 Obeo. + * 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: + * Obeo - initial API and implementation + */ +package fr.obeo.dsl.arduino.provider; + + +import fr.obeo.dsl.arduino.ArduinoFactory; +import fr.obeo.dsl.arduino.ArduinoPackage; +import fr.obeo.dsl.arduino.InstructionBlock; + +import java.util.Collection; +import java.util.List; + +import org.eclipse.emf.common.notify.AdapterFactory; +import org.eclipse.emf.common.notify.Notification; + +import org.eclipse.emf.ecore.EStructuralFeature; + +import org.eclipse.emf.edit.provider.ComposeableAdapterFactory; +import org.eclipse.emf.edit.provider.IItemPropertyDescriptor; +import org.eclipse.emf.edit.provider.ViewerNotification; + +/** + * This is the item provider adapter for a {@link fr.obeo.dsl.arduino.InstructionBlock} object. + * + * + * @generated + */ +public class InstructionBlockItemProvider extends ThreadInstructionBlockItemProvider { + /** + * This constructs an instance from a factory and a notifier. + * + * + * @generated + */ + public InstructionBlockItemProvider(AdapterFactory adapterFactory) { + super(adapterFactory); + } + + /** + * This returns the property descriptors for the adapted class. + * + * + * @generated + */ + @Override + public List getPropertyDescriptors(Object object) { + if (itemPropertyDescriptors == null) { + super.getPropertyDescriptors(object); + + addNextPropertyDescriptor(object); + addPreviousPropertyDescriptor(object); + } + return itemPropertyDescriptors; + } + + /** + * This adds a property descriptor for the Next feature. + * + * + * @generated + */ + protected void addNextPropertyDescriptor(Object object) { + itemPropertyDescriptors.add + (createItemPropertyDescriptor + (((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(), + getResourceLocator(), + getString("_UI_InstructionBlock_next_feature"), + getString("_UI_PropertyDescriptor_description", "_UI_InstructionBlock_next_feature", "_UI_InstructionBlock_type"), + ArduinoPackage.Literals.INSTRUCTION_BLOCK__NEXT, + true, + false, + true, + null, + null, + null)); + } + + /** + * This adds a property descriptor for the Previous feature. + * + * + * @generated + */ + protected void addPreviousPropertyDescriptor(Object object) { + itemPropertyDescriptors.add + (createItemPropertyDescriptor + (((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(), + getResourceLocator(), + getString("_UI_InstructionBlock_previous_feature"), + getString("_UI_PropertyDescriptor_description", "_UI_InstructionBlock_previous_feature", "_UI_InstructionBlock_type"), + ArduinoPackage.Literals.INSTRUCTION_BLOCK__PREVIOUS, + true, + false, + true, + null, + null, + null)); + } + + /** + * This specifies how to implement {@link #getChildren} and is used to deduce an appropriate feature for an + * {@link org.eclipse.emf.edit.command.AddCommand}, {@link org.eclipse.emf.edit.command.RemoveCommand} or + * {@link org.eclipse.emf.edit.command.MoveCommand} in {@link #createCommand}. + * + * + * @generated + */ + @Override + public Collection getChildrenFeatures(Object object) { + if (childrenFeatures == null) { + super.getChildrenFeatures(object); + childrenFeatures.add(ArduinoPackage.Literals.INSTRUCTION_BLOCK__INSTRUCTIONS); + } + return childrenFeatures; + } + + /** + * + * + * @generated + */ + @Override + protected EStructuralFeature getChildFeature(Object object, Object child) { + // Check the type of the specified child object and return the proper feature to use for + // adding (see {@link AddCommand}) it as a child. + + return super.getChildFeature(object, child); + } + + /** + * This returns InstructionBlock.gif. + * + * + * @generated + */ + @Override + public Object getImage(Object object) { + return overlayImage(object, getResourceLocator().getImage("full/obj16/InstructionBlock")); + } + + /** + * This returns the label text for the adapted class. + * + * + * @generated + */ + @Override + public String getText(Object object) { + String label = ((InstructionBlock)object).getName(); + return label == null || label.length() == 0 ? + getString("_UI_InstructionBlock_type") : + getString("_UI_InstructionBlock_type") + " " + label; + } + + + /** + * This handles model notifications by calling {@link #updateChildren} to update any cached + * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}. + * + * + * @generated + */ + @Override + public void notifyChanged(Notification notification) { + updateChildren(notification); + + switch (notification.getFeatureID(InstructionBlock.class)) { + case ArduinoPackage.INSTRUCTION_BLOCK__INSTRUCTIONS: + fireNotifyChanged(new ViewerNotification(notification, notification.getNotifier(), true, false)); + return; + } + super.notifyChanged(notification); + } + + /** + * This adds {@link org.eclipse.emf.edit.command.CommandParameter}s describing the children + * that can be created under this object. + * + * + * @generated + */ + @Override + protected void collectNewChildDescriptors(Collection newChildDescriptors, Object object) { + super.collectNewChildDescriptors(newChildDescriptors, object); + + newChildDescriptors.add + (createChildParameter + (ArduinoPackage.Literals.INSTRUCTION_BLOCK__INSTRUCTIONS, + ArduinoFactory.eINSTANCE.createModuleAssignment())); + + newChildDescriptors.add + (createChildParameter + (ArduinoPackage.Literals.INSTRUCTION_BLOCK__INSTRUCTIONS, + ArduinoFactory.eINSTANCE.createDelay())); + + newChildDescriptors.add + (createChildParameter + (ArduinoPackage.Literals.INSTRUCTION_BLOCK__INSTRUCTIONS, + ArduinoFactory.eINSTANCE.createRepeat())); + + newChildDescriptors.add + (createChildParameter + (ArduinoPackage.Literals.INSTRUCTION_BLOCK__INSTRUCTIONS, + ArduinoFactory.eINSTANCE.createWhile())); + + newChildDescriptors.add + (createChildParameter + (ArduinoPackage.Literals.INSTRUCTION_BLOCK__INSTRUCTIONS, + ArduinoFactory.eINSTANCE.createVariableAssignment())); + + newChildDescriptors.add + (createChildParameter + (ArduinoPackage.Literals.INSTRUCTION_BLOCK__INSTRUCTIONS, + ArduinoFactory.eINSTANCE.createIf())); + + newChildDescriptors.add + (createChildParameter + (ArduinoPackage.Literals.INSTRUCTION_BLOCK__INSTRUCTIONS, + ArduinoFactory.eINSTANCE.createVariableDeclaration())); + } + +} diff --git a/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.edit/src-gen/fr/obeo/dsl/arduino/provider/InstructionItemProvider.java b/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.edit/src-gen/fr/obeo/dsl/arduino/provider/InstructionItemProvider.java new file mode 100644 index 00000000..119ffa65 --- /dev/null +++ b/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.edit/src-gen/fr/obeo/dsl/arduino/provider/InstructionItemProvider.java @@ -0,0 +1,98 @@ +/** + * Copyright (c) 2013 Obeo. + * 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: + * Obeo - initial API and implementation + */ +package fr.obeo.dsl.arduino.provider; + + +import fr.obeo.dsl.arduino.ArduinoPackage; +import fr.obeo.dsl.arduino.Instruction; + +import java.util.Collection; +import java.util.List; + +import org.eclipse.emf.common.notify.AdapterFactory; +import org.eclipse.emf.common.notify.Notification; + +import org.eclipse.emf.edit.provider.ComposeableAdapterFactory; +import org.eclipse.emf.edit.provider.IItemPropertyDescriptor; + +/** + * This is the item provider adapter for a {@link fr.obeo.dsl.arduino.Instruction} object. + * + * + * @generated + */ +public class InstructionItemProvider extends NamedElementItemProvider { + /** + * This constructs an instance from a factory and a notifier. + * + * + * @generated + */ + public InstructionItemProvider(AdapterFactory adapterFactory) { + super(adapterFactory); + } + + /** + * This returns the property descriptors for the adapted class. + * + * + * @generated + */ + @Override + public List getPropertyDescriptors(Object object) { + if (itemPropertyDescriptors == null) { + super.getPropertyDescriptors(object); + + } + return itemPropertyDescriptors; + } + + /** + * This returns the label text for the adapted class. + * + * + * @generated + */ + @Override + public String getText(Object object) { + String label = ((Instruction)object).getName(); + return label == null || label.length() == 0 ? + getString("_UI_Instruction_type") : + getString("_UI_Instruction_type") + " " + label; + } + + + /** + * This handles model notifications by calling {@link #updateChildren} to update any cached + * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}. + * + * + * @generated + */ + @Override + public void notifyChanged(Notification notification) { + updateChildren(notification); + super.notifyChanged(notification); + } + + /** + * This adds {@link org.eclipse.emf.edit.command.CommandParameter}s describing the children + * that can be created under this object. + * + * + * @generated + */ + @Override + protected void collectNewChildDescriptors(Collection newChildDescriptors, Object object) { + super.collectNewChildDescriptors(newChildDescriptors, object); + } + +} diff --git a/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.edit/src-gen/fr/obeo/dsl/arduino/provider/IntegerConstantItemProvider.java b/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.edit/src-gen/fr/obeo/dsl/arduino/provider/IntegerConstantItemProvider.java new file mode 100644 index 00000000..d428ac32 --- /dev/null +++ b/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.edit/src-gen/fr/obeo/dsl/arduino/provider/IntegerConstantItemProvider.java @@ -0,0 +1,138 @@ +/** + * Copyright (c) 2013 Obeo. + * 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: + * Obeo - initial API and implementation + */ +package fr.obeo.dsl.arduino.provider; + + +import fr.obeo.dsl.arduino.ArduinoPackage; +import fr.obeo.dsl.arduino.IntegerConstant; + +import java.util.Collection; +import java.util.List; + +import org.eclipse.emf.common.notify.AdapterFactory; +import org.eclipse.emf.common.notify.Notification; + +import org.eclipse.emf.edit.provider.ComposeableAdapterFactory; +import org.eclipse.emf.edit.provider.IItemPropertyDescriptor; +import org.eclipse.emf.edit.provider.ItemPropertyDescriptor; +import org.eclipse.emf.edit.provider.ViewerNotification; + +/** + * This is the item provider adapter for a {@link fr.obeo.dsl.arduino.IntegerConstant} object. + * + * + * @generated + */ +public class IntegerConstantItemProvider extends ConstantItemProvider { + /** + * This constructs an instance from a factory and a notifier. + * + * + * @generated + */ + public IntegerConstantItemProvider(AdapterFactory adapterFactory) { + super(adapterFactory); + } + + /** + * This returns the property descriptors for the adapted class. + * + * + * @generated + */ + @Override + public List getPropertyDescriptors(Object object) { + if (itemPropertyDescriptors == null) { + super.getPropertyDescriptors(object); + + addValuePropertyDescriptor(object); + } + return itemPropertyDescriptors; + } + + /** + * This adds a property descriptor for the Value feature. + * + * + * @generated + */ + protected void addValuePropertyDescriptor(Object object) { + itemPropertyDescriptors.add + (createItemPropertyDescriptor + (((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(), + getResourceLocator(), + getString("_UI_IntegerConstant_value_feature"), + getString("_UI_PropertyDescriptor_description", "_UI_IntegerConstant_value_feature", "_UI_IntegerConstant_type"), + ArduinoPackage.Literals.INTEGER_CONSTANT__VALUE, + true, + false, + false, + ItemPropertyDescriptor.INTEGRAL_VALUE_IMAGE, + null, + null)); + } + + /** + * This returns IntegerConstant.gif. + * + * + * @generated + */ + @Override + public Object getImage(Object object) { + return overlayImage(object, getResourceLocator().getImage("full/obj16/IntegerConstant")); + } + + /** + * This returns the label text for the adapted class. + * + * + * @generated + */ + @Override + public String getText(Object object) { + IntegerConstant integerConstant = (IntegerConstant)object; + return getString("_UI_IntegerConstant_type") + " " + integerConstant.getValue(); + } + + + /** + * This handles model notifications by calling {@link #updateChildren} to update any cached + * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}. + * + * + * @generated + */ + @Override + public void notifyChanged(Notification notification) { + updateChildren(notification); + + switch (notification.getFeatureID(IntegerConstant.class)) { + case ArduinoPackage.INTEGER_CONSTANT__VALUE: + fireNotifyChanged(new ViewerNotification(notification, notification.getNotifier(), false, true)); + return; + } + super.notifyChanged(notification); + } + + /** + * This adds {@link org.eclipse.emf.edit.command.CommandParameter}s describing the children + * that can be created under this object. + * + * + * @generated + */ + @Override + protected void collectNewChildDescriptors(Collection newChildDescriptors, Object object) { + super.collectNewChildDescriptors(newChildDescriptors, object); + } + +} diff --git a/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.edit/src-gen/fr/obeo/dsl/arduino/provider/IntegerExpressionItemProvider.java b/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.edit/src-gen/fr/obeo/dsl/arduino/provider/IntegerExpressionItemProvider.java new file mode 100644 index 00000000..2fc1a1a4 --- /dev/null +++ b/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.edit/src-gen/fr/obeo/dsl/arduino/provider/IntegerExpressionItemProvider.java @@ -0,0 +1,91 @@ +/** + * Copyright (c) 2013 Obeo. + * 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: + * Obeo - initial API and implementation + */ +package fr.obeo.dsl.arduino.provider; + + +import java.util.Collection; +import java.util.List; + +import org.eclipse.emf.common.notify.AdapterFactory; +import org.eclipse.emf.common.notify.Notification; + +import org.eclipse.emf.edit.provider.IItemPropertyDescriptor; + +/** + * This is the item provider adapter for a {@link fr.obeo.dsl.arduino.IntegerExpression} object. + * + * + * @generated + */ +public class IntegerExpressionItemProvider extends ExpressionItemProvider { + /** + * This constructs an instance from a factory and a notifier. + * + * + * @generated + */ + public IntegerExpressionItemProvider(AdapterFactory adapterFactory) { + super(adapterFactory); + } + + /** + * This returns the property descriptors for the adapted class. + * + * + * @generated + */ + @Override + public List getPropertyDescriptors(Object object) { + if (itemPropertyDescriptors == null) { + super.getPropertyDescriptors(object); + + } + return itemPropertyDescriptors; + } + + /** + * This returns the label text for the adapted class. + * + * + * @generated + */ + @Override + public String getText(Object object) { + return getString("_UI_IntegerExpression_type"); + } + + + /** + * This handles model notifications by calling {@link #updateChildren} to update any cached + * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}. + * + * + * @generated + */ + @Override + public void notifyChanged(Notification notification) { + updateChildren(notification); + super.notifyChanged(notification); + } + + /** + * This adds {@link org.eclipse.emf.edit.command.CommandParameter}s describing the children + * that can be created under this object. + * + * + * @generated + */ + @Override + protected void collectNewChildDescriptors(Collection newChildDescriptors, Object object) { + super.collectNewChildDescriptors(newChildDescriptors, object); + } + +} diff --git a/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.edit/src-gen/fr/obeo/dsl/arduino/provider/IntegerModuleGetItemProvider.java b/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.edit/src-gen/fr/obeo/dsl/arduino/provider/IntegerModuleGetItemProvider.java new file mode 100644 index 00000000..536496a1 --- /dev/null +++ b/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.edit/src-gen/fr/obeo/dsl/arduino/provider/IntegerModuleGetItemProvider.java @@ -0,0 +1,102 @@ +/** + * Copyright (c) 2013 Obeo. + * 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: + * Obeo - initial API and implementation + */ +package fr.obeo.dsl.arduino.provider; + + +import java.util.Collection; +import java.util.List; + +import org.eclipse.emf.common.notify.AdapterFactory; +import org.eclipse.emf.common.notify.Notification; + +import org.eclipse.emf.edit.provider.IItemPropertyDescriptor; + +/** + * This is the item provider adapter for a {@link fr.obeo.dsl.arduino.IntegerModuleGet} object. + * + * + * @generated + */ +public class IntegerModuleGetItemProvider extends ModuleGetItemProvider { + /** + * This constructs an instance from a factory and a notifier. + * + * + * @generated + */ + public IntegerModuleGetItemProvider(AdapterFactory adapterFactory) { + super(adapterFactory); + } + + /** + * This returns the property descriptors for the adapted class. + * + * + * @generated + */ + @Override + public List getPropertyDescriptors(Object object) { + if (itemPropertyDescriptors == null) { + super.getPropertyDescriptors(object); + + } + return itemPropertyDescriptors; + } + + /** + * This returns IntegerModuleGet.gif. + * + * + * @generated + */ + @Override + public Object getImage(Object object) { + return overlayImage(object, getResourceLocator().getImage("full/obj16/IntegerModuleGet")); + } + + /** + * This returns the label text for the adapted class. + * + * + * @generated + */ + @Override + public String getText(Object object) { + return getString("_UI_IntegerModuleGet_type"); + } + + + /** + * This handles model notifications by calling {@link #updateChildren} to update any cached + * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}. + * + * + * @generated + */ + @Override + public void notifyChanged(Notification notification) { + updateChildren(notification); + super.notifyChanged(notification); + } + + /** + * This adds {@link org.eclipse.emf.edit.command.CommandParameter}s describing the children + * that can be created under this object. + * + * + * @generated + */ + @Override + protected void collectNewChildDescriptors(Collection newChildDescriptors, Object object) { + super.collectNewChildDescriptors(newChildDescriptors, object); + } + +} diff --git a/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.edit/src-gen/fr/obeo/dsl/arduino/provider/IntegerVariableItemProvider.java b/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.edit/src-gen/fr/obeo/dsl/arduino/provider/IntegerVariableItemProvider.java new file mode 100644 index 00000000..ff4e491c --- /dev/null +++ b/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.edit/src-gen/fr/obeo/dsl/arduino/provider/IntegerVariableItemProvider.java @@ -0,0 +1,164 @@ +/** + * Copyright (c) 2013 Obeo. + * 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: + * Obeo - initial API and implementation + */ +package fr.obeo.dsl.arduino.provider; + + +import fr.obeo.dsl.arduino.ArduinoPackage; +import fr.obeo.dsl.arduino.IntegerVariable; + +import java.util.Collection; +import java.util.List; + +import org.eclipse.emf.common.notify.AdapterFactory; +import org.eclipse.emf.common.notify.Notification; + +import org.eclipse.emf.edit.provider.ComposeableAdapterFactory; +import org.eclipse.emf.edit.provider.IItemPropertyDescriptor; +import org.eclipse.emf.edit.provider.ItemPropertyDescriptor; +import org.eclipse.emf.edit.provider.ViewerNotification; + +/** + * This is the item provider adapter for a {@link fr.obeo.dsl.arduino.IntegerVariable} object. + * + * + * @generated + */ +public class IntegerVariableItemProvider extends VariableItemProvider { + /** + * This constructs an instance from a factory and a notifier. + * + * + * @generated + */ + public IntegerVariableItemProvider(AdapterFactory adapterFactory) { + super(adapterFactory); + } + + /** + * This returns the property descriptors for the adapted class. + * + * + * @generated + */ + @Override + public List getPropertyDescriptors(Object object) { + if (itemPropertyDescriptors == null) { + super.getPropertyDescriptors(object); + + addInitialValuePropertyDescriptor(object); + addValuePropertyDescriptor(object); + } + return itemPropertyDescriptors; + } + + /** + * This adds a property descriptor for the Initial Value feature. + * + * + * @generated + */ + protected void addInitialValuePropertyDescriptor(Object object) { + itemPropertyDescriptors.add + (createItemPropertyDescriptor + (((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(), + getResourceLocator(), + getString("_UI_IntegerVariable_initialValue_feature"), + getString("_UI_PropertyDescriptor_description", "_UI_IntegerVariable_initialValue_feature", "_UI_IntegerVariable_type"), + ArduinoPackage.Literals.INTEGER_VARIABLE__INITIAL_VALUE, + true, + false, + false, + ItemPropertyDescriptor.INTEGRAL_VALUE_IMAGE, + null, + null)); + } + + /** + * This adds a property descriptor for the Value feature. + * + * + * @generated + */ + protected void addValuePropertyDescriptor(Object object) { + itemPropertyDescriptors.add + (createItemPropertyDescriptor + (((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(), + getResourceLocator(), + getString("_UI_IntegerVariable_value_feature"), + getString("_UI_PropertyDescriptor_description", "_UI_IntegerVariable_value_feature", "_UI_IntegerVariable_type"), + ArduinoPackage.Literals.INTEGER_VARIABLE__VALUE, + true, + false, + false, + ItemPropertyDescriptor.GENERIC_VALUE_IMAGE, + null, + null)); + } + + /** + * This returns IntegerVariable.gif. + * + * + * @generated + */ + @Override + public Object getImage(Object object) { + return overlayImage(object, getResourceLocator().getImage("full/obj16/IntegerVariable")); + } + + /** + * This returns the label text for the adapted class. + * + * + * @generated + */ + @Override + public String getText(Object object) { + String label = ((IntegerVariable)object).getName(); + return label == null || label.length() == 0 ? + getString("_UI_IntegerVariable_type") : + getString("_UI_IntegerVariable_type") + " " + label; + } + + + /** + * This handles model notifications by calling {@link #updateChildren} to update any cached + * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}. + * + * + * @generated + */ + @Override + public void notifyChanged(Notification notification) { + updateChildren(notification); + + switch (notification.getFeatureID(IntegerVariable.class)) { + case ArduinoPackage.INTEGER_VARIABLE__INITIAL_VALUE: + case ArduinoPackage.INTEGER_VARIABLE__VALUE: + fireNotifyChanged(new ViewerNotification(notification, notification.getNotifier(), false, true)); + return; + } + super.notifyChanged(notification); + } + + /** + * This adds {@link org.eclipse.emf.edit.command.CommandParameter}s describing the children + * that can be created under this object. + * + * + * @generated + */ + @Override + protected void collectNewChildDescriptors(Collection newChildDescriptors, Object object) { + super.collectNewChildDescriptors(newChildDescriptors, object); + } + +} diff --git a/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.edit/src-gen/fr/obeo/dsl/arduino/provider/LEDItemProvider.java b/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.edit/src-gen/fr/obeo/dsl/arduino/provider/LEDItemProvider.java new file mode 100644 index 00000000..dcb2ee9a --- /dev/null +++ b/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.edit/src-gen/fr/obeo/dsl/arduino/provider/LEDItemProvider.java @@ -0,0 +1,107 @@ +/** + * Copyright (c) 2013 Obeo. + * 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: + * Obeo - initial API and implementation + */ +package fr.obeo.dsl.arduino.provider; + + +import fr.obeo.dsl.arduino.LED; + +import java.util.Collection; +import java.util.List; + +import org.eclipse.emf.common.notify.AdapterFactory; +import org.eclipse.emf.common.notify.Notification; + +import org.eclipse.emf.edit.provider.IItemPropertyDescriptor; + +/** + * This is the item provider adapter for a {@link fr.obeo.dsl.arduino.LED} object. + * + * + * @generated + */ +public class LEDItemProvider extends ArduinoDigitalModuleItemProvider { + /** + * This constructs an instance from a factory and a notifier. + * + * + * @generated + */ + public LEDItemProvider(AdapterFactory adapterFactory) { + super(adapterFactory); + } + + /** + * This returns the property descriptors for the adapted class. + * + * + * @generated + */ + @Override + public List getPropertyDescriptors(Object object) { + if (itemPropertyDescriptors == null) { + super.getPropertyDescriptors(object); + + } + return itemPropertyDescriptors; + } + + /** + * This returns LED.gif. + * + * + * @generated + */ + @Override + public Object getImage(Object object) { + return overlayImage(object, getResourceLocator().getImage("full/obj16/LED")); + } + + /** + * This returns the label text for the adapted class. + * + * + * @generated + */ + @Override + public String getText(Object object) { + String label = ((LED)object).getName(); + return label == null || label.length() == 0 ? + getString("_UI_LED_type") : + getString("_UI_LED_type") + " " + label; + } + + + /** + * This handles model notifications by calling {@link #updateChildren} to update any cached + * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}. + * + * + * @generated + */ + @Override + public void notifyChanged(Notification notification) { + updateChildren(notification); + super.notifyChanged(notification); + } + + /** + * This adds {@link org.eclipse.emf.edit.command.CommandParameter}s describing the children + * that can be created under this object. + * + * + * @generated + */ + @Override + protected void collectNewChildDescriptors(Collection newChildDescriptors, Object object) { + super.collectNewChildDescriptors(newChildDescriptors, object); + } + +} diff --git a/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.edit/src-gen/fr/obeo/dsl/arduino/provider/LinkItemProvider.java b/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.edit/src-gen/fr/obeo/dsl/arduino/provider/LinkItemProvider.java new file mode 100644 index 00000000..0e2f45b6 --- /dev/null +++ b/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.edit/src-gen/fr/obeo/dsl/arduino/provider/LinkItemProvider.java @@ -0,0 +1,155 @@ +/** + * Copyright (c) 2013 Obeo. + * 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: + * Obeo - initial API and implementation + */ +package fr.obeo.dsl.arduino.provider; + + +import fr.obeo.dsl.arduino.ArduinoPackage; +import fr.obeo.dsl.arduino.Link; + +import java.util.Collection; +import java.util.List; + +import org.eclipse.emf.common.notify.AdapterFactory; +import org.eclipse.emf.common.notify.Notification; + +import org.eclipse.emf.edit.provider.ComposeableAdapterFactory; +import org.eclipse.emf.edit.provider.IItemPropertyDescriptor; + +/** + * This is the item provider adapter for a {@link fr.obeo.dsl.arduino.Link} object. + * + * + * @generated + */ +public class LinkItemProvider extends NamedElementItemProvider { + /** + * This constructs an instance from a factory and a notifier. + * + * + * @generated + */ + public LinkItemProvider(AdapterFactory adapterFactory) { + super(adapterFactory); + } + + /** + * This returns the property descriptors for the adapted class. + * + * + * @generated + */ + @Override + public List getPropertyDescriptors(Object object) { + if (itemPropertyDescriptors == null) { + super.getPropertyDescriptors(object); + + addInBoardPropertyDescriptor(object); + addOutBoardPropertyDescriptor(object); + } + return itemPropertyDescriptors; + } + + /** + * This adds a property descriptor for the In Board feature. + * + * + * @generated + */ + protected void addInBoardPropertyDescriptor(Object object) { + itemPropertyDescriptors.add + (createItemPropertyDescriptor + (((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(), + getResourceLocator(), + getString("_UI_Link_inBoard_feature"), + getString("_UI_PropertyDescriptor_description", "_UI_Link_inBoard_feature", "_UI_Link_type"), + ArduinoPackage.Literals.LINK__IN_BOARD, + true, + false, + true, + null, + null, + null)); + } + + /** + * This adds a property descriptor for the Out Board feature. + * + * + * @generated + */ + protected void addOutBoardPropertyDescriptor(Object object) { + itemPropertyDescriptors.add + (createItemPropertyDescriptor + (((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(), + getResourceLocator(), + getString("_UI_Link_outBoard_feature"), + getString("_UI_PropertyDescriptor_description", "_UI_Link_outBoard_feature", "_UI_Link_type"), + ArduinoPackage.Literals.LINK__OUT_BOARD, + true, + false, + true, + null, + null, + null)); + } + + /** + * This returns Link.gif. + * + * + * @generated + */ + @Override + public Object getImage(Object object) { + return overlayImage(object, getResourceLocator().getImage("full/obj16/Link")); + } + + /** + * This returns the label text for the adapted class. + * + * + * @generated + */ + @Override + public String getText(Object object) { + String label = ((Link)object).getName(); + return label == null || label.length() == 0 ? + getString("_UI_Link_type") : + getString("_UI_Link_type") + " " + label; + } + + + /** + * This handles model notifications by calling {@link #updateChildren} to update any cached + * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}. + * + * + * @generated + */ + @Override + public void notifyChanged(Notification notification) { + updateChildren(notification); + super.notifyChanged(notification); + } + + /** + * This adds {@link org.eclipse.emf.edit.command.CommandParameter}s describing the children + * that can be created under this object. + * + * + * @generated + */ + @Override + protected void collectNewChildDescriptors(Collection newChildDescriptors, Object object) { + super.collectNewChildDescriptors(newChildDescriptors, object); + } + +} diff --git a/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.edit/src-gen/fr/obeo/dsl/arduino/provider/MicroServoItemProvider.java b/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.edit/src-gen/fr/obeo/dsl/arduino/provider/MicroServoItemProvider.java new file mode 100644 index 00000000..9a2e855d --- /dev/null +++ b/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.edit/src-gen/fr/obeo/dsl/arduino/provider/MicroServoItemProvider.java @@ -0,0 +1,107 @@ +/** + * Copyright (c) 2013 Obeo. + * 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: + * Obeo - initial API and implementation + */ +package fr.obeo.dsl.arduino.provider; + + +import fr.obeo.dsl.arduino.MicroServo; + +import java.util.Collection; +import java.util.List; + +import org.eclipse.emf.common.notify.AdapterFactory; +import org.eclipse.emf.common.notify.Notification; + +import org.eclipse.emf.edit.provider.IItemPropertyDescriptor; + +/** + * This is the item provider adapter for a {@link fr.obeo.dsl.arduino.MicroServo} object. + * + * + * @generated + */ +public class MicroServoItemProvider extends ArduinoDigitalModuleItemProvider { + /** + * This constructs an instance from a factory and a notifier. + * + * + * @generated + */ + public MicroServoItemProvider(AdapterFactory adapterFactory) { + super(adapterFactory); + } + + /** + * This returns the property descriptors for the adapted class. + * + * + * @generated + */ + @Override + public List getPropertyDescriptors(Object object) { + if (itemPropertyDescriptors == null) { + super.getPropertyDescriptors(object); + + } + return itemPropertyDescriptors; + } + + /** + * This returns MicroServo.gif. + * + * + * @generated + */ + @Override + public Object getImage(Object object) { + return overlayImage(object, getResourceLocator().getImage("full/obj16/MicroServo")); + } + + /** + * This returns the label text for the adapted class. + * + * + * @generated + */ + @Override + public String getText(Object object) { + String label = ((MicroServo)object).getName(); + return label == null || label.length() == 0 ? + getString("_UI_MicroServo_type") : + getString("_UI_MicroServo_type") + " " + label; + } + + + /** + * This handles model notifications by calling {@link #updateChildren} to update any cached + * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}. + * + * + * @generated + */ + @Override + public void notifyChanged(Notification notification) { + updateChildren(notification); + super.notifyChanged(notification); + } + + /** + * This adds {@link org.eclipse.emf.edit.command.CommandParameter}s describing the children + * that can be created under this object. + * + * + * @generated + */ + @Override + protected void collectNewChildDescriptors(Collection newChildDescriptors, Object object) { + super.collectNewChildDescriptors(newChildDescriptors, object); + } + +} diff --git a/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.edit/src-gen/fr/obeo/dsl/arduino/provider/ModuleAssignmentItemProvider.java b/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.edit/src-gen/fr/obeo/dsl/arduino/provider/ModuleAssignmentItemProvider.java new file mode 100644 index 00000000..963ce5c2 --- /dev/null +++ b/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.edit/src-gen/fr/obeo/dsl/arduino/provider/ModuleAssignmentItemProvider.java @@ -0,0 +1,203 @@ +/** + * Copyright (c) 2013 Obeo. + * 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: + * Obeo - initial API and implementation + */ +package fr.obeo.dsl.arduino.provider; + + +import fr.obeo.dsl.arduino.ArduinoFactory; +import fr.obeo.dsl.arduino.ArduinoPackage; +import fr.obeo.dsl.arduino.ModuleAssignment; + +import java.util.Collection; +import java.util.List; + +import org.eclipse.emf.common.notify.AdapterFactory; +import org.eclipse.emf.common.notify.Notification; + +import org.eclipse.emf.ecore.EStructuralFeature; + +import org.eclipse.emf.edit.provider.IItemPropertyDescriptor; +import org.eclipse.emf.edit.provider.ViewerNotification; + +/** + * This is the item provider adapter for a {@link fr.obeo.dsl.arduino.ModuleAssignment} object. + * + * + * @generated + */ +public class ModuleAssignmentItemProvider extends ModuleInstructionItemProvider { + /** + * This constructs an instance from a factory and a notifier. + * + * + * @generated + */ + public ModuleAssignmentItemProvider(AdapterFactory adapterFactory) { + super(adapterFactory); + } + + /** + * This returns the property descriptors for the adapted class. + * + * + * @generated + */ + @Override + public List getPropertyDescriptors(Object object) { + if (itemPropertyDescriptors == null) { + super.getPropertyDescriptors(object); + + } + return itemPropertyDescriptors; + } + + /** + * This specifies how to implement {@link #getChildren} and is used to deduce an appropriate feature for an + * {@link org.eclipse.emf.edit.command.AddCommand}, {@link org.eclipse.emf.edit.command.RemoveCommand} or + * {@link org.eclipse.emf.edit.command.MoveCommand} in {@link #createCommand}. + * + * + * @generated + */ + @Override + public Collection getChildrenFeatures(Object object) { + if (childrenFeatures == null) { + super.getChildrenFeatures(object); + childrenFeatures.add(ArduinoPackage.Literals.ASSIGNMENT__OPERAND); + } + return childrenFeatures; + } + + /** + * + * + * @generated + */ + @Override + protected EStructuralFeature getChildFeature(Object object, Object child) { + // Check the type of the specified child object and return the proper feature to use for + // adding (see {@link AddCommand}) it as a child. + + return super.getChildFeature(object, child); + } + + /** + * This returns ModuleAssignment.gif. + * + * + * @generated + */ + @Override + public Object getImage(Object object) { + return overlayImage(object, getResourceLocator().getImage("full/obj16/ModuleAssignment")); + } + + /** + * This returns the label text for the adapted class. + * + * + * @generated + */ + @Override + public String getText(Object object) { + String label = ((ModuleAssignment)object).getName(); + return label == null || label.length() == 0 ? + getString("_UI_ModuleAssignment_type") : + getString("_UI_ModuleAssignment_type") + " " + label; + } + + + /** + * This handles model notifications by calling {@link #updateChildren} to update any cached + * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}. + * + * + * @generated + */ + @Override + public void notifyChanged(Notification notification) { + updateChildren(notification); + + switch (notification.getFeatureID(ModuleAssignment.class)) { + case ArduinoPackage.MODULE_ASSIGNMENT__OPERAND: + fireNotifyChanged(new ViewerNotification(notification, notification.getNotifier(), true, false)); + return; + } + super.notifyChanged(notification); + } + + /** + * This adds {@link org.eclipse.emf.edit.command.CommandParameter}s describing the children + * that can be created under this object. + * + * + * @generated + */ + @Override + protected void collectNewChildDescriptors(Collection newChildDescriptors, Object object) { + super.collectNewChildDescriptors(newChildDescriptors, object); + + newChildDescriptors.add + (createChildParameter + (ArduinoPackage.Literals.ASSIGNMENT__OPERAND, + ArduinoFactory.eINSTANCE.createBinaryIntegerExpression())); + + newChildDescriptors.add + (createChildParameter + (ArduinoPackage.Literals.ASSIGNMENT__OPERAND, + ArduinoFactory.eINSTANCE.createBinaryBooleanExpression())); + + newChildDescriptors.add + (createChildParameter + (ArduinoPackage.Literals.ASSIGNMENT__OPERAND, + ArduinoFactory.eINSTANCE.createIntegerConstant())); + + newChildDescriptors.add + (createChildParameter + (ArduinoPackage.Literals.ASSIGNMENT__OPERAND, + ArduinoFactory.eINSTANCE.createBooleanConstant())); + + newChildDescriptors.add + (createChildParameter + (ArduinoPackage.Literals.ASSIGNMENT__OPERAND, + ArduinoFactory.eINSTANCE.createIntegerVariable())); + + newChildDescriptors.add + (createChildParameter + (ArduinoPackage.Literals.ASSIGNMENT__OPERAND, + ArduinoFactory.eINSTANCE.createBooleanVariable())); + + newChildDescriptors.add + (createChildParameter + (ArduinoPackage.Literals.ASSIGNMENT__OPERAND, + ArduinoFactory.eINSTANCE.createBooleanModuleGet())); + + newChildDescriptors.add + (createChildParameter + (ArduinoPackage.Literals.ASSIGNMENT__OPERAND, + ArduinoFactory.eINSTANCE.createIntegerModuleGet())); + + newChildDescriptors.add + (createChildParameter + (ArduinoPackage.Literals.ASSIGNMENT__OPERAND, + ArduinoFactory.eINSTANCE.createUnaryBooleanExpression())); + + newChildDescriptors.add + (createChildParameter + (ArduinoPackage.Literals.ASSIGNMENT__OPERAND, + ArduinoFactory.eINSTANCE.createUnaryIntegerExpression())); + + newChildDescriptors.add + (createChildParameter + (ArduinoPackage.Literals.ASSIGNMENT__OPERAND, + ArduinoFactory.eINSTANCE.createVariableRef())); + } + +} diff --git a/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.edit/src-gen/fr/obeo/dsl/arduino/provider/ModuleGetItemProvider.java b/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.edit/src-gen/fr/obeo/dsl/arduino/provider/ModuleGetItemProvider.java new file mode 100644 index 00000000..ce49ede1 --- /dev/null +++ b/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.edit/src-gen/fr/obeo/dsl/arduino/provider/ModuleGetItemProvider.java @@ -0,0 +1,128 @@ +/** + * Copyright (c) 2013 Obeo. + * 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: + * Obeo - initial API and implementation + */ +package fr.obeo.dsl.arduino.provider; + + +import fr.obeo.dsl.arduino.ArduinoPackage; + +import java.util.Collection; +import java.util.List; + +import org.eclipse.emf.common.notify.AdapterFactory; +import org.eclipse.emf.common.notify.Notification; + +import org.eclipse.emf.edit.provider.ComposeableAdapterFactory; +import org.eclipse.emf.edit.provider.IItemPropertyDescriptor; + +/** + * This is the item provider adapter for a {@link fr.obeo.dsl.arduino.ModuleGet} object. + * + * + * @generated + */ +public class ModuleGetItemProvider extends ExpressionItemProvider { + /** + * This constructs an instance from a factory and a notifier. + * + * + * @generated + */ + public ModuleGetItemProvider(AdapterFactory adapterFactory) { + super(adapterFactory); + } + + /** + * This returns the property descriptors for the adapted class. + * + * + * @generated + */ + @Override + public List getPropertyDescriptors(Object object) { + if (itemPropertyDescriptors == null) { + super.getPropertyDescriptors(object); + + addModulePropertyDescriptor(object); + } + return itemPropertyDescriptors; + } + + /** + * This adds a property descriptor for the Module feature. + * + * + * @generated + */ + protected void addModulePropertyDescriptor(Object object) { + itemPropertyDescriptors.add + (createItemPropertyDescriptor + (((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(), + getResourceLocator(), + getString("_UI_ModuleGet_module_feature"), + getString("_UI_PropertyDescriptor_description", "_UI_ModuleGet_module_feature", "_UI_ModuleGet_type"), + ArduinoPackage.Literals.MODULE_GET__MODULE, + true, + false, + true, + null, + null, + null)); + } + + /** + * This returns ModuleGet.gif. + * + * + * @generated + */ + @Override + public Object getImage(Object object) { + return overlayImage(object, getResourceLocator().getImage("full/obj16/ModuleGet")); + } + + /** + * This returns the label text for the adapted class. + * + * + * @generated + */ + @Override + public String getText(Object object) { + return getString("_UI_ModuleGet_type"); + } + + + /** + * This handles model notifications by calling {@link #updateChildren} to update any cached + * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}. + * + * + * @generated + */ + @Override + public void notifyChanged(Notification notification) { + updateChildren(notification); + super.notifyChanged(notification); + } + + /** + * This adds {@link org.eclipse.emf.edit.command.CommandParameter}s describing the children + * that can be created under this object. + * + * + * @generated + */ + @Override + protected void collectNewChildDescriptors(Collection newChildDescriptors, Object object) { + super.collectNewChildDescriptors(newChildDescriptors, object); + } + +} diff --git a/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.edit/src-gen/fr/obeo/dsl/arduino/provider/ModuleInstructionItemProvider.java b/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.edit/src-gen/fr/obeo/dsl/arduino/provider/ModuleInstructionItemProvider.java new file mode 100644 index 00000000..a2f19799 --- /dev/null +++ b/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.edit/src-gen/fr/obeo/dsl/arduino/provider/ModuleInstructionItemProvider.java @@ -0,0 +1,121 @@ +/** + * Copyright (c) 2013 Obeo. + * 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: + * Obeo - initial API and implementation + */ +package fr.obeo.dsl.arduino.provider; + + +import fr.obeo.dsl.arduino.ArduinoPackage; +import fr.obeo.dsl.arduino.ModuleInstruction; + +import java.util.Collection; +import java.util.List; + +import org.eclipse.emf.common.notify.AdapterFactory; +import org.eclipse.emf.common.notify.Notification; + +import org.eclipse.emf.edit.provider.ComposeableAdapterFactory; +import org.eclipse.emf.edit.provider.IItemPropertyDescriptor; + +/** + * This is the item provider adapter for a {@link fr.obeo.dsl.arduino.ModuleInstruction} object. + * + * + * @generated + */ +public class ModuleInstructionItemProvider extends InstructionItemProvider { + /** + * This constructs an instance from a factory and a notifier. + * + * + * @generated + */ + public ModuleInstructionItemProvider(AdapterFactory adapterFactory) { + super(adapterFactory); + } + + /** + * This returns the property descriptors for the adapted class. + * + * + * @generated + */ + @Override + public List getPropertyDescriptors(Object object) { + if (itemPropertyDescriptors == null) { + super.getPropertyDescriptors(object); + + addModulePropertyDescriptor(object); + } + return itemPropertyDescriptors; + } + + /** + * This adds a property descriptor for the Module feature. + * + * + * @generated + */ + protected void addModulePropertyDescriptor(Object object) { + itemPropertyDescriptors.add + (createItemPropertyDescriptor + (((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(), + getResourceLocator(), + getString("_UI_ModuleInstruction_module_feature"), + getString("_UI_PropertyDescriptor_description", "_UI_ModuleInstruction_module_feature", "_UI_ModuleInstruction_type"), + ArduinoPackage.Literals.MODULE_INSTRUCTION__MODULE, + true, + false, + true, + null, + null, + null)); + } + + /** + * This returns the label text for the adapted class. + * + * + * @generated + */ + @Override + public String getText(Object object) { + String label = ((ModuleInstruction)object).getName(); + return label == null || label.length() == 0 ? + getString("_UI_ModuleInstruction_type") : + getString("_UI_ModuleInstruction_type") + " " + label; + } + + + /** + * This handles model notifications by calling {@link #updateChildren} to update any cached + * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}. + * + * + * @generated + */ + @Override + public void notifyChanged(Notification notification) { + updateChildren(notification); + super.notifyChanged(notification); + } + + /** + * This adds {@link org.eclipse.emf.edit.command.CommandParameter}s describing the children + * that can be created under this object. + * + * + * @generated + */ + @Override + protected void collectNewChildDescriptors(Collection newChildDescriptors, Object object) { + super.collectNewChildDescriptors(newChildDescriptors, object); + } + +} diff --git a/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.edit/src-gen/fr/obeo/dsl/arduino/provider/MusicPlayerItemProvider.java b/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.edit/src-gen/fr/obeo/dsl/arduino/provider/MusicPlayerItemProvider.java new file mode 100644 index 00000000..57183bc9 --- /dev/null +++ b/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.edit/src-gen/fr/obeo/dsl/arduino/provider/MusicPlayerItemProvider.java @@ -0,0 +1,107 @@ +/** + * Copyright (c) 2013 Obeo. + * 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: + * Obeo - initial API and implementation + */ +package fr.obeo.dsl.arduino.provider; + + +import fr.obeo.dsl.arduino.MusicPlayer; + +import java.util.Collection; +import java.util.List; + +import org.eclipse.emf.common.notify.AdapterFactory; +import org.eclipse.emf.common.notify.Notification; + +import org.eclipse.emf.edit.provider.IItemPropertyDescriptor; + +/** + * This is the item provider adapter for a {@link fr.obeo.dsl.arduino.MusicPlayer} object. + * + * + * @generated + */ +public class MusicPlayerItemProvider extends ArduinoAnalogModuleItemProvider { + /** + * This constructs an instance from a factory and a notifier. + * + * + * @generated + */ + public MusicPlayerItemProvider(AdapterFactory adapterFactory) { + super(adapterFactory); + } + + /** + * This returns the property descriptors for the adapted class. + * + * + * @generated + */ + @Override + public List getPropertyDescriptors(Object object) { + if (itemPropertyDescriptors == null) { + super.getPropertyDescriptors(object); + + } + return itemPropertyDescriptors; + } + + /** + * This returns MusicPlayer.gif. + * + * + * @generated + */ + @Override + public Object getImage(Object object) { + return overlayImage(object, getResourceLocator().getImage("full/obj16/MusicPlayer")); + } + + /** + * This returns the label text for the adapted class. + * + * + * @generated + */ + @Override + public String getText(Object object) { + String label = ((MusicPlayer)object).getName(); + return label == null || label.length() == 0 ? + getString("_UI_MusicPlayer_type") : + getString("_UI_MusicPlayer_type") + " " + label; + } + + + /** + * This handles model notifications by calling {@link #updateChildren} to update any cached + * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}. + * + * + * @generated + */ + @Override + public void notifyChanged(Notification notification) { + updateChildren(notification); + super.notifyChanged(notification); + } + + /** + * This adds {@link org.eclipse.emf.edit.command.CommandParameter}s describing the children + * that can be created under this object. + * + * + * @generated + */ + @Override + protected void collectNewChildDescriptors(Collection newChildDescriptors, Object object) { + super.collectNewChildDescriptors(newChildDescriptors, object); + } + +} diff --git a/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.edit/src-gen/fr/obeo/dsl/arduino/provider/NamedElementItemProvider.java b/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.edit/src-gen/fr/obeo/dsl/arduino/provider/NamedElementItemProvider.java new file mode 100644 index 00000000..60108ae6 --- /dev/null +++ b/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.edit/src-gen/fr/obeo/dsl/arduino/provider/NamedElementItemProvider.java @@ -0,0 +1,155 @@ +/** + * Copyright (c) 2013 Obeo. + * 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: + * Obeo - initial API and implementation + */ +package fr.obeo.dsl.arduino.provider; + + +import fr.obeo.dsl.arduino.ArduinoPackage; +import fr.obeo.dsl.arduino.NamedElement; + +import java.util.Collection; +import java.util.List; + +import org.eclipse.emf.common.notify.AdapterFactory; +import org.eclipse.emf.common.notify.Notification; + +import org.eclipse.emf.common.util.ResourceLocator; + +import org.eclipse.emf.edit.provider.ComposeableAdapterFactory; +import org.eclipse.emf.edit.provider.IEditingDomainItemProvider; +import org.eclipse.emf.edit.provider.IItemLabelProvider; +import org.eclipse.emf.edit.provider.IItemPropertyDescriptor; +import org.eclipse.emf.edit.provider.IItemPropertySource; +import org.eclipse.emf.edit.provider.IStructuredItemContentProvider; +import org.eclipse.emf.edit.provider.ITreeItemContentProvider; +import org.eclipse.emf.edit.provider.ItemPropertyDescriptor; +import org.eclipse.emf.edit.provider.ItemProviderAdapter; +import org.eclipse.emf.edit.provider.ViewerNotification; + +/** + * This is the item provider adapter for a {@link fr.obeo.dsl.arduino.NamedElement} object. + * + * + * @generated + */ +public class NamedElementItemProvider + extends ItemProviderAdapter + implements + IEditingDomainItemProvider, + IStructuredItemContentProvider, + ITreeItemContentProvider, + IItemLabelProvider, + IItemPropertySource { + /** + * This constructs an instance from a factory and a notifier. + * + * + * @generated + */ + public NamedElementItemProvider(AdapterFactory adapterFactory) { + super(adapterFactory); + } + + /** + * This returns the property descriptors for the adapted class. + * + * + * @generated + */ + @Override + public List getPropertyDescriptors(Object object) { + if (itemPropertyDescriptors == null) { + super.getPropertyDescriptors(object); + + addNamePropertyDescriptor(object); + } + return itemPropertyDescriptors; + } + + /** + * This adds a property descriptor for the Name feature. + * + * + * @generated + */ + protected void addNamePropertyDescriptor(Object object) { + itemPropertyDescriptors.add + (createItemPropertyDescriptor + (((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(), + getResourceLocator(), + getString("_UI_NamedElement_name_feature"), + getString("_UI_PropertyDescriptor_description", "_UI_NamedElement_name_feature", "_UI_NamedElement_type"), + ArduinoPackage.Literals.NAMED_ELEMENT__NAME, + true, + false, + false, + ItemPropertyDescriptor.GENERIC_VALUE_IMAGE, + null, + null)); + } + + /** + * This returns the label text for the adapted class. + * + * + * @generated + */ + @Override + public String getText(Object object) { + String label = ((NamedElement)object).getName(); + return label == null || label.length() == 0 ? + getString("_UI_NamedElement_type") : + getString("_UI_NamedElement_type") + " " + label; + } + + + /** + * This handles model notifications by calling {@link #updateChildren} to update any cached + * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}. + * + * + * @generated + */ + @Override + public void notifyChanged(Notification notification) { + updateChildren(notification); + + switch (notification.getFeatureID(NamedElement.class)) { + case ArduinoPackage.NAMED_ELEMENT__NAME: + fireNotifyChanged(new ViewerNotification(notification, notification.getNotifier(), false, true)); + return; + } + super.notifyChanged(notification); + } + + /** + * This adds {@link org.eclipse.emf.edit.command.CommandParameter}s describing the children + * that can be created under this object. + * + * + * @generated + */ + @Override + protected void collectNewChildDescriptors(Collection newChildDescriptors, Object object) { + super.collectNewChildDescriptors(newChildDescriptors, object); + } + + /** + * Return the resource locator for this item provider's resources. + * + * + * @generated + */ + @Override + public ResourceLocator getResourceLocator() { + return ArduinoEditPlugin.INSTANCE; + } + +} diff --git a/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.edit/src-gen/fr/obeo/dsl/arduino/provider/PinItemProvider.java b/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.edit/src-gen/fr/obeo/dsl/arduino/provider/PinItemProvider.java new file mode 100644 index 00000000..8c1a5289 --- /dev/null +++ b/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.edit/src-gen/fr/obeo/dsl/arduino/provider/PinItemProvider.java @@ -0,0 +1,177 @@ +/** + * Copyright (c) 2013 Obeo. + * 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: + * Obeo - initial API and implementation + */ +package fr.obeo.dsl.arduino.provider; + + +import fr.obeo.dsl.arduino.ArduinoPackage; +import fr.obeo.dsl.arduino.Pin; + +import java.util.Collection; +import java.util.List; + +import org.eclipse.emf.common.notify.AdapterFactory; +import org.eclipse.emf.common.notify.Notification; + +import org.eclipse.emf.common.util.ResourceLocator; + +import org.eclipse.emf.edit.provider.ComposeableAdapterFactory; +import org.eclipse.emf.edit.provider.IEditingDomainItemProvider; +import org.eclipse.emf.edit.provider.IItemLabelProvider; +import org.eclipse.emf.edit.provider.IItemPropertyDescriptor; +import org.eclipse.emf.edit.provider.IItemPropertySource; +import org.eclipse.emf.edit.provider.IStructuredItemContentProvider; +import org.eclipse.emf.edit.provider.ITreeItemContentProvider; +import org.eclipse.emf.edit.provider.ItemPropertyDescriptor; +import org.eclipse.emf.edit.provider.ItemProviderAdapter; +import org.eclipse.emf.edit.provider.ViewerNotification; + +/** + * This is the item provider adapter for a {@link fr.obeo.dsl.arduino.Pin} object. + * + * + * @generated + */ +public class PinItemProvider + extends ItemProviderAdapter + implements + IEditingDomainItemProvider, + IStructuredItemContentProvider, + ITreeItemContentProvider, + IItemLabelProvider, + IItemPropertySource { + /** + * This constructs an instance from a factory and a notifier. + * + * + * @generated + */ + public PinItemProvider(AdapterFactory adapterFactory) { + super(adapterFactory); + } + + /** + * This returns the property descriptors for the adapted class. + * + * + * @generated + */ + @Override + public List getPropertyDescriptors(Object object) { + if (itemPropertyDescriptors == null) { + super.getPropertyDescriptors(object); + + addIdPropertyDescriptor(object); + addLevelPropertyDescriptor(object); + } + return itemPropertyDescriptors; + } + + /** + * This adds a property descriptor for the Id feature. + * + * + * @generated + */ + protected void addIdPropertyDescriptor(Object object) { + itemPropertyDescriptors.add + (createItemPropertyDescriptor + (((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(), + getResourceLocator(), + getString("_UI_Pin_id_feature"), + getString("_UI_PropertyDescriptor_description", "_UI_Pin_id_feature", "_UI_Pin_type"), + ArduinoPackage.Literals.PIN__ID, + true, + false, + false, + ItemPropertyDescriptor.INTEGRAL_VALUE_IMAGE, + null, + null)); + } + + /** + * This adds a property descriptor for the Level feature. + * + * + * @generated + */ + protected void addLevelPropertyDescriptor(Object object) { + itemPropertyDescriptors.add + (createItemPropertyDescriptor + (((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(), + getResourceLocator(), + getString("_UI_Pin_level_feature"), + getString("_UI_PropertyDescriptor_description", "_UI_Pin_level_feature", "_UI_Pin_type"), + ArduinoPackage.Literals.PIN__LEVEL, + true, + false, + false, + ItemPropertyDescriptor.GENERIC_VALUE_IMAGE, + null, + null)); + } + + /** + * This returns the label text for the adapted class. + * + * + * @generated + */ + @Override + public String getText(Object object) { + Pin pin = (Pin)object; + return getString("_UI_Pin_type") + " " + pin.getId(); + } + + + /** + * This handles model notifications by calling {@link #updateChildren} to update any cached + * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}. + * + * + * @generated + */ + @Override + public void notifyChanged(Notification notification) { + updateChildren(notification); + + switch (notification.getFeatureID(Pin.class)) { + case ArduinoPackage.PIN__ID: + case ArduinoPackage.PIN__LEVEL: + fireNotifyChanged(new ViewerNotification(notification, notification.getNotifier(), false, true)); + return; + } + super.notifyChanged(notification); + } + + /** + * This adds {@link org.eclipse.emf.edit.command.CommandParameter}s describing the children + * that can be created under this object. + * + * + * @generated + */ + @Override + protected void collectNewChildDescriptors(Collection newChildDescriptors, Object object) { + super.collectNewChildDescriptors(newChildDescriptors, object); + } + + /** + * Return the resource locator for this item provider's resources. + * + * + * @generated + */ + @Override + public ResourceLocator getResourceLocator() { + return ArduinoEditPlugin.INSTANCE; + } + +} diff --git a/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.edit/src-gen/fr/obeo/dsl/arduino/provider/ProjectItemProvider.java b/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.edit/src-gen/fr/obeo/dsl/arduino/provider/ProjectItemProvider.java new file mode 100644 index 00000000..9b22923c --- /dev/null +++ b/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.edit/src-gen/fr/obeo/dsl/arduino/provider/ProjectItemProvider.java @@ -0,0 +1,167 @@ +/** + * Copyright (c) 2013 Obeo. + * 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: + * Obeo - initial API and implementation + */ +package fr.obeo.dsl.arduino.provider; + + +import fr.obeo.dsl.arduino.ArduinoFactory; +import fr.obeo.dsl.arduino.ArduinoPackage; +import fr.obeo.dsl.arduino.Project; + +import java.util.Collection; +import java.util.List; + +import org.eclipse.emf.common.notify.AdapterFactory; +import org.eclipse.emf.common.notify.Notification; + +import org.eclipse.emf.ecore.EStructuralFeature; + +import org.eclipse.emf.edit.provider.IItemPropertyDescriptor; +import org.eclipse.emf.edit.provider.ViewerNotification; + +/** + * This is the item provider adapter for a {@link fr.obeo.dsl.arduino.Project} object. + * + * + * @generated + */ +public class ProjectItemProvider extends NamedElementItemProvider { + /** + * This constructs an instance from a factory and a notifier. + * + * + * @generated + */ + public ProjectItemProvider(AdapterFactory adapterFactory) { + super(adapterFactory); + } + + /** + * This returns the property descriptors for the adapted class. + * + * + * @generated + */ + @Override + public List getPropertyDescriptors(Object object) { + if (itemPropertyDescriptors == null) { + super.getPropertyDescriptors(object); + + } + return itemPropertyDescriptors; + } + + /** + * This specifies how to implement {@link #getChildren} and is used to deduce an appropriate feature for an + * {@link org.eclipse.emf.edit.command.AddCommand}, {@link org.eclipse.emf.edit.command.RemoveCommand} or + * {@link org.eclipse.emf.edit.command.MoveCommand} in {@link #createCommand}. + * + * + * @generated + */ + @Override + public Collection getChildrenFeatures(Object object) { + if (childrenFeatures == null) { + super.getChildrenFeatures(object); + childrenFeatures.add(ArduinoPackage.Literals.PROJECT__BOARDS); + childrenFeatures.add(ArduinoPackage.Literals.PROJECT__SKETCH); + childrenFeatures.add(ArduinoPackage.Literals.PROJECT__LINKS); + } + return childrenFeatures; + } + + /** + * + * + * @generated + */ + @Override + protected EStructuralFeature getChildFeature(Object object, Object child) { + // Check the type of the specified child object and return the proper feature to use for + // adding (see {@link AddCommand}) it as a child. + + return super.getChildFeature(object, child); + } + + /** + * This returns Project.gif. + * + * + * @generated + */ + @Override + public Object getImage(Object object) { + return overlayImage(object, getResourceLocator().getImage("full/obj16/Project")); + } + + /** + * This returns the label text for the adapted class. + * + * + * @generated + */ + @Override + public String getText(Object object) { + String label = ((Project)object).getName(); + return label == null || label.length() == 0 ? + getString("_UI_Project_type") : + getString("_UI_Project_type") + " " + label; + } + + + /** + * This handles model notifications by calling {@link #updateChildren} to update any cached + * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}. + * + * + * @generated + */ + @Override + public void notifyChanged(Notification notification) { + updateChildren(notification); + + switch (notification.getFeatureID(Project.class)) { + case ArduinoPackage.PROJECT__BOARDS: + case ArduinoPackage.PROJECT__SKETCH: + case ArduinoPackage.PROJECT__LINKS: + fireNotifyChanged(new ViewerNotification(notification, notification.getNotifier(), true, false)); + return; + } + super.notifyChanged(notification); + } + + /** + * This adds {@link org.eclipse.emf.edit.command.CommandParameter}s describing the children + * that can be created under this object. + * + * + * @generated + */ + @Override + protected void collectNewChildDescriptors(Collection newChildDescriptors, Object object) { + super.collectNewChildDescriptors(newChildDescriptors, object); + + newChildDescriptors.add + (createChildParameter + (ArduinoPackage.Literals.PROJECT__BOARDS, + ArduinoFactory.eINSTANCE.createArduinoBoard())); + + newChildDescriptors.add + (createChildParameter + (ArduinoPackage.Literals.PROJECT__SKETCH, + ArduinoFactory.eINSTANCE.createSketch())); + + newChildDescriptors.add + (createChildParameter + (ArduinoPackage.Literals.PROJECT__LINKS, + ArduinoFactory.eINSTANCE.createLink())); + } + +} diff --git a/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.edit/src-gen/fr/obeo/dsl/arduino/provider/PushButtonItemProvider.java b/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.edit/src-gen/fr/obeo/dsl/arduino/provider/PushButtonItemProvider.java new file mode 100644 index 00000000..f9873c6e --- /dev/null +++ b/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.edit/src-gen/fr/obeo/dsl/arduino/provider/PushButtonItemProvider.java @@ -0,0 +1,107 @@ +/** + * Copyright (c) 2013 Obeo. + * 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: + * Obeo - initial API and implementation + */ +package fr.obeo.dsl.arduino.provider; + + +import fr.obeo.dsl.arduino.PushButton; + +import java.util.Collection; +import java.util.List; + +import org.eclipse.emf.common.notify.AdapterFactory; +import org.eclipse.emf.common.notify.Notification; + +import org.eclipse.emf.edit.provider.IItemPropertyDescriptor; + +/** + * This is the item provider adapter for a {@link fr.obeo.dsl.arduino.PushButton} object. + * + * + * @generated + */ +public class PushButtonItemProvider extends ArduinoDigitalModuleItemProvider { + /** + * This constructs an instance from a factory and a notifier. + * + * + * @generated + */ + public PushButtonItemProvider(AdapterFactory adapterFactory) { + super(adapterFactory); + } + + /** + * This returns the property descriptors for the adapted class. + * + * + * @generated + */ + @Override + public List getPropertyDescriptors(Object object) { + if (itemPropertyDescriptors == null) { + super.getPropertyDescriptors(object); + + } + return itemPropertyDescriptors; + } + + /** + * This returns PushButton.gif. + * + * + * @generated + */ + @Override + public Object getImage(Object object) { + return overlayImage(object, getResourceLocator().getImage("full/obj16/PushButton")); + } + + /** + * This returns the label text for the adapted class. + * + * + * @generated + */ + @Override + public String getText(Object object) { + String label = ((PushButton)object).getName(); + return label == null || label.length() == 0 ? + getString("_UI_PushButton_type") : + getString("_UI_PushButton_type") + " " + label; + } + + + /** + * This handles model notifications by calling {@link #updateChildren} to update any cached + * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}. + * + * + * @generated + */ + @Override + public void notifyChanged(Notification notification) { + updateChildren(notification); + super.notifyChanged(notification); + } + + /** + * This adds {@link org.eclipse.emf.edit.command.CommandParameter}s describing the children + * that can be created under this object. + * + * + * @generated + */ + @Override + protected void collectNewChildDescriptors(Collection newChildDescriptors, Object object) { + super.collectNewChildDescriptors(newChildDescriptors, object); + } + +} diff --git a/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.edit/src-gen/fr/obeo/dsl/arduino/provider/RepeatItemProvider.java b/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.edit/src-gen/fr/obeo/dsl/arduino/provider/RepeatItemProvider.java new file mode 100644 index 00000000..72084d34 --- /dev/null +++ b/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.edit/src-gen/fr/obeo/dsl/arduino/provider/RepeatItemProvider.java @@ -0,0 +1,140 @@ +/** + * Copyright (c) 2013 Obeo. + * 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: + * Obeo - initial API and implementation + */ +package fr.obeo.dsl.arduino.provider; + + +import fr.obeo.dsl.arduino.ArduinoPackage; +import fr.obeo.dsl.arduino.Repeat; + +import java.util.Collection; +import java.util.List; + +import org.eclipse.emf.common.notify.AdapterFactory; +import org.eclipse.emf.common.notify.Notification; + +import org.eclipse.emf.edit.provider.ComposeableAdapterFactory; +import org.eclipse.emf.edit.provider.IItemPropertyDescriptor; +import org.eclipse.emf.edit.provider.ItemPropertyDescriptor; +import org.eclipse.emf.edit.provider.ViewerNotification; + +/** + * This is the item provider adapter for a {@link fr.obeo.dsl.arduino.Repeat} object. + * + * + * @generated + */ +public class RepeatItemProvider extends ControlItemProvider { + /** + * This constructs an instance from a factory and a notifier. + * + * + * @generated + */ + public RepeatItemProvider(AdapterFactory adapterFactory) { + super(adapterFactory); + } + + /** + * This returns the property descriptors for the adapted class. + * + * + * @generated + */ + @Override + public List getPropertyDescriptors(Object object) { + if (itemPropertyDescriptors == null) { + super.getPropertyDescriptors(object); + + addIterationPropertyDescriptor(object); + } + return itemPropertyDescriptors; + } + + /** + * This adds a property descriptor for the Iteration feature. + * + * + * @generated + */ + protected void addIterationPropertyDescriptor(Object object) { + itemPropertyDescriptors.add + (createItemPropertyDescriptor + (((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(), + getResourceLocator(), + getString("_UI_Repeat_iteration_feature"), + getString("_UI_PropertyDescriptor_description", "_UI_Repeat_iteration_feature", "_UI_Repeat_type"), + ArduinoPackage.Literals.REPEAT__ITERATION, + true, + false, + false, + ItemPropertyDescriptor.INTEGRAL_VALUE_IMAGE, + null, + null)); + } + + /** + * This returns Repeat.gif. + * + * + * @generated + */ + @Override + public Object getImage(Object object) { + return overlayImage(object, getResourceLocator().getImage("full/obj16/Repeat")); + } + + /** + * This returns the label text for the adapted class. + * + * + * @generated + */ + @Override + public String getText(Object object) { + String label = ((Repeat)object).getName(); + return label == null || label.length() == 0 ? + getString("_UI_Repeat_type") : + getString("_UI_Repeat_type") + " " + label; + } + + + /** + * This handles model notifications by calling {@link #updateChildren} to update any cached + * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}. + * + * + * @generated + */ + @Override + public void notifyChanged(Notification notification) { + updateChildren(notification); + + switch (notification.getFeatureID(Repeat.class)) { + case ArduinoPackage.REPEAT__ITERATION: + fireNotifyChanged(new ViewerNotification(notification, notification.getNotifier(), false, true)); + return; + } + super.notifyChanged(notification); + } + + /** + * This adds {@link org.eclipse.emf.edit.command.CommandParameter}s describing the children + * that can be created under this object. + * + * + * @generated + */ + @Override + protected void collectNewChildDescriptors(Collection newChildDescriptors, Object object) { + super.collectNewChildDescriptors(newChildDescriptors, object); + } + +} diff --git a/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.edit/src-gen/fr/obeo/dsl/arduino/provider/RotationSensorItemProvider.java b/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.edit/src-gen/fr/obeo/dsl/arduino/provider/RotationSensorItemProvider.java new file mode 100644 index 00000000..990bff2b --- /dev/null +++ b/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.edit/src-gen/fr/obeo/dsl/arduino/provider/RotationSensorItemProvider.java @@ -0,0 +1,107 @@ +/** + * Copyright (c) 2013 Obeo. + * 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: + * Obeo - initial API and implementation + */ +package fr.obeo.dsl.arduino.provider; + + +import fr.obeo.dsl.arduino.RotationSensor; + +import java.util.Collection; +import java.util.List; + +import org.eclipse.emf.common.notify.AdapterFactory; +import org.eclipse.emf.common.notify.Notification; + +import org.eclipse.emf.edit.provider.IItemPropertyDescriptor; + +/** + * This is the item provider adapter for a {@link fr.obeo.dsl.arduino.RotationSensor} object. + * + * + * @generated + */ +public class RotationSensorItemProvider extends ArduinoAnalogModuleItemProvider { + /** + * This constructs an instance from a factory and a notifier. + * + * + * @generated + */ + public RotationSensorItemProvider(AdapterFactory adapterFactory) { + super(adapterFactory); + } + + /** + * This returns the property descriptors for the adapted class. + * + * + * @generated + */ + @Override + public List getPropertyDescriptors(Object object) { + if (itemPropertyDescriptors == null) { + super.getPropertyDescriptors(object); + + } + return itemPropertyDescriptors; + } + + /** + * This returns RotationSensor.gif. + * + * + * @generated + */ + @Override + public Object getImage(Object object) { + return overlayImage(object, getResourceLocator().getImage("full/obj16/RotationSensor")); + } + + /** + * This returns the label text for the adapted class. + * + * + * @generated + */ + @Override + public String getText(Object object) { + String label = ((RotationSensor)object).getName(); + return label == null || label.length() == 0 ? + getString("_UI_RotationSensor_type") : + getString("_UI_RotationSensor_type") + " " + label; + } + + + /** + * This handles model notifications by calling {@link #updateChildren} to update any cached + * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}. + * + * + * @generated + */ + @Override + public void notifyChanged(Notification notification) { + updateChildren(notification); + super.notifyChanged(notification); + } + + /** + * This adds {@link org.eclipse.emf.edit.command.CommandParameter}s describing the children + * that can be created under this object. + * + * + * @generated + */ + @Override + protected void collectNewChildDescriptors(Collection newChildDescriptors, Object object) { + super.collectNewChildDescriptors(newChildDescriptors, object); + } + +} diff --git a/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.edit/src-gen/fr/obeo/dsl/arduino/provider/SketchItemProvider.java b/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.edit/src-gen/fr/obeo/dsl/arduino/provider/SketchItemProvider.java new file mode 100644 index 00000000..49be079e --- /dev/null +++ b/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.edit/src-gen/fr/obeo/dsl/arduino/provider/SketchItemProvider.java @@ -0,0 +1,160 @@ +/** + * Copyright (c) 2013 Obeo. + * 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: + * Obeo - initial API and implementation + */ +package fr.obeo.dsl.arduino.provider; + + +import fr.obeo.dsl.arduino.ArduinoFactory; +import fr.obeo.dsl.arduino.ArduinoPackage; +import fr.obeo.dsl.arduino.Sketch; + +import java.util.Collection; +import java.util.List; + +import org.eclipse.emf.common.notify.AdapterFactory; +import org.eclipse.emf.common.notify.Notification; + +import org.eclipse.emf.ecore.EStructuralFeature; + +import org.eclipse.emf.edit.provider.IItemPropertyDescriptor; +import org.eclipse.emf.edit.provider.ViewerNotification; + +/** + * This is the item provider adapter for a {@link fr.obeo.dsl.arduino.Sketch} object. + * + * + * @generated + */ +public class SketchItemProvider extends NamedElementItemProvider { + /** + * This constructs an instance from a factory and a notifier. + * + * + * @generated + */ + public SketchItemProvider(AdapterFactory adapterFactory) { + super(adapterFactory); + } + + /** + * This returns the property descriptors for the adapted class. + * + * + * @generated + */ + @Override + public List getPropertyDescriptors(Object object) { + if (itemPropertyDescriptors == null) { + super.getPropertyDescriptors(object); + + } + return itemPropertyDescriptors; + } + + /** + * This specifies how to implement {@link #getChildren} and is used to deduce an appropriate feature for an + * {@link org.eclipse.emf.edit.command.AddCommand}, {@link org.eclipse.emf.edit.command.RemoveCommand} or + * {@link org.eclipse.emf.edit.command.MoveCommand} in {@link #createCommand}. + * + * + * @generated + */ + @Override + public Collection getChildrenFeatures(Object object) { + if (childrenFeatures == null) { + super.getChildrenFeatures(object); + childrenFeatures.add(ArduinoPackage.Literals.SKETCH__THREADS); + childrenFeatures.add(ArduinoPackage.Literals.SKETCH__CHANNELS); + } + return childrenFeatures; + } + + /** + * + * + * @generated + */ + @Override + protected EStructuralFeature getChildFeature(Object object, Object child) { + // Check the type of the specified child object and return the proper feature to use for + // adding (see {@link AddCommand}) it as a child. + + return super.getChildFeature(object, child); + } + + /** + * This returns Sketch.gif. + * + * + * @generated + */ + @Override + public Object getImage(Object object) { + return overlayImage(object, getResourceLocator().getImage("full/obj16/Sketch")); + } + + /** + * This returns the label text for the adapted class. + * + * + * @generated + */ + @Override + public String getText(Object object) { + String label = ((Sketch)object).getName(); + return label == null || label.length() == 0 ? + getString("_UI_Sketch_type") : + getString("_UI_Sketch_type") + " " + label; + } + + + /** + * This handles model notifications by calling {@link #updateChildren} to update any cached + * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}. + * + * + * @generated + */ + @Override + public void notifyChanged(Notification notification) { + updateChildren(notification); + + switch (notification.getFeatureID(Sketch.class)) { + case ArduinoPackage.SKETCH__THREADS: + case ArduinoPackage.SKETCH__CHANNELS: + fireNotifyChanged(new ViewerNotification(notification, notification.getNotifier(), true, false)); + return; + } + super.notifyChanged(notification); + } + + /** + * This adds {@link org.eclipse.emf.edit.command.CommandParameter}s describing the children + * that can be created under this object. + * + * + * @generated + */ + @Override + protected void collectNewChildDescriptors(Collection newChildDescriptors, Object object) { + super.collectNewChildDescriptors(newChildDescriptors, object); + + newChildDescriptors.add + (createChildParameter + (ArduinoPackage.Literals.SKETCH__THREADS, + ArduinoFactory.eINSTANCE.createThread())); + + newChildDescriptors.add + (createChildParameter + (ArduinoPackage.Literals.SKETCH__CHANNELS, + ArduinoFactory.eINSTANCE.createChannel())); + } + +} diff --git a/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.edit/src-gen/fr/obeo/dsl/arduino/provider/SoundSensorItemProvider.java b/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.edit/src-gen/fr/obeo/dsl/arduino/provider/SoundSensorItemProvider.java new file mode 100644 index 00000000..7b930db9 --- /dev/null +++ b/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.edit/src-gen/fr/obeo/dsl/arduino/provider/SoundSensorItemProvider.java @@ -0,0 +1,107 @@ +/** + * Copyright (c) 2013 Obeo. + * 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: + * Obeo - initial API and implementation + */ +package fr.obeo.dsl.arduino.provider; + + +import fr.obeo.dsl.arduino.SoundSensor; + +import java.util.Collection; +import java.util.List; + +import org.eclipse.emf.common.notify.AdapterFactory; +import org.eclipse.emf.common.notify.Notification; + +import org.eclipse.emf.edit.provider.IItemPropertyDescriptor; + +/** + * This is the item provider adapter for a {@link fr.obeo.dsl.arduino.SoundSensor} object. + * + * + * @generated + */ +public class SoundSensorItemProvider extends ArduinoAnalogModuleItemProvider { + /** + * This constructs an instance from a factory and a notifier. + * + * + * @generated + */ + public SoundSensorItemProvider(AdapterFactory adapterFactory) { + super(adapterFactory); + } + + /** + * This returns the property descriptors for the adapted class. + * + * + * @generated + */ + @Override + public List getPropertyDescriptors(Object object) { + if (itemPropertyDescriptors == null) { + super.getPropertyDescriptors(object); + + } + return itemPropertyDescriptors; + } + + /** + * This returns SoundSensor.gif. + * + * + * @generated + */ + @Override + public Object getImage(Object object) { + return overlayImage(object, getResourceLocator().getImage("full/obj16/SoundSensor")); + } + + /** + * This returns the label text for the adapted class. + * + * + * @generated + */ + @Override + public String getText(Object object) { + String label = ((SoundSensor)object).getName(); + return label == null || label.length() == 0 ? + getString("_UI_SoundSensor_type") : + getString("_UI_SoundSensor_type") + " " + label; + } + + + /** + * This handles model notifications by calling {@link #updateChildren} to update any cached + * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}. + * + * + * @generated + */ + @Override + public void notifyChanged(Notification notification) { + updateChildren(notification); + super.notifyChanged(notification); + } + + /** + * This adds {@link org.eclipse.emf.edit.command.CommandParameter}s describing the children + * that can be created under this object. + * + * + * @generated + */ + @Override + protected void collectNewChildDescriptors(Collection newChildDescriptors, Object object) { + super.collectNewChildDescriptors(newChildDescriptors, object); + } + +} diff --git a/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.edit/src-gen/fr/obeo/dsl/arduino/provider/SynchronizationBlockItemProvider.java b/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.edit/src-gen/fr/obeo/dsl/arduino/provider/SynchronizationBlockItemProvider.java new file mode 100644 index 00000000..f4ffd394 --- /dev/null +++ b/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.edit/src-gen/fr/obeo/dsl/arduino/provider/SynchronizationBlockItemProvider.java @@ -0,0 +1,155 @@ +/** + * Copyright (c) 2013 Obeo. + * 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: + * Obeo - initial API and implementation + */ +package fr.obeo.dsl.arduino.provider; + + +import fr.obeo.dsl.arduino.ArduinoPackage; +import fr.obeo.dsl.arduino.SynchronizationBlock; + +import java.util.Collection; +import java.util.List; + +import org.eclipse.emf.common.notify.AdapterFactory; +import org.eclipse.emf.common.notify.Notification; + +import org.eclipse.emf.edit.provider.ComposeableAdapterFactory; +import org.eclipse.emf.edit.provider.IItemPropertyDescriptor; + +/** + * This is the item provider adapter for a {@link fr.obeo.dsl.arduino.SynchronizationBlock} object. + * + * + * @generated + */ +public class SynchronizationBlockItemProvider extends ThreadInstructionBlockItemProvider { + /** + * This constructs an instance from a factory and a notifier. + * + * + * @generated + */ + public SynchronizationBlockItemProvider(AdapterFactory adapterFactory) { + super(adapterFactory); + } + + /** + * This returns the property descriptors for the adapted class. + * + * + * @generated + */ + @Override + public List getPropertyDescriptors(Object object) { + if (itemPropertyDescriptors == null) { + super.getPropertyDescriptors(object); + + addNextPropertyDescriptor(object); + addPreviousPropertyDescriptor(object); + } + return itemPropertyDescriptors; + } + + /** + * This adds a property descriptor for the Next feature. + * + * + * @generated + */ + protected void addNextPropertyDescriptor(Object object) { + itemPropertyDescriptors.add + (createItemPropertyDescriptor + (((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(), + getResourceLocator(), + getString("_UI_SynchronizationBlock_next_feature"), + getString("_UI_PropertyDescriptor_description", "_UI_SynchronizationBlock_next_feature", "_UI_SynchronizationBlock_type"), + ArduinoPackage.Literals.SYNCHRONIZATION_BLOCK__NEXT, + true, + false, + true, + null, + null, + null)); + } + + /** + * This adds a property descriptor for the Previous feature. + * + * + * @generated + */ + protected void addPreviousPropertyDescriptor(Object object) { + itemPropertyDescriptors.add + (createItemPropertyDescriptor + (((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(), + getResourceLocator(), + getString("_UI_SynchronizationBlock_previous_feature"), + getString("_UI_PropertyDescriptor_description", "_UI_SynchronizationBlock_previous_feature", "_UI_SynchronizationBlock_type"), + ArduinoPackage.Literals.SYNCHRONIZATION_BLOCK__PREVIOUS, + true, + false, + true, + null, + null, + null)); + } + + /** + * This returns SynchronizationBlock.gif. + * + * + * @generated + */ + @Override + public Object getImage(Object object) { + return overlayImage(object, getResourceLocator().getImage("full/obj16/SynchronizationBlock")); + } + + /** + * This returns the label text for the adapted class. + * + * + * @generated + */ + @Override + public String getText(Object object) { + String label = ((SynchronizationBlock)object).getName(); + return label == null || label.length() == 0 ? + getString("_UI_SynchronizationBlock_type") : + getString("_UI_SynchronizationBlock_type") + " " + label; + } + + + /** + * This handles model notifications by calling {@link #updateChildren} to update any cached + * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}. + * + * + * @generated + */ + @Override + public void notifyChanged(Notification notification) { + updateChildren(notification); + super.notifyChanged(notification); + } + + /** + * This adds {@link org.eclipse.emf.edit.command.CommandParameter}s describing the children + * that can be created under this object. + * + * + * @generated + */ + @Override + protected void collectNewChildDescriptors(Collection newChildDescriptors, Object object) { + super.collectNewChildDescriptors(newChildDescriptors, object); + } + +} diff --git a/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.edit/src-gen/fr/obeo/dsl/arduino/provider/ThreadInstructionBlockItemProvider.java b/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.edit/src-gen/fr/obeo/dsl/arduino/provider/ThreadInstructionBlockItemProvider.java new file mode 100644 index 00000000..da260983 --- /dev/null +++ b/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.edit/src-gen/fr/obeo/dsl/arduino/provider/ThreadInstructionBlockItemProvider.java @@ -0,0 +1,96 @@ +/** + * Copyright (c) 2013 Obeo. + * 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: + * Obeo - initial API and implementation + */ +package fr.obeo.dsl.arduino.provider; + + +import fr.obeo.dsl.arduino.ThreadInstructionBlock; + +import java.util.Collection; +import java.util.List; + +import org.eclipse.emf.common.notify.AdapterFactory; +import org.eclipse.emf.common.notify.Notification; + +import org.eclipse.emf.edit.provider.IItemPropertyDescriptor; + +/** + * This is the item provider adapter for a {@link fr.obeo.dsl.arduino.ThreadInstructionBlock} object. + * + * + * @generated + */ +public class ThreadInstructionBlockItemProvider extends NamedElementItemProvider { + /** + * This constructs an instance from a factory and a notifier. + * + * + * @generated + */ + public ThreadInstructionBlockItemProvider(AdapterFactory adapterFactory) { + super(adapterFactory); + } + + /** + * This returns the property descriptors for the adapted class. + * + * + * @generated + */ + @Override + public List getPropertyDescriptors(Object object) { + if (itemPropertyDescriptors == null) { + super.getPropertyDescriptors(object); + + } + return itemPropertyDescriptors; + } + + /** + * This returns the label text for the adapted class. + * + * + * @generated + */ + @Override + public String getText(Object object) { + String label = ((ThreadInstructionBlock)object).getName(); + return label == null || label.length() == 0 ? + getString("_UI_ThreadInstructionBlock_type") : + getString("_UI_ThreadInstructionBlock_type") + " " + label; + } + + + /** + * This handles model notifications by calling {@link #updateChildren} to update any cached + * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}. + * + * + * @generated + */ + @Override + public void notifyChanged(Notification notification) { + updateChildren(notification); + super.notifyChanged(notification); + } + + /** + * This adds {@link org.eclipse.emf.edit.command.CommandParameter}s describing the children + * that can be created under this object. + * + * + * @generated + */ + @Override + protected void collectNewChildDescriptors(Collection newChildDescriptors, Object object) { + super.collectNewChildDescriptors(newChildDescriptors, object); + } + +} diff --git a/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.edit/src-gen/fr/obeo/dsl/arduino/provider/ThreadItemProvider.java b/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.edit/src-gen/fr/obeo/dsl/arduino/provider/ThreadItemProvider.java new file mode 100644 index 00000000..5e7db68d --- /dev/null +++ b/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.edit/src-gen/fr/obeo/dsl/arduino/provider/ThreadItemProvider.java @@ -0,0 +1,277 @@ +/** + * Copyright (c) 2013 Obeo. + * 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: + * Obeo - initial API and implementation + */ +package fr.obeo.dsl.arduino.provider; + + +import fr.obeo.dsl.arduino.ArduinoFactory; +import fr.obeo.dsl.arduino.ArduinoPackage; + +import java.util.Collection; +import java.util.List; + +import org.eclipse.emf.common.notify.AdapterFactory; +import org.eclipse.emf.common.notify.Notification; + +import org.eclipse.emf.ecore.EStructuralFeature; + +import org.eclipse.emf.edit.provider.ComposeableAdapterFactory; +import org.eclipse.emf.edit.provider.IItemPropertyDescriptor; +import org.eclipse.emf.edit.provider.ItemPropertyDescriptor; +import org.eclipse.emf.edit.provider.ViewerNotification; + +/** + * This is the item provider adapter for a {@link fr.obeo.dsl.arduino.Thread} object. + * + * + * @generated + */ +public class ThreadItemProvider extends NamedElementItemProvider { + /** + * This constructs an instance from a factory and a notifier. + * + * + * @generated + */ + public ThreadItemProvider(AdapterFactory adapterFactory) { + super(adapterFactory); + } + + /** + * This returns the property descriptors for the adapted class. + * + * + * @generated + */ + @Override + public List getPropertyDescriptors(Object object) { + if (itemPropertyDescriptors == null) { + super.getPropertyDescriptors(object); + + addChannelsPropertyDescriptor(object); + addCyclesPropertyDescriptor(object); + addCurrentInstructionPropertyDescriptor(object); + addFirstPropertyDescriptor(object); + addLastPropertyDescriptor(object); + } + return itemPropertyDescriptors; + } + + /** + * This adds a property descriptor for the Channels feature. + * + * + * @generated + */ + protected void addChannelsPropertyDescriptor(Object object) { + itemPropertyDescriptors.add + (createItemPropertyDescriptor + (((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(), + getResourceLocator(), + getString("_UI_Thread_channels_feature"), + getString("_UI_PropertyDescriptor_description", "_UI_Thread_channels_feature", "_UI_Thread_type"), + ArduinoPackage.Literals.THREAD__CHANNELS, + true, + false, + true, + null, + null, + null)); + } + + /** + * This adds a property descriptor for the Cycles feature. + * + * + * @generated + */ + protected void addCyclesPropertyDescriptor(Object object) { + itemPropertyDescriptors.add + (createItemPropertyDescriptor + (((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(), + getResourceLocator(), + getString("_UI_Thread_cycles_feature"), + getString("_UI_PropertyDescriptor_description", "_UI_Thread_cycles_feature", "_UI_Thread_type"), + ArduinoPackage.Literals.THREAD__CYCLES, + true, + false, + false, + ItemPropertyDescriptor.INTEGRAL_VALUE_IMAGE, + null, + null)); + } + + /** + * This adds a property descriptor for the Current Instruction feature. + * + * + * @generated + */ + protected void addCurrentInstructionPropertyDescriptor(Object object) { + itemPropertyDescriptors.add + (createItemPropertyDescriptor + (((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(), + getResourceLocator(), + getString("_UI_Thread_currentInstruction_feature"), + getString("_UI_PropertyDescriptor_description", "_UI_Thread_currentInstruction_feature", "_UI_Thread_type"), + ArduinoPackage.Literals.THREAD__CURRENT_INSTRUCTION, + true, + false, + true, + null, + null, + null)); + } + + /** + * This adds a property descriptor for the First feature. + * + * + * @generated + */ + protected void addFirstPropertyDescriptor(Object object) { + itemPropertyDescriptors.add + (createItemPropertyDescriptor + (((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(), + getResourceLocator(), + getString("_UI_Thread_first_feature"), + getString("_UI_PropertyDescriptor_description", "_UI_Thread_first_feature", "_UI_Thread_type"), + ArduinoPackage.Literals.THREAD__FIRST, + true, + false, + true, + null, + null, + null)); + } + + /** + * This adds a property descriptor for the Last feature. + * + * + * @generated + */ + protected void addLastPropertyDescriptor(Object object) { + itemPropertyDescriptors.add + (createItemPropertyDescriptor + (((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(), + getResourceLocator(), + getString("_UI_Thread_last_feature"), + getString("_UI_PropertyDescriptor_description", "_UI_Thread_last_feature", "_UI_Thread_type"), + ArduinoPackage.Literals.THREAD__LAST, + true, + false, + true, + null, + null, + null)); + } + + /** + * This specifies how to implement {@link #getChildren} and is used to deduce an appropriate feature for an + * {@link org.eclipse.emf.edit.command.AddCommand}, {@link org.eclipse.emf.edit.command.RemoveCommand} or + * {@link org.eclipse.emf.edit.command.MoveCommand} in {@link #createCommand}. + * + * + * @generated + */ + @Override + public Collection getChildrenFeatures(Object object) { + if (childrenFeatures == null) { + super.getChildrenFeatures(object); + childrenFeatures.add(ArduinoPackage.Literals.THREAD__BLOCKS); + } + return childrenFeatures; + } + + /** + * + * + * @generated + */ + @Override + protected EStructuralFeature getChildFeature(Object object, Object child) { + // Check the type of the specified child object and return the proper feature to use for + // adding (see {@link AddCommand}) it as a child. + + return super.getChildFeature(object, child); + } + + /** + * This returns Thread.gif. + * + * + * @generated + */ + @Override + public Object getImage(Object object) { + return overlayImage(object, getResourceLocator().getImage("full/obj16/Thread")); + } + + /** + * This returns the label text for the adapted class. + * + * + * @generated + */ + @Override + public String getText(Object object) { + String label = ((fr.obeo.dsl.arduino.Thread)object).getName(); + return label == null || label.length() == 0 ? + getString("_UI_Thread_type") : + getString("_UI_Thread_type") + " " + label; + } + + + /** + * This handles model notifications by calling {@link #updateChildren} to update any cached + * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}. + * + * + * @generated + */ + @Override + public void notifyChanged(Notification notification) { + updateChildren(notification); + + switch (notification.getFeatureID(fr.obeo.dsl.arduino.Thread.class)) { + case ArduinoPackage.THREAD__CYCLES: + fireNotifyChanged(new ViewerNotification(notification, notification.getNotifier(), false, true)); + return; + case ArduinoPackage.THREAD__BLOCKS: + fireNotifyChanged(new ViewerNotification(notification, notification.getNotifier(), true, false)); + return; + } + super.notifyChanged(notification); + } + + /** + * This adds {@link org.eclipse.emf.edit.command.CommandParameter}s describing the children + * that can be created under this object. + * + * + * @generated + */ + @Override + protected void collectNewChildDescriptors(Collection newChildDescriptors, Object object) { + super.collectNewChildDescriptors(newChildDescriptors, object); + + newChildDescriptors.add + (createChildParameter + (ArduinoPackage.Literals.THREAD__BLOCKS, + ArduinoFactory.eINSTANCE.createSynchronizationBlock())); + + newChildDescriptors.add + (createChildParameter + (ArduinoPackage.Literals.THREAD__BLOCKS, + ArduinoFactory.eINSTANCE.createInstructionBlock())); + } + +} diff --git a/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.edit/src-gen/fr/obeo/dsl/arduino/provider/UnaryBooleanExpressionItemProvider.java b/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.edit/src-gen/fr/obeo/dsl/arduino/provider/UnaryBooleanExpressionItemProvider.java new file mode 100644 index 00000000..2cd2f65e --- /dev/null +++ b/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.edit/src-gen/fr/obeo/dsl/arduino/provider/UnaryBooleanExpressionItemProvider.java @@ -0,0 +1,142 @@ +/** + * Copyright (c) 2013 Obeo. + * 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: + * Obeo - initial API and implementation + */ +package fr.obeo.dsl.arduino.provider; + + +import fr.obeo.dsl.arduino.ArduinoPackage; +import fr.obeo.dsl.arduino.UnaryBooleanExpression; +import fr.obeo.dsl.arduino.UnaryBooleanOperatorKind; + +import java.util.Collection; +import java.util.List; + +import org.eclipse.emf.common.notify.AdapterFactory; +import org.eclipse.emf.common.notify.Notification; + +import org.eclipse.emf.edit.provider.ComposeableAdapterFactory; +import org.eclipse.emf.edit.provider.IItemPropertyDescriptor; +import org.eclipse.emf.edit.provider.ItemPropertyDescriptor; +import org.eclipse.emf.edit.provider.ViewerNotification; + +/** + * This is the item provider adapter for a {@link fr.obeo.dsl.arduino.UnaryBooleanExpression} object. + * + * + * @generated + */ +public class UnaryBooleanExpressionItemProvider extends UnaryExpressionItemProvider { + /** + * This constructs an instance from a factory and a notifier. + * + * + * @generated + */ + public UnaryBooleanExpressionItemProvider(AdapterFactory adapterFactory) { + super(adapterFactory); + } + + /** + * This returns the property descriptors for the adapted class. + * + * + * @generated + */ + @Override + public List getPropertyDescriptors(Object object) { + if (itemPropertyDescriptors == null) { + super.getPropertyDescriptors(object); + + addOperatorPropertyDescriptor(object); + } + return itemPropertyDescriptors; + } + + /** + * This adds a property descriptor for the Operator feature. + * + * + * @generated + */ + protected void addOperatorPropertyDescriptor(Object object) { + itemPropertyDescriptors.add + (createItemPropertyDescriptor + (((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(), + getResourceLocator(), + getString("_UI_UnaryBooleanExpression_operator_feature"), + getString("_UI_PropertyDescriptor_description", "_UI_UnaryBooleanExpression_operator_feature", "_UI_UnaryBooleanExpression_type"), + ArduinoPackage.Literals.UNARY_BOOLEAN_EXPRESSION__OPERATOR, + true, + false, + false, + ItemPropertyDescriptor.GENERIC_VALUE_IMAGE, + null, + null)); + } + + /** + * This returns UnaryBooleanExpression.gif. + * + * + * @generated + */ + @Override + public Object getImage(Object object) { + return overlayImage(object, getResourceLocator().getImage("full/obj16/UnaryBooleanExpression")); + } + + /** + * This returns the label text for the adapted class. + * + * + * @generated + */ + @Override + public String getText(Object object) { + UnaryBooleanOperatorKind labelValue = ((UnaryBooleanExpression)object).getOperator(); + String label = labelValue == null ? null : labelValue.toString(); + return label == null || label.length() == 0 ? + getString("_UI_UnaryBooleanExpression_type") : + getString("_UI_UnaryBooleanExpression_type") + " " + label; + } + + + /** + * This handles model notifications by calling {@link #updateChildren} to update any cached + * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}. + * + * + * @generated + */ + @Override + public void notifyChanged(Notification notification) { + updateChildren(notification); + + switch (notification.getFeatureID(UnaryBooleanExpression.class)) { + case ArduinoPackage.UNARY_BOOLEAN_EXPRESSION__OPERATOR: + fireNotifyChanged(new ViewerNotification(notification, notification.getNotifier(), false, true)); + return; + } + super.notifyChanged(notification); + } + + /** + * This adds {@link org.eclipse.emf.edit.command.CommandParameter}s describing the children + * that can be created under this object. + * + * + * @generated + */ + @Override + protected void collectNewChildDescriptors(Collection newChildDescriptors, Object object) { + super.collectNewChildDescriptors(newChildDescriptors, object); + } + +} diff --git a/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.edit/src-gen/fr/obeo/dsl/arduino/provider/UnaryExpressionItemProvider.java b/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.edit/src-gen/fr/obeo/dsl/arduino/provider/UnaryExpressionItemProvider.java new file mode 100644 index 00000000..d1c3bd9e --- /dev/null +++ b/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.edit/src-gen/fr/obeo/dsl/arduino/provider/UnaryExpressionItemProvider.java @@ -0,0 +1,189 @@ +/** + * Copyright (c) 2013 Obeo. + * 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: + * Obeo - initial API and implementation + */ +package fr.obeo.dsl.arduino.provider; + + +import fr.obeo.dsl.arduino.ArduinoFactory; +import fr.obeo.dsl.arduino.ArduinoPackage; +import fr.obeo.dsl.arduino.UnaryExpression; + +import java.util.Collection; +import java.util.List; + +import org.eclipse.emf.common.notify.AdapterFactory; +import org.eclipse.emf.common.notify.Notification; + +import org.eclipse.emf.ecore.EStructuralFeature; + +import org.eclipse.emf.edit.provider.IItemPropertyDescriptor; +import org.eclipse.emf.edit.provider.ViewerNotification; + +/** + * This is the item provider adapter for a {@link fr.obeo.dsl.arduino.UnaryExpression} object. + * + * + * @generated + */ +public class UnaryExpressionItemProvider extends ExpressionItemProvider { + /** + * This constructs an instance from a factory and a notifier. + * + * + * @generated + */ + public UnaryExpressionItemProvider(AdapterFactory adapterFactory) { + super(adapterFactory); + } + + /** + * This returns the property descriptors for the adapted class. + * + * + * @generated + */ + @Override + public List getPropertyDescriptors(Object object) { + if (itemPropertyDescriptors == null) { + super.getPropertyDescriptors(object); + + } + return itemPropertyDescriptors; + } + + /** + * This specifies how to implement {@link #getChildren} and is used to deduce an appropriate feature for an + * {@link org.eclipse.emf.edit.command.AddCommand}, {@link org.eclipse.emf.edit.command.RemoveCommand} or + * {@link org.eclipse.emf.edit.command.MoveCommand} in {@link #createCommand}. + * + * + * @generated + */ + @Override + public Collection getChildrenFeatures(Object object) { + if (childrenFeatures == null) { + super.getChildrenFeatures(object); + childrenFeatures.add(ArduinoPackage.Literals.UNARY_EXPRESSION__OPERAND); + } + return childrenFeatures; + } + + /** + * + * + * @generated + */ + @Override + protected EStructuralFeature getChildFeature(Object object, Object child) { + // Check the type of the specified child object and return the proper feature to use for + // adding (see {@link AddCommand}) it as a child. + + return super.getChildFeature(object, child); + } + + /** + * This returns the label text for the adapted class. + * + * + * @generated + */ + @Override + public String getText(Object object) { + return getString("_UI_UnaryExpression_type"); + } + + + /** + * This handles model notifications by calling {@link #updateChildren} to update any cached + * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}. + * + * + * @generated + */ + @Override + public void notifyChanged(Notification notification) { + updateChildren(notification); + + switch (notification.getFeatureID(UnaryExpression.class)) { + case ArduinoPackage.UNARY_EXPRESSION__OPERAND: + fireNotifyChanged(new ViewerNotification(notification, notification.getNotifier(), true, false)); + return; + } + super.notifyChanged(notification); + } + + /** + * This adds {@link org.eclipse.emf.edit.command.CommandParameter}s describing the children + * that can be created under this object. + * + * + * @generated + */ + @Override + protected void collectNewChildDescriptors(Collection newChildDescriptors, Object object) { + super.collectNewChildDescriptors(newChildDescriptors, object); + + newChildDescriptors.add + (createChildParameter + (ArduinoPackage.Literals.UNARY_EXPRESSION__OPERAND, + ArduinoFactory.eINSTANCE.createBinaryIntegerExpression())); + + newChildDescriptors.add + (createChildParameter + (ArduinoPackage.Literals.UNARY_EXPRESSION__OPERAND, + ArduinoFactory.eINSTANCE.createBinaryBooleanExpression())); + + newChildDescriptors.add + (createChildParameter + (ArduinoPackage.Literals.UNARY_EXPRESSION__OPERAND, + ArduinoFactory.eINSTANCE.createIntegerConstant())); + + newChildDescriptors.add + (createChildParameter + (ArduinoPackage.Literals.UNARY_EXPRESSION__OPERAND, + ArduinoFactory.eINSTANCE.createBooleanConstant())); + + newChildDescriptors.add + (createChildParameter + (ArduinoPackage.Literals.UNARY_EXPRESSION__OPERAND, + ArduinoFactory.eINSTANCE.createIntegerVariable())); + + newChildDescriptors.add + (createChildParameter + (ArduinoPackage.Literals.UNARY_EXPRESSION__OPERAND, + ArduinoFactory.eINSTANCE.createBooleanVariable())); + + newChildDescriptors.add + (createChildParameter + (ArduinoPackage.Literals.UNARY_EXPRESSION__OPERAND, + ArduinoFactory.eINSTANCE.createBooleanModuleGet())); + + newChildDescriptors.add + (createChildParameter + (ArduinoPackage.Literals.UNARY_EXPRESSION__OPERAND, + ArduinoFactory.eINSTANCE.createIntegerModuleGet())); + + newChildDescriptors.add + (createChildParameter + (ArduinoPackage.Literals.UNARY_EXPRESSION__OPERAND, + ArduinoFactory.eINSTANCE.createUnaryBooleanExpression())); + + newChildDescriptors.add + (createChildParameter + (ArduinoPackage.Literals.UNARY_EXPRESSION__OPERAND, + ArduinoFactory.eINSTANCE.createUnaryIntegerExpression())); + + newChildDescriptors.add + (createChildParameter + (ArduinoPackage.Literals.UNARY_EXPRESSION__OPERAND, + ArduinoFactory.eINSTANCE.createVariableRef())); + } + +} diff --git a/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.edit/src-gen/fr/obeo/dsl/arduino/provider/UnaryIntegerExpressionItemProvider.java b/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.edit/src-gen/fr/obeo/dsl/arduino/provider/UnaryIntegerExpressionItemProvider.java new file mode 100644 index 00000000..6c1399bb --- /dev/null +++ b/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.edit/src-gen/fr/obeo/dsl/arduino/provider/UnaryIntegerExpressionItemProvider.java @@ -0,0 +1,142 @@ +/** + * Copyright (c) 2013 Obeo. + * 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: + * Obeo - initial API and implementation + */ +package fr.obeo.dsl.arduino.provider; + + +import fr.obeo.dsl.arduino.ArduinoPackage; +import fr.obeo.dsl.arduino.UnaryIntegerExpression; +import fr.obeo.dsl.arduino.UnaryIntegerOperatorKind; + +import java.util.Collection; +import java.util.List; + +import org.eclipse.emf.common.notify.AdapterFactory; +import org.eclipse.emf.common.notify.Notification; + +import org.eclipse.emf.edit.provider.ComposeableAdapterFactory; +import org.eclipse.emf.edit.provider.IItemPropertyDescriptor; +import org.eclipse.emf.edit.provider.ItemPropertyDescriptor; +import org.eclipse.emf.edit.provider.ViewerNotification; + +/** + * This is the item provider adapter for a {@link fr.obeo.dsl.arduino.UnaryIntegerExpression} object. + * + * + * @generated + */ +public class UnaryIntegerExpressionItemProvider extends UnaryExpressionItemProvider { + /** + * This constructs an instance from a factory and a notifier. + * + * + * @generated + */ + public UnaryIntegerExpressionItemProvider(AdapterFactory adapterFactory) { + super(adapterFactory); + } + + /** + * This returns the property descriptors for the adapted class. + * + * + * @generated + */ + @Override + public List getPropertyDescriptors(Object object) { + if (itemPropertyDescriptors == null) { + super.getPropertyDescriptors(object); + + addOperatorPropertyDescriptor(object); + } + return itemPropertyDescriptors; + } + + /** + * This adds a property descriptor for the Operator feature. + * + * + * @generated + */ + protected void addOperatorPropertyDescriptor(Object object) { + itemPropertyDescriptors.add + (createItemPropertyDescriptor + (((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(), + getResourceLocator(), + getString("_UI_UnaryIntegerExpression_operator_feature"), + getString("_UI_PropertyDescriptor_description", "_UI_UnaryIntegerExpression_operator_feature", "_UI_UnaryIntegerExpression_type"), + ArduinoPackage.Literals.UNARY_INTEGER_EXPRESSION__OPERATOR, + true, + false, + false, + ItemPropertyDescriptor.GENERIC_VALUE_IMAGE, + null, + null)); + } + + /** + * This returns UnaryIntegerExpression.gif. + * + * + * @generated + */ + @Override + public Object getImage(Object object) { + return overlayImage(object, getResourceLocator().getImage("full/obj16/UnaryIntegerExpression")); + } + + /** + * This returns the label text for the adapted class. + * + * + * @generated + */ + @Override + public String getText(Object object) { + UnaryIntegerOperatorKind labelValue = ((UnaryIntegerExpression)object).getOperator(); + String label = labelValue == null ? null : labelValue.toString(); + return label == null || label.length() == 0 ? + getString("_UI_UnaryIntegerExpression_type") : + getString("_UI_UnaryIntegerExpression_type") + " " + label; + } + + + /** + * This handles model notifications by calling {@link #updateChildren} to update any cached + * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}. + * + * + * @generated + */ + @Override + public void notifyChanged(Notification notification) { + updateChildren(notification); + + switch (notification.getFeatureID(UnaryIntegerExpression.class)) { + case ArduinoPackage.UNARY_INTEGER_EXPRESSION__OPERATOR: + fireNotifyChanged(new ViewerNotification(notification, notification.getNotifier(), false, true)); + return; + } + super.notifyChanged(notification); + } + + /** + * This adds {@link org.eclipse.emf.edit.command.CommandParameter}s describing the children + * that can be created under this object. + * + * + * @generated + */ + @Override + protected void collectNewChildDescriptors(Collection newChildDescriptors, Object object) { + super.collectNewChildDescriptors(newChildDescriptors, object); + } + +} diff --git a/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.edit/src-gen/fr/obeo/dsl/arduino/provider/UtilitiesItemProvider.java b/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.edit/src-gen/fr/obeo/dsl/arduino/provider/UtilitiesItemProvider.java new file mode 100644 index 00000000..109a4440 --- /dev/null +++ b/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.edit/src-gen/fr/obeo/dsl/arduino/provider/UtilitiesItemProvider.java @@ -0,0 +1,96 @@ +/** + * Copyright (c) 2013 Obeo. + * 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: + * Obeo - initial API and implementation + */ +package fr.obeo.dsl.arduino.provider; + + +import fr.obeo.dsl.arduino.Utilities; + +import java.util.Collection; +import java.util.List; + +import org.eclipse.emf.common.notify.AdapterFactory; +import org.eclipse.emf.common.notify.Notification; + +import org.eclipse.emf.edit.provider.IItemPropertyDescriptor; + +/** + * This is the item provider adapter for a {@link fr.obeo.dsl.arduino.Utilities} object. + * + * + * @generated + */ +public class UtilitiesItemProvider extends InstructionItemProvider { + /** + * This constructs an instance from a factory and a notifier. + * + * + * @generated + */ + public UtilitiesItemProvider(AdapterFactory adapterFactory) { + super(adapterFactory); + } + + /** + * This returns the property descriptors for the adapted class. + * + * + * @generated + */ + @Override + public List getPropertyDescriptors(Object object) { + if (itemPropertyDescriptors == null) { + super.getPropertyDescriptors(object); + + } + return itemPropertyDescriptors; + } + + /** + * This returns the label text for the adapted class. + * + * + * @generated + */ + @Override + public String getText(Object object) { + String label = ((Utilities)object).getName(); + return label == null || label.length() == 0 ? + getString("_UI_Utilities_type") : + getString("_UI_Utilities_type") + " " + label; + } + + + /** + * This handles model notifications by calling {@link #updateChildren} to update any cached + * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}. + * + * + * @generated + */ + @Override + public void notifyChanged(Notification notification) { + updateChildren(notification); + super.notifyChanged(notification); + } + + /** + * This adds {@link org.eclipse.emf.edit.command.CommandParameter}s describing the children + * that can be created under this object. + * + * + * @generated + */ + @Override + protected void collectNewChildDescriptors(Collection newChildDescriptors, Object object) { + super.collectNewChildDescriptors(newChildDescriptors, object); + } + +} diff --git a/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.edit/src-gen/fr/obeo/dsl/arduino/provider/VariableAssignmentItemProvider.java b/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.edit/src-gen/fr/obeo/dsl/arduino/provider/VariableAssignmentItemProvider.java new file mode 100644 index 00000000..00ad31f6 --- /dev/null +++ b/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.edit/src-gen/fr/obeo/dsl/arduino/provider/VariableAssignmentItemProvider.java @@ -0,0 +1,227 @@ +/** + * Copyright (c) 2013 Obeo. + * 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: + * Obeo - initial API and implementation + */ +package fr.obeo.dsl.arduino.provider; + + +import fr.obeo.dsl.arduino.ArduinoFactory; +import fr.obeo.dsl.arduino.ArduinoPackage; +import fr.obeo.dsl.arduino.VariableAssignment; + +import java.util.Collection; +import java.util.List; + +import org.eclipse.emf.common.notify.AdapterFactory; +import org.eclipse.emf.common.notify.Notification; + +import org.eclipse.emf.ecore.EStructuralFeature; + +import org.eclipse.emf.edit.provider.ComposeableAdapterFactory; +import org.eclipse.emf.edit.provider.IItemPropertyDescriptor; +import org.eclipse.emf.edit.provider.ViewerNotification; + +/** + * This is the item provider adapter for a {@link fr.obeo.dsl.arduino.VariableAssignment} object. + * + * + * @generated + */ +public class VariableAssignmentItemProvider extends InstructionItemProvider { + /** + * This constructs an instance from a factory and a notifier. + * + * + * @generated + */ + public VariableAssignmentItemProvider(AdapterFactory adapterFactory) { + super(adapterFactory); + } + + /** + * This returns the property descriptors for the adapted class. + * + * + * @generated + */ + @Override + public List getPropertyDescriptors(Object object) { + if (itemPropertyDescriptors == null) { + super.getPropertyDescriptors(object); + + addVariablePropertyDescriptor(object); + } + return itemPropertyDescriptors; + } + + /** + * This adds a property descriptor for the Variable feature. + * + * + * @generated + */ + protected void addVariablePropertyDescriptor(Object object) { + itemPropertyDescriptors.add + (createItemPropertyDescriptor + (((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(), + getResourceLocator(), + getString("_UI_VariableAssignment_variable_feature"), + getString("_UI_PropertyDescriptor_description", "_UI_VariableAssignment_variable_feature", "_UI_VariableAssignment_type"), + ArduinoPackage.Literals.VARIABLE_ASSIGNMENT__VARIABLE, + true, + false, + true, + null, + null, + null)); + } + + /** + * This specifies how to implement {@link #getChildren} and is used to deduce an appropriate feature for an + * {@link org.eclipse.emf.edit.command.AddCommand}, {@link org.eclipse.emf.edit.command.RemoveCommand} or + * {@link org.eclipse.emf.edit.command.MoveCommand} in {@link #createCommand}. + * + * + * @generated + */ + @Override + public Collection getChildrenFeatures(Object object) { + if (childrenFeatures == null) { + super.getChildrenFeatures(object); + childrenFeatures.add(ArduinoPackage.Literals.ASSIGNMENT__OPERAND); + } + return childrenFeatures; + } + + /** + * + * + * @generated + */ + @Override + protected EStructuralFeature getChildFeature(Object object, Object child) { + // Check the type of the specified child object and return the proper feature to use for + // adding (see {@link AddCommand}) it as a child. + + return super.getChildFeature(object, child); + } + + /** + * This returns VariableAssignment.gif. + * + * + * @generated + */ + @Override + public Object getImage(Object object) { + return overlayImage(object, getResourceLocator().getImage("full/obj16/VariableAssignment")); + } + + /** + * This returns the label text for the adapted class. + * + * + * @generated + */ + @Override + public String getText(Object object) { + String label = ((VariableAssignment)object).getName(); + return label == null || label.length() == 0 ? + getString("_UI_VariableAssignment_type") : + getString("_UI_VariableAssignment_type") + " " + label; + } + + + /** + * This handles model notifications by calling {@link #updateChildren} to update any cached + * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}. + * + * + * @generated + */ + @Override + public void notifyChanged(Notification notification) { + updateChildren(notification); + + switch (notification.getFeatureID(VariableAssignment.class)) { + case ArduinoPackage.VARIABLE_ASSIGNMENT__OPERAND: + fireNotifyChanged(new ViewerNotification(notification, notification.getNotifier(), true, false)); + return; + } + super.notifyChanged(notification); + } + + /** + * This adds {@link org.eclipse.emf.edit.command.CommandParameter}s describing the children + * that can be created under this object. + * + * + * @generated + */ + @Override + protected void collectNewChildDescriptors(Collection newChildDescriptors, Object object) { + super.collectNewChildDescriptors(newChildDescriptors, object); + + newChildDescriptors.add + (createChildParameter + (ArduinoPackage.Literals.ASSIGNMENT__OPERAND, + ArduinoFactory.eINSTANCE.createBinaryIntegerExpression())); + + newChildDescriptors.add + (createChildParameter + (ArduinoPackage.Literals.ASSIGNMENT__OPERAND, + ArduinoFactory.eINSTANCE.createBinaryBooleanExpression())); + + newChildDescriptors.add + (createChildParameter + (ArduinoPackage.Literals.ASSIGNMENT__OPERAND, + ArduinoFactory.eINSTANCE.createIntegerConstant())); + + newChildDescriptors.add + (createChildParameter + (ArduinoPackage.Literals.ASSIGNMENT__OPERAND, + ArduinoFactory.eINSTANCE.createBooleanConstant())); + + newChildDescriptors.add + (createChildParameter + (ArduinoPackage.Literals.ASSIGNMENT__OPERAND, + ArduinoFactory.eINSTANCE.createIntegerVariable())); + + newChildDescriptors.add + (createChildParameter + (ArduinoPackage.Literals.ASSIGNMENT__OPERAND, + ArduinoFactory.eINSTANCE.createBooleanVariable())); + + newChildDescriptors.add + (createChildParameter + (ArduinoPackage.Literals.ASSIGNMENT__OPERAND, + ArduinoFactory.eINSTANCE.createBooleanModuleGet())); + + newChildDescriptors.add + (createChildParameter + (ArduinoPackage.Literals.ASSIGNMENT__OPERAND, + ArduinoFactory.eINSTANCE.createIntegerModuleGet())); + + newChildDescriptors.add + (createChildParameter + (ArduinoPackage.Literals.ASSIGNMENT__OPERAND, + ArduinoFactory.eINSTANCE.createUnaryBooleanExpression())); + + newChildDescriptors.add + (createChildParameter + (ArduinoPackage.Literals.ASSIGNMENT__OPERAND, + ArduinoFactory.eINSTANCE.createUnaryIntegerExpression())); + + newChildDescriptors.add + (createChildParameter + (ArduinoPackage.Literals.ASSIGNMENT__OPERAND, + ArduinoFactory.eINSTANCE.createVariableRef())); + } + +} diff --git a/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.edit/src-gen/fr/obeo/dsl/arduino/provider/VariableDeclarationItemProvider.java b/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.edit/src-gen/fr/obeo/dsl/arduino/provider/VariableDeclarationItemProvider.java new file mode 100644 index 00000000..7451d220 --- /dev/null +++ b/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.edit/src-gen/fr/obeo/dsl/arduino/provider/VariableDeclarationItemProvider.java @@ -0,0 +1,158 @@ +/** + * Copyright (c) 2013 Obeo. + * 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: + * Obeo - initial API and implementation + */ +package fr.obeo.dsl.arduino.provider; + + +import fr.obeo.dsl.arduino.ArduinoFactory; +import fr.obeo.dsl.arduino.ArduinoPackage; +import fr.obeo.dsl.arduino.VariableDeclaration; + +import java.util.Collection; +import java.util.List; + +import org.eclipse.emf.common.notify.AdapterFactory; +import org.eclipse.emf.common.notify.Notification; + +import org.eclipse.emf.ecore.EStructuralFeature; + +import org.eclipse.emf.edit.provider.IItemPropertyDescriptor; +import org.eclipse.emf.edit.provider.ViewerNotification; + +/** + * This is the item provider adapter for a {@link fr.obeo.dsl.arduino.VariableDeclaration} object. + * + * + * @generated + */ +public class VariableDeclarationItemProvider extends InstructionItemProvider { + /** + * This constructs an instance from a factory and a notifier. + * + * + * @generated + */ + public VariableDeclarationItemProvider(AdapterFactory adapterFactory) { + super(adapterFactory); + } + + /** + * This returns the property descriptors for the adapted class. + * + * + * @generated + */ + @Override + public List getPropertyDescriptors(Object object) { + if (itemPropertyDescriptors == null) { + super.getPropertyDescriptors(object); + + } + return itemPropertyDescriptors; + } + + /** + * This specifies how to implement {@link #getChildren} and is used to deduce an appropriate feature for an + * {@link org.eclipse.emf.edit.command.AddCommand}, {@link org.eclipse.emf.edit.command.RemoveCommand} or + * {@link org.eclipse.emf.edit.command.MoveCommand} in {@link #createCommand}. + * + * + * @generated + */ + @Override + public Collection getChildrenFeatures(Object object) { + if (childrenFeatures == null) { + super.getChildrenFeatures(object); + childrenFeatures.add(ArduinoPackage.Literals.VARIABLE_DECLARATION__VARIABLE); + } + return childrenFeatures; + } + + /** + * + * + * @generated + */ + @Override + protected EStructuralFeature getChildFeature(Object object, Object child) { + // Check the type of the specified child object and return the proper feature to use for + // adding (see {@link AddCommand}) it as a child. + + return super.getChildFeature(object, child); + } + + /** + * This returns VariableDeclaration.gif. + * + * + * @generated + */ + @Override + public Object getImage(Object object) { + return overlayImage(object, getResourceLocator().getImage("full/obj16/VariableDeclaration")); + } + + /** + * This returns the label text for the adapted class. + * + * + * @generated + */ + @Override + public String getText(Object object) { + String label = ((VariableDeclaration)object).getName(); + return label == null || label.length() == 0 ? + getString("_UI_VariableDeclaration_type") : + getString("_UI_VariableDeclaration_type") + " " + label; + } + + + /** + * This handles model notifications by calling {@link #updateChildren} to update any cached + * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}. + * + * + * @generated + */ + @Override + public void notifyChanged(Notification notification) { + updateChildren(notification); + + switch (notification.getFeatureID(VariableDeclaration.class)) { + case ArduinoPackage.VARIABLE_DECLARATION__VARIABLE: + fireNotifyChanged(new ViewerNotification(notification, notification.getNotifier(), true, false)); + return; + } + super.notifyChanged(notification); + } + + /** + * This adds {@link org.eclipse.emf.edit.command.CommandParameter}s describing the children + * that can be created under this object. + * + * + * @generated + */ + @Override + protected void collectNewChildDescriptors(Collection newChildDescriptors, Object object) { + super.collectNewChildDescriptors(newChildDescriptors, object); + + newChildDescriptors.add + (createChildParameter + (ArduinoPackage.Literals.VARIABLE_DECLARATION__VARIABLE, + ArduinoFactory.eINSTANCE.createIntegerVariable())); + + newChildDescriptors.add + (createChildParameter + (ArduinoPackage.Literals.VARIABLE_DECLARATION__VARIABLE, + ArduinoFactory.eINSTANCE.createBooleanVariable())); + } + +} diff --git a/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.edit/src-gen/fr/obeo/dsl/arduino/provider/VariableItemProvider.java b/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.edit/src-gen/fr/obeo/dsl/arduino/provider/VariableItemProvider.java new file mode 100644 index 00000000..e44174be --- /dev/null +++ b/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.edit/src-gen/fr/obeo/dsl/arduino/provider/VariableItemProvider.java @@ -0,0 +1,140 @@ +/** + * Copyright (c) 2013 Obeo. + * 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: + * Obeo - initial API and implementation + */ +package fr.obeo.dsl.arduino.provider; + + +import fr.obeo.dsl.arduino.ArduinoPackage; +import fr.obeo.dsl.arduino.Variable; + +import java.util.Collection; +import java.util.List; + +import org.eclipse.emf.common.notify.AdapterFactory; +import org.eclipse.emf.common.notify.Notification; + +import org.eclipse.emf.edit.provider.ComposeableAdapterFactory; +import org.eclipse.emf.edit.provider.IItemPropertyDescriptor; +import org.eclipse.emf.edit.provider.ItemPropertyDescriptor; +import org.eclipse.emf.edit.provider.ViewerNotification; + +/** + * This is the item provider adapter for a {@link fr.obeo.dsl.arduino.Variable} object. + * + * + * @generated + */ +public class VariableItemProvider extends ExpressionItemProvider { + /** + * This constructs an instance from a factory and a notifier. + * + * + * @generated + */ + public VariableItemProvider(AdapterFactory adapterFactory) { + super(adapterFactory); + } + + /** + * This returns the property descriptors for the adapted class. + * + * + * @generated + */ + @Override + public List getPropertyDescriptors(Object object) { + if (itemPropertyDescriptors == null) { + super.getPropertyDescriptors(object); + + addNamePropertyDescriptor(object); + } + return itemPropertyDescriptors; + } + + /** + * This adds a property descriptor for the Name feature. + * + * + * @generated + */ + protected void addNamePropertyDescriptor(Object object) { + itemPropertyDescriptors.add + (createItemPropertyDescriptor + (((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(), + getResourceLocator(), + getString("_UI_NamedElement_name_feature"), + getString("_UI_PropertyDescriptor_description", "_UI_NamedElement_name_feature", "_UI_NamedElement_type"), + ArduinoPackage.Literals.NAMED_ELEMENT__NAME, + true, + false, + false, + ItemPropertyDescriptor.GENERIC_VALUE_IMAGE, + null, + null)); + } + + /** + * This returns Variable.gif. + * + * + * @generated + */ + @Override + public Object getImage(Object object) { + return overlayImage(object, getResourceLocator().getImage("full/obj16/Variable")); + } + + /** + * This returns the label text for the adapted class. + * + * + * @generated + */ + @Override + public String getText(Object object) { + String label = ((Variable)object).getName(); + return label == null || label.length() == 0 ? + getString("_UI_Variable_type") : + getString("_UI_Variable_type") + " " + label; + } + + + /** + * This handles model notifications by calling {@link #updateChildren} to update any cached + * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}. + * + * + * @generated + */ + @Override + public void notifyChanged(Notification notification) { + updateChildren(notification); + + switch (notification.getFeatureID(Variable.class)) { + case ArduinoPackage.VARIABLE__NAME: + fireNotifyChanged(new ViewerNotification(notification, notification.getNotifier(), false, true)); + return; + } + super.notifyChanged(notification); + } + + /** + * This adds {@link org.eclipse.emf.edit.command.CommandParameter}s describing the children + * that can be created under this object. + * + * + * @generated + */ + @Override + protected void collectNewChildDescriptors(Collection newChildDescriptors, Object object) { + super.collectNewChildDescriptors(newChildDescriptors, object); + } + +} diff --git a/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.edit/src-gen/fr/obeo/dsl/arduino/provider/VariableRefItemProvider.java b/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.edit/src-gen/fr/obeo/dsl/arduino/provider/VariableRefItemProvider.java new file mode 100644 index 00000000..7a297469 --- /dev/null +++ b/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.edit/src-gen/fr/obeo/dsl/arduino/provider/VariableRefItemProvider.java @@ -0,0 +1,128 @@ +/** + * Copyright (c) 2013 Obeo. + * 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: + * Obeo - initial API and implementation + */ +package fr.obeo.dsl.arduino.provider; + + +import fr.obeo.dsl.arduino.ArduinoPackage; + +import java.util.Collection; +import java.util.List; + +import org.eclipse.emf.common.notify.AdapterFactory; +import org.eclipse.emf.common.notify.Notification; + +import org.eclipse.emf.edit.provider.ComposeableAdapterFactory; +import org.eclipse.emf.edit.provider.IItemPropertyDescriptor; + +/** + * This is the item provider adapter for a {@link fr.obeo.dsl.arduino.VariableRef} object. + * + * + * @generated + */ +public class VariableRefItemProvider extends ExpressionItemProvider { + /** + * This constructs an instance from a factory and a notifier. + * + * + * @generated + */ + public VariableRefItemProvider(AdapterFactory adapterFactory) { + super(adapterFactory); + } + + /** + * This returns the property descriptors for the adapted class. + * + * + * @generated + */ + @Override + public List getPropertyDescriptors(Object object) { + if (itemPropertyDescriptors == null) { + super.getPropertyDescriptors(object); + + addVariablePropertyDescriptor(object); + } + return itemPropertyDescriptors; + } + + /** + * This adds a property descriptor for the Variable feature. + * + * + * @generated + */ + protected void addVariablePropertyDescriptor(Object object) { + itemPropertyDescriptors.add + (createItemPropertyDescriptor + (((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(), + getResourceLocator(), + getString("_UI_VariableRef_variable_feature"), + getString("_UI_PropertyDescriptor_description", "_UI_VariableRef_variable_feature", "_UI_VariableRef_type"), + ArduinoPackage.Literals.VARIABLE_REF__VARIABLE, + true, + false, + true, + null, + null, + null)); + } + + /** + * This returns VariableRef.gif. + * + * + * @generated + */ + @Override + public Object getImage(Object object) { + return overlayImage(object, getResourceLocator().getImage("full/obj16/VariableRef")); + } + + /** + * This returns the label text for the adapted class. + * + * + * @generated + */ + @Override + public String getText(Object object) { + return getString("_UI_VariableRef_type"); + } + + + /** + * This handles model notifications by calling {@link #updateChildren} to update any cached + * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}. + * + * + * @generated + */ + @Override + public void notifyChanged(Notification notification) { + updateChildren(notification); + super.notifyChanged(notification); + } + + /** + * This adds {@link org.eclipse.emf.edit.command.CommandParameter}s describing the children + * that can be created under this object. + * + * + * @generated + */ + @Override + protected void collectNewChildDescriptors(Collection newChildDescriptors, Object object) { + super.collectNewChildDescriptors(newChildDescriptors, object); + } + +} diff --git a/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.edit/src-gen/fr/obeo/dsl/arduino/provider/WhileItemProvider.java b/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.edit/src-gen/fr/obeo/dsl/arduino/provider/WhileItemProvider.java new file mode 100644 index 00000000..d9a61258 --- /dev/null +++ b/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.edit/src-gen/fr/obeo/dsl/arduino/provider/WhileItemProvider.java @@ -0,0 +1,132 @@ +/** + * Copyright (c) 2013 Obeo. + * 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: + * Obeo - initial API and implementation + */ +package fr.obeo.dsl.arduino.provider; + + +import fr.obeo.dsl.arduino.ArduinoPackage; +import fr.obeo.dsl.arduino.While; + +import java.util.Collection; +import java.util.List; + +import org.eclipse.emf.common.notify.AdapterFactory; +import org.eclipse.emf.common.notify.Notification; + +import org.eclipse.emf.edit.provider.ComposeableAdapterFactory; +import org.eclipse.emf.edit.provider.IItemPropertyDescriptor; + +/** + * This is the item provider adapter for a {@link fr.obeo.dsl.arduino.While} object. + * + * + * @generated + */ +public class WhileItemProvider extends ControlItemProvider { + /** + * This constructs an instance from a factory and a notifier. + * + * + * @generated + */ + public WhileItemProvider(AdapterFactory adapterFactory) { + super(adapterFactory); + } + + /** + * This returns the property descriptors for the adapted class. + * + * + * @generated + */ + @Override + public List getPropertyDescriptors(Object object) { + if (itemPropertyDescriptors == null) { + super.getPropertyDescriptors(object); + + addConditionPropertyDescriptor(object); + } + return itemPropertyDescriptors; + } + + /** + * This adds a property descriptor for the Condition feature. + * + * + * @generated + */ + protected void addConditionPropertyDescriptor(Object object) { + itemPropertyDescriptors.add + (createItemPropertyDescriptor + (((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(), + getResourceLocator(), + getString("_UI_While_condition_feature"), + getString("_UI_PropertyDescriptor_description", "_UI_While_condition_feature", "_UI_While_type"), + ArduinoPackage.Literals.WHILE__CONDITION, + true, + false, + true, + null, + null, + null)); + } + + /** + * This returns While.gif. + * + * + * @generated + */ + @Override + public Object getImage(Object object) { + return overlayImage(object, getResourceLocator().getImage("full/obj16/While")); + } + + /** + * This returns the label text for the adapted class. + * + * + * @generated + */ + @Override + public String getText(Object object) { + String label = ((While)object).getName(); + return label == null || label.length() == 0 ? + getString("_UI_While_type") : + getString("_UI_While_type") + " " + label; + } + + + /** + * This handles model notifications by calling {@link #updateChildren} to update any cached + * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}. + * + * + * @generated + */ + @Override + public void notifyChanged(Notification notification) { + updateChildren(notification); + super.notifyChanged(notification); + } + + /** + * This adds {@link org.eclipse.emf.edit.command.CommandParameter}s describing the children + * that can be created under this object. + * + * + * @generated + */ + @Override + protected void collectNewChildDescriptors(Collection newChildDescriptors, Object object) { + super.collectNewChildDescriptors(newChildDescriptors, object); + } + +} diff --git a/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.editor/.classpath b/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.editor/.classpath new file mode 100644 index 00000000..858bac42 --- /dev/null +++ b/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.editor/.classpath @@ -0,0 +1,7 @@ + + + + + + + diff --git a/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.editor/.project b/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.editor/.project new file mode 100644 index 00000000..c310c345 --- /dev/null +++ b/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.editor/.project @@ -0,0 +1,28 @@ + + + fr.obeo.dsl.arduino.editor + + + + + + org.eclipse.jdt.core.javabuilder + + + + + org.eclipse.pde.ManifestBuilder + + + + + org.eclipse.pde.SchemaBuilder + + + + + + org.eclipse.jdt.core.javanature + org.eclipse.pde.PluginNature + + diff --git a/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.editor/META-INF/MANIFEST.MF b/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.editor/META-INF/MANIFEST.MF new file mode 100644 index 00000000..23d91edd --- /dev/null +++ b/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.editor/META-INF/MANIFEST.MF @@ -0,0 +1,18 @@ +Manifest-Version: 1.0 +Bundle-ManifestVersion: 2 +Bundle-Name: %pluginName +Bundle-SymbolicName: fr.obeo.dsl.arduino.editor;singleton:=true +Bundle-Version: 1.0.0.qualifier +Bundle-ClassPath: . +Bundle-Activator: fr.obeo.dsl.arduino.presentation.ArduinoEditorPlugin$Implementation +Bundle-Vendor: %providerName +Bundle-Localization: plugin +Bundle-RequiredExecutionEnvironment: JavaSE-1.6 +Export-Package: fr.obeo.dsl.arduino.presentation +Require-Bundle: org.eclipse.core.runtime, + org.eclipse.core.resources;visibility:=reexport, + fr.obeo.dsl.arduino.edit;visibility:=reexport, + org.eclipse.emf.ecore.xmi;visibility:=reexport, + org.eclipse.emf.edit.ui;visibility:=reexport, + org.eclipse.ui.ide;visibility:=reexport +Bundle-ActivationPolicy: lazy diff --git a/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.editor/build.properties b/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.editor/build.properties new file mode 100644 index 00000000..4a0dca34 --- /dev/null +++ b/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.editor/build.properties @@ -0,0 +1,17 @@ +# Copyright (c) 2013 Obeo. +# 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: +# Obeo - initial API and implementation + +bin.includes = .,\ + icons/,\ + META-INF/,\ + plugin.xml,\ + plugin.properties +jars.compile.order = . +source.. = src-gen/ +output.. = bin diff --git a/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.editor/icons/full/obj16/ArduinoModelFile.gif b/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.editor/icons/full/obj16/ArduinoModelFile.gif new file mode 100644 index 0000000000000000000000000000000000000000..e5c6e175f7fa8e6d584fd924f4d9ee98097d1364 GIT binary patch literal 346 zcmZ?wbhEHb6krfwxXQrL(9jScAHRS9{{Q#qA2@IT$YuD?z`*by$o~Hy%=-WT+M1?g zJ;7^=E!!e>woI@Eq7D6aYkC}(cRMZWaGu-hI=#uQx!kv|)UUcY;L4`VTYGCBoaq1g z>(BR}zrX(Y{psuP4_|-3{q*bAhoARf{P3TpAqY2Ru(e7svP|pe@9LS_&oa?PLRGb`b&-Utq}r+~{#9y{ Wu2P$%3RpHv`8YB0&v$WTum%8*9e5Z3 literal 0 HcmV?d00001 diff --git a/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.editor/icons/full/wizban/NewArduino.gif b/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.editor/icons/full/wizban/NewArduino.gif new file mode 100644 index 0000000000000000000000000000000000000000..caab214718242e4a79ba29e23bb0eb9b161c2315 GIT binary patch literal 2462 zcmd6m`8OMg8ivzyXM`x-QPZJfTAHHK&QR5jT4P#9t7t6^##XzkW!xa>#1e@$O~jH| zE3r#rtBR6D7#fYJM2Qp;G?p$#XUw>N#eL6n-XFj7eCK?ht-XzzxvwMO2H-PbFT1ZBl3O9g&W~^|k8rNx&)gyjZjpG87@|i^>4Ug(@AyieJu2Xdq=4kA zpp=@>w7T$&=Mfq8(Z5q3XE!FGn}5T${)TBuE2bffX{ge!tkP}_sSmryi^A%DT-^Y! zj!9@3ENf(y?=eJf;ndSdsa<0Vp4Giz9^{>8;i+mH7L=k(d$XCGJIH~-4q)k2?*2zXfQw~D2oJNF~cj2 zIN9k!NW#aSG00c}(O3S;HqS`EWsndGGV23CzB-?=hZ+Suh8bx;UYg64>ucD@so9u& zDyUs37o+A?-N7+l25e%AuYMKs(6?rFq~9z!3w;V_9^$INnqlUM;)#^)nVWtmBl-*z zi|n<2KUmEM;MKm;E5T3uQ*lO}pu;eQ9_@Tksdt8r12K_WDXj)lJG4X9sRs3^r$v_l zMhpms3k50ZWs?hxcDIjIoB>X z!&pBy1T!Ov9G$dgI$!c5(_@3+4JhV*>oBqfiKY9HoP zXj7rkT{$+Pxq-rigr6m}cUw*W8H-jMXlR>BDd#)#d z8*g=hF-7v^BHo7%S(^#nhezZbx)vBBt->c?TF$o^b3b3+ma{nRHnbKmzNrRI_`r~j z?$DmADSn+zkGt}d2&ihMGN0?+u=5)GS@j8k=|jw4XgW~_6_tNa{!1i6_gK6TyZt<7 z^0Le8uP&A61nI7q6>F#Z$P3nZ<31^F)C7bmIq&QkD2p!9yKwQklYcmT*WuacFCCqY zVEO6y3R;SjG-cb8CghO|70Rbe)V&Inoi($|B$rqfTS7mL;d>h315M03I=<=GKw`aJ zgrNU;u8Ol3`FmB%GwLLel_vFi>X90|n+BIo0ntwe4tCIA*#xd5*(aW=cz~z1uYIG9Z)WLT zU}Ew@ZA`OG*!Eg;SlipW!w1B+#s=t^bPtl2rJ%^#VWXfHrf-<#!-n0J-vvr<4*h)$ z;M~m4I02R1g4J=nh}c53ki>k5bL>0F2`6bQ9gbrIyekhK89`KobL2|k`?9;MrcaHR z$S0i*S~KRe(oHn_vI9&=ghkk*`A9qmwgE(-tXMxrnmZU?)XA}TsD94J?fx8H*-GHS z`YjkXZOG8*B5$el76^CkqoR(6#I?p6r|XoWoDgN+)nwDTahl|I;HAn`@`DG z(Au@#)a@qZ*Bixj?L51Ei}n73t!h~k_)zT~$`plLRj3ED^!H$m=DBLx-N~>Yjz^aM z07?}Q+%*2PAC&py#1D5>4QEpiW|OJWxp{W?h=0aeCL9GH!`{1bCtd5cAF8Efzj?jA zJ`VYvi&KM2$UWB`*Svk?i<&)v44-cu1^rr|nlg@lbIpx}bOER~`soK=#%pBl0|AZ| zvWMY1q~ehUePDtw3~G&694z@%P?duu3X85xHMdo18yJoX^zPVX?Be1MBMz40Fl5hv56uog;MqW?j@z z(X4fSDdX`ok2lJh7a97;5oz1ip-lUlIc5J&ioPtwS6bw^yunzh!2BJPNN@SOp!?m# WnpT>px2$#`csply@qoHIz~Uc@0mY>N literal 0 HcmV?d00001 diff --git a/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.editor/plugin.properties b/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.editor/plugin.properties new file mode 100644 index 00000000..95ef0c81 --- /dev/null +++ b/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.editor/plugin.properties @@ -0,0 +1,60 @@ +# Copyright (c) 2013 Obeo. +# 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: +# Obeo - initial API and implementation + +pluginName = Arduino Editor +providerName = www.example.org + +_UI_ArduinoEditor_menu = &Arduino Editor + +_UI_CreateChild_menu_item = &New Child +_UI_CreateSibling_menu_item = N&ew Sibling + +_UI_ShowPropertiesView_menu_item = Show &Properties View +_UI_RefreshViewer_menu_item = &Refresh + +_UI_SelectionPage_label = Selection +_UI_ParentPage_label = Parent +_UI_ListPage_label = List +_UI_TreePage_label = Tree +_UI_TablePage_label = Table +_UI_TreeWithColumnsPage_label = Tree with Columns +_UI_ObjectColumn_label = Object +_UI_SelfColumn_label = Self + +_UI_NoObjectSelected = Selected Nothing +_UI_SingleObjectSelected = Selected Object: {0} +_UI_MultiObjectSelected = Selected {0} Objects + +_UI_OpenEditorError_label = Open Editor + +_UI_Wizard_category = Example EMF Model Creation Wizards + +_UI_CreateModelError_message = Problems encountered in file "{0}" + +_UI_ArduinoModelWizard_label = Arduino Model +_UI_ArduinoModelWizard_description = Create a new Arduino model + +_UI_ArduinoEditor_label = Arduino Model Editor + +_UI_ArduinoEditorFilenameDefaultBase = My +_UI_ArduinoEditorFilenameExtensions = arduino + +_UI_Wizard_label = New + +_WARN_FilenameExtension = The file name must end in ''.{0}'' +_WARN_FilenameExtensions = The file name must have one of the following extensions: {0} + +_UI_ModelObject = &Model Object +_UI_XMLEncoding = &XML Encoding +_UI_XMLEncodingChoices = UTF-8 ASCII UTF-16 UTF-16BE UTF-16LE ISO-8859-1 +_UI_Wizard_initial_object_description = Select a model object to create + +_UI_FileConflict_label = File Conflict +_WARN_FileConflict = There are unsaved changes that conflict with changes made outside the editor. Do you wish to discard this editor's changes? + diff --git a/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.editor/plugin.xml b/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.editor/plugin.xml new file mode 100644 index 00000000..9ada8ccb --- /dev/null +++ b/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.editor/plugin.xml @@ -0,0 +1,45 @@ + + + + + + + + + + + + %_UI_ArduinoModelWizard_description + + + + + + + + + + + diff --git a/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.editor/src-gen/fr/obeo/dsl/arduino/presentation/ArduinoActionBarContributor.java b/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.editor/src-gen/fr/obeo/dsl/arduino/presentation/ArduinoActionBarContributor.java new file mode 100644 index 00000000..8e3372fd --- /dev/null +++ b/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.editor/src-gen/fr/obeo/dsl/arduino/presentation/ArduinoActionBarContributor.java @@ -0,0 +1,431 @@ +/** + * Copyright (c) 2013 Obeo. + * 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: + * Obeo - initial API and implementation + */ +package fr.obeo.dsl.arduino.presentation; + +import java.util.ArrayList; +import java.util.Collection; + +import org.eclipse.emf.common.ui.viewer.IViewerProvider; + +import org.eclipse.emf.edit.domain.EditingDomain; +import org.eclipse.emf.edit.domain.IEditingDomainProvider; + +import org.eclipse.emf.edit.ui.action.ControlAction; +import org.eclipse.emf.edit.ui.action.CreateChildAction; +import org.eclipse.emf.edit.ui.action.CreateSiblingAction; +import org.eclipse.emf.edit.ui.action.EditingDomainActionBarContributor; +import org.eclipse.emf.edit.ui.action.LoadResourceAction; +import org.eclipse.emf.edit.ui.action.ValidateAction; + +import org.eclipse.jface.action.Action; +import org.eclipse.jface.action.ActionContributionItem; +import org.eclipse.jface.action.IAction; +import org.eclipse.jface.action.IContributionItem; +import org.eclipse.jface.action.IContributionManager; +import org.eclipse.jface.action.IMenuListener; +import org.eclipse.jface.action.IMenuManager; +import org.eclipse.jface.action.IToolBarManager; +import org.eclipse.jface.action.MenuManager; +import org.eclipse.jface.action.Separator; +import org.eclipse.jface.action.SubContributionItem; + +import org.eclipse.jface.viewers.ISelection; +import org.eclipse.jface.viewers.ISelectionChangedListener; +import org.eclipse.jface.viewers.ISelectionProvider; +import org.eclipse.jface.viewers.IStructuredSelection; +import org.eclipse.jface.viewers.SelectionChangedEvent; +import org.eclipse.jface.viewers.Viewer; + +import org.eclipse.ui.IEditorPart; +import org.eclipse.ui.PartInitException; + +/** + * This is the action bar contributor for the Arduino model editor. + * + * + * @generated + */ +public class ArduinoActionBarContributor + extends EditingDomainActionBarContributor + implements ISelectionChangedListener { + /** + * This keeps track of the active editor. + * + * + * @generated + */ + protected IEditorPart activeEditorPart; + + /** + * This keeps track of the current selection provider. + * + * + * @generated + */ + protected ISelectionProvider selectionProvider; + + /** + * This action opens the Properties view. + * + * + * @generated + */ + protected IAction showPropertiesViewAction = + new Action(ArduinoEditorPlugin.INSTANCE.getString("_UI_ShowPropertiesView_menu_item")) { + @Override + public void run() { + try { + getPage().showView("org.eclipse.ui.views.PropertySheet"); + } + catch (PartInitException exception) { + ArduinoEditorPlugin.INSTANCE.log(exception); + } + } + }; + + /** + * This action refreshes the viewer of the current editor if the editor + * implements {@link org.eclipse.emf.common.ui.viewer.IViewerProvider}. + * + * + * @generated + */ + protected IAction refreshViewerAction = + new Action(ArduinoEditorPlugin.INSTANCE.getString("_UI_RefreshViewer_menu_item")) { + @Override + public boolean isEnabled() { + return activeEditorPart instanceof IViewerProvider; + } + + @Override + public void run() { + if (activeEditorPart instanceof IViewerProvider) { + Viewer viewer = ((IViewerProvider)activeEditorPart).getViewer(); + if (viewer != null) { + viewer.refresh(); + } + } + } + }; + + /** + * This will contain one {@link org.eclipse.emf.edit.ui.action.CreateChildAction} corresponding to each descriptor + * generated for the current selection by the item provider. + * + * + * @generated + */ + protected Collection createChildActions; + + /** + * This is the menu manager into which menu contribution items should be added for CreateChild actions. + * + * + * @generated + */ + protected IMenuManager createChildMenuManager; + + /** + * This will contain one {@link org.eclipse.emf.edit.ui.action.CreateSiblingAction} corresponding to each descriptor + * generated for the current selection by the item provider. + * + * + * @generated + */ + protected Collection createSiblingActions; + + /** + * This is the menu manager into which menu contribution items should be added for CreateSibling actions. + * + * + * @generated + */ + protected IMenuManager createSiblingMenuManager; + + /** + * This creates an instance of the contributor. + * + * + * @generated + */ + public ArduinoActionBarContributor() { + super(ADDITIONS_LAST_STYLE); + loadResourceAction = new LoadResourceAction(); + validateAction = new ValidateAction(); + controlAction = new ControlAction(); + } + + /** + * This adds Separators for editor additions to the tool bar. + * + * + * @generated + */ + @Override + public void contributeToToolBar(IToolBarManager toolBarManager) { + toolBarManager.add(new Separator("arduino-settings")); + toolBarManager.add(new Separator("arduino-additions")); + } + + /** + * This adds to the menu bar a menu and some separators for editor additions, + * as well as the sub-menus for object creation items. + * + * + * @generated + */ + @Override + public void contributeToMenu(IMenuManager menuManager) { + super.contributeToMenu(menuManager); + + IMenuManager submenuManager = new MenuManager(ArduinoEditorPlugin.INSTANCE.getString("_UI_ArduinoEditor_menu"), "fr.obeo.dsl.arduinoMenuID"); + menuManager.insertAfter("additions", submenuManager); + submenuManager.add(new Separator("settings")); + submenuManager.add(new Separator("actions")); + submenuManager.add(new Separator("additions")); + submenuManager.add(new Separator("additions-end")); + + // Prepare for CreateChild item addition or removal. + // + createChildMenuManager = new MenuManager(ArduinoEditorPlugin.INSTANCE.getString("_UI_CreateChild_menu_item")); + submenuManager.insertBefore("additions", createChildMenuManager); + + // Prepare for CreateSibling item addition or removal. + // + createSiblingMenuManager = new MenuManager(ArduinoEditorPlugin.INSTANCE.getString("_UI_CreateSibling_menu_item")); + submenuManager.insertBefore("additions", createSiblingMenuManager); + + // Force an update because Eclipse hides empty menus now. + // + submenuManager.addMenuListener + (new IMenuListener() { + public void menuAboutToShow(IMenuManager menuManager) { + menuManager.updateAll(true); + } + }); + + addGlobalActions(submenuManager); + } + + /** + * When the active editor changes, this remembers the change and registers with it as a selection provider. + * + * + * @generated + */ + @Override + public void setActiveEditor(IEditorPart part) { + super.setActiveEditor(part); + activeEditorPart = part; + + // Switch to the new selection provider. + // + if (selectionProvider != null) { + selectionProvider.removeSelectionChangedListener(this); + } + if (part == null) { + selectionProvider = null; + } + else { + selectionProvider = part.getSite().getSelectionProvider(); + selectionProvider.addSelectionChangedListener(this); + + // Fake a selection changed event to update the menus. + // + if (selectionProvider.getSelection() != null) { + selectionChanged(new SelectionChangedEvent(selectionProvider, selectionProvider.getSelection())); + } + } + } + + /** + * This implements {@link org.eclipse.jface.viewers.ISelectionChangedListener}, + * handling {@link org.eclipse.jface.viewers.SelectionChangedEvent}s by querying for the children and siblings + * that can be added to the selected object and updating the menus accordingly. + * + * + * @generated + */ + public void selectionChanged(SelectionChangedEvent event) { + // Remove any menu items for old selection. + // + if (createChildMenuManager != null) { + depopulateManager(createChildMenuManager, createChildActions); + } + if (createSiblingMenuManager != null) { + depopulateManager(createSiblingMenuManager, createSiblingActions); + } + + // Query the new selection for appropriate new child/sibling descriptors + // + Collection newChildDescriptors = null; + Collection newSiblingDescriptors = null; + + ISelection selection = event.getSelection(); + if (selection instanceof IStructuredSelection && ((IStructuredSelection)selection).size() == 1) { + Object object = ((IStructuredSelection)selection).getFirstElement(); + + EditingDomain domain = ((IEditingDomainProvider)activeEditorPart).getEditingDomain(); + + newChildDescriptors = domain.getNewChildDescriptors(object, null); + newSiblingDescriptors = domain.getNewChildDescriptors(null, object); + } + + // Generate actions for selection; populate and redraw the menus. + // + createChildActions = generateCreateChildActions(newChildDescriptors, selection); + createSiblingActions = generateCreateSiblingActions(newSiblingDescriptors, selection); + + if (createChildMenuManager != null) { + populateManager(createChildMenuManager, createChildActions, null); + createChildMenuManager.update(true); + } + if (createSiblingMenuManager != null) { + populateManager(createSiblingMenuManager, createSiblingActions, null); + createSiblingMenuManager.update(true); + } + } + + /** + * This generates a {@link org.eclipse.emf.edit.ui.action.CreateChildAction} for each object in descriptors, + * and returns the collection of these actions. + * + * + * @generated + */ + protected Collection generateCreateChildActions(Collection descriptors, ISelection selection) { + Collection actions = new ArrayList(); + if (descriptors != null) { + for (Object descriptor : descriptors) { + actions.add(new CreateChildAction(activeEditorPart, selection, descriptor)); + } + } + return actions; + } + + /** + * This generates a {@link org.eclipse.emf.edit.ui.action.CreateSiblingAction} for each object in descriptors, + * and returns the collection of these actions. + * + * + * @generated + */ + protected Collection generateCreateSiblingActions(Collection descriptors, ISelection selection) { + Collection actions = new ArrayList(); + if (descriptors != null) { + for (Object descriptor : descriptors) { + actions.add(new CreateSiblingAction(activeEditorPart, selection, descriptor)); + } + } + return actions; + } + + /** + * This populates the specified manager with {@link org.eclipse.jface.action.ActionContributionItem}s + * based on the {@link org.eclipse.jface.action.IAction}s contained in the actions collection, + * by inserting them before the specified contribution item contributionID. + * If contributionID is null, they are simply added. + * + * + * @generated + */ + protected void populateManager(IContributionManager manager, Collection actions, String contributionID) { + if (actions != null) { + for (IAction action : actions) { + if (contributionID != null) { + manager.insertBefore(contributionID, action); + } + else { + manager.add(action); + } + } + } + } + + /** + * This removes from the specified manager all {@link org.eclipse.jface.action.ActionContributionItem}s + * based on the {@link org.eclipse.jface.action.IAction}s contained in the actions collection. + * + * + * @generated + */ + protected void depopulateManager(IContributionManager manager, Collection actions) { + if (actions != null) { + IContributionItem[] items = manager.getItems(); + for (int i = 0; i < items.length; i++) { + // Look into SubContributionItems + // + IContributionItem contributionItem = items[i]; + while (contributionItem instanceof SubContributionItem) { + contributionItem = ((SubContributionItem)contributionItem).getInnerItem(); + } + + // Delete the ActionContributionItems with matching action. + // + if (contributionItem instanceof ActionContributionItem) { + IAction action = ((ActionContributionItem)contributionItem).getAction(); + if (actions.contains(action)) { + manager.remove(contributionItem); + } + } + } + } + } + + /** + * This populates the pop-up menu before it appears. + * + * + * @generated + */ + @Override + public void menuAboutToShow(IMenuManager menuManager) { + super.menuAboutToShow(menuManager); + MenuManager submenuManager = null; + + submenuManager = new MenuManager(ArduinoEditorPlugin.INSTANCE.getString("_UI_CreateChild_menu_item")); + populateManager(submenuManager, createChildActions, null); + menuManager.insertBefore("edit", submenuManager); + + submenuManager = new MenuManager(ArduinoEditorPlugin.INSTANCE.getString("_UI_CreateSibling_menu_item")); + populateManager(submenuManager, createSiblingActions, null); + menuManager.insertBefore("edit", submenuManager); + } + + /** + * This inserts global actions before the "additions-end" separator. + * + * + * @generated + */ + @Override + protected void addGlobalActions(IMenuManager menuManager) { + menuManager.insertAfter("additions-end", new Separator("ui-actions")); + menuManager.insertAfter("ui-actions", showPropertiesViewAction); + + refreshViewerAction.setEnabled(refreshViewerAction.isEnabled()); + menuManager.insertAfter("ui-actions", refreshViewerAction); + + super.addGlobalActions(menuManager); + } + + /** + * This ensures that a delete action will clean up all references to deleted objects. + * + * + * @generated + */ + @Override + protected boolean removeAllReferencesOnDelete() { + return true; + } + +} diff --git a/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.editor/src-gen/fr/obeo/dsl/arduino/presentation/ArduinoEditor.java b/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.editor/src-gen/fr/obeo/dsl/arduino/presentation/ArduinoEditor.java new file mode 100644 index 00000000..b0e1cc82 --- /dev/null +++ b/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.editor/src-gen/fr/obeo/dsl/arduino/presentation/ArduinoEditor.java @@ -0,0 +1,1826 @@ +/** + * Copyright (c) 2013 Obeo. + * 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: + * Obeo - initial API and implementation + */ +package fr.obeo.dsl.arduino.presentation; + + +import java.io.IOException; +import java.io.InputStream; + +import java.util.ArrayList; +import java.util.Collection; +import java.util.Collections; +import java.util.EventObject; +import java.util.HashMap; +import java.util.Iterator; +import java.util.LinkedHashMap; +import java.util.List; +import java.util.Map; + +import org.eclipse.core.resources.IFile; +import org.eclipse.core.resources.IMarker; +import org.eclipse.core.resources.IResource; +import org.eclipse.core.resources.IResourceChangeEvent; +import org.eclipse.core.resources.IResourceChangeListener; +import org.eclipse.core.resources.IResourceDelta; +import org.eclipse.core.resources.IResourceDeltaVisitor; +import org.eclipse.core.resources.ResourcesPlugin; + +import org.eclipse.core.runtime.CoreException; +import org.eclipse.core.runtime.IPath; +import org.eclipse.core.runtime.IProgressMonitor; +import org.eclipse.core.runtime.NullProgressMonitor; + +import org.eclipse.jface.action.IMenuListener; +import org.eclipse.jface.action.IMenuManager; +import org.eclipse.jface.action.IStatusLineManager; +import org.eclipse.jface.action.IToolBarManager; +import org.eclipse.jface.action.MenuManager; +import org.eclipse.jface.action.Separator; + +import org.eclipse.jface.dialogs.MessageDialog; +import org.eclipse.jface.dialogs.ProgressMonitorDialog; + +import org.eclipse.jface.util.LocalSelectionTransfer; + +import org.eclipse.jface.viewers.ColumnWeightData; +import org.eclipse.jface.viewers.ISelection; +import org.eclipse.jface.viewers.ISelectionChangedListener; +import org.eclipse.jface.viewers.ISelectionProvider; +import org.eclipse.jface.viewers.IStructuredSelection; +import org.eclipse.jface.viewers.ListViewer; +import org.eclipse.jface.viewers.SelectionChangedEvent; +import org.eclipse.jface.viewers.StructuredSelection; +import org.eclipse.jface.viewers.StructuredViewer; +import org.eclipse.jface.viewers.TableLayout; +import org.eclipse.jface.viewers.TableViewer; +import org.eclipse.jface.viewers.TreeViewer; +import org.eclipse.jface.viewers.Viewer; + +import org.eclipse.swt.SWT; + +import org.eclipse.swt.custom.CTabFolder; + +import org.eclipse.swt.dnd.DND; +import org.eclipse.swt.dnd.FileTransfer; +import org.eclipse.swt.dnd.Transfer; + +import org.eclipse.swt.events.ControlAdapter; +import org.eclipse.swt.events.ControlEvent; + +import org.eclipse.swt.graphics.Point; + +import org.eclipse.swt.layout.FillLayout; + +import org.eclipse.swt.widgets.Composite; +import org.eclipse.swt.widgets.Menu; +import org.eclipse.swt.widgets.Table; +import org.eclipse.swt.widgets.TableColumn; +import org.eclipse.swt.widgets.Tree; +import org.eclipse.swt.widgets.TreeColumn; + +import org.eclipse.ui.IActionBars; +import org.eclipse.ui.IEditorInput; +import org.eclipse.ui.IEditorPart; +import org.eclipse.ui.IEditorSite; +import org.eclipse.ui.IPartListener; +import org.eclipse.ui.IWorkbenchPart; +import org.eclipse.ui.PartInitException; + +import org.eclipse.ui.dialogs.SaveAsDialog; + +import org.eclipse.ui.ide.IGotoMarker; + +import org.eclipse.ui.part.FileEditorInput; +import org.eclipse.ui.part.MultiPageEditorPart; + +import org.eclipse.ui.views.contentoutline.ContentOutline; +import org.eclipse.ui.views.contentoutline.ContentOutlinePage; +import org.eclipse.ui.views.contentoutline.IContentOutlinePage; + +import org.eclipse.ui.views.properties.IPropertySheetPage; +import org.eclipse.ui.views.properties.PropertySheet; +import org.eclipse.ui.views.properties.PropertySheetPage; + +import org.eclipse.emf.common.command.BasicCommandStack; +import org.eclipse.emf.common.command.Command; +import org.eclipse.emf.common.command.CommandStack; +import org.eclipse.emf.common.command.CommandStackListener; + +import org.eclipse.emf.common.notify.AdapterFactory; +import org.eclipse.emf.common.notify.Notification; + +import org.eclipse.emf.common.ui.MarkerHelper; +import org.eclipse.emf.common.ui.ViewerPane; + +import org.eclipse.emf.common.ui.editor.ProblemEditorPart; + +import org.eclipse.emf.common.ui.viewer.IViewerProvider; + +import org.eclipse.emf.common.util.BasicDiagnostic; +import org.eclipse.emf.common.util.Diagnostic; +import org.eclipse.emf.common.util.URI; + + +import org.eclipse.emf.ecore.resource.Resource; +import org.eclipse.emf.ecore.resource.ResourceSet; + +import org.eclipse.emf.ecore.util.EContentAdapter; +import org.eclipse.emf.ecore.util.EcoreUtil; + +import org.eclipse.emf.edit.domain.AdapterFactoryEditingDomain; +import org.eclipse.emf.edit.domain.EditingDomain; +import org.eclipse.emf.edit.domain.IEditingDomainProvider; + +import org.eclipse.emf.edit.provider.AdapterFactoryItemDelegator; +import org.eclipse.emf.edit.provider.ComposedAdapterFactory; +import org.eclipse.emf.edit.provider.ReflectiveItemProviderAdapterFactory; + +import org.eclipse.emf.edit.provider.resource.ResourceItemProviderAdapterFactory; + +import org.eclipse.emf.edit.ui.action.EditingDomainActionBarContributor; + +import org.eclipse.emf.edit.ui.celleditor.AdapterFactoryTreeEditor; + +import org.eclipse.emf.edit.ui.dnd.EditingDomainViewerDropAdapter; +import org.eclipse.emf.edit.ui.dnd.LocalTransfer; +import org.eclipse.emf.edit.ui.dnd.ViewerDragAdapter; + +import org.eclipse.emf.edit.ui.provider.AdapterFactoryContentProvider; +import org.eclipse.emf.edit.ui.provider.AdapterFactoryLabelProvider; +import org.eclipse.emf.edit.ui.provider.UnwrappingSelectionProvider; + +import org.eclipse.emf.edit.ui.util.EditUIMarkerHelper; +import org.eclipse.emf.edit.ui.util.EditUIUtil; + +import org.eclipse.emf.edit.ui.view.ExtendedPropertySheetPage; + +import fr.obeo.dsl.arduino.provider.ArduinoItemProviderAdapterFactory; + +import org.eclipse.ui.actions.WorkspaceModifyOperation; + + +/** + * This is an example of a Arduino model editor. + * + * + * @generated + */ +public class ArduinoEditor + extends MultiPageEditorPart + implements IEditingDomainProvider, ISelectionProvider, IMenuListener, IViewerProvider, IGotoMarker { + /** + * This keeps track of the editing domain that is used to track all changes to the model. + * + * + * @generated + */ + protected AdapterFactoryEditingDomain editingDomain; + + /** + * This is the one adapter factory used for providing views of the model. + * + * + * @generated + */ + protected ComposedAdapterFactory adapterFactory; + + /** + * This is the content outline page. + * + * + * @generated + */ + protected IContentOutlinePage contentOutlinePage; + + /** + * This is a kludge... + * + * + * @generated + */ + protected IStatusLineManager contentOutlineStatusLineManager; + + /** + * This is the content outline page's viewer. + * + * + * @generated + */ + protected TreeViewer contentOutlineViewer; + + /** + * This is the property sheet page. + * + * + * @generated + */ + protected List propertySheetPages = new ArrayList(); + + /** + * This is the viewer that shadows the selection in the content outline. + * The parent relation must be correctly defined for this to work. + * + * + * @generated + */ + protected TreeViewer selectionViewer; + + /** + * This inverts the roll of parent and child in the content provider and show parents as a tree. + * + * + * @generated + */ + protected TreeViewer parentViewer; + + /** + * This shows how a tree view works. + * + * + * @generated + */ + protected TreeViewer treeViewer; + + /** + * This shows how a list view works. + * A list viewer doesn't support icons. + * + * + * @generated + */ + protected ListViewer listViewer; + + /** + * This shows how a table view works. + * A table can be used as a list with icons. + * + * + * @generated + */ + protected TableViewer tableViewer; + + /** + * This shows how a tree view with columns works. + * + * + * @generated + */ + protected TreeViewer treeViewerWithColumns; + + /** + * This keeps track of the active viewer pane, in the book. + * + * + * @generated + */ + protected ViewerPane currentViewerPane; + + /** + * This keeps track of the active content viewer, which may be either one of the viewers in the pages or the content outline viewer. + * + * + * @generated + */ + protected Viewer currentViewer; + + /** + * This listens to which ever viewer is active. + * + * + * @generated + */ + protected ISelectionChangedListener selectionChangedListener; + + /** + * This keeps track of all the {@link org.eclipse.jface.viewers.ISelectionChangedListener}s that are listening to this editor. + * + * + * @generated + */ + protected Collection selectionChangedListeners = new ArrayList(); + + /** + * This keeps track of the selection of the editor as a whole. + * + * + * @generated + */ + protected ISelection editorSelection = StructuredSelection.EMPTY; + + /** + * The MarkerHelper is responsible for creating workspace resource markers presented + * in Eclipse's Problems View. + * + * + * @generated + */ + protected MarkerHelper markerHelper = new EditUIMarkerHelper(); + + /** + * This listens for when the outline becomes active + * + * + * @generated + */ + protected IPartListener partListener = + new IPartListener() { + public void partActivated(IWorkbenchPart p) { + if (p instanceof ContentOutline) { + if (((ContentOutline)p).getCurrentPage() == contentOutlinePage) { + getActionBarContributor().setActiveEditor(ArduinoEditor.this); + + setCurrentViewer(contentOutlineViewer); + } + } + else if (p instanceof PropertySheet) { + if (propertySheetPages.contains(((PropertySheet)p).getCurrentPage())) { + getActionBarContributor().setActiveEditor(ArduinoEditor.this); + handleActivate(); + } + } + else if (p == ArduinoEditor.this) { + handleActivate(); + } + } + public void partBroughtToTop(IWorkbenchPart p) { + // Ignore. + } + public void partClosed(IWorkbenchPart p) { + // Ignore. + } + public void partDeactivated(IWorkbenchPart p) { + // Ignore. + } + public void partOpened(IWorkbenchPart p) { + // Ignore. + } + }; + + /** + * Resources that have been removed since last activation. + * + * + * @generated + */ + protected Collection removedResources = new ArrayList(); + + /** + * Resources that have been changed since last activation. + * + * + * @generated + */ + protected Collection changedResources = new ArrayList(); + + /** + * Resources that have been saved. + * + * + * @generated + */ + protected Collection savedResources = new ArrayList(); + + /** + * Map to store the diagnostic associated with a resource. + * + * + * @generated + */ + protected Map resourceToDiagnosticMap = new LinkedHashMap(); + + /** + * Controls whether the problem indication should be updated. + * + * + * @generated + */ + protected boolean updateProblemIndication = true; + + /** + * Adapter used to update the problem indication when resources are demanded loaded. + * + * + * @generated + */ + protected EContentAdapter problemIndicationAdapter = + new EContentAdapter() { + @Override + public void notifyChanged(Notification notification) { + if (notification.getNotifier() instanceof Resource) { + switch (notification.getFeatureID(Resource.class)) { + case Resource.RESOURCE__IS_LOADED: + case Resource.RESOURCE__ERRORS: + case Resource.RESOURCE__WARNINGS: { + Resource resource = (Resource)notification.getNotifier(); + Diagnostic diagnostic = analyzeResourceProblems(resource, null); + if (diagnostic.getSeverity() != Diagnostic.OK) { + resourceToDiagnosticMap.put(resource, diagnostic); + } + else { + resourceToDiagnosticMap.remove(resource); + } + + if (updateProblemIndication) { + getSite().getShell().getDisplay().asyncExec + (new Runnable() { + public void run() { + updateProblemIndication(); + } + }); + } + break; + } + } + } + else { + super.notifyChanged(notification); + } + } + + @Override + protected void setTarget(Resource target) { + basicSetTarget(target); + } + + @Override + protected void unsetTarget(Resource target) { + basicUnsetTarget(target); + resourceToDiagnosticMap.remove(target); + if (updateProblemIndication) { + getSite().getShell().getDisplay().asyncExec + (new Runnable() { + public void run() { + updateProblemIndication(); + } + }); + } + } + }; + + /** + * This listens for workspace changes. + * + * + * @generated + */ + protected IResourceChangeListener resourceChangeListener = + new IResourceChangeListener() { + public void resourceChanged(IResourceChangeEvent event) { + IResourceDelta delta = event.getDelta(); + try { + class ResourceDeltaVisitor implements IResourceDeltaVisitor { + protected ResourceSet resourceSet = editingDomain.getResourceSet(); + protected Collection changedResources = new ArrayList(); + protected Collection removedResources = new ArrayList(); + + public boolean visit(IResourceDelta delta) { + if (delta.getResource().getType() == IResource.FILE) { + if (delta.getKind() == IResourceDelta.REMOVED || + delta.getKind() == IResourceDelta.CHANGED && delta.getFlags() != IResourceDelta.MARKERS) { + Resource resource = resourceSet.getResource(URI.createPlatformResourceURI(delta.getFullPath().toString(), true), false); + if (resource != null) { + if (delta.getKind() == IResourceDelta.REMOVED) { + removedResources.add(resource); + } + else if (!savedResources.remove(resource)) { + changedResources.add(resource); + } + } + } + return false; + } + + return true; + } + + public Collection getChangedResources() { + return changedResources; + } + + public Collection getRemovedResources() { + return removedResources; + } + } + + final ResourceDeltaVisitor visitor = new ResourceDeltaVisitor(); + delta.accept(visitor); + + if (!visitor.getRemovedResources().isEmpty()) { + getSite().getShell().getDisplay().asyncExec + (new Runnable() { + public void run() { + removedResources.addAll(visitor.getRemovedResources()); + if (!isDirty()) { + getSite().getPage().closeEditor(ArduinoEditor.this, false); + } + } + }); + } + + if (!visitor.getChangedResources().isEmpty()) { + getSite().getShell().getDisplay().asyncExec + (new Runnable() { + public void run() { + changedResources.addAll(visitor.getChangedResources()); + if (getSite().getPage().getActiveEditor() == ArduinoEditor.this) { + handleActivate(); + } + } + }); + } + } + catch (CoreException exception) { + ArduinoEditorPlugin.INSTANCE.log(exception); + } + } + }; + + /** + * Handles activation of the editor or it's associated views. + * + * + * @generated + */ + protected void handleActivate() { + // Recompute the read only state. + // + if (editingDomain.getResourceToReadOnlyMap() != null) { + editingDomain.getResourceToReadOnlyMap().clear(); + + // Refresh any actions that may become enabled or disabled. + // + setSelection(getSelection()); + } + + if (!removedResources.isEmpty()) { + if (handleDirtyConflict()) { + getSite().getPage().closeEditor(ArduinoEditor.this, false); + } + else { + removedResources.clear(); + changedResources.clear(); + savedResources.clear(); + } + } + else if (!changedResources.isEmpty()) { + changedResources.removeAll(savedResources); + handleChangedResources(); + changedResources.clear(); + savedResources.clear(); + } + } + + /** + * Handles what to do with changed resources on activation. + * + * + * @generated + */ + protected void handleChangedResources() { + if (!changedResources.isEmpty() && (!isDirty() || handleDirtyConflict())) { + if (isDirty()) { + changedResources.addAll(editingDomain.getResourceSet().getResources()); + } + editingDomain.getCommandStack().flush(); + + updateProblemIndication = false; + for (Resource resource : changedResources) { + if (resource.isLoaded()) { + resource.unload(); + try { + resource.load(Collections.EMPTY_MAP); + } + catch (IOException exception) { + if (!resourceToDiagnosticMap.containsKey(resource)) { + resourceToDiagnosticMap.put(resource, analyzeResourceProblems(resource, exception)); + } + } + } + } + + if (AdapterFactoryEditingDomain.isStale(editorSelection)) { + setSelection(StructuredSelection.EMPTY); + } + + updateProblemIndication = true; + updateProblemIndication(); + } + } + + /** + * Updates the problems indication with the information described in the specified diagnostic. + * + * + * @generated + */ + protected void updateProblemIndication() { + if (updateProblemIndication) { + BasicDiagnostic diagnostic = + new BasicDiagnostic + (Diagnostic.OK, + "fr.obeo.dsl.arduino.editor", + 0, + null, + new Object [] { editingDomain.getResourceSet() }); + for (Diagnostic childDiagnostic : resourceToDiagnosticMap.values()) { + if (childDiagnostic.getSeverity() != Diagnostic.OK) { + diagnostic.add(childDiagnostic); + } + } + + int lastEditorPage = getPageCount() - 1; + if (lastEditorPage >= 0 && getEditor(lastEditorPage) instanceof ProblemEditorPart) { + ((ProblemEditorPart)getEditor(lastEditorPage)).setDiagnostic(diagnostic); + if (diagnostic.getSeverity() != Diagnostic.OK) { + setActivePage(lastEditorPage); + } + } + else if (diagnostic.getSeverity() != Diagnostic.OK) { + ProblemEditorPart problemEditorPart = new ProblemEditorPart(); + problemEditorPart.setDiagnostic(diagnostic); + problemEditorPart.setMarkerHelper(markerHelper); + try { + addPage(++lastEditorPage, problemEditorPart, getEditorInput()); + setPageText(lastEditorPage, problemEditorPart.getPartName()); + setActivePage(lastEditorPage); + showTabs(); + } + catch (PartInitException exception) { + ArduinoEditorPlugin.INSTANCE.log(exception); + } + } + + if (markerHelper.hasMarkers(editingDomain.getResourceSet())) { + markerHelper.deleteMarkers(editingDomain.getResourceSet()); + if (diagnostic.getSeverity() != Diagnostic.OK) { + try { + markerHelper.createMarkers(diagnostic); + } + catch (CoreException exception) { + ArduinoEditorPlugin.INSTANCE.log(exception); + } + } + } + } + } + + /** + * Shows a dialog that asks if conflicting changes should be discarded. + * + * + * @generated + */ + protected boolean handleDirtyConflict() { + return + MessageDialog.openQuestion + (getSite().getShell(), + getString("_UI_FileConflict_label"), + getString("_WARN_FileConflict")); + } + + /** + * This creates a model editor. + * + * + * @generated + */ + public ArduinoEditor() { + super(); + initializeEditingDomain(); + } + + /** + * This sets up the editing domain for the model editor. + * + * + * @generated + */ + protected void initializeEditingDomain() { + // Create an adapter factory that yields item providers. + // + adapterFactory = new ComposedAdapterFactory(ComposedAdapterFactory.Descriptor.Registry.INSTANCE); + + adapterFactory.addAdapterFactory(new ResourceItemProviderAdapterFactory()); + adapterFactory.addAdapterFactory(new ArduinoItemProviderAdapterFactory()); + adapterFactory.addAdapterFactory(new ReflectiveItemProviderAdapterFactory()); + + // Create the command stack that will notify this editor as commands are executed. + // + BasicCommandStack commandStack = new BasicCommandStack(); + + // Add a listener to set the most recent command's affected objects to be the selection of the viewer with focus. + // + commandStack.addCommandStackListener + (new CommandStackListener() { + public void commandStackChanged(final EventObject event) { + getContainer().getDisplay().asyncExec + (new Runnable() { + public void run() { + firePropertyChange(IEditorPart.PROP_DIRTY); + + // Try to select the affected objects. + // + Command mostRecentCommand = ((CommandStack)event.getSource()).getMostRecentCommand(); + if (mostRecentCommand != null) { + setSelectionToViewer(mostRecentCommand.getAffectedObjects()); + } + for (Iterator i = propertySheetPages.iterator(); i.hasNext(); ) { + PropertySheetPage propertySheetPage = i.next(); + if (propertySheetPage.getControl().isDisposed()) { + i.remove(); + } + else { + propertySheetPage.refresh(); + } + } + } + }); + } + }); + + // Create the editing domain with a special command stack. + // + editingDomain = new AdapterFactoryEditingDomain(adapterFactory, commandStack, new HashMap()); + } + + /** + * This is here for the listener to be able to call it. + * + * + * @generated + */ + @Override + protected void firePropertyChange(int action) { + super.firePropertyChange(action); + } + + /** + * This sets the selection into whichever viewer is active. + * + * + * @generated + */ + public void setSelectionToViewer(Collection collection) { + final Collection theSelection = collection; + // Make sure it's okay. + // + if (theSelection != null && !theSelection.isEmpty()) { + Runnable runnable = + new Runnable() { + public void run() { + // Try to select the items in the current content viewer of the editor. + // + if (currentViewer != null) { + currentViewer.setSelection(new StructuredSelection(theSelection.toArray()), true); + } + } + }; + getSite().getShell().getDisplay().asyncExec(runnable); + } + } + + /** + * This returns the editing domain as required by the {@link IEditingDomainProvider} interface. + * This is important for implementing the static methods of {@link AdapterFactoryEditingDomain} + * and for supporting {@link org.eclipse.emf.edit.ui.action.CommandAction}. + * + * + * @generated + */ + public EditingDomain getEditingDomain() { + return editingDomain; + } + + /** + * + * + * @generated + */ + public class ReverseAdapterFactoryContentProvider extends AdapterFactoryContentProvider { + /** + * + * + * @generated + */ + public ReverseAdapterFactoryContentProvider(AdapterFactory adapterFactory) { + super(adapterFactory); + } + + /** + * + * + * @generated + */ + @Override + public Object [] getElements(Object object) { + Object parent = super.getParent(object); + return (parent == null ? Collections.EMPTY_SET : Collections.singleton(parent)).toArray(); + } + + /** + * + * + * @generated + */ + @Override + public Object [] getChildren(Object object) { + Object parent = super.getParent(object); + return (parent == null ? Collections.EMPTY_SET : Collections.singleton(parent)).toArray(); + } + + /** + * + * + * @generated + */ + @Override + public boolean hasChildren(Object object) { + Object parent = super.getParent(object); + return parent != null; + } + + /** + * + * + * @generated + */ + @Override + public Object getParent(Object object) { + return null; + } + } + + /** + * + * + * @generated + */ + public void setCurrentViewerPane(ViewerPane viewerPane) { + if (currentViewerPane != viewerPane) { + if (currentViewerPane != null) { + currentViewerPane.showFocus(false); + } + currentViewerPane = viewerPane; + } + setCurrentViewer(currentViewerPane.getViewer()); + } + + /** + * This makes sure that one content viewer, either for the current page or the outline view, if it has focus, + * is the current one. + * + * + * @generated + */ + public void setCurrentViewer(Viewer viewer) { + // If it is changing... + // + if (currentViewer != viewer) { + if (selectionChangedListener == null) { + // Create the listener on demand. + // + selectionChangedListener = + new ISelectionChangedListener() { + // This just notifies those things that are affected by the section. + // + public void selectionChanged(SelectionChangedEvent selectionChangedEvent) { + setSelection(selectionChangedEvent.getSelection()); + } + }; + } + + // Stop listening to the old one. + // + if (currentViewer != null) { + currentViewer.removeSelectionChangedListener(selectionChangedListener); + } + + // Start listening to the new one. + // + if (viewer != null) { + viewer.addSelectionChangedListener(selectionChangedListener); + } + + // Remember it. + // + currentViewer = viewer; + + // Set the editors selection based on the current viewer's selection. + // + setSelection(currentViewer == null ? StructuredSelection.EMPTY : currentViewer.getSelection()); + } + } + + /** + * This returns the viewer as required by the {@link IViewerProvider} interface. + * + * + * @generated + */ + public Viewer getViewer() { + return currentViewer; + } + + /** + * This creates a context menu for the viewer and adds a listener as well registering the menu for extension. + * + * + * @generated + */ + protected void createContextMenuFor(StructuredViewer viewer) { + MenuManager contextMenu = new MenuManager("#PopUp"); + contextMenu.add(new Separator("additions")); + contextMenu.setRemoveAllWhenShown(true); + contextMenu.addMenuListener(this); + Menu menu= contextMenu.createContextMenu(viewer.getControl()); + viewer.getControl().setMenu(menu); + getSite().registerContextMenu(contextMenu, new UnwrappingSelectionProvider(viewer)); + + int dndOperations = DND.DROP_COPY | DND.DROP_MOVE | DND.DROP_LINK; + Transfer[] transfers = new Transfer[] { LocalTransfer.getInstance(), LocalSelectionTransfer.getTransfer(), FileTransfer.getInstance() }; + viewer.addDragSupport(dndOperations, transfers, new ViewerDragAdapter(viewer)); + viewer.addDropSupport(dndOperations, transfers, new EditingDomainViewerDropAdapter(editingDomain, viewer)); + } + + /** + * This is the method called to load a resource into the editing domain's resource set based on the editor's input. + * + * + * @generated + */ + public void createModel() { + URI resourceURI = EditUIUtil.getURI(getEditorInput()); + Exception exception = null; + Resource resource = null; + try { + // Load the resource through the editing domain. + // + resource = editingDomain.getResourceSet().getResource(resourceURI, true); + } + catch (Exception e) { + exception = e; + resource = editingDomain.getResourceSet().getResource(resourceURI, false); + } + + Diagnostic diagnostic = analyzeResourceProblems(resource, exception); + if (diagnostic.getSeverity() != Diagnostic.OK) { + resourceToDiagnosticMap.put(resource, analyzeResourceProblems(resource, exception)); + } + editingDomain.getResourceSet().eAdapters().add(problemIndicationAdapter); + } + + /** + * Returns a diagnostic describing the errors and warnings listed in the resource + * and the specified exception (if any). + * + * + * @generated + */ + public Diagnostic analyzeResourceProblems(Resource resource, Exception exception) { + if (!resource.getErrors().isEmpty() || !resource.getWarnings().isEmpty()) { + BasicDiagnostic basicDiagnostic = + new BasicDiagnostic + (Diagnostic.ERROR, + "fr.obeo.dsl.arduino.editor", + 0, + getString("_UI_CreateModelError_message", resource.getURI()), + new Object [] { exception == null ? (Object)resource : exception }); + basicDiagnostic.merge(EcoreUtil.computeDiagnostic(resource, true)); + return basicDiagnostic; + } + else if (exception != null) { + return + new BasicDiagnostic + (Diagnostic.ERROR, + "fr.obeo.dsl.arduino.editor", + 0, + getString("_UI_CreateModelError_message", resource.getURI()), + new Object[] { exception }); + } + else { + return Diagnostic.OK_INSTANCE; + } + } + + /** + * This is the method used by the framework to install your own controls. + * + * + * @generated + */ + @Override + public void createPages() { + // Creates the model from the editor input + // + createModel(); + + // Only creates the other pages if there is something that can be edited + // + if (!getEditingDomain().getResourceSet().getResources().isEmpty()) { + // Create a page for the selection tree view. + // + { + ViewerPane viewerPane = + new ViewerPane(getSite().getPage(), ArduinoEditor.this) { + @Override + public Viewer createViewer(Composite composite) { + Tree tree = new Tree(composite, SWT.MULTI); + TreeViewer newTreeViewer = new TreeViewer(tree); + return newTreeViewer; + } + @Override + public void requestActivation() { + super.requestActivation(); + setCurrentViewerPane(this); + } + }; + viewerPane.createControl(getContainer()); + + selectionViewer = (TreeViewer)viewerPane.getViewer(); + selectionViewer.setContentProvider(new AdapterFactoryContentProvider(adapterFactory)); + + selectionViewer.setLabelProvider(new AdapterFactoryLabelProvider(adapterFactory)); + selectionViewer.setInput(editingDomain.getResourceSet()); + selectionViewer.setSelection(new StructuredSelection(editingDomain.getResourceSet().getResources().get(0)), true); + viewerPane.setTitle(editingDomain.getResourceSet()); + + new AdapterFactoryTreeEditor(selectionViewer.getTree(), adapterFactory); + + createContextMenuFor(selectionViewer); + int pageIndex = addPage(viewerPane.getControl()); + setPageText(pageIndex, getString("_UI_SelectionPage_label")); + } + + // Create a page for the parent tree view. + // + { + ViewerPane viewerPane = + new ViewerPane(getSite().getPage(), ArduinoEditor.this) { + @Override + public Viewer createViewer(Composite composite) { + Tree tree = new Tree(composite, SWT.MULTI); + TreeViewer newTreeViewer = new TreeViewer(tree); + return newTreeViewer; + } + @Override + public void requestActivation() { + super.requestActivation(); + setCurrentViewerPane(this); + } + }; + viewerPane.createControl(getContainer()); + + parentViewer = (TreeViewer)viewerPane.getViewer(); + parentViewer.setAutoExpandLevel(30); + parentViewer.setContentProvider(new ReverseAdapterFactoryContentProvider(adapterFactory)); + parentViewer.setLabelProvider(new AdapterFactoryLabelProvider(adapterFactory)); + + createContextMenuFor(parentViewer); + int pageIndex = addPage(viewerPane.getControl()); + setPageText(pageIndex, getString("_UI_ParentPage_label")); + } + + // This is the page for the list viewer + // + { + ViewerPane viewerPane = + new ViewerPane(getSite().getPage(), ArduinoEditor.this) { + @Override + public Viewer createViewer(Composite composite) { + return new ListViewer(composite); + } + @Override + public void requestActivation() { + super.requestActivation(); + setCurrentViewerPane(this); + } + }; + viewerPane.createControl(getContainer()); + listViewer = (ListViewer)viewerPane.getViewer(); + listViewer.setContentProvider(new AdapterFactoryContentProvider(adapterFactory)); + listViewer.setLabelProvider(new AdapterFactoryLabelProvider(adapterFactory)); + + createContextMenuFor(listViewer); + int pageIndex = addPage(viewerPane.getControl()); + setPageText(pageIndex, getString("_UI_ListPage_label")); + } + + // This is the page for the tree viewer + // + { + ViewerPane viewerPane = + new ViewerPane(getSite().getPage(), ArduinoEditor.this) { + @Override + public Viewer createViewer(Composite composite) { + return new TreeViewer(composite); + } + @Override + public void requestActivation() { + super.requestActivation(); + setCurrentViewerPane(this); + } + }; + viewerPane.createControl(getContainer()); + treeViewer = (TreeViewer)viewerPane.getViewer(); + treeViewer.setContentProvider(new AdapterFactoryContentProvider(adapterFactory)); + treeViewer.setLabelProvider(new AdapterFactoryLabelProvider(adapterFactory)); + + new AdapterFactoryTreeEditor(treeViewer.getTree(), adapterFactory); + + createContextMenuFor(treeViewer); + int pageIndex = addPage(viewerPane.getControl()); + setPageText(pageIndex, getString("_UI_TreePage_label")); + } + + // This is the page for the table viewer. + // + { + ViewerPane viewerPane = + new ViewerPane(getSite().getPage(), ArduinoEditor.this) { + @Override + public Viewer createViewer(Composite composite) { + return new TableViewer(composite); + } + @Override + public void requestActivation() { + super.requestActivation(); + setCurrentViewerPane(this); + } + }; + viewerPane.createControl(getContainer()); + tableViewer = (TableViewer)viewerPane.getViewer(); + + Table table = tableViewer.getTable(); + TableLayout layout = new TableLayout(); + table.setLayout(layout); + table.setHeaderVisible(true); + table.setLinesVisible(true); + + TableColumn objectColumn = new TableColumn(table, SWT.NONE); + layout.addColumnData(new ColumnWeightData(3, 100, true)); + objectColumn.setText(getString("_UI_ObjectColumn_label")); + objectColumn.setResizable(true); + + TableColumn selfColumn = new TableColumn(table, SWT.NONE); + layout.addColumnData(new ColumnWeightData(2, 100, true)); + selfColumn.setText(getString("_UI_SelfColumn_label")); + selfColumn.setResizable(true); + + tableViewer.setColumnProperties(new String [] {"a", "b"}); + tableViewer.setContentProvider(new AdapterFactoryContentProvider(adapterFactory)); + tableViewer.setLabelProvider(new AdapterFactoryLabelProvider(adapterFactory)); + + createContextMenuFor(tableViewer); + int pageIndex = addPage(viewerPane.getControl()); + setPageText(pageIndex, getString("_UI_TablePage_label")); + } + + // This is the page for the table tree viewer. + // + { + ViewerPane viewerPane = + new ViewerPane(getSite().getPage(), ArduinoEditor.this) { + @Override + public Viewer createViewer(Composite composite) { + return new TreeViewer(composite); + } + @Override + public void requestActivation() { + super.requestActivation(); + setCurrentViewerPane(this); + } + }; + viewerPane.createControl(getContainer()); + + treeViewerWithColumns = (TreeViewer)viewerPane.getViewer(); + + Tree tree = treeViewerWithColumns.getTree(); + tree.setLayoutData(new FillLayout()); + tree.setHeaderVisible(true); + tree.setLinesVisible(true); + + TreeColumn objectColumn = new TreeColumn(tree, SWT.NONE); + objectColumn.setText(getString("_UI_ObjectColumn_label")); + objectColumn.setResizable(true); + objectColumn.setWidth(250); + + TreeColumn selfColumn = new TreeColumn(tree, SWT.NONE); + selfColumn.setText(getString("_UI_SelfColumn_label")); + selfColumn.setResizable(true); + selfColumn.setWidth(200); + + treeViewerWithColumns.setColumnProperties(new String [] {"a", "b"}); + treeViewerWithColumns.setContentProvider(new AdapterFactoryContentProvider(adapterFactory)); + treeViewerWithColumns.setLabelProvider(new AdapterFactoryLabelProvider(adapterFactory)); + + createContextMenuFor(treeViewerWithColumns); + int pageIndex = addPage(viewerPane.getControl()); + setPageText(pageIndex, getString("_UI_TreeWithColumnsPage_label")); + } + + getSite().getShell().getDisplay().asyncExec + (new Runnable() { + public void run() { + setActivePage(0); + } + }); + } + + // Ensures that this editor will only display the page's tab + // area if there are more than one page + // + getContainer().addControlListener + (new ControlAdapter() { + boolean guard = false; + @Override + public void controlResized(ControlEvent event) { + if (!guard) { + guard = true; + hideTabs(); + guard = false; + } + } + }); + + getSite().getShell().getDisplay().asyncExec + (new Runnable() { + public void run() { + updateProblemIndication(); + } + }); + } + + /** + * If there is just one page in the multi-page editor part, + * this hides the single tab at the bottom. + * + * + * @generated + */ + protected void hideTabs() { + if (getPageCount() <= 1) { + setPageText(0, ""); + if (getContainer() instanceof CTabFolder) { + ((CTabFolder)getContainer()).setTabHeight(1); + Point point = getContainer().getSize(); + getContainer().setSize(point.x, point.y + 6); + } + } + } + + /** + * If there is more than one page in the multi-page editor part, + * this shows the tabs at the bottom. + * + * + * @generated + */ + protected void showTabs() { + if (getPageCount() > 1) { + setPageText(0, getString("_UI_SelectionPage_label")); + if (getContainer() instanceof CTabFolder) { + ((CTabFolder)getContainer()).setTabHeight(SWT.DEFAULT); + Point point = getContainer().getSize(); + getContainer().setSize(point.x, point.y - 6); + } + } + } + + /** + * This is used to track the active viewer. + * + * + * @generated + */ + @Override + protected void pageChange(int pageIndex) { + super.pageChange(pageIndex); + + if (contentOutlinePage != null) { + handleContentOutlineSelection(contentOutlinePage.getSelection()); + } + } + + /** + * This is how the framework determines which interfaces we implement. + * + * + * @generated + */ + @SuppressWarnings("rawtypes") + @Override + public Object getAdapter(Class key) { + if (key.equals(IContentOutlinePage.class)) { + return showOutlineView() ? getContentOutlinePage() : null; + } + else if (key.equals(IPropertySheetPage.class)) { + return getPropertySheetPage(); + } + else if (key.equals(IGotoMarker.class)) { + return this; + } + else { + return super.getAdapter(key); + } + } + + /** + * This accesses a cached version of the content outliner. + * + * + * @generated + */ + public IContentOutlinePage getContentOutlinePage() { + if (contentOutlinePage == null) { + // The content outline is just a tree. + // + class MyContentOutlinePage extends ContentOutlinePage { + @Override + public void createControl(Composite parent) { + super.createControl(parent); + contentOutlineViewer = getTreeViewer(); + contentOutlineViewer.addSelectionChangedListener(this); + + // Set up the tree viewer. + // + contentOutlineViewer.setContentProvider(new AdapterFactoryContentProvider(adapterFactory)); + contentOutlineViewer.setLabelProvider(new AdapterFactoryLabelProvider(adapterFactory)); + contentOutlineViewer.setInput(editingDomain.getResourceSet()); + + // Make sure our popups work. + // + createContextMenuFor(contentOutlineViewer); + + if (!editingDomain.getResourceSet().getResources().isEmpty()) { + // Select the root object in the view. + // + contentOutlineViewer.setSelection(new StructuredSelection(editingDomain.getResourceSet().getResources().get(0)), true); + } + } + + @Override + public void makeContributions(IMenuManager menuManager, IToolBarManager toolBarManager, IStatusLineManager statusLineManager) { + super.makeContributions(menuManager, toolBarManager, statusLineManager); + contentOutlineStatusLineManager = statusLineManager; + } + + @Override + public void setActionBars(IActionBars actionBars) { + super.setActionBars(actionBars); + getActionBarContributor().shareGlobalActions(this, actionBars); + } + } + + contentOutlinePage = new MyContentOutlinePage(); + + // Listen to selection so that we can handle it is a special way. + // + contentOutlinePage.addSelectionChangedListener + (new ISelectionChangedListener() { + // This ensures that we handle selections correctly. + // + public void selectionChanged(SelectionChangedEvent event) { + handleContentOutlineSelection(event.getSelection()); + } + }); + } + + return contentOutlinePage; + } + + /** + * This accesses a cached version of the property sheet. + * + * + * @generated + */ + public IPropertySheetPage getPropertySheetPage() { + PropertySheetPage propertySheetPage = + new ExtendedPropertySheetPage(editingDomain) { + @Override + public void setSelectionToViewer(List selection) { + ArduinoEditor.this.setSelectionToViewer(selection); + ArduinoEditor.this.setFocus(); + } + + @Override + public void setActionBars(IActionBars actionBars) { + super.setActionBars(actionBars); + getActionBarContributor().shareGlobalActions(this, actionBars); + } + }; + propertySheetPage.setPropertySourceProvider(new AdapterFactoryContentProvider(adapterFactory)); + propertySheetPages.add(propertySheetPage); + + return propertySheetPage; + } + + /** + * This deals with how we want selection in the outliner to affect the other views. + * + * + * @generated + */ + public void handleContentOutlineSelection(ISelection selection) { + if (currentViewerPane != null && !selection.isEmpty() && selection instanceof IStructuredSelection) { + Iterator selectedElements = ((IStructuredSelection)selection).iterator(); + if (selectedElements.hasNext()) { + // Get the first selected element. + // + Object selectedElement = selectedElements.next(); + + // If it's the selection viewer, then we want it to select the same selection as this selection. + // + if (currentViewerPane.getViewer() == selectionViewer) { + ArrayList selectionList = new ArrayList(); + selectionList.add(selectedElement); + while (selectedElements.hasNext()) { + selectionList.add(selectedElements.next()); + } + + // Set the selection to the widget. + // + selectionViewer.setSelection(new StructuredSelection(selectionList)); + } + else { + // Set the input to the widget. + // + if (currentViewerPane.getViewer().getInput() != selectedElement) { + currentViewerPane.getViewer().setInput(selectedElement); + currentViewerPane.setTitle(selectedElement); + } + } + } + } + } + + /** + * This is for implementing {@link IEditorPart} and simply tests the command stack. + * + * + * @generated + */ + @Override + public boolean isDirty() { + return ((BasicCommandStack)editingDomain.getCommandStack()).isSaveNeeded(); + } + + /** + * This is for implementing {@link IEditorPart} and simply saves the model file. + * + * + * @generated + */ + @Override + public void doSave(IProgressMonitor progressMonitor) { + // Save only resources that have actually changed. + // + final Map saveOptions = new HashMap(); + saveOptions.put(Resource.OPTION_SAVE_ONLY_IF_CHANGED, Resource.OPTION_SAVE_ONLY_IF_CHANGED_MEMORY_BUFFER); + saveOptions.put(Resource.OPTION_LINE_DELIMITER, Resource.OPTION_LINE_DELIMITER_UNSPECIFIED); + + // Do the work within an operation because this is a long running activity that modifies the workbench. + // + WorkspaceModifyOperation operation = + new WorkspaceModifyOperation() { + // This is the method that gets invoked when the operation runs. + // + @Override + public void execute(IProgressMonitor monitor) { + // Save the resources to the file system. + // + boolean first = true; + for (Resource resource : editingDomain.getResourceSet().getResources()) { + if ((first || !resource.getContents().isEmpty() || isPersisted(resource)) && !editingDomain.isReadOnly(resource)) { + try { + long timeStamp = resource.getTimeStamp(); + resource.save(saveOptions); + if (resource.getTimeStamp() != timeStamp) { + savedResources.add(resource); + } + } + catch (Exception exception) { + resourceToDiagnosticMap.put(resource, analyzeResourceProblems(resource, exception)); + } + first = false; + } + } + } + }; + + updateProblemIndication = false; + try { + // This runs the options, and shows progress. + // + new ProgressMonitorDialog(getSite().getShell()).run(true, false, operation); + + // Refresh the necessary state. + // + ((BasicCommandStack)editingDomain.getCommandStack()).saveIsDone(); + firePropertyChange(IEditorPart.PROP_DIRTY); + } + catch (Exception exception) { + // Something went wrong that shouldn't. + // + ArduinoEditorPlugin.INSTANCE.log(exception); + } + updateProblemIndication = true; + updateProblemIndication(); + } + + /** + * This returns whether something has been persisted to the URI of the specified resource. + * The implementation uses the URI converter from the editor's resource set to try to open an input stream. + * + * + * @generated + */ + protected boolean isPersisted(Resource resource) { + boolean result = false; + try { + InputStream stream = editingDomain.getResourceSet().getURIConverter().createInputStream(resource.getURI()); + if (stream != null) { + result = true; + stream.close(); + } + } + catch (IOException e) { + // Ignore + } + return result; + } + + /** + * This always returns true because it is not currently supported. + * + * + * @generated + */ + @Override + public boolean isSaveAsAllowed() { + return true; + } + + /** + * This also changes the editor's input. + * + * + * @generated + */ + @Override + public void doSaveAs() { + SaveAsDialog saveAsDialog = new SaveAsDialog(getSite().getShell()); + saveAsDialog.open(); + IPath path = saveAsDialog.getResult(); + if (path != null) { + IFile file = ResourcesPlugin.getWorkspace().getRoot().getFile(path); + if (file != null) { + doSaveAs(URI.createPlatformResourceURI(file.getFullPath().toString(), true), new FileEditorInput(file)); + } + } + } + + /** + * + * + * @generated + */ + protected void doSaveAs(URI uri, IEditorInput editorInput) { + (editingDomain.getResourceSet().getResources().get(0)).setURI(uri); + setInputWithNotify(editorInput); + setPartName(editorInput.getName()); + IProgressMonitor progressMonitor = + getActionBars().getStatusLineManager() != null ? + getActionBars().getStatusLineManager().getProgressMonitor() : + new NullProgressMonitor(); + doSave(progressMonitor); + } + + /** + * + * + * @generated + */ + public void gotoMarker(IMarker marker) { + List targetObjects = markerHelper.getTargetObjects(editingDomain, marker); + if (!targetObjects.isEmpty()) { + setSelectionToViewer(targetObjects); + } + } + + /** + * This is called during startup. + * + * + * @generated + */ + @Override + public void init(IEditorSite site, IEditorInput editorInput) { + setSite(site); + setInputWithNotify(editorInput); + setPartName(editorInput.getName()); + site.setSelectionProvider(this); + site.getPage().addPartListener(partListener); + ResourcesPlugin.getWorkspace().addResourceChangeListener(resourceChangeListener, IResourceChangeEvent.POST_CHANGE); + } + + /** + * + * + * @generated + */ + @Override + public void setFocus() { + if (currentViewerPane != null) { + currentViewerPane.setFocus(); + } + else { + getControl(getActivePage()).setFocus(); + } + } + + /** + * This implements {@link org.eclipse.jface.viewers.ISelectionProvider}. + * + * + * @generated + */ + public void addSelectionChangedListener(ISelectionChangedListener listener) { + selectionChangedListeners.add(listener); + } + + /** + * This implements {@link org.eclipse.jface.viewers.ISelectionProvider}. + * + * + * @generated + */ + public void removeSelectionChangedListener(ISelectionChangedListener listener) { + selectionChangedListeners.remove(listener); + } + + /** + * This implements {@link org.eclipse.jface.viewers.ISelectionProvider} to return this editor's overall selection. + * + * + * @generated + */ + public ISelection getSelection() { + return editorSelection; + } + + /** + * This implements {@link org.eclipse.jface.viewers.ISelectionProvider} to set this editor's overall selection. + * Calling this result will notify the listeners. + * + * + * @generated + */ + public void setSelection(ISelection selection) { + editorSelection = selection; + + for (ISelectionChangedListener listener : selectionChangedListeners) { + listener.selectionChanged(new SelectionChangedEvent(this, selection)); + } + setStatusLineManager(selection); + } + + /** + * + * + * @generated + */ + public void setStatusLineManager(ISelection selection) { + IStatusLineManager statusLineManager = currentViewer != null && currentViewer == contentOutlineViewer ? + contentOutlineStatusLineManager : getActionBars().getStatusLineManager(); + + if (statusLineManager != null) { + if (selection instanceof IStructuredSelection) { + Collection collection = ((IStructuredSelection)selection).toList(); + switch (collection.size()) { + case 0: { + statusLineManager.setMessage(getString("_UI_NoObjectSelected")); + break; + } + case 1: { + String text = new AdapterFactoryItemDelegator(adapterFactory).getText(collection.iterator().next()); + statusLineManager.setMessage(getString("_UI_SingleObjectSelected", text)); + break; + } + default: { + statusLineManager.setMessage(getString("_UI_MultiObjectSelected", Integer.toString(collection.size()))); + break; + } + } + } + else { + statusLineManager.setMessage(""); + } + } + } + + /** + * This looks up a string in the plugin's plugin.properties file. + * + * + * @generated + */ + private static String getString(String key) { + return ArduinoEditorPlugin.INSTANCE.getString(key); + } + + /** + * This looks up a string in plugin.properties, making a substitution. + * + * + * @generated + */ + private static String getString(String key, Object s1) { + return ArduinoEditorPlugin.INSTANCE.getString(key, new Object [] { s1 }); + } + + /** + * This implements {@link org.eclipse.jface.action.IMenuListener} to help fill the context menus with contributions from the Edit menu. + * + * + * @generated + */ + public void menuAboutToShow(IMenuManager menuManager) { + ((IMenuListener)getEditorSite().getActionBarContributor()).menuAboutToShow(menuManager); + } + + /** + * + * + * @generated + */ + public EditingDomainActionBarContributor getActionBarContributor() { + return (EditingDomainActionBarContributor)getEditorSite().getActionBarContributor(); + } + + /** + * + * + * @generated + */ + public IActionBars getActionBars() { + return getActionBarContributor().getActionBars(); + } + + /** + * + * + * @generated + */ + public AdapterFactory getAdapterFactory() { + return adapterFactory; + } + + /** + * + * + * @generated + */ + @Override + public void dispose() { + updateProblemIndication = false; + + ResourcesPlugin.getWorkspace().removeResourceChangeListener(resourceChangeListener); + + getSite().getPage().removePartListener(partListener); + + adapterFactory.dispose(); + + if (getActionBarContributor().getActiveEditor() == this) { + getActionBarContributor().setActiveEditor(null); + } + + for (PropertySheetPage propertySheetPage : propertySheetPages) { + propertySheetPage.dispose(); + } + + if (contentOutlinePage != null) { + contentOutlinePage.dispose(); + } + + super.dispose(); + } + + /** + * Returns whether the outline view should be presented to the user. + * + * + * @generated + */ + protected boolean showOutlineView() { + return true; + } +} diff --git a/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.editor/src-gen/fr/obeo/dsl/arduino/presentation/ArduinoEditorPlugin.java b/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.editor/src-gen/fr/obeo/dsl/arduino/presentation/ArduinoEditorPlugin.java new file mode 100644 index 00000000..4a9e2a35 --- /dev/null +++ b/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.editor/src-gen/fr/obeo/dsl/arduino/presentation/ArduinoEditorPlugin.java @@ -0,0 +1,99 @@ +/** + * Copyright (c) 2013 Obeo. + * 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: + * Obeo - initial API and implementation + */ +package fr.obeo.dsl.arduino.presentation; + +import org.eclipse.emf.common.EMFPlugin; + +import org.eclipse.emf.common.ui.EclipseUIPlugin; + +import org.eclipse.emf.common.util.ResourceLocator; + +/** + * This is the central singleton for the Arduino editor plugin. + * + * + * @generated + */ +public final class ArduinoEditorPlugin extends EMFPlugin { + /** + * Keep track of the singleton. + * + * + * @generated + */ + public static final ArduinoEditorPlugin INSTANCE = new ArduinoEditorPlugin(); + + /** + * Keep track of the singleton. + * + * + * @generated + */ + private static Implementation plugin; + + /** + * Create the instance. + * + * + * @generated + */ + public ArduinoEditorPlugin() { + super + (new ResourceLocator [] { + }); + } + + /** + * Returns the singleton instance of the Eclipse plugin. + * + * + * @return the singleton instance. + * @generated + */ + @Override + public ResourceLocator getPluginResourceLocator() { + return plugin; + } + + /** + * Returns the singleton instance of the Eclipse plugin. + * + * + * @return the singleton instance. + * @generated + */ + public static Implementation getPlugin() { + return plugin; + } + + /** + * The actual implementation of the Eclipse Plugin. + * + * + * @generated + */ + public static class Implementation extends EclipseUIPlugin { + /** + * Creates an instance. + * + * + * @generated + */ + public Implementation() { + super(); + + // Remember the static instance. + // + plugin = this; + } + } + +} diff --git a/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.editor/src-gen/fr/obeo/dsl/arduino/presentation/ArduinoModelWizard.java b/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.editor/src-gen/fr/obeo/dsl/arduino/presentation/ArduinoModelWizard.java new file mode 100644 index 00000000..573f41bb --- /dev/null +++ b/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.editor/src-gen/fr/obeo/dsl/arduino/presentation/ArduinoModelWizard.java @@ -0,0 +1,636 @@ +/** + * Copyright (c) 2013 Obeo. + * 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: + * Obeo - initial API and implementation + */ +package fr.obeo.dsl.arduino.presentation; + + +import java.util.ArrayList; +import java.util.Arrays; +import java.util.Collection; +import java.util.Collections; +import java.util.HashMap; +import java.util.List; +import java.util.Map; +import java.util.MissingResourceException; +import java.util.StringTokenizer; + +import org.eclipse.emf.common.CommonPlugin; + +import org.eclipse.emf.common.util.URI; + +import org.eclipse.emf.ecore.EClass; +import org.eclipse.emf.ecore.EClassifier; + +import org.eclipse.emf.ecore.resource.Resource; +import org.eclipse.emf.ecore.resource.ResourceSet; + +import org.eclipse.emf.ecore.resource.impl.ResourceSetImpl; + +import org.eclipse.emf.ecore.EObject; + +import org.eclipse.emf.ecore.xmi.XMLResource; + +import org.eclipse.emf.edit.ui.provider.ExtendedImageRegistry; + +import org.eclipse.core.resources.IContainer; +import org.eclipse.core.resources.IFile; +import org.eclipse.core.resources.IFolder; +import org.eclipse.core.resources.IProject; +import org.eclipse.core.resources.IResource; +import org.eclipse.core.resources.ResourcesPlugin; + +import org.eclipse.core.runtime.IProgressMonitor; + +import org.eclipse.jface.dialogs.MessageDialog; + +import org.eclipse.jface.viewers.IStructuredSelection; + +import org.eclipse.jface.wizard.Wizard; +import org.eclipse.jface.wizard.WizardPage; + +import org.eclipse.swt.SWT; + +import org.eclipse.swt.events.ModifyListener; +import org.eclipse.swt.events.ModifyEvent; + +import org.eclipse.swt.layout.GridData; +import org.eclipse.swt.layout.GridLayout; + +import org.eclipse.swt.widgets.Combo; +import org.eclipse.swt.widgets.Composite; +import org.eclipse.swt.widgets.Label; + +import org.eclipse.ui.INewWizard; +import org.eclipse.ui.IWorkbench; + +import org.eclipse.ui.actions.WorkspaceModifyOperation; + +import org.eclipse.ui.dialogs.WizardNewFileCreationPage; + +import org.eclipse.ui.part.FileEditorInput; +import org.eclipse.ui.part.ISetSelectionTarget; + +import fr.obeo.dsl.arduino.ArduinoFactory; +import fr.obeo.dsl.arduino.ArduinoPackage; +import fr.obeo.dsl.arduino.provider.ArduinoEditPlugin; + + +import org.eclipse.core.runtime.Path; + +import org.eclipse.jface.viewers.ISelection; +import org.eclipse.jface.viewers.StructuredSelection; + +import org.eclipse.ui.IWorkbenchPage; +import org.eclipse.ui.IWorkbenchPart; +import org.eclipse.ui.IWorkbenchWindow; +import org.eclipse.ui.PartInitException; + + +/** + * This is a simple wizard for creating a new model file. + * + * + * @generated + */ +public class ArduinoModelWizard extends Wizard implements INewWizard { + /** + * The supported extensions for created files. + * + * + * @generated + */ + public static final List FILE_EXTENSIONS = + Collections.unmodifiableList(Arrays.asList(ArduinoEditorPlugin.INSTANCE.getString("_UI_ArduinoEditorFilenameExtensions").split("\\s*,\\s*"))); + + /** + * A formatted list of supported file extensions, suitable for display. + * + * + * @generated + */ + public static final String FORMATTED_FILE_EXTENSIONS = + ArduinoEditorPlugin.INSTANCE.getString("_UI_ArduinoEditorFilenameExtensions").replaceAll("\\s*,\\s*", ", "); + + /** + * This caches an instance of the model package. + * + * + * @generated + */ + protected ArduinoPackage arduinoPackage = ArduinoPackage.eINSTANCE; + + /** + * This caches an instance of the model factory. + * + * + * @generated + */ + protected ArduinoFactory arduinoFactory = arduinoPackage.getArduinoFactory(); + + /** + * This is the file creation page. + * + * + * @generated + */ + protected ArduinoModelWizardNewFileCreationPage newFileCreationPage; + + /** + * This is the initial object creation page. + * + * + * @generated + */ + protected ArduinoModelWizardInitialObjectCreationPage initialObjectCreationPage; + + /** + * Remember the selection during initialization for populating the default container. + * + * + * @generated + */ + protected IStructuredSelection selection; + + /** + * Remember the workbench during initialization. + * + * + * @generated + */ + protected IWorkbench workbench; + + /** + * Caches the names of the types that can be created as the root object. + * + * + * @generated + */ + protected List initialObjectNames; + + /** + * This just records the information. + * + * + * @generated + */ + public void init(IWorkbench workbench, IStructuredSelection selection) { + this.workbench = workbench; + this.selection = selection; + setWindowTitle(ArduinoEditorPlugin.INSTANCE.getString("_UI_Wizard_label")); + setDefaultPageImageDescriptor(ExtendedImageRegistry.INSTANCE.getImageDescriptor(ArduinoEditorPlugin.INSTANCE.getImage("full/wizban/NewArduino"))); + } + + /** + * Returns the names of the types that can be created as the root object. + * + * + * @generated + */ + protected Collection getInitialObjectNames() { + if (initialObjectNames == null) { + initialObjectNames = new ArrayList(); + for (EClassifier eClassifier : arduinoPackage.getEClassifiers()) { + if (eClassifier instanceof EClass) { + EClass eClass = (EClass)eClassifier; + if (!eClass.isAbstract()) { + initialObjectNames.add(eClass.getName()); + } + } + } + Collections.sort(initialObjectNames, CommonPlugin.INSTANCE.getComparator()); + } + return initialObjectNames; + } + + /** + * Create a new model. + * + * + * @generated + */ + protected EObject createInitialModel() { + EClass eClass = (EClass)arduinoPackage.getEClassifier(initialObjectCreationPage.getInitialObjectName()); + EObject rootObject = arduinoFactory.create(eClass); + return rootObject; + } + + /** + * Do the work after everything is specified. + * + * + * @generated + */ + @Override + public boolean performFinish() { + try { + // Remember the file. + // + final IFile modelFile = getModelFile(); + + // Do the work within an operation. + // + WorkspaceModifyOperation operation = + new WorkspaceModifyOperation() { + @Override + protected void execute(IProgressMonitor progressMonitor) { + try { + // Create a resource set + // + ResourceSet resourceSet = new ResourceSetImpl(); + + // Get the URI of the model file. + // + URI fileURI = URI.createPlatformResourceURI(modelFile.getFullPath().toString(), true); + + // Create a resource for this file. + // + Resource resource = resourceSet.createResource(fileURI); + + // Add the initial model object to the contents. + // + EObject rootObject = createInitialModel(); + if (rootObject != null) { + resource.getContents().add(rootObject); + } + + // Save the contents of the resource to the file system. + // + Map options = new HashMap(); + options.put(XMLResource.OPTION_ENCODING, initialObjectCreationPage.getEncoding()); + resource.save(options); + } + catch (Exception exception) { + ArduinoEditorPlugin.INSTANCE.log(exception); + } + finally { + progressMonitor.done(); + } + } + }; + + getContainer().run(false, false, operation); + + // Select the new file resource in the current view. + // + IWorkbenchWindow workbenchWindow = workbench.getActiveWorkbenchWindow(); + IWorkbenchPage page = workbenchWindow.getActivePage(); + final IWorkbenchPart activePart = page.getActivePart(); + if (activePart instanceof ISetSelectionTarget) { + final ISelection targetSelection = new StructuredSelection(modelFile); + getShell().getDisplay().asyncExec + (new Runnable() { + public void run() { + ((ISetSelectionTarget)activePart).selectReveal(targetSelection); + } + }); + } + + // Open an editor on the new file. + // + try { + page.openEditor + (new FileEditorInput(modelFile), + workbench.getEditorRegistry().getDefaultEditor(modelFile.getFullPath().toString()).getId()); + } + catch (PartInitException exception) { + MessageDialog.openError(workbenchWindow.getShell(), ArduinoEditorPlugin.INSTANCE.getString("_UI_OpenEditorError_label"), exception.getMessage()); + return false; + } + + return true; + } + catch (Exception exception) { + ArduinoEditorPlugin.INSTANCE.log(exception); + return false; + } + } + + /** + * This is the one page of the wizard. + * + * + * @generated + */ + public class ArduinoModelWizardNewFileCreationPage extends WizardNewFileCreationPage { + /** + * Pass in the selection. + * + * + * @generated + */ + public ArduinoModelWizardNewFileCreationPage(String pageId, IStructuredSelection selection) { + super(pageId, selection); + } + + /** + * The framework calls this to see if the file is correct. + * + * + * @generated + */ + @Override + protected boolean validatePage() { + if (super.validatePage()) { + String extension = new Path(getFileName()).getFileExtension(); + if (extension == null || !FILE_EXTENSIONS.contains(extension)) { + String key = FILE_EXTENSIONS.size() > 1 ? "_WARN_FilenameExtensions" : "_WARN_FilenameExtension"; + setErrorMessage(ArduinoEditorPlugin.INSTANCE.getString(key, new Object [] { FORMATTED_FILE_EXTENSIONS })); + return false; + } + return true; + } + return false; + } + + /** + * + * + * @generated + */ + public IFile getModelFile() { + return ResourcesPlugin.getWorkspace().getRoot().getFile(getContainerFullPath().append(getFileName())); + } + } + + /** + * This is the page where the type of object to create is selected. + * + * + * @generated + */ + public class ArduinoModelWizardInitialObjectCreationPage extends WizardPage { + /** + * + * + * @generated + */ + protected Combo initialObjectField; + + /** + * @generated + * + * + */ + protected List encodings; + + /** + * + * + * @generated + */ + protected Combo encodingField; + + /** + * Pass in the selection. + * + * + * @generated + */ + public ArduinoModelWizardInitialObjectCreationPage(String pageId) { + super(pageId); + } + + /** + * + * + * @generated + */ + public void createControl(Composite parent) { + Composite composite = new Composite(parent, SWT.NONE); + { + GridLayout layout = new GridLayout(); + layout.numColumns = 1; + layout.verticalSpacing = 12; + composite.setLayout(layout); + + GridData data = new GridData(); + data.verticalAlignment = GridData.FILL; + data.grabExcessVerticalSpace = true; + data.horizontalAlignment = GridData.FILL; + composite.setLayoutData(data); + } + + Label containerLabel = new Label(composite, SWT.LEFT); + { + containerLabel.setText(ArduinoEditorPlugin.INSTANCE.getString("_UI_ModelObject")); + + GridData data = new GridData(); + data.horizontalAlignment = GridData.FILL; + containerLabel.setLayoutData(data); + } + + initialObjectField = new Combo(composite, SWT.BORDER); + { + GridData data = new GridData(); + data.horizontalAlignment = GridData.FILL; + data.grabExcessHorizontalSpace = true; + initialObjectField.setLayoutData(data); + } + + for (String objectName : getInitialObjectNames()) { + initialObjectField.add(getLabel(objectName)); + } + + if (initialObjectField.getItemCount() == 1) { + initialObjectField.select(0); + } + initialObjectField.addModifyListener(validator); + + Label encodingLabel = new Label(composite, SWT.LEFT); + { + encodingLabel.setText(ArduinoEditorPlugin.INSTANCE.getString("_UI_XMLEncoding")); + + GridData data = new GridData(); + data.horizontalAlignment = GridData.FILL; + encodingLabel.setLayoutData(data); + } + encodingField = new Combo(composite, SWT.BORDER); + { + GridData data = new GridData(); + data.horizontalAlignment = GridData.FILL; + data.grabExcessHorizontalSpace = true; + encodingField.setLayoutData(data); + } + + for (String encoding : getEncodings()) { + encodingField.add(encoding); + } + + encodingField.select(0); + encodingField.addModifyListener(validator); + + setPageComplete(validatePage()); + setControl(composite); + } + + /** + * + * + * @generated + */ + protected ModifyListener validator = + new ModifyListener() { + public void modifyText(ModifyEvent e) { + setPageComplete(validatePage()); + } + }; + + /** + * + * + * @generated + */ + protected boolean validatePage() { + return getInitialObjectName() != null && getEncodings().contains(encodingField.getText()); + } + + /** + * + * + * @generated + */ + @Override + public void setVisible(boolean visible) { + super.setVisible(visible); + if (visible) { + if (initialObjectField.getItemCount() == 1) { + initialObjectField.clearSelection(); + encodingField.setFocus(); + } + else { + encodingField.clearSelection(); + initialObjectField.setFocus(); + } + } + } + + /** + * + * + * @generated + */ + public String getInitialObjectName() { + String label = initialObjectField.getText(); + + for (String name : getInitialObjectNames()) { + if (getLabel(name).equals(label)) { + return name; + } + } + return null; + } + + /** + * + * + * @generated + */ + public String getEncoding() { + return encodingField.getText(); + } + + /** + * Returns the label for the specified type name. + * + * + * @generated + */ + protected String getLabel(String typeName) { + try { + return ArduinoEditPlugin.INSTANCE.getString("_UI_" + typeName + "_type"); + } + catch(MissingResourceException mre) { + ArduinoEditorPlugin.INSTANCE.log(mre); + } + return typeName; + } + + /** + * + * + * @generated + */ + protected Collection getEncodings() { + if (encodings == null) { + encodings = new ArrayList(); + for (StringTokenizer stringTokenizer = new StringTokenizer(ArduinoEditorPlugin.INSTANCE.getString("_UI_XMLEncodingChoices")); stringTokenizer.hasMoreTokens(); ) { + encodings.add(stringTokenizer.nextToken()); + } + } + return encodings; + } + } + + /** + * The framework calls this to create the contents of the wizard. + * + * + * @generated + */ + @Override + public void addPages() { + // Create a page, set the title, and the initial model file name. + // + newFileCreationPage = new ArduinoModelWizardNewFileCreationPage("Whatever", selection); + newFileCreationPage.setTitle(ArduinoEditorPlugin.INSTANCE.getString("_UI_ArduinoModelWizard_label")); + newFileCreationPage.setDescription(ArduinoEditorPlugin.INSTANCE.getString("_UI_ArduinoModelWizard_description")); + newFileCreationPage.setFileName(ArduinoEditorPlugin.INSTANCE.getString("_UI_ArduinoEditorFilenameDefaultBase") + "." + FILE_EXTENSIONS.get(0)); + addPage(newFileCreationPage); + + // Try and get the resource selection to determine a current directory for the file dialog. + // + if (selection != null && !selection.isEmpty()) { + // Get the resource... + // + Object selectedElement = selection.iterator().next(); + if (selectedElement instanceof IResource) { + // Get the resource parent, if its a file. + // + IResource selectedResource = (IResource)selectedElement; + if (selectedResource.getType() == IResource.FILE) { + selectedResource = selectedResource.getParent(); + } + + // This gives us a directory... + // + if (selectedResource instanceof IFolder || selectedResource instanceof IProject) { + // Set this for the container. + // + newFileCreationPage.setContainerFullPath(selectedResource.getFullPath()); + + // Make up a unique new name here. + // + String defaultModelBaseFilename = ArduinoEditorPlugin.INSTANCE.getString("_UI_ArduinoEditorFilenameDefaultBase"); + String defaultModelFilenameExtension = FILE_EXTENSIONS.get(0); + String modelFilename = defaultModelBaseFilename + "." + defaultModelFilenameExtension; + for (int i = 1; ((IContainer)selectedResource).findMember(modelFilename) != null; ++i) { + modelFilename = defaultModelBaseFilename + i + "." + defaultModelFilenameExtension; + } + newFileCreationPage.setFileName(modelFilename); + } + } + } + initialObjectCreationPage = new ArduinoModelWizardInitialObjectCreationPage("Whatever2"); + initialObjectCreationPage.setTitle(ArduinoEditorPlugin.INSTANCE.getString("_UI_ArduinoModelWizard_label")); + initialObjectCreationPage.setDescription(ArduinoEditorPlugin.INSTANCE.getString("_UI_Wizard_initial_object_description")); + addPage(initialObjectCreationPage); + } + + /** + * Get the file from the page. + * + * + * @generated + */ + public IFile getModelFile() { + return newFileCreationPage.getModelFile(); + } + +} diff --git a/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.gen.ui/.classpath b/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.gen.ui/.classpath new file mode 100644 index 00000000..64c5e31b --- /dev/null +++ b/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.gen.ui/.classpath @@ -0,0 +1,7 @@ + + + + + + + diff --git a/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.gen.ui/.project b/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.gen.ui/.project new file mode 100644 index 00000000..0e157150 --- /dev/null +++ b/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.gen.ui/.project @@ -0,0 +1,28 @@ + + + fr.obeo.dsl.arduino.gen.ui + + + + + + org.eclipse.jdt.core.javabuilder + + + + + org.eclipse.pde.ManifestBuilder + + + + + org.eclipse.pde.SchemaBuilder + + + + + + org.eclipse.pde.PluginNature + org.eclipse.jdt.core.javanature + + diff --git a/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.gen.ui/.settings/org.eclipse.jdt.core.prefs b/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.gen.ui/.settings/org.eclipse.jdt.core.prefs new file mode 100644 index 00000000..d1c0bf94 --- /dev/null +++ b/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.gen.ui/.settings/org.eclipse.jdt.core.prefs @@ -0,0 +1,6 @@ +eclipse.preferences.version=1 +org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.5 +org.eclipse.jdt.core.compiler.compliance=1.5 +org.eclipse.jdt.core.compiler.problem.assertIdentifier=error +org.eclipse.jdt.core.compiler.problem.enumIdentifier=error +org.eclipse.jdt.core.compiler.source=1.5 diff --git a/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.gen.ui/META-INF/MANIFEST.MF b/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.gen.ui/META-INF/MANIFEST.MF new file mode 100644 index 00000000..a0cd1bca --- /dev/null +++ b/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.gen.ui/META-INF/MANIFEST.MF @@ -0,0 +1,23 @@ +Manifest-Version: 1.0 +Bundle-ManifestVersion: 2 +Bundle-Name: Acceleo Gen Module IDE Plug-in +Bundle-SymbolicName: fr.obeo.dsl.arduino.gen.ui;singleton:=true +Bundle-Version: 1.0.0.qualifier +Bundle-Activator: fr.obeo.dsl.arduino.gen.ui.Activator +Bundle-Vendor: Eclipse Modeling Project +Require-Bundle: org.eclipse.ui, + org.eclipse.core.runtime, + org.eclipse.core.resources, + fr.obeo.dsl.arduino.gen, + org.eclipse.emf.ecore, + org.eclipse.emf.ecore.xmi, + org.eclipse.ocl, + org.eclipse.ocl.ecore, + org.eclipse.acceleo.model, + org.eclipse.acceleo.engine +Bundle-RequiredExecutionEnvironment: J2SE-1.5 +Bundle-ActivationPolicy: lazy +Eclipse-LazyStart: true +Export-Package: fr.obeo.dsl.arduino.gen.ui, + fr.obeo.dsl.arduino.gen.ui.common, + fr.obeo.dsl.arduino.gen.ui.popupMenus diff --git a/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.gen.ui/build.properties b/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.gen.ui/build.properties new file mode 100644 index 00000000..d0a0e71d --- /dev/null +++ b/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.gen.ui/build.properties @@ -0,0 +1,7 @@ +source.. = src/ +output.. = bin/ +bin.includes = META-INF/,\ + .,\ + plugin.xml,\ + icons/ + diff --git a/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.gen.ui/icons/default.gif b/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.gen.ui/icons/default.gif new file mode 100644 index 0000000000000000000000000000000000000000..6a04c491b290f805a98268a5aa363be0fccf128f GIT binary patch literal 534 zcmZ?wbhEHb6krfwI2OaeTA#w%m?qeoBi~)3+Fz+Yp~`Mnm+QPf-^G*tmP~4$vaxIW zx`-7s`(~_)S~a_S=C;_?^QO#R)<1XWgt*sjqB#@TGzg3UCW+ztxdak>|Niq zdwoaKp6%N<%sjZEZpMzy2RAm(+_9~7-}c>`rXJf=HE-vZ&i#9*96mPX$k7wKCLGy4 zXWG%@NB7J=zGueqJu^@4opEH}%DE>_%{zH!{>ii34qe-M`0Ab`m-ijJxcuzp1IN#w zI&=KYnPX?p9^G=~_SP%6wqCit + + + + + + + + + + + diff --git a/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.gen.ui/src/fr/obeo/dsl/arduino/gen/ui/Activator.java b/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.gen.ui/src/fr/obeo/dsl/arduino/gen/ui/Activator.java new file mode 100644 index 00000000..194fd45e --- /dev/null +++ b/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.gen.ui/src/fr/obeo/dsl/arduino/gen/ui/Activator.java @@ -0,0 +1,66 @@ +/******************************************************************************* + * Copyright (c) 2008, 2012 Obeo. + * 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: + * Obeo - initial API and implementation + *******************************************************************************/ +package fr.obeo.dsl.arduino.gen.ui; + +import org.eclipse.ui.plugin.AbstractUIPlugin; +import org.osgi.framework.BundleContext; + +/** + * The activator class controls the plug-in life cycle. + */ +public class Activator extends AbstractUIPlugin { + + /** + * The plug-in ID. + */ + public static final String PLUGIN_ID = "fr.obeo.dsl.arduino.gen.ui"; + + /** + * The shared instance. + */ + private static Activator plugin; + + /** + * The constructor. + */ + public Activator() { + } + + /**{@inheritDoc} + * + * @see org.eclipse.core.runtime.Plugin#start(org.osgi.framework.BundleContext) + * @generated + */ + public void start(BundleContext context) throws Exception { + super.start(context); + plugin = this; + } + + /**{@inheritDoc} + * + * @see org.eclipse.core.runtime.Plugin#stop(org.osgi.framework.BundleContext) + * @generated + */ + public void stop(BundleContext context) throws Exception { + plugin = null; + super.stop(context); + } + + /** + * Returns the shared instance. + * + * @return the shared instance + */ + public static Activator getDefault() { + return plugin; + } + +} diff --git a/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.gen.ui/src/fr/obeo/dsl/arduino/gen/ui/common/GenerateAll.java b/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.gen.ui/src/fr/obeo/dsl/arduino/gen/ui/common/GenerateAll.java new file mode 100644 index 00000000..bf9fbc90 --- /dev/null +++ b/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.gen.ui/src/fr/obeo/dsl/arduino/gen/ui/common/GenerateAll.java @@ -0,0 +1,148 @@ +/******************************************************************************* + * Copyright (c) 2008, 2012 Obeo. + * 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: + * Obeo - initial API and implementation + *******************************************************************************/ +package fr.obeo.dsl.arduino.gen.ui.common; + +import java.io.IOException; +import java.net.URL; +import java.util.ArrayList; +import java.util.Enumeration; +import java.util.List; + +import org.eclipse.emf.common.util.BasicMonitor; +import org.eclipse.core.resources.IContainer; +import org.eclipse.core.runtime.IPath; +import org.eclipse.core.runtime.IProgressMonitor; +import org.eclipse.core.runtime.Path; +import org.eclipse.core.runtime.Platform; +import org.eclipse.emf.common.util.URI; +import org.osgi.framework.Bundle; + + +/** + * Main entry point of the 'Gen' generation module. + */ +public class GenerateAll { + + /** + * The model URI. + */ + private URI modelURI; + + /** + * The output folder. + */ + private IContainer targetFolder; + + /** + * The other arguments. + */ + List arguments; + + /** + * Constructor. + * + * @param modelURI + * is the URI of the model. + * @param targetFolder + * is the output folder + * @param arguments + * are the other arguments + * @throws IOException + * Thrown when the output cannot be saved. + * @generated + */ + public GenerateAll(URI modelURI, IContainer targetFolder, List arguments) { + this.modelURI = modelURI; + this.targetFolder = targetFolder; + this.arguments = arguments; + } + + /** + * Launches the generation. + * + * @param monitor + * This will be used to display progress information to the user. + * @throws IOException + * Thrown when the output cannot be saved. + * @generated + */ + public void doGenerate(IProgressMonitor monitor) throws IOException { + if (!targetFolder.getLocation().toFile().exists()) { + targetFolder.getLocation().toFile().mkdirs(); + } + + // final URI template0 = getTemplateURI("fr.obeo.dsl.arduino.gen", new Path("/fr/obeo/dsl/arduino/gen/main/generate.emtl")); + // fr.obeo.dsl.arduino.gen.main.Generate gen0 = new fr.obeo.dsl.arduino.gen.main.Generate(modelURI, targetFolder.getLocation().toFile(), arguments) { + // protected URI createTemplateURI(String entry) { + // return template0; + // } + //}; + //gen0.doGenerate(BasicMonitor.toMonitor(monitor)); + monitor.subTask("Loading..."); + fr.obeo.dsl.arduino.gen.main.Generate gen0 = new fr.obeo.dsl.arduino.gen.main.Generate(modelURI, targetFolder.getLocation().toFile(), arguments); + monitor.worked(1); + String generationID = org.eclipse.acceleo.engine.utils.AcceleoLaunchingUtil.computeUIProjectID("fr.obeo.dsl.arduino.gen", "fr.obeo.dsl.arduino.gen.main.Generate", modelURI.toString(), targetFolder.getFullPath().toString(), new ArrayList()); + gen0.setGenerationID(generationID); + gen0.doGenerate(BasicMonitor.toMonitor(monitor)); + + + } + + /** + * Finds the template in the plug-in. Returns the template plug-in URI. + * + * @param bundleID + * is the plug-in ID + * @param relativePath + * is the relative path of the template in the plug-in + * @return the template URI + * @throws IOException + * @generated + */ + @SuppressWarnings("unchecked") + private URI getTemplateURI(String bundleID, IPath relativePath) throws IOException { + Bundle bundle = Platform.getBundle(bundleID); + if (bundle == null) { + // no need to go any further + return URI.createPlatformResourceURI(new Path(bundleID).append(relativePath).toString(), false); + } + URL url = bundle.getEntry(relativePath.toString()); + if (url == null && relativePath.segmentCount() > 1) { + Enumeration entries = bundle.findEntries("/", "*.emtl", true); + if (entries != null) { + String[] segmentsRelativePath = relativePath.segments(); + while (url == null && entries.hasMoreElements()) { + URL entry = entries.nextElement(); + IPath path = new Path(entry.getPath()); + if (path.segmentCount() > relativePath.segmentCount()) { + path = path.removeFirstSegments(path.segmentCount() - relativePath.segmentCount()); + } + String[] segmentsPath = path.segments(); + boolean equals = segmentsPath.length == segmentsRelativePath.length; + for (int i = 0; equals && i < segmentsPath.length; i++) { + equals = segmentsPath[i].equals(segmentsRelativePath[i]); + } + if (equals) { + url = bundle.getEntry(entry.getPath()); + } + } + } + } + URI result; + if (url != null) { + result = URI.createPlatformPluginURI(new Path(bundleID).append(new Path(url.getPath())).toString(), false); + } else { + result = URI.createPlatformResourceURI(new Path(bundleID).append(relativePath).toString(), false); + } + return result; + } + +} diff --git a/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.gen.ui/src/fr/obeo/dsl/arduino/gen/ui/popupMenus/AcceleoGenerateGenAction.java b/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.gen.ui/src/fr/obeo/dsl/arduino/gen/ui/popupMenus/AcceleoGenerateGenAction.java new file mode 100644 index 00000000..4da67dcc --- /dev/null +++ b/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.gen.ui/src/fr/obeo/dsl/arduino/gen/ui/popupMenus/AcceleoGenerateGenAction.java @@ -0,0 +1,112 @@ +/******************************************************************************* + * Copyright (c) 2008, 2012 Obeo. + * 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: + * Obeo - initial API and implementation + *******************************************************************************/ +package fr.obeo.dsl.arduino.gen.ui.popupMenus; + +import java.io.IOException; +import java.lang.reflect.InvocationTargetException; +import java.util.Iterator; +import java.util.List; +import java.util.ArrayList; + +import org.eclipse.core.resources.IFile; +import org.eclipse.core.resources.IContainer; +import org.eclipse.core.resources.IResource; +import org.eclipse.core.runtime.CoreException; +import org.eclipse.core.runtime.IProgressMonitor; +import org.eclipse.core.runtime.IStatus; +import org.eclipse.core.runtime.Status; +import org.eclipse.emf.common.util.URI; +import org.eclipse.jface.action.IAction; +import org.eclipse.jface.operation.IRunnableWithProgress; +import org.eclipse.jface.viewers.ISelection; +import org.eclipse.jface.viewers.IStructuredSelection; +import fr.obeo.dsl.arduino.gen.ui.Activator; +import fr.obeo.dsl.arduino.gen.ui.common.GenerateAll; +import org.eclipse.ui.IActionDelegate; +import org.eclipse.ui.PlatformUI; +import org.eclipse.ui.actions.ActionDelegate; + +/** + * Gen code generation. + */ +public class AcceleoGenerateGenAction extends ActionDelegate implements IActionDelegate { + + /** + * Selected model files. + */ + protected List files; + + /**{@inheritDoc} + * + * @see org.eclipse.ui.actions.ActionDelegate#selectionChanged(org.eclipse.jface.action.IAction, org.eclipse.jface.viewers.ISelection) + * @generated + */ + @SuppressWarnings("unchecked") + public void selectionChanged(IAction action, ISelection selection) { + if (selection instanceof IStructuredSelection) { + files = ((IStructuredSelection) selection).toList(); + } + } + + /**{@inheritDoc} + * + * @see org.eclipse.ui.actions.ActionDelegate#run(org.eclipse.jface.action.IAction) + * @generated + */ + public void run(IAction action) { + if (files != null) { + IRunnableWithProgress operation = new IRunnableWithProgress() { + public void run(IProgressMonitor monitor) { + try { + Iterator filesIt = files.iterator(); + while (filesIt.hasNext()) { + IFile model = (IFile)filesIt.next(); + URI modelURI = URI.createPlatformResourceURI(model.getFullPath().toString(), true); + try { + IContainer target = model.getProject().getFolder("src-gen"); + GenerateAll generator = new GenerateAll(modelURI, target, getArguments()); + generator.doGenerate(monitor); + } catch (IOException e) { + IStatus status = new Status(IStatus.ERROR, Activator.PLUGIN_ID, e.getMessage(), e); + Activator.getDefault().getLog().log(status); + } finally { + model.getProject().refreshLocal(IResource.DEPTH_INFINITE, monitor); + } + } + } catch (CoreException e) { + IStatus status = new Status(IStatus.ERROR, Activator.PLUGIN_ID, e.getMessage(), e); + Activator.getDefault().getLog().log(status); + } + } + }; + try { + PlatformUI.getWorkbench().getProgressService().run(true, true, operation); + } catch (InvocationTargetException e) { + IStatus status = new Status(IStatus.ERROR, Activator.PLUGIN_ID, e.getMessage(), e); + Activator.getDefault().getLog().log(status); + } catch (InterruptedException e) { + IStatus status = new Status(IStatus.ERROR, Activator.PLUGIN_ID, e.getMessage(), e); + Activator.getDefault().getLog().log(status); + } + } + } + + /** + * Computes the arguments of the generator. + * + * @return the arguments + * @generated + */ + protected List getArguments() { + return new ArrayList(); + } + +} \ No newline at end of file diff --git a/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.gen/.classpath b/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.gen/.classpath new file mode 100644 index 00000000..bf1769bc --- /dev/null +++ b/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.gen/.classpath @@ -0,0 +1,7 @@ + + + + + + + diff --git a/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.gen/.project b/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.gen/.project new file mode 100644 index 00000000..3bf9ce00 --- /dev/null +++ b/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.gen/.project @@ -0,0 +1,35 @@ + + + fr.obeo.dsl.arduino.gen + + + + + + org.eclipse.jdt.core.javabuilder + + + + + org.eclipse.pde.ManifestBuilder + + + + + org.eclipse.pde.SchemaBuilder + + + + + org.eclipse.acceleo.ide.ui.acceleoBuilder + + + + + + org.eclipse.pde.PluginNature + org.eclipse.acceleo.ide.ui.acceleoNature + org.eclipse.jdt.core.javanature + org.eclipse.pde.PluginNature + + diff --git a/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.gen/META-INF/MANIFEST.MF b/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.gen/META-INF/MANIFEST.MF new file mode 100644 index 00000000..5ba27e48 --- /dev/null +++ b/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.gen/META-INF/MANIFEST.MF @@ -0,0 +1,23 @@ +Manifest-Version: 1.0 +Bundle-ManifestVersion: 2 +Bundle-Name: Acceleo Gen Module Runtime Plug-in +Bundle-SymbolicName: fr.obeo.dsl.arduino.gen +Bundle-Version: 1.0.0.qualifier +Bundle-Activator: fr.obeo.dsl.arduino.gen.Activator +Bundle-Vendor: Eclipse Modeling Project +Require-Bundle: org.eclipse.core.runtime, + fr.obeo.dsl.arduino, + org.eclipse.emf.ecore, + org.eclipse.emf.ecore.xmi, + org.eclipse.ocl, + org.eclipse.ocl.ecore, + org.eclipse.acceleo.common;bundle-version="3.3.0", + org.eclipse.acceleo.model;bundle-version="3.3.0", + org.eclipse.acceleo.profiler;bundle-version="3.3.0", + org.eclipse.acceleo.engine;bundle-version="3.3.0", + com.google.guava +Bundle-RequiredExecutionEnvironment: JavaSE-1.6 +Bundle-ActivationPolicy: lazy +Eclipse-LazyStart: true +Export-Package: fr.obeo.dsl.arduino.gen.main + diff --git a/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.gen/build.properties b/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.gen/build.properties new file mode 100644 index 00000000..dc056cb7 --- /dev/null +++ b/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.gen/build.properties @@ -0,0 +1,6 @@ +source.. = src/ +output.. = bin/ +bin.includes = META-INF/,\ + . +customBuildCallbacks = build.acceleo +jre.compilation.profile = JavaSE-1.6 diff --git a/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.gen/pom.xml b/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.gen/pom.xml new file mode 100644 index 00000000..0ee9e589 --- /dev/null +++ b/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.gen/pom.xml @@ -0,0 +1,72 @@ + + + + 4.0.0 + + + fr.obeo.dsl.arduino + parent + 1.0.0-SNAPSHOT + ../../releng/fr.obeo.dsl.arduino.parent + + + fr.obeo.dsl.arduino.gen + eclipse-plugin + + Arduino Acceleo Generator + + + + + org.eclipse.tycho + tycho-source-plugin + + + org.apache.maven.plugins + maven-pmd-plugin + + + org.eclipse.acceleo + org.eclipse.acceleo.maven + 3.5.0-SNAPSHOT + + + compile + + acceleo-compile + + + + + false + true + + ${project.basedir} + + + src + target/classes + + + + + fr.obeo.dsl.arduino.ArduinoPackage + + org.eclipse.acceleo.maven.AcceleoURIHandler + + + + + + diff --git a/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.gen/src/fr/obeo/dsl/arduino/gen/Activator.java b/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.gen/src/fr/obeo/dsl/arduino/gen/Activator.java new file mode 100644 index 00000000..715124f9 --- /dev/null +++ b/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.gen/src/fr/obeo/dsl/arduino/gen/Activator.java @@ -0,0 +1,82 @@ +/** + * Copyright (c) 2013 Obeo. + * 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: + * Obeo - initial API and implementation + */ +package fr.obeo.dsl.arduino.gen; + +import org.eclipse.core.runtime.Plugin; +import org.eclipse.core.runtime.Status; +import org.osgi.framework.BundleContext; + +/** + * The activator class controls the plug-in life cycle. + */ +public class Activator extends Plugin { + + /** + * The plug-in ID. + */ + public static final String PLUGIN_ID = "fr.obeo.dsl.arduino.gen"; + + /** + * The shared instance. + */ + private static Activator plugin; + + /** + * The constructor. + */ + public Activator() { + } + + /** + * {@inheritDoc} + * + * @see org.eclipse.core.runtime.Plugin#start(org.osgi.framework.BundleContext) + */ + public void start(BundleContext context) throws Exception { + super.start(context); + plugin = this; + } + + /** + * {@inheritDoc} + * + * @see org.eclipse.core.runtime.Plugin#stop(org.osgi.framework.BundleContext) + */ + public void stop(BundleContext context) throws Exception { + plugin = null; + super.stop(context); + } + + /** + * Returns the shared instance. + * + * @return the shared instance + */ + public static Activator getDefault() { + return plugin; + } + + /** + * A helper to log plugin errors. + * + * @param severity + * the error severity. + * @param message + * the error message. + * @param exception + * the error exception. + */ + public static void log(int severity, String message, Throwable exception) { + getDefault().getLog().log( + new Status(severity, PLUGIN_ID, message, exception)); + } + +} diff --git a/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.gen/src/fr/obeo/dsl/arduino/gen/main/ArduinoGenServices.java b/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.gen/src/fr/obeo/dsl/arduino/gen/main/ArduinoGenServices.java new file mode 100644 index 00000000..4db3b615 --- /dev/null +++ b/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.gen/src/fr/obeo/dsl/arduino/gen/main/ArduinoGenServices.java @@ -0,0 +1,188 @@ +/** + * Copyright (c) 2013 Obeo. + * 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: + * Obeo - initial API and implementation + */ +package fr.obeo.dsl.arduino.gen.main; + +import java.util.Iterator; + +import org.eclipse.emf.common.util.Enumerator; + +import fr.obeo.dsl.arduino.BinaryBooleanExpression; +import fr.obeo.dsl.arduino.BinaryBooleanOperatorKind; +import fr.obeo.dsl.arduino.BinaryIntegerExpression; +import fr.obeo.dsl.arduino.BinaryIntegerOperatorKind; +import fr.obeo.dsl.arduino.Constant; +import fr.obeo.dsl.arduino.Expression; +import fr.obeo.dsl.arduino.Instruction; +import fr.obeo.dsl.arduino.BinaryExpression; +import fr.obeo.dsl.arduino.ModuleGet; +import fr.obeo.dsl.arduino.Repeat; +import fr.obeo.dsl.arduino.Sketch; +import fr.obeo.dsl.arduino.UnaryBooleanOperatorKind; +import fr.obeo.dsl.arduino.UnaryIntegerOperatorKind; +import fr.obeo.dsl.arduino.Variable; + +public class ArduinoGenServices { + + public int getRepeatInstructionIndex(Sketch sketch, Repeat repeat) { + int i = 0; + for (Iterator iterator = sketch.eAllContents(); iterator.hasNext();) { + Instruction instruction = (Instruction) iterator.next(); + i++; + if (instruction instanceof Repeat && instruction.equals(repeat)) { + return i; + } + } + + return 0; + } + + public String getValue(Expression value) { + if (value instanceof Variable) { + return ((Variable) value).getName(); + } + if (value instanceof Constant) { + return "Constant";//value.getValue(); + } + if (value instanceof BinaryBooleanExpression) { + return "(" + getValue(((BinaryExpression) value).getLeft()) + + getOperator(((BinaryBooleanExpression) value).getOperator()) + + getValue(((BinaryExpression) value).getRight()) + ")"; + } + if (value instanceof BinaryIntegerExpression) { + return "(" + getValue(((BinaryExpression) value).getLeft()) + + getOperator(((BinaryIntegerExpression) value).getOperator()) + + getValue(((BinaryExpression) value).getRight()) + ")"; + } + if (value instanceof ModuleGet) { + return ((ModuleGet) value).getModule().getName().replaceAll(" ", ""); + } + return null; + } + + public String getOperator(Enumerator operator) { + return "operator not supported"; + } + public String getOperator(BinaryIntegerOperatorKind operator) { + switch (operator) { + case DIV: + return "/"; + case MAX: + return "max"; + case MIN: + return "min"; + case MINUS: + return "-"; + case MUL: + return "*"; + case PLUS: + return "+"; + case POURCENT: + return "%"; + } + return null; + } + + public String getOperator(UnaryIntegerOperatorKind operator) { + switch (operator) { + case MINUS: + return "-"; + case SQUARE_ROOT: + return "sqrt"; + } + return null; + } + + public String getOperator(UnaryBooleanOperatorKind operator) { + switch (operator) { + case NOT: + return "!"; + } + return null; + } + + public String getOperator(BinaryBooleanOperatorKind operator) { + switch (operator) { + case AND: + return "&"; + case DIFFERENT: + return "!="; + case EQUAL: + return "=="; + case OR: + return "or"; + case SUP: + return ">"; + case SUP_OR_EQUAL: + return ">="; + case INF: + return "<"; + case INF_OR_EQUAL: + return "<="; + } + return null; + } + + public Enumerator getOperator(String operator) { + + if (operator.equals("/") || operator.equals("div")) { + return BinaryIntegerOperatorKind.DIV; + } + if (operator.equals("max")) { + return BinaryIntegerOperatorKind.MAX; + } + if (operator.equals("min")) { + return BinaryIntegerOperatorKind.MIN; + } + if (operator.equals("-") || operator.equals("minus")) { + return BinaryIntegerOperatorKind.MINUS; + } + if (operator.equals("*") || operator.equals("mul")) { + return BinaryIntegerOperatorKind.MUL; + } + if (operator.equals("+") || operator.equals("plus")) { + return BinaryIntegerOperatorKind.PLUS; + } + if (operator.equals("%") || operator.equals("pourcent")) { + return BinaryIntegerOperatorKind.POURCENT; + } + + if (operator.equals("&") || operator.equals("and")) { + return BinaryBooleanOperatorKind.AND; + } + if (operator.equals("!=") || operator.equals("diff")) { + return BinaryBooleanOperatorKind.DIFFERENT; + } + if (operator.equals("==") || operator.equals("equal")) { + return BinaryBooleanOperatorKind.EQUAL; + } + if (operator.equals("<") || operator.equals("lower")) { + return BinaryBooleanOperatorKind.INF; + } + if (operator.equals("<=") || operator.equals("lowerOrEqual")) { + return BinaryBooleanOperatorKind.INF_OR_EQUAL; + } + if (operator.equals("or")) { + return BinaryBooleanOperatorKind.OR; + } + if (operator.equals(">") || operator.equals("upper")) { + return BinaryBooleanOperatorKind.SUP; + } + if (operator.equals(">=") || operator.equals("upperOrEqual")) { + return BinaryBooleanOperatorKind.SUP_OR_EQUAL; + } + if (operator.equals("not")) { + return UnaryBooleanOperatorKind.NOT; + } + + return null; + } + +} diff --git a/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.gen/src/fr/obeo/dsl/arduino/gen/main/Generate.java b/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.gen/src/fr/obeo/dsl/arduino/gen/main/Generate.java new file mode 100644 index 00000000..4faa99ad --- /dev/null +++ b/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.gen/src/fr/obeo/dsl/arduino/gen/main/Generate.java @@ -0,0 +1,429 @@ +/** + * Copyright (c) 2013 Obeo. + * 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: + * Obeo - initial API and implementation + */ +package fr.obeo.dsl.arduino.gen.main; + +import java.io.File; +import java.io.IOException; +import java.util.ArrayList; +import java.util.List; + +import org.eclipse.acceleo.engine.event.IAcceleoTextGenerationListener; +import org.eclipse.acceleo.engine.generation.strategy.IAcceleoGenerationStrategy; +import org.eclipse.acceleo.engine.service.AbstractAcceleoGenerator; +import org.eclipse.emf.common.util.BasicMonitor; +import org.eclipse.emf.common.util.Monitor; +import org.eclipse.emf.common.util.URI; +import org.eclipse.emf.ecore.EObject; +import org.eclipse.emf.ecore.resource.ResourceSet; + +/** + * Entry point of the 'Generate' generation module. + * + * @generated + */ +public class Generate extends AbstractAcceleoGenerator { + /** + * The name of the module. + * + * @generated + */ + public static final String MODULE_FILE_NAME = "/fr/obeo/dsl/arduino/gen/main/generate"; + + /** + * The name of the templates that are to be generated. + * + * @generated + */ + public static final String[] TEMPLATE_NAMES = { "generateSketch" }; + + /** + * The list of properties files from the launch parameters (Launch + * configuration). + * + * @generated + */ + private List propertiesFiles = new ArrayList(); + + /** + * Allows the public constructor to be used. Note that a generator created + * this way cannot be used to launch generations before one of + * {@link #initialize(EObject, File, List)} or + * {@link #initialize(URI, File, List)} is called. + *

+ * The main reason for this constructor is to allow clients of this + * generation to call it from another Java file, as it allows for the + * retrieval of {@link #getProperties()} and + * {@link #getGenerationListeners()}. + *

+ * + * @generated + */ + public Generate() { + // Empty implementation + } + + /** + * This allows clients to instantiates a generator with all required + * information. + * + * @param modelURI + * URI where the model on which this generator will be used is + * located. + * @param targetFolder + * This will be used as the output folder for this generation : + * it will be the base path against which all file block URLs + * will be resolved. + * @param arguments + * If the template which will be called requires more than one + * argument taken from the model, pass them here. + * @throws IOException + * This can be thrown in three scenarios : the module cannot be + * found, it cannot be loaded, or the model cannot be loaded. + * @generated + */ + public Generate(URI modelURI, File targetFolder, + List arguments) throws IOException { + initialize(modelURI, targetFolder, arguments); + } + + /** + * This allows clients to instantiates a generator with all required + * information. + * + * @param model + * We'll iterate over the content of this element to find Objects + * matching the first parameter of the template we need to call. + * @param targetFolder + * This will be used as the output folder for this generation : + * it will be the base path against which all file block URLs + * will be resolved. + * @param arguments + * If the template which will be called requires more than one + * argument taken from the model, pass them here. + * @throws IOException + * This can be thrown in two scenarios : the module cannot be + * found, or it cannot be loaded. + * @generated + */ + public Generate(EObject model, File targetFolder, + List arguments) throws IOException { + initialize(model, targetFolder, arguments); + } + + /** + * This can be used to launch the generation from a standalone application. + * + * @param args + * Arguments of the generation. + * @generated + */ + public static void main(String[] args) { + try { + if (args.length < 2) { + System.out.println("Arguments not valid : {model, folder}."); + } else { + URI modelURI = URI.createFileURI(args[0]); + File folder = new File(args[1]); + + List arguments = new ArrayList(); + + /* + * If you want to change the content of this method, do NOT forget to change the "@generated" + * tag in the Javadoc of this method to "@generated NOT". Without this new tag, any compilation + * of the Acceleo module with the main template that has caused the creation of this class will + * revert your modifications. + */ + + /* + * Add in this list all the arguments used by the starting point of the generation + * If your main template is called on an element of your model and a String, you can + * add in "arguments" this "String" attribute. + */ + + Generate generator = new Generate(modelURI, folder, arguments); + + /* + * Add the properties from the launch arguments. + * If you want to programmatically add new properties, add them in "propertiesFiles" + * You can add the absolute path of a properties files, or even a project relative path. + * If you want to add another "protocol" for your properties files, please override + * "getPropertiesLoaderService(AcceleoService)" in order to return a new property loader. + * The behavior of the properties loader service is explained in the Acceleo documentation + * (Help -> Help Contents). + */ + + for (int i = 2; i < args.length; i++) { + generator.addPropertiesFile(args[i]); + } + + generator.doGenerate(new BasicMonitor()); + } + } catch (IOException e) { + e.printStackTrace(); + } + } + + /** + * Launches the generation described by this instance. + * + * @param monitor + * This will be used to display progress information to the user. + * @throws IOException + * This will be thrown if any of the output files cannot be + * saved to disk. + * @generated + */ + @Override + public void doGenerate(Monitor monitor) throws IOException { + /* + * TODO if you wish to change the generation as a whole, override this. The default behavior should + * be sufficient in most cases. If you want to change the content of this method, do NOT forget to + * change the "@generated" tag in the Javadoc of this method to "@generated NOT". Without this new tag, + * any compilation of the Acceleo module with the main template that has caused the creation of this + * class will revert your modifications. If you encounter a problem with an unresolved proxy during the + * generation, you can remove the comments in the following instructions to check for problems. Please + * note that those instructions may have a significant impact on the performances. + */ + + //org.eclipse.emf.ecore.util.EcoreUtil.resolveAll(model); + + /* + * If you want to check for potential errors in your models before the launch of the generation, you + * use the code below. + */ + + //if (model != null && model.eResource() != null) { + // List errors = model.eResource().getErrors(); + // for (org.eclipse.emf.ecore.resource.Resource.Diagnostic diagnostic : errors) { + // System.err.println(diagnostic.toString()); + // } + //} + + super.doGenerate(monitor); + } + + /** + * If this generator needs to listen to text generation events, listeners + * can be returned from here. + * + * @return List of listeners that are to be notified when text is generated + * through this launch. + * @generated + */ + @Override + public List getGenerationListeners() { + List listeners = super.getGenerationListeners(); + /* + * TODO if you need to listen to generation event, add listeners to the list here. If you want to change + * the content of this method, do NOT forget to change the "@generated" tag in the Javadoc of this method + * to "@generated NOT". Without this new tag, any compilation of the Acceleo module with the main template + * that has caused the creation of this class will revert your modifications. + */ + return listeners; + } + + /** + * If you need to change the way files are generated, this is your entry + * point. + *

+ * The default is + * {@link org.eclipse.acceleo.engine.generation.strategy.DefaultStrategy}; + * it generates files on the fly. If you only need to preview the results, + * return a new + * {@link org.eclipse.acceleo.engine.generation.strategy.PreviewStrategy}. + * Both of these aren't aware of the running Eclipse and can be used + * standalone. + *

+ *

+ * If you need the file generation to be aware of the workspace (A typical + * example is when you wanna override files that are under clear case or any + * other VCS that could forbid the overriding), then return a new + * {@link org.eclipse.acceleo.engine.generation.strategy.WorkspaceAwareStrategy} + * . Note, however, that this cannot be used standalone. + *

+ *

+ * All three of these default strategies support merging through JMerge. + *

+ * + * @return The generation strategy that is to be used for generations + * launched through this launcher. + * @generated + */ + @Override + public IAcceleoGenerationStrategy getGenerationStrategy() { + return super.getGenerationStrategy(); + } + + /** + * This will be called in order to find and load the module that will be + * launched through this launcher. We expect this name not to contain file + * extension, and the module to be located beside the launcher. + * + * @return The name of the module that is to be launched. + * @generated + */ + @Override + public String getModuleName() { + return MODULE_FILE_NAME; + } + + /** + * If the module(s) called by this launcher require properties files, return + * their qualified path from here.Take note that the first added properties + * files will take precedence over subsequent ones if they contain + * conflicting keys. + * + * @return The list of properties file we need to add to the generation + * context. + * @see java.util.ResourceBundle#getBundle(String) + * @generated + */ + @Override + public List getProperties() { + /* + * If you want to change the content of this method, do NOT forget to change the "@generated" + * tag in the Javadoc of this method to "@generated NOT". Without this new tag, any compilation + * of the Acceleo module with the main template that has caused the creation of this class will + * revert your modifications. + */ + + /* + * TODO if your generation module requires access to properties files, add their qualified path to the list here. + * + * Properties files can be located in an Eclipse plug-in or in the file system (all Acceleo projects are Eclipse + * plug-in). In order to use properties files located in an Eclipse plugin, you need to add the path of the properties + * files to the "propertiesFiles" list: + * + * final String prefix = "platform:/plugin/"; + * final String pluginName = "org.eclipse.acceleo.module.sample"; + * final String packagePath = "/org/eclipse/acceleo/module/sample/properties/"; + * final String fileName = "default.properties"; + * propertiesFiles.add(prefix + pluginName + packagePath + fileName); + * + * With this mechanism, you can load properties files from your plugin or from another plugin. + * + * You may want to load properties files from the file system, for that you need to add the absolute path of the file: + * + * propertiesFiles.add("C:\Users\MyName\MyFile.properties"); + * + * If you want to let your users add properties files located in the same folder as the model: + * + * if (EMFPlugin.IS_ECLIPSE_RUNNING && model != null && model.eResource() != null) { + * propertiesFiles.addAll(AcceleoEngineUtils.getPropertiesFilesNearModel(model.eResource())); + * } + * + * To learn more about Properties Files, have a look at the Acceleo documentation (Help -> Help Contents). + */ + return propertiesFiles; + } + + /** + * Adds a properties file in the list of properties files. + * + * @param propertiesFile + * The properties file to add. + * @generated + * @since 3.1 + */ + @Override + public void addPropertiesFile(String propertiesFile) { + this.propertiesFiles.add(propertiesFile); + } + + /** + * This will be used to get the list of templates that are to be launched by + * this launcher. + * + * @return The list of templates to call on the module + * {@link #getModuleName()}. + * @generated + */ + @Override + public String[] getTemplateNames() { + return TEMPLATE_NAMES; + } + + /** + * This can be used to update the resource set's package registry with all + * needed EPackages. + * + * @param resourceSet + * The resource set which registry has to be updated. + * @generated + */ + @Override + public void registerPackages(ResourceSet resourceSet) { + super.registerPackages(resourceSet); + + /* + * If you want to change the content of this method, do NOT forget to change the "@generated" + * tag in the Javadoc of this method to "@generated NOT". Without this new tag, any compilation + * of the Acceleo module with the main template that has caused the creation of this class will + * revert your modifications. + */ + + /* + * If you need additional package registrations, you can register them here. The following line + * (in comment) is an example of the package registration for UML. + * + * You can use the method "isInWorkspace(Class c)" to check if the package that you are about to + * register is in the workspace. + * + * To register a package properly, please follow the following conventions: + * + * If the package is located in another plug-in, already installed in Eclipse. The following content should + * have been generated at the beginning of this method. Do not register the package using this mechanism if + * the metamodel is located in the workspace. + * + * if (!isInWorkspace(UMLPackage.class)) { + * // The normal package registration if your metamodel is in a plugin. + * resourceSet.getPackageRegistry().put(UMLPackage.eNS_URI, UMLPackage.eINSTANCE); + * } + * + * If the package is located in another project in your workspace, the plugin containing the package has not + * been register by EMF and Acceleo should register it automatically. If you want to use the generator in + * stand alone, the regular registration (seen a couple lines before) is needed. + * + * To learn more about Package Registration, have a look at the Acceleo documentation (Help -> Help Contents). + */ + } + + /** + * This can be used to update the resource set's resource factory registry + * with all needed factories. + * + * @param resourceSet + * The resource set which registry has to be updated. + * @generated + */ + @Override + public void registerResourceFactories(ResourceSet resourceSet) { + super.registerResourceFactories(resourceSet); + /* + * If you want to change the content of this method, do NOT forget to change the "@generated" + * tag in the Javadoc of this method to "@generated NOT". Without this new tag, any compilation + * of the Acceleo module with the main template that has caused the creation of this class will + * revert your modifications. + */ + + /* + * TODO If you need additional resource factories registrations, you can register them here. the following line + * (in comment) is an example of the resource factory registration for UML. + * + * If you want to use the generator in stand alone, the resource factory registration will be required. + * + * To learn more about the registration of Resource Factories, have a look at the Acceleo documentation (Help -> Help Contents). + */ + + // resourceSet.getResourceFactoryRegistry().getExtensionToFactoryMap().put(UMLResource.FILE_EXTENSION, UMLResource.Factory.INSTANCE); + } + +} diff --git a/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.gen/src/fr/obeo/dsl/arduino/gen/main/arduinoservices.mtl b/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.gen/src/fr/obeo/dsl/arduino/gen/main/arduinoservices.mtl new file mode 100644 index 00000000..4a12acef --- /dev/null +++ b/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.gen/src/fr/obeo/dsl/arduino/gen/main/arduinoservices.mtl @@ -0,0 +1,18 @@ +[comment encoding = UTF-8 /] +[module arduinoservices('http://www.obeo.fr/arduino')/] + +[query public getRepeatInstructionIndex(arg0 : Sketch, arg1 : Repeat) : Integer + = invoke('fr.obeo.dsl.arduino.gen.main.ArduinoGenServices', 'getRepeatInstructionIndex(fr.obeo.dsl.arduino.Sketch, fr.obeo.dsl.arduino.Repeat)', Sequence{arg0,arg1}) +/] + +[query public getOperator(arg0 : BinaryIntegerOperatorKind) : String + = invoke('fr.obeo.dsl.arduino.gen.main.ArduinoGenServices', 'getOperator(fr.obeo.dsl.arduino.BinaryIntegerOperatorKind)', Sequence{arg0}) +/] + +[query public getOperator(arg0 : BinaryBooleanOperatorKind) : String + = invoke('fr.obeo.dsl.arduino.gen.main.ArduinoGenServices', 'getOperator(fr.obeo.dsl.arduino.BinaryBooleanOperatorKind)', Sequence{arg0}) +/] + +[query public getValue(arg0 : Expression) : String + = invoke('fr.obeo.dsl.arduino.gen.main.ArduinoGenServices', 'getValue(fr.obeo.dsl.arduino.Expression)', Sequence{arg0}) +/] \ No newline at end of file diff --git a/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.gen/src/fr/obeo/dsl/arduino/gen/main/generate.mtl b/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.gen/src/fr/obeo/dsl/arduino/gen/main/generate.mtl new file mode 100644 index 00000000..dd919423 --- /dev/null +++ b/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.gen/src/fr/obeo/dsl/arduino/gen/main/generate.mtl @@ -0,0 +1,258 @@ +[comment encoding = UTF-8 /] +[module generate('http://www.obeo.fr/arduino')] +[import fr::obeo::dsl::arduino::gen::main::arduinoservices /] + + +[template public generateSketch(sketch : Sketch)] + +[comment @main/] +[genIno()/] +[genMakefile()/] +[/template] + +[template public genIno (sketch : Sketch) ] +[file (sketch.getVariableName()+'.ino', false, 'UTF-8')] +[for (library : Library | sketch.eAllContents("ModuleAssignment").module->select(library<>arduino::Library::none).library->asOrderedSet())] +#include <[library.toString().toUpperFirst()/].h> +[/for] +[for (mod : Module | sketch.eAllContents("ModuleInstruction").module->asOrderedSet())] +[if (mod.library<>arduino::Library::music)] +int [mod.getVariableName()/] = [sketch.getPinId(mod)/]; +[/if] +[/for] +[for (mod : Module | sketch.eAllContents("ModuleAssignment").module->select(library<>arduino::Library::none)->asOrderedSet())] +[mod.library.toString().toUpperFirst()/] [mod.getVariableName()/]; +[/for] +[for (mod : Module | sketch.eAllContents("ModuleGet").module->select(m |m.oclIsKindOf(Sensor))->asOrderedSet())] +int [mod.getVariableName()/] = [sketch.getPinId(mod)/]; +[/for] +[for (instruction : Repeat | getRepeatInstructions(sketch))] +int iter_[eContainer(arduino::Sketch).getRepeatInstructionIndex(instruction)/]; +[/for] +[for (instruction : VariableDeclaration | sketch.eAllContents("VariableDeclaration"))] +[if (instruction.variable.oclIsTypeOf(IntegerVariable))]int [instruction.variable.name/];[/if] +[if (instruction.variable.oclIsTypeOf(BooleanVariable))]short unsigned int [instruction.variable.name/];[/if] +[/for] + +void setup() { +[if (sketch.eAllContents("ModuleAssignment").module.library->select(lib|lib = arduino::Library::music)->asOrderedSet()->size()>=1)] + music.init(); +[/if] +[for (mod : Module | sketch.eAllContents("ModuleAssignment").module->asOrderedSet())] +[if (mod.library<>arduino::Library::music)] + pinMode([mod.getVariableName()/], OUTPUT); +[/if] +[/for] +[for (mod : Module | sketch.eAllContents("ModuleAssignment").module->select(library<>arduino::Library::none)->asOrderedSet())] + [mod.getVariableName()/].attach([sketch.getPinId(mod)/]); +[/for] +[for (instruction : VariableDeclaration | sketch.eAllContents("VariableDeclaration"))] +[if (instruction.variable.oclIsTypeOf(IntegerVariable))][instruction.variable.name/] = [instruction.variable.oclAsType(IntegerVariable).initialValue/];[/if] +[if (instruction.variable.oclIsTypeOf(BooleanVariable))][instruction.variable.name/] = [instruction.variable.oclAsType(BooleanVariable).initialValue/];[/if] +[/for] +} + +// the loop routine runs over and over again forever: +void loop() { + [sketch.next.genINO()/] +} +[/file] +[/template] + +[template public genINO(i : Instruction)post (trim())] +[i.generateInstruction()/] +[if (not i.oclIsInvalid() and not i.next.oclIsInvalid() and not i.next.oclIsKindOf(arduino::Sketch))] +[genINO(i.next)/] +[/if] +[/template] + + +[template public genMakefile (sketch : Sketch) ] +[file ('Makefile', false, 'UTF-8')] +BOARD_TAG = uno +ARDUINO_PORT = /dev/ttyACM0 +ARDUINO_LIBS = [for (library : Library | sketch.eAllContents("ModuleAssignment").module->select(library<>arduino::Library::none).library->asOrderedSet())][library.toString().toUpperFirst()/][/for] + +include /usr/share/arduino/Arduino.mk +[/file] +[/template] + +[template public generateInstruction(instruction : Delay)post (trim())] +delay([instruction.value/]); +[/template] + +[template public generateInstruction(instruction : ModuleAssignment)post (trim())] +[if (instruction.module.library=arduino::Library::music)] +[if (instruction.operand.oclIsTypeOf(BooleanConstant) and instruction.operand.oclAsType(BooleanConstant).value=false)] + music.play(); +[else] + music.pause(); +[/if] +[else] +digitalWrite([instruction.module.getVariableName()/], [getStatus(instruction)/]); +[/if] + +[/template] + +[template public generateInstruction(instruction : ModuleGet)post (trim())] +[instruction.module.getVariableName()/]_value +[/template] + +[template private getStatus(instruction : ModuleAssignment)post (trim())] +[if ((not instruction.operand.oclIsInvalid()) and instruction.operand.oclIsTypeOf(BooleanConstant))] + [if (instruction.operand.oclAsType(BooleanConstant).value=false)] +HIGH + [else] +LOW + [/if] +[else] + [if (instruction.operand.oclIsTypeOf(IntegerConstant))] +[instruction.operand.oclAsType(IntegerConstant).value/] + [else] + [if (instruction.operand.oclIsTypeOf(ModuleGet))] +[generateInstruction(instruction)/] + [/if] + [/if] +[/if] +[/template] + +[template public generateInstruction(instruction : ModuleInstruction)post (trim())] +[if (instruction.module.kind=ModuleKind::digital)] +digitalRead([instruction.module.getVariableName()/]) +[else] +analogRead([instruction.module.getVariableName()/]) +[/if] + +[/template] + +[template public generateInstruction(instruction : Repeat)post (trim())] +[let index : Integer = eContainer(arduino::Sketch).getRepeatInstructionIndex(instruction)] +for (iter_[index/]=0; iter_[index/] < ( [instruction.iteration/] ); ++iter_[index/] ) +{ + [instruction.instructions->first().genINO()/] +} +[/let] +[/template] + +[template public generateInstruction(instruction : While)post (trim())] +{ + [instruction.generateContainedModuleGet()/] + while ([instruction.condition.generateExpression()/]) + { + [instruction.instructions->first().genINO()/] + } +} +[/template] + +[template public generateInstruction(instruction : If)post (trim())] +{//IF + [instruction.generateContainedModuleGet()/] + if ([instruction.condition.generateExpression()/]) + { + [instruction.instructions->first().genINO()/] + } +//endIf +} +[/template] + +[template public generateContainedModuleGet(instruction : If)post (trim())] +[if (((not instruction.condition.oclIsInvalid()) and instruction.condition.oclIsKindOf(ModuleGet)) )] +int [instruction.condition.oclAsType(ModuleGet).module.getVariableName()/]_value = digitalRead([instruction.condition.oclAsType(ModuleGet).module.getVariableName()/]); +[/if] +[if ((not instruction.condition.oclIsInvalid()) + and + (instruction.condition.oclIsKindOf(BinaryBooleanExpression) + and instruction.condition.oclAsType(BinaryBooleanExpression).left.oclIsKindOf(ModuleGet)) + )] +int [instruction.condition.oclAsType(BinaryBooleanExpression).left.oclAsType(ModuleGet).module.getVariableName()/]_value = digitalRead([instruction.condition.oclAsType(BinaryBooleanExpression).left.oclAsType(ModuleGet).module.getVariableName()/]); +[/if] +[if ((not instruction.condition.oclIsInvalid()) + and + (instruction.condition.oclIsKindOf(BinaryBooleanExpression) + and instruction.condition.oclAsType(BinaryBooleanExpression).right.oclIsKindOf(ModuleGet)) + )] +int [instruction.condition.oclAsType(BinaryBooleanExpression).right.oclAsType(ModuleGet).module.getVariableName()/]_value = digitalRead([instruction.condition.oclAsType(BinaryBooleanExpression).right.oclAsType(ModuleGet).module.getVariableName()/]); +[/if] +[/template] + +[template public generateContainedModuleGet(instruction : While)post (trim())] +[if (((not instruction.condition.oclIsInvalid()) and instruction.condition.oclIsKindOf(ModuleGet)) )] +int [instruction.condition.oclAsType(ModuleGet).module.getVariableName()/]_value = digitalRead([instruction.condition.oclAsType(ModuleGet).module.getVariableName()/]); +[/if] +[if ((not instruction.condition.oclIsInvalid()) + and + (instruction.condition.oclIsKindOf(BinaryBooleanExpression) + and instruction.condition.oclAsType(BinaryBooleanExpression).left.oclIsKindOf(ModuleGet)) + )] +int [instruction.condition.oclAsType(BinaryBooleanExpression).left.oclAsType(ModuleGet).module.getVariableName()/]_value = digitalRead([instruction.condition.oclAsType(BinaryBooleanExpression).left.oclAsType(ModuleGet).module.getVariableName()/]); +[/if] +[if ((not instruction.condition.oclIsInvalid()) + and + (instruction.condition.oclIsKindOf(BinaryBooleanExpression) + and instruction.condition.oclAsType(BinaryBooleanExpression).right.oclIsKindOf(ModuleGet)) + )] +int [instruction.condition.oclAsType(BinaryBooleanExpression).right.oclAsType(ModuleGet).module.getVariableName()/]_value = digitalRead([instruction.condition.oclAsType(BinaryBooleanExpression).right.oclAsType(ModuleGet).module.getVariableName()/]); +[/if] +[/template] + + + +[comment][template public generateInstruction(instruction : Level)post (trim())] +[if (instruction.module.library=arduino::Library::servo)] +[instruction.module.getVariableName()/].write([instruction.level.generateInstruction()/]); +[else] +analogWrite([instruction.eContainer(arduino::Sketch).getPinId(instruction.module)/],255-([instruction.level.generateInstruction()/])); +[/if] +[/template][/comment] + + + +[template public generateInstruction(instruction : IntegerVariable)post (trim())] +[instruction.getValue()/] +[/template] + +[template public generateInstruction(instruction : BooleanVariable)post (trim())] +[instruction.getValue()/] +[/template] + +[template public generateInstruction(instruction : Sketch)post (trim())] +[/template] + +[template public generateExpression(expression : VariableRef)post (trim())] +[expression.variable.name/]; +[/template] + +[template public generateExpression(expression : BinaryIntegerExpression)post (trim())] +([expression.left.generateExpression()/] [expression.operator.getOperator()/] [expression.right.generateExpression()/]) +[/template] + +[template public generateExpression(expression : BinaryBooleanExpression)post (trim())] +([expression.left.generateExpression()/] [expression.operator.getOperator()/] [expression.right.generateExpression()/]) +[/template] + +[template public generateExpression(expression : ModuleGet)post (trim())] +[expression.module.getVariableName()/] +[/template] + +[template public generateExpression(instruction : IntegerConstant)post (trim())] +[instruction.value/] +[/template] + +[template public generateExpression(instruction : BooleanConstant)post (trim())] +[instruction.value/] +[/template] + +[template public generateExpression(expression : Expression)post (trim())] +Generation error for [expression/] +[/template] + +[template public generateInstruction(instruction : Instruction)] +Generation error for [instruction/] +[/template] + + +[query public getPinId (sketch : Sketch, mod : Module) : Integer = sketch.hardware.connectors->select(c| c.module = mod)->first().pin.id/] + +[query public getVariableName (element : NamedElement) : String = element.name.replaceAll(' ', '')/] + +[query public getRepeatInstructions (sketch : Sketch) : OrderedSet(Repeat) = sketch.eAllContents("Repeat")->asOrderedSet()/] diff --git a/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.gen/tasks/generate.xml b/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.gen/tasks/generate.xml new file mode 100644 index 00000000..1c1eee1c --- /dev/null +++ b/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.gen/tasks/generate.xml @@ -0,0 +1,71 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.gen/tasks/generateTarget.xml b/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.gen/tasks/generateTarget.xml new file mode 100644 index 00000000..a403c882 --- /dev/null +++ b/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.gen/tasks/generateTarget.xml @@ -0,0 +1,19 @@ + + + + + + + + + + + + + + + + + + + diff --git a/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.preferences/.classpath b/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.preferences/.classpath new file mode 100644 index 00000000..098194ca --- /dev/null +++ b/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.preferences/.classpath @@ -0,0 +1,7 @@ + + + + + + + diff --git a/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.preferences/.gitignore b/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.preferences/.gitignore new file mode 100644 index 00000000..5e56e040 --- /dev/null +++ b/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.preferences/.gitignore @@ -0,0 +1 @@ +/bin diff --git a/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.preferences/.project b/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.preferences/.project new file mode 100644 index 00000000..54d6afb7 --- /dev/null +++ b/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.preferences/.project @@ -0,0 +1,28 @@ + + + fr.obeo.dsl.arduino.preferences + + + + + + org.eclipse.jdt.core.javabuilder + + + + + org.eclipse.pde.ManifestBuilder + + + + + org.eclipse.pde.SchemaBuilder + + + + + + org.eclipse.pde.PluginNature + org.eclipse.jdt.core.javanature + + diff --git a/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.preferences/.settings/org.eclipse.jdt.core.prefs b/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.preferences/.settings/org.eclipse.jdt.core.prefs new file mode 100644 index 00000000..f42de363 --- /dev/null +++ b/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.preferences/.settings/org.eclipse.jdt.core.prefs @@ -0,0 +1,7 @@ +eclipse.preferences.version=1 +org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled +org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.7 +org.eclipse.jdt.core.compiler.compliance=1.7 +org.eclipse.jdt.core.compiler.problem.assertIdentifier=error +org.eclipse.jdt.core.compiler.problem.enumIdentifier=error +org.eclipse.jdt.core.compiler.source=1.7 diff --git a/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.preferences/META-INF/MANIFEST.MF b/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.preferences/META-INF/MANIFEST.MF new file mode 100644 index 00000000..3822afd3 --- /dev/null +++ b/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.preferences/META-INF/MANIFEST.MF @@ -0,0 +1,14 @@ +Manifest-Version: 1.0 +Bundle-ManifestVersion: 2 +Bundle-Name: Preferences +Bundle-SymbolicName: fr.obeo.dsl.arduino.preferences;singleton:=true +Bundle-Version: 1.0.0.qualifier +Bundle-Activator: fr.obeo.dsl.arduino.preferences.ArduinoPreferencesPlugin +Bundle-Vendor: Obeo +Require-Bundle: org.eclipse.ui, + org.eclipse.core.runtime, + org.eclipse.sirius.ui, + org.eclipse.ui.ide +Bundle-RequiredExecutionEnvironment: JavaSE-1.7 +Bundle-ActivationPolicy: lazy +Export-Package: fr.obeo.dsl.arduino.preferences diff --git a/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.preferences/build.properties b/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.preferences/build.properties new file mode 100644 index 00000000..e9863e28 --- /dev/null +++ b/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.preferences/build.properties @@ -0,0 +1,5 @@ +source.. = src/ +output.. = bin/ +bin.includes = META-INF/,\ + .,\ + plugin.xml diff --git a/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.preferences/plugin.xml b/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.preferences/plugin.xml new file mode 100644 index 00000000..11293470 --- /dev/null +++ b/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.preferences/plugin.xml @@ -0,0 +1,13 @@ + + + + + + + + + diff --git a/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.preferences/pom.xml b/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.preferences/pom.xml new file mode 100644 index 00000000..be8bbc3a --- /dev/null +++ b/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.preferences/pom.xml @@ -0,0 +1,42 @@ + + + + 4.0.0 + + + fr.obeo.dsl.arduino + parent + 1.0.0-SNAPSHOT + ../../releng/fr.obeo.dsl.arduino.parent + + + fr.obeo.dsl.arduino.preferences + eclipse-plugin + + Arduino Designer Preferences + + + + + org.eclipse.tycho + tycho-source-plugin + + + org.apache.maven.plugins + maven-pmd-plugin + + + + + diff --git a/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.preferences/src/fr/obeo/dsl/arduino/preferences/ArduinoPreferences.java b/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.preferences/src/fr/obeo/dsl/arduino/preferences/ArduinoPreferences.java new file mode 100644 index 00000000..f7d75c44 --- /dev/null +++ b/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.preferences/src/fr/obeo/dsl/arduino/preferences/ArduinoPreferences.java @@ -0,0 +1,66 @@ +/** + * Copyright (c) 2013 Obeo. + * 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: + * Obeo - initial API and implementation + */ +package fr.obeo.dsl.arduino.preferences; + +import org.eclipse.jface.preference.IPreferenceStore; + +public class ArduinoPreferences { + + /** + * Keys for user answer preference in preference store. + */ + public static final String ARDUINO_SDK_ID = "arduino_sdk_preference"; + public static final String ARDUINO_SERIAL_PORT = "arduino_serial_port_preference"; + + /** + * The preference store. + */ + private IPreferenceStore preferenceStore = ArduinoPreferencesPlugin + .getDefault().getPreferenceStore(); + + /** + * Store the Arduino SDK path. + * + * @param answerId + * The answer is a string + */ + public void storeArduinoSdk(String answerId) { + preferenceStore.setValue(ARDUINO_SDK_ID, answerId); + } + + /** + * Get Arduino sdk. + * + * @return String representing the Arduino SDK path + */ + public String getArduinoSdk() { + return preferenceStore.getString(ARDUINO_SDK_ID); + } + + /** + * Get Arduino serial port. + * + * @return String representing the Arduino serial port + */ + public String getArduinoSerialPort() { + return preferenceStore.getString(ARDUINO_SERIAL_PORT); + } + + /** + * Store the Arduino SDK path. + * + * @param answerId + * The answer is a string + */ + public void storeArduinoSerialPort(String answerPort) { + preferenceStore.setValue(ARDUINO_SERIAL_PORT, answerPort); + } +} diff --git a/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.preferences/src/fr/obeo/dsl/arduino/preferences/ArduinoPreferencesPage.java b/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.preferences/src/fr/obeo/dsl/arduino/preferences/ArduinoPreferencesPage.java new file mode 100644 index 00000000..78f88e16 --- /dev/null +++ b/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.preferences/src/fr/obeo/dsl/arduino/preferences/ArduinoPreferencesPage.java @@ -0,0 +1,57 @@ +/** + * Copyright (c) 2013 Obeo. + * 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: + * Obeo - initial API and implementation + */ +package fr.obeo.dsl.arduino.preferences; + +import org.eclipse.jface.preference.DirectoryFieldEditor; +import org.eclipse.jface.preference.FieldEditorPreferencePage; +import org.eclipse.jface.preference.StringFieldEditor; +import org.eclipse.swt.widgets.Composite; +import org.eclipse.swt.widgets.Control; +import org.eclipse.ui.IWorkbench; +import org.eclipse.ui.IWorkbenchPreferencePage; + +public class ArduinoPreferencesPage extends FieldEditorPreferencePage implements + IWorkbenchPreferencePage { + + public ArduinoPreferencesPage() { + super(GRID); + } + + @Override + protected Control createContents(Composite parent) { + Control control = super.createContents(parent); + return control; + } + + private void createArduinoSdk(Composite parent) { + DirectoryFieldEditor sdk = new DirectoryFieldEditor( + ArduinoPreferences.ARDUINO_SDK_ID, "Arduino SDK :", + getFieldEditorParent()); + addField(sdk); + + StringFieldEditor port = new StringFieldEditor( + ArduinoPreferences.ARDUINO_SERIAL_PORT, + "Arduino Serial Port :", getFieldEditorParent()); + addField(port); + } + + public void init(IWorkbench workbench) { + setPreferenceStore(ArduinoPreferencesPlugin.getDefault() + .getPreferenceStore()); + + setDescription("Give the path of the Arduino SDK installed on your computer (e.g. /home/user/path/arduino/arduino-1.0.5/) and the serial port of the Arduino linked to your computer (e.g. com3, /dev/ttyACM0, /dev/tty.usbmodem1421, ...).\n"); + } + + @Override + protected void createFieldEditors() { + createArduinoSdk((Composite) getControl()); + } +} diff --git a/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.preferences/src/fr/obeo/dsl/arduino/preferences/ArduinoPreferencesPlugin.java b/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.preferences/src/fr/obeo/dsl/arduino/preferences/ArduinoPreferencesPlugin.java new file mode 100644 index 00000000..e102cafc --- /dev/null +++ b/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.preferences/src/fr/obeo/dsl/arduino/preferences/ArduinoPreferencesPlugin.java @@ -0,0 +1,60 @@ +/** + * Copyright (c) 2013 Obeo. + * 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: + * Obeo - initial API and implementation + */ +package fr.obeo.dsl.arduino.preferences; + +import org.eclipse.ui.plugin.AbstractUIPlugin; +import org.osgi.framework.BundleContext; + +/** + * The activator class controls the plug-in life cycle + */ +public class ArduinoPreferencesPlugin extends AbstractUIPlugin { + + // The plug-in ID + public static final String PLUGIN_ID = "fr.obeo.dsl.arduino.preferences"; //$NON-NLS-1$ + + // The shared instance + private static ArduinoPreferencesPlugin plugin; + + /** + * The constructor + */ + public ArduinoPreferencesPlugin() { + } + + /* + * (non-Javadoc) + * @see org.eclipse.ui.plugin.AbstractUIPlugin#start(org.osgi.framework.BundleContext) + */ + public void start(BundleContext context) throws Exception { + super.start(context); + plugin = this; + } + + /* + * (non-Javadoc) + * @see org.eclipse.ui.plugin.AbstractUIPlugin#stop(org.osgi.framework.BundleContext) + */ + public void stop(BundleContext context) throws Exception { + plugin = null; + super.stop(context); + } + + /** + * Returns the shared instance + * + * @return the shared instance + */ + public static ArduinoPreferencesPlugin getDefault() { + return plugin; + } + +} diff --git a/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.preferences/src/fr/obeo/dsl/arduino/preferences/ArduinoSdkDialog.java b/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.preferences/src/fr/obeo/dsl/arduino/preferences/ArduinoSdkDialog.java new file mode 100644 index 00000000..df891aac --- /dev/null +++ b/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.preferences/src/fr/obeo/dsl/arduino/preferences/ArduinoSdkDialog.java @@ -0,0 +1,62 @@ +/** + * Copyright (c) 2013 Obeo. + * 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: + * Obeo - initial API and implementation + */ +package fr.obeo.dsl.arduino.preferences; + +import org.eclipse.jface.dialogs.Dialog; +import org.eclipse.jface.dialogs.IDialogConstants; +import org.eclipse.jface.layout.GridDataFactory; +import org.eclipse.swt.SWT; +import org.eclipse.swt.widgets.Composite; +import org.eclipse.swt.widgets.Control; +import org.eclipse.swt.widgets.Link; +import org.eclipse.swt.widgets.Shell; + +public class ArduinoSdkDialog extends Dialog { + + public ArduinoSdkDialog(Shell parentShell) { + super(parentShell); + } + + @Override + protected void configureShell(Shell shell) { + super.configureShell(shell); + shell.setText("Arduino SDK is missing"); + } + + @Override + protected Control createDialogArea(Composite parent) { + Composite composite = (Composite) super.createDialogArea(parent); + Link link = new Link(composite, SWT.NONE); + String message = "Set the path to the Arduino SDK in the Arduino Designer Preferences to be able to compile and upload code to the target"; + link.setText(message); + + GridDataFactory.fillDefaults().align(SWT.FILL, SWT.CENTER) + .grab(true, false) + .hint(IDialogConstants.MINIMUM_MESSAGE_AREA_WIDTH, SWT.DEFAULT) + .applyTo(link); + applyDialogFont(composite); + + return composite; + } + + @Override + protected void createButtonsForButtonBar(Composite parent) { + createButton(parent, IDialogConstants.OK_ID, IDialogConstants.OK_LABEL, + false); + } + + @Override + protected void buttonPressed(int buttonId) { + // Close dialog + setReturnCode(buttonId); + close(); + } +} diff --git a/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.ui/.classpath b/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.ui/.classpath new file mode 100644 index 00000000..eca7bdba --- /dev/null +++ b/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.ui/.classpath @@ -0,0 +1,7 @@ + + + + + + + diff --git a/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.ui/.gitignore b/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.ui/.gitignore new file mode 100644 index 00000000..5e56e040 --- /dev/null +++ b/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.ui/.gitignore @@ -0,0 +1 @@ +/bin diff --git a/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.ui/.project b/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.ui/.project new file mode 100644 index 00000000..e6bfa593 --- /dev/null +++ b/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.ui/.project @@ -0,0 +1,28 @@ + + + fr.obeo.dsl.arduino.ui + + + + + + org.eclipse.jdt.core.javabuilder + + + + + org.eclipse.pde.ManifestBuilder + + + + + org.eclipse.pde.SchemaBuilder + + + + + + org.eclipse.pde.PluginNature + org.eclipse.jdt.core.javanature + + diff --git a/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.ui/.settings/org.eclipse.jdt.core.prefs b/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.ui/.settings/org.eclipse.jdt.core.prefs new file mode 100644 index 00000000..0c68a61d --- /dev/null +++ b/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.ui/.settings/org.eclipse.jdt.core.prefs @@ -0,0 +1,7 @@ +eclipse.preferences.version=1 +org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled +org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.8 +org.eclipse.jdt.core.compiler.compliance=1.8 +org.eclipse.jdt.core.compiler.problem.assertIdentifier=error +org.eclipse.jdt.core.compiler.problem.enumIdentifier=error +org.eclipse.jdt.core.compiler.source=1.8 diff --git a/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.ui/META-INF/MANIFEST.MF b/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.ui/META-INF/MANIFEST.MF new file mode 100644 index 00000000..3553ce3a --- /dev/null +++ b/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.ui/META-INF/MANIFEST.MF @@ -0,0 +1,31 @@ +Manifest-Version: 1.0 +Bundle-ManifestVersion: 2 +Bundle-Name: Menus +Bundle-SymbolicName: fr.obeo.dsl.arduino.ui;singleton:=true +Bundle-Version: 1.0.0.qualifier +Bundle-Activator: fr.obeo.dsl.arduino.menus.ArduinoUiActivator +Require-Bundle: org.eclipse.ui, + org.eclipse.core.runtime, + com.google.guava, + org.eclipse.core.resources, + org.eclipse.core.expressions, + fr.obeo.dsl.arduino, + org.eclipse.emf.transaction, + fr.obeo.dsl.arduino.gen, + org.eclipse.acceleo.engine, + org.eclipse.sirius.ui, + fr.obeo.dsl.arduino.build, + fr.obeo.dsl.arduino.preferences, + org.eclipse.ui.ide, + org.eclipse.sirius.common, + org.eclipse.emf.validation, + org.eclipse.sirius.ext.base, + org.eclipse.gef;bundle-version="3.9.0", + org.eclipse.gmf.runtime.diagram.ui;bundle-version="1.7.0", + org.eclipse.sirius.diagram;bundle-version="2.0.0", + org.eclipse.sirius.diagram.ui;bundle-version="2.0.0", + org.eclipse.emf.common.ui;bundle-version="2.9.0" +Bundle-RequiredExecutionEnvironment: JavaSE-1.8 +Bundle-ActivationPolicy: lazy +Export-Package: fr.obeo.dsl.arduino.commands;x-friends:="fr.obeo.dsl.arduino.design", + fr.obeo.dsl.arduino.utils;x-friends:="fr.obeo.dsl.arduino.design" diff --git a/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.ui/build.properties b/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.ui/build.properties new file mode 100644 index 00000000..6c480f39 --- /dev/null +++ b/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.ui/build.properties @@ -0,0 +1,6 @@ +source.. = src/ +output.. = bin/ +bin.includes = META-INF/,\ + .,\ + plugin.xml,\ + icons/ diff --git a/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.ui/icons/128x128/hardware.png b/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.ui/icons/128x128/hardware.png new file mode 100644 index 0000000000000000000000000000000000000000..e3c9b18495b1f2ee8c0d6d814a0b71a70e7a6042 GIT binary patch literal 4109 zcmY*ccQ{;I_da?FF{30%K4XZ^RU$&dU^3byqm14r7(^E#dW$+rNHJuTh%!X~)QgOg zi%AhgbRvYvgi)f`@SXen?|05~&U)6```OP~`>gf8?@lo_HsIzI<^%wM+sF`w1#RrV z4?8RP?m;;BgNFH@E=Css>NC%sIJ1C0tIKTz6ma(M{i>tIcZHSVm6dnh%kG7jh0ywx zp0iNd)$X@Uaf?zWtNIw@j3Ie^M%Bbco2Nvc_qx&zpFcn~ibj@QZOhGFZKdSy*+RGA zu0^u* zmDu`_ZZ+9oW+l918-laLNLj}Yb#Tc-*_op^+|1>;kE(Af)|BDp0QiqCiqFqD<-Nnt zpFf8wzOfS$7QQhgSS9yl_otgK-gaF2Ahc_cpLU{6`+wh<7o?)@ z)tRf@AyxTodRo0M^;ht#;=j#4n=j-SR?gQt|6gX{-Wb%|$lJax_=jiMLp7ezsm;Lw z_q$Qx7w+$LqhMV;p>@E(oJ5y!*F^qL`Gx(`_du^}YFc9xI>x$LZ-#N`jHS8~f3kB6rO{ z

98zjfq^x%9Dqzhj2>7hNzLJj^W38Zwe8T+BaXhh|!N+YIuHMQ`qmn1uLPAH~H5 z;_9D{%LWV%>F|7(yJoYk;=z!V^Qf4ci-(6znk>-8Y$t&vM9f9)UppaHctH9aM3`U< z-igSf&v#>8qMu^NHC-mfOR_ss{?cd!@ zjQneTO6h;*#dX%6I194r3?syzzP~j_1*R2{giGg>VT^ioFiRuqWcj?f(i%U0b;MPr z!u_o2nPrs~$KYY!ytwE#eDJW&s>Y5y%~XS&*sTZ-^JE#j%bZ{+C#%c!E0Qd~$M8KODz8i;{d^Uw5~w6Hz#HW>jx;VpU-w9OM`h zP+?K&J(&l=x~4mdC7dXdce*raQuz8w`-_UWlTY+%zaqS>jtZ#>GxDk6X2|+&#Th%B zuIP^7^{;K8dV71dYUxzRiDm{-3t3_ix&i>CFQm0?HEqmYr6Ta@j>D>Ji*Ehdj*;}5 zza=Z@iqx_d>@T!N9k(3(cy1D2#(Rwg-s_BB#>gyf|M~L=GdJ(txxBFfdxAxn$aKgg zsIR(pz51^_9r|MPr2z7Bv%L2)xIlYw;s9tqH&m}72_;u&q?R=0^bHJT#5&mogdGW? zwiCOsQf!65*hvs?g@spQEnQouH#LGoY$2kgq~u{UCOlO~ROvjzZVoWzMN+&4sg27) z?Tc0mr6bGaBxg;zgwTtTKUe_t5+wwYf)cBuA4S7^;WA6QBdYuEDx@Sf#CWY^8sPwb zAYDxYS16|+?SotPe!Rwh=G$2(2sO~OKK&ravrb6y0$+75WV5H)dqV9bwcl062wVd# z!@~(bzuexb{nXI4qjo#dS#U1T`xg=NEC(yXk=!%05@o{1_~_kR1KqF`<>1@w0iTr8 zH>O*()KpbRcQB-+q$Ho2mUmn|2eps|LHz241H-(Wk8Y+{^RD|-@2gWV=&(|3Bv;RG z2MNdBtEMAOG)YOxJ?lmWK&LlTgQorPGHvO0&R>o@4TX$Q69LXdOI&a>lAQrXL9vGw zD(~5&mswDhD`W~UJ2N8iGHu&O?Itt@^#A~_`+wuVH}rC>*73~+Fwg9Q{-uRPq;oyJ zJ;p-*LQW2vEC9M-QEjz991vYN>u1YB;gE#y!<2o?#HDE@qB!I zF|>BSp2zQTAS2Y5c`Du?oKxiIObcxLT1b1)mQ1PLW}=;xA4Z&C5wClttnp)~)r znu-e6dZStj#On&rX#|P_Ab826;qV0(%*Y-YTd@~qxAC>@In||J88d<_$r>NUzaDLs zCO^+D>$s5CM+KW$qpRoRl#iNw?oSbTFWbEMCVKZa`{pCh+=zxLpV?zrOBP7r+~9mH zT|Ex#21QCin64&TWQ9dWy4Y%S0&*9)1Yb{1(9H6j>j%`~?u}WJ0J^s@mso zhh)p!ewn>wdNZTZA?n8XUr57m0r|BgHe2GBs>jeBxhQcssz0N%Ew3dKF+WirBj**X z9Q?JvOsI*>2y_c5GW7*P>J{9^YdJrY=BodbPH*>}N^MaP=zcg0SG?30@QzcxbU!`t3{?B)-@w9h@DXQ6&Pn?C)2F{ zje@~n?Wep!^EiZ~wDrVpA=v(0O|hOM|G=Vl%)(C&HV5uT?T!^P>NI2&T=M|&@;z<4 zpWbR^#)33_8hC1te6I&chfd9L!%NwLLcyfXv}9QH!Cf90!Xe+ybtX7JFq)C#U5dS! z78w0c%bNPvfnvQhRq7;VgHkgpqD(bbuxm180-OK&e8nY$(3*t2<9xhqj*0LV68&3NHbPAmdeUn;L zd_C;aD+h+stTT&Qt6}d?scl(XmcKVSibns)z6-wr(wT=KH5$F_tH_3)l>u#!(jE^F z&zbYoWc7cL>mB>J?@ryB3scNuJgu<+W=_Kh@|d(F3mSpvO$t-qmjd(_K0 zeP*|TKG8i58$K40zwW@V0`@*>f6?)cWwx7dJT5j6;m@WSQl(ClD&lTh>WCxMMNCPT z#S`knrc~owEC89MW1L#*vY|}On%fB1v?W7sIM*knC_iVjTXIW_MJ&ir2^1gxk;AQi z#Tl%-Zw1ii;P*J^vCEB+^{=*cw-EuKxz3K2r%LF+bI`fj&Zr3c(^m>0rI)`oNFuuT zE2VcO`cYK}{Hr?RRxZL_K|QM-@7EKMUkX{!Gd*`J7jDhIS-hyeHpBE^97z45G>0|F zI3w5=8nil;*i+qKs&Q}U1;s#pA!O#|KnRr=Xzg*ChYsgw9># zTHGYcS-1G>hsY8+Z_Dgs(PK*f$pq}t)2s*nVCYsAs6^5dAw%ZqE&!H-_3Dx)-(`ot z%mkxFwl>+#ae>jMYr7L#VhKMqXlx4oUOt7oGE01wdUG9O33t#kg|XpETzKZukVwV% z3hx@!1o2*Vu_93XD&}>fg{%M*EW;ag(zCWmAY-UO*wZ=Sr+xI?L^0F}(OK{fmhaYLuN4P-1h8FylX<5_(bA7S)r)-KgK9ii!9}Kf>ie7UsdLX*){IXHo|< z@->5iiQvq^ukgGJSZ9D4SG@-XOoM#Y%8OvNys-;gLjR=KpJQTTvJ7DcIbDHv0#Th5 zk$X3)y{nnT4*xq5qTS*JukZ#-#EjVx&Y9C3UMpX9BZzn#?Ingn?R-{!_5kQ6_lWA> z>yz~*p61!|{lYl*0^@`yM*R&*MMkTW_3^o7Z357_)(C4W)JeBe`qAlOpt6z@1pHV1 zjZ;4T?p3*Ehu7yzAa87!G+PpU)GnohBW$d!Ubv}QWl%LU9!S6Uv(WHQ_41i+N&&S& zTqfh1BnSMw-*i)jXWgfl?z<~v?=@on6Upy$oe+3>v@%v@ANV4$uEF&KFFZk=8Nu25 zTp~fe$@Rmty@APP2~dd`fI!U=$sZ(z9%;$}{c@4x$1b@)U;5=fL9&0yD{Eup9}wr~ zeEhKI<*lqQRUkk{-&@_21XFgrm}TI5n~PV0td!@;B^kbJU&g)Fh{;wCF3y%>g1bIb z4vq^v^-;g<=M$ipeAT=07tYPesk=3Ncjf+HIrirA7p$4OQ?V7Q0HDLJ!2@iVqfI#A o-_|!a&UO#CX-qEM9LaHsY`z(PuN_=`BZo~-n0@%{fq`Xb zZTZULzuv1A3E=*fr04*^XJT7@cA(VvzAKKAlNj4?3TfA;(WE4a#_$w8ofIJF`&RgNU@J`$4dD@ZB`H9!?^neDCZec! zz@A`>dlXi{N{EXF@MQdE&ewXMJzx-C2kP;DxCY{_UXSn~l-3ByTd8F+xmyLc@HiU4 zu`n&h7F-u4Q;7HycnRY9u`BvM>Nd8M)I>G=cN;;EoGDw$yC<7S>X#Jg~|GUL$WQSaPa3yyB%>#7Q{JtUNW_Vh(cLj>>!T9UM-^m*izbUEz!Al^t@9Ac4AB+ zAC6H;|FE*0II~zEthn&iu3d!d9DUN93stlJd5xTz`Bg@buD;V4PXr#IKB?yM}p{Z$c#Aw5LBI;F*wTSClsGz6tktl*GYPbaAECxtlT5BDhi8i4067`aN9Rvb(03#~lQbv)NYRaR_ORg@dZ^ca|xkolS1e+F)j zJh!Y{f&H|VtHc+d4C8aVjkm%@Fd3SO>lVkrYKX_vEPN^Nsl=*^bN)M^RSWzf&%Xpo zD{^{_b>LB>2!>%lej2nIKOD>RYvDdHj!H^ZJ%Gwq>CXEd7bJ;a=_~}p-U}~4RBQmD z;x(v2VBkFPA@C#AB)OXhr#Buxl@zE7_p9sy)bCqhc}hh)N;j-tBO9o&VhvaHIGdCThOUDByo=|LP=R@MMQpBD;KwPUM3y2!G) z;uyq%Wo4!62C!$3G;fy?#BL=442=2+!ffHQ#e z!DF|@%3lpD8VNhTaFAKKu|SnQz{x1Qmo4wpr0?$ogG}Vasbr<3svck$wEXYTONBcS zwAJ4Lic@OG1J8L;6{(^DIN-V*b}oUE_ahI#fG{mopXTp*sDxCp3-~8AtK!Qb_WfUj zXjkBvq*v3^S9Nmq%vmgWRQ_9lR|_=!%#9eAcwNUY6IYWTyQpaqdNEKX`D{|9?!ax@ zA3-n207=@N&I3K`^`K!oCRhs^Yb`lwU=nexf-<%GcwVgR4?vX~)rPH5@?B~Kv}05xl?Td8~Byb|Uv@!Q&8beZ9Q)!w_dEhe0h}(17#qg|G}>fL>Mpt)%^rFcoUa zNdpe>b_74@bhY%xByl`k;dTXX8s1?6qo_+iql6wIoqz?2=aVyOrDYD5SN3! zFnzKzU0m@aju#<~*c$f&zY5v|c5e`Vxy$8y);LSPZZ--FLtGglGXq$fbLVPj*5|60lH_8 zS!D(<{1#MLGttPd1r6c_0_pQbSY!%T)y&|#4@ZkU*Tw3U?Pz8gU|94_L_R+2`v=AXmm za1}fWtwiIr6=(<^&69ZyaGEHVS;dMJ3=D%tb>U>?kcDUe1i%S^E174!Ju&{?`a z=1=3>3iLW7$zud)+IU7X03$yIj)m!91>XXfHAu273usuqLXr!z^{<4ed*m{eSc#4o zGzc+IR&o|e>blfPE4}Q@^S_2cuoC@7pdI-ZFP#y2@e$6|S1ZxrtaMwv#;Nfw0Q0dU zJPp^tzrZ~Z#IoA;3@dZ1g6_ZzKLOoZGtr{{3v9(VHw(Z$6EvL05U-%~x%c;whv@b- zh~=O$SonKELu^+xOk4D>@CMko!S)>U5Os1OSZRtLN-q$vB*$$3`_rdPa zOf2_5z>gyjo#B|~Mv`Oz-oFmaU>doDKpMh-f_+Xiv6A!{x;vHnTZp<-E^`$<&;76l zY+Vn5u24lsr<+@FZTGeU8N+-6|4-w^EC&m5Ia~zSL)@~tH6-WpcV6RsG#~T? z2ZP4iOmy)_H_$U>6}|aK8!t6AfTRfRPi#${u$uR^_Wfa6gWWiO8#;-%-`>3qeZ0M) zAN8b*|2SL&j(a*OukJtS-Z8{5N%8;}5>nTbhggWaL2Lg@7!S2*(3m!or2g2}o0m9posm~$eHzbZlxwd7%I5gz1@Jhm@=eb{M>F|Rvzzt3 z%4xtcz{8*sG!J*@9lLIaNY7lKp4w!}H;WzfkWq<*(I`g3g|?R37S zaX3g^0Kb5`GRv<62YO$GR(ldWZcnE2+9_}^)W%RA9XP`OH<$xSV>%w?CnjQI7lYH5 z+8BDHgPYO)@!)D^&qP;aCT@k=5Q^7i}2*kG2^{{53tZGYcEIQ}kEj6}%5O-v##FS$87z7O#i5g1>gCB|i;l z1a85)RG3Bd9=7(|;Fl1(6i$ac%bH*SR`ywNJQOn6Al_PftAX1|{zUkFBpc6Y01gEI z8~k}tE&Z(ly}^6ou0}Cmwzb>p>&kCvq|XnI&%PQd<0cxw;>eBqwEs2m7K%8dQOs8~ zfIa)a%ykK48VCmPyawQ>JhhB24Or){13aq%EFWEEuU=`-xbkC<4-Dk{EkHvHez@W1 z#t*|fjp3V6%jnU7KPJ2pHmnLdSDXqi2-VWx8u%l{I|7^<4oTP;@&|&hIB5hf8P?KY z8gMo6KfvDru89^ctO|yEuH)|y?R=^_f%kTW!@)J}TJq7r(?qijehp7T_;QHTRO0W- zeD{%5p>qhNQT;7A$f&;*ZC?kj>3<7c$f=|_@2riWeFOM1`kPqEnvZ1KUB=oAWY@tp z=xt{xd_3kfut;%m`I{mW=+n5*pB=S4T5Iza>gPTI78wRkp&=T}tFOY zp9H-@EuCq=3ceK1gS!)=^1o|&2HKi=bz%TosTJ0l$ zI5vojV})noIcWAg9)9S$9Rtt>+2Z|?$$s#0m<`>SU69PEmsM!s0=N*GwR*n;&=B+r zBX$p23?TG9ws2eeV%QsM>5T>+BiV~#DLm993s%0~z(uA+Lr7x)hH;SR;?A+K2zG*6 z%Ao;W|7BqJaA%V&S^1BGV})Uo#sJ>LTPMLnaG+O9IW=Ive;w!%;^PFLIh)8dmDJ^b z9qea}pr$%HxPkhb3)3P@;(VASc>vd={}%>_y;0w&iU#ce?XLYjfMNr_uW|HxNRmeG zOL$sW{(2o%^{<0<|L2ylr(k0rwg@=v27#R4JGyk5m!~*V)ipUid0n0nS3E8UXSaX@ zH3!;xiqm!fpMWqpbVi^jXeoQ~G|&G23gUYwM7_;yt}Sq$=~OYUtI@&k5X1$we+D;( z@+yz3h>itP8`qn2NL;I43eF&spB;O-+mIPN2 z-n{^)j#)&vG#a}CD)@& zQ;gfC%$a#cTC%uaBtP#08(5y=v|hbgPwMe@u#VP3rDP(xy$j;j+z;3G;i+0=rE08z z%sPea#{uH$1?Z}8qnts>?uUM8`3}my(6=>JV8Qyq2>yhAK2e~K`aWuB9APJ`YTm%g zKcVkys0#)3tE8Vol?-4F`8}u$x*0V|IL%oCwyLrl!u8~F3e-}71{M+LNGoBzG?4F* zzto#A1?Xo~M7blSTn4?Y=y=*I$hMH{<*LV)KWqXxUqE@{1E(^RJ8Is zIsX-L>1q68rx~83LKfcgPFwu+_k$3J_ox&UyH3~G>C5d0N5Yi2v+PgcoN)! zyc7IN*KhVj4^o(%dE7C_6Ztvw=geLZO=QfHfm5~Ap33Bzmux$D*c~UCiTQ`Vd(Nc? If8ezL2cM?zUH||9 literal 0 HcmV?d00001 diff --git a/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.ui/icons/128x128/hardwareInvalid.png b/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.ui/icons/128x128/hardwareInvalid.png new file mode 100644 index 0000000000000000000000000000000000000000..04b414814e48103f593c45fd5440c06440e76708 GIT binary patch literal 65912 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 literal 0 HcmV?d00001 diff --git a/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.ui/icons/128x128/hardwareInvalidHover.png b/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.ui/icons/128x128/hardwareInvalidHover.png new file mode 100644 index 0000000000000000000000000000000000000000..972434ce11ebec977c1083ba5b40895b1b946c61 GIT binary patch literal 66938 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 Wb{}Zm@7)bdqYR#|elF{r5}E*5y+S4c literal 0 HcmV?d00001 diff --git a/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.ui/icons/128x128/newProjectHover.png b/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.ui/icons/128x128/newProjectHover.png new file mode 100644 index 0000000000000000000000000000000000000000..b28974779787a894f5644f9a9e162fbfc6860c39 GIT binary patch literal 1155 zcmeAS@N?(olHy`uVBq!ia0vp^Eg;On1|$PrnwJA9mUKs7M+SzC{oH>NS%G}EByV>Y zhW{YAVDIwDKoQOYkH}&M25w;xW@MN(M*=9wUgGKN%6^}TO+ZxrU*C_HK!X@OT^vIy z;@;lfo2MKq)AsSRsq$^7H;1N~D7?rN5H%4A2zVn~Ah;#EkXa;#;ZoR@3yMpo?f^Q- z(Y3LGPb^hbDLw5R`_zf|k9?eYpml>$@hS9qn z%QF3X4C}8w3;TF)_Rku<;~bCrtgWr9Q+g^xW=nU2mBDP8Zs{ zK5W2af9=`2W`(@So{KrZ;suM(J-)v~q7!O%-VLDQJEeEsyGy-JTA084eJSd<$ks>+-ELQs4J}_s?=pu6*x%|NDDgdF76-M2R>L&AlfkWoUX6(-{20HWJNz46# zvv)hapYyvaGj`3^|1p-af=)Y1%xBMK6HKlVaM}?*`?mV!mtUTI`SPWIwcY*FyXoPz zdBVB3?cV*ayR7iqdGn7*l>ai_@p?yF zg91m#+If1xUh-A%@2@@kcJi{!d2{B^uaBB-9Tv?R=rwccl(eloYai|1A3xhNEk{y- zh0##}otPfCa?7=Ke^x(memF;Z*0RcN5$3+dX7kTqpS#I?%~sWx4>_50f9;DeKeaWM z>(PW{gJTleZ(kbl?ANwu6sQ1+9vungZQ4VelF{r5}E*HIOqZZ literal 0 HcmV?d00001 diff --git a/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.ui/icons/128x128/openProject.png b/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.ui/icons/128x128/openProject.png new file mode 100644 index 0000000000000000000000000000000000000000..cba2d9e180eb417022f8d78ebee454c9f6460644 GIT binary patch literal 801 zcmeAS@N?(olHy`uVBq!ia0vp^4Is?H1|$#LC7uRSEa{HEjtmSN`?>!lvI6;RN#5=* z4F5rJ!QSPQfg+p*9+AZi4BWyX%*Zfnjs#GUy~NYkmHj>w8^4O-?b>zj3=B;3JY5_^ zD&pSWvCq04z;OJd`u_GO7oUhV$}IfC_wB+;3-*&Y7OKCvU^;u@53M#oI|p%R&c-Qh z;&tqo2dfDr?wDq1DbAvI11!aWwkHZU{O?^M-8qKWHdaI$QuYZ2q?YHfh-s!E^ zYY;eeG;QW}of*wNL-;w`Z?jWd)QN9{X5gWvlfzZuY8G zhl+OY(Rlk!@7RrY0h@V0I}D#)zI@p|UZym*o|FH_pWA&B$^TynzsfblYBH&QTbNM|U(Ni_fCz49+4RCLxdOQ6R!k6FCQ zeQ2J)>RRuz%zbU_HTm0Rckk1!SNS%G}EByV>Y zhW{YAVDIwDKoQOYkH}&M25w;xW@MN(M*=9wUgGKN%6^}TO+ZZf(z$$N1_tJ@o-U3d z6>)Fx?#)vUm1+Crs}IV5yz`1P&2 zXA^fiai~pc3tPA@TRK^%H<2|ali|I1Q$xhhNreRk5BmE0*1g^}?RHt8S@_xN`FVMH zcC+{8J#~!8_Km&Xm)z#Iqg4M%9;cG39g!cap@ApKly;iQ+lCOR{H1zALRl8*r->&SNLXaA-S}<)=PBoktM66s-oJl;+4*T+Yqmc7@neVHS>0P}(LKyer{WfX#*wZQe)ck7(hnf>+N^He$G2X%9bPe%Q& z>@k%5{7pjXScFYm#`fFmk3IevzI5kqi|0OGFE5|m_I;izbC&|pf+q5aq=oW}=l|=l zzgKnLf9G)tUyj7}Cew@mZ7}&Pz|H$8w!Y%d+I6oV+3K{k{^N`^TEM}SwC?!qu+?98 zU4FS|R!)9?{{Nl3cmIC9rq=A{&!0a}KP>o>n)yyoQ}y}Y|NrJ2AHNgb^D)s{5Puyv9Qdvo8Vx=^u@EPr9!8-zS%Auk$v{s zwQKT|bKl!Kn%va7=Vu_*TQ}=o+Q|k54vuL(Y?)i5)~m-yXZIGryZ^OTa?kf?uU>hr zQ|@RhIJb1lrS6xTANC)A{OINf@m^JCOl$B2VA8_(D|-y>GPmEBpZd%!^xRL+%w;dd zWL?yc-OxOnyGr0t7?2NkebPEr<)vH1oqp^x`M&RjWqr`B%w3hu74w3s;$|KGl>l~W z6Ue#9#E!3COShJ(EDsK9_3K5PP8c4Otk&uLZYQ0*!{*b`YI%Nse)+$Gzc21* sG~sr1Xc2HSYWeuWiDM<_@w|FwzG}ZYkIzd)0LughPgg&ebxsLQ0L=N{{Qv*} literal 0 HcmV?d00001 diff --git a/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.ui/icons/128x128/preferences.png b/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.ui/icons/128x128/preferences.png new file mode 100644 index 0000000000000000000000000000000000000000..df11a7b7d8d8442e7d92135f55e1d866374258c7 GIT binary patch literal 4833 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 E0Yy>P{{R30 literal 0 HcmV?d00001 diff --git a/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.ui/icons/128x128/sketchHover.png b/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.ui/icons/128x128/sketchHover.png new file mode 100644 index 0000000000000000000000000000000000000000..8f43e8e162dc657bd9909aac32a798bfd222e036 GIT binary patch literal 2527 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 literal 0 HcmV?d00001 diff --git a/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.ui/icons/128x128/sketchInvalidHover.png b/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.ui/icons/128x128/sketchInvalidHover.png new file mode 100644 index 0000000000000000000000000000000000000000..6d2ba1a5812c3fca9086b83719a9758fa77c0b6f GIT binary patch literal 70076 zcmeI5Yitx%6vwBJE!*z)O=&5ifIz7+7$KM_rinErv?*!(1Kn(!`F`z^Ve1IUv z_(%$|;R7LrZ+wtQP^gliH33l)qD3UJ5MrbvLTL?s?QVD3^^CGI`|93#-aEVhHS5mI z-h0luzx&^N&)gY0AGEft%+IULlO!p>v7!ED`rI$SojLUX)%EWlr;qH7bbgIi0 zSnr_yoX)0|^-@Uw@7UMJKcOSJ+ZxuqB}uMQ`JEvhK2kvkr|oELUNP;r%;JJ2HT5TN z?~|mtQe%Bx+s+KBYVYrRs03ah00JNY0w4eaAOHd&00JNY0w4eaAOHd&00JNY0w4ea zAOHd&00JNY0w4eab|uigYvEw{UI4qc!Q{9z%(CxxyUTn&Uu7s1$|oP0X8B2TyCG`7 z$Ki0?t*WZJ-QV9I)XT$gL6n!5JBEjcm-_wwGQGi}K0AS|tgLaD%XN8VWMq`RR&2?v z*hAWn%$qka^Uj?+%L9QxiFPZfsf7TI#5wdMoK;j*bjR!U`nA}Q>li8skH@o64oYh< zsHcwri6V=BjQPP}@DHt)vb9!>uGhDHyF8!aWf6g;2M?~Mjt@k;BSB0rEiH8q4GoP& zf5)<~JBOg0q2z2w#}JD%lrf&bGhJQH(N>*K=g%~4+=@QVvac)qr<}nFF|c4ZuS`#8 z=ZDeOY3h*g(bx3SC5V%)tsYHYQOPg@m4$^*8fJ_PX%<97LxbkJMm7MpBU#l%5C>f;ttN5cdWb>^B#sH%{YG)fl1=0jmSDDz69~dS zePv0cT&4`l9~K;IZvH6T!UtY&q1W%v4ezJp=lydYr8;6+|gzYv6=9m6Xu2!a=RLH$Ayf_4nAupkItF9acI$M6aZg5X77P`?m_pdG_2tTYnD`oq`gw$%Tg5x@(#z5J$;IPBFi zyrP95c##*>F9acI$M6aZg5X77P`?m_pdG_2EC_-Zc|rX`5Q26LudpBpUgQP!3qc6l zF}%WpAb61%)Gq`fXvgph3xeQ9UQoXfgrFV6D=Y|t7kNSbLJ)#>j0s`AbM5VJb@u|? z+B17E6k%*(3yE=iW0Rb}oOB%!GENgvqU2xArI-(%nsK&lbNR2#bMF<&FfP z`-!bn*=P95MhGp`1h3=w`^)LEiA7q%gdns~vq2q?$5X8(Ob9{?H5=5S zQDR16VPUb_P&Er;T6T7&T4yM4ErE%N3Du*7CPB=eJzLZKWG#;L@)j?7r%|Fz?I@v1 z5MQ*l{heO8?b}*f9bTj+dewrMIdkT8H4aeLIs)-Vi9jGQJwHERJ`H7hsTRbS?d^k1 zmQhF;0&31UGSo!9v9@;6=4H!%WvL@Stdbsd{TC_pGD~^0%edX{C+I=sbXvS7^m ze(l<|8D6hf7DTBLZ?ZMltXSjOJ$?GL+S}|p8$53&{JQ{j_E8hhPxLWnah%<-;r-~! ziS}y`9a`^jIPN~6SE4dj9`EVtDW*}&X_QaO&h$g^74M5>Eqw&J)S?N5rS0=VF#2)Tn}&a_@w-Ssa<+vBQX@xVx3Em4YhTR7$qp~ zDOWO+g8OdEmW!-`heroW9k?!HJv%A+Ea=E#=Wzl7ahK6QFA2WM@$JML4a|!yv zCd?(03c{6>^SqiyijX_hR#oj&6EjQM?>B8aO4G!E@=f=O8agep#BuK2Io-JgoiQa` z$(&LUYUbfbqr-hl;F6yAvNT+4nby`;({2Ew;r5F1Jvut7>4p@oZ41}aJ4(=fuEp_2 zJlXz~f(Qq|`bh~3_cM!EU9Ll{@v1FHIl}_Ab<8Ml#3+#{mq;iG4Wq*_t%?nq0YHt- zr)JF9pr*Wu@%elar=T%{!05oQgSB{Ga^OGdgVG4L?L#2?M@;vxM4TB$2*N(iiiz|>->wS@?*)h{jRP?RXzCcN zsi}#$=#?tsh-oYiBqb1}OAc51`uZZ0R9*Q*QkN(oBmo*3d?bb+>5_QN1xbt$LUx(C zLCu;qtCz$Okw=6*MhIeEZ?7Z#1wK=gfZWFe0|S9Xt&0!@%_j*9CNhBI_9Bq1k999& z+Y3i}M@!4tar;|IC1C-&>{~!r`h>WHS{X35)e~qwaiWl>i4pZRQ3C`(00ck)1V8`; zKmY_l00ck)1V8`;VhOZgJo<_x74zD26)p9jy|ixMKQoex{r~^~ literal 0 HcmV?d00001 diff --git a/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.ui/icons/128x128/upload.png b/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.ui/icons/128x128/upload.png new file mode 100644 index 0000000000000000000000000000000000000000..a32a9dbee97447f965ee8e3d1301bb3958f373f8 GIT binary patch literal 2975 zcmZuzc{r3^8-IqeOQT*I5i>(%OZJ`DG_qyMPAH~C#xf|0B3Z^RTVd>55*lU87!`)s zmQg5*@G%p{6tX0IkN3~-`mX0X&w1|OecjJF=f2N5zh9z_mB|s_le_=`95FM+*n)lZ zVdLfm-(3ct17HWeVPt6p0Hk!jKb{<*&FN)ff&mT=pOTL1ED+%dGIa?70KVgg4Fcp7 z;ULHrYG!H7HN(bvR0b8gN_GW(VrCd4`#T=YLTevUC-L4W)>cH|^q)sRo(dyLnFyis zcqw~hf9}aj{aCRW0c{qt<()WR-00bXM*Zxfi#{jLTSwd!h>&ad$0u26CY){e#vfJ3 zC1KgtN{^T+8`m?tn-qt{^|Gjmb(;HOs0^Efo}%bl?V(D zIp^MsUldKH&J7i4wnv=OO+Dujz4}*j4{2;{Y@)fj`J@qyd<^>5;%mT!Lyj&tVLL;4 zQxUr&I=pl7?Bm_LzP{g!o)KrcYaDBH=e3-)=vkOhE+9tA7!wA5r_H;84q8-H3S z6TFAOg7L<^b3t~ib+`JuWW&5(+ngcBd6v7KZMW^`p?;F?ZoT9pjK$fRYhMD_F?zf7 z)K297F~KGTbx1^7@REG-`ztZeZENh^WEZ5am3z-9-KxmW$}vBE*_wT3>-}+>zs(FF z868as*rh~?H%8OLC*W8=*!;WH`$AaU&^p;K!*S`Cj=5~Z`IKb!$;-C=%fIfPLRw~< zR}x`fyk2f4k6h7&8rz!ehiWzo!s$os%7;rZn3p|XKjDl)27}>?xkygds6}_{mY0`T z8=0)_M2ZMrhRvf>1kPe`3+p>749xaWpiv6nIUO>LR5_GY;;bO9n!fjzPmm?$A#*0j zyzQ0Kw!%QZT@OPJm2bJiEb(Z-PG0#{ksZ|;G#isMurO`gvm}S?wns6czJdQq98Abi zlQClSeB&-SlOt1ATajJtM!xeiPmtW^w(9TT;;#O}8w)PJy3IdIXXr8{Gf#jH0YzLbJ2iK4>kPRH*Zy)6(x^YinQPb6l;r;8EP9hu6Jsg9bln{Hbic?tugqkp&yvj9Pf z4Y!U#Jh5u&d}j7_mn%fwuwl+2nl_lYu!NBN=YK)WWEB@p82QlB-uJe3j*9LlJTDgP z2p*2gf^7#NxhEuGM%dCo4# zoQ~ZtbFHhI21m|BZ2Wdg>Y01;Yy^>`zAhPR9y7A;4`#IR*_)DUF5??~O5_Y}5H~x- zwdhfogy6B@o-znoyy!iYK7s^G(t<3Ds^#6d+~sv2GYV#u($On`lGYjX`!sl%o_hp* z)Ndrl%}=9%I}SY??hs_C{(R9yDi3;Sz3|s1Z60`P8lq~XUii23jlEoT)b?zGwLLz9L?S^5tz*pFT#fV2FsO_+Am+p&uD-myoZ#9Q9a6Ni zrGSAb*1Umj=KM z;MnnRPEXW)I5>@7l=7-v%R+E#z<_aw2l0cAX~2tTNh;TJ9iY+8a{U=DlYQ`AGokB! z(%{Xj1$=ShSh`UCA$$x^td|QIc{Rm+uvIITxl2^u?2t3pybm4^Kj7Sx1)3^9ct`VV zMyT*337^myaxJggwc{9aa@zc0E!&aL-FRX+PVHneVcSLs*C$NaenIn5P>E(HA`7kP zn$OU$-)MIx5OgRMS5Z+>2Zsy+7%fVta5xb1cX5p;e&O{h%jmpSk)BH&oZj%Ttj3cY zc%xkm>9P?FPXhq($S+UN#y|hpu&}V$BKVYs37&UEl*Lt6Rz?7xYyfbMO8L@GKw9X1 z|1}Tg-hycGL#*%aX+f+Cb#5gqZ?3Nz^Se9%`x?9I0ON!EM1YTvPZYE9d9??`2?m#) zo$u)J2lbZNAiHOZ6utV6Sx1m1AGn@yBxk*Nf-6&3k00c+9xvrbymZx+w6r3DiIcWPt+d%VLLH4p`%rRxCz688EIB}T zI~o)#Jxq(WW?K&#kwMO#Vp4Xj?LdyqOPZyD+}^Y^$p9WHGKqfkr1^ny_!Jl(%t29Tnv&$zk4!HYYza+4dczpmbCnW}>t1swy@ zxQu>?0oy<{9 literal 0 HcmV?d00001 diff --git a/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.ui/icons/128x128/uploadHover.png b/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.ui/icons/128x128/uploadHover.png new file mode 100644 index 0000000000000000000000000000000000000000..fe10284a9d9376768026df9b4fe0620f8f2a11f6 GIT binary patch literal 4962 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 IM6N<$g54Bh&;S4c literal 0 HcmV?d00001 diff --git a/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.ui/icons/32x32/newHardwareKit.png b/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.ui/icons/32x32/newHardwareKit.png new file mode 100644 index 0000000000000000000000000000000000000000..7c1fc36ebc0f812311e5110da255cb614d64c96d GIT binary patch literal 456 zcmV;(0XP1MP)X1^@s6P!BAT00004b3#c}2nYxW zdPe@Vp65iYmpH`z}?wIcP(<^@nCp!=j`t6o540|0hEA4 zpanQ3TA{WSd{vr@Da6iz2`bSPj>X>KFqz%eDi%9%VA*rN?|eIR z&e;huMw_`tHZ^-EpcBvu_#Xs});U55BbdS=OkjYy7~@J4VF+OY)7XbEc#VY^JEpRgdRIco~OP^W<*k zKiedrr#yg4wtzj@h53KL^x6i|F???!dW+o&W*oCEm~S}VIthn_QaU92S&~el;BqSsxq(!(05f>ui(xrrmOA(P4At4d8h>(bI5fLHM!i7jg zw2%mCAt50V5+V{ULSzsLS0N%&ze8{2czyT1H)eI=FxPj_$NzlZtK)>MSS)s-q@-k= z?Ew6wGh<*z(rKO@ivKn5Bb8vYDOO-&7Y+}msq zA{stMfL<&sD?4{8{QLxrW%`Poy# zTScMwmUIF}XEg{M8xIvk=(!R)#Pbf5hx*9Ew-t}aTfK zvf^C~0x+Whd<=-x6+G|7n|m_-2>&pDUt@0g78!gul-@nMEN0WKkv`T3cqnsW(*r5} ze!%_{v;=K?;hmG5187vsdUbRZSsbuN_KN~=qNr%ECL>BFZIhbb#>Ph1kUOvW0Cd#` z;Hv^~%gA{ff+IcyO4ANe7=v$6%O(=!4JTuTE1AM!Y zf>vMadT_9R@5cj>F&hA6Hd3k7i9QF=u;SaVuC9*T0BFVoD*NarLvfOGx$|Yt?^pn= zLc4(MH}t+$Jj=H5OM6MK4i)oc;Y|9R^X|I3IwBhDagL8`>44W#d=y-Zu5$L5wNCGz zu`i6i)H$_HI25-@zQsG41Ae_-TU#sl!IIMV1Az5G_9e%HSU*74Nkzsv#RA|%BTAD| z1t*RCuHtcXRKpaRybGqBlQl9gZ-!6>a&N=@&QP$6(oxP5L9zht3~E&YK|zOu@E#RQ zK1z1vmITZo>FT0JI@tH|?XHYw$37#Df#9kR2f@8B_xZCZN{gk)AY|cbPgL(zy6zye zer6zK5$-OzC80IPc&hU)FD;DWAtIL&e!3?Y1qA%jK@=9Rq8OJCZ=X<(1 zhIn+oy|&SNYN80+hx;p|n`0r@oS5jAu-ifl?H4QzJhZKg zZ7N&4lb|{~_Z3GE4=cX!zaLcneP{Y`x8L_h_I=-N-&f9mK1bZH?@WkL@Q>Cv!ru+6 z-8LUS@ZPR#y3L`0m6ELn9UVmY}Gb2o0m?z*JgR=U{RW#`)LQ4JBOv1CeQr2?z*mEp?taZHglum zzfF6lM`%pzH~JiX^Iz)PYdMQA+ARweTzzi)*U$A&OgBc)i9hMn+aYm$^P#IXY4c(N zjvDNHknR2=-sR4TGyCrr8Gp7=ip#eBc)3G@zvhtepMxg5;sS(cMI7<1S+Z+x_|dDc mqc;CazVj;iYUqultAn%J)Vx@^Vh;l2hr!d;&t;ucLK6Uqj?#Dl literal 0 HcmV?d00001 diff --git a/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.ui/icons/32x32/upload.png b/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.ui/icons/32x32/upload.png new file mode 100644 index 0000000000000000000000000000000000000000..a0b84138cfc494a8b0cd10478f8fbf25e9c4bfad GIT binary patch literal 535 zcmV+y0_gpTP)S5Ki0tkv3p&9!d@(#j|)6A45tJAHXN@AijYI@hqM_i-`CPJxL#-cnCe`5Tt&y zZc4gscW2X-EPP~3v-5qKnVp?=9Oeju;GorNje%$UoB(s+SAymf`j6hBce!?rqtodO zVe|#l3|KIc(HdG?nK%r?2u2<-%`J#kbCz5uXe%j2&6q zcmDD!A|$ssSZeulbwp8Q5<%SJB-^I&8+a=KPh6NtlO*xWYufF$u22!TI8Isn7h7j! z5-=DHBCb8j-MoM~cLCh_1dMb*n651Z%uPwSZ%jDbupELr-}ldSKruY$+7sN&LbR70 z5Zo4}c!Bud#BqG6L%-iYVhYHX&8x*>R2!Cu5e@Efj4Xe|yO%n^OIHj5`C7-!X-MkI zfwhK&2B#&%!dKu{2YBh;AYi(+O|Q_D+9EZ!=Z&`IiYJ=6n3Qv(v8$O9l4dTa>e$!y Z{0|6sjIe`vUk3mH002ovPDHLkV1kXf_$B}V literal 0 HcmV?d00001 diff --git a/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.ui/icons/svg/README b/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.ui/icons/svg/README new file mode 100644 index 00000000..9b7f9796 --- /dev/null +++ b/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.ui/icons/svg/README @@ -0,0 +1,25 @@ +All the icons are coming from : http://iconmonstr.com/ +Licence : http://iconmonstr.com/license/ +"License Agreement + +By copying or downloading any icons from iconmonstr, you automatically agree to the following terms and conditions: + +All ownership and copyright of the icons remain the property of iconmonstr. +All icons from iconmonstr are provided as-is without any express or implied warranty. +All trademarks of social icons are copyright of their respective trademark owners. +You are allowed to ... + + +Use in both personal and commercial projects with no attribution required. + +Use in a website or presentation template or application as part of your design with no attribution required. + +Modify in shape, color, size or otherwise manipulate for your needs. + +Up to 50 icons embed in a font or regenerate as web font via 3rd party tools. +You are not allowed to ... + + +The icons may not be sub-licensed, resold, rented, redistributed or detached from a template, application or web page. + +The icons may not be included in any online or offline archive or archived downloadable format." \ No newline at end of file diff --git a/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.ui/icons/svg/hardware.svg b/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.ui/icons/svg/hardware.svg new file mode 100644 index 00000000..dc1e865d --- /dev/null +++ b/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.ui/icons/svg/hardware.svg @@ -0,0 +1,27 @@ + + + + + + + + diff --git a/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.ui/icons/svg/hardware2.svg b/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.ui/icons/svg/hardware2.svg new file mode 100644 index 00000000..150b627c --- /dev/null +++ b/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.ui/icons/svg/hardware2.svg @@ -0,0 +1,53 @@ + + + +image/svg+xml \ No newline at end of file diff --git a/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.ui/icons/svg/newProject.svg b/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.ui/icons/svg/newProject.svg new file mode 100644 index 00000000..4bb93949 --- /dev/null +++ b/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.ui/icons/svg/newProject.svg @@ -0,0 +1,19 @@ + + + + + + + + + + + + + + diff --git a/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.ui/icons/svg/openProject.svg b/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.ui/icons/svg/openProject.svg new file mode 100644 index 00000000..6aaf50c7 --- /dev/null +++ b/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.ui/icons/svg/openProject.svg @@ -0,0 +1,19 @@ + + + + + + + + + + + + + + diff --git a/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.ui/icons/svg/preferences.svg b/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.ui/icons/svg/preferences.svg new file mode 100644 index 00000000..369df827 --- /dev/null +++ b/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.ui/icons/svg/preferences.svg @@ -0,0 +1,16 @@ + + + + + + + + diff --git a/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.ui/icons/svg/sketch.svg b/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.ui/icons/svg/sketch.svg new file mode 100644 index 00000000..c7a188ed --- /dev/null +++ b/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.ui/icons/svg/sketch.svg @@ -0,0 +1,14 @@ + + + + + + + + diff --git a/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.ui/icons/svg/upload.svg b/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.ui/icons/svg/upload.svg new file mode 100644 index 00000000..817192a5 --- /dev/null +++ b/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.ui/icons/svg/upload.svg @@ -0,0 +1,21 @@ + + + + + + + + + + + + + + diff --git a/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.ui/plugin.xml b/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.ui/plugin.xml new file mode 100644 index 00000000..4b55ee8a --- /dev/null +++ b/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.ui/plugin.xml @@ -0,0 +1,286 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Arduino Designer perspective + + + + + Arduino Designer Debug perspective + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.ui/pom.xml b/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.ui/pom.xml new file mode 100644 index 00000000..0354c975 --- /dev/null +++ b/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.ui/pom.xml @@ -0,0 +1,42 @@ + + + + 4.0.0 + + + fr.obeo.dsl.arduino + parent + 1.0.0-SNAPSHOT + ../../releng/fr.obeo.dsl.arduino.parent + + + fr.obeo.dsl.arduino.ui + eclipse-plugin + + Arduino Designer UI + + + + + org.eclipse.tycho + tycho-source-plugin + + + org.apache.maven.plugins + maven-pmd-plugin + + + + + diff --git a/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.ui/src/fr/obeo/dsl/arduino/commands/DeleteProjectHandler.java b/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.ui/src/fr/obeo/dsl/arduino/commands/DeleteProjectHandler.java new file mode 100644 index 00000000..4f878c20 --- /dev/null +++ b/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.ui/src/fr/obeo/dsl/arduino/commands/DeleteProjectHandler.java @@ -0,0 +1,96 @@ +/** + * Copyright (c) 2013 Obeo. + * 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: + * Obeo - initial API and implementation + */ +package fr.obeo.dsl.arduino.commands; + +import java.lang.reflect.InvocationTargetException; + +import org.eclipse.core.commands.AbstractHandler; +import org.eclipse.core.commands.ExecutionEvent; +import org.eclipse.core.commands.ExecutionException; +import org.eclipse.core.resources.IProject; +import org.eclipse.core.resources.IResource; +import org.eclipse.core.runtime.CoreException; +import org.eclipse.core.runtime.IProgressMonitor; +import org.eclipse.core.runtime.Status; +import org.eclipse.jface.dialogs.MessageDialog; +import org.eclipse.jface.operation.IRunnableWithProgress; +import org.eclipse.jface.viewers.ISelection; +import org.eclipse.jface.viewers.IStructuredSelection; +import org.eclipse.ui.ISelectionService; +import org.eclipse.ui.PlatformUI; + +import fr.obeo.dsl.arduino.menus.ArduinoUiActivator; +import fr.obeo.dsl.arduino.utils.ArduinoServices; +import fr.obeo.dsl.arduino.utils.ProjectServices; + +public class DeleteProjectHandler extends AbstractHandler { + ArduinoServices service = new ArduinoServices(); + ProjectServices projectService = new ProjectServices(); + + @Override + public Object execute(ExecutionEvent event) throws ExecutionException { + final IProject project = service.getWorkspaceProject(); + + boolean confirmation = MessageDialog.openConfirm(PlatformUI + .getWorkbench().getActiveWorkbenchWindow().getShell(), + "Confirm", + "Do you want to delete the project " + project.getName() + + " ? (cannot be undone)"); + if (confirmation) { + projectService.closeOpenedEditors(); + + try { + PlatformUI.getWorkbench().getActiveWorkbenchWindow() + .run(false, false, new IRunnableWithProgress() { + + @Override + public void run(IProgressMonitor monitor) + throws InvocationTargetException, + InterruptedException { + try { + project.delete(true, true, monitor); + } catch (CoreException e) { + ArduinoUiActivator.log(Status.ERROR, + "Delete project failed", e); + } + } + }); + } catch (InvocationTargetException e) { + ArduinoUiActivator + .log(Status.ERROR, "Delete project failed", e); + } catch (InterruptedException e) { + ArduinoUiActivator + .log(Status.ERROR, "Delete project failed", e); + } + + } + return null; + } + + public static IProject getCurrentSelectedProject() { + IProject project = null; + ISelectionService selectionService = PlatformUI.getWorkbench() + .getActiveWorkbenchWindow().getSelectionService(); + + ISelection selection = selectionService.getSelection(); + + if (selection instanceof IStructuredSelection) { + Object element = ((IStructuredSelection) selection) + .getFirstElement(); + + if (element instanceof IResource) { + project = ((IResource) element).getProject(); + } + } + return project; + } + +} diff --git a/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.ui/src/fr/obeo/dsl/arduino/commands/DeleteSketchHandler.java b/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.ui/src/fr/obeo/dsl/arduino/commands/DeleteSketchHandler.java new file mode 100644 index 00000000..68dcf607 --- /dev/null +++ b/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.ui/src/fr/obeo/dsl/arduino/commands/DeleteSketchHandler.java @@ -0,0 +1,25 @@ +/** + * Copyright (c) 2013 Obeo. + * 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: + * Obeo - initial API and implementation + */ +package fr.obeo.dsl.arduino.commands; + +import org.eclipse.core.commands.AbstractHandler; +import org.eclipse.core.commands.ExecutionEvent; +import org.eclipse.core.commands.ExecutionException; + +public class DeleteSketchHandler extends AbstractHandler { + + @Override + public Object execute(ExecutionEvent event) throws ExecutionException { + System.out.println("Delete Sketch"); + return null; + } + +} diff --git a/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.ui/src/fr/obeo/dsl/arduino/commands/NewProjectHandler.java b/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.ui/src/fr/obeo/dsl/arduino/commands/NewProjectHandler.java new file mode 100644 index 00000000..da9a93f8 --- /dev/null +++ b/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.ui/src/fr/obeo/dsl/arduino/commands/NewProjectHandler.java @@ -0,0 +1,34 @@ +/** + * Copyright (c) 2013 Obeo. + * 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: + * Obeo - initial API and implementation + */ +package fr.obeo.dsl.arduino.commands; + +import org.eclipse.core.commands.AbstractHandler; +import org.eclipse.core.commands.ExecutionEvent; +import org.eclipse.core.commands.ExecutionException; +import org.eclipse.jface.wizard.WizardDialog; +import org.eclipse.swt.widgets.Shell; +import org.eclipse.ui.handlers.HandlerUtil; + +import fr.obeo.dsl.arduino.wizard.ArduinoProjectWizard; + +public class NewProjectHandler extends AbstractHandler { + + @Override + public Object execute(ExecutionEvent event) throws ExecutionException { + Shell shell = HandlerUtil.getActiveShell(event); + WizardDialog wizard = new WizardDialog(shell, + new ArduinoProjectWizard()); + wizard.open(); + + return null; + } + +} diff --git a/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.ui/src/fr/obeo/dsl/arduino/commands/OpenDashboardHandler.java b/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.ui/src/fr/obeo/dsl/arduino/commands/OpenDashboardHandler.java new file mode 100644 index 00000000..d95e95f2 --- /dev/null +++ b/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.ui/src/fr/obeo/dsl/arduino/commands/OpenDashboardHandler.java @@ -0,0 +1,39 @@ +/** + * Copyright (c) 2013 Obeo. + * 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: + * Obeo - initial API and implementation + */ +package fr.obeo.dsl.arduino.commands; + +import org.eclipse.core.commands.AbstractHandler; +import org.eclipse.core.commands.ExecutionEvent; +import org.eclipse.core.commands.ExecutionException; +import org.eclipse.core.runtime.Status; +import org.eclipse.ui.PartInitException; +import org.eclipse.ui.handlers.HandlerUtil; + +import fr.obeo.dsl.arduino.menus.ArduinoUiActivator; +import fr.obeo.dsl.arduino.utils.ArduinoServices; +import fr.obeo.dsl.arduino.utils.ProjectServices; +import fr.obeo.dsl.arduino.views.DashboardView; + +public class OpenDashboardHandler extends AbstractHandler { + ArduinoServices service = new ArduinoServices(); + ProjectServices projectServices = new ProjectServices(); + + @Override + public Object execute(ExecutionEvent event) throws ExecutionException { + try { + HandlerUtil.getActiveWorkbenchWindow(event).getActivePage() + .showView(DashboardView.VIEW_ID); + } catch (PartInitException e) { + ArduinoUiActivator.log(Status.ERROR, "Open dashboard failed", e); + } + return null; + } +} diff --git a/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.ui/src/fr/obeo/dsl/arduino/commands/OpenHardwareHandler.java b/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.ui/src/fr/obeo/dsl/arduino/commands/OpenHardwareHandler.java new file mode 100644 index 00000000..238ee03f --- /dev/null +++ b/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.ui/src/fr/obeo/dsl/arduino/commands/OpenHardwareHandler.java @@ -0,0 +1,33 @@ +/** + * Copyright (c) 2013 Obeo. + * 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: + * Obeo - initial API and implementation + */ +package fr.obeo.dsl.arduino.commands; + +import org.eclipse.core.commands.AbstractHandler; +import org.eclipse.core.commands.ExecutionEvent; +import org.eclipse.core.commands.ExecutionException; +import org.eclipse.core.runtime.NullProgressMonitor; +import org.eclipse.sirius.business.api.session.Session; +import org.eclipse.sirius.ui.business.api.dialect.DialectUIManager; + +import fr.obeo.dsl.arduino.utils.ArduinoServices; + +public class OpenHardwareHandler extends AbstractHandler { + ArduinoServices service = new ArduinoServices(); + + @Override + public Object execute(ExecutionEvent event) throws ExecutionException { + System.out.println("Open hardware"); + Session session = service.getSession(); + DialectUIManager.INSTANCE.openEditor(session, + service.getDiagram(session, "Hardware"), new NullProgressMonitor()); + return null; + } +} diff --git a/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.ui/src/fr/obeo/dsl/arduino/commands/OpenHardwareKitHandler.java b/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.ui/src/fr/obeo/dsl/arduino/commands/OpenHardwareKitHandler.java new file mode 100644 index 00000000..5471c733 --- /dev/null +++ b/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.ui/src/fr/obeo/dsl/arduino/commands/OpenHardwareKitHandler.java @@ -0,0 +1,41 @@ +/** + * Copyright (c) 2013 Obeo. + * 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: + * Obeo - initial API and implementation + */ +package fr.obeo.dsl.arduino.commands; + +import org.eclipse.core.commands.AbstractHandler; +import org.eclipse.core.commands.ExecutionEvent; +import org.eclipse.core.commands.ExecutionException; +import org.eclipse.core.runtime.NullProgressMonitor; +import org.eclipse.sirius.business.api.session.Session; + +import fr.obeo.dsl.arduino.utils.ArduinoServices; +import fr.obeo.dsl.arduino.utils.ProjectServices; + +public class OpenHardwareKitHandler extends AbstractHandler { + ArduinoServices service = new ArduinoServices(); + ProjectServices projectServices = new ProjectServices(); + + @Override + public Object execute(ExecutionEvent event) throws ExecutionException { + Session session = service.getSession(); + if (session != null) { + if (ProjectServices.isViewpointEnabled(session, + ProjectServices.HARDWARE_KIT_VP)) { + projectServices + .unActivateHardwareKitDefinition(new NullProgressMonitor()); + } else { + projectServices + .activateHardwareKitDefinition(new NullProgressMonitor()); + } + } + return null; + } +} \ No newline at end of file diff --git a/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.ui/src/fr/obeo/dsl/arduino/commands/OpenProjectHandler.java b/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.ui/src/fr/obeo/dsl/arduino/commands/OpenProjectHandler.java new file mode 100644 index 00000000..086d3556 --- /dev/null +++ b/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.ui/src/fr/obeo/dsl/arduino/commands/OpenProjectHandler.java @@ -0,0 +1,37 @@ +/** + * Copyright (c) 2013 Obeo. + * 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: + * Obeo - initial API and implementation + */ +package fr.obeo.dsl.arduino.commands; + +import org.eclipse.core.commands.AbstractHandler; +import org.eclipse.core.commands.ExecutionEvent; +import org.eclipse.core.commands.ExecutionException; +import org.eclipse.jface.wizard.WizardDialog; +import org.eclipse.swt.widgets.Shell; +import org.eclipse.ui.handlers.HandlerUtil; + +import fr.obeo.dsl.arduino.utils.ArduinoServices; +import fr.obeo.dsl.arduino.utils.ProjectServices; +import fr.obeo.dsl.arduino.wizard.ArduinoExternalProjectImportWizard; + +public class OpenProjectHandler extends AbstractHandler { + ArduinoServices service = new ArduinoServices(); + ProjectServices projectServices = new ProjectServices(); + + @Override + public Object execute(ExecutionEvent event) throws ExecutionException { + Shell shell = HandlerUtil.getActiveShell(event); + WizardDialog wizard = new WizardDialog(shell, + new ArduinoExternalProjectImportWizard()); + wizard.open(); + return null; + } + +} diff --git a/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.ui/src/fr/obeo/dsl/arduino/commands/OpenSketchHandler.java b/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.ui/src/fr/obeo/dsl/arduino/commands/OpenSketchHandler.java new file mode 100644 index 00000000..a218a24e --- /dev/null +++ b/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.ui/src/fr/obeo/dsl/arduino/commands/OpenSketchHandler.java @@ -0,0 +1,34 @@ +/** + * Copyright (c) 2013 Obeo. + * 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: + * Obeo - initial API and implementation + */ +package fr.obeo.dsl.arduino.commands; + +import org.eclipse.core.commands.AbstractHandler; +import org.eclipse.core.commands.ExecutionEvent; +import org.eclipse.core.commands.ExecutionException; +import org.eclipse.core.runtime.NullProgressMonitor; +import org.eclipse.sirius.business.api.session.Session; +import org.eclipse.sirius.ui.business.api.dialect.DialectUIManager; + +import fr.obeo.dsl.arduino.utils.ArduinoServices; + +public class OpenSketchHandler extends AbstractHandler { + ArduinoServices service = new ArduinoServices(); + + @Override + public Object execute(ExecutionEvent event) throws ExecutionException { + System.out.println("Open sketch"); + Session session = service.getSession(); + DialectUIManager.INSTANCE.openEditor(session, + service.getDiagram(session, "Sketch"), + new NullProgressMonitor()); + return null; + } +} diff --git a/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.ui/src/fr/obeo/dsl/arduino/commands/PreferencesHandler.java b/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.ui/src/fr/obeo/dsl/arduino/commands/PreferencesHandler.java new file mode 100644 index 00000000..73adbc9a --- /dev/null +++ b/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.ui/src/fr/obeo/dsl/arduino/commands/PreferencesHandler.java @@ -0,0 +1,37 @@ +/** + * Copyright (c) 2013 Obeo. + * 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: + * Obeo - initial API and implementation + */ +package fr.obeo.dsl.arduino.commands; + +import org.eclipse.core.commands.AbstractHandler; +import org.eclipse.core.commands.ExecutionEvent; +import org.eclipse.core.commands.ExecutionException; +import org.eclipse.jface.preference.IPreferencePage; +import org.eclipse.jface.preference.PreferenceDialog; +import org.eclipse.swt.widgets.Shell; +import org.eclipse.ui.dialogs.PreferencesUtil; +import org.eclipse.ui.handlers.HandlerUtil; + +import fr.obeo.dsl.arduino.preferences.ArduinoPreferencesPage; + +public class PreferencesHandler extends AbstractHandler { + @Override + public Object execute(ExecutionEvent event) throws ExecutionException { + IPreferencePage page = new ArduinoPreferencesPage(); + Shell shell = HandlerUtil.getActiveWorkbenchWindowChecked(event) + .getShell(); + PreferenceDialog dialog = PreferencesUtil.createPreferenceDialogOn( + shell, "fr.obeo.dsl.arduino.preferences.ArduinoPreferencePage", + new String[] {}, null); + if (dialog != null) + dialog.open(); + return null; + } +} diff --git a/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.ui/src/fr/obeo/dsl/arduino/commands/UploadSketchHandler.java b/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.ui/src/fr/obeo/dsl/arduino/commands/UploadSketchHandler.java new file mode 100644 index 00000000..ee4f9018 --- /dev/null +++ b/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.ui/src/fr/obeo/dsl/arduino/commands/UploadSketchHandler.java @@ -0,0 +1,34 @@ +/** + * Copyright (c) 2013 Obeo. + * 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: + * Obeo - initial API and implementation + */ +package fr.obeo.dsl.arduino.commands; + +import org.eclipse.core.commands.AbstractHandler; +import org.eclipse.core.commands.ExecutionEvent; +import org.eclipse.core.commands.ExecutionException; + +import fr.obeo.dsl.arduino.Project; +import fr.obeo.dsl.arduino.utils.ArduinoServices; + +public class UploadSketchHandler extends AbstractHandler { + ArduinoServices service = new ArduinoServices(); + + @Override + public Object execute(ExecutionEvent event) throws ExecutionException { + System.out.println("Upload sketch"); + + Project project = service.getArduinoProject(); + if (project != null) { + service.upload(project.getSketch()); + } + + return null; + } +} diff --git a/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.ui/src/fr/obeo/dsl/arduino/menus/ArduinoUiActivator.java b/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.ui/src/fr/obeo/dsl/arduino/menus/ArduinoUiActivator.java new file mode 100644 index 00000000..36182aef --- /dev/null +++ b/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.ui/src/fr/obeo/dsl/arduino/menus/ArduinoUiActivator.java @@ -0,0 +1,98 @@ +/** + * Copyright (c) 2013 Obeo. + * 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: + * Obeo - initial API and implementation + */ +package fr.obeo.dsl.arduino.menus; + +import org.eclipse.core.runtime.Status; +import org.eclipse.jface.resource.ImageDescriptor; +import org.eclipse.ui.plugin.AbstractUIPlugin; +import org.osgi.framework.BundleContext; + +/** + * The activator class controls the plug-in life cycle + */ +public class ArduinoUiActivator extends AbstractUIPlugin { + + // The plug-in ID + public static final String PLUGIN_ID = "fr.obeo.dsl.arduino.ui"; //$NON-NLS-1$ + + // The shared instance + private static ArduinoUiActivator plugin; + + /** + * The constructor + */ + public ArduinoUiActivator() { + } + + /* + * (non-Javadoc) + * + * @see + * org.eclipse.ui.plugin.AbstractUIPlugin#start(org.osgi.framework.BundleContext + * ) + */ + @Override + public void start(BundleContext context) throws Exception { + super.start(context); + plugin = this; + // SiriusDiagramEditorPlugin.getInstance().getPreferenceStore().setValue(org.eclipse.sirius.diagram.tools.api.preferences.SiriusDiagramPreferencesKeys.PREF_OLD_UI.name(), + // Boolean.TRUE); + } + + /* + * (non-Javadoc) + * + * @see + * org.eclipse.ui.plugin.AbstractUIPlugin#stop(org.osgi.framework.BundleContext + * ) + */ + @Override + public void stop(BundleContext context) throws Exception { + plugin = null; + super.stop(context); + } + + /** + * Returns the shared instance + * + * @return the shared instance + */ + public static ArduinoUiActivator getDefault() { + return plugin; + } + + /** + * A helper to log plugin errors. + * + * @param severity + * the error severity. + * @param message + * the error message. + * @param exception + * the error exception. + */ + public static void log(int severity, String message, Throwable exception) { + getDefault().getLog().log( + new Status(severity, PLUGIN_ID, message, exception)); + } + + /** + * Returns an image descriptor for the image file at the given plug-in + * relative path + * + * @param path + * the path + * @return the image descriptor + */ + public static ImageDescriptor getImageDescriptor(String path) { + return imageDescriptorFromPlugin(PLUGIN_ID, path); + } +} diff --git a/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.ui/src/fr/obeo/dsl/arduino/perspective/ArduinoPerspectiveFactory.java b/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.ui/src/fr/obeo/dsl/arduino/perspective/ArduinoPerspectiveFactory.java new file mode 100644 index 00000000..31113900 --- /dev/null +++ b/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.ui/src/fr/obeo/dsl/arduino/perspective/ArduinoPerspectiveFactory.java @@ -0,0 +1,24 @@ +/** + * Copyright (c) 2013 Obeo. + * 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: + * Obeo - initial API and implementation + */ +package fr.obeo.dsl.arduino.perspective; + +import org.eclipse.ui.IPageLayout; +import org.eclipse.ui.IPerspectiveFactory; + +public class ArduinoPerspectiveFactory implements IPerspectiveFactory { + + @Override + public void createInitialLayout(IPageLayout layout) { + layout.setEditorAreaVisible(true); + layout.setFixed(true); + } + +} diff --git a/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.ui/src/fr/obeo/dsl/arduino/properties/ArduinoPropertyTester.java b/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.ui/src/fr/obeo/dsl/arduino/properties/ArduinoPropertyTester.java new file mode 100644 index 00000000..589ccbd7 --- /dev/null +++ b/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.ui/src/fr/obeo/dsl/arduino/properties/ArduinoPropertyTester.java @@ -0,0 +1,46 @@ +/** + * Copyright (c) 2013 Obeo. + * 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: + * Obeo - initial API and implementation + */ +package fr.obeo.dsl.arduino.properties; + +import org.eclipse.core.expressions.PropertyTester; + +import fr.obeo.dsl.arduino.Project; +import fr.obeo.dsl.arduino.utils.ArduinoServices; + +public class ArduinoPropertyTester extends PropertyTester { + ArduinoServices service = new ArduinoServices(); + + public ArduinoPropertyTester() { + } + + @Override + public boolean test(Object receiver, String property, Object[] args, + Object expectedValue) { + Project project = service.getArduinoProject(); + if (project == null) { + return false; + } + + if ("existHardware".equals(property) && project.getBoards() != null) { + return true; + } + + if ("validHardware".equals(property) && service.isValidHardware()) { + return true; + } + + if ("validSketch".equals(property) + && service.isValidSketch(project.getSketch())) { + return true; + } + return false; + } +} diff --git a/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.ui/src/fr/obeo/dsl/arduino/utils/ArduinoServices.java b/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.ui/src/fr/obeo/dsl/arduino/utils/ArduinoServices.java new file mode 100644 index 00000000..07711780 --- /dev/null +++ b/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.ui/src/fr/obeo/dsl/arduino/utils/ArduinoServices.java @@ -0,0 +1,235 @@ +/** + * Copyright (c) 2013 Obeo. + * 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: + * Obeo - initial API and implementation + */ +package fr.obeo.dsl.arduino.utils; + +import java.io.File; +import java.io.IOException; +import java.lang.reflect.InvocationTargetException; +import java.util.ArrayList; +import java.util.Collection; +import java.util.List; + +import org.eclipse.acceleo.common.preference.AcceleoPreferences; +import org.eclipse.core.resources.IFile; +import org.eclipse.core.resources.IFolder; +import org.eclipse.core.resources.IProject; +import org.eclipse.core.resources.ResourcesPlugin; +import org.eclipse.core.runtime.IProgressMonitor; +import org.eclipse.core.runtime.IStatus; +import org.eclipse.core.runtime.Path; +import org.eclipse.core.runtime.Status; +import org.eclipse.emf.common.util.BasicMonitor; +import org.eclipse.emf.ecore.EObject; +import org.eclipse.emf.ecore.resource.Resource; +import org.eclipse.jface.dialogs.MessageDialog; +import org.eclipse.jface.dialogs.ProgressMonitorDialog; +import org.eclipse.jface.operation.IRunnableWithProgress; +import org.eclipse.sirius.business.api.dialect.DialectManager; +import org.eclipse.sirius.business.api.session.Session; +import org.eclipse.sirius.business.api.session.SessionManager; +import org.eclipse.sirius.viewpoint.DRepresentation; +import org.eclipse.swt.widgets.Display; +import org.eclipse.swt.widgets.Shell; +import org.eclipse.ui.PlatformUI; + +import fr.obeo.dsl.arduino.Project; +import fr.obeo.dsl.arduino.Sketch; +import fr.obeo.dsl.arduino.build.ArduinoBuilder; +import fr.obeo.dsl.arduino.gen.main.Generate; +import fr.obeo.dsl.arduino.menus.ArduinoUiActivator; +import fr.obeo.dsl.arduino.preferences.ArduinoPreferences; +import fr.obeo.dsl.arduino.preferences.ArduinoSdkDialog; + +public class ArduinoServices { + private ArduinoPreferences preferences = new ArduinoPreferences(); + + public IProject getWorkspaceProject() { + IProject[] projects = ResourcesPlugin.getWorkspace().getRoot() + .getProjects(); + + if (projects.length > 0) { + return projects[0]; + } + return null; + } + + public Session getSession() { + Collection sessions = SessionManager.INSTANCE.getSessions(); + if (sessions.size() > 0) { + return (Session) sessions.toArray()[0]; + } + return null; + } + + public Project getArduinoProject() { + Session session = getSession(); + if (session == null) { + return null; + } + Collection resources = session.getSemanticResources(); + if (resources.size() == 0) { + return null; + } + Resource resource = (Resource) resources.toArray()[0]; + + List contents = resource.getContents(); + if (contents == null || contents.size() == 0) { + return null; + } + return (Project) contents.get(0); + } + + public boolean isInvalidSketch(Sketch sketch) { + return !isValidSketch(sketch); + } + + public boolean isValidSketch(Sketch sketch) { + if (sketch != null) { + return true; + } + return false; + } + + public void upload(final Sketch sketch) { + if (preferences.getArduinoSdk() == null + || preferences.getArduinoSdk().length() == 0) { + askUser(); + return; + } + final ProgressMonitorDialog dialog = new ProgressMonitorDialog( + PlatformUI.getWorkbench().getActiveWorkbenchWindow().getShell()); + try { + dialog.run(true, true, new IRunnableWithProgress() { + @Override + public void run(IProgressMonitor monitor) { + monitor.beginTask("Upload sketch to arduino platform...", + 100); + monitor.subTask("Generate code"); + File genFolder = generateCode(sketch); + monitor.worked(33); + monitor.subTask("Compile code"); + + String arduinoSdk = preferences.getArduinoSdk(); + String serialPort = preferences.getArduinoSerialPort(); + String boardTag = sketch.getProject().getBoards().get(0).getName(); + String workingDirectory = genFolder.toString(); + ArduinoBuilder builder = new ArduinoBuilder(arduinoSdk, + boardTag, workingDirectory, serialPort); + List libraries = getLibraries(sketch); + final IStatus compileStatus = builder.compile("Sketch", + libraries); + if (compileStatus.getSeverity() != IStatus.OK) { + Display.getDefault().syncExec(new Runnable() { + public void run() { + MessageDialog.openError( + dialog.getShell(), + "Compilation Fail", + "Compilation fail : " + + compileStatus.getMessage()); + } + }); + return; + } + + monitor.worked(33); + monitor.subTask("Upload code"); + final IStatus uploadStatus = builder.upload(); + if (uploadStatus.getSeverity() != IStatus.OK) { + Display.getDefault().syncExec(new Runnable() { + public void run() { + MessageDialog.openError(dialog.getShell(), + "Upload Fail", "Upload fail : " + + uploadStatus.getMessage()); + } + }); + } + monitor.done(); + } + }); + } catch (InvocationTargetException e) { + ArduinoUiActivator.log(Status.ERROR, "Upload failed", e); + } catch (InterruptedException e) { + ArduinoUiActivator.log(Status.ERROR, "Upload failed", e); + } + } + + protected List getLibraries(Sketch sketch) { + final List libraries = new ArrayList<>(); + return libraries; + } + + private void askUser() { + Shell shell = PlatformUI.getWorkbench().getModalDialogShellProvider() + .getShell(); + + ArduinoSdkDialog dialog = new ArduinoSdkDialog(shell); + dialog.open(); + } + + private File generateCode(Sketch sketch) { + boolean oldNotificationsPref = AcceleoPreferences + .areNotificationsForcedDisabled(); + AcceleoPreferences.switchForceDeactivationNotifications(true); + IFile file = ResourcesPlugin + .getWorkspace() + .getRoot() + .getFile( + new Path(sketch.eResource().getURI() + .toPlatformString(true))); + IFolder folder = file.getProject().getFolder("code"); + File genFolder = folder.getRawLocation().makeAbsolute().toFile(); + + try { + Generate generator = new Generate(sketch.eResource().getURI(), + genFolder, new ArrayList()); + generator.doGenerate(new BasicMonitor()); + } catch (IOException e) { + ArduinoUiActivator.log(Status.ERROR, "Code generation failed", e); + } + AcceleoPreferences + .switchForceDeactivationNotifications(oldNotificationsPref); + + return genFolder; + } + + public DRepresentation getDiagram(Session session, String diagramName) { + Collection representations = DialectManager.INSTANCE + .getAllRepresentations(session); + DRepresentation diagram = null; + for (DRepresentation representation : representations) { + if (diagramName.equals(representation.getName())) { + diagram = representation; + } + } + return diagram; + } + + public boolean isProjectOpened() { + return getWorkspaceProject() != null; + } + + public boolean isValidSketch() { + Project project = getArduinoProject(); + if (project == null) { + return false; + } + Sketch sketch = project.getSketch(); + if (sketch == null) { + return false; + } + return isValidSketch(sketch); + } + + public boolean isValidHardware() { + Project project = getArduinoProject(); + return !(project == null || project.getBoards() == null); + } +} diff --git a/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.ui/src/fr/obeo/dsl/arduino/utils/ProjectServices.java b/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.ui/src/fr/obeo/dsl/arduino/utils/ProjectServices.java new file mode 100644 index 00000000..76929069 --- /dev/null +++ b/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.ui/src/fr/obeo/dsl/arduino/utils/ProjectServices.java @@ -0,0 +1,340 @@ +/** + * Copyright (c) 2013 Obeo. + * 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: + * Obeo - initial API and implementation + */ +package fr.obeo.dsl.arduino.utils; + +import java.io.IOException; +import java.lang.reflect.InvocationTargetException; +import java.util.Collection; + +import org.eclipse.core.resources.IProject; +import org.eclipse.core.resources.IProjectDescription; +import org.eclipse.core.resources.IWorkspaceRoot; +import org.eclipse.core.resources.ResourcesPlugin; +import org.eclipse.core.runtime.CoreException; +import org.eclipse.core.runtime.IProgressMonitor; +import org.eclipse.core.runtime.NullProgressMonitor; +import org.eclipse.core.runtime.Path; +import org.eclipse.core.runtime.Status; +import org.eclipse.emf.common.util.URI; +import org.eclipse.emf.ecore.resource.Resource; +import org.eclipse.emf.ecore.resource.impl.ResourceSetImpl; +import org.eclipse.emf.transaction.RecordingCommand; +import org.eclipse.jface.operation.IRunnableWithProgress; +import org.eclipse.sirius.business.api.componentization.ViewpointRegistry; +import org.eclipse.sirius.business.api.dialect.DialectManager; +import org.eclipse.sirius.business.api.modelingproject.ModelingProject; +import org.eclipse.sirius.business.api.session.DefaultLocalSessionCreationOperation; +import org.eclipse.sirius.business.api.session.Session; +import org.eclipse.sirius.business.api.session.SessionCreationOperation; +import org.eclipse.sirius.ext.base.Option; +import org.eclipse.sirius.ui.business.api.dialect.DialectUIManager; +import org.eclipse.sirius.ui.business.api.viewpoint.ViewpointSelectionCallback; +import org.eclipse.sirius.ui.tools.api.project.ModelingProjectManager; +import org.eclipse.sirius.viewpoint.DRepresentation; +import org.eclipse.sirius.viewpoint.description.Viewpoint; +import org.eclipse.ui.IEditorPart; +import org.eclipse.ui.IEditorReference; +import org.eclipse.ui.PlatformUI; + +import com.google.common.collect.Maps; + +import fr.obeo.dsl.arduino.ArduinoFactory; +import fr.obeo.dsl.arduino.Board; +import fr.obeo.dsl.arduino.Project; +import fr.obeo.dsl.arduino.Sketch; +import fr.obeo.dsl.arduino.menus.ArduinoUiActivator; + +public class ProjectServices { + ArduinoServices service = new ArduinoServices(); + public static final String ARDUINO_VP = "Arduino"; + public static final String HARDWARE_KIT_VP = "Hardware Kit"; + + public void createProject(IProgressMonitor monitor, IProject project) { + try { + project.create(monitor); + project.open(monitor); + ModelingProjectManager.INSTANCE.convertToModelingProject(project, monitor); + } catch (CoreException e) { + ArduinoUiActivator.log(Status.ERROR, "Open project failed", e); + } + + String modelPath = '/' + project.getName(); //$NON-NLS-1$ + final Session session = createAird( + project, + URI.createPlatformResourceURI(modelPath + + "/representations.aird", true), monitor); + + final String semanticModelPath = getSemanticModelPath(session); + initSemanticModel(session, semanticModelPath, monitor); + + final String[] viewpointsToActivate = { ARDUINO_VP }; + enableViewpoints(session, viewpointsToActivate); + + openHardware(session); + } + + private Session createAird(IProject project, URI representationsURI, + IProgressMonitor monitor) { + final Session session; + Option modelingProject = ModelingProject + .asModelingProject(project); + if (modelingProject.some()) { + session = modelingProject.get().getSession(); + } else { + Session tempSession = null; + SessionCreationOperation sessionCreationOperation = new DefaultLocalSessionCreationOperation( + representationsURI, monitor); + try { + sessionCreationOperation.execute(); + tempSession = sessionCreationOperation.getCreatedSession(); + } catch (CoreException e) { + ArduinoUiActivator.log(Status.ERROR, + "Create representations file failed", e); + } + if (tempSession != null) { + session = tempSession; + } else { + session = null; + } + } + return session; + } + + public void openProject(final String projectPath) { + try { + ProjectServices service = new ProjectServices(); + service.closeOpenedEditors(); + PlatformUI.getWorkbench().getActiveWorkbenchWindow() + .run(true, true, new IRunnableWithProgress() { + @Override + public void run(IProgressMonitor monitor) { + monitor.beginTask("Open project" + projectPath, 100); + ProjectServices service = new ProjectServices(); + service.closeProjects(monitor); + + monitor.worked(25); + + IProjectDescription description; + try { + description = ResourcesPlugin.getWorkspace() + .loadProjectDescription( + new Path(projectPath)); + IProject project = ResourcesPlugin + .getWorkspace().getRoot() + .getProject(description.getName()); + monitor.subTask("Open project : " + + description.getName()); + project.create(description, null); + monitor.worked(25); + project.open(null); + monitor.worked(25); + } catch (CoreException e) { + ArduinoUiActivator.log(Status.ERROR, + "Open project failed", e); + } + monitor.done(); + } + }); + } catch (InvocationTargetException e1) { + ArduinoUiActivator.log(Status.ERROR, "Open project failed", e1); + } catch (InterruptedException e1) { + ArduinoUiActivator.log(Status.ERROR, "Open project failed", e1); + } + Session session = service.getSession(); + while (session == null) { + session = service.getSession(); + } +// openHardware(session); + // openDashboard(session); + } + + public void openHardware(final Session session) { + Collection representations = DialectManager.INSTANCE + .getAllRepresentations(session); + for (DRepresentation representation : representations) { + if ("Hardware".equals(representation.getName())) { + DialectUIManager.INSTANCE.openEditor(session, representation, + new NullProgressMonitor()); + return; + } + } + } + + private String getSemanticModelPath(final Session session) { + Resource aird = (Resource) session.getAllSessionResources().toArray()[0]; + String airdUri = aird.getURI().toPlatformString(true); + final String semanticModelPath = airdUri.substring(0, + airdUri.lastIndexOf("/") + 1) + + "model.arduino"; + return semanticModelPath; + } + + private void initSemanticModel(final Session session, + final String semanticModelPath, final IProgressMonitor monitor) { + session.getTransactionalEditingDomain() + .getCommandStack() + .execute( + new RecordingCommand(session + .getTransactionalEditingDomain()) { + @Override + protected void doExecute() { + + final URI semanticModelURI = URI + .createPlatformResourceURI( + semanticModelPath, true); + Resource res = new ResourceSetImpl() + .createResource(semanticModelURI); + // Add the initial model object to the contents. + final Project rootObject = ArduinoFactory.eINSTANCE + .createProject(); + + if (rootObject != null) { + res.getContents().add(rootObject); + final Board board = ArduinoFactory.eINSTANCE + .createArduinoBoard(); + board.setName("Hardware"); + rootObject.getBoards().add(board); + final Sketch sketch = ArduinoFactory.eINSTANCE + .createSketch(); + sketch.setName("Sketch"); + rootObject.setSketch(sketch); + + } + try { + res.save(Maps.newHashMap()); + } catch (IOException e) { + ArduinoUiActivator.log(Status.ERROR, + "Init semantic model failed", e); + } + + session.addSemanticResource(semanticModelURI, + monitor); + + // Add ardublock kit +// final URI defaultKitModelURI = URI +// .createPlatformPluginURI( +// "/fr.obeo.dsl.arduino.design/resources/ArdublockKit.arduino", +// true); +// session.addSemanticResource(defaultKitModelURI, +// monitor); + + + session.save(monitor); + } + }); + } + + public static void enableViewpoints(final Session session, + final String... viewpointsToActivate) { + if (session != null) { + session.getTransactionalEditingDomain() + .getCommandStack() + .execute( + new RecordingCommand(session + .getTransactionalEditingDomain()) { + @Override + protected void doExecute() { + ViewpointSelectionCallback callback = new ViewpointSelectionCallback(); + + for (Viewpoint vp : ViewpointRegistry + .getInstance().getViewpoints()) { + for (String viewpoint : viewpointsToActivate) { + if (viewpoint.equals(vp.getName())) + callback.selectViewpoint( + vp, + session, + new NullProgressMonitor()); + } + } + } + }); + } + } + + public static void disableViewpoints(final Session session, + final String... viewpointsToActivate) { + if (session != null) { + session.getTransactionalEditingDomain() + .getCommandStack() + .execute( + new RecordingCommand(session + .getTransactionalEditingDomain()) { + @Override + protected void doExecute() { + ViewpointSelectionCallback callback = new ViewpointSelectionCallback(); + + for (Viewpoint vp : ViewpointRegistry + .getInstance().getViewpoints()) { + for (String viewpoint : viewpointsToActivate) { + if (viewpoint.equals(vp.getName())) + callback.deselectViewpoint( + vp, + session, + new NullProgressMonitor()); + } + } + } + }); + } + } + + public static boolean isViewpointEnabled(final Session session, + final String viewpointToCheck) { + if (session != null) { + for (Viewpoint vp : session.getSelectedViewpoints(false)) { + if (viewpointToCheck.equals(vp.getName())) + return true; + } + } + return false; + } + + public void closeProjects(IProgressMonitor monitor) { + monitor.subTask("Close projects"); + + IWorkspaceRoot root = ResourcesPlugin.getWorkspace().getRoot(); + for (IProject project : root.getProjects()) { + try { + project.close(monitor); + project.delete(false, false, monitor); + monitor.worked(25); + } catch (CoreException e) { + ArduinoUiActivator.log(Status.ERROR, "Close project failed", e); + } + } + } + + public void closeOpenedEditors() { + for (IEditorReference editorRef : PlatformUI.getWorkbench() + .getActiveWorkbenchWindow().getActivePage() + .getEditorReferences()) { + IEditorPart editor = editorRef.getEditor(false); + editor.doSave(new NullProgressMonitor()); + DialectUIManager.INSTANCE.closeEditor(editor, false); + } + } + + public void activateHardwareKitDefinition(IProgressMonitor monitor) { + final Session session = service.getSession(); + final String[] viewpointsToActivate = { HARDWARE_KIT_VP }; + enableViewpoints(session, viewpointsToActivate); + + // openHardware(session); + } + + public void unActivateHardwareKitDefinition(IProgressMonitor monitor) { + final Session session = service.getSession(); + final String[] viewpointsToActivate = { HARDWARE_KIT_VP }; + disableViewpoints(session, viewpointsToActivate); + + // openHardware(session); + } +} \ No newline at end of file diff --git a/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.ui/src/fr/obeo/dsl/arduino/views/DashboardView.java b/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.ui/src/fr/obeo/dsl/arduino/views/DashboardView.java new file mode 100644 index 00000000..0517fdce --- /dev/null +++ b/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.ui/src/fr/obeo/dsl/arduino/views/DashboardView.java @@ -0,0 +1,376 @@ +package fr.obeo.dsl.arduino.views; + +import java.util.ArrayList; +import java.util.List; + +import org.eclipse.core.resources.IProject; +import org.eclipse.core.resources.IResource; +import org.eclipse.core.resources.IResourceChangeEvent; +import org.eclipse.core.resources.IResourceChangeListener; +import org.eclipse.core.resources.IResourceDelta; +import org.eclipse.core.resources.IResourceDeltaVisitor; +import org.eclipse.core.resources.ResourcesPlugin; +import org.eclipse.core.runtime.CoreException; +import org.eclipse.core.runtime.NullProgressMonitor; +import org.eclipse.core.runtime.Status; +import org.eclipse.jface.preference.PreferenceDialog; +import org.eclipse.jface.wizard.WizardDialog; +import org.eclipse.sirius.business.api.session.Session; +import org.eclipse.sirius.ui.business.api.dialect.DialectUIManager; +import org.eclipse.swt.SWT; +import org.eclipse.swt.graphics.Image; +import org.eclipse.swt.layout.GridLayout; +import org.eclipse.swt.widgets.Composite; +import org.eclipse.swt.widgets.Display; +import org.eclipse.swt.widgets.Shell; +import org.eclipse.ui.IPartListener2; +import org.eclipse.ui.IWorkbenchPartReference; +import org.eclipse.ui.dialogs.PreferencesUtil; +import org.eclipse.ui.forms.events.HyperlinkAdapter; +import org.eclipse.ui.forms.events.HyperlinkEvent; +import org.eclipse.ui.forms.widgets.FormToolkit; +import org.eclipse.ui.forms.widgets.ImageHyperlink; +import org.eclipse.ui.forms.widgets.ScrolledForm; +import org.eclipse.ui.internal.ide.IDEWorkbenchPlugin; +import org.eclipse.ui.part.ViewPart; + +import fr.obeo.dsl.arduino.Project; +import fr.obeo.dsl.arduino.menus.ArduinoUiActivator; +import fr.obeo.dsl.arduino.utils.ArduinoServices; +import fr.obeo.dsl.arduino.wizard.ArduinoExternalProjectImportWizard; +import fr.obeo.dsl.arduino.wizard.ArduinoProjectWizard; + +public class DashboardView extends ViewPart implements IPartListener2, + IResourceChangeListener { + private static final String SKETCH_MSG = "Open the sketch"; + private static final String SKETCH_INVALID_MSG = "The sketch is invalid. You must define a loop."; + private static final String UPLOAD_MSG = "Upload the sketch on the arduino board"; + private static final String HARDWARE_MSG = "Open the hardware"; + private static final String HARDWARE_INVALID_MSG = "The hardware is invalid. You must define a platform and connect at least one module."; + public final static String VIEW_ID = "fr.obeo.dsl.arduino.ui.dashboard"; + private static final String HARDWARE_IMAGE = "icons/128x128/hardware.png"; + private static final String HARDWARE_HOVER_IMAGE = "icons/128x128/hardwareHover.png"; + private static final String HARDWARE_INVALID_IMAGE = "icons/128x128/hardwareInvalid.png"; + private static final String HARDWARE_INVALID_HOVER_IMAGE = "icons/128x128/hardwareInvalidHover.png"; + private static final String SKETCH_IMAGE = "icons/128x128/sketch.png"; + private static final String SKETCH_HOVER_IMAGE = "icons/128x128/sketchHover.png"; + private static final String SKETCH_INVALID_IMAGE = "icons/128x128/sketchInvalid.png"; + private static final String SKETCH_INVALID_HOVER_IMAGE = "icons/128x128/sketchInvalidHover.png"; + private static final String UPLOAD_IMAGE = "icons/128x128/upload.png"; + private static final String UPLOAD_HOVER_IMAGE = "icons/128x128/uploadHover.png"; + private FormToolkit toolkit; + private ScrolledForm form; + private List images = new ArrayList(); + private ArduinoServices service = new ArduinoServices(); + private ImageHyperlink hardwareLink; + private ImageHyperlink sketchLink; + private ImageHyperlink uploadLink; + + public DashboardView() { + } + + Shell shell; + + @Override + public void createPartControl(final Composite parent) { + + shell = parent.getShell(); + + // Create the form + toolkit = new FormToolkit(parent.getDisplay()); + form = toolkit.createScrolledForm(parent); + setFormText(); + GridLayout formLayout = new GridLayout(); + formLayout.numColumns = 3; + formLayout.horizontalSpacing = 100; + formLayout.verticalSpacing = 50; + formLayout.marginWidth = 100; + formLayout.marginHeight = 100; + form.getBody().setLayout(formLayout); + + // Create all the hyperlinks + createNewProjectHyperLink(parent, shell); + createOpenProjectHyperLink(parent, shell); + createPreferencesHyperLink(shell); + createHardwareHyperLink(parent, shell); + createSketchHyperLink(parent, shell); + createUploadHyperLink(parent, shell); + + this.getSite().getPage().addPartListener(this); + ResourcesPlugin.getWorkspace().addResourceChangeListener(this); + } + + private void setFormText() { + String text = "Arduino Designer - "; + if (!service.isProjectOpened()) { + text += "Select or create a project!"; + } else { + text += "You are working on the project : " + + service.getWorkspaceProject().getName() + "!"; + } + form.setText(text); + } + + private void createUploadHyperLink(final Composite parent, final Shell shell) { + uploadLink = createImageHyperlink(form.getBody(), UPLOAD_IMAGE, + UPLOAD_HOVER_IMAGE, UPLOAD_MSG); + setUploadLinkEnablement(); + uploadLink.addHyperlinkListener(new HyperlinkAdapter() { + public void linkActivated(HyperlinkEvent e) { + upload(shell); + } + }); + } + + private void setUploadLinkEnablement() { + if (service.isValidSketch()) { + uploadLink.setEnabled(true); + uploadLink.setToolTipText(UPLOAD_MSG); + } else { + uploadLink.setEnabled(false); + } + } + + private void createSketchHyperLink(final Composite parent, final Shell shell) { + sketchLink = createImageHyperlink(form.getBody(), SKETCH_IMAGE, + SKETCH_HOVER_IMAGE, SKETCH_MSG); + setSketchLinkEnablement(); + sketchLink.addHyperlinkListener(new HyperlinkAdapter() { + public void linkActivated(HyperlinkEvent e) { + Session session = service.getSession(); + DialectUIManager.INSTANCE.openEditor(session, + service.getDiagram(session, "Sketch"), + new NullProgressMonitor()); + } + }); + } + + private void setSketchLinkEnablement() { + if (service.isValidHardware()) { + sketchLink.setEnabled(true); + if (service.isValidSketch()) { + sketchLink.setToolTipText(SKETCH_MSG); + sketchLink.setImage(getImage(SKETCH_IMAGE)); + sketchLink.setHoverImage(getImage(SKETCH_HOVER_IMAGE)); + } else { + sketchLink.setToolTipText(SKETCH_INVALID_MSG); + sketchLink.setImage(getImage(SKETCH_INVALID_IMAGE)); + sketchLink.setHoverImage(getImage(SKETCH_INVALID_HOVER_IMAGE)); + } + } else { + sketchLink.setEnabled(false); + } + } + + private void createHardwareHyperLink(final Composite parent, + final Shell shell) { + hardwareLink = createImageHyperlink(form.getBody(), HARDWARE_IMAGE, + HARDWARE_HOVER_IMAGE, HARDWARE_MSG); + setHardwareLinkEnablement(); + hardwareLink.addHyperlinkListener(new HyperlinkAdapter() { + public void linkActivated(HyperlinkEvent e) { + Session session = service.getSession(); + DialectUIManager.INSTANCE.openEditor(session, + service.getDiagram(session, "Hardware"), + new NullProgressMonitor()); + } + }); + } + + private void setHardwareLinkEnablement() { + if (service.isProjectOpened()) { + hardwareLink.setEnabled(true); + if (service.isValidHardware()) { + hardwareLink.setToolTipText(HARDWARE_MSG); + hardwareLink.setImage(getImage(HARDWARE_IMAGE)); + hardwareLink.setHoverImage(getImage(HARDWARE_HOVER_IMAGE)); + } else { + hardwareLink.setImage(getImage(HARDWARE_INVALID_IMAGE)); + hardwareLink + .setHoverImage(getImage(HARDWARE_INVALID_HOVER_IMAGE)); + hardwareLink.setToolTipText(HARDWARE_INVALID_MSG); + } + } else { + hardwareLink.setEnabled(false); + } + } + + private void createPreferencesHyperLink(final Shell shell) { + ImageHyperlink preferencesLink = createImageHyperlink(form.getBody(), + "icons/128x128/preferences.png", "icons/128x128/preferencesHover.png", + "Set the preferences (arduino SDK ,serial port...)"); + preferencesLink.addHyperlinkListener(new HyperlinkAdapter() { + public void linkActivated(HyperlinkEvent e) { + preferencesDialog(shell); + } + }); + } + + private void createOpenProjectHyperLink(final Composite parent, + final Shell shell) { + ImageHyperlink openProjectLink = createImageHyperlink(form.getBody(), + "icons/128x128/openProject.png", "icons/128x128/openProjectHover.png", + "Open an existing project"); + openProjectLink.addHyperlinkListener(new HyperlinkAdapter() { + public void linkActivated(HyperlinkEvent e) { + openProjectDialog(shell); + } + }); + } + + private void createNewProjectHyperLink(final Composite parent, + final Shell shell) { + ImageHyperlink newProjectLink = createImageHyperlink(form.getBody(), + "icons/128x128/newProject.png", "icons/128x128/newProjectHover.png", + "Create a new project"); + newProjectLink.addHyperlinkListener(new HyperlinkAdapter() { + public void linkActivated(HyperlinkEvent e) { + newProjectDialog(shell); + } + }); + } + + private void upload(Shell shell) { + Project project = service.getArduinoProject(); + if (project != null) { + service.upload(project.getSketch()); + } + } + + private void refreshForm() { + Display.getDefault().syncExec(new Runnable() { + + @Override + public void run() { + setFormText(); + setHardwareLinkEnablement(); + setSketchLinkEnablement(); + setUploadLinkEnablement(); + form.getParent().update(); + + } + }); + + } + + private ImageHyperlink createImageHyperlink(Composite parent, + String imagePath, String hoverImagePath, String toolTipText) { + ImageHyperlink imageLink = toolkit.createImageHyperlink(parent, + SWT.WRAP); + Image image = getImage(imagePath); + imageLink.setImage(image); + Image hoverImage = getImage(hoverImagePath); + imageLink.setHoverImage(hoverImage); + imageLink.setToolTipText(toolTipText); + return imageLink; + } + + private Image getImage(String relativePath) { + return ArduinoUiActivator.getImageDescriptor(relativePath) + .createImage(); + } + + private void openProjectDialog(Shell shell) { + WizardDialog wizard = new WizardDialog(shell, + new ArduinoExternalProjectImportWizard(IDEWorkbenchPlugin + .getPluginWorkspace().getRoot().getLocation() + .toOSString())); + wizard.open(); + } + + private void preferencesDialog(final Composite parent) { + Shell shell = parent.getShell(); + PreferenceDialog dialog = PreferencesUtil.createPreferenceDialogOn( + shell, "fr.obeo.dsl.arduino.preferences.ArduinoPreferencePage", + new String[] {}, null); + if (dialog != null) { + dialog.open(); + } + } + + private void newProjectDialog(final Shell shell) { + WizardDialog wizard = new WizardDialog(shell, + new ArduinoProjectWizard()); + wizard.open(); + } + + @Override + public void setFocus() { + form.setFocus(); + } + + /** + * Disposes the toolkit + */ + public void dispose() { + toolkit.dispose(); + for (Image image : images) { + image.dispose(); + } + getSite().getPage().removePartListener(this); + ResourcesPlugin.getWorkspace().removeResourceChangeListener(this); + super.dispose(); + } + + @Override + public void partActivated(IWorkbenchPartReference partRef) { + + } + + @Override + public void partBroughtToTop(IWorkbenchPartReference partRef) { + refreshForm(); + } + + @Override + public void partClosed(IWorkbenchPartReference partRef) { + + } + + @Override + public void partDeactivated(IWorkbenchPartReference partRef) { + + } + + @Override + public void partOpened(IWorkbenchPartReference partRef) { + + } + + @Override + public void partHidden(IWorkbenchPartReference partRef) { + + } + + @Override + public void partVisible(IWorkbenchPartReference partRef) { + + } + + @Override + public void partInputChanged(IWorkbenchPartReference partRef) { + + } + + @Override + public void resourceChanged(IResourceChangeEvent event) { + if (event == null || event.getDelta() == null) + return; + try { + event.getDelta().accept(new IResourceDeltaVisitor() { + public boolean visit(IResourceDelta delta) throws CoreException { + if (delta.getKind() == IResourceDelta.OPEN) { + final IResource resource = delta.getResource(); + if (!(resource instanceof IProject)) { + return false; + } + } + refreshForm(); + return true; + } + }); + } catch (CoreException e) { + ArduinoUiActivator.log(Status.ERROR, "Refresh dashboard failed", e); + } + } +} diff --git a/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.ui/src/fr/obeo/dsl/arduino/wizard/ArduinoExternalProjectImportWizard.java b/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.ui/src/fr/obeo/dsl/arduino/wizard/ArduinoExternalProjectImportWizard.java new file mode 100644 index 00000000..d8ff50b3 --- /dev/null +++ b/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.ui/src/fr/obeo/dsl/arduino/wizard/ArduinoExternalProjectImportWizard.java @@ -0,0 +1,81 @@ +package fr.obeo.dsl.arduino.wizard; + +import org.eclipse.jface.dialogs.IDialogSettings; +import org.eclipse.jface.viewers.IStructuredSelection; +import org.eclipse.jface.wizard.Wizard; +import org.eclipse.ui.IImportWizard; +import org.eclipse.ui.IWorkbench; +import org.eclipse.ui.internal.ide.IDEWorkbenchPlugin; + +public class ArduinoExternalProjectImportWizard extends Wizard implements + IImportWizard { + private static final String EXTERNAL_PROJECT_SECTION = "ExternalProjectImportWizard";//$NON-NLS-1$ + private ArduinoWizardProjectsImportPage mainPage; + private IStructuredSelection currentSelection = null; + private String initialPath = null; + + /** + * Constructor for ExternalProjectImportWizard. + */ + public ArduinoExternalProjectImportWizard() { + this(null); + } + + /** + * Constructor for ExternalProjectImportWizard. + * + * @param initialPath + * Default path for wizard to import + * @since 3.5 + */ + public ArduinoExternalProjectImportWizard(String initialPath) { + super(); + this.initialPath = initialPath; + setNeedsProgressMonitor(true); + IDialogSettings workbenchSettings = IDEWorkbenchPlugin.getDefault() + .getDialogSettings(); + + IDialogSettings wizardSettings = workbenchSettings + .getSection(EXTERNAL_PROJECT_SECTION); + if (wizardSettings == null) { + wizardSettings = workbenchSettings + .addNewSection(EXTERNAL_PROJECT_SECTION); + } + setDialogSettings(wizardSettings); + } + + /* + * (non-Javadoc) Method declared on IWizard. + */ + public void addPages() { + super.addPages(); + mainPage = new ArduinoWizardProjectsImportPage( + "wizardExternalProjectsPage", initialPath, currentSelection); //$NON-NLS-1$ + addPage(mainPage); + } + + /* + * (non-Javadoc) Method declared on IWorkbenchWizard. + */ + public void init(IWorkbench workbench, IStructuredSelection currentSelection) { + setWindowTitle("Open"); + setDefaultPageImageDescriptor(IDEWorkbenchPlugin + .getIDEImageDescriptor("wizban/importproj_wiz.png")); //$NON-NLS-1$ + this.currentSelection = currentSelection; + } + + /* + * (non-Javadoc) Method declared on IWizard. + */ + public boolean performCancel() { + mainPage.performCancel(); + return true; + } + + /* + * (non-Javadoc) Method declared on IWizard. + */ + public boolean performFinish() { + return mainPage.createProjects(); + } +} diff --git a/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.ui/src/fr/obeo/dsl/arduino/wizard/ArduinoModelingProjectCreationOperation.java b/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.ui/src/fr/obeo/dsl/arduino/wizard/ArduinoModelingProjectCreationOperation.java new file mode 100644 index 00000000..d15c3cf0 --- /dev/null +++ b/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.ui/src/fr/obeo/dsl/arduino/wizard/ArduinoModelingProjectCreationOperation.java @@ -0,0 +1,48 @@ +/** + * Copyright (c) 2013 Obeo. + * 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: + * Obeo - initial API and implementation + */ +package fr.obeo.dsl.arduino.wizard; + +import java.lang.reflect.InvocationTargetException; + +import org.eclipse.core.resources.IProject; +import org.eclipse.core.runtime.CoreException; +import org.eclipse.core.runtime.IProgressMonitor; +import org.eclipse.ui.actions.WorkspaceModifyOperation; + +import fr.obeo.dsl.arduino.utils.ProjectServices; + +public class ArduinoModelingProjectCreationOperation extends + WorkspaceModifyOperation { + + private IProject project; + + public ArduinoModelingProjectCreationOperation(IProject project) { + this.project = project; + } + + @Override + protected void execute(IProgressMonitor monitor) throws CoreException, + InvocationTargetException, InterruptedException { + try { + final ProjectServices service = new ProjectServices(); + + monitor.beginTask("Load project", 100); + monitor.subTask("Close project"); + service.closeProjects(monitor); + monitor.worked(50); + monitor.subTask("Create project"); + service.createProject(monitor, project); + monitor.worked(50); + } finally { + monitor.done(); + } + } +} diff --git a/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.ui/src/fr/obeo/dsl/arduino/wizard/ArduinoProjectWizard.java b/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.ui/src/fr/obeo/dsl/arduino/wizard/ArduinoProjectWizard.java new file mode 100644 index 00000000..5ccbc240 --- /dev/null +++ b/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.ui/src/fr/obeo/dsl/arduino/wizard/ArduinoProjectWizard.java @@ -0,0 +1,89 @@ +/** + * Copyright (c) 2013 Obeo. + * 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: + * Obeo - initial API and implementation + */ +package fr.obeo.dsl.arduino.wizard; + +import java.lang.reflect.InvocationTargetException; + +import org.eclipse.core.runtime.Status; +import org.eclipse.jface.dialogs.Dialog; +import org.eclipse.jface.viewers.IStructuredSelection; +import org.eclipse.sirius.common.tools.api.util.ReflectionHelper; +import org.eclipse.swt.layout.GridLayout; +import org.eclipse.swt.widgets.Composite; +import org.eclipse.ui.IWorkbench; +import org.eclipse.ui.dialogs.WizardNewProjectCreationPage; +import org.eclipse.ui.wizards.newresource.BasicNewProjectResourceWizard; + +import fr.obeo.dsl.arduino.menus.ArduinoUiActivator; + +public class ArduinoProjectWizard extends BasicNewProjectResourceWizard { + private WizardNewProjectCreationPage wizardNewProjectCreationPage; + protected IWorkbench workbench; + + public ArduinoProjectWizard() { + super(); + } + + @Override + public void init(IWorkbench workbench, IStructuredSelection selection) { + super.init(workbench, selection); + this.workbench = workbench; + this.selection = selection; + setWindowTitle("New Arduino Project"); //$NON-NLS-1$ + setNeedsProgressMonitor(true); + } + + /** + * {@inheritDoc} + */ + @Override + public void addPages() { + wizardNewProjectCreationPage = new WizardNewProjectCreationPage( + "Create a new Arduino project") { + + @Override + public void createControl(Composite parent) { + super.createControl(parent); + + Composite control = (Composite) getControl(); + GridLayout layout = new GridLayout(); + control.setLayout(layout); + Dialog.applyDialogFont(control); + } + }; + + wizardNewProjectCreationPage.setInitialProjectName("NewArduinoProject");//$NON-NLS-1$ + wizardNewProjectCreationPage.setTitle("Create a new Arduino project"); //$NON-NLS-1$ + wizardNewProjectCreationPage.setDescription("Enter a project name"); //$NON-NLS-1$ + + // Fix for VP-3711 to avoid a NPE on 3.8 + ReflectionHelper.setFieldValueWithoutException(this, + "newProjectCreationPage", wizardNewProjectCreationPage); + + addPage(wizardNewProjectCreationPage); + } + + @Override + public boolean performFinish() { + final ArduinoModelingProjectCreationOperation arduinoModelingProjectCreationOperation = new ArduinoModelingProjectCreationOperation( + wizardNewProjectCreationPage.getProjectHandle()); + + try { + getContainer().run(true, false, + arduinoModelingProjectCreationOperation); + } catch (InvocationTargetException e) { + ArduinoUiActivator.log(Status.ERROR, "Create project failed", e); + } catch (InterruptedException e) { + ArduinoUiActivator.log(Status.ERROR, "Create project failed", e); + } + return true; + } +} diff --git a/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.ui/src/fr/obeo/dsl/arduino/wizard/ArduinoWizardProjectsImportPage.java b/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.ui/src/fr/obeo/dsl/arduino/wizard/ArduinoWizardProjectsImportPage.java new file mode 100644 index 00000000..26dd5cb6 --- /dev/null +++ b/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.ui/src/fr/obeo/dsl/arduino/wizard/ArduinoWizardProjectsImportPage.java @@ -0,0 +1,1056 @@ +package fr.obeo.dsl.arduino.wizard; + +import java.io.File; +import java.io.IOException; +import java.lang.reflect.InvocationTargetException; +import java.util.ArrayList; +import java.util.Collection; +import java.util.Collections; +import java.util.HashSet; +import java.util.Iterator; +import java.util.List; +import java.util.Set; + +import org.eclipse.core.resources.IProject; +import org.eclipse.core.resources.IProjectDescription; +import org.eclipse.core.resources.IResource; +import org.eclipse.core.resources.IWorkspace; +import org.eclipse.core.resources.IWorkspaceRoot; +import org.eclipse.core.resources.ResourcesPlugin; +import org.eclipse.core.runtime.CoreException; +import org.eclipse.core.runtime.IPath; +import org.eclipse.core.runtime.IProgressMonitor; +import org.eclipse.core.runtime.IStatus; +import org.eclipse.core.runtime.OperationCanceledException; +import org.eclipse.core.runtime.Path; +import org.eclipse.core.runtime.Platform; +import org.eclipse.core.runtime.Status; +import org.eclipse.core.runtime.SubProgressMonitor; +import org.eclipse.gef.EditPartViewer; +import org.eclipse.gmf.runtime.diagram.ui.parts.DiagramEditor; +import org.eclipse.jface.dialogs.Dialog; +import org.eclipse.jface.dialogs.ErrorDialog; +import org.eclipse.jface.dialogs.IDialogSettings; +import org.eclipse.jface.layout.PixelConverter; +import org.eclipse.jface.operation.IRunnableWithProgress; +import org.eclipse.jface.viewers.IColorProvider; +import org.eclipse.jface.viewers.IStructuredSelection; +import org.eclipse.jface.viewers.ITreeContentProvider; +import org.eclipse.jface.viewers.LabelProvider; +import org.eclipse.jface.viewers.StructuredSelection; +import org.eclipse.jface.viewers.TreeViewer; +import org.eclipse.jface.viewers.Viewer; +import org.eclipse.jface.viewers.ViewerComparator; +import org.eclipse.sirius.ui.business.api.dialect.DialectEditor; +import org.eclipse.sirius.ui.business.api.dialect.DialectUIManager; +import org.eclipse.sirius.ui.business.api.session.IEditingSession; +import org.eclipse.sirius.ui.business.api.session.SessionUIManager; +import org.eclipse.swt.SWT; +import org.eclipse.swt.events.FocusAdapter; +import org.eclipse.swt.events.SelectionAdapter; +import org.eclipse.swt.events.SelectionEvent; +import org.eclipse.swt.events.TraverseEvent; +import org.eclipse.swt.events.TraverseListener; +import org.eclipse.swt.graphics.Color; +import org.eclipse.swt.graphics.Point; +import org.eclipse.swt.layout.GridData; +import org.eclipse.swt.layout.GridLayout; +import org.eclipse.swt.widgets.Button; +import org.eclipse.swt.widgets.Combo; +import org.eclipse.swt.widgets.Composite; +import org.eclipse.swt.widgets.DirectoryDialog; +import org.eclipse.swt.widgets.Display; +import org.eclipse.swt.widgets.Event; +import org.eclipse.swt.widgets.Label; +import org.eclipse.ui.actions.WorkspaceModifyOperation; +import org.eclipse.ui.dialogs.WizardDataTransferPage; +import org.eclipse.ui.internal.ide.IDEWorkbenchPlugin; +import org.eclipse.ui.internal.ide.StatusUtil; +import org.eclipse.ui.internal.wizards.datatransfer.ILeveledImportStructureProvider; +import org.eclipse.ui.statushandlers.StatusManager; + +import fr.obeo.dsl.arduino.menus.ArduinoUiActivator; + +/** + * The WizardProjectsImportPage is the page that allows the user to import + * projects from a particular location. + */ +public class ArduinoWizardProjectsImportPage extends WizardDataTransferPage { + + /** + * The name of the folder containing metadata information for the workspace. + */ + public static final String METADATA_FOLDER = ".metadata"; //$NON-NLS-1$ + + /** + * The import structure provider. + * + * @since 3.4 + */ + private ILeveledImportStructureProvider structureProvider; + + /** + * @since 3.5 + * + */ + private final class ProjectLabelProvider extends LabelProvider implements + IColorProvider { + + public String getText(Object element) { + return ((ProjectRecord) element).getProjectLabel(); + } + + public Color getBackground(Object element) { + return null; + } + + public Color getForeground(Object element) { + ProjectRecord projectRecord = (ProjectRecord) element; + if (projectRecord.hasConflicts) + return getShell().getDisplay().getSystemColor(SWT.COLOR_GRAY); + return null; + } + } + + /** + * Class declared public only for test suite. + * + */ + public class ProjectRecord { + File projectSystemFile; + + String projectName; + + Object parent; + + int level; + + boolean hasConflicts; + + IProjectDescription description; + + /** + * Create a record for a project based on the info in the file. + * + * @param file + */ + ProjectRecord(File file) { + projectSystemFile = file; + setProjectName(); + } + + /** + * @param file + * The Object representing the .project file + * @param parent + * The parent folder of the .project file + * @param level + * The number of levels deep in the provider the file is + */ + ProjectRecord(Object file, Object parent, int level) { + this.parent = parent; + this.level = level; + setProjectName(); + } + + /** + * Set the name of the project based on the projectFile. + */ + private void setProjectName() { + try { + + // If we don't have the project name try again + if (projectName == null) { + IPath path = new Path(projectSystemFile.getPath()); + // if the file is in the default location, use the directory + // name as the project name + if (isDefaultLocation(path)) { + projectName = path.segment(path.segmentCount() - 2); + description = IDEWorkbenchPlugin.getPluginWorkspace() + .newProjectDescription(projectName); + } else { + description = IDEWorkbenchPlugin.getPluginWorkspace() + .loadProjectDescription(path); + projectName = description.getName(); + } + + } + } catch (CoreException e) { + // no good couldn't get the name + } + } + + /** + * Returns whether the given project description file path is in the + * default location for a project + * + * @param path + * The path to examine + * @return Whether the given path is the default location for a project + */ + private boolean isDefaultLocation(IPath path) { + // The project description file must at least be within the project, + // which is within the workspace location + if (path.segmentCount() < 2) + return false; + return path.removeLastSegments(2).toFile() + .equals(Platform.getLocation().toFile()); + } + + /** + * Get the name of the project + * + * @return String + */ + public String getProjectName() { + return projectName; + } + + /** + * Gets the label to be used when rendering this project record in the + * UI. + * + * @return String the label + * @since 3.4 + */ + public String getProjectLabel() { + return projectName; + } + + /** + * @return Returns the hasConflicts. + */ + public boolean hasConflicts() { + return hasConflicts; + } + } + + // dialog store id constants + private final static String STORE_DIRECTORIES = "WizardProjectsImportPage.STORE_DIRECTORIES";//$NON-NLS-1$ + + private Combo directoryPathField; + + private TreeViewer projectsList; + private ProjectRecord selectedProject = null; + + private ProjectRecord[] selectedProjects = new ProjectRecord[0]; + + // Keep track of the directory that we browsed to last time + // the wizard was invoked. + private static String previouslyBrowsedDirectory = ""; //$NON-NLS-1$ + + private Label projectFromDirectoryRadio; + + private Button browseDirectoriesButton; + + private IProject[] wsProjects; + + // The initial path to set + private String initialPath; + + // The last selected path to minimize searches + private String lastPath; + // The last time that the file or folder at the selected path was modified + // to mimize searches + private long lastModified; + + /** + * Creates a new project creation wizard page. + * + */ + public ArduinoWizardProjectsImportPage() { + this("wizardExternalProjectsPage", null, null); //$NON-NLS-1$ + } + + /** + * Create a new instance of the receiver. + * + * @param pageName + */ + public ArduinoWizardProjectsImportPage(String pageName) { + this(pageName, null, null); + } + + /** + * More (many more) parameters. + * + * @param pageName + * @param initialPath + * @param currentSelection + * @since 3.5 + */ + public ArduinoWizardProjectsImportPage(String pageName, String initialPath, + IStructuredSelection currentSelection) { + super(pageName); + this.initialPath = initialPath; + setPageComplete(false); + setTitle("Open project"); + setDescription("Open an existing project."); + } + + /* + * (non-Javadoc) + * + * @see + * org.eclipse.jface.dialogs.IDialogPage#createControl(org.eclipse.swt.widgets + * .Composite) + */ + public void createControl(Composite parent) { + + initializeDialogUnits(parent); + + Composite workArea = new Composite(parent, SWT.NONE); + setControl(workArea); + + workArea.setLayout(new GridLayout()); + workArea.setLayoutData(new GridData(GridData.FILL_BOTH + | GridData.GRAB_HORIZONTAL | GridData.GRAB_VERTICAL)); + + createProjectsRoot(workArea); + createProjectsList(workArea); + restoreWidgetValues(); + Dialog.applyDialogFont(workArea); + + } + + /** + * Create the checkbox list for the found projects. + * + * @param workArea + */ + private void createProjectsList(Composite workArea) { + + Label title = new Label(workArea, SWT.NONE); + title.setText("Projects:"); + + Composite listComposite = new Composite(workArea, SWT.NONE); + GridLayout layout = new GridLayout(); + layout.numColumns = 2; + layout.marginWidth = 0; + layout.makeColumnsEqualWidth = false; + listComposite.setLayout(layout); + + listComposite.setLayoutData(new GridData(GridData.GRAB_HORIZONTAL + | GridData.GRAB_VERTICAL | GridData.FILL_BOTH)); + + projectsList = new TreeViewer(listComposite, SWT.BORDER); + projectsList.getTree().addSelectionListener(new SelectionAdapter() { + @Override + public void widgetSelected(SelectionEvent e) { + selectedProject = (ProjectRecord) e.item.getData(); + if (selectedProject != null) { + setPageComplete(true); + } + } + }); + GridData gridData = new GridData(SWT.FILL, SWT.FILL, true, true); + gridData.widthHint = new PixelConverter(projectsList.getControl()) + .convertWidthInCharsToPixels(25); + gridData.heightHint = new PixelConverter(projectsList.getControl()) + .convertHeightInCharsToPixels(10); + projectsList.getControl().setLayoutData(gridData); + projectsList.setContentProvider(new ITreeContentProvider() { + + /* + * (non-Javadoc) + * + * @see + * org.eclipse.jface.viewers.ITreeContentProvider#getChildren(java + * .lang.Object) + */ + public Object[] getChildren(Object parentElement) { + return null; + } + + /* + * (non-Javadoc) + * + * @see + * org.eclipse.jface.viewers.IStructuredContentProvider#getElements + * (java.lang.Object) + */ + public Object[] getElements(Object inputElement) { + return getProjectRecords(); + } + + /* + * (non-Javadoc) + * + * @see + * org.eclipse.jface.viewers.ITreeContentProvider#hasChildren(java + * .lang.Object) + */ + public boolean hasChildren(Object element) { + return false; + } + + /* + * (non-Javadoc) + * + * @see + * org.eclipse.jface.viewers.ITreeContentProvider#getParent(java + * .lang.Object) + */ + public Object getParent(Object element) { + return null; + } + + /* + * (non-Javadoc) + * + * @see org.eclipse.jface.viewers.IContentProvider#dispose() + */ + public void dispose() { + + } + + /* + * (non-Javadoc) + * + * @see + * org.eclipse.jface.viewers.IContentProvider#inputChanged(org.eclipse + * .jface.viewers.Viewer, java.lang.Object, java.lang.Object) + */ + public void inputChanged(Viewer viewer, Object oldInput, + Object newInput) { + } + + }); + + projectsList.setLabelProvider(new ProjectLabelProvider()); + + projectsList.setInput(this); + projectsList.setComparator(new ViewerComparator()); + } + + /** + * Create the area where you select the root directory for the projects. + * + * @param workArea + * Composite + */ + private void createProjectsRoot(Composite workArea) { + + // project specification group + Composite projectGroup = new Composite(workArea, SWT.NONE); + GridLayout layout = new GridLayout(); + layout.numColumns = 3; + layout.makeColumnsEqualWidth = false; + layout.marginWidth = 0; + projectGroup.setLayout(layout); + projectGroup.setLayoutData(new GridData(GridData.FILL_HORIZONTAL)); + + // new project from directory radio button + projectFromDirectoryRadio = new Label(projectGroup, SWT.NORMAL); + projectFromDirectoryRadio.setText("Select directory:"); + + // project location entry combo + this.directoryPathField = new Combo(projectGroup, SWT.BORDER); + + GridData directoryPathData = new GridData( + GridData.HORIZONTAL_ALIGN_FILL | GridData.GRAB_HORIZONTAL); + directoryPathData.widthHint = new PixelConverter(directoryPathField) + .convertWidthInCharsToPixels(25); + directoryPathField.setLayoutData(directoryPathData); + + // browse button + browseDirectoriesButton = new Button(projectGroup, SWT.PUSH); + browseDirectoriesButton.setText("Browse..."); + setButtonLayoutData(browseDirectoriesButton); + + browseDirectoriesButton.addSelectionListener(new SelectionAdapter() { + /* + * (non-Javadoc) + * + * @see org.eclipse.swt.events.SelectionAdapter#widgetS + * elected(org.eclipse.swt.events.SelectionEvent) + */ + public void widgetSelected(SelectionEvent e) { + handleLocationDirectoryButtonPressed(); + } + + }); + + directoryPathField.addTraverseListener(new TraverseListener() { + + /* + * (non-Javadoc) + * + * @see + * org.eclipse.swt.events.TraverseListener#keyTraversed(org.eclipse + * .swt.events.TraverseEvent) + */ + public void keyTraversed(TraverseEvent e) { + if (e.detail == SWT.TRAVERSE_RETURN) { + e.doit = false; + updateProjectsList(directoryPathField.getText().trim()); + } + } + + }); + + directoryPathField.addFocusListener(new FocusAdapter() { + + /* + * (non-Javadoc) + * + * @see + * org.eclipse.swt.events.FocusListener#focusLost(org.eclipse.swt + * .events.FocusEvent) + */ + public void focusLost(org.eclipse.swt.events.FocusEvent e) { + updateProjectsList(directoryPathField.getText().trim()); + } + + }); + + directoryPathField.addSelectionListener(new SelectionAdapter() { + public void widgetSelected(SelectionEvent e) { + updateProjectsList(directoryPathField.getText().trim()); + } + }); + } + + private void directoryRadioSelected() { + directoryPathField.setEnabled(true); + browseDirectoriesButton.setEnabled(true); + updateProjectsList(directoryPathField.getText()); + directoryPathField.setFocus(); + } + + /* + * (non-Javadoc) Method declared on IDialogPage. Set the focus on path + * fields when page becomes visible. + */ + public void setVisible(boolean visible) { + super.setVisible(visible); + if (visible) { + this.directoryPathField.setFocus(); + } + } + + /** + * Update the list of projects based on path. Method declared public only + * for test suite. + * + * @param path + */ + public void updateProjectsList(final String path) { + // on an empty path empty selectedProjects + if (path == null || path.length() == 0) { + setMessage("Select a directory to search for existing Arduino Designer projects."); + selectedProjects = new ProjectRecord[0]; + projectsList.refresh(true); + setPageComplete(selectedProject != null); + lastPath = path; + return; + } + + final File directory = new File(path); + long modified = directory.lastModified(); + if (path.equals(lastPath) && lastModified == modified) { + // since the file/folder was not modified and the path did not + // change, no refreshing is required + return; + } + + lastPath = path; + lastModified = modified; + + // We can't access the radio button from the inner class so get the + // status beforehand + try { + getContainer().run(true, true, new IRunnableWithProgress() { + + /* + * (non-Javadoc) + * + * @see + * org.eclipse.jface.operation.IRunnableWithProgress#run(org + * .eclipse.core.runtime.IProgressMonitor) + */ + public void run(IProgressMonitor monitor) { + + monitor.beginTask("Searching for projects", 100); + selectedProjects = new ProjectRecord[0]; + Collection files = new ArrayList(); + monitor.worked(10); + if (directory.isDirectory()) { + + if (!collectProjectFilesFromDirectory(files, directory, + null, monitor)) { + return; + } + Iterator filesIterator = files.iterator(); + selectedProjects = new ProjectRecord[files.size()]; + int index = 0; + monitor.worked(50); + monitor.subTask("Pocessing results"); + while (filesIterator.hasNext()) { + File file = (File) filesIterator.next(); + selectedProjects[index] = new ProjectRecord(file); + index++; + } + } else { + monitor.worked(60); + } + monitor.done(); + } + + }); + } catch (InvocationTargetException e) { + IDEWorkbenchPlugin.log(e.getMessage(), e); + } catch (InterruptedException e) { + // Nothing to do if the user interrupts. + } + + projectsList.refresh(true); + ProjectRecord[] projects = getProjectRecords(); + boolean displayWarning = false; + for (int i = 0; i < projects.length; i++) { + if (projects[i].hasConflicts) { + displayWarning = true; + } + } + + if (displayWarning) { + setMessage( + "Some projects cannot be imported because they already exist in the workspace", + WARNING); + } else { + setMessage("Select a directory to search for existing Arduino Designer projects."); + } + setPageComplete(selectedProject != null); + if (selectedProjects.length == 0) { + setMessage("No projects are found, select another directory", + WARNING); + } + } + + /** + * Collect the list of .project files that are under directory into files. + * + * @param files + * @param directory + * @param directoriesVisited + * Set of canonical paths of directories, used as recursion guard + * @param monitor + * The monitor to report to + * @return boolean true if the operation was completed. + */ + private boolean collectProjectFilesFromDirectory(Collection files, + File directory, Set directoriesVisited, IProgressMonitor monitor) { + + if (monitor.isCanceled()) { + return false; + } + monitor.subTask("Checking:" + directory.getPath()); + File[] contents = directory.listFiles(); + if (contents == null) + return false; + + // Initialize recursion guard for recursive symbolic links + if (directoriesVisited == null) { + directoriesVisited = new HashSet(); + try { + directoriesVisited.add(directory.getCanonicalPath()); + } catch (IOException exception) { + StatusManager.getManager().handle( + StatusUtil.newStatus(IStatus.ERROR, + exception.getLocalizedMessage(), exception)); + } + } + + // first look for project description files + final String dotProject = IProjectDescription.DESCRIPTION_FILE_NAME; + for (int i = 0; i < contents.length; i++) { + File file = contents[i]; + if (file.isFile() && file.getName().equals(dotProject)) { + files.add(file); + } + } + // no project description found or search for nested projects enabled, + // so recurse into sub-directories + for (int i = 0; i < contents.length; i++) { + if (contents[i].isDirectory()) { + if (!contents[i].getName().equals(METADATA_FOLDER)) { + try { + String canonicalPath = contents[i].getCanonicalPath(); + if (!directoriesVisited.add(canonicalPath)) { + // already been here --> do not recurse + continue; + } + } catch (IOException exception) { + StatusManager.getManager().handle( + StatusUtil.newStatus(IStatus.ERROR, + exception.getLocalizedMessage(), + exception)); + + } + collectProjectFilesFromDirectory(files, contents[i], + directoriesVisited, monitor); + } + } + } + return true; + } + + /** + * The browse button has been selected. Select the location. + */ + protected void handleLocationDirectoryButtonPressed() { + + DirectoryDialog dialog = new DirectoryDialog( + directoryPathField.getShell(), SWT.SHEET); + dialog.setMessage("Select directory of the project to open"); + + String dirName = directoryPathField.getText().trim(); + if (dirName.length() == 0) { + dirName = previouslyBrowsedDirectory; + } + + if (dirName.length() == 0) { + dialog.setFilterPath(IDEWorkbenchPlugin.getPluginWorkspace() + .getRoot().getLocation().toOSString()); + } else { + File path = new File(dirName); + if (path.exists()) { + dialog.setFilterPath(new Path(dirName).toOSString()); + } + } + + String selectedDirectory = dialog.open(); + if (selectedDirectory != null) { + previouslyBrowsedDirectory = selectedDirectory; + directoryPathField.setText(previouslyBrowsedDirectory); + updateProjectsList(selectedDirectory); + } + } + + /** + * Create the selected projects + * + * @return boolean true if all project creations were + * successful. + */ + public boolean createProjects() { + saveWidgetValues(); + + final Object selected = selectedProject; + createdProjects = new ArrayList(); + WorkspaceModifyOperation op = new WorkspaceModifyOperation() { + protected void execute(IProgressMonitor monitor) + throws InvocationTargetException, InterruptedException { + try { + monitor.beginTask("", 1); //$NON-NLS-1$ + if (monitor.isCanceled()) { + throw new OperationCanceledException(); + } + if (selectedProject != null) + createExistingProject((ProjectRecord) selectedProject, + new SubProgressMonitor(monitor, 1)); + } finally { + monitor.done(); + } + } + }; + // run the new project creation operation + try { + getContainer().run(true, true, op); + } catch (InterruptedException e) { + return false; + } catch (InvocationTargetException e) { + // one of the steps resulted in a core exception + Throwable t = e.getTargetException(); + String message = "Creation Problems"; + IStatus status; + if (t instanceof CoreException) { + status = ((CoreException) t).getStatus(); + } else { + status = new Status(IStatus.ERROR, + IDEWorkbenchPlugin.IDE_WORKBENCH, 1, message, t); + } + ErrorDialog.openError(getShell(), message, null, status); + return false; + } + + return true; + } + + List createdProjects; + + /** + * Performs clean-up if the user cancels the wizard without doing anything + */ + public void performCancel() { + } + + /** + * Create the project described in record. If it is successful return true. + * + * @param record + * @return boolean true if successful + * @throws InterruptedException + */ + private boolean createExistingProject(final ProjectRecord record, + final IProgressMonitor monitor) throws InvocationTargetException, + InterruptedException { + final String projectName = record.getProjectName(); + final IWorkspace workspace = ResourcesPlugin.getWorkspace(); + final IProject project = workspace.getRoot().getProject(projectName); + + for (IEditingSession uiSession : SessionUIManager.INSTANCE + .getUISessions()) { + for (DialectEditor editor : uiSession.getEditors()) { + if (editor instanceof DiagramEditor) { + final EditPartViewer graphicalViewer = ((DiagramEditor) editor) + .getDiagramGraphicalViewer(); + + if (graphicalViewer != null) { + graphicalViewer.setSelection(new StructuredSelection()); + Display.getDefault().syncExec(new Runnable() { + + @Override + public void run() { + graphicalViewer.flush(); + + } + }); + /* + * We need to spin the ui thread so that the editor has + * the change to update its action enablement before we + * close and unload everything. + * + * We just hope to be lucky and to be scheduled after + * the runnables launched by the arrange action in + * particular. + */ + SWTThreadingUtils.waitForAsyncExecsToFinish(Display + .getDefault()); + } + } else { + DialectUIManager.INSTANCE.setSelection(editor, + Collections.EMPTY_LIST); + } + } + SWTThreadingUtils.waitForAsyncExecsToFinish(Display.getDefault()); + } + + SWTThreadingUtils.waitForAsyncExecsToFinish(Display.getDefault()); + + // for (Session openedSession : SessionManager.INSTANCE.getSessions()) { + // openedSession.save(monitor); + // openedSession.close(monitor); + // } + + IWorkspaceRoot root = ResourcesPlugin.getWorkspace().getRoot(); + for (IProject projectToClose : root.getProjects()) { + try { + if (projectToClose.isOpen()) { + System.out.println("Closing : " + projectToClose.getName()); + projectToClose.close(monitor); + projectToClose.delete(false, false, monitor); + } + monitor.worked(25); + } catch (CoreException e) { + ArduinoUiActivator.log(Status.ERROR, "Close project failed", e); + } + } + + createdProjects.add(project); + if (record.description == null) { + // error case + record.description = workspace.newProjectDescription(projectName); + IPath locationPath = new Path( + record.projectSystemFile.getAbsolutePath()); + + // If it is under the root use the default location + if (Platform.getLocation().isPrefixOf(locationPath)) { + record.description.setLocation(null); + } else { + record.description.setLocation(locationPath); + } + } else { + record.description.setName(projectName); + } + + // import from file system + try { + monitor.beginTask("Creating Projects", 100); + project.create(record.description, new SubProgressMonitor(monitor, + 30)); + project.open(IResource.BACKGROUND_REFRESH, new SubProgressMonitor( + monitor, 70)); + } catch (CoreException e) { + } finally { + monitor.done(); + } + + return true; + } + + /** + * Method used for test suite. + * + * @return TreeViewer the viewer containing all the projects found + */ + public TreeViewer getProjectsList() { + return projectsList; + } + + /** + * Retrieve all the projects in the current workspace. + * + * @return IProject[] array of IProject in the current workspace + */ + private IProject[] getProjectsInWorkspace() { + if (wsProjects == null) { + wsProjects = IDEWorkbenchPlugin.getPluginWorkspace().getRoot() + .getProjects(); + } + return wsProjects; + } + + /** + * Get the array of project records that can be imported from the source + * workspace or archive, selected by the user. If a project with the same + * name exists in both the source workspace and the current workspace, then + * the hasConflicts flag would be set on that project record. + * + * Method declared public for test suite. + * + * @return ProjectRecord[] array of projects that can be imported into the + * workspace + */ + public ProjectRecord[] getProjectRecords() { + List projectRecords = new ArrayList(); + for (int i = 0; i < selectedProjects.length; i++) { + if (isProjectInWorkspace(selectedProjects[i].getProjectName())) { + selectedProjects[i].hasConflicts = true; + } + projectRecords.add(selectedProjects[i]); + } + return (ProjectRecord[]) projectRecords + .toArray(new ProjectRecord[projectRecords.size()]); + } + + /** + * Determine if there is a directory with the project name in the workspace + * path. + * + * @param projectName + * the name of the project + * @return true if there is a directory with the same name of the imported + * project + */ + private boolean isProjectInWorkspacePath(String projectName) { + final IWorkspace workspace = ResourcesPlugin.getWorkspace(); + IPath wsPath = workspace.getRoot().getLocation(); + IPath localProjectPath = wsPath.append(projectName); + return localProjectPath.toFile().exists(); + } + + /** + * Determine if the project with the given name is in the current workspace. + * + * @param projectName + * String the project name to check + * @return boolean true if the project with the given name is in this + * workspace + */ + private boolean isProjectInWorkspace(String projectName) { + if (projectName == null) { + return false; + } + IProject[] workspaceProjects = getProjectsInWorkspace(); + for (int i = 0; i < workspaceProjects.length; i++) { + if (projectName.equals(workspaceProjects[i].getName())) { + return true; + } + } + return false; + } + + /** + * Use the dialog store to restore widget values to the values that they + * held last time this wizard was used to completion, or alternatively, if + * an initial path is specified, use it to select values. + * + * Method declared public only for use of tests. + */ + public void restoreWidgetValues() { + + // First, check to see if we have resore settings, and + // take care of the checkbox + IDialogSettings settings = getDialogSettings(); + if (settings != null) { + restoreFromHistory(settings, STORE_DIRECTORIES, directoryPathField); + } + + // Second, check to see if we don't have an initial path, + // and if we do have restore settings. If so, set the + // radio selection properly to restore settings + + if (initialPath == null && settings != null) { + directoryRadioSelected(); + } + // Third, if we do have an initial path, set the proper + // path and radio buttons to the initial value. Move + // cursor to the end of the path so user can see the + // most relevant part (directory / archive name) + else if (initialPath != null) { + boolean dir = new File(initialPath).isDirectory(); + + if (dir) { + directoryPathField.setText(initialPath); + directoryPathField.setSelection(new Point(initialPath.length(), + initialPath.length())); + directoryRadioSelected(); + } + } + } + + private void restoreFromHistory(IDialogSettings settings, String key, + Combo combo) { + String[] sourceNames = settings.getArray(key); + if (sourceNames == null) { + return; // ie.- no values stored, so stop + } + + for (int i = 0; i < sourceNames.length; i++) { + combo.add(sourceNames[i]); + } + } + + /** + * Since Finish was pressed, write widget values to the dialog store so that + * they will persist into the next invocation of this wizard page. + * + * Method declared public only for use of tests. + */ + public void saveWidgetValues() { + IDialogSettings settings = getDialogSettings(); + if (settings != null) { + saveInHistory(settings, STORE_DIRECTORIES, + directoryPathField.getText()); + } + } + + private void saveInHistory(IDialogSettings settings, String key, + String value) { + String[] sourceNames = settings.getArray(key); + if (sourceNames == null) { + sourceNames = new String[0]; + } + sourceNames = addToHistory(sourceNames, value); + settings.put(key, sourceNames); + } + + public void handleEvent(Event event) { + } + + protected boolean allowNewContainerName() { + return true; + } + +} diff --git a/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.ui/src/fr/obeo/dsl/arduino/wizard/SWTThreadingUtils.java b/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.ui/src/fr/obeo/dsl/arduino/wizard/SWTThreadingUtils.java new file mode 100644 index 00000000..53aa141c --- /dev/null +++ b/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino.ui/src/fr/obeo/dsl/arduino/wizard/SWTThreadingUtils.java @@ -0,0 +1,44 @@ +package fr.obeo.dsl.arduino.wizard; + +import org.eclipse.swt.widgets.Display; + +public class SWTThreadingUtils +{ + + public static void waitForAsyncExecsToFinish(Display display) + { + Object waitObj = new Object(); + + display.asyncExec(new DummyRunnable(waitObj)); + synchronized (waitObj) + { + try { + waitObj.wait(); + + } catch (InterruptedException e) { + throw new RuntimeException(e); + } + } + } + + + private static class DummyRunnable implements Runnable + { + private Object waitObj; + + public DummyRunnable(Object waitObj) + { + this.waitObj = waitObj; + } + + @Override + public void run() + { + synchronized (waitObj) + { + waitObj.notify(); + } + } + } + +} \ No newline at end of file diff --git a/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino/.classpath b/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino/.classpath new file mode 100644 index 00000000..f9f04ed5 --- /dev/null +++ b/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino/.classpath @@ -0,0 +1,8 @@ + + + + + + + + diff --git a/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino/.gitignore b/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino/.gitignore new file mode 100644 index 00000000..5e56e040 --- /dev/null +++ b/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino/.gitignore @@ -0,0 +1 @@ +/bin diff --git a/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino/.project b/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino/.project new file mode 100644 index 00000000..11ccea89 --- /dev/null +++ b/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino/.project @@ -0,0 +1,29 @@ + + + fr.obeo.dsl.arduino + + + + + + org.eclipse.jdt.core.javabuilder + + + + + org.eclipse.pde.ManifestBuilder + + + + + org.eclipse.pde.SchemaBuilder + + + + + + fr.obeo.dsl.viewpoint.nature.modelingproject + org.eclipse.jdt.core.javanature + org.eclipse.pde.PluginNature + + diff --git a/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino/META-INF/MANIFEST.MF b/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino/META-INF/MANIFEST.MF new file mode 100644 index 00000000..04804ce6 --- /dev/null +++ b/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino/META-INF/MANIFEST.MF @@ -0,0 +1,15 @@ +Manifest-Version: 1.0 +Bundle-ManifestVersion: 2 +Bundle-Name: %pluginName +Bundle-SymbolicName: fr.obeo.dsl.arduino;singleton:=true +Bundle-Version: 1.0.0.qualifier +Bundle-ClassPath: . +Bundle-Vendor: %providerName +Bundle-Localization: plugin +Bundle-RequiredExecutionEnvironment: JavaSE-1.6 +Export-Package: fr.obeo.dsl.arduino, + fr.obeo.dsl.arduino.impl, + fr.obeo.dsl.arduino.util +Require-Bundle: org.eclipse.core.runtime, + org.eclipse.emf.ecore;visibility:=reexport +Bundle-ActivationPolicy: lazy diff --git a/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino/build.properties b/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino/build.properties new file mode 100644 index 00000000..7f0c2ffc --- /dev/null +++ b/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino/build.properties @@ -0,0 +1,11 @@ +# + +bin.includes = .,\ + model/,\ + META-INF/,\ + plugin.xml,\ + plugin.properties +jars.compile.order = . +source.. = src-gen/,\ + src/ +output.. = bin/ diff --git a/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino/model/arduino class diagram.png b/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino/model/arduino class diagram.png new file mode 100644 index 0000000000000000000000000000000000000000..c08a42639c869f121763802b85d86898e8952dd7 GIT binary patch literal 143932 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 E0Ya{5p8x;= literal 0 HcmV?d00001 diff --git a/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino/model/arduino.aird b/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino/model/arduino.aird new file mode 100644 index 00000000..4f553dbf --- /dev/null +++ b/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino/model/arduino.aird @@ -0,0 +1,11331 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + KEEP_LOCATION + KEEP_SIZE + KEEP_RATIO + + + + + + + + + + + + + KEEP_LOCATION + KEEP_SIZE + KEEP_RATIO + + + + + + + + + + + + + KEEP_LOCATION + KEEP_SIZE + KEEP_RATIO + + + + + + + + + + + + + KEEP_LOCATION + KEEP_SIZE + KEEP_RATIO + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + KEEP_LOCATION + KEEP_SIZE + KEEP_RATIO + + + + + + + + + + + + + KEEP_LOCATION + KEEP_SIZE + KEEP_RATIO + + + + + + + + + + + + + KEEP_LOCATION + KEEP_SIZE + KEEP_RATIO + + + + + + + + + + + + + KEEP_LOCATION + KEEP_SIZE + KEEP_RATIO + + + + + + + + + + + + + KEEP_LOCATION + KEEP_SIZE + KEEP_RATIO + + + + + + + + + + + + + + + + + + + + + + + + KEEP_LOCATION + KEEP_SIZE + KEEP_RATIO + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + KEEP_LOCATION + KEEP_SIZE + KEEP_RATIO + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + KEEP_LOCATION + KEEP_SIZE + KEEP_RATIO + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + KEEP_LOCATION + KEEP_SIZE + KEEP_RATIO + + + + + + + + + + + + + KEEP_LOCATION + KEEP_SIZE + KEEP_RATIO + + + + + + + + + + + + + + + + + + + + + + + + KEEP_LOCATION + KEEP_SIZE + KEEP_RATIO + + + + + + + + + + + + + KEEP_LOCATION + KEEP_SIZE + KEEP_RATIO + + + + + + + + + + + + + KEEP_LOCATION + KEEP_SIZE + KEEP_RATIO + + + + + + + + + + + + + KEEP_LOCATION + KEEP_SIZE + KEEP_RATIO + + + + + + + + + + + + + KEEP_LOCATION + KEEP_SIZE + KEEP_RATIO + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + KEEP_LOCATION + KEEP_SIZE + KEEP_RATIO + + + + + + + + + + + + + KEEP_LOCATION + KEEP_SIZE + KEEP_RATIO + + + + + + + + + + + + + KEEP_LOCATION + KEEP_SIZE + KEEP_RATIO + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + routingStyle + + + + + + + + + + + + + + + + routingStyle + + + + + + + + + + + + + + + + routingStyle + + + + + + + + + + + + + + + + routingStyle + + + + + + + + + + + + + + + + routingStyle + + + + + + + + + + + + + + + + routingStyle + + + + + + + + + + + + + + + + routingStyle + + + + + + + + + + + + + + + + routingStyle + + + + + + + + + + + + + + + + + routingStyle + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + routingStyle + + + + + + + + + + + + + + + + routingStyle + + + + + + + + + + + + + + + + + routingStyle + + + + + + + + + + + + + + + + routingStyle + + + + + + + + + + + + + + + + + + + + + + + + + + + + + KEEP_LOCATION + KEEP_SIZE + KEEP_RATIO + + + + + + + + + + + + + + + + + + + + + + + + + + routingStyle + + + + + + + + + + + + + + + KEEP_LOCATION + KEEP_SIZE + KEEP_RATIO + + + + + + + + + + + + + + + + + + + + + + + + + + routingStyle + + + + + + + + + + + + + + + + routingStyle + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + KEEP_LOCATION + KEEP_SIZE + KEEP_RATIO + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + routingStyle + + + + + + + + + + + + + + + KEEP_LOCATION + KEEP_SIZE + KEEP_RATIO + + + + + + + + + + + + + + + + + + + + + + + + KEEP_LOCATION + KEEP_SIZE + KEEP_RATIO + + + + + + + + + + + + + + + + + + + + + + + + + + routingStyle + + + + + + + + + + + + + + + + + routingStyle + + + + + + + + + + + + + + + KEEP_LOCATION + KEEP_SIZE + KEEP_RATIO + + + + + + + + + + + + + + routingStyle + + + + + + + + + + + + + + + KEEP_LOCATION + KEEP_SIZE + KEEP_RATIO + + + + + + + + + + + + + + routingStyle + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + KEEP_LOCATION + KEEP_SIZE + KEEP_RATIO + + + + + + + + + + + + + + routingStyle + + + + + + + + + + + + + + + + + routingStyle + + + + + + + + + + + + + + + + + routingStyle + + + + + + + + + + + + + + + KEEP_LOCATION + KEEP_SIZE + KEEP_RATIO + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + routingStyle + + + + + + + + + + + + + + + KEEP_LOCATION + KEEP_SIZE + KEEP_RATIO + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + routingStyle + + + + + + + + + + + + + + + + + routingStyle + + + + + + + + + + + + + + + + + routingStyle + + + + + + + + + + + + + + + + + routingStyle + + + + + + + + + + + + + + + + + routingStyle + + + + + + + + + + + + + + + + + routingStyle + + + + + + + + + + + + + + + + + routingStyle + + + + + + + + + + + + + + + KEEP_LOCATION + KEEP_SIZE + KEEP_RATIO + + + + + + + + + + + + + KEEP_LOCATION + KEEP_SIZE + KEEP_RATIO + + + + + + + + + + + + + + + routingStyle + + + + + + + + + + + + + + + + + routingStyle + + + + + + + + + + + + + + + + + routingStyle + + + + + + + + + + + + + + + + + routingStyle + + + + + + + + + + + + + + + KEEP_LOCATION + KEEP_SIZE + KEEP_RATIO + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + KEEP_LOCATION + KEEP_SIZE + KEEP_RATIO + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + KEEP_LOCATION + KEEP_SIZE + KEEP_RATIO + + + + + + + + + + + + + + + + + + + + + + + + KEEP_LOCATION + KEEP_SIZE + KEEP_RATIO + + + + + + + + + + + + + + routingStyle + + + + + + + + + + + + + + + KEEP_LOCATION + KEEP_SIZE + KEEP_RATIO + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + routingStyle + + + + + + + + + + + + + + + KEEP_LOCATION + KEEP_SIZE + KEEP_RATIO + + + + + + + + + + + + + + + + + + + + + + + + + + routingStyle + + + + + + + + + + + + + + + + + routingStyle + + + + + + + + + + + + + + + + + routingStyle + + + + + + + + + + + + + + + KEEP_LOCATION + KEEP_SIZE + KEEP_RATIO + + + + + + + + + + + + + + routingStyle + + + + + + + + + + + + + + + + + + + + + + + + + + + + + KEEP_LOCATION + KEEP_SIZE + KEEP_RATIO + + + + + + + + + + + + + + routingStyle + + + + + + + + + + + + + + + + + + + + + + + + + + + + + KEEP_LOCATION + KEEP_SIZE + KEEP_RATIO + + + + + + + + + + + + + KEEP_LOCATION + KEEP_SIZE + KEEP_RATIO + + + + + + + + + + + + + KEEP_LOCATION + KEEP_SIZE + KEEP_RATIO + + + + + + + + + + + + + KEEP_LOCATION + KEEP_SIZE + KEEP_RATIO + + + + + + + + + + + + + KEEP_LOCATION + KEEP_SIZE + KEEP_RATIO + + + + + + + + + + + + + KEEP_LOCATION + KEEP_SIZE + KEEP_RATIO + + + + + + + + + + + + + KEEP_LOCATION + KEEP_SIZE + KEEP_RATIO + + + + + + + + + + + + + KEEP_LOCATION + KEEP_SIZE + KEEP_RATIO + + + + + + + + + + + + + KEEP_LOCATION + KEEP_SIZE + KEEP_RATIO + + + + + + + + + + + + + KEEP_LOCATION + KEEP_SIZE + KEEP_RATIO + + + + + + + + + + + + + KEEP_LOCATION + KEEP_SIZE + KEEP_RATIO + + + + + + + + + + + + + KEEP_LOCATION + KEEP_SIZE + KEEP_RATIO + + + + + + + + + + + + + KEEP_LOCATION + KEEP_SIZE + KEEP_RATIO + + + + + + + + + + + + + KEEP_LOCATION + KEEP_SIZE + KEEP_RATIO + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + routingStyle + + + + + + + + + + + + + + + + routingStyle + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + KEEP_LOCATION + KEEP_SIZE + KEEP_RATIO + + + + + + + + + + + + + KEEP_LOCATION + KEEP_SIZE + KEEP_RATIO + + + + + + + + + + + + + + routingStyle + + + + + + + + + + + + + + + + routingStyle + + + + + + + + + + + + + + + + routingStyle + + + + + + + + + + + + + + + + routingStyle + + + + + + + + + + + + + + + + routingStyle + + + + + + + + + + + + + + + + routingStyle + + + + + + + + + + + + + + + + routingStyle + + + + + + + + + + + + + + + + routingStyle + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino/model/arduino.ecore b/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino/model/arduino.ecore new file mode 100644 index 00000000..9d00239d --- /dev/null +++ b/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino/model/arduino.ecore @@ -0,0 +1,255 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino/model/arduino.genmodel b/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino/model/arduino.genmodel new file mode 100644 index 00000000..a800983b --- /dev/null +++ b/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino/model/arduino.genmodel @@ -0,0 +1,376 @@ + + + arduino.ecore + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino/plugin.properties b/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino/plugin.properties new file mode 100644 index 00000000..5aa1087d --- /dev/null +++ b/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino/plugin.properties @@ -0,0 +1,4 @@ +# + +pluginName = Arduino Model +providerName = www.example.org diff --git a/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino/plugin.xml b/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino/plugin.xml new file mode 100644 index 00000000..d9cba2eb --- /dev/null +++ b/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino/plugin.xml @@ -0,0 +1,16 @@ + + + + + + + + + + + + diff --git a/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino/pom.xml b/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino/pom.xml new file mode 100644 index 00000000..85d293f4 --- /dev/null +++ b/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino/pom.xml @@ -0,0 +1,42 @@ + + + + 4.0.0 + + + fr.obeo.dsl.arduino + parent + 1.0.0-SNAPSHOT + ../../releng/fr.obeo.dsl.arduino.parent + + + fr.obeo.dsl.arduino + eclipse-plugin + + Arduino Language + + + + + org.eclipse.tycho + tycho-source-plugin + + + org.apache.maven.plugins + maven-pmd-plugin + + + + + diff --git a/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino/refactoring.txt b/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino/refactoring.txt new file mode 100644 index 00000000..f4141e2a --- /dev/null +++ b/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino/refactoring.txt @@ -0,0 +1,21 @@ +Here are the changes I did to the metamodel and associated tooling + + +renamed: + + MathOperator -> MathExpression + + NumericalOperator -> NumericalExpression + + BooleanOperator -> BooleanExpression + + Status -> ModuleSet + + Sensor -> ModuleGet + + InputModule -> Sensor + + OutputModule -> Actuator + +added: + + make Constant abstract and add two specializations: IntegerConstant and BooleanConstant + +removed: + + Function, Parameter and co have been removed since it was strangely done and named and not very useful. Could be re-introduced if needed (after cleaning). + + Level -> I understood that Level was a specific IntegerSetter while Status was a boolean Setter or something like that. I removed them to create a ModuleSet instruction +modified: + + ModuleSet (ex Status) is now pointing to an expression for the value to set and the link to sensor is removed. All this stuff between Status and Sensor was so strange In prefered to remove all. + + ModuleGet is now an Expression pointing to a module \ No newline at end of file diff --git a/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino/src-gen/fr/obeo/dsl/arduino/AbstractInstructionBlock.java b/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino/src-gen/fr/obeo/dsl/arduino/AbstractInstructionBlock.java new file mode 100644 index 00000000..2ed18749 --- /dev/null +++ b/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino/src-gen/fr/obeo/dsl/arduino/AbstractInstructionBlock.java @@ -0,0 +1,25 @@ +/** + * Copyright (c) 2013 Obeo. + * 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: + * Obeo - initial API and implementation + */ +package fr.obeo.dsl.arduino; + + +/** + * + * A representation of the model object 'Abstract Instruction Block'. + * + * + * + * @see fr.obeo.dsl.arduino.ArduinoPackage#getAbstractInstructionBlock() + * @model + * @generated + */ +public interface AbstractInstructionBlock extends NamedElement { +} // AbstractInstructionBlock diff --git a/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino/src-gen/fr/obeo/dsl/arduino/AmbientLightSensor.java b/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino/src-gen/fr/obeo/dsl/arduino/AmbientLightSensor.java new file mode 100644 index 00000000..d02de1db --- /dev/null +++ b/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino/src-gen/fr/obeo/dsl/arduino/AmbientLightSensor.java @@ -0,0 +1,25 @@ +/** + * Copyright (c) 2013 Obeo. + * 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: + * Obeo - initial API and implementation + */ +package fr.obeo.dsl.arduino; + + +/** + * + * A representation of the model object 'Ambient Light Sensor'. + * + * + * + * @see fr.obeo.dsl.arduino.ArduinoPackage#getAmbientLightSensor() + * @model + * @generated + */ +public interface AmbientLightSensor extends ArduinoAnalogModule { +} // AmbientLightSensor diff --git a/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino/src-gen/fr/obeo/dsl/arduino/AnalogPin.java b/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino/src-gen/fr/obeo/dsl/arduino/AnalogPin.java new file mode 100644 index 00000000..cc8fa7a8 --- /dev/null +++ b/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino/src-gen/fr/obeo/dsl/arduino/AnalogPin.java @@ -0,0 +1,57 @@ +/** + * Copyright (c) 2013 Obeo. + * 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: + * Obeo - initial API and implementation + */ +package fr.obeo.dsl.arduino; + + +/** + * + * A representation of the model object 'Analog Pin'. + * + * + *

+ * The following features are supported: + *

    + *
  • {@link fr.obeo.dsl.arduino.AnalogPin#getModule Module}
  • + *
+ *

+ * + * @see fr.obeo.dsl.arduino.ArduinoPackage#getAnalogPin() + * @model + * @generated + */ +public interface AnalogPin extends Pin { + /** + * Returns the value of the 'Module' containment reference. + * + *

+ * If the meaning of the 'Module' containment reference isn't clear, + * there really should be more of a description here... + *

+ * + * @return the value of the 'Module' containment reference. + * @see #setModule(ArduinoAnalogModule) + * @see fr.obeo.dsl.arduino.ArduinoPackage#getAnalogPin_Module() + * @model containment="true" + * @generated + */ + ArduinoAnalogModule getModule(); + + /** + * Sets the value of the '{@link fr.obeo.dsl.arduino.AnalogPin#getModule Module}' containment reference. + * + * + * @param value the new value of the 'Module' containment reference. + * @see #getModule() + * @generated + */ + void setModule(ArduinoAnalogModule value); + +} // AnalogPin diff --git a/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino/src-gen/fr/obeo/dsl/arduino/ArduinoAnalogModule.java b/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino/src-gen/fr/obeo/dsl/arduino/ArduinoAnalogModule.java new file mode 100644 index 00000000..6fa42b57 --- /dev/null +++ b/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino/src-gen/fr/obeo/dsl/arduino/ArduinoAnalogModule.java @@ -0,0 +1,25 @@ +/** + * Copyright (c) 2013 Obeo. + * 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: + * Obeo - initial API and implementation + */ +package fr.obeo.dsl.arduino; + + +/** + * + * A representation of the model object 'Analog Module'. + * + * + * + * @see fr.obeo.dsl.arduino.ArduinoPackage#getArduinoAnalogModule() + * @model abstract="true" + * @generated + */ +public interface ArduinoAnalogModule extends ArduinoModule { +} // ArduinoAnalogModule diff --git a/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino/src-gen/fr/obeo/dsl/arduino/ArduinoBoard.java b/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino/src-gen/fr/obeo/dsl/arduino/ArduinoBoard.java new file mode 100644 index 00000000..c0706e5d --- /dev/null +++ b/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino/src-gen/fr/obeo/dsl/arduino/ArduinoBoard.java @@ -0,0 +1,65 @@ +/** + * Copyright (c) 2013 Obeo. + * 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: + * Obeo - initial API and implementation + */ +package fr.obeo.dsl.arduino; + +import org.eclipse.emf.common.util.EList; + +/** + * + * A representation of the model object 'Board'. + * + * + *

+ * The following features are supported: + *

    + *
  • {@link fr.obeo.dsl.arduino.ArduinoBoard#getDigitalPins Digital Pins}
  • + *
  • {@link fr.obeo.dsl.arduino.ArduinoBoard#getAnalogPins Analog Pins}
  • + *
+ *

+ * + * @see fr.obeo.dsl.arduino.ArduinoPackage#getArduinoBoard() + * @model + * @generated + */ +public interface ArduinoBoard extends Board { + /** + * Returns the value of the 'Digital Pins' containment reference list. + * The list contents are of type {@link fr.obeo.dsl.arduino.DigitalPin}. + * + *

+ * If the meaning of the 'Digital Pins' containment reference list isn't clear, + * there really should be more of a description here... + *

+ * + * @return the value of the 'Digital Pins' containment reference list. + * @see fr.obeo.dsl.arduino.ArduinoPackage#getArduinoBoard_DigitalPins() + * @model containment="true" + * @generated + */ + EList getDigitalPins(); + + /** + * Returns the value of the 'Analog Pins' containment reference list. + * The list contents are of type {@link fr.obeo.dsl.arduino.AnalogPin}. + * + *

+ * If the meaning of the 'Analog Pins' containment reference list isn't clear, + * there really should be more of a description here... + *

+ * + * @return the value of the 'Analog Pins' containment reference list. + * @see fr.obeo.dsl.arduino.ArduinoPackage#getArduinoBoard_AnalogPins() + * @model containment="true" + * @generated + */ + EList getAnalogPins(); + +} // ArduinoBoard diff --git a/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino/src-gen/fr/obeo/dsl/arduino/ArduinoDigitalModule.java b/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino/src-gen/fr/obeo/dsl/arduino/ArduinoDigitalModule.java new file mode 100644 index 00000000..cf838bd9 --- /dev/null +++ b/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino/src-gen/fr/obeo/dsl/arduino/ArduinoDigitalModule.java @@ -0,0 +1,25 @@ +/** + * Copyright (c) 2013 Obeo. + * 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: + * Obeo - initial API and implementation + */ +package fr.obeo.dsl.arduino; + + +/** + * + * A representation of the model object 'Digital Module'. + * + * + * + * @see fr.obeo.dsl.arduino.ArduinoPackage#getArduinoDigitalModule() + * @model abstract="true" + * @generated + */ +public interface ArduinoDigitalModule extends ArduinoModule { +} // ArduinoDigitalModule diff --git a/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino/src-gen/fr/obeo/dsl/arduino/ArduinoFactory.java b/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino/src-gen/fr/obeo/dsl/arduino/ArduinoFactory.java new file mode 100644 index 00000000..cea9954a --- /dev/null +++ b/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino/src-gen/fr/obeo/dsl/arduino/ArduinoFactory.java @@ -0,0 +1,383 @@ +/** + * Copyright (c) 2013 Obeo. + * 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: + * Obeo - initial API and implementation + */ +package fr.obeo.dsl.arduino; + +import org.eclipse.emf.ecore.EFactory; + +/** + * + * The Factory for the model. + * It provides a create method for each non-abstract class of the model. + * + * @see fr.obeo.dsl.arduino.ArduinoPackage + * @generated + */ +public interface ArduinoFactory extends EFactory { + /** + * The singleton instance of the factory. + * + * + * @generated + */ + ArduinoFactory eINSTANCE = fr.obeo.dsl.arduino.impl.ArduinoFactoryImpl.init(); + + /** + * Returns a new object of class 'Digital Pin'. + * + * + * @return a new object of class 'Digital Pin'. + * @generated + */ + DigitalPin createDigitalPin(); + + /** + * Returns a new object of class 'Analog Pin'. + * + * + * @return a new object of class 'Analog Pin'. + * @generated + */ + AnalogPin createAnalogPin(); + + /** + * Returns a new object of class 'Sketch'. + * + * + * @return a new object of class 'Sketch'. + * @generated + */ + Sketch createSketch(); + + /** + * Returns a new object of class 'Project'. + * + * + * @return a new object of class 'Project'. + * @generated + */ + Project createProject(); + + /** + * Returns a new object of class 'Module Assignment'. + * + * + * @return a new object of class 'Module Assignment'. + * @generated + */ + ModuleAssignment createModuleAssignment(); + + /** + * Returns a new object of class 'Delay'. + * + * + * @return a new object of class 'Delay'. + * @generated + */ + Delay createDelay(); + + /** + * Returns a new object of class 'Repeat'. + * + * + * @return a new object of class 'Repeat'. + * @generated + */ + Repeat createRepeat(); + + /** + * Returns a new object of class 'While'. + * + * + * @return a new object of class 'While'. + * @generated + */ + While createWhile(); + + /** + * Returns a new object of class 'Variable Assignment'. + * + * + * @return a new object of class 'Variable Assignment'. + * @generated + */ + VariableAssignment createVariableAssignment(); + + /** + * Returns a new object of class 'Binary Integer Expression'. + * + * + * @return a new object of class 'Binary Integer Expression'. + * @generated + */ + BinaryIntegerExpression createBinaryIntegerExpression(); + + /** + * Returns a new object of class 'Binary Boolean Expression'. + * + * + * @return a new object of class 'Binary Boolean Expression'. + * @generated + */ + BinaryBooleanExpression createBinaryBooleanExpression(); + + /** + * Returns a new object of class 'If'. + * + * + * @return a new object of class 'If'. + * @generated + */ + If createIf(); + + /** + * Returns a new object of class 'Integer Constant'. + * + * + * @return a new object of class 'Integer Constant'. + * @generated + */ + IntegerConstant createIntegerConstant(); + + /** + * Returns a new object of class 'Boolean Constant'. + * + * + * @return a new object of class 'Boolean Constant'. + * @generated + */ + BooleanConstant createBooleanConstant(); + + /** + * Returns a new object of class 'Integer Variable'. + * + * + * @return a new object of class 'Integer Variable'. + * @generated + */ + IntegerVariable createIntegerVariable(); + + /** + * Returns a new object of class 'Boolean Variable'. + * + * + * @return a new object of class 'Boolean Variable'. + * @generated + */ + BooleanVariable createBooleanVariable(); + + /** + * Returns a new object of class 'Boolean Module Get'. + * + * + * @return a new object of class 'Boolean Module Get'. + * @generated + */ + BooleanModuleGet createBooleanModuleGet(); + + /** + * Returns a new object of class 'Integer Module Get'. + * + * + * @return a new object of class 'Integer Module Get'. + * @generated + */ + IntegerModuleGet createIntegerModuleGet(); + + /** + * Returns a new object of class 'Unary Boolean Expression'. + * + * + * @return a new object of class 'Unary Boolean Expression'. + * @generated + */ + UnaryBooleanExpression createUnaryBooleanExpression(); + + /** + * Returns a new object of class 'Unary Integer Expression'. + * + * + * @return a new object of class 'Unary Integer Expression'. + * @generated + */ + UnaryIntegerExpression createUnaryIntegerExpression(); + + /** + * Returns a new object of class 'Variable Declaration'. + * + * + * @return a new object of class 'Variable Declaration'. + * @generated + */ + VariableDeclaration createVariableDeclaration(); + + /** + * Returns a new object of class 'Variable Ref'. + * + * + * @return a new object of class 'Variable Ref'. + * @generated + */ + VariableRef createVariableRef(); + + /** + * Returns a new object of class 'LED'. + * + * + * @return a new object of class 'LED'. + * @generated + */ + LED createLED(); + + /** + * Returns a new object of class 'Push Button'. + * + * + * @return a new object of class 'Push Button'. + * @generated + */ + PushButton createPushButton(); + + /** + * Returns a new object of class 'Buzzer'. + * + * + * @return a new object of class 'Buzzer'. + * @generated + */ + Buzzer createBuzzer(); + + /** + * Returns a new object of class 'Rotation Sensor'. + * + * + * @return a new object of class 'Rotation Sensor'. + * @generated + */ + RotationSensor createRotationSensor(); + + /** + * Returns a new object of class 'Micro Servo'. + * + * + * @return a new object of class 'Micro Servo'. + * @generated + */ + MicroServo createMicroServo(); + + /** + * Returns a new object of class 'Infra Red Sensor'. + * + * + * @return a new object of class 'Infra Red Sensor'. + * @generated + */ + InfraRedSensor createInfraRedSensor(); + + /** + * Returns a new object of class 'Ambient Light Sensor'. + * + * + * @return a new object of class 'Ambient Light Sensor'. + * @generated + */ + AmbientLightSensor createAmbientLightSensor(); + + /** + * Returns a new object of class 'Sound Sensor'. + * + * + * @return a new object of class 'Sound Sensor'. + * @generated + */ + SoundSensor createSoundSensor(); + + /** + * Returns a new object of class 'Fan'. + * + * + * @return a new object of class 'Fan'. + * @generated + */ + Fan createFan(); + + /** + * Returns a new object of class 'Music Player'. + * + * + * @return a new object of class 'Music Player'. + * @generated + */ + MusicPlayer createMusicPlayer(); + + /** + * Returns a new object of class 'Board'. + * + * + * @return a new object of class 'Board'. + * @generated + */ + ArduinoBoard createArduinoBoard(); + + /** + * Returns a new object of class 'Thread'. + * + * + * @return a new object of class 'Thread'. + * @generated + */ + Thread createThread(); + + /** + * Returns a new object of class 'Channel'. + * + * + * @return a new object of class 'Channel'. + * @generated + */ + Channel createChannel(); + + /** + * Returns a new object of class 'Link'. + * + * + * @return a new object of class 'Link'. + * @generated + */ + Link createLink(); + + /** + * Returns a new object of class 'Synchronization Block'. + * + * + * @return a new object of class 'Synchronization Block'. + * @generated + */ + SynchronizationBlock createSynchronizationBlock(); + + /** + * Returns a new object of class 'Instruction Block'. + * + * + * @return a new object of class 'Instruction Block'. + * @generated + */ + InstructionBlock createInstructionBlock(); + + /** + * Returns the package supported by this factory. + * + * + * @return the package supported by this factory. + * @generated + */ + ArduinoPackage getArduinoPackage(); + +} //ArduinoFactory diff --git a/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino/src-gen/fr/obeo/dsl/arduino/ArduinoModule.java b/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino/src-gen/fr/obeo/dsl/arduino/ArduinoModule.java new file mode 100644 index 00000000..c6b4f641 --- /dev/null +++ b/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino/src-gen/fr/obeo/dsl/arduino/ArduinoModule.java @@ -0,0 +1,25 @@ +/** + * Copyright (c) 2013 Obeo. + * 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: + * Obeo - initial API and implementation + */ +package fr.obeo.dsl.arduino; + + +/** + * + * A representation of the model object 'Module'. + * + * + * + * @see fr.obeo.dsl.arduino.ArduinoPackage#getArduinoModule() + * @model abstract="true" + * @generated + */ +public interface ArduinoModule extends Module { +} // ArduinoModule diff --git a/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino/src-gen/fr/obeo/dsl/arduino/ArduinoPackage.java b/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino/src-gen/fr/obeo/dsl/arduino/ArduinoPackage.java new file mode 100644 index 00000000..ab03ef9a --- /dev/null +++ b/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino/src-gen/fr/obeo/dsl/arduino/ArduinoPackage.java @@ -0,0 +1,5072 @@ +/** + * Copyright (c) 2013 Obeo. + * 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: + * Obeo - initial API and implementation + */ +package fr.obeo.dsl.arduino; + +import org.eclipse.emf.ecore.EAttribute; +import org.eclipse.emf.ecore.EClass; +import org.eclipse.emf.ecore.EEnum; +import org.eclipse.emf.ecore.EPackage; +import org.eclipse.emf.ecore.EReference; + +/** + * + * The Package for the model. + * It contains accessors for the meta objects to represent + *
    + *
  • each class,
  • + *
  • each feature of each class,
  • + *
  • each enum,
  • + *
  • and each data type
  • + *
+ * + * @see fr.obeo.dsl.arduino.ArduinoFactory + * @model kind="package" + * @generated + */ +public interface ArduinoPackage extends EPackage { + /** + * The package name. + * + * + * @generated + */ + String eNAME = "arduino"; + + /** + * The package namespace URI. + * + * + * @generated + */ + String eNS_URI = "http://www.obeo.fr/arduino"; + + /** + * The package namespace name. + * + * + * @generated + */ + String eNS_PREFIX = "arduino"; + + /** + * The singleton instance of the package. + * + * + * @generated + */ + ArduinoPackage eINSTANCE = fr.obeo.dsl.arduino.impl.ArduinoPackageImpl.init(); + + /** + * The meta object id for the '{@link fr.obeo.dsl.arduino.impl.NamedElementImpl Named Element}' class. + * + * + * @see fr.obeo.dsl.arduino.impl.NamedElementImpl + * @see fr.obeo.dsl.arduino.impl.ArduinoPackageImpl#getNamedElement() + * @generated + */ + int NAMED_ELEMENT = 13; + + /** + * The feature id for the 'Name' attribute. + * + * + * @generated + * @ordered + */ + int NAMED_ELEMENT__NAME = 0; + + /** + * The number of structural features of the 'Named Element' class. + * + * + * @generated + * @ordered + */ + int NAMED_ELEMENT_FEATURE_COUNT = 1; + + /** + * The meta object id for the '{@link fr.obeo.dsl.arduino.impl.BoardImpl Board}' class. + * + * + * @see fr.obeo.dsl.arduino.impl.BoardImpl + * @see fr.obeo.dsl.arduino.impl.ArduinoPackageImpl#getBoard() + * @generated + */ + int BOARD = 0; + + /** + * The feature id for the 'Name' attribute. + * + * + * @generated + * @ordered + */ + int BOARD__NAME = NAMED_ELEMENT__NAME; + + /** + * The feature id for the 'Project' container reference. + * + * + * @generated + * @ordered + */ + int BOARD__PROJECT = NAMED_ELEMENT_FEATURE_COUNT + 0; + + /** + * The feature id for the 'Threads' reference list. + * + * + * @generated + * @ordered + */ + int BOARD__THREADS = NAMED_ELEMENT_FEATURE_COUNT + 1; + + /** + * The number of structural features of the 'Board' class. + * + * + * @generated + * @ordered + */ + int BOARD_FEATURE_COUNT = NAMED_ELEMENT_FEATURE_COUNT + 2; + + /** + * The meta object id for the '{@link fr.obeo.dsl.arduino.Module Module}' class. + * + * + * @see fr.obeo.dsl.arduino.Module + * @see fr.obeo.dsl.arduino.impl.ArduinoPackageImpl#getModule() + * @generated + */ + int MODULE = 1; + + /** + * The feature id for the 'Name' attribute. + * + * + * @generated + * @ordered + */ + int MODULE__NAME = NAMED_ELEMENT__NAME; + + /** + * The feature id for the 'Level' attribute. + * + * + * @generated + * @ordered + */ + int MODULE__LEVEL = NAMED_ELEMENT_FEATURE_COUNT + 0; + + /** + * The number of structural features of the 'Module' class. + * + * + * @generated + * @ordered + */ + int MODULE_FEATURE_COUNT = NAMED_ELEMENT_FEATURE_COUNT + 1; + + /** + * The meta object id for the '{@link fr.obeo.dsl.arduino.impl.PinImpl Pin}' class. + * + * + * @see fr.obeo.dsl.arduino.impl.PinImpl + * @see fr.obeo.dsl.arduino.impl.ArduinoPackageImpl#getPin() + * @generated + */ + int PIN = 3; + + /** + * The feature id for the 'Id' attribute. + * + * + * @generated + * @ordered + */ + int PIN__ID = 0; + + /** + * The feature id for the 'Level' attribute. + * + * + * @generated + * @ordered + */ + int PIN__LEVEL = 1; + + /** + * The number of structural features of the 'Pin' class. + * + * + * @generated + * @ordered + */ + int PIN_FEATURE_COUNT = 2; + + /** + * The meta object id for the '{@link fr.obeo.dsl.arduino.impl.DigitalPinImpl Digital Pin}' class. + * + * + * @see fr.obeo.dsl.arduino.impl.DigitalPinImpl + * @see fr.obeo.dsl.arduino.impl.ArduinoPackageImpl#getDigitalPin() + * @generated + */ + int DIGITAL_PIN = 2; + + /** + * The feature id for the 'Id' attribute. + * + * + * @generated + * @ordered + */ + int DIGITAL_PIN__ID = PIN__ID; + + /** + * The feature id for the 'Level' attribute. + * + * + * @generated + * @ordered + */ + int DIGITAL_PIN__LEVEL = PIN__LEVEL; + + /** + * The feature id for the 'Module' containment reference. + * + * + * @generated + * @ordered + */ + int DIGITAL_PIN__MODULE = PIN_FEATURE_COUNT + 0; + + /** + * The number of structural features of the 'Digital Pin' class. + * + * + * @generated + * @ordered + */ + int DIGITAL_PIN_FEATURE_COUNT = PIN_FEATURE_COUNT + 1; + + /** + * The meta object id for the '{@link fr.obeo.dsl.arduino.impl.AnalogPinImpl Analog Pin}' class. + * + * + * @see fr.obeo.dsl.arduino.impl.AnalogPinImpl + * @see fr.obeo.dsl.arduino.impl.ArduinoPackageImpl#getAnalogPin() + * @generated + */ + int ANALOG_PIN = 4; + + /** + * The feature id for the 'Id' attribute. + * + * + * @generated + * @ordered + */ + int ANALOG_PIN__ID = PIN__ID; + + /** + * The feature id for the 'Level' attribute. + * + * + * @generated + * @ordered + */ + int ANALOG_PIN__LEVEL = PIN__LEVEL; + + /** + * The feature id for the 'Module' containment reference. + * + * + * @generated + * @ordered + */ + int ANALOG_PIN__MODULE = PIN_FEATURE_COUNT + 0; + + /** + * The number of structural features of the 'Analog Pin' class. + * + * + * @generated + * @ordered + */ + int ANALOG_PIN_FEATURE_COUNT = PIN_FEATURE_COUNT + 1; + + /** + * The meta object id for the '{@link fr.obeo.dsl.arduino.impl.SketchImpl Sketch}' class. + * + * + * @see fr.obeo.dsl.arduino.impl.SketchImpl + * @see fr.obeo.dsl.arduino.impl.ArduinoPackageImpl#getSketch() + * @generated + */ + int SKETCH = 5; + + /** + * The feature id for the 'Name' attribute. + * + * + * @generated + * @ordered + */ + int SKETCH__NAME = NAMED_ELEMENT__NAME; + + /** + * The feature id for the 'Project' container reference. + * + * + * @generated + * @ordered + */ + int SKETCH__PROJECT = NAMED_ELEMENT_FEATURE_COUNT + 0; + + /** + * The feature id for the 'Threads' containment reference list. + * + * + * @generated + * @ordered + */ + int SKETCH__THREADS = NAMED_ELEMENT_FEATURE_COUNT + 1; + + /** + * The feature id for the 'Channels' containment reference list. + * + * + * @generated + * @ordered + */ + int SKETCH__CHANNELS = NAMED_ELEMENT_FEATURE_COUNT + 2; + + /** + * The number of structural features of the 'Sketch' class. + * + * + * @generated + * @ordered + */ + int SKETCH_FEATURE_COUNT = NAMED_ELEMENT_FEATURE_COUNT + 3; + + /** + * The meta object id for the '{@link fr.obeo.dsl.arduino.impl.ProjectImpl Project}' class. + * + * + * @see fr.obeo.dsl.arduino.impl.ProjectImpl + * @see fr.obeo.dsl.arduino.impl.ArduinoPackageImpl#getProject() + * @generated + */ + int PROJECT = 6; + + /** + * The feature id for the 'Name' attribute. + * + * + * @generated + * @ordered + */ + int PROJECT__NAME = NAMED_ELEMENT__NAME; + + /** + * The feature id for the 'Boards' containment reference list. + * + * + * @generated + * @ordered + */ + int PROJECT__BOARDS = NAMED_ELEMENT_FEATURE_COUNT + 0; + + /** + * The feature id for the 'Sketch' containment reference. + * + * + * @generated + * @ordered + */ + int PROJECT__SKETCH = NAMED_ELEMENT_FEATURE_COUNT + 1; + + /** + * The feature id for the 'Links' containment reference list. + * + * + * @generated + * @ordered + */ + int PROJECT__LINKS = NAMED_ELEMENT_FEATURE_COUNT + 2; + + /** + * The number of structural features of the 'Project' class. + * + * + * @generated + * @ordered + */ + int PROJECT_FEATURE_COUNT = NAMED_ELEMENT_FEATURE_COUNT + 3; + + /** + * The meta object id for the '{@link fr.obeo.dsl.arduino.impl.InstructionImpl Instruction}' class. + * + * + * @see fr.obeo.dsl.arduino.impl.InstructionImpl + * @see fr.obeo.dsl.arduino.impl.ArduinoPackageImpl#getInstruction() + * @generated + */ + int INSTRUCTION = 7; + + /** + * The feature id for the 'Name' attribute. + * + * + * @generated + * @ordered + */ + int INSTRUCTION__NAME = NAMED_ELEMENT__NAME; + + /** + * The feature id for the 'Owned Block' container reference. + * + * + * @generated + * @ordered + */ + int INSTRUCTION__OWNED_BLOCK = NAMED_ELEMENT_FEATURE_COUNT + 0; + + /** + * The number of structural features of the 'Instruction' class. + * + * + * @generated + * @ordered + */ + int INSTRUCTION_FEATURE_COUNT = NAMED_ELEMENT_FEATURE_COUNT + 1; + + /** + * The meta object id for the '{@link fr.obeo.dsl.arduino.impl.ModuleInstructionImpl Module Instruction}' class. + * + * + * @see fr.obeo.dsl.arduino.impl.ModuleInstructionImpl + * @see fr.obeo.dsl.arduino.impl.ArduinoPackageImpl#getModuleInstruction() + * @generated + */ + int MODULE_INSTRUCTION = 9; + + /** + * The feature id for the 'Name' attribute. + * + * + * @generated + * @ordered + */ + int MODULE_INSTRUCTION__NAME = INSTRUCTION__NAME; + + /** + * The feature id for the 'Owned Block' container reference. + * + * + * @generated + * @ordered + */ + int MODULE_INSTRUCTION__OWNED_BLOCK = INSTRUCTION__OWNED_BLOCK; + + /** + * The feature id for the 'Module' reference. + * + * + * @generated + * @ordered + */ + int MODULE_INSTRUCTION__MODULE = INSTRUCTION_FEATURE_COUNT + 0; + + /** + * The number of structural features of the 'Module Instruction' class. + * + * + * @generated + * @ordered + */ + int MODULE_INSTRUCTION_FEATURE_COUNT = INSTRUCTION_FEATURE_COUNT + 1; + + /** + * The meta object id for the '{@link fr.obeo.dsl.arduino.impl.ModuleAssignmentImpl Module Assignment}' class. + * + * + * @see fr.obeo.dsl.arduino.impl.ModuleAssignmentImpl + * @see fr.obeo.dsl.arduino.impl.ArduinoPackageImpl#getModuleAssignment() + * @generated + */ + int MODULE_ASSIGNMENT = 8; + + /** + * The feature id for the 'Name' attribute. + * + * + * @generated + * @ordered + */ + int MODULE_ASSIGNMENT__NAME = MODULE_INSTRUCTION__NAME; + + /** + * The feature id for the 'Owned Block' container reference. + * + * + * @generated + * @ordered + */ + int MODULE_ASSIGNMENT__OWNED_BLOCK = MODULE_INSTRUCTION__OWNED_BLOCK; + + /** + * The feature id for the 'Module' reference. + * + * + * @generated + * @ordered + */ + int MODULE_ASSIGNMENT__MODULE = MODULE_INSTRUCTION__MODULE; + + /** + * The feature id for the 'Operand' containment reference. + * + * + * @generated + * @ordered + */ + int MODULE_ASSIGNMENT__OPERAND = MODULE_INSTRUCTION_FEATURE_COUNT + 0; + + /** + * The number of structural features of the 'Module Assignment' class. + * + * + * @generated + * @ordered + */ + int MODULE_ASSIGNMENT_FEATURE_COUNT = MODULE_INSTRUCTION_FEATURE_COUNT + 1; + + /** + * The meta object id for the '{@link fr.obeo.dsl.arduino.impl.ControlImpl Control}' class. + * + * + * @see fr.obeo.dsl.arduino.impl.ControlImpl + * @see fr.obeo.dsl.arduino.impl.ArduinoPackageImpl#getControl() + * @generated + */ + int CONTROL = 10; + + /** + * The feature id for the 'Name' attribute. + * + * + * @generated + * @ordered + */ + int CONTROL__NAME = INSTRUCTION__NAME; + + /** + * The feature id for the 'Owned Block' container reference. + * + * + * @generated + * @ordered + */ + int CONTROL__OWNED_BLOCK = INSTRUCTION__OWNED_BLOCK; + + /** + * The feature id for the 'Block' containment reference. + * + * + * @generated + * @ordered + */ + int CONTROL__BLOCK = INSTRUCTION_FEATURE_COUNT + 0; + + /** + * The number of structural features of the 'Control' class. + * + * + * @generated + * @ordered + */ + int CONTROL_FEATURE_COUNT = INSTRUCTION_FEATURE_COUNT + 1; + + /** + * The meta object id for the '{@link fr.obeo.dsl.arduino.impl.UtilitiesImpl Utilities}' class. + * + * + * @see fr.obeo.dsl.arduino.impl.UtilitiesImpl + * @see fr.obeo.dsl.arduino.impl.ArduinoPackageImpl#getUtilities() + * @generated + */ + int UTILITIES = 11; + + /** + * The feature id for the 'Name' attribute. + * + * + * @generated + * @ordered + */ + int UTILITIES__NAME = INSTRUCTION__NAME; + + /** + * The feature id for the 'Owned Block' container reference. + * + * + * @generated + * @ordered + */ + int UTILITIES__OWNED_BLOCK = INSTRUCTION__OWNED_BLOCK; + + /** + * The number of structural features of the 'Utilities' class. + * + * + * @generated + * @ordered + */ + int UTILITIES_FEATURE_COUNT = INSTRUCTION_FEATURE_COUNT + 0; + + /** + * The meta object id for the '{@link fr.obeo.dsl.arduino.impl.DelayImpl Delay}' class. + * + * + * @see fr.obeo.dsl.arduino.impl.DelayImpl + * @see fr.obeo.dsl.arduino.impl.ArduinoPackageImpl#getDelay() + * @generated + */ + int DELAY = 12; + + /** + * The feature id for the 'Name' attribute. + * + * + * @generated + * @ordered + */ + int DELAY__NAME = UTILITIES__NAME; + + /** + * The feature id for the 'Owned Block' container reference. + * + * + * @generated + * @ordered + */ + int DELAY__OWNED_BLOCK = UTILITIES__OWNED_BLOCK; + + /** + * The feature id for the 'Unit' attribute. + * + * + * @generated + * @ordered + */ + int DELAY__UNIT = UTILITIES_FEATURE_COUNT + 0; + + /** + * The feature id for the 'Value' attribute. + * + * + * @generated + * @ordered + */ + int DELAY__VALUE = UTILITIES_FEATURE_COUNT + 1; + + /** + * The number of structural features of the 'Delay' class. + * + * + * @generated + * @ordered + */ + int DELAY_FEATURE_COUNT = UTILITIES_FEATURE_COUNT + 2; + + /** + * The meta object id for the '{@link fr.obeo.dsl.arduino.impl.RepeatImpl Repeat}' class. + * + * + * @see fr.obeo.dsl.arduino.impl.RepeatImpl + * @see fr.obeo.dsl.arduino.impl.ArduinoPackageImpl#getRepeat() + * @generated + */ + int REPEAT = 14; + + /** + * The feature id for the 'Name' attribute. + * + * + * @generated + * @ordered + */ + int REPEAT__NAME = CONTROL__NAME; + + /** + * The feature id for the 'Owned Block' container reference. + * + * + * @generated + * @ordered + */ + int REPEAT__OWNED_BLOCK = CONTROL__OWNED_BLOCK; + + /** + * The feature id for the 'Block' containment reference. + * + * + * @generated + * @ordered + */ + int REPEAT__BLOCK = CONTROL__BLOCK; + + /** + * The feature id for the 'Iteration' attribute. + * + * + * @generated + * @ordered + */ + int REPEAT__ITERATION = CONTROL_FEATURE_COUNT + 0; + + /** + * The number of structural features of the 'Repeat' class. + * + * + * @generated + * @ordered + */ + int REPEAT_FEATURE_COUNT = CONTROL_FEATURE_COUNT + 1; + + /** + * The meta object id for the '{@link fr.obeo.dsl.arduino.impl.ExpressionImpl Expression}' class. + * + * + * @see fr.obeo.dsl.arduino.impl.ExpressionImpl + * @see fr.obeo.dsl.arduino.impl.ArduinoPackageImpl#getExpression() + * @generated + */ + int EXPRESSION = 22; + + /** + * The number of structural features of the 'Expression' class. + * + * + * @generated + * @ordered + */ + int EXPRESSION_FEATURE_COUNT = 0; + + /** + * The meta object id for the '{@link fr.obeo.dsl.arduino.impl.ModuleGetImpl Module Get}' class. + * + * + * @see fr.obeo.dsl.arduino.impl.ModuleGetImpl + * @see fr.obeo.dsl.arduino.impl.ArduinoPackageImpl#getModuleGet() + * @generated + */ + int MODULE_GET = 15; + + /** + * The feature id for the 'Module' reference. + * + * + * @generated + * @ordered + */ + int MODULE_GET__MODULE = EXPRESSION_FEATURE_COUNT + 0; + + /** + * The number of structural features of the 'Module Get' class. + * + * + * @generated + * @ordered + */ + int MODULE_GET_FEATURE_COUNT = EXPRESSION_FEATURE_COUNT + 1; + + /** + * The meta object id for the '{@link fr.obeo.dsl.arduino.impl.WhileImpl While}' class. + * + * + * @see fr.obeo.dsl.arduino.impl.WhileImpl + * @see fr.obeo.dsl.arduino.impl.ArduinoPackageImpl#getWhile() + * @generated + */ + int WHILE = 16; + + /** + * The feature id for the 'Name' attribute. + * + * + * @generated + * @ordered + */ + int WHILE__NAME = CONTROL__NAME; + + /** + * The feature id for the 'Owned Block' container reference. + * + * + * @generated + * @ordered + */ + int WHILE__OWNED_BLOCK = CONTROL__OWNED_BLOCK; + + /** + * The feature id for the 'Block' containment reference. + * + * + * @generated + * @ordered + */ + int WHILE__BLOCK = CONTROL__BLOCK; + + /** + * The feature id for the 'Condition' containment reference. + * + * + * @generated + * @ordered + */ + int WHILE__CONDITION = CONTROL_FEATURE_COUNT + 0; + + /** + * The number of structural features of the 'While' class. + * + * + * @generated + * @ordered + */ + int WHILE_FEATURE_COUNT = CONTROL_FEATURE_COUNT + 1; + + /** + * The meta object id for the '{@link fr.obeo.dsl.arduino.impl.BinaryExpressionImpl Binary Expression}' class. + * + * + * @see fr.obeo.dsl.arduino.impl.BinaryExpressionImpl + * @see fr.obeo.dsl.arduino.impl.ArduinoPackageImpl#getBinaryExpression() + * @generated + */ + int BINARY_EXPRESSION = 17; + + /** + * The feature id for the 'Left' containment reference. + * + * + * @generated + * @ordered + */ + int BINARY_EXPRESSION__LEFT = EXPRESSION_FEATURE_COUNT + 0; + + /** + * The feature id for the 'Right' containment reference. + * + * + * @generated + * @ordered + */ + int BINARY_EXPRESSION__RIGHT = EXPRESSION_FEATURE_COUNT + 1; + + /** + * The number of structural features of the 'Binary Expression' class. + * + * + * @generated + * @ordered + */ + int BINARY_EXPRESSION_FEATURE_COUNT = EXPRESSION_FEATURE_COUNT + 2; + + /** + * The meta object id for the '{@link fr.obeo.dsl.arduino.impl.VariableImpl Variable}' class. + * + * + * @see fr.obeo.dsl.arduino.impl.VariableImpl + * @see fr.obeo.dsl.arduino.impl.ArduinoPackageImpl#getVariable() + * @generated + */ + int VARIABLE = 18; + + /** + * The feature id for the 'Name' attribute. + * + * + * @generated + * @ordered + */ + int VARIABLE__NAME = EXPRESSION_FEATURE_COUNT + 0; + + /** + * The number of structural features of the 'Variable' class. + * + * + * @generated + * @ordered + */ + int VARIABLE_FEATURE_COUNT = EXPRESSION_FEATURE_COUNT + 1; + + /** + * The meta object id for the '{@link fr.obeo.dsl.arduino.impl.VariableAssignmentImpl Variable Assignment}' class. + * + * + * @see fr.obeo.dsl.arduino.impl.VariableAssignmentImpl + * @see fr.obeo.dsl.arduino.impl.ArduinoPackageImpl#getVariableAssignment() + * @generated + */ + int VARIABLE_ASSIGNMENT = 19; + + /** + * The feature id for the 'Name' attribute. + * + * + * @generated + * @ordered + */ + int VARIABLE_ASSIGNMENT__NAME = INSTRUCTION__NAME; + + /** + * The feature id for the 'Owned Block' container reference. + * + * + * @generated + * @ordered + */ + int VARIABLE_ASSIGNMENT__OWNED_BLOCK = INSTRUCTION__OWNED_BLOCK; + + /** + * The feature id for the 'Operand' containment reference. + * + * + * @generated + * @ordered + */ + int VARIABLE_ASSIGNMENT__OPERAND = INSTRUCTION_FEATURE_COUNT + 0; + + /** + * The feature id for the 'Variable' reference. + * + * + * @generated + * @ordered + */ + int VARIABLE_ASSIGNMENT__VARIABLE = INSTRUCTION_FEATURE_COUNT + 1; + + /** + * The number of structural features of the 'Variable Assignment' class. + * + * + * @generated + * @ordered + */ + int VARIABLE_ASSIGNMENT_FEATURE_COUNT = INSTRUCTION_FEATURE_COUNT + 2; + + /** + * The meta object id for the '{@link fr.obeo.dsl.arduino.impl.BinaryIntegerExpressionImpl Binary Integer Expression}' class. + * + * + * @see fr.obeo.dsl.arduino.impl.BinaryIntegerExpressionImpl + * @see fr.obeo.dsl.arduino.impl.ArduinoPackageImpl#getBinaryIntegerExpression() + * @generated + */ + int BINARY_INTEGER_EXPRESSION = 20; + + /** + * The feature id for the 'Left' containment reference. + * + * + * @generated + * @ordered + */ + int BINARY_INTEGER_EXPRESSION__LEFT = BINARY_EXPRESSION__LEFT; + + /** + * The feature id for the 'Right' containment reference. + * + * + * @generated + * @ordered + */ + int BINARY_INTEGER_EXPRESSION__RIGHT = BINARY_EXPRESSION__RIGHT; + + /** + * The feature id for the 'Operator' attribute. + * + * + * @generated + * @ordered + */ + int BINARY_INTEGER_EXPRESSION__OPERATOR = BINARY_EXPRESSION_FEATURE_COUNT + 0; + + /** + * The number of structural features of the 'Binary Integer Expression' class. + * + * + * @generated + * @ordered + */ + int BINARY_INTEGER_EXPRESSION_FEATURE_COUNT = BINARY_EXPRESSION_FEATURE_COUNT + 1; + + /** + * The meta object id for the '{@link fr.obeo.dsl.arduino.impl.BinaryBooleanExpressionImpl Binary Boolean Expression}' class. + * + * + * @see fr.obeo.dsl.arduino.impl.BinaryBooleanExpressionImpl + * @see fr.obeo.dsl.arduino.impl.ArduinoPackageImpl#getBinaryBooleanExpression() + * @generated + */ + int BINARY_BOOLEAN_EXPRESSION = 21; + + /** + * The feature id for the 'Left' containment reference. + * + * + * @generated + * @ordered + */ + int BINARY_BOOLEAN_EXPRESSION__LEFT = BINARY_EXPRESSION__LEFT; + + /** + * The feature id for the 'Right' containment reference. + * + * + * @generated + * @ordered + */ + int BINARY_BOOLEAN_EXPRESSION__RIGHT = BINARY_EXPRESSION__RIGHT; + + /** + * The feature id for the 'Operator' attribute. + * + * + * @generated + * @ordered + */ + int BINARY_BOOLEAN_EXPRESSION__OPERATOR = BINARY_EXPRESSION_FEATURE_COUNT + 0; + + /** + * The number of structural features of the 'Binary Boolean Expression' class. + * + * + * @generated + * @ordered + */ + int BINARY_BOOLEAN_EXPRESSION_FEATURE_COUNT = BINARY_EXPRESSION_FEATURE_COUNT + 1; + + /** + * The meta object id for the '{@link fr.obeo.dsl.arduino.impl.ConstantImpl Constant}' class. + * + * + * @see fr.obeo.dsl.arduino.impl.ConstantImpl + * @see fr.obeo.dsl.arduino.impl.ArduinoPackageImpl#getConstant() + * @generated + */ + int CONSTANT = 23; + + /** + * The number of structural features of the 'Constant' class. + * + * + * @generated + * @ordered + */ + int CONSTANT_FEATURE_COUNT = EXPRESSION_FEATURE_COUNT + 0; + + /** + * The meta object id for the '{@link fr.obeo.dsl.arduino.impl.IfImpl If}' class. + * + * + * @see fr.obeo.dsl.arduino.impl.IfImpl + * @see fr.obeo.dsl.arduino.impl.ArduinoPackageImpl#getIf() + * @generated + */ + int IF = 24; + + /** + * The feature id for the 'Name' attribute. + * + * + * @generated + * @ordered + */ + int IF__NAME = CONTROL__NAME; + + /** + * The feature id for the 'Owned Block' container reference. + * + * + * @generated + * @ordered + */ + int IF__OWNED_BLOCK = CONTROL__OWNED_BLOCK; + + /** + * The feature id for the 'Block' containment reference. + * + * + * @generated + * @ordered + */ + int IF__BLOCK = CONTROL__BLOCK; + + /** + * The feature id for the 'Condition' containment reference. + * + * + * @generated + * @ordered + */ + int IF__CONDITION = CONTROL_FEATURE_COUNT + 0; + + /** + * The feature id for the 'Else Block' containment reference. + * + * + * @generated + * @ordered + */ + int IF__ELSE_BLOCK = CONTROL_FEATURE_COUNT + 1; + + /** + * The number of structural features of the 'If' class. + * + * + * @generated + * @ordered + */ + int IF_FEATURE_COUNT = CONTROL_FEATURE_COUNT + 2; + + /** + * The meta object id for the '{@link fr.obeo.dsl.arduino.impl.IntegerConstantImpl Integer Constant}' class. + * + * + * @see fr.obeo.dsl.arduino.impl.IntegerConstantImpl + * @see fr.obeo.dsl.arduino.impl.ArduinoPackageImpl#getIntegerConstant() + * @generated + */ + int INTEGER_CONSTANT = 25; + + /** + * The feature id for the 'Value' attribute. + * + * + * @generated + * @ordered + */ + int INTEGER_CONSTANT__VALUE = CONSTANT_FEATURE_COUNT + 0; + + /** + * The number of structural features of the 'Integer Constant' class. + * + * + * @generated + * @ordered + */ + int INTEGER_CONSTANT_FEATURE_COUNT = CONSTANT_FEATURE_COUNT + 1; + + /** + * The meta object id for the '{@link fr.obeo.dsl.arduino.impl.BooleanConstantImpl Boolean Constant}' class. + * + * + * @see fr.obeo.dsl.arduino.impl.BooleanConstantImpl + * @see fr.obeo.dsl.arduino.impl.ArduinoPackageImpl#getBooleanConstant() + * @generated + */ + int BOOLEAN_CONSTANT = 26; + + /** + * The feature id for the 'Value' attribute. + * + * + * @generated + * @ordered + */ + int BOOLEAN_CONSTANT__VALUE = CONSTANT_FEATURE_COUNT + 0; + + /** + * The number of structural features of the 'Boolean Constant' class. + * + * + * @generated + * @ordered + */ + int BOOLEAN_CONSTANT_FEATURE_COUNT = CONSTANT_FEATURE_COUNT + 1; + + /** + * The meta object id for the '{@link fr.obeo.dsl.arduino.impl.BooleanExpressionImpl Boolean Expression}' class. + * + * + * @see fr.obeo.dsl.arduino.impl.BooleanExpressionImpl + * @see fr.obeo.dsl.arduino.impl.ArduinoPackageImpl#getBooleanExpression() + * @generated + */ + int BOOLEAN_EXPRESSION = 27; + + /** + * The number of structural features of the 'Boolean Expression' class. + * + * + * @generated + * @ordered + */ + int BOOLEAN_EXPRESSION_FEATURE_COUNT = EXPRESSION_FEATURE_COUNT + 0; + + /** + * The meta object id for the '{@link fr.obeo.dsl.arduino.impl.IntegerExpressionImpl Integer Expression}' class. + * + * + * @see fr.obeo.dsl.arduino.impl.IntegerExpressionImpl + * @see fr.obeo.dsl.arduino.impl.ArduinoPackageImpl#getIntegerExpression() + * @generated + */ + int INTEGER_EXPRESSION = 28; + + /** + * The number of structural features of the 'Integer Expression' class. + * + * + * @generated + * @ordered + */ + int INTEGER_EXPRESSION_FEATURE_COUNT = EXPRESSION_FEATURE_COUNT + 0; + + /** + * The meta object id for the '{@link fr.obeo.dsl.arduino.impl.AssignmentImpl Assignment}' class. + * + * + * @see fr.obeo.dsl.arduino.impl.AssignmentImpl + * @see fr.obeo.dsl.arduino.impl.ArduinoPackageImpl#getAssignment() + * @generated + */ + int ASSIGNMENT = 29; + + /** + * The feature id for the 'Name' attribute. + * + * + * @generated + * @ordered + */ + int ASSIGNMENT__NAME = INSTRUCTION__NAME; + + /** + * The feature id for the 'Owned Block' container reference. + * + * + * @generated + * @ordered + */ + int ASSIGNMENT__OWNED_BLOCK = INSTRUCTION__OWNED_BLOCK; + + /** + * The feature id for the 'Operand' containment reference. + * + * + * @generated + * @ordered + */ + int ASSIGNMENT__OPERAND = INSTRUCTION_FEATURE_COUNT + 0; + + /** + * The number of structural features of the 'Assignment' class. + * + * + * @generated + * @ordered + */ + int ASSIGNMENT_FEATURE_COUNT = INSTRUCTION_FEATURE_COUNT + 1; + + /** + * The meta object id for the '{@link fr.obeo.dsl.arduino.impl.IntegerVariableImpl Integer Variable}' class. + * + * + * @see fr.obeo.dsl.arduino.impl.IntegerVariableImpl + * @see fr.obeo.dsl.arduino.impl.ArduinoPackageImpl#getIntegerVariable() + * @generated + */ + int INTEGER_VARIABLE = 30; + + /** + * The feature id for the 'Name' attribute. + * + * + * @generated + * @ordered + */ + int INTEGER_VARIABLE__NAME = VARIABLE__NAME; + + /** + * The feature id for the 'Initial Value' attribute. + * + * + * @generated + * @ordered + */ + int INTEGER_VARIABLE__INITIAL_VALUE = VARIABLE_FEATURE_COUNT + 0; + + /** + * The feature id for the 'Value' attribute. + * + * + * @generated + * @ordered + */ + int INTEGER_VARIABLE__VALUE = VARIABLE_FEATURE_COUNT + 1; + + /** + * The number of structural features of the 'Integer Variable' class. + * + * + * @generated + * @ordered + */ + int INTEGER_VARIABLE_FEATURE_COUNT = VARIABLE_FEATURE_COUNT + 2; + + /** + * The meta object id for the '{@link fr.obeo.dsl.arduino.impl.BooleanVariableImpl Boolean Variable}' class. + * + * + * @see fr.obeo.dsl.arduino.impl.BooleanVariableImpl + * @see fr.obeo.dsl.arduino.impl.ArduinoPackageImpl#getBooleanVariable() + * @generated + */ + int BOOLEAN_VARIABLE = 31; + + /** + * The feature id for the 'Name' attribute. + * + * + * @generated + * @ordered + */ + int BOOLEAN_VARIABLE__NAME = VARIABLE__NAME; + + /** + * The feature id for the 'Initial Value' attribute. + * + * + * @generated + * @ordered + */ + int BOOLEAN_VARIABLE__INITIAL_VALUE = VARIABLE_FEATURE_COUNT + 0; + + /** + * The feature id for the 'Value' attribute. + * + * + * @generated + * @ordered + */ + int BOOLEAN_VARIABLE__VALUE = VARIABLE_FEATURE_COUNT + 1; + + /** + * The number of structural features of the 'Boolean Variable' class. + * + * + * @generated + * @ordered + */ + int BOOLEAN_VARIABLE_FEATURE_COUNT = VARIABLE_FEATURE_COUNT + 2; + + /** + * The meta object id for the '{@link fr.obeo.dsl.arduino.impl.BooleanModuleGetImpl Boolean Module Get}' class. + * + * + * @see fr.obeo.dsl.arduino.impl.BooleanModuleGetImpl + * @see fr.obeo.dsl.arduino.impl.ArduinoPackageImpl#getBooleanModuleGet() + * @generated + */ + int BOOLEAN_MODULE_GET = 32; + + /** + * The feature id for the 'Module' reference. + * + * + * @generated + * @ordered + */ + int BOOLEAN_MODULE_GET__MODULE = MODULE_GET__MODULE; + + /** + * The number of structural features of the 'Boolean Module Get' class. + * + * + * @generated + * @ordered + */ + int BOOLEAN_MODULE_GET_FEATURE_COUNT = MODULE_GET_FEATURE_COUNT + 0; + + /** + * The meta object id for the '{@link fr.obeo.dsl.arduino.impl.IntegerModuleGetImpl Integer Module Get}' class. + * + * + * @see fr.obeo.dsl.arduino.impl.IntegerModuleGetImpl + * @see fr.obeo.dsl.arduino.impl.ArduinoPackageImpl#getIntegerModuleGet() + * @generated + */ + int INTEGER_MODULE_GET = 33; + + /** + * The feature id for the 'Module' reference. + * + * + * @generated + * @ordered + */ + int INTEGER_MODULE_GET__MODULE = MODULE_GET__MODULE; + + /** + * The number of structural features of the 'Integer Module Get' class. + * + * + * @generated + * @ordered + */ + int INTEGER_MODULE_GET_FEATURE_COUNT = MODULE_GET_FEATURE_COUNT + 0; + + /** + * The meta object id for the '{@link fr.obeo.dsl.arduino.impl.UnaryExpressionImpl Unary Expression}' class. + * + * + * @see fr.obeo.dsl.arduino.impl.UnaryExpressionImpl + * @see fr.obeo.dsl.arduino.impl.ArduinoPackageImpl#getUnaryExpression() + * @generated + */ + int UNARY_EXPRESSION = 34; + + /** + * The feature id for the 'Operand' containment reference. + * + * + * @generated + * @ordered + */ + int UNARY_EXPRESSION__OPERAND = EXPRESSION_FEATURE_COUNT + 0; + + /** + * The number of structural features of the 'Unary Expression' class. + * + * + * @generated + * @ordered + */ + int UNARY_EXPRESSION_FEATURE_COUNT = EXPRESSION_FEATURE_COUNT + 1; + + /** + * The meta object id for the '{@link fr.obeo.dsl.arduino.impl.UnaryBooleanExpressionImpl Unary Boolean Expression}' class. + * + * + * @see fr.obeo.dsl.arduino.impl.UnaryBooleanExpressionImpl + * @see fr.obeo.dsl.arduino.impl.ArduinoPackageImpl#getUnaryBooleanExpression() + * @generated + */ + int UNARY_BOOLEAN_EXPRESSION = 35; + + /** + * The feature id for the 'Operand' containment reference. + * + * + * @generated + * @ordered + */ + int UNARY_BOOLEAN_EXPRESSION__OPERAND = UNARY_EXPRESSION__OPERAND; + + /** + * The feature id for the 'Operator' attribute. + * + * + * @generated + * @ordered + */ + int UNARY_BOOLEAN_EXPRESSION__OPERATOR = UNARY_EXPRESSION_FEATURE_COUNT + 0; + + /** + * The number of structural features of the 'Unary Boolean Expression' class. + * + * + * @generated + * @ordered + */ + int UNARY_BOOLEAN_EXPRESSION_FEATURE_COUNT = UNARY_EXPRESSION_FEATURE_COUNT + 1; + + /** + * The meta object id for the '{@link fr.obeo.dsl.arduino.impl.UnaryIntegerExpressionImpl Unary Integer Expression}' class. + * + * + * @see fr.obeo.dsl.arduino.impl.UnaryIntegerExpressionImpl + * @see fr.obeo.dsl.arduino.impl.ArduinoPackageImpl#getUnaryIntegerExpression() + * @generated + */ + int UNARY_INTEGER_EXPRESSION = 36; + + /** + * The feature id for the 'Operand' containment reference. + * + * + * @generated + * @ordered + */ + int UNARY_INTEGER_EXPRESSION__OPERAND = UNARY_EXPRESSION__OPERAND; + + /** + * The feature id for the 'Operator' attribute. + * + * + * @generated + * @ordered + */ + int UNARY_INTEGER_EXPRESSION__OPERATOR = UNARY_EXPRESSION_FEATURE_COUNT + 0; + + /** + * The number of structural features of the 'Unary Integer Expression' class. + * + * + * @generated + * @ordered + */ + int UNARY_INTEGER_EXPRESSION_FEATURE_COUNT = UNARY_EXPRESSION_FEATURE_COUNT + 1; + + /** + * The meta object id for the '{@link fr.obeo.dsl.arduino.impl.VariableDeclarationImpl Variable Declaration}' class. + * + * + * @see fr.obeo.dsl.arduino.impl.VariableDeclarationImpl + * @see fr.obeo.dsl.arduino.impl.ArduinoPackageImpl#getVariableDeclaration() + * @generated + */ + int VARIABLE_DECLARATION = 37; + + /** + * The feature id for the 'Name' attribute. + * + * + * @generated + * @ordered + */ + int VARIABLE_DECLARATION__NAME = INSTRUCTION__NAME; + + /** + * The feature id for the 'Owned Block' container reference. + * + * + * @generated + * @ordered + */ + int VARIABLE_DECLARATION__OWNED_BLOCK = INSTRUCTION__OWNED_BLOCK; + + /** + * The feature id for the 'Variable' containment reference. + * + * + * @generated + * @ordered + */ + int VARIABLE_DECLARATION__VARIABLE = INSTRUCTION_FEATURE_COUNT + 0; + + /** + * The number of structural features of the 'Variable Declaration' class. + * + * + * @generated + * @ordered + */ + int VARIABLE_DECLARATION_FEATURE_COUNT = INSTRUCTION_FEATURE_COUNT + 1; + + /** + * The meta object id for the '{@link fr.obeo.dsl.arduino.impl.VariableRefImpl Variable Ref}' class. + * + * + * @see fr.obeo.dsl.arduino.impl.VariableRefImpl + * @see fr.obeo.dsl.arduino.impl.ArduinoPackageImpl#getVariableRef() + * @generated + */ + int VARIABLE_REF = 38; + + /** + * The feature id for the 'Variable' reference. + * + * + * @generated + * @ordered + */ + int VARIABLE_REF__VARIABLE = EXPRESSION_FEATURE_COUNT + 0; + + /** + * The number of structural features of the 'Variable Ref' class. + * + * + * @generated + * @ordered + */ + int VARIABLE_REF_FEATURE_COUNT = EXPRESSION_FEATURE_COUNT + 1; + + /** + * The meta object id for the '{@link fr.obeo.dsl.arduino.impl.ArduinoModuleImpl Module}' class. + * + * + * @see fr.obeo.dsl.arduino.impl.ArduinoModuleImpl + * @see fr.obeo.dsl.arduino.impl.ArduinoPackageImpl#getArduinoModule() + * @generated + */ + int ARDUINO_MODULE = 49; + + /** + * The feature id for the 'Name' attribute. + * + * + * @generated + * @ordered + */ + int ARDUINO_MODULE__NAME = MODULE__NAME; + + /** + * The feature id for the 'Level' attribute. + * + * + * @generated + * @ordered + */ + int ARDUINO_MODULE__LEVEL = MODULE__LEVEL; + + /** + * The number of structural features of the 'Module' class. + * + * + * @generated + * @ordered + */ + int ARDUINO_MODULE_FEATURE_COUNT = MODULE_FEATURE_COUNT + 0; + + /** + * The meta object id for the '{@link fr.obeo.dsl.arduino.impl.ArduinoDigitalModuleImpl Digital Module}' class. + * + * + * @see fr.obeo.dsl.arduino.impl.ArduinoDigitalModuleImpl + * @see fr.obeo.dsl.arduino.impl.ArduinoPackageImpl#getArduinoDigitalModule() + * @generated + */ + int ARDUINO_DIGITAL_MODULE = 51; + + /** + * The feature id for the 'Name' attribute. + * + * + * @generated + * @ordered + */ + int ARDUINO_DIGITAL_MODULE__NAME = ARDUINO_MODULE__NAME; + + /** + * The feature id for the 'Level' attribute. + * + * + * @generated + * @ordered + */ + int ARDUINO_DIGITAL_MODULE__LEVEL = ARDUINO_MODULE__LEVEL; + + /** + * The number of structural features of the 'Digital Module' class. + * + * + * @generated + * @ordered + */ + int ARDUINO_DIGITAL_MODULE_FEATURE_COUNT = ARDUINO_MODULE_FEATURE_COUNT + 0; + + /** + * The meta object id for the '{@link fr.obeo.dsl.arduino.impl.LEDImpl LED}' class. + * + * + * @see fr.obeo.dsl.arduino.impl.LEDImpl + * @see fr.obeo.dsl.arduino.impl.ArduinoPackageImpl#getLED() + * @generated + */ + int LED = 39; + + /** + * The feature id for the 'Name' attribute. + * + * + * @generated + * @ordered + */ + int LED__NAME = ARDUINO_DIGITAL_MODULE__NAME; + + /** + * The feature id for the 'Level' attribute. + * + * + * @generated + * @ordered + */ + int LED__LEVEL = ARDUINO_DIGITAL_MODULE__LEVEL; + + /** + * The number of structural features of the 'LED' class. + * + * + * @generated + * @ordered + */ + int LED_FEATURE_COUNT = ARDUINO_DIGITAL_MODULE_FEATURE_COUNT + 0; + + /** + * The meta object id for the '{@link fr.obeo.dsl.arduino.impl.PushButtonImpl Push Button}' class. + * + * + * @see fr.obeo.dsl.arduino.impl.PushButtonImpl + * @see fr.obeo.dsl.arduino.impl.ArduinoPackageImpl#getPushButton() + * @generated + */ + int PUSH_BUTTON = 40; + + /** + * The feature id for the 'Name' attribute. + * + * + * @generated + * @ordered + */ + int PUSH_BUTTON__NAME = ARDUINO_DIGITAL_MODULE__NAME; + + /** + * The feature id for the 'Level' attribute. + * + * + * @generated + * @ordered + */ + int PUSH_BUTTON__LEVEL = ARDUINO_DIGITAL_MODULE__LEVEL; + + /** + * The number of structural features of the 'Push Button' class. + * + * + * @generated + * @ordered + */ + int PUSH_BUTTON_FEATURE_COUNT = ARDUINO_DIGITAL_MODULE_FEATURE_COUNT + 0; + + /** + * The meta object id for the '{@link fr.obeo.dsl.arduino.impl.BuzzerImpl Buzzer}' class. + * + * + * @see fr.obeo.dsl.arduino.impl.BuzzerImpl + * @see fr.obeo.dsl.arduino.impl.ArduinoPackageImpl#getBuzzer() + * @generated + */ + int BUZZER = 41; + + /** + * The feature id for the 'Name' attribute. + * + * + * @generated + * @ordered + */ + int BUZZER__NAME = ARDUINO_DIGITAL_MODULE__NAME; + + /** + * The feature id for the 'Level' attribute. + * + * + * @generated + * @ordered + */ + int BUZZER__LEVEL = ARDUINO_DIGITAL_MODULE__LEVEL; + + /** + * The number of structural features of the 'Buzzer' class. + * + * + * @generated + * @ordered + */ + int BUZZER_FEATURE_COUNT = ARDUINO_DIGITAL_MODULE_FEATURE_COUNT + 0; + + /** + * The meta object id for the '{@link fr.obeo.dsl.arduino.impl.ArduinoAnalogModuleImpl Analog Module}' class. + * + * + * @see fr.obeo.dsl.arduino.impl.ArduinoAnalogModuleImpl + * @see fr.obeo.dsl.arduino.impl.ArduinoPackageImpl#getArduinoAnalogModule() + * @generated + */ + int ARDUINO_ANALOG_MODULE = 52; + + /** + * The feature id for the 'Name' attribute. + * + * + * @generated + * @ordered + */ + int ARDUINO_ANALOG_MODULE__NAME = ARDUINO_MODULE__NAME; + + /** + * The feature id for the 'Level' attribute. + * + * + * @generated + * @ordered + */ + int ARDUINO_ANALOG_MODULE__LEVEL = ARDUINO_MODULE__LEVEL; + + /** + * The number of structural features of the 'Analog Module' class. + * + * + * @generated + * @ordered + */ + int ARDUINO_ANALOG_MODULE_FEATURE_COUNT = ARDUINO_MODULE_FEATURE_COUNT + 0; + + /** + * The meta object id for the '{@link fr.obeo.dsl.arduino.impl.RotationSensorImpl Rotation Sensor}' class. + * + * + * @see fr.obeo.dsl.arduino.impl.RotationSensorImpl + * @see fr.obeo.dsl.arduino.impl.ArduinoPackageImpl#getRotationSensor() + * @generated + */ + int ROTATION_SENSOR = 42; + + /** + * The feature id for the 'Name' attribute. + * + * + * @generated + * @ordered + */ + int ROTATION_SENSOR__NAME = ARDUINO_ANALOG_MODULE__NAME; + + /** + * The feature id for the 'Level' attribute. + * + * + * @generated + * @ordered + */ + int ROTATION_SENSOR__LEVEL = ARDUINO_ANALOG_MODULE__LEVEL; + + /** + * The number of structural features of the 'Rotation Sensor' class. + * + * + * @generated + * @ordered + */ + int ROTATION_SENSOR_FEATURE_COUNT = ARDUINO_ANALOG_MODULE_FEATURE_COUNT + 0; + + /** + * The meta object id for the '{@link fr.obeo.dsl.arduino.impl.MicroServoImpl Micro Servo}' class. + * + * + * @see fr.obeo.dsl.arduino.impl.MicroServoImpl + * @see fr.obeo.dsl.arduino.impl.ArduinoPackageImpl#getMicroServo() + * @generated + */ + int MICRO_SERVO = 43; + + /** + * The feature id for the 'Name' attribute. + * + * + * @generated + * @ordered + */ + int MICRO_SERVO__NAME = ARDUINO_DIGITAL_MODULE__NAME; + + /** + * The feature id for the 'Level' attribute. + * + * + * @generated + * @ordered + */ + int MICRO_SERVO__LEVEL = ARDUINO_DIGITAL_MODULE__LEVEL; + + /** + * The number of structural features of the 'Micro Servo' class. + * + * + * @generated + * @ordered + */ + int MICRO_SERVO_FEATURE_COUNT = ARDUINO_DIGITAL_MODULE_FEATURE_COUNT + 0; + + /** + * The meta object id for the '{@link fr.obeo.dsl.arduino.impl.InfraRedSensorImpl Infra Red Sensor}' class. + * + * + * @see fr.obeo.dsl.arduino.impl.InfraRedSensorImpl + * @see fr.obeo.dsl.arduino.impl.ArduinoPackageImpl#getInfraRedSensor() + * @generated + */ + int INFRA_RED_SENSOR = 44; + + /** + * The feature id for the 'Name' attribute. + * + * + * @generated + * @ordered + */ + int INFRA_RED_SENSOR__NAME = ARDUINO_DIGITAL_MODULE__NAME; + + /** + * The feature id for the 'Level' attribute. + * + * + * @generated + * @ordered + */ + int INFRA_RED_SENSOR__LEVEL = ARDUINO_DIGITAL_MODULE__LEVEL; + + /** + * The number of structural features of the 'Infra Red Sensor' class. + * + * + * @generated + * @ordered + */ + int INFRA_RED_SENSOR_FEATURE_COUNT = ARDUINO_DIGITAL_MODULE_FEATURE_COUNT + 0; + + /** + * The meta object id for the '{@link fr.obeo.dsl.arduino.impl.AmbientLightSensorImpl Ambient Light Sensor}' class. + * + * + * @see fr.obeo.dsl.arduino.impl.AmbientLightSensorImpl + * @see fr.obeo.dsl.arduino.impl.ArduinoPackageImpl#getAmbientLightSensor() + * @generated + */ + int AMBIENT_LIGHT_SENSOR = 45; + + /** + * The feature id for the 'Name' attribute. + * + * + * @generated + * @ordered + */ + int AMBIENT_LIGHT_SENSOR__NAME = ARDUINO_ANALOG_MODULE__NAME; + + /** + * The feature id for the 'Level' attribute. + * + * + * @generated + * @ordered + */ + int AMBIENT_LIGHT_SENSOR__LEVEL = ARDUINO_ANALOG_MODULE__LEVEL; + + /** + * The number of structural features of the 'Ambient Light Sensor' class. + * + * + * @generated + * @ordered + */ + int AMBIENT_LIGHT_SENSOR_FEATURE_COUNT = ARDUINO_ANALOG_MODULE_FEATURE_COUNT + 0; + + /** + * The meta object id for the '{@link fr.obeo.dsl.arduino.impl.SoundSensorImpl Sound Sensor}' class. + * + * + * @see fr.obeo.dsl.arduino.impl.SoundSensorImpl + * @see fr.obeo.dsl.arduino.impl.ArduinoPackageImpl#getSoundSensor() + * @generated + */ + int SOUND_SENSOR = 46; + + /** + * The feature id for the 'Name' attribute. + * + * + * @generated + * @ordered + */ + int SOUND_SENSOR__NAME = ARDUINO_ANALOG_MODULE__NAME; + + /** + * The feature id for the 'Level' attribute. + * + * + * @generated + * @ordered + */ + int SOUND_SENSOR__LEVEL = ARDUINO_ANALOG_MODULE__LEVEL; + + /** + * The number of structural features of the 'Sound Sensor' class. + * + * + * @generated + * @ordered + */ + int SOUND_SENSOR_FEATURE_COUNT = ARDUINO_ANALOG_MODULE_FEATURE_COUNT + 0; + + /** + * The meta object id for the '{@link fr.obeo.dsl.arduino.impl.FanImpl Fan}' class. + * + * + * @see fr.obeo.dsl.arduino.impl.FanImpl + * @see fr.obeo.dsl.arduino.impl.ArduinoPackageImpl#getFan() + * @generated + */ + int FAN = 47; + + /** + * The feature id for the 'Name' attribute. + * + * + * @generated + * @ordered + */ + int FAN__NAME = ARDUINO_DIGITAL_MODULE__NAME; + + /** + * The feature id for the 'Level' attribute. + * + * + * @generated + * @ordered + */ + int FAN__LEVEL = ARDUINO_DIGITAL_MODULE__LEVEL; + + /** + * The number of structural features of the 'Fan' class. + * + * + * @generated + * @ordered + */ + int FAN_FEATURE_COUNT = ARDUINO_DIGITAL_MODULE_FEATURE_COUNT + 0; + + /** + * The meta object id for the '{@link fr.obeo.dsl.arduino.impl.MusicPlayerImpl Music Player}' class. + * + * + * @see fr.obeo.dsl.arduino.impl.MusicPlayerImpl + * @see fr.obeo.dsl.arduino.impl.ArduinoPackageImpl#getMusicPlayer() + * @generated + */ + int MUSIC_PLAYER = 48; + + /** + * The feature id for the 'Name' attribute. + * + * + * @generated + * @ordered + */ + int MUSIC_PLAYER__NAME = ARDUINO_ANALOG_MODULE__NAME; + + /** + * The feature id for the 'Level' attribute. + * + * + * @generated + * @ordered + */ + int MUSIC_PLAYER__LEVEL = ARDUINO_ANALOG_MODULE__LEVEL; + + /** + * The number of structural features of the 'Music Player' class. + * + * + * @generated + * @ordered + */ + int MUSIC_PLAYER_FEATURE_COUNT = ARDUINO_ANALOG_MODULE_FEATURE_COUNT + 0; + + /** + * The meta object id for the '{@link fr.obeo.dsl.arduino.impl.ArduinoBoardImpl Board}' class. + * + * + * @see fr.obeo.dsl.arduino.impl.ArduinoBoardImpl + * @see fr.obeo.dsl.arduino.impl.ArduinoPackageImpl#getArduinoBoard() + * @generated + */ + int ARDUINO_BOARD = 50; + + /** + * The feature id for the 'Name' attribute. + * + * + * @generated + * @ordered + */ + int ARDUINO_BOARD__NAME = BOARD__NAME; + + /** + * The feature id for the 'Project' container reference. + * + * + * @generated + * @ordered + */ + int ARDUINO_BOARD__PROJECT = BOARD__PROJECT; + + /** + * The feature id for the 'Threads' reference list. + * + * + * @generated + * @ordered + */ + int ARDUINO_BOARD__THREADS = BOARD__THREADS; + + /** + * The feature id for the 'Digital Pins' containment reference list. + * + * + * @generated + * @ordered + */ + int ARDUINO_BOARD__DIGITAL_PINS = BOARD_FEATURE_COUNT + 0; + + /** + * The feature id for the 'Analog Pins' containment reference list. + * + * + * @generated + * @ordered + */ + int ARDUINO_BOARD__ANALOG_PINS = BOARD_FEATURE_COUNT + 1; + + /** + * The number of structural features of the 'Board' class. + * + * + * @generated + * @ordered + */ + int ARDUINO_BOARD_FEATURE_COUNT = BOARD_FEATURE_COUNT + 2; + + /** + * The meta object id for the '{@link fr.obeo.dsl.arduino.impl.ThreadImpl Thread}' class. + * + * + * @see fr.obeo.dsl.arduino.impl.ThreadImpl + * @see fr.obeo.dsl.arduino.impl.ArduinoPackageImpl#getThread() + * @generated + */ + int THREAD = 53; + + /** + * The feature id for the 'Name' attribute. + * + * + * @generated + * @ordered + */ + int THREAD__NAME = NAMED_ELEMENT__NAME; + + /** + * The feature id for the 'Blocks' containment reference list. + * + * + * @generated + * @ordered + */ + int THREAD__BLOCKS = NAMED_ELEMENT_FEATURE_COUNT + 0; + + /** + * The feature id for the 'Channels' reference list. + * + * + * @generated + * @ordered + */ + int THREAD__CHANNELS = NAMED_ELEMENT_FEATURE_COUNT + 1; + + /** + * The feature id for the 'Cycles' attribute. + * + * + * @generated + * @ordered + */ + int THREAD__CYCLES = NAMED_ELEMENT_FEATURE_COUNT + 2; + + /** + * The feature id for the 'Current Instruction' reference. + * + * + * @generated + * @ordered + */ + int THREAD__CURRENT_INSTRUCTION = NAMED_ELEMENT_FEATURE_COUNT + 3; + + /** + * The feature id for the 'First' reference. + * + * + * @generated + * @ordered + */ + int THREAD__FIRST = NAMED_ELEMENT_FEATURE_COUNT + 4; + + /** + * The feature id for the 'Last' reference. + * + * + * @generated + * @ordered + */ + int THREAD__LAST = NAMED_ELEMENT_FEATURE_COUNT + 5; + + /** + * The number of structural features of the 'Thread' class. + * + * + * @generated + * @ordered + */ + int THREAD_FEATURE_COUNT = NAMED_ELEMENT_FEATURE_COUNT + 6; + + /** + * The meta object id for the '{@link fr.obeo.dsl.arduino.impl.ChannelImpl Channel}' class. + * + * + * @see fr.obeo.dsl.arduino.impl.ChannelImpl + * @see fr.obeo.dsl.arduino.impl.ArduinoPackageImpl#getChannel() + * @generated + */ + int CHANNEL = 54; + + /** + * The feature id for the 'Name' attribute. + * + * + * @generated + * @ordered + */ + int CHANNEL__NAME = NAMED_ELEMENT__NAME; + + /** + * The feature id for the 'Source' reference. + * + * + * @generated + * @ordered + */ + int CHANNEL__SOURCE = NAMED_ELEMENT_FEATURE_COUNT + 0; + + /** + * The feature id for the 'Target' reference. + * + * + * @generated + * @ordered + */ + int CHANNEL__TARGET = NAMED_ELEMENT_FEATURE_COUNT + 1; + + /** + * The feature id for the 'In Rate' attribute. + * + * + * @generated + * @ordered + */ + int CHANNEL__IN_RATE = NAMED_ELEMENT_FEATURE_COUNT + 2; + + /** + * The feature id for the 'Out Rate' attribute. + * + * + * @generated + * @ordered + */ + int CHANNEL__OUT_RATE = NAMED_ELEMENT_FEATURE_COUNT + 3; + + /** + * The feature id for the 'Capacity' attribute. + * + * + * @generated + * @ordered + */ + int CHANNEL__CAPACITY = NAMED_ELEMENT_FEATURE_COUNT + 4; + + /** + * The feature id for the 'Current Size' attribute. + * + * + * @generated + * @ordered + */ + int CHANNEL__CURRENT_SIZE = NAMED_ELEMENT_FEATURE_COUNT + 5; + + /** + * The number of structural features of the 'Channel' class. + * + * + * @generated + * @ordered + */ + int CHANNEL_FEATURE_COUNT = NAMED_ELEMENT_FEATURE_COUNT + 6; + + /** + * The meta object id for the '{@link fr.obeo.dsl.arduino.impl.LinkImpl Link}' class. + * + * + * @see fr.obeo.dsl.arduino.impl.LinkImpl + * @see fr.obeo.dsl.arduino.impl.ArduinoPackageImpl#getLink() + * @generated + */ + int LINK = 55; + + /** + * The feature id for the 'Name' attribute. + * + * + * @generated + * @ordered + */ + int LINK__NAME = NAMED_ELEMENT__NAME; + + /** + * The feature id for the 'In Board' reference. + * + * + * @generated + * @ordered + */ + int LINK__IN_BOARD = NAMED_ELEMENT_FEATURE_COUNT + 0; + + /** + * The feature id for the 'Out Board' reference. + * + * + * @generated + * @ordered + */ + int LINK__OUT_BOARD = NAMED_ELEMENT_FEATURE_COUNT + 1; + + /** + * The number of structural features of the 'Link' class. + * + * + * @generated + * @ordered + */ + int LINK_FEATURE_COUNT = NAMED_ELEMENT_FEATURE_COUNT + 2; + + /** + * The meta object id for the '{@link fr.obeo.dsl.arduino.impl.ThreadInstructionBlockImpl Thread Instruction Block}' class. + * + * + * @see fr.obeo.dsl.arduino.impl.ThreadInstructionBlockImpl + * @see fr.obeo.dsl.arduino.impl.ArduinoPackageImpl#getThreadInstructionBlock() + * @generated + */ + int THREAD_INSTRUCTION_BLOCK = 58; + + /** + * The feature id for the 'Name' attribute. + * + * + * @generated + * @ordered + */ + int THREAD_INSTRUCTION_BLOCK__NAME = NAMED_ELEMENT__NAME; + + /** + * The feature id for the 'Thread' container reference. + * + * + * @generated + * @ordered + */ + int THREAD_INSTRUCTION_BLOCK__THREAD = NAMED_ELEMENT_FEATURE_COUNT + 0; + + /** + * The number of structural features of the 'Thread Instruction Block' class. + * + * + * @generated + * @ordered + */ + int THREAD_INSTRUCTION_BLOCK_FEATURE_COUNT = NAMED_ELEMENT_FEATURE_COUNT + 1; + + /** + * The meta object id for the '{@link fr.obeo.dsl.arduino.impl.SynchronizationBlockImpl Synchronization Block}' class. + * + * + * @see fr.obeo.dsl.arduino.impl.SynchronizationBlockImpl + * @see fr.obeo.dsl.arduino.impl.ArduinoPackageImpl#getSynchronizationBlock() + * @generated + */ + int SYNCHRONIZATION_BLOCK = 56; + + /** + * The feature id for the 'Name' attribute. + * + * + * @generated + * @ordered + */ + int SYNCHRONIZATION_BLOCK__NAME = THREAD_INSTRUCTION_BLOCK__NAME; + + /** + * The feature id for the 'Thread' container reference. + * + * + * @generated + * @ordered + */ + int SYNCHRONIZATION_BLOCK__THREAD = THREAD_INSTRUCTION_BLOCK__THREAD; + + /** + * The feature id for the 'Next' reference. + * + * + * @generated + * @ordered + */ + int SYNCHRONIZATION_BLOCK__NEXT = THREAD_INSTRUCTION_BLOCK_FEATURE_COUNT + 0; + + /** + * The feature id for the 'Previous' reference. + * + * + * @generated + * @ordered + */ + int SYNCHRONIZATION_BLOCK__PREVIOUS = THREAD_INSTRUCTION_BLOCK_FEATURE_COUNT + 1; + + /** + * The number of structural features of the 'Synchronization Block' class. + * + * + * @generated + * @ordered + */ + int SYNCHRONIZATION_BLOCK_FEATURE_COUNT = THREAD_INSTRUCTION_BLOCK_FEATURE_COUNT + 2; + + /** + * The meta object id for the '{@link fr.obeo.dsl.arduino.impl.InstructionBlockImpl Instruction Block}' class. + * + * + * @see fr.obeo.dsl.arduino.impl.InstructionBlockImpl + * @see fr.obeo.dsl.arduino.impl.ArduinoPackageImpl#getInstructionBlock() + * @generated + */ + int INSTRUCTION_BLOCK = 57; + + /** + * The feature id for the 'Name' attribute. + * + * + * @generated + * @ordered + */ + int INSTRUCTION_BLOCK__NAME = THREAD_INSTRUCTION_BLOCK__NAME; + + /** + * The feature id for the 'Thread' container reference. + * + * + * @generated + * @ordered + */ + int INSTRUCTION_BLOCK__THREAD = THREAD_INSTRUCTION_BLOCK__THREAD; + + /** + * The feature id for the 'Instructions' containment reference list. + * + * + * @generated + * @ordered + */ + int INSTRUCTION_BLOCK__INSTRUCTIONS = THREAD_INSTRUCTION_BLOCK_FEATURE_COUNT + 0; + + /** + * The feature id for the 'Next' reference. + * + * + * @generated + * @ordered + */ + int INSTRUCTION_BLOCK__NEXT = THREAD_INSTRUCTION_BLOCK_FEATURE_COUNT + 1; + + /** + * The feature id for the 'Previous' reference. + * + * + * @generated + * @ordered + */ + int INSTRUCTION_BLOCK__PREVIOUS = THREAD_INSTRUCTION_BLOCK_FEATURE_COUNT + 2; + + /** + * The number of structural features of the 'Instruction Block' class. + * + * + * @generated + * @ordered + */ + int INSTRUCTION_BLOCK_FEATURE_COUNT = THREAD_INSTRUCTION_BLOCK_FEATURE_COUNT + 3; + + /** + * The meta object id for the '{@link fr.obeo.dsl.arduino.Time Time}' enum. + * + * + * @see fr.obeo.dsl.arduino.Time + * @see fr.obeo.dsl.arduino.impl.ArduinoPackageImpl#getTime() + * @generated + */ + int TIME = 59; + + /** + * The meta object id for the '{@link fr.obeo.dsl.arduino.BinaryIntegerOperatorKind Binary Integer Operator Kind}' enum. + * + * + * @see fr.obeo.dsl.arduino.BinaryIntegerOperatorKind + * @see fr.obeo.dsl.arduino.impl.ArduinoPackageImpl#getBinaryIntegerOperatorKind() + * @generated + */ + int BINARY_INTEGER_OPERATOR_KIND = 60; + + /** + * The meta object id for the '{@link fr.obeo.dsl.arduino.BinaryBooleanOperatorKind Binary Boolean Operator Kind}' enum. + * + * + * @see fr.obeo.dsl.arduino.BinaryBooleanOperatorKind + * @see fr.obeo.dsl.arduino.impl.ArduinoPackageImpl#getBinaryBooleanOperatorKind() + * @generated + */ + int BINARY_BOOLEAN_OPERATOR_KIND = 61; + + /** + * The meta object id for the '{@link fr.obeo.dsl.arduino.UnaryIntegerOperatorKind Unary Integer Operator Kind}' enum. + * + * + * @see fr.obeo.dsl.arduino.UnaryIntegerOperatorKind + * @see fr.obeo.dsl.arduino.impl.ArduinoPackageImpl#getUnaryIntegerOperatorKind() + * @generated + */ + int UNARY_INTEGER_OPERATOR_KIND = 62; + + /** + * The meta object id for the '{@link fr.obeo.dsl.arduino.UnaryBooleanOperatorKind Unary Boolean Operator Kind}' enum. + * + * + * @see fr.obeo.dsl.arduino.UnaryBooleanOperatorKind + * @see fr.obeo.dsl.arduino.impl.ArduinoPackageImpl#getUnaryBooleanOperatorKind() + * @generated + */ + int UNARY_BOOLEAN_OPERATOR_KIND = 63; + + + /** + * Returns the meta object for class '{@link fr.obeo.dsl.arduino.Board Board}'. + * + * + * @return the meta object for class 'Board'. + * @see fr.obeo.dsl.arduino.Board + * @generated + */ + EClass getBoard(); + + /** + * Returns the meta object for the container reference '{@link fr.obeo.dsl.arduino.Board#getProject Project}'. + * + * + * @return the meta object for the container reference 'Project'. + * @see fr.obeo.dsl.arduino.Board#getProject() + * @see #getBoard() + * @generated + */ + EReference getBoard_Project(); + + /** + * Returns the meta object for the reference list '{@link fr.obeo.dsl.arduino.Board#getThreads Threads}'. + * + * + * @return the meta object for the reference list 'Threads'. + * @see fr.obeo.dsl.arduino.Board#getThreads() + * @see #getBoard() + * @generated + */ + EReference getBoard_Threads(); + + /** + * Returns the meta object for class '{@link fr.obeo.dsl.arduino.Module Module}'. + * + * + * @return the meta object for class 'Module'. + * @see fr.obeo.dsl.arduino.Module + * @generated + */ + EClass getModule(); + + /** + * Returns the meta object for the attribute '{@link fr.obeo.dsl.arduino.Module#isLevel Level}'. + * + * + * @return the meta object for the attribute 'Level'. + * @see fr.obeo.dsl.arduino.Module#isLevel() + * @see #getModule() + * @generated + */ + EAttribute getModule_Level(); + + /** + * Returns the meta object for class '{@link fr.obeo.dsl.arduino.DigitalPin Digital Pin}'. + * + * + * @return the meta object for class 'Digital Pin'. + * @see fr.obeo.dsl.arduino.DigitalPin + * @generated + */ + EClass getDigitalPin(); + + /** + * Returns the meta object for the containment reference '{@link fr.obeo.dsl.arduino.DigitalPin#getModule Module}'. + * + * + * @return the meta object for the containment reference 'Module'. + * @see fr.obeo.dsl.arduino.DigitalPin#getModule() + * @see #getDigitalPin() + * @generated + */ + EReference getDigitalPin_Module(); + + /** + * Returns the meta object for class '{@link fr.obeo.dsl.arduino.Pin Pin}'. + * + * + * @return the meta object for class 'Pin'. + * @see fr.obeo.dsl.arduino.Pin + * @generated + */ + EClass getPin(); + + /** + * Returns the meta object for the attribute '{@link fr.obeo.dsl.arduino.Pin#getId Id}'. + * + * + * @return the meta object for the attribute 'Id'. + * @see fr.obeo.dsl.arduino.Pin#getId() + * @see #getPin() + * @generated + */ + EAttribute getPin_Id(); + + /** + * Returns the meta object for the attribute '{@link fr.obeo.dsl.arduino.Pin#getLevel Level}'. + * + * + * @return the meta object for the attribute 'Level'. + * @see fr.obeo.dsl.arduino.Pin#getLevel() + * @see #getPin() + * @generated + */ + EAttribute getPin_Level(); + + /** + * Returns the meta object for class '{@link fr.obeo.dsl.arduino.AnalogPin Analog Pin}'. + * + * + * @return the meta object for class 'Analog Pin'. + * @see fr.obeo.dsl.arduino.AnalogPin + * @generated + */ + EClass getAnalogPin(); + + /** + * Returns the meta object for the containment reference '{@link fr.obeo.dsl.arduino.AnalogPin#getModule Module}'. + * + * + * @return the meta object for the containment reference 'Module'. + * @see fr.obeo.dsl.arduino.AnalogPin#getModule() + * @see #getAnalogPin() + * @generated + */ + EReference getAnalogPin_Module(); + + /** + * Returns the meta object for class '{@link fr.obeo.dsl.arduino.Sketch Sketch}'. + * + * + * @return the meta object for class 'Sketch'. + * @see fr.obeo.dsl.arduino.Sketch + * @generated + */ + EClass getSketch(); + + /** + * Returns the meta object for the container reference '{@link fr.obeo.dsl.arduino.Sketch#getProject Project}'. + * + * + * @return the meta object for the container reference 'Project'. + * @see fr.obeo.dsl.arduino.Sketch#getProject() + * @see #getSketch() + * @generated + */ + EReference getSketch_Project(); + + /** + * Returns the meta object for the containment reference list '{@link fr.obeo.dsl.arduino.Sketch#getThreads Threads}'. + * + * + * @return the meta object for the containment reference list 'Threads'. + * @see fr.obeo.dsl.arduino.Sketch#getThreads() + * @see #getSketch() + * @generated + */ + EReference getSketch_Threads(); + + /** + * Returns the meta object for the containment reference list '{@link fr.obeo.dsl.arduino.Sketch#getChannels Channels}'. + * + * + * @return the meta object for the containment reference list 'Channels'. + * @see fr.obeo.dsl.arduino.Sketch#getChannels() + * @see #getSketch() + * @generated + */ + EReference getSketch_Channels(); + + /** + * Returns the meta object for class '{@link fr.obeo.dsl.arduino.Project Project}'. + * + * + * @return the meta object for class 'Project'. + * @see fr.obeo.dsl.arduino.Project + * @generated + */ + EClass getProject(); + + /** + * Returns the meta object for the containment reference list '{@link fr.obeo.dsl.arduino.Project#getBoards Boards}'. + * + * + * @return the meta object for the containment reference list 'Boards'. + * @see fr.obeo.dsl.arduino.Project#getBoards() + * @see #getProject() + * @generated + */ + EReference getProject_Boards(); + + /** + * Returns the meta object for the containment reference '{@link fr.obeo.dsl.arduino.Project#getSketch Sketch}'. + * + * + * @return the meta object for the containment reference 'Sketch'. + * @see fr.obeo.dsl.arduino.Project#getSketch() + * @see #getProject() + * @generated + */ + EReference getProject_Sketch(); + + /** + * Returns the meta object for the containment reference list '{@link fr.obeo.dsl.arduino.Project#getLinks Links}'. + * + * + * @return the meta object for the containment reference list 'Links'. + * @see fr.obeo.dsl.arduino.Project#getLinks() + * @see #getProject() + * @generated + */ + EReference getProject_Links(); + + /** + * Returns the meta object for class '{@link fr.obeo.dsl.arduino.Instruction Instruction}'. + * + * + * @return the meta object for class 'Instruction'. + * @see fr.obeo.dsl.arduino.Instruction + * @generated + */ + EClass getInstruction(); + + /** + * Returns the meta object for the container reference '{@link fr.obeo.dsl.arduino.Instruction#getOwnedBlock Owned Block}'. + * + * + * @return the meta object for the container reference 'Owned Block'. + * @see fr.obeo.dsl.arduino.Instruction#getOwnedBlock() + * @see #getInstruction() + * @generated + */ + EReference getInstruction_OwnedBlock(); + + /** + * Returns the meta object for class '{@link fr.obeo.dsl.arduino.ModuleAssignment Module Assignment}'. + * + * + * @return the meta object for class 'Module Assignment'. + * @see fr.obeo.dsl.arduino.ModuleAssignment + * @generated + */ + EClass getModuleAssignment(); + + /** + * Returns the meta object for class '{@link fr.obeo.dsl.arduino.ModuleInstruction Module Instruction}'. + * + * + * @return the meta object for class 'Module Instruction'. + * @see fr.obeo.dsl.arduino.ModuleInstruction + * @generated + */ + EClass getModuleInstruction(); + + /** + * Returns the meta object for the reference '{@link fr.obeo.dsl.arduino.ModuleInstruction#getModule Module}'. + * + * + * @return the meta object for the reference 'Module'. + * @see fr.obeo.dsl.arduino.ModuleInstruction#getModule() + * @see #getModuleInstruction() + * @generated + */ + EReference getModuleInstruction_Module(); + + /** + * Returns the meta object for class '{@link fr.obeo.dsl.arduino.Control Control}'. + * + * + * @return the meta object for class 'Control'. + * @see fr.obeo.dsl.arduino.Control + * @generated + */ + EClass getControl(); + + /** + * Returns the meta object for the containment reference '{@link fr.obeo.dsl.arduino.Control#getBlock Block}'. + * + * + * @return the meta object for the containment reference 'Block'. + * @see fr.obeo.dsl.arduino.Control#getBlock() + * @see #getControl() + * @generated + */ + EReference getControl_Block(); + + /** + * Returns the meta object for class '{@link fr.obeo.dsl.arduino.Utilities Utilities}'. + * + * + * @return the meta object for class 'Utilities'. + * @see fr.obeo.dsl.arduino.Utilities + * @generated + */ + EClass getUtilities(); + + /** + * Returns the meta object for class '{@link fr.obeo.dsl.arduino.Delay Delay}'. + * + * + * @return the meta object for class 'Delay'. + * @see fr.obeo.dsl.arduino.Delay + * @generated + */ + EClass getDelay(); + + /** + * Returns the meta object for the attribute '{@link fr.obeo.dsl.arduino.Delay#getUnit Unit}'. + * + * + * @return the meta object for the attribute 'Unit'. + * @see fr.obeo.dsl.arduino.Delay#getUnit() + * @see #getDelay() + * @generated + */ + EAttribute getDelay_Unit(); + + /** + * Returns the meta object for the attribute '{@link fr.obeo.dsl.arduino.Delay#getValue Value}'. + * + * + * @return the meta object for the attribute 'Value'. + * @see fr.obeo.dsl.arduino.Delay#getValue() + * @see #getDelay() + * @generated + */ + EAttribute getDelay_Value(); + + /** + * Returns the meta object for class '{@link fr.obeo.dsl.arduino.NamedElement Named Element}'. + * + * + * @return the meta object for class 'Named Element'. + * @see fr.obeo.dsl.arduino.NamedElement + * @generated + */ + EClass getNamedElement(); + + /** + * Returns the meta object for the attribute '{@link fr.obeo.dsl.arduino.NamedElement#getName Name}'. + * + * + * @return the meta object for the attribute 'Name'. + * @see fr.obeo.dsl.arduino.NamedElement#getName() + * @see #getNamedElement() + * @generated + */ + EAttribute getNamedElement_Name(); + + /** + * Returns the meta object for class '{@link fr.obeo.dsl.arduino.Repeat Repeat}'. + * + * + * @return the meta object for class 'Repeat'. + * @see fr.obeo.dsl.arduino.Repeat + * @generated + */ + EClass getRepeat(); + + /** + * Returns the meta object for the attribute '{@link fr.obeo.dsl.arduino.Repeat#getIteration Iteration}'. + * + * + * @return the meta object for the attribute 'Iteration'. + * @see fr.obeo.dsl.arduino.Repeat#getIteration() + * @see #getRepeat() + * @generated + */ + EAttribute getRepeat_Iteration(); + + /** + * Returns the meta object for class '{@link fr.obeo.dsl.arduino.ModuleGet Module Get}'. + * + * + * @return the meta object for class 'Module Get'. + * @see fr.obeo.dsl.arduino.ModuleGet + * @generated + */ + EClass getModuleGet(); + + /** + * Returns the meta object for the reference '{@link fr.obeo.dsl.arduino.ModuleGet#getModule Module}'. + * + * + * @return the meta object for the reference 'Module'. + * @see fr.obeo.dsl.arduino.ModuleGet#getModule() + * @see #getModuleGet() + * @generated + */ + EReference getModuleGet_Module(); + + /** + * Returns the meta object for class '{@link fr.obeo.dsl.arduino.While While}'. + * + * + * @return the meta object for class 'While'. + * @see fr.obeo.dsl.arduino.While + * @generated + */ + EClass getWhile(); + + /** + * Returns the meta object for the containment reference '{@link fr.obeo.dsl.arduino.While#getCondition Condition}'. + * + * + * @return the meta object for the containment reference 'Condition'. + * @see fr.obeo.dsl.arduino.While#getCondition() + * @see #getWhile() + * @generated + */ + EReference getWhile_Condition(); + + /** + * Returns the meta object for class '{@link fr.obeo.dsl.arduino.BinaryExpression Binary Expression}'. + * + * + * @return the meta object for class 'Binary Expression'. + * @see fr.obeo.dsl.arduino.BinaryExpression + * @generated + */ + EClass getBinaryExpression(); + + /** + * Returns the meta object for the containment reference '{@link fr.obeo.dsl.arduino.BinaryExpression#getLeft Left}'. + * + * + * @return the meta object for the containment reference 'Left'. + * @see fr.obeo.dsl.arduino.BinaryExpression#getLeft() + * @see #getBinaryExpression() + * @generated + */ + EReference getBinaryExpression_Left(); + + /** + * Returns the meta object for the containment reference '{@link fr.obeo.dsl.arduino.BinaryExpression#getRight Right}'. + * + * + * @return the meta object for the containment reference 'Right'. + * @see fr.obeo.dsl.arduino.BinaryExpression#getRight() + * @see #getBinaryExpression() + * @generated + */ + EReference getBinaryExpression_Right(); + + /** + * Returns the meta object for class '{@link fr.obeo.dsl.arduino.Variable Variable}'. + * + * + * @return the meta object for class 'Variable'. + * @see fr.obeo.dsl.arduino.Variable + * @generated + */ + EClass getVariable(); + + /** + * Returns the meta object for class '{@link fr.obeo.dsl.arduino.VariableAssignment Variable Assignment}'. + * + * + * @return the meta object for class 'Variable Assignment'. + * @see fr.obeo.dsl.arduino.VariableAssignment + * @generated + */ + EClass getVariableAssignment(); + + /** + * Returns the meta object for the reference '{@link fr.obeo.dsl.arduino.VariableAssignment#getVariable Variable}'. + * + * + * @return the meta object for the reference 'Variable'. + * @see fr.obeo.dsl.arduino.VariableAssignment#getVariable() + * @see #getVariableAssignment() + * @generated + */ + EReference getVariableAssignment_Variable(); + + /** + * Returns the meta object for class '{@link fr.obeo.dsl.arduino.BinaryIntegerExpression Binary Integer Expression}'. + * + * + * @return the meta object for class 'Binary Integer Expression'. + * @see fr.obeo.dsl.arduino.BinaryIntegerExpression + * @generated + */ + EClass getBinaryIntegerExpression(); + + /** + * Returns the meta object for the attribute '{@link fr.obeo.dsl.arduino.BinaryIntegerExpression#getOperator Operator}'. + * + * + * @return the meta object for the attribute 'Operator'. + * @see fr.obeo.dsl.arduino.BinaryIntegerExpression#getOperator() + * @see #getBinaryIntegerExpression() + * @generated + */ + EAttribute getBinaryIntegerExpression_Operator(); + + /** + * Returns the meta object for class '{@link fr.obeo.dsl.arduino.BinaryBooleanExpression Binary Boolean Expression}'. + * + * + * @return the meta object for class 'Binary Boolean Expression'. + * @see fr.obeo.dsl.arduino.BinaryBooleanExpression + * @generated + */ + EClass getBinaryBooleanExpression(); + + /** + * Returns the meta object for the attribute '{@link fr.obeo.dsl.arduino.BinaryBooleanExpression#getOperator Operator}'. + * + * + * @return the meta object for the attribute 'Operator'. + * @see fr.obeo.dsl.arduino.BinaryBooleanExpression#getOperator() + * @see #getBinaryBooleanExpression() + * @generated + */ + EAttribute getBinaryBooleanExpression_Operator(); + + /** + * Returns the meta object for class '{@link fr.obeo.dsl.arduino.Expression Expression}'. + * + * + * @return the meta object for class 'Expression'. + * @see fr.obeo.dsl.arduino.Expression + * @generated + */ + EClass getExpression(); + + /** + * Returns the meta object for class '{@link fr.obeo.dsl.arduino.Constant Constant}'. + * + * + * @return the meta object for class 'Constant'. + * @see fr.obeo.dsl.arduino.Constant + * @generated + */ + EClass getConstant(); + + /** + * Returns the meta object for class '{@link fr.obeo.dsl.arduino.If If}'. + * + * + * @return the meta object for class 'If'. + * @see fr.obeo.dsl.arduino.If + * @generated + */ + EClass getIf(); + + /** + * Returns the meta object for the containment reference '{@link fr.obeo.dsl.arduino.If#getCondition Condition}'. + * + * + * @return the meta object for the containment reference 'Condition'. + * @see fr.obeo.dsl.arduino.If#getCondition() + * @see #getIf() + * @generated + */ + EReference getIf_Condition(); + + /** + * Returns the meta object for the containment reference '{@link fr.obeo.dsl.arduino.If#getElseBlock Else Block}'. + * + * + * @return the meta object for the containment reference 'Else Block'. + * @see fr.obeo.dsl.arduino.If#getElseBlock() + * @see #getIf() + * @generated + */ + EReference getIf_ElseBlock(); + + /** + * Returns the meta object for class '{@link fr.obeo.dsl.arduino.IntegerConstant Integer Constant}'. + * + * + * @return the meta object for class 'Integer Constant'. + * @see fr.obeo.dsl.arduino.IntegerConstant + * @generated + */ + EClass getIntegerConstant(); + + /** + * Returns the meta object for the attribute '{@link fr.obeo.dsl.arduino.IntegerConstant#getValue Value}'. + * + * + * @return the meta object for the attribute 'Value'. + * @see fr.obeo.dsl.arduino.IntegerConstant#getValue() + * @see #getIntegerConstant() + * @generated + */ + EAttribute getIntegerConstant_Value(); + + /** + * Returns the meta object for class '{@link fr.obeo.dsl.arduino.BooleanConstant Boolean Constant}'. + * + * + * @return the meta object for class 'Boolean Constant'. + * @see fr.obeo.dsl.arduino.BooleanConstant + * @generated + */ + EClass getBooleanConstant(); + + /** + * Returns the meta object for the attribute '{@link fr.obeo.dsl.arduino.BooleanConstant#isValue Value}'. + * + * + * @return the meta object for the attribute 'Value'. + * @see fr.obeo.dsl.arduino.BooleanConstant#isValue() + * @see #getBooleanConstant() + * @generated + */ + EAttribute getBooleanConstant_Value(); + + /** + * Returns the meta object for class '{@link fr.obeo.dsl.arduino.BooleanExpression Boolean Expression}'. + * + * + * @return the meta object for class 'Boolean Expression'. + * @see fr.obeo.dsl.arduino.BooleanExpression + * @generated + */ + EClass getBooleanExpression(); + + /** + * Returns the meta object for class '{@link fr.obeo.dsl.arduino.IntegerExpression Integer Expression}'. + * + * + * @return the meta object for class 'Integer Expression'. + * @see fr.obeo.dsl.arduino.IntegerExpression + * @generated + */ + EClass getIntegerExpression(); + + /** + * Returns the meta object for class '{@link fr.obeo.dsl.arduino.Assignment Assignment}'. + * + * + * @return the meta object for class 'Assignment'. + * @see fr.obeo.dsl.arduino.Assignment + * @generated + */ + EClass getAssignment(); + + /** + * Returns the meta object for the containment reference '{@link fr.obeo.dsl.arduino.Assignment#getOperand Operand}'. + * + * + * @return the meta object for the containment reference 'Operand'. + * @see fr.obeo.dsl.arduino.Assignment#getOperand() + * @see #getAssignment() + * @generated + */ + EReference getAssignment_Operand(); + + /** + * Returns the meta object for class '{@link fr.obeo.dsl.arduino.IntegerVariable Integer Variable}'. + * + * + * @return the meta object for class 'Integer Variable'. + * @see fr.obeo.dsl.arduino.IntegerVariable + * @generated + */ + EClass getIntegerVariable(); + + /** + * Returns the meta object for the attribute '{@link fr.obeo.dsl.arduino.IntegerVariable#getInitialValue Initial Value}'. + * + * + * @return the meta object for the attribute 'Initial Value'. + * @see fr.obeo.dsl.arduino.IntegerVariable#getInitialValue() + * @see #getIntegerVariable() + * @generated + */ + EAttribute getIntegerVariable_InitialValue(); + + /** + * Returns the meta object for the attribute '{@link fr.obeo.dsl.arduino.IntegerVariable#getValue Value}'. + * + * + * @return the meta object for the attribute 'Value'. + * @see fr.obeo.dsl.arduino.IntegerVariable#getValue() + * @see #getIntegerVariable() + * @generated + */ + EAttribute getIntegerVariable_Value(); + + /** + * Returns the meta object for class '{@link fr.obeo.dsl.arduino.BooleanVariable Boolean Variable}'. + * + * + * @return the meta object for class 'Boolean Variable'. + * @see fr.obeo.dsl.arduino.BooleanVariable + * @generated + */ + EClass getBooleanVariable(); + + /** + * Returns the meta object for the attribute '{@link fr.obeo.dsl.arduino.BooleanVariable#isInitialValue Initial Value}'. + * + * + * @return the meta object for the attribute 'Initial Value'. + * @see fr.obeo.dsl.arduino.BooleanVariable#isInitialValue() + * @see #getBooleanVariable() + * @generated + */ + EAttribute getBooleanVariable_InitialValue(); + + /** + * Returns the meta object for the attribute '{@link fr.obeo.dsl.arduino.BooleanVariable#getValue Value}'. + * + * + * @return the meta object for the attribute 'Value'. + * @see fr.obeo.dsl.arduino.BooleanVariable#getValue() + * @see #getBooleanVariable() + * @generated + */ + EAttribute getBooleanVariable_Value(); + + /** + * Returns the meta object for class '{@link fr.obeo.dsl.arduino.BooleanModuleGet Boolean Module Get}'. + * + * + * @return the meta object for class 'Boolean Module Get'. + * @see fr.obeo.dsl.arduino.BooleanModuleGet + * @generated + */ + EClass getBooleanModuleGet(); + + /** + * Returns the meta object for class '{@link fr.obeo.dsl.arduino.IntegerModuleGet Integer Module Get}'. + * + * + * @return the meta object for class 'Integer Module Get'. + * @see fr.obeo.dsl.arduino.IntegerModuleGet + * @generated + */ + EClass getIntegerModuleGet(); + + /** + * Returns the meta object for class '{@link fr.obeo.dsl.arduino.UnaryExpression Unary Expression}'. + * + * + * @return the meta object for class 'Unary Expression'. + * @see fr.obeo.dsl.arduino.UnaryExpression + * @generated + */ + EClass getUnaryExpression(); + + /** + * Returns the meta object for the containment reference '{@link fr.obeo.dsl.arduino.UnaryExpression#getOperand Operand}'. + * + * + * @return the meta object for the containment reference 'Operand'. + * @see fr.obeo.dsl.arduino.UnaryExpression#getOperand() + * @see #getUnaryExpression() + * @generated + */ + EReference getUnaryExpression_Operand(); + + /** + * Returns the meta object for class '{@link fr.obeo.dsl.arduino.UnaryBooleanExpression Unary Boolean Expression}'. + * + * + * @return the meta object for class 'Unary Boolean Expression'. + * @see fr.obeo.dsl.arduino.UnaryBooleanExpression + * @generated + */ + EClass getUnaryBooleanExpression(); + + /** + * Returns the meta object for the attribute '{@link fr.obeo.dsl.arduino.UnaryBooleanExpression#getOperator Operator}'. + * + * + * @return the meta object for the attribute 'Operator'. + * @see fr.obeo.dsl.arduino.UnaryBooleanExpression#getOperator() + * @see #getUnaryBooleanExpression() + * @generated + */ + EAttribute getUnaryBooleanExpression_Operator(); + + /** + * Returns the meta object for class '{@link fr.obeo.dsl.arduino.UnaryIntegerExpression Unary Integer Expression}'. + * + * + * @return the meta object for class 'Unary Integer Expression'. + * @see fr.obeo.dsl.arduino.UnaryIntegerExpression + * @generated + */ + EClass getUnaryIntegerExpression(); + + /** + * Returns the meta object for the attribute '{@link fr.obeo.dsl.arduino.UnaryIntegerExpression#getOperator Operator}'. + * + * + * @return the meta object for the attribute 'Operator'. + * @see fr.obeo.dsl.arduino.UnaryIntegerExpression#getOperator() + * @see #getUnaryIntegerExpression() + * @generated + */ + EAttribute getUnaryIntegerExpression_Operator(); + + /** + * Returns the meta object for class '{@link fr.obeo.dsl.arduino.VariableDeclaration Variable Declaration}'. + * + * + * @return the meta object for class 'Variable Declaration'. + * @see fr.obeo.dsl.arduino.VariableDeclaration + * @generated + */ + EClass getVariableDeclaration(); + + /** + * Returns the meta object for the containment reference '{@link fr.obeo.dsl.arduino.VariableDeclaration#getVariable Variable}'. + * + * + * @return the meta object for the containment reference 'Variable'. + * @see fr.obeo.dsl.arduino.VariableDeclaration#getVariable() + * @see #getVariableDeclaration() + * @generated + */ + EReference getVariableDeclaration_Variable(); + + /** + * Returns the meta object for class '{@link fr.obeo.dsl.arduino.VariableRef Variable Ref}'. + * + * + * @return the meta object for class 'Variable Ref'. + * @see fr.obeo.dsl.arduino.VariableRef + * @generated + */ + EClass getVariableRef(); + + /** + * Returns the meta object for the reference '{@link fr.obeo.dsl.arduino.VariableRef#getVariable Variable}'. + * + * + * @return the meta object for the reference 'Variable'. + * @see fr.obeo.dsl.arduino.VariableRef#getVariable() + * @see #getVariableRef() + * @generated + */ + EReference getVariableRef_Variable(); + + /** + * Returns the meta object for class '{@link fr.obeo.dsl.arduino.LED LED}'. + * + * + * @return the meta object for class 'LED'. + * @see fr.obeo.dsl.arduino.LED + * @generated + */ + EClass getLED(); + + /** + * Returns the meta object for class '{@link fr.obeo.dsl.arduino.PushButton Push Button}'. + * + * + * @return the meta object for class 'Push Button'. + * @see fr.obeo.dsl.arduino.PushButton + * @generated + */ + EClass getPushButton(); + + /** + * Returns the meta object for class '{@link fr.obeo.dsl.arduino.Buzzer Buzzer}'. + * + * + * @return the meta object for class 'Buzzer'. + * @see fr.obeo.dsl.arduino.Buzzer + * @generated + */ + EClass getBuzzer(); + + /** + * Returns the meta object for class '{@link fr.obeo.dsl.arduino.RotationSensor Rotation Sensor}'. + * + * + * @return the meta object for class 'Rotation Sensor'. + * @see fr.obeo.dsl.arduino.RotationSensor + * @generated + */ + EClass getRotationSensor(); + + /** + * Returns the meta object for class '{@link fr.obeo.dsl.arduino.MicroServo Micro Servo}'. + * + * + * @return the meta object for class 'Micro Servo'. + * @see fr.obeo.dsl.arduino.MicroServo + * @generated + */ + EClass getMicroServo(); + + /** + * Returns the meta object for class '{@link fr.obeo.dsl.arduino.InfraRedSensor Infra Red Sensor}'. + * + * + * @return the meta object for class 'Infra Red Sensor'. + * @see fr.obeo.dsl.arduino.InfraRedSensor + * @generated + */ + EClass getInfraRedSensor(); + + /** + * Returns the meta object for class '{@link fr.obeo.dsl.arduino.AmbientLightSensor Ambient Light Sensor}'. + * + * + * @return the meta object for class 'Ambient Light Sensor'. + * @see fr.obeo.dsl.arduino.AmbientLightSensor + * @generated + */ + EClass getAmbientLightSensor(); + + /** + * Returns the meta object for class '{@link fr.obeo.dsl.arduino.SoundSensor Sound Sensor}'. + * + * + * @return the meta object for class 'Sound Sensor'. + * @see fr.obeo.dsl.arduino.SoundSensor + * @generated + */ + EClass getSoundSensor(); + + /** + * Returns the meta object for class '{@link fr.obeo.dsl.arduino.Fan Fan}'. + * + * + * @return the meta object for class 'Fan'. + * @see fr.obeo.dsl.arduino.Fan + * @generated + */ + EClass getFan(); + + /** + * Returns the meta object for class '{@link fr.obeo.dsl.arduino.MusicPlayer Music Player}'. + * + * + * @return the meta object for class 'Music Player'. + * @see fr.obeo.dsl.arduino.MusicPlayer + * @generated + */ + EClass getMusicPlayer(); + + /** + * Returns the meta object for class '{@link fr.obeo.dsl.arduino.ArduinoModule Module}'. + * + * + * @return the meta object for class 'Module'. + * @see fr.obeo.dsl.arduino.ArduinoModule + * @generated + */ + EClass getArduinoModule(); + + /** + * Returns the meta object for class '{@link fr.obeo.dsl.arduino.ArduinoBoard Board}'. + * + * + * @return the meta object for class 'Board'. + * @see fr.obeo.dsl.arduino.ArduinoBoard + * @generated + */ + EClass getArduinoBoard(); + + /** + * Returns the meta object for the containment reference list '{@link fr.obeo.dsl.arduino.ArduinoBoard#getDigitalPins Digital Pins}'. + * + * + * @return the meta object for the containment reference list 'Digital Pins'. + * @see fr.obeo.dsl.arduino.ArduinoBoard#getDigitalPins() + * @see #getArduinoBoard() + * @generated + */ + EReference getArduinoBoard_DigitalPins(); + + /** + * Returns the meta object for the containment reference list '{@link fr.obeo.dsl.arduino.ArduinoBoard#getAnalogPins Analog Pins}'. + * + * + * @return the meta object for the containment reference list 'Analog Pins'. + * @see fr.obeo.dsl.arduino.ArduinoBoard#getAnalogPins() + * @see #getArduinoBoard() + * @generated + */ + EReference getArduinoBoard_AnalogPins(); + + /** + * Returns the meta object for class '{@link fr.obeo.dsl.arduino.ArduinoDigitalModule Digital Module}'. + * + * + * @return the meta object for class 'Digital Module'. + * @see fr.obeo.dsl.arduino.ArduinoDigitalModule + * @generated + */ + EClass getArduinoDigitalModule(); + + /** + * Returns the meta object for class '{@link fr.obeo.dsl.arduino.ArduinoAnalogModule Analog Module}'. + * + * + * @return the meta object for class 'Analog Module'. + * @see fr.obeo.dsl.arduino.ArduinoAnalogModule + * @generated + */ + EClass getArduinoAnalogModule(); + + /** + * Returns the meta object for class '{@link fr.obeo.dsl.arduino.Thread Thread}'. + * + * + * @return the meta object for class 'Thread'. + * @see fr.obeo.dsl.arduino.Thread + * @generated + */ + EClass getThread(); + + /** + * Returns the meta object for the containment reference list '{@link fr.obeo.dsl.arduino.Thread#getBlocks Blocks}'. + * + * + * @return the meta object for the containment reference list 'Blocks'. + * @see fr.obeo.dsl.arduino.Thread#getBlocks() + * @see #getThread() + * @generated + */ + EReference getThread_Blocks(); + + /** + * Returns the meta object for the reference list '{@link fr.obeo.dsl.arduino.Thread#getChannels Channels}'. + * + * + * @return the meta object for the reference list 'Channels'. + * @see fr.obeo.dsl.arduino.Thread#getChannels() + * @see #getThread() + * @generated + */ + EReference getThread_Channels(); + + /** + * Returns the meta object for the attribute '{@link fr.obeo.dsl.arduino.Thread#getCycles Cycles}'. + * + * + * @return the meta object for the attribute 'Cycles'. + * @see fr.obeo.dsl.arduino.Thread#getCycles() + * @see #getThread() + * @generated + */ + EAttribute getThread_Cycles(); + + /** + * Returns the meta object for the reference '{@link fr.obeo.dsl.arduino.Thread#getCurrentInstruction Current Instruction}'. + * + * + * @return the meta object for the reference 'Current Instruction'. + * @see fr.obeo.dsl.arduino.Thread#getCurrentInstruction() + * @see #getThread() + * @generated + */ + EReference getThread_CurrentInstruction(); + + /** + * Returns the meta object for the reference '{@link fr.obeo.dsl.arduino.Thread#getFirst First}'. + * + * + * @return the meta object for the reference 'First'. + * @see fr.obeo.dsl.arduino.Thread#getFirst() + * @see #getThread() + * @generated + */ + EReference getThread_First(); + + /** + * Returns the meta object for the reference '{@link fr.obeo.dsl.arduino.Thread#getLast Last}'. + * + * + * @return the meta object for the reference 'Last'. + * @see fr.obeo.dsl.arduino.Thread#getLast() + * @see #getThread() + * @generated + */ + EReference getThread_Last(); + + /** + * Returns the meta object for class '{@link fr.obeo.dsl.arduino.Channel Channel}'. + * + * + * @return the meta object for class 'Channel'. + * @see fr.obeo.dsl.arduino.Channel + * @generated + */ + EClass getChannel(); + + /** + * Returns the meta object for the reference '{@link fr.obeo.dsl.arduino.Channel#getSource Source}'. + * + * + * @return the meta object for the reference 'Source'. + * @see fr.obeo.dsl.arduino.Channel#getSource() + * @see #getChannel() + * @generated + */ + EReference getChannel_Source(); + + /** + * Returns the meta object for the reference '{@link fr.obeo.dsl.arduino.Channel#getTarget Target}'. + * + * + * @return the meta object for the reference 'Target'. + * @see fr.obeo.dsl.arduino.Channel#getTarget() + * @see #getChannel() + * @generated + */ + EReference getChannel_Target(); + + /** + * Returns the meta object for the attribute '{@link fr.obeo.dsl.arduino.Channel#getInRate In Rate}'. + * + * + * @return the meta object for the attribute 'In Rate'. + * @see fr.obeo.dsl.arduino.Channel#getInRate() + * @see #getChannel() + * @generated + */ + EAttribute getChannel_InRate(); + + /** + * Returns the meta object for the attribute '{@link fr.obeo.dsl.arduino.Channel#getOutRate Out Rate}'. + * + * + * @return the meta object for the attribute 'Out Rate'. + * @see fr.obeo.dsl.arduino.Channel#getOutRate() + * @see #getChannel() + * @generated + */ + EAttribute getChannel_OutRate(); + + /** + * Returns the meta object for the attribute '{@link fr.obeo.dsl.arduino.Channel#getCapacity Capacity}'. + * + * + * @return the meta object for the attribute 'Capacity'. + * @see fr.obeo.dsl.arduino.Channel#getCapacity() + * @see #getChannel() + * @generated + */ + EAttribute getChannel_Capacity(); + + /** + * Returns the meta object for the attribute '{@link fr.obeo.dsl.arduino.Channel#getCurrentSize Current Size}'. + * + * + * @return the meta object for the attribute 'Current Size'. + * @see fr.obeo.dsl.arduino.Channel#getCurrentSize() + * @see #getChannel() + * @generated + */ + EAttribute getChannel_CurrentSize(); + + /** + * Returns the meta object for class '{@link fr.obeo.dsl.arduino.Link Link}'. + * + * + * @return the meta object for class 'Link'. + * @see fr.obeo.dsl.arduino.Link + * @generated + */ + EClass getLink(); + + /** + * Returns the meta object for the reference '{@link fr.obeo.dsl.arduino.Link#getInBoard In Board}'. + * + * + * @return the meta object for the reference 'In Board'. + * @see fr.obeo.dsl.arduino.Link#getInBoard() + * @see #getLink() + * @generated + */ + EReference getLink_InBoard(); + + /** + * Returns the meta object for the reference '{@link fr.obeo.dsl.arduino.Link#getOutBoard Out Board}'. + * + * + * @return the meta object for the reference 'Out Board'. + * @see fr.obeo.dsl.arduino.Link#getOutBoard() + * @see #getLink() + * @generated + */ + EReference getLink_OutBoard(); + + /** + * Returns the meta object for class '{@link fr.obeo.dsl.arduino.SynchronizationBlock Synchronization Block}'. + * + * + * @return the meta object for class 'Synchronization Block'. + * @see fr.obeo.dsl.arduino.SynchronizationBlock + * @generated + */ + EClass getSynchronizationBlock(); + + /** + * Returns the meta object for the reference '{@link fr.obeo.dsl.arduino.SynchronizationBlock#getNext Next}'. + * + * + * @return the meta object for the reference 'Next'. + * @see fr.obeo.dsl.arduino.SynchronizationBlock#getNext() + * @see #getSynchronizationBlock() + * @generated + */ + EReference getSynchronizationBlock_Next(); + + /** + * Returns the meta object for the reference '{@link fr.obeo.dsl.arduino.SynchronizationBlock#getPrevious Previous}'. + * + * + * @return the meta object for the reference 'Previous'. + * @see fr.obeo.dsl.arduino.SynchronizationBlock#getPrevious() + * @see #getSynchronizationBlock() + * @generated + */ + EReference getSynchronizationBlock_Previous(); + + /** + * Returns the meta object for class '{@link fr.obeo.dsl.arduino.InstructionBlock Instruction Block}'. + * + * + * @return the meta object for class 'Instruction Block'. + * @see fr.obeo.dsl.arduino.InstructionBlock + * @generated + */ + EClass getInstructionBlock(); + + /** + * Returns the meta object for the containment reference list '{@link fr.obeo.dsl.arduino.InstructionBlock#getInstructions Instructions}'. + * + * + * @return the meta object for the containment reference list 'Instructions'. + * @see fr.obeo.dsl.arduino.InstructionBlock#getInstructions() + * @see #getInstructionBlock() + * @generated + */ + EReference getInstructionBlock_Instructions(); + + /** + * Returns the meta object for the reference '{@link fr.obeo.dsl.arduino.InstructionBlock#getNext Next}'. + * + * + * @return the meta object for the reference 'Next'. + * @see fr.obeo.dsl.arduino.InstructionBlock#getNext() + * @see #getInstructionBlock() + * @generated + */ + EReference getInstructionBlock_Next(); + + /** + * Returns the meta object for the reference '{@link fr.obeo.dsl.arduino.InstructionBlock#getPrevious Previous}'. + * + * + * @return the meta object for the reference 'Previous'. + * @see fr.obeo.dsl.arduino.InstructionBlock#getPrevious() + * @see #getInstructionBlock() + * @generated + */ + EReference getInstructionBlock_Previous(); + + /** + * Returns the meta object for class '{@link fr.obeo.dsl.arduino.ThreadInstructionBlock Thread Instruction Block}'. + * + * + * @return the meta object for class 'Thread Instruction Block'. + * @see fr.obeo.dsl.arduino.ThreadInstructionBlock + * @generated + */ + EClass getThreadInstructionBlock(); + + /** + * Returns the meta object for the container reference '{@link fr.obeo.dsl.arduino.ThreadInstructionBlock#getThread Thread}'. + * + * + * @return the meta object for the container reference 'Thread'. + * @see fr.obeo.dsl.arduino.ThreadInstructionBlock#getThread() + * @see #getThreadInstructionBlock() + * @generated + */ + EReference getThreadInstructionBlock_Thread(); + + /** + * Returns the meta object for enum '{@link fr.obeo.dsl.arduino.Time Time}'. + * + * + * @return the meta object for enum 'Time'. + * @see fr.obeo.dsl.arduino.Time + * @generated + */ + EEnum getTime(); + + /** + * Returns the meta object for enum '{@link fr.obeo.dsl.arduino.BinaryIntegerOperatorKind Binary Integer Operator Kind}'. + * + * + * @return the meta object for enum 'Binary Integer Operator Kind'. + * @see fr.obeo.dsl.arduino.BinaryIntegerOperatorKind + * @generated + */ + EEnum getBinaryIntegerOperatorKind(); + + /** + * Returns the meta object for enum '{@link fr.obeo.dsl.arduino.BinaryBooleanOperatorKind Binary Boolean Operator Kind}'. + * + * + * @return the meta object for enum 'Binary Boolean Operator Kind'. + * @see fr.obeo.dsl.arduino.BinaryBooleanOperatorKind + * @generated + */ + EEnum getBinaryBooleanOperatorKind(); + + /** + * Returns the meta object for enum '{@link fr.obeo.dsl.arduino.UnaryIntegerOperatorKind Unary Integer Operator Kind}'. + * + * + * @return the meta object for enum 'Unary Integer Operator Kind'. + * @see fr.obeo.dsl.arduino.UnaryIntegerOperatorKind + * @generated + */ + EEnum getUnaryIntegerOperatorKind(); + + /** + * Returns the meta object for enum '{@link fr.obeo.dsl.arduino.UnaryBooleanOperatorKind Unary Boolean Operator Kind}'. + * + * + * @return the meta object for enum 'Unary Boolean Operator Kind'. + * @see fr.obeo.dsl.arduino.UnaryBooleanOperatorKind + * @generated + */ + EEnum getUnaryBooleanOperatorKind(); + + /** + * Returns the factory that creates the instances of the model. + * + * + * @return the factory that creates the instances of the model. + * @generated + */ + ArduinoFactory getArduinoFactory(); + + /** + * + * Defines literals for the meta objects that represent + *
    + *
  • each class,
  • + *
  • each feature of each class,
  • + *
  • each enum,
  • + *
  • and each data type
  • + *
+ * + * @generated + */ + interface Literals { + /** + * The meta object literal for the '{@link fr.obeo.dsl.arduino.impl.BoardImpl Board}' class. + * + * + * @see fr.obeo.dsl.arduino.impl.BoardImpl + * @see fr.obeo.dsl.arduino.impl.ArduinoPackageImpl#getBoard() + * @generated + */ + EClass BOARD = eINSTANCE.getBoard(); + + /** + * The meta object literal for the 'Project' container reference feature. + * + * + * @generated + */ + EReference BOARD__PROJECT = eINSTANCE.getBoard_Project(); + + /** + * The meta object literal for the 'Threads' reference list feature. + * + * + * @generated + */ + EReference BOARD__THREADS = eINSTANCE.getBoard_Threads(); + + /** + * The meta object literal for the '{@link fr.obeo.dsl.arduino.Module Module}' class. + * + * + * @see fr.obeo.dsl.arduino.Module + * @see fr.obeo.dsl.arduino.impl.ArduinoPackageImpl#getModule() + * @generated + */ + EClass MODULE = eINSTANCE.getModule(); + + /** + * The meta object literal for the 'Level' attribute feature. + * + * + * @generated + */ + EAttribute MODULE__LEVEL = eINSTANCE.getModule_Level(); + + /** + * The meta object literal for the '{@link fr.obeo.dsl.arduino.impl.DigitalPinImpl Digital Pin}' class. + * + * + * @see fr.obeo.dsl.arduino.impl.DigitalPinImpl + * @see fr.obeo.dsl.arduino.impl.ArduinoPackageImpl#getDigitalPin() + * @generated + */ + EClass DIGITAL_PIN = eINSTANCE.getDigitalPin(); + + /** + * The meta object literal for the 'Module' containment reference feature. + * + * + * @generated + */ + EReference DIGITAL_PIN__MODULE = eINSTANCE.getDigitalPin_Module(); + + /** + * The meta object literal for the '{@link fr.obeo.dsl.arduino.impl.PinImpl Pin}' class. + * + * + * @see fr.obeo.dsl.arduino.impl.PinImpl + * @see fr.obeo.dsl.arduino.impl.ArduinoPackageImpl#getPin() + * @generated + */ + EClass PIN = eINSTANCE.getPin(); + + /** + * The meta object literal for the 'Id' attribute feature. + * + * + * @generated + */ + EAttribute PIN__ID = eINSTANCE.getPin_Id(); + + /** + * The meta object literal for the 'Level' attribute feature. + * + * + * @generated + */ + EAttribute PIN__LEVEL = eINSTANCE.getPin_Level(); + + /** + * The meta object literal for the '{@link fr.obeo.dsl.arduino.impl.AnalogPinImpl Analog Pin}' class. + * + * + * @see fr.obeo.dsl.arduino.impl.AnalogPinImpl + * @see fr.obeo.dsl.arduino.impl.ArduinoPackageImpl#getAnalogPin() + * @generated + */ + EClass ANALOG_PIN = eINSTANCE.getAnalogPin(); + + /** + * The meta object literal for the 'Module' containment reference feature. + * + * + * @generated + */ + EReference ANALOG_PIN__MODULE = eINSTANCE.getAnalogPin_Module(); + + /** + * The meta object literal for the '{@link fr.obeo.dsl.arduino.impl.SketchImpl Sketch}' class. + * + * + * @see fr.obeo.dsl.arduino.impl.SketchImpl + * @see fr.obeo.dsl.arduino.impl.ArduinoPackageImpl#getSketch() + * @generated + */ + EClass SKETCH = eINSTANCE.getSketch(); + + /** + * The meta object literal for the 'Project' container reference feature. + * + * + * @generated + */ + EReference SKETCH__PROJECT = eINSTANCE.getSketch_Project(); + + /** + * The meta object literal for the 'Threads' containment reference list feature. + * + * + * @generated + */ + EReference SKETCH__THREADS = eINSTANCE.getSketch_Threads(); + + /** + * The meta object literal for the 'Channels' containment reference list feature. + * + * + * @generated + */ + EReference SKETCH__CHANNELS = eINSTANCE.getSketch_Channels(); + + /** + * The meta object literal for the '{@link fr.obeo.dsl.arduino.impl.ProjectImpl Project}' class. + * + * + * @see fr.obeo.dsl.arduino.impl.ProjectImpl + * @see fr.obeo.dsl.arduino.impl.ArduinoPackageImpl#getProject() + * @generated + */ + EClass PROJECT = eINSTANCE.getProject(); + + /** + * The meta object literal for the 'Boards' containment reference list feature. + * + * + * @generated + */ + EReference PROJECT__BOARDS = eINSTANCE.getProject_Boards(); + + /** + * The meta object literal for the 'Sketch' containment reference feature. + * + * + * @generated + */ + EReference PROJECT__SKETCH = eINSTANCE.getProject_Sketch(); + + /** + * The meta object literal for the 'Links' containment reference list feature. + * + * + * @generated + */ + EReference PROJECT__LINKS = eINSTANCE.getProject_Links(); + + /** + * The meta object literal for the '{@link fr.obeo.dsl.arduino.impl.InstructionImpl Instruction}' class. + * + * + * @see fr.obeo.dsl.arduino.impl.InstructionImpl + * @see fr.obeo.dsl.arduino.impl.ArduinoPackageImpl#getInstruction() + * @generated + */ + EClass INSTRUCTION = eINSTANCE.getInstruction(); + + /** + * The meta object literal for the 'Owned Block' container reference feature. + * + * + * @generated + */ + EReference INSTRUCTION__OWNED_BLOCK = eINSTANCE.getInstruction_OwnedBlock(); + + /** + * The meta object literal for the '{@link fr.obeo.dsl.arduino.impl.ModuleAssignmentImpl Module Assignment}' class. + * + * + * @see fr.obeo.dsl.arduino.impl.ModuleAssignmentImpl + * @see fr.obeo.dsl.arduino.impl.ArduinoPackageImpl#getModuleAssignment() + * @generated + */ + EClass MODULE_ASSIGNMENT = eINSTANCE.getModuleAssignment(); + + /** + * The meta object literal for the '{@link fr.obeo.dsl.arduino.impl.ModuleInstructionImpl Module Instruction}' class. + * + * + * @see fr.obeo.dsl.arduino.impl.ModuleInstructionImpl + * @see fr.obeo.dsl.arduino.impl.ArduinoPackageImpl#getModuleInstruction() + * @generated + */ + EClass MODULE_INSTRUCTION = eINSTANCE.getModuleInstruction(); + + /** + * The meta object literal for the 'Module' reference feature. + * + * + * @generated + */ + EReference MODULE_INSTRUCTION__MODULE = eINSTANCE.getModuleInstruction_Module(); + + /** + * The meta object literal for the '{@link fr.obeo.dsl.arduino.impl.ControlImpl Control}' class. + * + * + * @see fr.obeo.dsl.arduino.impl.ControlImpl + * @see fr.obeo.dsl.arduino.impl.ArduinoPackageImpl#getControl() + * @generated + */ + EClass CONTROL = eINSTANCE.getControl(); + + /** + * The meta object literal for the 'Block' containment reference feature. + * + * + * @generated + */ + EReference CONTROL__BLOCK = eINSTANCE.getControl_Block(); + + /** + * The meta object literal for the '{@link fr.obeo.dsl.arduino.impl.UtilitiesImpl Utilities}' class. + * + * + * @see fr.obeo.dsl.arduino.impl.UtilitiesImpl + * @see fr.obeo.dsl.arduino.impl.ArduinoPackageImpl#getUtilities() + * @generated + */ + EClass UTILITIES = eINSTANCE.getUtilities(); + + /** + * The meta object literal for the '{@link fr.obeo.dsl.arduino.impl.DelayImpl Delay}' class. + * + * + * @see fr.obeo.dsl.arduino.impl.DelayImpl + * @see fr.obeo.dsl.arduino.impl.ArduinoPackageImpl#getDelay() + * @generated + */ + EClass DELAY = eINSTANCE.getDelay(); + + /** + * The meta object literal for the 'Unit' attribute feature. + * + * + * @generated + */ + EAttribute DELAY__UNIT = eINSTANCE.getDelay_Unit(); + + /** + * The meta object literal for the 'Value' attribute feature. + * + * + * @generated + */ + EAttribute DELAY__VALUE = eINSTANCE.getDelay_Value(); + + /** + * The meta object literal for the '{@link fr.obeo.dsl.arduino.impl.NamedElementImpl Named Element}' class. + * + * + * @see fr.obeo.dsl.arduino.impl.NamedElementImpl + * @see fr.obeo.dsl.arduino.impl.ArduinoPackageImpl#getNamedElement() + * @generated + */ + EClass NAMED_ELEMENT = eINSTANCE.getNamedElement(); + + /** + * The meta object literal for the 'Name' attribute feature. + * + * + * @generated + */ + EAttribute NAMED_ELEMENT__NAME = eINSTANCE.getNamedElement_Name(); + + /** + * The meta object literal for the '{@link fr.obeo.dsl.arduino.impl.RepeatImpl Repeat}' class. + * + * + * @see fr.obeo.dsl.arduino.impl.RepeatImpl + * @see fr.obeo.dsl.arduino.impl.ArduinoPackageImpl#getRepeat() + * @generated + */ + EClass REPEAT = eINSTANCE.getRepeat(); + + /** + * The meta object literal for the 'Iteration' attribute feature. + * + * + * @generated + */ + EAttribute REPEAT__ITERATION = eINSTANCE.getRepeat_Iteration(); + + /** + * The meta object literal for the '{@link fr.obeo.dsl.arduino.impl.ModuleGetImpl Module Get}' class. + * + * + * @see fr.obeo.dsl.arduino.impl.ModuleGetImpl + * @see fr.obeo.dsl.arduino.impl.ArduinoPackageImpl#getModuleGet() + * @generated + */ + EClass MODULE_GET = eINSTANCE.getModuleGet(); + + /** + * The meta object literal for the 'Module' reference feature. + * + * + * @generated + */ + EReference MODULE_GET__MODULE = eINSTANCE.getModuleGet_Module(); + + /** + * The meta object literal for the '{@link fr.obeo.dsl.arduino.impl.WhileImpl While}' class. + * + * + * @see fr.obeo.dsl.arduino.impl.WhileImpl + * @see fr.obeo.dsl.arduino.impl.ArduinoPackageImpl#getWhile() + * @generated + */ + EClass WHILE = eINSTANCE.getWhile(); + + /** + * The meta object literal for the 'Condition' containment reference feature. + * + * + * @generated + */ + EReference WHILE__CONDITION = eINSTANCE.getWhile_Condition(); + + /** + * The meta object literal for the '{@link fr.obeo.dsl.arduino.impl.BinaryExpressionImpl Binary Expression}' class. + * + * + * @see fr.obeo.dsl.arduino.impl.BinaryExpressionImpl + * @see fr.obeo.dsl.arduino.impl.ArduinoPackageImpl#getBinaryExpression() + * @generated + */ + EClass BINARY_EXPRESSION = eINSTANCE.getBinaryExpression(); + + /** + * The meta object literal for the 'Left' containment reference feature. + * + * + * @generated + */ + EReference BINARY_EXPRESSION__LEFT = eINSTANCE.getBinaryExpression_Left(); + + /** + * The meta object literal for the 'Right' containment reference feature. + * + * + * @generated + */ + EReference BINARY_EXPRESSION__RIGHT = eINSTANCE.getBinaryExpression_Right(); + + /** + * The meta object literal for the '{@link fr.obeo.dsl.arduino.impl.VariableImpl Variable}' class. + * + * + * @see fr.obeo.dsl.arduino.impl.VariableImpl + * @see fr.obeo.dsl.arduino.impl.ArduinoPackageImpl#getVariable() + * @generated + */ + EClass VARIABLE = eINSTANCE.getVariable(); + + /** + * The meta object literal for the '{@link fr.obeo.dsl.arduino.impl.VariableAssignmentImpl Variable Assignment}' class. + * + * + * @see fr.obeo.dsl.arduino.impl.VariableAssignmentImpl + * @see fr.obeo.dsl.arduino.impl.ArduinoPackageImpl#getVariableAssignment() + * @generated + */ + EClass VARIABLE_ASSIGNMENT = eINSTANCE.getVariableAssignment(); + + /** + * The meta object literal for the 'Variable' reference feature. + * + * + * @generated + */ + EReference VARIABLE_ASSIGNMENT__VARIABLE = eINSTANCE.getVariableAssignment_Variable(); + + /** + * The meta object literal for the '{@link fr.obeo.dsl.arduino.impl.BinaryIntegerExpressionImpl Binary Integer Expression}' class. + * + * + * @see fr.obeo.dsl.arduino.impl.BinaryIntegerExpressionImpl + * @see fr.obeo.dsl.arduino.impl.ArduinoPackageImpl#getBinaryIntegerExpression() + * @generated + */ + EClass BINARY_INTEGER_EXPRESSION = eINSTANCE.getBinaryIntegerExpression(); + + /** + * The meta object literal for the 'Operator' attribute feature. + * + * + * @generated + */ + EAttribute BINARY_INTEGER_EXPRESSION__OPERATOR = eINSTANCE.getBinaryIntegerExpression_Operator(); + + /** + * The meta object literal for the '{@link fr.obeo.dsl.arduino.impl.BinaryBooleanExpressionImpl Binary Boolean Expression}' class. + * + * + * @see fr.obeo.dsl.arduino.impl.BinaryBooleanExpressionImpl + * @see fr.obeo.dsl.arduino.impl.ArduinoPackageImpl#getBinaryBooleanExpression() + * @generated + */ + EClass BINARY_BOOLEAN_EXPRESSION = eINSTANCE.getBinaryBooleanExpression(); + + /** + * The meta object literal for the 'Operator' attribute feature. + * + * + * @generated + */ + EAttribute BINARY_BOOLEAN_EXPRESSION__OPERATOR = eINSTANCE.getBinaryBooleanExpression_Operator(); + + /** + * The meta object literal for the '{@link fr.obeo.dsl.arduino.impl.ExpressionImpl Expression}' class. + * + * + * @see fr.obeo.dsl.arduino.impl.ExpressionImpl + * @see fr.obeo.dsl.arduino.impl.ArduinoPackageImpl#getExpression() + * @generated + */ + EClass EXPRESSION = eINSTANCE.getExpression(); + + /** + * The meta object literal for the '{@link fr.obeo.dsl.arduino.impl.ConstantImpl Constant}' class. + * + * + * @see fr.obeo.dsl.arduino.impl.ConstantImpl + * @see fr.obeo.dsl.arduino.impl.ArduinoPackageImpl#getConstant() + * @generated + */ + EClass CONSTANT = eINSTANCE.getConstant(); + + /** + * The meta object literal for the '{@link fr.obeo.dsl.arduino.impl.IfImpl If}' class. + * + * + * @see fr.obeo.dsl.arduino.impl.IfImpl + * @see fr.obeo.dsl.arduino.impl.ArduinoPackageImpl#getIf() + * @generated + */ + EClass IF = eINSTANCE.getIf(); + + /** + * The meta object literal for the 'Condition' containment reference feature. + * + * + * @generated + */ + EReference IF__CONDITION = eINSTANCE.getIf_Condition(); + + /** + * The meta object literal for the 'Else Block' containment reference feature. + * + * + * @generated + */ + EReference IF__ELSE_BLOCK = eINSTANCE.getIf_ElseBlock(); + + /** + * The meta object literal for the '{@link fr.obeo.dsl.arduino.impl.IntegerConstantImpl Integer Constant}' class. + * + * + * @see fr.obeo.dsl.arduino.impl.IntegerConstantImpl + * @see fr.obeo.dsl.arduino.impl.ArduinoPackageImpl#getIntegerConstant() + * @generated + */ + EClass INTEGER_CONSTANT = eINSTANCE.getIntegerConstant(); + + /** + * The meta object literal for the 'Value' attribute feature. + * + * + * @generated + */ + EAttribute INTEGER_CONSTANT__VALUE = eINSTANCE.getIntegerConstant_Value(); + + /** + * The meta object literal for the '{@link fr.obeo.dsl.arduino.impl.BooleanConstantImpl Boolean Constant}' class. + * + * + * @see fr.obeo.dsl.arduino.impl.BooleanConstantImpl + * @see fr.obeo.dsl.arduino.impl.ArduinoPackageImpl#getBooleanConstant() + * @generated + */ + EClass BOOLEAN_CONSTANT = eINSTANCE.getBooleanConstant(); + + /** + * The meta object literal for the 'Value' attribute feature. + * + * + * @generated + */ + EAttribute BOOLEAN_CONSTANT__VALUE = eINSTANCE.getBooleanConstant_Value(); + + /** + * The meta object literal for the '{@link fr.obeo.dsl.arduino.impl.BooleanExpressionImpl Boolean Expression}' class. + * + * + * @see fr.obeo.dsl.arduino.impl.BooleanExpressionImpl + * @see fr.obeo.dsl.arduino.impl.ArduinoPackageImpl#getBooleanExpression() + * @generated + */ + EClass BOOLEAN_EXPRESSION = eINSTANCE.getBooleanExpression(); + + /** + * The meta object literal for the '{@link fr.obeo.dsl.arduino.impl.IntegerExpressionImpl Integer Expression}' class. + * + * + * @see fr.obeo.dsl.arduino.impl.IntegerExpressionImpl + * @see fr.obeo.dsl.arduino.impl.ArduinoPackageImpl#getIntegerExpression() + * @generated + */ + EClass INTEGER_EXPRESSION = eINSTANCE.getIntegerExpression(); + + /** + * The meta object literal for the '{@link fr.obeo.dsl.arduino.impl.AssignmentImpl Assignment}' class. + * + * + * @see fr.obeo.dsl.arduino.impl.AssignmentImpl + * @see fr.obeo.dsl.arduino.impl.ArduinoPackageImpl#getAssignment() + * @generated + */ + EClass ASSIGNMENT = eINSTANCE.getAssignment(); + + /** + * The meta object literal for the 'Operand' containment reference feature. + * + * + * @generated + */ + EReference ASSIGNMENT__OPERAND = eINSTANCE.getAssignment_Operand(); + + /** + * The meta object literal for the '{@link fr.obeo.dsl.arduino.impl.IntegerVariableImpl Integer Variable}' class. + * + * + * @see fr.obeo.dsl.arduino.impl.IntegerVariableImpl + * @see fr.obeo.dsl.arduino.impl.ArduinoPackageImpl#getIntegerVariable() + * @generated + */ + EClass INTEGER_VARIABLE = eINSTANCE.getIntegerVariable(); + + /** + * The meta object literal for the 'Initial Value' attribute feature. + * + * + * @generated + */ + EAttribute INTEGER_VARIABLE__INITIAL_VALUE = eINSTANCE.getIntegerVariable_InitialValue(); + + /** + * The meta object literal for the 'Value' attribute feature. + * + * + * @generated + */ + EAttribute INTEGER_VARIABLE__VALUE = eINSTANCE.getIntegerVariable_Value(); + + /** + * The meta object literal for the '{@link fr.obeo.dsl.arduino.impl.BooleanVariableImpl Boolean Variable}' class. + * + * + * @see fr.obeo.dsl.arduino.impl.BooleanVariableImpl + * @see fr.obeo.dsl.arduino.impl.ArduinoPackageImpl#getBooleanVariable() + * @generated + */ + EClass BOOLEAN_VARIABLE = eINSTANCE.getBooleanVariable(); + + /** + * The meta object literal for the 'Initial Value' attribute feature. + * + * + * @generated + */ + EAttribute BOOLEAN_VARIABLE__INITIAL_VALUE = eINSTANCE.getBooleanVariable_InitialValue(); + + /** + * The meta object literal for the 'Value' attribute feature. + * + * + * @generated + */ + EAttribute BOOLEAN_VARIABLE__VALUE = eINSTANCE.getBooleanVariable_Value(); + + /** + * The meta object literal for the '{@link fr.obeo.dsl.arduino.impl.BooleanModuleGetImpl Boolean Module Get}' class. + * + * + * @see fr.obeo.dsl.arduino.impl.BooleanModuleGetImpl + * @see fr.obeo.dsl.arduino.impl.ArduinoPackageImpl#getBooleanModuleGet() + * @generated + */ + EClass BOOLEAN_MODULE_GET = eINSTANCE.getBooleanModuleGet(); + + /** + * The meta object literal for the '{@link fr.obeo.dsl.arduino.impl.IntegerModuleGetImpl Integer Module Get}' class. + * + * + * @see fr.obeo.dsl.arduino.impl.IntegerModuleGetImpl + * @see fr.obeo.dsl.arduino.impl.ArduinoPackageImpl#getIntegerModuleGet() + * @generated + */ + EClass INTEGER_MODULE_GET = eINSTANCE.getIntegerModuleGet(); + + /** + * The meta object literal for the '{@link fr.obeo.dsl.arduino.impl.UnaryExpressionImpl Unary Expression}' class. + * + * + * @see fr.obeo.dsl.arduino.impl.UnaryExpressionImpl + * @see fr.obeo.dsl.arduino.impl.ArduinoPackageImpl#getUnaryExpression() + * @generated + */ + EClass UNARY_EXPRESSION = eINSTANCE.getUnaryExpression(); + + /** + * The meta object literal for the 'Operand' containment reference feature. + * + * + * @generated + */ + EReference UNARY_EXPRESSION__OPERAND = eINSTANCE.getUnaryExpression_Operand(); + + /** + * The meta object literal for the '{@link fr.obeo.dsl.arduino.impl.UnaryBooleanExpressionImpl Unary Boolean Expression}' class. + * + * + * @see fr.obeo.dsl.arduino.impl.UnaryBooleanExpressionImpl + * @see fr.obeo.dsl.arduino.impl.ArduinoPackageImpl#getUnaryBooleanExpression() + * @generated + */ + EClass UNARY_BOOLEAN_EXPRESSION = eINSTANCE.getUnaryBooleanExpression(); + + /** + * The meta object literal for the 'Operator' attribute feature. + * + * + * @generated + */ + EAttribute UNARY_BOOLEAN_EXPRESSION__OPERATOR = eINSTANCE.getUnaryBooleanExpression_Operator(); + + /** + * The meta object literal for the '{@link fr.obeo.dsl.arduino.impl.UnaryIntegerExpressionImpl Unary Integer Expression}' class. + * + * + * @see fr.obeo.dsl.arduino.impl.UnaryIntegerExpressionImpl + * @see fr.obeo.dsl.arduino.impl.ArduinoPackageImpl#getUnaryIntegerExpression() + * @generated + */ + EClass UNARY_INTEGER_EXPRESSION = eINSTANCE.getUnaryIntegerExpression(); + + /** + * The meta object literal for the 'Operator' attribute feature. + * + * + * @generated + */ + EAttribute UNARY_INTEGER_EXPRESSION__OPERATOR = eINSTANCE.getUnaryIntegerExpression_Operator(); + + /** + * The meta object literal for the '{@link fr.obeo.dsl.arduino.impl.VariableDeclarationImpl Variable Declaration}' class. + * + * + * @see fr.obeo.dsl.arduino.impl.VariableDeclarationImpl + * @see fr.obeo.dsl.arduino.impl.ArduinoPackageImpl#getVariableDeclaration() + * @generated + */ + EClass VARIABLE_DECLARATION = eINSTANCE.getVariableDeclaration(); + + /** + * The meta object literal for the 'Variable' containment reference feature. + * + * + * @generated + */ + EReference VARIABLE_DECLARATION__VARIABLE = eINSTANCE.getVariableDeclaration_Variable(); + + /** + * The meta object literal for the '{@link fr.obeo.dsl.arduino.impl.VariableRefImpl Variable Ref}' class. + * + * + * @see fr.obeo.dsl.arduino.impl.VariableRefImpl + * @see fr.obeo.dsl.arduino.impl.ArduinoPackageImpl#getVariableRef() + * @generated + */ + EClass VARIABLE_REF = eINSTANCE.getVariableRef(); + + /** + * The meta object literal for the 'Variable' reference feature. + * + * + * @generated + */ + EReference VARIABLE_REF__VARIABLE = eINSTANCE.getVariableRef_Variable(); + + /** + * The meta object literal for the '{@link fr.obeo.dsl.arduino.impl.LEDImpl LED}' class. + * + * + * @see fr.obeo.dsl.arduino.impl.LEDImpl + * @see fr.obeo.dsl.arduino.impl.ArduinoPackageImpl#getLED() + * @generated + */ + EClass LED = eINSTANCE.getLED(); + + /** + * The meta object literal for the '{@link fr.obeo.dsl.arduino.impl.PushButtonImpl Push Button}' class. + * + * + * @see fr.obeo.dsl.arduino.impl.PushButtonImpl + * @see fr.obeo.dsl.arduino.impl.ArduinoPackageImpl#getPushButton() + * @generated + */ + EClass PUSH_BUTTON = eINSTANCE.getPushButton(); + + /** + * The meta object literal for the '{@link fr.obeo.dsl.arduino.impl.BuzzerImpl Buzzer}' class. + * + * + * @see fr.obeo.dsl.arduino.impl.BuzzerImpl + * @see fr.obeo.dsl.arduino.impl.ArduinoPackageImpl#getBuzzer() + * @generated + */ + EClass BUZZER = eINSTANCE.getBuzzer(); + + /** + * The meta object literal for the '{@link fr.obeo.dsl.arduino.impl.RotationSensorImpl Rotation Sensor}' class. + * + * + * @see fr.obeo.dsl.arduino.impl.RotationSensorImpl + * @see fr.obeo.dsl.arduino.impl.ArduinoPackageImpl#getRotationSensor() + * @generated + */ + EClass ROTATION_SENSOR = eINSTANCE.getRotationSensor(); + + /** + * The meta object literal for the '{@link fr.obeo.dsl.arduino.impl.MicroServoImpl Micro Servo}' class. + * + * + * @see fr.obeo.dsl.arduino.impl.MicroServoImpl + * @see fr.obeo.dsl.arduino.impl.ArduinoPackageImpl#getMicroServo() + * @generated + */ + EClass MICRO_SERVO = eINSTANCE.getMicroServo(); + + /** + * The meta object literal for the '{@link fr.obeo.dsl.arduino.impl.InfraRedSensorImpl Infra Red Sensor}' class. + * + * + * @see fr.obeo.dsl.arduino.impl.InfraRedSensorImpl + * @see fr.obeo.dsl.arduino.impl.ArduinoPackageImpl#getInfraRedSensor() + * @generated + */ + EClass INFRA_RED_SENSOR = eINSTANCE.getInfraRedSensor(); + + /** + * The meta object literal for the '{@link fr.obeo.dsl.arduino.impl.AmbientLightSensorImpl Ambient Light Sensor}' class. + * + * + * @see fr.obeo.dsl.arduino.impl.AmbientLightSensorImpl + * @see fr.obeo.dsl.arduino.impl.ArduinoPackageImpl#getAmbientLightSensor() + * @generated + */ + EClass AMBIENT_LIGHT_SENSOR = eINSTANCE.getAmbientLightSensor(); + + /** + * The meta object literal for the '{@link fr.obeo.dsl.arduino.impl.SoundSensorImpl Sound Sensor}' class. + * + * + * @see fr.obeo.dsl.arduino.impl.SoundSensorImpl + * @see fr.obeo.dsl.arduino.impl.ArduinoPackageImpl#getSoundSensor() + * @generated + */ + EClass SOUND_SENSOR = eINSTANCE.getSoundSensor(); + + /** + * The meta object literal for the '{@link fr.obeo.dsl.arduino.impl.FanImpl Fan}' class. + * + * + * @see fr.obeo.dsl.arduino.impl.FanImpl + * @see fr.obeo.dsl.arduino.impl.ArduinoPackageImpl#getFan() + * @generated + */ + EClass FAN = eINSTANCE.getFan(); + + /** + * The meta object literal for the '{@link fr.obeo.dsl.arduino.impl.MusicPlayerImpl Music Player}' class. + * + * + * @see fr.obeo.dsl.arduino.impl.MusicPlayerImpl + * @see fr.obeo.dsl.arduino.impl.ArduinoPackageImpl#getMusicPlayer() + * @generated + */ + EClass MUSIC_PLAYER = eINSTANCE.getMusicPlayer(); + + /** + * The meta object literal for the '{@link fr.obeo.dsl.arduino.impl.ArduinoModuleImpl Module}' class. + * + * + * @see fr.obeo.dsl.arduino.impl.ArduinoModuleImpl + * @see fr.obeo.dsl.arduino.impl.ArduinoPackageImpl#getArduinoModule() + * @generated + */ + EClass ARDUINO_MODULE = eINSTANCE.getArduinoModule(); + + /** + * The meta object literal for the '{@link fr.obeo.dsl.arduino.impl.ArduinoBoardImpl Board}' class. + * + * + * @see fr.obeo.dsl.arduino.impl.ArduinoBoardImpl + * @see fr.obeo.dsl.arduino.impl.ArduinoPackageImpl#getArduinoBoard() + * @generated + */ + EClass ARDUINO_BOARD = eINSTANCE.getArduinoBoard(); + + /** + * The meta object literal for the 'Digital Pins' containment reference list feature. + * + * + * @generated + */ + EReference ARDUINO_BOARD__DIGITAL_PINS = eINSTANCE.getArduinoBoard_DigitalPins(); + + /** + * The meta object literal for the 'Analog Pins' containment reference list feature. + * + * + * @generated + */ + EReference ARDUINO_BOARD__ANALOG_PINS = eINSTANCE.getArduinoBoard_AnalogPins(); + + /** + * The meta object literal for the '{@link fr.obeo.dsl.arduino.impl.ArduinoDigitalModuleImpl Digital Module}' class. + * + * + * @see fr.obeo.dsl.arduino.impl.ArduinoDigitalModuleImpl + * @see fr.obeo.dsl.arduino.impl.ArduinoPackageImpl#getArduinoDigitalModule() + * @generated + */ + EClass ARDUINO_DIGITAL_MODULE = eINSTANCE.getArduinoDigitalModule(); + + /** + * The meta object literal for the '{@link fr.obeo.dsl.arduino.impl.ArduinoAnalogModuleImpl Analog Module}' class. + * + * + * @see fr.obeo.dsl.arduino.impl.ArduinoAnalogModuleImpl + * @see fr.obeo.dsl.arduino.impl.ArduinoPackageImpl#getArduinoAnalogModule() + * @generated + */ + EClass ARDUINO_ANALOG_MODULE = eINSTANCE.getArduinoAnalogModule(); + + /** + * The meta object literal for the '{@link fr.obeo.dsl.arduino.impl.ThreadImpl Thread}' class. + * + * + * @see fr.obeo.dsl.arduino.impl.ThreadImpl + * @see fr.obeo.dsl.arduino.impl.ArduinoPackageImpl#getThread() + * @generated + */ + EClass THREAD = eINSTANCE.getThread(); + + /** + * The meta object literal for the 'Blocks' containment reference list feature. + * + * + * @generated + */ + EReference THREAD__BLOCKS = eINSTANCE.getThread_Blocks(); + + /** + * The meta object literal for the 'Channels' reference list feature. + * + * + * @generated + */ + EReference THREAD__CHANNELS = eINSTANCE.getThread_Channels(); + + /** + * The meta object literal for the 'Cycles' attribute feature. + * + * + * @generated + */ + EAttribute THREAD__CYCLES = eINSTANCE.getThread_Cycles(); + + /** + * The meta object literal for the 'Current Instruction' reference feature. + * + * + * @generated + */ + EReference THREAD__CURRENT_INSTRUCTION = eINSTANCE.getThread_CurrentInstruction(); + + /** + * The meta object literal for the 'First' reference feature. + * + * + * @generated + */ + EReference THREAD__FIRST = eINSTANCE.getThread_First(); + + /** + * The meta object literal for the 'Last' reference feature. + * + * + * @generated + */ + EReference THREAD__LAST = eINSTANCE.getThread_Last(); + + /** + * The meta object literal for the '{@link fr.obeo.dsl.arduino.impl.ChannelImpl Channel}' class. + * + * + * @see fr.obeo.dsl.arduino.impl.ChannelImpl + * @see fr.obeo.dsl.arduino.impl.ArduinoPackageImpl#getChannel() + * @generated + */ + EClass CHANNEL = eINSTANCE.getChannel(); + + /** + * The meta object literal for the 'Source' reference feature. + * + * + * @generated + */ + EReference CHANNEL__SOURCE = eINSTANCE.getChannel_Source(); + + /** + * The meta object literal for the 'Target' reference feature. + * + * + * @generated + */ + EReference CHANNEL__TARGET = eINSTANCE.getChannel_Target(); + + /** + * The meta object literal for the 'In Rate' attribute feature. + * + * + * @generated + */ + EAttribute CHANNEL__IN_RATE = eINSTANCE.getChannel_InRate(); + + /** + * The meta object literal for the 'Out Rate' attribute feature. + * + * + * @generated + */ + EAttribute CHANNEL__OUT_RATE = eINSTANCE.getChannel_OutRate(); + + /** + * The meta object literal for the 'Capacity' attribute feature. + * + * + * @generated + */ + EAttribute CHANNEL__CAPACITY = eINSTANCE.getChannel_Capacity(); + + /** + * The meta object literal for the 'Current Size' attribute feature. + * + * + * @generated + */ + EAttribute CHANNEL__CURRENT_SIZE = eINSTANCE.getChannel_CurrentSize(); + + /** + * The meta object literal for the '{@link fr.obeo.dsl.arduino.impl.LinkImpl Link}' class. + * + * + * @see fr.obeo.dsl.arduino.impl.LinkImpl + * @see fr.obeo.dsl.arduino.impl.ArduinoPackageImpl#getLink() + * @generated + */ + EClass LINK = eINSTANCE.getLink(); + + /** + * The meta object literal for the 'In Board' reference feature. + * + * + * @generated + */ + EReference LINK__IN_BOARD = eINSTANCE.getLink_InBoard(); + + /** + * The meta object literal for the 'Out Board' reference feature. + * + * + * @generated + */ + EReference LINK__OUT_BOARD = eINSTANCE.getLink_OutBoard(); + + /** + * The meta object literal for the '{@link fr.obeo.dsl.arduino.impl.SynchronizationBlockImpl Synchronization Block}' class. + * + * + * @see fr.obeo.dsl.arduino.impl.SynchronizationBlockImpl + * @see fr.obeo.dsl.arduino.impl.ArduinoPackageImpl#getSynchronizationBlock() + * @generated + */ + EClass SYNCHRONIZATION_BLOCK = eINSTANCE.getSynchronizationBlock(); + + /** + * The meta object literal for the 'Next' reference feature. + * + * + * @generated + */ + EReference SYNCHRONIZATION_BLOCK__NEXT = eINSTANCE.getSynchronizationBlock_Next(); + + /** + * The meta object literal for the 'Previous' reference feature. + * + * + * @generated + */ + EReference SYNCHRONIZATION_BLOCK__PREVIOUS = eINSTANCE.getSynchronizationBlock_Previous(); + + /** + * The meta object literal for the '{@link fr.obeo.dsl.arduino.impl.InstructionBlockImpl Instruction Block}' class. + * + * + * @see fr.obeo.dsl.arduino.impl.InstructionBlockImpl + * @see fr.obeo.dsl.arduino.impl.ArduinoPackageImpl#getInstructionBlock() + * @generated + */ + EClass INSTRUCTION_BLOCK = eINSTANCE.getInstructionBlock(); + + /** + * The meta object literal for the 'Instructions' containment reference list feature. + * + * + * @generated + */ + EReference INSTRUCTION_BLOCK__INSTRUCTIONS = eINSTANCE.getInstructionBlock_Instructions(); + + /** + * The meta object literal for the 'Next' reference feature. + * + * + * @generated + */ + EReference INSTRUCTION_BLOCK__NEXT = eINSTANCE.getInstructionBlock_Next(); + + /** + * The meta object literal for the 'Previous' reference feature. + * + * + * @generated + */ + EReference INSTRUCTION_BLOCK__PREVIOUS = eINSTANCE.getInstructionBlock_Previous(); + + /** + * The meta object literal for the '{@link fr.obeo.dsl.arduino.impl.ThreadInstructionBlockImpl Thread Instruction Block}' class. + * + * + * @see fr.obeo.dsl.arduino.impl.ThreadInstructionBlockImpl + * @see fr.obeo.dsl.arduino.impl.ArduinoPackageImpl#getThreadInstructionBlock() + * @generated + */ + EClass THREAD_INSTRUCTION_BLOCK = eINSTANCE.getThreadInstructionBlock(); + + /** + * The meta object literal for the 'Thread' container reference feature. + * + * + * @generated + */ + EReference THREAD_INSTRUCTION_BLOCK__THREAD = eINSTANCE.getThreadInstructionBlock_Thread(); + + /** + * The meta object literal for the '{@link fr.obeo.dsl.arduino.Time Time}' enum. + * + * + * @see fr.obeo.dsl.arduino.Time + * @see fr.obeo.dsl.arduino.impl.ArduinoPackageImpl#getTime() + * @generated + */ + EEnum TIME = eINSTANCE.getTime(); + + /** + * The meta object literal for the '{@link fr.obeo.dsl.arduino.BinaryIntegerOperatorKind Binary Integer Operator Kind}' enum. + * + * + * @see fr.obeo.dsl.arduino.BinaryIntegerOperatorKind + * @see fr.obeo.dsl.arduino.impl.ArduinoPackageImpl#getBinaryIntegerOperatorKind() + * @generated + */ + EEnum BINARY_INTEGER_OPERATOR_KIND = eINSTANCE.getBinaryIntegerOperatorKind(); + + /** + * The meta object literal for the '{@link fr.obeo.dsl.arduino.BinaryBooleanOperatorKind Binary Boolean Operator Kind}' enum. + * + * + * @see fr.obeo.dsl.arduino.BinaryBooleanOperatorKind + * @see fr.obeo.dsl.arduino.impl.ArduinoPackageImpl#getBinaryBooleanOperatorKind() + * @generated + */ + EEnum BINARY_BOOLEAN_OPERATOR_KIND = eINSTANCE.getBinaryBooleanOperatorKind(); + + /** + * The meta object literal for the '{@link fr.obeo.dsl.arduino.UnaryIntegerOperatorKind Unary Integer Operator Kind}' enum. + * + * + * @see fr.obeo.dsl.arduino.UnaryIntegerOperatorKind + * @see fr.obeo.dsl.arduino.impl.ArduinoPackageImpl#getUnaryIntegerOperatorKind() + * @generated + */ + EEnum UNARY_INTEGER_OPERATOR_KIND = eINSTANCE.getUnaryIntegerOperatorKind(); + + /** + * The meta object literal for the '{@link fr.obeo.dsl.arduino.UnaryBooleanOperatorKind Unary Boolean Operator Kind}' enum. + * + * + * @see fr.obeo.dsl.arduino.UnaryBooleanOperatorKind + * @see fr.obeo.dsl.arduino.impl.ArduinoPackageImpl#getUnaryBooleanOperatorKind() + * @generated + */ + EEnum UNARY_BOOLEAN_OPERATOR_KIND = eINSTANCE.getUnaryBooleanOperatorKind(); + + } + +} //ArduinoPackage diff --git a/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino/src-gen/fr/obeo/dsl/arduino/Assignment.java b/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino/src-gen/fr/obeo/dsl/arduino/Assignment.java new file mode 100644 index 00000000..a8fca7a1 --- /dev/null +++ b/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino/src-gen/fr/obeo/dsl/arduino/Assignment.java @@ -0,0 +1,57 @@ +/** + * Copyright (c) 2013 Obeo. + * 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: + * Obeo - initial API and implementation + */ +package fr.obeo.dsl.arduino; + + +/** + * + * A representation of the model object 'Assignment'. + * + * + *

+ * The following features are supported: + *

    + *
  • {@link fr.obeo.dsl.arduino.Assignment#getOperand Operand}
  • + *
+ *

+ * + * @see fr.obeo.dsl.arduino.ArduinoPackage#getAssignment() + * @model abstract="true" + * @generated + */ +public interface Assignment extends Instruction { + /** + * Returns the value of the 'Operand' containment reference. + * + *

+ * If the meaning of the 'Operand' containment reference isn't clear, + * there really should be more of a description here... + *

+ * + * @return the value of the 'Operand' containment reference. + * @see #setOperand(Expression) + * @see fr.obeo.dsl.arduino.ArduinoPackage#getAssignment_Operand() + * @model containment="true" required="true" + * @generated + */ + Expression getOperand(); + + /** + * Sets the value of the '{@link fr.obeo.dsl.arduino.Assignment#getOperand Operand}' containment reference. + * + * + * @param value the new value of the 'Operand' containment reference. + * @see #getOperand() + * @generated + */ + void setOperand(Expression value); + +} // Assignment diff --git a/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino/src-gen/fr/obeo/dsl/arduino/BinaryBooleanExpression.java b/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino/src-gen/fr/obeo/dsl/arduino/BinaryBooleanExpression.java new file mode 100644 index 00000000..d2e4eff6 --- /dev/null +++ b/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino/src-gen/fr/obeo/dsl/arduino/BinaryBooleanExpression.java @@ -0,0 +1,60 @@ +/** + * Copyright (c) 2013 Obeo. + * 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: + * Obeo - initial API and implementation + */ +package fr.obeo.dsl.arduino; + + +/** + * + * A representation of the model object 'Binary Boolean Expression'. + * + * + *

+ * The following features are supported: + *

    + *
  • {@link fr.obeo.dsl.arduino.BinaryBooleanExpression#getOperator Operator}
  • + *
+ *

+ * + * @see fr.obeo.dsl.arduino.ArduinoPackage#getBinaryBooleanExpression() + * @model + * @generated + */ +public interface BinaryBooleanExpression extends BinaryExpression, BooleanExpression { + /** + * Returns the value of the 'Operator' attribute. + * The literals are from the enumeration {@link fr.obeo.dsl.arduino.BinaryBooleanOperatorKind}. + * + *

+ * If the meaning of the 'Operator' attribute isn't clear, + * there really should be more of a description here... + *

+ * + * @return the value of the 'Operator' attribute. + * @see fr.obeo.dsl.arduino.BinaryBooleanOperatorKind + * @see #setOperator(BinaryBooleanOperatorKind) + * @see fr.obeo.dsl.arduino.ArduinoPackage#getBinaryBooleanExpression_Operator() + * @model + * @generated + */ + BinaryBooleanOperatorKind getOperator(); + + /** + * Sets the value of the '{@link fr.obeo.dsl.arduino.BinaryBooleanExpression#getOperator Operator}' attribute. + * + * + * @param value the new value of the 'Operator' attribute. + * @see fr.obeo.dsl.arduino.BinaryBooleanOperatorKind + * @see #getOperator() + * @generated + */ + void setOperator(BinaryBooleanOperatorKind value); + +} // BinaryBooleanExpression diff --git a/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino/src-gen/fr/obeo/dsl/arduino/BinaryBooleanOperatorKind.java b/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino/src-gen/fr/obeo/dsl/arduino/BinaryBooleanOperatorKind.java new file mode 100644 index 00000000..363dabb2 --- /dev/null +++ b/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino/src-gen/fr/obeo/dsl/arduino/BinaryBooleanOperatorKind.java @@ -0,0 +1,378 @@ +/** + * Copyright (c) 2013 Obeo. + * 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: + * Obeo - initial API and implementation + */ +package fr.obeo.dsl.arduino; + +import java.util.Arrays; +import java.util.Collections; +import java.util.List; + +import org.eclipse.emf.common.util.Enumerator; + +/** + * + * A representation of the literals of the enumeration 'Binary Boolean Operator Kind', + * and utility methods for working with them. + * + * @see fr.obeo.dsl.arduino.ArduinoPackage#getBinaryBooleanOperatorKind() + * @model + * @generated + */ +public enum BinaryBooleanOperatorKind implements Enumerator { + /** + * The 'Inf' literal object. + * + * + * @see #INF_VALUE + * @generated + * @ordered + */ + INF(0, "inf", "inf"), + + /** + * The 'Sup' literal object. + * + * + * @see #SUP_VALUE + * @generated + * @ordered + */ + SUP(1, "sup", "sup"), + + /** + * The 'Inf Or Equal' literal object. + * + * + * @see #INF_OR_EQUAL_VALUE + * @generated + * @ordered + */ + INF_OR_EQUAL(2, "infOrEqual", "infOrEqual"), + + /** + * The 'Sup Or Equal' literal object. + * + * + * @see #SUP_OR_EQUAL_VALUE + * @generated + * @ordered + */ + SUP_OR_EQUAL(3, "supOrEqual", "supOrEqual"), + + /** + * The 'Equal' literal object. + * + * + * @see #EQUAL_VALUE + * @generated + * @ordered + */ + EQUAL(4, "equal", "equal"), + + /** + * The 'And' literal object. + * + * + * @see #AND_VALUE + * @generated + * @ordered + */ + AND(5, "and", "and"), + + /** + * The 'Or' literal object. + * + * + * @see #OR_VALUE + * @generated + * @ordered + */ + OR(6, "or", "or"), + + /** + * The 'Different' literal object. + * + * + * @see #DIFFERENT_VALUE + * @generated + * @ordered + */ + DIFFERENT(7, "Different", "Different"); + + /** + * The 'Inf' literal value. + * + *

+ * If the meaning of 'Inf' literal object isn't clear, + * there really should be more of a description here... + *

+ * + * @see #INF + * @model name="inf" + * @generated + * @ordered + */ + public static final int INF_VALUE = 0; + + /** + * The 'Sup' literal value. + * + *

+ * If the meaning of 'Sup' literal object isn't clear, + * there really should be more of a description here... + *

+ * + * @see #SUP + * @model name="sup" + * @generated + * @ordered + */ + public static final int SUP_VALUE = 1; + + /** + * The 'Inf Or Equal' literal value. + * + *

+ * If the meaning of 'Inf Or Equal' literal object isn't clear, + * there really should be more of a description here... + *

+ * + * @see #INF_OR_EQUAL + * @model name="infOrEqual" + * @generated + * @ordered + */ + public static final int INF_OR_EQUAL_VALUE = 2; + + /** + * The 'Sup Or Equal' literal value. + * + *

+ * If the meaning of 'Sup Or Equal' literal object isn't clear, + * there really should be more of a description here... + *

+ * + * @see #SUP_OR_EQUAL + * @model name="supOrEqual" + * @generated + * @ordered + */ + public static final int SUP_OR_EQUAL_VALUE = 3; + + /** + * The 'Equal' literal value. + * + *

+ * If the meaning of 'Equal' literal object isn't clear, + * there really should be more of a description here... + *

+ * + * @see #EQUAL + * @model name="equal" + * @generated + * @ordered + */ + public static final int EQUAL_VALUE = 4; + + /** + * The 'And' literal value. + * + *

+ * If the meaning of 'And' literal object isn't clear, + * there really should be more of a description here... + *

+ * + * @see #AND + * @model name="and" + * @generated + * @ordered + */ + public static final int AND_VALUE = 5; + + /** + * The 'Or' literal value. + * + *

+ * If the meaning of 'Or' literal object isn't clear, + * there really should be more of a description here... + *

+ * + * @see #OR + * @model name="or" + * @generated + * @ordered + */ + public static final int OR_VALUE = 6; + + /** + * The 'Different' literal value. + * + *

+ * If the meaning of 'Different' literal object isn't clear, + * there really should be more of a description here... + *

+ * + * @see #DIFFERENT + * @model name="Different" + * @generated + * @ordered + */ + public static final int DIFFERENT_VALUE = 7; + + /** + * An array of all the 'Binary Boolean Operator Kind' enumerators. + * + * + * @generated + */ + private static final BinaryBooleanOperatorKind[] VALUES_ARRAY = + new BinaryBooleanOperatorKind[] { + INF, + SUP, + INF_OR_EQUAL, + SUP_OR_EQUAL, + EQUAL, + AND, + OR, + DIFFERENT, + }; + + /** + * A public read-only list of all the 'Binary Boolean Operator Kind' enumerators. + * + * + * @generated + */ + public static final List VALUES = Collections.unmodifiableList(Arrays.asList(VALUES_ARRAY)); + + /** + * Returns the 'Binary Boolean Operator Kind' literal with the specified literal value. + * + * + * @generated + */ + public static BinaryBooleanOperatorKind get(String literal) { + for (int i = 0; i < VALUES_ARRAY.length; ++i) { + BinaryBooleanOperatorKind result = VALUES_ARRAY[i]; + if (result.toString().equals(literal)) { + return result; + } + } + return null; + } + + /** + * Returns the 'Binary Boolean Operator Kind' literal with the specified name. + * + * + * @generated + */ + public static BinaryBooleanOperatorKind getByName(String name) { + for (int i = 0; i < VALUES_ARRAY.length; ++i) { + BinaryBooleanOperatorKind result = VALUES_ARRAY[i]; + if (result.getName().equals(name)) { + return result; + } + } + return null; + } + + /** + * Returns the 'Binary Boolean Operator Kind' literal with the specified integer value. + * + * + * @generated + */ + public static BinaryBooleanOperatorKind get(int value) { + switch (value) { + case INF_VALUE: return INF; + case SUP_VALUE: return SUP; + case INF_OR_EQUAL_VALUE: return INF_OR_EQUAL; + case SUP_OR_EQUAL_VALUE: return SUP_OR_EQUAL; + case EQUAL_VALUE: return EQUAL; + case AND_VALUE: return AND; + case OR_VALUE: return OR; + case DIFFERENT_VALUE: return DIFFERENT; + } + return null; + } + + /** + * + * + * @generated + */ + private final int value; + + /** + * + * + * @generated + */ + private final String name; + + /** + * + * + * @generated + */ + private final String literal; + + /** + * Only this class can construct instances. + * + * + * @generated + */ + private BinaryBooleanOperatorKind(int value, String name, String literal) { + this.value = value; + this.name = name; + this.literal = literal; + } + + /** + * + * + * @generated + */ + public int getValue() { + return value; + } + + /** + * + * + * @generated + */ + public String getName() { + return name; + } + + /** + * + * + * @generated + */ + public String getLiteral() { + return literal; + } + + /** + * Returns the literal value of the enumerator, which is its string representation. + * + * + * @generated + */ + @Override + public String toString() { + return literal; + } + +} //BinaryBooleanOperatorKind diff --git a/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino/src-gen/fr/obeo/dsl/arduino/BinaryExpression.java b/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino/src-gen/fr/obeo/dsl/arduino/BinaryExpression.java new file mode 100644 index 00000000..3a72c0a8 --- /dev/null +++ b/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino/src-gen/fr/obeo/dsl/arduino/BinaryExpression.java @@ -0,0 +1,84 @@ +/** + * Copyright (c) 2013 Obeo. + * 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: + * Obeo - initial API and implementation + */ +package fr.obeo.dsl.arduino; + + +/** + * + * A representation of the model object 'Binary Expression'. + * + * + *

+ * The following features are supported: + *

    + *
  • {@link fr.obeo.dsl.arduino.BinaryExpression#getLeft Left}
  • + *
  • {@link fr.obeo.dsl.arduino.BinaryExpression#getRight Right}
  • + *
+ *

+ * + * @see fr.obeo.dsl.arduino.ArduinoPackage#getBinaryExpression() + * @model abstract="true" + * @generated + */ +public interface BinaryExpression extends Expression { + /** + * Returns the value of the 'Left' containment reference. + * + *

+ * If the meaning of the 'Left' containment reference isn't clear, + * there really should be more of a description here... + *

+ * + * @return the value of the 'Left' containment reference. + * @see #setLeft(Expression) + * @see fr.obeo.dsl.arduino.ArduinoPackage#getBinaryExpression_Left() + * @model containment="true" required="true" + * @generated + */ + Expression getLeft(); + + /** + * Sets the value of the '{@link fr.obeo.dsl.arduino.BinaryExpression#getLeft Left}' containment reference. + * + * + * @param value the new value of the 'Left' containment reference. + * @see #getLeft() + * @generated + */ + void setLeft(Expression value); + + /** + * Returns the value of the 'Right' containment reference. + * + *

+ * If the meaning of the 'Right' containment reference isn't clear, + * there really should be more of a description here... + *

+ * + * @return the value of the 'Right' containment reference. + * @see #setRight(Expression) + * @see fr.obeo.dsl.arduino.ArduinoPackage#getBinaryExpression_Right() + * @model containment="true" + * @generated + */ + Expression getRight(); + + /** + * Sets the value of the '{@link fr.obeo.dsl.arduino.BinaryExpression#getRight Right}' containment reference. + * + * + * @param value the new value of the 'Right' containment reference. + * @see #getRight() + * @generated + */ + void setRight(Expression value); + +} // BinaryExpression diff --git a/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino/src-gen/fr/obeo/dsl/arduino/BinaryIntegerExpression.java b/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino/src-gen/fr/obeo/dsl/arduino/BinaryIntegerExpression.java new file mode 100644 index 00000000..84d0b6f5 --- /dev/null +++ b/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino/src-gen/fr/obeo/dsl/arduino/BinaryIntegerExpression.java @@ -0,0 +1,60 @@ +/** + * Copyright (c) 2013 Obeo. + * 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: + * Obeo - initial API and implementation + */ +package fr.obeo.dsl.arduino; + + +/** + * + * A representation of the model object 'Binary Integer Expression'. + * + * + *

+ * The following features are supported: + *

    + *
  • {@link fr.obeo.dsl.arduino.BinaryIntegerExpression#getOperator Operator}
  • + *
+ *

+ * + * @see fr.obeo.dsl.arduino.ArduinoPackage#getBinaryIntegerExpression() + * @model + * @generated + */ +public interface BinaryIntegerExpression extends BinaryExpression, IntegerExpression { + /** + * Returns the value of the 'Operator' attribute. + * The literals are from the enumeration {@link fr.obeo.dsl.arduino.BinaryIntegerOperatorKind}. + * + *

+ * If the meaning of the 'Operator' attribute isn't clear, + * there really should be more of a description here... + *

+ * + * @return the value of the 'Operator' attribute. + * @see fr.obeo.dsl.arduino.BinaryIntegerOperatorKind + * @see #setOperator(BinaryIntegerOperatorKind) + * @see fr.obeo.dsl.arduino.ArduinoPackage#getBinaryIntegerExpression_Operator() + * @model + * @generated + */ + BinaryIntegerOperatorKind getOperator(); + + /** + * Sets the value of the '{@link fr.obeo.dsl.arduino.BinaryIntegerExpression#getOperator Operator}' attribute. + * + * + * @param value the new value of the 'Operator' attribute. + * @see fr.obeo.dsl.arduino.BinaryIntegerOperatorKind + * @see #getOperator() + * @generated + */ + void setOperator(BinaryIntegerOperatorKind value); + +} // BinaryIntegerExpression diff --git a/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino/src-gen/fr/obeo/dsl/arduino/BinaryIntegerOperatorKind.java b/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino/src-gen/fr/obeo/dsl/arduino/BinaryIntegerOperatorKind.java new file mode 100644 index 00000000..5f142250 --- /dev/null +++ b/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino/src-gen/fr/obeo/dsl/arduino/BinaryIntegerOperatorKind.java @@ -0,0 +1,351 @@ +/** + * Copyright (c) 2013 Obeo. + * 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: + * Obeo - initial API and implementation + */ +package fr.obeo.dsl.arduino; + +import java.util.Arrays; +import java.util.Collections; +import java.util.List; + +import org.eclipse.emf.common.util.Enumerator; + +/** + * + * A representation of the literals of the enumeration 'Binary Integer Operator Kind', + * and utility methods for working with them. + * + * @see fr.obeo.dsl.arduino.ArduinoPackage#getBinaryIntegerOperatorKind() + * @model + * @generated + */ +public enum BinaryIntegerOperatorKind implements Enumerator { + /** + * The 'Minus' literal object. + * + * + * @see #MINUS_VALUE + * @generated + * @ordered + */ + MINUS(0, "minus", "minus"), + + /** + * The 'Plus' literal object. + * + * + * @see #PLUS_VALUE + * @generated + * @ordered + */ + PLUS(1, "plus", "plus"), + + /** + * The 'Mul' literal object. + * + * + * @see #MUL_VALUE + * @generated + * @ordered + */ + MUL(2, "mul", "mul"), + + /** + * The 'Div' literal object. + * + * + * @see #DIV_VALUE + * @generated + * @ordered + */ + DIV(3, "div", "div"), + + /** + * The 'Min' literal object. + * + * + * @see #MIN_VALUE + * @generated + * @ordered + */ + MIN(4, "min", "min"), + + /** + * The 'Max' literal object. + * + * + * @see #MAX_VALUE + * @generated + * @ordered + */ + MAX(5, "max", "max"), + + /** + * The 'Pourcent' literal object. + * + * + * @see #POURCENT_VALUE + * @generated + * @ordered + */ + POURCENT(6, "pourcent", "pourcent"); + + /** + * The 'Minus' literal value. + * + *

+ * If the meaning of 'Minus' literal object isn't clear, + * there really should be more of a description here... + *

+ * + * @see #MINUS + * @model name="minus" + * @generated + * @ordered + */ + public static final int MINUS_VALUE = 0; + + /** + * The 'Plus' literal value. + * + *

+ * If the meaning of 'Plus' literal object isn't clear, + * there really should be more of a description here... + *

+ * + * @see #PLUS + * @model name="plus" + * @generated + * @ordered + */ + public static final int PLUS_VALUE = 1; + + /** + * The 'Mul' literal value. + * + *

+ * If the meaning of 'Mul' literal object isn't clear, + * there really should be more of a description here... + *

+ * + * @see #MUL + * @model name="mul" + * @generated + * @ordered + */ + public static final int MUL_VALUE = 2; + + /** + * The 'Div' literal value. + * + *

+ * If the meaning of 'Div' literal object isn't clear, + * there really should be more of a description here... + *

+ * + * @see #DIV + * @model name="div" + * @generated + * @ordered + */ + public static final int DIV_VALUE = 3; + + /** + * The 'Min' literal value. + * + *

+ * If the meaning of 'Min' literal object isn't clear, + * there really should be more of a description here... + *

+ * + * @see #MIN + * @model name="min" + * @generated + * @ordered + */ + public static final int MIN_VALUE = 4; + + /** + * The 'Max' literal value. + * + *

+ * If the meaning of 'Max' literal object isn't clear, + * there really should be more of a description here... + *

+ * + * @see #MAX + * @model name="max" + * @generated + * @ordered + */ + public static final int MAX_VALUE = 5; + + /** + * The 'Pourcent' literal value. + * + *

+ * If the meaning of 'Pourcent' literal object isn't clear, + * there really should be more of a description here... + *

+ * + * @see #POURCENT + * @model name="pourcent" + * @generated + * @ordered + */ + public static final int POURCENT_VALUE = 6; + + /** + * An array of all the 'Binary Integer Operator Kind' enumerators. + * + * + * @generated + */ + private static final BinaryIntegerOperatorKind[] VALUES_ARRAY = + new BinaryIntegerOperatorKind[] { + MINUS, + PLUS, + MUL, + DIV, + MIN, + MAX, + POURCENT, + }; + + /** + * A public read-only list of all the 'Binary Integer Operator Kind' enumerators. + * + * + * @generated + */ + public static final List VALUES = Collections.unmodifiableList(Arrays.asList(VALUES_ARRAY)); + + /** + * Returns the 'Binary Integer Operator Kind' literal with the specified literal value. + * + * + * @generated + */ + public static BinaryIntegerOperatorKind get(String literal) { + for (int i = 0; i < VALUES_ARRAY.length; ++i) { + BinaryIntegerOperatorKind result = VALUES_ARRAY[i]; + if (result.toString().equals(literal)) { + return result; + } + } + return null; + } + + /** + * Returns the 'Binary Integer Operator Kind' literal with the specified name. + * + * + * @generated + */ + public static BinaryIntegerOperatorKind getByName(String name) { + for (int i = 0; i < VALUES_ARRAY.length; ++i) { + BinaryIntegerOperatorKind result = VALUES_ARRAY[i]; + if (result.getName().equals(name)) { + return result; + } + } + return null; + } + + /** + * Returns the 'Binary Integer Operator Kind' literal with the specified integer value. + * + * + * @generated + */ + public static BinaryIntegerOperatorKind get(int value) { + switch (value) { + case MINUS_VALUE: return MINUS; + case PLUS_VALUE: return PLUS; + case MUL_VALUE: return MUL; + case DIV_VALUE: return DIV; + case MIN_VALUE: return MIN; + case MAX_VALUE: return MAX; + case POURCENT_VALUE: return POURCENT; + } + return null; + } + + /** + * + * + * @generated + */ + private final int value; + + /** + * + * + * @generated + */ + private final String name; + + /** + * + * + * @generated + */ + private final String literal; + + /** + * Only this class can construct instances. + * + * + * @generated + */ + private BinaryIntegerOperatorKind(int value, String name, String literal) { + this.value = value; + this.name = name; + this.literal = literal; + } + + /** + * + * + * @generated + */ + public int getValue() { + return value; + } + + /** + * + * + * @generated + */ + public String getName() { + return name; + } + + /** + * + * + * @generated + */ + public String getLiteral() { + return literal; + } + + /** + * Returns the literal value of the enumerator, which is its string representation. + * + * + * @generated + */ + @Override + public String toString() { + return literal; + } + +} //BinaryIntegerOperatorKind diff --git a/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino/src-gen/fr/obeo/dsl/arduino/Block.java b/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino/src-gen/fr/obeo/dsl/arduino/Block.java new file mode 100644 index 00000000..39314e34 --- /dev/null +++ b/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino/src-gen/fr/obeo/dsl/arduino/Block.java @@ -0,0 +1,79 @@ +/** + * Copyright (c) 2013 Obeo. + * 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: + * Obeo - initial API and implementation + */ +package fr.obeo.dsl.arduino; + +import org.eclipse.emf.common.util.EList; + +import org.eclipse.emf.ecore.EObject; + +/** + * + * A representation of the model object 'Block'. + * + * + *

+ * The following features are supported: + *

    + *
  • {@link fr.obeo.dsl.arduino.Block#getAbstractInstructionBlocks Abstract Instruction Blocks}
  • + *
  • {@link fr.obeo.dsl.arduino.Block#getThread Thread}
  • + *
+ *

+ * + * @see fr.obeo.dsl.arduino.ArduinoPackage#getBlock() + * @model + * @generated + */ +public interface Block extends EObject { + /** + * Returns the value of the 'Abstract Instruction Blocks' containment reference list. + * The list contents are of type {@link fr.obeo.dsl.arduino.AbstractInstructionBlock}. + * + *

+ * If the meaning of the 'Abstract Instruction Blocks' containment reference list isn't clear, + * there really should be more of a description here... + *

+ * + * @return the value of the 'Abstract Instruction Blocks' containment reference list. + * @see fr.obeo.dsl.arduino.ArduinoPackage#getBlock_AbstractInstructionBlocks() + * @model containment="true" + * @generated + */ + EList getAbstractInstructionBlocks(); + + /** + * Returns the value of the 'Thread' container reference. + * It is bidirectional and its opposite is '{@link fr.obeo.dsl.arduino.Thread#getBlock Block}'. + * + *

+ * If the meaning of the 'Thread' container reference isn't clear, + * there really should be more of a description here... + *

+ * + * @return the value of the 'Thread' container reference. + * @see #setThread(fr.obeo.dsl.arduino.Thread) + * @see fr.obeo.dsl.arduino.ArduinoPackage#getBlock_Thread() + * @see fr.obeo.dsl.arduino.Thread#getBlock + * @model opposite="block" transient="false" + * @generated + */ + fr.obeo.dsl.arduino.Thread getThread(); + + /** + * Sets the value of the '{@link fr.obeo.dsl.arduino.Block#getThread Thread}' container reference. + * + * + * @param value the new value of the 'Thread' container reference. + * @see #getThread() + * @generated + */ + void setThread(fr.obeo.dsl.arduino.Thread value); + +} // Block diff --git a/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino/src-gen/fr/obeo/dsl/arduino/Board.java b/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino/src-gen/fr/obeo/dsl/arduino/Board.java new file mode 100644 index 00000000..82016c36 --- /dev/null +++ b/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino/src-gen/fr/obeo/dsl/arduino/Board.java @@ -0,0 +1,94 @@ +/** + * Copyright (c) 2013 Obeo. + * 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: + * Obeo - initial API and implementation + */ +package fr.obeo.dsl.arduino; + +import org.eclipse.emf.common.util.EList; + + +/** + * + * A representation of the model object 'Board'. + * + * + *

+ * The following features are supported: + *

    + *
  • {@link fr.obeo.dsl.arduino.Board#getProject Project}
  • + *
  • {@link fr.obeo.dsl.arduino.Board#getThreads Threads}
  • + *
+ *

+ * + * @see fr.obeo.dsl.arduino.ArduinoPackage#getBoard() + * @model abstract="true" + * @generated + */ +public interface Board extends NamedElement { + /** + * Returns the value of the 'Project' container reference. + * It is bidirectional and its opposite is '{@link fr.obeo.dsl.arduino.Project#getBoards Boards}'. + * + *

+ * If the meaning of the 'Project' container reference isn't clear, + * there really should be more of a description here... + *

+ * + * @return the value of the 'Project' container reference. + * @see #setProject(Project) + * @see fr.obeo.dsl.arduino.ArduinoPackage#getBoard_Project() + * @see fr.obeo.dsl.arduino.Project#getBoards + * @model opposite="boards" required="true" transient="false" + * @generated + */ + Project getProject(); + + /** + * Sets the value of the '{@link fr.obeo.dsl.arduino.Board#getProject Project}' container reference. + * + * + * @param value the new value of the 'Project' container reference. + * @see #getProject() + * @generated + */ + void setProject(Project value); + + /** + * Returns the value of the 'Threads' reference list. + * The list contents are of type {@link fr.obeo.dsl.arduino.Thread}. + * + *

+ * If the meaning of the 'Threads' reference list isn't clear, + * there really should be more of a description here... + *

+ * + * @return the value of the 'Threads' reference list. + * @see fr.obeo.dsl.arduino.ArduinoPackage#getBoard_Threads() + * @model + * @generated + */ + EList getThreads(); + + /** + * + * + * @model + * @generated + */ + void execute(); + + /** + * + * + * @model + * @generated + */ + void idle(); + +} // Board diff --git a/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino/src-gen/fr/obeo/dsl/arduino/BooleanConstant.java b/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino/src-gen/fr/obeo/dsl/arduino/BooleanConstant.java new file mode 100644 index 00000000..42095930 --- /dev/null +++ b/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino/src-gen/fr/obeo/dsl/arduino/BooleanConstant.java @@ -0,0 +1,58 @@ +/** + * Copyright (c) 2013 Obeo. + * 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: + * Obeo - initial API and implementation + */ +package fr.obeo.dsl.arduino; + + +/** + * + * A representation of the model object 'Boolean Constant'. + * + * + *

+ * The following features are supported: + *

    + *
  • {@link fr.obeo.dsl.arduino.BooleanConstant#isValue Value}
  • + *
+ *

+ * + * @see fr.obeo.dsl.arduino.ArduinoPackage#getBooleanConstant() + * @model + * @generated + */ +public interface BooleanConstant extends Constant, BooleanExpression { + /** + * Returns the value of the 'Value' attribute. + * The default value is "false". + * + *

+ * If the meaning of the 'Value' attribute isn't clear, + * there really should be more of a description here... + *

+ * + * @return the value of the 'Value' attribute. + * @see #setValue(boolean) + * @see fr.obeo.dsl.arduino.ArduinoPackage#getBooleanConstant_Value() + * @model default="false" + * @generated + */ + boolean isValue(); + + /** + * Sets the value of the '{@link fr.obeo.dsl.arduino.BooleanConstant#isValue Value}' attribute. + * + * + * @param value the new value of the 'Value' attribute. + * @see #isValue() + * @generated + */ + void setValue(boolean value); + +} // BooleanConstant diff --git a/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino/src-gen/fr/obeo/dsl/arduino/BooleanExpression.java b/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino/src-gen/fr/obeo/dsl/arduino/BooleanExpression.java new file mode 100644 index 00000000..5be9ca59 --- /dev/null +++ b/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino/src-gen/fr/obeo/dsl/arduino/BooleanExpression.java @@ -0,0 +1,25 @@ +/** + * Copyright (c) 2013 Obeo. + * 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: + * Obeo - initial API and implementation + */ +package fr.obeo.dsl.arduino; + + +/** + * + * A representation of the model object 'Boolean Expression'. + * + * + * + * @see fr.obeo.dsl.arduino.ArduinoPackage#getBooleanExpression() + * @model abstract="true" + * @generated + */ +public interface BooleanExpression extends Expression { +} // BooleanExpression diff --git a/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino/src-gen/fr/obeo/dsl/arduino/BooleanModuleGet.java b/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino/src-gen/fr/obeo/dsl/arduino/BooleanModuleGet.java new file mode 100644 index 00000000..401e4a91 --- /dev/null +++ b/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino/src-gen/fr/obeo/dsl/arduino/BooleanModuleGet.java @@ -0,0 +1,25 @@ +/** + * Copyright (c) 2013 Obeo. + * 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: + * Obeo - initial API and implementation + */ +package fr.obeo.dsl.arduino; + + +/** + * + * A representation of the model object 'Boolean Module Get'. + * + * + * + * @see fr.obeo.dsl.arduino.ArduinoPackage#getBooleanModuleGet() + * @model + * @generated + */ +public interface BooleanModuleGet extends ModuleGet, BooleanExpression { +} // BooleanModuleGet diff --git a/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino/src-gen/fr/obeo/dsl/arduino/BooleanVariable.java b/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino/src-gen/fr/obeo/dsl/arduino/BooleanVariable.java new file mode 100644 index 00000000..e4cb0068 --- /dev/null +++ b/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino/src-gen/fr/obeo/dsl/arduino/BooleanVariable.java @@ -0,0 +1,86 @@ +/** + * Copyright (c) 2013 Obeo. + * 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: + * Obeo - initial API and implementation + */ +package fr.obeo.dsl.arduino; + + +/** + * + * A representation of the model object 'Boolean Variable'. + * + * + *

+ * The following features are supported: + *

    + *
  • {@link fr.obeo.dsl.arduino.BooleanVariable#isInitialValue Initial Value}
  • + *
  • {@link fr.obeo.dsl.arduino.BooleanVariable#getValue Value}
  • + *
+ *

+ * + * @see fr.obeo.dsl.arduino.ArduinoPackage#getBooleanVariable() + * @model + * @generated + */ +public interface BooleanVariable extends Variable, BooleanExpression { + /** + * Returns the value of the 'Initial Value' attribute. + * The default value is "false". + * + *

+ * If the meaning of the 'Initial Value' attribute isn't clear, + * there really should be more of a description here... + *

+ * + * @return the value of the 'Initial Value' attribute. + * @see #setInitialValue(boolean) + * @see fr.obeo.dsl.arduino.ArduinoPackage#getBooleanVariable_InitialValue() + * @model default="false" + * @generated + */ + boolean isInitialValue(); + + /** + * Sets the value of the '{@link fr.obeo.dsl.arduino.BooleanVariable#isInitialValue Initial Value}' attribute. + * + * + * @param value the new value of the 'Initial Value' attribute. + * @see #isInitialValue() + * @generated + */ + void setInitialValue(boolean value); + + /** + * Returns the value of the 'Value' attribute. + * The default value is "false". + * + *

+ * If the meaning of the 'Value' attribute isn't clear, + * there really should be more of a description here... + *

+ * + * @return the value of the 'Value' attribute. + * @see #setValue(Boolean) + * @see fr.obeo.dsl.arduino.ArduinoPackage#getBooleanVariable_Value() + * @model default="false" + * @generated + */ + Boolean getValue(); + + /** + * Sets the value of the '{@link fr.obeo.dsl.arduino.BooleanVariable#getValue Value}' attribute. + * + * + * @param value the new value of the 'Value' attribute. + * @see #getValue() + * @generated + */ + void setValue(Boolean value); + +} // BooleanVariable diff --git a/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino/src-gen/fr/obeo/dsl/arduino/Buzzer.java b/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino/src-gen/fr/obeo/dsl/arduino/Buzzer.java new file mode 100644 index 00000000..7e06c4f6 --- /dev/null +++ b/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino/src-gen/fr/obeo/dsl/arduino/Buzzer.java @@ -0,0 +1,25 @@ +/** + * Copyright (c) 2013 Obeo. + * 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: + * Obeo - initial API and implementation + */ +package fr.obeo.dsl.arduino; + + +/** + * + * A representation of the model object 'Buzzer'. + * + * + * + * @see fr.obeo.dsl.arduino.ArduinoPackage#getBuzzer() + * @model + * @generated + */ +public interface Buzzer extends ArduinoDigitalModule { +} // Buzzer diff --git a/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino/src-gen/fr/obeo/dsl/arduino/Channel.java b/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino/src-gen/fr/obeo/dsl/arduino/Channel.java new file mode 100644 index 00000000..35fc8a2e --- /dev/null +++ b/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino/src-gen/fr/obeo/dsl/arduino/Channel.java @@ -0,0 +1,210 @@ +/** + * Copyright (c) 2013 Obeo. + * 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: + * Obeo - initial API and implementation + */ +package fr.obeo.dsl.arduino; + + +/** + * + * A representation of the model object 'Channel'. + * + * + *

+ * The following features are supported: + *

    + *
  • {@link fr.obeo.dsl.arduino.Channel#getSource Source}
  • + *
  • {@link fr.obeo.dsl.arduino.Channel#getTarget Target}
  • + *
  • {@link fr.obeo.dsl.arduino.Channel#getInRate In Rate}
  • + *
  • {@link fr.obeo.dsl.arduino.Channel#getOutRate Out Rate}
  • + *
  • {@link fr.obeo.dsl.arduino.Channel#getCapacity Capacity}
  • + *
  • {@link fr.obeo.dsl.arduino.Channel#getCurrentSize Current Size}
  • + *
+ *

+ * + * @see fr.obeo.dsl.arduino.ArduinoPackage#getChannel() + * @model + * @generated + */ +public interface Channel extends NamedElement { + /** + * Returns the value of the 'Source' reference. + * It is bidirectional and its opposite is '{@link fr.obeo.dsl.arduino.Thread#getChannels Channels}'. + * + *

+ * If the meaning of the 'Source' reference isn't clear, + * there really should be more of a description here... + *

+ * + * @return the value of the 'Source' reference. + * @see #setSource(fr.obeo.dsl.arduino.Thread) + * @see fr.obeo.dsl.arduino.ArduinoPackage#getChannel_Source() + * @see fr.obeo.dsl.arduino.Thread#getChannels + * @model opposite="channels" required="true" + * @generated + */ + fr.obeo.dsl.arduino.Thread getSource(); + + /** + * Sets the value of the '{@link fr.obeo.dsl.arduino.Channel#getSource Source}' reference. + * + * + * @param value the new value of the 'Source' reference. + * @see #getSource() + * @generated + */ + void setSource(fr.obeo.dsl.arduino.Thread value); + + /** + * Returns the value of the 'Target' reference. + * + *

+ * If the meaning of the 'Target' reference isn't clear, + * there really should be more of a description here... + *

+ * + * @return the value of the 'Target' reference. + * @see #setTarget(fr.obeo.dsl.arduino.Thread) + * @see fr.obeo.dsl.arduino.ArduinoPackage#getChannel_Target() + * @model required="true" + * @generated + */ + fr.obeo.dsl.arduino.Thread getTarget(); + + /** + * Sets the value of the '{@link fr.obeo.dsl.arduino.Channel#getTarget Target}' reference. + * + * + * @param value the new value of the 'Target' reference. + * @see #getTarget() + * @generated + */ + void setTarget(fr.obeo.dsl.arduino.Thread value); + + /** + * Returns the value of the 'In Rate' attribute. + * + *

+ * If the meaning of the 'In Rate' attribute isn't clear, + * there really should be more of a description here... + *

+ * + * @return the value of the 'In Rate' attribute. + * @see #setInRate(int) + * @see fr.obeo.dsl.arduino.ArduinoPackage#getChannel_InRate() + * @model + * @generated + */ + int getInRate(); + + /** + * Sets the value of the '{@link fr.obeo.dsl.arduino.Channel#getInRate In Rate}' attribute. + * + * + * @param value the new value of the 'In Rate' attribute. + * @see #getInRate() + * @generated + */ + void setInRate(int value); + + /** + * Returns the value of the 'Out Rate' attribute. + * + *

+ * If the meaning of the 'Out Rate' attribute isn't clear, + * there really should be more of a description here... + *

+ * + * @return the value of the 'Out Rate' attribute. + * @see #setOutRate(int) + * @see fr.obeo.dsl.arduino.ArduinoPackage#getChannel_OutRate() + * @model + * @generated + */ + int getOutRate(); + + /** + * Sets the value of the '{@link fr.obeo.dsl.arduino.Channel#getOutRate Out Rate}' attribute. + * + * + * @param value the new value of the 'Out Rate' attribute. + * @see #getOutRate() + * @generated + */ + void setOutRate(int value); + + /** + * Returns the value of the 'Capacity' attribute. + * + *

+ * If the meaning of the 'Capacity' attribute isn't clear, + * there really should be more of a description here... + *

+ * + * @return the value of the 'Capacity' attribute. + * @see #setCapacity(int) + * @see fr.obeo.dsl.arduino.ArduinoPackage#getChannel_Capacity() + * @model + * @generated + */ + int getCapacity(); + + /** + * Sets the value of the '{@link fr.obeo.dsl.arduino.Channel#getCapacity Capacity}' attribute. + * + * + * @param value the new value of the 'Capacity' attribute. + * @see #getCapacity() + * @generated + */ + void setCapacity(int value); + + /** + * Returns the value of the 'Current Size' attribute. + * + *

+ * If the meaning of the 'Current Size' attribute isn't clear, + * there really should be more of a description here... + *

+ * + * @return the value of the 'Current Size' attribute. + * @see #setCurrentSize(int) + * @see fr.obeo.dsl.arduino.ArduinoPackage#getChannel_CurrentSize() + * @model + * @generated + */ + int getCurrentSize(); + + /** + * Sets the value of the '{@link fr.obeo.dsl.arduino.Channel#getCurrentSize Current Size}' attribute. + * + * + * @param value the new value of the 'Current Size' attribute. + * @see #getCurrentSize() + * @generated + */ + void setCurrentSize(int value); + + /** + * + * + * @model + * @generated + */ + void read(); + + /** + * + * + * @model + * @generated + */ + void write(); + +} // Channel diff --git a/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino/src-gen/fr/obeo/dsl/arduino/Constant.java b/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino/src-gen/fr/obeo/dsl/arduino/Constant.java new file mode 100644 index 00000000..c3f4d7e8 --- /dev/null +++ b/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino/src-gen/fr/obeo/dsl/arduino/Constant.java @@ -0,0 +1,25 @@ +/** + * Copyright (c) 2013 Obeo. + * 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: + * Obeo - initial API and implementation + */ +package fr.obeo.dsl.arduino; + + +/** + * + * A representation of the model object 'Constant'. + * + * + * + * @see fr.obeo.dsl.arduino.ArduinoPackage#getConstant() + * @model abstract="true" + * @generated + */ +public interface Constant extends Expression { +} // Constant diff --git a/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino/src-gen/fr/obeo/dsl/arduino/Control.java b/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino/src-gen/fr/obeo/dsl/arduino/Control.java new file mode 100644 index 00000000..b2e2b6c9 --- /dev/null +++ b/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino/src-gen/fr/obeo/dsl/arduino/Control.java @@ -0,0 +1,57 @@ +/** + * Copyright (c) 2013 Obeo. + * 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: + * Obeo - initial API and implementation + */ +package fr.obeo.dsl.arduino; + + +/** + * + * A representation of the model object 'Control'. + * + * + *

+ * The following features are supported: + *

    + *
  • {@link fr.obeo.dsl.arduino.Control#getBlock Block}
  • + *
+ *

+ * + * @see fr.obeo.dsl.arduino.ArduinoPackage#getControl() + * @model abstract="true" + * @generated + */ +public interface Control extends Instruction { + + /** + * Returns the value of the 'Block' containment reference. + * + *

+ * If the meaning of the 'Block' containment reference isn't clear, + * there really should be more of a description here... + *

+ * + * @return the value of the 'Block' containment reference. + * @see #setBlock(InstructionBlock) + * @see fr.obeo.dsl.arduino.ArduinoPackage#getControl_Block() + * @model containment="true" required="true" + * @generated + */ + InstructionBlock getBlock(); + + /** + * Sets the value of the '{@link fr.obeo.dsl.arduino.Control#getBlock Block}' containment reference. + * + * + * @param value the new value of the 'Block' containment reference. + * @see #getBlock() + * @generated + */ + void setBlock(InstructionBlock value); +} // Control diff --git a/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino/src-gen/fr/obeo/dsl/arduino/Delay.java b/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino/src-gen/fr/obeo/dsl/arduino/Delay.java new file mode 100644 index 00000000..499b0b7f --- /dev/null +++ b/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino/src-gen/fr/obeo/dsl/arduino/Delay.java @@ -0,0 +1,87 @@ +/** + * Copyright (c) 2013 Obeo. + * 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: + * Obeo - initial API and implementation + */ +package fr.obeo.dsl.arduino; + + +/** + * + * A representation of the model object 'Delay'. + * + * + *

+ * The following features are supported: + *

    + *
  • {@link fr.obeo.dsl.arduino.Delay#getUnit Unit}
  • + *
  • {@link fr.obeo.dsl.arduino.Delay#getValue Value}
  • + *
+ *

+ * + * @see fr.obeo.dsl.arduino.ArduinoPackage#getDelay() + * @model + * @generated + */ +public interface Delay extends Utilities { + /** + * Returns the value of the 'Unit' attribute. + * The literals are from the enumeration {@link fr.obeo.dsl.arduino.Time}. + * + *

+ * If the meaning of the 'Unit' attribute isn't clear, + * there really should be more of a description here... + *

+ * + * @return the value of the 'Unit' attribute. + * @see fr.obeo.dsl.arduino.Time + * @see #setUnit(Time) + * @see fr.obeo.dsl.arduino.ArduinoPackage#getDelay_Unit() + * @model + * @generated + */ + Time getUnit(); + + /** + * Sets the value of the '{@link fr.obeo.dsl.arduino.Delay#getUnit Unit}' attribute. + * + * + * @param value the new value of the 'Unit' attribute. + * @see fr.obeo.dsl.arduino.Time + * @see #getUnit() + * @generated + */ + void setUnit(Time value); + + /** + * Returns the value of the 'Value' attribute. + * + *

+ * If the meaning of the 'Value' attribute isn't clear, + * there really should be more of a description here... + *

+ * + * @return the value of the 'Value' attribute. + * @see #setValue(int) + * @see fr.obeo.dsl.arduino.ArduinoPackage#getDelay_Value() + * @model + * @generated + */ + int getValue(); + + /** + * Sets the value of the '{@link fr.obeo.dsl.arduino.Delay#getValue Value}' attribute. + * + * + * @param value the new value of the 'Value' attribute. + * @see #getValue() + * @generated + */ + void setValue(int value); + +} // Delay diff --git a/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino/src-gen/fr/obeo/dsl/arduino/DigitalPin.java b/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino/src-gen/fr/obeo/dsl/arduino/DigitalPin.java new file mode 100644 index 00000000..16258aca --- /dev/null +++ b/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino/src-gen/fr/obeo/dsl/arduino/DigitalPin.java @@ -0,0 +1,57 @@ +/** + * Copyright (c) 2013 Obeo. + * 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: + * Obeo - initial API and implementation + */ +package fr.obeo.dsl.arduino; + + +/** + * + * A representation of the model object 'Digital Pin'. + * + * + *

+ * The following features are supported: + *

    + *
  • {@link fr.obeo.dsl.arduino.DigitalPin#getModule Module}
  • + *
+ *

+ * + * @see fr.obeo.dsl.arduino.ArduinoPackage#getDigitalPin() + * @model + * @generated + */ +public interface DigitalPin extends Pin { + /** + * Returns the value of the 'Module' containment reference. + * + *

+ * If the meaning of the 'Module' containment reference isn't clear, + * there really should be more of a description here... + *

+ * + * @return the value of the 'Module' containment reference. + * @see #setModule(ArduinoDigitalModule) + * @see fr.obeo.dsl.arduino.ArduinoPackage#getDigitalPin_Module() + * @model containment="true" + * @generated + */ + ArduinoDigitalModule getModule(); + + /** + * Sets the value of the '{@link fr.obeo.dsl.arduino.DigitalPin#getModule Module}' containment reference. + * + * + * @param value the new value of the 'Module' containment reference. + * @see #getModule() + * @generated + */ + void setModule(ArduinoDigitalModule value); + +} // DigitalPin diff --git a/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino/src-gen/fr/obeo/dsl/arduino/Expression.java b/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino/src-gen/fr/obeo/dsl/arduino/Expression.java new file mode 100644 index 00000000..eb4c9738 --- /dev/null +++ b/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino/src-gen/fr/obeo/dsl/arduino/Expression.java @@ -0,0 +1,26 @@ +/** + * Copyright (c) 2013 Obeo. + * 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: + * Obeo - initial API and implementation + */ +package fr.obeo.dsl.arduino; + +import org.eclipse.emf.ecore.EObject; + +/** + * + * A representation of the model object 'Expression'. + * + * + * + * @see fr.obeo.dsl.arduino.ArduinoPackage#getExpression() + * @model abstract="true" + * @generated + */ +public interface Expression extends EObject { +} // Expression diff --git a/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino/src-gen/fr/obeo/dsl/arduino/Fan.java b/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino/src-gen/fr/obeo/dsl/arduino/Fan.java new file mode 100644 index 00000000..fb7c81bd --- /dev/null +++ b/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino/src-gen/fr/obeo/dsl/arduino/Fan.java @@ -0,0 +1,25 @@ +/** + * Copyright (c) 2013 Obeo. + * 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: + * Obeo - initial API and implementation + */ +package fr.obeo.dsl.arduino; + + +/** + * + * A representation of the model object 'Fan'. + * + * + * + * @see fr.obeo.dsl.arduino.ArduinoPackage#getFan() + * @model + * @generated + */ +public interface Fan extends ArduinoDigitalModule { +} // Fan diff --git a/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino/src-gen/fr/obeo/dsl/arduino/If.java b/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino/src-gen/fr/obeo/dsl/arduino/If.java new file mode 100644 index 00000000..0a27cf52 --- /dev/null +++ b/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino/src-gen/fr/obeo/dsl/arduino/If.java @@ -0,0 +1,84 @@ +/** + * Copyright (c) 2013 Obeo. + * 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: + * Obeo - initial API and implementation + */ +package fr.obeo.dsl.arduino; + + +/** + * + * A representation of the model object 'If'. + * + * + *

+ * The following features are supported: + *

    + *
  • {@link fr.obeo.dsl.arduino.If#getCondition Condition}
  • + *
  • {@link fr.obeo.dsl.arduino.If#getElseBlock Else Block}
  • + *
+ *

+ * + * @see fr.obeo.dsl.arduino.ArduinoPackage#getIf() + * @model + * @generated + */ +public interface If extends Control { + /** + * Returns the value of the 'Condition' containment reference. + * + *

+ * If the meaning of the 'Condition' containment reference isn't clear, + * there really should be more of a description here... + *

+ * + * @return the value of the 'Condition' containment reference. + * @see #setCondition(BooleanExpression) + * @see fr.obeo.dsl.arduino.ArduinoPackage#getIf_Condition() + * @model containment="true" required="true" + * @generated + */ + BooleanExpression getCondition(); + + /** + * Sets the value of the '{@link fr.obeo.dsl.arduino.If#getCondition Condition}' containment reference. + * + * + * @param value the new value of the 'Condition' containment reference. + * @see #getCondition() + * @generated + */ + void setCondition(BooleanExpression value); + + /** + * Returns the value of the 'Else Block' containment reference. + * + *

+ * If the meaning of the 'Else Block' containment reference isn't clear, + * there really should be more of a description here... + *

+ * + * @return the value of the 'Else Block' containment reference. + * @see #setElseBlock(InstructionBlock) + * @see fr.obeo.dsl.arduino.ArduinoPackage#getIf_ElseBlock() + * @model containment="true" + * @generated + */ + InstructionBlock getElseBlock(); + + /** + * Sets the value of the '{@link fr.obeo.dsl.arduino.If#getElseBlock Else Block}' containment reference. + * + * + * @param value the new value of the 'Else Block' containment reference. + * @see #getElseBlock() + * @generated + */ + void setElseBlock(InstructionBlock value); + +} // If diff --git a/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino/src-gen/fr/obeo/dsl/arduino/InfraRedSensor.java b/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino/src-gen/fr/obeo/dsl/arduino/InfraRedSensor.java new file mode 100644 index 00000000..0c281185 --- /dev/null +++ b/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino/src-gen/fr/obeo/dsl/arduino/InfraRedSensor.java @@ -0,0 +1,25 @@ +/** + * Copyright (c) 2013 Obeo. + * 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: + * Obeo - initial API and implementation + */ +package fr.obeo.dsl.arduino; + + +/** + * + * A representation of the model object 'Infra Red Sensor'. + * + * + * + * @see fr.obeo.dsl.arduino.ArduinoPackage#getInfraRedSensor() + * @model + * @generated + */ +public interface InfraRedSensor extends ArduinoDigitalModule { +} // InfraRedSensor diff --git a/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino/src-gen/fr/obeo/dsl/arduino/Instruction.java b/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino/src-gen/fr/obeo/dsl/arduino/Instruction.java new file mode 100644 index 00000000..af402144 --- /dev/null +++ b/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino/src-gen/fr/obeo/dsl/arduino/Instruction.java @@ -0,0 +1,68 @@ +/** + * Copyright (c) 2013 Obeo. + * 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: + * Obeo - initial API and implementation + */ +package fr.obeo.dsl.arduino; + +import org.eclipse.emf.ecore.EObject; + +/** + * + * A representation of the model object 'Instruction'. + * + * + *

+ * The following features are supported: + *

    + *
  • {@link fr.obeo.dsl.arduino.Instruction#getOwnedBlock Owned Block}
  • + *
+ *

+ * + * @see fr.obeo.dsl.arduino.ArduinoPackage#getInstruction() + * @model abstract="true" + * @generated + */ +public interface Instruction extends NamedElement { + /** + * Returns the value of the 'Owned Block' container reference. + * It is bidirectional and its opposite is '{@link fr.obeo.dsl.arduino.InstructionBlock#getInstructions Instructions}'. + * + *

+ * If the meaning of the 'Owned Block' container reference isn't clear, + * there really should be more of a description here... + *

+ * + * @return the value of the 'Owned Block' container reference. + * @see #setOwnedBlock(InstructionBlock) + * @see fr.obeo.dsl.arduino.ArduinoPackage#getInstruction_OwnedBlock() + * @see fr.obeo.dsl.arduino.InstructionBlock#getInstructions + * @model opposite="instructions" transient="false" + * @generated + */ + InstructionBlock getOwnedBlock(); + + /** + * Sets the value of the '{@link fr.obeo.dsl.arduino.Instruction#getOwnedBlock Owned Block}' container reference. + * + * + * @param value the new value of the 'Owned Block' container reference. + * @see #getOwnedBlock() + * @generated + */ + void setOwnedBlock(InstructionBlock value); + + /** + * + * + * @model + * @generated + */ + void execute(); + +} // Instruction diff --git a/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino/src-gen/fr/obeo/dsl/arduino/InstructionBlock.java b/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino/src-gen/fr/obeo/dsl/arduino/InstructionBlock.java new file mode 100644 index 00000000..5588f197 --- /dev/null +++ b/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino/src-gen/fr/obeo/dsl/arduino/InstructionBlock.java @@ -0,0 +1,108 @@ +/** + * Copyright (c) 2013 Obeo. + * 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: + * Obeo - initial API and implementation + */ +package fr.obeo.dsl.arduino; + +import org.eclipse.emf.common.util.EList; + +/** + * + * A representation of the model object 'Instruction Block'. + * + * + *

+ * The following features are supported: + *

    + *
  • {@link fr.obeo.dsl.arduino.InstructionBlock#getInstructions Instructions}
  • + *
  • {@link fr.obeo.dsl.arduino.InstructionBlock#getNext Next}
  • + *
  • {@link fr.obeo.dsl.arduino.InstructionBlock#getPrevious Previous}
  • + *
+ *

+ * + * @see fr.obeo.dsl.arduino.ArduinoPackage#getInstructionBlock() + * @model + * @generated + */ +public interface InstructionBlock extends ThreadInstructionBlock { + /** + * Returns the value of the 'Instructions' containment reference list. + * The list contents are of type {@link fr.obeo.dsl.arduino.Instruction}. + * It is bidirectional and its opposite is '{@link fr.obeo.dsl.arduino.Instruction#getOwnedBlock Owned Block}'. + * + *

+ * If the meaning of the 'Instructions' containment reference list isn't clear, + * there really should be more of a description here... + *

+ * + * @return the value of the 'Instructions' containment reference list. + * @see fr.obeo.dsl.arduino.ArduinoPackage#getInstructionBlock_Instructions() + * @see fr.obeo.dsl.arduino.Instruction#getOwnedBlock + * @model opposite="ownedBlock" containment="true" + * @generated + */ + EList getInstructions(); + + /** + * Returns the value of the 'Next' reference. + * It is bidirectional and its opposite is '{@link fr.obeo.dsl.arduino.SynchronizationBlock#getPrevious Previous}'. + * + *

+ * If the meaning of the 'Next' reference isn't clear, + * there really should be more of a description here... + *

+ * + * @return the value of the 'Next' reference. + * @see #setNext(SynchronizationBlock) + * @see fr.obeo.dsl.arduino.ArduinoPackage#getInstructionBlock_Next() + * @see fr.obeo.dsl.arduino.SynchronizationBlock#getPrevious + * @model opposite="previous" + * @generated + */ + SynchronizationBlock getNext(); + + /** + * Sets the value of the '{@link fr.obeo.dsl.arduino.InstructionBlock#getNext Next}' reference. + * + * + * @param value the new value of the 'Next' reference. + * @see #getNext() + * @generated + */ + void setNext(SynchronizationBlock value); + + /** + * Returns the value of the 'Previous' reference. + * It is bidirectional and its opposite is '{@link fr.obeo.dsl.arduino.SynchronizationBlock#getNext Next}'. + * + *

+ * If the meaning of the 'Previous' reference isn't clear, + * there really should be more of a description here... + *

+ * + * @return the value of the 'Previous' reference. + * @see #setPrevious(SynchronizationBlock) + * @see fr.obeo.dsl.arduino.ArduinoPackage#getInstructionBlock_Previous() + * @see fr.obeo.dsl.arduino.SynchronizationBlock#getNext + * @model opposite="next" + * @generated + */ + SynchronizationBlock getPrevious(); + + /** + * Sets the value of the '{@link fr.obeo.dsl.arduino.InstructionBlock#getPrevious Previous}' reference. + * + * + * @param value the new value of the 'Previous' reference. + * @see #getPrevious() + * @generated + */ + void setPrevious(SynchronizationBlock value); + +} // InstructionBlock diff --git a/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino/src-gen/fr/obeo/dsl/arduino/IntegerConstant.java b/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino/src-gen/fr/obeo/dsl/arduino/IntegerConstant.java new file mode 100644 index 00000000..389106d4 --- /dev/null +++ b/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino/src-gen/fr/obeo/dsl/arduino/IntegerConstant.java @@ -0,0 +1,58 @@ +/** + * Copyright (c) 2013 Obeo. + * 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: + * Obeo - initial API and implementation + */ +package fr.obeo.dsl.arduino; + + +/** + * + * A representation of the model object 'Integer Constant'. + * + * + *

+ * The following features are supported: + *

    + *
  • {@link fr.obeo.dsl.arduino.IntegerConstant#getValue Value}
  • + *
+ *

+ * + * @see fr.obeo.dsl.arduino.ArduinoPackage#getIntegerConstant() + * @model + * @generated + */ +public interface IntegerConstant extends Constant, IntegerExpression { + /** + * Returns the value of the 'Value' attribute. + * The default value is "0". + * + *

+ * If the meaning of the 'Value' attribute isn't clear, + * there really should be more of a description here... + *

+ * + * @return the value of the 'Value' attribute. + * @see #setValue(int) + * @see fr.obeo.dsl.arduino.ArduinoPackage#getIntegerConstant_Value() + * @model default="0" + * @generated + */ + int getValue(); + + /** + * Sets the value of the '{@link fr.obeo.dsl.arduino.IntegerConstant#getValue Value}' attribute. + * + * + * @param value the new value of the 'Value' attribute. + * @see #getValue() + * @generated + */ + void setValue(int value); + +} // IntegerConstant diff --git a/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino/src-gen/fr/obeo/dsl/arduino/IntegerExpression.java b/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino/src-gen/fr/obeo/dsl/arduino/IntegerExpression.java new file mode 100644 index 00000000..a205ccd0 --- /dev/null +++ b/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino/src-gen/fr/obeo/dsl/arduino/IntegerExpression.java @@ -0,0 +1,25 @@ +/** + * Copyright (c) 2013 Obeo. + * 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: + * Obeo - initial API and implementation + */ +package fr.obeo.dsl.arduino; + + +/** + * + * A representation of the model object 'Integer Expression'. + * + * + * + * @see fr.obeo.dsl.arduino.ArduinoPackage#getIntegerExpression() + * @model abstract="true" + * @generated + */ +public interface IntegerExpression extends Expression { +} // IntegerExpression diff --git a/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino/src-gen/fr/obeo/dsl/arduino/IntegerModuleGet.java b/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino/src-gen/fr/obeo/dsl/arduino/IntegerModuleGet.java new file mode 100644 index 00000000..d7da3f85 --- /dev/null +++ b/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino/src-gen/fr/obeo/dsl/arduino/IntegerModuleGet.java @@ -0,0 +1,25 @@ +/** + * Copyright (c) 2013 Obeo. + * 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: + * Obeo - initial API and implementation + */ +package fr.obeo.dsl.arduino; + + +/** + * + * A representation of the model object 'Integer Module Get'. + * + * + * + * @see fr.obeo.dsl.arduino.ArduinoPackage#getIntegerModuleGet() + * @model + * @generated + */ +public interface IntegerModuleGet extends ModuleGet, IntegerExpression { +} // IntegerModuleGet diff --git a/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino/src-gen/fr/obeo/dsl/arduino/IntegerVariable.java b/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino/src-gen/fr/obeo/dsl/arduino/IntegerVariable.java new file mode 100644 index 00000000..cc27101d --- /dev/null +++ b/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino/src-gen/fr/obeo/dsl/arduino/IntegerVariable.java @@ -0,0 +1,86 @@ +/** + * Copyright (c) 2013 Obeo. + * 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: + * Obeo - initial API and implementation + */ +package fr.obeo.dsl.arduino; + + +/** + * + * A representation of the model object 'Integer Variable'. + * + * + *

+ * The following features are supported: + *

    + *
  • {@link fr.obeo.dsl.arduino.IntegerVariable#getInitialValue Initial Value}
  • + *
  • {@link fr.obeo.dsl.arduino.IntegerVariable#getValue Value}
  • + *
+ *

+ * + * @see fr.obeo.dsl.arduino.ArduinoPackage#getIntegerVariable() + * @model + * @generated + */ +public interface IntegerVariable extends Variable, IntegerExpression { + /** + * Returns the value of the 'Initial Value' attribute. + * The default value is "0". + * + *

+ * If the meaning of the 'Initial Value' attribute isn't clear, + * there really should be more of a description here... + *

+ * + * @return the value of the 'Initial Value' attribute. + * @see #setInitialValue(int) + * @see fr.obeo.dsl.arduino.ArduinoPackage#getIntegerVariable_InitialValue() + * @model default="0" + * @generated + */ + int getInitialValue(); + + /** + * Sets the value of the '{@link fr.obeo.dsl.arduino.IntegerVariable#getInitialValue Initial Value}' attribute. + * + * + * @param value the new value of the 'Initial Value' attribute. + * @see #getInitialValue() + * @generated + */ + void setInitialValue(int value); + + /** + * Returns the value of the 'Value' attribute. + * The default value is "0". + * + *

+ * If the meaning of the 'Value' attribute isn't clear, + * there really should be more of a description here... + *

+ * + * @return the value of the 'Value' attribute. + * @see #setValue(Integer) + * @see fr.obeo.dsl.arduino.ArduinoPackage#getIntegerVariable_Value() + * @model default="0" + * @generated + */ + Integer getValue(); + + /** + * Sets the value of the '{@link fr.obeo.dsl.arduino.IntegerVariable#getValue Value}' attribute. + * + * + * @param value the new value of the 'Value' attribute. + * @see #getValue() + * @generated + */ + void setValue(Integer value); + +} // IntegerVariable diff --git a/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino/src-gen/fr/obeo/dsl/arduino/LED.java b/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino/src-gen/fr/obeo/dsl/arduino/LED.java new file mode 100644 index 00000000..c8b5b235 --- /dev/null +++ b/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino/src-gen/fr/obeo/dsl/arduino/LED.java @@ -0,0 +1,25 @@ +/** + * Copyright (c) 2013 Obeo. + * 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: + * Obeo - initial API and implementation + */ +package fr.obeo.dsl.arduino; + + +/** + * + * A representation of the model object 'LED'. + * + * + * + * @see fr.obeo.dsl.arduino.ArduinoPackage#getLED() + * @model + * @generated + */ +public interface LED extends ArduinoDigitalModule { +} // LED diff --git a/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino/src-gen/fr/obeo/dsl/arduino/Link.java b/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino/src-gen/fr/obeo/dsl/arduino/Link.java new file mode 100644 index 00000000..18dea587 --- /dev/null +++ b/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino/src-gen/fr/obeo/dsl/arduino/Link.java @@ -0,0 +1,84 @@ +/** + * Copyright (c) 2013 Obeo. + * 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: + * Obeo - initial API and implementation + */ +package fr.obeo.dsl.arduino; + + +/** + * + * A representation of the model object 'Link'. + * + * + *

+ * The following features are supported: + *

    + *
  • {@link fr.obeo.dsl.arduino.Link#getInBoard In Board}
  • + *
  • {@link fr.obeo.dsl.arduino.Link#getOutBoard Out Board}
  • + *
+ *

+ * + * @see fr.obeo.dsl.arduino.ArduinoPackage#getLink() + * @model + * @generated + */ +public interface Link extends NamedElement { + /** + * Returns the value of the 'In Board' reference. + * + *

+ * If the meaning of the 'In Board' reference isn't clear, + * there really should be more of a description here... + *

+ * + * @return the value of the 'In Board' reference. + * @see #setInBoard(Board) + * @see fr.obeo.dsl.arduino.ArduinoPackage#getLink_InBoard() + * @model required="true" + * @generated + */ + Board getInBoard(); + + /** + * Sets the value of the '{@link fr.obeo.dsl.arduino.Link#getInBoard In Board}' reference. + * + * + * @param value the new value of the 'In Board' reference. + * @see #getInBoard() + * @generated + */ + void setInBoard(Board value); + + /** + * Returns the value of the 'Out Board' reference. + * + *

+ * If the meaning of the 'Out Board' reference isn't clear, + * there really should be more of a description here... + *

+ * + * @return the value of the 'Out Board' reference. + * @see #setOutBoard(Board) + * @see fr.obeo.dsl.arduino.ArduinoPackage#getLink_OutBoard() + * @model required="true" + * @generated + */ + Board getOutBoard(); + + /** + * Sets the value of the '{@link fr.obeo.dsl.arduino.Link#getOutBoard Out Board}' reference. + * + * + * @param value the new value of the 'Out Board' reference. + * @see #getOutBoard() + * @generated + */ + void setOutBoard(Board value); + +} // Link diff --git a/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino/src-gen/fr/obeo/dsl/arduino/MicroServo.java b/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino/src-gen/fr/obeo/dsl/arduino/MicroServo.java new file mode 100644 index 00000000..a9fe2bc0 --- /dev/null +++ b/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino/src-gen/fr/obeo/dsl/arduino/MicroServo.java @@ -0,0 +1,25 @@ +/** + * Copyright (c) 2013 Obeo. + * 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: + * Obeo - initial API and implementation + */ +package fr.obeo.dsl.arduino; + + +/** + * + * A representation of the model object 'Micro Servo'. + * + * + * + * @see fr.obeo.dsl.arduino.ArduinoPackage#getMicroServo() + * @model + * @generated + */ +public interface MicroServo extends ArduinoDigitalModule { +} // MicroServo diff --git a/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino/src-gen/fr/obeo/dsl/arduino/Module.java b/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino/src-gen/fr/obeo/dsl/arduino/Module.java new file mode 100644 index 00000000..f300291f --- /dev/null +++ b/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino/src-gen/fr/obeo/dsl/arduino/Module.java @@ -0,0 +1,57 @@ +/** + * Copyright (c) 2013 Obeo. + * 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: + * Obeo - initial API and implementation + */ +package fr.obeo.dsl.arduino; + + +/** + * + * A representation of the model object 'Module'. + * + * + *

+ * The following features are supported: + *

    + *
  • {@link fr.obeo.dsl.arduino.Module#isLevel Level}
  • + *
+ *

+ * + * @see fr.obeo.dsl.arduino.ArduinoPackage#getModule() + * @model interface="true" abstract="true" + * @generated + */ +public interface Module extends NamedElement { + /** + * Returns the value of the 'Level' attribute. + * + *

+ * If the meaning of the 'Level' attribute isn't clear, + * there really should be more of a description here... + *

+ * + * @return the value of the 'Level' attribute. + * @see #setLevel(boolean) + * @see fr.obeo.dsl.arduino.ArduinoPackage#getModule_Level() + * @model + * @generated + */ + boolean isLevel(); + + /** + * Sets the value of the '{@link fr.obeo.dsl.arduino.Module#isLevel Level}' attribute. + * + * + * @param value the new value of the 'Level' attribute. + * @see #isLevel() + * @generated + */ + void setLevel(boolean value); + +} // Module diff --git a/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino/src-gen/fr/obeo/dsl/arduino/ModuleAssignment.java b/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino/src-gen/fr/obeo/dsl/arduino/ModuleAssignment.java new file mode 100644 index 00000000..0187daec --- /dev/null +++ b/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino/src-gen/fr/obeo/dsl/arduino/ModuleAssignment.java @@ -0,0 +1,25 @@ +/** + * Copyright (c) 2013 Obeo. + * 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: + * Obeo - initial API and implementation + */ +package fr.obeo.dsl.arduino; + + +/** + * + * A representation of the model object 'Module Assignment'. + * + * + * + * @see fr.obeo.dsl.arduino.ArduinoPackage#getModuleAssignment() + * @model + * @generated + */ +public interface ModuleAssignment extends ModuleInstruction, Assignment { +} // ModuleAssignment diff --git a/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino/src-gen/fr/obeo/dsl/arduino/ModuleGet.java b/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino/src-gen/fr/obeo/dsl/arduino/ModuleGet.java new file mode 100644 index 00000000..6f8a2e75 --- /dev/null +++ b/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino/src-gen/fr/obeo/dsl/arduino/ModuleGet.java @@ -0,0 +1,57 @@ +/** + * Copyright (c) 2013 Obeo. + * 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: + * Obeo - initial API and implementation + */ +package fr.obeo.dsl.arduino; + + +/** + * + * A representation of the model object 'Module Get'. + * + * + *

+ * The following features are supported: + *

    + *
  • {@link fr.obeo.dsl.arduino.ModuleGet#getModule Module}
  • + *
+ *

+ * + * @see fr.obeo.dsl.arduino.ArduinoPackage#getModuleGet() + * @model abstract="true" + * @generated + */ +public interface ModuleGet extends Expression { + /** + * Returns the value of the 'Module' reference. + * + *

+ * If the meaning of the 'Module' reference isn't clear, + * there really should be more of a description here... + *

+ * + * @return the value of the 'Module' reference. + * @see #setModule(Module) + * @see fr.obeo.dsl.arduino.ArduinoPackage#getModuleGet_Module() + * @model required="true" + * @generated + */ + Module getModule(); + + /** + * Sets the value of the '{@link fr.obeo.dsl.arduino.ModuleGet#getModule Module}' reference. + * + * + * @param value the new value of the 'Module' reference. + * @see #getModule() + * @generated + */ + void setModule(Module value); + +} // ModuleGet diff --git a/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino/src-gen/fr/obeo/dsl/arduino/ModuleInstruction.java b/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino/src-gen/fr/obeo/dsl/arduino/ModuleInstruction.java new file mode 100644 index 00000000..de8eac2c --- /dev/null +++ b/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino/src-gen/fr/obeo/dsl/arduino/ModuleInstruction.java @@ -0,0 +1,57 @@ +/** + * Copyright (c) 2013 Obeo. + * 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: + * Obeo - initial API and implementation + */ +package fr.obeo.dsl.arduino; + + +/** + * + * A representation of the model object 'Module Instruction'. + * + * + *

+ * The following features are supported: + *

    + *
  • {@link fr.obeo.dsl.arduino.ModuleInstruction#getModule Module}
  • + *
+ *

+ * + * @see fr.obeo.dsl.arduino.ArduinoPackage#getModuleInstruction() + * @model abstract="true" + * @generated + */ +public interface ModuleInstruction extends Instruction { + /** + * Returns the value of the 'Module' reference. + * + *

+ * If the meaning of the 'Module' reference isn't clear, + * there really should be more of a description here... + *

+ * + * @return the value of the 'Module' reference. + * @see #setModule(Module) + * @see fr.obeo.dsl.arduino.ArduinoPackage#getModuleInstruction_Module() + * @model required="true" + * @generated + */ + Module getModule(); + + /** + * Sets the value of the '{@link fr.obeo.dsl.arduino.ModuleInstruction#getModule Module}' reference. + * + * + * @param value the new value of the 'Module' reference. + * @see #getModule() + * @generated + */ + void setModule(Module value); + +} // ModuleInstruction diff --git a/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino/src-gen/fr/obeo/dsl/arduino/MusicPlayer.java b/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino/src-gen/fr/obeo/dsl/arduino/MusicPlayer.java new file mode 100644 index 00000000..a3b13a28 --- /dev/null +++ b/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino/src-gen/fr/obeo/dsl/arduino/MusicPlayer.java @@ -0,0 +1,25 @@ +/** + * Copyright (c) 2013 Obeo. + * 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: + * Obeo - initial API and implementation + */ +package fr.obeo.dsl.arduino; + + +/** + * + * A representation of the model object 'Music Player'. + * + * + * + * @see fr.obeo.dsl.arduino.ArduinoPackage#getMusicPlayer() + * @model + * @generated + */ +public interface MusicPlayer extends ArduinoAnalogModule { +} // MusicPlayer diff --git a/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino/src-gen/fr/obeo/dsl/arduino/NamedElement.java b/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino/src-gen/fr/obeo/dsl/arduino/NamedElement.java new file mode 100644 index 00000000..ec6e7077 --- /dev/null +++ b/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino/src-gen/fr/obeo/dsl/arduino/NamedElement.java @@ -0,0 +1,58 @@ +/** + * Copyright (c) 2013 Obeo. + * 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: + * Obeo - initial API and implementation + */ +package fr.obeo.dsl.arduino; + +import org.eclipse.emf.ecore.EObject; + +/** + * + * A representation of the model object 'Named Element'. + * + * + *

+ * The following features are supported: + *

    + *
  • {@link fr.obeo.dsl.arduino.NamedElement#getName Name}
  • + *
+ *

+ * + * @see fr.obeo.dsl.arduino.ArduinoPackage#getNamedElement() + * @model abstract="true" + * @generated + */ +public interface NamedElement extends EObject { + /** + * Returns the value of the 'Name' attribute. + * + *

+ * If the meaning of the 'Name' attribute isn't clear, + * there really should be more of a description here... + *

+ * + * @return the value of the 'Name' attribute. + * @see #setName(String) + * @see fr.obeo.dsl.arduino.ArduinoPackage#getNamedElement_Name() + * @model + * @generated + */ + String getName(); + + /** + * Sets the value of the '{@link fr.obeo.dsl.arduino.NamedElement#getName Name}' attribute. + * + * + * @param value the new value of the 'Name' attribute. + * @see #getName() + * @generated + */ + void setName(String value); + +} // NamedElement diff --git a/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino/src-gen/fr/obeo/dsl/arduino/Pin.java b/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino/src-gen/fr/obeo/dsl/arduino/Pin.java new file mode 100644 index 00000000..dba582de --- /dev/null +++ b/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino/src-gen/fr/obeo/dsl/arduino/Pin.java @@ -0,0 +1,85 @@ +/** + * Copyright (c) 2013 Obeo. + * 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: + * Obeo - initial API and implementation + */ +package fr.obeo.dsl.arduino; + +import org.eclipse.emf.ecore.EObject; + +/** + * + * A representation of the model object 'Pin'. + * + * + *

+ * The following features are supported: + *

    + *
  • {@link fr.obeo.dsl.arduino.Pin#getId Id}
  • + *
  • {@link fr.obeo.dsl.arduino.Pin#getLevel Level}
  • + *
+ *

+ * + * @see fr.obeo.dsl.arduino.ArduinoPackage#getPin() + * @model abstract="true" + * @generated + */ +public interface Pin extends EObject { + /** + * Returns the value of the 'Id' attribute. + * + *

+ * If the meaning of the 'Id' attribute isn't clear, + * there really should be more of a description here... + *

+ * + * @return the value of the 'Id' attribute. + * @see #setId(int) + * @see fr.obeo.dsl.arduino.ArduinoPackage#getPin_Id() + * @model + * @generated + */ + int getId(); + + /** + * Sets the value of the '{@link fr.obeo.dsl.arduino.Pin#getId Id}' attribute. + * + * + * @param value the new value of the 'Id' attribute. + * @see #getId() + * @generated + */ + void setId(int value); + + /** + * Returns the value of the 'Level' attribute. + * + *

+ * If the meaning of the 'Level' attribute isn't clear, + * there really should be more of a description here... + *

+ * + * @return the value of the 'Level' attribute. + * @see #setLevel(Integer) + * @see fr.obeo.dsl.arduino.ArduinoPackage#getPin_Level() + * @model + * @generated + */ + Integer getLevel(); + + /** + * Sets the value of the '{@link fr.obeo.dsl.arduino.Pin#getLevel Level}' attribute. + * + * + * @param value the new value of the 'Level' attribute. + * @see #getLevel() + * @generated + */ + void setLevel(Integer value); + +} // Pin diff --git a/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino/src-gen/fr/obeo/dsl/arduino/Project.java b/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino/src-gen/fr/obeo/dsl/arduino/Project.java new file mode 100644 index 00000000..402c122c --- /dev/null +++ b/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino/src-gen/fr/obeo/dsl/arduino/Project.java @@ -0,0 +1,97 @@ +/** + * Copyright (c) 2013 Obeo. + * 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: + * Obeo - initial API and implementation + */ +package fr.obeo.dsl.arduino; + +import org.eclipse.emf.common.util.EList; +import org.eclipse.emf.ecore.EObject; + +/** + * + * A representation of the model object 'Project'. + * + * + *

+ * The following features are supported: + *

    + *
  • {@link fr.obeo.dsl.arduino.Project#getBoards Boards}
  • + *
  • {@link fr.obeo.dsl.arduino.Project#getSketch Sketch}
  • + *
  • {@link fr.obeo.dsl.arduino.Project#getLinks Links}
  • + *
+ *

+ * + * @see fr.obeo.dsl.arduino.ArduinoPackage#getProject() + * @model + * @generated + */ +public interface Project extends NamedElement { + /** + * Returns the value of the 'Boards' containment reference list. + * The list contents are of type {@link fr.obeo.dsl.arduino.Board}. + * It is bidirectional and its opposite is '{@link fr.obeo.dsl.arduino.Board#getProject Project}'. + * + *

+ * If the meaning of the 'Boards' containment reference list isn't clear, + * there really should be more of a description here... + *

+ * + * @return the value of the 'Boards' containment reference list. + * @see fr.obeo.dsl.arduino.ArduinoPackage#getProject_Boards() + * @see fr.obeo.dsl.arduino.Board#getProject + * @model opposite="project" containment="true" + * @generated + */ + EList getBoards(); + + /** + * Returns the value of the 'Sketch' containment reference. + * It is bidirectional and its opposite is '{@link fr.obeo.dsl.arduino.Sketch#getProject Project}'. + * + *

+ * If the meaning of the 'Sketch' containment reference isn't clear, + * there really should be more of a description here... + *

+ * + * @return the value of the 'Sketch' containment reference. + * @see #setSketch(Sketch) + * @see fr.obeo.dsl.arduino.ArduinoPackage#getProject_Sketch() + * @see fr.obeo.dsl.arduino.Sketch#getProject + * @model opposite="project" containment="true" + * @generated + */ + Sketch getSketch(); + + /** + * Sets the value of the '{@link fr.obeo.dsl.arduino.Project#getSketch Sketch}' containment reference. + * + * + * @param value the new value of the 'Sketch' containment reference. + * @see #getSketch() + * @generated + */ + void setSketch(Sketch value); + + /** + * Returns the value of the 'Links' containment reference list. + * The list contents are of type {@link fr.obeo.dsl.arduino.Link}. + * + *

+ * If the meaning of the 'Links' containment reference list isn't clear, + * there really should be more of a description here... + *

+ * + * @return the value of the 'Links' containment reference list. + * @see fr.obeo.dsl.arduino.ArduinoPackage#getProject_Links() + * @model containment="true" + * @generated + */ + EList getLinks(); + +} // Project diff --git a/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino/src-gen/fr/obeo/dsl/arduino/PushButton.java b/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino/src-gen/fr/obeo/dsl/arduino/PushButton.java new file mode 100644 index 00000000..165ba88b --- /dev/null +++ b/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino/src-gen/fr/obeo/dsl/arduino/PushButton.java @@ -0,0 +1,25 @@ +/** + * Copyright (c) 2013 Obeo. + * 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: + * Obeo - initial API and implementation + */ +package fr.obeo.dsl.arduino; + + +/** + * + * A representation of the model object 'Push Button'. + * + * + * + * @see fr.obeo.dsl.arduino.ArduinoPackage#getPushButton() + * @model + * @generated + */ +public interface PushButton extends ArduinoDigitalModule { +} // PushButton diff --git a/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino/src-gen/fr/obeo/dsl/arduino/Repeat.java b/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino/src-gen/fr/obeo/dsl/arduino/Repeat.java new file mode 100644 index 00000000..f6aed6cd --- /dev/null +++ b/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino/src-gen/fr/obeo/dsl/arduino/Repeat.java @@ -0,0 +1,58 @@ +/** + * Copyright (c) 2013 Obeo. + * 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: + * Obeo - initial API and implementation + */ +package fr.obeo.dsl.arduino; + + +/** + * + * A representation of the model object 'Repeat'. + * + * + *

+ * The following features are supported: + *

    + *
  • {@link fr.obeo.dsl.arduino.Repeat#getIteration Iteration}
  • + *
+ *

+ * + * @see fr.obeo.dsl.arduino.ArduinoPackage#getRepeat() + * @model + * @generated + */ +public interface Repeat extends Control { + /** + * Returns the value of the 'Iteration' attribute. + * The default value is "5". + * + *

+ * If the meaning of the 'Iteration' attribute isn't clear, + * there really should be more of a description here... + *

+ * + * @return the value of the 'Iteration' attribute. + * @see #setIteration(int) + * @see fr.obeo.dsl.arduino.ArduinoPackage#getRepeat_Iteration() + * @model default="5" + * @generated + */ + int getIteration(); + + /** + * Sets the value of the '{@link fr.obeo.dsl.arduino.Repeat#getIteration Iteration}' attribute. + * + * + * @param value the new value of the 'Iteration' attribute. + * @see #getIteration() + * @generated + */ + void setIteration(int value); + +} // Repeat diff --git a/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino/src-gen/fr/obeo/dsl/arduino/RotationSensor.java b/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino/src-gen/fr/obeo/dsl/arduino/RotationSensor.java new file mode 100644 index 00000000..00edc3bc --- /dev/null +++ b/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino/src-gen/fr/obeo/dsl/arduino/RotationSensor.java @@ -0,0 +1,25 @@ +/** + * Copyright (c) 2013 Obeo. + * 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: + * Obeo - initial API and implementation + */ +package fr.obeo.dsl.arduino; + + +/** + * + * A representation of the model object 'Rotation Sensor'. + * + * + * + * @see fr.obeo.dsl.arduino.ArduinoPackage#getRotationSensor() + * @model + * @generated + */ +public interface RotationSensor extends ArduinoAnalogModule { +} // RotationSensor diff --git a/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino/src-gen/fr/obeo/dsl/arduino/Sketch.java b/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino/src-gen/fr/obeo/dsl/arduino/Sketch.java new file mode 100644 index 00000000..21ff371f --- /dev/null +++ b/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino/src-gen/fr/obeo/dsl/arduino/Sketch.java @@ -0,0 +1,94 @@ +/** + * Copyright (c) 2013 Obeo. + * 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: + * Obeo - initial API and implementation + */ +package fr.obeo.dsl.arduino; + +import org.eclipse.emf.common.util.EList; + +/** + * + * A representation of the model object 'Sketch'. + * + * + *

+ * The following features are supported: + *

    + *
  • {@link fr.obeo.dsl.arduino.Sketch#getProject Project}
  • + *
  • {@link fr.obeo.dsl.arduino.Sketch#getThreads Threads}
  • + *
  • {@link fr.obeo.dsl.arduino.Sketch#getChannels Channels}
  • + *
+ *

+ * + * @see fr.obeo.dsl.arduino.ArduinoPackage#getSketch() + * @model + * @generated + */ +public interface Sketch extends NamedElement { + /** + * Returns the value of the 'Project' container reference. + * It is bidirectional and its opposite is '{@link fr.obeo.dsl.arduino.Project#getSketch Sketch}'. + * + *

+ * If the meaning of the 'Project' container reference isn't clear, + * there really should be more of a description here... + *

+ * + * @return the value of the 'Project' container reference. + * @see #setProject(Project) + * @see fr.obeo.dsl.arduino.ArduinoPackage#getSketch_Project() + * @see fr.obeo.dsl.arduino.Project#getSketch + * @model opposite="sketch" required="true" transient="false" + * @generated + */ + Project getProject(); + + /** + * Sets the value of the '{@link fr.obeo.dsl.arduino.Sketch#getProject Project}' container reference. + * + * + * @param value the new value of the 'Project' container reference. + * @see #getProject() + * @generated + */ + void setProject(Project value); + + /** + * Returns the value of the 'Threads' containment reference list. + * The list contents are of type {@link fr.obeo.dsl.arduino.Thread}. + * + *

+ * If the meaning of the 'Threads' containment reference list isn't clear, + * there really should be more of a description here... + *

+ * + * @return the value of the 'Threads' containment reference list. + * @see fr.obeo.dsl.arduino.ArduinoPackage#getSketch_Threads() + * @model containment="true" + * @generated + */ + EList getThreads(); + + /** + * Returns the value of the 'Channels' containment reference list. + * The list contents are of type {@link fr.obeo.dsl.arduino.Channel}. + * + *

+ * If the meaning of the 'Channels' containment reference list isn't clear, + * there really should be more of a description here... + *

+ * + * @return the value of the 'Channels' containment reference list. + * @see fr.obeo.dsl.arduino.ArduinoPackage#getSketch_Channels() + * @model containment="true" + * @generated + */ + EList getChannels(); + +} // Sketch diff --git a/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino/src-gen/fr/obeo/dsl/arduino/SoundSensor.java b/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino/src-gen/fr/obeo/dsl/arduino/SoundSensor.java new file mode 100644 index 00000000..f53ddbd4 --- /dev/null +++ b/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino/src-gen/fr/obeo/dsl/arduino/SoundSensor.java @@ -0,0 +1,25 @@ +/** + * Copyright (c) 2013 Obeo. + * 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: + * Obeo - initial API and implementation + */ +package fr.obeo.dsl.arduino; + + +/** + * + * A representation of the model object 'Sound Sensor'. + * + * + * + * @see fr.obeo.dsl.arduino.ArduinoPackage#getSoundSensor() + * @model + * @generated + */ +public interface SoundSensor extends ArduinoAnalogModule { +} // SoundSensor diff --git a/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino/src-gen/fr/obeo/dsl/arduino/Synchonization.java b/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino/src-gen/fr/obeo/dsl/arduino/Synchonization.java new file mode 100644 index 00000000..f564f110 --- /dev/null +++ b/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino/src-gen/fr/obeo/dsl/arduino/Synchonization.java @@ -0,0 +1,33 @@ +/** + * Copyright (c) 2013 Obeo. + * 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: + * Obeo - initial API and implementation + */ +package fr.obeo.dsl.arduino; + + +/** + * + * A representation of the model object 'Synchonization'. + * + * + * + * @see fr.obeo.dsl.arduino.ArduinoPackage#getSynchonization() + * @model + * @generated + */ +public interface Synchonization extends Instruction { + /** + * + * + * @model + * @generated + */ + void fire(); + +} // Synchonization diff --git a/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino/src-gen/fr/obeo/dsl/arduino/Synchronization.java b/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino/src-gen/fr/obeo/dsl/arduino/Synchronization.java new file mode 100644 index 00000000..f1056e27 --- /dev/null +++ b/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino/src-gen/fr/obeo/dsl/arduino/Synchronization.java @@ -0,0 +1,33 @@ +/** + * Copyright (c) 2013 Obeo. + * 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: + * Obeo - initial API and implementation + */ +package fr.obeo.dsl.arduino; + + +/** + * + * A representation of the model object 'Synchronization'. + * + * + * + * @see fr.obeo.dsl.arduino.ArduinoPackage#getSynchronization() + * @model + * @generated + */ +public interface Synchronization extends Instruction { + /** + * + * + * @model + * @generated + */ + void fire(); + +} // Synchronization diff --git a/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino/src-gen/fr/obeo/dsl/arduino/SynchronizationBlock.java b/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino/src-gen/fr/obeo/dsl/arduino/SynchronizationBlock.java new file mode 100644 index 00000000..1bb0d688 --- /dev/null +++ b/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino/src-gen/fr/obeo/dsl/arduino/SynchronizationBlock.java @@ -0,0 +1,88 @@ +/** + * Copyright (c) 2013 Obeo. + * 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: + * Obeo - initial API and implementation + */ +package fr.obeo.dsl.arduino; + + +/** + * + * A representation of the model object 'Synchronization Block'. + * + * + *

+ * The following features are supported: + *

    + *
  • {@link fr.obeo.dsl.arduino.SynchronizationBlock#getNext Next}
  • + *
  • {@link fr.obeo.dsl.arduino.SynchronizationBlock#getPrevious Previous}
  • + *
+ *

+ * + * @see fr.obeo.dsl.arduino.ArduinoPackage#getSynchronizationBlock() + * @model + * @generated + */ +public interface SynchronizationBlock extends ThreadInstructionBlock { + /** + * Returns the value of the 'Next' reference. + * It is bidirectional and its opposite is '{@link fr.obeo.dsl.arduino.InstructionBlock#getPrevious Previous}'. + * + *

+ * If the meaning of the 'Next' reference isn't clear, + * there really should be more of a description here... + *

+ * + * @return the value of the 'Next' reference. + * @see #setNext(InstructionBlock) + * @see fr.obeo.dsl.arduino.ArduinoPackage#getSynchronizationBlock_Next() + * @see fr.obeo.dsl.arduino.InstructionBlock#getPrevious + * @model opposite="previous" + * @generated + */ + InstructionBlock getNext(); + + /** + * Sets the value of the '{@link fr.obeo.dsl.arduino.SynchronizationBlock#getNext Next}' reference. + * + * + * @param value the new value of the 'Next' reference. + * @see #getNext() + * @generated + */ + void setNext(InstructionBlock value); + + /** + * Returns the value of the 'Previous' reference. + * It is bidirectional and its opposite is '{@link fr.obeo.dsl.arduino.InstructionBlock#getNext Next}'. + * + *

+ * If the meaning of the 'Previous' reference isn't clear, + * there really should be more of a description here... + *

+ * + * @return the value of the 'Previous' reference. + * @see #setPrevious(InstructionBlock) + * @see fr.obeo.dsl.arduino.ArduinoPackage#getSynchronizationBlock_Previous() + * @see fr.obeo.dsl.arduino.InstructionBlock#getNext + * @model opposite="next" + * @generated + */ + InstructionBlock getPrevious(); + + /** + * Sets the value of the '{@link fr.obeo.dsl.arduino.SynchronizationBlock#getPrevious Previous}' reference. + * + * + * @param value the new value of the 'Previous' reference. + * @see #getPrevious() + * @generated + */ + void setPrevious(InstructionBlock value); + +} // SynchronizationBlock diff --git a/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino/src-gen/fr/obeo/dsl/arduino/Thread.java b/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino/src-gen/fr/obeo/dsl/arduino/Thread.java new file mode 100644 index 00000000..bb0565f0 --- /dev/null +++ b/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino/src-gen/fr/obeo/dsl/arduino/Thread.java @@ -0,0 +1,185 @@ +/** + * Copyright (c) 2013 Obeo. + * 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: + * Obeo - initial API and implementation + */ +package fr.obeo.dsl.arduino; + +import org.eclipse.emf.common.util.EList; + +/** + * + * A representation of the model object 'Thread'. + * + * + *

+ * The following features are supported: + *

    + *
  • {@link fr.obeo.dsl.arduino.Thread#getBlocks Blocks}
  • + *
  • {@link fr.obeo.dsl.arduino.Thread#getChannels Channels}
  • + *
  • {@link fr.obeo.dsl.arduino.Thread#getCycles Cycles}
  • + *
  • {@link fr.obeo.dsl.arduino.Thread#getCurrentInstruction Current Instruction}
  • + *
  • {@link fr.obeo.dsl.arduino.Thread#getFirst First}
  • + *
  • {@link fr.obeo.dsl.arduino.Thread#getLast Last}
  • + *
+ *

+ * + * @see fr.obeo.dsl.arduino.ArduinoPackage#getThread() + * @model + * @generated + */ +public interface Thread extends NamedElement { + /** + * Returns the value of the 'Blocks' containment reference list. + * The list contents are of type {@link fr.obeo.dsl.arduino.ThreadInstructionBlock}. + * It is bidirectional and its opposite is '{@link fr.obeo.dsl.arduino.ThreadInstructionBlock#getThread Thread}'. + * + *

+ * If the meaning of the 'Blocks' containment reference list isn't clear, + * there really should be more of a description here... + *

+ * + * @return the value of the 'Blocks' containment reference list. + * @see fr.obeo.dsl.arduino.ArduinoPackage#getThread_Blocks() + * @see fr.obeo.dsl.arduino.ThreadInstructionBlock#getThread + * @model opposite="thread" containment="true" + * @generated + */ + EList getBlocks(); + + /** + * Returns the value of the 'Channels' reference list. + * The list contents are of type {@link fr.obeo.dsl.arduino.Channel}. + * It is bidirectional and its opposite is '{@link fr.obeo.dsl.arduino.Channel#getSource Source}'. + * + *

+ * If the meaning of the 'Channels' reference list isn't clear, + * there really should be more of a description here... + *

+ * + * @return the value of the 'Channels' reference list. + * @see fr.obeo.dsl.arduino.ArduinoPackage#getThread_Channels() + * @see fr.obeo.dsl.arduino.Channel#getSource + * @model opposite="source" + * @generated + */ + EList getChannels(); + + /** + * Returns the value of the 'Cycles' attribute. + * + *

+ * If the meaning of the 'Cycles' attribute isn't clear, + * there really should be more of a description here... + *

+ * + * @return the value of the 'Cycles' attribute. + * @see #setCycles(int) + * @see fr.obeo.dsl.arduino.ArduinoPackage#getThread_Cycles() + * @model + * @generated + */ + int getCycles(); + + /** + * Sets the value of the '{@link fr.obeo.dsl.arduino.Thread#getCycles Cycles}' attribute. + * + * + * @param value the new value of the 'Cycles' attribute. + * @see #getCycles() + * @generated + */ + void setCycles(int value); + + /** + * Returns the value of the 'Current Instruction' reference. + * + *

+ * If the meaning of the 'Current Instruction' reference isn't clear, + * there really should be more of a description here... + *

+ * + * @return the value of the 'Current Instruction' reference. + * @see #setCurrentInstruction(Instruction) + * @see fr.obeo.dsl.arduino.ArduinoPackage#getThread_CurrentInstruction() + * @model + * @generated + */ + Instruction getCurrentInstruction(); + + /** + * Sets the value of the '{@link fr.obeo.dsl.arduino.Thread#getCurrentInstruction Current Instruction}' reference. + * + * + * @param value the new value of the 'Current Instruction' reference. + * @see #getCurrentInstruction() + * @generated + */ + void setCurrentInstruction(Instruction value); + + /** + * Returns the value of the 'First' reference. + * + *

+ * If the meaning of the 'First' reference isn't clear, + * there really should be more of a description here... + *

+ * + * @return the value of the 'First' reference. + * @see #setFirst(ThreadInstructionBlock) + * @see fr.obeo.dsl.arduino.ArduinoPackage#getThread_First() + * @model + * @generated + */ + ThreadInstructionBlock getFirst(); + + /** + * Sets the value of the '{@link fr.obeo.dsl.arduino.Thread#getFirst First}' reference. + * + * + * @param value the new value of the 'First' reference. + * @see #getFirst() + * @generated + */ + void setFirst(ThreadInstructionBlock value); + + /** + * Returns the value of the 'Last' reference. + * + *

+ * If the meaning of the 'Last' reference isn't clear, + * there really should be more of a description here... + *

+ * + * @return the value of the 'Last' reference. + * @see #setLast(ThreadInstructionBlock) + * @see fr.obeo.dsl.arduino.ArduinoPackage#getThread_Last() + * @model + * @generated + */ + ThreadInstructionBlock getLast(); + + /** + * Sets the value of the '{@link fr.obeo.dsl.arduino.Thread#getLast Last}' reference. + * + * + * @param value the new value of the 'Last' reference. + * @see #getLast() + * @generated + */ + void setLast(ThreadInstructionBlock value); + + /** + * + * + * @model + * @generated + */ + void execute(); + +} // Thread diff --git a/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino/src-gen/fr/obeo/dsl/arduino/ThreadInstructionBlock.java b/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino/src-gen/fr/obeo/dsl/arduino/ThreadInstructionBlock.java new file mode 100644 index 00000000..de020fc9 --- /dev/null +++ b/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino/src-gen/fr/obeo/dsl/arduino/ThreadInstructionBlock.java @@ -0,0 +1,67 @@ +/** + * Copyright (c) 2013 Obeo. + * 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: + * Obeo - initial API and implementation + */ +package fr.obeo.dsl.arduino; + + +/** + * + * A representation of the model object 'Thread Instruction Block'. + * + * + *

+ * The following features are supported: + *

    + *
  • {@link fr.obeo.dsl.arduino.ThreadInstructionBlock#getThread Thread}
  • + *
+ *

+ * + * @see fr.obeo.dsl.arduino.ArduinoPackage#getThreadInstructionBlock() + * @model abstract="true" + * @generated + */ +public interface ThreadInstructionBlock extends NamedElement { + /** + * Returns the value of the 'Thread' container reference. + * It is bidirectional and its opposite is '{@link fr.obeo.dsl.arduino.Thread#getBlocks Blocks}'. + * + *

+ * If the meaning of the 'Thread' container reference isn't clear, + * there really should be more of a description here... + *

+ * + * @return the value of the 'Thread' container reference. + * @see #setThread(fr.obeo.dsl.arduino.Thread) + * @see fr.obeo.dsl.arduino.ArduinoPackage#getThreadInstructionBlock_Thread() + * @see fr.obeo.dsl.arduino.Thread#getBlocks + * @model opposite="blocks" transient="false" + * @generated + */ + fr.obeo.dsl.arduino.Thread getThread(); + + /** + * Sets the value of the '{@link fr.obeo.dsl.arduino.ThreadInstructionBlock#getThread Thread}' container reference. + * + * + * @param value the new value of the 'Thread' container reference. + * @see #getThread() + * @generated + */ + void setThread(fr.obeo.dsl.arduino.Thread value); + + /** + * + * + * @model + * @generated + */ + void execute(); + +} // ThreadInstructionBlock diff --git a/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino/src-gen/fr/obeo/dsl/arduino/Time.java b/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino/src-gen/fr/obeo/dsl/arduino/Time.java new file mode 100644 index 00000000..3ea77021 --- /dev/null +++ b/dev/language_workbench_concurrency_demo/fr.obeo.dsl.arduino/src-gen/fr/obeo/dsl/arduino/Time.java @@ -0,0 +1,215 @@ +/** + * Copyright (c) 2013 Obeo. + * 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: + * Obeo - initial API and implementation + */ +package fr.obeo.dsl.arduino; + +import java.util.Arrays; +import java.util.Collections; +import java.util.List; + +import org.eclipse.emf.common.util.Enumerator; + +/** + * + * A representation of the literals of the enumeration 'Time', + * and utility methods for working with them. + * + * @see fr.obeo.dsl.arduino.ArduinoPackage#getTime() + * @model + * @generated + */ +public enum Time implements Enumerator { + /** + * The 'Milli Second' literal object. + * + * + * @see #MILLI_SECOND_VALUE + * @generated + * @ordered + */ + MILLI_SECOND(0, "MilliSecond", "MilliSecond"), + + /** + * The 'Micro Second' literal object. + * + * + * @see #MICRO_SECOND_VALUE + * @generated + * @ordered + */ + MICRO_SECOND(0, "MicroSecond", "MicroSecond"); + + /** + * The 'Milli Second' literal value. + * + *

+ * If the meaning of 'Milli Second' literal object isn't clear, + * there really should be more of a description here... + *

+ * + * @see #MILLI_SECOND + * @model name="MilliSecond" + * @generated + * @ordered + */ + public static final int MILLI_SECOND_VALUE = 0; + + /** + * The 'Micro Second' literal value. + * + *

+ * If the meaning of 'Micro Second' literal object isn't clear, + * there really should be more of a description here... + *

+ * + * @see #MICRO_SECOND + * @model name="MicroSecond" + * @generated + * @ordered + */ + public static final int MICRO_SECOND_VALUE = 0; + + /** + * An array of all the 'Time' enumerators. + * + * + * @generated + */ + private static final Time[] VALUES_ARRAY = + new Time[] { + MILLI_SECOND, + MICRO_SECOND, + }; + + /** + * A public read-only list of all the 'Time' enumerators. + * + * + * @generated + */ + public static final List