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 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 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 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 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 zcmeHQYiu0Xb)Gx350Vl^JuI(DTIQ&dEN;ZdydPFvo03*GA&QjwkgQ0|W*&E>wU%6Z zcd195xFDq@En4(PQ3P(A{0NFXnxJTb0zrQCNBkpjP@stor$~S_MeC%<j|NTB6zRiF z+B2`6nI*Xol5!<_mfYRDcg{Wc-gBRG?sv}2yf9IyV%jQ|7qlwP6A1z#;#ry|2x1!E zL-0NZZv^jN_dES2eA_QOZomm`{4q)l|LWx=Tu)Lzwy9|9UFw(A	kKKStB&Fgm<( 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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