From 03d1e249b3cb9f7069f66f38f55a31a3890d7b3d Mon Sep 17 00:00:00 2001
From: Alberto Debiasi <adebiasi@fbk.eu>
Date: Fri, 2 Feb 2018 16:26:52 +0100
Subject: [PATCH] moved DialogUtils in chess.service

Change-Id: I50449c6a181c8ea844b2245873c0753e08ea2720
Signed-off-by: Alberto Debiasi <adebiasi@fbk.eu>
---
 .../.svn/entries                              |   1 +
 .../.svn/format                               |   1 +
 ...c7a720f53c4ba759f6a29a8898725e49f.svn-base |  38 ++
 ...7f54b0cb886240fc79028e5df4f4d2f71.svn-base |   5 +
 ...a8eea2f6077e4bb8766cef91d7e23c957.svn-base | 230 +++++++
 ...c4ba767010f32a54ef22de71e83bd7e1e.svn-base |   7 +
 ...c623add4d3f561e1355ea35a342f36ae2.svn-base |  38 ++
 ...7fbb26ebbf2802fb421fad281fcfb1a45.svn-base |  28 +
 ...c03bf83525100c2e64ed14e864bbbba56.svn-base |   7 +
 ...55b38f0ccaf7545d9ebcf47f4c31681f1.svn-base |  19 +
 ...82f4b8c74130a6926496ed1a791c9368b.svn-base | 229 +++++++
 ...4ab6670ae76b7b442439794fe1e756c07.svn-base |   1 +
 ...15fd03a9179dbca41effc6570b20b93fe.svn-base |  39 ++
 ...afdfe97c65e99593eaf5f5bfcef7c9c8e.svn-base |  38 ++
 ...ba2e78ea9a2501830d28ef843263b8b9e.svn-base | 240 +++++++
 ...93aefdcc952d4f20dadfee720b6eb3d71.svn-base |  21 +
 ...9cd64896b96e32d8084095dae3cd29532.svn-base | 230 +++++++
 .../.svn/wc.db                                | Bin 0 -> 48128 bytes
 .../.svn/entries                              |   1 +
 .../.svn/format                               |   1 +
 ...30eba71aa8c9453b9b9e7253787bc60f6.svn-base | Bin 0 -> 932 bytes
 ...44d6f87c6be46104640cc63cb249b47ac.svn-base |  23 +
 ...c1df692efeb29a9ed20a7a1e0d39a67a3.svn-base |  47 ++
 ...8882496932ccc76d3d663f4e4c2169b61.svn-base |  21 +
 ...06c23e37b880c71f6166d8166a04fef8d.svn-base | 130 ++++
 ...c4ba767010f32a54ef22de71e83bd7e1e.svn-base |   7 +
 ...5273da4d4c34f47c5fedbd54abd0a0b5f.svn-base | 130 ++++
 ...fdce8a6645a6607604e838a2690e1dc78.svn-base | 397 ++++++++++++
 ...ac55614e8360d1b6078bdff670c439cef.svn-base | Bin 0 -> 219 bytes
 ...4072cdb6f179f7963591717f0f839d8dc.svn-base | 403 ++++++++++++
 ...4bf9ee0c36243ca41198e0eff65f53e5a.svn-base |  47 ++
 ...4e497a5ca4b638f6dc792ae9d2880728f.svn-base | 233 +++++++
 ...c03bf83525100c2e64ed14e864bbbba56.svn-base |   7 +
 ...4ea4a6ce61d973999900a856345c5b0e4.svn-base | 233 +++++++
 ...dc11cc924a70092b06e53da32b8a1cdcc.svn-base | Bin 0 -> 124 bytes
 ...02daed18cb5d937a5022b3b2e9ff71465.svn-base |  47 ++
 ...36712fa0ff91192141e7c8e786f97ac5c.svn-base | 230 +++++++
 ...19df5d46c6d15460ac5b958d39d908dab.svn-base | Bin 0 -> 576 bytes
 ...17e14c1d9592848da5b048389a4da78ee.svn-base |   6 +
 ...1e1dbd12506dc44a4551d12b34728309a.svn-base |  28 +
 ...aa32d569854a45400778e53290bb2f205.svn-base | Bin 0 -> 318 bytes
 ...4ab6670ae76b7b442439794fe1e756c07.svn-base |   1 +
 ...161ff9f2faf64963c08ec0e6bb1e3eec9.svn-base | 397 ++++++++++++
 ...20c066677cb931e85b0941f3abe514693.svn-base | 236 +++++++
 ...910b374f52dba68e819ca53d86900f5e8.svn-base | 397 ++++++++++++
 .../.svn/wc.db                                | Bin 0 -> 58368 bytes
 .../.svn/entries                              |   1 +
 .../.svn/format                               |   1 +
 ...085adb4aa6e6cddf9061185997a361249.svn-base | Bin 0 -> 310 bytes
 ...cac8243537996a9a634978c6154e6d440.svn-base |  53 ++
 ...78c180409845c386b0741a918c4683253.svn-base |  51 ++
 ...f97137f312a53210fba75ea9cf976f8a6.svn-base |  70 ++
 ...107d2284118e825be555399feac014c0c.svn-base |  23 +
 ...2f22793e92e810dea0db2ab3fc75f9cf8.svn-base | Bin 0 -> 110 bytes
 ...c4ba767010f32a54ef22de71e83bd7e1e.svn-base |   7 +
 ...ef1badbee7ff487ea4f24c74c7bacccd6.svn-base |  80 +++
 ...1f72d4935225aa2a066919f3d6d51715f.svn-base |  28 +
 ...0acd9334fc6aaca8460f63315934c4de4.svn-base |  30 +
 ...c03bf83525100c2e64ed14e864bbbba56.svn-base |   7 +
 ...b1429896ca7fce0cf76a3e087ece43e67.svn-base |  51 ++
 ...c6ba18b2d21364eae045602ace2f25859.svn-base |  32 +
 ...d493374bf848f06a11085d0febf7e5082.svn-base |  70 ++
 ...4662cb7fb3b466c098d0063a6b427493f.svn-base | Bin 0 -> 360 bytes
 ...c0fc7e21542c6dcd0272fa546515ab5f1.svn-base |  53 ++
 ...17e14c1d9592848da5b048389a4da78ee.svn-base |   6 +
 ...a319ea279262bffebf0f49f1a15d6186c.svn-base |  70 ++
 ...a6181435b8baa61a3ad4d0e6ef3a62df0.svn-base |  53 ++
 ...4ab6670ae76b7b442439794fe1e756c07.svn-base |   1 +
 ...cffdfc798b57c528a92ec9c7e31fe87d5.svn-base |  51 ++
 ...3158c7f08ab343019633506cd4c44297c.svn-base |  71 +++
 ...d03d0eba9db9303e9b2768678ed4abaaa.svn-base |  59 ++
 ...b6024f1374124340adc5838212ec67be6.svn-base |  23 +
 .../.svn/wc.db                                | Bin 0 -> 66560 bytes
 .../.svn/entries                              |   1 +
 .../.svn/format                               |   1 +
 ...085adb4aa6e6cddf9061185997a361249.svn-base | Bin 0 -> 310 bytes
 ...7a2ce490dc663585afefd58091f4f295d.svn-base |  23 +
 ...2f22793e92e810dea0db2ab3fc75f9cf8.svn-base | Bin 0 -> 110 bytes
 ...36a3939e852a53616459fc8c53bbe6f23.svn-base |  48 ++
 ...c4ba767010f32a54ef22de71e83bd7e1e.svn-base |   7 +
 ...d20713a366801ec4d78fa00337838af07.svn-base |  59 ++
 ...6398830f3d477ab9fca3bc5d685600747.svn-base |  15 +
 ...c03bf83525100c2e64ed14e864bbbba56.svn-base |   7 +
 ...d3cc165733f7cfd5d4c455e8b5a7256fa.svn-base |  51 ++
 ...8e5c2735d88c24d480204048b155241d4.svn-base |  57 ++
 ...24ef9067dd4ea9f5ed38be7cca9142154.svn-base | 137 ++++
 ...4662cb7fb3b466c098d0063a6b427493f.svn-base | Bin 0 -> 360 bytes
 ...17e14c1d9592848da5b048389a4da78ee.svn-base |   6 +
 ...fc488a8635f9d02e9d5c7e8dd81eec63e.svn-base | 137 ++++
 ...4ab6670ae76b7b442439794fe1e756c07.svn-base |   1 +
 ...a4e91af8bbb6205a382bc2609c4df5d63.svn-base | Bin 0 -> 964 bytes
 ...520a05f416239ba3637e56782ef64c388.svn-base |  14 +
 ...4793a843228c38c35b1d04c80916e004f.svn-base | 137 ++++
 ...7141c6f858132f01dd18fe7413bf2e12a.svn-base |  28 +
 .../.svn/wc.db                                | Bin 0 -> 60416 bytes
 .../.svn/entries                              |   1 +
 .../.svn/format                               |   1 +
 ...439b8b9db2780a419efef8b221aa4cb87.svn-base |  64 ++
 ...04c0d8abfe2211780cde1ac1b638b7d3c.svn-base |  50 ++
 ...291601b7ec502197e845c658716a7dd14.svn-base |  16 +
 ...7f54b0cb886240fc79028e5df4f4d2f71.svn-base |   5 +
 ...c4ba767010f32a54ef22de71e83bd7e1e.svn-base |   7 +
 ...c03bf83525100c2e64ed14e864bbbba56.svn-base |   7 +
 ...db08bcadd745d40f8060d0bfda72b3172.svn-base |  28 +
 ...538a6489a3c736fa99de0a9d0575be955.svn-base |  43 ++
 .../.svn/wc.db                                | Bin 0 -> 44032 bytes
 .../.svn/entries                              |   1 +
 .../.svn/format                               |   1 +
 ...3f465a7406d5a4ef9fd99d6d9c71eda40.svn-base | 221 +++++++
 ...daefb5cbe41fdfbda8424cbd3966369cf.svn-base |  98 +++
 ...5f1fda910bf71309d7d53db69b27f0676.svn-base |  34 +
 ...01c259abbf51419fecdf69df431d50e3c.svn-base |  38 ++
 ...7f54b0cb886240fc79028e5df4f4d2f71.svn-base |   5 +
 ...d9ce5e00d821d0025e7486f11a354df15.svn-base |  53 ++
 ...3a2581df5d77ca5097f3c37a26da3f6a0.svn-base |  41 ++
 ...f24285a6eef9f3ac0caff1ef2ca244c1d.svn-base |  38 ++
 ...12712d21d864b1f2fdc74f845fed69b39.svn-base | 601 ++++++++++++++++++
 ...6c4f5c3c3d88d7bd92e2726cd227198a3.svn-base |  65 ++
 ...c03bf83525100c2e64ed14e864bbbba56.svn-base |   7 +
 ...4c31eab84f963678cfa9eefba8b2670c6.svn-base |  57 ++
 ...3f7a70ce16686e9c748f063bd9ad68d30.svn-base |  33 +
 ...75c00d6ea9f2c3ab64543daac42c3969b.svn-base |  28 +
 ...4e18c8a023783082438d43f059bb37194.svn-base |  59 ++
 ...e02b7fd0fbd23c9902e136c185630c76e.svn-base |  49 ++
 ...4b73ffb43bb9ccd4924ed13c67056fb6c.svn-base |  53 ++
 .../.svn/wc.db                                | Bin 0 -> 65536 bytes
 org.polarsys.chess.diagram.ui/.svn/entries    |   1 +
 org.polarsys.chess.diagram.ui/.svn/format     |   1 +
 ...a4da60e880836d8cb5c9e21e6d02b0f8e.svn-base |  79 +++
 ...4879023af12eaa795538c8248348233ac.svn-base | 497 +++++++++++++++
 ...6058f80658443eda797831536021aca09.svn-base | 225 +++++++
 ...40520316d3b229f602d226d665b8caf23.svn-base |  90 +++
 ...0c3d4b33f3bf3f5fb36a563dd02d30c22.svn-base |  28 +
 ...8bf9f1745d1cc4215f1d5a4a13b0591ac.svn-base | 497 +++++++++++++++
 ...7f54b0cb886240fc79028e5df4f4d2f71.svn-base |   5 +
 ...b9d7e0ff6f33e5d2b0b99e9672daa8b49.svn-base | 244 +++++++
 ...c4ba767010f32a54ef22de71e83bd7e1e.svn-base |   7 +
 ...0eccc134fcea0aede9eadb349e3fd54be.svn-base | 229 +++++++
 ...0181db970c9a093452d153089ef390f87.svn-base |  46 ++
 ...f3801fb18a3e2c523c7c9e77993cb78b4.svn-base | 492 ++++++++++++++
 ...90d08e772d81457c55d60c96be17614b4.svn-base |  74 +++
 ...a70324e02980d20c97b386c634185f29f.svn-base |  27 +
 ...c03bf83525100c2e64ed14e864bbbba56.svn-base |   7 +
 ...04a4496be629caae826128b7ee97a24f9.svn-base |  32 +
 ...e8c1e1ec767b72e2cbc8741475d99220f.svn-base |  34 +
 ...255a37b6592178b67c657d13088f2b624.svn-base |  90 +++
 ...517e1d795aee527a4c60cea46fce2d484.svn-base |  90 +++
 ...19694a69f14c72ee46666537feb615cff.svn-base |  28 +
 ...eddf618207b9c8ca271556e4d482aed3f.svn-base |  75 +++
 ...89d13fffee5a24476d2d3176b76a9242b.svn-base | 251 ++++++++
 ...f32fbc82d149503e4d92730c0ca3e7f81.svn-base |  34 +
 ...56bc6c87b876c63a2bad34c9f9738b33e.svn-base | 222 +++++++
 ...5cc3b1f65cfd54a41d0b1f1f34b9c9e88.svn-base |  84 +++
 ...5577796f4072e8f49e57512e2a99418a9.svn-base |  73 +++
 ...2a65328403be9911bc09cdc565857cbfa.svn-base | 113 ++++
 ...5d0bf4a113c47cfb404bfa5ef1fa630cc.svn-base | 106 +++
 ...e64509c69d2ac0827163b8541bdaec00c.svn-base |  79 +++
 ...e11212c83ef3110f0cc6f8823c2e958a8.svn-base | 110 ++++
 ...8ae90ddddc1cd1a1b41125de09eb8ce31.svn-base | 497 +++++++++++++++
 org.polarsys.chess.diagram.ui/.svn/wc.db      | Bin 0 -> 61440 bytes
 .../.svn/entries                              |   1 +
 .../.svn/format                               |   1 +
 ...a4c77351c8eefa068904d6e365c236584.svn-base |  38 ++
 ...e62ff770fb3257122f24111565a3d0e54.svn-base | 112 ++++
 ...7f54b0cb886240fc79028e5df4f4d2f71.svn-base |   5 +
 ...d93d4b7b7b01d2750de95e1254f346427.svn-base | 105 +++
 ...c4ba767010f32a54ef22de71e83bd7e1e.svn-base |   7 +
 ...dcaaee896cd73c7f4a212fab9f6b86ade.svn-base | 105 +++
 ...9a92d9921638be8b75a52208db7d2760e.svn-base |  35 +
 ...55513837a9f7f768df7fc032a56d84600.svn-base |  28 +
 ...0b4e55afe7436fb708720f588e2733c27.svn-base | 105 +++
 ...c03bf83525100c2e64ed14e864bbbba56.svn-base |   7 +
 ...196d5f1da852b2499aade83e29a8e9be3.svn-base |  17 +
 ...4ab6670ae76b7b442439794fe1e756c07.svn-base |   1 +
 ...497796085d5c909a5ecad8fe3c97d5dc0.svn-base |  19 +
 ...2cc9356480a03399e240f459b8e7cb301.svn-base |  38 ++
 ...2ddd54cdb03656b82385d3273f5f8fb09.svn-base |  35 +
 .../.svn/wc.db                                | Bin 0 -> 47104 bytes
 .../META-INF/MANIFEST.MF                      |   1 -
 .../ExportNominalSMsToSmvFilesCommand.java    |   4 +-
 ...rtSelectedNominalSMsToSmvFilesCommand.java |   6 +-
 .../ExportModelToDocumentCommand.java         |   4 +-
 .../ui/commands/GenerateDocumentCommand.java  |   4 +-
 .../diagram/ui/utils/ExportDialogUtils.java   |   8 +-
 .../chess/service/utils/DialogUtils.java      |  48 ++
 185 files changed, 12707 insertions(+), 12 deletions(-)
 create mode 100644 org.polarsys.chess.constraints.constraintEditor/.svn/entries
 create mode 100644 org.polarsys.chess.constraints.constraintEditor/.svn/format
 create mode 100644 org.polarsys.chess.constraints.constraintEditor/.svn/pristine/1a/1ab71f2c7a720f53c4ba759f6a29a8898725e49f.svn-base
 create mode 100644 org.polarsys.chess.constraints.constraintEditor/.svn/pristine/3c/3cbebaa7f54b0cb886240fc79028e5df4f4d2f71.svn-base
 create mode 100644 org.polarsys.chess.constraints.constraintEditor/.svn/pristine/43/4377991a8eea2f6077e4bb8766cef91d7e23c957.svn-base
 create mode 100644 org.polarsys.chess.constraints.constraintEditor/.svn/pristine/51/512bd49c4ba767010f32a54ef22de71e83bd7e1e.svn-base
 create mode 100644 org.polarsys.chess.constraints.constraintEditor/.svn/pristine/5c/5c85c60c623add4d3f561e1355ea35a342f36ae2.svn-base
 create mode 100644 org.polarsys.chess.constraints.constraintEditor/.svn/pristine/7c/7c9b38a7fbb26ebbf2802fb421fad281fcfb1a45.svn-base
 create mode 100644 org.polarsys.chess.constraints.constraintEditor/.svn/pristine/84/840bb71c03bf83525100c2e64ed14e864bbbba56.svn-base
 create mode 100644 org.polarsys.chess.constraints.constraintEditor/.svn/pristine/a9/a988a4055b38f0ccaf7545d9ebcf47f4c31681f1.svn-base
 create mode 100644 org.polarsys.chess.constraints.constraintEditor/.svn/pristine/bf/bfccc7e82f4b8c74130a6926496ed1a791c9368b.svn-base
 create mode 100644 org.polarsys.chess.constraints.constraintEditor/.svn/pristine/ce/ceb68d84ab6670ae76b7b442439794fe1e756c07.svn-base
 create mode 100644 org.polarsys.chess.constraints.constraintEditor/.svn/pristine/d5/d5bbba515fd03a9179dbca41effc6570b20b93fe.svn-base
 create mode 100644 org.polarsys.chess.constraints.constraintEditor/.svn/pristine/e7/e727259afdfe97c65e99593eaf5f5bfcef7c9c8e.svn-base
 create mode 100644 org.polarsys.chess.constraints.constraintEditor/.svn/pristine/f0/f0b30e2ba2e78ea9a2501830d28ef843263b8b9e.svn-base
 create mode 100644 org.polarsys.chess.constraints.constraintEditor/.svn/pristine/f0/f0f591093aefdcc952d4f20dadfee720b6eb3d71.svn-base
 create mode 100644 org.polarsys.chess.constraints.constraintEditor/.svn/pristine/fe/fe05b7d9cd64896b96e32d8084095dae3cd29532.svn-base
 create mode 100644 org.polarsys.chess.constraints.constraintEditor/.svn/wc.db
 create mode 100644 org.polarsys.chess.contracts.contractEditor/.svn/entries
 create mode 100644 org.polarsys.chess.contracts.contractEditor/.svn/format
 create mode 100644 org.polarsys.chess.contracts.contractEditor/.svn/pristine/18/181172530eba71aa8c9453b9b9e7253787bc60f6.svn-base
 create mode 100644 org.polarsys.chess.contracts.contractEditor/.svn/pristine/18/18ab27444d6f87c6be46104640cc63cb249b47ac.svn-base
 create mode 100644 org.polarsys.chess.contracts.contractEditor/.svn/pristine/2f/2f83278c1df692efeb29a9ed20a7a1e0d39a67a3.svn-base
 create mode 100644 org.polarsys.chess.contracts.contractEditor/.svn/pristine/2f/2f95d3e8882496932ccc76d3d663f4e4c2169b61.svn-base
 create mode 100644 org.polarsys.chess.contracts.contractEditor/.svn/pristine/39/39eee5b06c23e37b880c71f6166d8166a04fef8d.svn-base
 create mode 100644 org.polarsys.chess.contracts.contractEditor/.svn/pristine/51/512bd49c4ba767010f32a54ef22de71e83bd7e1e.svn-base
 create mode 100644 org.polarsys.chess.contracts.contractEditor/.svn/pristine/55/55785085273da4d4c34f47c5fedbd54abd0a0b5f.svn-base
 create mode 100644 org.polarsys.chess.contracts.contractEditor/.svn/pristine/57/57ae2bbfdce8a6645a6607604e838a2690e1dc78.svn-base
 create mode 100644 org.polarsys.chess.contracts.contractEditor/.svn/pristine/6b/6b63e80ac55614e8360d1b6078bdff670c439cef.svn-base
 create mode 100644 org.polarsys.chess.contracts.contractEditor/.svn/pristine/6f/6f3e1634072cdb6f179f7963591717f0f839d8dc.svn-base
 create mode 100644 org.polarsys.chess.contracts.contractEditor/.svn/pristine/72/728bd934bf9ee0c36243ca41198e0eff65f53e5a.svn-base
 create mode 100644 org.polarsys.chess.contracts.contractEditor/.svn/pristine/77/77802034e497a5ca4b638f6dc792ae9d2880728f.svn-base
 create mode 100644 org.polarsys.chess.contracts.contractEditor/.svn/pristine/84/840bb71c03bf83525100c2e64ed14e864bbbba56.svn-base
 create mode 100644 org.polarsys.chess.contracts.contractEditor/.svn/pristine/86/86e1fbf4ea4a6ce61d973999900a856345c5b0e4.svn-base
 create mode 100644 org.polarsys.chess.contracts.contractEditor/.svn/pristine/97/97ead69dc11cc924a70092b06e53da32b8a1cdcc.svn-base
 create mode 100644 org.polarsys.chess.contracts.contractEditor/.svn/pristine/98/98173ce02daed18cb5d937a5022b3b2e9ff71465.svn-base
 create mode 100644 org.polarsys.chess.contracts.contractEditor/.svn/pristine/9c/9c4c60436712fa0ff91192141e7c8e786f97ac5c.svn-base
 create mode 100644 org.polarsys.chess.contracts.contractEditor/.svn/pristine/b0/b045a8019df5d46c6d15460ac5b958d39d908dab.svn-base
 create mode 100644 org.polarsys.chess.contracts.contractEditor/.svn/pristine/bd/bdecd7617e14c1d9592848da5b048389a4da78ee.svn-base
 create mode 100644 org.polarsys.chess.contracts.contractEditor/.svn/pristine/c6/c61ac3c1e1dbd12506dc44a4551d12b34728309a.svn-base
 create mode 100644 org.polarsys.chess.contracts.contractEditor/.svn/pristine/ca/ca8c639aa32d569854a45400778e53290bb2f205.svn-base
 create mode 100644 org.polarsys.chess.contracts.contractEditor/.svn/pristine/ce/ceb68d84ab6670ae76b7b442439794fe1e756c07.svn-base
 create mode 100644 org.polarsys.chess.contracts.contractEditor/.svn/pristine/d5/d5cba57161ff9f2faf64963c08ec0e6bb1e3eec9.svn-base
 create mode 100644 org.polarsys.chess.contracts.contractEditor/.svn/pristine/e6/e671d3520c066677cb931e85b0941f3abe514693.svn-base
 create mode 100644 org.polarsys.chess.contracts.contractEditor/.svn/pristine/f6/f65dbd3910b374f52dba68e819ca53d86900f5e8.svn-base
 create mode 100644 org.polarsys.chess.contracts.contractEditor/.svn/wc.db
 create mode 100644 org.polarsys.chess.contracts.hierarchicalContractView/.svn/entries
 create mode 100644 org.polarsys.chess.contracts.hierarchicalContractView/.svn/format
 create mode 100644 org.polarsys.chess.contracts.hierarchicalContractView/.svn/pristine/01/01ab9fd085adb4aa6e6cddf9061185997a361249.svn-base
 create mode 100644 org.polarsys.chess.contracts.hierarchicalContractView/.svn/pristine/0a/0a82249cac8243537996a9a634978c6154e6d440.svn-base
 create mode 100644 org.polarsys.chess.contracts.hierarchicalContractView/.svn/pristine/0d/0d0cfbf78c180409845c386b0741a918c4683253.svn-base
 create mode 100644 org.polarsys.chess.contracts.hierarchicalContractView/.svn/pristine/1b/1b6de9af97137f312a53210fba75ea9cf976f8a6.svn-base
 create mode 100644 org.polarsys.chess.contracts.hierarchicalContractView/.svn/pristine/2d/2d783db107d2284118e825be555399feac014c0c.svn-base
 create mode 100644 org.polarsys.chess.contracts.hierarchicalContractView/.svn/pristine/3d/3dacdbc2f22793e92e810dea0db2ab3fc75f9cf8.svn-base
 create mode 100644 org.polarsys.chess.contracts.hierarchicalContractView/.svn/pristine/51/512bd49c4ba767010f32a54ef22de71e83bd7e1e.svn-base
 create mode 100644 org.polarsys.chess.contracts.hierarchicalContractView/.svn/pristine/76/76a598fef1badbee7ff487ea4f24c74c7bacccd6.svn-base
 create mode 100644 org.polarsys.chess.contracts.hierarchicalContractView/.svn/pristine/7b/7bb731e1f72d4935225aa2a066919f3d6d51715f.svn-base
 create mode 100644 org.polarsys.chess.contracts.hierarchicalContractView/.svn/pristine/7d/7d528da0acd9334fc6aaca8460f63315934c4de4.svn-base
 create mode 100644 org.polarsys.chess.contracts.hierarchicalContractView/.svn/pristine/84/840bb71c03bf83525100c2e64ed14e864bbbba56.svn-base
 create mode 100644 org.polarsys.chess.contracts.hierarchicalContractView/.svn/pristine/85/85626f0b1429896ca7fce0cf76a3e087ece43e67.svn-base
 create mode 100644 org.polarsys.chess.contracts.hierarchicalContractView/.svn/pristine/8a/8a37181c6ba18b2d21364eae045602ace2f25859.svn-base
 create mode 100644 org.polarsys.chess.contracts.hierarchicalContractView/.svn/pristine/93/93162c4d493374bf848f06a11085d0febf7e5082.svn-base
 create mode 100644 org.polarsys.chess.contracts.hierarchicalContractView/.svn/pristine/b8/b84982b4662cb7fb3b466c098d0063a6b427493f.svn-base
 create mode 100644 org.polarsys.chess.contracts.hierarchicalContractView/.svn/pristine/ba/ba4b606c0fc7e21542c6dcd0272fa546515ab5f1.svn-base
 create mode 100644 org.polarsys.chess.contracts.hierarchicalContractView/.svn/pristine/bd/bdecd7617e14c1d9592848da5b048389a4da78ee.svn-base
 create mode 100644 org.polarsys.chess.contracts.hierarchicalContractView/.svn/pristine/c4/c443e0ca319ea279262bffebf0f49f1a15d6186c.svn-base
 create mode 100644 org.polarsys.chess.contracts.hierarchicalContractView/.svn/pristine/c7/c7d0f79a6181435b8baa61a3ad4d0e6ef3a62df0.svn-base
 create mode 100644 org.polarsys.chess.contracts.hierarchicalContractView/.svn/pristine/ce/ceb68d84ab6670ae76b7b442439794fe1e756c07.svn-base
 create mode 100644 org.polarsys.chess.contracts.hierarchicalContractView/.svn/pristine/d2/d216665cffdfc798b57c528a92ec9c7e31fe87d5.svn-base
 create mode 100644 org.polarsys.chess.contracts.hierarchicalContractView/.svn/pristine/e1/e1eef673158c7f08ab343019633506cd4c44297c.svn-base
 create mode 100644 org.polarsys.chess.contracts.hierarchicalContractView/.svn/pristine/f8/f89221dd03d0eba9db9303e9b2768678ed4abaaa.svn-base
 create mode 100644 org.polarsys.chess.contracts.hierarchicalContractView/.svn/pristine/ff/ffd2bf2b6024f1374124340adc5838212ec67be6.svn-base
 create mode 100644 org.polarsys.chess.contracts.hierarchicalContractView/.svn/wc.db
 create mode 100644 org.polarsys.chess.contracts.refinementView/.svn/entries
 create mode 100644 org.polarsys.chess.contracts.refinementView/.svn/format
 create mode 100644 org.polarsys.chess.contracts.refinementView/.svn/pristine/01/01ab9fd085adb4aa6e6cddf9061185997a361249.svn-base
 create mode 100644 org.polarsys.chess.contracts.refinementView/.svn/pristine/1d/1d79d0d7a2ce490dc663585afefd58091f4f295d.svn-base
 create mode 100644 org.polarsys.chess.contracts.refinementView/.svn/pristine/3d/3dacdbc2f22793e92e810dea0db2ab3fc75f9cf8.svn-base
 create mode 100644 org.polarsys.chess.contracts.refinementView/.svn/pristine/46/46b146336a3939e852a53616459fc8c53bbe6f23.svn-base
 create mode 100644 org.polarsys.chess.contracts.refinementView/.svn/pristine/51/512bd49c4ba767010f32a54ef22de71e83bd7e1e.svn-base
 create mode 100644 org.polarsys.chess.contracts.refinementView/.svn/pristine/5b/5b541edd20713a366801ec4d78fa00337838af07.svn-base
 create mode 100644 org.polarsys.chess.contracts.refinementView/.svn/pristine/6a/6a625956398830f3d477ab9fca3bc5d685600747.svn-base
 create mode 100644 org.polarsys.chess.contracts.refinementView/.svn/pristine/84/840bb71c03bf83525100c2e64ed14e864bbbba56.svn-base
 create mode 100644 org.polarsys.chess.contracts.refinementView/.svn/pristine/8f/8f65f89d3cc165733f7cfd5d4c455e8b5a7256fa.svn-base
 create mode 100644 org.polarsys.chess.contracts.refinementView/.svn/pristine/a2/a215d7c8e5c2735d88c24d480204048b155241d4.svn-base
 create mode 100644 org.polarsys.chess.contracts.refinementView/.svn/pristine/a4/a48f4a824ef9067dd4ea9f5ed38be7cca9142154.svn-base
 create mode 100644 org.polarsys.chess.contracts.refinementView/.svn/pristine/b8/b84982b4662cb7fb3b466c098d0063a6b427493f.svn-base
 create mode 100644 org.polarsys.chess.contracts.refinementView/.svn/pristine/bd/bdecd7617e14c1d9592848da5b048389a4da78ee.svn-base
 create mode 100644 org.polarsys.chess.contracts.refinementView/.svn/pristine/bf/bfbd1a7fc488a8635f9d02e9d5c7e8dd81eec63e.svn-base
 create mode 100644 org.polarsys.chess.contracts.refinementView/.svn/pristine/ce/ceb68d84ab6670ae76b7b442439794fe1e756c07.svn-base
 create mode 100644 org.polarsys.chess.contracts.refinementView/.svn/pristine/d3/d34d74fa4e91af8bbb6205a382bc2609c4df5d63.svn-base
 create mode 100644 org.polarsys.chess.contracts.refinementView/.svn/pristine/ed/edaf18f520a05f416239ba3637e56782ef64c388.svn-base
 create mode 100644 org.polarsys.chess.contracts.refinementView/.svn/pristine/ef/efd91704793a843228c38c35b1d04c80916e004f.svn-base
 create mode 100644 org.polarsys.chess.contracts.refinementView/.svn/pristine/f8/f8a9adf7141c6f858132f01dd18fe7413bf2e12a.svn-base
 create mode 100644 org.polarsys.chess.contracts.refinementView/.svn/wc.db
 create mode 100644 org.polarsys.chess.contracts.safetyAnalysis/.svn/entries
 create mode 100644 org.polarsys.chess.contracts.safetyAnalysis/.svn/format
 create mode 100644 org.polarsys.chess.contracts.safetyAnalysis/.svn/pristine/11/1142404439b8b9db2780a419efef8b221aa4cb87.svn-base
 create mode 100644 org.polarsys.chess.contracts.safetyAnalysis/.svn/pristine/1f/1f595a704c0d8abfe2211780cde1ac1b638b7d3c.svn-base
 create mode 100644 org.polarsys.chess.contracts.safetyAnalysis/.svn/pristine/2b/2b6fa5d291601b7ec502197e845c658716a7dd14.svn-base
 create mode 100644 org.polarsys.chess.contracts.safetyAnalysis/.svn/pristine/3c/3cbebaa7f54b0cb886240fc79028e5df4f4d2f71.svn-base
 create mode 100644 org.polarsys.chess.contracts.safetyAnalysis/.svn/pristine/51/512bd49c4ba767010f32a54ef22de71e83bd7e1e.svn-base
 create mode 100644 org.polarsys.chess.contracts.safetyAnalysis/.svn/pristine/84/840bb71c03bf83525100c2e64ed14e864bbbba56.svn-base
 create mode 100644 org.polarsys.chess.contracts.safetyAnalysis/.svn/pristine/aa/aa1bac8db08bcadd745d40f8060d0bfda72b3172.svn-base
 create mode 100644 org.polarsys.chess.contracts.safetyAnalysis/.svn/pristine/df/dfef977538a6489a3c736fa99de0a9d0575be955.svn-base
 create mode 100644 org.polarsys.chess.contracts.safetyAnalysis/.svn/wc.db
 create mode 100644 org.polarsys.chess.contracts.verificationService/.svn/entries
 create mode 100644 org.polarsys.chess.contracts.verificationService/.svn/format
 create mode 100644 org.polarsys.chess.contracts.verificationService/.svn/pristine/15/153f8763f465a7406d5a4ef9fd99d6d9c71eda40.svn-base
 create mode 100644 org.polarsys.chess.contracts.verificationService/.svn/pristine/26/26253aedaefb5cbe41fdfbda8424cbd3966369cf.svn-base
 create mode 100644 org.polarsys.chess.contracts.verificationService/.svn/pristine/29/292ae705f1fda910bf71309d7d53db69b27f0676.svn-base
 create mode 100644 org.polarsys.chess.contracts.verificationService/.svn/pristine/30/309f0d801c259abbf51419fecdf69df431d50e3c.svn-base
 create mode 100644 org.polarsys.chess.contracts.verificationService/.svn/pristine/3c/3cbebaa7f54b0cb886240fc79028e5df4f4d2f71.svn-base
 create mode 100644 org.polarsys.chess.contracts.verificationService/.svn/pristine/53/5360b20d9ce5e00d821d0025e7486f11a354df15.svn-base
 create mode 100644 org.polarsys.chess.contracts.verificationService/.svn/pristine/56/569ce383a2581df5d77ca5097f3c37a26da3f6a0.svn-base
 create mode 100644 org.polarsys.chess.contracts.verificationService/.svn/pristine/57/57f4621f24285a6eef9f3ac0caff1ef2ca244c1d.svn-base
 create mode 100644 org.polarsys.chess.contracts.verificationService/.svn/pristine/61/614442f12712d21d864b1f2fdc74f845fed69b39.svn-base
 create mode 100644 org.polarsys.chess.contracts.verificationService/.svn/pristine/76/7671c586c4f5c3c3d88d7bd92e2726cd227198a3.svn-base
 create mode 100644 org.polarsys.chess.contracts.verificationService/.svn/pristine/84/840bb71c03bf83525100c2e64ed14e864bbbba56.svn-base
 create mode 100644 org.polarsys.chess.contracts.verificationService/.svn/pristine/8f/8f25c814c31eab84f963678cfa9eefba8b2670c6.svn-base
 create mode 100644 org.polarsys.chess.contracts.verificationService/.svn/pristine/9b/9b734c73f7a70ce16686e9c748f063bd9ad68d30.svn-base
 create mode 100644 org.polarsys.chess.contracts.verificationService/.svn/pristine/b2/b20b87675c00d6ea9f2c3ab64543daac42c3969b.svn-base
 create mode 100644 org.polarsys.chess.contracts.verificationService/.svn/pristine/c2/c298ec84e18c8a023783082438d43f059bb37194.svn-base
 create mode 100644 org.polarsys.chess.contracts.verificationService/.svn/pristine/e4/e4f19d2e02b7fd0fbd23c9902e136c185630c76e.svn-base
 create mode 100644 org.polarsys.chess.contracts.verificationService/.svn/pristine/ec/ec0d2cf4b73ffb43bb9ccd4924ed13c67056fb6c.svn-base
 create mode 100644 org.polarsys.chess.contracts.verificationService/.svn/wc.db
 create mode 100644 org.polarsys.chess.diagram.ui/.svn/entries
 create mode 100644 org.polarsys.chess.diagram.ui/.svn/format
 create mode 100644 org.polarsys.chess.diagram.ui/.svn/pristine/0d/0d7589da4da60e880836d8cb5c9e21e6d02b0f8e.svn-base
 create mode 100644 org.polarsys.chess.diagram.ui/.svn/pristine/0e/0e1b8164879023af12eaa795538c8248348233ac.svn-base
 create mode 100644 org.polarsys.chess.diagram.ui/.svn/pristine/1e/1eebefe6058f80658443eda797831536021aca09.svn-base
 create mode 100644 org.polarsys.chess.diagram.ui/.svn/pristine/1f/1f168a040520316d3b229f602d226d665b8caf23.svn-base
 create mode 100644 org.polarsys.chess.diagram.ui/.svn/pristine/2f/2f82f1f0c3d4b33f3bf3f5fb36a563dd02d30c22.svn-base
 create mode 100644 org.polarsys.chess.diagram.ui/.svn/pristine/3a/3a00dcc8bf9f1745d1cc4215f1d5a4a13b0591ac.svn-base
 create mode 100644 org.polarsys.chess.diagram.ui/.svn/pristine/3c/3cbebaa7f54b0cb886240fc79028e5df4f4d2f71.svn-base
 create mode 100644 org.polarsys.chess.diagram.ui/.svn/pristine/46/46337eeb9d7e0ff6f33e5d2b0b99e9672daa8b49.svn-base
 create mode 100644 org.polarsys.chess.diagram.ui/.svn/pristine/51/512bd49c4ba767010f32a54ef22de71e83bd7e1e.svn-base
 create mode 100644 org.polarsys.chess.diagram.ui/.svn/pristine/58/58255b80eccc134fcea0aede9eadb349e3fd54be.svn-base
 create mode 100644 org.polarsys.chess.diagram.ui/.svn/pristine/5e/5e72a410181db970c9a093452d153089ef390f87.svn-base
 create mode 100644 org.polarsys.chess.diagram.ui/.svn/pristine/6b/6bbf21df3801fb18a3e2c523c7c9e77993cb78b4.svn-base
 create mode 100644 org.polarsys.chess.diagram.ui/.svn/pristine/78/786243590d08e772d81457c55d60c96be17614b4.svn-base
 create mode 100644 org.polarsys.chess.diagram.ui/.svn/pristine/82/82105d1a70324e02980d20c97b386c634185f29f.svn-base
 create mode 100644 org.polarsys.chess.diagram.ui/.svn/pristine/84/840bb71c03bf83525100c2e64ed14e864bbbba56.svn-base
 create mode 100644 org.polarsys.chess.diagram.ui/.svn/pristine/8f/8fab20204a4496be629caae826128b7ee97a24f9.svn-base
 create mode 100644 org.polarsys.chess.diagram.ui/.svn/pristine/a1/a1b3cfce8c1e1ec767b72e2cbc8741475d99220f.svn-base
 create mode 100644 org.polarsys.chess.diagram.ui/.svn/pristine/b5/b508959255a37b6592178b67c657d13088f2b624.svn-base
 create mode 100644 org.polarsys.chess.diagram.ui/.svn/pristine/bf/bf32700517e1d795aee527a4c60cea46fce2d484.svn-base
 create mode 100644 org.polarsys.chess.diagram.ui/.svn/pristine/c1/c10808819694a69f14c72ee46666537feb615cff.svn-base
 create mode 100644 org.polarsys.chess.diagram.ui/.svn/pristine/cd/cd422adeddf618207b9c8ca271556e4d482aed3f.svn-base
 create mode 100644 org.polarsys.chess.diagram.ui/.svn/pristine/d0/d08020689d13fffee5a24476d2d3176b76a9242b.svn-base
 create mode 100644 org.polarsys.chess.diagram.ui/.svn/pristine/d1/d1b10e7f32fbc82d149503e4d92730c0ca3e7f81.svn-base
 create mode 100644 org.polarsys.chess.diagram.ui/.svn/pristine/d5/d598a9656bc6c87b876c63a2bad34c9f9738b33e.svn-base
 create mode 100644 org.polarsys.chess.diagram.ui/.svn/pristine/da/da259f35cc3b1f65cfd54a41d0b1f1f34b9c9e88.svn-base
 create mode 100644 org.polarsys.chess.diagram.ui/.svn/pristine/dd/dd5379f5577796f4072e8f49e57512e2a99418a9.svn-base
 create mode 100644 org.polarsys.chess.diagram.ui/.svn/pristine/e7/e72e6532a65328403be9911bc09cdc565857cbfa.svn-base
 create mode 100644 org.polarsys.chess.diagram.ui/.svn/pristine/e9/e9219cb5d0bf4a113c47cfb404bfa5ef1fa630cc.svn-base
 create mode 100644 org.polarsys.chess.diagram.ui/.svn/pristine/ee/ee6b7d8e64509c69d2ac0827163b8541bdaec00c.svn-base
 create mode 100644 org.polarsys.chess.diagram.ui/.svn/pristine/ee/eeb9da4e11212c83ef3110f0cc6f8823c2e958a8.svn-base
 create mode 100644 org.polarsys.chess.diagram.ui/.svn/pristine/f4/f4cb3488ae90ddddc1cd1a1b41125de09eb8ce31.svn-base
 create mode 100644 org.polarsys.chess.diagram.ui/.svn/wc.db
 create mode 100644 org.polarsys.chess.properties.propertyEditor/.svn/entries
 create mode 100644 org.polarsys.chess.properties.propertyEditor/.svn/format
 create mode 100644 org.polarsys.chess.properties.propertyEditor/.svn/pristine/18/18a06f8a4c77351c8eefa068904d6e365c236584.svn-base
 create mode 100644 org.polarsys.chess.properties.propertyEditor/.svn/pristine/1a/1a1c5e8e62ff770fb3257122f24111565a3d0e54.svn-base
 create mode 100644 org.polarsys.chess.properties.propertyEditor/.svn/pristine/3c/3cbebaa7f54b0cb886240fc79028e5df4f4d2f71.svn-base
 create mode 100644 org.polarsys.chess.properties.propertyEditor/.svn/pristine/4f/4f2829bd93d4b7b7b01d2750de95e1254f346427.svn-base
 create mode 100644 org.polarsys.chess.properties.propertyEditor/.svn/pristine/51/512bd49c4ba767010f32a54ef22de71e83bd7e1e.svn-base
 create mode 100644 org.polarsys.chess.properties.propertyEditor/.svn/pristine/56/56aa55ddcaaee896cd73c7f4a212fab9f6b86ade.svn-base
 create mode 100644 org.polarsys.chess.properties.propertyEditor/.svn/pristine/58/5856c1c9a92d9921638be8b75a52208db7d2760e.svn-base
 create mode 100644 org.polarsys.chess.properties.propertyEditor/.svn/pristine/5c/5c0421855513837a9f7f768df7fc032a56d84600.svn-base
 create mode 100644 org.polarsys.chess.properties.propertyEditor/.svn/pristine/81/817e4980b4e55afe7436fb708720f588e2733c27.svn-base
 create mode 100644 org.polarsys.chess.properties.propertyEditor/.svn/pristine/84/840bb71c03bf83525100c2e64ed14e864bbbba56.svn-base
 create mode 100644 org.polarsys.chess.properties.propertyEditor/.svn/pristine/c7/c7b12fd196d5f1da852b2499aade83e29a8e9be3.svn-base
 create mode 100644 org.polarsys.chess.properties.propertyEditor/.svn/pristine/ce/ceb68d84ab6670ae76b7b442439794fe1e756c07.svn-base
 create mode 100644 org.polarsys.chess.properties.propertyEditor/.svn/pristine/e9/e9b73ba497796085d5c909a5ecad8fe3c97d5dc0.svn-base
 create mode 100644 org.polarsys.chess.properties.propertyEditor/.svn/pristine/ef/ef968e72cc9356480a03399e240f459b8e7cb301.svn-base
 create mode 100644 org.polarsys.chess.properties.propertyEditor/.svn/pristine/f5/f542b7f2ddd54cdb03656b82385d3273f5f8fb09.svn-base
 create mode 100644 org.polarsys.chess.properties.propertyEditor/.svn/wc.db
 create mode 100644 plugins/org.polarsys.chess.service/src/org/polarsys/chess/service/utils/DialogUtils.java

diff --git a/org.polarsys.chess.constraints.constraintEditor/.svn/entries b/org.polarsys.chess.constraints.constraintEditor/.svn/entries
new file mode 100644
index 000000000..3cacc0b93
--- /dev/null
+++ b/org.polarsys.chess.constraints.constraintEditor/.svn/entries
@@ -0,0 +1 @@
+12
\ No newline at end of file
diff --git a/org.polarsys.chess.constraints.constraintEditor/.svn/format b/org.polarsys.chess.constraints.constraintEditor/.svn/format
new file mode 100644
index 000000000..3cacc0b93
--- /dev/null
+++ b/org.polarsys.chess.constraints.constraintEditor/.svn/format
@@ -0,0 +1 @@
+12
\ No newline at end of file
diff --git a/org.polarsys.chess.constraints.constraintEditor/.svn/pristine/1a/1ab71f2c7a720f53c4ba759f6a29a8898725e49f.svn-base b/org.polarsys.chess.constraints.constraintEditor/.svn/pristine/1a/1ab71f2c7a720f53c4ba759f6a29a8898725e49f.svn-base
new file mode 100644
index 000000000..deb236805
--- /dev/null
+++ b/org.polarsys.chess.constraints.constraintEditor/.svn/pristine/1a/1ab71f2c7a720f53c4ba759f6a29a8898725e49f.svn-base
@@ -0,0 +1,38 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<?eclipse version="3.4"?>
+<plugin>
+     <extension
+         point="org.eclipse.ui.views.properties.tabbed.propertyTabs">
+      <propertyTabs
+            contributorId="TreeOutlinePage">
+         <propertyTab
+               afterTab="advanced"
+               category="Editors"
+               id="CustomConstraintTab"
+               label="ConstraintEditor+">
+         </propertyTab>       
+      </propertyTabs>
+   </extension>
+   <extension
+         point="org.eclipse.ui.views.properties.tabbed.propertySections">
+      <propertySections
+            contributorId="TreeOutlinePage">
+         <propertySection
+               class="org.polarsys.chess.constraints.constraintEditor.CustomConstraintEditorTab"
+               filter="org.polarsys.chess.constraints.constraintEditor.ConstraintEditorFilter"
+               id="CustomConstraintEditorSection"
+               tab="CustomConstraintTab">
+         </propertySection>
+      </propertySections>
+   </extension>
+   <extension
+         point="org.eclipse.ui.views.properties.tabbed.propertyContributor">
+      <propertyContributor
+            contributorId="TreeOutlinePage">
+         <propertyCategory
+               category="Editors">
+         </propertyCategory>
+      </propertyContributor>
+   </extension>
+
+</plugin>
diff --git a/org.polarsys.chess.constraints.constraintEditor/.svn/pristine/3c/3cbebaa7f54b0cb886240fc79028e5df4f4d2f71.svn-base b/org.polarsys.chess.constraints.constraintEditor/.svn/pristine/3c/3cbebaa7f54b0cb886240fc79028e5df4f4d2f71.svn-base
new file mode 100644
index 000000000..6f20375d6
--- /dev/null
+++ b/org.polarsys.chess.constraints.constraintEditor/.svn/pristine/3c/3cbebaa7f54b0cb886240fc79028e5df4f4d2f71.svn-base
@@ -0,0 +1,5 @@
+source.. = src/
+output.. = bin/
+bin.includes = META-INF/,\
+               .,\
+               plugin.xml
diff --git a/org.polarsys.chess.constraints.constraintEditor/.svn/pristine/43/4377991a8eea2f6077e4bb8766cef91d7e23c957.svn-base b/org.polarsys.chess.constraints.constraintEditor/.svn/pristine/43/4377991a8eea2f6077e4bb8766cef91d7e23c957.svn-base
new file mode 100644
index 000000000..ec88aeb61
--- /dev/null
+++ b/org.polarsys.chess.constraints.constraintEditor/.svn/pristine/43/4377991a8eea2f6077e4bb8766cef91d7e23c957.svn-base
@@ -0,0 +1,230 @@
+/*******************************************************************************
+ * Copyright (C) 2017 Fondazione Bruno Kessler.
+ * 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:
+ *     Alberto Debiasi - initial API and implementation
+ ******************************************************************************/
+package org.polarsys.chess.constraints.constraintEditor;
+
+import org.eclipse.emf.common.util.BasicEList;
+import org.eclipse.emf.common.util.EList;
+import org.eclipse.emf.ecore.resource.Resource;
+import org.eclipse.jface.viewers.ISelection;
+import org.eclipse.papyrus.sysml.portandflows.FlowDirection;
+import org.eclipse.uml2.uml.Class;
+import org.eclipse.uml2.uml.Constraint;
+import org.eclipse.uml2.uml.Element;
+import org.eclipse.uml2.uml.Property;
+import org.polarsys.chess.contracts.profile.chesscontract.util.EntityUtil;
+import org.polarsys.chess.service.internal.utils.SelectionUtil;
+
+import eu.fbk.eclipse.standardtools.constraintEditor.constraintTab.ConstraintEditorTab;
+
+/**
+ * This is the constraint editor designed for the CHESS platform. It extends the
+ * ConstraintEditorTab that is designed to be extended and contains standard
+ * methods not related to specific technologies. The only rule is that it works
+ * for Eclipse based platforms.
+ *
+ */
+public class CustomConstraintEditorTab extends ConstraintEditorTab {
+
+	private SelectionUtil selectionUtil = SelectionUtil.getInstance();
+	private EntityUtil entityUtil = EntityUtil.getInstance();
+
+	@Override
+	public Resource getResourceFromConstraint(Object constraint) {
+
+		return ((Constraint) constraint).eResource();
+	}
+
+	/*
+	 * (non-Javadoc)
+	 * 
+	 * @see eu.fbk.eclipse.standardtools.constraintEditor.constraintTab.
+	 * ConstraintEditorTab#getSubComponentsName(java.lang.Object)
+	 */
+	@Override
+	public String[] getSubComponentsName(Object constraint) {
+		Element umlElement = ((Constraint) constraint).getOwner();
+		EList<String> subCompArr = entityUtil.getSubComponentsNames((Class) umlElement);
+		String[] subComStrArr = new String[subCompArr.size()];
+		return subCompArr.toArray(subComStrArr);
+
+	}
+
+	/*
+	 * (non-Javadoc)
+	 * 
+	 * @see eu.fbk.eclipse.standardtools.constraintEditor.constraintTab.
+	 * ConstraintEditorTab#getSubComponent(java.lang.Object, java.lang.String)
+	 */
+	@Override
+	public Object getSubComponent(Object constraint, String componentName) {
+		Element element = ((Constraint) constraint).getOwner();
+
+		for (Property umlProperty : entityUtil.getSubComponents((Class) element)) {
+			if (umlProperty.getName().compareTo(componentName) == 0) {
+				return entityUtil.getUmlType(umlProperty);
+			}
+		}
+
+		return null;
+	}
+
+	/*
+	 * (non-Javadoc)
+	 * 
+	 * @see eu.fbk.eclipse.standardtools.constraintEditor.constraintTab.
+	 * ConstraintEditorTab#getInputOutputPorts(java.lang.Object)
+	 */
+	@Override
+	public String[] getInputOutputPorts(Object component) {
+		return entityUtil.getPortsNames((Element) component, FlowDirection.INOUT_VALUE);
+	}
+
+	/*
+	 * (non-Javadoc)
+	 * 
+	 * @see eu.fbk.eclipse.standardtools.constraintEditor.constraintTab.
+	 * ConstraintEditorTab#getInputPorts(java.lang.Object)
+	 */
+	@Override
+	public String[] getInputPorts(Object component) {
+		return entityUtil.getPortsNames((Element) component, FlowDirection.IN_VALUE);
+	}
+
+	/*
+	 * (non-Javadoc)
+	 * 
+	 * @see eu.fbk.eclipse.standardtools.constraintEditor.constraintTab.
+	 * ConstraintEditorTab#getOutputPorts(java.lang.Object)
+	 */
+	@Override
+	public String[] getOutputPorts(Object component) {
+		return entityUtil.getPortsNames((Element) component, FlowDirection.OUT_VALUE);
+	}
+
+	/*
+	 * (non-Javadoc)
+	 * 
+	 * @see eu.fbk.eclipse.standardtools.constraintEditor.constraintTab.
+	 * ConstraintEditorTab#getConstraintOwnerInputPorts(java.lang.Object)
+	 */
+	@Override
+	public String[] getConstraintOwnerInputPorts(Object constraint) {
+		Element element = ((Constraint) constraint).getOwner();
+		return getInputPorts(element);
+	}
+
+	/*
+	 * (non-Javadoc)
+	 * 
+	 * @see eu.fbk.eclipse.standardtools.constraintEditor.constraintTab.
+	 * ConstraintEditorTab#getConstraintOwnerOutputPorts(java.lang.Object)
+	 */
+	@Override
+	public String[] getConstraintOwnerOutputPorts(Object constraint) {
+		Element element = ((Constraint) constraint).getOwner();
+		return getOutputPorts(element);
+
+	}
+
+	/*
+	 * (non-Javadoc)
+	 * 
+	 * @see eu.fbk.eclipse.standardtools.constraintEditor.constraintTab.
+	 * ConstraintEditorTab#getConstraintOwnerInputOutputPorts(java.lang.Object)
+	 */
+	@Override
+	public String[] getConstraintOwnerInputOutputPorts(Object constraint) {
+		Element element = ((Constraint) constraint).getOwner();
+		return getInputOutputPorts(element);
+	}
+
+	/*
+	 * (non-Javadoc)
+	 * 
+	 * @see eu.fbk.eclipse.standardtools.constraintEditor.constraintTab.
+	 * ConstraintEditorTab#getConstraintOwnerProperties(java.lang.Object)
+	 */
+	@Override
+	public String[] getConstraintOwnerProperties(Object constraint) {
+		Class element = (Class) ((Constraint) constraint).getOwner();
+		EList<String> attrArr = new BasicEList<String>();
+		attrArr.addAll(entityUtil.getBooleanAttributesNamesExceptsPorts(element));
+
+		String[] attributesStrArr = new String[attrArr.size()];
+		return attrArr.toArray(attributesStrArr);
+	}
+
+	/*
+	 * (non-Javadoc)
+	 * 
+	 * @see eu.fbk.eclipse.standardtools.constraintEditor.constraintTab.
+	 * ConstraintEditorTab#returnConstraint(org.eclipse.jface.viewers.
+	 * ISelection)
+	 */
+	@Override
+	public Object returnConstraint(ISelection selection) {
+		/*
+		 * Object selected = null; if ((selection instanceof
+		 * IStructuredSelection)) {
+		 * 
+		 * List<?> selectionList = ((IStructuredSelection) selection).toList();
+		 * if (selectionList.size() == 1) { selected = selectionList.get(0); } }
+		 * EObject selectedEObject = EMFHelper.getEObject(selected); if
+		 * (selectedEObject != null) { selected = selectedEObject; } if
+		 * (selected instanceof GraphicalEditPart) { selected =
+		 * (((GraphicalEditPart) selected).resolveSemanticElement()); }
+		 */
+
+		Object selectedUmlElement = selectionUtil.getUmlSelectedObject(selection);
+
+		if (selectedUmlElement instanceof Constraint) {
+			return (Constraint) selectedUmlElement;
+		}
+
+		return null;
+	}
+
+	/*
+	 * (non-Javadoc)
+	 * 
+	 * @see eu.fbk.eclipse.standardtools.constraintEditor.constraintTab.
+	 * ConstraintEditorTab#constraintEditorchanged(java.lang.Object,
+	 * java.lang.String)
+	 */
+	@Override
+	public void constraintEditorchanged(Object constraint, String textChanged) {
+		entityUtil.saveConstraint(((Constraint) constraint), textChanged);
+	}
+
+	/*
+	 * (non-Javadoc)
+	 * 
+	 * @see eu.fbk.eclipse.standardtools.constraintEditor.constraintTab.
+	 * ConstraintEditorTab#getConstraintName(java.lang.Object)
+	 */
+	public String getConstraintName(Object constraint) {
+		if (constraint != null) {
+			return ((Constraint) constraint).getQualifiedName();
+		}
+		return null;
+	}
+
+	/*
+	 * (non-Javadoc)
+	 * 
+	 * @see eu.fbk.eclipse.standardtools.constraintEditor.constraintTab.
+	 * ConstraintEditorTab#getStrFromConstraint(java.lang.Object)
+	 */
+	public String getStrFromConstraint(Object constraint) {
+		return ((Constraint) constraint).getSpecification().stringValue();
+	}
+
+}
diff --git a/org.polarsys.chess.constraints.constraintEditor/.svn/pristine/51/512bd49c4ba767010f32a54ef22de71e83bd7e1e.svn-base b/org.polarsys.chess.constraints.constraintEditor/.svn/pristine/51/512bd49c4ba767010f32a54ef22de71e83bd7e1e.svn-base
new file mode 100644
index 000000000..295926d96
--- /dev/null
+++ b/org.polarsys.chess.constraints.constraintEditor/.svn/pristine/51/512bd49c4ba767010f32a54ef22de71e83bd7e1e.svn-base
@@ -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/org.polarsys.chess.constraints.constraintEditor/.svn/pristine/5c/5c85c60c623add4d3f561e1355ea35a342f36ae2.svn-base b/org.polarsys.chess.constraints.constraintEditor/.svn/pristine/5c/5c85c60c623add4d3f561e1355ea35a342f36ae2.svn-base
new file mode 100644
index 000000000..1e48aa911
--- /dev/null
+++ b/org.polarsys.chess.constraints.constraintEditor/.svn/pristine/5c/5c85c60c623add4d3f561e1355ea35a342f36ae2.svn-base
@@ -0,0 +1,38 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<?eclipse version="3.4"?>
+<plugin>
+     <extension
+         point="org.eclipse.ui.views.properties.tabbed.propertyTabs">
+      <propertyTabs
+            contributorId="TreeOutlinePage">
+         <propertyTab
+               afterTab="advanced"
+               category="Editors"
+               id="CustomConstraintTab"
+               label="CustomConstraintEditor">
+         </propertyTab>       
+      </propertyTabs>
+   </extension>
+   <extension
+         point="org.eclipse.ui.views.properties.tabbed.propertySections">
+      <propertySections
+            contributorId="TreeOutlinePage">
+         <propertySection
+               class="org.polarsys.chess.constraints.constraintEditor.CustomConstraintEditorTab"
+               filter="org.polarsys.chess.constraints.constraintEditor.ConstraintEditorFilter"
+               id="CustomConstraintEditorSection"
+               tab="CustomConstraintTab">
+         </propertySection>
+      </propertySections>
+   </extension>
+   <extension
+         point="org.eclipse.ui.views.properties.tabbed.propertyContributor">
+      <propertyContributor
+            contributorId="TreeOutlinePage">
+         <propertyCategory
+               category="Editors">
+         </propertyCategory>
+      </propertyContributor>
+   </extension>
+
+</plugin>
diff --git a/org.polarsys.chess.constraints.constraintEditor/.svn/pristine/7c/7c9b38a7fbb26ebbf2802fb421fad281fcfb1a45.svn-base b/org.polarsys.chess.constraints.constraintEditor/.svn/pristine/7c/7c9b38a7fbb26ebbf2802fb421fad281fcfb1a45.svn-base
new file mode 100644
index 000000000..3d12c92a1
--- /dev/null
+++ b/org.polarsys.chess.constraints.constraintEditor/.svn/pristine/7c/7c9b38a7fbb26ebbf2802fb421fad281fcfb1a45.svn-base
@@ -0,0 +1,28 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+	<name>org.polarsys.chess.constraints.constraintEditor</name>
+	<comment></comment>
+	<projects>
+	</projects>
+	<buildSpec>
+		<buildCommand>
+			<name>org.eclipse.jdt.core.javabuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+		<buildCommand>
+			<name>org.eclipse.pde.ManifestBuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+		<buildCommand>
+			<name>org.eclipse.pde.SchemaBuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+	</buildSpec>
+	<natures>
+		<nature>org.eclipse.pde.PluginNature</nature>
+		<nature>org.eclipse.jdt.core.javanature</nature>
+	</natures>
+</projectDescription>
diff --git a/org.polarsys.chess.constraints.constraintEditor/.svn/pristine/84/840bb71c03bf83525100c2e64ed14e864bbbba56.svn-base b/org.polarsys.chess.constraints.constraintEditor/.svn/pristine/84/840bb71c03bf83525100c2e64ed14e864bbbba56.svn-base
new file mode 100644
index 000000000..b862a296d
--- /dev/null
+++ b/org.polarsys.chess.constraints.constraintEditor/.svn/pristine/84/840bb71c03bf83525100c2e64ed14e864bbbba56.svn-base
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<classpath>
+	<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.8"/>
+	<classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>
+	<classpathentry kind="src" path="src"/>
+	<classpathentry kind="output" path="bin"/>
+</classpath>
diff --git a/org.polarsys.chess.constraints.constraintEditor/.svn/pristine/a9/a988a4055b38f0ccaf7545d9ebcf47f4c31681f1.svn-base b/org.polarsys.chess.constraints.constraintEditor/.svn/pristine/a9/a988a4055b38f0ccaf7545d9ebcf47f4c31681f1.svn-base
new file mode 100644
index 000000000..d162bb95f
--- /dev/null
+++ b/org.polarsys.chess.constraints.constraintEditor/.svn/pristine/a9/a988a4055b38f0ccaf7545d9ebcf47f4c31681f1.svn-base
@@ -0,0 +1,19 @@
+Manifest-Version: 1.0
+Bundle-ManifestVersion: 2
+Bundle-Name: org.polarsys.chess.constraints.constraintEditor
+Bundle-SymbolicName: org.polarsys.chess.constraints.constraintEditor;singleton:=true
+Bundle-Version: 1.0.0.qualifier
+Bundle-RequiredExecutionEnvironment: JavaSE-1.8
+Require-Bundle: org.eclipse.ui.views.properties.tabbed,
+ org.eclipse.core.resources,
+ org.eclipse.emf.edit.ui,
+ org.eclipse.papyrus.infra.emf,
+ org.polarsys.chess.chessmlprofile;bundle-version="0.9.0",
+ org.polarsys.chess.utils
+Import-Package: eu.fbk.eclipse.standardtools.constraintEditor.constraintTab,
+ org.eclipse.emf.edit.ui.action,
+ org.eclipse.gef,
+ org.eclipse.gmf.runtime.diagram.ui.editparts,
+ org.eclipse.papyrus.uml.diagram.common.edit.part,
+ org.eclipse.uml2.uml
+Bundle-Vendor: Fondazione Bruno Kessler
diff --git a/org.polarsys.chess.constraints.constraintEditor/.svn/pristine/bf/bfccc7e82f4b8c74130a6926496ed1a791c9368b.svn-base b/org.polarsys.chess.constraints.constraintEditor/.svn/pristine/bf/bfccc7e82f4b8c74130a6926496ed1a791c9368b.svn-base
new file mode 100644
index 000000000..a5da019aa
--- /dev/null
+++ b/org.polarsys.chess.constraints.constraintEditor/.svn/pristine/bf/bfccc7e82f4b8c74130a6926496ed1a791c9368b.svn-base
@@ -0,0 +1,229 @@
+/*******************************************************************************
+ * Copyright (C) 2017 Fondazione Bruno Kessler.
+ * 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:
+ *     Alberto Debiasi - initial API and implementation
+ ******************************************************************************/
+package org.polarsys.chess.constraints.constraintEditor;
+
+import org.eclipse.emf.common.util.BasicEList;
+import org.eclipse.emf.common.util.EList;
+import org.eclipse.emf.ecore.resource.Resource;
+import org.eclipse.jface.viewers.ISelection;
+import org.eclipse.papyrus.sysml.portandflows.FlowDirection;
+import org.eclipse.uml2.uml.Class;
+import org.eclipse.uml2.uml.Constraint;
+import org.eclipse.uml2.uml.Element;
+import org.eclipse.uml2.uml.Property;
+import org.polarsys.chess.utils.EntityUtil;
+import org.polarsys.chess.utils.SelectionUtil;
+import eu.fbk.eclipse.standardtools.constraintEditor.constraintTab.ConstraintEditorTab;
+
+/**
+ * This is the constraint editor designed for the CHESS platform. It extends the
+ * ConstraintEditorTab that is designed to be extended and contains standard
+ * methods not related to specific technologies. The only rule is that it works
+ * for Eclipse based platforms.
+ *
+ */
+public class CustomConstraintEditorTab extends ConstraintEditorTab {
+
+	private SelectionUtil selectionUtil = SelectionUtil.getInstance();
+	private EntityUtil entityUtil = EntityUtil.getInstance();
+
+	@Override
+	public Resource getResourceFromConstraint(Object constraint) {
+
+		return ((Constraint) constraint).eResource();
+	}
+
+	/*
+	 * (non-Javadoc)
+	 * 
+	 * @see eu.fbk.eclipse.standardtools.constraintEditor.constraintTab.
+	 * ConstraintEditorTab#getSubComponentsName(java.lang.Object)
+	 */
+	@Override
+	public String[] getSubComponentsName(Object constraint) {
+		Element umlElement = ((Constraint) constraint).getOwner();
+		EList<String> subCompArr = entityUtil.getSubComponentsNames((Class) umlElement);
+		String[] subComStrArr = new String[subCompArr.size()];
+		return subCompArr.toArray(subComStrArr);
+
+	}
+
+	/*
+	 * (non-Javadoc)
+	 * 
+	 * @see eu.fbk.eclipse.standardtools.constraintEditor.constraintTab.
+	 * ConstraintEditorTab#getSubComponent(java.lang.Object, java.lang.String)
+	 */
+	@Override
+	public Object getSubComponent(Object constraint, String componentName) {
+		Element element = ((Constraint) constraint).getOwner();
+
+		for (Property umlProperty : entityUtil.getSubComponents((Class) element)) {
+			if (umlProperty.getName().compareTo(componentName) == 0) {
+				return entityUtil.getUmlType(umlProperty);
+			}
+		}
+
+		return null;
+	}
+
+	/*
+	 * (non-Javadoc)
+	 * 
+	 * @see eu.fbk.eclipse.standardtools.constraintEditor.constraintTab.
+	 * ConstraintEditorTab#getInputOutputPorts(java.lang.Object)
+	 */
+	@Override
+	public String[] getInputOutputPorts(Object component) {
+		return entityUtil.getPortsNames((Element) component, FlowDirection.INOUT_VALUE);
+	}
+
+	/*
+	 * (non-Javadoc)
+	 * 
+	 * @see eu.fbk.eclipse.standardtools.constraintEditor.constraintTab.
+	 * ConstraintEditorTab#getInputPorts(java.lang.Object)
+	 */
+	@Override
+	public String[] getInputPorts(Object component) {
+		return entityUtil.getPortsNames((Element) component, FlowDirection.IN_VALUE);
+	}
+
+	/*
+	 * (non-Javadoc)
+	 * 
+	 * @see eu.fbk.eclipse.standardtools.constraintEditor.constraintTab.
+	 * ConstraintEditorTab#getOutputPorts(java.lang.Object)
+	 */
+	@Override
+	public String[] getOutputPorts(Object component) {
+		return entityUtil.getPortsNames((Element) component, FlowDirection.OUT_VALUE);
+	}
+
+	/*
+	 * (non-Javadoc)
+	 * 
+	 * @see eu.fbk.eclipse.standardtools.constraintEditor.constraintTab.
+	 * ConstraintEditorTab#getConstraintOwnerInputPorts(java.lang.Object)
+	 */
+	@Override
+	public String[] getConstraintOwnerInputPorts(Object constraint) {
+		Element element = ((Constraint) constraint).getOwner();
+		return getInputPorts(element);
+	}
+
+	/*
+	 * (non-Javadoc)
+	 * 
+	 * @see eu.fbk.eclipse.standardtools.constraintEditor.constraintTab.
+	 * ConstraintEditorTab#getConstraintOwnerOutputPorts(java.lang.Object)
+	 */
+	@Override
+	public String[] getConstraintOwnerOutputPorts(Object constraint) {
+		Element element = ((Constraint) constraint).getOwner();
+		return getOutputPorts(element);
+
+	}
+
+	/*
+	 * (non-Javadoc)
+	 * 
+	 * @see eu.fbk.eclipse.standardtools.constraintEditor.constraintTab.
+	 * ConstraintEditorTab#getConstraintOwnerInputOutputPorts(java.lang.Object)
+	 */
+	@Override
+	public String[] getConstraintOwnerInputOutputPorts(Object constraint) {
+		Element element = ((Constraint) constraint).getOwner();
+		return getInputOutputPorts(element);
+	}
+
+	/*
+	 * (non-Javadoc)
+	 * 
+	 * @see eu.fbk.eclipse.standardtools.constraintEditor.constraintTab.
+	 * ConstraintEditorTab#getConstraintOwnerProperties(java.lang.Object)
+	 */
+	@Override
+	public String[] getConstraintOwnerProperties(Object constraint) {
+		Class element = (Class) ((Constraint) constraint).getOwner();
+		EList<String> attrArr = new BasicEList<String>();
+		attrArr.addAll(entityUtil.getBooleanAttributesNamesExceptsPorts(element));
+
+		String[] attributesStrArr = new String[attrArr.size()];
+		return attrArr.toArray(attributesStrArr);
+	}
+
+	/*
+	 * (non-Javadoc)
+	 * 
+	 * @see eu.fbk.eclipse.standardtools.constraintEditor.constraintTab.
+	 * ConstraintEditorTab#returnConstraint(org.eclipse.jface.viewers.
+	 * ISelection)
+	 */
+	@Override
+	public Object returnConstraint(ISelection selection) {
+		/*
+		 * Object selected = null; if ((selection instanceof
+		 * IStructuredSelection)) {
+		 * 
+		 * List<?> selectionList = ((IStructuredSelection) selection).toList();
+		 * if (selectionList.size() == 1) { selected = selectionList.get(0); } }
+		 * EObject selectedEObject = EMFHelper.getEObject(selected); if
+		 * (selectedEObject != null) { selected = selectedEObject; } if
+		 * (selected instanceof GraphicalEditPart) { selected =
+		 * (((GraphicalEditPart) selected).resolveSemanticElement()); }
+		 */
+
+		Object selectedUmlElement = selectionUtil.getUmlSelectedObject(selection);
+
+		if (selectedUmlElement instanceof Constraint) {
+			return (Constraint) selectedUmlElement;
+		}
+
+		return null;
+	}
+
+	/*
+	 * (non-Javadoc)
+	 * 
+	 * @see eu.fbk.eclipse.standardtools.constraintEditor.constraintTab.
+	 * ConstraintEditorTab#constraintEditorchanged(java.lang.Object,
+	 * java.lang.String)
+	 */
+	@Override
+	public void constraintEditorchanged(Object constraint, String textChanged) {
+		entityUtil.saveConstraint(((Constraint) constraint), textChanged);
+	}
+
+	/*
+	 * (non-Javadoc)
+	 * 
+	 * @see eu.fbk.eclipse.standardtools.constraintEditor.constraintTab.
+	 * ConstraintEditorTab#getConstraintName(java.lang.Object)
+	 */
+	public String getConstraintName(Object constraint) {
+		if (constraint != null) {
+			return ((Constraint) constraint).getQualifiedName();
+		}
+		return null;
+	}
+
+	/*
+	 * (non-Javadoc)
+	 * 
+	 * @see eu.fbk.eclipse.standardtools.constraintEditor.constraintTab.
+	 * ConstraintEditorTab#getStrFromConstraint(java.lang.Object)
+	 */
+	public String getStrFromConstraint(Object constraint) {
+		return ((Constraint) constraint).getSpecification().stringValue();
+	}
+
+}
diff --git a/org.polarsys.chess.constraints.constraintEditor/.svn/pristine/ce/ceb68d84ab6670ae76b7b442439794fe1e756c07.svn-base b/org.polarsys.chess.constraints.constraintEditor/.svn/pristine/ce/ceb68d84ab6670ae76b7b442439794fe1e756c07.svn-base
new file mode 100644
index 000000000..ae3c17260
--- /dev/null
+++ b/org.polarsys.chess.constraints.constraintEditor/.svn/pristine/ce/ceb68d84ab6670ae76b7b442439794fe1e756c07.svn-base
@@ -0,0 +1 @@
+/bin/
diff --git a/org.polarsys.chess.constraints.constraintEditor/.svn/pristine/d5/d5bbba515fd03a9179dbca41effc6570b20b93fe.svn-base b/org.polarsys.chess.constraints.constraintEditor/.svn/pristine/d5/d5bbba515fd03a9179dbca41effc6570b20b93fe.svn-base
new file mode 100644
index 000000000..27365a5f4
--- /dev/null
+++ b/org.polarsys.chess.constraints.constraintEditor/.svn/pristine/d5/d5bbba515fd03a9179dbca41effc6570b20b93fe.svn-base
@@ -0,0 +1,39 @@
+/*******************************************************************************
+ * Copyright (C) 2017 Fondazione Bruno Kessler.
+ * 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:
+ *     Alberto Debiasi - initial API and implementation
+ ******************************************************************************/
+package org.polarsys.chess.constraints.constraintEditor;
+
+
+import org.eclipse.uml2.uml.Constraint;
+import org.polarsys.chess.utils.ContractEntityUtil;
+import org.polarsys.chess.utils.SelectionUtil;
+
+/**
+ * It Filters the selected objects that are constraints. *
+ */
+public class ConstraintEditorFilter implements org.eclipse.jface.viewers.IFilter {
+
+	private ContractEntityUtil contractEntityUtil = ContractEntityUtil.getInstance();
+	private SelectionUtil selectionUtil = SelectionUtil.getInstance();
+
+	@Override
+	public boolean select(Object selected) {
+
+	
+		Object selectedUmlElement = selectionUtil.getUmlSelectedObject(selected);
+
+		if (selectedUmlElement instanceof Constraint) {
+			if (!contractEntityUtil.isFormalProperty((Constraint) selectedUmlElement)) {
+				return true;
+			}
+		}
+		return false;
+	}
+}
diff --git a/org.polarsys.chess.constraints.constraintEditor/.svn/pristine/e7/e727259afdfe97c65e99593eaf5f5bfcef7c9c8e.svn-base b/org.polarsys.chess.constraints.constraintEditor/.svn/pristine/e7/e727259afdfe97c65e99593eaf5f5bfcef7c9c8e.svn-base
new file mode 100644
index 000000000..c95a29af1
--- /dev/null
+++ b/org.polarsys.chess.constraints.constraintEditor/.svn/pristine/e7/e727259afdfe97c65e99593eaf5f5bfcef7c9c8e.svn-base
@@ -0,0 +1,38 @@
+/*******************************************************************************
+ * Copyright (C) 2017 Fondazione Bruno Kessler.
+ * 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:
+ *     Alberto Debiasi - initial API and implementation
+ ******************************************************************************/
+package org.polarsys.chess.constraints.constraintEditor;
+
+
+import org.eclipse.uml2.uml.Constraint;
+import org.polarsys.chess.contracts.profile.chesscontract.util.ContractEntityUtil;
+import org.polarsys.chess.service.internal.utils.SelectionUtil;
+/**
+ * It Filters the selected objects that are constraints. *
+ */
+public class ConstraintEditorFilter implements org.eclipse.jface.viewers.IFilter {
+
+	private ContractEntityUtil contractEntityUtil = ContractEntityUtil.getInstance();
+	private SelectionUtil selectionUtil = SelectionUtil.getInstance();
+
+	@Override
+	public boolean select(Object selected) {
+
+	
+		Object selectedUmlElement = selectionUtil.getUmlSelectedObject(selected);
+
+		if (selectedUmlElement instanceof Constraint) {
+			if (!contractEntityUtil.isFormalProperty((Constraint) selectedUmlElement)) {
+				return true;
+			}
+		}
+		return false;
+	}
+}
diff --git a/org.polarsys.chess.constraints.constraintEditor/.svn/pristine/f0/f0b30e2ba2e78ea9a2501830d28ef843263b8b9e.svn-base b/org.polarsys.chess.constraints.constraintEditor/.svn/pristine/f0/f0b30e2ba2e78ea9a2501830d28ef843263b8b9e.svn-base
new file mode 100644
index 000000000..d7ca716e7
--- /dev/null
+++ b/org.polarsys.chess.constraints.constraintEditor/.svn/pristine/f0/f0b30e2ba2e78ea9a2501830d28ef843263b8b9e.svn-base
@@ -0,0 +1,240 @@
+/*******************************************************************************
+ * Copyright (C) 2017 Fondazione Bruno Kessler.
+ * 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:
+ *     Alberto Debiasi - initial API and implementation
+ ******************************************************************************/
+package org.polarsys.chess.constraints.constraintEditor;
+
+import java.util.Set;
+
+import org.eclipse.emf.common.util.BasicEList;
+import org.eclipse.emf.common.util.EList;
+import org.eclipse.emf.ecore.resource.Resource;
+import org.eclipse.jface.viewers.ISelection;
+import org.eclipse.papyrus.sysml.portandflows.FlowDirection;
+import org.eclipse.uml2.uml.Class;
+import org.eclipse.uml2.uml.Constraint;
+import org.eclipse.uml2.uml.Element;
+import org.eclipse.uml2.uml.Property;
+import org.polarsys.chess.contracts.profile.chesscontract.util.EntityUtil;
+import org.polarsys.chess.service.internal.utils.SelectionUtil;
+
+import eu.fbk.eclipse.standardtools.constraintEditor.constraintTab.ConstraintEditorTab;
+
+/**
+ * This is the constraint editor designed for the CHESS platform. It extends the
+ * ConstraintEditorTab that is designed to be extended and contains standard
+ * methods not related to specific technologies. The only rule is that it works
+ * for Eclipse based platforms.
+ *
+ */
+public class CustomConstraintEditorTab extends ConstraintEditorTab {
+
+	private SelectionUtil selectionUtil = SelectionUtil.getInstance();
+	private EntityUtil entityUtil = EntityUtil.getInstance();
+
+	@Override
+	public Resource getResourceFromConstraint(Object constraint) {
+
+		return ((Constraint) constraint).eResource();
+	}
+
+	/*
+	 * (non-Javadoc)
+	 * 
+	 * @see eu.fbk.eclipse.standardtools.constraintEditor.constraintTab.
+	 * ConstraintEditorTab#getSubComponentsName(java.lang.Object)
+	 */
+	@Override
+	public String[] getSubComponentsName(Object constraint) {
+		Element umlElement = ((Constraint) constraint).getOwner();
+		Set<String> subCompArr = entityUtil.getSubComponentsNames((Class) umlElement);
+		String[] subComStrArr = new String[subCompArr.size()];
+		return subCompArr.toArray(subComStrArr);
+
+	}
+
+	/*
+	 * (non-Javadoc)
+	 * 
+	 * @see eu.fbk.eclipse.standardtools.constraintEditor.constraintTab.
+	 * ConstraintEditorTab#getSubComponent(java.lang.Object, java.lang.String)
+	 */
+	@Override
+	public Object getSubComponent(Object constraint, String componentName) {
+		Element element = ((Constraint) constraint).getOwner();
+
+		for (Property umlProperty : entityUtil.getSubComponents((Class) element)) {
+			if (umlProperty.getName().compareTo(componentName) == 0) {
+				return entityUtil.getUmlType(umlProperty);
+			}
+		}
+
+		return null;
+	}
+
+	/*
+	 * (non-Javadoc)
+	 * 
+	 * @see eu.fbk.eclipse.standardtools.constraintEditor.constraintTab.
+	 * ConstraintEditorTab#getInputOutputPorts(java.lang.Object)
+	 */
+	@Override
+	public String[] getInputOutputPorts(Object component) {
+		return entityUtil.getPortsNames((Element) component, FlowDirection.INOUT_VALUE);
+	}
+
+	/*
+	 * (non-Javadoc)
+	 * 
+	 * @see eu.fbk.eclipse.standardtools.constraintEditor.constraintTab.
+	 * ConstraintEditorTab#getInputPorts(java.lang.Object)
+	 */
+	@Override
+	public String[] getInputPorts(Object component) {
+		return entityUtil.getPortsNames((Element) component, FlowDirection.IN_VALUE);
+	}
+
+	/*
+	 * (non-Javadoc)
+	 * 
+	 * @see eu.fbk.eclipse.standardtools.constraintEditor.constraintTab.
+	 * ConstraintEditorTab#getOutputPorts(java.lang.Object)
+	 */
+	@Override
+	public String[] getOutputPorts(Object component) {
+		return entityUtil.getPortsNames((Element) component, FlowDirection.OUT_VALUE);
+	}
+
+	/*
+	 * (non-Javadoc)
+	 * 
+	 * @see eu.fbk.eclipse.standardtools.constraintEditor.constraintTab.
+	 * ConstraintEditorTab#getConstraintOwnerInputPorts(java.lang.Object)
+	 */
+	@Override
+	public String[] getConstraintOwnerInputPorts(Object constraint) {
+		Element element = ((Constraint) constraint).getOwner();
+		return getInputPorts(element);
+	}
+
+	/*
+	 * (non-Javadoc)
+	 * 
+	 * @see eu.fbk.eclipse.standardtools.constraintEditor.constraintTab.
+	 * ConstraintEditorTab#getConstraintOwnerOutputPorts(java.lang.Object)
+	 */
+	@Override
+	public String[] getConstraintOwnerOutputPorts(Object constraint) {
+		Element element = ((Constraint) constraint).getOwner();
+		return getOutputPorts(element);
+
+	}
+
+	/*
+	 * (non-Javadoc)
+	 * 
+	 * @see eu.fbk.eclipse.standardtools.constraintEditor.constraintTab.
+	 * ConstraintEditorTab#getConstraintOwnerInputOutputPorts(java.lang.Object)
+	 */
+	@Override
+	public String[] getConstraintOwnerInputOutputPorts(Object constraint) {
+		Element element = ((Constraint) constraint).getOwner();
+		return getInputOutputPorts(element);
+	}
+
+	/*
+	 * (non-Javadoc)
+	 * 
+	 * @see eu.fbk.eclipse.standardtools.constraintEditor.constraintTab.
+	 * ConstraintEditorTab#getConstraintOwnerProperties(java.lang.Object)
+	 */
+	@Override
+	public String[] getConstraintOwnerProperties(Object constraint) {
+		Class element = (Class) ((Constraint) constraint).getOwner();
+		EList<String> attrArr = new BasicEList<String>();
+		attrArr.addAll(entityUtil.getBooleanAttributesNamesExceptsPorts(element));
+
+		String[] attributesStrArr = new String[attrArr.size()];
+		return attrArr.toArray(attributesStrArr);
+	}
+
+	/*
+	 * (non-Javadoc)
+	 * 
+	 * @see eu.fbk.eclipse.standardtools.constraintEditor.constraintTab.
+	 * ConstraintEditorTab#returnConstraint(org.eclipse.jface.viewers.
+	 * ISelection)
+	 */
+	@Override
+	public Object returnConstraint(ISelection selection) {
+		/*
+		 * Object selected = null; if ((selection instanceof
+		 * IStructuredSelection)) {
+		 * 
+		 * List<?> selectionList = ((IStructuredSelection) selection).toList();
+		 * if (selectionList.size() == 1) { selected = selectionList.get(0); } }
+		 * EObject selectedEObject = EMFHelper.getEObject(selected); if
+		 * (selectedEObject != null) { selected = selectedEObject; } if
+		 * (selected instanceof GraphicalEditPart) { selected =
+		 * (((GraphicalEditPart) selected).resolveSemanticElement()); }
+		 */
+
+		Object selectedUmlElement = selectionUtil.getUmlSelectedObject(selection);
+
+		if (selectedUmlElement instanceof Constraint) {
+			return (Constraint) selectedUmlElement;
+		}
+
+		return null;
+	}
+
+	/*
+	 * (non-Javadoc)
+	 * 
+	 * @see eu.fbk.eclipse.standardtools.constraintEditor.constraintTab.
+	 * ConstraintEditorTab#constraintEditorchanged(java.lang.Object,
+	 * java.lang.String)
+	 */
+	@Override
+	public void constraintEditorchanged(Object constraint, String textChanged) {
+		entityUtil.saveConstraint(((Constraint) constraint), textChanged);
+	}
+
+	/*
+	 * (non-Javadoc)
+	 * 
+	 * @see eu.fbk.eclipse.standardtools.constraintEditor.constraintTab.
+	 * ConstraintEditorTab#getConstraintName(java.lang.Object)
+	 */
+	public String getConstraintName(Object constraint) {
+		if (constraint != null) {
+			return ((Constraint) constraint).getQualifiedName();
+		}
+		return null;
+	}
+
+	/*
+	 * (non-Javadoc)
+	 * 
+	 * @see eu.fbk.eclipse.standardtools.constraintEditor.constraintTab.
+	 * ConstraintEditorTab#getStrFromConstraint(java.lang.Object)
+	 */
+	public String getStrFromConstraint(Object constraint) {
+		return ((Constraint) constraint).getSpecification().stringValue();
+	}
+
+	@Override
+	public String[] getEnumValuesFromConstraintOwnerPorts(Object constraint) {
+		Class element = (Class) ((Constraint) constraint).getOwner();
+		return entityUtil.getEnumValuesFromComponentPorts(element);		
+	}
+	
+	
+
+}
diff --git a/org.polarsys.chess.constraints.constraintEditor/.svn/pristine/f0/f0f591093aefdcc952d4f20dadfee720b6eb3d71.svn-base b/org.polarsys.chess.constraints.constraintEditor/.svn/pristine/f0/f0f591093aefdcc952d4f20dadfee720b6eb3d71.svn-base
new file mode 100644
index 000000000..fcf4d7b9d
--- /dev/null
+++ b/org.polarsys.chess.constraints.constraintEditor/.svn/pristine/f0/f0f591093aefdcc952d4f20dadfee720b6eb3d71.svn-base
@@ -0,0 +1,21 @@
+Manifest-Version: 1.0
+Bundle-ManifestVersion: 2
+Bundle-Name: org.polarsys.chess.constraints.constraintEditor
+Bundle-SymbolicName: org.polarsys.chess.constraints.constraintEditor;singleton:=true
+Bundle-Version: 1.0.0.qualifier
+Bundle-RequiredExecutionEnvironment: JavaSE-1.8
+Require-Bundle: org.eclipse.ui.views.properties.tabbed,
+ org.eclipse.core.resources,
+ org.eclipse.emf.edit.ui,
+ org.eclipse.papyrus.infra.emf,
+ org.polarsys.chess.chessmlprofile;bundle-version="0.9.0",
+ org.polarsys.chess.contracts.profile,
+ org.polarsys.chess.core
+Import-Package: eu.fbk.eclipse.standardtools.constraintEditor.constraintTab,
+ org.eclipse.emf.edit.ui.action,
+ org.eclipse.gef,
+ org.eclipse.gmf.runtime.diagram.ui.editparts,
+ org.eclipse.papyrus.uml.diagram.common.edit.part,
+ org.eclipse.uml2.uml,
+ org.polarsys.chess.service.internal.utils
+Bundle-Vendor: Fondazione Bruno Kessler
diff --git a/org.polarsys.chess.constraints.constraintEditor/.svn/pristine/fe/fe05b7d9cd64896b96e32d8084095dae3cd29532.svn-base b/org.polarsys.chess.constraints.constraintEditor/.svn/pristine/fe/fe05b7d9cd64896b96e32d8084095dae3cd29532.svn-base
new file mode 100644
index 000000000..5b58d71c5
--- /dev/null
+++ b/org.polarsys.chess.constraints.constraintEditor/.svn/pristine/fe/fe05b7d9cd64896b96e32d8084095dae3cd29532.svn-base
@@ -0,0 +1,230 @@
+/*******************************************************************************
+ * Copyright (C) 2017 Fondazione Bruno Kessler.
+ * 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:
+ *     Alberto Debiasi - initial API and implementation
+ ******************************************************************************/
+package org.polarsys.chess.constraints.constraintEditor;
+
+import org.eclipse.emf.common.util.BasicEList;
+import org.eclipse.emf.common.util.EList;
+import org.eclipse.emf.ecore.resource.Resource;
+import org.eclipse.jface.viewers.ISelection;
+import org.eclipse.papyrus.sysml.portandflows.FlowDirection;
+import org.eclipse.uml2.uml.Class;
+import org.eclipse.uml2.uml.Constraint;
+import org.eclipse.uml2.uml.Element;
+import org.eclipse.uml2.uml.Property;
+import org.polarsys.chess.core.util.uml.EntityUtil;
+import org.polarsys.chess.service.internal.utils.SelectionUtil;
+
+import eu.fbk.eclipse.standardtools.constraintEditor.constraintTab.ConstraintEditorTab;
+
+/**
+ * This is the constraint editor designed for the CHESS platform. It extends the
+ * ConstraintEditorTab that is designed to be extended and contains standard
+ * methods not related to specific technologies. The only rule is that it works
+ * for Eclipse based platforms.
+ *
+ */
+public class CustomConstraintEditorTab extends ConstraintEditorTab {
+
+	private SelectionUtil selectionUtil = SelectionUtil.getInstance();
+	private EntityUtil entityUtil = EntityUtil.getInstance();
+
+	@Override
+	public Resource getResourceFromConstraint(Object constraint) {
+
+		return ((Constraint) constraint).eResource();
+	}
+
+	/*
+	 * (non-Javadoc)
+	 * 
+	 * @see eu.fbk.eclipse.standardtools.constraintEditor.constraintTab.
+	 * ConstraintEditorTab#getSubComponentsName(java.lang.Object)
+	 */
+	@Override
+	public String[] getSubComponentsName(Object constraint) {
+		Element umlElement = ((Constraint) constraint).getOwner();
+		EList<String> subCompArr = entityUtil.getSubComponentsNames((Class) umlElement);
+		String[] subComStrArr = new String[subCompArr.size()];
+		return subCompArr.toArray(subComStrArr);
+
+	}
+
+	/*
+	 * (non-Javadoc)
+	 * 
+	 * @see eu.fbk.eclipse.standardtools.constraintEditor.constraintTab.
+	 * ConstraintEditorTab#getSubComponent(java.lang.Object, java.lang.String)
+	 */
+	@Override
+	public Object getSubComponent(Object constraint, String componentName) {
+		Element element = ((Constraint) constraint).getOwner();
+
+		for (Property umlProperty : entityUtil.getSubComponents((Class) element)) {
+			if (umlProperty.getName().compareTo(componentName) == 0) {
+				return entityUtil.getUmlType(umlProperty);
+			}
+		}
+
+		return null;
+	}
+
+	/*
+	 * (non-Javadoc)
+	 * 
+	 * @see eu.fbk.eclipse.standardtools.constraintEditor.constraintTab.
+	 * ConstraintEditorTab#getInputOutputPorts(java.lang.Object)
+	 */
+	@Override
+	public String[] getInputOutputPorts(Object component) {
+		return entityUtil.getPortsNames((Element) component, FlowDirection.INOUT_VALUE);
+	}
+
+	/*
+	 * (non-Javadoc)
+	 * 
+	 * @see eu.fbk.eclipse.standardtools.constraintEditor.constraintTab.
+	 * ConstraintEditorTab#getInputPorts(java.lang.Object)
+	 */
+	@Override
+	public String[] getInputPorts(Object component) {
+		return entityUtil.getPortsNames((Element) component, FlowDirection.IN_VALUE);
+	}
+
+	/*
+	 * (non-Javadoc)
+	 * 
+	 * @see eu.fbk.eclipse.standardtools.constraintEditor.constraintTab.
+	 * ConstraintEditorTab#getOutputPorts(java.lang.Object)
+	 */
+	@Override
+	public String[] getOutputPorts(Object component) {
+		return entityUtil.getPortsNames((Element) component, FlowDirection.OUT_VALUE);
+	}
+
+	/*
+	 * (non-Javadoc)
+	 * 
+	 * @see eu.fbk.eclipse.standardtools.constraintEditor.constraintTab.
+	 * ConstraintEditorTab#getConstraintOwnerInputPorts(java.lang.Object)
+	 */
+	@Override
+	public String[] getConstraintOwnerInputPorts(Object constraint) {
+		Element element = ((Constraint) constraint).getOwner();
+		return getInputPorts(element);
+	}
+
+	/*
+	 * (non-Javadoc)
+	 * 
+	 * @see eu.fbk.eclipse.standardtools.constraintEditor.constraintTab.
+	 * ConstraintEditorTab#getConstraintOwnerOutputPorts(java.lang.Object)
+	 */
+	@Override
+	public String[] getConstraintOwnerOutputPorts(Object constraint) {
+		Element element = ((Constraint) constraint).getOwner();
+		return getOutputPorts(element);
+
+	}
+
+	/*
+	 * (non-Javadoc)
+	 * 
+	 * @see eu.fbk.eclipse.standardtools.constraintEditor.constraintTab.
+	 * ConstraintEditorTab#getConstraintOwnerInputOutputPorts(java.lang.Object)
+	 */
+	@Override
+	public String[] getConstraintOwnerInputOutputPorts(Object constraint) {
+		Element element = ((Constraint) constraint).getOwner();
+		return getInputOutputPorts(element);
+	}
+
+	/*
+	 * (non-Javadoc)
+	 * 
+	 * @see eu.fbk.eclipse.standardtools.constraintEditor.constraintTab.
+	 * ConstraintEditorTab#getConstraintOwnerProperties(java.lang.Object)
+	 */
+	@Override
+	public String[] getConstraintOwnerProperties(Object constraint) {
+		Class element = (Class) ((Constraint) constraint).getOwner();
+		EList<String> attrArr = new BasicEList<String>();
+		attrArr.addAll(entityUtil.getBooleanAttributesNamesExceptsPorts(element));
+
+		String[] attributesStrArr = new String[attrArr.size()];
+		return attrArr.toArray(attributesStrArr);
+	}
+
+	/*
+	 * (non-Javadoc)
+	 * 
+	 * @see eu.fbk.eclipse.standardtools.constraintEditor.constraintTab.
+	 * ConstraintEditorTab#returnConstraint(org.eclipse.jface.viewers.
+	 * ISelection)
+	 */
+	@Override
+	public Object returnConstraint(ISelection selection) {
+		/*
+		 * Object selected = null; if ((selection instanceof
+		 * IStructuredSelection)) {
+		 * 
+		 * List<?> selectionList = ((IStructuredSelection) selection).toList();
+		 * if (selectionList.size() == 1) { selected = selectionList.get(0); } }
+		 * EObject selectedEObject = EMFHelper.getEObject(selected); if
+		 * (selectedEObject != null) { selected = selectedEObject; } if
+		 * (selected instanceof GraphicalEditPart) { selected =
+		 * (((GraphicalEditPart) selected).resolveSemanticElement()); }
+		 */
+
+		Object selectedUmlElement = selectionUtil.getUmlSelectedObject(selection);
+
+		if (selectedUmlElement instanceof Constraint) {
+			return (Constraint) selectedUmlElement;
+		}
+
+		return null;
+	}
+
+	/*
+	 * (non-Javadoc)
+	 * 
+	 * @see eu.fbk.eclipse.standardtools.constraintEditor.constraintTab.
+	 * ConstraintEditorTab#constraintEditorchanged(java.lang.Object,
+	 * java.lang.String)
+	 */
+	@Override
+	public void constraintEditorchanged(Object constraint, String textChanged) {
+		entityUtil.saveConstraint(((Constraint) constraint), textChanged);
+	}
+
+	/*
+	 * (non-Javadoc)
+	 * 
+	 * @see eu.fbk.eclipse.standardtools.constraintEditor.constraintTab.
+	 * ConstraintEditorTab#getConstraintName(java.lang.Object)
+	 */
+	public String getConstraintName(Object constraint) {
+		if (constraint != null) {
+			return ((Constraint) constraint).getQualifiedName();
+		}
+		return null;
+	}
+
+	/*
+	 * (non-Javadoc)
+	 * 
+	 * @see eu.fbk.eclipse.standardtools.constraintEditor.constraintTab.
+	 * ConstraintEditorTab#getStrFromConstraint(java.lang.Object)
+	 */
+	public String getStrFromConstraint(Object constraint) {
+		return ((Constraint) constraint).getSpecification().stringValue();
+	}
+
+}
diff --git a/org.polarsys.chess.constraints.constraintEditor/.svn/wc.db b/org.polarsys.chess.constraints.constraintEditor/.svn/wc.db
new file mode 100644
index 0000000000000000000000000000000000000000..1a1a12926864e30673b4122d40b26e634725c532
GIT binary patch
literal 48128
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
AhX4Qo

literal 0
HcmV?d00001

diff --git a/org.polarsys.chess.contracts.contractEditor/.svn/entries b/org.polarsys.chess.contracts.contractEditor/.svn/entries
new file mode 100644
index 000000000..3cacc0b93
--- /dev/null
+++ b/org.polarsys.chess.contracts.contractEditor/.svn/entries
@@ -0,0 +1 @@
+12
\ No newline at end of file
diff --git a/org.polarsys.chess.contracts.contractEditor/.svn/format b/org.polarsys.chess.contracts.contractEditor/.svn/format
new file mode 100644
index 000000000..3cacc0b93
--- /dev/null
+++ b/org.polarsys.chess.contracts.contractEditor/.svn/format
@@ -0,0 +1 @@
+12
\ No newline at end of file
diff --git a/org.polarsys.chess.contracts.contractEditor/.svn/pristine/18/181172530eba71aa8c9453b9b9e7253787bc60f6.svn-base b/org.polarsys.chess.contracts.contractEditor/.svn/pristine/18/181172530eba71aa8c9453b9b9e7253787bc60f6.svn-base
new file mode 100644
index 0000000000000000000000000000000000000000..c48d9a95677cb24967cc55ef2ec1b2ce0c7ce585
GIT binary patch
literal 932
zcmZ`%O-Pkd5dEGdm?0@CMj80@EwY4KR6KDp5?S^`P=N>uV<3rHC{p4=oEJ&<GM`ep
zXwwL$VT+(2-Hr>}1VWg&h+qmLl0*!O><6Z~Zdx^q?_TE4oHJ*>bM)AeWYzinC_kFD
zXl7<6ic$bLI{FY$02xT4R0^0y*nY2?vJfaEA()UbsprkapP5ss6e33dkND4xvG7_M
zK7ljJZfz>fG?zvr8w&e6^ZVlEH%s>oon86yCOMMsNG>1PR+H|W++Vh*=+pdCvUYr7
zYwkdGee8YP^MQpMk3K%mE;*H`9L^s5b78FV`m3_6)8`huqO5`*ymqOuxaVMhS8>)*
z;b5lt&fQD#sG5)og-{921u&uuVPr;OR7PV2K@=oG78F4hG(k{AMN(u%QB*}!*N<pO
zhHNN?YG{T4gg^uo76+t21_VfmM1hJVz>pz%mFGN|NQjikypPF8^c3^@Zkdb;gnVc(
zVj&S<IGOlAAeZ57tRzaRWJ+M<!W@W=#7K?I2!LIxLo=`dE3g3rGGZX(Ae1$TU<d;S
zdJa?$>@eQsC7uW&%*t$zB<w5m5j`csDr~~R7Ruxm%A%~wrVPfuR+r&zVyxzFVF2+(
zyD$e55Ct)Cvk795>d+F_EQSIkNI|@lNf7F?T!fG80|t5tR1WMg-sB~o2%#b-0xGCN
z8b%ZqRdElyx811b4z$SD4?q3p@z0kz>1b0<N!@TN)4P`Vwxf3LLG0qf^s(DTC;Bsa
zgNed--A@aOHm$u)msC9~AIU4V$;Qd~#POcBh9_4lJ~W-Yzkf^FZ2D{STyIVL^m6)4
z%j^4x+j3*u?-lQj_uaa@>({-CL-8N0MPF*`CWpuCe=mK0`MsrK;ziUk)xEeo+S%SZ
Pb#-&iO5;Q<7FGWR?3v&j

literal 0
HcmV?d00001

diff --git a/org.polarsys.chess.contracts.contractEditor/.svn/pristine/18/18ab27444d6f87c6be46104640cc63cb249b47ac.svn-base b/org.polarsys.chess.contracts.contractEditor/.svn/pristine/18/18ab27444d6f87c6be46104640cc63cb249b47ac.svn-base
new file mode 100644
index 000000000..62d81b9cc
--- /dev/null
+++ b/org.polarsys.chess.contracts.contractEditor/.svn/pristine/18/18ab27444d6f87c6be46104640cc63cb249b47ac.svn-base
@@ -0,0 +1,23 @@
+Manifest-Version: 1.0
+Bundle-ManifestVersion: 2
+Bundle-Name: org.polarsys.chess.contracts.contractEditor
+Bundle-SymbolicName: org.polarsys.chess.contracts.contractEditor;singleton:=true
+Bundle-Version: 1.0.0.qualifier
+Bundle-RequiredExecutionEnvironment: JavaSE-1.8
+Require-Bundle: org.eclipse.papyrus.uml.diagram.composite;bundle-version="1.0.0",
+ org.polarsys.chess.chessmlprofile;bundle-version="0.9.0",
+ org.eclipse.papyrus.uml.properties;bundle-version="1.0.0",
+ org.polarsys.chess.contracts.profile,
+ org.polarsys.chess.core
+Bundle-ActivationPolicy: lazy
+Bundle-Vendor: Fondazione Bruno Kessler
+Import-Package: eu.fbk.eclipse.standardtools.contractEditor.core,
+ eu.fbk.eclipse.standardtools.contractEditor.propertyTab,
+ eu.fbk.eclipse.standardtools.contractEditor.view,
+ org.eclipse.emf.cdo.internal.explorer.checkouts;version="4.5.0",
+ org.eclipse.emf.cdo.transfer,
+ org.eclipse.emf.cdo.transfer.ui;version="4.2.300",
+ org.eclipse.ui.navigator.resources,
+ org.eclipse.xtext.ui.editor.embedded,
+ org.polarsys.chess.service.internal.utils
+
diff --git a/org.polarsys.chess.contracts.contractEditor/.svn/pristine/2f/2f83278c1df692efeb29a9ed20a7a1e0d39a67a3.svn-base b/org.polarsys.chess.contracts.contractEditor/.svn/pristine/2f/2f83278c1df692efeb29a9ed20a7a1e0d39a67a3.svn-base
new file mode 100644
index 000000000..3f057b273
--- /dev/null
+++ b/org.polarsys.chess.contracts.contractEditor/.svn/pristine/2f/2f83278c1df692efeb29a9ed20a7a1e0d39a67a3.svn-base
@@ -0,0 +1,47 @@
+/*******************************************************************************
+ * Copyright (C) 2017 Fondazione Bruno Kessler.
+ * 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:
+ *     Alberto Debiasi - initial API and implementation
+ ******************************************************************************/
+package org.polarsys.chess.contracts.contractEditor;
+
+import org.eclipse.uml2.uml.Class;
+import org.eclipse.uml2.uml.Property;
+import org.polarsys.chess.utils.ContractEntityUtil;
+import org.polarsys.chess.utils.EntityUtil;
+import org.polarsys.chess.utils.SelectionUtil;
+
+/**
+ * It filters the selected objects that are contracts or components. *
+ */
+public class CustomContractEditorFilter implements org.eclipse.jface.viewers.IFilter {
+
+	private ContractEntityUtil contractEntityUtil = ContractEntityUtil.getInstance();
+	private SelectionUtil selectionUtil = SelectionUtil.getInstance();
+	private EntityUtil entityUtil = EntityUtil.getInstance();
+
+	@Override
+	public boolean select(Object selection) {
+	
+
+		Object selectedUmlElement = selectionUtil.getUmlSelectedObject(selection);
+
+		if (selectedUmlElement instanceof Property) {
+			if (entityUtil.isComponentInstance((Property) selectedUmlElement)) {
+				return true;
+			}
+			if (contractEntityUtil.isContractProperty((Property) selectedUmlElement)) {
+				return true;
+			}
+		} else if (selectedUmlElement instanceof Class) {
+			return true;
+		}
+
+		return false;
+	}
+}
diff --git a/org.polarsys.chess.contracts.contractEditor/.svn/pristine/2f/2f95d3e8882496932ccc76d3d663f4e4c2169b61.svn-base b/org.polarsys.chess.contracts.contractEditor/.svn/pristine/2f/2f95d3e8882496932ccc76d3d663f4e4c2169b61.svn-base
new file mode 100644
index 000000000..a0a21389c
--- /dev/null
+++ b/org.polarsys.chess.contracts.contractEditor/.svn/pristine/2f/2f95d3e8882496932ccc76d3d663f4e4c2169b61.svn-base
@@ -0,0 +1,21 @@
+Manifest-Version: 1.0
+Bundle-ManifestVersion: 2
+Bundle-Name: org.polarsys.chess.contracts.contractEditor
+Bundle-SymbolicName: org.polarsys.chess.contracts.contractEditor;singleton:=true
+Bundle-Version: 1.0.0.qualifier
+Bundle-RequiredExecutionEnvironment: JavaSE-1.8
+Require-Bundle: org.eclipse.papyrus.uml.diagram.composite;bundle-version="1.0.0",
+ org.polarsys.chess.chessmlprofile;bundle-version="0.9.0",
+ org.eclipse.papyrus.uml.properties;bundle-version="1.0.0",
+ org.polarsys.chess.utils
+Bundle-ActivationPolicy: lazy
+Bundle-Vendor: Fondazione Bruno Kessler
+Import-Package: eu.fbk.eclipse.standardtools.contractEditor.core,
+ eu.fbk.eclipse.standardtools.contractEditor.propertyTab,
+ eu.fbk.eclipse.standardtools.contractEditor.view,
+ org.eclipse.emf.cdo.internal.explorer.checkouts;version="4.5.0",
+ org.eclipse.emf.cdo.transfer,
+ org.eclipse.emf.cdo.transfer.ui;version="4.2.300",
+ org.eclipse.ui.navigator.resources,
+ org.eclipse.xtext.ui.editor.embedded
+
diff --git a/org.polarsys.chess.contracts.contractEditor/.svn/pristine/39/39eee5b06c23e37b880c71f6166d8166a04fef8d.svn-base b/org.polarsys.chess.contracts.contractEditor/.svn/pristine/39/39eee5b06c23e37b880c71f6166d8166a04fef8d.svn-base
new file mode 100644
index 000000000..5a7b50ef2
--- /dev/null
+++ b/org.polarsys.chess.contracts.contractEditor/.svn/pristine/39/39eee5b06c23e37b880c71f6166d8166a04fef8d.svn-base
@@ -0,0 +1,130 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<?eclipse version="3.4"?>
+<plugin>
+  <!--
+   <extension
+         point="org.eclipse.ui.views.properties.tabbed.propertyContributor">
+      <propertyContributor
+            contributorId="TreeOutlinePage">
+         <propertyCategory
+               category="ContractProperty"></propertyCategory>
+      </propertyContributor>
+   </extension>
+-->
+<!--
+ <extension point="org.eclipse.ui.views.properties.tabbed.propertySections">
+	<propertySections contributorId="TreeOutlinePage">
+		<propertySection class="eu.fbk.contract.contractEditor.propertytab.BlockEditPartSection" id="ContractPropertyBlock_v2" tab="Contracts_v2">
+	   		<input type="org.eclipse.papyrus.sysml.diagram.common.edit.part.BlockEditPart"/> 
+		</propertySection>
+		<propertySection class="eu.fbk.contract.contractEditor.propertytab.BlockEditPartSection" id="ContractPropertyClass_v2" tab="Contracts_v2">
+	   		<input type="org.eclipse.papyrus.uml.diagram.clazz.edit.parts.ClassEditPart"/> 
+		</propertySection>
+		<propertySection class="eu.fbk.contract.contractEditor.propertytab.BlockEditPartSection" id="ContractPropertyComponent_v2" tab="Contracts_v2">
+	   		<input type="org.eclipse.papyrus.uml.diagram.clazz.edit.parts.ComponentEditPart"/> 
+		</propertySection>
+		<propertySection class="eu.fbk.contract.contractEditor.propertytab.BlockEditPartSection" id="ContractPropertyBlock_v2" tab="Contracts_v2">
+	   		<input type="org.eclipse.papyrus.sysml.diagram.common.edit.part.BlockCompositeEditPart"/> 
+		</propertySection>
+		<propertySection class="eu.fbk.contract.contractEditor.propertytab.BlockEditPartSection" id="ContractPropertyBlock_v2" tab="Contracts_v2">
+	   		<input type="org.eclipse.papyrus.sysml.diagram.common.edit.part.ConstraintBlockEditPart"/> 
+		</propertySection>
+		<propertySection class="org.polarsys.chess.contracts.chessextension.propertytab.BlockPropertyCompositeEditPartSection" id="ContractPropertyBlockProperty_v2" tab="Contracts_v2">
+	   		<input type="org.eclipse.papyrus.sysml.diagram.common.edit.part.BlockPropertyCompositeEditPart"/> 
+		</propertySection>	
+		<propertySection class="eu.fbk.contract.contractEditor.propertytab.BlockEditPartSection" id="ContractPropertyClassComposite_v2" tab="Contracts_v2">
+	   		<input type="org.eclipse.papyrus.uml.diagram.composite.edit.parts.ClassCompositeEditPart"/> 
+		</propertySection>
+		<propertySection class="eu.fbk.contract.contractEditor.propertytab.BlockEditPartSection" id="ContractPropertyComponentComposite_v2" tab="Contracts_v2">
+	   		<input type="org.eclipse.papyrus.uml.diagram.composite.edit.parts.ComponentCompositeEditPart"/> 
+		</propertySection>
+		<propertySection class="org.polarsys.chess.contracts.chessextension.propertytab.BlockPropertyCompositeEditPartSection" id="ContractPropertyCompositeProperty_v2" tab="Contracts_v2">
+	   		<input type="org.eclipse.papyrus.uml.diagram.composite.edit.parts.PropertyPartEditPartCN"/> 
+		</propertySection>			
+		</propertySections>
+   </extension>
+   -->   
+   <!--
+   <extension
+         point="org.eclipse.ui.views">
+      <view
+            class="eu.fbk.contract.view.contractEditor.CustomContractEditorView"
+            icon="icons/editor.gif"
+            id="eu.fbk.contract.view.contractEditor.ContractEditorView"
+            name="ContractEditorView"
+            restorable="true">
+      </view>
+   </extension>
+   -->
+   <extension
+         point="org.eclipse.ui.views.properties.tabbed.propertyTabs">
+      <propertyTabs
+            contributorId="TreeOutlinePage">
+        <!--
+         <propertyTab
+               afterTab="advanced"
+               category="Editors"
+               id="CustomPropertyTabOld"
+               label="CustomPropertyTabOld">
+         </propertyTab> -->
+         <propertyTab
+               afterTab="advanced"
+               category="Editors"
+               id="CustomContractTab"
+               label="CustomContractEditor">
+         </propertyTab>
+      </propertyTabs>
+   </extension>
+   <extension
+         point="org.eclipse.ui.views.properties.tabbed.propertySections">
+      <propertySections
+            contributorId="TreeOutlinePage">
+             <!--
+         <propertySection
+               class="eu.fbk.contract.view.propertyEditorOld.CustomConstraintEditPartSection"
+               filter="eu.fbk.contract.view.propertyEditorOld.PropertyEditorFilter"
+               id="CustomPropertyEditorSectionOld"
+               tab="CustomPropertyTabOld">
+         </propertySection> -->
+         <propertySection
+               class="org.polarsys.chess.contracts.contractEditor.CustomContractEditorTab"
+               filter="org.polarsys.chess.contracts.contractEditor.CustomContractEditorFilter"
+               id="CustomContractEditorSection"
+               tab="CustomContractTab">
+         </propertySection>
+      </propertySections>
+   </extension>
+   <extension
+         point="org.eclipse.ui.views.properties.tabbed.propertyContributor">
+      <propertyContributor
+            contributorId="TreeOutlinePage">
+         <propertyCategory
+               category="Editors">
+         </propertyCategory>
+      </propertyContributor>
+   </extension>
+   <!--
+   <extension
+         point="org.eclipse.ui.views.properties.tabbed.propertyContributor">
+      <propertyContributor
+            contributorId="TreeOutlinePage"
+            overridableTabListContentProvider="true"
+            typeMapper="eu.fbk.contract.typeMapper.FormalPropertyMapper">
+         <propertyCategory
+               category="ContractProperty">
+         </propertyCategory>
+      </propertyContributor>
+   </extension>
+   -->
+ <!--  <extension
+         point="org.eclipse.ui.views.properties.tabbed.propertyContributor">
+      <propertyContributor
+            contributorId="TreeOutlinePage"
+            tabDescriptorProvider="org.eclipse.papyrus.infra.properties.ui.xwt.XWTTabDescriptorProvider"
+            typeMapper="eu.fbk.contract.typeMapper.ContractMapper">
+         <propertyCategory
+               category="ContractsTabsGroup">
+         </propertyCategory>
+      </propertyContributor>
+   </extension> -->   
+</plugin>
diff --git a/org.polarsys.chess.contracts.contractEditor/.svn/pristine/51/512bd49c4ba767010f32a54ef22de71e83bd7e1e.svn-base b/org.polarsys.chess.contracts.contractEditor/.svn/pristine/51/512bd49c4ba767010f32a54ef22de71e83bd7e1e.svn-base
new file mode 100644
index 000000000..295926d96
--- /dev/null
+++ b/org.polarsys.chess.contracts.contractEditor/.svn/pristine/51/512bd49c4ba767010f32a54ef22de71e83bd7e1e.svn-base
@@ -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/org.polarsys.chess.contracts.contractEditor/.svn/pristine/55/55785085273da4d4c34f47c5fedbd54abd0a0b5f.svn-base b/org.polarsys.chess.contracts.contractEditor/.svn/pristine/55/55785085273da4d4c34f47c5fedbd54abd0a0b5f.svn-base
new file mode 100644
index 000000000..1c9e1837f
--- /dev/null
+++ b/org.polarsys.chess.contracts.contractEditor/.svn/pristine/55/55785085273da4d4c34f47c5fedbd54abd0a0b5f.svn-base
@@ -0,0 +1,130 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<?eclipse version="3.4"?>
+<plugin>
+  <!--
+   <extension
+         point="org.eclipse.ui.views.properties.tabbed.propertyContributor">
+      <propertyContributor
+            contributorId="TreeOutlinePage">
+         <propertyCategory
+               category="ContractProperty"></propertyCategory>
+      </propertyContributor>
+   </extension>
+-->
+<!--
+ <extension point="org.eclipse.ui.views.properties.tabbed.propertySections">
+	<propertySections contributorId="TreeOutlinePage">
+		<propertySection class="eu.fbk.contract.contractEditor.propertytab.BlockEditPartSection" id="ContractPropertyBlock_v2" tab="Contracts_v2">
+	   		<input type="org.eclipse.papyrus.sysml.diagram.common.edit.part.BlockEditPart"/> 
+		</propertySection>
+		<propertySection class="eu.fbk.contract.contractEditor.propertytab.BlockEditPartSection" id="ContractPropertyClass_v2" tab="Contracts_v2">
+	   		<input type="org.eclipse.papyrus.uml.diagram.clazz.edit.parts.ClassEditPart"/> 
+		</propertySection>
+		<propertySection class="eu.fbk.contract.contractEditor.propertytab.BlockEditPartSection" id="ContractPropertyComponent_v2" tab="Contracts_v2">
+	   		<input type="org.eclipse.papyrus.uml.diagram.clazz.edit.parts.ComponentEditPart"/> 
+		</propertySection>
+		<propertySection class="eu.fbk.contract.contractEditor.propertytab.BlockEditPartSection" id="ContractPropertyBlock_v2" tab="Contracts_v2">
+	   		<input type="org.eclipse.papyrus.sysml.diagram.common.edit.part.BlockCompositeEditPart"/> 
+		</propertySection>
+		<propertySection class="eu.fbk.contract.contractEditor.propertytab.BlockEditPartSection" id="ContractPropertyBlock_v2" tab="Contracts_v2">
+	   		<input type="org.eclipse.papyrus.sysml.diagram.common.edit.part.ConstraintBlockEditPart"/> 
+		</propertySection>
+		<propertySection class="org.polarsys.chess.contracts.chessextension.propertytab.BlockPropertyCompositeEditPartSection" id="ContractPropertyBlockProperty_v2" tab="Contracts_v2">
+	   		<input type="org.eclipse.papyrus.sysml.diagram.common.edit.part.BlockPropertyCompositeEditPart"/> 
+		</propertySection>	
+		<propertySection class="eu.fbk.contract.contractEditor.propertytab.BlockEditPartSection" id="ContractPropertyClassComposite_v2" tab="Contracts_v2">
+	   		<input type="org.eclipse.papyrus.uml.diagram.composite.edit.parts.ClassCompositeEditPart"/> 
+		</propertySection>
+		<propertySection class="eu.fbk.contract.contractEditor.propertytab.BlockEditPartSection" id="ContractPropertyComponentComposite_v2" tab="Contracts_v2">
+	   		<input type="org.eclipse.papyrus.uml.diagram.composite.edit.parts.ComponentCompositeEditPart"/> 
+		</propertySection>
+		<propertySection class="org.polarsys.chess.contracts.chessextension.propertytab.BlockPropertyCompositeEditPartSection" id="ContractPropertyCompositeProperty_v2" tab="Contracts_v2">
+	   		<input type="org.eclipse.papyrus.uml.diagram.composite.edit.parts.PropertyPartEditPartCN"/> 
+		</propertySection>			
+		</propertySections>
+   </extension>
+   -->   
+   <!--
+   <extension
+         point="org.eclipse.ui.views">
+      <view
+            class="eu.fbk.contract.view.contractEditor.CustomContractEditorView"
+            icon="icons/editor.gif"
+            id="eu.fbk.contract.view.contractEditor.ContractEditorView"
+            name="ContractEditorView"
+            restorable="true">
+      </view>
+   </extension>
+   -->
+   <extension
+         point="org.eclipse.ui.views.properties.tabbed.propertyTabs">
+      <propertyTabs
+            contributorId="TreeOutlinePage">
+        <!--
+         <propertyTab
+               afterTab="advanced"
+               category="Editors"
+               id="CustomPropertyTabOld"
+               label="CustomPropertyTabOld">
+         </propertyTab> -->
+         <propertyTab
+               afterTab="advanced"
+               category="Editors"
+               id="CustomContractTab"
+               label="ContractEditor+">
+         </propertyTab>
+      </propertyTabs>
+   </extension>
+   <extension
+         point="org.eclipse.ui.views.properties.tabbed.propertySections">
+      <propertySections
+            contributorId="TreeOutlinePage">
+             <!--
+         <propertySection
+               class="eu.fbk.contract.view.propertyEditorOld.CustomConstraintEditPartSection"
+               filter="eu.fbk.contract.view.propertyEditorOld.PropertyEditorFilter"
+               id="CustomPropertyEditorSectionOld"
+               tab="CustomPropertyTabOld">
+         </propertySection> -->
+         <propertySection
+               class="org.polarsys.chess.contracts.contractEditor.CustomContractEditorTab"
+               filter="org.polarsys.chess.contracts.contractEditor.CustomContractEditorFilter"
+               id="CustomContractEditorSection"
+               tab="CustomContractTab">
+         </propertySection>
+      </propertySections>
+   </extension>
+   <extension
+         point="org.eclipse.ui.views.properties.tabbed.propertyContributor">
+      <propertyContributor
+            contributorId="TreeOutlinePage">
+         <propertyCategory
+               category="Editors">
+         </propertyCategory>
+      </propertyContributor>
+   </extension>
+   <!--
+   <extension
+         point="org.eclipse.ui.views.properties.tabbed.propertyContributor">
+      <propertyContributor
+            contributorId="TreeOutlinePage"
+            overridableTabListContentProvider="true"
+            typeMapper="eu.fbk.contract.typeMapper.FormalPropertyMapper">
+         <propertyCategory
+               category="ContractProperty">
+         </propertyCategory>
+      </propertyContributor>
+   </extension>
+   -->
+ <!--  <extension
+         point="org.eclipse.ui.views.properties.tabbed.propertyContributor">
+      <propertyContributor
+            contributorId="TreeOutlinePage"
+            tabDescriptorProvider="org.eclipse.papyrus.infra.properties.ui.xwt.XWTTabDescriptorProvider"
+            typeMapper="eu.fbk.contract.typeMapper.ContractMapper">
+         <propertyCategory
+               category="ContractsTabsGroup">
+         </propertyCategory>
+      </propertyContributor>
+   </extension> -->   
+</plugin>
diff --git a/org.polarsys.chess.contracts.contractEditor/.svn/pristine/57/57ae2bbfdce8a6645a6607604e838a2690e1dc78.svn-base b/org.polarsys.chess.contracts.contractEditor/.svn/pristine/57/57ae2bbfdce8a6645a6607604e838a2690e1dc78.svn-base
new file mode 100644
index 000000000..196ca3a44
--- /dev/null
+++ b/org.polarsys.chess.contracts.contractEditor/.svn/pristine/57/57ae2bbfdce8a6645a6607604e838a2690e1dc78.svn-base
@@ -0,0 +1,397 @@
+/*******************************************************************************
+ * Copyright (C) 2017 Fondazione Bruno Kessler.
+ * 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:
+ *     Alberto Debiasi - initial API and implementation
+ ******************************************************************************/
+package org.polarsys.chess.contracts.contractEditor;
+
+import org.eclipse.emf.common.util.BasicEList;
+import org.eclipse.emf.common.util.EList;
+import org.eclipse.emf.ecore.resource.Resource;
+import org.eclipse.emf.transaction.RecordingCommand;
+import org.eclipse.emf.transaction.TransactionalEditingDomain;
+import org.eclipse.emf.transaction.util.TransactionUtil;
+import org.eclipse.jface.viewers.ISelection;
+import org.eclipse.papyrus.infra.widgets.editors.TreeSelectorDialog;
+import org.eclipse.papyrus.sysml.portandflows.FlowDirection;
+import org.eclipse.papyrus.uml.diagram.composite.part.Messages;
+import org.eclipse.papyrus.uml.tools.providers.UMLContentProvider;
+import org.eclipse.papyrus.uml.tools.providers.UMLLabelProvider;
+import org.eclipse.swt.widgets.Display;
+import org.eclipse.uml2.uml.Class;
+import org.eclipse.uml2.uml.Constraint;
+import org.eclipse.uml2.uml.Element;
+import org.eclipse.uml2.uml.Property;
+import org.eclipse.uml2.uml.UMLPackage;
+import org.polarsys.chess.contracts.profile.chesscontract.util.ContractEntityUtil;
+import org.polarsys.chess.core.util.uml.EntityUtil;
+import org.polarsys.chess.service.internal.utils.SelectionUtil;
+
+import eu.fbk.eclipse.standardtools.contractEditor.propertyTab.ContractEditorTab;
+
+/**
+ * This is the contract editor designed for the CHESS platform. It extends the
+ * ContractEditorTab that is designed to be extended and contains standard
+ * methods not related to specific technologies. The only rule is that it
+ * requires Eclipse based platforms.
+ *
+ */
+public class CustomContractEditorTab extends ContractEditorTab {
+
+	private ContractEntityUtil contractEntityUtil = ContractEntityUtil.getInstance();
+	private SelectionUtil selectionUtil = SelectionUtil.getInstance();
+	private EntityUtil entityUtil = EntityUtil.getInstance();
+
+	@Override
+	public Resource getResourceFromContract(Object contract) {
+		return ((Class) contract).eResource();
+	}
+
+	/*
+	 * (non-Javadoc)
+	 * 
+	 * @see
+	 * eu.fbk.eclipse.standardtools.contractEditor.propertyTab.ContractEditorTab
+	 * #getContractOwnerInputPorts(java.lang.Object)
+	 */
+	@Override
+	public String[] getContractOwnerInputPorts(Object contract) {
+		Element umlOwner = entityUtil.getOwner((Element) contract);
+		return entityUtil.getPortsNames(umlOwner, FlowDirection.IN_VALUE);
+	}
+
+	/*
+	 * (non-Javadoc)
+	 * 
+	 * @see
+	 * eu.fbk.eclipse.standardtools.contractEditor.propertyTab.ContractEditorTab
+	 * #getContractOwnerOutputPorts(java.lang.Object)
+	 */
+	@Override
+	public String[] getContractOwnerOutputPorts(Object contract) {
+		Element umlOwner = entityUtil.getOwner((Element) contract);
+		return entityUtil.getPortsNames(umlOwner, FlowDirection.OUT_VALUE);
+	}
+
+	/*
+	 * (non-Javadoc)
+	 * 
+	 * @see
+	 * eu.fbk.eclipse.standardtools.contractEditor.propertyTab.ContractEditorTab
+	 * #getContractOwnerInputOutputPorts(java.lang.Object)
+	 */
+	@Override
+	public String[] getContractOwnerInputOutputPorts(Object contract) {
+		Element umlOwner = entityUtil.getOwner((Element) contract);
+		return entityUtil.getPortsNames(umlOwner, FlowDirection.INOUT_VALUE);
+
+	}
+
+	/*
+	 * (non-Javadoc)
+	 * 
+	 * @see
+	 * eu.fbk.eclipse.standardtools.contractEditor.propertyTab.ContractEditorTab
+	 * #getContractOwnerAttributes(java.lang.Object)
+	 */
+	@Override
+	public String[] getContractOwnerAttributes(Object contract) {
+		Element element = ((Class) contract).getOwner();
+		EList<String> attrArr = new BasicEList<String>();
+
+		attrArr.addAll(entityUtil.getBooleanAttributesNamesExceptsPorts(element));
+		String[] attributesStrArr = new String[attrArr.size()];
+		return attrArr.toArray(attributesStrArr);
+
+	}
+
+	/*
+	 * (non-Javadoc)
+	 * 
+	 * @see
+	 * eu.fbk.eclipse.standardtools.contractEditor.propertyTab.ContractEditorTab
+	 * #returnComponent(org.eclipse.jface.viewers.ISelection)
+	 */
+	@Override
+	public Object returnComponent(ISelection selection) {
+
+		Object selectedUmlElement = selectionUtil.getUmlSelectedObject(selection);
+
+		if (selectedUmlElement instanceof Property) {
+			if (entityUtil.isComponentInstance((Property) selectedUmlElement)) {
+				Class umlClass = entityUtil.getUmlType((Property) selectedUmlElement);
+
+				if (!contractEntityUtil.isContract(umlClass)) {
+					return umlClass;
+				}
+			}
+		} else if (selectedUmlElement instanceof Class) {
+			if (!contractEntityUtil.isContract((Class) selectedUmlElement)) {
+				return selectedUmlElement;
+			}
+		}
+
+		return null;
+	}
+
+	/*
+	 * (non-Javadoc)
+	 * 
+	 * @see
+	 * eu.fbk.eclipse.standardtools.contractEditor.propertyTab.ContractEditorTab
+	 * #returnContract(org.eclipse.jface.viewers.ISelection)
+	 */
+	@Override
+	public Object returnContract(ISelection selection) {
+
+	
+		Object selectedUmlElement = selectionUtil.getUmlSelectedObject(selection);
+
+		if (selectedUmlElement instanceof Property) {
+			if (contractEntityUtil.isContractProperty((Property) selectedUmlElement)) {
+				return entityUtil.getUmlType((Property) selectedUmlElement);
+			}
+
+			if (entityUtil.isComponentInstance((Property) selectedUmlElement)) {
+				Class classType = entityUtil.getUmlType((Property) selectedUmlElement);
+				if (contractEntityUtil.isContract(classType)) {
+					return classType;
+				}
+			}
+		} else if (selectedUmlElement instanceof Class) {
+			if (contractEntityUtil.isContract((Class) selectedUmlElement)) {
+				return selectedUmlElement;
+			}
+		}
+
+		return null;
+	}
+
+	/*
+	 * (non-Javadoc)
+	 * 
+	 * @see
+	 * eu.fbk.eclipse.standardtools.contractEditor.propertyTab.ContractEditorTab
+	 * #getContractListStr(java.lang.Object)
+	 */
+	@Override
+	public String[] getContractListStr(Object component) {
+		EList<String> contractNames = new BasicEList<String>();
+
+		for (Property prop : ((Class) component).getAttributes()) {
+			if (contractEntityUtil.isContractProperty(prop)) {
+				if (prop.getType() == null) {
+					contractNames.add(prop.getName() + " : <TYPE NOT DEFINED>");
+				} else {
+					contractNames.add(prop.getName() + " : " + prop.getType().getName());
+				}
+			}
+		}
+
+		String[] contractNamesArr = new String[contractNames.size()];
+		return contractNames.toArray(contractNamesArr);
+	}
+
+	/*
+	 * (non-Javadoc)
+	 * 
+	 * @see
+	 * eu.fbk.eclipse.standardtools.contractEditor.propertyTab.ContractEditorTab
+	 * #extractContractFromComponent(java.lang.Object, java.lang.String)
+	 */
+	@Override
+	public Object extractContractFromComponent(Object component, String contractName) {
+		return contractEntityUtil.getUmlContract((Class) component, contractName);
+	}
+
+	/*
+	 * (non-Javadoc)
+	 * 
+	 * @see
+	 * eu.fbk.eclipse.standardtools.contractEditor.propertyTab.ContractEditorTab
+	 * #getComponentName(java.lang.Object)
+	 */
+	@Override
+	public String getComponentName(Object component) {
+		return ((Class) component).getQualifiedName();
+	}
+
+	/*
+	 * (non-Javadoc)
+	 * 
+	 * @see
+	 * eu.fbk.eclipse.standardtools.contractEditor.propertyTab.ContractEditorTab
+	 * #createAssumption(java.lang.Object)
+	 */
+	@Override
+	public void createAssumption(Object contract) {
+		contractEntityUtil.createAssumptionToUmlContract((Class) contract);
+	}
+
+	/*
+	 * (non-Javadoc)
+	 * 
+	 * @see
+	 * eu.fbk.eclipse.standardtools.contractEditor.propertyTab.ContractEditorTab
+	 * #browseAssumptionButtonPressed(java.lang.Object)
+	 */
+	@Override
+	public String browseAssumptionButtonPressed(Object contract) {
+
+		TransactionalEditingDomain domain = TransactionUtil.getEditingDomain(contract);
+		domain.getCommandStack().execute(new RecordingCommand(domain) {
+
+			@Override
+			protected void doExecute() {
+				Constraint assumeConstraint = selectProperty(contract);
+				if (assumeConstraint != null) {
+					contractEntityUtil.assignUmlConstraintAssumptionToUmlContract(assumeConstraint, (Class) contract);
+				}
+			}
+		});
+		return contractEntityUtil.getAssumeStrFromUmlContract((Class) contract);
+
+	}
+
+	/*
+	 * (non-Javadoc)
+	 * 
+	 * @see
+	 * eu.fbk.eclipse.standardtools.contractEditor.propertyTab.ContractEditorTab
+	 * #createGuarantee(java.lang.Object)
+	 */
+	@Override
+	public void createGuarantee(Object contract) {
+		contractEntityUtil.createGuaranteeToUmlContract((Class) contract);
+	}
+
+	/*
+	 * (non-Javadoc)
+	 * 
+	 * @see
+	 * eu.fbk.eclipse.standardtools.contractEditor.propertyTab.ContractEditorTab
+	 * #browseGuaranteeButtonPressed(java.lang.Object)
+	 */
+	@Override
+	public String browseGuaranteeButtonPressed(Object contract) {
+		TransactionalEditingDomain domain = TransactionUtil.getEditingDomain(contract);
+		domain.getCommandStack().execute(new RecordingCommand(domain) {
+
+			@Override
+			protected void doExecute() {
+				Constraint guaranteeConstraint = selectProperty(contract);
+				if (guaranteeConstraint != null) {
+					contractEntityUtil.assignUmlConstraintGuaranteeToUmlContract(guaranteeConstraint, (Class) contract);
+				}
+
+			}
+		});
+		return contractEntityUtil.getGuaranteeStrFromUmlContract((Class) contract);
+	}
+
+	/*
+	 * (non-Javadoc)
+	 * 
+	 * @see
+	 * eu.fbk.eclipse.standardtools.contractEditor.propertyTab.ContractEditorTab
+	 * #guaranteeEditorchanged(java.lang.Object, java.lang.String)
+	 */
+	@Override
+	public void guaranteeEditorchanged(Object contract, String textChanged) {
+		contractEntityUtil.saveFormalProperty("Guarantee", textChanged, (Class) contract);
+	}
+
+	/*
+	 * (non-Javadoc)
+	 * 
+	 * @see
+	 * eu.fbk.eclipse.standardtools.contractEditor.propertyTab.ContractEditorTab
+	 * #assumptionEditorchanged(java.lang.Object, java.lang.String)
+	 */
+	@Override
+	public void assumptionEditorchanged(Object contract, String textChanged) {
+		contractEntityUtil.saveFormalProperty("Assume", textChanged, (Class) contract);
+	}
+
+	/*
+	 * (non-Javadoc)
+	 * 
+	 * @see
+	 * eu.fbk.eclipse.standardtools.contractEditor.propertyTab.ContractEditorTab
+	 * #getContractName(java.lang.Object)
+	 */
+	public String getContractName(Object contract) {
+		if (contract != null) {
+			return ((Class) contract).getQualifiedName();
+		}
+		return null;
+	}
+
+	/*
+	 * (non-Javadoc)
+	 * 
+	 * @see
+	 * eu.fbk.eclipse.standardtools.contractEditor.propertyTab.ContractEditorTab
+	 * #getAssumeStrFromContract(java.lang.Object)
+	 */
+	public String getAssumeStrFromContract(Object contract) {
+		return (contractEntityUtil.getAssumeStrFromUmlContract((Class) contract));
+	}
+
+	/*
+	 * (non-Javadoc)
+	 * 
+	 * @see
+	 * eu.fbk.eclipse.standardtools.contractEditor.propertyTab.ContractEditorTab
+	 * #getGuaranteeStrFromContract(java.lang.Object)
+	 */
+	public String getGuaranteeStrFromContract(Object contract) {
+		return (contractEntityUtil.getGuaranteeStrFromUmlContract((Class) contract));
+	}
+
+	/*
+	 * (non-Javadoc)
+	 * 
+	 * @see
+	 * eu.fbk.eclipse.standardtools.contractEditor.propertyTab.ContractEditorTab
+	 * #createContractProperty(java.lang.Object, java.lang.String)
+	 */
+	@Override
+	public void createContractProperty(Object component, String propertyName) {
+		contractEntityUtil.createContractPropertyToUmlComponent((Class) component, propertyName);
+	}
+
+	/**
+	 * It allows the user to select a formal property to be used as assumption
+	 * or guarantee of a contract.
+	 * 
+	 * @param contract
+	 *            the contract
+	 * @return the formal property selected
+	 */
+	private Constraint selectProperty(Object contract) {
+		TreeSelectorDialog dialog = new TreeSelectorDialog(Display.getDefault().getActiveShell());
+
+		UMLContentProvider provider = new UMLContentProvider(entityUtil.getToPackage((Class) contract),
+				// contract.getOwner(),
+				UMLPackage.eINSTANCE.getPackage_PackagedElement());
+
+		dialog.setContentProvider(provider);
+		dialog.setLabelProvider(new UMLLabelProvider());
+		dialog.setMessage(Messages.UMLModelingAssistantProviderMessage);
+		dialog.setTitle(Messages.UMLModelingAssistantProviderTitle);
+		if (dialog.open() == org.eclipse.jface.window.Window.OK) {
+			Object[] result = dialog.getResult();
+			if (result != null && result.length > 0 && result[0] instanceof Constraint) {
+				return (Constraint) result[0];
+			}
+		}
+		return null;
+	}
+
+}
diff --git a/org.polarsys.chess.contracts.contractEditor/.svn/pristine/6b/6b63e80ac55614e8360d1b6078bdff670c439cef.svn-base b/org.polarsys.chess.contracts.contractEditor/.svn/pristine/6b/6b63e80ac55614e8360d1b6078bdff670c439cef.svn-base
new file mode 100644
index 0000000000000000000000000000000000000000..64d79074260faaa463a8897e9fac0acc5c485212
GIT binary patch
literal 219
zcmZ?wbhEHb6krfwIKlt~4fgT-?c?X$*YCHVzn`I@p}yXJ|Ni;+@9+Qr`@{Tt`}_0l
z=f~T}+uQ&D|9?MFV*dPwhKBg~c%V+82*?1uK=CIFBLjm7gAPa)$W8{<2nE%?l+1aH
z4la0l$VWusyvarlUMEh+AeP3)3vHK=W*8^siBww5?~i77>atiDp{W#fG;S$h%aZO^
n52<j&pH_hhSAEvY=xsW6KlxeW`S;IX3pF-1*XyV&GFSrulCn)2

literal 0
HcmV?d00001

diff --git a/org.polarsys.chess.contracts.contractEditor/.svn/pristine/6f/6f3e1634072cdb6f179f7963591717f0f839d8dc.svn-base b/org.polarsys.chess.contracts.contractEditor/.svn/pristine/6f/6f3e1634072cdb6f179f7963591717f0f839d8dc.svn-base
new file mode 100644
index 000000000..dc0313355
--- /dev/null
+++ b/org.polarsys.chess.contracts.contractEditor/.svn/pristine/6f/6f3e1634072cdb6f179f7963591717f0f839d8dc.svn-base
@@ -0,0 +1,403 @@
+/*******************************************************************************
+ * Copyright (C) 2017 Fondazione Bruno Kessler.
+ * 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:
+ *     Alberto Debiasi - initial API and implementation
+ ******************************************************************************/
+package org.polarsys.chess.contracts.contractEditor;
+
+import org.eclipse.emf.common.util.BasicEList;
+import org.eclipse.emf.common.util.EList;
+import org.eclipse.emf.ecore.resource.Resource;
+import org.eclipse.emf.transaction.RecordingCommand;
+import org.eclipse.emf.transaction.TransactionalEditingDomain;
+import org.eclipse.emf.transaction.util.TransactionUtil;
+import org.eclipse.jface.viewers.ISelection;
+import org.eclipse.papyrus.infra.widgets.editors.TreeSelectorDialog;
+import org.eclipse.papyrus.sysml.portandflows.FlowDirection;
+import org.eclipse.papyrus.uml.diagram.composite.part.Messages;
+import org.eclipse.papyrus.uml.tools.providers.UMLContentProvider;
+import org.eclipse.papyrus.uml.tools.providers.UMLLabelProvider;
+import org.eclipse.swt.widgets.Display;
+import org.eclipse.uml2.uml.Class;
+import org.eclipse.uml2.uml.Constraint;
+import org.eclipse.uml2.uml.Element;
+import org.eclipse.uml2.uml.Property;
+import org.eclipse.uml2.uml.UMLPackage;
+import org.polarsys.chess.contracts.profile.chesscontract.util.ContractEntityUtil;
+import org.polarsys.chess.contracts.profile.chesscontract.util.EntityUtil;
+import org.polarsys.chess.service.internal.utils.SelectionUtil;
+
+import eu.fbk.eclipse.standardtools.contractEditor.propertyTab.ContractEditorTab;
+
+/**
+ * This is the contract editor designed for the CHESS platform. It extends the
+ * ContractEditorTab that is designed to be extended and contains standard
+ * methods not related to specific technologies. The only rule is that it
+ * requires Eclipse based platforms.
+ *
+ */
+public class CustomContractEditorTab extends ContractEditorTab {
+
+	private ContractEntityUtil contractEntityUtil = ContractEntityUtil.getInstance();
+	private SelectionUtil selectionUtil = SelectionUtil.getInstance();
+	private EntityUtil entityUtil = EntityUtil.getInstance();
+
+	@Override
+	public Resource getResourceFromContract(Object contract) {
+		return ((Class) contract).eResource();
+	}
+
+	/*
+	 * (non-Javadoc)
+	 * 
+	 * @see
+	 * eu.fbk.eclipse.standardtools.contractEditor.propertyTab.ContractEditorTab
+	 * #getContractOwnerInputPorts(java.lang.Object)
+	 */
+	@Override
+	public String[] getContractOwnerInputPorts(Object contract) {
+		Element umlOwner = entityUtil.getOwner((Element) contract);
+		return entityUtil.getInputPortsNames(umlOwner);
+	}
+
+	/*
+	 * (non-Javadoc)
+	 * 
+	 * @see
+	 * eu.fbk.eclipse.standardtools.contractEditor.propertyTab.ContractEditorTab
+	 * #getContractOwnerOutputPorts(java.lang.Object)
+	 */
+	@Override
+	public String[] getContractOwnerOutputPorts(Object contract) {
+		Element umlOwner = entityUtil.getOwner((Element) contract);
+		return entityUtil.getOutputPortsNames(umlOwner);
+	}
+
+	/*
+	 * (non-Javadoc)
+	 * 
+	 * @see
+	 * eu.fbk.eclipse.standardtools.contractEditor.propertyTab.ContractEditorTab
+	 * #getContractOwnerInputOutputPorts(java.lang.Object)
+	 */
+	@Override
+	public String[] getContractOwnerInputOutputPorts(Object contract) {
+		Element umlOwner = entityUtil.getOwner((Element) contract);
+		return entityUtil.getInputOutputPortsNames(umlOwner);
+
+	}
+
+	/*
+	 * (non-Javadoc)
+	 * 
+	 * @see
+	 * eu.fbk.eclipse.standardtools.contractEditor.propertyTab.ContractEditorTab
+	 * #getContractOwnerAttributes(java.lang.Object)
+	 */
+	@Override
+	public String[] getContractOwnerAttributes(Object contract) {
+		Element element = ((Class) contract).getOwner();
+		EList<String> attrArr = new BasicEList<String>();
+
+		attrArr.addAll(entityUtil.getBooleanAttributesNamesExceptsPorts(element));
+		String[] attributesStrArr = new String[attrArr.size()];
+		return attrArr.toArray(attributesStrArr);
+
+	}
+
+	/*
+	 * (non-Javadoc)
+	 * 
+	 * @see
+	 * eu.fbk.eclipse.standardtools.contractEditor.propertyTab.ContractEditorTab
+	 * #returnComponent(org.eclipse.jface.viewers.ISelection)
+	 */
+	@Override
+	public Object returnComponent(ISelection selection) {
+
+		Object selectedUmlElement = selectionUtil.getUmlSelectedObject(selection);
+
+		if (selectedUmlElement instanceof Property) {
+			if (entityUtil.isComponentInstance((Property) selectedUmlElement)) {
+				Class umlClass = entityUtil.getUmlType((Property) selectedUmlElement);
+
+				if (!contractEntityUtil.isContract(umlClass)) {
+					return umlClass;
+				}
+			}
+		} else if (selectedUmlElement instanceof Class) {
+			if (!contractEntityUtil.isContract((Class) selectedUmlElement)) {
+				return selectedUmlElement;
+			}
+		}
+
+		return null;
+	}
+
+	/*
+	 * (non-Javadoc)
+	 * 
+	 * @see
+	 * eu.fbk.eclipse.standardtools.contractEditor.propertyTab.ContractEditorTab
+	 * #returnContract(org.eclipse.jface.viewers.ISelection)
+	 */
+	@Override
+	public Object returnContract(ISelection selection) {
+
+	
+		Object selectedUmlElement = selectionUtil.getUmlSelectedObject(selection);
+
+		if (selectedUmlElement instanceof Property) {
+			if (contractEntityUtil.isContractProperty((Property) selectedUmlElement)) {
+				return entityUtil.getUmlType((Property) selectedUmlElement);
+			}
+
+			if (entityUtil.isComponentInstance((Property) selectedUmlElement)) {
+				Class classType = entityUtil.getUmlType((Property) selectedUmlElement);
+				if (contractEntityUtil.isContract(classType)) {
+					return classType;
+				}
+			}
+		} else if (selectedUmlElement instanceof Class) {
+			if (contractEntityUtil.isContract((Class) selectedUmlElement)) {
+				return selectedUmlElement;
+			}
+		}
+
+		return null;
+	}
+
+	/*
+	 * (non-Javadoc)
+	 * 
+	 * @see
+	 * eu.fbk.eclipse.standardtools.contractEditor.propertyTab.ContractEditorTab
+	 * #getContractListStr(java.lang.Object)
+	 */
+	@Override
+	public String[] getContractListStr(Object component) {
+		EList<String> contractNames = new BasicEList<String>();
+
+		for (Property prop : ((Class) component).getAttributes()) {
+			if (contractEntityUtil.isContractProperty(prop)) {
+				if (prop.getType() == null) {
+					contractNames.add(prop.getName() + " : <TYPE NOT DEFINED>");
+				} else {
+					contractNames.add(prop.getName() + " : " + prop.getType().getName());
+				}
+			}
+		}
+
+		String[] contractNamesArr = new String[contractNames.size()];
+		return contractNames.toArray(contractNamesArr);
+	}
+
+	/*
+	 * (non-Javadoc)
+	 * 
+	 * @see
+	 * eu.fbk.eclipse.standardtools.contractEditor.propertyTab.ContractEditorTab
+	 * #extractContractFromComponent(java.lang.Object, java.lang.String)
+	 */
+	@Override
+	public Object extractContractFromComponent(Object component, String contractName) {
+		return contractEntityUtil.getUmlContract((Class) component, contractName);
+	}
+
+	/*
+	 * (non-Javadoc)
+	 * 
+	 * @see
+	 * eu.fbk.eclipse.standardtools.contractEditor.propertyTab.ContractEditorTab
+	 * #getComponentName(java.lang.Object)
+	 */
+	@Override
+	public String getComponentName(Object component) {
+		return ((Class) component).getQualifiedName();
+	}
+
+	/*
+	 * (non-Javadoc)
+	 * 
+	 * @see
+	 * eu.fbk.eclipse.standardtools.contractEditor.propertyTab.ContractEditorTab
+	 * #createAssumption(java.lang.Object)
+	 */
+	@Override
+	public void createAssumption(Object contract) {
+		contractEntityUtil.createAssumptionToUmlContract((Class) contract);
+	}
+
+	/*
+	 * (non-Javadoc)
+	 * 
+	 * @see
+	 * eu.fbk.eclipse.standardtools.contractEditor.propertyTab.ContractEditorTab
+	 * #browseAssumptionButtonPressed(java.lang.Object)
+	 */
+	@Override
+	public String browseAssumptionButtonPressed(Object contract) {
+
+		TransactionalEditingDomain domain = TransactionUtil.getEditingDomain(contract);
+		domain.getCommandStack().execute(new RecordingCommand(domain) {
+
+			@Override
+			protected void doExecute() {
+				Constraint assumeConstraint = selectProperty(contract);
+				if (assumeConstraint != null) {
+					contractEntityUtil.assignUmlConstraintAssumptionToUmlContract(assumeConstraint, (Class) contract);
+				}
+			}
+		});
+		return contractEntityUtil.getAssumeStrFromUmlContract((Class) contract);
+
+	}
+
+	/*
+	 * (non-Javadoc)
+	 * 
+	 * @see
+	 * eu.fbk.eclipse.standardtools.contractEditor.propertyTab.ContractEditorTab
+	 * #createGuarantee(java.lang.Object)
+	 */
+	@Override
+	public void createGuarantee(Object contract) {
+		contractEntityUtil.createGuaranteeToUmlContract((Class) contract);
+	}
+
+	/*
+	 * (non-Javadoc)
+	 * 
+	 * @see
+	 * eu.fbk.eclipse.standardtools.contractEditor.propertyTab.ContractEditorTab
+	 * #browseGuaranteeButtonPressed(java.lang.Object)
+	 */
+	@Override
+	public String browseGuaranteeButtonPressed(Object contract) {
+		TransactionalEditingDomain domain = TransactionUtil.getEditingDomain(contract);
+		domain.getCommandStack().execute(new RecordingCommand(domain) {
+
+			@Override
+			protected void doExecute() {
+				Constraint guaranteeConstraint = selectProperty(contract);
+				if (guaranteeConstraint != null) {
+					contractEntityUtil.assignUmlConstraintGuaranteeToUmlContract(guaranteeConstraint, (Class) contract);
+				}
+
+			}
+		});
+		return contractEntityUtil.getGuaranteeStrFromUmlContract((Class) contract);
+	}
+
+	/*
+	 * (non-Javadoc)
+	 * 
+	 * @see
+	 * eu.fbk.eclipse.standardtools.contractEditor.propertyTab.ContractEditorTab
+	 * #guaranteeEditorchanged(java.lang.Object, java.lang.String)
+	 */
+	@Override
+	public void guaranteeEditorchanged(Object contract, String textChanged) {
+		contractEntityUtil.saveFormalProperty("Guarantee", textChanged, (Class) contract);
+	}
+
+	/*
+	 * (non-Javadoc)
+	 * 
+	 * @see
+	 * eu.fbk.eclipse.standardtools.contractEditor.propertyTab.ContractEditorTab
+	 * #assumptionEditorchanged(java.lang.Object, java.lang.String)
+	 */
+	@Override
+	public void assumptionEditorchanged(Object contract, String textChanged) {
+		contractEntityUtil.saveFormalProperty("Assume", textChanged, (Class) contract);
+	}
+
+	/*
+	 * (non-Javadoc)
+	 * 
+	 * @see
+	 * eu.fbk.eclipse.standardtools.contractEditor.propertyTab.ContractEditorTab
+	 * #getContractName(java.lang.Object)
+	 */
+	public String getContractName(Object contract) {
+		if (contract != null) {
+			return ((Class) contract).getQualifiedName();
+		}
+		return null;
+	}
+
+	/*
+	 * (non-Javadoc)
+	 * 
+	 * @see
+	 * eu.fbk.eclipse.standardtools.contractEditor.propertyTab.ContractEditorTab
+	 * #getAssumeStrFromContract(java.lang.Object)
+	 */
+	public String getAssumeStrFromContract(Object contract) {
+		return (contractEntityUtil.getAssumeStrFromUmlContract((Class) contract));
+	}
+
+	/*
+	 * (non-Javadoc)
+	 * 
+	 * @see
+	 * eu.fbk.eclipse.standardtools.contractEditor.propertyTab.ContractEditorTab
+	 * #getGuaranteeStrFromContract(java.lang.Object)
+	 */
+	public String getGuaranteeStrFromContract(Object contract) {
+		return (contractEntityUtil.getGuaranteeStrFromUmlContract((Class) contract));
+	}
+
+	/*
+	 * (non-Javadoc)
+	 * 
+	 * @see
+	 * eu.fbk.eclipse.standardtools.contractEditor.propertyTab.ContractEditorTab
+	 * #createContractProperty(java.lang.Object, java.lang.String)
+	 */
+	@Override
+	public void createContractProperty(Object component, String propertyName) {
+		contractEntityUtil.createContractPropertyToUmlComponent((Class) component, propertyName);
+	}
+
+	/**
+	 * It allows the user to select a formal property to be used as assumption
+	 * or guarantee of a contract.
+	 * 
+	 * @param contract
+	 *            the contract
+	 * @return the formal property selected
+	 */
+	private Constraint selectProperty(Object contract) {
+		TreeSelectorDialog dialog = new TreeSelectorDialog(Display.getDefault().getActiveShell());
+
+		UMLContentProvider provider = new UMLContentProvider(entityUtil.getToPackage((Class) contract),
+				// contract.getOwner(),
+				UMLPackage.eINSTANCE.getPackage_PackagedElement());
+
+		dialog.setContentProvider(provider);
+		dialog.setLabelProvider(new UMLLabelProvider());
+		dialog.setMessage(Messages.UMLModelingAssistantProviderMessage);
+		dialog.setTitle(Messages.UMLModelingAssistantProviderTitle);
+		if (dialog.open() == org.eclipse.jface.window.Window.OK) {
+			Object[] result = dialog.getResult();
+			if (result != null && result.length > 0 && result[0] instanceof Constraint) {
+				return (Constraint) result[0];
+			}
+		}
+		return null;
+	}
+
+	@Override
+	public String[] getEnumValuesFromContractOwnerPorts(Object contract) {
+		Class element = (Class) ((Class) contract).getOwner();
+		return entityUtil.getEnumValuesFromComponentPorts(element);		
+	}
+
+}
diff --git a/org.polarsys.chess.contracts.contractEditor/.svn/pristine/72/728bd934bf9ee0c36243ca41198e0eff65f53e5a.svn-base b/org.polarsys.chess.contracts.contractEditor/.svn/pristine/72/728bd934bf9ee0c36243ca41198e0eff65f53e5a.svn-base
new file mode 100644
index 000000000..cd7d00823
--- /dev/null
+++ b/org.polarsys.chess.contracts.contractEditor/.svn/pristine/72/728bd934bf9ee0c36243ca41198e0eff65f53e5a.svn-base
@@ -0,0 +1,47 @@
+/*******************************************************************************
+ * Copyright (C) 2017 Fondazione Bruno Kessler.
+ * 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:
+ *     Alberto Debiasi - initial API and implementation
+ ******************************************************************************/
+package org.polarsys.chess.contracts.contractEditor;
+
+import org.eclipse.uml2.uml.Class;
+import org.eclipse.uml2.uml.Property;
+import org.polarsys.chess.contracts.profile.chesscontract.util.ContractEntityUtil;
+import org.polarsys.chess.contracts.profile.chesscontract.util.EntityUtil;
+import org.polarsys.chess.service.internal.utils.SelectionUtil;
+
+/**
+ * It filters the selected objects that are contracts or components. *
+ */
+public class CustomContractEditorFilter implements org.eclipse.jface.viewers.IFilter {
+
+	private ContractEntityUtil contractEntityUtil = ContractEntityUtil.getInstance();
+	private SelectionUtil selectionUtil = SelectionUtil.getInstance();
+	private EntityUtil entityUtil = EntityUtil.getInstance();
+
+	@Override
+	public boolean select(Object selection) {
+	
+
+		Object selectedUmlElement = selectionUtil.getUmlSelectedObject(selection);
+
+		if (selectedUmlElement instanceof Property) {
+			if (entityUtil.isComponentInstance((Property) selectedUmlElement)) {
+				return true;
+			}
+			if (contractEntityUtil.isContractProperty((Property) selectedUmlElement)) {
+				return true;
+			}
+		} else if (selectedUmlElement instanceof Class) {
+			return true;
+		}
+
+		return false;
+	}
+}
diff --git a/org.polarsys.chess.contracts.contractEditor/.svn/pristine/77/77802034e497a5ca4b638f6dc792ae9d2880728f.svn-base b/org.polarsys.chess.contracts.contractEditor/.svn/pristine/77/77802034e497a5ca4b638f6dc792ae9d2880728f.svn-base
new file mode 100644
index 000000000..b78d24ce3
--- /dev/null
+++ b/org.polarsys.chess.contracts.contractEditor/.svn/pristine/77/77802034e497a5ca4b638f6dc792ae9d2880728f.svn-base
@@ -0,0 +1,233 @@
+/*******************************************************************************
+ * Copyright (C) 2017 Fondazione Bruno Kessler.
+ * 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:
+ *     Alberto Debiasi - initial API and implementation
+ ******************************************************************************/
+package org.polarsys.chess.contracts.contractEditor;
+
+import org.eclipse.emf.common.util.BasicEList;
+import org.eclipse.emf.common.util.EList;
+import org.eclipse.emf.transaction.RecordingCommand;
+import org.eclipse.emf.transaction.TransactionalEditingDomain;
+import org.eclipse.emf.transaction.util.TransactionUtil;
+import org.eclipse.jface.viewers.ISelection;
+import org.eclipse.papyrus.infra.widgets.editors.TreeSelectorDialog;
+import org.eclipse.papyrus.sysml.portandflows.FlowDirection;
+import org.eclipse.papyrus.uml.diagram.composite.part.Messages;
+import org.eclipse.papyrus.uml.tools.providers.UMLContentProvider;
+import org.eclipse.papyrus.uml.tools.providers.UMLLabelProvider;
+import org.eclipse.swt.widgets.Display;
+import org.eclipse.uml2.uml.Class;
+import org.eclipse.uml2.uml.Constraint;
+import org.eclipse.uml2.uml.Element;
+import org.eclipse.uml2.uml.Property;
+import org.eclipse.uml2.uml.UMLPackage;
+import org.polarsys.chess.contracts.profile.chesscontract.util.ContractEntityUtil;
+import org.polarsys.chess.core.util.uml.EntityUtil;
+import org.polarsys.chess.service.internal.utils.SelectionUtil;
+
+import eu.fbk.eclipse.standardtools.contractEditor.view.ContractEditorView;
+
+/**
+ * This class in not used. It creates a view that contains the contract editor.
+ * In our case we use the CustomContractEditorTab that creates a new tab from
+ * the property view in eclipse.
+ */
+public class CustomContractEditorView extends ContractEditorView {
+
+	private ContractEntityUtil contractEntityUtil = ContractEntityUtil.getInstance();
+	private SelectionUtil selectionUtil = SelectionUtil.getInstance();
+	private EntityUtil entityUtil = EntityUtil.getInstance();
+
+	@Override
+	public String[] getContractOwnerInputPorts(Object contract) {
+		int direction = FlowDirection.IN_VALUE;
+		Element umlOwner = entityUtil.getOwner((Element) contract);
+		return entityUtil.getPortsNames(umlOwner, direction);
+	}
+
+	@Override
+	public String[] getContractOwnerOutputPorts(Object contract) {
+		int direction = FlowDirection.OUT_VALUE;
+		Element umlOwner = entityUtil.getOwner((Element) contract);
+		return entityUtil.getPortsNames(umlOwner, direction);
+	}
+
+	@Override
+	public String[] getContractOwnerInputOutputPorts(Object contract) {
+		int direction = FlowDirection.INOUT_VALUE;
+		Element umlOwner = entityUtil.getOwner((Element) contract);
+		return entityUtil.getPortsNames(umlOwner, direction);
+	}
+
+	@Override
+	public Object returnComponent(ISelection selection) {
+
+	
+		Object selectedUmlElement = selectionUtil.getUmlSelectedObject(selection);
+
+		if (selectedUmlElement instanceof Property) {
+			if (entityUtil.isComponentInstance((Property) selectedUmlElement)) {
+				Class classType = entityUtil.getUmlType((Property) selectedUmlElement);
+				if (!contractEntityUtil.isContract(classType)) {
+					return classType;
+				}
+			}
+		} else if (selectedUmlElement instanceof Class) {
+			if (!contractEntityUtil.isContract((Class) selectedUmlElement)) {
+				return selectedUmlElement;
+			}
+		}
+
+		return null;
+	}
+
+	@Override
+	public Object returnContract(ISelection selection) {
+
+	
+		Object selectedUmlElement = selectionUtil.getUmlSelectedObject(selection);
+
+		if (selectedUmlElement instanceof Property) {
+			if (contractEntityUtil.isContractProperty((Property) selectedUmlElement)) {
+				return entityUtil.getUmlType((Property) selectedUmlElement);
+			}
+
+			if (entityUtil.isComponentInstance((Property) selectedUmlElement)) {
+				Class classType = entityUtil.getUmlType((Property) selectedUmlElement);
+				if (contractEntityUtil.isContract(classType)) {
+					return classType;
+				}
+			}
+		} else if (selectedUmlElement instanceof Class) {
+			if (contractEntityUtil.isContract((Class) selectedUmlElement)) {
+				return selectedUmlElement;
+			}
+		}
+
+		return null;
+	}
+
+	@Override
+	public String[] getContractListStr(Object component) {
+		EList<String> contractNames = new BasicEList<String>();
+
+		for (Property prop : ((Class) component).getAttributes()) {
+			if (contractEntityUtil.isContractProperty(prop)) {
+				if (prop.getType() == null) {
+					contractNames.add(prop.getName() + " : <TYPE NOT DEFINED>");
+				} else {
+					contractNames.add(prop.getName() + " : " + prop.getType().getName());
+				}
+			}
+		}
+
+		String[] contractNamesArr = new String[contractNames.size()];
+		return contractNames.toArray(contractNamesArr);
+	}
+
+	@Override
+	public Object extractContractFromComponent(Object component, String contractName) {
+		return contractEntityUtil.getUmlContract((Class) component, contractName);
+	}
+
+	@Override
+	public String getComponentName(Object component) {
+		return ((Class) component).getQualifiedName();
+	}
+
+	@Override
+	public void createAssumption(Object contract) {
+		contractEntityUtil.createAssumptionToUmlContract((Class) contract);
+	}
+
+	@Override
+	public String browseAssumptionButtonPressed(Object contract) {
+		TransactionalEditingDomain domain = TransactionUtil.getEditingDomain(contract);
+		domain.getCommandStack().execute(new RecordingCommand(domain) {
+
+			@Override
+			protected void doExecute() {
+				Constraint assumeConstraint = selectProperty(contract);
+				if (assumeConstraint != null) {
+					contractEntityUtil.assignUmlConstraintAssumptionToUmlContract(assumeConstraint, (Class) contract);
+				}
+			}
+		});
+		return contractEntityUtil.getAssumeStrFromUmlContract((Class) contract);
+
+	}
+
+	@Override
+	public void createGuarantee(Object contract) {
+		contractEntityUtil.createGuaranteeToUmlContract((Class) contract);
+	}
+
+	@Override
+	public String browseGuaranteeButtonPressed(Object contract) {
+		TransactionalEditingDomain domain = TransactionUtil.getEditingDomain(contract);
+		domain.getCommandStack().execute(new RecordingCommand(domain) {
+
+			@Override
+			protected void doExecute() {
+				Constraint guaranteeConstraint = selectProperty(contract);
+				if (guaranteeConstraint != null) {
+					contractEntityUtil.assignUmlConstraintGuaranteeToUmlContract(guaranteeConstraint, (Class) contract);
+				}
+
+			}
+		});
+		return contractEntityUtil.getGuaranteeStrFromUmlContract((Class) contract);
+	}
+
+	@Override
+	public void guaranteeEditorchanged(Object contract, String textChanged) {
+		contractEntityUtil.saveFormalProperty("Guarantee", textChanged, (Class) contract);
+	}
+
+	@Override
+	public void assumptionEditorchanged(Object contract, String textChanged) {
+		contractEntityUtil.saveFormalProperty("Assume", textChanged, (Class) contract);
+	}
+
+	private Constraint selectProperty(Object contract) {
+		TreeSelectorDialog dialog = new TreeSelectorDialog(Display.getDefault().getActiveShell());
+
+		UMLContentProvider provider = new UMLContentProvider(entityUtil.getToPackage((Class) contract),
+				// contract.getOwner(),
+				UMLPackage.eINSTANCE.getPackage_PackagedElement());
+
+		dialog.setContentProvider(provider);
+		dialog.setLabelProvider(new UMLLabelProvider());
+		dialog.setMessage(Messages.UMLModelingAssistantProviderMessage);
+		dialog.setTitle(Messages.UMLModelingAssistantProviderTitle);
+		if (dialog.open() == org.eclipse.jface.window.Window.OK) {
+			Object[] result = dialog.getResult();
+			if (result != null && result.length > 0 && result[0] instanceof Constraint) {
+				return (Constraint) result[0];
+			}
+		}
+		return null;
+	}
+
+	public String getContractName(Object contract) {
+		if (contract != null) {
+			return ((Class) contract).getQualifiedName();
+		}
+		return null;
+	}
+
+	public String getAssumeStrFromContract(Object contract) {
+		return (contractEntityUtil.getAssumeStrFromUmlContract((Class) contract));
+	}
+
+	public String getGuaranteeStrFromContract(Object contract) {
+		return (contractEntityUtil.getGuaranteeStrFromUmlContract((Class) contract));
+	}
+
+}
diff --git a/org.polarsys.chess.contracts.contractEditor/.svn/pristine/84/840bb71c03bf83525100c2e64ed14e864bbbba56.svn-base b/org.polarsys.chess.contracts.contractEditor/.svn/pristine/84/840bb71c03bf83525100c2e64ed14e864bbbba56.svn-base
new file mode 100644
index 000000000..b862a296d
--- /dev/null
+++ b/org.polarsys.chess.contracts.contractEditor/.svn/pristine/84/840bb71c03bf83525100c2e64ed14e864bbbba56.svn-base
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<classpath>
+	<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.8"/>
+	<classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>
+	<classpathentry kind="src" path="src"/>
+	<classpathentry kind="output" path="bin"/>
+</classpath>
diff --git a/org.polarsys.chess.contracts.contractEditor/.svn/pristine/86/86e1fbf4ea4a6ce61d973999900a856345c5b0e4.svn-base b/org.polarsys.chess.contracts.contractEditor/.svn/pristine/86/86e1fbf4ea4a6ce61d973999900a856345c5b0e4.svn-base
new file mode 100644
index 000000000..2986ee7ec
--- /dev/null
+++ b/org.polarsys.chess.contracts.contractEditor/.svn/pristine/86/86e1fbf4ea4a6ce61d973999900a856345c5b0e4.svn-base
@@ -0,0 +1,233 @@
+/*******************************************************************************
+ * Copyright (C) 2017 Fondazione Bruno Kessler.
+ * 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:
+ *     Alberto Debiasi - initial API and implementation
+ ******************************************************************************/
+package org.polarsys.chess.contracts.contractEditor;
+
+import org.eclipse.emf.common.util.BasicEList;
+import org.eclipse.emf.common.util.EList;
+import org.eclipse.emf.transaction.RecordingCommand;
+import org.eclipse.emf.transaction.TransactionalEditingDomain;
+import org.eclipse.emf.transaction.util.TransactionUtil;
+import org.eclipse.jface.viewers.ISelection;
+import org.eclipse.papyrus.infra.widgets.editors.TreeSelectorDialog;
+import org.eclipse.papyrus.sysml.portandflows.FlowDirection;
+import org.eclipse.papyrus.uml.diagram.composite.part.Messages;
+import org.eclipse.papyrus.uml.tools.providers.UMLContentProvider;
+import org.eclipse.papyrus.uml.tools.providers.UMLLabelProvider;
+import org.eclipse.swt.widgets.Display;
+import org.eclipse.uml2.uml.Class;
+import org.eclipse.uml2.uml.Constraint;
+import org.eclipse.uml2.uml.Element;
+import org.eclipse.uml2.uml.Property;
+import org.eclipse.uml2.uml.UMLPackage;
+import org.polarsys.chess.utils.ContractEntityUtil;
+import org.polarsys.chess.utils.EntityUtil;
+import org.polarsys.chess.utils.SelectionUtil;
+
+import eu.fbk.eclipse.standardtools.contractEditor.view.ContractEditorView;
+
+/**
+ * This class in not used. It creates a view that contains the contract editor.
+ * In our case we use the CustomContractEditorTab that creates a new tab from
+ * the property view in eclipse.
+ */
+public class CustomContractEditorView extends ContractEditorView {
+
+	private ContractEntityUtil contractEntityUtil = ContractEntityUtil.getInstance();
+	private SelectionUtil selectionUtil = SelectionUtil.getInstance();
+	private EntityUtil entityUtil = EntityUtil.getInstance();
+
+	@Override
+	public String[] getContractOwnerInputPorts(Object contract) {
+		int direction = FlowDirection.IN_VALUE;
+		Element umlOwner = entityUtil.getOwner((Element) contract);
+		return entityUtil.getPortsNames(umlOwner, direction);
+	}
+
+	@Override
+	public String[] getContractOwnerOutputPorts(Object contract) {
+		int direction = FlowDirection.OUT_VALUE;
+		Element umlOwner = entityUtil.getOwner((Element) contract);
+		return entityUtil.getPortsNames(umlOwner, direction);
+	}
+
+	@Override
+	public String[] getContractOwnerInputOutputPorts(Object contract) {
+		int direction = FlowDirection.INOUT_VALUE;
+		Element umlOwner = entityUtil.getOwner((Element) contract);
+		return entityUtil.getPortsNames(umlOwner, direction);
+	}
+
+	@Override
+	public Object returnComponent(ISelection selection) {
+
+	
+		Object selectedUmlElement = selectionUtil.getUmlSelectedObject(selection);
+
+		if (selectedUmlElement instanceof Property) {
+			if (entityUtil.isComponentInstance((Property) selectedUmlElement)) {
+				Class classType = entityUtil.getUmlType((Property) selectedUmlElement);
+				if (!contractEntityUtil.isContract(classType)) {
+					return classType;
+				}
+			}
+		} else if (selectedUmlElement instanceof Class) {
+			if (!contractEntityUtil.isContract((Class) selectedUmlElement)) {
+				return selectedUmlElement;
+			}
+		}
+
+		return null;
+	}
+
+	@Override
+	public Object returnContract(ISelection selection) {
+
+	
+		Object selectedUmlElement = selectionUtil.getUmlSelectedObject(selection);
+
+		if (selectedUmlElement instanceof Property) {
+			if (contractEntityUtil.isContractProperty((Property) selectedUmlElement)) {
+				return entityUtil.getUmlType((Property) selectedUmlElement);
+			}
+
+			if (entityUtil.isComponentInstance((Property) selectedUmlElement)) {
+				Class classType = entityUtil.getUmlType((Property) selectedUmlElement);
+				if (contractEntityUtil.isContract(classType)) {
+					return classType;
+				}
+			}
+		} else if (selectedUmlElement instanceof Class) {
+			if (contractEntityUtil.isContract((Class) selectedUmlElement)) {
+				return selectedUmlElement;
+			}
+		}
+
+		return null;
+	}
+
+	@Override
+	public String[] getContractListStr(Object component) {
+		EList<String> contractNames = new BasicEList<String>();
+
+		for (Property prop : ((Class) component).getAttributes()) {
+			if (contractEntityUtil.isContractProperty(prop)) {
+				if (prop.getType() == null) {
+					contractNames.add(prop.getName() + " : <TYPE NOT DEFINED>");
+				} else {
+					contractNames.add(prop.getName() + " : " + prop.getType().getName());
+				}
+			}
+		}
+
+		String[] contractNamesArr = new String[contractNames.size()];
+		return contractNames.toArray(contractNamesArr);
+	}
+
+	@Override
+	public Object extractContractFromComponent(Object component, String contractName) {
+		return contractEntityUtil.getUmlContract((Class) component, contractName);
+	}
+
+	@Override
+	public String getComponentName(Object component) {
+		return ((Class) component).getQualifiedName();
+	}
+
+	@Override
+	public void createAssumption(Object contract) {
+		contractEntityUtil.createAssumptionToUmlContract((Class) contract);
+	}
+
+	@Override
+	public String browseAssumptionButtonPressed(Object contract) {
+		TransactionalEditingDomain domain = TransactionUtil.getEditingDomain(contract);
+		domain.getCommandStack().execute(new RecordingCommand(domain) {
+
+			@Override
+			protected void doExecute() {
+				Constraint assumeConstraint = selectProperty(contract);
+				if (assumeConstraint != null) {
+					contractEntityUtil.assignUmlConstraintAssumptionToUmlContract(assumeConstraint, (Class) contract);
+				}
+			}
+		});
+		return contractEntityUtil.getAssumeStrFromUmlContract((Class) contract);
+
+	}
+
+	@Override
+	public void createGuarantee(Object contract) {
+		contractEntityUtil.createGuaranteeToUmlContract((Class) contract);
+	}
+
+	@Override
+	public String browseGuaranteeButtonPressed(Object contract) {
+		TransactionalEditingDomain domain = TransactionUtil.getEditingDomain(contract);
+		domain.getCommandStack().execute(new RecordingCommand(domain) {
+
+			@Override
+			protected void doExecute() {
+				Constraint guaranteeConstraint = selectProperty(contract);
+				if (guaranteeConstraint != null) {
+					contractEntityUtil.assignUmlConstraintGuaranteeToUmlContract(guaranteeConstraint, (Class) contract);
+				}
+
+			}
+		});
+		return contractEntityUtil.getGuaranteeStrFromUmlContract((Class) contract);
+	}
+
+	@Override
+	public void guaranteeEditorchanged(Object contract, String textChanged) {
+		contractEntityUtil.saveFormalProperty("Guarantee", textChanged, (Class) contract);
+	}
+
+	@Override
+	public void assumptionEditorchanged(Object contract, String textChanged) {
+		contractEntityUtil.saveFormalProperty("Assume", textChanged, (Class) contract);
+	}
+
+	private Constraint selectProperty(Object contract) {
+		TreeSelectorDialog dialog = new TreeSelectorDialog(Display.getDefault().getActiveShell());
+
+		UMLContentProvider provider = new UMLContentProvider(entityUtil.getToPackage((Class) contract),
+				// contract.getOwner(),
+				UMLPackage.eINSTANCE.getPackage_PackagedElement());
+
+		dialog.setContentProvider(provider);
+		dialog.setLabelProvider(new UMLLabelProvider());
+		dialog.setMessage(Messages.UMLModelingAssistantProviderMessage);
+		dialog.setTitle(Messages.UMLModelingAssistantProviderTitle);
+		if (dialog.open() == org.eclipse.jface.window.Window.OK) {
+			Object[] result = dialog.getResult();
+			if (result != null && result.length > 0 && result[0] instanceof Constraint) {
+				return (Constraint) result[0];
+			}
+		}
+		return null;
+	}
+
+	public String getContractName(Object contract) {
+		if (contract != null) {
+			return ((Class) contract).getQualifiedName();
+		}
+		return null;
+	}
+
+	public String getAssumeStrFromContract(Object contract) {
+		return (contractEntityUtil.getAssumeStrFromUmlContract((Class) contract));
+	}
+
+	public String getGuaranteeStrFromContract(Object contract) {
+		return (contractEntityUtil.getGuaranteeStrFromUmlContract((Class) contract));
+	}
+
+}
diff --git a/org.polarsys.chess.contracts.contractEditor/.svn/pristine/97/97ead69dc11cc924a70092b06e53da32b8a1cdcc.svn-base b/org.polarsys.chess.contracts.contractEditor/.svn/pristine/97/97ead69dc11cc924a70092b06e53da32b8a1cdcc.svn-base
new file mode 100644
index 0000000000000000000000000000000000000000..cb415064e026e17ab2b67610add4b665fbe48f65
GIT binary patch
literal 124
zcmZ?wbhEHb6krfw*v!DN^3?Rc9i<a@Rn9xqvGmx)Ri|cn7Yk<hSQk%nE1B%>md};Y
ztdrJZ^8f#T1~5?k$->CMz{{Wm;(^RyVA0%g(sT7*i`Qp&pKnz1V0QL!2=eJl^58D^
Y@R;QD@Wzz%$?N7XDDb%B!oXk+04^vkg8%>k

literal 0
HcmV?d00001

diff --git a/org.polarsys.chess.contracts.contractEditor/.svn/pristine/98/98173ce02daed18cb5d937a5022b3b2e9ff71465.svn-base b/org.polarsys.chess.contracts.contractEditor/.svn/pristine/98/98173ce02daed18cb5d937a5022b3b2e9ff71465.svn-base
new file mode 100644
index 000000000..5e3d21774
--- /dev/null
+++ b/org.polarsys.chess.contracts.contractEditor/.svn/pristine/98/98173ce02daed18cb5d937a5022b3b2e9ff71465.svn-base
@@ -0,0 +1,47 @@
+/*******************************************************************************
+ * Copyright (C) 2017 Fondazione Bruno Kessler.
+ * 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:
+ *     Alberto Debiasi - initial API and implementation
+ ******************************************************************************/
+package org.polarsys.chess.contracts.contractEditor;
+
+import org.eclipse.uml2.uml.Class;
+import org.eclipse.uml2.uml.Property;
+import org.polarsys.chess.contracts.profile.chesscontract.util.ContractEntityUtil;
+import org.polarsys.chess.core.util.uml.EntityUtil;
+import org.polarsys.chess.service.internal.utils.SelectionUtil;
+
+/**
+ * It filters the selected objects that are contracts or components. *
+ */
+public class CustomContractEditorFilter implements org.eclipse.jface.viewers.IFilter {
+
+	private ContractEntityUtil contractEntityUtil = ContractEntityUtil.getInstance();
+	private SelectionUtil selectionUtil = SelectionUtil.getInstance();
+	private EntityUtil entityUtil = EntityUtil.getInstance();
+
+	@Override
+	public boolean select(Object selection) {
+	
+
+		Object selectedUmlElement = selectionUtil.getUmlSelectedObject(selection);
+
+		if (selectedUmlElement instanceof Property) {
+			if (entityUtil.isComponentInstance((Property) selectedUmlElement)) {
+				return true;
+			}
+			if (contractEntityUtil.isContractProperty((Property) selectedUmlElement)) {
+				return true;
+			}
+		} else if (selectedUmlElement instanceof Class) {
+			return true;
+		}
+
+		return false;
+	}
+}
diff --git a/org.polarsys.chess.contracts.contractEditor/.svn/pristine/9c/9c4c60436712fa0ff91192141e7c8e786f97ac5c.svn-base b/org.polarsys.chess.contracts.contractEditor/.svn/pristine/9c/9c4c60436712fa0ff91192141e7c8e786f97ac5c.svn-base
new file mode 100644
index 000000000..6491a33b4
--- /dev/null
+++ b/org.polarsys.chess.contracts.contractEditor/.svn/pristine/9c/9c4c60436712fa0ff91192141e7c8e786f97ac5c.svn-base
@@ -0,0 +1,230 @@
+/*******************************************************************************
+ * Copyright (C) 2017 Fondazione Bruno Kessler.
+ * 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:
+ *     Alberto Debiasi - initial API and implementation
+ ******************************************************************************/
+package org.polarsys.chess.contracts.contractEditor;
+
+import org.eclipse.emf.common.util.BasicEList;
+import org.eclipse.emf.common.util.EList;
+import org.eclipse.emf.transaction.RecordingCommand;
+import org.eclipse.emf.transaction.TransactionalEditingDomain;
+import org.eclipse.emf.transaction.util.TransactionUtil;
+import org.eclipse.jface.viewers.ISelection;
+import org.eclipse.papyrus.infra.widgets.editors.TreeSelectorDialog;
+import org.eclipse.papyrus.sysml.portandflows.FlowDirection;
+import org.eclipse.papyrus.uml.diagram.composite.part.Messages;
+import org.eclipse.papyrus.uml.tools.providers.UMLContentProvider;
+import org.eclipse.papyrus.uml.tools.providers.UMLLabelProvider;
+import org.eclipse.swt.widgets.Display;
+import org.eclipse.uml2.uml.Class;
+import org.eclipse.uml2.uml.Constraint;
+import org.eclipse.uml2.uml.Element;
+import org.eclipse.uml2.uml.Property;
+import org.eclipse.uml2.uml.UMLPackage;
+import org.polarsys.chess.contracts.profile.chesscontract.util.ContractEntityUtil;
+import org.polarsys.chess.core.util.uml.EntityUtil;
+import org.polarsys.chess.service.internal.utils.SelectionUtil;
+
+import eu.fbk.eclipse.standardtools.contractEditor.view.ContractEditorView;
+
+/**
+ * This class in not used. It creates a view that contains the contract editor.
+ * In our case we use the CustomContractEditorTab that creates a new tab from
+ * the property view in eclipse.
+ */
+public class CustomContractEditorView extends ContractEditorView {
+
+	private ContractEntityUtil contractEntityUtil = ContractEntityUtil.getInstance();
+	private SelectionUtil selectionUtil = SelectionUtil.getInstance();
+	private EntityUtil entityUtil = EntityUtil.getInstance();
+
+	@Override
+	public String[] getContractOwnerInputPorts(Object contract) {		
+		Element umlOwner = entityUtil.getOwner((Element) contract);
+		return entityUtil.getInputPortsNames(umlOwner);
+	}
+
+	@Override
+	public String[] getContractOwnerOutputPorts(Object contract) {		
+		Element umlOwner = entityUtil.getOwner((Element) contract);
+		return entityUtil.getOutputPortsNames(umlOwner);
+	}
+
+	@Override
+	public String[] getContractOwnerInputOutputPorts(Object contract) {
+		Element umlOwner = entityUtil.getOwner((Element) contract);
+		return entityUtil.getInputOutputPortsNames(umlOwner);
+	}
+
+	@Override
+	public Object returnComponent(ISelection selection) {
+
+	
+		Object selectedUmlElement = selectionUtil.getUmlSelectedObject(selection);
+
+		if (selectedUmlElement instanceof Property) {
+			if (entityUtil.isComponentInstance((Property) selectedUmlElement)) {
+				Class classType = entityUtil.getUmlType((Property) selectedUmlElement);
+				if (!contractEntityUtil.isContract(classType)) {
+					return classType;
+				}
+			}
+		} else if (selectedUmlElement instanceof Class) {
+			if (!contractEntityUtil.isContract((Class) selectedUmlElement)) {
+				return selectedUmlElement;
+			}
+		}
+
+		return null;
+	}
+
+	@Override
+	public Object returnContract(ISelection selection) {
+
+	
+		Object selectedUmlElement = selectionUtil.getUmlSelectedObject(selection);
+
+		if (selectedUmlElement instanceof Property) {
+			if (contractEntityUtil.isContractProperty((Property) selectedUmlElement)) {
+				return entityUtil.getUmlType((Property) selectedUmlElement);
+			}
+
+			if (entityUtil.isComponentInstance((Property) selectedUmlElement)) {
+				Class classType = entityUtil.getUmlType((Property) selectedUmlElement);
+				if (contractEntityUtil.isContract(classType)) {
+					return classType;
+				}
+			}
+		} else if (selectedUmlElement instanceof Class) {
+			if (contractEntityUtil.isContract((Class) selectedUmlElement)) {
+				return selectedUmlElement;
+			}
+		}
+
+		return null;
+	}
+
+	@Override
+	public String[] getContractListStr(Object component) {
+		EList<String> contractNames = new BasicEList<String>();
+
+		for (Property prop : ((Class) component).getAttributes()) {
+			if (contractEntityUtil.isContractProperty(prop)) {
+				if (prop.getType() == null) {
+					contractNames.add(prop.getName() + " : <TYPE NOT DEFINED>");
+				} else {
+					contractNames.add(prop.getName() + " : " + prop.getType().getName());
+				}
+			}
+		}
+
+		String[] contractNamesArr = new String[contractNames.size()];
+		return contractNames.toArray(contractNamesArr);
+	}
+
+	@Override
+	public Object extractContractFromComponent(Object component, String contractName) {
+		return contractEntityUtil.getUmlContract((Class) component, contractName);
+	}
+
+	@Override
+	public String getComponentName(Object component) {
+		return ((Class) component).getQualifiedName();
+	}
+
+	@Override
+	public void createAssumption(Object contract) {
+		contractEntityUtil.createAssumptionToUmlContract((Class) contract);
+	}
+
+	@Override
+	public String browseAssumptionButtonPressed(Object contract) {
+		TransactionalEditingDomain domain = TransactionUtil.getEditingDomain(contract);
+		domain.getCommandStack().execute(new RecordingCommand(domain) {
+
+			@Override
+			protected void doExecute() {
+				Constraint assumeConstraint = selectProperty(contract);
+				if (assumeConstraint != null) {
+					contractEntityUtil.assignUmlConstraintAssumptionToUmlContract(assumeConstraint, (Class) contract);
+				}
+			}
+		});
+		return contractEntityUtil.getAssumeStrFromUmlContract((Class) contract);
+
+	}
+
+	@Override
+	public void createGuarantee(Object contract) {
+		contractEntityUtil.createGuaranteeToUmlContract((Class) contract);
+	}
+
+	@Override
+	public String browseGuaranteeButtonPressed(Object contract) {
+		TransactionalEditingDomain domain = TransactionUtil.getEditingDomain(contract);
+		domain.getCommandStack().execute(new RecordingCommand(domain) {
+
+			@Override
+			protected void doExecute() {
+				Constraint guaranteeConstraint = selectProperty(contract);
+				if (guaranteeConstraint != null) {
+					contractEntityUtil.assignUmlConstraintGuaranteeToUmlContract(guaranteeConstraint, (Class) contract);
+				}
+
+			}
+		});
+		return contractEntityUtil.getGuaranteeStrFromUmlContract((Class) contract);
+	}
+
+	@Override
+	public void guaranteeEditorchanged(Object contract, String textChanged) {
+		contractEntityUtil.saveFormalProperty("Guarantee", textChanged, (Class) contract);
+	}
+
+	@Override
+	public void assumptionEditorchanged(Object contract, String textChanged) {
+		contractEntityUtil.saveFormalProperty("Assume", textChanged, (Class) contract);
+	}
+
+	private Constraint selectProperty(Object contract) {
+		TreeSelectorDialog dialog = new TreeSelectorDialog(Display.getDefault().getActiveShell());
+
+		UMLContentProvider provider = new UMLContentProvider(entityUtil.getToPackage((Class) contract),
+				// contract.getOwner(),
+				UMLPackage.eINSTANCE.getPackage_PackagedElement());
+
+		dialog.setContentProvider(provider);
+		dialog.setLabelProvider(new UMLLabelProvider());
+		dialog.setMessage(Messages.UMLModelingAssistantProviderMessage);
+		dialog.setTitle(Messages.UMLModelingAssistantProviderTitle);
+		if (dialog.open() == org.eclipse.jface.window.Window.OK) {
+			Object[] result = dialog.getResult();
+			if (result != null && result.length > 0 && result[0] instanceof Constraint) {
+				return (Constraint) result[0];
+			}
+		}
+		return null;
+	}
+
+	public String getContractName(Object contract) {
+		if (contract != null) {
+			return ((Class) contract).getQualifiedName();
+		}
+		return null;
+	}
+
+	public String getAssumeStrFromContract(Object contract) {
+		return (contractEntityUtil.getAssumeStrFromUmlContract((Class) contract));
+	}
+
+	public String getGuaranteeStrFromContract(Object contract) {
+		return (contractEntityUtil.getGuaranteeStrFromUmlContract((Class) contract));
+	}
+
+}
diff --git a/org.polarsys.chess.contracts.contractEditor/.svn/pristine/b0/b045a8019df5d46c6d15460ac5b958d39d908dab.svn-base b/org.polarsys.chess.contracts.contractEditor/.svn/pristine/b0/b045a8019df5d46c6d15460ac5b958d39d908dab.svn-base
new file mode 100644
index 0000000000000000000000000000000000000000..922306cb3bc1f03c7b5cb7593311585886687d60
GIT binary patch
literal 576
zcmZ?wbhEHb6krfwc*el+`Rnf=KmR0GEr0jv*Qc+)fByRO<LB?Vvc+k2E3%r_<hHCW
z?ATb`xv6H-j=IUadKMgRoW7@J*8a|U2PZB)e(%MPyU)MhfARgvo1f3${e1iB*XM7)
z?*K(!{<!zz`@>g19=-nY>ch`x?|y#x`uo$j-!DG={QBef_n*HnTsl2t#>AO3x~5ES
z|M&O(iDO$PO=y@twRQ5u=DW9!Et%iEaBl0$MUC@kHO`*ivUpD2-!JFq&g?k0Iq&d>
z{5@+*cdRPkyu51dqKb7(YFEs!xpHFO-_Pf_PE_7HNqN_FwVhKn4zEc$u&(&e^TqQj
z#g;WnEo+im+9b8EOMb@`jo){hXO;*rsFwWy|3AYZ0E$0Z7#SFX8FWBy0mTUe``m`$
zrskH`wszMx_wF7?12=8|R!i2YQ{|mqv|U_Utkf9U7WkQ)J2{#AHG8NE3vjWk`1*SK
zc(+)yNGVG(NU3@S1hv{I3G)l`@^GpKs<+xoN-|%%s;bj!uW<b2X(k1`R%1npr_Y`^
zv>J-vImO8&Zq{lf_x0O1lU55EVIe+l4xN$(0gD5=c%`*ed{$g=RTL3WT$SPYv6aiQ
Ik%7S)07aGN^8f$<

literal 0
HcmV?d00001

diff --git a/org.polarsys.chess.contracts.contractEditor/.svn/pristine/bd/bdecd7617e14c1d9592848da5b048389a4da78ee.svn-base b/org.polarsys.chess.contracts.contractEditor/.svn/pristine/bd/bdecd7617e14c1d9592848da5b048389a4da78ee.svn-base
new file mode 100644
index 000000000..285b8bf47
--- /dev/null
+++ b/org.polarsys.chess.contracts.contractEditor/.svn/pristine/bd/bdecd7617e14c1d9592848da5b048389a4da78ee.svn-base
@@ -0,0 +1,6 @@
+source.. = src/
+output.. = bin/
+bin.includes = META-INF/,\
+               .,\
+               plugin.xml,\
+               icons/
diff --git a/org.polarsys.chess.contracts.contractEditor/.svn/pristine/c6/c61ac3c1e1dbd12506dc44a4551d12b34728309a.svn-base b/org.polarsys.chess.contracts.contractEditor/.svn/pristine/c6/c61ac3c1e1dbd12506dc44a4551d12b34728309a.svn-base
new file mode 100644
index 000000000..ec206a174
--- /dev/null
+++ b/org.polarsys.chess.contracts.contractEditor/.svn/pristine/c6/c61ac3c1e1dbd12506dc44a4551d12b34728309a.svn-base
@@ -0,0 +1,28 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+	<name>org.polarsys.chess.contracts.contractEditor</name>
+	<comment></comment>
+	<projects>
+	</projects>
+	<buildSpec>
+		<buildCommand>
+			<name>org.eclipse.jdt.core.javabuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+		<buildCommand>
+			<name>org.eclipse.pde.ManifestBuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+		<buildCommand>
+			<name>org.eclipse.pde.SchemaBuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+	</buildSpec>
+	<natures>
+		<nature>org.eclipse.pde.PluginNature</nature>
+		<nature>org.eclipse.jdt.core.javanature</nature>
+	</natures>
+</projectDescription>
diff --git a/org.polarsys.chess.contracts.contractEditor/.svn/pristine/ca/ca8c639aa32d569854a45400778e53290bb2f205.svn-base b/org.polarsys.chess.contracts.contractEditor/.svn/pristine/ca/ca8c639aa32d569854a45400778e53290bb2f205.svn-base
new file mode 100644
index 0000000000000000000000000000000000000000..252d7ebcb8c74d6e5de66ef0eb8856622a0e9d89
GIT binary patch
literal 318
zcmZ?wbhEHb6krfwxXQp_S{7na6>d=(Ze15;Qy1mX8t2lT<l2+$3M9LeU3-$eCZ~H%
z&hVd=6EG_$WMN_G!orY+1rf_jLl+gstf`FOP#wFbvUf{x@0O5hJ42`K3|nv@V&Q>^
zHOHgY9FJamJZkN+sI|wVk6ueSb}ixP)r4bLfn?%^+sU^crQUj&`rv8W|Ns9PC;*B-
zSr{1@v>9|jW`O*}z!rUAYJrE2RKG`JYNRKhwpQrnor{(Ph`sVEnyR2Kc;c~(o$WdP
zMb0Wl6K^dQ-0hgs;<SKI<H^q-;x25QTwKyJ($ZWU?Cc(_l2WWuEE3|(QH)cWq8R2f
LL@ik0$Y2cszSC!^

literal 0
HcmV?d00001

diff --git a/org.polarsys.chess.contracts.contractEditor/.svn/pristine/ce/ceb68d84ab6670ae76b7b442439794fe1e756c07.svn-base b/org.polarsys.chess.contracts.contractEditor/.svn/pristine/ce/ceb68d84ab6670ae76b7b442439794fe1e756c07.svn-base
new file mode 100644
index 000000000..ae3c17260
--- /dev/null
+++ b/org.polarsys.chess.contracts.contractEditor/.svn/pristine/ce/ceb68d84ab6670ae76b7b442439794fe1e756c07.svn-base
@@ -0,0 +1 @@
+/bin/
diff --git a/org.polarsys.chess.contracts.contractEditor/.svn/pristine/d5/d5cba57161ff9f2faf64963c08ec0e6bb1e3eec9.svn-base b/org.polarsys.chess.contracts.contractEditor/.svn/pristine/d5/d5cba57161ff9f2faf64963c08ec0e6bb1e3eec9.svn-base
new file mode 100644
index 000000000..ff3e6d98e
--- /dev/null
+++ b/org.polarsys.chess.contracts.contractEditor/.svn/pristine/d5/d5cba57161ff9f2faf64963c08ec0e6bb1e3eec9.svn-base
@@ -0,0 +1,397 @@
+/*******************************************************************************
+ * Copyright (C) 2017 Fondazione Bruno Kessler.
+ * 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:
+ *     Alberto Debiasi - initial API and implementation
+ ******************************************************************************/
+package org.polarsys.chess.contracts.contractEditor;
+
+import org.eclipse.emf.common.util.BasicEList;
+import org.eclipse.emf.common.util.EList;
+import org.eclipse.emf.ecore.resource.Resource;
+import org.eclipse.emf.transaction.RecordingCommand;
+import org.eclipse.emf.transaction.TransactionalEditingDomain;
+import org.eclipse.emf.transaction.util.TransactionUtil;
+import org.eclipse.jface.viewers.ISelection;
+import org.eclipse.papyrus.infra.widgets.editors.TreeSelectorDialog;
+import org.eclipse.papyrus.sysml.portandflows.FlowDirection;
+import org.eclipse.papyrus.uml.diagram.composite.part.Messages;
+import org.eclipse.papyrus.uml.tools.providers.UMLContentProvider;
+import org.eclipse.papyrus.uml.tools.providers.UMLLabelProvider;
+import org.eclipse.swt.widgets.Display;
+import org.eclipse.uml2.uml.Class;
+import org.eclipse.uml2.uml.Constraint;
+import org.eclipse.uml2.uml.Element;
+import org.eclipse.uml2.uml.Property;
+import org.eclipse.uml2.uml.UMLPackage;
+import org.polarsys.chess.utils.ContractEntityUtil;
+import org.polarsys.chess.utils.EntityUtil;
+import org.polarsys.chess.utils.SelectionUtil;
+
+import eu.fbk.eclipse.standardtools.contractEditor.propertyTab.ContractEditorTab;
+
+/**
+ * This is the contract editor designed for the CHESS platform. It extends the
+ * ContractEditorTab that is designed to be extended and contains standard
+ * methods not related to specific technologies. The only rule is that it
+ * requires Eclipse based platforms.
+ *
+ */
+public class CustomContractEditorTab extends ContractEditorTab {
+
+	private ContractEntityUtil contractEntityUtil = ContractEntityUtil.getInstance();
+	private SelectionUtil selectionUtil = SelectionUtil.getInstance();
+	private EntityUtil entityUtil = EntityUtil.getInstance();
+
+	@Override
+	public Resource getResourceFromContract(Object contract) {
+		return ((Class) contract).eResource();
+	}
+
+	/*
+	 * (non-Javadoc)
+	 * 
+	 * @see
+	 * eu.fbk.eclipse.standardtools.contractEditor.propertyTab.ContractEditorTab
+	 * #getContractOwnerInputPorts(java.lang.Object)
+	 */
+	@Override
+	public String[] getContractOwnerInputPorts(Object contract) {
+		Element umlOwner = entityUtil.getOwner((Element) contract);
+		return entityUtil.getPortsNames(umlOwner, FlowDirection.IN_VALUE);
+	}
+
+	/*
+	 * (non-Javadoc)
+	 * 
+	 * @see
+	 * eu.fbk.eclipse.standardtools.contractEditor.propertyTab.ContractEditorTab
+	 * #getContractOwnerOutputPorts(java.lang.Object)
+	 */
+	@Override
+	public String[] getContractOwnerOutputPorts(Object contract) {
+		Element umlOwner = entityUtil.getOwner((Element) contract);
+		return entityUtil.getPortsNames(umlOwner, FlowDirection.OUT_VALUE);
+	}
+
+	/*
+	 * (non-Javadoc)
+	 * 
+	 * @see
+	 * eu.fbk.eclipse.standardtools.contractEditor.propertyTab.ContractEditorTab
+	 * #getContractOwnerInputOutputPorts(java.lang.Object)
+	 */
+	@Override
+	public String[] getContractOwnerInputOutputPorts(Object contract) {
+		Element umlOwner = entityUtil.getOwner((Element) contract);
+		return entityUtil.getPortsNames(umlOwner, FlowDirection.INOUT_VALUE);
+
+	}
+
+	/*
+	 * (non-Javadoc)
+	 * 
+	 * @see
+	 * eu.fbk.eclipse.standardtools.contractEditor.propertyTab.ContractEditorTab
+	 * #getContractOwnerAttributes(java.lang.Object)
+	 */
+	@Override
+	public String[] getContractOwnerAttributes(Object contract) {
+		Element element = ((Class) contract).getOwner();
+		EList<String> attrArr = new BasicEList<String>();
+
+		attrArr.addAll(entityUtil.getBooleanAttributesNamesExceptsPorts(element));
+		String[] attributesStrArr = new String[attrArr.size()];
+		return attrArr.toArray(attributesStrArr);
+
+	}
+
+	/*
+	 * (non-Javadoc)
+	 * 
+	 * @see
+	 * eu.fbk.eclipse.standardtools.contractEditor.propertyTab.ContractEditorTab
+	 * #returnComponent(org.eclipse.jface.viewers.ISelection)
+	 */
+	@Override
+	public Object returnComponent(ISelection selection) {
+
+		Object selectedUmlElement = selectionUtil.getUmlSelectedObject(selection);
+
+		if (selectedUmlElement instanceof Property) {
+			if (entityUtil.isComponentInstance((Property) selectedUmlElement)) {
+				Class umlClass = entityUtil.getUmlType((Property) selectedUmlElement);
+
+				if (!contractEntityUtil.isContract(umlClass)) {
+					return umlClass;
+				}
+			}
+		} else if (selectedUmlElement instanceof Class) {
+			if (!contractEntityUtil.isContract((Class) selectedUmlElement)) {
+				return selectedUmlElement;
+			}
+		}
+
+		return null;
+	}
+
+	/*
+	 * (non-Javadoc)
+	 * 
+	 * @see
+	 * eu.fbk.eclipse.standardtools.contractEditor.propertyTab.ContractEditorTab
+	 * #returnContract(org.eclipse.jface.viewers.ISelection)
+	 */
+	@Override
+	public Object returnContract(ISelection selection) {
+
+	
+		Object selectedUmlElement = selectionUtil.getUmlSelectedObject(selection);
+
+		if (selectedUmlElement instanceof Property) {
+			if (contractEntityUtil.isContractProperty((Property) selectedUmlElement)) {
+				return entityUtil.getUmlType((Property) selectedUmlElement);
+			}
+
+			if (entityUtil.isComponentInstance((Property) selectedUmlElement)) {
+				Class classType = entityUtil.getUmlType((Property) selectedUmlElement);
+				if (contractEntityUtil.isContract(classType)) {
+					return classType;
+				}
+			}
+		} else if (selectedUmlElement instanceof Class) {
+			if (contractEntityUtil.isContract((Class) selectedUmlElement)) {
+				return selectedUmlElement;
+			}
+		}
+
+		return null;
+	}
+
+	/*
+	 * (non-Javadoc)
+	 * 
+	 * @see
+	 * eu.fbk.eclipse.standardtools.contractEditor.propertyTab.ContractEditorTab
+	 * #getContractListStr(java.lang.Object)
+	 */
+	@Override
+	public String[] getContractListStr(Object component) {
+		EList<String> contractNames = new BasicEList<String>();
+
+		for (Property prop : ((Class) component).getAttributes()) {
+			if (contractEntityUtil.isContractProperty(prop)) {
+				if (prop.getType() == null) {
+					contractNames.add(prop.getName() + " : <TYPE NOT DEFINED>");
+				} else {
+					contractNames.add(prop.getName() + " : " + prop.getType().getName());
+				}
+			}
+		}
+
+		String[] contractNamesArr = new String[contractNames.size()];
+		return contractNames.toArray(contractNamesArr);
+	}
+
+	/*
+	 * (non-Javadoc)
+	 * 
+	 * @see
+	 * eu.fbk.eclipse.standardtools.contractEditor.propertyTab.ContractEditorTab
+	 * #extractContractFromComponent(java.lang.Object, java.lang.String)
+	 */
+	@Override
+	public Object extractContractFromComponent(Object component, String contractName) {
+		return contractEntityUtil.getUmlContract((Class) component, contractName);
+	}
+
+	/*
+	 * (non-Javadoc)
+	 * 
+	 * @see
+	 * eu.fbk.eclipse.standardtools.contractEditor.propertyTab.ContractEditorTab
+	 * #getComponentName(java.lang.Object)
+	 */
+	@Override
+	public String getComponentName(Object component) {
+		return ((Class) component).getQualifiedName();
+	}
+
+	/*
+	 * (non-Javadoc)
+	 * 
+	 * @see
+	 * eu.fbk.eclipse.standardtools.contractEditor.propertyTab.ContractEditorTab
+	 * #createAssumption(java.lang.Object)
+	 */
+	@Override
+	public void createAssumption(Object contract) {
+		contractEntityUtil.createAssumptionToUmlContract((Class) contract);
+	}
+
+	/*
+	 * (non-Javadoc)
+	 * 
+	 * @see
+	 * eu.fbk.eclipse.standardtools.contractEditor.propertyTab.ContractEditorTab
+	 * #browseAssumptionButtonPressed(java.lang.Object)
+	 */
+	@Override
+	public String browseAssumptionButtonPressed(Object contract) {
+
+		TransactionalEditingDomain domain = TransactionUtil.getEditingDomain(contract);
+		domain.getCommandStack().execute(new RecordingCommand(domain) {
+
+			@Override
+			protected void doExecute() {
+				Constraint assumeConstraint = selectProperty(contract);
+				if (assumeConstraint != null) {
+					contractEntityUtil.assignUmlConstraintAssumptionToUmlContract(assumeConstraint, (Class) contract);
+				}
+			}
+		});
+		return contractEntityUtil.getAssumeStrFromUmlContract((Class) contract);
+
+	}
+
+	/*
+	 * (non-Javadoc)
+	 * 
+	 * @see
+	 * eu.fbk.eclipse.standardtools.contractEditor.propertyTab.ContractEditorTab
+	 * #createGuarantee(java.lang.Object)
+	 */
+	@Override
+	public void createGuarantee(Object contract) {
+		contractEntityUtil.createGuaranteeToUmlContract((Class) contract);
+	}
+
+	/*
+	 * (non-Javadoc)
+	 * 
+	 * @see
+	 * eu.fbk.eclipse.standardtools.contractEditor.propertyTab.ContractEditorTab
+	 * #browseGuaranteeButtonPressed(java.lang.Object)
+	 */
+	@Override
+	public String browseGuaranteeButtonPressed(Object contract) {
+		TransactionalEditingDomain domain = TransactionUtil.getEditingDomain(contract);
+		domain.getCommandStack().execute(new RecordingCommand(domain) {
+
+			@Override
+			protected void doExecute() {
+				Constraint guaranteeConstraint = selectProperty(contract);
+				if (guaranteeConstraint != null) {
+					contractEntityUtil.assignUmlConstraintGuaranteeToUmlContract(guaranteeConstraint, (Class) contract);
+				}
+
+			}
+		});
+		return contractEntityUtil.getGuaranteeStrFromUmlContract((Class) contract);
+	}
+
+	/*
+	 * (non-Javadoc)
+	 * 
+	 * @see
+	 * eu.fbk.eclipse.standardtools.contractEditor.propertyTab.ContractEditorTab
+	 * #guaranteeEditorchanged(java.lang.Object, java.lang.String)
+	 */
+	@Override
+	public void guaranteeEditorchanged(Object contract, String textChanged) {
+		contractEntityUtil.saveFormalProperty("Guarantee", textChanged, (Class) contract);
+	}
+
+	/*
+	 * (non-Javadoc)
+	 * 
+	 * @see
+	 * eu.fbk.eclipse.standardtools.contractEditor.propertyTab.ContractEditorTab
+	 * #assumptionEditorchanged(java.lang.Object, java.lang.String)
+	 */
+	@Override
+	public void assumptionEditorchanged(Object contract, String textChanged) {
+		contractEntityUtil.saveFormalProperty("Assume", textChanged, (Class) contract);
+	}
+
+	/*
+	 * (non-Javadoc)
+	 * 
+	 * @see
+	 * eu.fbk.eclipse.standardtools.contractEditor.propertyTab.ContractEditorTab
+	 * #getContractName(java.lang.Object)
+	 */
+	public String getContractName(Object contract) {
+		if (contract != null) {
+			return ((Class) contract).getQualifiedName();
+		}
+		return null;
+	}
+
+	/*
+	 * (non-Javadoc)
+	 * 
+	 * @see
+	 * eu.fbk.eclipse.standardtools.contractEditor.propertyTab.ContractEditorTab
+	 * #getAssumeStrFromContract(java.lang.Object)
+	 */
+	public String getAssumeStrFromContract(Object contract) {
+		return (contractEntityUtil.getAssumeStrFromUmlContract((Class) contract));
+	}
+
+	/*
+	 * (non-Javadoc)
+	 * 
+	 * @see
+	 * eu.fbk.eclipse.standardtools.contractEditor.propertyTab.ContractEditorTab
+	 * #getGuaranteeStrFromContract(java.lang.Object)
+	 */
+	public String getGuaranteeStrFromContract(Object contract) {
+		return (contractEntityUtil.getGuaranteeStrFromUmlContract((Class) contract));
+	}
+
+	/*
+	 * (non-Javadoc)
+	 * 
+	 * @see
+	 * eu.fbk.eclipse.standardtools.contractEditor.propertyTab.ContractEditorTab
+	 * #createContractProperty(java.lang.Object, java.lang.String)
+	 */
+	@Override
+	public void createContractProperty(Object component, String propertyName) {
+		contractEntityUtil.createContractPropertyToUmlComponent((Class) component, propertyName);
+	}
+
+	/**
+	 * It allows the user to select a formal property to be used as assumption
+	 * or guarantee of a contract.
+	 * 
+	 * @param contract
+	 *            the contract
+	 * @return the formal property selected
+	 */
+	private Constraint selectProperty(Object contract) {
+		TreeSelectorDialog dialog = new TreeSelectorDialog(Display.getDefault().getActiveShell());
+
+		UMLContentProvider provider = new UMLContentProvider(entityUtil.getToPackage((Class) contract),
+				// contract.getOwner(),
+				UMLPackage.eINSTANCE.getPackage_PackagedElement());
+
+		dialog.setContentProvider(provider);
+		dialog.setLabelProvider(new UMLLabelProvider());
+		dialog.setMessage(Messages.UMLModelingAssistantProviderMessage);
+		dialog.setTitle(Messages.UMLModelingAssistantProviderTitle);
+		if (dialog.open() == org.eclipse.jface.window.Window.OK) {
+			Object[] result = dialog.getResult();
+			if (result != null && result.length > 0 && result[0] instanceof Constraint) {
+				return (Constraint) result[0];
+			}
+		}
+		return null;
+	}
+
+}
diff --git a/org.polarsys.chess.contracts.contractEditor/.svn/pristine/e6/e671d3520c066677cb931e85b0941f3abe514693.svn-base b/org.polarsys.chess.contracts.contractEditor/.svn/pristine/e6/e671d3520c066677cb931e85b0941f3abe514693.svn-base
new file mode 100644
index 000000000..b7b3417a0
--- /dev/null
+++ b/org.polarsys.chess.contracts.contractEditor/.svn/pristine/e6/e671d3520c066677cb931e85b0941f3abe514693.svn-base
@@ -0,0 +1,236 @@
+/*******************************************************************************
+ * Copyright (C) 2017 Fondazione Bruno Kessler.
+ * 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:
+ *     Alberto Debiasi - initial API and implementation
+ ******************************************************************************/
+package org.polarsys.chess.contracts.contractEditor;
+
+import org.eclipse.emf.common.util.BasicEList;
+import org.eclipse.emf.common.util.EList;
+import org.eclipse.emf.transaction.RecordingCommand;
+import org.eclipse.emf.transaction.TransactionalEditingDomain;
+import org.eclipse.emf.transaction.util.TransactionUtil;
+import org.eclipse.jface.viewers.ISelection;
+import org.eclipse.papyrus.infra.widgets.editors.TreeSelectorDialog;
+import org.eclipse.papyrus.sysml.portandflows.FlowDirection;
+import org.eclipse.papyrus.uml.diagram.composite.part.Messages;
+import org.eclipse.papyrus.uml.tools.providers.UMLContentProvider;
+import org.eclipse.papyrus.uml.tools.providers.UMLLabelProvider;
+import org.eclipse.swt.widgets.Display;
+import org.eclipse.uml2.uml.Class;
+import org.eclipse.uml2.uml.Constraint;
+import org.eclipse.uml2.uml.Element;
+import org.eclipse.uml2.uml.Property;
+import org.eclipse.uml2.uml.UMLPackage;
+import org.polarsys.chess.contracts.profile.chesscontract.util.ContractEntityUtil;
+import org.polarsys.chess.contracts.profile.chesscontract.util.EntityUtil;
+import org.polarsys.chess.service.internal.utils.SelectionUtil;
+
+import eu.fbk.eclipse.standardtools.contractEditor.view.ContractEditorView;
+
+/**
+ * This class in not used. It creates a view that contains the contract editor.
+ * In our case we use the CustomContractEditorTab that creates a new tab from
+ * the property view in eclipse.
+ */
+public class CustomContractEditorView extends ContractEditorView {
+
+	private ContractEntityUtil contractEntityUtil = ContractEntityUtil.getInstance();
+	private SelectionUtil selectionUtil = SelectionUtil.getInstance();
+	private EntityUtil entityUtil = EntityUtil.getInstance();
+
+	@Override
+	public String[] getContractOwnerInputPorts(Object contract) {		
+		Element umlOwner = entityUtil.getOwner((Element) contract);
+		return entityUtil.getInputPortsNames(umlOwner);
+	}
+
+	@Override
+	public String[] getContractOwnerOutputPorts(Object contract) {		
+		Element umlOwner = entityUtil.getOwner((Element) contract);
+		return entityUtil.getOutputPortsNames(umlOwner);
+	}
+
+	@Override
+	public String[] getContractOwnerInputOutputPorts(Object contract) {
+		Element umlOwner = entityUtil.getOwner((Element) contract);
+		return entityUtil.getInputOutputPortsNames(umlOwner);
+	}
+
+	@Override
+	public Object returnComponent(ISelection selection) {
+
+	
+		Object selectedUmlElement = selectionUtil.getUmlSelectedObject(selection);
+
+		if (selectedUmlElement instanceof Property) {
+			if (entityUtil.isComponentInstance((Property) selectedUmlElement)) {
+				Class classType = entityUtil.getUmlType((Property) selectedUmlElement);
+				if (!contractEntityUtil.isContract(classType)) {
+					return classType;
+				}
+			}
+		} else if (selectedUmlElement instanceof Class) {
+			if (!contractEntityUtil.isContract((Class) selectedUmlElement)) {
+				return selectedUmlElement;
+			}
+		}
+
+		return null;
+	}
+
+	@Override
+	public Object returnContract(ISelection selection) {
+
+	
+		Object selectedUmlElement = selectionUtil.getUmlSelectedObject(selection);
+
+		if (selectedUmlElement instanceof Property) {
+			if (contractEntityUtil.isContractProperty((Property) selectedUmlElement)) {
+				return entityUtil.getUmlType((Property) selectedUmlElement);
+			}
+
+			if (entityUtil.isComponentInstance((Property) selectedUmlElement)) {
+				Class classType = entityUtil.getUmlType((Property) selectedUmlElement);
+				if (contractEntityUtil.isContract(classType)) {
+					return classType;
+				}
+			}
+		} else if (selectedUmlElement instanceof Class) {
+			if (contractEntityUtil.isContract((Class) selectedUmlElement)) {
+				return selectedUmlElement;
+			}
+		}
+
+		return null;
+	}
+
+	@Override
+	public String[] getContractListStr(Object component) {
+		EList<String> contractNames = new BasicEList<String>();
+
+		for (Property prop : ((Class) component).getAttributes()) {
+			if (contractEntityUtil.isContractProperty(prop)) {
+				if (prop.getType() == null) {
+					contractNames.add(prop.getName() + " : <TYPE NOT DEFINED>");
+				} else {
+					contractNames.add(prop.getName() + " : " + prop.getType().getName());
+				}
+			}
+		}
+
+		String[] contractNamesArr = new String[contractNames.size()];
+		return contractNames.toArray(contractNamesArr);
+	}
+
+	@Override
+	public Object extractContractFromComponent(Object component, String contractName) {
+		return contractEntityUtil.getUmlContract((Class) component, contractName);
+	}
+
+	@Override
+	public String getComponentName(Object component) {
+		return ((Class) component).getQualifiedName();
+	}
+
+	@Override
+	public void createAssumption(Object contract) {
+		contractEntityUtil.createAssumptionToUmlContract((Class) contract);
+	}
+
+	@Override
+	public String browseAssumptionButtonPressed(Object contract) {
+		TransactionalEditingDomain domain = TransactionUtil.getEditingDomain(contract);
+		domain.getCommandStack().execute(new RecordingCommand(domain) {
+
+			@Override
+			protected void doExecute() {
+				Constraint assumeConstraint = selectProperty(contract);
+				if (assumeConstraint != null) {
+					contractEntityUtil.assignUmlConstraintAssumptionToUmlContract(assumeConstraint, (Class) contract);
+				}
+			}
+		});
+		return contractEntityUtil.getAssumeStrFromUmlContract((Class) contract);
+
+	}
+
+	@Override
+	public void createGuarantee(Object contract) {
+		contractEntityUtil.createGuaranteeToUmlContract((Class) contract);
+	}
+
+	@Override
+	public String browseGuaranteeButtonPressed(Object contract) {
+		TransactionalEditingDomain domain = TransactionUtil.getEditingDomain(contract);
+		domain.getCommandStack().execute(new RecordingCommand(domain) {
+
+			@Override
+			protected void doExecute() {
+				Constraint guaranteeConstraint = selectProperty(contract);
+				if (guaranteeConstraint != null) {
+					contractEntityUtil.assignUmlConstraintGuaranteeToUmlContract(guaranteeConstraint, (Class) contract);
+				}
+
+			}
+		});
+		return contractEntityUtil.getGuaranteeStrFromUmlContract((Class) contract);
+	}
+
+	@Override
+	public void guaranteeEditorchanged(Object contract, String textChanged) {
+		contractEntityUtil.saveFormalProperty("Guarantee", textChanged, (Class) contract);
+	}
+
+	@Override
+	public void assumptionEditorchanged(Object contract, String textChanged) {
+		contractEntityUtil.saveFormalProperty("Assume", textChanged, (Class) contract);
+	}
+
+	private Constraint selectProperty(Object contract) {
+		TreeSelectorDialog dialog = new TreeSelectorDialog(Display.getDefault().getActiveShell());
+
+		UMLContentProvider provider = new UMLContentProvider(entityUtil.getToPackage((Class) contract),
+				// contract.getOwner(),
+				UMLPackage.eINSTANCE.getPackage_PackagedElement());
+
+		dialog.setContentProvider(provider);
+		dialog.setLabelProvider(new UMLLabelProvider());
+		dialog.setMessage(Messages.UMLModelingAssistantProviderMessage);
+		dialog.setTitle(Messages.UMLModelingAssistantProviderTitle);
+		if (dialog.open() == org.eclipse.jface.window.Window.OK) {
+			Object[] result = dialog.getResult();
+			if (result != null && result.length > 0 && result[0] instanceof Constraint) {
+				return (Constraint) result[0];
+			}
+		}
+		return null;
+	}
+
+	public String getContractName(Object contract) {
+		if (contract != null) {
+			return ((Class) contract).getQualifiedName();
+		}
+		return null;
+	}
+
+	public String getAssumeStrFromContract(Object contract) {
+		return (contractEntityUtil.getAssumeStrFromUmlContract((Class) contract));
+	}
+
+	public String getGuaranteeStrFromContract(Object contract) {
+		return (contractEntityUtil.getGuaranteeStrFromUmlContract((Class) contract));
+	}
+
+	@Override
+	public String[] getEnumValuesFromContractOwnerPorts(Object contract) {
+		Class element = (Class) ((Class) contract).getOwner();
+		return entityUtil.getEnumValuesFromComponentPorts(element);	
+	}
+
+}
diff --git a/org.polarsys.chess.contracts.contractEditor/.svn/pristine/f6/f65dbd3910b374f52dba68e819ca53d86900f5e8.svn-base b/org.polarsys.chess.contracts.contractEditor/.svn/pristine/f6/f65dbd3910b374f52dba68e819ca53d86900f5e8.svn-base
new file mode 100644
index 000000000..d7d6713f2
--- /dev/null
+++ b/org.polarsys.chess.contracts.contractEditor/.svn/pristine/f6/f65dbd3910b374f52dba68e819ca53d86900f5e8.svn-base
@@ -0,0 +1,397 @@
+/*******************************************************************************
+ * Copyright (C) 2017 Fondazione Bruno Kessler.
+ * 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:
+ *     Alberto Debiasi - initial API and implementation
+ ******************************************************************************/
+package org.polarsys.chess.contracts.contractEditor;
+
+import org.eclipse.emf.common.util.BasicEList;
+import org.eclipse.emf.common.util.EList;
+import org.eclipse.emf.ecore.resource.Resource;
+import org.eclipse.emf.transaction.RecordingCommand;
+import org.eclipse.emf.transaction.TransactionalEditingDomain;
+import org.eclipse.emf.transaction.util.TransactionUtil;
+import org.eclipse.jface.viewers.ISelection;
+import org.eclipse.papyrus.infra.widgets.editors.TreeSelectorDialog;
+import org.eclipse.papyrus.sysml.portandflows.FlowDirection;
+import org.eclipse.papyrus.uml.diagram.composite.part.Messages;
+import org.eclipse.papyrus.uml.tools.providers.UMLContentProvider;
+import org.eclipse.papyrus.uml.tools.providers.UMLLabelProvider;
+import org.eclipse.swt.widgets.Display;
+import org.eclipse.uml2.uml.Class;
+import org.eclipse.uml2.uml.Constraint;
+import org.eclipse.uml2.uml.Element;
+import org.eclipse.uml2.uml.Property;
+import org.eclipse.uml2.uml.UMLPackage;
+import org.polarsys.chess.contracts.profile.chesscontract.util.ContractEntityUtil;
+import org.polarsys.chess.core.util.uml.EntityUtil;
+import org.polarsys.chess.service.internal.utils.SelectionUtil;
+
+import eu.fbk.eclipse.standardtools.contractEditor.propertyTab.ContractEditorTab;
+
+/**
+ * This is the contract editor designed for the CHESS platform. It extends the
+ * ContractEditorTab that is designed to be extended and contains standard
+ * methods not related to specific technologies. The only rule is that it
+ * requires Eclipse based platforms.
+ *
+ */
+public class CustomContractEditorTab extends ContractEditorTab {
+
+	private ContractEntityUtil contractEntityUtil = ContractEntityUtil.getInstance();
+	private SelectionUtil selectionUtil = SelectionUtil.getInstance();
+	private EntityUtil entityUtil = EntityUtil.getInstance();
+
+	@Override
+	public Resource getResourceFromContract(Object contract) {
+		return ((Class) contract).eResource();
+	}
+
+	/*
+	 * (non-Javadoc)
+	 * 
+	 * @see
+	 * eu.fbk.eclipse.standardtools.contractEditor.propertyTab.ContractEditorTab
+	 * #getContractOwnerInputPorts(java.lang.Object)
+	 */
+	@Override
+	public String[] getContractOwnerInputPorts(Object contract) {
+		Element umlOwner = entityUtil.getOwner((Element) contract);
+		return entityUtil.getInputPortsNames(umlOwner);
+	}
+
+	/*
+	 * (non-Javadoc)
+	 * 
+	 * @see
+	 * eu.fbk.eclipse.standardtools.contractEditor.propertyTab.ContractEditorTab
+	 * #getContractOwnerOutputPorts(java.lang.Object)
+	 */
+	@Override
+	public String[] getContractOwnerOutputPorts(Object contract) {
+		Element umlOwner = entityUtil.getOwner((Element) contract);
+		return entityUtil.getOutputPortsNames(umlOwner);
+	}
+
+	/*
+	 * (non-Javadoc)
+	 * 
+	 * @see
+	 * eu.fbk.eclipse.standardtools.contractEditor.propertyTab.ContractEditorTab
+	 * #getContractOwnerInputOutputPorts(java.lang.Object)
+	 */
+	@Override
+	public String[] getContractOwnerInputOutputPorts(Object contract) {
+		Element umlOwner = entityUtil.getOwner((Element) contract);
+		return entityUtil.getInputOutputPortsNames(umlOwner);
+
+	}
+
+	/*
+	 * (non-Javadoc)
+	 * 
+	 * @see
+	 * eu.fbk.eclipse.standardtools.contractEditor.propertyTab.ContractEditorTab
+	 * #getContractOwnerAttributes(java.lang.Object)
+	 */
+	@Override
+	public String[] getContractOwnerAttributes(Object contract) {
+		Element element = ((Class) contract).getOwner();
+		EList<String> attrArr = new BasicEList<String>();
+
+		attrArr.addAll(entityUtil.getBooleanAttributesNamesExceptsPorts(element));
+		String[] attributesStrArr = new String[attrArr.size()];
+		return attrArr.toArray(attributesStrArr);
+
+	}
+
+	/*
+	 * (non-Javadoc)
+	 * 
+	 * @see
+	 * eu.fbk.eclipse.standardtools.contractEditor.propertyTab.ContractEditorTab
+	 * #returnComponent(org.eclipse.jface.viewers.ISelection)
+	 */
+	@Override
+	public Object returnComponent(ISelection selection) {
+
+		Object selectedUmlElement = selectionUtil.getUmlSelectedObject(selection);
+
+		if (selectedUmlElement instanceof Property) {
+			if (entityUtil.isComponentInstance((Property) selectedUmlElement)) {
+				Class umlClass = entityUtil.getUmlType((Property) selectedUmlElement);
+
+				if (!contractEntityUtil.isContract(umlClass)) {
+					return umlClass;
+				}
+			}
+		} else if (selectedUmlElement instanceof Class) {
+			if (!contractEntityUtil.isContract((Class) selectedUmlElement)) {
+				return selectedUmlElement;
+			}
+		}
+
+		return null;
+	}
+
+	/*
+	 * (non-Javadoc)
+	 * 
+	 * @see
+	 * eu.fbk.eclipse.standardtools.contractEditor.propertyTab.ContractEditorTab
+	 * #returnContract(org.eclipse.jface.viewers.ISelection)
+	 */
+	@Override
+	public Object returnContract(ISelection selection) {
+
+	
+		Object selectedUmlElement = selectionUtil.getUmlSelectedObject(selection);
+
+		if (selectedUmlElement instanceof Property) {
+			if (contractEntityUtil.isContractProperty((Property) selectedUmlElement)) {
+				return entityUtil.getUmlType((Property) selectedUmlElement);
+			}
+
+			if (entityUtil.isComponentInstance((Property) selectedUmlElement)) {
+				Class classType = entityUtil.getUmlType((Property) selectedUmlElement);
+				if (contractEntityUtil.isContract(classType)) {
+					return classType;
+				}
+			}
+		} else if (selectedUmlElement instanceof Class) {
+			if (contractEntityUtil.isContract((Class) selectedUmlElement)) {
+				return selectedUmlElement;
+			}
+		}
+
+		return null;
+	}
+
+	/*
+	 * (non-Javadoc)
+	 * 
+	 * @see
+	 * eu.fbk.eclipse.standardtools.contractEditor.propertyTab.ContractEditorTab
+	 * #getContractListStr(java.lang.Object)
+	 */
+	@Override
+	public String[] getContractListStr(Object component) {
+		EList<String> contractNames = new BasicEList<String>();
+
+		for (Property prop : ((Class) component).getAttributes()) {
+			if (contractEntityUtil.isContractProperty(prop)) {
+				if (prop.getType() == null) {
+					contractNames.add(prop.getName() + " : <TYPE NOT DEFINED>");
+				} else {
+					contractNames.add(prop.getName() + " : " + prop.getType().getName());
+				}
+			}
+		}
+
+		String[] contractNamesArr = new String[contractNames.size()];
+		return contractNames.toArray(contractNamesArr);
+	}
+
+	/*
+	 * (non-Javadoc)
+	 * 
+	 * @see
+	 * eu.fbk.eclipse.standardtools.contractEditor.propertyTab.ContractEditorTab
+	 * #extractContractFromComponent(java.lang.Object, java.lang.String)
+	 */
+	@Override
+	public Object extractContractFromComponent(Object component, String contractName) {
+		return contractEntityUtil.getUmlContract((Class) component, contractName);
+	}
+
+	/*
+	 * (non-Javadoc)
+	 * 
+	 * @see
+	 * eu.fbk.eclipse.standardtools.contractEditor.propertyTab.ContractEditorTab
+	 * #getComponentName(java.lang.Object)
+	 */
+	@Override
+	public String getComponentName(Object component) {
+		return ((Class) component).getQualifiedName();
+	}
+
+	/*
+	 * (non-Javadoc)
+	 * 
+	 * @see
+	 * eu.fbk.eclipse.standardtools.contractEditor.propertyTab.ContractEditorTab
+	 * #createAssumption(java.lang.Object)
+	 */
+	@Override
+	public void createAssumption(Object contract) {
+		contractEntityUtil.createAssumptionToUmlContract((Class) contract);
+	}
+
+	/*
+	 * (non-Javadoc)
+	 * 
+	 * @see
+	 * eu.fbk.eclipse.standardtools.contractEditor.propertyTab.ContractEditorTab
+	 * #browseAssumptionButtonPressed(java.lang.Object)
+	 */
+	@Override
+	public String browseAssumptionButtonPressed(Object contract) {
+
+		TransactionalEditingDomain domain = TransactionUtil.getEditingDomain(contract);
+		domain.getCommandStack().execute(new RecordingCommand(domain) {
+
+			@Override
+			protected void doExecute() {
+				Constraint assumeConstraint = selectProperty(contract);
+				if (assumeConstraint != null) {
+					contractEntityUtil.assignUmlConstraintAssumptionToUmlContract(assumeConstraint, (Class) contract);
+				}
+			}
+		});
+		return contractEntityUtil.getAssumeStrFromUmlContract((Class) contract);
+
+	}
+
+	/*
+	 * (non-Javadoc)
+	 * 
+	 * @see
+	 * eu.fbk.eclipse.standardtools.contractEditor.propertyTab.ContractEditorTab
+	 * #createGuarantee(java.lang.Object)
+	 */
+	@Override
+	public void createGuarantee(Object contract) {
+		contractEntityUtil.createGuaranteeToUmlContract((Class) contract);
+	}
+
+	/*
+	 * (non-Javadoc)
+	 * 
+	 * @see
+	 * eu.fbk.eclipse.standardtools.contractEditor.propertyTab.ContractEditorTab
+	 * #browseGuaranteeButtonPressed(java.lang.Object)
+	 */
+	@Override
+	public String browseGuaranteeButtonPressed(Object contract) {
+		TransactionalEditingDomain domain = TransactionUtil.getEditingDomain(contract);
+		domain.getCommandStack().execute(new RecordingCommand(domain) {
+
+			@Override
+			protected void doExecute() {
+				Constraint guaranteeConstraint = selectProperty(contract);
+				if (guaranteeConstraint != null) {
+					contractEntityUtil.assignUmlConstraintGuaranteeToUmlContract(guaranteeConstraint, (Class) contract);
+				}
+
+			}
+		});
+		return contractEntityUtil.getGuaranteeStrFromUmlContract((Class) contract);
+	}
+
+	/*
+	 * (non-Javadoc)
+	 * 
+	 * @see
+	 * eu.fbk.eclipse.standardtools.contractEditor.propertyTab.ContractEditorTab
+	 * #guaranteeEditorchanged(java.lang.Object, java.lang.String)
+	 */
+	@Override
+	public void guaranteeEditorchanged(Object contract, String textChanged) {
+		contractEntityUtil.saveFormalProperty("Guarantee", textChanged, (Class) contract);
+	}
+
+	/*
+	 * (non-Javadoc)
+	 * 
+	 * @see
+	 * eu.fbk.eclipse.standardtools.contractEditor.propertyTab.ContractEditorTab
+	 * #assumptionEditorchanged(java.lang.Object, java.lang.String)
+	 */
+	@Override
+	public void assumptionEditorchanged(Object contract, String textChanged) {
+		contractEntityUtil.saveFormalProperty("Assume", textChanged, (Class) contract);
+	}
+
+	/*
+	 * (non-Javadoc)
+	 * 
+	 * @see
+	 * eu.fbk.eclipse.standardtools.contractEditor.propertyTab.ContractEditorTab
+	 * #getContractName(java.lang.Object)
+	 */
+	public String getContractName(Object contract) {
+		if (contract != null) {
+			return ((Class) contract).getQualifiedName();
+		}
+		return null;
+	}
+
+	/*
+	 * (non-Javadoc)
+	 * 
+	 * @see
+	 * eu.fbk.eclipse.standardtools.contractEditor.propertyTab.ContractEditorTab
+	 * #getAssumeStrFromContract(java.lang.Object)
+	 */
+	public String getAssumeStrFromContract(Object contract) {
+		return (contractEntityUtil.getAssumeStrFromUmlContract((Class) contract));
+	}
+
+	/*
+	 * (non-Javadoc)
+	 * 
+	 * @see
+	 * eu.fbk.eclipse.standardtools.contractEditor.propertyTab.ContractEditorTab
+	 * #getGuaranteeStrFromContract(java.lang.Object)
+	 */
+	public String getGuaranteeStrFromContract(Object contract) {
+		return (contractEntityUtil.getGuaranteeStrFromUmlContract((Class) contract));
+	}
+
+	/*
+	 * (non-Javadoc)
+	 * 
+	 * @see
+	 * eu.fbk.eclipse.standardtools.contractEditor.propertyTab.ContractEditorTab
+	 * #createContractProperty(java.lang.Object, java.lang.String)
+	 */
+	@Override
+	public void createContractProperty(Object component, String propertyName) {
+		contractEntityUtil.createContractPropertyToUmlComponent((Class) component, propertyName);
+	}
+
+	/**
+	 * It allows the user to select a formal property to be used as assumption
+	 * or guarantee of a contract.
+	 * 
+	 * @param contract
+	 *            the contract
+	 * @return the formal property selected
+	 */
+	private Constraint selectProperty(Object contract) {
+		TreeSelectorDialog dialog = new TreeSelectorDialog(Display.getDefault().getActiveShell());
+
+		UMLContentProvider provider = new UMLContentProvider(entityUtil.getToPackage((Class) contract),
+				// contract.getOwner(),
+				UMLPackage.eINSTANCE.getPackage_PackagedElement());
+
+		dialog.setContentProvider(provider);
+		dialog.setLabelProvider(new UMLLabelProvider());
+		dialog.setMessage(Messages.UMLModelingAssistantProviderMessage);
+		dialog.setTitle(Messages.UMLModelingAssistantProviderTitle);
+		if (dialog.open() == org.eclipse.jface.window.Window.OK) {
+			Object[] result = dialog.getResult();
+			if (result != null && result.length > 0 && result[0] instanceof Constraint) {
+				return (Constraint) result[0];
+			}
+		}
+		return null;
+	}
+
+}
diff --git a/org.polarsys.chess.contracts.contractEditor/.svn/wc.db b/org.polarsys.chess.contracts.contractEditor/.svn/wc.db
new file mode 100644
index 0000000000000000000000000000000000000000..7c79b31486885572419033d308130f25fcb55e13
GIT binary patch
literal 58368
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
Mh=AP8^TNUZ57YZ6)&Kwi

literal 0
HcmV?d00001

diff --git a/org.polarsys.chess.contracts.hierarchicalContractView/.svn/entries b/org.polarsys.chess.contracts.hierarchicalContractView/.svn/entries
new file mode 100644
index 000000000..3cacc0b93
--- /dev/null
+++ b/org.polarsys.chess.contracts.hierarchicalContractView/.svn/entries
@@ -0,0 +1 @@
+12
\ No newline at end of file
diff --git a/org.polarsys.chess.contracts.hierarchicalContractView/.svn/format b/org.polarsys.chess.contracts.hierarchicalContractView/.svn/format
new file mode 100644
index 000000000..3cacc0b93
--- /dev/null
+++ b/org.polarsys.chess.contracts.hierarchicalContractView/.svn/format
@@ -0,0 +1 @@
+12
\ No newline at end of file
diff --git a/org.polarsys.chess.contracts.hierarchicalContractView/.svn/pristine/01/01ab9fd085adb4aa6e6cddf9061185997a361249.svn-base b/org.polarsys.chess.contracts.hierarchicalContractView/.svn/pristine/01/01ab9fd085adb4aa6e6cddf9061185997a361249.svn-base
new file mode 100644
index 0000000000000000000000000000000000000000..13ce11b1490b0691db9fc3b2a7a2a2055a5cf965
GIT binary patch
literal 310
zcmZ?wbhEHb6krfwxXQp_5i-F#Vya!t47-?VZYlHA>(@?NeB3%}s%zRpx3q<>Df3;^
z=DVfM_sd_oXx)M9kKaz+bz<tC6ATe*wOjl1=GOU4kBeTI)4neF`n|;EQ{4704F31=
z^v^T#KhMSgJd?1nRJcEZzdfAq|Ns9Cv;m4gSr{1@lo)hC#)JICz!vN<vA{z|s{cev
z(C5soDT~gh{c3EolHuoA#aU?_kf^*TKtQ6CMX6GQt*@``j^eD4caxJIACwO_Xb^Q}
e77!F*QW6sH7II}{n82zeA~aPjafYWOgEasGs94|t

literal 0
HcmV?d00001

diff --git a/org.polarsys.chess.contracts.hierarchicalContractView/.svn/pristine/0a/0a82249cac8243537996a9a634978c6154e6d440.svn-base b/org.polarsys.chess.contracts.hierarchicalContractView/.svn/pristine/0a/0a82249cac8243537996a9a634978c6154e6d440.svn-base
new file mode 100644
index 000000000..f6aa93afc
--- /dev/null
+++ b/org.polarsys.chess.contracts.hierarchicalContractView/.svn/pristine/0a/0a82249cac8243537996a9a634978c6154e6d440.svn-base
@@ -0,0 +1,53 @@
+/*******************************************************************************
+ * Copyright (C) 2017 Fondazione Bruno Kessler.
+ * 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:
+ *     Alberto Debiasi - initial API and implementation
+ ******************************************************************************/
+package org.polarsys.chess.contracts.hierarchicalContractView.treeElements;
+
+import java.util.List;
+
+import org.eclipse.uml2.uml.Class;
+import org.eclipse.uml2.uml.Property;
+import org.polarsys.chess.contracts.profile.chesscontract.util.ContractEntityUtil;
+import org.polarsys.chess.contracts.profile.chesscontract.util.EntityUtil;
+
+import eu.fbk.eclipse.standardtools.hierarchicalContractView.core.treeElements.ComponentNode;
+import eu.fbk.eclipse.standardtools.hierarchicalContractView.core.treeElements.ContractNode;
+import eu.fbk.eclipse.standardtools.hierarchicalContractView.core.treeElements.ITreeNode;
+import eu.fbk.eclipse.standardtools.hierarchicalContractView.core.treeElements.TreeNode;
+
+public class CHESSComponentNode extends ComponentNode {
+
+	private ContractEntityUtil contractEntityUtil = ContractEntityUtil.getInstance();
+	private EntityUtil entityUtil = EntityUtil.getInstance();
+
+	public CHESSComponentNode(ITreeNode parent, Object associatedObject) {
+		super(parent, associatedObject);
+	}
+
+	@Override
+	public void createChildren(Object associatedObject, List<TreeNode> children) {
+		for (Property umlProperty : ((Class) entityUtil.getUmlType((Property) associatedObject)).getAttributes()) {
+			if (contractEntityUtil.isContractProperty(umlProperty)) {
+				children.add(new ContractNode(this, entityUtil.getUmlType(umlProperty).getName()));
+			} else if (entityUtil.isComponentInstance(umlProperty)) {
+				children.add(new CHESSComponentNode(this, umlProperty));
+			}
+		}
+
+	}
+
+	@Override
+	public String getName(Object associatedObject) {
+		String typeName = entityUtil.getUmlType((Property) associatedObject).getName();
+		String propertyName = ((Property) associatedObject).getName();
+		return propertyName + ":" + typeName;
+		}
+
+}
diff --git a/org.polarsys.chess.contracts.hierarchicalContractView/.svn/pristine/0d/0d0cfbf78c180409845c386b0741a918c4683253.svn-base b/org.polarsys.chess.contracts.hierarchicalContractView/.svn/pristine/0d/0d0cfbf78c180409845c386b0741a918c4683253.svn-base
new file mode 100644
index 000000000..e7fd9156d
--- /dev/null
+++ b/org.polarsys.chess.contracts.hierarchicalContractView/.svn/pristine/0d/0d0cfbf78c180409845c386b0741a918c4683253.svn-base
@@ -0,0 +1,51 @@
+/*******************************************************************************
+ * Copyright (C) 2017 Fondazione Bruno Kessler.
+ * 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:
+ *     Alberto Debiasi - initial API and implementation
+ ******************************************************************************/
+package org.polarsys.chess.contracts.hierarchicalContractView.treeElements;
+
+import java.util.List;
+
+import org.eclipse.uml2.uml.Class;
+import org.eclipse.uml2.uml.Property;
+import org.polarsys.chess.utils.ContractEntityUtil;
+import org.polarsys.chess.utils.EntityUtil;
+
+import eu.fbk.eclipse.standardtools.hierarchicalContractView.core.treeElements.ContractNode;
+import eu.fbk.eclipse.standardtools.hierarchicalContractView.core.treeElements.SystemNode;
+import eu.fbk.eclipse.standardtools.hierarchicalContractView.core.treeElements.TreeNode;
+
+public class CHESSSystemNode extends SystemNode {
+
+	private ContractEntityUtil contractEntityUtil = ContractEntityUtil.getInstance();
+	private EntityUtil entityUtil = EntityUtil.getInstance();
+
+	public CHESSSystemNode(Object system) {
+		super(system);
+	}
+
+	@Override
+	public String getName(Object system) {
+		return entityUtil.getName((Class) system);
+	}
+
+	@Override
+	public void createChildren(Object system, List<TreeNode> children) {
+		for (Property umlProperty : ((Class) system).getAttributes()) {
+
+			if (contractEntityUtil.isContractProperty(umlProperty)) {
+				children.add(new ContractNode(this, entityUtil.getUmlType(umlProperty).getName()));
+			} else if (entityUtil.isComponentInstance(umlProperty)) {
+				children.add(new CHESSComponentNode(this, umlProperty));
+			}
+		}
+
+	}
+
+}
diff --git a/org.polarsys.chess.contracts.hierarchicalContractView/.svn/pristine/1b/1b6de9af97137f312a53210fba75ea9cf976f8a6.svn-base b/org.polarsys.chess.contracts.hierarchicalContractView/.svn/pristine/1b/1b6de9af97137f312a53210fba75ea9cf976f8a6.svn-base
new file mode 100644
index 000000000..a97c45f36
--- /dev/null
+++ b/org.polarsys.chess.contracts.hierarchicalContractView/.svn/pristine/1b/1b6de9af97137f312a53210fba75ea9cf976f8a6.svn-base
@@ -0,0 +1,70 @@
+/*******************************************************************************
+ * Copyright (C) 2017 Fondazione Bruno Kessler.
+ * 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:
+ *     Alberto Debiasi - initial API and implementation
+ ******************************************************************************/
+package org.polarsys.chess.contracts.hierarchicalContractView.view;
+
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.Iterator;
+
+import org.eclipse.core.runtime.Platform;
+import org.eclipse.emf.common.util.TreeIterator;
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.emf.ecore.util.EcoreUtil;
+import org.eclipse.papyrus.uml.tools.model.UmlModel;
+import org.eclipse.papyrus.uml.tools.model.UmlUtils;
+import org.eclipse.uml2.uml.Class;
+import org.eclipse.uml2.uml.UMLPackage;
+import org.polarsys.chess.contracts.hierarchicalContractView.treeElements.CHESSRootNode;
+import org.polarsys.chess.contracts.profile.chesscontract.util.EntityUtil;
+
+import eu.fbk.eclipse.standardtools.hierarchicalContractView.core.treeElements.RootNode;
+import eu.fbk.eclipse.standardtools.hierarchicalContractView.core.view.HierarchicalView;
+
+public class CustomHierarchicalView extends HierarchicalView {
+
+	public static String View_ID = "org.polarsys.chess.contracts.hierarchicalContractView.view1";
+	private EntityUtil entityUtil = EntityUtil.getInstance();
+
+	public RootNode getSystemObjects() {
+		Platform.getBundle(" ");
+		UmlModel umlModel = UmlUtils.getUmlModel();
+		ArrayList<Object> systems = null;
+		if (umlModel != null) {
+			systems = new ArrayList<Object>();
+			TreeIterator<EObject> allElements = umlModel.getResource().getAllContents();
+			if (allElements != null) {
+				Collection<org.eclipse.uml2.uml.Class> classes = EcoreUtil
+						.getObjectsByType(iterator2Collection(allElements), UMLPackage.eINSTANCE.getClass_());
+
+				for (Class c : classes) {
+					if (entityUtil.isSystem(c)) {
+						systems.add(c);
+					}
+				}
+
+				return new CHESSRootNode(systems);
+
+			}
+		}
+		return null;
+	}
+
+	
+	private <T> Collection<T> iterator2Collection(final Iterator<T> iter) {
+		ArrayList<T> list = new ArrayList<T>();
+		for (; iter.hasNext();) {
+			T item = iter.next();
+			list.add(item);
+		}
+		return list;
+	}
+
+}
diff --git a/org.polarsys.chess.contracts.hierarchicalContractView/.svn/pristine/2d/2d783db107d2284118e825be555399feac014c0c.svn-base b/org.polarsys.chess.contracts.hierarchicalContractView/.svn/pristine/2d/2d783db107d2284118e825be555399feac014c0c.svn-base
new file mode 100644
index 000000000..9b59898d6
--- /dev/null
+++ b/org.polarsys.chess.contracts.hierarchicalContractView/.svn/pristine/2d/2d783db107d2284118e825be555399feac014c0c.svn-base
@@ -0,0 +1,23 @@
+Manifest-Version: 1.0
+Bundle-ManifestVersion: 2
+Bundle-Name: org.polarsys.chess.contracts.hierarchicalContractView
+Bundle-SymbolicName: org.polarsys.chess.contracts.hierarchicalContractView;singleton:=true
+Bundle-Version: 1.0.0.qualifier
+Bundle-RequiredExecutionEnvironment: JavaSE-1.8
+Require-Bundle: org.polarsys.chess.core,
+ eu.fbk.eclipse.standardtools.hierarchicalContractView.core,
+ org.eclipse.papyrus.uml.tools,
+ org.polarsys.chess.utils
+Bundle-ActivationPolicy: lazy
+Import-Package: com.google.common.collect;version="10.0.1",
+ org.eclipse.emf.common.util,
+ org.eclipse.emf.ecore.resource,
+ org.eclipse.jface.text,
+ org.eclipse.jface.text.source,
+ org.eclipse.papyrus.sysml.blocks,
+ org.eclipse.papyrus.sysml.diagram.common.edit.part,
+ org.eclipse.papyrus.uml.diagram.clazz.edit.parts,
+ org.eclipse.papyrus.uml.diagram.common.editparts,
+ org.eclipse.ui.part,
+ org.eclipse.uml2.uml.resources.util
+Bundle-Vendor: Fondazione Bruno Kessler
diff --git a/org.polarsys.chess.contracts.hierarchicalContractView/.svn/pristine/3d/3dacdbc2f22793e92e810dea0db2ab3fc75f9cf8.svn-base b/org.polarsys.chess.contracts.hierarchicalContractView/.svn/pristine/3d/3dacdbc2f22793e92e810dea0db2ab3fc75f9cf8.svn-base
new file mode 100644
index 0000000000000000000000000000000000000000..75f022696367436c93e89470fa05e28205c38609
GIT binary patch
literal 110
zcmZ?wbhEHb6krfwIK;vL0<(6`yTI`O|NlR`YT-!nCkrDN0}F!=NC8MK1GBLQ*PU}&
zt)AL3`pq0|{})_qh*O@E;Xdod%C<+pV_SUqHuf5?t=_B~`)+&WorF0uYnS;jFjxZs
D?nEo^

literal 0
HcmV?d00001

diff --git a/org.polarsys.chess.contracts.hierarchicalContractView/.svn/pristine/51/512bd49c4ba767010f32a54ef22de71e83bd7e1e.svn-base b/org.polarsys.chess.contracts.hierarchicalContractView/.svn/pristine/51/512bd49c4ba767010f32a54ef22de71e83bd7e1e.svn-base
new file mode 100644
index 000000000..295926d96
--- /dev/null
+++ b/org.polarsys.chess.contracts.hierarchicalContractView/.svn/pristine/51/512bd49c4ba767010f32a54ef22de71e83bd7e1e.svn-base
@@ -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/org.polarsys.chess.contracts.hierarchicalContractView/.svn/pristine/76/76a598fef1badbee7ff487ea4f24c74c7bacccd6.svn-base b/org.polarsys.chess.contracts.hierarchicalContractView/.svn/pristine/76/76a598fef1badbee7ff487ea4f24c74c7bacccd6.svn-base
new file mode 100644
index 000000000..c3bffa886
--- /dev/null
+++ b/org.polarsys.chess.contracts.hierarchicalContractView/.svn/pristine/76/76a598fef1badbee7ff487ea4f24c74c7bacccd6.svn-base
@@ -0,0 +1,80 @@
+/*******************************************************************************
+ * Copyright (C) 2017 Fondazione Bruno Kessler.
+ * 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:
+ *     Alberto Debiasi - initial API and implementation
+ ******************************************************************************/
+package org.polarsys.chess.contracts.hierarchicalContractView.listener;
+
+import org.eclipse.core.resources.IProject;
+import org.eclipse.core.resources.IResource;
+import org.eclipse.core.runtime.IAdaptable;
+import org.eclipse.jface.viewers.ISelection;
+import org.eclipse.jface.viewers.IStructuredSelection;
+import org.eclipse.papyrus.uml.tools.model.UmlModel;
+import org.eclipse.papyrus.uml.tools.model.UmlUtils;
+import org.eclipse.ui.ISelectionService;
+import org.eclipse.ui.IViewPart;
+import org.eclipse.ui.IWorkbench;
+import org.eclipse.ui.IWorkbenchPart;
+import org.eclipse.ui.IWorkbenchWindow;
+import org.eclipse.ui.PlatformUI;
+import org.polarsys.chess.contracts.hierarchicalContractView.view.CustomHierarchicalView;
+import org.polarsys.chess.core.resourcelistener.SelectionListenerExtra;
+
+import eu.fbk.eclipse.standardtools.hierarchicalContractView.core.view.HierarchicalView;
+
+public class SelectionListener extends SelectionListenerExtra {
+
+	private UmlModel prevModelID;
+
+	@Override
+	public void selectionChanged(IWorkbenchPart part, ISelection selection) {
+		if (selection instanceof IStructuredSelection) {
+			Object element = ((IStructuredSelection) selection).getFirstElement();
+			if (element instanceof IAdaptable) {
+				IResource resource = (IResource) ((IAdaptable) element).getAdapter(IResource.class);
+				if (resource != null) {
+
+					UmlModel modelID = UmlUtils.getUmlModel();
+
+					if (modelID != prevModelID) {
+						IWorkbench workbench = PlatformUI.getWorkbench();
+						IWorkbenchWindow window = workbench.getActiveWorkbenchWindow();
+						IViewPart modelExplorerViewPart;
+
+						modelExplorerViewPart = window.getActivePage().findView(CustomHierarchicalView.View_ID);
+						if (modelExplorerViewPart != null) {
+							HierarchicalView view = (HierarchicalView) modelExplorerViewPart;
+							view.updateView();
+							prevModelID = modelID;
+						}
+					}
+				}
+			}
+		}
+
+	}
+
+	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();
+
+			IResource resource = (IResource) ((IAdaptable) element).getAdapter(IResource.class);
+			if (resource != null) {
+				project = resource.getProject();
+			}
+		}
+		return project;
+	}
+
+}
diff --git a/org.polarsys.chess.contracts.hierarchicalContractView/.svn/pristine/7b/7bb731e1f72d4935225aa2a066919f3d6d51715f.svn-base b/org.polarsys.chess.contracts.hierarchicalContractView/.svn/pristine/7b/7bb731e1f72d4935225aa2a066919f3d6d51715f.svn-base
new file mode 100644
index 000000000..08b1f5bde
--- /dev/null
+++ b/org.polarsys.chess.contracts.hierarchicalContractView/.svn/pristine/7b/7bb731e1f72d4935225aa2a066919f3d6d51715f.svn-base
@@ -0,0 +1,28 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+	<name>org.polarsys.chess.contracts.hierarchicalContractView</name>
+	<comment></comment>
+	<projects>
+	</projects>
+	<buildSpec>
+		<buildCommand>
+			<name>org.eclipse.jdt.core.javabuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+		<buildCommand>
+			<name>org.eclipse.pde.ManifestBuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+		<buildCommand>
+			<name>org.eclipse.pde.SchemaBuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+	</buildSpec>
+	<natures>
+		<nature>org.eclipse.pde.PluginNature</nature>
+		<nature>org.eclipse.jdt.core.javanature</nature>
+	</natures>
+</projectDescription>
diff --git a/org.polarsys.chess.contracts.hierarchicalContractView/.svn/pristine/7d/7d528da0acd9334fc6aaca8460f63315934c4de4.svn-base b/org.polarsys.chess.contracts.hierarchicalContractView/.svn/pristine/7d/7d528da0acd9334fc6aaca8460f63315934c4de4.svn-base
new file mode 100644
index 000000000..2f927d118
--- /dev/null
+++ b/org.polarsys.chess.contracts.hierarchicalContractView/.svn/pristine/7d/7d528da0acd9334fc6aaca8460f63315934c4de4.svn-base
@@ -0,0 +1,30 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<?eclipse version="3.4"?>
+<plugin>
+   <extension
+         point="org.eclipse.ui.views">
+      <view
+            category="org.eclipse.papyrus.views.category"
+            class="org.polarsys.chess.contracts.hierarchicalContractView.view.CustomHierarchicalView"
+            icon="icons/site_element.gif"
+            id="org.polarsys.chess.contracts.hierarchicalContractView.view1"
+            name="Hierarchical Model View"
+            restorable="true">
+      </view>
+   </extension>
+   <extension
+         point="org.eclipse.papyrus.infra.core.modelListener">
+      <listener
+            name="org.polarsys.chess.contracts.hierarchicalContractView.listener"
+            realization="org.polarsys.chess.contracts.hierarchicalContractView.listener.PapyrusListener">
+      </listener>
+   </extension>
+ <!--  <extension
+         point="org.polarsys.chess.selectionListener">
+      <listener
+            name="eu.fbk.contracts.hierarchicalContractView.listener1"
+            realization="eu.fbk.contracts.hierarchicalcontractview.listener.SelectionListener">
+      </listener>
+   </extension> -->
+
+</plugin>
diff --git a/org.polarsys.chess.contracts.hierarchicalContractView/.svn/pristine/84/840bb71c03bf83525100c2e64ed14e864bbbba56.svn-base b/org.polarsys.chess.contracts.hierarchicalContractView/.svn/pristine/84/840bb71c03bf83525100c2e64ed14e864bbbba56.svn-base
new file mode 100644
index 000000000..b862a296d
--- /dev/null
+++ b/org.polarsys.chess.contracts.hierarchicalContractView/.svn/pristine/84/840bb71c03bf83525100c2e64ed14e864bbbba56.svn-base
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<classpath>
+	<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.8"/>
+	<classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>
+	<classpathentry kind="src" path="src"/>
+	<classpathentry kind="output" path="bin"/>
+</classpath>
diff --git a/org.polarsys.chess.contracts.hierarchicalContractView/.svn/pristine/85/85626f0b1429896ca7fce0cf76a3e087ece43e67.svn-base b/org.polarsys.chess.contracts.hierarchicalContractView/.svn/pristine/85/85626f0b1429896ca7fce0cf76a3e087ece43e67.svn-base
new file mode 100644
index 000000000..164f8b890
--- /dev/null
+++ b/org.polarsys.chess.contracts.hierarchicalContractView/.svn/pristine/85/85626f0b1429896ca7fce0cf76a3e087ece43e67.svn-base
@@ -0,0 +1,51 @@
+/*******************************************************************************
+ * Copyright (C) 2017 Fondazione Bruno Kessler.
+ * 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:
+ *     Alberto Debiasi - initial API and implementation
+ ******************************************************************************/
+package org.polarsys.chess.contracts.hierarchicalContractView.treeElements;
+
+import java.util.List;
+
+import org.eclipse.uml2.uml.Class;
+import org.eclipse.uml2.uml.Property;
+import org.polarsys.chess.contracts.profile.chesscontract.util.ContractEntityUtil;
+import org.polarsys.chess.contracts.profile.chesscontract.util.EntityUtil;
+
+import eu.fbk.eclipse.standardtools.hierarchicalContractView.core.treeElements.ContractNode;
+import eu.fbk.eclipse.standardtools.hierarchicalContractView.core.treeElements.SystemNode;
+import eu.fbk.eclipse.standardtools.hierarchicalContractView.core.treeElements.TreeNode;
+
+public class CHESSSystemNode extends SystemNode {
+
+	private ContractEntityUtil contractEntityUtil = ContractEntityUtil.getInstance();
+	private EntityUtil entityUtil = EntityUtil.getInstance();
+
+	public CHESSSystemNode(Object system) {
+		super(system);
+	}
+
+	@Override
+	public String getName(Object system) {
+		return entityUtil.getName((Class) system);
+	}
+
+	@Override
+	public void createChildren(Object system, List<TreeNode> children) {
+		for (Property umlProperty : ((Class) system).getAttributes()) {
+
+			if (contractEntityUtil.isContractProperty(umlProperty)) {
+				children.add(new ContractNode(this, entityUtil.getUmlType(umlProperty).getName()));
+			} else if (entityUtil.isComponentInstance(umlProperty)) {
+				children.add(new CHESSComponentNode(this, umlProperty));
+			}
+		}
+
+	}
+
+}
diff --git a/org.polarsys.chess.contracts.hierarchicalContractView/.svn/pristine/8a/8a37181c6ba18b2d21364eae045602ace2f25859.svn-base b/org.polarsys.chess.contracts.hierarchicalContractView/.svn/pristine/8a/8a37181c6ba18b2d21364eae045602ace2f25859.svn-base
new file mode 100644
index 000000000..51d3a980b
--- /dev/null
+++ b/org.polarsys.chess.contracts.hierarchicalContractView/.svn/pristine/8a/8a37181c6ba18b2d21364eae045602ace2f25859.svn-base
@@ -0,0 +1,32 @@
+/*******************************************************************************
+ * Copyright (C) 2017 Fondazione Bruno Kessler.
+ * 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:
+ *     Alberto Debiasi - initial API and implementation
+ ******************************************************************************/
+package org.polarsys.chess.contracts.hierarchicalContractView.treeElements;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import eu.fbk.eclipse.standardtools.hierarchicalContractView.core.treeElements.RootNode;
+import eu.fbk.eclipse.standardtools.hierarchicalContractView.core.treeElements.TreeNode;
+
+public class CHESSRootNode extends RootNode {
+
+	public CHESSRootNode(ArrayList<Object> systems) {
+		super(systems);
+	}
+
+	@Override
+	public void createChildren(ArrayList<Object> systems, List<TreeNode> children) {
+		for (Object s : systems) {
+			children.add(new CHESSSystemNode(s));
+		}
+	}
+
+}
diff --git a/org.polarsys.chess.contracts.hierarchicalContractView/.svn/pristine/93/93162c4d493374bf848f06a11085d0febf7e5082.svn-base b/org.polarsys.chess.contracts.hierarchicalContractView/.svn/pristine/93/93162c4d493374bf848f06a11085d0febf7e5082.svn-base
new file mode 100644
index 000000000..2bc457cd0
--- /dev/null
+++ b/org.polarsys.chess.contracts.hierarchicalContractView/.svn/pristine/93/93162c4d493374bf848f06a11085d0febf7e5082.svn-base
@@ -0,0 +1,70 @@
+/*******************************************************************************
+ * Copyright (C) 2017 Fondazione Bruno Kessler.
+ * 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:
+ *     Alberto Debiasi - initial API and implementation
+ ******************************************************************************/
+package org.polarsys.chess.contracts.hierarchicalContractView.view;
+
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.Iterator;
+
+import org.eclipse.core.runtime.Platform;
+import org.eclipse.emf.common.util.TreeIterator;
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.emf.ecore.util.EcoreUtil;
+import org.eclipse.papyrus.uml.tools.model.UmlModel;
+import org.eclipse.papyrus.uml.tools.model.UmlUtils;
+import org.eclipse.uml2.uml.Class;
+import org.eclipse.uml2.uml.UMLPackage;
+import org.polarsys.chess.contracts.hierarchicalContractView.treeElements.CHESSRootNode;
+import org.polarsys.chess.core.util.uml.EntityUtil;
+
+import eu.fbk.eclipse.standardtools.hierarchicalContractView.core.treeElements.RootNode;
+import eu.fbk.eclipse.standardtools.hierarchicalContractView.core.view.HierarchicalView;
+
+public class CustomHierarchicalView extends HierarchicalView {
+
+	public static String View_ID = "org.polarsys.chess.contracts.hierarchicalContractView.view1";
+	private EntityUtil entityUtil = EntityUtil.getInstance();
+
+	public RootNode getSystemObjects() {
+		Platform.getBundle(" ");
+		UmlModel umlModel = UmlUtils.getUmlModel();
+		ArrayList<Object> systems = null;
+		if (umlModel != null) {
+			systems = new ArrayList<Object>();
+			TreeIterator<EObject> allElements = umlModel.getResource().getAllContents();
+			if (allElements != null) {
+				Collection<org.eclipse.uml2.uml.Class> classes = EcoreUtil
+						.getObjectsByType(iterator2Collection(allElements), UMLPackage.eINSTANCE.getClass_());
+
+				for (Class c : classes) {
+					if (entityUtil.isSystem(c)) {
+						systems.add(c);
+					}
+				}
+
+				return new CHESSRootNode(systems);
+
+			}
+		}
+		return null;
+	}
+
+	
+	private <T> Collection<T> iterator2Collection(final Iterator<T> iter) {
+		ArrayList<T> list = new ArrayList<T>();
+		for (; iter.hasNext();) {
+			T item = iter.next();
+			list.add(item);
+		}
+		return list;
+	}
+
+}
diff --git a/org.polarsys.chess.contracts.hierarchicalContractView/.svn/pristine/b8/b84982b4662cb7fb3b466c098d0063a6b427493f.svn-base b/org.polarsys.chess.contracts.hierarchicalContractView/.svn/pristine/b8/b84982b4662cb7fb3b466c098d0063a6b427493f.svn-base
new file mode 100644
index 0000000000000000000000000000000000000000..0193dbeab7c505ff1b994966119423d252e476d9
GIT binary patch
literal 360
zcmZ?wbhEHb6krfwxXQrLG2_651qWuVII&>Ei4{98XasZ^L`<+qnBkDIpku)Shm08-
z5fcm&CM?)-Az;RZhy^z?R^0HIaUo&FjfxF78g@LGaNxm(4?kY~`0?S#kHmP}#CXSw
z9J9hStM($J%y`>|9HWLDv&2ZpX_fl@Mf!#DR{z0(fqFpkCkrD3gBpVl$ViZ%7}#1J
zf>&-ZkdSC^KID{X<~y<Dv0|f-hG<LbX%o>7w<ST19d5o#>#A}E7wS&mQ6pErT%W}$
zSwVnBh@n(XxuB#?SxvT}vbwguQCwC{K}@1(n)r;F@@mpkduk*WEtXc3nYwu8N||LV
oR;^M|lUuibv7DNenCk95dv{B!DIPj}<fz*56DLopIWkxS0A-7K+W-In

literal 0
HcmV?d00001

diff --git a/org.polarsys.chess.contracts.hierarchicalContractView/.svn/pristine/ba/ba4b606c0fc7e21542c6dcd0272fa546515ab5f1.svn-base b/org.polarsys.chess.contracts.hierarchicalContractView/.svn/pristine/ba/ba4b606c0fc7e21542c6dcd0272fa546515ab5f1.svn-base
new file mode 100644
index 000000000..01f14929b
--- /dev/null
+++ b/org.polarsys.chess.contracts.hierarchicalContractView/.svn/pristine/ba/ba4b606c0fc7e21542c6dcd0272fa546515ab5f1.svn-base
@@ -0,0 +1,53 @@
+/*******************************************************************************
+ * Copyright (C) 2017 Fondazione Bruno Kessler.
+ * 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:
+ *     Alberto Debiasi - initial API and implementation
+ ******************************************************************************/
+package org.polarsys.chess.contracts.hierarchicalContractView.treeElements;
+
+import java.util.List;
+
+import org.eclipse.uml2.uml.Class;
+import org.eclipse.uml2.uml.Property;
+import org.polarsys.chess.contracts.profile.chesscontract.util.ContractEntityUtil;
+import org.polarsys.chess.core.util.uml.EntityUtil;
+
+import eu.fbk.eclipse.standardtools.hierarchicalContractView.core.treeElements.ComponentNode;
+import eu.fbk.eclipse.standardtools.hierarchicalContractView.core.treeElements.ContractNode;
+import eu.fbk.eclipse.standardtools.hierarchicalContractView.core.treeElements.ITreeNode;
+import eu.fbk.eclipse.standardtools.hierarchicalContractView.core.treeElements.TreeNode;
+
+public class CHESSComponentNode extends ComponentNode {
+
+	private ContractEntityUtil contractEntityUtil = ContractEntityUtil.getInstance();
+	private EntityUtil entityUtil = EntityUtil.getInstance();
+
+	public CHESSComponentNode(ITreeNode parent, Object associatedObject) {
+		super(parent, associatedObject);
+	}
+
+	@Override
+	public void createChildren(Object associatedObject, List<TreeNode> children) {
+		for (Property umlProperty : ((Class) entityUtil.getUmlType((Property) associatedObject)).getAttributes()) {
+			if (contractEntityUtil.isContractProperty(umlProperty)) {
+				children.add(new ContractNode(this, entityUtil.getUmlType(umlProperty).getName()));
+			} else if (entityUtil.isComponentInstance(umlProperty)) {
+				children.add(new CHESSComponentNode(this, umlProperty));
+			}
+		}
+
+	}
+
+	@Override
+	public String getName(Object associatedObject) {
+		String typeName = entityUtil.getUmlType((Property) associatedObject).getName();
+		String propertyName = ((Property) associatedObject).getName();
+		return propertyName + ":" + typeName;
+		}
+
+}
diff --git a/org.polarsys.chess.contracts.hierarchicalContractView/.svn/pristine/bd/bdecd7617e14c1d9592848da5b048389a4da78ee.svn-base b/org.polarsys.chess.contracts.hierarchicalContractView/.svn/pristine/bd/bdecd7617e14c1d9592848da5b048389a4da78ee.svn-base
new file mode 100644
index 000000000..285b8bf47
--- /dev/null
+++ b/org.polarsys.chess.contracts.hierarchicalContractView/.svn/pristine/bd/bdecd7617e14c1d9592848da5b048389a4da78ee.svn-base
@@ -0,0 +1,6 @@
+source.. = src/
+output.. = bin/
+bin.includes = META-INF/,\
+               .,\
+               plugin.xml,\
+               icons/
diff --git a/org.polarsys.chess.contracts.hierarchicalContractView/.svn/pristine/c4/c443e0ca319ea279262bffebf0f49f1a15d6186c.svn-base b/org.polarsys.chess.contracts.hierarchicalContractView/.svn/pristine/c4/c443e0ca319ea279262bffebf0f49f1a15d6186c.svn-base
new file mode 100644
index 000000000..794b349d0
--- /dev/null
+++ b/org.polarsys.chess.contracts.hierarchicalContractView/.svn/pristine/c4/c443e0ca319ea279262bffebf0f49f1a15d6186c.svn-base
@@ -0,0 +1,70 @@
+/*******************************************************************************
+ * Copyright (C) 2017 Fondazione Bruno Kessler.
+ * 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:
+ *     Alberto Debiasi - initial API and implementation
+ ******************************************************************************/
+package org.polarsys.chess.contracts.hierarchicalContractView.view;
+
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.Iterator;
+
+import org.eclipse.core.runtime.Platform;
+import org.eclipse.emf.common.util.TreeIterator;
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.emf.ecore.util.EcoreUtil;
+import org.eclipse.papyrus.uml.tools.model.UmlModel;
+import org.eclipse.papyrus.uml.tools.model.UmlUtils;
+import org.eclipse.uml2.uml.Class;
+import org.eclipse.uml2.uml.UMLPackage;
+import org.polarsys.chess.contracts.hierarchicalContractView.treeElements.CHESSRootNode;
+import org.polarsys.chess.utils.EntityUtil;
+
+import eu.fbk.eclipse.standardtools.hierarchicalContractView.core.treeElements.RootNode;
+import eu.fbk.eclipse.standardtools.hierarchicalContractView.core.view.HierarchicalView;
+
+public class CustomHierarchicalView extends HierarchicalView {
+
+	public static String View_ID = "org.polarsys.chess.contracts.hierarchicalContractView.view1";
+	private EntityUtil entityUtil = EntityUtil.getInstance();
+
+	public RootNode getSystemObjects() {
+		Platform.getBundle(" ");
+		UmlModel umlModel = UmlUtils.getUmlModel();
+		ArrayList<Object> systems = null;
+		if (umlModel != null) {
+			systems = new ArrayList<Object>();
+			TreeIterator<EObject> allElements = umlModel.getResource().getAllContents();
+			if (allElements != null) {
+				Collection<org.eclipse.uml2.uml.Class> classes = EcoreUtil
+						.getObjectsByType(iterator2Collection(allElements), UMLPackage.eINSTANCE.getClass_());
+
+				for (Class c : classes) {
+					if (entityUtil.isSystem(c)) {
+						systems.add(c);
+					}
+				}
+
+				return new CHESSRootNode(systems);
+
+			}
+		}
+		return null;
+	}
+
+	
+	private <T> Collection<T> iterator2Collection(final Iterator<T> iter) {
+		ArrayList<T> list = new ArrayList<T>();
+		for (; iter.hasNext();) {
+			T item = iter.next();
+			list.add(item);
+		}
+		return list;
+	}
+
+}
diff --git a/org.polarsys.chess.contracts.hierarchicalContractView/.svn/pristine/c7/c7d0f79a6181435b8baa61a3ad4d0e6ef3a62df0.svn-base b/org.polarsys.chess.contracts.hierarchicalContractView/.svn/pristine/c7/c7d0f79a6181435b8baa61a3ad4d0e6ef3a62df0.svn-base
new file mode 100644
index 000000000..696aec546
--- /dev/null
+++ b/org.polarsys.chess.contracts.hierarchicalContractView/.svn/pristine/c7/c7d0f79a6181435b8baa61a3ad4d0e6ef3a62df0.svn-base
@@ -0,0 +1,53 @@
+/*******************************************************************************
+ * Copyright (C) 2017 Fondazione Bruno Kessler.
+ * 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:
+ *     Alberto Debiasi - initial API and implementation
+ ******************************************************************************/
+package org.polarsys.chess.contracts.hierarchicalContractView.treeElements;
+
+import java.util.List;
+
+import org.eclipse.uml2.uml.Class;
+import org.eclipse.uml2.uml.Property;
+import org.polarsys.chess.utils.ContractEntityUtil;
+import org.polarsys.chess.utils.EntityUtil;
+
+import eu.fbk.eclipse.standardtools.hierarchicalContractView.core.treeElements.ComponentNode;
+import eu.fbk.eclipse.standardtools.hierarchicalContractView.core.treeElements.ContractNode;
+import eu.fbk.eclipse.standardtools.hierarchicalContractView.core.treeElements.ITreeNode;
+import eu.fbk.eclipse.standardtools.hierarchicalContractView.core.treeElements.TreeNode;
+
+public class CHESSComponentNode extends ComponentNode {
+
+	private ContractEntityUtil contractEntityUtil = ContractEntityUtil.getInstance();
+	private EntityUtil entityUtil = EntityUtil.getInstance();
+
+	public CHESSComponentNode(ITreeNode parent, Object associatedObject) {
+		super(parent, associatedObject);
+	}
+
+	@Override
+	public void createChildren(Object associatedObject, List<TreeNode> children) {
+		for (Property umlProperty : ((Class) entityUtil.getUmlType((Property) associatedObject)).getAttributes()) {
+			if (contractEntityUtil.isContractProperty(umlProperty)) {
+				children.add(new ContractNode(this, entityUtil.getUmlType(umlProperty).getName()));
+			} else if (entityUtil.isComponentInstance(umlProperty)) {
+				children.add(new CHESSComponentNode(this, umlProperty));
+			}
+		}
+
+	}
+
+	@Override
+	public String getName(Object associatedObject) {
+		String typeName = entityUtil.getUmlType((Property) associatedObject).getName();
+		String propertyName = ((Property) associatedObject).getName();
+		return propertyName + ":" + typeName;
+		}
+
+}
diff --git a/org.polarsys.chess.contracts.hierarchicalContractView/.svn/pristine/ce/ceb68d84ab6670ae76b7b442439794fe1e756c07.svn-base b/org.polarsys.chess.contracts.hierarchicalContractView/.svn/pristine/ce/ceb68d84ab6670ae76b7b442439794fe1e756c07.svn-base
new file mode 100644
index 000000000..ae3c17260
--- /dev/null
+++ b/org.polarsys.chess.contracts.hierarchicalContractView/.svn/pristine/ce/ceb68d84ab6670ae76b7b442439794fe1e756c07.svn-base
@@ -0,0 +1 @@
+/bin/
diff --git a/org.polarsys.chess.contracts.hierarchicalContractView/.svn/pristine/d2/d216665cffdfc798b57c528a92ec9c7e31fe87d5.svn-base b/org.polarsys.chess.contracts.hierarchicalContractView/.svn/pristine/d2/d216665cffdfc798b57c528a92ec9c7e31fe87d5.svn-base
new file mode 100644
index 000000000..d98c668e7
--- /dev/null
+++ b/org.polarsys.chess.contracts.hierarchicalContractView/.svn/pristine/d2/d216665cffdfc798b57c528a92ec9c7e31fe87d5.svn-base
@@ -0,0 +1,51 @@
+/*******************************************************************************
+ * Copyright (C) 2017 Fondazione Bruno Kessler.
+ * 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:
+ *     Alberto Debiasi - initial API and implementation
+ ******************************************************************************/
+package org.polarsys.chess.contracts.hierarchicalContractView.treeElements;
+
+import java.util.List;
+
+import org.eclipse.uml2.uml.Class;
+import org.eclipse.uml2.uml.Property;
+import org.polarsys.chess.contracts.profile.chesscontract.util.ContractEntityUtil;
+import org.polarsys.chess.core.util.uml.EntityUtil;
+
+import eu.fbk.eclipse.standardtools.hierarchicalContractView.core.treeElements.ContractNode;
+import eu.fbk.eclipse.standardtools.hierarchicalContractView.core.treeElements.SystemNode;
+import eu.fbk.eclipse.standardtools.hierarchicalContractView.core.treeElements.TreeNode;
+
+public class CHESSSystemNode extends SystemNode {
+
+	private ContractEntityUtil contractEntityUtil = ContractEntityUtil.getInstance();
+	private EntityUtil entityUtil = EntityUtil.getInstance();
+
+	public CHESSSystemNode(Object system) {
+		super(system);
+	}
+
+	@Override
+	public String getName(Object system) {
+		return entityUtil.getName((Class) system);
+	}
+
+	@Override
+	public void createChildren(Object system, List<TreeNode> children) {
+		for (Property umlProperty : ((Class) system).getAttributes()) {
+
+			if (contractEntityUtil.isContractProperty(umlProperty)) {
+				children.add(new ContractNode(this, entityUtil.getUmlType(umlProperty).getName()));
+			} else if (entityUtil.isComponentInstance(umlProperty)) {
+				children.add(new CHESSComponentNode(this, umlProperty));
+			}
+		}
+
+	}
+
+}
diff --git a/org.polarsys.chess.contracts.hierarchicalContractView/.svn/pristine/e1/e1eef673158c7f08ab343019633506cd4c44297c.svn-base b/org.polarsys.chess.contracts.hierarchicalContractView/.svn/pristine/e1/e1eef673158c7f08ab343019633506cd4c44297c.svn-base
new file mode 100644
index 000000000..d6bfe0bf0
--- /dev/null
+++ b/org.polarsys.chess.contracts.hierarchicalContractView/.svn/pristine/e1/e1eef673158c7f08ab343019633506cd4c44297c.svn-base
@@ -0,0 +1,71 @@
+/*******************************************************************************
+ * Copyright (C) 2017 Fondazione Bruno Kessler.
+ * 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:
+ *     Alberto Debiasi - initial API and implementation
+ ******************************************************************************/
+package org.polarsys.chess.contracts.hierarchicalContractView.view;
+
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.Iterator;
+
+import org.eclipse.core.runtime.Platform;
+import org.eclipse.emf.common.util.TreeIterator;
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.emf.ecore.util.EcoreUtil;
+import org.eclipse.papyrus.uml.tools.model.UmlModel;
+import org.eclipse.papyrus.uml.tools.model.UmlUtils;
+import org.eclipse.uml2.uml.Class;
+import org.eclipse.uml2.uml.UMLPackage;
+import org.polarsys.chess.contracts.hierarchicalContractView.treeElements.CHESSRootNode;
+import org.polarsys.chess.contracts.profile.chesscontract.util.EntityUtil;
+
+import eu.fbk.eclipse.standardtools.hierarchicalContractView.core.treeElements.RootNode;
+import eu.fbk.eclipse.standardtools.hierarchicalContractView.core.view.HierarchicalView;
+
+public class CustomHierarchicalView extends HierarchicalView {
+
+	public static String View_ID = "org.polarsys.chess.contracts.hierarchicalContractView.view1";
+	private EntityUtil entityUtil = EntityUtil.getInstance();
+
+	public RootNode getSystemObjects() {
+		Platform.getBundle(" ");
+		UmlModel umlModel = UmlUtils.getUmlModel();
+		ArrayList<Object> systems = null;
+		if (umlModel != null) {
+			systems = new ArrayList<Object>();
+			TreeIterator<EObject> allElements = umlModel.getResource().getAllContents();
+			if (allElements != null) {
+				Collection<org.eclipse.uml2.uml.Class> classes = EcoreUtil
+						.getObjectsByType(iterator2Collection(allElements), UMLPackage.eINSTANCE.getClass_());
+
+				for (Class c : classes) {
+					if (entityUtil.isSystem(c)) {
+						systems.add(c);
+					}
+				}
+
+				if(systems.size()>0){
+				return new CHESSRootNode(systems);
+				}
+			}
+		}
+		return null;
+	}
+
+	
+	private <T> Collection<T> iterator2Collection(final Iterator<T> iter) {
+		ArrayList<T> list = new ArrayList<T>();
+		for (; iter.hasNext();) {
+			T item = iter.next();
+			list.add(item);
+		}
+		return list;
+	}
+
+}
diff --git a/org.polarsys.chess.contracts.hierarchicalContractView/.svn/pristine/f8/f89221dd03d0eba9db9303e9b2768678ed4abaaa.svn-base b/org.polarsys.chess.contracts.hierarchicalContractView/.svn/pristine/f8/f89221dd03d0eba9db9303e9b2768678ed4abaaa.svn-base
new file mode 100644
index 000000000..e02c2304d
--- /dev/null
+++ b/org.polarsys.chess.contracts.hierarchicalContractView/.svn/pristine/f8/f89221dd03d0eba9db9303e9b2768678ed4abaaa.svn-base
@@ -0,0 +1,59 @@
+/*******************************************************************************
+ * Copyright (C) 2017 Fondazione Bruno Kessler.
+ * 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:
+ *     Alberto Debiasi - initial API and implementation
+ ******************************************************************************/
+package org.polarsys.chess.contracts.hierarchicalContractView.listener;
+
+import org.eclipse.emf.common.notify.Notification;
+import org.eclipse.papyrus.infra.core.listenerservice.IPapyrusListener;
+import org.eclipse.papyrus.uml.tools.model.UmlModel;
+import org.eclipse.papyrus.uml.tools.model.UmlUtils;
+import org.eclipse.uml2.uml.Element;
+import org.polarsys.chess.contracts.hierarchicalContractView.view.CustomHierarchicalView;
+
+import eu.fbk.eclipse.standardtools.hierarchicalContractView.core.view.HierarchicalView;
+
+import org.eclipse.ui.IViewPart;
+import org.eclipse.ui.IWorkbench;
+import org.eclipse.ui.IWorkbenchWindow;
+import org.eclipse.ui.PlatformUI;
+
+public class PapyrusListener implements IPapyrusListener {
+
+	private UmlModel prevModelID;
+
+	public PapyrusListener() {
+	}
+
+	@Override
+	public void notifyChanged(Notification notification) {
+
+		Object notifier = notification.getNotifier();
+
+		if (notifier instanceof Element) {
+
+			IWorkbench workbench = PlatformUI.getWorkbench();
+			IWorkbenchWindow window = workbench.getActiveWorkbenchWindow();
+			IViewPart modelExplorerViewPart;
+
+			modelExplorerViewPart = window.getActivePage().findView(CustomHierarchicalView.View_ID);
+			if (modelExplorerViewPart != null) {
+
+				UmlModel modelID = UmlUtils.getUmlModel();
+
+				if (modelID != prevModelID) {
+					HierarchicalView view = (HierarchicalView) modelExplorerViewPart;
+					view.updateView();
+					prevModelID = modelID;
+				}
+			}
+		}
+	}
+
+}
diff --git a/org.polarsys.chess.contracts.hierarchicalContractView/.svn/pristine/ff/ffd2bf2b6024f1374124340adc5838212ec67be6.svn-base b/org.polarsys.chess.contracts.hierarchicalContractView/.svn/pristine/ff/ffd2bf2b6024f1374124340adc5838212ec67be6.svn-base
new file mode 100644
index 000000000..aa51f03c9
--- /dev/null
+++ b/org.polarsys.chess.contracts.hierarchicalContractView/.svn/pristine/ff/ffd2bf2b6024f1374124340adc5838212ec67be6.svn-base
@@ -0,0 +1,23 @@
+Manifest-Version: 1.0
+Bundle-ManifestVersion: 2
+Bundle-Name: org.polarsys.chess.contracts.hierarchicalContractView
+Bundle-SymbolicName: org.polarsys.chess.contracts.hierarchicalContractView;singleton:=true
+Bundle-Version: 1.0.0.qualifier
+Bundle-RequiredExecutionEnvironment: JavaSE-1.8
+Require-Bundle: org.polarsys.chess.core,
+ eu.fbk.eclipse.standardtools.hierarchicalContractView.core,
+ org.eclipse.papyrus.uml.tools,
+ org.polarsys.chess.contracts.profile
+Bundle-ActivationPolicy: lazy
+Import-Package: com.google.common.collect;version="10.0.1",
+ org.eclipse.emf.common.util,
+ org.eclipse.emf.ecore.resource,
+ org.eclipse.jface.text,
+ org.eclipse.jface.text.source,
+ org.eclipse.papyrus.sysml.blocks,
+ org.eclipse.papyrus.sysml.diagram.common.edit.part,
+ org.eclipse.papyrus.uml.diagram.clazz.edit.parts,
+ org.eclipse.papyrus.uml.diagram.common.editparts,
+ org.eclipse.ui.part,
+ org.eclipse.uml2.uml.resources.util
+Bundle-Vendor: Fondazione Bruno Kessler
diff --git a/org.polarsys.chess.contracts.hierarchicalContractView/.svn/wc.db b/org.polarsys.chess.contracts.hierarchicalContractView/.svn/wc.db
new file mode 100644
index 0000000000000000000000000000000000000000..b8c711ae5eb0a921e9d6d0de7fb3177fbbae6c18
GIT binary patch
literal 66560
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

literal 0
HcmV?d00001

diff --git a/org.polarsys.chess.contracts.refinementView/.svn/entries b/org.polarsys.chess.contracts.refinementView/.svn/entries
new file mode 100644
index 000000000..3cacc0b93
--- /dev/null
+++ b/org.polarsys.chess.contracts.refinementView/.svn/entries
@@ -0,0 +1 @@
+12
\ No newline at end of file
diff --git a/org.polarsys.chess.contracts.refinementView/.svn/format b/org.polarsys.chess.contracts.refinementView/.svn/format
new file mode 100644
index 000000000..3cacc0b93
--- /dev/null
+++ b/org.polarsys.chess.contracts.refinementView/.svn/format
@@ -0,0 +1 @@
+12
\ No newline at end of file
diff --git a/org.polarsys.chess.contracts.refinementView/.svn/pristine/01/01ab9fd085adb4aa6e6cddf9061185997a361249.svn-base b/org.polarsys.chess.contracts.refinementView/.svn/pristine/01/01ab9fd085adb4aa6e6cddf9061185997a361249.svn-base
new file mode 100644
index 0000000000000000000000000000000000000000..13ce11b1490b0691db9fc3b2a7a2a2055a5cf965
GIT binary patch
literal 310
zcmZ?wbhEHb6krfwxXQp_5i-F#Vya!t47-?VZYlHA>(@?NeB3%}s%zRpx3q<>Df3;^
z=DVfM_sd_oXx)M9kKaz+bz<tC6ATe*wOjl1=GOU4kBeTI)4neF`n|;EQ{4704F31=
z^v^T#KhMSgJd?1nRJcEZzdfAq|Ns9Cv;m4gSr{1@lo)hC#)JICz!vN<vA{z|s{cev
z(C5soDT~gh{c3EolHuoA#aU?_kf^*TKtQ6CMX6GQt*@``j^eD4caxJIACwO_Xb^Q}
e77!F*QW6sH7II}{n82zeA~aPjafYWOgEasGs94|t

literal 0
HcmV?d00001

diff --git a/org.polarsys.chess.contracts.refinementView/.svn/pristine/1d/1d79d0d7a2ce490dc663585afefd58091f4f295d.svn-base b/org.polarsys.chess.contracts.refinementView/.svn/pristine/1d/1d79d0d7a2ce490dc663585afefd58091f4f295d.svn-base
new file mode 100644
index 000000000..f79c3e2be
--- /dev/null
+++ b/org.polarsys.chess.contracts.refinementView/.svn/pristine/1d/1d79d0d7a2ce490dc663585afefd58091f4f295d.svn-base
@@ -0,0 +1,23 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<?eclipse version="3.4"?>
+<plugin>
+   <extension
+         point="org.eclipse.ui.views">
+      <view
+            category="org.eclipse.papyrus.views.category"
+            class="org.polarsys.chess.contracts.refinementView.view.CustomRefinementView"
+            icon="icons/main_tab.gif"
+            id="org.polarsys.chess.contracts.refinementView.view1"
+            name="Contract Refinement View"
+            restorable="true">
+      </view>
+   </extension>
+   <extension
+         point="org.eclipse.papyrus.infra.core.modelListener">
+      <listener
+            name="org.polarsys.chess.contracts.refinementView.listener"
+            realization="org.polarsys.chess.contracts.refinementView.listener.PapyrusListener">
+      </listener>
+   </extension>
+
+</plugin>
diff --git a/org.polarsys.chess.contracts.refinementView/.svn/pristine/3d/3dacdbc2f22793e92e810dea0db2ab3fc75f9cf8.svn-base b/org.polarsys.chess.contracts.refinementView/.svn/pristine/3d/3dacdbc2f22793e92e810dea0db2ab3fc75f9cf8.svn-base
new file mode 100644
index 0000000000000000000000000000000000000000..75f022696367436c93e89470fa05e28205c38609
GIT binary patch
literal 110
zcmZ?wbhEHb6krfwIK;vL0<(6`yTI`O|NlR`YT-!nCkrDN0}F!=NC8MK1GBLQ*PU}&
zt)AL3`pq0|{})_qh*O@E;Xdod%C<+pV_SUqHuf5?t=_B~`)+&WorF0uYnS;jFjxZs
D?nEo^

literal 0
HcmV?d00001

diff --git a/org.polarsys.chess.contracts.refinementView/.svn/pristine/46/46b146336a3939e852a53616459fc8c53bbe6f23.svn-base b/org.polarsys.chess.contracts.refinementView/.svn/pristine/46/46b146336a3939e852a53616459fc8c53bbe6f23.svn-base
new file mode 100644
index 000000000..f3fa24a9e
--- /dev/null
+++ b/org.polarsys.chess.contracts.refinementView/.svn/pristine/46/46b146336a3939e852a53616459fc8c53bbe6f23.svn-base
@@ -0,0 +1,48 @@
+/*******************************************************************************
+ * Copyright (C) 2017 Fondazione Bruno Kessler.
+ * 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:
+ *     Alberto Debiasi - initial API and implementation
+ ******************************************************************************/
+package org.polarsys.chess.contracts.refinementView.listener;
+
+import org.eclipse.emf.common.notify.Notification;
+import org.eclipse.papyrus.infra.core.listenerservice.IPapyrusListener;
+import org.eclipse.ui.IViewPart;
+import org.eclipse.ui.IWorkbench;
+import org.eclipse.ui.IWorkbenchWindow;
+import org.eclipse.ui.PlatformUI;
+import org.eclipse.uml2.uml.Element;
+import org.polarsys.chess.contracts.refinementView.view.CustomRefinementView;
+
+public class PapyrusListener implements IPapyrusListener {
+
+	public PapyrusListener() {
+	}
+
+	@Override
+	public void notifyChanged(Notification notification) {
+
+		Object notifier = notification.getNotifier();
+
+		if (notifier instanceof Element) {
+
+			IWorkbench workbench = PlatformUI.getWorkbench();
+			IWorkbenchWindow window = workbench.getActiveWorkbenchWindow();
+			IViewPart modelExplorerViewPart;
+
+			modelExplorerViewPart = window.getActivePage().findView(CustomRefinementView.View_ID);
+
+			if (modelExplorerViewPart != null) {
+				CustomRefinementView view = (CustomRefinementView) modelExplorerViewPart;
+				view.updateView();
+			}
+		}
+
+	}
+
+}
diff --git a/org.polarsys.chess.contracts.refinementView/.svn/pristine/51/512bd49c4ba767010f32a54ef22de71e83bd7e1e.svn-base b/org.polarsys.chess.contracts.refinementView/.svn/pristine/51/512bd49c4ba767010f32a54ef22de71e83bd7e1e.svn-base
new file mode 100644
index 000000000..295926d96
--- /dev/null
+++ b/org.polarsys.chess.contracts.refinementView/.svn/pristine/51/512bd49c4ba767010f32a54ef22de71e83bd7e1e.svn-base
@@ -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/org.polarsys.chess.contracts.refinementView/.svn/pristine/5b/5b541edd20713a366801ec4d78fa00337838af07.svn-base b/org.polarsys.chess.contracts.refinementView/.svn/pristine/5b/5b541edd20713a366801ec4d78fa00337838af07.svn-base
new file mode 100644
index 000000000..65c75f88c
--- /dev/null
+++ b/org.polarsys.chess.contracts.refinementView/.svn/pristine/5b/5b541edd20713a366801ec4d78fa00337838af07.svn-base
@@ -0,0 +1,59 @@
+/*******************************************************************************
+ * Copyright (C) 2017 Fondazione Bruno Kessler.
+ * 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:
+ *     Alberto Debiasi - initial API and implementation
+ ******************************************************************************/
+package org.polarsys.chess.contracts.refinementView.treeElements;
+
+import java.util.List;
+
+import org.polarsys.chess.contracts.profile.chesscontract.ContractProperty;
+import org.polarsys.chess.contracts.profile.chesscontract.ContractRefinement;
+import org.polarsys.chess.contracts.profile.chesscontract.DataTypes.ContractTypes;
+
+import eu.fbk.contracts.refinementview.treeElements.ContractNode;
+import eu.fbk.contracts.refinementview.treeElements.ITreeNode;
+import eu.fbk.contracts.refinementview.treeElements.TreeNode;
+
+public class CHESSContractNode extends ContractNode {
+
+	public CHESSContractNode(Object contractProperty, String compInstance) {
+		super(contractProperty, compInstance);
+	}
+
+	public CHESSContractNode(ITreeNode parent, Object contractProperty, String compInstance) {
+		super(parent, contractProperty, compInstance);
+	}
+
+	@Override
+	public String getName(Object contractProperty, String compInstance) {
+		String contrName = ((ContractProperty) contractProperty).getBase_Property().getName();
+		return compInstance + "." + contrName;
+	}
+
+	@Override
+	public void createChilden(Object contractProperty, String compInstance, List<TreeNode> children) {
+		for (ContractRefinement cr : ((ContractProperty) contractProperty).getRefinedBy()) {
+
+			ContractProperty cp = cr.getContract();
+			if (true) {
+				if (cr.getInstance() != null) {
+					String compoInstance = cr.getInstance().getName();
+					children.add(new CHESSContractNode(this, cp, compoInstance));
+				}
+			}
+		}
+
+	}
+
+	@Override
+	public boolean isWeak(Object contractProperty) {
+		return !((ContractProperty) contractProperty).getContractType().equals(ContractTypes.STRONG);
+	}
+
+}
diff --git a/org.polarsys.chess.contracts.refinementView/.svn/pristine/6a/6a625956398830f3d477ab9fca3bc5d685600747.svn-base b/org.polarsys.chess.contracts.refinementView/.svn/pristine/6a/6a625956398830f3d477ab9fca3bc5d685600747.svn-base
new file mode 100644
index 000000000..bf56aa2e5
--- /dev/null
+++ b/org.polarsys.chess.contracts.refinementView/.svn/pristine/6a/6a625956398830f3d477ab9fca3bc5d685600747.svn-base
@@ -0,0 +1,15 @@
+Manifest-Version: 1.0
+Bundle-ManifestVersion: 2
+Bundle-Name: org.polarsys.chess.contracts.refinementView
+Bundle-SymbolicName: org.polarsys.chess.contracts.refinementView;singleton:=true
+Bundle-Version: 1.0.0.qualifier
+Bundle-RequiredExecutionEnvironment: JavaSE-1.8
+Require-Bundle: org.eclipse.papyrus.infra.core,
+ org.eclipse.ui.workbench,
+ org.eclipse.jface,
+ eu.fbk.eclipse.standardtools.refinementView.core,
+ org.eclipse.papyrus.uml.tools,
+ org.polarsys.chess.contracts.profile;bundle-version="0.9.0",
+ org.polarsys.chess.core;bundle-version="0.9.0",
+ org.polarsys.chess.utils
+Bundle-Vendor: Fondazione Bruno Kessler
diff --git a/org.polarsys.chess.contracts.refinementView/.svn/pristine/84/840bb71c03bf83525100c2e64ed14e864bbbba56.svn-base b/org.polarsys.chess.contracts.refinementView/.svn/pristine/84/840bb71c03bf83525100c2e64ed14e864bbbba56.svn-base
new file mode 100644
index 000000000..b862a296d
--- /dev/null
+++ b/org.polarsys.chess.contracts.refinementView/.svn/pristine/84/840bb71c03bf83525100c2e64ed14e864bbbba56.svn-base
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<classpath>
+	<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.8"/>
+	<classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>
+	<classpathentry kind="src" path="src"/>
+	<classpathentry kind="output" path="bin"/>
+</classpath>
diff --git a/org.polarsys.chess.contracts.refinementView/.svn/pristine/8f/8f65f89d3cc165733f7cfd5d4c455e8b5a7256fa.svn-base b/org.polarsys.chess.contracts.refinementView/.svn/pristine/8f/8f65f89d3cc165733f7cfd5d4c455e8b5a7256fa.svn-base
new file mode 100644
index 000000000..227771809
--- /dev/null
+++ b/org.polarsys.chess.contracts.refinementView/.svn/pristine/8f/8f65f89d3cc165733f7cfd5d4c455e8b5a7256fa.svn-base
@@ -0,0 +1,51 @@
+/*******************************************************************************
+ * Copyright (C) 2017 Fondazione Bruno Kessler.
+ * 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:
+ *     Alberto Debiasi - initial API and implementation
+ ******************************************************************************/
+package org.polarsys.chess.contracts.refinementView.treeElements;
+
+import java.util.List;
+
+import org.polarsys.chess.contracts.profile.chesscontract.ContractProperty;
+
+import eu.fbk.contracts.refinementview.treeElements.ITreeNode;
+import eu.fbk.contracts.refinementview.treeElements.RootNode;
+import eu.fbk.contracts.refinementview.treeElements.TreeNode;
+
+public class CHESSRootNode extends RootNode {
+
+	public CHESSRootNode(ITreeNode parent, List<Object> allContracts, List<String> contractsUsedForRefinement,
+			List<String> compInstances) {
+		super(parent, allContracts, contractsUsedForRefinement, compInstances);
+	}
+
+	public CHESSRootNode(List<Object> allContracts, List<String> contractsUsedForRefinement,
+			List<String> compInstances) {
+		super(allContracts, contractsUsedForRefinement, compInstances);
+	}
+
+	@Override
+	public void createChildren(List<Object> allContracts, List<String> contractsUsedForRefinement,
+			List<String> compInstances, List<TreeNode> children) {
+		for (int i = 0; i < allContracts.size(); i++) {
+			ContractProperty p = (ContractProperty) allContracts.get(i);
+			String compInstance = compInstances.get(i);
+			if (!isUsedForRefinememt(p, contractsUsedForRefinement, compInstance)) {
+				children.add(new CHESSContractNode(p, compInstance));
+			}
+		}
+
+	}
+
+	private boolean isUsedForRefinememt(ContractProperty p, List<String> contractsUsedForRefinement,
+			String compInstance) {
+		String contrRef = compInstance + "." + p.getBase_Property().getName();
+		return contractsUsedForRefinement.contains(contrRef);
+	}
+}
diff --git a/org.polarsys.chess.contracts.refinementView/.svn/pristine/a2/a215d7c8e5c2735d88c24d480204048b155241d4.svn-base b/org.polarsys.chess.contracts.refinementView/.svn/pristine/a2/a215d7c8e5c2735d88c24d480204048b155241d4.svn-base
new file mode 100644
index 000000000..230b79211
--- /dev/null
+++ b/org.polarsys.chess.contracts.refinementView/.svn/pristine/a2/a215d7c8e5c2735d88c24d480204048b155241d4.svn-base
@@ -0,0 +1,57 @@
+/*******************************************************************************
+ * Copyright (C) 2017 Fondazione Bruno Kessler.
+ * 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:
+ *     Alberto Debiasi - initial API and implementation
+ ******************************************************************************/
+package org.polarsys.chess.contracts.refinementView.listener;
+
+import org.eclipse.core.resources.IProject;
+import org.eclipse.core.resources.IResource;
+import org.eclipse.core.runtime.IAdaptable;
+import org.eclipse.jface.viewers.ISelection;
+import org.eclipse.jface.viewers.IStructuredSelection;
+import org.eclipse.ui.IViewPart;
+import org.eclipse.ui.IWorkbench;
+import org.eclipse.ui.IWorkbenchPart;
+import org.eclipse.ui.IWorkbenchWindow;
+import org.eclipse.ui.PlatformUI;
+import org.polarsys.chess.contracts.refinementView.view.CustomRefinementView;
+import org.polarsys.chess.core.resourcelistener.SelectionListenerExtra;
+
+public class SelectionListener extends SelectionListenerExtra {
+
+	private IProject prevProject;
+
+	@Override
+	public void selectionChanged(IWorkbenchPart part, ISelection selection) {
+
+		if (selection instanceof IStructuredSelection) {
+			Object element = ((IStructuredSelection) selection).getFirstElement();
+			if (element instanceof IAdaptable) {
+				IResource resource = (IResource) ((IAdaptable) element).getAdapter(IResource.class);
+				if (resource != null) {
+					final IProject project = resource.getProject();
+					if (project != prevProject) {
+						IWorkbench workbench = PlatformUI.getWorkbench();
+						IWorkbenchWindow window = workbench.getActiveWorkbenchWindow();
+						IViewPart modelExplorerViewPart;
+
+						modelExplorerViewPart = window.getActivePage().findView(CustomRefinementView.View_ID);
+						if (modelExplorerViewPart != null) {
+							CustomRefinementView view = (CustomRefinementView) modelExplorerViewPart;
+							view.updateView();
+							prevProject = project;
+						}
+					}
+				}
+			}
+		}
+
+	}
+
+}
diff --git a/org.polarsys.chess.contracts.refinementView/.svn/pristine/a4/a48f4a824ef9067dd4ea9f5ed38be7cca9142154.svn-base b/org.polarsys.chess.contracts.refinementView/.svn/pristine/a4/a48f4a824ef9067dd4ea9f5ed38be7cca9142154.svn-base
new file mode 100644
index 000000000..55b9a8002
--- /dev/null
+++ b/org.polarsys.chess.contracts.refinementView/.svn/pristine/a4/a48f4a824ef9067dd4ea9f5ed38be7cca9142154.svn-base
@@ -0,0 +1,137 @@
+/*******************************************************************************
+ * Copyright (C) 2017 Fondazione Bruno Kessler.
+ * 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:
+ *     Alberto Debiasi - initial API and implementation
+ ******************************************************************************/
+package org.polarsys.chess.contracts.refinementView.view;
+
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.Iterator;
+
+import org.eclipse.emf.common.util.TreeIterator;
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.emf.ecore.util.EcoreUtil;
+import org.eclipse.papyrus.uml.tools.model.UmlModel;
+import org.eclipse.papyrus.uml.tools.model.UmlUtils;
+import org.eclipse.swt.widgets.Composite;
+import org.eclipse.uml2.uml.Class;
+import org.eclipse.uml2.uml.Port;
+import org.eclipse.uml2.uml.Property;
+import org.eclipse.uml2.uml.UMLPackage;
+import org.polarsys.chess.contracts.profile.chesscontract.ContractProperty;
+import org.polarsys.chess.contracts.profile.chesscontract.ContractRefinement;
+import org.polarsys.chess.contracts.refinementView.treeElements.CHESSRootNode;
+import org.polarsys.chess.utils.ContractEntityUtil;
+import org.polarsys.chess.utils.EntityUtil;
+
+import eu.fbk.contracts.refinementview.treeElements.RootNode;
+import eu.fbk.contracts.refinementview.view.RefinementView;
+
+public class CustomRefinementView extends RefinementView {
+	public static String View_ID = "org.polarsys.chess.contracts.refinementView.view1";
+	private ContractEntityUtil contractEntityUtil = ContractEntityUtil.getInstance();
+	private EntityUtil entityUtil = EntityUtil.getInstance();
+
+	@Override
+	public RootNode getModelObjects(ArrayList<Object> allContracts, ArrayList<String> componentInstances,
+			ArrayList<String> contractsUsedForRefinement) {
+		UmlModel umlModel = UmlUtils.getUmlModel();
+
+		if (umlModel != null) {
+
+			TreeIterator<EObject> allElements = umlModel.getResource().getAllContents();
+
+			if (allElements != null) {
+				Collection<org.eclipse.uml2.uml.Class> umlClasses = EcoreUtil
+						.getObjectsByType(iterator2Collection(allElements), UMLPackage.eINSTANCE.getClass_());
+
+				for (Class umlClass : umlClasses) {
+
+					if (entityUtil.isSystem(umlClass)) {
+
+						for (Property ummlProperty : umlClass.getAttributes()) {
+
+							if (contractEntityUtil.isContractProperty(ummlProperty)) {
+								ContractProperty contractProperty = contractEntityUtil
+										.getContractProperty(ummlProperty);
+								// if
+								// (cp.getContractType().equals(ContractTypes.STRONG)){
+								if (true) {
+									allContracts.add(contractProperty);
+									componentInstances.add(umlClass.getName());
+								}
+								for (ContractRefinement refinedContr : contractProperty.getRefinedBy()) {
+									String contractName = refinedContr.getBase_DataType().getName();
+									if (!contractsUsedForRefinement.contains(contractName)) {
+										contractsUsedForRefinement.add(contractName);
+									}
+								}
+							}
+						}
+
+					}
+
+					for (Property part : umlClass.getParts()) {
+						if (!(part instanceof Port)) {
+							Class partUmlClass = (Class) part.getType();
+							if (partUmlClass != null) {
+								for (Property umlProperty : partUmlClass.getAttributes()) {
+
+									if (contractEntityUtil.isContractProperty(umlProperty)) {
+										ContractProperty contractProperty = contractEntityUtil
+												.getContractProperty(umlProperty);
+										// if
+										// (cp.getContractType().equals(ContractTypes.STRONG)){
+										if (true) {
+											allContracts.add(contractProperty);
+											componentInstances.add(part.getName());
+										}
+										for (ContractRefinement refinedContr : contractProperty.getRefinedBy()) {
+											String contractName = refinedContr.getBase_DataType().getName();
+											if (!contractsUsedForRefinement.contains(contractName)) {
+												contractsUsedForRefinement.add(contractName);
+											}
+										}
+									}
+								}
+							}
+						}
+					}
+
+				}
+
+			}
+		}
+
+		if (allContracts.size() > 0) {
+			return new CHESSRootNode(allContracts, contractsUsedForRefinement, componentInstances);
+		}
+		return null;
+	}
+
+	@Override
+	public void createPartControl(Composite parent) {
+		super.createPartControl(parent);
+	}
+
+	@Override
+	public void setFocus() {
+		super.setFocus();
+	}
+
+	private <T> Collection<T> iterator2Collection(final Iterator<T> iter) {
+		ArrayList<T> list = new ArrayList<T>();
+		for (; iter.hasNext();) {
+			T item = iter.next();
+			list.add(item);
+		}
+		return list;
+	}
+
+}
diff --git a/org.polarsys.chess.contracts.refinementView/.svn/pristine/b8/b84982b4662cb7fb3b466c098d0063a6b427493f.svn-base b/org.polarsys.chess.contracts.refinementView/.svn/pristine/b8/b84982b4662cb7fb3b466c098d0063a6b427493f.svn-base
new file mode 100644
index 0000000000000000000000000000000000000000..0193dbeab7c505ff1b994966119423d252e476d9
GIT binary patch
literal 360
zcmZ?wbhEHb6krfwxXQrLG2_651qWuVII&>Ei4{98XasZ^L`<+qnBkDIpku)Shm08-
z5fcm&CM?)-Az;RZhy^z?R^0HIaUo&FjfxF78g@LGaNxm(4?kY~`0?S#kHmP}#CXSw
z9J9hStM($J%y`>|9HWLDv&2ZpX_fl@Mf!#DR{z0(fqFpkCkrD3gBpVl$ViZ%7}#1J
zf>&-ZkdSC^KID{X<~y<Dv0|f-hG<LbX%o>7w<ST19d5o#>#A}E7wS&mQ6pErT%W}$
zSwVnBh@n(XxuB#?SxvT}vbwguQCwC{K}@1(n)r;F@@mpkduk*WEtXc3nYwu8N||LV
oR;^M|lUuibv7DNenCk95dv{B!DIPj}<fz*56DLopIWkxS0A-7K+W-In

literal 0
HcmV?d00001

diff --git a/org.polarsys.chess.contracts.refinementView/.svn/pristine/bd/bdecd7617e14c1d9592848da5b048389a4da78ee.svn-base b/org.polarsys.chess.contracts.refinementView/.svn/pristine/bd/bdecd7617e14c1d9592848da5b048389a4da78ee.svn-base
new file mode 100644
index 000000000..285b8bf47
--- /dev/null
+++ b/org.polarsys.chess.contracts.refinementView/.svn/pristine/bd/bdecd7617e14c1d9592848da5b048389a4da78ee.svn-base
@@ -0,0 +1,6 @@
+source.. = src/
+output.. = bin/
+bin.includes = META-INF/,\
+               .,\
+               plugin.xml,\
+               icons/
diff --git a/org.polarsys.chess.contracts.refinementView/.svn/pristine/bf/bfbd1a7fc488a8635f9d02e9d5c7e8dd81eec63e.svn-base b/org.polarsys.chess.contracts.refinementView/.svn/pristine/bf/bfbd1a7fc488a8635f9d02e9d5c7e8dd81eec63e.svn-base
new file mode 100644
index 000000000..c62f08bd4
--- /dev/null
+++ b/org.polarsys.chess.contracts.refinementView/.svn/pristine/bf/bfbd1a7fc488a8635f9d02e9d5c7e8dd81eec63e.svn-base
@@ -0,0 +1,137 @@
+/*******************************************************************************
+ * Copyright (C) 2017 Fondazione Bruno Kessler.
+ * 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:
+ *     Alberto Debiasi - initial API and implementation
+ ******************************************************************************/
+package org.polarsys.chess.contracts.refinementView.view;
+
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.Iterator;
+
+import org.eclipse.emf.common.util.TreeIterator;
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.emf.ecore.util.EcoreUtil;
+import org.eclipse.papyrus.uml.tools.model.UmlModel;
+import org.eclipse.papyrus.uml.tools.model.UmlUtils;
+import org.eclipse.swt.widgets.Composite;
+import org.eclipse.uml2.uml.Class;
+import org.eclipse.uml2.uml.Port;
+import org.eclipse.uml2.uml.Property;
+import org.eclipse.uml2.uml.UMLPackage;
+import org.polarsys.chess.contracts.profile.chesscontract.ContractProperty;
+import org.polarsys.chess.contracts.profile.chesscontract.ContractRefinement;
+import org.polarsys.chess.contracts.profile.chesscontract.util.ContractEntityUtil;
+import org.polarsys.chess.contracts.profile.chesscontract.util.EntityUtil;
+import org.polarsys.chess.contracts.refinementView.treeElements.CHESSRootNode;
+
+import eu.fbk.contracts.refinementview.treeElements.RootNode;
+import eu.fbk.contracts.refinementview.view.RefinementView;
+
+public class CustomRefinementView extends RefinementView {
+	public static String View_ID = "org.polarsys.chess.contracts.refinementView.view1";
+	private ContractEntityUtil contractEntityUtil = ContractEntityUtil.getInstance();
+	private EntityUtil entityUtil = EntityUtil.getInstance();
+
+	@Override
+	public RootNode getModelObjects(ArrayList<Object> allContracts, ArrayList<String> componentInstances,
+			ArrayList<String> contractsUsedForRefinement) {
+		UmlModel umlModel = UmlUtils.getUmlModel();
+
+		if (umlModel != null) {
+
+			TreeIterator<EObject> allElements = umlModel.getResource().getAllContents();
+
+			if (allElements != null) {
+				Collection<org.eclipse.uml2.uml.Class> umlClasses = EcoreUtil
+						.getObjectsByType(iterator2Collection(allElements), UMLPackage.eINSTANCE.getClass_());
+
+				for (Class umlClass : umlClasses) {
+
+					if (entityUtil.isSystem(umlClass)) {
+
+						for (Property ummlProperty : umlClass.getAttributes()) {
+
+							if (contractEntityUtil.isContractProperty(ummlProperty)) {
+								ContractProperty contractProperty = contractEntityUtil
+										.getContractProperty(ummlProperty);
+								// if
+								// (cp.getContractType().equals(ContractTypes.STRONG)){
+								if (true) {
+									allContracts.add(contractProperty);
+									componentInstances.add(umlClass.getName());
+								}
+								for (ContractRefinement refinedContr : contractProperty.getRefinedBy()) {
+									String contractName = refinedContr.getBase_DataType().getName();
+									if (!contractsUsedForRefinement.contains(contractName)) {
+										contractsUsedForRefinement.add(contractName);
+									}
+								}
+							}
+						}
+
+					}
+
+					for (Property part : umlClass.getParts()) {
+						if (!(part instanceof Port)) {
+							Class partUmlClass = (Class) part.getType();
+							if (partUmlClass != null) {
+								for (Property umlProperty : partUmlClass.getAttributes()) {
+
+									if (contractEntityUtil.isContractProperty(umlProperty)) {
+										ContractProperty contractProperty = contractEntityUtil
+												.getContractProperty(umlProperty);
+										// if
+										// (cp.getContractType().equals(ContractTypes.STRONG)){
+										if (true) {
+											allContracts.add(contractProperty);
+											componentInstances.add(part.getName());
+										}
+										for (ContractRefinement refinedContr : contractProperty.getRefinedBy()) {
+											String contractName = refinedContr.getBase_DataType().getName();
+											if (!contractsUsedForRefinement.contains(contractName)) {
+												contractsUsedForRefinement.add(contractName);
+											}
+										}
+									}
+								}
+							}
+						}
+					}
+
+				}
+
+			}
+		}
+
+		if (allContracts.size() > 0) {
+			return new CHESSRootNode(allContracts, contractsUsedForRefinement, componentInstances);
+		}
+		return null;
+	}
+
+	@Override
+	public void createPartControl(Composite parent) {
+		super.createPartControl(parent);
+	}
+
+	@Override
+	public void setFocus() {
+		super.setFocus();
+	}
+
+	private <T> Collection<T> iterator2Collection(final Iterator<T> iter) {
+		ArrayList<T> list = new ArrayList<T>();
+		for (; iter.hasNext();) {
+			T item = iter.next();
+			list.add(item);
+		}
+		return list;
+	}
+
+}
diff --git a/org.polarsys.chess.contracts.refinementView/.svn/pristine/ce/ceb68d84ab6670ae76b7b442439794fe1e756c07.svn-base b/org.polarsys.chess.contracts.refinementView/.svn/pristine/ce/ceb68d84ab6670ae76b7b442439794fe1e756c07.svn-base
new file mode 100644
index 000000000..ae3c17260
--- /dev/null
+++ b/org.polarsys.chess.contracts.refinementView/.svn/pristine/ce/ceb68d84ab6670ae76b7b442439794fe1e756c07.svn-base
@@ -0,0 +1 @@
+/bin/
diff --git a/org.polarsys.chess.contracts.refinementView/.svn/pristine/d3/d34d74fa4e91af8bbb6205a382bc2609c4df5d63.svn-base b/org.polarsys.chess.contracts.refinementView/.svn/pristine/d3/d34d74fa4e91af8bbb6205a382bc2609c4df5d63.svn-base
new file mode 100644
index 0000000000000000000000000000000000000000..1ca66323c989aa61c794a5fa7ba5ec2970824c01
GIT binary patch
literal 964
zcmW-fJ%}Gf6vQVO@jN&QNl+0jY%ax$Ur&g^<}b&^7!iVTNns%odDtjdSc!oRD1LBO
zvB((k3k<RW3qK3R#v%rX3sJU^*xCeaBoHLUxOZDDyZd10z2D4JPal5#(8)d6gJZz`
z|Lxudtl|O8wf*+a_5lGTKtO;|fD$N)LKLAG6{vxls6-X2(SR0ciAFS`86D_>p6Emu
zx-oze7>Pj)VR-%x2b?fr!Sgb;Bai_GG;2{1C8A^$Mo|<;MbwCzQ5jWH9SzYUT1I0u
zMRRmSkLVel(G}e>5F=t_48~9lhY^l&h8b3P_A$qfL?)QfY%2@0M3&6LEXv}n$QoHQ
zE3+!Avmsk#%WTZ1Y|f7Ckv+3ByRth6azu{I!5qrrG}4jIG}B5?1e16WNs!Pa!UC3H
zNfxq*#jIcr)?_8CSj`5uU`sZ#iOuX_5B6jyyV%VEj^IcRa)`q;=%AA(Eqc<QW`~dh
z1x+(lpb{#nLKUf46{?|{s#KM#)u0w?sYW%aSsm)3p6XPWx;3B?8mU1IX;_9Fa>|q?
zdpiizjfrITHH$L}1uo%|E_9KLUEvz8=}K3*+6`{umTq*Do893a?&(f<x!VIC;gKHn
zkjJ*z4BB*iBA;{bi0`C+XIuIVH~#tU$%k*-#O}9uVej(R`BR76-KW<cx#P=Yhdy6_
z;m(z<#l5$#?cH3u`0LL{?m2$`ue(0@`|Be&_pe_#xbLIIxhvPdd+WVN7kGAY`nfmO
zE*;SNl{c4PzV!Mhm)CD@eS7`($Ih%C-T3h1KYw_If8h8nOV2OYYbQQEdglF=Zywq_
w@x_Z5zk2oRzZWk5_|nziSI*sd?V0aSUVHGqpZ0H@{pH<#2Uc}<V}U3B2fG`^Q~&?~

literal 0
HcmV?d00001

diff --git a/org.polarsys.chess.contracts.refinementView/.svn/pristine/ed/edaf18f520a05f416239ba3637e56782ef64c388.svn-base b/org.polarsys.chess.contracts.refinementView/.svn/pristine/ed/edaf18f520a05f416239ba3637e56782ef64c388.svn-base
new file mode 100644
index 000000000..b3e03654c
--- /dev/null
+++ b/org.polarsys.chess.contracts.refinementView/.svn/pristine/ed/edaf18f520a05f416239ba3637e56782ef64c388.svn-base
@@ -0,0 +1,14 @@
+Manifest-Version: 1.0
+Bundle-ManifestVersion: 2
+Bundle-Name: org.polarsys.chess.contracts.refinementView
+Bundle-SymbolicName: org.polarsys.chess.contracts.refinementView;singleton:=true
+Bundle-Version: 1.0.0.qualifier
+Bundle-RequiredExecutionEnvironment: JavaSE-1.8
+Require-Bundle: org.eclipse.papyrus.infra.core,
+ org.eclipse.ui.workbench,
+ org.eclipse.jface,
+ eu.fbk.eclipse.standardtools.refinementView.core,
+ org.eclipse.papyrus.uml.tools,
+ org.polarsys.chess.contracts.profile;bundle-version="0.9.0",
+ org.polarsys.chess.core;bundle-version="0.9.0"
+Bundle-Vendor: Fondazione Bruno Kessler
diff --git a/org.polarsys.chess.contracts.refinementView/.svn/pristine/ef/efd91704793a843228c38c35b1d04c80916e004f.svn-base b/org.polarsys.chess.contracts.refinementView/.svn/pristine/ef/efd91704793a843228c38c35b1d04c80916e004f.svn-base
new file mode 100644
index 000000000..2cdb60a09
--- /dev/null
+++ b/org.polarsys.chess.contracts.refinementView/.svn/pristine/ef/efd91704793a843228c38c35b1d04c80916e004f.svn-base
@@ -0,0 +1,137 @@
+/*******************************************************************************
+ * Copyright (C) 2017 Fondazione Bruno Kessler.
+ * 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:
+ *     Alberto Debiasi - initial API and implementation
+ ******************************************************************************/
+package org.polarsys.chess.contracts.refinementView.view;
+
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.Iterator;
+
+import org.eclipse.emf.common.util.TreeIterator;
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.emf.ecore.util.EcoreUtil;
+import org.eclipse.papyrus.uml.tools.model.UmlModel;
+import org.eclipse.papyrus.uml.tools.model.UmlUtils;
+import org.eclipse.swt.widgets.Composite;
+import org.eclipse.uml2.uml.Class;
+import org.eclipse.uml2.uml.Port;
+import org.eclipse.uml2.uml.Property;
+import org.eclipse.uml2.uml.UMLPackage;
+import org.polarsys.chess.contracts.profile.chesscontract.ContractProperty;
+import org.polarsys.chess.contracts.profile.chesscontract.ContractRefinement;
+import org.polarsys.chess.contracts.profile.chesscontract.util.ContractEntityUtil;
+import org.polarsys.chess.contracts.refinementView.treeElements.CHESSRootNode;
+import org.polarsys.chess.core.util.uml.EntityUtil;
+
+import eu.fbk.contracts.refinementview.treeElements.RootNode;
+import eu.fbk.contracts.refinementview.view.RefinementView;
+
+public class CustomRefinementView extends RefinementView {
+	public static String View_ID = "org.polarsys.chess.contracts.refinementView.view1";
+	private ContractEntityUtil contractEntityUtil = ContractEntityUtil.getInstance();
+	private EntityUtil entityUtil = EntityUtil.getInstance();
+
+	@Override
+	public RootNode getModelObjects(ArrayList<Object> allContracts, ArrayList<String> componentInstances,
+			ArrayList<String> contractsUsedForRefinement) {
+		UmlModel umlModel = UmlUtils.getUmlModel();
+
+		if (umlModel != null) {
+
+			TreeIterator<EObject> allElements = umlModel.getResource().getAllContents();
+
+			if (allElements != null) {
+				Collection<org.eclipse.uml2.uml.Class> umlClasses = EcoreUtil
+						.getObjectsByType(iterator2Collection(allElements), UMLPackage.eINSTANCE.getClass_());
+
+				for (Class umlClass : umlClasses) {
+
+					if (entityUtil.isSystem(umlClass)) {
+
+						for (Property ummlProperty : umlClass.getAttributes()) {
+
+							if (contractEntityUtil.isContractProperty(ummlProperty)) {
+								ContractProperty contractProperty = contractEntityUtil
+										.getContractProperty(ummlProperty);
+								// if
+								// (cp.getContractType().equals(ContractTypes.STRONG)){
+								if (true) {
+									allContracts.add(contractProperty);
+									componentInstances.add(umlClass.getName());
+								}
+								for (ContractRefinement refinedContr : contractProperty.getRefinedBy()) {
+									String contractName = refinedContr.getBase_DataType().getName();
+									if (!contractsUsedForRefinement.contains(contractName)) {
+										contractsUsedForRefinement.add(contractName);
+									}
+								}
+							}
+						}
+
+					}
+
+					for (Property part : umlClass.getParts()) {
+						if (!(part instanceof Port)) {
+							Class partUmlClass = (Class) part.getType();
+							if (partUmlClass != null) {
+								for (Property umlProperty : partUmlClass.getAttributes()) {
+
+									if (contractEntityUtil.isContractProperty(umlProperty)) {
+										ContractProperty contractProperty = contractEntityUtil
+												.getContractProperty(umlProperty);
+										// if
+										// (cp.getContractType().equals(ContractTypes.STRONG)){
+										if (true) {
+											allContracts.add(contractProperty);
+											componentInstances.add(part.getName());
+										}
+										for (ContractRefinement refinedContr : contractProperty.getRefinedBy()) {
+											String contractName = refinedContr.getBase_DataType().getName();
+											if (!contractsUsedForRefinement.contains(contractName)) {
+												contractsUsedForRefinement.add(contractName);
+											}
+										}
+									}
+								}
+							}
+						}
+					}
+
+				}
+
+			}
+		}
+
+		if (allContracts.size() > 0) {
+			return new CHESSRootNode(allContracts, contractsUsedForRefinement, componentInstances);
+		}
+		return null;
+	}
+
+	@Override
+	public void createPartControl(Composite parent) {
+		super.createPartControl(parent);
+	}
+
+	@Override
+	public void setFocus() {
+		super.setFocus();
+	}
+
+	private <T> Collection<T> iterator2Collection(final Iterator<T> iter) {
+		ArrayList<T> list = new ArrayList<T>();
+		for (; iter.hasNext();) {
+			T item = iter.next();
+			list.add(item);
+		}
+		return list;
+	}
+
+}
diff --git a/org.polarsys.chess.contracts.refinementView/.svn/pristine/f8/f8a9adf7141c6f858132f01dd18fe7413bf2e12a.svn-base b/org.polarsys.chess.contracts.refinementView/.svn/pristine/f8/f8a9adf7141c6f858132f01dd18fe7413bf2e12a.svn-base
new file mode 100644
index 000000000..6f959d7f6
--- /dev/null
+++ b/org.polarsys.chess.contracts.refinementView/.svn/pristine/f8/f8a9adf7141c6f858132f01dd18fe7413bf2e12a.svn-base
@@ -0,0 +1,28 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+	<name>org.polarsys.chess.contracts.refinementView</name>
+	<comment></comment>
+	<projects>
+	</projects>
+	<buildSpec>
+		<buildCommand>
+			<name>org.eclipse.jdt.core.javabuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+		<buildCommand>
+			<name>org.eclipse.pde.ManifestBuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+		<buildCommand>
+			<name>org.eclipse.pde.SchemaBuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+	</buildSpec>
+	<natures>
+		<nature>org.eclipse.pde.PluginNature</nature>
+		<nature>org.eclipse.jdt.core.javanature</nature>
+	</natures>
+</projectDescription>
diff --git a/org.polarsys.chess.contracts.refinementView/.svn/wc.db b/org.polarsys.chess.contracts.refinementView/.svn/wc.db
new file mode 100644
index 0000000000000000000000000000000000000000..0dc2b6247c621dee3ea9007d2a91b2def7cbb9cd
GIT binary patch
literal 60416
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

literal 0
HcmV?d00001

diff --git a/org.polarsys.chess.contracts.safetyAnalysis/.svn/entries b/org.polarsys.chess.contracts.safetyAnalysis/.svn/entries
new file mode 100644
index 000000000..3cacc0b93
--- /dev/null
+++ b/org.polarsys.chess.contracts.safetyAnalysis/.svn/entries
@@ -0,0 +1 @@
+12
\ No newline at end of file
diff --git a/org.polarsys.chess.contracts.safetyAnalysis/.svn/format b/org.polarsys.chess.contracts.safetyAnalysis/.svn/format
new file mode 100644
index 000000000..3cacc0b93
--- /dev/null
+++ b/org.polarsys.chess.contracts.safetyAnalysis/.svn/format
@@ -0,0 +1 @@
+12
\ No newline at end of file
diff --git a/org.polarsys.chess.contracts.safetyAnalysis/.svn/pristine/11/1142404439b8b9db2780a419efef8b221aa4cb87.svn-base b/org.polarsys.chess.contracts.safetyAnalysis/.svn/pristine/11/1142404439b8b9db2780a419efef8b221aa4cb87.svn-base
new file mode 100644
index 000000000..634e2ab94
--- /dev/null
+++ b/org.polarsys.chess.contracts.safetyAnalysis/.svn/pristine/11/1142404439b8b9db2780a419efef8b221aa4cb87.svn-base
@@ -0,0 +1,64 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<?eclipse version="3.4"?>
+<plugin>
+ <extension
+         point="org.eclipse.ui.menus">
+         <menuContribution
+            allPopups="false"            
+            locationURI="menu:org.eclipse.ui.main.menu.AMASS?after=org.eclipse.ui.main.menu.AMASS.funcVer">             
+              <menu
+               label="Safety Analysis">
+               <menu
+                       label="//Debug Operations">
+                       <command
+                          commandId="org.polarsys.chess.safetyAnalysis.commands.debug.ComputeContractFaultTreeOnFileCommand"
+                          style="push">
+                    </command>
+                       </menu>
+                 <menu
+                       label="Fault Tree Viewer">
+                    <command
+                          commandId="eu.fbk.eclipse.standardtools.faultTreeViewer.commands.ShowFaultTreeFromXmlFileCommand"
+                          style="push">
+                    </command>
+                 </menu>
+                <command
+                  commandId="org.polarsys.chess.safetyAnalysis.commands.ComputeContractFaultTreeCommand"
+                  style="push">
+            </command>         
+               </menu>
+      </menuContribution>
+      <menuContribution
+            allPopups="false"            
+            locationURI="popup:org.eclipse.ui.main.diagramEditorMenu.AMASS?after=org.eclipse.ui.main.diagramEditorMenu.AMASS.funcVer">              
+           <menu
+               label="Safety Analysis"
+            id="org.eclipse.ui.main.diagramEditorMenu.AMASS.safetyAnalysis">
+           <menu
+                       label="Fault Tree Viewer">
+                    <command
+                          commandId="eu.fbk.eclipse.standardtools.faultTreeViewer.commands.ShowFaultTreeFromXmlFileCommand"
+                          style="push">
+                    </command>
+                 </menu>
+                <command
+                  commandId="org.polarsys.chess.safetyAnalysis.commands.ComputeContractFaultTreeCommand"
+                  style="push">
+            </command>         
+               </menu>
+              </menuContribution>          
+          </extension>
+ <extension
+         point="org.eclipse.ui.commands">
+      <command
+            defaultHandler="org.polarsys.chess.safetyAnalysis.commands.ComputeContractFaultTreeCommand"
+            id="org.polarsys.chess.safetyAnalysis.commands.ComputeContractFaultTreeCommand"
+            name="Contract-based Safety Analysis on selected component">
+      </command>
+      <command
+            defaultHandler="org.polarsys.chess.safetyAnalysis.commands.debug.ComputeContractFaultTreeOnFileCommand"
+            id="org.polarsys.chess.safetyAnalysis.commands.debug.ComputeContractFaultTreeOnFileCommand"
+            name="Compute Contract-based Fault Tree on .oss file">
+      </command>
+      </extension>
+</plugin>
diff --git a/org.polarsys.chess.contracts.safetyAnalysis/.svn/pristine/1f/1f595a704c0d8abfe2211780cde1ac1b638b7d3c.svn-base b/org.polarsys.chess.contracts.safetyAnalysis/.svn/pristine/1f/1f595a704c0d8abfe2211780cde1ac1b638b7d3c.svn-base
new file mode 100644
index 000000000..e0e145c3c
--- /dev/null
+++ b/org.polarsys.chess.contracts.safetyAnalysis/.svn/pristine/1f/1f595a704c0d8abfe2211780cde1ac1b638b7d3c.svn-base
@@ -0,0 +1,50 @@
+/*******************************************************************************
+ * Copyright (C) 2017 Fondazione Bruno Kessler.
+ * 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:
+ *     Alberto Debiasi - initial API and implementation
+ ******************************************************************************/
+package org.polarsys.chess.safetyAnalysis.commands;
+
+
+import org.eclipse.core.commands.ExecutionEvent;
+import org.eclipse.core.runtime.IProgressMonitor;
+import org.eclipse.emf.ecore.resource.Resource;
+import org.eclipse.uml2.uml.Class;
+import org.polarsys.chess.service.internal.utils.SelectionUtil;
+import org.polarsys.chess.verificationService.model.ChessSystemModel;
+
+import eu.fbk.eclipse.standardtools.ExecOcraCommands.services.OCRAExecService;
+import eu.fbk.eclipse.standardtools.commands.AbstractAsyncJobCommand;
+import eu.fbk.eclipse.standardtools.dialogs.MessageTimeModelDialog;
+
+/**
+ * 
+ *
+ */
+public class ComputeContractFaultTreeCommand extends AbstractAsyncJobCommand {
+
+	private SelectionUtil selectionUtil = SelectionUtil.getInstance();
+	private OCRAExecService ocraExecService = OCRAExecService.getInstance(ChessSystemModel.getInstance());
+	
+	
+	public ComputeContractFaultTreeCommand() {
+		super("Contract-based Fault Tree");
+	}
+
+	@Override
+	public void execJobCommand(ExecutionEvent event, IProgressMonitor monitor) throws Exception {
+
+		Class umlSelectedComponent = selectionUtil.getUmlComponentFromSelectedObject(event);
+		Resource umlSelectedResource = umlSelectedComponent.eResource();
+		boolean isDiscreteTime = MessageTimeModelDialog.openQuestion();
+		boolean showPopups = false;
+		
+		ocraExecService.executeComputeFaultTree(umlSelectedComponent,umlSelectedResource, isDiscreteTime, showPopups,monitor);
+	}
+
+}
diff --git a/org.polarsys.chess.contracts.safetyAnalysis/.svn/pristine/2b/2b6fa5d291601b7ec502197e845c658716a7dd14.svn-base b/org.polarsys.chess.contracts.safetyAnalysis/.svn/pristine/2b/2b6fa5d291601b7ec502197e845c658716a7dd14.svn-base
new file mode 100644
index 000000000..a37e4f8b6
--- /dev/null
+++ b/org.polarsys.chess.contracts.safetyAnalysis/.svn/pristine/2b/2b6fa5d291601b7ec502197e845c658716a7dd14.svn-base
@@ -0,0 +1,16 @@
+Manifest-Version: 1.0
+Bundle-ManifestVersion: 2
+Bundle-Name: org.polarsys.chess.safetyAnalysis
+Bundle-SymbolicName: org.polarsys.chess.contracts.safetyAnalysis;singleton:=true
+Bundle-Version: 1.0.0.qualifier
+Bundle-RequiredExecutionEnvironment: JavaSE-1.8
+Require-Bundle: org.eclipse.core.commands,
+ eu.fbk.eclipse.standardtools.ModelTranslatorToOcra,
+ org.eclipse.swt,
+ org.eclipse.uml2.uml,
+ eu.fbk.eclipse.standardtools.utils;bundle-version="1.0.0",
+ eu.fbk.eclipse.standardtools.ExecOcraCommands,
+ org.polarsys.chess.contracts.verificationService;bundle-version="1.0.0"
+Bundle-Vendor: Fondazione Bruno Kessler
+Import-Package: org.eclipse.core.runtime,
+ org.polarsys.chess.service.internal.utils
diff --git a/org.polarsys.chess.contracts.safetyAnalysis/.svn/pristine/3c/3cbebaa7f54b0cb886240fc79028e5df4f4d2f71.svn-base b/org.polarsys.chess.contracts.safetyAnalysis/.svn/pristine/3c/3cbebaa7f54b0cb886240fc79028e5df4f4d2f71.svn-base
new file mode 100644
index 000000000..6f20375d6
--- /dev/null
+++ b/org.polarsys.chess.contracts.safetyAnalysis/.svn/pristine/3c/3cbebaa7f54b0cb886240fc79028e5df4f4d2f71.svn-base
@@ -0,0 +1,5 @@
+source.. = src/
+output.. = bin/
+bin.includes = META-INF/,\
+               .,\
+               plugin.xml
diff --git a/org.polarsys.chess.contracts.safetyAnalysis/.svn/pristine/51/512bd49c4ba767010f32a54ef22de71e83bd7e1e.svn-base b/org.polarsys.chess.contracts.safetyAnalysis/.svn/pristine/51/512bd49c4ba767010f32a54ef22de71e83bd7e1e.svn-base
new file mode 100644
index 000000000..295926d96
--- /dev/null
+++ b/org.polarsys.chess.contracts.safetyAnalysis/.svn/pristine/51/512bd49c4ba767010f32a54ef22de71e83bd7e1e.svn-base
@@ -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/org.polarsys.chess.contracts.safetyAnalysis/.svn/pristine/84/840bb71c03bf83525100c2e64ed14e864bbbba56.svn-base b/org.polarsys.chess.contracts.safetyAnalysis/.svn/pristine/84/840bb71c03bf83525100c2e64ed14e864bbbba56.svn-base
new file mode 100644
index 000000000..b862a296d
--- /dev/null
+++ b/org.polarsys.chess.contracts.safetyAnalysis/.svn/pristine/84/840bb71c03bf83525100c2e64ed14e864bbbba56.svn-base
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<classpath>
+	<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.8"/>
+	<classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>
+	<classpathentry kind="src" path="src"/>
+	<classpathentry kind="output" path="bin"/>
+</classpath>
diff --git a/org.polarsys.chess.contracts.safetyAnalysis/.svn/pristine/aa/aa1bac8db08bcadd745d40f8060d0bfda72b3172.svn-base b/org.polarsys.chess.contracts.safetyAnalysis/.svn/pristine/aa/aa1bac8db08bcadd745d40f8060d0bfda72b3172.svn-base
new file mode 100644
index 000000000..16223c5dc
--- /dev/null
+++ b/org.polarsys.chess.contracts.safetyAnalysis/.svn/pristine/aa/aa1bac8db08bcadd745d40f8060d0bfda72b3172.svn-base
@@ -0,0 +1,28 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+	<name>org.polarsys.chess.contracts.safetyAnalysis</name>
+	<comment></comment>
+	<projects>
+	</projects>
+	<buildSpec>
+		<buildCommand>
+			<name>org.eclipse.jdt.core.javabuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+		<buildCommand>
+			<name>org.eclipse.pde.ManifestBuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+		<buildCommand>
+			<name>org.eclipse.pde.SchemaBuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+	</buildSpec>
+	<natures>
+		<nature>org.eclipse.pde.PluginNature</nature>
+		<nature>org.eclipse.jdt.core.javanature</nature>
+	</natures>
+</projectDescription>
diff --git a/org.polarsys.chess.contracts.safetyAnalysis/.svn/pristine/df/dfef977538a6489a3c736fa99de0a9d0575be955.svn-base b/org.polarsys.chess.contracts.safetyAnalysis/.svn/pristine/df/dfef977538a6489a3c736fa99de0a9d0575be955.svn-base
new file mode 100644
index 000000000..64b621b2a
--- /dev/null
+++ b/org.polarsys.chess.contracts.safetyAnalysis/.svn/pristine/df/dfef977538a6489a3c736fa99de0a9d0575be955.svn-base
@@ -0,0 +1,43 @@
+/*******************************************************************************
+ * Copyright (C) 2017 Fondazione Bruno Kessler.
+ * 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:
+ *     Alberto Debiasi - initial API and implementation
+ ******************************************************************************/
+package org.polarsys.chess.safetyAnalysis.commands.debug;
+
+import org.eclipse.core.commands.ExecutionEvent;
+import org.eclipse.core.runtime.IProgressMonitor;
+import org.polarsys.chess.verificationService.model.ChessSystemModel;
+
+import eu.fbk.eclipse.standardtools.ExecOcraCommands.services.OCRAExecService;
+import eu.fbk.eclipse.standardtools.commands.AbstractAsyncJobCommand;
+import eu.fbk.eclipse.standardtools.dialogs.MessageTimeModelDialog;
+
+/**
+ * 
+ *
+ */
+
+
+public class ComputeContractFaultTreeOnFileCommand extends AbstractAsyncJobCommand {
+
+	private OCRAExecService ocraExecService = OCRAExecService.getInstance(ChessSystemModel.getInstance());
+	
+	
+	public ComputeContractFaultTreeOnFileCommand() {
+		super("Contract-based Fault Tree");
+	}
+
+	@Override
+	public void execJobCommand(ExecutionEvent event, IProgressMonitor monitor) throws Exception {
+	
+		boolean isDiscreteTime = MessageTimeModelDialog.openQuestion();
+		ocraExecService.executeComputeFaultTree(isDiscreteTime, monitor);
+	}
+
+}
diff --git a/org.polarsys.chess.contracts.safetyAnalysis/.svn/wc.db b/org.polarsys.chess.contracts.safetyAnalysis/.svn/wc.db
new file mode 100644
index 0000000000000000000000000000000000000000..82edc42d490289d9076be68a08cb0ef6bf524093
GIT binary patch
literal 44032
zcmeHQYiu0HeV^Io-BFTh$)c#^Lll>iEb}ZrZtr&Q;YTfsJlTx+kjbMZ#g@<eI_ae2
z9esDy!>%11=>%vB1Tl~gX$ya7g9e6Er2Wtj0gRwY+B!giwl>@%M$;6j`!M=I(I9;V
zPMiK`cjtEZUc3`YS(bK>+?$)7oyTwHKl9)J{APCP>Df$4<I?%Uid5plr~_e)PI4SV
z=mPxPk6!qJ5%RrjdV(7b*#k6kd*FhH{fJ!V*pJ!&Vt>N^EBg^%#KU;F(LHyJ|HN*u
ze`*k;OitBq6kp5&S}AF*l-GZ!&MwX@C1>UnDW1Caq&j{66MeYs(?iUpW*4R=XH%1>
zmd;KlpE@_SxUi7iHMN+SOeVPH`I)De6Wq-FbmBZ$6_Q(+=Zw(YNH(uX*_0#~SEbVB
zK*8(t_dx<rlq5N;8DWgG&x|)Yd1^LMxtq(V9Hfy<JegSJAe(cOix;>vi3{B1a&lp2
z9`2b-%qK@VM=BhbOq@^B90pGKy#6Qp8lhmMp5l$~&S{U=-#3gengEazFDA||EX^br
z7B6_sJkmmwtE8+}2yUd1&zAzz9gbL*muIG}FrKPd$kpmt*48p=pu8XZ{KLbzoY&E^
zVz69{12xN^8zIQG036A#6R&wF)BN)6>?lVvVP2!2Tp-MP{Z9@zLet7YinrVyXBn^m
z#0h*sFNfI>i`t88T29fbezJ}dk&7TshX>%)cMwho_QPrK{cyT(cNd&7`wawt?%^Wf
zB5>y-u!K91vV6HzS}i^@F;UbC*D@ga<13n)$z{g1wTa@j+{EPE<kC{Am|rU>nkGqM
zMGJ<;Bt9aH36iXi#p4P;78UteREf*MbTmTbpJo37vH#BgJ$$)`i-3#3ryPO%S#}to
zTUb1k0_}1+(Yc#p`>>&#;rlUMv$P7l8_J5=cM<%#hl_xVz^5F630A>vs0gO~{{XQ+
z_>>pi&Ay9(ivUGngk8q1sQ>QxPZ4v!T?Fm|1lk?{4g256i2e93D7;$)7XcT6RuNz^
zi;(gB@5+Cxpt<2(1nv?9I#`(Ncjf;ssZF;SE&}Z#pvyne|2y$6#Qr9GiupU{HRd?}
zKE4bd_u6r>)0;sIzHqE~S>lhWX)PU(M#XSUiU_ed%%eubk+c+#t6ETst3fd;%353$
zy~pvf6;<SpX`z@Fj)bCVDHcknWhEl;iXf`0lvY$p)s%}qd-Qx-jEhn<C@4WSCdp|n
z6yo`4EU2g&FDbkn3CHB98diKiHlq)T>3A$6r+HBgiScMSosP=97!JxxSW0W6c+u;K
zo)<zwP!Pg#IVQ(dIRsHl0w33)R52OSk|aTqW6?ctnbE5<AJIfXhzmh2tVNV)Bo-G#
zya<JlMy06woCl)E6r8XkYqBIo)1n{;A)Z(SQcEk*co0Ak)wGZn)KEIgub8n5K}nW^
zk$6amghHAe6XUWHQ`Jx`7>$KAA$+mJp81drKtnO(d?d)rQB4tpAwC|}VuGkd#8{M%
zK!#LaVBR*Pm*e5M5KHr#kX8Y;bXW}PztpIxDsou3$l9Y9`H-v%aYc}&Xe1isgXwTc
z5(O<C3aMI@*J5E=jcUAxvu5;~#K&X_3LH}f88R)1T2zjPC0<NRvK*H#GWO^tiI*iP
zog9qGilnMhXaoRGEEox@K{>5T(U2VGqao%yH1|P4BC*Bd5kcVPU??obBu!Hz@vx+%
zgZxEok3J>@WjV?#!LXc;g~gD_2ZKsTiwGJZqQxSD42L8}@C`G1UI{~E5n@s-8WKX0
za6BT$!-^<`BZ3%~WS)%woy=v#{2B8btN@P$m)JjLe;qvB!$n{l5eTsv++Nq(Y2DIt
zcWJw&#V*im-O_5e=CN*RwXf>1ZfUjuVXa$Q?o+H=TJ9&v_`e&a5d8fIK8;_--(`Hv
z%gmeXF80sSG5EkC-sknt9Bo8boSaH71HpBEVH#MlwjYFF*l|bFFSo>`1o|&!U5@0W
z6>SuL-5Q~DdkC)EL$<x+ImJ89sxD9M^7#h`@w!2<rF3rkz1u;lrM^HBRxWGG)#BPp
zHObdTv>xS@{K{%UD;6{PT!o4~$`vy&X_cQGr3a6499PiNN`5T|tYS((wyuJ@nQD}1
zpl!A~k$)ilBlee=FX27bhj`y}2i_R&I%z94Ud^su%H+mxtYk-kT=~dKW<?t--CWhU
zl6Ipsv6_`Kxd8B|W(S?OjjtB+S2U&6_$K`O=<zY<P4ZeMtCBlcwL&SQ6&v3SIs7Ye
z(2>!(L~?R$X8!cV+~oYs>BLfUeC{;$YZ}q(RV5x*vQklBXVCPv&n^!+(jPBsrBWt$
zsW_1@TpHJuY-Y8njbBkq<4V4uL8-KKu@a_f%)f`r;fy2hVnHFXPORp$QlWUWI03D{
zSez)rgHP$^WKPQ7EM~wnzp^6b)Z)Yx$l6*-o66@(1xYELme#VRWI+QDJ;3-C>6+AD
zluh&dJzPGsww3&<n!I+YVXhZ)r!(0t<b6VqzHteN{;$jbud$8~@pcavfjba^FJW81
z+zA<c1!LOd`k0T9ALHu2)C-}`VN82OdoM{Ar#%J{RQf#_4ABYjXrV`g`7`uv7~}T3
zlZLWx@1Yoo`qG)Uqi(k|!DRgJKyM)Q1|u<FWjoLl_))BaXKP3K=KVf@PY>Q$)|Vy0
zTDLRg{{e@#M0`L~Drl?uV#>Z4jVd*;`0I3HF)=@tSaPfb+nC(r^B+Bmzc8c6ZhN?}
zIlCNb*)Bkm*Og7vGkDS52&@&OOW+DxmMpZZ(&$FHRjHumN-4)>qODnDHpiWsT{uPb
zy<9q*QA(+N)?EE%^UG=1ji_yY*Yky|Fnm&f5+kHTbO`FDT$XZ|v}~qW@!@nWB(;*S
zBvFE4E>%fel}b|OZki#()5s-cPAgRDl7NAhF4cGzGM6sb`r33{ZbZkr3c>&vxW$LZ
zD_yXP@+dBMn~Mm|dObS{%_M27<b7uC)8&MYaAZZGEo>!^&Wa4|Y$MhimeKYdEyt$t
z!^+F6sZ#!`22Th2vP&u$q;=^R^Vf4)LBFOWd=+YWWd$0e-3zK#qt6SYj)k5hRP;to
zAv7}r)l(V&|Cn`rS`&Xal#76iKs^K=#h9oj0>(b}3i4r0RFLDA3PRKlP*jMrvCpP#
z5RF1?cho1k0;Jcb7NV;P`uI=ufA??^a1pro5TN7#y;pL##4Z9Z0@VHwvwn_`i_ATS
z0RCC|+DIB~&12-zGE?GiMV)MD+Nw2Ub37L$|78B;)$;RONgC{Cn_B$s$?ctWq-IU>
z*aD${KJN%rZBeub{eu@ALF-u=?ZLlX_Bz6cBU~%SMtc-<&Jx5pYX7tc8d-EC!v{Ib
z$XN-e+y9uS5%V<j67y5`J!S$Q$H(unw!dj{0|&hR$Nh~M5QO@$l;ZWT-tw~#`1}I{
zc%w_VS)Q9B8-SfLzj_?DO4GB6oziX?tz)QEGX<wL(q>aK3`d%p%4*lNY_WDGnVU|W
zo?M<ya$|gzwa8(~v!wy%qOtv6|Kva;AV`58+UxZ{+S4cm!6L<z^Zx7mjE%YC22Pdj
zDy)qwx}9iMLI7ZPE3(}RS+%7ZF{>Ij*$OgT;9jpGy$Z~>caV<%?Eh>k1a1Hq0T+Qg
z6M@Ip$ZnjG%w|?VlKXvwV1|V6&Mu69L7)HGpOH)M;UeH7@M%N<?EjGM&8H4X+4hoY
z2>6Cs2~6f8cCqgh?-Q^$uf8)c`yu-y*roRa!<$^%>7(4$*^AdO*`~A)p>8y2C3s8I
z8ou@(UUOvk<1A>pnOqw7QY_tk)z^zN_}tdB<83J;HR-3lz4#oC-*Wn%`pMR$^R%ZI
z$MIO}>2y>_TodJ~j$S;5^}S{{t4Y?3tR@bT?ZpGQyGgbfxV7fCai$k{>oZ#Q8WFAu
zzm9P~?!pL{S%%!P51Jk0J%Ld9RhX1Rc<QOd(h?904I-gIZKNc`ah-%XUb#5#q$A?h
zN@^nk+N$s>@?5;hO-BVOD+9?hKMr$n8L61j>3P?cM+#C(m99N<O)C(l@Yq@*%f*9S
z&Ay%!!(^vV2sIIo#3pKT39vnU1Ww1u=Gr5N;q=fUI30%~q6htOI@$xL00*Zd-DLdV
zk6%UXf8&3`uQLJsbNm5*8~+x5mHij?hwS&*ud!>u4Stlx%vT|(du%HL`#rD+x}DC3
z`uBM-=w}r|8#>VI0ePyWw4uI39t{0`T~ZtBHKU=nDC9SjvP?jzd(?xMNm4B^-O#}Y
zJb1_+81+2o1*$H1Rd)&7z|Td)mmzYXzqK2AyZkqF^f3<%Jhzq(Iuh}~FwySKh#T`j
z@805VXy~v9`shZX(P6WFRM!F;-0Oi(v~nLhw8sOzqy8HWbb6rU1C_z#|6NDuI`hBm
z2>W$(5<YDle6QD^7;0qhfi2_{i}RDSU>&PC$=KfUdA8f<_xtg$Xu9=BH=XGxzr*IE
zdo{6-*?5C>%wvt{R=}-OwN)Va)h@08GGASiA0<#(W;9#U)^@5UjnD{faR>?R>RP61
z^#@rHLiTR2L-|_CUjxJ4WvyT>4;keQ&r+UJ`hYK3y|X+}6f4UIC>7BtsmT*_t{Z_B
zC^uKKnH+G>q{1c5Ml3YQhAJ2rYqCu*IoW2^7v79;IZugdz`xHGv%pGIQ;wxBKw*=L
zB|=<Gm0(3h1yjOygYhq=NRUsOe=;SJg4GsU0hs=@#zwhJ4&Z@zF{mk0WH4_Ult#NP
zur4EUl%ur|*334{y1(4x^9TI6oG|%_ddo~1bVS|VZ#LYjcRJX^5jvvTqD>R4v$0i?
zCv90hf6(g>4C0$+;!sNCtrK(8B6Sa#=~E&k^-n<<k}&<vjo23u>HNR_sDwb@|B!u`
z{Wkjz_I36Zc9o5@-OMkTzhS<~WSIN#=Rg}Pwb3m!4O$-b;k8@t-K#sgO@^EHM}(_h
zoN0eZxRq?7Bjr6loVkTjw9V97nIS{NFrc4nc{pn?2Z)>Y;&|ghucg?~(1aI{)f)@z
z-;NG*UOYgQC-ZuBFf`ch#ogv0X<kH!9`xctyJAIkDEq1b)En{QA&2(Vni_SV7k5=g
zVMx7e7_w*0K%)LW@T;%yJpfmTYDn_~Ivw~_DP=Seoe)F^Xd-saZ<iM%WBe!je<$-M
zV*iqPpAE2Yu}S9tVD<0knhLOc(M8}kBk(YLf$qn#$xbVsR?y9MP4QVlH`@WlYX#kG
zI}?u;bhE8VI;^0ZZ8O4JLFG-h3}LLGn{EH$@_%o0J9d+E5xA2Op!0usQl8wrxCpoi
z+#Uo7|Hp%Z2nCs4%wx>=S>R(fJ2sy2`}{*g_zN%VhP#SYui`l5FyK|Z!HCDTy&PBP
zu)&)z8yWKITk9%RFJe!sHQdp)m3D4jjRlV^>TPJAt7~}!)0LJ^8Sl`n<QFnPj+!-{
zB&d<ImV%NkL8KB)3F%l+lN^avH<{^?QC}lP<4i+<?Wgk6&$?DIu!Y@%A-CMw=kte$
zz))}6r7E?Z0&XF^6%}4<YTAE?>RZPu*Xa$!QdRNfDhqaNpsg~M1zza)^^muGc3sP8
z*A1K7smY~;<w9l#o|#FUGmLO45`ddr;+7J#iK!&_Fn4-!VUEk?RjtUKdkWU0S4@T6
z<6N+u9Psr#^blUpSV>GRFOucRMk?lyItiIq8l?qU$kiq|VrFY@^8AQpvb1H9+!iwL
z%Z0{`rS6Y&Iny;cKMmK%oeh#)cKB4*|2C6(_nM1<i@@E902%)~(AN;&jsKSU7C7#_
zLmTq>AA+fuKF8F{+`==7X}#wiu0OUIy|NyxcH)IjrrG9L%E?2%0nv}wwG!-haS7&|
z$ViaN<ls%KrIg)|cJax@nJ39Rwd)1sCQrlA2lG`+iADYW)|GJu=719C2z|uZHg0CA
zqOWkL5>L*|bIWI^$;-i43$WKmCa1yplms=#+z{?@%XtD8aTw!NC9=mIaX-o>=BLZa
z!Ft6~wX6nP8E#%IXF#)9(=cR07Gbcq6>DL3dOM0WR<Bt0xb<SKCl31tp7i6_M0*iZ
zYpY~lva)?i3*~EYhgndwE*4H(`}{czU9T?fnce<6ZMAu{hNI5^VV?*75BsaI_wO6*
zSJ-v-Cd~gm&;A?x5A0vF@3VixewY0^`z`i&@4T+T&5?`1os0m`Y+&1TjQXkL0Cn_H
zM=y2wsiT`Z4pK)CbqrI-QR+BC9UOHGQO9BG7^IFv)Is<^dd777KZC!Fn4iPRJw9;+
z)-&DxzzOUEb%$_Ldrl&FD}na}<6S=p3uSF{xLaYTPFV5a7Y(8+q1iOvCDPcryX8%#
zUnD%&Bm1&%R`Fc%4di+Dw?91k?U^QwS3bx$r@Y2%DX*~SXp6*LThRk|DgU>1Faje1
zqW?4a6@*`5K13f>eLit%*h&WQAAuM_1VoDL@z~fFCMBG-eGsm%4Au`%sT8)*IEx}<
z^+Q)L6t~?4X#_<~_>X3u*5w2J!1e`U@2L{@eMH!S*+zB%+!7Ieg2vL0ptri=JZ>cD
z%y&o+F!)mxX(H(H_>RiCiC$oRpr;?G%K)-pXZe%GB|6K0{Qv=(lApJTGL449Y+Fpy
z5Tz#Az-v8r6dameUH&otBEnz9Q|LjvoY>qhgeBO$+PU9!rQrnD&)1b=gx1@V;@679
z1B6hY!RsfSy}`x^G}LPD+9tHemKcBS#knPoqrIdW?jr)lBD;L+n|M=EYejWw^$j8o
zW!3j%<auu64}YgmY$ml)VJD?_2QW0p|Dy;WW&Y77@vhTCVB_S$epo02^IUUIxm^E@
zeE?~)^F69`7F&{`N-Ry1YDXwqeHBeZp#U{V*XQSc)J!Ns(VY~ERzL}?`~7xBOJ87W
z=m4aPt`KUsR68^lS_50u0CrY8qM0@1AN>R|IXK-5$NEcs{ji`8)WHYs(u}?9ux7Gm
z<M^#<g*DFtZ9HtZ`ZlVD!ntC|rm)&fHiJ7Vo7LqHZ0zmrheeBnxIAVDAFLY>+vLze
zw5Kg~TV&H7GnLa;)Q48z^VP62n754wqW8`<s||ifEguv~I|#b`vnY>Hp7~Gw!yWGc
z)-(N0%v-i~5L>ElE1q^LnQ!rxaSbbZ&s(4)7P9Z1{AROC-dXdORdg8i4)v2|^stFO
z5jNYP2d`$M&l3og$}M4SDy0<Yt&V!JozxY~yav`g2l~lQ0l2)U3K`g?n;^5bZl6GE
z_VinYW2c`dO#S~w#JmH|+C6q2f%V11{bbJ#T;{9V-nb=|RqwhYLh5)0)^<p2RT|sW
zVtGD%8zi_Y?}7E`AW`bTexfUNwyusSb=BxmIJXtW?ZR(oHL_|bO#S~I#N0sd?0n<j
zsT4LQxPG!>4=zhpLiK!|`fqMJqphQ=ja9vGZd=<<^9*fQ%L?zPu3z1<nwKfC;Th^D
zTO8r?LRF2;wpwEiDr)CzX1gjRbUT!t=FM1_f6Rmt{JDpVKr0AreC9|$*{lthSE@w!
zN~@x4y{%K<o}qyxS9Q6Sn|5BpD@hrz&)hD77d`>qs1b-p$qf0&FCh4Hj~zhZ^Mgl0
zD?J19vOYzm#Uk`<oV-P8X*fAnyUBi=f@QY$njPg@XOv8|rv?}awoxD|iLDsz)U=k4
zN26jmCPjo;Tna1Ea3n3o<Ej>v;%ZQgin10L#fJ7A?{VFPdSuUMo7r<>k=y^k(_E<A
Hz%%gwe+uc_

literal 0
HcmV?d00001

diff --git a/org.polarsys.chess.contracts.verificationService/.svn/entries b/org.polarsys.chess.contracts.verificationService/.svn/entries
new file mode 100644
index 000000000..3cacc0b93
--- /dev/null
+++ b/org.polarsys.chess.contracts.verificationService/.svn/entries
@@ -0,0 +1 @@
+12
\ No newline at end of file
diff --git a/org.polarsys.chess.contracts.verificationService/.svn/format b/org.polarsys.chess.contracts.verificationService/.svn/format
new file mode 100644
index 000000000..3cacc0b93
--- /dev/null
+++ b/org.polarsys.chess.contracts.verificationService/.svn/format
@@ -0,0 +1 @@
+12
\ No newline at end of file
diff --git a/org.polarsys.chess.contracts.verificationService/.svn/pristine/15/153f8763f465a7406d5a4ef9fd99d6d9c71eda40.svn-base b/org.polarsys.chess.contracts.verificationService/.svn/pristine/15/153f8763f465a7406d5a4ef9fd99d6d9c71eda40.svn-base
new file mode 100644
index 000000000..b8eb2aafc
--- /dev/null
+++ b/org.polarsys.chess.contracts.verificationService/.svn/pristine/15/153f8763f465a7406d5a4ef9fd99d6d9c71eda40.svn-base
@@ -0,0 +1,221 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<?eclipse version="3.4"?>
+<plugin>
+   <extension
+         point="org.eclipse.ui.menus">
+      <menuContribution
+            allPopups="false"            
+            locationURI="popup:org.eclipse.gmf.runtime.diagram.ui.DiagramEditorContextMenu?after=filtersMenu">
+              <menu
+               label="AMASS"
+               id="org.eclipse.ui.main.diagramEditorMenu.AMASS">
+             <menu
+               label="Basic Operations">
+            <command
+                  commandId="org.polarsys.chess.verificationService.commands.ExportModelToFileCommand"
+                  style="push">
+            </command>
+            </menu>
+             <menu
+                   id="org.eclipse.ui.main.diagramEditorMenu.AMASS.validation"
+                   label="Validation">
+                <command
+                      commandId="org.polarsys.chess.verificationService.commands.CheckValidationPropertyCommand2"
+                      style="push">
+                </command>
+             </menu>
+             <menu
+               label="Functional Verifications"
+               id="org.eclipse.ui.main.diagramEditorMenu.AMASS.funcVer">    
+            <command
+                  commandId="org.polarsys.chess.verificationService.commands.ContractRefinementCommand"
+                  style="push">
+            </command>
+            <command
+                  commandId="org.polarsys.chess.verificationService.commands.ContractImplementationCommand"
+                  style="push">
+            </command>           
+             <command
+                  commandId="org.polarsys.chess.verificationService.commands.ModelCheckingCommand2"
+                  style="push">
+            </command>
+             </menu>
+              <menu
+               label="Safety Analysis">
+               </menu>
+         </menu>        
+      </menuContribution>
+      <menuContribution
+            allPopups="false"            
+            locationURI="popup:org.eclipse.papyrus.views.modelexplorer.modelexplorer.popup">
+            <menu
+               label="AMASS"
+               id="org.eclipse.ui.main.diagramEditorMenu.AMASS">
+               </menu>
+          <!--<menu
+               label="AMASS"
+               id="org.eclipse.ui.main.modelExplorerMenu.AMASS">
+             <menu
+               label="Basic Operations">
+            <command
+                  commandId="org.polarsys.chess.verificationService.commands.ExportModelToFileCommand"
+                  style="push">
+            </command>
+            </menu>
+             <menu
+               label="Functional Verifications"
+               id="org.eclipse.ui.main.modelExplorerMenu.AMASS.funcVer">    
+            <command
+                  commandId="org.polarsys.chess.verificationService.commands.ContractRefinementCommand"
+                  style="push">
+            </command>
+            <command
+                  commandId="org.polarsys.chess.verificationService.commands.ContractImplementationCommand"
+                  style="push">
+            </command>           
+            <command
+                  commandId="org.polarsys.chess.verificationService.commands.CheckValidationPropertyCommand2"
+                  style="push">
+            </command>
+             <command
+                  commandId="org.polarsys.chess.verificationService.commands.ModelCheckingCommand2"
+                  style="push">
+            </command>
+             </menu>
+              <menu
+               label="Safety Analysis">
+               </menu>
+              <menu
+               label="Safety Case">
+               </menu>
+         </menu>       -->  
+      </menuContribution>
+            <menuContribution
+            allPopups="false"            
+            locationURI="menu:org.eclipse.ui.main.menu">
+         <menu
+               label="AMASS"
+               id="org.eclipse.ui.main.menu.AMASS">
+                <menu
+               label="//Debug Operations">       
+             </menu>
+             <menu
+               label="Basic Operations">
+               <menu
+               label="//Debug Operations">
+               <command
+                  commandId="org.polarsys.chess.verificationService.commands.debug.RuntimeErrorsOnFileCommand"
+                  style="push">
+            </command>
+               </menu>
+            <command
+                  commandId="org.polarsys.chess.verificationService.commands.ExportModelToFileCommand"
+                  style="push">
+            </command>
+            </menu>
+             <menu
+                   id="org.eclipse.ui.main.menu.AMASS."
+                   label="Validation">
+                <command
+                      commandId="org.polarsys.chess.verificationService.commands.CheckValidationPropertyCommand2"
+                      style="push">
+                </command>
+                <menu
+                      label="//Debug Validation">
+                   <command
+                         commandId="org.polarsys.chess.verificationService.commands.debug.ModelCheckingOnFileCommand"
+                         style="push">
+                   </command>
+                </menu>
+             </menu>
+             <menu
+               label="Functional Verifications"
+               id="org.eclipse.ui.main.menu.AMASS.funcVer">    
+               <menu
+               label="//Debug Operations">
+               <command
+                  commandId="org.polarsys.chess.verificationService.commands.debug.ContractRefinementOnFileCommand"
+                  style="push">
+            </command>
+            <command
+                  commandId="org.polarsys.chess.verificationService.commands.debug.ContractImplementationOnFileCommand"
+                  style="push">
+            </command>
+            <command
+                  commandId="org.polarsys.chess.verificationService.commands.debug.CheckValidationPropertyOnFileCommand"
+                  style="push">
+            </command>
+               </menu>        
+            <command
+                  commandId="org.polarsys.chess.verificationService.commands.ContractRefinementCommand"
+                  style="push">
+            </command>
+            <command
+                  commandId="org.polarsys.chess.verificationService.commands.ContractImplementationCommand"
+                  style="push">
+            </command>           
+             <command
+                  commandId="org.polarsys.chess.verificationService.commands.ModelCheckingCommand2"
+                  style="push">
+            </command>
+             </menu>
+              <menu
+               label="Safety Analysis">
+               </menu>
+         </menu>        
+      </menuContribution>
+   </extension>
+   <extension
+         point="org.eclipse.ui.commands">
+      <command
+            defaultHandler="org.polarsys.chess.verificationService.commands.ContractRefinementCommand"
+            id="org.polarsys.chess.verificationService.commands.ContractRefinementCommand"
+            name="Check Contract Refinement on selected component">
+      </command>
+      <command
+            defaultHandler="org.polarsys.chess.verificationService.commands.debug.RuntimeErrorsOnFileCommand"
+            id="org.polarsys.chess.verificationService.commands.debug.RuntimeErrorsOnFileCommand"
+            name="Check Grammar on .oss file">
+      </command>
+      <command
+            defaultHandler="org.polarsys.chess.verificationService.commands.debug.ContractRefinementOnFileCommand"
+            id="org.polarsys.chess.verificationService.commands.debug.ContractRefinementOnFileCommand"
+            name="Check Contract Refinement on .oss file">
+      </command>
+       <command
+            defaultHandler="org.polarsys.chess.verificationService.commands.debug.ContractImplementationOnFileCommand"
+            			id="org.polarsys.chess.verificationService.commands.debug.ContractImplementationOnFileCommand"
+            name="Check Contract Implementation on .oss and .fmv files">
+      </command>
+      <command
+            defaultHandler="org.polarsys.chess.verificationService.commands.ExportModelToFileCommand"
+            id="org.polarsys.chess.verificationService.commands.ExportModelToFileCommand"
+            name="Export model as .oss file">
+      </command>
+      <command
+            defaultHandler="org.polarsys.chess.verificationService.commands.ContractImplementationCommand"
+            id="org.polarsys.chess.verificationService.commands.ContractImplementationCommand"
+            name="Check Contract Implementation on selected component">
+      </command>
+      <command
+            defaultHandler="org.polarsys.chess.verificationService.commands.ModelCheckingCommand"
+            id="org.polarsys.chess.verificationService.commands.ModelCheckingCommand2"
+            name="Model Checking on selected component">
+      </command>
+      <command
+            defaultHandler="org.polarsys.chess.verificationService.commands.debug.ModelCheckingOnFileCommand"
+            id="org.polarsys.chess.verificationService.commands.debug.ModelCheckingOnFileCommand"
+            name="Model Checking on .smv file">
+      </command>
+      <command
+            defaultHandler="org.polarsys.chess.verificationService.commands.CheckValidationPropertyCommand"
+            id="org.polarsys.chess.verificationService.commands.CheckValidationPropertyCommand2"
+            name="Check Validation Property on selected component">
+      </command>
+      <command
+            defaultHandler="org.polarsys.chess.verificationService.commands.debug.CheckValidationPropertyOnFileCommand"
+            id="org.polarsys.chess.verificationService.commands.debug.CheckValidationPropertyOnFileCommand"
+            name="Check Validation Property on .oss file">
+      </command>
+   </extension> 
+</plugin>
diff --git a/org.polarsys.chess.contracts.verificationService/.svn/pristine/26/26253aedaefb5cbe41fdfbda8424cbd3966369cf.svn-base b/org.polarsys.chess.contracts.verificationService/.svn/pristine/26/26253aedaefb5cbe41fdfbda8424cbd3966369cf.svn-base
new file mode 100644
index 000000000..4a937c946
--- /dev/null
+++ b/org.polarsys.chess.contracts.verificationService/.svn/pristine/26/26253aedaefb5cbe41fdfbda8424cbd3966369cf.svn-base
@@ -0,0 +1,98 @@
+/*******************************************************************************
+ * Copyright (C) 2017 Fondazione Bruno Kessler.
+ * 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:
+ *     Alberto Debiasi - initial API and implementation
+ ******************************************************************************/
+package org.polarsys.chess.verificationService.services;
+
+import java.io.File;
+import java.io.IOException;
+import java.util.ArrayList;
+import java.util.List;
+
+import org.eclipse.core.runtime.IProgressMonitor;
+import org.eclipse.uml2.uml.Class;
+import org.polarsys.chess.contracts.transformations.main.GenerateErrorModel;
+
+import eu.fbk.eclipse.standardtools.exceptions.NoComponentException;
+import eu.fbk.eclipse.standardtools.nuXmvService.utils.NuXmvDirectoryUtil;
+import eu.fbk.eclipse.standardtools.utils.DialogUtil;
+
+/**
+ * 
+ *
+ */
+public class SmvExportService {
+
+	private static SmvExportService smvExportService;
+	
+	public static SmvExportService getInstance() {
+		if (smvExportService == null) {
+			smvExportService = new SmvExportService();
+		}
+		return smvExportService;
+	}
+
+	private static DialogUtil dialogUtil = DialogUtil.getInstance();
+	private static NuXmvDirectoryUtil nuXmvDirectoryUtil = NuXmvDirectoryUtil.getInstance();
+
+	
+
+	public File exportSmv(Class umlSelectedComponent,boolean showPopups, IProgressMonitor monitor)
+			throws Exception {
+		if (umlSelectedComponent == null) {
+			throw new NoComponentException();
+		}
+
+		File smvOutput = new File(nuXmvDirectoryUtil.getSmvFilePath());
+		List<String> args = returnParams(umlSelectedComponent);
+
+		exportSmv(umlSelectedComponent, smvOutput, args, showPopups,monitor);
+
+		return new File(smvOutput + "/" + getSmvFileName(umlSelectedComponent)+".smv");
+	}
+	
+
+	private List<String> returnParams(Class umlSelectedComponent) {
+		String systemQN = umlSelectedComponent.getQualifiedName();
+		final List<String> args = new ArrayList<String>();
+		args.add(systemQN);
+		String systemName = systemQN.substring(systemQN.lastIndexOf("::") + 2);
+		args.add(systemName);
+		args.add(umlSelectedComponent.getName());
+
+		return args;
+	}
+
+	private String getSmvFileName(Class umlSelectedComponent) {
+	//	String systemQN = umlSelectedComponent.getQualifiedName();
+	//	String systemName = systemQN.substring(systemQN.lastIndexOf("::") + 2);
+	//	return umlSelectedComponent.getModel().getName() + "_" + systemName + ".smv";
+		return umlSelectedComponent.getName();
+	}
+
+	private void exportSmv(Class umlSelectedComponent, File targetDir, List<String> args, boolean showPopups, IProgressMonitor monitor)
+			throws IOException {
+		monitor.beginTask("operation in progress ...", 3);
+		monitor.subTask("transforming...");
+
+		for (String s : args) {
+			System.out.println("-> " + s);
+		}
+
+		GenerateErrorModel gen = new GenerateErrorModel(umlSelectedComponent, targetDir, args);
+		gen.doGenerate(null);
+		monitor.worked(1);
+
+	
+if(showPopups){
+		dialogUtil.showMessage_ExportBehaviourDone(targetDir.getAbsolutePath());
+}
+		monitor.done();
+	}
+}
diff --git a/org.polarsys.chess.contracts.verificationService/.svn/pristine/29/292ae705f1fda910bf71309d7d53db69b27f0676.svn-base b/org.polarsys.chess.contracts.verificationService/.svn/pristine/29/292ae705f1fda910bf71309d7d53db69b27f0676.svn-base
new file mode 100644
index 000000000..0eecf56bc
--- /dev/null
+++ b/org.polarsys.chess.contracts.verificationService/.svn/pristine/29/292ae705f1fda910bf71309d7d53db69b27f0676.svn-base
@@ -0,0 +1,34 @@
+/*******************************************************************************
+ * Copyright (C) 2017 Fondazione Bruno Kessler.
+ * 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:
+ *     Alberto Debiasi - initial API and implementation
+ ******************************************************************************/
+package org.polarsys.chess.verificationService.commands.debug;
+
+import org.eclipse.core.commands.ExecutionEvent;
+import org.eclipse.core.runtime.IProgressMonitor;
+import org.polarsys.chess.verificationService.model.ChessSystemModel;
+
+import eu.fbk.eclipse.standardtools.ExecOcraCommands.services.OCRAExecService;
+import eu.fbk.eclipse.standardtools.commands.AbstractAsyncJobCommand;
+
+public class ContractImplementationOnFileCommand extends AbstractAsyncJobCommand {
+
+	private OCRAExecService ocraExecService = OCRAExecService.getInstance(ChessSystemModel.getInstance());
+	
+	
+	public ContractImplementationOnFileCommand() {
+		super("Check Implementation on oss file");
+	}
+
+	@Override
+	public void execJobCommand(ExecutionEvent event, IProgressMonitor monitor) throws Exception {
+		ocraExecService.executeCheckContractImplementation(monitor);
+	}
+
+}
diff --git a/org.polarsys.chess.contracts.verificationService/.svn/pristine/30/309f0d801c259abbf51419fecdf69df431d50e3c.svn-base b/org.polarsys.chess.contracts.verificationService/.svn/pristine/30/309f0d801c259abbf51419fecdf69df431d50e3c.svn-base
new file mode 100644
index 000000000..c07b8dde1
--- /dev/null
+++ b/org.polarsys.chess.contracts.verificationService/.svn/pristine/30/309f0d801c259abbf51419fecdf69df431d50e3c.svn-base
@@ -0,0 +1,38 @@
+/*******************************************************************************
+ * Copyright (C) 2017 Fondazione Bruno Kessler.
+ * 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:
+ *     Alberto Debiasi - initial API and implementation
+ ******************************************************************************/
+package org.polarsys.chess.verificationService.commands.debug;
+
+import org.eclipse.core.commands.ExecutionEvent;
+import org.eclipse.core.runtime.IProgressMonitor;
+import org.eclipse.emf.ecore.resource.Resource;
+import eu.fbk.eclipse.standardtools.ModelTranslatorToOcra.services.OCRARuntimeErrorService;
+import eu.fbk.eclipse.standardtools.commands.AbstractAsyncJobCommand;
+import org.polarsys.chess.service.internal.utils.SelectionUtil;
+
+public class RuntimeErrorsOnFileCommand extends AbstractAsyncJobCommand {
+
+	private SelectionUtil chessSelectionUtil = SelectionUtil.getInstance();
+	private OCRARuntimeErrorService ocraRuntimeErrorService = OCRARuntimeErrorService.getInstance();
+	
+	public RuntimeErrorsOnFileCommand() {
+		super("Show Runtime Errors");
+	}
+
+	@Override
+	public void execJobCommand(ExecutionEvent event, IProgressMonitor monitor) throws Exception {
+		
+		boolean showNoErrorPopup = true;
+		
+		Resource modelResource = chessSelectionUtil.getSelectedModelResource();
+		ocraRuntimeErrorService.showRuntimeErrors(modelResource, showNoErrorPopup, monitor);
+	}
+
+}
diff --git a/org.polarsys.chess.contracts.verificationService/.svn/pristine/3c/3cbebaa7f54b0cb886240fc79028e5df4f4d2f71.svn-base b/org.polarsys.chess.contracts.verificationService/.svn/pristine/3c/3cbebaa7f54b0cb886240fc79028e5df4f4d2f71.svn-base
new file mode 100644
index 000000000..6f20375d6
--- /dev/null
+++ b/org.polarsys.chess.contracts.verificationService/.svn/pristine/3c/3cbebaa7f54b0cb886240fc79028e5df4f4d2f71.svn-base
@@ -0,0 +1,5 @@
+source.. = src/
+output.. = bin/
+bin.includes = META-INF/,\
+               .,\
+               plugin.xml
diff --git a/org.polarsys.chess.contracts.verificationService/.svn/pristine/53/5360b20d9ce5e00d821d0025e7486f11a354df15.svn-base b/org.polarsys.chess.contracts.verificationService/.svn/pristine/53/5360b20d9ce5e00d821d0025e7486f11a354df15.svn-base
new file mode 100644
index 000000000..ecccb1f02
--- /dev/null
+++ b/org.polarsys.chess.contracts.verificationService/.svn/pristine/53/5360b20d9ce5e00d821d0025e7486f11a354df15.svn-base
@@ -0,0 +1,53 @@
+/*******************************************************************************
+ * Copyright (C) 2017 Fondazione Bruno Kessler.
+ * 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:
+ *     Alberto Debiasi - initial API and implementation
+ ******************************************************************************/
+/**
+ * 
+ */
+package org.polarsys.chess.verificationService.commands;
+
+import org.eclipse.emf.ecore.resource.Resource;
+import org.eclipse.core.commands.ExecutionEvent;
+import org.eclipse.core.runtime.IProgressMonitor;
+import org.eclipse.uml2.uml.Class;
+import eu.fbk.eclipse.standardtools.ModelTranslatorToOcra.services.OCRATranslatorService;
+import eu.fbk.eclipse.standardtools.commands.AbstractAsyncJobCommand;
+import eu.fbk.eclipse.standardtools.dialogs.MessageTimeModelDialog;
+
+
+import org.polarsys.chess.service.internal.utils.SelectionUtil;
+import org.polarsys.chess.verificationService.model.ChessSystemModel;
+
+/**
+ * 
+ *
+ */
+public class ExportModelToFileCommand extends AbstractAsyncJobCommand {
+
+	private SelectionUtil selectionUtil = SelectionUtil.getInstance();
+	private OCRATranslatorService ocraTranslatorService = OCRATranslatorService.getInstance(ChessSystemModel.getInstance());
+	
+	public ExportModelToFileCommand() {
+		super("Export Model To .Oss File");
+	}
+
+	@Override
+	public void execJobCommand(ExecutionEvent event, IProgressMonitor monitor) throws Exception {
+
+		Class umlSelectedComponent = selectionUtil.getUmlComponentFromSelectedObject(event);
+		Resource umlSelectedResource = umlSelectedComponent.eResource();
+		boolean isDiscreteTime = MessageTimeModelDialog.openQuestion();
+		boolean showPopups = true;
+		
+		ocraTranslatorService.exportModelToOssFile(umlSelectedComponent, umlSelectedResource,
+				isDiscreteTime,showPopups, monitor);
+	}
+
+}
diff --git a/org.polarsys.chess.contracts.verificationService/.svn/pristine/56/569ce383a2581df5d77ca5097f3c37a26da3f6a0.svn-base b/org.polarsys.chess.contracts.verificationService/.svn/pristine/56/569ce383a2581df5d77ca5097f3c37a26da3f6a0.svn-base
new file mode 100644
index 000000000..ed9c3942a
--- /dev/null
+++ b/org.polarsys.chess.contracts.verificationService/.svn/pristine/56/569ce383a2581df5d77ca5097f3c37a26da3f6a0.svn-base
@@ -0,0 +1,41 @@
+/*******************************************************************************
+ * Copyright (C) 2017 Fondazione Bruno Kessler.
+ * 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:
+ *     Alberto Debiasi - initial API and implementation
+ ******************************************************************************/
+package org.polarsys.chess.verificationService.commands.debug;
+
+
+import org.eclipse.core.commands.ExecutionEvent;
+import org.eclipse.core.runtime.IProgressMonitor;
+import org.polarsys.chess.verificationService.model.ChessSystemModel;
+
+import eu.fbk.eclipse.standardtools.ExecOcraCommands.services.OCRAExecService;
+import eu.fbk.eclipse.standardtools.commands.AbstractAsyncJobCommand;
+import eu.fbk.eclipse.standardtools.dialogs.MessageTimeModelDialog;
+
+/**
+ * 
+ *
+ */
+public class CheckValidationPropertyOnFileCommand extends AbstractAsyncJobCommand {
+
+	private OCRAExecService ocraExecService = OCRAExecService.getInstance(ChessSystemModel.getInstance());
+
+	public CheckValidationPropertyOnFileCommand() {
+		super("Check Validation Property");
+	}
+
+	@Override
+	public void execJobCommand(ExecutionEvent event, IProgressMonitor monitor) throws Exception {
+
+		boolean isDiscreteTime = MessageTimeModelDialog.openQuestion();		
+		ocraExecService.executeValidationProperty(isDiscreteTime,monitor);
+	}
+
+}
diff --git a/org.polarsys.chess.contracts.verificationService/.svn/pristine/57/57f4621f24285a6eef9f3ac0caff1ef2ca244c1d.svn-base b/org.polarsys.chess.contracts.verificationService/.svn/pristine/57/57f4621f24285a6eef9f3ac0caff1ef2ca244c1d.svn-base
new file mode 100644
index 000000000..fc13846c8
--- /dev/null
+++ b/org.polarsys.chess.contracts.verificationService/.svn/pristine/57/57f4621f24285a6eef9f3ac0caff1ef2ca244c1d.svn-base
@@ -0,0 +1,38 @@
+Manifest-Version: 1.0
+Bundle-ManifestVersion: 2
+Bundle-Name: org.polarsys.chess.verificationService
+Bundle-SymbolicName: org.polarsys.chess.contracts.verificationService;singleton:=true
+Bundle-Version: 1.0.0.qualifier
+Bundle-RequiredExecutionEnvironment: JavaSE-1.8
+Require-Bundle: org.eclipse.core.resources,
+ org.junit,
+ org.eclipse.papyrus.uml.diagram.composite,
+ org.eclipse.xtext.testing,
+ org.eclipse.emf.edit.ui,
+ org.eclipse.papyrus.uml.tools,
+ org.eclipse.emf.ecore,
+ eu.fbk.eclipse.standardtools.ModelTranslatorToOcra,
+ org.eclipse.swt,
+ org.eclipse.core.jobs,
+ eu.fbk.tools.adapter.core;bundle-version="1.0.0",
+ eu.fbk.tools.adapter.ui;bundle-version="1.0.0",
+ org.polarsys.chess.contracts.transformations;bundle-version="0.9.0",
+ org.eclipse.acceleo.engine;bundle-version="3.6.6",
+ eu.fbk.eclipse.standardtools.utils,
+ eu.fbk.tools.editor.nusmv.ui;bundle-version="1.0.0",
+ eu.fbk.eclipse.standardtools.ExecOcraCommands,
+ eu.fbk.eclipse.standardtools.nuXmvService,
+ org.polarsys.chess.contracts.profile,
+ org.polarsys.chess.core
+Import-Package: eu.fbk.eclipse.standardtools.nuXmvService.dialogs,
+ eu.fbk.eclipse.standardtools.nuXmvService.services,
+ eu.fbk.eclipse.standardtools.nuXmvService.utils,
+ org.apache.log4j;version="1.2.15",
+ org.eclipse.gmf.runtime.diagram.ui.editparts,
+ org.eclipse.papyrus.infra.core.utils,
+ org.eclipse.papyrus.infra.emf.utils,
+ org.polarsys.chess.service.internal.utils
+Bundle-ActivationPolicy: lazy
+Bundle-Vendor: Fondazione Bruno Kessler
+Export-Package: org.polarsys.chess.verificationService.model
+
diff --git a/org.polarsys.chess.contracts.verificationService/.svn/pristine/61/614442f12712d21d864b1f2fdc74f845fed69b39.svn-base b/org.polarsys.chess.contracts.verificationService/.svn/pristine/61/614442f12712d21d864b1f2fdc74f845fed69b39.svn-base
new file mode 100644
index 000000000..dbd0ae513
--- /dev/null
+++ b/org.polarsys.chess.contracts.verificationService/.svn/pristine/61/614442f12712d21d864b1f2fdc74f845fed69b39.svn-base
@@ -0,0 +1,601 @@
+/*******************************************************************************
+ * Copyright (C) 2017 Fondazione Bruno Kessler.
+ * 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:
+ *     Alberto Debiasi - initial API and implementation
+ ******************************************************************************/
+package org.polarsys.chess.verificationService.model;
+
+
+import java.util.List;
+
+import org.eclipse.emf.common.util.BasicEList;
+import org.eclipse.emf.common.util.EList;
+import org.eclipse.papyrus.sysml.portandflows.FlowDirection;
+import org.eclipse.uml2.uml.Class;
+import org.eclipse.uml2.uml.Connector;
+import org.eclipse.uml2.uml.ConnectorEnd;
+import org.eclipse.uml2.uml.Constraint;
+import org.eclipse.uml2.uml.Element;
+import org.eclipse.uml2.uml.Port;
+import org.eclipse.uml2.uml.Property;
+import org.eclipse.uml2.uml.Type;
+import org.polarsys.chess.contracts.profile.chesscontract.ContractProperty;
+import org.polarsys.chess.contracts.profile.chesscontract.ContractRefinement;
+import org.polarsys.chess.contracts.profile.chesscontract.util.ContractEntityUtil;
+import org.polarsys.chess.contracts.profile.chesscontract.util.EntityUtil;
+
+import eu.fbk.eclipse.standardtools.ModelTranslatorToOcra.model.AbstractSystemModel;
+
+public class ChessSystemModel implements AbstractSystemModel {
+
+	private static ChessSystemModel chessToOCRAModelRunner;
+
+	public static ChessSystemModel getInstance() {
+		if (chessToOCRAModelRunner == null) {
+			chessToOCRAModelRunner = new ChessSystemModel();
+		}
+		return chessToOCRAModelRunner;
+	}
+
+	private ContractEntityUtil contractEntityUtil = ContractEntityUtil.getInstance();
+	private EntityUtil entityUtil = EntityUtil.getInstance();
+
+	@Override
+	public String[] getLowerUpperBoundsForRangeType(Object rangeTypePort) {
+		return entityUtil.getLowerUpperBoundsForRangeType((Port) rangeTypePort);
+	}
+
+	
+	
+	@Override
+	public String[] getValuesForEnumeratorType(Object enumTypePort) {
+		return entityUtil.getValuesForEnumeratorType((Port) enumTypePort);
+	}
+
+
+
+	@Override
+	public boolean isRangeType(Object port) {
+		return entityUtil.isRangeAttribute((Property) port);
+	}
+
+	/*
+	 * (non-Javadoc)
+	 * 
+	 * @see
+	 *eu.fbk.eclipse.standardtools.ModelTranslatorToOcra.dsl.run.model.ToolToOCRAModel#
+	 * getContractsOfComponent(java.lang.Object)
+	 */
+	@Override
+	public EList<?> getContractsOfComponent(Object component) {
+		return contractEntityUtil.getContractProperties((Class) component);
+	}
+
+	/*
+	 * (non-Javadoc)
+	 * 
+	 * @see
+	 *eu.fbk.eclipse.standardtools.ModelTranslatorToOcra.dsl.run.model.ToolToOCRAModel#
+	 * getComponentType(java.lang.Object)
+	 */
+	@Override
+	public String getComponentType(Object component) {
+
+if (entityUtil.isBlock((Element) component)) {
+			return "";
+		}
+
+		if (entityUtil.isComponentInstance((Element) component)) {
+			return ((Class) ((Property) component).getType()).getName();
+		}
+
+		return null;
+	}
+
+	/*
+	 * (non-Javadoc)
+	 * 
+	 * @see
+	 *eu.fbk.eclipse.standardtools.ModelTranslatorToOcra.dsl.run.model.ToolToOCRAModel#
+	 * preCompileOperations(java.lang.Object)
+	 */
+	@Override
+	public void preCompileOperations(Object component) {
+	}
+
+	/*
+	 * (non-Javadoc)
+	 * 
+	 * @see
+	 *eu.fbk.eclipse.standardtools.ModelTranslatorToOcra.dsl.run.model.ToolToOCRAModel#
+	 * getPortName(java.lang.Object)
+	 */
+	@Override
+	public String getPortName(Object port) {
+		// return ((Port)port).getQualifiedName().replaceAll("::", "_");
+		return ((Port) port).getName();
+	}
+
+	/*
+	 * (non-Javadoc)
+	 * 
+	 * @see
+	 *eu.fbk.eclipse.standardtools.ModelTranslatorToOcra.dsl.run.model.ToolToOCRAModel#
+	 * getConnectorName(java.lang.Object)
+	 */
+	@Override
+	public String getConnectorName(Object connector) {
+		if (((ConnectorEnd) connector).getRole() != null) {
+			return ((ConnectorEnd) connector).getRole().getName();
+		}
+		return null;
+	}
+
+	/*
+	 * (non-Javadoc)
+	 * 
+	 * @see
+	 *eu.fbk.eclipse.standardtools.ModelTranslatorToOcra.dsl.run.model.ToolToOCRAModel#
+	 * getContractDefinitionsText(java.lang.Object)
+	 */
+	@Override
+	public String getContractDefinitionsText(Object component) throws Exception {
+
+		List<ContractProperty> listCp = null;
+		if (entityUtil.isComponentInstance((Element) component)) {
+			Class componentType = (Class) (((Property) component).getType());
+			listCp = contractEntityUtil.getContractProperties(componentType);
+		} else if ((// entityUtil.isSystem((Element) component)||
+		(entityUtil.isBlock((Element) component)))) {
+			listCp = contractEntityUtil.getContractProperties((Class) component);
+		}
+		String definitions = "";
+		for (ContractProperty contractProperty : listCp) {
+			String currContract = contractEntityUtil.convertContractPropertyInStr(contractProperty);
+			definitions = definitions.concat(currContract);
+		}
+		return definitions;
+	}
+
+	/*
+	 * (non-Javadoc)
+	 * 
+	 * @see
+	 *eu.fbk.eclipse.standardtools.ModelTranslatorToOcra.dsl.run.model.ToolToOCRAModel#
+	 * getOrcaFormulaConstraintText(java.lang.Object)
+	 */
+	@Override
+	public String getOrcaFormulaConstraintText(Object formulaConstraint) {
+		return ((Constraint) formulaConstraint).getSpecification().stringValue();
+	}
+
+	/*
+	 * (non-Javadoc)
+	 * 
+	 * @see
+	 *eu.fbk.eclipse.standardtools.ModelTranslatorToOcra.dsl.run.model.ToolToOCRAModel#
+	 * getFormulaConstraints(java.lang.Object)
+	 */
+	@Override
+	public EList<Constraint> getFormulaConstraints(Object component) {
+		return contractEntityUtil.getConstraintsProperties((Element) component);
+	}
+
+	/*
+	 * (non-Javadoc)
+	 * 
+	 * @see
+	 *eu.fbk.eclipse.standardtools.ModelTranslatorToOcra.dsl.run.model.ToolToOCRAModel#
+	 * getInputPorts(java.lang.Object)
+	 */
+	@Override
+	public EList<Port> getInputPorts(Object component) {
+		return new BasicEList<Port>(entityUtil.getUmlPorts((Element) component, FlowDirection.IN_VALUE));
+	}
+
+	/*
+	 * (non-Javadoc)
+	 * 
+	 * @see
+	 *eu.fbk.eclipse.standardtools.ModelTranslatorToOcra.dsl.run.model.ToolToOCRAModel#
+	 * getParameterName(java.lang.Object)
+	 */
+	@Override
+	public String getParameterName(Object parameter) {
+		return ((Property) parameter).getName();
+	}
+
+	/*
+	 * (non-Javadoc)
+	 * 
+	 * @see
+	 *eu.fbk.eclipse.standardtools.ModelTranslatorToOcra.dsl.run.model.ToolToOCRAModel#
+	 * getParameters(java.lang.Object)
+	 */
+	@Override
+	public EList<Property> getParameters(Object component) {
+		return new BasicEList<Property>(entityUtil.getBooleanAttributesExceptsPorts((Element) component));
+	}
+
+	/*
+	 * (non-Javadoc)
+	 * 
+	 * @see
+	 *eu.fbk.eclipse.standardtools.ModelTranslatorToOcra.dsl.run.model.ToolToOCRAModel#
+	 * getOutputPorts(java.lang.Object)
+	 */
+	@Override
+	public EList<Port> getOutputPorts(Object component) {
+		int direction = FlowDirection.OUT_VALUE;
+		return new BasicEList<Port>(entityUtil.getUmlPorts((Element) component, direction));
+	}
+
+	/*
+	 * (non-Javadoc)
+	 * 
+	 * @see
+	 *eu.fbk.eclipse.standardtools.ModelTranslatorToOcra.dsl.run.model.ToolToOCRAModel#
+	 * getGenericPorts(java.lang.Object)
+	 */
+	@Override
+	public EList<Port> getGenericPorts(Object component) {
+		int direction = FlowDirection.INOUT_VALUE;
+		return new BasicEList<Port>(entityUtil.getUmlPorts((Element) component, direction));
+	}
+
+	/*
+	 * (non-Javadoc)
+	 * 
+	 * @see
+	 *eu.fbk.eclipse.standardtools.ModelTranslatorToOcra.dsl.run.model.ToolToOCRAModel#
+	 * getConnectionSource(java.lang.Object)
+	 */
+	@Override
+	public Object getConnectionSource(Object connection) {
+
+		ConnectorEnd source = ((Connector) connection).getEnds().get(0);
+		ConnectorEnd target = ((Connector) connection).getEnds().get(1);
+		Element sourceOwner = source.getPartWithPort();
+		Element targetOwner = target.getPartWithPort();
+
+		Element sourcePort = source.getRole();
+		Element targetPort = target.getRole();
+
+		int sourceDir = entityUtil.getPortDirection(sourcePort);
+		int targetDir = entityUtil.getPortDirection(targetPort);
+
+		
+		if ((sourceOwner == null) && (sourceDir == FlowDirection.IN_VALUE)) {
+			return source;
+		}
+		if ((targetOwner == null) && (targetDir == FlowDirection.IN_VALUE)) {
+			return target;
+		}
+		if ((sourceOwner != null) && (sourceDir == FlowDirection.OUT_VALUE)) {
+			return source;
+		}
+		if ((targetOwner != null) && (targetDir == FlowDirection.OUT_VALUE)) {
+			return target;
+		}
+
+	
+		return ((Connector) connection).getEnds().get(0);
+	}
+
+	/*
+	 * (non-Javadoc)
+	 * 
+	 * @see
+	 *eu.fbk.eclipse.standardtools.ModelTranslatorToOcra.dsl.run.model.ToolToOCRAModel#
+	 * getConnectionTarget(java.lang.Object)
+	 */
+	@Override
+	public Object getConnectionTarget(Object connection) {
+
+		ConnectorEnd source = ((Connector) connection).getEnds().get(0);
+		ConnectorEnd target = ((Connector) connection).getEnds().get(1);
+		Element sourceOwner = source.getPartWithPort();
+		Element targetOwner = target.getPartWithPort();
+
+	
+		Element sourcePort = source.getRole();
+		Element targetPort = target.getRole();
+
+		int sourceDir = entityUtil.getPortDirection(sourcePort);
+		int targetDir = entityUtil.getPortDirection(targetPort);
+
+	
+		if ((sourceOwner == null) && (sourceDir == FlowDirection.OUT_VALUE)) {
+			return source;
+		}
+		if ((targetOwner == null) && (targetDir == FlowDirection.OUT_VALUE)) {
+			return target;
+		}
+		if ((sourceOwner != null) && (sourceDir == FlowDirection.IN_VALUE)) {
+			return source;
+		}
+		if ((targetOwner != null) && (targetDir == FlowDirection.IN_VALUE)) {
+			return target;
+		}
+
+		return ((Connector) connection).getEnds().get(1);
+	}
+
+	/*
+	 * (non-Javadoc)
+	 * 
+	 * @see
+	 *eu.fbk.eclipse.standardtools.ModelTranslatorToOcra.dsl.run.model.ToolToOCRAModel#
+	 * getConnectionsPorts(java.lang.Object)
+	 */
+	@Override
+	public EList<Connector> getConnectionsPorts(Object component) {
+		if (
+		// entityUtil.isSystem((Element) component)||
+		(entityUtil.isBlock((Element) component))) {
+			return ((Class) component).getOwnedConnectors();
+		} else if (entityUtil.isComponentInstance((Element) component)) {
+			return ((Class) ((Property) component).getType()).getOwnedConnectors();
+		}
+		return null;
+	}
+
+	/*
+	 * (non-Javadoc)
+	 * 
+	 * @see
+	 *eu.fbk.eclipse.standardtools.ModelTranslatorToOcra.dsl.run.model.ToolToOCRAModel#
+	 * getSourceConnectorOwner(java.lang.Object)
+	 */
+	@Override
+	public Object getSourceConnectorOwner(Object connector) {
+		if (connector != null) {
+			return ((ConnectorEnd) connector).getPartWithPort();
+		}
+		return null;
+	}
+
+	/*
+	 * (non-Javadoc)
+	 * 
+	 * @see
+	 *eu.fbk.eclipse.standardtools.ModelTranslatorToOcra.dsl.run.model.ToolToOCRAModel#
+	 * getTargetConnectorOwner(java.lang.Object)
+	 */
+	@Override
+	public Object getTargetConnectorOwner(Object connector) {
+		if (connector != null) {
+			return ((ConnectorEnd) connector).getPartWithPort();
+		}
+		return null;
+	}
+
+	/*
+	 * (non-Javadoc)
+	 * 
+	 * @see
+	 *eu.fbk.eclipse.standardtools.ModelTranslatorToOcra.dsl.run.model.ToolToOCRAModel#
+	 * getComponentInstanceName(java.lang.Object)
+	 */
+	@Override
+	public String getComponentInstanceName(Object component) {
+		if (entityUtil.isComponentInstance((Element) component)) {
+			return ((Property) component).getName().replaceAll("::", "_");
+		}
+		return null;
+	}
+
+	/*
+	 * (non-Javadoc)
+	 * 
+	 * @see
+	 *eu.fbk.eclipse.standardtools.ModelTranslatorToOcra.dsl.run.model.ToolToOCRAModel#
+	 * getContract(java.lang.Object, java.lang.String)
+	 */
+	@Override
+	public Object getContract(Object component, String contractName) {
+		if (entityUtil.isComponentInstance((Element) component)) {
+			Class compClass = ((Class) ((Property) component).getType());
+			return contractEntityUtil.getContractProperty(contractEntityUtil
+					.getUmlContractPropertyOfUmlComponentFromContractPropertyType(compClass, contractName));
+		} else if (
+		// entityUtil.isSystem((Element) component)||
+		(entityUtil.isBlock((Element) component))) {
+			return contractEntityUtil.getContractProperty(contractEntityUtil
+					.getUmlContractPropertyOfUmlComponentFromContractPropertyType((Class) component, contractName));
+		}
+		return null;
+	}
+
+	/*
+	 * (non-Javadoc)
+	 * 
+	 * @see
+	 *eu.fbk.eclipse.standardtools.ModelTranslatorToOcra.dsl.run.model.ToolToOCRAModel#
+	 * getContractName(java.lang.Object)
+	 */
+	@Override
+	public String getContractInstanceName(Object contractProperty) throws Exception {
+		
+		
+		if (contractProperty instanceof ContractProperty) {
+			Type contractType = ((ContractProperty) contractProperty).getBase_Property().getType();
+
+			if (contractType != null) {
+				return ((ContractProperty) contractProperty).getBase_Property().getType().getName();
+			} else {
+				throw new Exception(
+						"The ContractProperty \"" + ((ContractProperty) contractProperty).getBase_Property().getName()
+								+ "\" does not have a type.");
+			}
+		} else {
+			throw new Exception("The element \"" + contractProperty + "\" is not a contract property.");
+		}
+	}
+
+	/*
+	 * (non-Javadoc)
+	 * 
+	 * @see
+	 *eu.fbk.eclipse.standardtools.ModelTranslatorToOcra.dsl.run.model.ToolToOCRAModel#
+	 * getComponentName(java.lang.Object)
+	 */
+	@Override
+	public String getComponentName(Object component) {
+		return entityUtil.getComponentName(component);
+	}
+
+	/*
+	 * (non-Javadoc)
+	 * 
+	 * @see
+	 *eu.fbk.eclipse.standardtools.ModelTranslatorToOcra.dsl.run.model.ToolToOCRAModel#
+	 * getContractRefinements(java.lang.Object)
+	 */
+	@Override
+	public EList<ContractRefinement> getContractRefinements(Object parentContract) {
+		//for(ContractRefinement cr : ((ContractProperty) parentContract).getRefinedBy()){
+		//System.out.println("cr.getContract(): "+cr.getContract().getBase_Property().getName());
+		//}
+		return ((ContractProperty) parentContract).getRefinedBy();
+	}
+
+	
+	
+	@Override
+	public String getContractRefinementName(Object contractRefinement) {
+		// TODO Auto-generated method stub
+		return ((ContractRefinement) contractRefinement).getBase_DataType().getName();
+	}
+
+
+
+	/*
+	 * (non-Javadoc)
+	 * 
+	 * @see
+	 *eu.fbk.eclipse.standardtools.ModelTranslatorToOcra.dsl.run.model.ToolToOCRAModel#
+	 * getComponentOfContractRefinement(java.lang.Object)
+	 */
+	@Override
+	public Object getComponentOfContractRefinement(Object contractRefinement) {
+		return ((ContractRefinement) contractRefinement).getInstance();
+	}
+
+	/*
+	 * (non-Javadoc)
+	 * 
+	 * @see
+	 *eu.fbk.eclipse.standardtools.ModelTranslatorToOcra.dsl.run.model.ToolToOCRAModel#
+	 * getContractOfContractRefinement(java.lang.Object)
+	 */
+	@Override
+	public Object getContractInstanceOfContractRefinement(Object contractRefinement) {
+		return ((ContractRefinement) contractRefinement).getContract();
+	}
+
+	/*
+	 * (non-Javadoc)
+	 * 
+	 * @see
+	 *eu.fbk.eclipse.standardtools.ModelTranslatorToOcra.dsl.run.model.ToolToOCRAModel#
+	 * isBooleanType(java.lang.Object)
+	 */
+	@Override
+	public boolean isBooleanType(Object port) {
+		return entityUtil.isBooleanAttribute((Property) port);
+	}
+
+	/*
+	 * (non-Javadoc)
+	 * 
+	 * @see
+	 *eu.fbk.eclipse.standardtools.ModelTranslatorToOcra.dsl.run.model.ToolToOCRAModel#
+	 * isDoubleType(java.lang.Object)
+	 */
+	@Override
+	public boolean isDoubleType(Object port) {
+		return entityUtil.isDoubleAttribute((Property) port);
+	}
+
+	/*
+	 * (non-Javadoc)
+	 * 
+	 * @see
+	 *eu.fbk.eclipse.standardtools.ModelTranslatorToOcra.dsl.run.model.ToolToOCRAModel#
+	 * isIntType(java.lang.Object)
+	 */
+	@Override
+	public boolean isIntType(Object port) {
+		return entityUtil.isIntegerAttribute((Property) port);
+	}
+
+	/*
+	 * (non-Javadoc)
+	 * 
+	 * @see
+	 *eu.fbk.eclipse.standardtools.ModelTranslatorToOcra.dsl.run.model.ToolToOCRAModel#
+	 * isContinuousType(java.lang.Object)
+	 */
+	@Override
+	public boolean isContinuousType(Object port) {
+		return entityUtil.isContinuousAttribute((Property) port);
+	}
+
+	
+	
+	@Override
+	public boolean isEnumType(Object port) {
+		return entityUtil.isEnumerationAttribute((Property) port);
+	}
+
+	/*
+	 * (non-Javadoc)
+	 * 
+	 * @see
+	 *eu.fbk.eclipse.standardtools.ModelTranslatorToOcra.dsl.run.model.ToolToOCRAModel#
+	 * getSubComponents(java.lang.Object)
+	 */
+	@Override
+	public EList<Property> getSubComponents(Object component) {
+		if ((
+		// entityUtil.isSystem((Element) component)||
+		(entityUtil.isBlock((Element) component)))) {
+			return new BasicEList<Property>(entityUtil.getSubComponents((Class) component));
+		} else if (entityUtil.isComponentInstance((Element) component)) {
+			return new BasicEList<Property>(entityUtil.getSubComponents((Class) ((Property) component).getType()));
+		}
+		return null;
+	}
+
+	/*
+	 * (non-Javadoc)
+	 * 
+	 * @see
+	 *eu.fbk.eclipse.standardtools.ModelTranslatorToOcra.dsl.run.model.ToolToOCRAModel#
+	 * isContractOwnerEqualToComponent(java.lang.Object, java.lang.Object)
+	 */
+	@Override
+	public boolean isContractInstanceOwnerEqualToComponent(Object contract, Object component) {
+		
+		System.out.println("isContractInstanceOwnerEqualToComponent, contractProperty name: "+((ContractProperty) contract).getBase_Property().getName());
+		
+		Element contractOwner = entityUtil
+		.getOwner(((ContractProperty) contract).getBase_Property());
+		
+		System.out.println("contract owner: "+((Class)contractOwner).getName());
+		
+		Element componentType = (((Property) component).getType());
+		
+		System.out.println("component type: "+((Class)componentType).getName());
+		
+		return contractOwner == componentType;
+	}
+
+	
+}
diff --git a/org.polarsys.chess.contracts.verificationService/.svn/pristine/76/7671c586c4f5c3c3d88d7bd92e2726cd227198a3.svn-base b/org.polarsys.chess.contracts.verificationService/.svn/pristine/76/7671c586c4f5c3c3d88d7bd92e2726cd227198a3.svn-base
new file mode 100644
index 000000000..812b5d057
--- /dev/null
+++ b/org.polarsys.chess.contracts.verificationService/.svn/pristine/76/7671c586c4f5c3c3d88d7bd92e2726cd227198a3.svn-base
@@ -0,0 +1,65 @@
+/*******************************************************************************
+ * Copyright (C) 2017 Fondazione Bruno Kessler.
+ * 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:
+ *     Alberto Debiasi - initial API and implementation
+ ******************************************************************************/
+package org.polarsys.chess.verificationService.commands;
+
+import java.io.File;
+
+import org.eclipse.core.commands.ExecutionEvent;
+import org.eclipse.core.runtime.IProgressMonitor;
+import org.eclipse.uml2.uml.Class;
+
+import org.polarsys.chess.service.internal.utils.SelectionUtil;
+import org.polarsys.chess.verificationService.services.SmvExportService;
+
+import eu.fbk.eclipse.standardtools.commands.AbstractAsyncJobCommand;
+import eu.fbk.eclipse.standardtools.nuXmvService.dialogs.NuXmvParametersDialog;
+import eu.fbk.eclipse.standardtools.nuXmvService.services.NuXmvService;
+
+/**
+ * 
+ *
+ */
+public class ModelCheckingCommand extends AbstractAsyncJobCommand {
+
+	private SelectionUtil selectionUtil = SelectionUtil.getInstance();
+	//private OCRADirectoryUtil ocraDirectoryUtil = OCRADirectoryUtil.getInstance();
+	private SmvExportService smvExportService = SmvExportService.getInstance();
+	private NuXmvService nuXmvService = NuXmvService.getInstance();
+
+	public ModelCheckingCommand() {
+		super("Model Checking");
+	}
+
+	@Override
+	public void execJobCommand(ExecutionEvent event, IProgressMonitor monitor) throws Exception {
+
+		Class umlSelectedComponent = selectionUtil.getUmlComponentFromSelectedObject(event);
+		//String smvOutputFilePath = ocraDirectoryUtil.getOSSFilePath();
+		boolean showPopups = false;
+		
+		File smvOutput = smvExportService.exportSmv( umlSelectedComponent,showPopups, monitor);
+
+		if (smvOutput != null) {
+			
+			final NuXmvParametersDialog dialog = new NuXmvParametersDialog();
+			dialog.open();
+
+			if (dialog.goAhead()) {
+				String alg_type = dialog.getAlgorithmType();
+				String check_type = dialog.getCheckType();
+				String property = dialog.getProperty();
+				nuXmvService.modelCheckingCommand(smvOutput, property, alg_type, check_type);
+			}
+
+		}
+	}
+
+}
diff --git a/org.polarsys.chess.contracts.verificationService/.svn/pristine/84/840bb71c03bf83525100c2e64ed14e864bbbba56.svn-base b/org.polarsys.chess.contracts.verificationService/.svn/pristine/84/840bb71c03bf83525100c2e64ed14e864bbbba56.svn-base
new file mode 100644
index 000000000..b862a296d
--- /dev/null
+++ b/org.polarsys.chess.contracts.verificationService/.svn/pristine/84/840bb71c03bf83525100c2e64ed14e864bbbba56.svn-base
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<classpath>
+	<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.8"/>
+	<classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>
+	<classpathentry kind="src" path="src"/>
+	<classpathentry kind="output" path="bin"/>
+</classpath>
diff --git a/org.polarsys.chess.contracts.verificationService/.svn/pristine/8f/8f25c814c31eab84f963678cfa9eefba8b2670c6.svn-base b/org.polarsys.chess.contracts.verificationService/.svn/pristine/8f/8f25c814c31eab84f963678cfa9eefba8b2670c6.svn-base
new file mode 100644
index 000000000..d41e00064
--- /dev/null
+++ b/org.polarsys.chess.contracts.verificationService/.svn/pristine/8f/8f25c814c31eab84f963678cfa9eefba8b2670c6.svn-base
@@ -0,0 +1,57 @@
+/*******************************************************************************
+ * Copyright (C) 2017 Fondazione Bruno Kessler.
+ * 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:
+ *     Alberto Debiasi - initial API and implementation
+ ******************************************************************************/
+package org.polarsys.chess.verificationService.commands;
+
+import java.io.File;
+
+import org.eclipse.core.commands.ExecutionEvent;
+import org.eclipse.core.runtime.IProgressMonitor;
+import org.eclipse.emf.ecore.resource.Resource;
+import org.eclipse.uml2.uml.Class;
+
+import eu.fbk.eclipse.standardtools.ExecOcraCommands.services.OCRAExecService;
+import eu.fbk.eclipse.standardtools.commands.AbstractAsyncJobCommand;
+import eu.fbk.eclipse.standardtools.dialogs.MessageTimeModelDialog;
+
+
+import org.polarsys.chess.service.internal.utils.SelectionUtil;
+import org.polarsys.chess.verificationService.model.ChessSystemModel;
+import org.polarsys.chess.verificationService.services.SmvExportService;
+
+public class ContractImplementationCommand extends AbstractAsyncJobCommand {
+
+	private OCRAExecService ocraExecService = OCRAExecService.getInstance(ChessSystemModel.getInstance());
+	private SelectionUtil selectionUtil = SelectionUtil.getInstance();
+	//private OCRADirectoryUtil ocraDirectoryUtil = OCRADirectoryUtil.getInstance();
+	private SmvExportService nuXmvService = SmvExportService.getInstance();
+	
+	
+	public ContractImplementationCommand() {
+		super("Check Contract Implementation");
+	}
+
+	@Override
+	public void execJobCommand(ExecutionEvent event, IProgressMonitor monitor) throws Exception {
+		
+		Class umlSelectedComponent = selectionUtil.getUmlComponentFromSelectedObject(event);
+		Resource umlSelectedResource = umlSelectedComponent.eResource();
+		boolean isDiscreteTime = MessageTimeModelDialog.openQuestion();
+		boolean showPopups = false;
+		
+		//String smvOutputFilePath = ocraDirectoryUtil.getOSSFilePath();
+		File smvOutput = nuXmvService.exportSmv(umlSelectedComponent, showPopups,monitor);
+		System.out.println("smvOutput: " + smvOutput);
+
+		ocraExecService.executeCheckContractImplementation(umlSelectedComponent,umlSelectedResource, smvOutput, isDiscreteTime,showPopups,monitor);
+
+	}
+
+}
diff --git a/org.polarsys.chess.contracts.verificationService/.svn/pristine/9b/9b734c73f7a70ce16686e9c748f063bd9ad68d30.svn-base b/org.polarsys.chess.contracts.verificationService/.svn/pristine/9b/9b734c73f7a70ce16686e9c748f063bd9ad68d30.svn-base
new file mode 100644
index 000000000..9e56ef6b8
--- /dev/null
+++ b/org.polarsys.chess.contracts.verificationService/.svn/pristine/9b/9b734c73f7a70ce16686e9c748f063bd9ad68d30.svn-base
@@ -0,0 +1,33 @@
+/*******************************************************************************
+ * Copyright (C) 2017 Fondazione Bruno Kessler.
+ * 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:
+ *     Alberto Debiasi - initial API and implementation
+ ******************************************************************************/
+package org.polarsys.chess.verificationService.commands.debug;
+
+import org.eclipse.core.commands.ExecutionEvent;
+import org.eclipse.core.runtime.IProgressMonitor;
+import org.polarsys.chess.verificationService.model.ChessSystemModel;
+
+import eu.fbk.eclipse.standardtools.ExecOcraCommands.services.OCRAExecService;
+import eu.fbk.eclipse.standardtools.commands.AbstractAsyncJobCommand;
+
+public class ContractRefinementOnFileCommand extends AbstractAsyncJobCommand {
+
+	private OCRAExecService ocraExecService = OCRAExecService.getInstance(ChessSystemModel.getInstance());
+	
+	public ContractRefinementOnFileCommand() {
+		super("Contract Refinement on oss file");
+	}
+
+	@Override
+	public void execJobCommand(ExecutionEvent event, IProgressMonitor monitor) throws Exception {
+		ocraExecService.executeCheckContractRefinement(monitor);
+	}
+
+}
diff --git a/org.polarsys.chess.contracts.verificationService/.svn/pristine/b2/b20b87675c00d6ea9f2c3ab64543daac42c3969b.svn-base b/org.polarsys.chess.contracts.verificationService/.svn/pristine/b2/b20b87675c00d6ea9f2c3ab64543daac42c3969b.svn-base
new file mode 100644
index 000000000..8bd3a0c18
--- /dev/null
+++ b/org.polarsys.chess.contracts.verificationService/.svn/pristine/b2/b20b87675c00d6ea9f2c3ab64543daac42c3969b.svn-base
@@ -0,0 +1,28 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+	<name>org.polarsys.chess.contracts.verificationService</name>
+	<comment></comment>
+	<projects>
+	</projects>
+	<buildSpec>
+		<buildCommand>
+			<name>org.eclipse.jdt.core.javabuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+		<buildCommand>
+			<name>org.eclipse.pde.ManifestBuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+		<buildCommand>
+			<name>org.eclipse.pde.SchemaBuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+	</buildSpec>
+	<natures>
+		<nature>org.eclipse.pde.PluginNature</nature>
+		<nature>org.eclipse.jdt.core.javanature</nature>
+	</natures>
+</projectDescription>
diff --git a/org.polarsys.chess.contracts.verificationService/.svn/pristine/c2/c298ec84e18c8a023783082438d43f059bb37194.svn-base b/org.polarsys.chess.contracts.verificationService/.svn/pristine/c2/c298ec84e18c8a023783082438d43f059bb37194.svn-base
new file mode 100644
index 000000000..6e7634da3
--- /dev/null
+++ b/org.polarsys.chess.contracts.verificationService/.svn/pristine/c2/c298ec84e18c8a023783082438d43f059bb37194.svn-base
@@ -0,0 +1,59 @@
+/*******************************************************************************
+ * Copyright (C) 2017 Fondazione Bruno Kessler.
+ * 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:
+ *     Alberto Debiasi - initial API and implementation
+ ******************************************************************************/
+package org.polarsys.chess.verificationService.commands.debug;
+
+import java.io.File;
+
+import org.eclipse.core.commands.ExecutionEvent;
+import org.eclipse.core.runtime.IProgressMonitor;
+
+import eu.fbk.eclipse.standardtools.commands.AbstractAsyncJobCommand;
+import eu.fbk.eclipse.standardtools.nuXmvService.dialogs.NuXmvParametersDialog;
+import eu.fbk.eclipse.standardtools.nuXmvService.services.NuXmvService;
+import eu.fbk.eclipse.standardtools.nuXmvService.utils.NuXmvDialogUtil;
+import eu.fbk.eclipse.standardtools.nuXmvService.utils.NuXmvDirectoryUtil;
+
+/**
+ * 
+ *
+ */
+public class ModelCheckingOnFileCommand extends AbstractAsyncJobCommand {
+
+	
+	private NuXmvService nuXmvService = NuXmvService.getInstance();
+	private NuXmvDialogUtil nuXmvDialogUtil = NuXmvDialogUtil.getInstance();
+	private NuXmvDirectoryUtil nuXmvDirectoryUtil = NuXmvDirectoryUtil.getInstance();
+	
+	public ModelCheckingOnFileCommand() {
+		super("Model Checking");
+	}
+
+	@Override
+	public void execJobCommand(ExecutionEvent event, IProgressMonitor monitor) throws Exception {
+
+		File smvFile = nuXmvDialogUtil.getSmvFileFromFileDialog(nuXmvDirectoryUtil.getSmvFilePath());
+		//boolean isDiscreteTime = MessageTimeModelDialog.openQuestion();
+
+		
+			final NuXmvParametersDialog dialog = new NuXmvParametersDialog();
+			dialog.open();
+
+			if (dialog.goAhead()) {
+				String alg_type = dialog.getAlgorithmType();
+				String check_type = dialog.getCheckType();
+				String property = dialog.getProperty();
+				nuXmvService.modelCheckingCommand(smvFile, property, alg_type, check_type);
+			}
+
+		}
+	
+
+}
diff --git a/org.polarsys.chess.contracts.verificationService/.svn/pristine/e4/e4f19d2e02b7fd0fbd23c9902e136c185630c76e.svn-base b/org.polarsys.chess.contracts.verificationService/.svn/pristine/e4/e4f19d2e02b7fd0fbd23c9902e136c185630c76e.svn-base
new file mode 100644
index 000000000..b20bd16c0
--- /dev/null
+++ b/org.polarsys.chess.contracts.verificationService/.svn/pristine/e4/e4f19d2e02b7fd0fbd23c9902e136c185630c76e.svn-base
@@ -0,0 +1,49 @@
+/*******************************************************************************
+ * Copyright (C) 2017 Fondazione Bruno Kessler.
+ * 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:
+ *     Alberto Debiasi - initial API and implementation
+ ******************************************************************************/
+package org.polarsys.chess.verificationService.commands;
+
+
+
+import org.eclipse.core.commands.ExecutionEvent;
+import org.eclipse.core.runtime.IProgressMonitor;
+import org.eclipse.emf.ecore.resource.Resource;
+import org.eclipse.uml2.uml.Class;
+
+import eu.fbk.eclipse.standardtools.ExecOcraCommands.services.OCRAExecService;
+import eu.fbk.eclipse.standardtools.commands.AbstractAsyncJobCommand;
+import eu.fbk.eclipse.standardtools.dialogs.MessageTimeModelDialog;
+
+
+import org.polarsys.chess.service.internal.utils.SelectionUtil;
+import org.polarsys.chess.verificationService.model.ChessSystemModel;
+
+public class ContractRefinementCommand extends AbstractAsyncJobCommand {
+
+	private OCRAExecService ocraExecService = OCRAExecService.getInstance(ChessSystemModel.getInstance());
+	private SelectionUtil selectionUtil = SelectionUtil.getInstance();
+	
+	public ContractRefinementCommand() {
+		super("Contract Refinement");
+	}
+
+	@Override
+	public void execJobCommand(ExecutionEvent event, IProgressMonitor monitor) throws Exception {
+		
+		Class umlSelectedComponent = selectionUtil.getUmlComponentFromSelectedObject(event);
+		Resource umlSelectedResource = umlSelectedComponent.eResource();
+		boolean isDiscreteTime = MessageTimeModelDialog.openQuestion();
+		boolean showPopups = false;
+		
+		ocraExecService.executeCheckContractRefinement(umlSelectedComponent,umlSelectedResource,isDiscreteTime,showPopups,monitor);
+
+	}
+
+}
diff --git a/org.polarsys.chess.contracts.verificationService/.svn/pristine/ec/ec0d2cf4b73ffb43bb9ccd4924ed13c67056fb6c.svn-base b/org.polarsys.chess.contracts.verificationService/.svn/pristine/ec/ec0d2cf4b73ffb43bb9ccd4924ed13c67056fb6c.svn-base
new file mode 100644
index 000000000..5b87128e9
--- /dev/null
+++ b/org.polarsys.chess.contracts.verificationService/.svn/pristine/ec/ec0d2cf4b73ffb43bb9ccd4924ed13c67056fb6c.svn-base
@@ -0,0 +1,53 @@
+/*******************************************************************************
+ * Copyright (C) 2017 Fondazione Bruno Kessler.
+ * 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:
+ *     Alberto Debiasi - initial API and implementation
+ ******************************************************************************/
+package org.polarsys.chess.verificationService.commands;
+
+
+import org.eclipse.core.commands.ExecutionEvent;
+import org.eclipse.core.runtime.IProgressMonitor;
+import org.eclipse.emf.ecore.resource.Resource;
+import org.eclipse.uml2.uml.Class;
+import org.polarsys.chess.service.internal.utils.SelectionUtil;
+import org.polarsys.chess.verificationService.model.ChessSystemModel;
+
+import eu.fbk.eclipse.standardtools.ExecOcraCommands.services.OCRAExecService;
+import eu.fbk.eclipse.standardtools.commands.AbstractAsyncJobCommand;
+import eu.fbk.eclipse.standardtools.dialogs.MessageTimeModelDialog;
+
+/**
+ * 
+ *
+ */
+public class CheckValidationPropertyCommand extends AbstractAsyncJobCommand {
+
+	private ChessSystemModel chessToOCRAModelTranslator = ChessSystemModel.getInstance();
+	private OCRAExecService ocraExecService = OCRAExecService.getInstance(chessToOCRAModelTranslator);
+	private SelectionUtil selectionUtil = SelectionUtil.getInstance();
+	
+	
+	
+	public CheckValidationPropertyCommand() {
+		super("Check Validation Property");
+	}
+
+	@Override
+	public void execJobCommand(ExecutionEvent event, IProgressMonitor monitor) throws Exception {
+
+		Class umlSelectedComponent = selectionUtil.getUmlComponentFromSelectedObject(event);
+		Resource umlSelectedResource = umlSelectedComponent.eResource();		
+		boolean isDiscreteTime = MessageTimeModelDialog.openQuestion();
+		boolean showPopups = false;
+		
+		ocraExecService.executeValidationProperty(umlSelectedComponent, umlSelectedResource, isDiscreteTime,showPopups, monitor);
+		
+	}
+
+}
diff --git a/org.polarsys.chess.contracts.verificationService/.svn/wc.db b/org.polarsys.chess.contracts.verificationService/.svn/wc.db
new file mode 100644
index 0000000000000000000000000000000000000000..beedcb5f623f082d1f618980f17c294986c21197
GIT binary patch
literal 65536
zcmeHwYjhmfdDy)(z%Bq1e2AhzkRmw{Usw{r&ig@17C~?+AtFH%4^gy*uI5QD1uWoQ
zfD~m}?1H3ynm9da9*tdF$5C9lvHZj7JJsoF>m0>C&2b{TPHO8oj}teIPmkLsaT}*S
zP9NW$o!OavKLC)RxC3H1n7Q}6_kQ<&-~H})zwf(K7tf}aY{ps0%<D^xfI1My=p@4+
zg#G}2$@L`sQt-PAelbGPZ^HlNf@iefeX4Wogzug74@fG8{t5kK`Y-AKO8)>);sHER
zC+q$H9Pf$rjqSxKmA33xvLBrTY$f&Or3Lrz<b}!csp;{FM3VELHYK~FeaHH7F6yQj
zPo6zLHhMNWdTQ#z==8If#wO37pY9%;OpHz^n3;+3i!%vkeByNC1*Rk=bAE!!r)CD{
z7EFCEsT<ived%f}6N&cqLjg}O>BgL$Pm{k#J-E}Or_Lq{xtWy3KpE4CXA+YPRP)^E
z<Ynf$#ARl5X8Qd21mroFn3x`7ib`Ra>BI}uehp*CqLIF*`>SCgUwV?u|KD}GGt$>T
zfM-1fkQPrSE}WklpFTf%IpWpPZ#4Nz+8U%_1~Ur_OR>`(MNnpD#!m-nI!mCCucc6y
zms3_O_Xv*m4GiGif{U#HLhwWtVJ&#i3=+&WfH+d!Vth?Nn<i$?o*iOHCA@F`OC~1J
zk-ldJs$nyzL6QreJ1$U>zGKJmWw#yPK+M`7UAEJvUGgVg)FSc`=xE;_xb;5<w?`j=
z+tw{`+uYL&cT9g7!N2y^#y}eb8y5ppxC5CpSC^I+v&ZA{tev@@0?Hqmx2;q<HDWKv
zv)9w{(Q~6yQ_1YYa>lf6T^CH7<%e}n7KcUMu!c3w<c1ZAQx#J)SVxfw{nPaCA^I=q
zKZXC=R~rLu3_Rc%*h13-_|o~w=aL{@&Lp<?P;@`e%Vu~BhHrsXfqS5>nEob$f9<P{
zfi?yna16w06E`6uc=Z1rM1SW2Z+N@<Z49(A;A3Erp23ZX|LytT$5{LSHU>Tb7-)9>
z&+Gqwg6N-o02<$JLK_2Z3^a-X8q)~n*Z*z$Zxm_mbZrcLKrqlj!(M-z{y!kS*=|M~
z1I=N;rGH|ZgY&{aNB@MnOC82v$5(MTdK*3095^)F6G<ToUp|<<s&fYwS>a4cl}*u+
zOu-Z^Rkaku(s-L!c-gdgUg0!V7rHN?gY%Ze9Aqs=lzGvzbj48=(^gE$;ALBvR7<jT
zlb`JlgO>!EHF(z2Ok1*9)>3)SVp(3Y6;YKPj?)E6v>Z<A>hi!FlECYl#fp-yak?t1
zj%jPAz&R=>n5?GFc7?&)qQhwx51Xfk;#jO>SiE3r8q3?9Ae)>j$pULCvK{?~2i~$x
z-c&eFRVCKZp$Jj3MMIDU%iv^IF=nG-@T$X0rpk#>zO5Uo=xDMaE2`<}nr%CVu0qQd
z)|9*7@xY6`WSAVw^A>5g#><Xv*|NcLiVoYjwmBOKgSSoA;!Q_16v1%}Q7{b6G%Zo%
zMcabb0%%Eg4B6}&^T0!8pf!%BLBW82P1QJow=_$W1eH~JZMHKEo|6PeRb&DBOVSmQ
zl`TmZZAWt~O|xX^5{0uZU1X2!^uTM5stUFWtrjFr6jjA=9A4!ORZ;~@(UliF06g|b
zj$j(Lp+hw!(O^wORbf=Hj;R3lRa=5l;)oXSDBQe{8&)@TR)*HeJZ}R~%`jEV;#F2r
zd0P}_>2T#Gg$y&!;YD7RbQ#dCIf8DortUbL?eM0~i=xR{k!}yXWox?1%c99EHjEuf
z(JfV0Io1(*4G=8NQep5gCJn%iBAGBKVf1PMQP2%pltjVObyI{tHCZ#L-}1p5g2h`R
z2N*OgNNkYq<qezX1xt`@einzpt0HR{Kv=9`II1A=634P8Z_A`(MO&3c11?>X@hcv9
z&J<t_h^nqC&|(?NmNdbH%E%&+H`_zz|Ly1vL}T;@{v4)hk&^Ix^cD0?ilTpq`YcY-
z{{YL>RqA(}<OXYzoTpPb&rNulmjoR~6;Ou+<3r>e3y2cvm={gMf@T2$X{NJ1$Rcy1
zDDn;me1^AxI}qeRw>y@ph>j{sKta$Cg0?NlBCwhRtc2xEUea{Ka3oITG$1d_ku?~2
z0%u9AEtp$_EGDn1wyBCXr<$tH@`9oYKry1ATB6{vFcu8~7@fE!$U;VqXaZ@%$Y)KP
zlVw!~Rs@X8VPyeWq;AQoC9u6g78nw`4OHtuvw^p;1`L0wtfg2IFc@eCuRvZ!-W+6+
z03EiV3OX;ToaIOs@Kjx5HN^pDtmwRK>4GEc?4}?~qb$28$kHeq?hdjv%38aEERC|u
zXpp5*78nV#G|JXGgDj1*s*WH_qx^>svNX(7f-DX538Me&K}iJv{wF?zKZd_bMX8Tb
zzeab{@1cY61DCWp(l>sfnz`cW*z^n-xK5lu4OXzBKZt!{$A&b&T$LpynE(1#mxF12
z-X4O#S~KWe8w1z1F}B_CHpT01Rh=8_j`r={i&ydnw!S&H|9?-BNv;1DOoYv=w)t{)
zdA`)hH)Lo%#Fz{7iy1qcO)aDgrr1MFHub7q_>=L?gNGP~$=Hs$u$%^~V&D8Y_zJ>u
zvRa|BrmfWp{e#gzqG$3y)OV<T*g^k<yxy2sj_cZvb6oahsCqb?G2;uFEAhpJIX#oT
znT-R6vf21`JCkx!roIG-pUN9d#-T6f^|Y0Zk1eE^GP=1mX*;R3J#VL%#`2#=uIbnH
ziV&g5uY%$ItyPz8*~apf__+nko*N?rD3!i)K7A%NXV<MlokqEU2f-5b_<U;K9$vb+
zXfsRpD@*akIX#t*t#Jb;VT?jCiA-i8lf73BcnjzH=UeT8d4lpd;5?h1x|v<F=iNT2
z-s6?g?Lw)E<uBvh{+5TRZ`&K6n!lcSWpN?1<PF|t>*)ikUR5IhyY&ARy6gwf!w$h4
zuKy27Rd&793ABK#(;j5_FjwPy%e2`AkT1tugPg~w+w0Q{r4-i<fM<@h2G|AZ6LXl1
z35s8yY7J<fPq<K@*XL4}%gHWe78dQy(#>*$+XO{jySS>NJf=84zc}aeM7PB9k~Tw0
z&iGoC6tLg&QpoJ2*BW9qhEPK+mI$e<E1(Vw+zJIu^f!ekm$_7CQQH98#r;h|^I1S;
zUb3BFxC4kBy+P^Jr|Ay#G(LeXc-h#MySXLWw{s`HJ>$A1fv?+h<ac|Kv_#&3q?EB2
z7qZE)Gny~dfb-Xx#AIS(EHPE&2X=dOQ?&2E0sM(^7kX%M5qj(`Dl7B>io9XgEiZ2u
z%?yICnC}9YvFC`RU5P|D#4PF=5E7C_pNX`#n5V~-on@F)XV0G^@?P4ROPNc_g*ngr
zEA%dH-^hawy}PlHAu@pfo<M|huGyyNSO!V2>gg-?Tq;|5!?+WB5{8SPZ7E~h$wJw{
zEOh@%$;*5#p>lSnM3w{`*v?Yf%S`IZ)$+F?8J8J!ab1GK7!zx8@p!ElyeJRg+z!u)
z(CgO=qcBXSL!G?M>wVvyuqYkz2n?ky)UmiDW9vJJ-GP-K`$Z!sB=Cdh<;%&Xg_mtu
z9k_0nK4Fm2<$heak+w7LHy6V%Lod%0i8cHR`rG!`3qwVYo`XK=4S7W9RRp@npZ_sc
z@24?_@F1q5{%=bhbvw94zuQz!m$L&8r+&7nY^1N<6^lEi!HhzkTSb1D@~GZb<cApp
z|IRA%gXDl$(|(X~aBJ;{v5t4NRC6L1zTZ+#BC3AArJPa7X}6R!0y&RiOt$t8VsIKn
zXfMX+64Rr@;}d7V<_B%Tm^k!DF~<J-AO37#Z49(A@Q`7^pZ_1SX1AN$#y}ebfB}F0
zr$1Z#gO~6o^r`hgQ7Sh%=zyksn25EhC8naHy|UW1AP860wJ{vSl3$|ezLk4@)de-F
ze+w7?dhWHgD!xITT)6aCb4zPndM!O&xa8&BwKXcasF%x?gX>dh9erN7P$PG`)t0&|
z!OA+ma0zzqr&=wcw%)H$h^zmjE+Xn8^(ys0=x<SRd>9{I54wMlVa6Vf^gY#A%>sg$
zK1?M!_rG1ak8F?j?b(BG_qsaEOJgJe*mK^0JBxIc-pd+#%CKUzf}+w&Ws0?tA)QiQ
zab#P`Is3Xj2b#&!on+>8;>_sG*=c5&E72AeY4Sp4fVyb-kx1X@o@$674LY(l(syEK
zwG;#wNsinfxv?!Dm`ls!sSvIr2wbtF7+ZxDfUvL@Ijn^&328>us(GDk0W(bOVecWg
z3%s%SSYiJEUk@^Uw(H);z{84x(OV=C=ZS1ns=_Q}=>jeA|MS=X^#6WX@z-v58v_qC
z22Nta0FF0D|2AYH`hT)Xu#^5}f`F3{m-h$s_vt^Rze|6c{#}UE`|s&@AztslrQf0d
zIsNPOm+3FkZ$jkW&*hVoENggO+`J2Gco-n|BeVnU4M0~hFzP5(9HdDM<2jI5Q)w{h
zOD)|zwP_a~#%|ctdLU^JSQ!kdXBXaschsmB1zF3ojdbsVttKK|RcZ|`Pv5l*5BTYK
z25pBOtHrtHE2;FzEAw++HljQcqoipb{NnV+a%#>R32YKVxke&YYh|R;<+VE5xeH5}
zbOp4cxD<aoDSmErV*E^EYI@|{8Onc|Zyu?q(6I~e_3K&OtA670Vu$EZrs85ryNFdp
zxKUJ9)Qy;Pde#k^97?~k3Gc?e7~xzmMLK62w2z7$LujQ7ZG+ci&nBj(z)Cc49GWF&
zr6ays>4-@T2S*AYM=BVY;&h>R2V?$F#A(zydvo`dkN=H6XMpY2!U$-VQhGM!TISs_
zk7x9xrC&b|@Q9HxA%mw?xbX_yj!1AjO#F4865w{6hnvR1EzZL2SR8I6B*)+o+?1nm
zlZpOIIs!M5Snvx^!0iBu)%_tEZcprkn+h#PLnCA#5YunL9UZ0LqJI;9KSTd*dY;zl
zi?mAjQ-4OiO^xIK0$a8``X2fWNqA4L(N25|_){s7H)7c9D(#|=J|Dq3u;ptBM3L%g
zEMyiO-SJ@n3$}+XfvstL7=7d;02&M?TLL}i4cI_US5)ooNr0`b5_YjsU=jRnF9G}$
zt->cJ(B<}xMFng<(TPFEZ3Q=xEqo`|o66hSyRQ?bqiV%<Y~Ixg{I~owy=iMF%ol|Z
zRL`bPVsk*Mjk_P|1SXHe9KFkfQ^vHTkPqn0a=Q&4V(T)RQJhR69q0x^H>m$Z57J*m
zC*h}wi`y0HOYE<v?tu{UiOGr4v!ER-Jd)|8<1W1;+Sk{I|Bmfye_Yj>d+RIG`M9rY
z=*L2KgB8?c)y%EHw$8E_!N9LnCFUCQRW$PR4X6S&TBztCoT_I=m`@$p5E8Si>!}j&
z58@C)Vz*Z?`I=w24vM?0b|!ES8DjD;mlk}JKCl-ojVuo)ie;vV`IdTiVlaJ$oK?UB
z<>vfcDh;-0dgh89GAzs+8(N@TEUUKvso2`ge+wrgTwU-D)xf(Vot*=#G%H!;>H;Qg
zdUlBzE+&chKmn%&{V)k8O&#j#n^F=fA_)!*b|$UQ`8_toq|$&MIE%qbk|q}nFT=XP
ziWZ4OjNkj9&1^!g``XTEU#t)35}rMxJ2I1bb42%fw>NN0&U6T;Bj$+Si1t*h#fFF_
z#*?9{zVKM2FSZxo^a_Vo=1-kCcUtnF_ju*|hLHaIB%~n)`+qZoVF#iZMZJqCipT<J
zm^ubNKtDr&l%Az8(4VHCr1wxiq~4^C<9~>^qSu>X3JoXCZH?k=t5aSpqCve`GPi?N
zs5;}X=~1+r3e}ogbB~frwK%!9RH=&dG4$%e4Tv8^q~5=m8;IgtIdDj5ML>wV5@Rcv
z^7e;IWG|@Dq1+)-A@IexpA{+|Rpnc#h$s5L?f4L)Ch6a&j?mN8x4|0rZ}7+H7`}kN
zg}+FB93P_Jrf*Td1_>Y5>nMF0=Yy13tYtwU2o?e;u!6-Ik}a7eBn5;OQ6M&lzCB2)
z%Zj425Hf<*AsT?FIU0E48=N6PPyz@Np>GS4Dy-~ShHV-UW<X*&NfJdzmlWHPC56>>
zZflU#;CP+@gcv3ggad&{8MaR1W9XbF*{URL36ko%EVHTx!8Uk-H7pwfm$0fM*&0M8
zFa=)f4U$3x0*LaV8MY0vNH~b805K#Wl!0vsIz&^^oXtT}0fK9&8ib+XG)>`6Q?(ry
z;&E`60`V{)8p5U^X}yRpJweiX(OJ5Kr1c`LbOlN4MNNqYN$W*Gi3CaOMKkFPl0v`K
z3{BDzB&`=_gbpRG6EcJflGX_S0r4~p&Q;A2|G)Ot#y}eb4<82n{lAB=<?R-?G0?^U
z(f@TK*hgTgZt6+u>onOpsBztXzAxIhe?R`j$6Uo-L917Ic)Un~S9lFdJf>-PT-SyT
zPQI+B$OG5g3fj7YsTa{Fl`HNhyt5g@wsmD1JmS<_RXtZx^9HIb+ezln&@9v!DnPC>
zpH7lAU$cgi5_f;s58uUwuaYBBU6q*&%zv9NF@N_{fbOSo=x0T(80f-UP~_&i`lEfq
zew=&G(@Pb4I|;Uha4ISsYwGEL_gB`A6~6l!h^DIWk|{XsmZ7#pRTg_`cXa0fobuUw
zJ!Rj>>)cL_P9=gT<W=DL@x-OP5-v#+Fr!n<RN`!6Y??XBoS8g-j!8p+kSufQS@1_M
zs0x{<7&bS(C%W^<5xkNLiWr-jB<{%hQoKJZ6y$xWRu)ttU0&dzSFLlSFAN4M%TN_b
zHr~sZ=120b?oTmk?`d@6G<+W^9+2d7(VK$*Zw-=fe`;f(je!p+2J-uVUqHAA{|WUQ
z=nEULnfCr@-x1h)=`Y%PId}f~#A%oF4pg37@?6<XR=)A#Z>ELzSaQ>kNB2m5c*S0V
zXct#tzlqEQ$y6FVDVCDqcRq`so*aLMoT*(YAv1agrasuOno3N%=UW%%71#qxTq1@f
z`JK4&se-)1oJu@1KEcdfI86=*U(7(P4+u;K^V2klF<wBpr-H|0;KY%irwYKHDuR82
zNlcv1P4BJLEQo?-Lny=g%_>glHS07?nNUTTtV7K@fA;iRG;6q0v%;|5X00UlMfW_@
zhwn(?CM1^^$-ZPEd`ScCtCGWOsMi<g&jfM)iW^<2FT<5x`#x=Scr=Dbvi{#o!TBG5
zP5*cLKhu8zmVduZf0h0Xhz9mW`VIOQVLxz%zDY0ASLnY5yMt%xG5R>ofu+EH`Z2nf
z?trZAtBrvN5d&RdVFTN9Nb?_5|3UE|WdA|(A4LB_@E>^pf%6|&{~_)_jQ9`3{=<;}
zaLj)=>OaK%he7}0i2rcde>mhn9P}R!_zzF`4+H)K<3H^8ANKhVuKu6GuOaG3aBE-p
z6ay>SeY=U(FU}nxmZ&>VA~-)Ga*T?sFkqA!7_YA0CN&-a!wZ3RZuPK``Kap+N0DA2
z)~$O!^fND%ShqqL`p%1YHl6y>A62n)UCzug94j+rXV=FE$Z7Uq4jYGq5#p=0$qltX
z_CVPG61-?qZM4X%MoVlkM&y4?{T!lx4*v!9i<Cfpi+-^IBFHJb`bqH5TadQQHoSF1
ziXyYya&v{QmLUgYKBx4rN6l-xjpw=^-v!32dLCKDX7Eik$#?0FG@hqmitZbt=LYsd
z^Y>%o0JfTr^XpPMtYozD8peG{`KqqW@83;42B3~5Jn?bD6Fu|)wcv=pCqWbZu+c#L
zxEeo%Q$K)FM*sd#kJsdfVr{}-3x4Re-qrtYNADx>_W3^jP5R%^|Cs(|`Zj$XEC2)h
zzyAmgdLNyx!54mMgBi`Cp$%d*cQb6nj*dAItT$)H-U1~d)r4Z^n=(CXq8K-J1(Mgb
zDW(_l5FH(lU`?;ul*X%#V(|zbu4LI+83r0;B6v^8#=kTfI<g~zcX+n`-bZx!Pz3Ll
zpt`<ylmCC%PYMlej^JL;D*zn=FueniC2;gY2m9e2DZA7!03GnNg2NViVml;**nWl5
z5aYioaLWBY_&@|i`?@0-^+G;S`vFmRVhPa;)E`q*_z&Un@7AF6_5bvb9sr}s++kwd
zIRywT9TW|_C$*fB1dXZWEK@EmA#OQ>vn@JNwOl{M=6Z;^a*Li<t(03NH5T#Pcy0@+
zON;JWt<<HahZh>zU<U7K*p>gWiLi<PoceXp@X2uY2l-j$_0R6t5goN7hgDzkLVN!y
zIQG>(vmy7PEpYZoljncj-7W5M*GhP0v{<IS{UMNPTN!0}v-6^HUxEHxhP-MY*m%oD
z*E<uX8TCb@XR}om*SkQD|L|LH_aE-5C9bP=*6C{?uCE(9^Xq??{?TE2hH!wU2|qX1
z3q&z~>trZr*{E(PQNy!mg|mCg$A8O6tIi}^q<?9B=)b1U;ku4mM!@}~|2mCohW;Bp
z&ao=}N5E_U#oNFA-k*Ktfu;XC==A76gK&m=ogT#sdL=}~>-d;^vJdo7<7=%zEcfp#
z=L>71MLhW!RR3Zt)xW!G2-txJ`oNVFCE@@?d?;g_jqpUj)y3{!MUrp}yx{(Df%<J}
zh6OZwa%fc+04FeazWB+W_rLXOO%}kfyT-1C4lK-))yGAwhyD_J1Oj`&zduEPjk|C^
zmhmb45uC=a;-AJ}z`u$AisGoBr+!3FK+*>({s-)F=5-ui*oCkHWLqaFnQ@>`-tWEe
z)isED9JC^k!hcb$zwv@PxH_0B5ggEgvS<(JU=R!f9V!kKfeu%RD1naDj6{J3n~rUP
zVy%bLKu6a(&IdZSzJW^6(E0^gLBs178wQQQTzsiTol5bVs%Tn>6a8Ng`aC(LM8t1W
zz0@-GUHSyQM8Avv1ThGmhp;aF%_+KE{V-8el^?Mf-J^EGse+B`%~l%)2(gpU05~zN
znR(UUk*d76g|s;UxhmyfGdjGNp|DkXkyn`o%H<-&UxBh#<w9R5D~Li=p&Y@0a-MFk
zPy7vmysLikh^|nCxcVaMNX|%Vawwa2+}k->Tbe>j^X%Lo;YiKv|9%#ZWTHMrb->BL
z-$NwiSiNhbZzGeaF&k;uea{|PF7)Ghz-x_N_dAPmSQ;E5OM_U+(f~rTH^agT<Wi&~
zEMomF2$c6{MNqW~%`5~IS>a4cl}*u+Ou-Z^Rkaku(s-L!c-gdgUg0!V7pgA=F1TCw
zJ^x{))<QrLHsnH}Dhj>ze-5G{Qm^CpF%dJ`S5*w;2DgK%b4?F+zVq4$(0rWGJXb>V
z&>1b!eC<7`2ZruzHlrEZmjsyw(;Z7QZOLX?OND49EXzx_B0_W%j?)E6v>Z;VO8Z@1
zL=X6{s2~2jnzXNMNZPN7M%VtQ6Zaw9N4-lM)G7Q<)xrNTeb`Xpq|!?jBwQgEAzRxm
zE^V4%0=}$RZ8emGIMVYitr453gey5$UQ;3^_c$@fSk;1}iK-MttHw5A#rs;jx{H{+
z{Qo+_ucLo~w_*#wM`_gOX$0|qzXB_D8jc2kvKryP)afqcs^ac4e1~whRlnCbyxrFV
z2kXeN?ArALKnA0ZRv_18huzZv7_=;{0In)y^;`p>pf9KZ^v<nenEW|1`3ohJKZInc
zlmnD1HDeG~Sb>Kz*UFyY{gL`>kAP;Te;Y!YX%=s@yrDQ2>lhX<n3~4&HU}ZmI8~Ab
z)>LG>>hvG|28jMs=vTk?do`zjbwf`7wejfL|L;W9PUHpzrx^TRHF|Hq-|!f?0IUW?
zf(opr8sn%mz2Cmd?uO{=z?CrJO0L5~K14o5fo%qO@m%@fFduhn_jyd{M2V^_q84M2
zHl|L%ZKF&7J?J?ECwrWt{u6bVI*h-Lui|d>HoR=^n(c{z{~ErW_Z@3g;nID<3$0l%
zTI6hZ7<{8^x~?t{e7y*hvt42Ejm{a-Z}@>hZId?@j#E{Mb#z_hM9CHnK^827lUc=>
zjfTNDx-H%Pjt9P8B+J=I7`$z=7H>MDp$Lv+h=O5grfG>9FWMF-m@>pKl^sJiyT&~5
z^`c+Sc80-olHjO{EI6Vp>59n8mZXa|gbB4Y&5~i6t#G!bi|mn|9{73@Ghgfg@Yo+Y
zf(cPgbzN~J(O^wORY`nP$5dd(R&5e&)q!}Uj>66RxTzClbCwQQUQ(diJm>HtuS&XX
zlX?rf$(p+3aJIvnIxmVQXGOX_@bv<7&Qf9Ujk*X?zvY9k6U=iKhru`Ok@<=TzFq)O
zBL7G66`%g^P>1l>;LrB8wiuY*9_~e6<{|nj(1`6A5{!0{b1V=`brmA-nuaB4vMk7&
z>1_V7KS=6?9iH751}}4>2tkH9P-*idGOsF&1`K$|G8NHLMai)(Su+GJ@g)y@y->xo
zTf^WRHLHuHJ@ECy8_#YDgKyMow`;)zUoRx`Y;PF6224>jfiWt&!kRWGL+oQ4SeB?d
ztSrEefNsgEC9s`0eB{&#qddDg44&6`-3I>ZK$pTSz#71)0AZG5NiY=v+Ia=aQRL1~
zdf@AYUY^|)1~0*|umx4nA(k{}Ig+I)CIo`k6bJS+6rGnXU2tTbjU4j8*9+I2U;n>_
z@LO%&e|?f)F)Mnf!r4*l>YaM$1qIXuuziSE_LQgzb~PuE*V3akv1o9?+*7?kjf(qn
zI@$Ae<?wkpRAhMR=Az9k!NDQ%#W_8dj^(A&Mp<K3K|k>&&;=}i{a=3j`?W-VdHo|A
zG}~L1m8Y)!PotxV`W`xpzgCL^ZubxDCa1ySoKidnSKwr_%64+T@!aZ1iVrDlhSyBL
zH!Ag2?e|ExyZ!s=D{QTP=hna9D`6tG^2igr$$5h~x3gryz76_@m?^Hl3&;t9p0E5W
zSHzmO?wT^FY;5HTCLBs2q{Sf2+Q;J>V8#cvM(E+#_4ohxtL)N01!{ikCfpv*YbATI
zMi`!uSN7^@C;;Y<l}0A5M%UX_nb(n>#EAXTU%B-QwV2mE2*VS!KX$w0z;1GcDQx6~
zrxP4mf%AOI{oYrP`%+i>W_qAel|<DZn1?t>pLqGN-n>?;1Gx3~A}B?IH~+67>W47<
zuiOs?urhjt3<P2XQ!;mvflw;u_&Vg(kB3so{&-mB<i_2DUM#ITOm&BMlVgf;Zf^+=
zcLz8ms9Q6%trfP|d!`%*A?Z*JAqkMP2BH8#@dG0yL1n%9A5K7ilN>kt@Ljj}#dgEl
zuo}*pC6x10Ksj;${O9V<cs^e$NxEkARsy$@4Zs==JWkk18`-gy7YBDk_YA}7!X+J4
z-CMG(GuEpc)(Yj^{X)4*|CnMC{A*ur4AjNI?Q=(WgJFP<bIT><m}!b%#(mR(GFq+9
zW7ms{D>2hT{nm=a#SLj4oTq<Sw!pvkwf-2myX6=xbWRY{nx_c;1TlYaA8(C*s`(N=
zpjLmCgPVmL;}c{fnv+HiA*!z1yT)A8zhC*IKd!ZKSMS*(rU5aqz_}V386N#75KgTB
z;Qzpua98Dks;9tYZe^x~swZ2d>b!Az<FWo=Ef-(NTxn{2<gMIR9b3EQqN@$ia&L!b
zXui=c@~Si+IRsI^-Z}W^|Lt?NXue)_?)w_`tKo6u(f_juKl_2D&U@0ZyAls900IKx
zm8lXIaA9>Uz&l&MIEG6(i8LWc2Q$R|=Ku}1t{Dc<s0mJ02GIFQmjV2xNY!Kj>%U94
z3eMUfUS0a{LLmGvpzq>K`1h&v;0LJDpGBW?f7Y6IuJm-E+~gpU-G<2uFtx<A(#Wd5
zHgI+nOMYV?-vkA{zUqRSoQ4a<zqT2Qe{HRbZ?H29rN7b(r7x{<>47U&IrAx$oZSK?
zUt6P+i+Z_Mp<CCm&^jJ-g_gdw4GKNoYD;UFGZjiOw?hd()oKZq{5mq%Q>Hy~O~0-e
z3h@Y>DF07Tzd-H7{~BLfYodP$;oXzITmK=Ly&sfyUwFv<W107Ns>s{_P9r@15K`$n
zHTiB#fVBX`HpMH?m8=C|l~rcaP+j3&BB)pJ?Jb`bAMABNEg_?sH9(_Q{?*q2H{3PA
zj}E_Ba}B_*yCq{Q;;|>SdSYWOoaWd6l!oA6`)XsLaSYr(E$;@01lR~%AUrN)T|3tt
zk8?%gCb-r;-34?j=QEzwT84=mN@L(Q&7=SJ{(s{G|KUz~`<%Kq`~Uv>bfZ$fU%xdY
z{tdPN@3+p=|9=MI&ph1Ydc(E;j-|mO0uJiLD+48qh<(jXuzp`x3E<U)faycJr&F+B
rXyxkr<k^TdK%;KgRTl-De@y%+qQ83Q*;<PNdHvm+TIjRN=!^Y-1FHf4

literal 0
HcmV?d00001

diff --git a/org.polarsys.chess.diagram.ui/.svn/entries b/org.polarsys.chess.diagram.ui/.svn/entries
new file mode 100644
index 000000000..3cacc0b93
--- /dev/null
+++ b/org.polarsys.chess.diagram.ui/.svn/entries
@@ -0,0 +1 @@
+12
\ No newline at end of file
diff --git a/org.polarsys.chess.diagram.ui/.svn/format b/org.polarsys.chess.diagram.ui/.svn/format
new file mode 100644
index 000000000..3cacc0b93
--- /dev/null
+++ b/org.polarsys.chess.diagram.ui/.svn/format
@@ -0,0 +1 @@
+12
\ No newline at end of file
diff --git a/org.polarsys.chess.diagram.ui/.svn/pristine/0d/0d7589da4da60e880836d8cb5c9e21e6d02b0f8e.svn-base b/org.polarsys.chess.diagram.ui/.svn/pristine/0d/0d7589da4da60e880836d8cb5c9e21e6d02b0f8e.svn-base
new file mode 100644
index 000000000..d3df10350
--- /dev/null
+++ b/org.polarsys.chess.diagram.ui/.svn/pristine/0d/0d7589da4da60e880836d8cb5c9e21e6d02b0f8e.svn-base
@@ -0,0 +1,79 @@
+/*******************************************************************************
+ * Copyright (C) 2017 Fondazione Bruno Kessler.
+ * 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:
+ *     Alberto Debiasi - initial API and implementation
+ ******************************************************************************/
+package org.polarsys.chess.diagram.ui.commands;
+
+import org.eclipse.core.commands.ExecutionEvent;
+import org.eclipse.core.runtime.IProgressMonitor;
+import org.eclipse.gmf.runtime.diagram.ui.editparts.GraphicalEditPart;
+import org.polarsys.chess.diagram.ui.docGenerators.CHESSDiagramModel;
+import org.polarsys.chess.diagram.ui.utils.ExportDialogUtils;
+import org.polarsys.chess.utils.SelectionUtil;
+
+import eu.fbk.eclipse.standardtools.commands.AbstractAsyncJobCommand;
+import eu.fbk.eclipse.standardtools.diagram.ui.dialog.ComponentToImageDialog;
+import eu.fbk.eclipse.standardtools.diagram.ui.docGenerators.DiagramGeneratorService;
+import eu.fbk.eclipse.standardtools.utils.DirectoryUtil;
+
+/**
+ * 
+ * @author Alberto
+ */
+public class ExportComponentToImageCommand extends AbstractAsyncJobCommand {
+
+	private SelectionUtil selectionUtil = SelectionUtil.getInstance();
+	private DirectoryUtil directoryUtils = DirectoryUtil.getInstance();
+	private ExportDialogUtils exportDialogUtils = ExportDialogUtils.getInstance();	
+	
+	//private OCRAComponentToImage ocraComponentToImage = OCRAComponentToImage.getInstance();
+	//private DocumentGeneratorService ocraComponentToImage = DocumentGeneratorService.getInstance(CHESSGraphicalModel.getInstance());
+	private DiagramGeneratorService diagramGeneratorService = DiagramGeneratorService.getInstance(CHESSDiagramModel.getInstance());
+	
+	
+	public ExportComponentToImageCommand() {
+		super("Export Component To Image Command");
+	}
+
+	@Override
+	public void execJobCommand(ExecutionEvent event, IProgressMonitor monitor) throws Exception {
+		GraphicalEditPart selectedGraphicalComponent = selectionUtil
+				.getSelectedGraphicalObject(event);
+
+		if (selectedGraphicalComponent != null) {
+
+			final ComponentToImageDialog parameterDialog = exportDialogUtils
+					.getCompiledComponentToImageDialog();
+
+			if (!parameterDialog.goAhead()) {
+				return;
+			}
+
+			String projectDir = directoryUtils.getCurrentProjectDir();
+			String imageName = diagramGeneratorService.getImageName(
+					selectedGraphicalComponent,parameterDialog.getImageFormat()) ;
+
+			String imageFilePath = exportDialogUtils.openImageDialog(projectDir, imageName);
+			if ((imageFilePath == null) || imageFilePath.isEmpty()) {
+				return;
+			}
+
+			diagramGeneratorService.setParametersBeforeDiagramGenerator
+			//setParametersBeforeExport
+			(parameterDialog.getShowPortLabels(),
+					parameterDialog.getAutomaticPortLabelLayout());
+			diagramGeneratorService.createDiagramFile(imageFilePath, selectedGraphicalComponent,monitor);
+			exportDialogUtils.showMessage_ExportDone(imageFilePath);
+		}
+	
+	}
+
+	
+
+}
diff --git a/org.polarsys.chess.diagram.ui/.svn/pristine/0e/0e1b8164879023af12eaa795538c8248348233ac.svn-base b/org.polarsys.chess.diagram.ui/.svn/pristine/0e/0e1b8164879023af12eaa795538c8248348233ac.svn-base
new file mode 100644
index 000000000..7da5289a6
--- /dev/null
+++ b/org.polarsys.chess.diagram.ui/.svn/pristine/0e/0e1b8164879023af12eaa795538c8248348233ac.svn-base
@@ -0,0 +1,497 @@
+/*******************************************************************************
+ * Copyright (C) 2017 Fondazione Bruno Kessler.
+ * 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:
+ *     Alberto Debiasi - initial API and implementation
+ ******************************************************************************/
+package org.polarsys.chess.diagram.ui.docGenerators;
+
+import java.awt.Dimension;
+import java.awt.Point;
+import java.util.ArrayList;
+import java.util.List;
+
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.gmf.runtime.diagram.ui.editparts.GraphicalEditPart;
+import org.eclipse.gmf.runtime.notation.View;
+import org.eclipse.papyrus.sysml.diagram.common.edit.part.BlockPropertyCompositeEditPart;
+import org.eclipse.papyrus.sysml.diagram.common.edit.part.FlowPortAffixedNodeEditPart;
+import org.eclipse.papyrus.sysml.diagram.common.edit.part.StructureCompartmentEditPart;
+import org.eclipse.papyrus.uml.diagram.common.edit.part.ConnectorEditPart;
+import org.eclipse.papyrus.uml.diagram.common.editparts.IUMLEditPart;
+import org.eclipse.papyrus.uml.diagram.composite.custom.edit.parts.CustomPropertyPartEditPartCN;
+import org.eclipse.papyrus.uml.diagram.composite.custom.edit.parts.ResizablePortEditPart;
+import org.eclipse.papyrus.uml.diagram.composite.edit.parts.ClassCompositeCompartmentEditPart;
+import org.eclipse.uml2.uml.Connector;
+import org.eclipse.uml2.uml.Element;
+import org.eclipse.uml2.uml.Port;
+import org.polarsys.chess.contracts.profile.chesscontract.util.EntityUtil;
+
+import eu.fbk.eclipse.standardtools.diagram.ui.layout.EOrientation;
+import eu.fbk.eclipse.standardtools.diagram.ui.layout.EOrientation.Orientation;
+import eu.fbk.eclipse.standardtools.diagram.ui.model.AbstractInternalBlockDiagramModel;
+
+public class CHESSInternalBlockDiagramModel implements AbstractInternalBlockDiagramModel{
+	
+	
+	private static CHESSInternalBlockDiagramModel chessModel;
+	
+	public static CHESSInternalBlockDiagramModel getInstance(){
+		if(chessModel == null){
+			chessModel = new CHESSInternalBlockDiagramModel();
+		}
+		return chessModel;
+	}
+	
+	
+	private EntityUtil entityUtil = EntityUtil.getInstance();
+	
+	@Override
+	public String getGraphicalComponentId(Object graphicalComponent) {
+		Element umlElement = null;
+		/*
+		 * if(graphicalComponent instanceof BlockCompositeEditPart){ umlElement
+		 * = ((BlockCompositeEditPart)graphicalComponent).getUMLElement(); }
+		 * if(graphicalComponent instanceof BlockPropertyCompositeEditPart){
+		 * umlElement =
+		 * ((BlockPropertyCompositeEditPart)graphicalComponent).getUMLElement();
+		 * }
+		 */
+		if (graphicalComponent instanceof IUMLEditPart) {
+			umlElement = ((IUMLEditPart) graphicalComponent).getUMLElement();
+		}
+		return entityUtil.getComponentID(umlElement);
+	}
+
+	@Override
+	public String getGraphicalComponentName(Object graphicalComponent) {
+		EObject component = ((GraphicalEditPart) graphicalComponent).resolveSemanticElement();
+
+		// ((AppliedStereotypeEmptyEditPart)graphicalComponent).get
+
+		return entityUtil.getComponentName(component);
+	}
+
+	@Override
+	public List<GraphicalEditPart> getGraphicalSubComponents(Object graphicalComponent) {
+		List<?> children = ((GraphicalEditPart) graphicalComponent).getChildren();
+		List<GraphicalEditPart> graphicalSubComponent = new ArrayList<GraphicalEditPart>();
+		for (Object child : children) {
+			System.out.println("child: " + child);
+			if (child instanceof StructureCompartmentEditPart) {
+				for (Object componentChild : ((StructureCompartmentEditPart) child).getChildren()) {
+					System.out.println("StructureCompartmentEditPart child: " + componentChild);
+					if (componentChild instanceof BlockPropertyCompositeEditPart) {
+						graphicalSubComponent.add((GraphicalEditPart) componentChild);
+					}
+				}
+			}
+			if (child instanceof ClassCompositeCompartmentEditPart) {
+				for (Object componentChild : ((ClassCompositeCompartmentEditPart) child).getChildren()) {
+					System.out.println("StructureCompartmentEditPart child: " + componentChild);
+					if (componentChild instanceof CustomPropertyPartEditPartCN) {
+						graphicalSubComponent.add((GraphicalEditPart) componentChild);
+					}
+				}
+			}
+		}
+		return graphicalSubComponent;
+	}
+
+	@Override
+	public Object getGraphicalOwnerComponents(Object graphicalComponent) {
+		return ((GraphicalEditPart) graphicalComponent).getParent();
+	}
+
+	@Override
+	public List<?> getGraphicalPorts(Object graphicalComponent) {
+		List<?> children = ((GraphicalEditPart) graphicalComponent).getChildren();
+		List<GraphicalEditPart> graphicalConnectors = new ArrayList<GraphicalEditPart>();
+		for (Object child : children) {
+			if (child instanceof FlowPortAffixedNodeEditPart) {
+				graphicalConnectors.add((GraphicalEditPart) child);
+			}
+			if (child instanceof ResizablePortEditPart) {
+				graphicalConnectors.add((GraphicalEditPart) child);
+			}
+		}
+		return graphicalConnectors;
+	}
+
+	@Override
+	public Object getGraphicalPortOwner(Object port) {
+		return ((GraphicalEditPart) port).getParent();
+	}
+
+	@Override
+	public Dimension getGraphicalComponentDimension(Object component) {
+		org.eclipse.draw2d.geometry.Dimension domension = ((GraphicalEditPart) component).getFigure().getSize();
+		Dimension d = new Dimension(domension.width, domension.height);
+		return d;
+	}
+
+	@Override
+	public Point getGraphicalComponentPosition(Object component) {
+
+		GraphicalEditPart graphicalComponent = (GraphicalEditPart) component;
+
+		int x = 0;
+		int y = 0;
+
+		x = graphicalComponent.getFigure().getBounds().x;
+		y = graphicalComponent.getFigure().getBounds().y;
+
+		printlnGraphicalPosition(graphicalComponent);
+
+		// System.out.println("----------------------------");
+		// System.out.println(graphicalComponent.getLocation());
+		// System.out.println(component);
+		// System.out.println(graphicalComponent.getContentPane().getBounds());
+		// System.out.println(graphicalComponent.getFigure().getBounds());
+		// System.out.println(graphicalComponent.getMainFigure().getBounds());
+		// System.out.println(graphicalComponent.getBorderedFigure().getBounds());
+		// System.out.println(graphicalComponent.getPrimaryShape().getBounds());
+		// System.out.println(graphicalComponent.getPrimaryShape().getLocation());
+
+		Point point = new Point(x, y);
+
+		Point parentPoint = getOwnerPosition(graphicalComponent.getParent());
+
+		System.out.println("parentPoint: " + parentPoint);
+
+		point.x = point.x + parentPoint.x;
+		point.y = point.y + parentPoint.y;
+
+		return point;
+	}
+	
+	private Object printlnGraphicalPosition(Object component) {
+		if (component instanceof GraphicalEditPart) {
+			GraphicalEditPart graphicalComponent = (GraphicalEditPart) component;
+			System.out.println("-------printlnGraphicalPosition------------");
+			System.out.println(graphicalComponent);
+			System.out.println(graphicalComponent.getFigure().getBounds());
+			return printlnGraphicalPosition(graphicalComponent.getParent());
+		}
+		return null;
+	}
+
+	/*
+	 * @Override public Point getGraphicalComponentPosition(Object component) {
+	 * 
+	 * GraphicalEditPart graphicalComponent = (GraphicalEditPart)component;
+	 * 
+	 * int x =0; int y =0; if(!(component instanceof
+	 * StructureCompartmentEditPart)){ x =
+	 * graphicalComponent.getFigure().getBounds().x; y =
+	 * graphicalComponent.getFigure().getBounds().y; }
+	 * 
+	 * 
+	 * System.out.println("----------------------------");
+	 * //System.out.println(graphicalComponent.getLocation());
+	 * System.out.println(component);
+	 * //System.out.println(graphicalComponent.getContentPane().getBounds());
+	 * System.out.println(graphicalComponent.getFigure().getBounds());
+	 * //System.out.println(graphicalComponent.getMainFigure().getBounds());
+	 * //System.out.println(graphicalComponent.getBorderedFigure().getBounds());
+	 * //System.out.println(graphicalComponent.getPrimaryShape().getBounds());
+	 * //System.out.println(graphicalComponent.getPrimaryShape().getLocation());
+	 * 
+	 * 
+	 * Point point = new Point(x, y);
+	 * 
+	 * if(graphicalComponent.getParent() instanceof GraphicalEditPart){ Point
+	 * parentPoint =
+	 * getGraphicalComponentPosition(graphicalComponent.getParent());
+	 * point.x=point.x+parentPoint.x; point.y=point.y+parentPoint.y; } return
+	 * point; }
+	 */
+	
+
+	private Point getOwnerPosition(Object component) {
+
+		if (component instanceof GraphicalEditPart) {
+			GraphicalEditPart graphicalComponent = (GraphicalEditPart) component;
+
+			int x = 0;
+			int y = 0;
+			if (component instanceof StructureCompartmentEditPart) {
+				x = graphicalComponent.getFigure().getBounds().x;
+				y = graphicalComponent.getFigure().getBounds().y;
+				Point point = new Point(x, y);
+				return point;
+			}
+			if (component instanceof ClassCompositeCompartmentEditPart) {
+				x = graphicalComponent.getFigure().getBounds().x;
+				y = graphicalComponent.getFigure().getBounds().y;
+				Point point = new Point(x, y);
+				return point;
+			}
+
+			return getOwnerPosition(graphicalComponent.getParent());
+		} else {
+			return new Point(0, 0);
+		}
+	}
+
+	@Override
+	public boolean isGraphicalPort(Object port) {
+		if (port instanceof FlowPortAffixedNodeEditPart) {
+			return entityUtil.isPort((Element) ((FlowPortAffixedNodeEditPart) port).getUMLElement());
+		}
+		if (port instanceof ResizablePortEditPart) {
+			return entityUtil.isPort((Element) ((ResizablePortEditPart) port).getUMLElement());
+		}
+		return false;
+	}
+
+	@Override
+	public boolean isGraphicalInputPort(Object port) {
+		if (port instanceof FlowPortAffixedNodeEditPart) {
+			return entityUtil.isInputPort((Element) ((FlowPortAffixedNodeEditPart) port).getUMLElement());
+		}
+		if (port instanceof ResizablePortEditPart) {
+			return entityUtil.isInputPort((Element) ((ResizablePortEditPart) port).getUMLElement());
+		}
+		return false;
+	}
+
+	@Override
+	public boolean isGraphicalOutputPort(Object port) {
+		if (port instanceof FlowPortAffixedNodeEditPart) {
+			return entityUtil.isOutputPort((Element) ((FlowPortAffixedNodeEditPart) port).getUMLElement());
+		}
+		if (port instanceof ResizablePortEditPart) {
+			return entityUtil.isOutputPort((Element) ((ResizablePortEditPart) port).getUMLElement());
+		}
+		return false;
+	}
+
+	@Override
+	public String getGraphicalPortName(Object port) {
+		if (port instanceof FlowPortAffixedNodeEditPart) {
+			return ((Port) ((FlowPortAffixedNodeEditPart) port).getUMLElement()).getName();
+		}
+		if (port instanceof ResizablePortEditPart) {
+			return ((Port) ((ResizablePortEditPart) port).getUMLElement()).getName();
+		}
+		return null;
+	}
+
+	
+
+	@Override
+	public Object getGraphicalPortVariableType(Object port) {
+		if (port instanceof FlowPortAffixedNodeEditPart) {
+			return ((Port) ((FlowPortAffixedNodeEditPart) port).getUMLElement()).getType().getName();
+		}
+		if (port instanceof ResizablePortEditPart) {
+			return ((Port) ((ResizablePortEditPart) port).getUMLElement()).getType().getName();
+		}
+		return null;
+	}
+
+	@Override
+	public Point getGraphicalPortPosition(Object port) {
+
+		// org.eclipse.draw2d.geometry.Point p =
+		// ((FlowPortAffixedNodeEditPart)Port).getLocation();
+		// org.eclipse.draw2d.geometry.Point p =
+		// ((GraphicalEditPart)Port).getFigure().getBounds();
+		int x = ((GraphicalEditPart) port).getFigure().getBounds().x;
+		int y = ((GraphicalEditPart) port).getFigure().getBounds().y;
+
+		// System.out.println("port bounds:
+		// "+((FlowPortAffixedNodeEditPart)Port).getFigure().getBounds());
+		// System.out.println("port loc: "+p);
+
+		// Point point = new Point(p.x, p.y);
+		Point point = new Point(x, y);
+
+		// GraphicalEditPart portParent =
+		// (GraphicalEditPart)((GraphicalEditPart)Port).getParent();
+		// Point partentPoint =
+		// getGraphicalComponentPosition(portParent.getParent());
+		Point partentPoint = getOwnerPosition(port);
+
+		point.x = point.x + partentPoint.x;
+		point.y = point.y + partentPoint.y;
+		return point;
+	}
+
+	@Override
+	public Dimension getGraphicalPortDimension(Object port) {
+
+		org.eclipse.draw2d.geometry.Dimension domension = ((GraphicalEditPart) port).getFigure().getSize();
+		Dimension dim = new Dimension(domension.width, domension.height);
+
+		return dim;
+	}
+
+	@Override
+	public EOrientation getGraphicalPortOffsetOrientation(Object port) {
+
+		int or = 0;
+		if (port instanceof FlowPortAffixedNodeEditPart) {
+			or = ((FlowPortAffixedNodeEditPart) port).getBorderItemLocator().getCurrentSideOfParent();
+		}
+		if (port instanceof ResizablePortEditPart) {
+			or = ((ResizablePortEditPart) port).getBorderItemLocator().getCurrentSideOfParent();
+		}
+		System.out.println("or: " + or);
+
+		EOrientation eOrientation = new EOrientation();
+		Point p = getGraphicalPortPosition(port);
+		int offset = 0;
+		Orientation orientation = Orientation.NORTH_VALUE;
+
+		switch (or) {
+		case 1:
+			orientation = Orientation.NORTH_VALUE;
+			offset = p.x;
+			break;
+		case 4:
+			orientation = Orientation.SOUTH_VALUE;
+			offset = p.x;
+			break;
+		case 8:
+			orientation = Orientation.WEST_VALUE;
+			offset = p.y;
+			break;
+		case 16:
+			orientation = Orientation.EAST_VALUE;
+			offset = p.y;
+			break;
+		}
+
+		eOrientation.setOrientation(orientation);
+		eOrientation.setOffset(offset);
+		return eOrientation;
+	}
+
+	@SuppressWarnings("unchecked")
+	@Override
+	public List<?> getPortChannels(Object graphicalComponent) {
+
+		System.out.println("getPortConnections");
+		List<Object> connections = new ArrayList<Object>();
+
+		if (graphicalComponent instanceof GraphicalEditPart) {
+
+			List<?> children = ((GraphicalEditPart) graphicalComponent).getChildren();
+			for (Object child : children) {
+				if (child instanceof FlowPortAffixedNodeEditPart) {
+					GraphicalEditPart graphicalPort = (GraphicalEditPart) child;
+					connections.addAll(graphicalPort.getSourceConnections());
+
+				}
+				if (child instanceof ResizablePortEditPart) {
+					GraphicalEditPart graphicalPort = (GraphicalEditPart) child;
+					connections.addAll(graphicalPort.getSourceConnections());
+
+				}
+			}
+
+			for (Object subComponents : getGraphicalSubComponents(graphicalComponent)) {
+				connections.addAll(getPortChannels(subComponents));
+				/*
+				 * List children
+				 * =((GraphicalEditPart)subComponents).getChildren(); for(Object
+				 * child : children){ if(child instanceof
+				 * FlowPortAffixedNodeEditPart){ GraphicalEditPart graphicalPort
+				 * = (GraphicalEditPart) child;
+				 * System.out.println("child: "+child);
+				 * connections.addAll(graphicalPort.getSourceConnections());
+				 * connections.addAll(graphicalPort.getTargetConnections());
+				 * 
+				 * } }
+				 */
+			}
+
+		}
+		System.out.println("connections.size: " + connections.size());
+
+		return connections;
+	}
+
+	@Override
+	public String getChannelName(Object channel) {
+		if (channel instanceof ConnectorEditPart) {
+			return ((Connector) ((View) ((ConnectorEditPart) channel).getModel()).getElement()).getName();
+		}
+		if (channel instanceof org.eclipse.papyrus.uml.diagram.composite.edit.parts.ConnectorEditPart) {
+			return ((Connector) ((View) ((org.eclipse.papyrus.uml.diagram.composite.edit.parts.ConnectorEditPart) channel)
+					.getModel()).getElement()).getName();
+		}
+		return null;
+	}
+
+	@Override
+	public Object getChannelTargetPort(Object channel) {
+		if (channel instanceof ConnectorEditPart) {
+			return ((ConnectorEditPart) channel).getTarget();
+		}
+		if (channel instanceof org.eclipse.papyrus.uml.diagram.composite.edit.parts.ConnectorEditPart) {
+			return ((org.eclipse.papyrus.uml.diagram.composite.edit.parts.ConnectorEditPart) channel).getTarget();
+		}
+		return null;
+	}
+
+	@Override
+	public Object getChannelSourcePort(Object channel) {
+		if (channel instanceof ConnectorEditPart) {
+			return ((ConnectorEditPart) channel).getSource();
+		}
+		if (channel instanceof org.eclipse.papyrus.uml.diagram.composite.edit.parts.ConnectorEditPart) {
+			return ((org.eclipse.papyrus.uml.diagram.composite.edit.parts.ConnectorEditPart) channel).getSource();
+		}
+		return null;
+	}
+
+	@Override
+	public ArrayList<?> getPortIncomingChannels(Object port) {
+		return null;
+	}
+
+	@Override
+	public ArrayList<?> getPortOutgoingChannels(Object port) {
+		return null;
+	}
+
+	@Override
+	public List<Point> getLayoutChannelPoints(Object channel) {
+		int[] pointList = null;
+		if (channel instanceof ConnectorEditPart) {
+			pointList = ((ConnectorEditPart) channel).getConnectionFigure().getPoints().toIntArray();
+		}
+		if (channel instanceof org.eclipse.papyrus.uml.diagram.composite.edit.parts.ConnectorEditPart) {
+			pointList = ((org.eclipse.papyrus.uml.diagram.composite.edit.parts.ConnectorEditPart) channel)
+					.getConnectionFigure().getPoints().toIntArray();
+		}
+		List<Point> points = new ArrayList<Point>();
+
+		for (int i = 0; i < pointList.length; i = i + 2) {
+			Point p = new Point(pointList[i], pointList[i + 1]);
+			points.add(p);
+		}
+
+		return points;
+	}
+
+	@Override
+	public Object getChannelOwner(Object channel) {
+		return ((GraphicalEditPart) channel).getParent();
+	}
+
+	
+
+	@Override
+	public String getGraphicalPortRange(Object component, Object port) {
+		return "PortRange";
+	}
+	
+}
diff --git a/org.polarsys.chess.diagram.ui/.svn/pristine/1e/1eebefe6058f80658443eda797831536021aca09.svn-base b/org.polarsys.chess.diagram.ui/.svn/pristine/1e/1eebefe6058f80658443eda797831536021aca09.svn-base
new file mode 100644
index 000000000..93d266816
--- /dev/null
+++ b/org.polarsys.chess.diagram.ui/.svn/pristine/1e/1eebefe6058f80658443eda797831536021aca09.svn-base
@@ -0,0 +1,225 @@
+package org.polarsys.chess.diagram.ui.services;
+
+import java.io.File;
+import java.net.MalformedURLException;
+import java.util.Collection;
+import java.util.HashSet;
+import java.util.Set;
+
+import org.eclipse.papyrus.sysml.diagram.common.edit.part.BlockCompositeEditPart;
+import org.eclipse.papyrus.sysml.diagram.internalblock.edit.part.InternalBlockDiagramEditPart;
+import org.eclipse.papyrus.sysml.diagram.blockdefinition.edit.part.BlockDefinitionDiagramEditPart;
+import org.apache.commons.io.FilenameUtils;
+import org.eclipse.core.runtime.IProgressMonitor;
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.emf.ecore.resource.Resource;
+import org.eclipse.gef.EditPart;
+import org.eclipse.gef.RootEditPart;
+import org.eclipse.gmf.runtime.diagram.ui.OffscreenEditPartFactory;
+import org.eclipse.gmf.runtime.notation.Diagram;
+import org.eclipse.papyrus.infra.gmfdiag.common.model.NotationModel;
+import org.eclipse.papyrus.infra.gmfdiag.common.model.NotationUtils;
+import org.eclipse.papyrus.infra.gmfdiag.common.utils.DiagramUtils;
+import org.eclipse.swt.widgets.Shell;
+import org.eclipse.ui.PlatformUI;
+import org.eclipse.uml2.uml.Class;
+
+import eu.fbk.eclipse.standardtools.diagram.ContainterDescriptor;
+import eu.fbk.eclipse.standardtools.diagram.DiagramDescriptor;
+import eu.fbk.eclipse.standardtools.diagram.ui.docGenerators.BlockDefinitionDiagramGeneratorService;
+import eu.fbk.eclipse.standardtools.diagram.ui.docGenerators.InternalBlockDiagramGeneratorService;
+import eu.fbk.eclipse.standardtools.diagram.ui.model.AbstractBlockDefinitionDiagramModel;
+import eu.fbk.eclipse.standardtools.diagram.ui.model.AbstractInternalBlockDiagramModel;
+
+public class CHESSDiagramsGeneratorService {
+	
+	private static CHESSDiagramsGeneratorService instance;
+	
+	final private static String IBD = "InternalBlock"; 
+	final private static String BDD = "BlockDefinition";
+	
+	public static CHESSDiagramsGeneratorService getInstance(AbstractInternalBlockDiagramModel ibdModel,AbstractBlockDefinitionDiagramModel bddModel){
+		if(instance==null){
+			instance = new CHESSDiagramsGeneratorService(ibdModel, bddModel);
+		}
+		return instance;
+	}
+	
+	
+	
+	public CHESSDiagramsGeneratorService(AbstractInternalBlockDiagramModel ibdModel, AbstractBlockDefinitionDiagramModel bddModel) {
+		super();
+		//graphicalModel = graphModel;
+		ibdGeneratorService = InternalBlockDiagramGeneratorService.getInstance(ibdModel);
+		bddGeneratorService = BlockDefinitionDiagramGeneratorService.getInstance(bddModel);
+	}
+
+
+
+	//private static AbstractDiagramModel graphicalModel;	
+	private InternalBlockDiagramGeneratorService ibdGeneratorService;
+	private BlockDefinitionDiagramGeneratorService bddGeneratorService;
+
+	
+	private String directoryName;
+	private String imageExtension;
+	
+
+	
+	public void setParametersBeforeDiagramsGenerator(
+			String directoryName, String imageExtension, 
+			boolean showPortLabels, boolean automaticLabelLayout) {
+		
+		this.directoryName=directoryName;
+		this.imageExtension=imageExtension;
+		
+		
+		ibdGeneratorService.setParametersBeforeDiagramGenerator(showPortLabels, automaticLabelLayout);
+		
+	}
+	
+	public DiagramDescriptor createDiagramWithDescriptor(Diagram diagram, IProgressMonitor monitor){
+		EObject diagramOwner = DiagramUtils.getOwner(diagram);
+		String diagramName = "";
+		String ownerName = null;
+		boolean hasComponentOwner = true;
+		if(diagramOwner instanceof Class){
+		ownerName = ((Class)diagramOwner).getName();
+		diagramName = ownerName+"_"+diagram.getName();
+		}else{
+			hasComponentOwner = false;
+			diagramName = diagram.getName();
+		}
+		
+		//if(diagram.getName().compareTo("Contracts")!=0){
+		createDiagram(diagram,diagramName, monitor);
+		//}
+		return createDiagramDescriptor(diagramName,ownerName,hasComponentOwner );
+	}
+	
+	
+	
+	private void createDiagram(Diagram diagram,String diagramName, IProgressMonitor monitor){
+		Shell shell = PlatformUI.getWorkbench().getActiveWorkbenchWindow().getShell();
+		
+		System.out.println("diagram name: "+diagram.getName());
+		System.out.println("diagram type: "+diagram.getType());
+		
+		EditPart editPart = OffscreenEditPartFactory.getInstance().createDiagramEditPart(diagram, shell);
+
+		RootEditPart root = editPart.getRoot();
+		System.out.println("root: "+root);
+		
+		if(isInternalBlockDiagram(diagram)){
+		InternalBlockDiagramEditPart idb = (InternalBlockDiagramEditPart) root.getChildren().get(0);
+		BlockCompositeEditPart graphicalComponent = (BlockCompositeEditPart)idb.getChildren().get(0);
+		
+	ibdGeneratorService.createDiagramFile(getComponentImageFilePath(diagramName), graphicalComponent, monitor);
+		}else if(isBlockDefinitionDiagram(diagram)){
+			System.out.println("isBlockDefinitionDiagram");
+			BlockDefinitionDiagramEditPart bdd = (BlockDefinitionDiagramEditPart) root.getChildren().get(0);
+			for(Object o : bdd.getChildren()){
+				System.out.println("o: "+o);
+			}
+			
+			bddGeneratorService.createDiagramFile(getComponentImageFilePath(diagramName), bdd, monitor);
+			
+		}
+	}
+	
+	private DiagramDescriptor createDiagramDescriptor(String diagramName, String ownerName, boolean hasComponentOwner){
+		String saveFilePath = getComponentImageFilePath(diagramName);
+		System.out.println("saveFilePath: "+saveFilePath);
+		// diagramGeneratorService.createDiagramFile(saveFilePath, component,
+		// monitor);
+		final DiagramDescriptor diagramDescriptor = //diagramGeneratorService.
+				createDiagramDescriptorWithImageFileUrl(diagramName, saveFilePath,ownerName,hasComponentOwner);
+		return diagramDescriptor;
+	}
+	
+	private DiagramDescriptor createDiagramDescriptorWithImageFileUrl(String diagramName, String saveFilePath,String owner,boolean hasComponentOwner) {
+		DiagramDescriptor diagramDescriptor = new DiagramDescriptor();
+		diagramDescriptor.name = diagramName;
+		diagramDescriptor.hasComponentOwner = hasComponentOwner;
+		if(owner!=null){
+		diagramDescriptor.ownerName = owner;
+		}
+		String diagramFileName;
+		try {
+			diagramFileName = new File(saveFilePath).toURI().toURL().getFile();
+		} catch (MalformedURLException e) {
+			return null;
+		}
+
+		diagramDescriptor.url = FilenameUtils.getName(diagramFileName);
+
+		return diagramDescriptor;
+	}
+	
+	public Collection<Diagram> getDiagrams() {
+		
+		NotationModel notationModel = NotationUtils.getNotationModel();
+		Set<Diagram> diagrams =  getIBD_BDD_Diagrams(notationModel.getResources());
+		System.out.println("diagrams");
+		for (Diagram c : diagrams) {
+			System.out.println(c);			
+		}
+		return diagrams;
+	
+	}
+
+	public Set<Diagram> getDiagrams(Set<Resource> resources){
+		
+		Set<Diagram> diagrams = new HashSet<Diagram>();
+		
+		for (Resource current : resources) {
+			for (EObject element : current.getContents()) {
+				if (element instanceof Diagram) {
+					diagrams.add((Diagram)element);
+					}
+				}
+			}
+		
+		return diagrams;
+	}
+	
+private Set<Diagram> getIBD_BDD_Diagrams(Set<Resource> resources){
+		
+		Set<Diagram> diagrams = new HashSet<Diagram>();
+		
+		for (Resource current : resources) {
+			for (EObject element : current.getContents()) {
+				if (element instanceof Diagram) {
+					Diagram diagram = (Diagram)element;
+					System.out.println("diagram type: "+diagram.getType());
+					
+					if (isBlockDefinitionDiagram(diagram)||isInternalBlockDiagram(diagram)){
+					diagrams.add((Diagram)element);
+					}
+					}
+				}
+			}
+		
+		return diagrams;
+	}
+	
+	
+private boolean isBlockDefinitionDiagram(Diagram diagram){
+	if(diagram.getType().compareTo(BDD)==0){
+		return true;
+	}
+	return false;
+}
+
+private boolean isInternalBlockDiagram(Diagram diagram){
+	if(diagram.getType().compareTo(IBD)==0){
+		return true;
+	}
+	return false;
+}
+	
+	private String getComponentImageFilePath(String fileName) {
+			return directoryName + File.separator + fileName + imageExtension;
+		}
+	
+}
diff --git a/org.polarsys.chess.diagram.ui/.svn/pristine/1f/1f168a040520316d3b229f602d226d665b8caf23.svn-base b/org.polarsys.chess.diagram.ui/.svn/pristine/1f/1f168a040520316d3b229f602d226d665b8caf23.svn-base
new file mode 100644
index 000000000..936a603d8
--- /dev/null
+++ b/org.polarsys.chess.diagram.ui/.svn/pristine/1f/1f168a040520316d3b229f602d226d665b8caf23.svn-base
@@ -0,0 +1,90 @@
+/*******************************************************************************
+ * Copyright (C) 2017 Fondazione Bruno Kessler.
+ * 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:
+ *     Alberto Debiasi - initial API and implementation
+ ******************************************************************************/
+package org.polarsys.chess.diagram.ui.commands;
+
+import org.eclipse.core.commands.ExecutionEvent;
+import org.eclipse.core.runtime.IProgressMonitor;
+import org.eclipse.gmf.runtime.diagram.ui.editparts.GraphicalEditPart;
+import org.polarsys.chess.diagram.ui.docGenerators.CHESSDiagramModel;
+import org.polarsys.chess.diagram.ui.utils.ExportDialogUtils;
+import org.polarsys.chess.service.internal.utils.SelectionUtil;
+
+import eu.fbk.eclipse.standardtools.commands.AbstractAsyncJobCommand;
+import eu.fbk.eclipse.standardtools.diagram.ui.dialog.ModelToDocumentDialog;
+import eu.fbk.eclipse.standardtools.diagram.ui.docGenerators.DocumentGeneratorService;
+import eu.fbk.eclipse.standardtools.utils.DirectoryUtil;
+
+/**
+ * 
+ * @author Alberto
+ */
+public class ExportModelToDocumentCommand extends AbstractAsyncJobCommand {
+
+	public ExportModelToDocumentCommand() {
+		super("Export Model To Document");
+	}
+
+	private SelectionUtil selectionUtil = SelectionUtil.getInstance();
+	private DirectoryUtil directoryUtils = DirectoryUtil.getInstance();
+	private ExportDialogUtils exportDialogUtils = ExportDialogUtils.getInstance();
+	//private OCRAComponentToImage ocraComponentToImage = OCRAComponentToImage.getInstance();
+	private DocumentGeneratorService documentGeneratorService = DocumentGeneratorService.getInstance(CHESSDiagramModel.getInstance());
+	
+	
+	@Override
+	public void execJobCommand(ExecutionEvent event, IProgressMonitor monitor) throws Exception {
+
+		GraphicalEditPart selectedGraphicalComponent = selectionUtil.getSelectedGraphicalObject(event);
+
+		if (selectedGraphicalComponent != null) {
+
+			System.out.println("selectedGraphicalComponent: " + selectedGraphicalComponent);
+
+			ModelToDocumentDialog parameterDialog = exportDialogUtils.getCompiledModelToDocumentDialog();
+
+			if (!parameterDialog.goAhead()) {
+				return;
+			}
+
+			String docFormat = parameterDialog.getDocumentFormat();
+			String imageExtension = ".svg";
+			if (docFormat.equals("tex")) {
+				imageExtension = ".png";
+			}
+	
+			// setShowLeafComponents(showLeafComponents);
+			String outputDirectoryName = exportDialogUtils.getDirectoryNameFromDialog();
+			// setDirectoryName(directoryName);
+			if ((outputDirectoryName == null) || outputDirectoryName.isEmpty()) {
+				return;
+			}
+
+			String currentProjectName = directoryUtils.getCurrentProjectName();
+	
+			documentGeneratorService.setParametersBeforeDocumentGeneration
+			//setParametersBeforeExport
+			(parameterDialog.getShowPortLabels(), parameterDialog.getAutomaticPortLabelLayout(),
+					outputDirectoryName, imageExtension,parameterDialog.getShowLeafComponents());
+
+			// ocraComponentToImage.setXTranslation(150);
+			// ocraComponentToImage.setYTranslation(100);
+
+			documentGeneratorService.createDocumentFile(currentProjectName, docFormat, selectedGraphicalComponent,
+					 monitor);
+
+			exportDialogUtils.showMessage_ExportDone(outputDirectoryName);
+
+		}
+
+	}
+
+
+}
diff --git a/org.polarsys.chess.diagram.ui/.svn/pristine/2f/2f82f1f0c3d4b33f3bf3f5fb36a563dd02d30c22.svn-base b/org.polarsys.chess.diagram.ui/.svn/pristine/2f/2f82f1f0c3d4b33f3bf3f5fb36a563dd02d30c22.svn-base
new file mode 100644
index 000000000..047cc4ddf
--- /dev/null
+++ b/org.polarsys.chess.diagram.ui/.svn/pristine/2f/2f82f1f0c3d4b33f3bf3f5fb36a563dd02d30c22.svn-base
@@ -0,0 +1,28 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+	<name>org.polarsys.chess.diagram.ui</name>
+	<comment></comment>
+	<projects>
+	</projects>
+	<buildSpec>
+		<buildCommand>
+			<name>org.eclipse.jdt.core.javabuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+		<buildCommand>
+			<name>org.eclipse.pde.ManifestBuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+		<buildCommand>
+			<name>org.eclipse.pde.SchemaBuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+	</buildSpec>
+	<natures>
+		<nature>org.eclipse.pde.PluginNature</nature>
+		<nature>org.eclipse.jdt.core.javanature</nature>
+	</natures>
+</projectDescription>
diff --git a/org.polarsys.chess.diagram.ui/.svn/pristine/3a/3a00dcc8bf9f1745d1cc4215f1d5a4a13b0591ac.svn-base b/org.polarsys.chess.diagram.ui/.svn/pristine/3a/3a00dcc8bf9f1745d1cc4215f1d5a4a13b0591ac.svn-base
new file mode 100644
index 000000000..6c02481e3
--- /dev/null
+++ b/org.polarsys.chess.diagram.ui/.svn/pristine/3a/3a00dcc8bf9f1745d1cc4215f1d5a4a13b0591ac.svn-base
@@ -0,0 +1,497 @@
+/*******************************************************************************
+ * Copyright (C) 2017 Fondazione Bruno Kessler.
+ * 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:
+ *     Alberto Debiasi - initial API and implementation
+ ******************************************************************************/
+package org.polarsys.chess.diagram.ui.docGenerators;
+
+import java.awt.Dimension;
+import java.awt.Point;
+import java.util.ArrayList;
+import java.util.List;
+
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.gmf.runtime.diagram.ui.editparts.GraphicalEditPart;
+import org.eclipse.gmf.runtime.notation.View;
+import org.eclipse.papyrus.sysml.diagram.common.edit.part.BlockPropertyCompositeEditPart;
+import org.eclipse.papyrus.sysml.diagram.common.edit.part.FlowPortAffixedNodeEditPart;
+import org.eclipse.papyrus.sysml.diagram.common.edit.part.StructureCompartmentEditPart;
+import org.eclipse.papyrus.uml.diagram.common.edit.part.ConnectorEditPart;
+import org.eclipse.papyrus.uml.diagram.common.editparts.IUMLEditPart;
+import org.eclipse.papyrus.uml.diagram.composite.custom.edit.parts.CustomPropertyPartEditPartCN;
+import org.eclipse.papyrus.uml.diagram.composite.custom.edit.parts.ResizablePortEditPart;
+import org.eclipse.papyrus.uml.diagram.composite.edit.parts.ClassCompositeCompartmentEditPart;
+import org.eclipse.uml2.uml.Connector;
+import org.eclipse.uml2.uml.Element;
+import org.eclipse.uml2.uml.Port;
+import org.polarsys.chess.utils.EntityUtil;
+
+import eu.fbk.eclipse.standardtools.diagram.ui.layout.EOrientation;
+import eu.fbk.eclipse.standardtools.diagram.ui.layout.EOrientation.Orientation;
+import eu.fbk.eclipse.standardtools.diagram.ui.model.AbstractDiagramModel;
+
+public class CHESSDiagramModel implements AbstractDiagramModel{
+	
+	
+	private static CHESSDiagramModel chessModel;
+	
+	public static CHESSDiagramModel getInstance(){
+		if(chessModel == null){
+			chessModel = new CHESSDiagramModel();
+		}
+		return chessModel;
+	}
+	
+	
+	private EntityUtil entityUtil = EntityUtil.getInstance();
+	
+	@Override
+	public String getGraphicalComponentId(Object graphicalComponent) {
+		Element umlElement = null;
+		/*
+		 * if(graphicalComponent instanceof BlockCompositeEditPart){ umlElement
+		 * = ((BlockCompositeEditPart)graphicalComponent).getUMLElement(); }
+		 * if(graphicalComponent instanceof BlockPropertyCompositeEditPart){
+		 * umlElement =
+		 * ((BlockPropertyCompositeEditPart)graphicalComponent).getUMLElement();
+		 * }
+		 */
+		if (graphicalComponent instanceof IUMLEditPart) {
+			umlElement = ((IUMLEditPart) graphicalComponent).getUMLElement();
+		}
+		return entityUtil.getComponentID(umlElement);
+	}
+
+	@Override
+	public String getGraphicalComponentName(Object graphicalComponent) {
+		EObject component = ((GraphicalEditPart) graphicalComponent).resolveSemanticElement();
+
+		// ((AppliedStereotypeEmptyEditPart)graphicalComponent).get
+
+		return entityUtil.getComponentName(component);
+	}
+
+	@Override
+	public List<GraphicalEditPart> getGraphicalSubComponents(Object graphicalComponent) {
+		List<?> children = ((GraphicalEditPart) graphicalComponent).getChildren();
+		List<GraphicalEditPart> graphicalSubComponent = new ArrayList<GraphicalEditPart>();
+		for (Object child : children) {
+			System.out.println("child: " + child);
+			if (child instanceof StructureCompartmentEditPart) {
+				for (Object componentChild : ((StructureCompartmentEditPart) child).getChildren()) {
+					System.out.println("StructureCompartmentEditPart child: " + componentChild);
+					if (componentChild instanceof BlockPropertyCompositeEditPart) {
+						graphicalSubComponent.add((GraphicalEditPart) componentChild);
+					}
+				}
+			}
+			if (child instanceof ClassCompositeCompartmentEditPart) {
+				for (Object componentChild : ((ClassCompositeCompartmentEditPart) child).getChildren()) {
+					System.out.println("StructureCompartmentEditPart child: " + componentChild);
+					if (componentChild instanceof CustomPropertyPartEditPartCN) {
+						graphicalSubComponent.add((GraphicalEditPart) componentChild);
+					}
+				}
+			}
+		}
+		return graphicalSubComponent;
+	}
+
+	@Override
+	public Object getGraphicalOwnerComponents(Object graphicalComponent) {
+		return ((GraphicalEditPart) graphicalComponent).getParent();
+	}
+
+	@Override
+	public List<?> getGraphicalPorts(Object graphicalComponent) {
+		List<?> children = ((GraphicalEditPart) graphicalComponent).getChildren();
+		List<GraphicalEditPart> graphicalConnectors = new ArrayList<GraphicalEditPart>();
+		for (Object child : children) {
+			if (child instanceof FlowPortAffixedNodeEditPart) {
+				graphicalConnectors.add((GraphicalEditPart) child);
+			}
+			if (child instanceof ResizablePortEditPart) {
+				graphicalConnectors.add((GraphicalEditPart) child);
+			}
+		}
+		return graphicalConnectors;
+	}
+
+	@Override
+	public Object getGraphicalPortOwner(Object port) {
+		return ((GraphicalEditPart) port).getParent();
+	}
+
+	@Override
+	public Dimension getGraphicalComponentDimension(Object component) {
+		org.eclipse.draw2d.geometry.Dimension domension = ((GraphicalEditPart) component).getFigure().getSize();
+		Dimension d = new Dimension(domension.width, domension.height);
+		return d;
+	}
+
+	@Override
+	public Point getGraphicalComponentPosition(Object component) {
+
+		GraphicalEditPart graphicalComponent = (GraphicalEditPart) component;
+
+		int x = 0;
+		int y = 0;
+
+		x = graphicalComponent.getFigure().getBounds().x;
+		y = graphicalComponent.getFigure().getBounds().y;
+
+		printlnGraphicalPosition(graphicalComponent);
+
+		// System.out.println("----------------------------");
+		// System.out.println(graphicalComponent.getLocation());
+		// System.out.println(component);
+		// System.out.println(graphicalComponent.getContentPane().getBounds());
+		// System.out.println(graphicalComponent.getFigure().getBounds());
+		// System.out.println(graphicalComponent.getMainFigure().getBounds());
+		// System.out.println(graphicalComponent.getBorderedFigure().getBounds());
+		// System.out.println(graphicalComponent.getPrimaryShape().getBounds());
+		// System.out.println(graphicalComponent.getPrimaryShape().getLocation());
+
+		Point point = new Point(x, y);
+
+		Point parentPoint = getOwnerPosition(graphicalComponent.getParent());
+
+		System.out.println("parentPoint: " + parentPoint);
+
+		point.x = point.x + parentPoint.x;
+		point.y = point.y + parentPoint.y;
+
+		return point;
+	}
+	
+	private Object printlnGraphicalPosition(Object component) {
+		if (component instanceof GraphicalEditPart) {
+			GraphicalEditPart graphicalComponent = (GraphicalEditPart) component;
+			System.out.println("-------printlnGraphicalPosition------------");
+			System.out.println(graphicalComponent);
+			System.out.println(graphicalComponent.getFigure().getBounds());
+			return printlnGraphicalPosition(graphicalComponent.getParent());
+		}
+		return null;
+	}
+
+	/*
+	 * @Override public Point getGraphicalComponentPosition(Object component) {
+	 * 
+	 * GraphicalEditPart graphicalComponent = (GraphicalEditPart)component;
+	 * 
+	 * int x =0; int y =0; if(!(component instanceof
+	 * StructureCompartmentEditPart)){ x =
+	 * graphicalComponent.getFigure().getBounds().x; y =
+	 * graphicalComponent.getFigure().getBounds().y; }
+	 * 
+	 * 
+	 * System.out.println("----------------------------");
+	 * //System.out.println(graphicalComponent.getLocation());
+	 * System.out.println(component);
+	 * //System.out.println(graphicalComponent.getContentPane().getBounds());
+	 * System.out.println(graphicalComponent.getFigure().getBounds());
+	 * //System.out.println(graphicalComponent.getMainFigure().getBounds());
+	 * //System.out.println(graphicalComponent.getBorderedFigure().getBounds());
+	 * //System.out.println(graphicalComponent.getPrimaryShape().getBounds());
+	 * //System.out.println(graphicalComponent.getPrimaryShape().getLocation());
+	 * 
+	 * 
+	 * Point point = new Point(x, y);
+	 * 
+	 * if(graphicalComponent.getParent() instanceof GraphicalEditPart){ Point
+	 * parentPoint =
+	 * getGraphicalComponentPosition(graphicalComponent.getParent());
+	 * point.x=point.x+parentPoint.x; point.y=point.y+parentPoint.y; } return
+	 * point; }
+	 */
+	
+
+	private Point getOwnerPosition(Object component) {
+
+		if (component instanceof GraphicalEditPart) {
+			GraphicalEditPart graphicalComponent = (GraphicalEditPart) component;
+
+			int x = 0;
+			int y = 0;
+			if (component instanceof StructureCompartmentEditPart) {
+				x = graphicalComponent.getFigure().getBounds().x;
+				y = graphicalComponent.getFigure().getBounds().y;
+				Point point = new Point(x, y);
+				return point;
+			}
+			if (component instanceof ClassCompositeCompartmentEditPart) {
+				x = graphicalComponent.getFigure().getBounds().x;
+				y = graphicalComponent.getFigure().getBounds().y;
+				Point point = new Point(x, y);
+				return point;
+			}
+
+			return getOwnerPosition(graphicalComponent.getParent());
+		} else {
+			return new Point(0, 0);
+		}
+	}
+
+	@Override
+	public boolean isGraphicalPort(Object port) {
+		if (port instanceof FlowPortAffixedNodeEditPart) {
+			return entityUtil.isPort((Element) ((FlowPortAffixedNodeEditPart) port).getUMLElement());
+		}
+		if (port instanceof ResizablePortEditPart) {
+			return entityUtil.isPort((Element) ((ResizablePortEditPart) port).getUMLElement());
+		}
+		return false;
+	}
+
+	@Override
+	public boolean isGraphicalInputPort(Object port) {
+		if (port instanceof FlowPortAffixedNodeEditPart) {
+			return entityUtil.isInputPort((Element) ((FlowPortAffixedNodeEditPart) port).getUMLElement());
+		}
+		if (port instanceof ResizablePortEditPart) {
+			return entityUtil.isInputPort((Element) ((ResizablePortEditPart) port).getUMLElement());
+		}
+		return false;
+	}
+
+	@Override
+	public boolean isGraphicalOutputPort(Object port) {
+		if (port instanceof FlowPortAffixedNodeEditPart) {
+			return entityUtil.isOutputPort((Element) ((FlowPortAffixedNodeEditPart) port).getUMLElement());
+		}
+		if (port instanceof ResizablePortEditPart) {
+			return entityUtil.isOutputPort((Element) ((ResizablePortEditPart) port).getUMLElement());
+		}
+		return false;
+	}
+
+	@Override
+	public String getGraphicalPortName(Object port) {
+		if (port instanceof FlowPortAffixedNodeEditPart) {
+			return ((Port) ((FlowPortAffixedNodeEditPart) port).getUMLElement()).getName();
+		}
+		if (port instanceof ResizablePortEditPart) {
+			return ((Port) ((ResizablePortEditPart) port).getUMLElement()).getName();
+		}
+		return null;
+	}
+
+	
+
+	@Override
+	public Object getGraphicalPortVariableType(Object port) {
+		if (port instanceof FlowPortAffixedNodeEditPart) {
+			return ((Port) ((FlowPortAffixedNodeEditPart) port).getUMLElement()).getType().getName();
+		}
+		if (port instanceof ResizablePortEditPart) {
+			return ((Port) ((ResizablePortEditPart) port).getUMLElement()).getType().getName();
+		}
+		return null;
+	}
+
+	@Override
+	public Point getGraphicalPortPosition(Object port) {
+
+		// org.eclipse.draw2d.geometry.Point p =
+		// ((FlowPortAffixedNodeEditPart)Port).getLocation();
+		// org.eclipse.draw2d.geometry.Point p =
+		// ((GraphicalEditPart)Port).getFigure().getBounds();
+		int x = ((GraphicalEditPart) port).getFigure().getBounds().x;
+		int y = ((GraphicalEditPart) port).getFigure().getBounds().y;
+
+		// System.out.println("port bounds:
+		// "+((FlowPortAffixedNodeEditPart)Port).getFigure().getBounds());
+		// System.out.println("port loc: "+p);
+
+		// Point point = new Point(p.x, p.y);
+		Point point = new Point(x, y);
+
+		// GraphicalEditPart portParent =
+		// (GraphicalEditPart)((GraphicalEditPart)Port).getParent();
+		// Point partentPoint =
+		// getGraphicalComponentPosition(portParent.getParent());
+		Point partentPoint = getOwnerPosition(port);
+
+		point.x = point.x + partentPoint.x;
+		point.y = point.y + partentPoint.y;
+		return point;
+	}
+
+	@Override
+	public Dimension getGraphicalPortDimension(Object port) {
+
+		org.eclipse.draw2d.geometry.Dimension domension = ((GraphicalEditPart) port).getFigure().getSize();
+		Dimension dim = new Dimension(domension.width, domension.height);
+
+		return dim;
+	}
+
+	@Override
+	public EOrientation getGraphicalPortOffsetOrientation(Object port) {
+
+		int or = 0;
+		if (port instanceof FlowPortAffixedNodeEditPart) {
+			or = ((FlowPortAffixedNodeEditPart) port).getBorderItemLocator().getCurrentSideOfParent();
+		}
+		if (port instanceof ResizablePortEditPart) {
+			or = ((ResizablePortEditPart) port).getBorderItemLocator().getCurrentSideOfParent();
+		}
+		System.out.println("or: " + or);
+
+		EOrientation eOrientation = new EOrientation();
+		Point p = getGraphicalPortPosition(port);
+		int offset = 0;
+		Orientation orientation = Orientation.NORTH_VALUE;
+
+		switch (or) {
+		case 1:
+			orientation = Orientation.NORTH_VALUE;
+			offset = p.x;
+			break;
+		case 4:
+			orientation = Orientation.SOUTH_VALUE;
+			offset = p.x;
+			break;
+		case 8:
+			orientation = Orientation.WEST_VALUE;
+			offset = p.y;
+			break;
+		case 16:
+			orientation = Orientation.EAST_VALUE;
+			offset = p.y;
+			break;
+		}
+
+		eOrientation.setOrientation(orientation);
+		eOrientation.setOffset(offset);
+		return eOrientation;
+	}
+
+	@SuppressWarnings("unchecked")
+	@Override
+	public List<?> getPortChannels(Object graphicalComponent) {
+
+		System.out.println("getPortConnections");
+		List<Object> connections = new ArrayList<Object>();
+
+		if (graphicalComponent instanceof GraphicalEditPart) {
+
+			List<?> children = ((GraphicalEditPart) graphicalComponent).getChildren();
+			for (Object child : children) {
+				if (child instanceof FlowPortAffixedNodeEditPart) {
+					GraphicalEditPart graphicalPort = (GraphicalEditPart) child;
+					connections.addAll(graphicalPort.getSourceConnections());
+
+				}
+				if (child instanceof ResizablePortEditPart) {
+					GraphicalEditPart graphicalPort = (GraphicalEditPart) child;
+					connections.addAll(graphicalPort.getSourceConnections());
+
+				}
+			}
+
+			for (Object subComponents : getGraphicalSubComponents(graphicalComponent)) {
+				connections.addAll(getPortChannels(subComponents));
+				/*
+				 * List children
+				 * =((GraphicalEditPart)subComponents).getChildren(); for(Object
+				 * child : children){ if(child instanceof
+				 * FlowPortAffixedNodeEditPart){ GraphicalEditPart graphicalPort
+				 * = (GraphicalEditPart) child;
+				 * System.out.println("child: "+child);
+				 * connections.addAll(graphicalPort.getSourceConnections());
+				 * connections.addAll(graphicalPort.getTargetConnections());
+				 * 
+				 * } }
+				 */
+			}
+
+		}
+		System.out.println("connections.size: " + connections.size());
+
+		return connections;
+	}
+
+	@Override
+	public String getChannelName(Object channel) {
+		if (channel instanceof ConnectorEditPart) {
+			return ((Connector) ((View) ((ConnectorEditPart) channel).getModel()).getElement()).getName();
+		}
+		if (channel instanceof org.eclipse.papyrus.uml.diagram.composite.edit.parts.ConnectorEditPart) {
+			return ((Connector) ((View) ((org.eclipse.papyrus.uml.diagram.composite.edit.parts.ConnectorEditPart) channel)
+					.getModel()).getElement()).getName();
+		}
+		return null;
+	}
+
+	@Override
+	public Object getChannelTargetPort(Object channel) {
+		if (channel instanceof ConnectorEditPart) {
+			return ((ConnectorEditPart) channel).getTarget();
+		}
+		if (channel instanceof org.eclipse.papyrus.uml.diagram.composite.edit.parts.ConnectorEditPart) {
+			return ((org.eclipse.papyrus.uml.diagram.composite.edit.parts.ConnectorEditPart) channel).getTarget();
+		}
+		return null;
+	}
+
+	@Override
+	public Object getChannelSourcePort(Object channel) {
+		if (channel instanceof ConnectorEditPart) {
+			return ((ConnectorEditPart) channel).getSource();
+		}
+		if (channel instanceof org.eclipse.papyrus.uml.diagram.composite.edit.parts.ConnectorEditPart) {
+			return ((org.eclipse.papyrus.uml.diagram.composite.edit.parts.ConnectorEditPart) channel).getSource();
+		}
+		return null;
+	}
+
+	@Override
+	public ArrayList<?> getPortIncomingChannels(Object port) {
+		return null;
+	}
+
+	@Override
+	public ArrayList<?> getPortOutgoingChannels(Object port) {
+		return null;
+	}
+
+	@Override
+	public List<Point> getLayoutChannelPoints(Object channel) {
+		int[] pointList = null;
+		if (channel instanceof ConnectorEditPart) {
+			pointList = ((ConnectorEditPart) channel).getConnectionFigure().getPoints().toIntArray();
+		}
+		if (channel instanceof org.eclipse.papyrus.uml.diagram.composite.edit.parts.ConnectorEditPart) {
+			pointList = ((org.eclipse.papyrus.uml.diagram.composite.edit.parts.ConnectorEditPart) channel)
+					.getConnectionFigure().getPoints().toIntArray();
+		}
+		List<Point> points = new ArrayList<Point>();
+
+		for (int i = 0; i < pointList.length; i = i + 2) {
+			Point p = new Point(pointList[i], pointList[i + 1]);
+			points.add(p);
+		}
+
+		return points;
+	}
+
+	@Override
+	public Object getChannelOwner(Object channel) {
+		return ((GraphicalEditPart) channel).getParent();
+	}
+
+	
+
+	@Override
+	public String getGraphicalPortRange(Object component, Object port) {
+		return "PortRange";
+	}
+	
+}
diff --git a/org.polarsys.chess.diagram.ui/.svn/pristine/3c/3cbebaa7f54b0cb886240fc79028e5df4f4d2f71.svn-base b/org.polarsys.chess.diagram.ui/.svn/pristine/3c/3cbebaa7f54b0cb886240fc79028e5df4f4d2f71.svn-base
new file mode 100644
index 000000000..6f20375d6
--- /dev/null
+++ b/org.polarsys.chess.diagram.ui/.svn/pristine/3c/3cbebaa7f54b0cb886240fc79028e5df4f4d2f71.svn-base
@@ -0,0 +1,5 @@
+source.. = src/
+output.. = bin/
+bin.includes = META-INF/,\
+               .,\
+               plugin.xml
diff --git a/org.polarsys.chess.diagram.ui/.svn/pristine/46/46337eeb9d7e0ff6f33e5d2b0b99e9672daa8b49.svn-base b/org.polarsys.chess.diagram.ui/.svn/pristine/46/46337eeb9d7e0ff6f33e5d2b0b99e9672daa8b49.svn-base
new file mode 100644
index 000000000..fa5c9a02d
--- /dev/null
+++ b/org.polarsys.chess.diagram.ui/.svn/pristine/46/46337eeb9d7e0ff6f33e5d2b0b99e9672daa8b49.svn-base
@@ -0,0 +1,244 @@
+package org.polarsys.chess.diagram.ui.docGenerators;
+
+import java.awt.Dimension;
+import java.awt.Point;
+import java.util.ArrayList;
+import java.util.List;
+
+import org.eclipse.draw2d.ConnectionAnchor;
+import org.eclipse.emf.ecore.EAnnotation;
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.gef.EditPart;
+import org.eclipse.gmf.runtime.diagram.ui.editparts.GraphicalEditPart;
+import org.eclipse.gmf.runtime.notation.LayoutConstraint;
+import org.eclipse.gmf.runtime.notation.View;
+import org.eclipse.papyrus.infra.gmfdiag.common.figure.node.PapyrusWrappingLabel;
+import org.eclipse.papyrus.infra.gmfdiag.css.CSSDecorationNodeImpl;
+import org.eclipse.papyrus.sysml.diagram.blockdefinition.edit.part.BlockDefinitionDiagramEditPart;
+import org.eclipse.papyrus.sysml.diagram.common.edit.part.AssociationEditPart;
+import org.eclipse.papyrus.sysml.diagram.common.figure.AssociationFigure;
+import org.eclipse.uml2.uml.Association;
+import org.polarsys.chess.contracts.profile.chesscontract.util.EntityUtil;
+
+import eu.fbk.eclipse.standardtools.diagram.ui.model.AbstractBlockDefinitionDiagramModel;
+
+public class CHESSBlockDefinitionDiagramModel implements AbstractBlockDefinitionDiagramModel{
+
+	private static  CHESSBlockDefinitionDiagramModel instance;
+	
+	public static CHESSBlockDefinitionDiagramModel getInstance(){
+		if(instance==null){
+			instance = new CHESSBlockDefinitionDiagramModel();
+		}
+		return instance;
+	}
+	
+	private EntityUtil entityUtil = EntityUtil.getInstance();
+	
+	
+	@Override
+	public String getGraphicalComponentName(Object graphicalComponent) {
+		
+		if(graphicalComponent instanceof EditPart){
+			System.out.println("is instanceof EditPart");
+		}
+		if(graphicalComponent instanceof GraphicalEditPart){
+			System.out.println("is instanceof GraphicalEditPart");
+		}
+		
+		EObject component = ((GraphicalEditPart) graphicalComponent).resolveSemanticElement();
+	return entityUtil.getComponentName(component);
+	}
+
+	@Override
+	public List<?> getGraphicalComponentsOfBDD(Object graphicalComponent) {
+		
+		System.out.println("getGraphicalComponentsOfBDD");
+		
+		if(graphicalComponent instanceof EditPart){
+			System.out.println("is instanceof EditPart");
+		}
+		if(graphicalComponent instanceof GraphicalEditPart){
+			System.out.println("is instanceof GraphicalEditPart");
+		}
+		if(graphicalComponent instanceof BlockDefinitionDiagramEditPart){
+			System.out.println("is instanceof BlockDefinitionDiagramEditPart");
+			
+			for(Object o : ((BlockDefinitionDiagramEditPart)graphicalComponent).getChildren()){
+				System.out.println("child: "+o);
+			}
+			return ((BlockDefinitionDiagramEditPart)graphicalComponent).getChildren();
+		}
+		return null;
+	}
+
+	@Override
+	public Dimension getGraphicalComponentDimension(Object graphicalComponent) {
+		org.eclipse.draw2d.geometry.Dimension domension = ((GraphicalEditPart) graphicalComponent).getFigure().getSize();
+		Dimension d = new Dimension(domension.width, domension.height);
+		return d;
+	}
+
+	@Override
+	public Point getGraphicalComponentPosition(Object component) {
+		
+	/*	if(component instanceof EditPart){
+			for(Object o : ((EditPart)component).getChildren()){
+				System.out.println("child of component: "+o);
+			}
+		}*/
+		
+		GraphicalEditPart graphicalComponent = (GraphicalEditPart) component;
+
+		int x = 0;
+		int y = 0;
+
+		x = graphicalComponent.getFigure().getBounds().x;
+		y = graphicalComponent.getFigure().getBounds().y;
+
+			Point point = new Point(x, y);
+
+		//Point parentPoint = getOwnerPosition(graphicalComponent.getParent());
+
+		//System.out.println("parentPoint: " + parentPoint);
+
+		//point.x = point.x + parentPoint.x;
+		//point.y = point.y + parentPoint.y;
+
+		return point;
+	}
+
+	@Override
+	public List<?> getCompositionAssociations(Object graphicalComponent) {
+		if(graphicalComponent instanceof BlockDefinitionDiagramEditPart){
+			System.out.println("is instanceof BlockDefinitionDiagramEditPart");
+			
+			for(Object o : ((BlockDefinitionDiagramEditPart)graphicalComponent).getConnections()){
+				System.out.println("connections: "+o);
+			}
+			return ((BlockDefinitionDiagramEditPart)graphicalComponent).getConnections();
+		}
+		return null;
+	}
+
+	@Override
+	public String getCompositionAssociationName(Object channel) {
+		AssociationEditPart association = ((AssociationEditPart)channel);
+		System.out.println("association.getModel(): "+association.getModel());
+		View v = ((View) association.getModel());
+		System.out.println("v.getElement(): "+v.getElement());
+		Association associationEleemnt = (Association)v.getElement();
+		return associationEleemnt.getName();
+	}
+
+	@Override
+	public List<Point> getLayoutCompositionAssociationPoints(Object channel) {
+		int[] pointList = null;
+		List<Point> points = new ArrayList<Point>();
+		
+		AssociationEditPart association = ((AssociationEditPart)channel);
+		//pointList = association.getConnectionFigure().getPoints().toIntArray();
+		
+
+		AssociationFigure associationFigure = (AssociationFigure)association.getFigure();
+		pointList =associationFigure.getPolygonPoints().toIntArray();
+		//pointList =associationFigure.getPoints().toIntArray();
+		
+		System.out.println("points");
+		for (int i = 0; i < pointList.length; i = i + 2) {
+			Point p = new Point(pointList[i], pointList[i + 1]);
+			System.out.println("p: "+p);
+			points.add(p);
+		}
+
+		return points;
+	}
+
+	@Override
+	public Point getCompositionAssociationLabelPosition(Object graphicalLabel) {
+		
+		PapyrusWrappingLabel lab = (PapyrusWrappingLabel)graphicalLabel;
+		
+		org.eclipse.draw2d.geometry.Point labelPoint = lab.getLocation();
+		return new Point(labelPoint.x, labelPoint.y);
+	/*	AssociationEditPart association = ((AssociationEditPart)graphicalAssociation);
+		
+		for(Object o : association.getNotationView().getVisibleChildren())
+		{
+			CSSDecorationNodeImpl decNode = (CSSDecorationNodeImpl)o;
+			
+			System.out.println("o: "+o);
+			
+			for(Object o2:decNode.getPersistedChildren()){
+				System.out.println("getPersistedChildren: "+o2);
+			}
+			
+			for(Object o2:decNode.getSourceEdges()){
+				System.out.println("getSourceEdges: "+o2);
+			}
+			
+			for(Object o2:decNode.getTargetEdges()){
+				System.out.println("getTargetEdges: "+o2);
+			}
+			
+			LayoutConstraint lc = decNode.getLayoutConstraint();
+			
+		}
+		
+	
+		
+		for(Object o : association.getConnectionFigure().getChildren())
+		{
+			PapyrusWrappingLabel lab = (PapyrusWrappingLabel)o;
+			lab.getText();
+			lab.getLocation()
+			System.out.println(o.getClass());
+			System.out.println("getConnectionFigure().getChildren(): "+o);
+		}
+		
+		
+		
+		org.eclipse.draw2d.geometry.Point midPoint = association.getConnectionFigure().getPoints().getMidpoint();
+		return new Point(midPoint.x, midPoint.y);*/
+		
+		
+	}
+
+	
+	
+	@Override
+	public String getCompositionAssociationLabelText(Object graphicalLabel) {
+		PapyrusWrappingLabel lab = (PapyrusWrappingLabel)graphicalLabel;
+		return lab.getText();
+	}
+
+	@Override
+	public List<?> getCompositionAssociationsLabels(Object graphicalAssociation) {
+		AssociationEditPart association = ((AssociationEditPart)graphicalAssociation);
+		
+		List<PapyrusWrappingLabel> labels = new ArrayList<PapyrusWrappingLabel>();
+		for(Object o : association.getConnectionFigure().getChildren())
+		{
+			//System.out.println("o.getClass(): "+o.getClass());
+			//System.out.println("getConnectionFigure().getChildren(): "+o);
+			if(o instanceof PapyrusWrappingLabel){
+			PapyrusWrappingLabel lab = (PapyrusWrappingLabel)o;
+			//System.out.println("lab: "+lab);
+			//System.out.println("lab.text: "+lab.getText());
+			//System.out.println("lab.isShowing(): "+lab.isShowing());
+					//System.out.println("lab.isVisible():"+lab.isVisible());
+						//	System.out.println("lab.isEnabled(): "+lab.isEnabled());
+							if((lab.getText().compareTo("")!=0)&(lab.isShowing())){
+							labels.add(lab);
+							}
+			}
+			
+		}
+		
+		return labels;
+		
+	}
+
+	
+	
+}
diff --git a/org.polarsys.chess.diagram.ui/.svn/pristine/51/512bd49c4ba767010f32a54ef22de71e83bd7e1e.svn-base b/org.polarsys.chess.diagram.ui/.svn/pristine/51/512bd49c4ba767010f32a54ef22de71e83bd7e1e.svn-base
new file mode 100644
index 000000000..295926d96
--- /dev/null
+++ b/org.polarsys.chess.diagram.ui/.svn/pristine/51/512bd49c4ba767010f32a54ef22de71e83bd7e1e.svn-base
@@ -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/org.polarsys.chess.diagram.ui/.svn/pristine/58/58255b80eccc134fcea0aede9eadb349e3fd54be.svn-base b/org.polarsys.chess.diagram.ui/.svn/pristine/58/58255b80eccc134fcea0aede9eadb349e3fd54be.svn-base
new file mode 100644
index 000000000..5c22a1a5a
--- /dev/null
+++ b/org.polarsys.chess.diagram.ui/.svn/pristine/58/58255b80eccc134fcea0aede9eadb349e3fd54be.svn-base
@@ -0,0 +1,229 @@
+package org.polarsys.chess.diagram.ui.services;
+
+import java.io.File;
+import java.net.MalformedURLException;
+import java.util.Collection;
+import java.util.HashSet;
+import java.util.Set;
+
+import org.eclipse.papyrus.sysml.diagram.common.edit.part.BlockCompositeEditPart;
+import org.eclipse.papyrus.sysml.diagram.internalblock.edit.part.InternalBlockDiagramEditPart;
+import org.eclipse.papyrus.sysml.diagram.blockdefinition.edit.part.BlockDefinitionDiagramEditPart;
+import org.apache.commons.io.FilenameUtils;
+import org.eclipse.core.runtime.IProgressMonitor;
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.emf.ecore.resource.Resource;
+import org.eclipse.gef.EditPart;
+import org.eclipse.gef.RootEditPart;
+import org.eclipse.gmf.runtime.diagram.ui.OffscreenEditPartFactory;
+import org.eclipse.gmf.runtime.notation.Diagram;
+import org.eclipse.papyrus.infra.gmfdiag.common.model.NotationModel;
+import org.eclipse.papyrus.infra.gmfdiag.common.model.NotationUtils;
+import org.eclipse.papyrus.infra.gmfdiag.common.utils.DiagramUtils;
+import org.eclipse.swt.widgets.Shell;
+import org.eclipse.ui.PlatformUI;
+import org.eclipse.uml2.uml.Class;
+
+import eu.fbk.eclipse.standardtools.diagram.ContainterDescriptor;
+import eu.fbk.eclipse.standardtools.diagram.DiagramDescriptor;
+import eu.fbk.eclipse.standardtools.diagram.ui.docGenerators.BlockDefinitionDiagramGeneratorService;
+import eu.fbk.eclipse.standardtools.diagram.ui.docGenerators.InternalBlockDiagramGeneratorService;
+import eu.fbk.eclipse.standardtools.diagram.ui.model.AbstractBlockDefinitionDiagramModel;
+import eu.fbk.eclipse.standardtools.diagram.ui.model.AbstractInternalBlockDiagramModel;
+
+public class CHESSDiagramsGeneratorService {
+	
+	private static CHESSDiagramsGeneratorService instance;
+	
+	final private static String IBD = "InternalBlock"; 
+	final private static String BDD = "BlockDefinition";
+	
+	public static CHESSDiagramsGeneratorService getInstance(AbstractInternalBlockDiagramModel ibdModel,AbstractBlockDefinitionDiagramModel bddModel){
+		if(instance==null){
+			instance = new CHESSDiagramsGeneratorService(ibdModel, bddModel);
+		}
+		return instance;
+	}
+	
+	
+	
+	public CHESSDiagramsGeneratorService(AbstractInternalBlockDiagramModel ibdModel, AbstractBlockDefinitionDiagramModel bddModel) {
+		super();
+		//graphicalModel = graphModel;
+		ibdGeneratorService = InternalBlockDiagramGeneratorService.getInstance(ibdModel);
+		bddGeneratorService = BlockDefinitionDiagramGeneratorService.getInstance(bddModel);
+	}
+
+
+
+	//private static AbstractDiagramModel graphicalModel;	
+	private InternalBlockDiagramGeneratorService ibdGeneratorService;
+	private BlockDefinitionDiagramGeneratorService bddGeneratorService;
+
+	
+	private String directoryName;
+	private String imageExtension;
+	
+
+	
+	public void setParametersBeforeDiagramsGenerator(
+			String directoryName, String imageExtension, 
+			boolean showPortLabels, boolean automaticLabelLayout) {
+		
+		this.directoryName=directoryName;
+		this.imageExtension=imageExtension;
+		
+		
+		ibdGeneratorService.setParametersBeforeDiagramGenerator(showPortLabels, automaticLabelLayout);
+		
+	}
+	
+	public DiagramDescriptor createDiagramWithDescriptor(Diagram diagram, IProgressMonitor monitor){
+		EObject diagramOwner = DiagramUtils.getOwner(diagram);
+		String diagramName = "";
+		String ownerName = null;
+		boolean hasComponentOwner = true;
+		if(diagramOwner instanceof Class){
+		ownerName = ((Class)diagramOwner).getName();
+		diagramName = ownerName+"_"+diagram.getName();
+		}else{
+			hasComponentOwner = false;
+			diagramName = diagram.getName();
+		}
+		
+		//if(diagram.getName().compareTo("Contracts")!=0){
+		try{
+		createDiagram(diagram,diagramName, monitor);
+		return createDiagramDescriptor(diagramName,ownerName,hasComponentOwner );
+		}catch(NullPointerException e){
+			System.out.println("Unable to create diagram "+diagramName);
+		}
+		return null;
+	}
+	
+	
+	
+	private void createDiagram(Diagram diagram,String diagramName, IProgressMonitor monitor){
+		Shell shell = PlatformUI.getWorkbench().getActiveWorkbenchWindow().getShell();
+		
+		System.out.println("diagram name: "+diagram.getName());
+		System.out.println("diagram type: "+diagram.getType());
+		
+		EditPart editPart = OffscreenEditPartFactory.getInstance().createDiagramEditPart(diagram, shell);
+
+		RootEditPart root = editPart.getRoot();
+		System.out.println("root: "+root);
+		
+		if(isInternalBlockDiagram(diagram)){
+		InternalBlockDiagramEditPart idb = (InternalBlockDiagramEditPart) root.getChildren().get(0);
+		BlockCompositeEditPart graphicalComponent = (BlockCompositeEditPart)idb.getChildren().get(0);
+		
+	ibdGeneratorService.createDiagramFile(getComponentImageFilePath(diagramName), graphicalComponent, monitor);
+		}else if(isBlockDefinitionDiagram(diagram)){
+			System.out.println("isBlockDefinitionDiagram");
+			BlockDefinitionDiagramEditPart bdd = (BlockDefinitionDiagramEditPart) root.getChildren().get(0);
+			for(Object o : bdd.getChildren()){
+				System.out.println("o: "+o);
+			}
+			
+			bddGeneratorService.createDiagramFile(getComponentImageFilePath(diagramName), bdd, monitor);
+			
+		}
+	}
+	
+	private DiagramDescriptor createDiagramDescriptor(String diagramName, String ownerName, boolean hasComponentOwner){
+		String saveFilePath = getComponentImageFilePath(diagramName);
+		System.out.println("saveFilePath: "+saveFilePath);
+		// diagramGeneratorService.createDiagramFile(saveFilePath, component,
+		// monitor);
+		final DiagramDescriptor diagramDescriptor = //diagramGeneratorService.
+				createDiagramDescriptorWithImageFileUrl(diagramName, saveFilePath,ownerName,hasComponentOwner);
+		return diagramDescriptor;
+	}
+	
+	private DiagramDescriptor createDiagramDescriptorWithImageFileUrl(String diagramName, String saveFilePath,String owner,boolean hasComponentOwner) {
+		DiagramDescriptor diagramDescriptor = new DiagramDescriptor();
+		diagramDescriptor.name = diagramName;
+		diagramDescriptor.hasComponentOwner = hasComponentOwner;
+		if(owner!=null){
+		diagramDescriptor.ownerName = owner;
+		}
+		String diagramFileName;
+		try {
+			diagramFileName = new File(saveFilePath).toURI().toURL().getFile();
+		} catch (MalformedURLException e) {
+			return null;
+		}
+
+		diagramDescriptor.url = FilenameUtils.getName(diagramFileName);
+
+		return diagramDescriptor;
+	}
+	
+	public Collection<Diagram> getDiagrams() {
+		
+		NotationModel notationModel = NotationUtils.getNotationModel();
+		Set<Diagram> diagrams =  getIBD_BDD_Diagrams(notationModel.getResources());
+		System.out.println("diagrams");
+		for (Diagram c : diagrams) {
+			System.out.println(c);			
+		}
+		return diagrams;
+	
+	}
+
+	public Set<Diagram> getDiagrams(Set<Resource> resources){
+		
+		Set<Diagram> diagrams = new HashSet<Diagram>();
+		
+		for (Resource current : resources) {
+			for (EObject element : current.getContents()) {
+				if (element instanceof Diagram) {
+					diagrams.add((Diagram)element);
+					}
+				}
+			}
+		
+		return diagrams;
+	}
+	
+private Set<Diagram> getIBD_BDD_Diagrams(Set<Resource> resources){
+		
+		Set<Diagram> diagrams = new HashSet<Diagram>();
+		
+		for (Resource current : resources) {
+			for (EObject element : current.getContents()) {
+				if (element instanceof Diagram) {
+					Diagram diagram = (Diagram)element;
+					System.out.println("diagram type: "+diagram.getType());
+					
+					if (isBlockDefinitionDiagram(diagram)||isInternalBlockDiagram(diagram)){
+					diagrams.add((Diagram)element);
+					}
+					}
+				}
+			}
+		
+		return diagrams;
+	}
+	
+	
+private boolean isBlockDefinitionDiagram(Diagram diagram){
+	if(diagram.getType().compareTo(BDD)==0){
+		return true;
+	}
+	return false;
+}
+
+private boolean isInternalBlockDiagram(Diagram diagram){
+	if(diagram.getType().compareTo(IBD)==0){
+		return true;
+	}
+	return false;
+}
+	
+	private String getComponentImageFilePath(String fileName) {
+			return directoryName + File.separator + fileName + imageExtension;
+		}
+	
+}
diff --git a/org.polarsys.chess.diagram.ui/.svn/pristine/5e/5e72a410181db970c9a093452d153089ef390f87.svn-base b/org.polarsys.chess.diagram.ui/.svn/pristine/5e/5e72a410181db970c9a093452d153089ef390f87.svn-base
new file mode 100644
index 000000000..e1423f9b3
--- /dev/null
+++ b/org.polarsys.chess.diagram.ui/.svn/pristine/5e/5e72a410181db970c9a093452d153089ef390f87.svn-base
@@ -0,0 +1,46 @@
+package org.polarsys.chess.diagram.ui.docGenerators;
+
+import java.awt.Dimension;
+import java.awt.Point;
+import java.util.List;
+
+import eu.fbk.eclipse.standardtools.diagram.ui.model.AbstractBlockDefinitionDiagramModel;
+
+public class CHESSBlockDefinitionDiagramModel implements AbstractBlockDefinitionDiagramModel{
+
+	private static  CHESSBlockDefinitionDiagramModel instance;
+	
+	public static CHESSBlockDefinitionDiagramModel getInstance(){
+		if(instance==null){
+			instance = new CHESSBlockDefinitionDiagramModel();
+		}
+		return instance;
+	}
+	
+	@Override
+	public String getGraphicalComponentName(Object graphicalComponent) {
+		// TODO Auto-generated method stub
+		return null;
+	}
+
+	@Override
+	public List<?> getGraphicalComponentsOfBDD(Object graphicalComponent) {
+		// TODO Auto-generated method stub
+		return null;
+	}
+
+	@Override
+	public Dimension getGraphicalComponentDimension(Object graphicalComponent) {
+		// TODO Auto-generated method stub
+		return null;
+	}
+
+	@Override
+	public Point getGraphicalComponentPosition(Object graphicalComponent) {
+		// TODO Auto-generated method stub
+		return null;
+	}
+
+	
+	
+}
diff --git a/org.polarsys.chess.diagram.ui/.svn/pristine/6b/6bbf21df3801fb18a3e2c523c7c9e77993cb78b4.svn-base b/org.polarsys.chess.diagram.ui/.svn/pristine/6b/6bbf21df3801fb18a3e2c523c7c9e77993cb78b4.svn-base
new file mode 100644
index 000000000..d2a1e77fb
--- /dev/null
+++ b/org.polarsys.chess.diagram.ui/.svn/pristine/6b/6bbf21df3801fb18a3e2c523c7c9e77993cb78b4.svn-base
@@ -0,0 +1,492 @@
+/*******************************************************************************
+ * Copyright (C) 2017 Fondazione Bruno Kessler.
+ * 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:
+ *     Alberto Debiasi - initial API and implementation
+ ******************************************************************************/
+package org.polarsys.chess.diagram.ui.docGenerators;
+
+import java.awt.Dimension;
+import java.awt.Point;
+import java.util.ArrayList;
+import java.util.List;
+
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.gmf.runtime.diagram.ui.editparts.GraphicalEditPart;
+import org.eclipse.gmf.runtime.notation.View;
+import org.eclipse.papyrus.sysml.diagram.common.edit.part.BlockPropertyCompositeEditPart;
+import org.eclipse.papyrus.sysml.diagram.common.edit.part.FlowPortAffixedNodeEditPart;
+import org.eclipse.papyrus.sysml.diagram.common.edit.part.StructureCompartmentEditPart;
+import org.eclipse.papyrus.uml.diagram.common.edit.part.ConnectorEditPart;
+import org.eclipse.papyrus.uml.diagram.common.editparts.IUMLEditPart;
+import org.eclipse.papyrus.uml.diagram.composite.custom.edit.parts.CustomPropertyPartEditPartCN;
+import org.eclipse.papyrus.uml.diagram.composite.custom.edit.parts.ResizablePortEditPart;
+import org.eclipse.papyrus.uml.diagram.composite.edit.parts.ClassCompositeCompartmentEditPart;
+import org.eclipse.uml2.uml.Connector;
+import org.eclipse.uml2.uml.Element;
+import org.eclipse.uml2.uml.Port;
+import org.polarsys.chess.contracts.profile.chesscontract.util.EntityUtil;
+
+import eu.fbk.eclipse.standardtools.diagram.ui.layout.EOrientation;
+import eu.fbk.eclipse.standardtools.diagram.ui.layout.EOrientation.Orientation;
+import eu.fbk.eclipse.standardtools.diagram.ui.model.AbstractInternalBlockDiagramModel;
+
+public class CHESSInternalBlockDiagramModel implements AbstractInternalBlockDiagramModel{
+	
+	
+	private static CHESSInternalBlockDiagramModel chessModel;
+	
+	public static CHESSInternalBlockDiagramModel getInstance(){
+		if(chessModel == null){
+			chessModel = new CHESSInternalBlockDiagramModel();
+		}
+		return chessModel;
+	}
+	
+	
+	private EntityUtil entityUtil = EntityUtil.getInstance();
+	
+	@Override
+	public String getGraphicalComponentId(Object graphicalComponent) {
+		Element umlElement = null;
+		/*
+		 * if(graphicalComponent instanceof BlockCompositeEditPart){ umlElement
+		 * = ((BlockCompositeEditPart)graphicalComponent).getUMLElement(); }
+		 * if(graphicalComponent instanceof BlockPropertyCompositeEditPart){
+		 * umlElement =
+		 * ((BlockPropertyCompositeEditPart)graphicalComponent).getUMLElement();
+		 * }
+		 */
+		if (graphicalComponent instanceof IUMLEditPart) {
+			umlElement = ((IUMLEditPart) graphicalComponent).getUMLElement();
+		}
+		return entityUtil.getComponentID(umlElement);
+	}
+
+	@Override
+	public String getGraphicalComponentName(Object graphicalComponent) {
+		EObject component = ((GraphicalEditPart) graphicalComponent).resolveSemanticElement();
+
+		// ((AppliedStereotypeEmptyEditPart)graphicalComponent).get
+
+		return entityUtil.getComponentName(component);
+	}
+
+	@Override
+	public List<GraphicalEditPart> getGraphicalSubComponents(Object graphicalComponent) {
+		List<?> children = ((GraphicalEditPart) graphicalComponent).getChildren();
+		List<GraphicalEditPart> graphicalSubComponent = new ArrayList<GraphicalEditPart>();
+		for (Object child : children) {
+			if (child instanceof StructureCompartmentEditPart) {
+				for (Object componentChild : ((StructureCompartmentEditPart) child).getChildren()) {
+					if (componentChild instanceof BlockPropertyCompositeEditPart) {
+						graphicalSubComponent.add((GraphicalEditPart) componentChild);
+					}
+				}
+			}
+			if (child instanceof ClassCompositeCompartmentEditPart) {
+				for (Object componentChild : ((ClassCompositeCompartmentEditPart) child).getChildren()) {
+					if (componentChild instanceof CustomPropertyPartEditPartCN) {
+						graphicalSubComponent.add((GraphicalEditPart) componentChild);
+					}
+				}
+			}
+		}
+		return graphicalSubComponent;
+	}
+
+	@Override
+	public Object getGraphicalOwnerComponents(Object graphicalComponent) {
+		return ((GraphicalEditPart) graphicalComponent).getParent();
+	}
+
+	@Override
+	public List<?> getGraphicalPorts(Object graphicalComponent) {
+		List<?> children = ((GraphicalEditPart) graphicalComponent).getChildren();
+		List<GraphicalEditPart> graphicalConnectors = new ArrayList<GraphicalEditPart>();
+		for (Object child : children) {
+			if (child instanceof FlowPortAffixedNodeEditPart) {
+				graphicalConnectors.add((GraphicalEditPart) child);
+			}
+			if (child instanceof ResizablePortEditPart) {
+				graphicalConnectors.add((GraphicalEditPart) child);
+			}
+		}
+		return graphicalConnectors;
+	}
+
+	@Override
+	public Object getGraphicalPortOwner(Object port) {
+		return ((GraphicalEditPart) port).getParent();
+	}
+
+	@Override
+	public Dimension getGraphicalComponentDimension(Object component) {
+		org.eclipse.draw2d.geometry.Dimension domension = ((GraphicalEditPart) component).getFigure().getSize();
+		Dimension d = new Dimension(domension.width, domension.height);
+		return d;
+	}
+
+	@Override
+	public Point getGraphicalComponentPosition(Object component) {
+
+		GraphicalEditPart graphicalComponent = (GraphicalEditPart) component;
+
+		int x = 0;
+		int y = 0;
+
+		x = graphicalComponent.getFigure().getBounds().x;
+		y = graphicalComponent.getFigure().getBounds().y;
+
+		printlnGraphicalPosition(graphicalComponent);
+
+		// System.out.println("----------------------------");
+		// System.out.println(graphicalComponent.getLocation());
+		// System.out.println(component);
+		// System.out.println(graphicalComponent.getContentPane().getBounds());
+		// System.out.println(graphicalComponent.getFigure().getBounds());
+		// System.out.println(graphicalComponent.getMainFigure().getBounds());
+		// System.out.println(graphicalComponent.getBorderedFigure().getBounds());
+		// System.out.println(graphicalComponent.getPrimaryShape().getBounds());
+		// System.out.println(graphicalComponent.getPrimaryShape().getLocation());
+
+		Point point = new Point(x, y);
+
+		Point parentPoint = getOwnerPosition(graphicalComponent.getParent());
+
+		System.out.println("parentPoint: " + parentPoint);
+
+		point.x = point.x + parentPoint.x;
+		point.y = point.y + parentPoint.y;
+
+		return point;
+	}
+	
+	private Object printlnGraphicalPosition(Object component) {
+		if (component instanceof GraphicalEditPart) {
+			GraphicalEditPart graphicalComponent = (GraphicalEditPart) component;
+			System.out.println("-------printlnGraphicalPosition------------");
+			System.out.println(graphicalComponent);
+			System.out.println(graphicalComponent.getFigure().getBounds());
+			return printlnGraphicalPosition(graphicalComponent.getParent());
+		}
+		return null;
+	}
+
+	/*
+	 * @Override public Point getGraphicalComponentPosition(Object component) {
+	 * 
+	 * GraphicalEditPart graphicalComponent = (GraphicalEditPart)component;
+	 * 
+	 * int x =0; int y =0; if(!(component instanceof
+	 * StructureCompartmentEditPart)){ x =
+	 * graphicalComponent.getFigure().getBounds().x; y =
+	 * graphicalComponent.getFigure().getBounds().y; }
+	 * 
+	 * 
+	 * System.out.println("----------------------------");
+	 * //System.out.println(graphicalComponent.getLocation());
+	 * System.out.println(component);
+	 * //System.out.println(graphicalComponent.getContentPane().getBounds());
+	 * System.out.println(graphicalComponent.getFigure().getBounds());
+	 * //System.out.println(graphicalComponent.getMainFigure().getBounds());
+	 * //System.out.println(graphicalComponent.getBorderedFigure().getBounds());
+	 * //System.out.println(graphicalComponent.getPrimaryShape().getBounds());
+	 * //System.out.println(graphicalComponent.getPrimaryShape().getLocation());
+	 * 
+	 * 
+	 * Point point = new Point(x, y);
+	 * 
+	 * if(graphicalComponent.getParent() instanceof GraphicalEditPart){ Point
+	 * parentPoint =
+	 * getGraphicalComponentPosition(graphicalComponent.getParent());
+	 * point.x=point.x+parentPoint.x; point.y=point.y+parentPoint.y; } return
+	 * point; }
+	 */
+	
+
+	private Point getOwnerPosition(Object component) {
+
+		if (component instanceof GraphicalEditPart) {
+			GraphicalEditPart graphicalComponent = (GraphicalEditPart) component;
+
+			int x = 0;
+			int y = 0;
+			if (component instanceof StructureCompartmentEditPart) {
+				x = graphicalComponent.getFigure().getBounds().x;
+				y = graphicalComponent.getFigure().getBounds().y;
+				Point point = new Point(x, y);
+				return point;
+			}
+			if (component instanceof ClassCompositeCompartmentEditPart) {
+				x = graphicalComponent.getFigure().getBounds().x;
+				y = graphicalComponent.getFigure().getBounds().y;
+				Point point = new Point(x, y);
+				return point;
+			}
+
+			return getOwnerPosition(graphicalComponent.getParent());
+		} else {
+			return new Point(0, 0);
+		}
+	}
+
+	@Override
+	public boolean isGraphicalPort(Object port) {
+		if (port instanceof FlowPortAffixedNodeEditPart) {
+			return entityUtil.isPort((Element) ((FlowPortAffixedNodeEditPart) port).getUMLElement());
+		}
+		if (port instanceof ResizablePortEditPart) {
+			return entityUtil.isPort((Element) ((ResizablePortEditPart) port).getUMLElement());
+		}
+		return false;
+	}
+
+	@Override
+	public boolean isGraphicalInputPort(Object port) {
+		if (port instanceof FlowPortAffixedNodeEditPart) {
+			return entityUtil.isInputPort((Element) ((FlowPortAffixedNodeEditPart) port).getUMLElement());
+		}
+		if (port instanceof ResizablePortEditPart) {
+			return entityUtil.isInputPort((Element) ((ResizablePortEditPart) port).getUMLElement());
+		}
+		return false;
+	}
+
+	@Override
+	public boolean isGraphicalOutputPort(Object port) {
+		if (port instanceof FlowPortAffixedNodeEditPart) {
+			return entityUtil.isOutputPort((Element) ((FlowPortAffixedNodeEditPart) port).getUMLElement());
+		}
+		if (port instanceof ResizablePortEditPart) {
+			return entityUtil.isOutputPort((Element) ((ResizablePortEditPart) port).getUMLElement());
+		}
+		return false;
+	}
+
+	@Override
+	public String getGraphicalPortName(Object port) {
+		if (port instanceof FlowPortAffixedNodeEditPart) {
+			return ((Port) ((FlowPortAffixedNodeEditPart) port).getUMLElement()).getName();
+		}
+		if (port instanceof ResizablePortEditPart) {
+			return ((Port) ((ResizablePortEditPart) port).getUMLElement()).getName();
+		}
+		return null;
+	}
+
+	
+
+	@Override
+	public Object getGraphicalPortVariableType(Object port) {
+		if (port instanceof FlowPortAffixedNodeEditPart) {
+			return ((Port) ((FlowPortAffixedNodeEditPart) port).getUMLElement()).getType().getName();
+		}
+		if (port instanceof ResizablePortEditPart) {
+			return ((Port) ((ResizablePortEditPart) port).getUMLElement()).getType().getName();
+		}
+		return null;
+	}
+
+	@Override
+	public Point getGraphicalPortPosition(Object port) {
+
+		// org.eclipse.draw2d.geometry.Point p =
+		// ((FlowPortAffixedNodeEditPart)Port).getLocation();
+		// org.eclipse.draw2d.geometry.Point p =
+		// ((GraphicalEditPart)Port).getFigure().getBounds();
+		int x = ((GraphicalEditPart) port).getFigure().getBounds().x;
+		int y = ((GraphicalEditPart) port).getFigure().getBounds().y;
+
+		// System.out.println("port bounds:
+		// "+((FlowPortAffixedNodeEditPart)Port).getFigure().getBounds());
+		// System.out.println("port loc: "+p);
+
+		// Point point = new Point(p.x, p.y);
+		Point point = new Point(x, y);
+
+		// GraphicalEditPart portParent =
+		// (GraphicalEditPart)((GraphicalEditPart)Port).getParent();
+		// Point partentPoint =
+		// getGraphicalComponentPosition(portParent.getParent());
+		Point partentPoint = getOwnerPosition(port);
+
+		point.x = point.x + partentPoint.x;
+		point.y = point.y + partentPoint.y;
+		return point;
+	}
+
+	@Override
+	public Dimension getGraphicalPortDimension(Object port) {
+
+		org.eclipse.draw2d.geometry.Dimension domension = ((GraphicalEditPart) port).getFigure().getSize();
+		Dimension dim = new Dimension(domension.width, domension.height);
+
+		return dim;
+	}
+
+	@Override
+	public EOrientation getGraphicalPortOffsetOrientation(Object port) {
+
+		int or = 0;
+		if (port instanceof FlowPortAffixedNodeEditPart) {
+			or = ((FlowPortAffixedNodeEditPart) port).getBorderItemLocator().getCurrentSideOfParent();
+		}
+		if (port instanceof ResizablePortEditPart) {
+			or = ((ResizablePortEditPart) port).getBorderItemLocator().getCurrentSideOfParent();
+		}
+		//System.out.println("or: " + or);
+
+		EOrientation eOrientation = new EOrientation();
+		Point p = getGraphicalPortPosition(port);
+		int offset = 0;
+		Orientation orientation = Orientation.NORTH_VALUE;
+
+		switch (or) {
+		case 1:
+			orientation = Orientation.NORTH_VALUE;
+			offset = p.x;
+			break;
+		case 4:
+			orientation = Orientation.SOUTH_VALUE;
+			offset = p.x;
+			break;
+		case 8:
+			orientation = Orientation.WEST_VALUE;
+			offset = p.y;
+			break;
+		case 16:
+			orientation = Orientation.EAST_VALUE;
+			offset = p.y;
+			break;
+		}
+
+		eOrientation.setOrientation(orientation);
+		eOrientation.setOffset(offset);
+		return eOrientation;
+	}
+
+	@SuppressWarnings("unchecked")
+	@Override
+	public List<?> getPortChannels(Object graphicalComponent) {
+
+		List<Object> connections = new ArrayList<Object>();
+
+		if (graphicalComponent instanceof GraphicalEditPart) {
+
+			List<?> children = ((GraphicalEditPart) graphicalComponent).getChildren();
+			for (Object child : children) {
+				if (child instanceof FlowPortAffixedNodeEditPart) {
+					GraphicalEditPart graphicalPort = (GraphicalEditPart) child;
+					connections.addAll(graphicalPort.getSourceConnections());
+
+				}
+				if (child instanceof ResizablePortEditPart) {
+					GraphicalEditPart graphicalPort = (GraphicalEditPart) child;
+					connections.addAll(graphicalPort.getSourceConnections());
+
+				}
+			}
+
+			for (Object subComponents : getGraphicalSubComponents(graphicalComponent)) {
+				connections.addAll(getPortChannels(subComponents));
+				/*
+				 * List children
+				 * =((GraphicalEditPart)subComponents).getChildren(); for(Object
+				 * child : children){ if(child instanceof
+				 * FlowPortAffixedNodeEditPart){ GraphicalEditPart graphicalPort
+				 * = (GraphicalEditPart) child;
+				 * System.out.println("child: "+child);
+				 * connections.addAll(graphicalPort.getSourceConnections());
+				 * connections.addAll(graphicalPort.getTargetConnections());
+				 * 
+				 * } }
+				 */
+			}
+
+		}
+		
+		return connections;
+	}
+
+	@Override
+	public String getChannelName(Object channel) {
+		if (channel instanceof ConnectorEditPart) {
+			return ((Connector) ((View) ((ConnectorEditPart) channel).getModel()).getElement()).getName();
+		}
+		if (channel instanceof org.eclipse.papyrus.uml.diagram.composite.edit.parts.ConnectorEditPart) {
+			return ((Connector) ((View) ((org.eclipse.papyrus.uml.diagram.composite.edit.parts.ConnectorEditPart) channel)
+					.getModel()).getElement()).getName();
+		}
+		return null;
+	}
+
+	@Override
+	public Object getChannelTargetPort(Object channel) {
+		if (channel instanceof ConnectorEditPart) {
+			return ((ConnectorEditPart) channel).getTarget();
+		}
+		if (channel instanceof org.eclipse.papyrus.uml.diagram.composite.edit.parts.ConnectorEditPart) {
+			return ((org.eclipse.papyrus.uml.diagram.composite.edit.parts.ConnectorEditPart) channel).getTarget();
+		}
+		return null;
+	}
+
+	@Override
+	public Object getChannelSourcePort(Object channel) {
+		if (channel instanceof ConnectorEditPart) {
+			return ((ConnectorEditPart) channel).getSource();
+		}
+		if (channel instanceof org.eclipse.papyrus.uml.diagram.composite.edit.parts.ConnectorEditPart) {
+			return ((org.eclipse.papyrus.uml.diagram.composite.edit.parts.ConnectorEditPart) channel).getSource();
+		}
+		return null;
+	}
+
+	@Override
+	public ArrayList<?> getPortIncomingChannels(Object port) {
+		return null;
+	}
+
+	@Override
+	public ArrayList<?> getPortOutgoingChannels(Object port) {
+		return null;
+	}
+
+	@Override
+	public List<Point> getLayoutChannelPoints(Object channel) {
+		int[] pointList = null;
+		if (channel instanceof ConnectorEditPart) {
+			pointList = ((ConnectorEditPart) channel).getConnectionFigure().getPoints().toIntArray();
+		}
+		if (channel instanceof org.eclipse.papyrus.uml.diagram.composite.edit.parts.ConnectorEditPart) {
+			pointList = ((org.eclipse.papyrus.uml.diagram.composite.edit.parts.ConnectorEditPart) channel)
+					.getConnectionFigure().getPoints().toIntArray();
+		}
+		List<Point> points = new ArrayList<Point>();
+
+		for (int i = 0; i < pointList.length; i = i + 2) {
+			Point p = new Point(pointList[i], pointList[i + 1]);
+			points.add(p);
+		}
+
+		return points;
+	}
+
+	@Override
+	public Object getChannelOwner(Object channel) {
+		return ((GraphicalEditPart) channel).getParent();
+	}
+
+	
+
+	@Override
+	public String getGraphicalPortRange(Object component, Object port) {
+		return "PortRange";
+	}
+	
+}
diff --git a/org.polarsys.chess.diagram.ui/.svn/pristine/78/786243590d08e772d81457c55d60c96be17614b4.svn-base b/org.polarsys.chess.diagram.ui/.svn/pristine/78/786243590d08e772d81457c55d60c96be17614b4.svn-base
new file mode 100644
index 000000000..c99c2da0e
--- /dev/null
+++ b/org.polarsys.chess.diagram.ui/.svn/pristine/78/786243590d08e772d81457c55d60c96be17614b4.svn-base
@@ -0,0 +1,74 @@
+package org.polarsys.chess.diagram.ui.commands;
+
+import org.eclipse.core.commands.ExecutionEvent;
+import org.eclipse.core.runtime.IProgressMonitor;
+import org.eclipse.uml2.uml.Class;
+import org.polarsys.chess.diagram.ui.docGenerators.CHESSDiagramModel;
+import org.polarsys.chess.diagram.ui.utils.ExportDialogUtils;
+import org.polarsys.chess.utils.SelectionUtil;import org.polarsys.chess.verificationService.model.ChessSystemModel;
+
+import eu.fbk.eclipse.standardtools.ModelTranslatorToOcra.services.OCRATranslatorService;
+import eu.fbk.eclipse.standardtools.commands.AbstractAsyncJobCommand;
+import eu.fbk.eclipse.standardtools.diagram.ui.dialog.ModelToDocumentDialog;
+import eu.fbk.eclipse.standardtools.diagram.ui.docGenerators.DocumentGeneratorServiceFromOssModel;
+import eu.fbk.eclipse.standardtools.dialogs.MessageTimeModelDialog;
+import eu.fbk.eclipse.standardtools.utils.DirectoryUtil;
+import eu.fbk.tools.editor.oss.oss.OSS;
+
+public class GenerateDocumentCommand extends AbstractAsyncJobCommand {
+
+	
+	private SelectionUtil selectionUtil = SelectionUtil.getInstance();
+	private ChessSystemModel chessToOCRAModelTranslator = ChessSystemModel.getInstance();
+	private OCRATranslatorService ocraTranslatorService = OCRATranslatorService.getInstance(chessToOCRAModelTranslator);
+	private ExportDialogUtils exportDialogUtils = ExportDialogUtils.getInstance();
+	
+	private DirectoryUtil directoryUtils = DirectoryUtil.getInstance();
+	
+	private DocumentGeneratorServiceFromOssModel documentGeneratorService ;
+	/**
+	 * @param commandName
+	 */
+	public GenerateDocumentCommand() {
+		super("Generate Documentation");
+	}
+
+	@Override
+	public void execJobCommand(ExecutionEvent event, IProgressMonitor monitor) throws Exception {
+		
+		
+		Class umlSelectedComponent = selectionUtil.getUmlComponentFromSelectedObject(event);
+		boolean isDiscreteTime = MessageTimeModelDialog.openQuestion();
+		
+		OSS ossModel = ocraTranslatorService.getOssModel(umlSelectedComponent, isDiscreteTime, monitor);
+		
+		ModelToDocumentDialog parameterDialog = exportDialogUtils.getCompiledModelToDocumentDialog();
+
+		if (!parameterDialog.goAhead()) {
+			return;
+		}
+
+		String docFormat = parameterDialog.getDocumentFormat();
+		String imageExtension = ".svg";
+		if (docFormat.equals("tex")) {
+			imageExtension = ".png";
+		}
+
+		// setShowLeafComponents(showLeafComponents);
+		String outputDirectoryName = exportDialogUtils.getDirectoryNameFromDialog();
+		// setDirectoryName(directoryName);
+		if ((outputDirectoryName == null) || outputDirectoryName.isEmpty()) {
+			return;
+		}
+		
+		String currentProjectName = directoryUtils.getCurrentProjectName();
+		System.out.println("currentProjectName: "+currentProjectName);
+		
+		
+		documentGeneratorService = DocumentGeneratorServiceFromOssModel.getInstance(CHESSDiagramModel.getInstance(), ossModel);
+		documentGeneratorService.setParametersBeforeDocumentGeneration(parameterDialog.getShowPortLabels(), parameterDialog.getAutomaticPortLabelLayout(), outputDirectoryName, imageExtension, parameterDialog.getShowLeafComponents());
+
+		documentGeneratorService.createDocumentFile(currentProjectName, docFormat, ossModel.getSystem(), monitor);
+	}
+
+}
diff --git a/org.polarsys.chess.diagram.ui/.svn/pristine/82/82105d1a70324e02980d20c97b386c634185f29f.svn-base b/org.polarsys.chess.diagram.ui/.svn/pristine/82/82105d1a70324e02980d20c97b386c634185f29f.svn-base
new file mode 100644
index 000000000..a0b16f8a7
--- /dev/null
+++ b/org.polarsys.chess.diagram.ui/.svn/pristine/82/82105d1a70324e02980d20c97b386c634185f29f.svn-base
@@ -0,0 +1,27 @@
+Manifest-Version: 1.0
+Bundle-ManifestVersion: 2
+Bundle-Name: Ui
+Bundle-SymbolicName: org.polarsys.chess.diagram.ui;singleton:=true
+Bundle-Version: 1.0.0.qualifier
+Bundle-RequiredExecutionEnvironment: JavaSE-1.8
+Import-Package: org.polarsys.chess.utils
+Require-Bundle: org.eclipse.core.commands,
+ org.eclipse.swt,
+ org.eclipse.core.jobs,
+ org.eclipse.core.runtime,
+ org.eclipse.emf.ecore,
+ org.eclipse.uml2.uml,
+ eu.fbk.eclipse.standardtools.diagram.ui;bundle-version="1.0.0",
+ eu.fbk.eclipse.standardtools.diagram;bundle-version="1.0.0",
+ org.eclipse.ui.workbench,
+ org.eclipse.jface,
+ org.eclipse.gmf.runtime.diagram.ui,
+ org.eclipse.papyrus.infra.emf,
+ org.eclipse.papyrus.sysml.diagram.common,
+ org.eclipse.papyrus.uml.diagram.stereotype.edition,
+ org.eclipse.gmf.runtime.notation.edit,
+ org.eclipse.papyrus.infra.gmfdiag.css,
+ eu.fbk.eclipse.standardtools.utils,
+ eu.fbk.eclipse.standardtools.ModelTranslatorToOcra,
+ eu.fbk.tools.editor.oss,
+ org.polarsys.chess.verificationService
diff --git a/org.polarsys.chess.diagram.ui/.svn/pristine/84/840bb71c03bf83525100c2e64ed14e864bbbba56.svn-base b/org.polarsys.chess.diagram.ui/.svn/pristine/84/840bb71c03bf83525100c2e64ed14e864bbbba56.svn-base
new file mode 100644
index 000000000..b862a296d
--- /dev/null
+++ b/org.polarsys.chess.diagram.ui/.svn/pristine/84/840bb71c03bf83525100c2e64ed14e864bbbba56.svn-base
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<classpath>
+	<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.8"/>
+	<classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>
+	<classpathentry kind="src" path="src"/>
+	<classpathentry kind="output" path="bin"/>
+</classpath>
diff --git a/org.polarsys.chess.diagram.ui/.svn/pristine/8f/8fab20204a4496be629caae826128b7ee97a24f9.svn-base b/org.polarsys.chess.diagram.ui/.svn/pristine/8f/8fab20204a4496be629caae826128b7ee97a24f9.svn-base
new file mode 100644
index 000000000..fefa0cc28
--- /dev/null
+++ b/org.polarsys.chess.diagram.ui/.svn/pristine/8f/8fab20204a4496be629caae826128b7ee97a24f9.svn-base
@@ -0,0 +1,32 @@
+Manifest-Version: 1.0
+Bundle-ManifestVersion: 2
+Bundle-Name: Ui
+Bundle-SymbolicName: org.polarsys.chess.diagram.ui;singleton:=true
+Bundle-Version: 1.0.0.qualifier
+Bundle-RequiredExecutionEnvironment: JavaSE-1.8
+Import-Package: org.polarsys.chess.service.internal.utils
+Require-Bundle: org.eclipse.core.commands,
+ org.eclipse.swt,
+ org.eclipse.core.jobs,
+ org.eclipse.core.runtime,
+ org.eclipse.emf.ecore,
+ org.eclipse.uml2.uml,
+ eu.fbk.eclipse.standardtools.diagram.ui;bundle-version="1.0.0",
+ eu.fbk.eclipse.standardtools.diagram;bundle-version="1.0.0",
+ org.eclipse.ui.workbench,
+ org.eclipse.jface,
+ org.eclipse.gmf.runtime.diagram.ui,
+ org.eclipse.papyrus.infra.emf,
+ org.eclipse.papyrus.sysml.diagram.common,
+ org.eclipse.papyrus.uml.diagram.stereotype.edition,
+ org.eclipse.gmf.runtime.notation.edit,
+ org.eclipse.papyrus.infra.gmfdiag.css,
+ eu.fbk.eclipse.standardtools.utils,
+ eu.fbk.eclipse.standardtools.ModelTranslatorToOcra,
+ eu.fbk.tools.editor.oss,
+ org.polarsys.chess.verificationService;bundle-version="1.0.0",
+ org.polarsys.chess.core,
+ org.polarsys.chess.contracts.profile,
+ org.eclipse.papyrus.uml.tools,
+ org.eclipse.papyrus.sysml.diagram.internalblock;bundle-version="2.0.0",
+ org.eclipse.papyrus.sysml.diagram.blockdefinition;bundle-version="2.0.0"
diff --git a/org.polarsys.chess.diagram.ui/.svn/pristine/a1/a1b3cfce8c1e1ec767b72e2cbc8741475d99220f.svn-base b/org.polarsys.chess.diagram.ui/.svn/pristine/a1/a1b3cfce8c1e1ec767b72e2cbc8741475d99220f.svn-base
new file mode 100644
index 000000000..c1b435638
--- /dev/null
+++ b/org.polarsys.chess.diagram.ui/.svn/pristine/a1/a1b3cfce8c1e1ec767b72e2cbc8741475d99220f.svn-base
@@ -0,0 +1,34 @@
+Manifest-Version: 1.0
+Bundle-ManifestVersion: 2
+Bundle-Name: Ui
+Bundle-SymbolicName: org.polarsys.chess.diagram.ui;singleton:=true
+Bundle-Version: 1.0.0.qualifier
+Bundle-RequiredExecutionEnvironment: JavaSE-1.8
+Import-Package: org.polarsys.chess.service.internal.utils
+Require-Bundle: org.eclipse.core.commands,
+ org.eclipse.swt,
+ org.eclipse.core.jobs,
+ org.eclipse.core.runtime,
+ org.eclipse.emf.ecore,
+ org.eclipse.uml2.uml,
+ eu.fbk.eclipse.standardtools.diagram.ui;bundle-version="1.0.0",
+ eu.fbk.eclipse.standardtools.diagram;bundle-version="1.0.0",
+ org.eclipse.ui.workbench,
+ org.eclipse.jface,
+ org.eclipse.gmf.runtime.diagram.ui,
+ org.eclipse.papyrus.infra.emf,
+ org.eclipse.papyrus.sysml.diagram.common,
+ org.eclipse.papyrus.uml.diagram.stereotype.edition,
+ org.eclipse.gmf.runtime.notation.edit,
+ org.eclipse.papyrus.infra.gmfdiag.css,
+ eu.fbk.eclipse.standardtools.utils,
+ eu.fbk.eclipse.standardtools.ModelTranslatorToOcra,
+ eu.fbk.tools.editor.oss,
+ org.polarsys.chess.contracts.verificationService;bundle-version="1.0.0",
+ org.polarsys.chess.core,
+ org.polarsys.chess.contracts.profile,
+ org.eclipse.papyrus.uml.tools,
+ org.eclipse.papyrus.sysml.diagram.internalblock;bundle-version="2.0.0",
+ org.eclipse.papyrus.sysml.diagram.blockdefinition;bundle-version="2.0.0",
+ org.eclipse.papyrus.uml.diagram.profile;bundle-version="2.0.0",
+ org.eclipse.papyrus.uml.diagram.common
diff --git a/org.polarsys.chess.diagram.ui/.svn/pristine/b5/b508959255a37b6592178b67c657d13088f2b624.svn-base b/org.polarsys.chess.diagram.ui/.svn/pristine/b5/b508959255a37b6592178b67c657d13088f2b624.svn-base
new file mode 100644
index 000000000..d103fa320
--- /dev/null
+++ b/org.polarsys.chess.diagram.ui/.svn/pristine/b5/b508959255a37b6592178b67c657d13088f2b624.svn-base
@@ -0,0 +1,90 @@
+/*******************************************************************************
+ * Copyright (C) 2017 Fondazione Bruno Kessler.
+ * 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:
+ *     Alberto Debiasi - initial API and implementation
+ ******************************************************************************/
+package org.polarsys.chess.diagram.ui.commands;
+
+import org.eclipse.core.commands.ExecutionEvent;
+import org.eclipse.core.runtime.IProgressMonitor;
+import org.eclipse.gmf.runtime.diagram.ui.editparts.GraphicalEditPart;
+import org.polarsys.chess.diagram.ui.docGenerators.CHESSDiagramModel;
+import org.polarsys.chess.diagram.ui.utils.ExportDialogUtils;
+import org.polarsys.chess.utils.SelectionUtil;
+
+import eu.fbk.eclipse.standardtools.commands.AbstractAsyncJobCommand;
+import eu.fbk.eclipse.standardtools.diagram.ui.dialog.ModelToDocumentDialog;
+import eu.fbk.eclipse.standardtools.diagram.ui.docGenerators.DocumentGeneratorService;
+import eu.fbk.eclipse.standardtools.utils.DirectoryUtil;
+
+/**
+ * 
+ * @author Alberto
+ */
+public class ExportModelToDocumentCommand extends AbstractAsyncJobCommand {
+
+	public ExportModelToDocumentCommand() {
+		super("Export Model To Document");
+	}
+
+	private SelectionUtil selectionUtil = SelectionUtil.getInstance();
+	private DirectoryUtil directoryUtils = DirectoryUtil.getInstance();
+	private ExportDialogUtils exportDialogUtils = ExportDialogUtils.getInstance();
+	//private OCRAComponentToImage ocraComponentToImage = OCRAComponentToImage.getInstance();
+	private DocumentGeneratorService documentGeneratorService = DocumentGeneratorService.getInstance(CHESSDiagramModel.getInstance());
+	
+	
+	@Override
+	public void execJobCommand(ExecutionEvent event, IProgressMonitor monitor) throws Exception {
+
+		GraphicalEditPart selectedGraphicalComponent = selectionUtil.getSelectedGraphicalObject(event);
+
+		if (selectedGraphicalComponent != null) {
+
+			System.out.println("selectedGraphicalComponent: " + selectedGraphicalComponent);
+
+			ModelToDocumentDialog parameterDialog = exportDialogUtils.getCompiledModelToDocumentDialog();
+
+			if (!parameterDialog.goAhead()) {
+				return;
+			}
+
+			String docFormat = parameterDialog.getDocumentFormat();
+			String imageExtension = ".svg";
+			if (docFormat.equals("tex")) {
+				imageExtension = ".png";
+			}
+	
+			// setShowLeafComponents(showLeafComponents);
+			String outputDirectoryName = exportDialogUtils.getDirectoryNameFromDialog();
+			// setDirectoryName(directoryName);
+			if ((outputDirectoryName == null) || outputDirectoryName.isEmpty()) {
+				return;
+			}
+
+			String currentProjectName = directoryUtils.getCurrentProjectName();
+	
+			documentGeneratorService.setParametersBeforeDocumentGeneration
+			//setParametersBeforeExport
+			(parameterDialog.getShowPortLabels(), parameterDialog.getAutomaticPortLabelLayout(),
+					outputDirectoryName, imageExtension,parameterDialog.getShowLeafComponents());
+
+			// ocraComponentToImage.setXTranslation(150);
+			// ocraComponentToImage.setYTranslation(100);
+
+			documentGeneratorService.createDocumentFile(currentProjectName, docFormat, selectedGraphicalComponent,
+					 monitor);
+
+			exportDialogUtils.showMessage_ExportDone(outputDirectoryName);
+
+		}
+
+	}
+
+
+}
diff --git a/org.polarsys.chess.diagram.ui/.svn/pristine/bf/bf32700517e1d795aee527a4c60cea46fce2d484.svn-base b/org.polarsys.chess.diagram.ui/.svn/pristine/bf/bf32700517e1d795aee527a4c60cea46fce2d484.svn-base
new file mode 100644
index 000000000..a851dcac9
--- /dev/null
+++ b/org.polarsys.chess.diagram.ui/.svn/pristine/bf/bf32700517e1d795aee527a4c60cea46fce2d484.svn-base
@@ -0,0 +1,90 @@
+/*******************************************************************************
+ * Copyright (C) 2017 Fondazione Bruno Kessler.
+ * 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:
+ *     Alberto Debiasi - initial API and implementation
+ ******************************************************************************/
+package org.polarsys.chess.diagram.ui.commands;
+
+import org.eclipse.core.commands.ExecutionEvent;
+import org.eclipse.core.runtime.IProgressMonitor;
+import org.eclipse.gmf.runtime.diagram.ui.editparts.GraphicalEditPart;
+import org.polarsys.chess.diagram.ui.docGenerators.CHESSInternalBlockDiagramModel;
+import org.polarsys.chess.diagram.ui.utils.ExportDialogUtils;
+import org.polarsys.chess.service.internal.utils.SelectionUtil;
+
+import eu.fbk.eclipse.standardtools.commands.AbstractAsyncJobCommand;
+import eu.fbk.eclipse.standardtools.diagram.ui.dialog.ModelToDocumentDialog;
+import eu.fbk.eclipse.standardtools.diagram.ui.docGenerators.DocumentGeneratorService;
+import eu.fbk.eclipse.standardtools.utils.DirectoryUtil;
+
+/**
+ * 
+ * @author Alberto
+ */
+public class ExportModelToDocumentCommand extends AbstractAsyncJobCommand {
+
+	public ExportModelToDocumentCommand() {
+		super("Export Model To Document");
+	}
+
+	private SelectionUtil selectionUtil = SelectionUtil.getInstance();
+	private DirectoryUtil directoryUtils = DirectoryUtil.getInstance();
+	private ExportDialogUtils exportDialogUtils = ExportDialogUtils.getInstance();
+	//private OCRAComponentToImage ocraComponentToImage = OCRAComponentToImage.getInstance();
+	private DocumentGeneratorService documentGeneratorService = DocumentGeneratorService.getInstance(CHESSInternalBlockDiagramModel.getInstance());
+	
+	
+	@Override
+	public void execJobCommand(ExecutionEvent event, IProgressMonitor monitor) throws Exception {
+
+		GraphicalEditPart selectedGraphicalComponent = selectionUtil.getSelectedGraphicalObject(event);
+
+		if (selectedGraphicalComponent != null) {
+
+			System.out.println("selectedGraphicalComponent: " + selectedGraphicalComponent);
+
+			ModelToDocumentDialog parameterDialog = exportDialogUtils.getCompiledModelToDocumentDialog();
+
+			if (!parameterDialog.goAhead()) {
+				return;
+			}
+
+			String docFormat = parameterDialog.getDocumentFormat();
+			String imageExtension = ".svg";
+			if (docFormat.equals("tex")) {
+				imageExtension = ".png";
+			}
+	
+			// setShowLeafComponents(showLeafComponents);
+			String outputDirectoryName = exportDialogUtils.getDirectoryNameFromDialog();
+			// setDirectoryName(directoryName);
+			if ((outputDirectoryName == null) || outputDirectoryName.isEmpty()) {
+				return;
+			}
+
+			String currentProjectName = directoryUtils.getCurrentProjectName();
+	
+			documentGeneratorService.setParametersBeforeDocumentGeneration
+			//setParametersBeforeExport
+			(parameterDialog.getShowPortLabels(), parameterDialog.getAutomaticPortLabelLayout(),
+					outputDirectoryName, imageExtension,parameterDialog.getShowLeafComponents());
+
+			// ocraComponentToImage.setXTranslation(150);
+			// ocraComponentToImage.setYTranslation(100);
+
+			documentGeneratorService.createDocumentFile(currentProjectName, docFormat, selectedGraphicalComponent,
+					 monitor);
+
+			exportDialogUtils.showMessage_ExportDone(outputDirectoryName);
+
+		}
+
+	}
+
+
+}
diff --git a/org.polarsys.chess.diagram.ui/.svn/pristine/c1/c10808819694a69f14c72ee46666537feb615cff.svn-base b/org.polarsys.chess.diagram.ui/.svn/pristine/c1/c10808819694a69f14c72ee46666537feb615cff.svn-base
new file mode 100644
index 000000000..883eaa7dd
--- /dev/null
+++ b/org.polarsys.chess.diagram.ui/.svn/pristine/c1/c10808819694a69f14c72ee46666537feb615cff.svn-base
@@ -0,0 +1,28 @@
+Manifest-Version: 1.0
+Bundle-ManifestVersion: 2
+Bundle-Name: Ui
+Bundle-SymbolicName: org.polarsys.chess.diagram.ui;singleton:=true
+Bundle-Version: 1.0.0.qualifier
+Bundle-RequiredExecutionEnvironment: JavaSE-1.8
+Import-Package: org.polarsys.chess.service.internal.utils
+Require-Bundle: org.eclipse.core.commands,
+ org.eclipse.swt,
+ org.eclipse.core.jobs,
+ org.eclipse.core.runtime,
+ org.eclipse.emf.ecore,
+ org.eclipse.uml2.uml,
+ eu.fbk.eclipse.standardtools.diagram.ui;bundle-version="1.0.0",
+ eu.fbk.eclipse.standardtools.diagram;bundle-version="1.0.0",
+ org.eclipse.ui.workbench,
+ org.eclipse.jface,
+ org.eclipse.gmf.runtime.diagram.ui,
+ org.eclipse.papyrus.infra.emf,
+ org.eclipse.papyrus.sysml.diagram.common,
+ org.eclipse.papyrus.uml.diagram.stereotype.edition,
+ org.eclipse.gmf.runtime.notation.edit,
+ org.eclipse.papyrus.infra.gmfdiag.css,
+ eu.fbk.eclipse.standardtools.utils,
+ eu.fbk.eclipse.standardtools.ModelTranslatorToOcra,
+ eu.fbk.tools.editor.oss,
+ org.polarsys.chess.verificationService;bundle-version="1.0.0",
+ org.polarsys.chess.core
diff --git a/org.polarsys.chess.diagram.ui/.svn/pristine/cd/cd422adeddf618207b9c8ca271556e4d482aed3f.svn-base b/org.polarsys.chess.diagram.ui/.svn/pristine/cd/cd422adeddf618207b9c8ca271556e4d482aed3f.svn-base
new file mode 100644
index 000000000..4b46a65ef
--- /dev/null
+++ b/org.polarsys.chess.diagram.ui/.svn/pristine/cd/cd422adeddf618207b9c8ca271556e4d482aed3f.svn-base
@@ -0,0 +1,75 @@
+package org.polarsys.chess.diagram.ui.commands;
+
+import org.eclipse.core.commands.ExecutionEvent;
+import org.eclipse.core.runtime.IProgressMonitor;
+import org.eclipse.uml2.uml.Class;
+import org.polarsys.chess.diagram.ui.docGenerators.CHESSDiagramModel;
+import org.polarsys.chess.diagram.ui.utils.ExportDialogUtils;
+import org.polarsys.chess.service.internal.utils.SelectionUtil;
+import org.polarsys.chess.verificationService.model.ChessSystemModel;
+
+import eu.fbk.eclipse.standardtools.ModelTranslatorToOcra.services.OCRATranslatorService;
+import eu.fbk.eclipse.standardtools.commands.AbstractAsyncJobCommand;
+import eu.fbk.eclipse.standardtools.diagram.ui.dialog.ModelToDocumentDialog;
+import eu.fbk.eclipse.standardtools.diagram.ui.docGenerators.DocumentGeneratorServiceFromOssModel;
+import eu.fbk.eclipse.standardtools.dialogs.MessageTimeModelDialog;
+import eu.fbk.eclipse.standardtools.utils.DirectoryUtil;
+import eu.fbk.tools.editor.oss.oss.OSS;
+
+public class GenerateDocumentCommand extends AbstractAsyncJobCommand {
+
+	
+	private SelectionUtil selectionUtil = SelectionUtil.getInstance();
+	private ChessSystemModel chessToOCRAModelTranslator = ChessSystemModel.getInstance();
+	private OCRATranslatorService ocraTranslatorService = OCRATranslatorService.getInstance(chessToOCRAModelTranslator);
+	private ExportDialogUtils exportDialogUtils = ExportDialogUtils.getInstance();
+	
+	private DirectoryUtil directoryUtils = DirectoryUtil.getInstance();
+	
+	private DocumentGeneratorServiceFromOssModel documentGeneratorService ;
+	/**
+	 * @param commandName
+	 */
+	public GenerateDocumentCommand() {
+		super("Generate Documentation");
+	}
+
+	@Override
+	public void execJobCommand(ExecutionEvent event, IProgressMonitor monitor) throws Exception {
+		
+		
+		Class umlSelectedComponent = selectionUtil.getUmlComponentFromSelectedObject(event);
+		boolean isDiscreteTime = MessageTimeModelDialog.openQuestion();
+		
+		OSS ossModel = ocraTranslatorService.getOssModel(umlSelectedComponent, isDiscreteTime, monitor);
+		
+		ModelToDocumentDialog parameterDialog = exportDialogUtils.getCompiledModelToDocumentDialog();
+
+		if (!parameterDialog.goAhead()) {
+			return;
+		}
+
+		String docFormat = parameterDialog.getDocumentFormat();
+		String imageExtension = ".svg";
+		if (docFormat.equals("tex")) {
+			imageExtension = ".png";
+		}
+
+		// setShowLeafComponents(showLeafComponents);
+		String outputDirectoryName = exportDialogUtils.getDirectoryNameFromDialog();
+		// setDirectoryName(directoryName);
+		if ((outputDirectoryName == null) || outputDirectoryName.isEmpty()) {
+			return;
+		}
+		
+		String currentProjectName = directoryUtils.getCurrentProjectName();
+		System.out.println("currentProjectName: "+currentProjectName);
+		
+		
+		documentGeneratorService = DocumentGeneratorServiceFromOssModel.getInstance(CHESSDiagramModel.getInstance(), ossModel);
+		documentGeneratorService.setParametersBeforeDocumentGeneration(parameterDialog.getShowPortLabels(), parameterDialog.getAutomaticPortLabelLayout(), outputDirectoryName, imageExtension, parameterDialog.getShowLeafComponents());
+
+		documentGeneratorService.createDocumentFile(currentProjectName, docFormat, ossModel.getSystem(), monitor);
+	}
+
+}
diff --git a/org.polarsys.chess.diagram.ui/.svn/pristine/d0/d08020689d13fffee5a24476d2d3176b76a9242b.svn-base b/org.polarsys.chess.diagram.ui/.svn/pristine/d0/d08020689d13fffee5a24476d2d3176b76a9242b.svn-base
new file mode 100644
index 000000000..736c2f592
--- /dev/null
+++ b/org.polarsys.chess.diagram.ui/.svn/pristine/d0/d08020689d13fffee5a24476d2d3176b76a9242b.svn-base
@@ -0,0 +1,251 @@
+package org.polarsys.chess.diagram.ui.docGenerators;
+
+import java.awt.Dimension;
+import java.awt.Point;
+import java.util.ArrayList;
+import java.util.List;
+
+import org.eclipse.draw2d.ConnectionAnchor;
+import org.eclipse.emf.common.util.BasicEList;
+import org.eclipse.emf.ecore.EAnnotation;
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.gef.EditPart;
+import org.eclipse.gmf.runtime.diagram.ui.editparts.GraphicalEditPart;
+import org.eclipse.gmf.runtime.notation.LayoutConstraint;
+import org.eclipse.gmf.runtime.notation.View;
+import org.eclipse.papyrus.infra.gmfdiag.common.figure.node.PapyrusWrappingLabel;
+import org.eclipse.papyrus.infra.gmfdiag.css.CSSDecorationNodeImpl;
+import org.eclipse.papyrus.sysml.diagram.blockdefinition.edit.part.BlockDefinitionDiagramEditPart;
+import org.eclipse.papyrus.sysml.diagram.common.edit.part.AssociationEditPart;
+import org.eclipse.papyrus.sysml.diagram.common.figure.AssociationFigure;
+import org.eclipse.uml2.uml.Association;
+import org.polarsys.chess.contracts.profile.chesscontract.util.EntityUtil;
+
+import eu.fbk.eclipse.standardtools.diagram.ui.model.AbstractBlockDefinitionDiagramModel;
+
+public class CHESSBlockDefinitionDiagramModel implements AbstractBlockDefinitionDiagramModel{
+
+	private static  CHESSBlockDefinitionDiagramModel instance;
+	
+	public static CHESSBlockDefinitionDiagramModel getInstance(){
+		if(instance==null){
+			instance = new CHESSBlockDefinitionDiagramModel();
+		}
+		return instance;
+	}
+	
+	private EntityUtil entityUtil = EntityUtil.getInstance();
+	
+	
+	@Override
+	public String getGraphicalComponentName(Object graphicalComponent) {
+		
+		if(graphicalComponent instanceof EditPart){
+			System.out.println("is instanceof EditPart");
+		}
+		if(graphicalComponent instanceof GraphicalEditPart){
+			System.out.println("is instanceof GraphicalEditPart");
+		}
+		
+		EObject component = ((GraphicalEditPart) graphicalComponent).resolveSemanticElement();
+	return entityUtil.getComponentName(component);
+	}
+
+	@Override
+	public List<?> getGraphicalComponentsOfBDD(Object graphicalComponent) {
+		
+		System.out.println("getGraphicalComponentsOfBDD");
+		
+		if(graphicalComponent instanceof EditPart){
+			System.out.println("is instanceof EditPart");
+		}
+		if(graphicalComponent instanceof GraphicalEditPart){
+			System.out.println("is instanceof GraphicalEditPart");
+		}
+		if(graphicalComponent instanceof BlockDefinitionDiagramEditPart){
+			System.out.println("is instanceof BlockDefinitionDiagramEditPart");
+			
+			for(Object o : ((BlockDefinitionDiagramEditPart)graphicalComponent).getChildren()){
+				System.out.println("child: "+o);
+			}
+			return ((BlockDefinitionDiagramEditPart)graphicalComponent).getChildren();
+		}
+		return null;
+	}
+
+	@Override
+	public Dimension getGraphicalComponentDimension(Object graphicalComponent) {
+		org.eclipse.draw2d.geometry.Dimension domension = ((GraphicalEditPart) graphicalComponent).getFigure().getSize();
+		Dimension d = new Dimension(domension.width, domension.height);
+		return d;
+	}
+
+	@Override
+	public Point getGraphicalComponentPosition(Object component) {
+		
+	/*	if(component instanceof EditPart){
+			for(Object o : ((EditPart)component).getChildren()){
+				System.out.println("child of component: "+o);
+			}
+		}*/
+		
+		GraphicalEditPart graphicalComponent = (GraphicalEditPart) component;
+
+		int x = 0;
+		int y = 0;
+
+		x = graphicalComponent.getFigure().getBounds().x;
+		y = graphicalComponent.getFigure().getBounds().y;
+
+			Point point = new Point(x, y);
+
+		//Point parentPoint = getOwnerPosition(graphicalComponent.getParent());
+
+		//System.out.println("parentPoint: " + parentPoint);
+
+		//point.x = point.x + parentPoint.x;
+		//point.y = point.y + parentPoint.y;
+
+		return point;
+	}
+
+	@Override
+	public List<?> getCompositionAssociations(Object graphicalComponent) {
+		List<AssociationEditPart> compositionAssociations = new ArrayList<AssociationEditPart>();
+		
+		if(graphicalComponent instanceof BlockDefinitionDiagramEditPart){
+			System.out.println("is instanceof BlockDefinitionDiagramEditPart");
+			
+			for(Object o : ((BlockDefinitionDiagramEditPart)graphicalComponent).getConnections()){
+				System.out.println("connections: "+o);
+				if(o instanceof AssociationEditPart){
+					compositionAssociations.add((AssociationEditPart)o);
+				}
+			}
+			//return ((BlockDefinitionDiagramEditPart)graphicalComponent).getConnections();
+			return compositionAssociations;
+		}
+		return null;
+	}
+
+	@Override
+	public String getCompositionAssociationName(Object channel) {
+		AssociationEditPart association = ((AssociationEditPart)channel);
+		System.out.println("association.getModel(): "+association.getModel());
+		View v = ((View) association.getModel());
+		System.out.println("v.getElement(): "+v.getElement());
+		Association associationEleemnt = (Association)v.getElement();
+		return associationEleemnt.getName();
+	}
+
+	@Override
+	public List<Point> getLayoutCompositionAssociationPoints(Object channel) {
+		int[] pointList = null;
+		List<Point> points = new ArrayList<Point>();
+		
+		AssociationEditPart association = ((AssociationEditPart)channel);
+		//pointList = association.getConnectionFigure().getPoints().toIntArray();
+		
+
+		AssociationFigure associationFigure = (AssociationFigure)association.getFigure();
+		pointList =associationFigure.getPolygonPoints().toIntArray();
+		//pointList =associationFigure.getPoints().toIntArray();
+		
+		System.out.println("points");
+		for (int i = 0; i < pointList.length; i = i + 2) {
+			Point p = new Point(pointList[i], pointList[i + 1]);
+			System.out.println("p: "+p);
+			points.add(p);
+		}
+
+		return points;
+	}
+
+	@Override
+	public Point getCompositionAssociationLabelPosition(Object graphicalLabel) {
+		
+		PapyrusWrappingLabel lab = (PapyrusWrappingLabel)graphicalLabel;
+		
+		org.eclipse.draw2d.geometry.Point labelPoint = lab.getLocation();
+		return new Point(labelPoint.x, labelPoint.y);
+	/*	AssociationEditPart association = ((AssociationEditPart)graphicalAssociation);
+		
+		for(Object o : association.getNotationView().getVisibleChildren())
+		{
+			CSSDecorationNodeImpl decNode = (CSSDecorationNodeImpl)o;
+			
+			System.out.println("o: "+o);
+			
+			for(Object o2:decNode.getPersistedChildren()){
+				System.out.println("getPersistedChildren: "+o2);
+			}
+			
+			for(Object o2:decNode.getSourceEdges()){
+				System.out.println("getSourceEdges: "+o2);
+			}
+			
+			for(Object o2:decNode.getTargetEdges()){
+				System.out.println("getTargetEdges: "+o2);
+			}
+			
+			LayoutConstraint lc = decNode.getLayoutConstraint();
+			
+		}
+		
+	
+		
+		for(Object o : association.getConnectionFigure().getChildren())
+		{
+			PapyrusWrappingLabel lab = (PapyrusWrappingLabel)o;
+			lab.getText();
+			lab.getLocation()
+			System.out.println(o.getClass());
+			System.out.println("getConnectionFigure().getChildren(): "+o);
+		}
+		
+		
+		
+		org.eclipse.draw2d.geometry.Point midPoint = association.getConnectionFigure().getPoints().getMidpoint();
+		return new Point(midPoint.x, midPoint.y);*/
+		
+		
+	}
+
+	
+	
+	@Override
+	public String getCompositionAssociationLabelText(Object graphicalLabel) {
+		PapyrusWrappingLabel lab = (PapyrusWrappingLabel)graphicalLabel;
+		return lab.getText();
+	}
+
+	@Override
+	public List<?> getCompositionAssociationsLabels(Object graphicalAssociation) {
+		AssociationEditPart association = ((AssociationEditPart)graphicalAssociation);
+		
+		List<PapyrusWrappingLabel> labels = new ArrayList<PapyrusWrappingLabel>();
+		for(Object o : association.getConnectionFigure().getChildren())
+		{
+			//System.out.println("o.getClass(): "+o.getClass());
+			//System.out.println("getConnectionFigure().getChildren(): "+o);
+			if(o instanceof PapyrusWrappingLabel){
+			PapyrusWrappingLabel lab = (PapyrusWrappingLabel)o;
+			//System.out.println("lab: "+lab);
+			//System.out.println("lab.text: "+lab.getText());
+			//System.out.println("lab.isShowing(): "+lab.isShowing());
+					//System.out.println("lab.isVisible():"+lab.isVisible());
+						//	System.out.println("lab.isEnabled(): "+lab.isEnabled());
+							if((lab.getText().compareTo("")!=0)&(lab.isShowing())){
+							labels.add(lab);
+							}
+			}
+			
+		}
+		
+		return labels;
+		
+	}
+
+	
+	
+}
diff --git a/org.polarsys.chess.diagram.ui/.svn/pristine/d1/d1b10e7f32fbc82d149503e4d92730c0ca3e7f81.svn-base b/org.polarsys.chess.diagram.ui/.svn/pristine/d1/d1b10e7f32fbc82d149503e4d92730c0ca3e7f81.svn-base
new file mode 100644
index 000000000..30b6b847a
--- /dev/null
+++ b/org.polarsys.chess.diagram.ui/.svn/pristine/d1/d1b10e7f32fbc82d149503e4d92730c0ca3e7f81.svn-base
@@ -0,0 +1,34 @@
+Manifest-Version: 1.0
+Bundle-ManifestVersion: 2
+Bundle-Name: Ui
+Bundle-SymbolicName: org.polarsys.chess.diagram.ui;singleton:=true
+Bundle-Version: 1.0.0.qualifier
+Bundle-RequiredExecutionEnvironment: JavaSE-1.8
+Import-Package: org.polarsys.chess.service.internal.utils
+Require-Bundle: org.eclipse.core.commands,
+ org.eclipse.swt,
+ org.eclipse.core.jobs,
+ org.eclipse.core.runtime,
+ org.eclipse.emf.ecore,
+ org.eclipse.uml2.uml,
+ eu.fbk.eclipse.standardtools.diagram.ui;bundle-version="1.0.0",
+ eu.fbk.eclipse.standardtools.diagram;bundle-version="1.0.0",
+ org.eclipse.ui.workbench,
+ org.eclipse.jface,
+ org.eclipse.gmf.runtime.diagram.ui,
+ org.eclipse.papyrus.infra.emf,
+ org.eclipse.papyrus.sysml.diagram.common,
+ org.eclipse.papyrus.uml.diagram.stereotype.edition,
+ org.eclipse.gmf.runtime.notation.edit,
+ org.eclipse.papyrus.infra.gmfdiag.css,
+ eu.fbk.eclipse.standardtools.utils,
+ eu.fbk.eclipse.standardtools.ModelTranslatorToOcra,
+ eu.fbk.tools.editor.oss,
+ org.polarsys.chess.verificationService;bundle-version="1.0.0",
+ org.polarsys.chess.core,
+ org.polarsys.chess.contracts.profile,
+ org.eclipse.papyrus.uml.tools,
+ org.eclipse.papyrus.sysml.diagram.internalblock;bundle-version="2.0.0",
+ org.eclipse.papyrus.sysml.diagram.blockdefinition;bundle-version="2.0.0",
+ org.eclipse.papyrus.uml.diagram.profile;bundle-version="2.0.0",
+ org.eclipse.papyrus.uml.diagram.common
diff --git a/org.polarsys.chess.diagram.ui/.svn/pristine/d5/d598a9656bc6c87b876c63a2bad34c9f9738b33e.svn-base b/org.polarsys.chess.diagram.ui/.svn/pristine/d5/d598a9656bc6c87b876c63a2bad34c9f9738b33e.svn-base
new file mode 100644
index 000000000..865469829
--- /dev/null
+++ b/org.polarsys.chess.diagram.ui/.svn/pristine/d5/d598a9656bc6c87b876c63a2bad34c9f9738b33e.svn-base
@@ -0,0 +1,222 @@
+package org.polarsys.chess.diagram.ui.services;
+
+import java.io.File;
+import java.net.MalformedURLException;
+import java.util.Collection;
+import java.util.HashSet;
+import java.util.Set;
+
+import org.eclipse.papyrus.sysml.diagram.common.edit.part.BlockCompositeEditPart;
+import org.eclipse.papyrus.sysml.diagram.internalblock.edit.part.InternalBlockDiagramEditPart;
+import org.eclipse.papyrus.sysml.diagram.blockdefinition.edit.part.BlockDefinitionDiagramEditPart;
+import org.apache.commons.io.FilenameUtils;
+import org.eclipse.core.runtime.IProgressMonitor;
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.emf.ecore.resource.Resource;
+import org.eclipse.gef.EditPart;
+import org.eclipse.gef.RootEditPart;
+import org.eclipse.gmf.runtime.diagram.ui.OffscreenEditPartFactory;
+import org.eclipse.gmf.runtime.notation.Diagram;
+import org.eclipse.papyrus.infra.gmfdiag.common.model.NotationModel;
+import org.eclipse.papyrus.infra.gmfdiag.common.model.NotationUtils;
+import org.eclipse.papyrus.infra.gmfdiag.common.utils.DiagramUtils;
+import org.eclipse.swt.widgets.Shell;
+import org.eclipse.ui.PlatformUI;
+import org.eclipse.uml2.uml.Class;
+
+import eu.fbk.eclipse.standardtools.diagram.ContainterDescriptor;
+import eu.fbk.eclipse.standardtools.diagram.DiagramDescriptor;
+import eu.fbk.eclipse.standardtools.diagram.ui.docGenerators.BlockDefinitionDiagramGeneratorService;
+import eu.fbk.eclipse.standardtools.diagram.ui.docGenerators.InternalBlockDiagramGeneratorService;
+import eu.fbk.eclipse.standardtools.diagram.ui.model.AbstractBlockDefinitionDiagramModel;
+import eu.fbk.eclipse.standardtools.diagram.ui.model.AbstractInternalBlockDiagramModel;
+
+public class CHESSDiagramsGeneratorService {
+	
+	private static CHESSDiagramsGeneratorService instance;
+	
+	final private static String IBD = "InternalBlock"; 
+	final private static String BDD = "BlockDefinition";
+	
+	public static CHESSDiagramsGeneratorService getInstance(AbstractInternalBlockDiagramModel ibdModel,AbstractBlockDefinitionDiagramModel bddModel){
+		if(instance==null){
+			instance = new CHESSDiagramsGeneratorService(ibdModel, bddModel);
+		}
+		return instance;
+	}
+	
+	
+	
+	public CHESSDiagramsGeneratorService(AbstractInternalBlockDiagramModel ibdModel, AbstractBlockDefinitionDiagramModel bddModel) {
+		super();
+		//graphicalModel = graphModel;
+		ibdGeneratorService = InternalBlockDiagramGeneratorService.getInstance(ibdModel);
+		bddGeneratorService = BlockDefinitionDiagramGeneratorService.getInstance(bddModel);
+	}
+
+
+
+	//private static AbstractDiagramModel graphicalModel;	
+	private InternalBlockDiagramGeneratorService ibdGeneratorService;
+	private BlockDefinitionDiagramGeneratorService bddGeneratorService;
+
+	
+	private String directoryName;
+	private String imageExtension;
+	
+
+	
+	public void setParametersBeforeDiagramsGenerator(
+			String directoryName, String imageExtension, 
+			boolean showPortLabels, boolean automaticLabelLayout) {
+		
+		this.directoryName=directoryName;
+		this.imageExtension=imageExtension;
+		
+		
+		ibdGeneratorService.setParametersBeforeDiagramGenerator(showPortLabels, automaticLabelLayout);
+		bddGeneratorService.setParametersBeforeDiagramGenerator(showPortLabels, automaticLabelLayout);
+	}
+	
+	public DiagramDescriptor createDiagramWithDescriptor(Diagram diagram, IProgressMonitor monitor){
+		EObject diagramOwner = DiagramUtils.getOwner(diagram);
+		String diagramName = "";
+		String ownerName = null;
+		if(diagramOwner instanceof Class){
+		ownerName = ((Class)diagramOwner).getName();
+		diagramName = ownerName+"_"+diagram.getName();
+		}else{
+			diagramName = diagram.getName();
+		}
+		
+		if(diagram.getName().compareTo("Contracts")!=0){
+		createDiagram(diagram,diagramName, monitor);
+		}
+		return createDiagramDescriptor(diagramName,ownerName);
+	}
+	
+	
+	
+	private void createDiagram(Diagram diagram,String diagramName, IProgressMonitor monitor){
+		Shell shell = PlatformUI.getWorkbench().getActiveWorkbenchWindow().getShell();
+		
+		System.out.println("diagram name: "+diagram.getName());
+		System.out.println("diagram type: "+diagram.getType());
+		
+		EditPart editPart = OffscreenEditPartFactory.getInstance().createDiagramEditPart(diagram, shell);
+
+		RootEditPart root = editPart.getRoot();
+		System.out.println("root: "+root);
+		
+		if(isInternalBlockDiagram(diagram)){
+		InternalBlockDiagramEditPart idb = (InternalBlockDiagramEditPart) root.getChildren().get(0);
+		BlockCompositeEditPart graphicalComponent = (BlockCompositeEditPart)idb.getChildren().get(0);
+		
+	ibdGeneratorService.createDiagramFile(getComponentImageFilePath(diagramName), graphicalComponent, monitor);
+		}else if(isBlockDefinitionDiagram(diagram)){
+			System.out.println("isBlockDefinitionDiagram");
+			BlockDefinitionDiagramEditPart bdd = (BlockDefinitionDiagramEditPart) root.getChildren().get(0);
+			for(Object o : bdd.getChildren()){
+				System.out.println("o: "+o);
+			}
+			
+			bddGeneratorService.createDiagramFile(getComponentImageFilePath(diagramName), bdd, monitor);
+			
+		}
+	}
+	
+	private DiagramDescriptor createDiagramDescriptor(String diagramName, String ownerName){
+		String saveFilePath = getComponentImageFilePath(diagramName);
+		System.out.println("saveFilePath: "+saveFilePath);
+		// diagramGeneratorService.createDiagramFile(saveFilePath, component,
+		// monitor);
+		final DiagramDescriptor diagramDescriptor = //diagramGeneratorService.
+				createDiagramDescriptorWithImageFileUrl(diagramName, saveFilePath,ownerName);
+		return diagramDescriptor;
+	}
+	
+	private DiagramDescriptor createDiagramDescriptorWithImageFileUrl(String diagramName, String saveFilePath,String owner) {
+		DiagramDescriptor diagramDescriptor = new DiagramDescriptor();
+		diagramDescriptor.name = diagramName;
+		if(owner!=null){
+		diagramDescriptor.ownerName = owner;
+		}
+		String diagramFileName;
+		try {
+			diagramFileName = new File(saveFilePath).toURI().toURL().getFile();
+		} catch (MalformedURLException e) {
+			return null;
+		}
+
+		diagramDescriptor.url = FilenameUtils.getName(diagramFileName);
+
+		return diagramDescriptor;
+	}
+	
+	public Collection<Diagram> getDiagrams() {
+		
+		NotationModel notationModel = NotationUtils.getNotationModel();
+		Set<Diagram> diagrams =  getIBD_BDD_Diagrams(notationModel.getResources());
+		System.out.println("diagrams");
+		for (Diagram c : diagrams) {
+			System.out.println(c);			
+		}
+		return diagrams;
+	
+	}
+
+	public Set<Diagram> getDiagrams(Set<Resource> resources){
+		
+		Set<Diagram> diagrams = new HashSet<Diagram>();
+		
+		for (Resource current : resources) {
+			for (EObject element : current.getContents()) {
+				if (element instanceof Diagram) {
+					diagrams.add((Diagram)element);
+					}
+				}
+			}
+		
+		return diagrams;
+	}
+	
+private Set<Diagram> getIBD_BDD_Diagrams(Set<Resource> resources){
+		
+		Set<Diagram> diagrams = new HashSet<Diagram>();
+		
+		for (Resource current : resources) {
+			for (EObject element : current.getContents()) {
+				if (element instanceof Diagram) {
+					Diagram diagram = (Diagram)element;
+					System.out.println("diagram type: "+diagram.getType());
+					
+					if (isBlockDefinitionDiagram(diagram)||isInternalBlockDiagram(diagram)){
+					diagrams.add((Diagram)element);
+					}
+					}
+				}
+			}
+		
+		return diagrams;
+	}
+	
+	
+private boolean isBlockDefinitionDiagram(Diagram diagram){
+	if(diagram.getType().compareTo(BDD)==0){
+		return true;
+	}
+	return false;
+}
+
+private boolean isInternalBlockDiagram(Diagram diagram){
+	if(diagram.getType().compareTo(IBD)==0){
+		return true;
+	}
+	return false;
+}
+	
+	private String getComponentImageFilePath(String fileName) {
+			return directoryName + File.separator + fileName + imageExtension;
+		}
+	
+}
diff --git a/org.polarsys.chess.diagram.ui/.svn/pristine/da/da259f35cc3b1f65cfd54a41d0b1f1f34b9c9e88.svn-base b/org.polarsys.chess.diagram.ui/.svn/pristine/da/da259f35cc3b1f65cfd54a41d0b1f1f34b9c9e88.svn-base
new file mode 100644
index 000000000..8ac1534d9
--- /dev/null
+++ b/org.polarsys.chess.diagram.ui/.svn/pristine/da/da259f35cc3b1f65cfd54a41d0b1f1f34b9c9e88.svn-base
@@ -0,0 +1,84 @@
+/*******************************************************************************
+ * Copyright (C) 2017 Fondazione Bruno Kessler.
+ * 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:
+ *     Alberto Debiasi - initial API and implementation
+ ******************************************************************************/
+package org.polarsys.chess.diagram.ui.commands;
+
+import org.eclipse.core.commands.ExecutionEvent;
+import org.eclipse.core.runtime.IProgressMonitor;
+import org.eclipse.gmf.runtime.diagram.ui.editparts.GraphicalEditPart;
+import org.polarsys.chess.diagram.ui.docGenerators.CHESSInternalBlockDiagramModel;
+import org.polarsys.chess.diagram.ui.utils.ExportDialogUtils;
+
+import eu.fbk.eclipse.standardtools.commands.AbstractAsyncJobCommand;
+import eu.fbk.eclipse.standardtools.diagram.ui.dialog.ComponentToImageDialog;
+import eu.fbk.eclipse.standardtools.diagram.ui.docGenerators.InternalBlockDiagramGeneratorService;
+import eu.fbk.eclipse.standardtools.utils.DirectoryUtil;
+import org.polarsys.chess.service.internal.utils.SelectionUtil;
+
+/**
+ * 
+ * @author Alberto
+ */
+public class ExportComponentToImageCommand extends AbstractAsyncJobCommand {
+
+	private SelectionUtil selectionUtil = SelectionUtil.getInstance();
+	private DirectoryUtil directoryUtils = DirectoryUtil.getInstance();
+	private ExportDialogUtils exportDialogUtils = ExportDialogUtils.getInstance();	
+	
+	//private OCRAComponentToImage ocraComponentToImage = OCRAComponentToImage.getInstance();
+	//private DocumentGeneratorService ocraComponentToImage = DocumentGeneratorService.getInstance(CHESSGraphicalModel.getInstance());
+	private InternalBlockDiagramGeneratorService diagramGeneratorService = InternalBlockDiagramGeneratorService.getInstance(CHESSInternalBlockDiagramModel.getInstance());
+	
+	
+	public ExportComponentToImageCommand() {
+		super("Export Component To Image Command");
+	}
+
+	@Override
+	public void execJobCommand(ExecutionEvent event, IProgressMonitor monitor) throws Exception {
+		
+		System.out.println();
+		
+		GraphicalEditPart selectedGraphicalComponent = selectionUtil
+				.getSelectedGraphicalObject(event);
+
+		System.out.println("selectedGraphicalComponent: "+selectedGraphicalComponent);
+		
+		if (selectedGraphicalComponent != null) {
+
+			final ComponentToImageDialog parameterDialog = exportDialogUtils
+					.getCompiledComponentToImageDialog();
+
+			if (!parameterDialog.goAhead()) {
+				return;
+			}
+
+			String projectDir = directoryUtils.getCurrentProjectDir();
+			String imageName = diagramGeneratorService.getImageName(
+					selectedGraphicalComponent)+ "." + parameterDialog.getImageFormat() ;
+
+			String imageFilePath = exportDialogUtils.openImageDialog(projectDir, imageName);
+			if ((imageFilePath == null) || imageFilePath.isEmpty()) {
+				return;
+			}
+
+			diagramGeneratorService.setParametersBeforeDiagramGenerator
+			//setParametersBeforeExport
+			(parameterDialog.getShowPortLabels(),
+					parameterDialog.getAutomaticPortLabelLayout());
+			diagramGeneratorService.createDiagramFile(imageFilePath, selectedGraphicalComponent,monitor);
+			exportDialogUtils.showMessage_ExportDone(imageFilePath);
+		}
+	
+	}
+
+	
+
+}
diff --git a/org.polarsys.chess.diagram.ui/.svn/pristine/dd/dd5379f5577796f4072e8f49e57512e2a99418a9.svn-base b/org.polarsys.chess.diagram.ui/.svn/pristine/dd/dd5379f5577796f4072e8f49e57512e2a99418a9.svn-base
new file mode 100644
index 000000000..7f3285f4e
--- /dev/null
+++ b/org.polarsys.chess.diagram.ui/.svn/pristine/dd/dd5379f5577796f4072e8f49e57512e2a99418a9.svn-base
@@ -0,0 +1,73 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<?eclipse version="3.4"?>
+<plugin>
+   <extension
+         point="org.eclipse.ui.menus">     
+            <menuContribution
+            allPopups="false"            
+            locationURI="menu:org.eclipse.ui.main.menu.AMASS?after=org.eclipse.ui.main.menu.AMASS.funcVer">
+            <menu
+               label="Safety Case"
+            id="org.eclipse.ui.main.menu.AMASS.safetyCase">
+         <menu
+               label="Document Generation"
+               id="org.eclipse.ui.main.menu.AMASS.docGen">
+            <command
+                  commandId="org.polarsys.chess.diagram.ui.commands.ExportComponentToImageCommand"
+                  style="push">
+            </command>
+            <command
+                  commandId="org.polarsys.chess.diagram.ui.commands.ExportModelToDocumentCommand"
+                  style="push">
+            </command>
+            <command
+                  commandId="org.polarsys.chess.diagram.ui.commands.GenerateDocumentCommand"
+                  style="push">
+            </command>
+         </menu>        
+         </menu>        
+      </menuContribution>
+     <menuContribution
+            allPopups="false"            
+            locationURI="popup:org.eclipse.ui.main.diagramEditorMenu.AMASS?after=org.eclipse.ui.main.diagramEditorMenu.AMASS.funcVer">              
+           <menu
+               label="Safety Case"
+            id="org.eclipse.ui.main.diagramEditorMenu.AMASS.safetyCase">
+         <menu
+               label="Document Generation"
+               id="org.eclipse.ui.main.diagramEditorMenu.AMASS.docGen">
+            <command
+                  commandId="org.polarsys.chess.diagram.ui.commands.ExportComponentToImageCommand"
+                  style="push">
+            </command>
+            <command
+                  commandId="org.polarsys.chess.diagram.ui.commands.ExportModelToDocumentCommand"
+                  style="push">
+            </command>
+            <command
+                  commandId="org.polarsys.chess.diagram.ui.commands.GenerateDocumentCommand"
+                  style="push">
+            </command>
+         </menu>        
+         </menu>    
+              </menuContribution>                         
+   </extension>
+   <extension
+         point="org.eclipse.ui.commands">
+      <command
+            defaultHandler="org.polarsys.chess.diagram.ui.commands.ExportComponentToImageCommand"
+            id="org.polarsys.chess.diagram.ui.commands.ExportComponentToImageCommand"
+            name="Export Selected Graphical Component as Image">
+      </command>
+      <command
+            defaultHandler="org.polarsys.chess.diagram.ui.commands.ExportModelToDocumentCommand"
+            id="org.polarsys.chess.diagram.ui.commands.ExportModelToDocumentCommand"
+            name="Export Selected Graphical Component as Document">
+      </command>
+      <command
+            defaultHandler="org.polarsys.chess.diagram.ui.commands.GenerateDocumentCommand"
+            id="org.polarsys.chess.diagram.ui.commands.GenerateDocumentCommand"
+            name="Generate Documentation from selected component">
+      </command>
+   </extension> 
+</plugin>
diff --git a/org.polarsys.chess.diagram.ui/.svn/pristine/e7/e72e6532a65328403be9911bc09cdc565857cbfa.svn-base b/org.polarsys.chess.diagram.ui/.svn/pristine/e7/e72e6532a65328403be9911bc09cdc565857cbfa.svn-base
new file mode 100644
index 000000000..f8d8130cd
--- /dev/null
+++ b/org.polarsys.chess.diagram.ui/.svn/pristine/e7/e72e6532a65328403be9911bc09cdc565857cbfa.svn-base
@@ -0,0 +1,113 @@
+package org.polarsys.chess.diagram.ui.commands;
+
+import java.util.HashSet;
+import java.util.Set;
+
+import org.eclipse.core.commands.ExecutionEvent;
+import org.eclipse.core.runtime.IProgressMonitor;
+import org.eclipse.gmf.runtime.notation.Diagram;
+import org.eclipse.uml2.uml.Class;
+import org.polarsys.chess.diagram.ui.docGenerators.CHESSBlockDefinitionDiagramModel;
+import org.polarsys.chess.diagram.ui.docGenerators.CHESSInternalBlockDiagramModel;
+import org.polarsys.chess.diagram.ui.services.CHESSDiagramsGeneratorService;
+import org.polarsys.chess.diagram.ui.utils.ExportDialogUtils;
+import org.polarsys.chess.service.internal.utils.SelectionUtil;
+import org.polarsys.chess.verificationService.model.ChessSystemModel;
+
+import eu.fbk.eclipse.standardtools.ModelTranslatorToOcra.services.OCRATranslatorService;
+import eu.fbk.eclipse.standardtools.commands.AbstractAsyncJobCommand;
+import eu.fbk.eclipse.standardtools.diagram.DiagramDescriptor;
+import eu.fbk.eclipse.standardtools.diagram.DocumentGenerator;
+import eu.fbk.eclipse.standardtools.diagram.ui.dialog.ModelToDocumentDialog;
+import eu.fbk.eclipse.standardtools.diagram.ui.docGenerators.DocumentGeneratorServiceFromOssModel;
+import eu.fbk.eclipse.standardtools.diagram.ui.services.DiagramDialogUtil;
+import eu.fbk.eclipse.standardtools.dialogs.MessageTimeModelDialog;
+import eu.fbk.eclipse.standardtools.utils.DirectoryUtil;
+import eu.fbk.tools.editor.oss.oss.OSS;
+
+public class GenerateDocumentCommand extends AbstractAsyncJobCommand {
+
+	
+	private SelectionUtil selectionUtil = SelectionUtil.getInstance();
+	private ChessSystemModel chessToOCRAModelTranslator = ChessSystemModel.getInstance();
+	private OCRATranslatorService ocraTranslatorService = OCRATranslatorService.getInstance(chessToOCRAModelTranslator);
+	private ExportDialogUtils exportDialogUtils = ExportDialogUtils.getInstance();
+	private CHESSDiagramsGeneratorService chessDiagramsGeneratorService = CHESSDiagramsGeneratorService.getInstance(CHESSInternalBlockDiagramModel.getInstance(),CHESSBlockDefinitionDiagramModel.getInstance());
+	
+	
+	private DirectoryUtil directoryUtils = DirectoryUtil.getInstance();
+	
+	private DocumentGeneratorServiceFromOssModel documentGeneratorService ;
+	/**
+	 * @param commandName
+	 */
+	public GenerateDocumentCommand() {
+		super("Generate Documentation");
+	}
+
+	@Override
+	public void execJobCommand(ExecutionEvent event, IProgressMonitor monitor) throws Exception {
+		
+		
+		Class umlSelectedComponent = selectionUtil.getUmlComponentFromSelectedObject(event);
+		boolean isDiscreteTime = MessageTimeModelDialog.openQuestion();
+		
+		OSS ossModel = ocraTranslatorService.getOssModel(umlSelectedComponent, isDiscreteTime, monitor);
+		
+		ModelToDocumentDialog parameterDialog = exportDialogUtils.getCompiledModelToDocumentDialog();
+
+		if (!parameterDialog.goAhead()) {
+			return;
+		}
+
+		String docFormat = parameterDialog.getDocumentFormat();
+		String imageExtension = ".svg";
+		if (docFormat.equals("tex")) {
+			imageExtension = ".png";
+		}
+
+		// setShowLeafComponents(showLeafComponents);
+		String outputDirectoryName = exportDialogUtils.getDirectoryNameFromDialog();
+		// setDirectoryName(directoryName);
+		if ((outputDirectoryName == null) || outputDirectoryName.isEmpty()) {
+			return;
+		}
+		
+		String currentProjectName = directoryUtils.getCurrentProjectName();
+		System.out.println("currentProjectName: "+currentProjectName);
+		
+		
+		//documentGeneratorService = DocumentGeneratorServiceFromOssModel.getInstance(CHESSDiagramModel.getInstance(), ossModel);
+		documentGeneratorService = new DocumentGeneratorServiceFromOssModel(ossModel);
+		documentGeneratorService.setParametersBeforeDocumentGeneration(
+				//parameterDialog.getShowPortLabels(), parameterDialog.getAutomaticPortLabelLayout(),
+				outputDirectoryName, imageExtension, parameterDialog.getShowLeafComponents());
+		DocumentGenerator documentGenerator = documentGeneratorService.createDocumentFile(currentProjectName, docFormat, ossModel.getSystem(), monitor);
+		
+		
+		//documentGeneratorService.setParametersBeforeDiagramsGenerator(
+			//	outputDirectoryName, imageExtension,parameterDialog.getShowPortLabels(), parameterDialog.getAutomaticPortLabelLayout());
+	
+		
+		
+		chessDiagramsGeneratorService.setParametersBeforeDiagramsGenerator(outputDirectoryName, 
+				imageExtension, 
+				parameterDialog.getShowPortLabels(), 
+				parameterDialog.getAutomaticPortLabelLayout());
+		
+		Set<DiagramDescriptor> diagramDescriptors = new HashSet<DiagramDescriptor>();		
+		for(Diagram diagram : chessDiagramsGeneratorService.getDiagrams()){			
+		//chessDiagramsGeneratorService.createDiagram(diagram, monitor);
+			DiagramDescriptor dd = chessDiagramsGeneratorService.createDiagramWithDescriptor(diagram, monitor);
+			if(dd!=null){
+			diagramDescriptors.add(dd);
+			}
+		}
+		
+													   
+		documentGeneratorService.addDiagramDescriptors(diagramDescriptors, documentGenerator);
+		documentGeneratorService.generateDocument(documentGenerator);
+		
+	}
+
+}
diff --git a/org.polarsys.chess.diagram.ui/.svn/pristine/e9/e9219cb5d0bf4a113c47cfb404bfa5ef1fa630cc.svn-base b/org.polarsys.chess.diagram.ui/.svn/pristine/e9/e9219cb5d0bf4a113c47cfb404bfa5ef1fa630cc.svn-base
new file mode 100644
index 000000000..f234071d1
--- /dev/null
+++ b/org.polarsys.chess.diagram.ui/.svn/pristine/e9/e9219cb5d0bf4a113c47cfb404bfa5ef1fa630cc.svn-base
@@ -0,0 +1,106 @@
+/**
+ * 
+ */
+package org.polarsys.chess.diagram.ui.utils;
+
+import org.eclipse.jface.dialogs.MessageDialog;
+import org.eclipse.swt.SWT;
+import org.eclipse.swt.widgets.DirectoryDialog;
+import org.eclipse.swt.widgets.Display;
+import org.eclipse.swt.widgets.FileDialog;
+import org.eclipse.swt.widgets.Shell;
+import org.eclipse.ui.PlatformUI;
+
+import eu.fbk.eclipse.standardtools.diagram.ui.dialog.ComponentToImageDialog;
+import eu.fbk.eclipse.standardtools.diagram.ui.dialog.ModelToDocumentDialog;
+import eu.fbk.eclipse.standardtools.utils.DirectoryUtil;
+
+/**
+ * 
+ *
+ */
+public class ExportDialogUtils {
+
+	private DirectoryUtil directoryUtils = DirectoryUtil.getInstance();
+	private static ExportDialogUtils exportDialogUtils;
+
+	public static ExportDialogUtils getInstance() {
+		if (exportDialogUtils == null) {
+			exportDialogUtils = new ExportDialogUtils();
+		}
+		return exportDialogUtils;
+	}
+
+	public void showMessage_ExportDone(String filePath) {
+
+		Display defaultDisplay = Display.getDefault();
+
+		defaultDisplay.syncExec(new Runnable() {
+					@Override
+					public void run() {		
+					Shell currShell=defaultDisplay.getActiveShell();
+					MessageDialog.openInformation(currShell, "Info",
+							"The model is exported in " + filePath + ".");
+					}
+				});
+			}
+	
+	public String getDirectoryNameFromDialog() throws Exception {
+		final Shell shell = PlatformUI.getWorkbench().getActiveWorkbenchWindow().getShell();
+
+		final DirectoryDialog directoryDialog = new DirectoryDialog(shell);
+		directoryDialog.setText("Select the directory");
+		// try {
+		directoryDialog.setFilterPath(directoryUtils.getCurrentProjectDir());
+		/*
+		 * } catch(Exception e) { e.printStackTrace(); }
+		 */
+		// dd.setFilterPath(getWorkspace().getRoot().getLocation().toString());
+
+		String directoryName = directoryDialog.open();
+
+		return directoryName;
+	}
+
+	public String openImageDialog(String projectDir, String imageName) {
+		//Shell shell2 = PlatformUI.getWorkbench().getActiveWorkbenchWindow().getShell();
+		
+		Shell shell = Display.getDefault().getActiveShell();
+
+		//System.out.println("shell2: "+shell2);
+		System.out.println("shell: "+shell);
+		
+		final FileDialog fd = new FileDialog(shell, SWT.SAVE);
+		fd.setText("Set target file");
+		// try {
+		fd.setFilterPath(projectDir);
+		/*
+		 * } catch(Exception e) { e.printStackTrace(); }
+		 */
+		// fd.setFilterPath(getWorkspace().getRoot().getLocation().toString());
+
+		final String[] filterExt = { "*.svg", "*.png", "*.pdf" };
+		fd.setFilterExtensions(filterExt);
+
+		fd.setFileName(imageName);
+
+		final String fileName = fd.open();
+		return fileName;
+	}
+
+	public ModelToDocumentDialog getCompiledModelToDocumentDialog() {
+		final Shell shell = PlatformUI.getWorkbench().getActiveWorkbenchWindow().getShell();
+
+		final ModelToDocumentDialog parameterDialog = new ModelToDocumentDialog(shell);
+		parameterDialog.open();
+		return parameterDialog;
+	}
+
+	public ComponentToImageDialog getCompiledComponentToImageDialog() {
+		final Shell shell = PlatformUI.getWorkbench().getActiveWorkbenchWindow().getShell();
+
+		final ComponentToImageDialog parameterDialog = new ComponentToImageDialog(shell);
+		parameterDialog.open();
+		return parameterDialog;
+	}
+}
diff --git a/org.polarsys.chess.diagram.ui/.svn/pristine/ee/ee6b7d8e64509c69d2ac0827163b8541bdaec00c.svn-base b/org.polarsys.chess.diagram.ui/.svn/pristine/ee/ee6b7d8e64509c69d2ac0827163b8541bdaec00c.svn-base
new file mode 100644
index 000000000..07fc9a2ae
--- /dev/null
+++ b/org.polarsys.chess.diagram.ui/.svn/pristine/ee/ee6b7d8e64509c69d2ac0827163b8541bdaec00c.svn-base
@@ -0,0 +1,79 @@
+/*******************************************************************************
+ * Copyright (C) 2017 Fondazione Bruno Kessler.
+ * 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:
+ *     Alberto Debiasi - initial API and implementation
+ ******************************************************************************/
+package org.polarsys.chess.diagram.ui.commands;
+
+import org.eclipse.core.commands.ExecutionEvent;
+import org.eclipse.core.runtime.IProgressMonitor;
+import org.eclipse.gmf.runtime.diagram.ui.editparts.GraphicalEditPart;
+import org.polarsys.chess.diagram.ui.docGenerators.CHESSDiagramModel;
+import org.polarsys.chess.diagram.ui.utils.ExportDialogUtils;
+
+import eu.fbk.eclipse.standardtools.commands.AbstractAsyncJobCommand;
+import eu.fbk.eclipse.standardtools.diagram.ui.dialog.ComponentToImageDialog;
+import eu.fbk.eclipse.standardtools.diagram.ui.docGenerators.DiagramGeneratorService;
+import eu.fbk.eclipse.standardtools.utils.DirectoryUtil;
+import org.polarsys.chess.service.internal.utils.SelectionUtil;
+
+/**
+ * 
+ * @author Alberto
+ */
+public class ExportComponentToImageCommand extends AbstractAsyncJobCommand {
+
+	private SelectionUtil selectionUtil = SelectionUtil.getInstance();
+	private DirectoryUtil directoryUtils = DirectoryUtil.getInstance();
+	private ExportDialogUtils exportDialogUtils = ExportDialogUtils.getInstance();	
+	
+	//private OCRAComponentToImage ocraComponentToImage = OCRAComponentToImage.getInstance();
+	//private DocumentGeneratorService ocraComponentToImage = DocumentGeneratorService.getInstance(CHESSGraphicalModel.getInstance());
+	private DiagramGeneratorService diagramGeneratorService = DiagramGeneratorService.getInstance(CHESSDiagramModel.getInstance());
+	
+	
+	public ExportComponentToImageCommand() {
+		super("Export Component To Image Command");
+	}
+
+	@Override
+	public void execJobCommand(ExecutionEvent event, IProgressMonitor monitor) throws Exception {
+		GraphicalEditPart selectedGraphicalComponent = selectionUtil
+				.getSelectedGraphicalObject(event);
+
+		if (selectedGraphicalComponent != null) {
+
+			final ComponentToImageDialog parameterDialog = exportDialogUtils
+					.getCompiledComponentToImageDialog();
+
+			if (!parameterDialog.goAhead()) {
+				return;
+			}
+
+			String projectDir = directoryUtils.getCurrentProjectDir();
+			String imageName = diagramGeneratorService.getImageName(
+					selectedGraphicalComponent,parameterDialog.getImageFormat()) ;
+
+			String imageFilePath = exportDialogUtils.openImageDialog(projectDir, imageName);
+			if ((imageFilePath == null) || imageFilePath.isEmpty()) {
+				return;
+			}
+
+			diagramGeneratorService.setParametersBeforeDiagramGenerator
+			//setParametersBeforeExport
+			(parameterDialog.getShowPortLabels(),
+					parameterDialog.getAutomaticPortLabelLayout());
+			diagramGeneratorService.createDiagramFile(imageFilePath, selectedGraphicalComponent,monitor);
+			exportDialogUtils.showMessage_ExportDone(imageFilePath);
+		}
+	
+	}
+
+	
+
+}
diff --git a/org.polarsys.chess.diagram.ui/.svn/pristine/ee/eeb9da4e11212c83ef3110f0cc6f8823c2e958a8.svn-base b/org.polarsys.chess.diagram.ui/.svn/pristine/ee/eeb9da4e11212c83ef3110f0cc6f8823c2e958a8.svn-base
new file mode 100644
index 000000000..578e58bb8
--- /dev/null
+++ b/org.polarsys.chess.diagram.ui/.svn/pristine/ee/eeb9da4e11212c83ef3110f0cc6f8823c2e958a8.svn-base
@@ -0,0 +1,110 @@
+package org.polarsys.chess.diagram.ui.commands;
+
+import java.util.HashSet;
+import java.util.Set;
+
+import org.eclipse.core.commands.ExecutionEvent;
+import org.eclipse.core.runtime.IProgressMonitor;
+import org.eclipse.gmf.runtime.notation.Diagram;
+import org.eclipse.uml2.uml.Class;
+import org.polarsys.chess.diagram.ui.docGenerators.CHESSBlockDefinitionDiagramModel;
+import org.polarsys.chess.diagram.ui.docGenerators.CHESSInternalBlockDiagramModel;
+import org.polarsys.chess.diagram.ui.services.CHESSDiagramsGeneratorService;
+import org.polarsys.chess.diagram.ui.utils.ExportDialogUtils;
+import org.polarsys.chess.service.internal.utils.SelectionUtil;
+import org.polarsys.chess.verificationService.model.ChessSystemModel;
+
+import eu.fbk.eclipse.standardtools.ModelTranslatorToOcra.services.OCRATranslatorService;
+import eu.fbk.eclipse.standardtools.commands.AbstractAsyncJobCommand;
+import eu.fbk.eclipse.standardtools.diagram.DiagramDescriptor;
+import eu.fbk.eclipse.standardtools.diagram.DocumentGenerator;
+import eu.fbk.eclipse.standardtools.diagram.ui.dialog.ModelToDocumentDialog;
+import eu.fbk.eclipse.standardtools.diagram.ui.docGenerators.DocumentGeneratorServiceFromOssModel;
+import eu.fbk.eclipse.standardtools.diagram.ui.services.DiagramDialogUtil;
+import eu.fbk.eclipse.standardtools.dialogs.MessageTimeModelDialog;
+import eu.fbk.eclipse.standardtools.utils.DirectoryUtil;
+import eu.fbk.tools.editor.oss.oss.OSS;
+
+public class GenerateDocumentCommand extends AbstractAsyncJobCommand {
+
+	
+	private SelectionUtil selectionUtil = SelectionUtil.getInstance();
+	private ChessSystemModel chessToOCRAModelTranslator = ChessSystemModel.getInstance();
+	private OCRATranslatorService ocraTranslatorService = OCRATranslatorService.getInstance(chessToOCRAModelTranslator);
+	private ExportDialogUtils exportDialogUtils = ExportDialogUtils.getInstance();
+	private CHESSDiagramsGeneratorService chessDiagramsGeneratorService = CHESSDiagramsGeneratorService.getInstance(CHESSInternalBlockDiagramModel.getInstance(),CHESSBlockDefinitionDiagramModel.getInstance());
+	
+	
+	private DirectoryUtil directoryUtils = DirectoryUtil.getInstance();
+	
+	private DocumentGeneratorServiceFromOssModel documentGeneratorService ;
+	/**
+	 * @param commandName
+	 */
+	public GenerateDocumentCommand() {
+		super("Generate Documentation");
+	}
+
+	@Override
+	public void execJobCommand(ExecutionEvent event, IProgressMonitor monitor) throws Exception {
+		
+		
+		Class umlSelectedComponent = selectionUtil.getUmlComponentFromSelectedObject(event);
+		boolean isDiscreteTime = MessageTimeModelDialog.openQuestion();
+		
+		OSS ossModel = ocraTranslatorService.getOssModel(umlSelectedComponent, isDiscreteTime, monitor);
+		
+		ModelToDocumentDialog parameterDialog = exportDialogUtils.getCompiledModelToDocumentDialog();
+
+		if (!parameterDialog.goAhead()) {
+			return;
+		}
+
+		String docFormat = parameterDialog.getDocumentFormat();
+		String imageExtension = ".svg";
+		if (docFormat.equals("tex")) {
+			imageExtension = ".png";
+		}
+
+		// setShowLeafComponents(showLeafComponents);
+		String outputDirectoryName = exportDialogUtils.getDirectoryNameFromDialog();
+		// setDirectoryName(directoryName);
+		if ((outputDirectoryName == null) || outputDirectoryName.isEmpty()) {
+			return;
+		}
+		
+		String currentProjectName = directoryUtils.getCurrentProjectName();
+		System.out.println("currentProjectName: "+currentProjectName);
+		
+		
+		//documentGeneratorService = DocumentGeneratorServiceFromOssModel.getInstance(CHESSDiagramModel.getInstance(), ossModel);
+		documentGeneratorService = new DocumentGeneratorServiceFromOssModel(ossModel);
+		documentGeneratorService.setParametersBeforeDocumentGeneration(
+				//parameterDialog.getShowPortLabels(), parameterDialog.getAutomaticPortLabelLayout(),
+				outputDirectoryName, imageExtension, parameterDialog.getShowLeafComponents());
+		DocumentGenerator documentGenerator = documentGeneratorService.createDocumentFile(currentProjectName, docFormat, ossModel.getSystem(), monitor);
+		
+		
+		//documentGeneratorService.setParametersBeforeDiagramsGenerator(
+			//	outputDirectoryName, imageExtension,parameterDialog.getShowPortLabels(), parameterDialog.getAutomaticPortLabelLayout());
+	
+		
+		
+		chessDiagramsGeneratorService.setParametersBeforeDiagramsGenerator(outputDirectoryName, 
+				imageExtension, 
+				parameterDialog.getShowPortLabels(), 
+				parameterDialog.getAutomaticPortLabelLayout());
+		
+		Set<DiagramDescriptor> diagramDescriptors = new HashSet<DiagramDescriptor>();		
+		for(Diagram diagram : chessDiagramsGeneratorService.getDiagrams()){			
+		//chessDiagramsGeneratorService.createDiagram(diagram, monitor);
+			diagramDescriptors.add(chessDiagramsGeneratorService.createDiagramWithDescriptor(diagram, monitor));
+		}
+		
+													   
+		documentGeneratorService.addDiagramDescriptors(diagramDescriptors, documentGenerator);
+		documentGeneratorService.generateDocument(documentGenerator);
+		
+	}
+
+}
diff --git a/org.polarsys.chess.diagram.ui/.svn/pristine/f4/f4cb3488ae90ddddc1cd1a1b41125de09eb8ce31.svn-base b/org.polarsys.chess.diagram.ui/.svn/pristine/f4/f4cb3488ae90ddddc1cd1a1b41125de09eb8ce31.svn-base
new file mode 100644
index 000000000..abef01106
--- /dev/null
+++ b/org.polarsys.chess.diagram.ui/.svn/pristine/f4/f4cb3488ae90ddddc1cd1a1b41125de09eb8ce31.svn-base
@@ -0,0 +1,497 @@
+/*******************************************************************************
+ * Copyright (C) 2017 Fondazione Bruno Kessler.
+ * 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:
+ *     Alberto Debiasi - initial API and implementation
+ ******************************************************************************/
+package org.polarsys.chess.diagram.ui.docGenerators;
+
+import java.awt.Dimension;
+import java.awt.Point;
+import java.util.ArrayList;
+import java.util.List;
+
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.gmf.runtime.diagram.ui.editparts.GraphicalEditPart;
+import org.eclipse.gmf.runtime.notation.View;
+import org.eclipse.papyrus.sysml.diagram.common.edit.part.BlockPropertyCompositeEditPart;
+import org.eclipse.papyrus.sysml.diagram.common.edit.part.FlowPortAffixedNodeEditPart;
+import org.eclipse.papyrus.sysml.diagram.common.edit.part.StructureCompartmentEditPart;
+import org.eclipse.papyrus.uml.diagram.common.edit.part.ConnectorEditPart;
+import org.eclipse.papyrus.uml.diagram.common.editparts.IUMLEditPart;
+import org.eclipse.papyrus.uml.diagram.composite.custom.edit.parts.CustomPropertyPartEditPartCN;
+import org.eclipse.papyrus.uml.diagram.composite.custom.edit.parts.ResizablePortEditPart;
+import org.eclipse.papyrus.uml.diagram.composite.edit.parts.ClassCompositeCompartmentEditPart;
+import org.eclipse.uml2.uml.Connector;
+import org.eclipse.uml2.uml.Element;
+import org.eclipse.uml2.uml.Port;
+import org.polarsys.chess.core.util.uml.EntityUtil;
+
+import eu.fbk.eclipse.standardtools.diagram.ui.layout.EOrientation;
+import eu.fbk.eclipse.standardtools.diagram.ui.layout.EOrientation.Orientation;
+import eu.fbk.eclipse.standardtools.diagram.ui.model.AbstractDiagramModel;
+
+public class CHESSDiagramModel implements AbstractDiagramModel{
+	
+	
+	private static CHESSDiagramModel chessModel;
+	
+	public static CHESSDiagramModel getInstance(){
+		if(chessModel == null){
+			chessModel = new CHESSDiagramModel();
+		}
+		return chessModel;
+	}
+	
+	
+	private EntityUtil entityUtil = EntityUtil.getInstance();
+	
+	@Override
+	public String getGraphicalComponentId(Object graphicalComponent) {
+		Element umlElement = null;
+		/*
+		 * if(graphicalComponent instanceof BlockCompositeEditPart){ umlElement
+		 * = ((BlockCompositeEditPart)graphicalComponent).getUMLElement(); }
+		 * if(graphicalComponent instanceof BlockPropertyCompositeEditPart){
+		 * umlElement =
+		 * ((BlockPropertyCompositeEditPart)graphicalComponent).getUMLElement();
+		 * }
+		 */
+		if (graphicalComponent instanceof IUMLEditPart) {
+			umlElement = ((IUMLEditPart) graphicalComponent).getUMLElement();
+		}
+		return entityUtil.getComponentID(umlElement);
+	}
+
+	@Override
+	public String getGraphicalComponentName(Object graphicalComponent) {
+		EObject component = ((GraphicalEditPart) graphicalComponent).resolveSemanticElement();
+
+		// ((AppliedStereotypeEmptyEditPart)graphicalComponent).get
+
+		return entityUtil.getComponentName(component);
+	}
+
+	@Override
+	public List<GraphicalEditPart> getGraphicalSubComponents(Object graphicalComponent) {
+		List<?> children = ((GraphicalEditPart) graphicalComponent).getChildren();
+		List<GraphicalEditPart> graphicalSubComponent = new ArrayList<GraphicalEditPart>();
+		for (Object child : children) {
+			System.out.println("child: " + child);
+			if (child instanceof StructureCompartmentEditPart) {
+				for (Object componentChild : ((StructureCompartmentEditPart) child).getChildren()) {
+					System.out.println("StructureCompartmentEditPart child: " + componentChild);
+					if (componentChild instanceof BlockPropertyCompositeEditPart) {
+						graphicalSubComponent.add((GraphicalEditPart) componentChild);
+					}
+				}
+			}
+			if (child instanceof ClassCompositeCompartmentEditPart) {
+				for (Object componentChild : ((ClassCompositeCompartmentEditPart) child).getChildren()) {
+					System.out.println("StructureCompartmentEditPart child: " + componentChild);
+					if (componentChild instanceof CustomPropertyPartEditPartCN) {
+						graphicalSubComponent.add((GraphicalEditPart) componentChild);
+					}
+				}
+			}
+		}
+		return graphicalSubComponent;
+	}
+
+	@Override
+	public Object getGraphicalOwnerComponents(Object graphicalComponent) {
+		return ((GraphicalEditPart) graphicalComponent).getParent();
+	}
+
+	@Override
+	public List<?> getGraphicalPorts(Object graphicalComponent) {
+		List<?> children = ((GraphicalEditPart) graphicalComponent).getChildren();
+		List<GraphicalEditPart> graphicalConnectors = new ArrayList<GraphicalEditPart>();
+		for (Object child : children) {
+			if (child instanceof FlowPortAffixedNodeEditPart) {
+				graphicalConnectors.add((GraphicalEditPart) child);
+			}
+			if (child instanceof ResizablePortEditPart) {
+				graphicalConnectors.add((GraphicalEditPart) child);
+			}
+		}
+		return graphicalConnectors;
+	}
+
+	@Override
+	public Object getGraphicalPortOwner(Object port) {
+		return ((GraphicalEditPart) port).getParent();
+	}
+
+	@Override
+	public Dimension getGraphicalComponentDimension(Object component) {
+		org.eclipse.draw2d.geometry.Dimension domension = ((GraphicalEditPart) component).getFigure().getSize();
+		Dimension d = new Dimension(domension.width, domension.height);
+		return d;
+	}
+
+	@Override
+	public Point getGraphicalComponentPosition(Object component) {
+
+		GraphicalEditPart graphicalComponent = (GraphicalEditPart) component;
+
+		int x = 0;
+		int y = 0;
+
+		x = graphicalComponent.getFigure().getBounds().x;
+		y = graphicalComponent.getFigure().getBounds().y;
+
+		printlnGraphicalPosition(graphicalComponent);
+
+		// System.out.println("----------------------------");
+		// System.out.println(graphicalComponent.getLocation());
+		// System.out.println(component);
+		// System.out.println(graphicalComponent.getContentPane().getBounds());
+		// System.out.println(graphicalComponent.getFigure().getBounds());
+		// System.out.println(graphicalComponent.getMainFigure().getBounds());
+		// System.out.println(graphicalComponent.getBorderedFigure().getBounds());
+		// System.out.println(graphicalComponent.getPrimaryShape().getBounds());
+		// System.out.println(graphicalComponent.getPrimaryShape().getLocation());
+
+		Point point = new Point(x, y);
+
+		Point parentPoint = getOwnerPosition(graphicalComponent.getParent());
+
+		System.out.println("parentPoint: " + parentPoint);
+
+		point.x = point.x + parentPoint.x;
+		point.y = point.y + parentPoint.y;
+
+		return point;
+	}
+	
+	private Object printlnGraphicalPosition(Object component) {
+		if (component instanceof GraphicalEditPart) {
+			GraphicalEditPart graphicalComponent = (GraphicalEditPart) component;
+			System.out.println("-------printlnGraphicalPosition------------");
+			System.out.println(graphicalComponent);
+			System.out.println(graphicalComponent.getFigure().getBounds());
+			return printlnGraphicalPosition(graphicalComponent.getParent());
+		}
+		return null;
+	}
+
+	/*
+	 * @Override public Point getGraphicalComponentPosition(Object component) {
+	 * 
+	 * GraphicalEditPart graphicalComponent = (GraphicalEditPart)component;
+	 * 
+	 * int x =0; int y =0; if(!(component instanceof
+	 * StructureCompartmentEditPart)){ x =
+	 * graphicalComponent.getFigure().getBounds().x; y =
+	 * graphicalComponent.getFigure().getBounds().y; }
+	 * 
+	 * 
+	 * System.out.println("----------------------------");
+	 * //System.out.println(graphicalComponent.getLocation());
+	 * System.out.println(component);
+	 * //System.out.println(graphicalComponent.getContentPane().getBounds());
+	 * System.out.println(graphicalComponent.getFigure().getBounds());
+	 * //System.out.println(graphicalComponent.getMainFigure().getBounds());
+	 * //System.out.println(graphicalComponent.getBorderedFigure().getBounds());
+	 * //System.out.println(graphicalComponent.getPrimaryShape().getBounds());
+	 * //System.out.println(graphicalComponent.getPrimaryShape().getLocation());
+	 * 
+	 * 
+	 * Point point = new Point(x, y);
+	 * 
+	 * if(graphicalComponent.getParent() instanceof GraphicalEditPart){ Point
+	 * parentPoint =
+	 * getGraphicalComponentPosition(graphicalComponent.getParent());
+	 * point.x=point.x+parentPoint.x; point.y=point.y+parentPoint.y; } return
+	 * point; }
+	 */
+	
+
+	private Point getOwnerPosition(Object component) {
+
+		if (component instanceof GraphicalEditPart) {
+			GraphicalEditPart graphicalComponent = (GraphicalEditPart) component;
+
+			int x = 0;
+			int y = 0;
+			if (component instanceof StructureCompartmentEditPart) {
+				x = graphicalComponent.getFigure().getBounds().x;
+				y = graphicalComponent.getFigure().getBounds().y;
+				Point point = new Point(x, y);
+				return point;
+			}
+			if (component instanceof ClassCompositeCompartmentEditPart) {
+				x = graphicalComponent.getFigure().getBounds().x;
+				y = graphicalComponent.getFigure().getBounds().y;
+				Point point = new Point(x, y);
+				return point;
+			}
+
+			return getOwnerPosition(graphicalComponent.getParent());
+		} else {
+			return new Point(0, 0);
+		}
+	}
+
+	@Override
+	public boolean isGraphicalPort(Object port) {
+		if (port instanceof FlowPortAffixedNodeEditPart) {
+			return entityUtil.isPort((Element) ((FlowPortAffixedNodeEditPart) port).getUMLElement());
+		}
+		if (port instanceof ResizablePortEditPart) {
+			return entityUtil.isPort((Element) ((ResizablePortEditPart) port).getUMLElement());
+		}
+		return false;
+	}
+
+	@Override
+	public boolean isGraphicalInputPort(Object port) {
+		if (port instanceof FlowPortAffixedNodeEditPart) {
+			return entityUtil.isInputPort((Element) ((FlowPortAffixedNodeEditPart) port).getUMLElement());
+		}
+		if (port instanceof ResizablePortEditPart) {
+			return entityUtil.isInputPort((Element) ((ResizablePortEditPart) port).getUMLElement());
+		}
+		return false;
+	}
+
+	@Override
+	public boolean isGraphicalOutputPort(Object port) {
+		if (port instanceof FlowPortAffixedNodeEditPart) {
+			return entityUtil.isOutputPort((Element) ((FlowPortAffixedNodeEditPart) port).getUMLElement());
+		}
+		if (port instanceof ResizablePortEditPart) {
+			return entityUtil.isOutputPort((Element) ((ResizablePortEditPart) port).getUMLElement());
+		}
+		return false;
+	}
+
+	@Override
+	public String getGraphicalPortName(Object port) {
+		if (port instanceof FlowPortAffixedNodeEditPart) {
+			return ((Port) ((FlowPortAffixedNodeEditPart) port).getUMLElement()).getName();
+		}
+		if (port instanceof ResizablePortEditPart) {
+			return ((Port) ((ResizablePortEditPart) port).getUMLElement()).getName();
+		}
+		return null;
+	}
+
+	
+
+	@Override
+	public Object getGraphicalPortVariableType(Object port) {
+		if (port instanceof FlowPortAffixedNodeEditPart) {
+			return ((Port) ((FlowPortAffixedNodeEditPart) port).getUMLElement()).getType().getName();
+		}
+		if (port instanceof ResizablePortEditPart) {
+			return ((Port) ((ResizablePortEditPart) port).getUMLElement()).getType().getName();
+		}
+		return null;
+	}
+
+	@Override
+	public Point getGraphicalPortPosition(Object port) {
+
+		// org.eclipse.draw2d.geometry.Point p =
+		// ((FlowPortAffixedNodeEditPart)Port).getLocation();
+		// org.eclipse.draw2d.geometry.Point p =
+		// ((GraphicalEditPart)Port).getFigure().getBounds();
+		int x = ((GraphicalEditPart) port).getFigure().getBounds().x;
+		int y = ((GraphicalEditPart) port).getFigure().getBounds().y;
+
+		// System.out.println("port bounds:
+		// "+((FlowPortAffixedNodeEditPart)Port).getFigure().getBounds());
+		// System.out.println("port loc: "+p);
+
+		// Point point = new Point(p.x, p.y);
+		Point point = new Point(x, y);
+
+		// GraphicalEditPart portParent =
+		// (GraphicalEditPart)((GraphicalEditPart)Port).getParent();
+		// Point partentPoint =
+		// getGraphicalComponentPosition(portParent.getParent());
+		Point partentPoint = getOwnerPosition(port);
+
+		point.x = point.x + partentPoint.x;
+		point.y = point.y + partentPoint.y;
+		return point;
+	}
+
+	@Override
+	public Dimension getGraphicalPortDimension(Object port) {
+
+		org.eclipse.draw2d.geometry.Dimension domension = ((GraphicalEditPart) port).getFigure().getSize();
+		Dimension dim = new Dimension(domension.width, domension.height);
+
+		return dim;
+	}
+
+	@Override
+	public EOrientation getGraphicalPortOffsetOrientation(Object port) {
+
+		int or = 0;
+		if (port instanceof FlowPortAffixedNodeEditPart) {
+			or = ((FlowPortAffixedNodeEditPart) port).getBorderItemLocator().getCurrentSideOfParent();
+		}
+		if (port instanceof ResizablePortEditPart) {
+			or = ((ResizablePortEditPart) port).getBorderItemLocator().getCurrentSideOfParent();
+		}
+		System.out.println("or: " + or);
+
+		EOrientation eOrientation = new EOrientation();
+		Point p = getGraphicalPortPosition(port);
+		int offset = 0;
+		Orientation orientation = Orientation.NORTH_VALUE;
+
+		switch (or) {
+		case 1:
+			orientation = Orientation.NORTH_VALUE;
+			offset = p.x;
+			break;
+		case 4:
+			orientation = Orientation.SOUTH_VALUE;
+			offset = p.x;
+			break;
+		case 8:
+			orientation = Orientation.WEST_VALUE;
+			offset = p.y;
+			break;
+		case 16:
+			orientation = Orientation.EAST_VALUE;
+			offset = p.y;
+			break;
+		}
+
+		eOrientation.setOrientation(orientation);
+		eOrientation.setOffset(offset);
+		return eOrientation;
+	}
+
+	@SuppressWarnings("unchecked")
+	@Override
+	public List<?> getPortChannels(Object graphicalComponent) {
+
+		System.out.println("getPortConnections");
+		List<Object> connections = new ArrayList<Object>();
+
+		if (graphicalComponent instanceof GraphicalEditPart) {
+
+			List<?> children = ((GraphicalEditPart) graphicalComponent).getChildren();
+			for (Object child : children) {
+				if (child instanceof FlowPortAffixedNodeEditPart) {
+					GraphicalEditPart graphicalPort = (GraphicalEditPart) child;
+					connections.addAll(graphicalPort.getSourceConnections());
+
+				}
+				if (child instanceof ResizablePortEditPart) {
+					GraphicalEditPart graphicalPort = (GraphicalEditPart) child;
+					connections.addAll(graphicalPort.getSourceConnections());
+
+				}
+			}
+
+			for (Object subComponents : getGraphicalSubComponents(graphicalComponent)) {
+				connections.addAll(getPortChannels(subComponents));
+				/*
+				 * List children
+				 * =((GraphicalEditPart)subComponents).getChildren(); for(Object
+				 * child : children){ if(child instanceof
+				 * FlowPortAffixedNodeEditPart){ GraphicalEditPart graphicalPort
+				 * = (GraphicalEditPart) child;
+				 * System.out.println("child: "+child);
+				 * connections.addAll(graphicalPort.getSourceConnections());
+				 * connections.addAll(graphicalPort.getTargetConnections());
+				 * 
+				 * } }
+				 */
+			}
+
+		}
+		System.out.println("connections.size: " + connections.size());
+
+		return connections;
+	}
+
+	@Override
+	public String getChannelName(Object channel) {
+		if (channel instanceof ConnectorEditPart) {
+			return ((Connector) ((View) ((ConnectorEditPart) channel).getModel()).getElement()).getName();
+		}
+		if (channel instanceof org.eclipse.papyrus.uml.diagram.composite.edit.parts.ConnectorEditPart) {
+			return ((Connector) ((View) ((org.eclipse.papyrus.uml.diagram.composite.edit.parts.ConnectorEditPart) channel)
+					.getModel()).getElement()).getName();
+		}
+		return null;
+	}
+
+	@Override
+	public Object getChannelTargetPort(Object channel) {
+		if (channel instanceof ConnectorEditPart) {
+			return ((ConnectorEditPart) channel).getTarget();
+		}
+		if (channel instanceof org.eclipse.papyrus.uml.diagram.composite.edit.parts.ConnectorEditPart) {
+			return ((org.eclipse.papyrus.uml.diagram.composite.edit.parts.ConnectorEditPart) channel).getTarget();
+		}
+		return null;
+	}
+
+	@Override
+	public Object getChannelSourcePort(Object channel) {
+		if (channel instanceof ConnectorEditPart) {
+			return ((ConnectorEditPart) channel).getSource();
+		}
+		if (channel instanceof org.eclipse.papyrus.uml.diagram.composite.edit.parts.ConnectorEditPart) {
+			return ((org.eclipse.papyrus.uml.diagram.composite.edit.parts.ConnectorEditPart) channel).getSource();
+		}
+		return null;
+	}
+
+	@Override
+	public ArrayList<?> getPortIncomingChannels(Object port) {
+		return null;
+	}
+
+	@Override
+	public ArrayList<?> getPortOutgoingChannels(Object port) {
+		return null;
+	}
+
+	@Override
+	public List<Point> getLayoutChannelPoints(Object channel) {
+		int[] pointList = null;
+		if (channel instanceof ConnectorEditPart) {
+			pointList = ((ConnectorEditPart) channel).getConnectionFigure().getPoints().toIntArray();
+		}
+		if (channel instanceof org.eclipse.papyrus.uml.diagram.composite.edit.parts.ConnectorEditPart) {
+			pointList = ((org.eclipse.papyrus.uml.diagram.composite.edit.parts.ConnectorEditPart) channel)
+					.getConnectionFigure().getPoints().toIntArray();
+		}
+		List<Point> points = new ArrayList<Point>();
+
+		for (int i = 0; i < pointList.length; i = i + 2) {
+			Point p = new Point(pointList[i], pointList[i + 1]);
+			points.add(p);
+		}
+
+		return points;
+	}
+
+	@Override
+	public Object getChannelOwner(Object channel) {
+		return ((GraphicalEditPart) channel).getParent();
+	}
+
+	
+
+	@Override
+	public String getGraphicalPortRange(Object component, Object port) {
+		return "PortRange";
+	}
+	
+}
diff --git a/org.polarsys.chess.diagram.ui/.svn/wc.db b/org.polarsys.chess.diagram.ui/.svn/wc.db
new file mode 100644
index 0000000000000000000000000000000000000000..8b1d34bf54a142e42435d02a172fee11237c50a8
GIT binary patch
literal 61440
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
CNyNec

literal 0
HcmV?d00001

diff --git a/org.polarsys.chess.properties.propertyEditor/.svn/entries b/org.polarsys.chess.properties.propertyEditor/.svn/entries
new file mode 100644
index 000000000..3cacc0b93
--- /dev/null
+++ b/org.polarsys.chess.properties.propertyEditor/.svn/entries
@@ -0,0 +1 @@
+12
\ No newline at end of file
diff --git a/org.polarsys.chess.properties.propertyEditor/.svn/format b/org.polarsys.chess.properties.propertyEditor/.svn/format
new file mode 100644
index 000000000..3cacc0b93
--- /dev/null
+++ b/org.polarsys.chess.properties.propertyEditor/.svn/format
@@ -0,0 +1 @@
+12
\ No newline at end of file
diff --git a/org.polarsys.chess.properties.propertyEditor/.svn/pristine/18/18a06f8a4c77351c8eefa068904d6e365c236584.svn-base b/org.polarsys.chess.properties.propertyEditor/.svn/pristine/18/18a06f8a4c77351c8eefa068904d6e365c236584.svn-base
new file mode 100644
index 000000000..1a82ca418
--- /dev/null
+++ b/org.polarsys.chess.properties.propertyEditor/.svn/pristine/18/18a06f8a4c77351c8eefa068904d6e365c236584.svn-base
@@ -0,0 +1,38 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<?eclipse version="3.4"?>
+<plugin>
+     <extension
+         point="org.eclipse.ui.views.properties.tabbed.propertyTabs">
+      <propertyTabs
+            contributorId="TreeOutlinePage">
+         <propertyTab
+               afterTab="advanced"
+               category="Editors"
+               id="CustomPropertyTab"
+               label="PropertyEditor+">
+         </propertyTab>       
+      </propertyTabs>
+   </extension>
+   <extension
+         point="org.eclipse.ui.views.properties.tabbed.propertySections">
+      <propertySections
+            contributorId="TreeOutlinePage">
+         <propertySection
+               class="org.polarsys.chess.properties.propertyEditor.CustomPropertyEditorTab"
+               filter="org.polarsys.chess.properties.propertyEditor.PropertyEditorFilter"
+               id="CustomPropertyEditorSection"
+               tab="CustomPropertyTab">
+         </propertySection>
+      </propertySections>
+   </extension>
+   <extension
+         point="org.eclipse.ui.views.properties.tabbed.propertyContributor">
+      <propertyContributor
+            contributorId="TreeOutlinePage">
+         <propertyCategory
+               category="Editors">
+         </propertyCategory>
+      </propertyContributor>
+   </extension>
+
+</plugin>
diff --git a/org.polarsys.chess.properties.propertyEditor/.svn/pristine/1a/1a1c5e8e62ff770fb3257122f24111565a3d0e54.svn-base b/org.polarsys.chess.properties.propertyEditor/.svn/pristine/1a/1a1c5e8e62ff770fb3257122f24111565a3d0e54.svn-base
new file mode 100644
index 000000000..b9879a2b3
--- /dev/null
+++ b/org.polarsys.chess.properties.propertyEditor/.svn/pristine/1a/1a1c5e8e62ff770fb3257122f24111565a3d0e54.svn-base
@@ -0,0 +1,112 @@
+/*******************************************************************************
+ * Copyright (C) 2017 Fondazione Bruno Kessler.
+ * 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:
+ *     Alberto Debiasi - initial API and implementation
+ ******************************************************************************/
+package org.polarsys.chess.properties.propertyEditor;
+
+import org.eclipse.emf.common.util.BasicEList;
+import org.eclipse.emf.common.util.EList;
+import org.eclipse.emf.ecore.resource.Resource;
+import org.eclipse.jface.viewers.ISelection;
+import org.eclipse.papyrus.sysml.portandflows.FlowDirection;
+import org.eclipse.uml2.uml.Class;
+import org.eclipse.uml2.uml.Constraint;
+import org.eclipse.uml2.uml.Element;
+import org.polarsys.chess.contracts.profile.chesscontract.FormalProperty;
+import org.polarsys.chess.contracts.profile.chesscontract.util.ContractEntityUtil;
+import org.polarsys.chess.contracts.profile.chesscontract.util.EntityUtil;
+import org.polarsys.chess.service.internal.utils.SelectionUtil;
+
+import eu.fbk.eclipse.standardtools.propertyEditor.propertyTab.PropertyEditorTab;
+
+public class CustomPropertyEditorTab extends PropertyEditorTab {
+
+	private ContractEntityUtil contractEntityUtil = ContractEntityUtil.getInstance();
+	private SelectionUtil selectionUtil = SelectionUtil.getInstance();
+	private EntityUtil entityUtil = EntityUtil.getInstance();
+
+	@Override
+	public String[] getPropertyOwnerInputPorts(Object formalProperty) {
+		Element umlOwner = entityUtil.getOwner((Constraint) formalProperty);
+		int direction = FlowDirection.IN_VALUE;
+		return entityUtil.getPortsNames(umlOwner, direction);
+	}
+
+	@Override
+	public String[] getPropertyOwnerOutputPorts(Object formalProperty) {
+		Element umlOwner = entityUtil.getOwner((Constraint) formalProperty);
+		int direction = FlowDirection.OUT_VALUE;
+		return entityUtil.getPortsNames(umlOwner, direction);
+	}
+
+	@Override
+	public String[] getPropertyOwnerInputOutputPorts(Object formalProperty) {
+		Element umlOwner = entityUtil.getOwner((Constraint) formalProperty);
+		int direction = FlowDirection.INOUT_VALUE;
+		return entityUtil.getPortsNames(umlOwner, direction);
+	}
+
+	@Override
+	public String[] getPropertyOwnerAttributes(Object property) {
+		Element umlOwner = ((Constraint) property).getOwner();
+		EList<String> attrArr = new BasicEList<String>();
+
+		attrArr.addAll(entityUtil.getBooleanAttributesNamesExceptsPorts(umlOwner));
+
+		String[] attributesStrArr = new String[attrArr.size()];
+		return attrArr.toArray(attributesStrArr);
+
+	}
+
+	@Override
+	public Object returnProperty(ISelection selection) {
+	
+
+		Object selectedUmlElement = selectionUtil.getUmlSelectedObject(selection);
+
+		if (selectedUmlElement instanceof Constraint) {
+			Constraint umlConstraint = (Constraint) selectedUmlElement;
+			if (contractEntityUtil.isFormalProperty(umlConstraint)) {
+				return umlConstraint;
+			}
+		}
+
+		return null;
+	}
+
+	@Override
+	public Resource getResourceFromProperty(Object formalProperty) {
+
+		return ((Constraint) formalProperty).eResource();
+	}
+
+	@Override
+	public void propertyEditorchanged(Object property, String textChanged) {
+		contractEntityUtil.saveFormalProperty(contractEntityUtil.getFormalProperty((Constraint) property), textChanged);
+	}
+
+	public String getPropertyName(Object property) {
+		if (property != null) {
+			return ((Constraint) property).getQualifiedName();
+		}
+		return null;
+	}
+
+	public String getStrFromProperty(Object property) {
+		FormalProperty formalProperty = contractEntityUtil.getFormalProperty((Constraint) property);
+		return contractEntityUtil.getPropertyStr(formalProperty);
+	}
+
+	@Override
+	public String[] getEnumValuesFromPropertyOwnerPorts(Object formalProperty) {
+		Class element = (Class) ((Constraint) formalProperty).getOwner();
+		return entityUtil.getEnumValuesFromComponentPorts(element);	
+	}
+
+}
diff --git a/org.polarsys.chess.properties.propertyEditor/.svn/pristine/3c/3cbebaa7f54b0cb886240fc79028e5df4f4d2f71.svn-base b/org.polarsys.chess.properties.propertyEditor/.svn/pristine/3c/3cbebaa7f54b0cb886240fc79028e5df4f4d2f71.svn-base
new file mode 100644
index 000000000..6f20375d6
--- /dev/null
+++ b/org.polarsys.chess.properties.propertyEditor/.svn/pristine/3c/3cbebaa7f54b0cb886240fc79028e5df4f4d2f71.svn-base
@@ -0,0 +1,5 @@
+source.. = src/
+output.. = bin/
+bin.includes = META-INF/,\
+               .,\
+               plugin.xml
diff --git a/org.polarsys.chess.properties.propertyEditor/.svn/pristine/4f/4f2829bd93d4b7b7b01d2750de95e1254f346427.svn-base b/org.polarsys.chess.properties.propertyEditor/.svn/pristine/4f/4f2829bd93d4b7b7b01d2750de95e1254f346427.svn-base
new file mode 100644
index 000000000..3ae0d639e
--- /dev/null
+++ b/org.polarsys.chess.properties.propertyEditor/.svn/pristine/4f/4f2829bd93d4b7b7b01d2750de95e1254f346427.svn-base
@@ -0,0 +1,105 @@
+/*******************************************************************************
+ * Copyright (C) 2017 Fondazione Bruno Kessler.
+ * 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:
+ *     Alberto Debiasi - initial API and implementation
+ ******************************************************************************/
+package org.polarsys.chess.properties.propertyEditor;
+
+import org.eclipse.emf.common.util.BasicEList;
+import org.eclipse.emf.common.util.EList;
+import org.eclipse.emf.ecore.resource.Resource;
+import org.eclipse.jface.viewers.ISelection;
+import org.eclipse.papyrus.sysml.portandflows.FlowDirection;
+import org.eclipse.uml2.uml.Constraint;
+import org.eclipse.uml2.uml.Element;
+import org.polarsys.chess.contracts.profile.chesscontract.FormalProperty;
+import org.polarsys.chess.utils.ContractEntityUtil;
+import org.polarsys.chess.utils.EntityUtil;
+import org.polarsys.chess.utils.SelectionUtil;
+
+import eu.fbk.eclipse.standardtools.propertyEditor.propertyTab.PropertyEditorTab;
+
+public class CustomPropertyEditorTab extends PropertyEditorTab {
+
+	private ContractEntityUtil contractEntityUtil = ContractEntityUtil.getInstance();
+	private SelectionUtil selectionUtil = SelectionUtil.getInstance();
+	private EntityUtil entityUtil = EntityUtil.getInstance();
+
+	@Override
+	public String[] getPropertyOwnerInputPorts(Object formalProperty) {
+		Element umlOwner = entityUtil.getOwner((Constraint) formalProperty);
+		int direction = FlowDirection.IN_VALUE;
+		return entityUtil.getPortsNames(umlOwner, direction);
+	}
+
+	@Override
+	public String[] getPropertyOwnerOutputPorts(Object formalProperty) {
+		Element umlOwner = entityUtil.getOwner((Constraint) formalProperty);
+		int direction = FlowDirection.OUT_VALUE;
+		return entityUtil.getPortsNames(umlOwner, direction);
+	}
+
+	@Override
+	public String[] getPropertyOwnerInputOutputPorts(Object formalProperty) {
+		Element umlOwner = entityUtil.getOwner((Constraint) formalProperty);
+		int direction = FlowDirection.INOUT_VALUE;
+		return entityUtil.getPortsNames(umlOwner, direction);
+	}
+
+	@Override
+	public String[] getPropertyOwnerAttributes(Object property) {
+		Element umlOwner = ((Constraint) property).getOwner();
+		EList<String> attrArr = new BasicEList<String>();
+
+		attrArr.addAll(entityUtil.getBooleanAttributesNamesExceptsPorts(umlOwner));
+
+		String[] attributesStrArr = new String[attrArr.size()];
+		return attrArr.toArray(attributesStrArr);
+
+	}
+
+	@Override
+	public Object returnProperty(ISelection selection) {
+	
+
+		Object selectedUmlElement = selectionUtil.getUmlSelectedObject(selection);
+
+		if (selectedUmlElement instanceof Constraint) {
+			Constraint umlConstraint = (Constraint) selectedUmlElement;
+			if (contractEntityUtil.isFormalProperty(umlConstraint)) {
+				return umlConstraint;
+			}
+		}
+
+		return null;
+	}
+
+	@Override
+	public Resource getResourceFromProperty(Object formalProperty) {
+
+		return ((Constraint) formalProperty).eResource();
+	}
+
+	@Override
+	public void propertyEditorchanged(Object property, String textChanged) {
+		contractEntityUtil.saveFormalProperty(contractEntityUtil.getFormalProperty((Constraint) property), textChanged);
+	}
+
+	public String getPropertyName(Object property) {
+		if (property != null) {
+			return ((Constraint) property).getQualifiedName();
+		}
+		return null;
+	}
+
+	public String getStrFromProperty(Object property) {
+		FormalProperty formalProperty = contractEntityUtil.getFormalProperty((Constraint) property);
+		return contractEntityUtil.getPropertyStr(formalProperty);
+	}
+
+}
diff --git a/org.polarsys.chess.properties.propertyEditor/.svn/pristine/51/512bd49c4ba767010f32a54ef22de71e83bd7e1e.svn-base b/org.polarsys.chess.properties.propertyEditor/.svn/pristine/51/512bd49c4ba767010f32a54ef22de71e83bd7e1e.svn-base
new file mode 100644
index 000000000..295926d96
--- /dev/null
+++ b/org.polarsys.chess.properties.propertyEditor/.svn/pristine/51/512bd49c4ba767010f32a54ef22de71e83bd7e1e.svn-base
@@ -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/org.polarsys.chess.properties.propertyEditor/.svn/pristine/56/56aa55ddcaaee896cd73c7f4a212fab9f6b86ade.svn-base b/org.polarsys.chess.properties.propertyEditor/.svn/pristine/56/56aa55ddcaaee896cd73c7f4a212fab9f6b86ade.svn-base
new file mode 100644
index 000000000..3c0ccc254
--- /dev/null
+++ b/org.polarsys.chess.properties.propertyEditor/.svn/pristine/56/56aa55ddcaaee896cd73c7f4a212fab9f6b86ade.svn-base
@@ -0,0 +1,105 @@
+/*******************************************************************************
+ * Copyright (C) 2017 Fondazione Bruno Kessler.
+ * 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:
+ *     Alberto Debiasi - initial API and implementation
+ ******************************************************************************/
+package org.polarsys.chess.properties.propertyEditor;
+
+import org.eclipse.emf.common.util.BasicEList;
+import org.eclipse.emf.common.util.EList;
+import org.eclipse.emf.ecore.resource.Resource;
+import org.eclipse.jface.viewers.ISelection;
+import org.eclipse.papyrus.sysml.portandflows.FlowDirection;
+import org.eclipse.uml2.uml.Constraint;
+import org.eclipse.uml2.uml.Element;
+import org.polarsys.chess.contracts.profile.chesscontract.FormalProperty;
+import org.polarsys.chess.contracts.profile.chesscontract.util.ContractEntityUtil;
+import org.polarsys.chess.core.util.uml.EntityUtil;
+import org.polarsys.chess.service.internal.utils.SelectionUtil;
+
+import eu.fbk.eclipse.standardtools.propertyEditor.propertyTab.PropertyEditorTab;
+
+public class CustomPropertyEditorTab extends PropertyEditorTab {
+
+	private ContractEntityUtil contractEntityUtil = ContractEntityUtil.getInstance();
+	private SelectionUtil selectionUtil = SelectionUtil.getInstance();
+	private EntityUtil entityUtil = EntityUtil.getInstance();
+
+	@Override
+	public String[] getPropertyOwnerInputPorts(Object formalProperty) {
+		Element umlOwner = entityUtil.getOwner((Constraint) formalProperty);
+		int direction = FlowDirection.IN_VALUE;
+		return entityUtil.getPortsNames(umlOwner, direction);
+	}
+
+	@Override
+	public String[] getPropertyOwnerOutputPorts(Object formalProperty) {
+		Element umlOwner = entityUtil.getOwner((Constraint) formalProperty);
+		int direction = FlowDirection.OUT_VALUE;
+		return entityUtil.getPortsNames(umlOwner, direction);
+	}
+
+	@Override
+	public String[] getPropertyOwnerInputOutputPorts(Object formalProperty) {
+		Element umlOwner = entityUtil.getOwner((Constraint) formalProperty);
+		int direction = FlowDirection.INOUT_VALUE;
+		return entityUtil.getPortsNames(umlOwner, direction);
+	}
+
+	@Override
+	public String[] getPropertyOwnerAttributes(Object property) {
+		Element umlOwner = ((Constraint) property).getOwner();
+		EList<String> attrArr = new BasicEList<String>();
+
+		attrArr.addAll(entityUtil.getBooleanAttributesNamesExceptsPorts(umlOwner));
+
+		String[] attributesStrArr = new String[attrArr.size()];
+		return attrArr.toArray(attributesStrArr);
+
+	}
+
+	@Override
+	public Object returnProperty(ISelection selection) {
+	
+
+		Object selectedUmlElement = selectionUtil.getUmlSelectedObject(selection);
+
+		if (selectedUmlElement instanceof Constraint) {
+			Constraint umlConstraint = (Constraint) selectedUmlElement;
+			if (contractEntityUtil.isFormalProperty(umlConstraint)) {
+				return umlConstraint;
+			}
+		}
+
+		return null;
+	}
+
+	@Override
+	public Resource getResourceFromProperty(Object formalProperty) {
+
+		return ((Constraint) formalProperty).eResource();
+	}
+
+	@Override
+	public void propertyEditorchanged(Object property, String textChanged) {
+		contractEntityUtil.saveFormalProperty(contractEntityUtil.getFormalProperty((Constraint) property), textChanged);
+	}
+
+	public String getPropertyName(Object property) {
+		if (property != null) {
+			return ((Constraint) property).getQualifiedName();
+		}
+		return null;
+	}
+
+	public String getStrFromProperty(Object property) {
+		FormalProperty formalProperty = contractEntityUtil.getFormalProperty((Constraint) property);
+		return contractEntityUtil.getPropertyStr(formalProperty);
+	}
+
+}
diff --git a/org.polarsys.chess.properties.propertyEditor/.svn/pristine/58/5856c1c9a92d9921638be8b75a52208db7d2760e.svn-base b/org.polarsys.chess.properties.propertyEditor/.svn/pristine/58/5856c1c9a92d9921638be8b75a52208db7d2760e.svn-base
new file mode 100644
index 000000000..23a9f1ae5
--- /dev/null
+++ b/org.polarsys.chess.properties.propertyEditor/.svn/pristine/58/5856c1c9a92d9921638be8b75a52208db7d2760e.svn-base
@@ -0,0 +1,35 @@
+/*******************************************************************************
+ * Copyright (C) 2017 Fondazione Bruno Kessler.
+ * 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:
+ *     Alberto Debiasi - initial API and implementation
+ ******************************************************************************/
+package org.polarsys.chess.properties.propertyEditor;
+
+import org.eclipse.uml2.uml.Constraint;
+import org.polarsys.chess.utils.ContractEntityUtil;
+import org.polarsys.chess.utils.SelectionUtil;
+
+public class PropertyEditorFilter implements org.eclipse.jface.viewers.IFilter {
+
+	private SelectionUtil selectionUtil = SelectionUtil.getInstance();
+	private ContractEntityUtil contractEntityUtil = ContractEntityUtil.getInstance();
+
+	@Override
+	public boolean select(Object selection) {
+	
+		Object selectedUmlElement = selectionUtil.getUmlSelectedObject(selection);
+
+		if (selectedUmlElement instanceof Constraint) {
+			if (contractEntityUtil.isFormalProperty((Constraint) selectedUmlElement)) {
+				return true;
+			}
+		}
+
+		return false;
+	}
+}
diff --git a/org.polarsys.chess.properties.propertyEditor/.svn/pristine/5c/5c0421855513837a9f7f768df7fc032a56d84600.svn-base b/org.polarsys.chess.properties.propertyEditor/.svn/pristine/5c/5c0421855513837a9f7f768df7fc032a56d84600.svn-base
new file mode 100644
index 000000000..acdf322b4
--- /dev/null
+++ b/org.polarsys.chess.properties.propertyEditor/.svn/pristine/5c/5c0421855513837a9f7f768df7fc032a56d84600.svn-base
@@ -0,0 +1,28 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+	<name>org.polarsys.chess.properties.propertyEditor</name>
+	<comment></comment>
+	<projects>
+	</projects>
+	<buildSpec>
+		<buildCommand>
+			<name>org.eclipse.jdt.core.javabuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+		<buildCommand>
+			<name>org.eclipse.pde.ManifestBuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+		<buildCommand>
+			<name>org.eclipse.pde.SchemaBuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+	</buildSpec>
+	<natures>
+		<nature>org.eclipse.pde.PluginNature</nature>
+		<nature>org.eclipse.jdt.core.javanature</nature>
+	</natures>
+</projectDescription>
diff --git a/org.polarsys.chess.properties.propertyEditor/.svn/pristine/81/817e4980b4e55afe7436fb708720f588e2733c27.svn-base b/org.polarsys.chess.properties.propertyEditor/.svn/pristine/81/817e4980b4e55afe7436fb708720f588e2733c27.svn-base
new file mode 100644
index 000000000..bc4cbf796
--- /dev/null
+++ b/org.polarsys.chess.properties.propertyEditor/.svn/pristine/81/817e4980b4e55afe7436fb708720f588e2733c27.svn-base
@@ -0,0 +1,105 @@
+/*******************************************************************************
+ * Copyright (C) 2017 Fondazione Bruno Kessler.
+ * 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:
+ *     Alberto Debiasi - initial API and implementation
+ ******************************************************************************/
+package org.polarsys.chess.properties.propertyEditor;
+
+import org.eclipse.emf.common.util.BasicEList;
+import org.eclipse.emf.common.util.EList;
+import org.eclipse.emf.ecore.resource.Resource;
+import org.eclipse.jface.viewers.ISelection;
+import org.eclipse.papyrus.sysml.portandflows.FlowDirection;
+import org.eclipse.uml2.uml.Constraint;
+import org.eclipse.uml2.uml.Element;
+import org.polarsys.chess.contracts.profile.chesscontract.FormalProperty;
+import org.polarsys.chess.contracts.profile.chesscontract.util.ContractEntityUtil;
+import org.polarsys.chess.contracts.profile.chesscontract.util.EntityUtil;
+import org.polarsys.chess.service.internal.utils.SelectionUtil;
+
+import eu.fbk.eclipse.standardtools.propertyEditor.propertyTab.PropertyEditorTab;
+
+public class CustomPropertyEditorTab extends PropertyEditorTab {
+
+	private ContractEntityUtil contractEntityUtil = ContractEntityUtil.getInstance();
+	private SelectionUtil selectionUtil = SelectionUtil.getInstance();
+	private EntityUtil entityUtil = EntityUtil.getInstance();
+
+	@Override
+	public String[] getPropertyOwnerInputPorts(Object formalProperty) {
+		Element umlOwner = entityUtil.getOwner((Constraint) formalProperty);
+		int direction = FlowDirection.IN_VALUE;
+		return entityUtil.getPortsNames(umlOwner, direction);
+	}
+
+	@Override
+	public String[] getPropertyOwnerOutputPorts(Object formalProperty) {
+		Element umlOwner = entityUtil.getOwner((Constraint) formalProperty);
+		int direction = FlowDirection.OUT_VALUE;
+		return entityUtil.getPortsNames(umlOwner, direction);
+	}
+
+	@Override
+	public String[] getPropertyOwnerInputOutputPorts(Object formalProperty) {
+		Element umlOwner = entityUtil.getOwner((Constraint) formalProperty);
+		int direction = FlowDirection.INOUT_VALUE;
+		return entityUtil.getPortsNames(umlOwner, direction);
+	}
+
+	@Override
+	public String[] getPropertyOwnerAttributes(Object property) {
+		Element umlOwner = ((Constraint) property).getOwner();
+		EList<String> attrArr = new BasicEList<String>();
+
+		attrArr.addAll(entityUtil.getBooleanAttributesNamesExceptsPorts(umlOwner));
+
+		String[] attributesStrArr = new String[attrArr.size()];
+		return attrArr.toArray(attributesStrArr);
+
+	}
+
+	@Override
+	public Object returnProperty(ISelection selection) {
+	
+
+		Object selectedUmlElement = selectionUtil.getUmlSelectedObject(selection);
+
+		if (selectedUmlElement instanceof Constraint) {
+			Constraint umlConstraint = (Constraint) selectedUmlElement;
+			if (contractEntityUtil.isFormalProperty(umlConstraint)) {
+				return umlConstraint;
+			}
+		}
+
+		return null;
+	}
+
+	@Override
+	public Resource getResourceFromProperty(Object formalProperty) {
+
+		return ((Constraint) formalProperty).eResource();
+	}
+
+	@Override
+	public void propertyEditorchanged(Object property, String textChanged) {
+		contractEntityUtil.saveFormalProperty(contractEntityUtil.getFormalProperty((Constraint) property), textChanged);
+	}
+
+	public String getPropertyName(Object property) {
+		if (property != null) {
+			return ((Constraint) property).getQualifiedName();
+		}
+		return null;
+	}
+
+	public String getStrFromProperty(Object property) {
+		FormalProperty formalProperty = contractEntityUtil.getFormalProperty((Constraint) property);
+		return contractEntityUtil.getPropertyStr(formalProperty);
+	}
+
+}
diff --git a/org.polarsys.chess.properties.propertyEditor/.svn/pristine/84/840bb71c03bf83525100c2e64ed14e864bbbba56.svn-base b/org.polarsys.chess.properties.propertyEditor/.svn/pristine/84/840bb71c03bf83525100c2e64ed14e864bbbba56.svn-base
new file mode 100644
index 000000000..b862a296d
--- /dev/null
+++ b/org.polarsys.chess.properties.propertyEditor/.svn/pristine/84/840bb71c03bf83525100c2e64ed14e864bbbba56.svn-base
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<classpath>
+	<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.8"/>
+	<classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>
+	<classpathentry kind="src" path="src"/>
+	<classpathentry kind="output" path="bin"/>
+</classpath>
diff --git a/org.polarsys.chess.properties.propertyEditor/.svn/pristine/c7/c7b12fd196d5f1da852b2499aade83e29a8e9be3.svn-base b/org.polarsys.chess.properties.propertyEditor/.svn/pristine/c7/c7b12fd196d5f1da852b2499aade83e29a8e9be3.svn-base
new file mode 100644
index 000000000..a94fed554
--- /dev/null
+++ b/org.polarsys.chess.properties.propertyEditor/.svn/pristine/c7/c7b12fd196d5f1da852b2499aade83e29a8e9be3.svn-base
@@ -0,0 +1,17 @@
+Manifest-Version: 1.0
+Bundle-ManifestVersion: 2
+Bundle-Name: org.polarsys.chess.properties.propertyEditor
+Bundle-SymbolicName: org.polarsys.chess.properties.propertyEditor;singleton:=true
+Bundle-Version: 1.0.0.qualifier
+Bundle-RequiredExecutionEnvironment: JavaSE-1.8
+Require-Bundle: org.eclipse.papyrus.infra.core,
+ org.eclipse.ui.views.properties.tabbed,
+ eu.fbk.eclipse.standardtools.propertyEditor.core,
+ org.polarsys.chess.chessmlprofile;bundle-version="0.9.0",
+ org.polarsys.chess.utils
+Import-Package: org.eclipse.gef,
+ org.eclipse.gmf.runtime.diagram.ui.editparts,
+ org.eclipse.papyrus.infra.emf.utils,
+ org.eclipse.papyrus.uml.diagram.common.edit.part,
+ org.eclipse.uml2.uml
+Bundle-Vendor: Fondazione Bruno Kessler
diff --git a/org.polarsys.chess.properties.propertyEditor/.svn/pristine/ce/ceb68d84ab6670ae76b7b442439794fe1e756c07.svn-base b/org.polarsys.chess.properties.propertyEditor/.svn/pristine/ce/ceb68d84ab6670ae76b7b442439794fe1e756c07.svn-base
new file mode 100644
index 000000000..ae3c17260
--- /dev/null
+++ b/org.polarsys.chess.properties.propertyEditor/.svn/pristine/ce/ceb68d84ab6670ae76b7b442439794fe1e756c07.svn-base
@@ -0,0 +1 @@
+/bin/
diff --git a/org.polarsys.chess.properties.propertyEditor/.svn/pristine/e9/e9b73ba497796085d5c909a5ecad8fe3c97d5dc0.svn-base b/org.polarsys.chess.properties.propertyEditor/.svn/pristine/e9/e9b73ba497796085d5c909a5ecad8fe3c97d5dc0.svn-base
new file mode 100644
index 000000000..7c3b9d809
--- /dev/null
+++ b/org.polarsys.chess.properties.propertyEditor/.svn/pristine/e9/e9b73ba497796085d5c909a5ecad8fe3c97d5dc0.svn-base
@@ -0,0 +1,19 @@
+Manifest-Version: 1.0
+Bundle-ManifestVersion: 2
+Bundle-Name: org.polarsys.chess.properties.propertyEditor
+Bundle-SymbolicName: org.polarsys.chess.properties.propertyEditor;singleton:=true
+Bundle-Version: 1.0.0.qualifier
+Bundle-RequiredExecutionEnvironment: JavaSE-1.8
+Require-Bundle: org.eclipse.papyrus.infra.core,
+ org.eclipse.ui.views.properties.tabbed,
+ eu.fbk.eclipse.standardtools.propertyEditor.core,
+ org.polarsys.chess.chessmlprofile;bundle-version="0.9.0",
+ org.polarsys.chess.contracts.profile,
+ org.polarsys.chess.service,
+ org.polarsys.chess.core
+Import-Package: org.eclipse.gef,
+ org.eclipse.gmf.runtime.diagram.ui.editparts,
+ org.eclipse.papyrus.infra.emf.utils,
+ org.eclipse.papyrus.uml.diagram.common.edit.part,
+ org.eclipse.uml2.uml
+Bundle-Vendor: Fondazione Bruno Kessler
diff --git a/org.polarsys.chess.properties.propertyEditor/.svn/pristine/ef/ef968e72cc9356480a03399e240f459b8e7cb301.svn-base b/org.polarsys.chess.properties.propertyEditor/.svn/pristine/ef/ef968e72cc9356480a03399e240f459b8e7cb301.svn-base
new file mode 100644
index 000000000..d04ae136a
--- /dev/null
+++ b/org.polarsys.chess.properties.propertyEditor/.svn/pristine/ef/ef968e72cc9356480a03399e240f459b8e7cb301.svn-base
@@ -0,0 +1,38 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<?eclipse version="3.4"?>
+<plugin>
+     <extension
+         point="org.eclipse.ui.views.properties.tabbed.propertyTabs">
+      <propertyTabs
+            contributorId="TreeOutlinePage">
+         <propertyTab
+               afterTab="advanced"
+               category="Editors"
+               id="CustomPropertyTab"
+               label="CustomPropertyEditor">
+         </propertyTab>       
+      </propertyTabs>
+   </extension>
+   <extension
+         point="org.eclipse.ui.views.properties.tabbed.propertySections">
+      <propertySections
+            contributorId="TreeOutlinePage">
+         <propertySection
+               class="org.polarsys.chess.properties.propertyEditor.CustomPropertyEditorTab"
+               filter="org.polarsys.chess.properties.propertyEditor.PropertyEditorFilter"
+               id="CustomPropertyEditorSection"
+               tab="CustomPropertyTab">
+         </propertySection>
+      </propertySections>
+   </extension>
+   <extension
+         point="org.eclipse.ui.views.properties.tabbed.propertyContributor">
+      <propertyContributor
+            contributorId="TreeOutlinePage">
+         <propertyCategory
+               category="Editors">
+         </propertyCategory>
+      </propertyContributor>
+   </extension>
+
+</plugin>
diff --git a/org.polarsys.chess.properties.propertyEditor/.svn/pristine/f5/f542b7f2ddd54cdb03656b82385d3273f5f8fb09.svn-base b/org.polarsys.chess.properties.propertyEditor/.svn/pristine/f5/f542b7f2ddd54cdb03656b82385d3273f5f8fb09.svn-base
new file mode 100644
index 000000000..97c990cf5
--- /dev/null
+++ b/org.polarsys.chess.properties.propertyEditor/.svn/pristine/f5/f542b7f2ddd54cdb03656b82385d3273f5f8fb09.svn-base
@@ -0,0 +1,35 @@
+/*******************************************************************************
+ * Copyright (C) 2017 Fondazione Bruno Kessler.
+ * 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:
+ *     Alberto Debiasi - initial API and implementation
+ ******************************************************************************/
+package org.polarsys.chess.properties.propertyEditor;
+
+import org.eclipse.uml2.uml.Constraint;
+import org.polarsys.chess.contracts.profile.chesscontract.util.ContractEntityUtil;
+import org.polarsys.chess.service.internal.utils.SelectionUtil;
+
+public class PropertyEditorFilter implements org.eclipse.jface.viewers.IFilter {
+
+	private SelectionUtil selectionUtil = SelectionUtil.getInstance();
+	private ContractEntityUtil contractEntityUtil = ContractEntityUtil.getInstance();
+
+	@Override
+	public boolean select(Object selection) {
+	
+		Object selectedUmlElement = selectionUtil.getUmlSelectedObject(selection);
+
+		if (selectedUmlElement instanceof Constraint) {
+			if (contractEntityUtil.isFormalProperty((Constraint) selectedUmlElement)) {
+				return true;
+			}
+		}
+
+		return false;
+	}
+}
diff --git a/org.polarsys.chess.properties.propertyEditor/.svn/wc.db b/org.polarsys.chess.properties.propertyEditor/.svn/wc.db
new file mode 100644
index 0000000000000000000000000000000000000000..ec124168828c9cf5403bb21c105fe36b2d6857a6
GIT binary patch
literal 47104
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
R(iKTFaZkTLy)<#x_J6VY;hF#d

literal 0
HcmV?d00001

diff --git a/org.polarsys.chess.smvExport/META-INF/MANIFEST.MF b/org.polarsys.chess.smvExport/META-INF/MANIFEST.MF
index 1c2b97ee6..cf4887323 100644
--- a/org.polarsys.chess.smvExport/META-INF/MANIFEST.MF
+++ b/org.polarsys.chess.smvExport/META-INF/MANIFEST.MF
@@ -8,7 +8,6 @@ Bundle-Vendor: Fondazione Bruno Kessler
 Require-Bundle: org.eclipse.papyrus.infra.gmfdiag.common,
  eu.fbk.eclipse.standardtools.utils,
  org.polarsys.chess.service,
- org.polarsys.chess.diagram.ui,
  org.eclipse.uml2.uml,
  org.polarsys.chess.contracts.profile;bundle-version="0.9.0",
  eu.fbk.eclipse.standardtools.StateMachineTranslatorToSmv;bundle-version="1.0.0",
diff --git a/org.polarsys.chess.smvExport/src/org/polarsys/chess/smvExport/commands/ExportNominalSMsToSmvFilesCommand.java b/org.polarsys.chess.smvExport/src/org/polarsys/chess/smvExport/commands/ExportNominalSMsToSmvFilesCommand.java
index ded66bcb5..8c2245ce5 100644
--- a/org.polarsys.chess.smvExport/src/org/polarsys/chess/smvExport/commands/ExportNominalSMsToSmvFilesCommand.java
+++ b/org.polarsys.chess.smvExport/src/org/polarsys/chess/smvExport/commands/ExportNominalSMsToSmvFilesCommand.java
@@ -15,14 +15,14 @@ import java.util.Collection;
 import org.eclipse.core.commands.ExecutionEvent;
 import org.eclipse.core.runtime.IProgressMonitor;
 import org.eclipse.uml2.uml.StateMachine;
-import org.polarsys.chess.diagram.ui.utils.ExportDialogUtils;
+import org.polarsys.chess.service.utils.DialogUtils;
 import org.polarsys.chess.smvExport.services.SmvExportService;
 import eu.fbk.eclipse.standardtools.commands.AbstractJobCommand;
 
 public class ExportNominalSMsToSmvFilesCommand  extends AbstractJobCommand {
 
 	//private SelectionUtil selectionUtil = SelectionUtil.getInstance();
-	private ExportDialogUtils exportDialogUtils = ExportDialogUtils.getInstance();
+	private DialogUtils exportDialogUtils = DialogUtils.getInstance();
 	//private DirectoryUtil directoryUtils = DirectoryUtil.getInstance();
 	private SmvExportService smvExportService = SmvExportService.getInstance();
 	
diff --git a/org.polarsys.chess.smvExport/src/org/polarsys/chess/smvExport/commands/ExportSelectedNominalSMsToSmvFilesCommand.java b/org.polarsys.chess.smvExport/src/org/polarsys/chess/smvExport/commands/ExportSelectedNominalSMsToSmvFilesCommand.java
index 60cf73951..ad87cfc01 100644
--- a/org.polarsys.chess.smvExport/src/org/polarsys/chess/smvExport/commands/ExportSelectedNominalSMsToSmvFilesCommand.java
+++ b/org.polarsys.chess.smvExport/src/org/polarsys/chess/smvExport/commands/ExportSelectedNominalSMsToSmvFilesCommand.java
@@ -15,7 +15,7 @@ import java.util.Collection;
 import org.eclipse.core.commands.ExecutionEvent;
 import org.eclipse.core.runtime.IProgressMonitor;
 import org.eclipse.uml2.uml.StateMachine;
-import org.polarsys.chess.diagram.ui.utils.ExportDialogUtils;
+import org.polarsys.chess.service.utils.DialogUtils;
 import org.polarsys.chess.service.utils.SelectionUtil;
 import org.polarsys.chess.smvExport.services.SmvExportService;
 import eu.fbk.eclipse.standardtools.commands.AbstractJobCommand;
@@ -24,7 +24,7 @@ import org.eclipse.uml2.uml.Class;
 public class ExportSelectedNominalSMsToSmvFilesCommand  extends AbstractJobCommand {
 
 	private SelectionUtil selectionUtil = SelectionUtil.getInstance();
-	private ExportDialogUtils exportDialogUtils = ExportDialogUtils.getInstance();
+	private DialogUtils dialogUtils = DialogUtils.getInstance();
 	//private DirectoryUtil directoryUtils = DirectoryUtil.getInstance();
 	private SmvExportService smvExportService = SmvExportService.getInstance();
 	
@@ -42,7 +42,7 @@ public class ExportSelectedNominalSMsToSmvFilesCommand  extends AbstractJobComma
 	public void execGUIOperations(ExecutionEvent event, IProgressMonitor monitor) throws Exception {
 		
 		umlSelectedComponent = selectionUtil.getUmlComponentFromSelectedObject(event);	
-		outputDirectoryName = exportDialogUtils.getDirectoryNameFromDialog();
+		outputDirectoryName = dialogUtils.getDirectoryNameFromDialog();
 		//currentProjectName = directoryUtils.getCurrentProjectName();
 		showPopups = true;
 		stateMachines = smvExportService.getNominalStateMachines(umlSelectedComponent);
diff --git a/plugins/org.polarsys.chess.diagram.ui/src/org/polarsys/chess/diagram/ui/commands/ExportModelToDocumentCommand.java b/plugins/org.polarsys.chess.diagram.ui/src/org/polarsys/chess/diagram/ui/commands/ExportModelToDocumentCommand.java
index 66f8ebd67..e1274e221 100644
--- a/plugins/org.polarsys.chess.diagram.ui/src/org/polarsys/chess/diagram/ui/commands/ExportModelToDocumentCommand.java
+++ b/plugins/org.polarsys.chess.diagram.ui/src/org/polarsys/chess/diagram/ui/commands/ExportModelToDocumentCommand.java
@@ -16,6 +16,7 @@ import org.eclipse.core.runtime.IProgressMonitor;
 import org.eclipse.gmf.runtime.diagram.ui.editparts.GraphicalEditPart;
 import org.polarsys.chess.diagram.ui.docGenerators.CHESSInternalBlockDiagramModel;
 import org.polarsys.chess.diagram.ui.utils.ExportDialogUtils;
+import org.polarsys.chess.service.utils.DialogUtils;
 import org.polarsys.chess.service.utils.SelectionUtil;
 
 import eu.fbk.eclipse.standardtools.commands.AbstractAsyncJobCommand;
@@ -36,6 +37,7 @@ public class ExportModelToDocumentCommand extends AbstractAsyncJobCommand {
 	private SelectionUtil selectionUtil = SelectionUtil.getInstance();
 	private DirectoryUtil directoryUtils = DirectoryUtil.getInstance();
 	private ExportDialogUtils exportDialogUtils = ExportDialogUtils.getInstance();
+	private DialogUtils dialogUtils = DialogUtils.getInstance();
 	//private OCRAComponentToImage ocraComponentToImage = OCRAComponentToImage.getInstance();
 	private DocumentGeneratorService documentGeneratorService = DocumentGeneratorService.getInstance(CHESSInternalBlockDiagramModel.getInstance());
 	
@@ -63,7 +65,7 @@ public class ExportModelToDocumentCommand extends AbstractAsyncJobCommand {
 			}
 	
 			// setShowLeafComponents(showLeafComponents);
-			String outputDirectoryName = exportDialogUtils.getDirectoryNameFromDialog();
+			String outputDirectoryName = dialogUtils.getDirectoryNameFromDialog();
 			// setDirectoryName(directoryName);
 			if ((outputDirectoryName == null) || outputDirectoryName.isEmpty()) {
 				return;
diff --git a/plugins/org.polarsys.chess.diagram.ui/src/org/polarsys/chess/diagram/ui/commands/GenerateDocumentCommand.java b/plugins/org.polarsys.chess.diagram.ui/src/org/polarsys/chess/diagram/ui/commands/GenerateDocumentCommand.java
index 012850246..f431ab9b3 100644
--- a/plugins/org.polarsys.chess.diagram.ui/src/org/polarsys/chess/diagram/ui/commands/GenerateDocumentCommand.java
+++ b/plugins/org.polarsys.chess.diagram.ui/src/org/polarsys/chess/diagram/ui/commands/GenerateDocumentCommand.java
@@ -26,6 +26,7 @@ import org.polarsys.chess.diagram.ui.docGenerators.CHESSInternalBlockDiagramMode
 import org.polarsys.chess.diagram.ui.services.CHESSDiagramsGeneratorService;
 import org.polarsys.chess.diagram.ui.utils.ExportDialogUtils;
 import org.polarsys.chess.service.internal.model.ChessSystemModel;
+import org.polarsys.chess.service.utils.DialogUtils;
 import org.polarsys.chess.service.utils.SelectionUtil;
 
 import eu.fbk.eclipse.standardtools.ModelTranslatorToOcra.services.OCRATranslatorService;
@@ -44,6 +45,7 @@ public class GenerateDocumentCommand extends AbstractJobCommand {
 	private ChessSystemModel chessToOCRAModelTranslator = ChessSystemModel.getInstance();
 	private OCRATranslatorService ocraTranslatorService = OCRATranslatorService.getInstance(chessToOCRAModelTranslator);
 	private ExportDialogUtils exportDialogUtils = ExportDialogUtils.getInstance();
+	private DialogUtils dialogUtils = DialogUtils.getInstance();
 	private CHESSDiagramsGeneratorService chessDiagramsGeneratorService = CHESSDiagramsGeneratorService
 			.getInstance(CHESSInternalBlockDiagramModel.getInstance(), CHESSBlockDefinitionDiagramModel.getInstance());
 
@@ -72,7 +74,7 @@ public class GenerateDocumentCommand extends AbstractJobCommand {
 	public void execGUIOperations(ExecutionEvent event,IProgressMonitor monitor) throws Exception {
 		umlSelectedComponent = selectionUtil.getUmlComponentFromSelectedObject(event);
 		isDiscreteTime = MessageTimeModelDialog.openQuestion();
-		outputDirectoryName = exportDialogUtils.getDirectoryNameFromDialog();
+		outputDirectoryName = dialogUtils.getDirectoryNameFromDialog();
 		currentProjectName = directoryUtils.getCurrentProjectName();
 		chessDiagrams = chessDiagramsGeneratorService.getDiagrams();
 
diff --git a/plugins/org.polarsys.chess.diagram.ui/src/org/polarsys/chess/diagram/ui/utils/ExportDialogUtils.java b/plugins/org.polarsys.chess.diagram.ui/src/org/polarsys/chess/diagram/ui/utils/ExportDialogUtils.java
index 90c416526..21b6c77ca 100644
--- a/plugins/org.polarsys.chess.diagram.ui/src/org/polarsys/chess/diagram/ui/utils/ExportDialogUtils.java
+++ b/plugins/org.polarsys.chess.diagram.ui/src/org/polarsys/chess/diagram/ui/utils/ExportDialogUtils.java
@@ -52,22 +52,22 @@ public class ExportDialogUtils {
 				});
 			}
 	
-	public String getDirectoryNameFromDialog() throws Exception {
+	/*public String getDirectoryNameFromDialog() throws Exception {
 		final Shell shell = PlatformUI.getWorkbench().getActiveWorkbenchWindow().getShell();
 
 		final DirectoryDialog directoryDialog = new DirectoryDialog(shell);
 		directoryDialog.setText("Select the directory");
 		// try {
 		directoryDialog.setFilterPath(directoryUtils.getCurrentProjectDir());
-		/*
+		
 		 * } catch(Exception e) { e.printStackTrace(); }
-		 */
+		 
 		// dd.setFilterPath(getWorkspace().getRoot().getLocation().toString());
 
 		String directoryName = directoryDialog.open();
 
 		return directoryName;
-	}
+	}*/
 
 	public String openImageDialog(String projectDir, String imageName) {
 		//Shell shell2 = PlatformUI.getWorkbench().getActiveWorkbenchWindow().getShell();
diff --git a/plugins/org.polarsys.chess.service/src/org/polarsys/chess/service/utils/DialogUtils.java b/plugins/org.polarsys.chess.service/src/org/polarsys/chess/service/utils/DialogUtils.java
new file mode 100644
index 000000000..65c883b18
--- /dev/null
+++ b/plugins/org.polarsys.chess.service/src/org/polarsys/chess/service/utils/DialogUtils.java
@@ -0,0 +1,48 @@
+/*******************************************************************************
+ * Copyright (C) 2017 Fondazione Bruno Kessler.
+ * 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:
+ *     Alberto Debiasi - initial API and implementation
+ ******************************************************************************/
+package org.polarsys.chess.service.utils;
+
+import org.eclipse.swt.widgets.DirectoryDialog;
+import org.eclipse.swt.widgets.Shell;
+import org.eclipse.ui.PlatformUI;
+import eu.fbk.eclipse.standardtools.utils.DirectoryUtil;
+
+/**
+ * 
+ *
+ */
+public class DialogUtils {
+
+	private DirectoryUtil directoryUtils = DirectoryUtil.getInstance();
+	private static DialogUtils exportDialogUtils;
+
+	public static DialogUtils getInstance() {
+		if (exportDialogUtils == null) {
+			exportDialogUtils = new DialogUtils();
+		}
+		return exportDialogUtils;
+	}
+
+	
+	
+	public String getDirectoryNameFromDialog() throws Exception {
+		final Shell shell = PlatformUI.getWorkbench().getActiveWorkbenchWindow().getShell();
+
+		final DirectoryDialog directoryDialog = new DirectoryDialog(shell);
+		directoryDialog.setText("Select the directory");
+		directoryDialog.setFilterPath(directoryUtils.getCurrentProjectDir());
+		String directoryName = directoryDialog.open();
+
+		return directoryName;
+	}
+
+
+}
-- 
GitLab