From d56508010d94c9cd5fe682b69a4cb2191abc6004 Mon Sep 17 00:00:00 2001 From: Antti Villberg Date: Tue, 18 Apr 2017 16:10:21 +0300 Subject: [PATCH] Symbol code style into platform refs #7146 Change-Id: Ic417ecdf8ff59c2f89747d82932dfd404c3293c4 --- .../org.simantics.modeling.ontology/graph.tg | Bin 83106 -> 83163 bytes .../graph/Modeling.pgraph | 2 +- .../simantics/modeling/ModelingResources.java | 3 + bundles/org.simantics.modeling/adapters.xml | 7 ++ .../modeling/adapters/SymbolCodeStyle.java | 71 ++++++++++++++++++ 5 files changed, 82 insertions(+), 1 deletion(-) create mode 100644 bundles/org.simantics.modeling/src/org/simantics/modeling/adapters/SymbolCodeStyle.java diff --git a/bundles/org.simantics.modeling.ontology/graph.tg b/bundles/org.simantics.modeling.ontology/graph.tg index 0ac20b8f448112534d33dc0f7fd3536aacec62c6..bf2b0b29ca527232fdbd540daab731ae6eb01772 100644 GIT binary patch literal 83163 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

KeC@6*yTrmtV#O*D)Y)Q%cdP| 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 Hn2`Sg%IDoe literal 83106 zcmcG%2Ygk<_Wr%g2_&J0D%Pl|SU|CNL7J%aqFxJziC$UF^Mg?7dyPSg|V> z>=i5aUa#$ao;9;(&mOq<|CZ0|@3U{tch<9J*7Vu??8C2YdUH+Fj3|m?Tv2=ekNvN# zQ**JUv8}nbIHa+yp*3N0W$}R4Vna)*v7x1c+>Za#k^fU!sw+0MmRd{2mU6P6Q&O%u znM~@6(@G7HHa2vi)c#i}jBjjg&G{7?YGxIsj6&<&CiAI$7(!@nsHx8>+cniRqkPFf z^C}Lwjyz3BraiM z=c@6=*=;2>-)OW%OH)m4F^UR*)3l`h$cFuk%`HfXUl(l;o5A2(R(ePyYI{H{td%+I zj?Im8TF|9xy-Td^tuHcu&&XYYHUhR3tX*i0+mG0Is15#nCUoh%Q%%c+$s>j~*0vd8 zSx2Uyp9LAMAfA;YXVpwEZfq(UU(U1@$|Nm{k|zYq$2Ls2DN%QEsukc4()Ynodn-lvUVa7zoqMg7a@kv^TZU;3ITx}wBdtOPBRJK6XkRz$mwkP}bg9+z7~K)0$$znpIObrlB4o7QRDDyr!4!Mk47nv9YzL zJ{ukBVoB~P-De6K>XteLcAS{o4Q*_jTF+7Qq;N;m+jXT{v=JJ}s5-Zl8m8A5vw-74 zqAnj=(^@kTiy{0kl9Y;;xwB>!TboO@aNfd*kmas5Q;YRzlCDhI!i#+;k)*9PT#YUj zfVH(az1R%pNRz?fsV%L|HJlge?UK@A0!nC@KDfELhC|?0N$lv2b}VGE8OxpP8fVp% z8ivd$)z@KBhWa*9vt1?@XEkvwptrH0VL4_8cY-;+%?oiuQ{+g~wPxVNvVJ6;Wa%AT zTU%^tX=K3LiME^eLQQ=(959q2NGeA*V6Dekk)e5_q?LQBagvfwWP?Pj2y{iL<8}9| zuW4bFGWA!Qb&nYaJ=X$?09BUY}Uhy z9p|bcCD!B(&XP1fb4!c0js)8xF6^csnUDjex7vdk=6ToJL3 zn6d3RPe?k*O2=b?RB?OBfGejr zK}@dQyiq#1byQSihd7jtu*V-$#dbKFm~pVF%TFtac3e>syJO+O&fD5Du~FjO zt<;JGR5DSF?Z#@3>j{?+mB}D6nw7X4>qVcDa$=fR;=GIP7BykWu97EGR)&APQio#0 z{-x%|2D7UcQc1)y41=JB=P(R{Kao~Qvj&P+HJ-zK&v-Q^u39;(v97JY$ju#2KQL`I z&vSJVRq)uQhmG%G&aMi@N)OcObbD+q002*3ssckOFR)ZN(#q@!h zu<)1>j)aa!jABFWTn>xGYy%Z+KF&~1haE-Q4hs*)8JJ@sO45en92CB_K;?KG5I6!x zVj+mCC9ML(XOwg>lGv9~btOi$J#3@Hmom-o%mL!p3GLqOof)DHB)J@QvWJ+$H%!?e zt4(x~NGiwp9ej_Z73$?+5y^rXS4=Jy=d{?fo0Q)ZNBAb3er3P;4_%hx^ibb6tHGQ| zqTeK~eXXRiIpn~*w6jf^jB3jU8gsjkmUeC8sA-uop;(WToXm;1i&%QLwG>A;))jMS zUSt?^$BC9!w3XaBIN~gdmX?*cazjxt3Y->rs^Jd;iHNTZPJgQQQfmW!)k8Co)U5TMW2br;T)6R}I)&ev_>#_d*Z@lS^s8W} z;cfNxe#6ST-m`;lj&g>LE1-?bS)`_;NcLh};T8D@bL`o1f*fp2ha=%jNv#~wT&lwv z9<@T+S4{h|oN2a>oORJx9l7k{oK%lBb}EXH!Sk(G#MdJ0JfpF>bRe4038m<-J)v}3 z+<8K2R+~90+dBuD^HpV-L_9nta-6D4$G2gfO=R9x@o0cnn^v0MW{%^irf_T9vDAP&AfBbJqw!iU#bzrnlRMGt zyn=5KMHeXi91tQ$RCGh8Ok_Xl)?rd}y(-b1vZBW26H4_nP5&jQ!7qNS-L%Gf>^ta+ zQ-sT=;&eO{$Y~HiR;X_jdQhlhYGdQfDLBONq`H+PRW{)sbxKoBi*)BBlGf4WIivJ#l&NyRn4Bpo9j9V)6*7vwVX-G`2rfdHp3+* z)fP0hzDAmZtr{2PWwfHgYbhX;x3GY79BQuKixTj6Iy2OuFnns;cQwOKy3`r})V-(&^N3wKd=C(Gs z)wW^^)|;sm_l7L$)NxcJo-8#s>mlkWNiENgRb{d>bZReW2JW@V?jq@p!$fVdjv30# zYrx|UGisAPAV_vE)S3x(naDfI3V~rh9;Yef67@I9q3^Ct?q4wjM;kdBAg58H#32&% zTT4-6G(?PM^3w?Yza(j;{}SI26V?7A>Wqb{!R&!1_J{*5>ePW}j%lTaA`Tefxsuo| z6MHv9au(~9TYWlG9(OQLSa!Dy<%>-0*ky22Q#~H}c^Ou?m3yTO;l(8Hau^0B=v zR^Fi5MQUtKD<27>da{sptQdnOTOOSt=>e$YYkB@dOV!EqN+iga0um!n)nUt-N z@eEP%6g>jF32ITS;|Un;JFSFOD3;}1a?!@bI@^Oq-k#+WF(JbAayydkZ!Qi|k9PH? zX>#Y8E)nj$tFRu#F@rxqdb%WdrcwBmsULX7$f3MPue^H}SM+bmzF;>oHca&I@>=&q zA?n4HxXPVOI4x?##steMKTY%Wc0v&TY?oA}BOC37w+$#z}FyyB~};Nlv| zp*LC*J9>=AaAdo#*9sf~dtI0 z0vFKu1W$6TNbrouWN736gsI1RvMET2dUdF+Y1px7`V%emIaO0KRm5E>>eWMrW~tUa z{;|tcnzB2wc;ncGrZPPl9l_MJM{cE@)PzSWa_%mPwIkL5vt5{j|9(h~ONEhmv=84y zNc$BgVNXC%?}O4qvY^s~#N2g44IWCNSowZne?H17yhrIlo^*ec(+E7+g83bq_xH@L zVwQ(>Ed z5Z*8p-lV9-6V0Ni)P7h4B~-jY#jH#b*CHWG`>^Tx7-Gl_KBwl$Zl0w}U$aQ6Fo)3i z`2GSn@b+m#EI~Av&#-sJDBuy6=!Fom#3=1r>(;TIu)9mNchmAl7EAJyNGn=u>&=Z5 z%&SRKd)~@QV@C%|!YY``-rhE`F*hu*Pp&Ak4mfpVzUcveWh5pm;ylQ@A=X#OD|-Q~ zB!UX8x8{2-XcjYRrA!kYj|7ZEtOw(Z)9^S0j}pD5>Lgl^_vELDoV$#Z*V%FYw3xaK zE!ALioRvL~h@PS0Y3?ecYMPob7Olf`;?ULK&+Hb+evZ-sS*vJB6B}*z%bIqC%ctUJ zrkc4g#(6d3w29KSmhog5Y-+#hp}bt=-5G1KPG_wig-$gkOf0svPAoRh;l7ql+76sP+l8`K#zuBc3o9cM7xe zn?!t_*zj!DKK{g%j;}{rd>y-4zEdqWH`Va@PW-rNJ955pk7G+BRa)Tj4%3UR*|YS* zB4+VqR_};II!Y_>oM*z^SySbq!DLD5vSUq4sTT9WJt~Z5i(z#sU%S)}xCu?gS~L-! zESrV&MUiqEvLjI@r)vBnZaYZ@p_j5S;<=({|JvK&nDaKCTbNqk$b0oCNC$fkviQ!m z-y55!par%=>@B;|Q<5tmBkL&3CQack8lTFtOwSfI@6hc)o*>^}L)9pj|7Wvh2>cEZ zzm2mAkj=6zZTT%2y(+%t*sbgwh^~~BUaDW_^t!g#EA+bzj+hOZw05V)sjXNHi*d_}~uJoN2sATYZhsEOYZT-hJ~G{UwI3P3Eg< zciciu4~V6EiQmlXE%{Dxl)d?AF;>pzOxM%U`jXaJ<8t4E&5-oo=9>uJ+q{zEetAcI z#2gQn^c7~w)HdUGA|AK!S;el6d;k&m5k(JMEeRz1<|w^ctSf1IV5#GyCG%xbE6#>& z==3NN_1fRIjI*d|0^p-E1igk8;74BjB+g@i*6Jg(F^78j>*F^C;qVC8OmwdZmR{PB* zwaToQ`Lo~_FvXi!;^9uISjW0yyxqq%?@Q%)D-q$yN73L`{cZx%`)S$A3wL)UL}^d6 zSuJyni_DhV6{8E^uVrn9OuCC>)!2Hhgfg_;@g*^)RhQ|e+|zgzTPInp@;{pj!I=@> zdn}$f;hQVoyy=XvJF^jV!_JOX0zvxsm~tLWdr!hwH;9LecK%=x?O__gjYu;A+~(aR z=6=h>s6%6!CQHu|k8aij6HmYJMx*U1wyN4?5BY_MVT$+6dL}mK_GMc!_w@-{ag^lQ z(XEu`f#}PU+8zVT92g>5*wg<1vm!b@wQ|UPq2$xW+?PrtnWy0K9b%}m`T2`V(o0NT zN4D(Rh$Y;^kP1EB;N}M6Y2?msH?Dh<%}c)x3a-Ds&{$ErTqFMz{ zt!ip#Xd&KowV7Q^S=vdLU_EfJCCT2y(AXR}QuG-d%zYtWtFddQnS;p5d`alEtZbhW1J7}FL^XcdUIUbMaw>3 z;Veq}WbKu#AVTx4ll?}>6dCO$8F#bgdCLM?>lm?hbvK~yIc0i^So$Cw+nu&2yfxz% zk??+ZIdd(VVyxNnrK_}TcCVR&_0a3h>(|ACeME;B!YoRfe`~+&?vBpkqZ1s2M)IXm zKA&%JPh$^&C2r%R(d@>fz!fAuAZx>Te^K#}X75c3k21x3fD`=-2~nzRsBKKU@R-|* zKJF%b?nJyAH50o67It$WOV2m%wwV!5)|}Da#^yDc>y79_v31_9I2DIfJ^UiH3v7PN z+h8t(Exv$X&fB*n3(qs_WLQPI94?U}7F zZhx0snj1_`{<^HimsR%XY%sRb2MvE+=*}LzFxC`ON26F=sKZ^E=RBVnEolv?vsPQi9J&5Cl9sM%{ z5Y2<|jv6ja$of3}OF}=S*0{r4JWYVqHR_`Ia!@X(V3QRnNW? z-J^k|Of0KqqjGE`zOk1Bqu=YW%J-yJF1X(xY#( zshIf)*SmmHL(ZH%fy;`ugS(VyC!lGN7H*R5U53_R_s-)qh74v#NLx`x03x7Ot?I zC~Tam>Ea6P-1?4T{I_ISm1}PEJ$d}2n6ggS7(SEq-noI|3S~Y15J7h@@@!DY--$6l z%xumHkHm4%jyl%jKgHO`k5v4!ypwW~Ffx1o)JbIDH|Bee`~cl#^o7a&rXVw{w4m=LF<(8c$IW8vGF)D>@g`(CMhxwS7V%yS zA7OteT$M%JVtiowSWK0iQqm8c>qcJS_eG#i#@V*YFf874wQ0Eh$IG298scJ6@YpT6 zvlwLA*%T`8%4uE`B(1%vJ)?M767bakMhE@0MShm_+-%d*x|n=NG&i<2X}*ccMkW_e zlA6u8lAaATE`s{He$rKpZs4d7H@bLXCqZw_^Tra%y0UA@+-6}kJw~Y(m`~dBz4bqn;Y@581ZsQzEaU)NXNIi_D;>a zaj^$ASlNg8{?hJNbKQN684_2BwHtoDwe0&6oJ4q5C%ul7SMVSxc^u|=aXYCJC(g;> zccgQtk?pxnLlfx7^9&mDwT!xWKqoAdgj`!79SGDT=a`k2+a?gwj9>SBLVqDI^_yh_7< z*$q-MQgzF(8Ufe~O+pIc!ilJO1fgA6Oz7s{{TkmQkyudR_Tn?hvmQU4?5rlyoDLuEv7`e217le~oTo@{Juh3DAD#{lUVW zOuQwFHF{7~1*%}-nLoO*oqhuuT|>UQqh#&gNRHW~-g*{%J&-JdIex9ZNydVf4nRV( zh(~TWYk1607WFXCZ}B_Y{8GmgezGVyb)?%%YQd~~X@yV+X6jysNGD2S7bHUE9$_N{ z&eCL2<)|VadW0jN@rY#JLL`e; zAC4c1;3pLRiD53jRUT`8T7k76+44YRE0^t(X&*_g!naAK=?$it zdec4ewJpZ><*JLyvDW%~&~%h31y5`69*=GN4zxVn zC5yVs7Y0T6P3Bks{Owq}u~=}^DsOJ{1}j+<9`@4FNRD4C;|9b|<9Rt9T`{DlL67sLCOuZv7*#Lr7-VBAh@v|SKC2P0mTL2K$niDkk+*RIC?Y^d-e zB=I6|k$F~p)i0PSVjHI^X0?63or=7}MiQ{LG8b4iu=a`a; zCM|G6$Ip1>9x9$IX9H39W;_CQ4~?RAMAapG*U28wQ(0@*>4SDaWPGc^PCh;qv!m#G z`mVFykb1m?o)?)p%pTG=XIsqIzL9JX>+l5u`=v#00O}H%UMX3xl$9AnUB$8os)L!R`RxD1@V3Dw1Xz1)DXEI2*K13oNgP>1*m*cw=kdmTsV-PY2Hc=UI|i zF!#(+SMlv&TfYCs{O2hW`T1X0{N%~}F0F-{uDF}A&v!wmOHz3@T$3@9($Rl@gIe3Co`S734_%g7htu z2pwOTw`1rHmpBAB?tCR2$~Gj1@%d}h6JoEBTU--zVP#3`Iczq5kidxX2-Y(v8;iMj zoxJLxtCTO`o90pP9;Qj!@LS4ReuFF&YoFT85Z-tcoV!cohqWop z7Gu|C-3raH6lMpl`vnu5z1HRYH>xb$0!u8+mf!y&9E?8sb!BgSE8QaRWoFVue%jEx zI|emInVb%E?}6LZ$R{}__#sZhA7UlP1cCj`MDLr>ge!tkd8HjEi44q6%R`Y6_3r5c z!}RrMg_*UTg2x|)MtH@qaF_jWV>5nLB)AP3*-%^GR#&VW$)68!7RImen6hkxr^CdE zr;JTJ0OK9Ybsc*b8ME7xVP4(MY%?z<$%1N@?809Z&d#P)vX11) zm-XdaMLSyMw^zNp4a3U;;X07YPw0C0Fn3SOSa+8Es%zxD>-Q)dN_LbI|K%b?afB%Q zXkSQ+2Vu+?37_rr63vNQejQ8x*GYWzAzQm zWQ`;h@GDdLW}z0=5=mI2Uzoa9CQJGwA?jVQwK!bJ4BsKL3A$3*C)tjcnBcmLIb6Tj z>w!W(M7{&?L#}T4d>gJ00$vjE`vJcf@Vf!O6Y$#szZLMC0lyLO>jA&!@neYp)qr2| znDtv6@XGo6@jT}-%YQcDX99jY;HLt9GTSzzYI?AmIB0zAxZ=1HLEVy92(<<2w-logTA3|Mr;n+dZcJR_usq)3WyX zd$VP}1tnX*j39$!H{DX(#*ngPorF zU+3k2pk>V;Kf0#f>6t&;%*DgCo2>f%4d?XNczXOGxjVF81^+pX}?wIsHYj zYyBFaCu{%nM+IP~XZNp7pyR<7iFr`8dC>i@)C*8@Z6;`V;v~$6v7e z$7_Ml%UJx+_55KgfSvy|!#V$R0{^o;f7l9O=U+6O^FJ%_KhyJvtpIlZb%t~PX9WIO zvt0dQD{u|d`qvuH`JWc}V~uqFuobvws{d5OIsa1v|C2p`*a~3hUt>7ue^TIoqUR4= z0qp$uHJtN5A@D!m^M|bfcK%Zg=ltgd{>OR#uob}0e{aJ%|6>FHV?2M@3Sj5Im*JfM z(SiR_oSg{N9QYsP`NLKKJOAAb=lro}DNFftJ%8?JVCO&Cu`7c_%erEH z*adcQ^0qxcjI#WeVgAF%Vt>QhceVVQ;e_*z{y$p&$*`7}aJ`y?tJV7NWVyv~G{SN- z{(gaYMjBTC0{6EjT=lrVL^&^7ZZQ6F$?_~){tJek|4i_HS$icMo8aU)tLJ`2KGw$5 zAB;TJU)pyD>{lWENBn&Zf5}(iFYC(k!KzQN*A=klDvLkXQ0M;$>}2(amaKa5FJ>(M zSOcB^gV2-JA6jzGzcyp>#~PONC#yfS1#r$EYnHP3@9X(5fS#=W(2`Xz@ng+V7XN)b z|NEdPt3TH#ujH(2%JKPhAJpBVU))gRgdIOjhhWAPs! z_>Qx^Z7J^yo|C#yf#Kd|b>A8U}Z_+!m-<(~yTS^c3Ut6uy^WGw!}J%7ee zR)1*8Isai9i~ms1pW}zD{?L+h{zEbr{~bMlj(@WHLrc#256)Qp2YLQHTanctT5`^R zhm6I4d(WTsC#yfS4CnmU3H;ag{9!AQ)qj7( zIsY}X^ITGd9jxcMq|UJFIXAjuHYEL+ySM%%~AK;vQ z)xZwU*;mQ9urmBt3iRNde#O8J&e{6}c5u$VLSP5y?7ag!IA`w_*ugn_&%h4O*?R!1#r$@<=NRE;GDgyXUASx0O#yoGJC}S2IuUZJ^PukgLC#ynLWW; zSpetk9X&ha1Ly1=0y{WouMF(qoV_BjgLC$BFxHeZv|IWP%5NWVyKH{M*T4?e`4L}j zSo4$lROac=haK$n=NZoF3!eU5*uhSJj^Ug>L7Yz^Uc?z64LkWsFzOLw?2}b5&vRo> zeUu7)nl(E`}*`BPmldr*wd49`oBFr#%oGeJ>nj+v&gp;m^c-Vk)nhJ_ zbNb&rJ?3IcRz2n(Ij8^C(_`+XWYuG?k#qWAJU!-GN>)AQ7CEQ?+0(bjXR_)s7sxsN zPo5rQKP9UkgNK~c|LEycd?u@&V;h{)|KRC4mdUDzl$_IlpXnoxRkGDb9DCrL{yR_4 zu|`%s#}YWF|JKv9Z^^1>-+^=bZ;M`w)cuf1l9@GAi$FyS(x$_Lz3eS*NERbKWuS|Mr-6%t5vD{*d2^E5|)8 z4@6Rx(WW#IZ*bnCo;==Me7A(m?+ME~Kw~+=JS_YJ8}bsp{k}cg&hh~0 zyCIKF!8hQq+8N*VV2uYhVbyPF*~SwM0$&&SUkmo_WX+%DlQn<%3j6tAeO2Vc?q`CaAdnctN`eq=vCvgQY0(fj#b;pv&*{EX9!EpLG=yW%sn>E*Ed{$$%e zq9-@wS`XK;&|ikX8V~cw8twG6Eo=XOVA%D)W#`ZKroYw)c?)Yi?Eg!G@=yn-hmA2x zY>1J*!u=3pccjlTtmTXS!XUp3z~jyNBgJQ4F1~S=H9q)?UE>=IJ|B9Y&trb(qAew> zo#T`2x97QFZEt)|&++uk|7@`42b-{;AMG~3l>TRd{r))3~TvfKP|}bR4+f+QnLE9f62DK zaV_{1kGWT!9PmjQr?X){F=JWJP6!xh0?l9S^D-8H%!!=+n2g1KbjIR;l*bED{*f7r z{_u=Ne^|hW27CzE_OIy4+Q083f3UW1!Ls|l5_!|^;@>Rb?JWEKeQ>5vkAwZ7tbFAd z

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%0AGkli1RifL{^nWuO*~)Y*o0Pi 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 diff --git a/bundles/org.simantics.modeling.ontology/graph/Modeling.pgraph b/bundles/org.simantics.modeling.ontology/graph/Modeling.pgraph index ebc49fbe0..94b3b5df1 100644 --- a/bundles/org.simantics.modeling.ontology/graph/Modeling.pgraph +++ b/bundles/org.simantics.modeling.ontology/graph/Modeling.pgraph @@ -515,4 +515,4 @@ MOD.SVGTabContribution : SEL.SCLTabContribution "svgTabContribution" "() -> TabContribution" - \ No newline at end of file +MOD.SymbolCodeStyle : DIA.Style \ No newline at end of file diff --git a/bundles/org.simantics.modeling.ontology/src/org/simantics/modeling/ModelingResources.java b/bundles/org.simantics.modeling.ontology/src/org/simantics/modeling/ModelingResources.java index 8504813e8..13cef22bc 100644 --- a/bundles/org.simantics.modeling.ontology/src/org/simantics/modeling/ModelingResources.java +++ b/bundles/org.simantics.modeling.ontology/src/org/simantics/modeling/ModelingResources.java @@ -406,6 +406,7 @@ public class ModelingResources { public final Resource Subscription_Item_Unit_Inverse; public final Resource Subscription_Item_VariableId; public final Resource Subscription_Item_VariableId_Inverse; + public final Resource SymbolCodeStyle; public final Resource SymbolToComponentType; public final Resource SystemPropertyInfo; @Deprecated public final Resource TestTerminal; @@ -833,6 +834,7 @@ public class ModelingResources { public static final String Subscription_Item_Unit_Inverse = "http://www.simantics.org/Modeling-1.2/Subscription/Item/Unit/Inverse"; public static final String Subscription_Item_VariableId = "http://www.simantics.org/Modeling-1.2/Subscription/Item/VariableId"; public static final String Subscription_Item_VariableId_Inverse = "http://www.simantics.org/Modeling-1.2/Subscription/Item/VariableId/Inverse"; + public static final String SymbolCodeStyle = "http://www.simantics.org/Modeling-1.2/SymbolCodeStyle"; public static final String SymbolToComponentType = "http://www.simantics.org/Modeling-1.2/SymbolToComponentType"; public static final String SystemPropertyInfo = "http://www.simantics.org/Modeling-1.2/SystemPropertyInfo"; @Deprecated public static final String TestTerminal = "http://www.simantics.org/Modeling-1.2/TestTerminal"; @@ -1270,6 +1272,7 @@ public class ModelingResources { Subscription_Item_Unit_Inverse = getResourceOrNull(graph, URIs.Subscription_Item_Unit_Inverse); Subscription_Item_VariableId = getResourceOrNull(graph, URIs.Subscription_Item_VariableId); Subscription_Item_VariableId_Inverse = getResourceOrNull(graph, URIs.Subscription_Item_VariableId_Inverse); + SymbolCodeStyle = getResourceOrNull(graph, URIs.SymbolCodeStyle); SymbolToComponentType = getResourceOrNull(graph, URIs.SymbolToComponentType); SystemPropertyInfo = getResourceOrNull(graph, URIs.SystemPropertyInfo); TestTerminal = getResourceOrNull(graph, URIs.TestTerminal); diff --git a/bundles/org.simantics.modeling/adapters.xml b/bundles/org.simantics.modeling/adapters.xml index c56ab44ad..b1a0bf3e1 100644 --- a/bundles/org.simantics.modeling/adapters.xml +++ b/bundles/org.simantics.modeling/adapters.xml @@ -225,4 +225,11 @@ class="org.simantics.modeling.typicals.rules.PageSettingsTypicalRule" constructor="get" /> + + + + + + \ No newline at end of file diff --git a/bundles/org.simantics.modeling/src/org/simantics/modeling/adapters/SymbolCodeStyle.java b/bundles/org.simantics.modeling/src/org/simantics/modeling/adapters/SymbolCodeStyle.java new file mode 100644 index 000000000..fb584331e --- /dev/null +++ b/bundles/org.simantics.modeling/src/org/simantics/modeling/adapters/SymbolCodeStyle.java @@ -0,0 +1,71 @@ +/******************************************************************************* + * Copyright (c) 2017 Association for Decentralized Information Management + * in Industry THTH ry. + * All rights reserved. This program and the accompanying materials + * are made available under the terms of the Eclipse Public License v1.0 + * which accompanies this distribution, and is available at + * http://www.eclipse.org/legal/epl-v10.html + * + * Contributors: + * Semantum Oy - initial API and implementation + *******************************************************************************/ +package org.simantics.modeling.adapters; + +import java.util.ArrayList; +import java.util.List; + +import org.simantics.db.ReadGraph; +import org.simantics.db.Resource; +import org.simantics.db.exception.DatabaseException; +import org.simantics.db.layer0.variable.Variable; +import org.simantics.db.layer0.variable.Variables; +import org.simantics.diagram.profile.StyleBase; +import org.simantics.diagram.stubs.DiagramResource; +import org.simantics.scenegraph.INode; +import org.simantics.scenegraph.g2d.nodes.SVGNode; +import org.simantics.scenegraph.g2d.nodes.SVGNode.SVGNodeAssignment; +import org.simantics.scenegraph.profile.EvaluationContext; +import org.simantics.scenegraph.utils.NodeUtil; +import org.simantics.utils.datastructures.Pair; + +/** + * @author Antti Villberg + * @since 1.29.0 + */ +public class SymbolCodeStyle extends StyleBase, Object>> { + + @Override + public Pair, Object> calculateStyle(ReadGraph graph, Resource runtimeDiagram, Resource entry, Resource element, Variable configuration) throws DatabaseException { + DiagramResource DIA = DiagramResource.getInstance(graph); + + // Find a component for the element + Variable elementVariable = Variables.getPossibleVariable(graph, element); + if (elementVariable == null) + return null; + List styles = elementVariable.getPossiblePropertyValue(graph, DIA.symbolCode); + if (styles == null) + return null; + + // If element is moved, recalculate style + Object transform = graph.getPossibleRelatedValue(element, DIA.HasTransform); + + return Pair.make(styles, transform); + } + + @Override + public void applyStyleForNode(EvaluationContext evaluationContext, INode node, Pair, Object> result) { + if (result == null || result.first == null || result.first.isEmpty()) + return; + + List styles = result.first; + List assignments = new ArrayList<>(styles.size()/3); + for (int i = 0; i < styles.size()/3; i++) + assignments.add(new SVGNodeAssignment(styles.get(3*i), styles.get(3*i+1), styles.get(3*i+2))); + + for (SVGNode p : NodeUtil.collectNodes(node, SVGNode.class)) { + p.setAssignments(assignments); + p.cleanDiagramCache(); + } + } + +} -- 2.43.2