From 14eb95ecaca49dd0a3cf5211abc31c4b7ef39d0a Mon Sep 17 00:00:00 2001 From: Rodolfo Totaro Date: Sat, 14 Jan 2017 22:10:30 +0100 Subject: [PATCH] #190 In progress TqCL - syntax (insert) and library services --- .../api/services/ActorDescriptor.java | 4 + .../api/services/TqCLLibraryProvider.java | 2 +- .../impl/TcQLLibraryProviderProxy.java | 3 +- .../triquetrum/commands/ui/TqclUiModule.java | 25 +++++ .../triquetrum/commands/ui/TqclUiModule.xtend | 13 --- .../contentassist/TqclProposalProvider.java | 32 ++++++ .../commands/ui/.TqclUiModule.xtendbin | Bin 2042 -> 0 bytes .../triquetrum/commands/ui/TqclUiModule.java | 19 ---- .../.TqclDescriptionLabelProvider.xtendbin | Bin 1873 -> 1873 bytes .../ui/labeling/.TqclLabelProvider.xtendbin | Bin 2316 -> 2316 bytes .../outline/.TqclOutlineTreeProvider.xtendbin | Bin 1734 -> 1734 bytes .../quickfix/.TqclQuickfixProvider.xtendbin | Bin 1703 -> 1703 bytes .../commands/AbstractTqclRuntimeModule.java | 2 + .../triquetrum/commands/GenerateTqcl.mwe2 | 3 + .../commands/TqclRuntimeModule.java | 26 +++++ .../commands/TqclRuntimeModule.xtend | 11 -- .../commands/TqclStandaloneSetup.java | 24 ++++ .../commands/TqclStandaloneSetup.xtend | 15 --- .../scoping/TqclQualifiedNameProvider.java | 28 +++++ .../commands/scoping/TqclScopeProvider.java | 28 ++++- .../commands/validation/TqCLUtils.java | 5 + .../commands/.TqclRuntimeModule.xtendbin | Bin 1626 -> 0 bytes .../commands/.TqclStandaloneSetup.xtendbin | Bin 1900 -> 0 bytes .../commands/TqclRuntimeModule.java | 13 --- .../commands/TqclStandaloneSetup.java | 17 --- .../editor/TriquetrumLibraryProvider.java | 105 +++++++++++------- .../triquetrum/commands/api/.gitignore | 1 + 27 files changed, 243 insertions(+), 133 deletions(-) create mode 100644 org.eclipse.triquetrum.commands.xtext.ui/src/main/java/org/eclipse/triquetrum/commands/ui/TqclUiModule.java delete mode 100644 org.eclipse.triquetrum.commands.xtext.ui/src/main/java/org/eclipse/triquetrum/commands/ui/TqclUiModule.xtend delete mode 100644 org.eclipse.triquetrum.commands.xtext.ui/src/main/xtend-gen/org/eclipse/triquetrum/commands/ui/.TqclUiModule.xtendbin delete mode 100644 org.eclipse.triquetrum.commands.xtext.ui/src/main/xtend-gen/org/eclipse/triquetrum/commands/ui/TqclUiModule.java create mode 100644 org.eclipse.triquetrum.commands.xtext/src/main/java/org/eclipse/triquetrum/commands/TqclRuntimeModule.java delete mode 100644 org.eclipse.triquetrum.commands.xtext/src/main/java/org/eclipse/triquetrum/commands/TqclRuntimeModule.xtend create mode 100644 org.eclipse.triquetrum.commands.xtext/src/main/java/org/eclipse/triquetrum/commands/TqclStandaloneSetup.java delete mode 100644 org.eclipse.triquetrum.commands.xtext/src/main/java/org/eclipse/triquetrum/commands/TqclStandaloneSetup.xtend create mode 100644 org.eclipse.triquetrum.commands.xtext/src/main/java/org/eclipse/triquetrum/commands/scoping/TqclQualifiedNameProvider.java delete mode 100644 org.eclipse.triquetrum.commands.xtext/src/main/xtend-gen/org/eclipse/triquetrum/commands/.TqclRuntimeModule.xtendbin delete mode 100644 org.eclipse.triquetrum.commands.xtext/src/main/xtend-gen/org/eclipse/triquetrum/commands/.TqclStandaloneSetup.xtendbin delete mode 100644 org.eclipse.triquetrum.commands.xtext/src/main/xtend-gen/org/eclipse/triquetrum/commands/TqclRuntimeModule.java delete mode 100644 org.eclipse.triquetrum.commands.xtext/src/main/xtend-gen/org/eclipse/triquetrum/commands/TqclStandaloneSetup.java create mode 100644 target/classes/org/eclipse/triquetrum/commands/api/.gitignore diff --git a/org.eclipse.triquetrum.commands.api/src/main/java/org/eclipse/triquetrum/commands/api/services/ActorDescriptor.java b/org.eclipse.triquetrum.commands.api/src/main/java/org/eclipse/triquetrum/commands/api/services/ActorDescriptor.java index fa1ec4cf..62a8d4eb 100644 --- a/org.eclipse.triquetrum.commands.api/src/main/java/org/eclipse/triquetrum/commands/api/services/ActorDescriptor.java +++ b/org.eclipse.triquetrum.commands.api/src/main/java/org/eclipse/triquetrum/commands/api/services/ActorDescriptor.java @@ -20,5 +20,9 @@ public void addPort(PortDescriptor port) { ports.add(port); } + + public List getPorts() { + return ports; + } } diff --git a/org.eclipse.triquetrum.commands.api/src/main/java/org/eclipse/triquetrum/commands/api/services/TqCLLibraryProvider.java b/org.eclipse.triquetrum.commands.api/src/main/java/org/eclipse/triquetrum/commands/api/services/TqCLLibraryProvider.java index 7c3c1ccf..77ecb85f 100644 --- a/org.eclipse.triquetrum.commands.api/src/main/java/org/eclipse/triquetrum/commands/api/services/TqCLLibraryProvider.java +++ b/org.eclipse.triquetrum.commands.api/src/main/java/org/eclipse/triquetrum/commands/api/services/TqCLLibraryProvider.java @@ -27,7 +27,7 @@ public interface TqCLLibraryProvider { public List getPortTypes(String library) throws TqCLLibraryException; - public List getActorPorts(String actor) throws TqCLLibraryException; + public List getActorPorts(String actor) throws TqCLLibraryException; public List getActorParameters(String actor) throws TqCLLibraryException; diff --git a/org.eclipse.triquetrum.commands.api/src/main/java/org/eclipse/triquetrum/commands/api/services/impl/TcQLLibraryProviderProxy.java b/org.eclipse.triquetrum.commands.api/src/main/java/org/eclipse/triquetrum/commands/api/services/impl/TcQLLibraryProviderProxy.java index 82b5f967..9426f73c 100644 --- a/org.eclipse.triquetrum.commands.api/src/main/java/org/eclipse/triquetrum/commands/api/services/impl/TcQLLibraryProviderProxy.java +++ b/org.eclipse.triquetrum.commands.api/src/main/java/org/eclipse/triquetrum/commands/api/services/impl/TcQLLibraryProviderProxy.java @@ -21,6 +21,7 @@ import org.eclipse.triquetrum.commands.api.services.DirectorDescriptor; import org.eclipse.triquetrum.commands.api.services.EntityDescriptor; import org.eclipse.triquetrum.commands.api.services.ParameterDescriptor; +import org.eclipse.triquetrum.commands.api.services.PortDescriptor; import org.eclipse.triquetrum.commands.api.services.TqCLLibraryException; import org.eclipse.triquetrum.commands.api.services.TqCLLibraryProvider; @@ -61,7 +62,7 @@ public List getPortTypes(String library) throws TqCLLibraryException { } @Override - public List getActorPorts(String actor) throws TqCLLibraryException { + public List getActorPorts(String actor) throws TqCLLibraryException { for (TqCLLibraryProvider provider : libraryProviders.values()) { boolean hasElement = provider.hasElement(actor); if (hasElement) { diff --git a/org.eclipse.triquetrum.commands.xtext.ui/src/main/java/org/eclipse/triquetrum/commands/ui/TqclUiModule.java b/org.eclipse.triquetrum.commands.xtext.ui/src/main/java/org/eclipse/triquetrum/commands/ui/TqclUiModule.java new file mode 100644 index 00000000..112271cd --- /dev/null +++ b/org.eclipse.triquetrum.commands.xtext.ui/src/main/java/org/eclipse/triquetrum/commands/ui/TqclUiModule.java @@ -0,0 +1,25 @@ +/******************************************************************************* + * Copyright (c) 2016 Totaro Rodolfo + * All rights reserved. This program and the accompanying materials + * are made available under the terms of the Eclipse Public License v1.0 + * which accompanies this distribution, and is available at + * http://www.eclipse.org/legal/epl-v10.html + * + * generated by Xtext 2.10.0 + * + * Contributors: + * Rodolfo Totaro - initial API and implementation and/or initial documentation + *******************************************************************************/ +package org.eclipse.triquetrum.commands.ui; + +import org.eclipse.ui.plugin.AbstractUIPlugin; + +/** + * Use this class to register components to be used within the Eclipse IDE. + */ +public class TqclUiModule extends AbstractTqclUiModule { + + public TqclUiModule(AbstractUIPlugin plugin) { + super(plugin); + } +} diff --git a/org.eclipse.triquetrum.commands.xtext.ui/src/main/java/org/eclipse/triquetrum/commands/ui/TqclUiModule.xtend b/org.eclipse.triquetrum.commands.xtext.ui/src/main/java/org/eclipse/triquetrum/commands/ui/TqclUiModule.xtend deleted file mode 100644 index f5efcc03..00000000 --- a/org.eclipse.triquetrum.commands.xtext.ui/src/main/java/org/eclipse/triquetrum/commands/ui/TqclUiModule.xtend +++ /dev/null @@ -1,13 +0,0 @@ -/* - * generated by Xtext 2.10.0 - */ -package org.eclipse.triquetrum.commands.ui - -import org.eclipse.xtend.lib.annotations.FinalFieldsConstructor - -/** - * Use this class to register components to be used within the Eclipse IDE. - */ -@FinalFieldsConstructor -class TqclUiModule extends AbstractTqclUiModule { -} diff --git a/org.eclipse.triquetrum.commands.xtext.ui/src/main/java/org/eclipse/triquetrum/commands/ui/contentassist/TqclProposalProvider.java b/org.eclipse.triquetrum.commands.xtext.ui/src/main/java/org/eclipse/triquetrum/commands/ui/contentassist/TqclProposalProvider.java index 0718d842..fd3fc01a 100644 --- a/org.eclipse.triquetrum.commands.xtext.ui/src/main/java/org/eclipse/triquetrum/commands/ui/contentassist/TqclProposalProvider.java +++ b/org.eclipse.triquetrum.commands.xtext.ui/src/main/java/org/eclipse/triquetrum/commands/ui/contentassist/TqclProposalProvider.java @@ -30,15 +30,20 @@ import org.eclipse.triquetrum.commands.api.services.DirectorDescriptor; import org.eclipse.triquetrum.commands.api.services.EntityDescriptor; import org.eclipse.triquetrum.commands.api.services.ParameterDescriptor; +import org.eclipse.triquetrum.commands.api.services.PortDescriptor; import org.eclipse.triquetrum.commands.api.services.TqCLLibraryException; import org.eclipse.triquetrum.commands.api.services.TqCLLibraryProvider; import org.eclipse.triquetrum.commands.tqcl.Category; +import org.eclipse.triquetrum.commands.tqcl.Connect; +import org.eclipse.triquetrum.commands.tqcl.ConnectionPort; import org.eclipse.triquetrum.commands.tqcl.Insert; import org.eclipse.triquetrum.commands.tqcl.Library; import org.eclipse.triquetrum.commands.tqcl.Parameter; import org.eclipse.triquetrum.commands.tqcl.TriquetrumScript; import org.eclipse.triquetrum.commands.validation.TqCLUtils; import org.eclipse.xtext.Assignment; +import org.eclipse.xtext.EcoreUtil2; +import org.eclipse.xtext.RuleCall; import org.eclipse.xtext.ui.editor.contentassist.ContentAssistContext; import org.eclipse.xtext.ui.editor.contentassist.ICompletionProposalAcceptor; @@ -147,6 +152,33 @@ public void completeInsert_Name(EObject model, Assignment assignment, ContentAss } } + @Override + public void completeConnectionPort_Port(EObject model, Assignment assignment, ContentAssistContext context, + ICompletionProposalAcceptor acceptor) { + // TODO Auto-generated method stub + super.completeConnectionPort_Port(model, assignment, context, acceptor); + if (model instanceof ConnectionPort) { + ConnectionPort connectionPort = (ConnectionPort) model; + Insert actor = connectionPort.getActor(); + String actorClass = actor.getEntityClass(); + try { + List actorPorts = TqCLServices.getInstance().getTqclLibraryProvider() + .getActorPorts(TqCLUtils.cleanEntityName(actorClass)); + for (PortDescriptor portDescriptor : actorPorts) { + ICompletionProposal completionProposal = createCompletionProposal(portDescriptor.getDisplayName(), + context); + acceptor.accept(completionProposal); + } + + } catch (TqCLLibraryException e) { + // TODO Auto-generated catch block + e.printStackTrace(); + } + + } + + } + @Override public void completeInsert_Parameters(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) { diff --git a/org.eclipse.triquetrum.commands.xtext.ui/src/main/xtend-gen/org/eclipse/triquetrum/commands/ui/.TqclUiModule.xtendbin b/org.eclipse.triquetrum.commands.xtext.ui/src/main/xtend-gen/org/eclipse/triquetrum/commands/ui/.TqclUiModule.xtendbin deleted file mode 100644 index 41267d0be7e0c8002736d070fdd417fda0c685f4..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2042 zcmaJ?c{mhWA08PD$@NTQj4fGa?0dF|k!+0^QyMPHVANQ~GFg&s7+Y?xM#-A42iIuC zgvMyHWSUfNXtM7@iL8+bSKmLk?(==$d!F;0bN)ELbDrP(d*2@##Ser4Kp+qR8iqIx z_yMB(dwj6JmTw603Z8g{RDAAC2oEWKBdYj!?$<!_8pR`A*KQglzn zbW>QxT<-eN`h%QX39T*uY$8}lt=ww0&1`$DlbwHQFLk+UEY@AeY71 z8M*96mW2BzR9IylX@)nu%KPbfX(!f4!|XCF(vWNR;D>d0kMnkeIv|_;agyzV_TvG+ z#Ax7;U+uM?W>D}7HmVB6*W45?5NFXaFK_k2=7ib+@f4i$&S4|moj;|lf*o6lOlQPo z^R1gka(+G3CsDDBHWHZ@GM#NH`Bd9KWNAb5w#Rgpq^Ao##ZKKe zhEF)kq>vcSb-k=dr`;cl7f3S6AJ%x6Z;4d)wtjFmJUupX;WgSCBn{rxU~-}wlYoAJ z`l9^c%r{0)v#b=Absyhfi0EH(Qu$^iP!#q7f5F@B1&YPAVv^8U#~We(Mth)b?9k*mNQ-zD=K?|`?q+Q2Vn z+@AcJkWvxYt_d}t*rH}YZuFPVNDjO*jnsMmDyvhg+9^EyFN*FPtyhr<&lLqp&vDnT zt&*0{VlT6vI(xMCw_uxRDvzZqM@1KcoAAoLfeI9Bd&t$38iQE}<)0(w=AF#HWGgxo z8j@*EE?|AeGStw5&Q+8n5tz_TdU@5>88JmIs<}@B z^%Z^(%WCMK*9cuV#1gZ2pq_Fp;on#%1+*34*(be4m;;Snb;JLZodlas9GMv$9h6${IrJx_Vlr@lH;a??eG0jPbt#ai3+^NN( zt@HNlz?1h2+alEI7;2HK$wymNo79yzuI0;phXU=sP4hC|%P(h&ey&EIuM3t=>+6g) zn6D!L2G>Jhc9Dh!I0t(lEgnWDa70C;ULWz`_87g>?^`#NofRn=XUkn%*5ltn>2ly3 zcXahI)vfnv9#Qku?XYM(-w3Z?wzgrsdO^8h(1EMt)HT5}jiH&(^w1t&-0;_N#=hi~ z&~AOg;f=C#5MN|_WR^ii*+GgbfmRC~!Bs=Gz>%sK29t|p+DUz#1UtlB2dv|`@WwMn z?dPlc6!`9;aG!JMKNcAJ)K-Ne3o$2-=}y@^egC$~4{Bc(84`lHSSv5-Q3B10g_y2g zcLNb>Gi$VcPFD6|=HfzUs6ZAoZPdcIP1JEWpYvRhxk3_-e_$4`zn$)U-((8mv;BFy zm9#)RyGd)dmILJmmB6m0jSnm@LHm01%GBgnE4dVM`vA{&F#A-{`^)_%M6C)z)?z{1FC<*y)<}tLunO=m_#&q=cbHiUpcSL$|6AoCem+8z)0u~XI z?ym8G=n;l*>PLN0H$as=tVy~~!SU@#-ELvGFw_s{VWno85sRm67Qe_mx7-(m5U8-Q zAaQ(OAV)#}Paxk7A4ejE_!4m6bwTo2%Oy87rd#Q1Ff?6i>Xi-bx|A3u?Z%A6+dF-2 z?LNYi`BHf!u*UG!!)HgpIjGf4b14&){&h^I!72%(F0vp8Lnbnc_)jI}NjystjSv+@ z3;Wjs52m|5J$f(X-V)k{T5t!9anJshekqX<78>wE`%WK?7a3%X6D)8=zvh3d4ltlo z$k=i8xPq~vv04MDvV}r+7_X&};X0N&4W$$-`O(<8G!C2njmn{Relzc4*T?!>c%2&09Smk}f~c?z33m_Em552gj! F9RUbK5RL!< delta 64 zcmcb}cae`bz?+#xgn@&DgF&oNZ6j|36El$BJb~#Wgwevv%Lo#gJcZ31OrK-32h#%V FjsWU{4{iVe diff --git a/org.eclipse.triquetrum.commands.xtext.ui/src/main/xtend-gen/org/eclipse/triquetrum/commands/ui/labeling/.TqclLabelProvider.xtendbin b/org.eclipse.triquetrum.commands.xtext.ui/src/main/xtend-gen/org/eclipse/triquetrum/commands/ui/labeling/.TqclLabelProvider.xtendbin index ec7d4e478329032e58ea534405cd0fe2da0f8c45..2eb1c0ccfd346a373996c6563b077e0a71da2f74 100644 GIT binary patch delta 64 zcmeAX>Jj1%@MdNaVc_84VBlP)w~@DpnHflLp2KVoVO(P?V+4sz_UAAM)14glVEQzN FBLLwK5MKZQ delta 64 zcmeAX>Jj1%@MdNaVc_84U=S-*+sNC)%nYPA&tW!)Fs`wcF@i)U`*WCs=}r!NFnyZC F5dgzo4?h3^ diff --git a/org.eclipse.triquetrum.commands.xtext.ui/src/main/xtend-gen/org/eclipse/triquetrum/commands/ui/outline/.TqclOutlineTreeProvider.xtendbin b/org.eclipse.triquetrum.commands.xtext.ui/src/main/xtend-gen/org/eclipse/triquetrum/commands/ui/outline/.TqclOutlineTreeProvider.xtendbin index 578a8878cb8d7b051c6ed6b8758d511c73b3022b..cf703c495dec41e97954de3a0c599bebbfe746a1 100644 GIT binary patch delta 64 zcmX@cdyJPiz?+#xgn@&DgMo9I-bUVfCT1YLxt}Q=!uZL;%Lo#g%*kdBrk&aB!E`H| FBLM8<54->X delta 64 zcmX@cdyJPiz?+#xgn@&DgF&oNZ6j|z6El$B+|QH_Vf bindIGenerator2() { return TqclGenerator.class; } + + } diff --git a/org.eclipse.triquetrum.commands.xtext/src/main/java/org/eclipse/triquetrum/commands/GenerateTqcl.mwe2 b/org.eclipse.triquetrum.commands.xtext/src/main/java/org/eclipse/triquetrum/commands/GenerateTqcl.mwe2 index 529a1107..b1ee122b 100644 --- a/org.eclipse.triquetrum.commands.xtext/src/main/java/org/eclipse/triquetrum/commands/GenerateTqcl.mwe2 +++ b/org.eclipse.triquetrum.commands.xtext/src/main/java/org/eclipse/triquetrum/commands/GenerateTqcl.mwe2 @@ -23,6 +23,7 @@ Workflow { component = XtextGenerator { cleaner = { enabled = true + } configuration = { @@ -116,6 +117,8 @@ Workflow { generateXtendStub = false } + generateXtendStubs = false + contentAssist= { generateStub=true diff --git a/org.eclipse.triquetrum.commands.xtext/src/main/java/org/eclipse/triquetrum/commands/TqclRuntimeModule.java b/org.eclipse.triquetrum.commands.xtext/src/main/java/org/eclipse/triquetrum/commands/TqclRuntimeModule.java new file mode 100644 index 00000000..e351099b --- /dev/null +++ b/org.eclipse.triquetrum.commands.xtext/src/main/java/org/eclipse/triquetrum/commands/TqclRuntimeModule.java @@ -0,0 +1,26 @@ +/******************************************************************************* + * Copyright (c) 2016 Totaro Rodolfo + * All rights reserved. This program and the accompanying materials + * are made available under the terms of the Eclipse Public License v1.0 + * which accompanies this distribution, and is available at + * http://www.eclipse.org/legal/epl-v10.html + * + * generated by Xtext 2.10.0 + * + * Contributors: + * Rodolfo Totaro - initial API and implementation and/or initial documentation + *******************************************************************************/ +package org.eclipse.triquetrum.commands; + +import org.eclipse.xtext.naming.IQualifiedNameProvider; + +/** + * Use this class to register components to be used at runtime / without the Equinox extension registry. + */ +public class TqclRuntimeModule extends AbstractTqclRuntimeModule { + + @Override + public Class bindIQualifiedNameProvider() { + return org.eclipse.triquetrum.commands.scoping.TqclQualifiedNameProvider.class; + } +} diff --git a/org.eclipse.triquetrum.commands.xtext/src/main/java/org/eclipse/triquetrum/commands/TqclRuntimeModule.xtend b/org.eclipse.triquetrum.commands.xtext/src/main/java/org/eclipse/triquetrum/commands/TqclRuntimeModule.xtend deleted file mode 100644 index 0ffcc113..00000000 --- a/org.eclipse.triquetrum.commands.xtext/src/main/java/org/eclipse/triquetrum/commands/TqclRuntimeModule.xtend +++ /dev/null @@ -1,11 +0,0 @@ -/* - * generated by Xtext 2.10.0 - */ -package org.eclipse.triquetrum.commands - - -/** - * Use this class to register components to be used at runtime / without the Equinox extension registry. - */ -class TqclRuntimeModule extends AbstractTqclRuntimeModule { -} diff --git a/org.eclipse.triquetrum.commands.xtext/src/main/java/org/eclipse/triquetrum/commands/TqclStandaloneSetup.java b/org.eclipse.triquetrum.commands.xtext/src/main/java/org/eclipse/triquetrum/commands/TqclStandaloneSetup.java new file mode 100644 index 00000000..0fb52c01 --- /dev/null +++ b/org.eclipse.triquetrum.commands.xtext/src/main/java/org/eclipse/triquetrum/commands/TqclStandaloneSetup.java @@ -0,0 +1,24 @@ +/******************************************************************************* + * Copyright (c) 2016 Totaro Rodolfo + * All rights reserved. This program and the accompanying materials + * are made available under the terms of the Eclipse Public License v1.0 + * which accompanies this distribution, and is available at + * http://www.eclipse.org/legal/epl-v10.html + * + * generated by Xtext 2.10.0 + * + * Contributors: + * Rodolfo Totaro - initial API and implementation and/or initial documentation + *******************************************************************************/ +package org.eclipse.triquetrum.commands; + + +/** + * Initialization support for running Xtext languages without Equinox extension registry. + */ +public class TqclStandaloneSetup extends TqclStandaloneSetupGenerated { + + public static void doSetup() { + new TqclStandaloneSetup().createInjectorAndDoEMFRegistration(); + } +} diff --git a/org.eclipse.triquetrum.commands.xtext/src/main/java/org/eclipse/triquetrum/commands/TqclStandaloneSetup.xtend b/org.eclipse.triquetrum.commands.xtext/src/main/java/org/eclipse/triquetrum/commands/TqclStandaloneSetup.xtend deleted file mode 100644 index 3034945f..00000000 --- a/org.eclipse.triquetrum.commands.xtext/src/main/java/org/eclipse/triquetrum/commands/TqclStandaloneSetup.xtend +++ /dev/null @@ -1,15 +0,0 @@ -/* - * generated by Xtext 2.10.0 - */ -package org.eclipse.triquetrum.commands - - -/** - * Initialization support for running Xtext languages without Equinox extension registry. - */ -class TqclStandaloneSetup extends TqclStandaloneSetupGenerated { - - def static void doSetup() { - new TqclStandaloneSetup().createInjectorAndDoEMFRegistration() - } -} diff --git a/org.eclipse.triquetrum.commands.xtext/src/main/java/org/eclipse/triquetrum/commands/scoping/TqclQualifiedNameProvider.java b/org.eclipse.triquetrum.commands.xtext/src/main/java/org/eclipse/triquetrum/commands/scoping/TqclQualifiedNameProvider.java new file mode 100644 index 00000000..0a8c9d9d --- /dev/null +++ b/org.eclipse.triquetrum.commands.xtext/src/main/java/org/eclipse/triquetrum/commands/scoping/TqclQualifiedNameProvider.java @@ -0,0 +1,28 @@ +package org.eclipse.triquetrum.commands.scoping; + +import org.eclipse.emf.ecore.EObject; +import org.eclipse.triquetrum.commands.tqcl.Insert; +import org.eclipse.triquetrum.commands.validation.TqCLUtils; +import org.eclipse.xtext.naming.DefaultDeclarativeQualifiedNameProvider; +import org.eclipse.xtext.naming.QualifiedName; + +public class TqclQualifiedNameProvider extends DefaultDeclarativeQualifiedNameProvider { + + @Override + public QualifiedName apply(EObject eObject) { +// if (eObject instanceof Insert) { +// return getFullyQualifiedName(eObject); +// } + return super.apply(eObject); + } + + @Override + public QualifiedName getFullyQualifiedName(EObject eObject) { +// if (eObject instanceof Insert) { +// Insert insert = (Insert) eObject; +// return QualifiedName.create(TqCLUtils.cleanEntityName(insert.getName())); +// } + return super.getFullyQualifiedName(eObject); + } + +} diff --git a/org.eclipse.triquetrum.commands.xtext/src/main/java/org/eclipse/triquetrum/commands/scoping/TqclScopeProvider.java b/org.eclipse.triquetrum.commands.xtext/src/main/java/org/eclipse/triquetrum/commands/scoping/TqclScopeProvider.java index 85afc0cb..bd3f4591 100644 --- a/org.eclipse.triquetrum.commands.xtext/src/main/java/org/eclipse/triquetrum/commands/scoping/TqclScopeProvider.java +++ b/org.eclipse.triquetrum.commands.xtext/src/main/java/org/eclipse/triquetrum/commands/scoping/TqclScopeProvider.java @@ -13,14 +13,23 @@ */ package org.eclipse.triquetrum.commands.scoping; +import java.util.ArrayList; +import java.util.function.Consumer; + import org.eclipse.emf.ecore.EObject; import org.eclipse.emf.ecore.EReference; +import org.eclipse.triquetrum.commands.tqcl.Category; import org.eclipse.triquetrum.commands.tqcl.Connect; import org.eclipse.triquetrum.commands.tqcl.Insert; import org.eclipse.triquetrum.commands.tqcl.TqclPackage; import org.eclipse.xtext.EcoreUtil2; +import org.eclipse.xtext.resource.IEObjectDescription; import org.eclipse.xtext.scoping.IScope; import org.eclipse.xtext.scoping.Scopes; +import org.eclipse.xtext.scoping.impl.FilteringScope; + +import com.google.common.base.Predicate; + /** * This class contains custom scoping description. @@ -33,14 +42,28 @@ public class TqclScopeProvider extends AbstractTqclScopeProvider { @Override public IScope getScope(EObject context, EReference reference) { if (context instanceof Connect && reference == TqclPackage.Literals.CONNECTION_PORT__ACTOR) { - Connect connect = (Connect) context; // Collect a list of candidates by going through the model // EcoreUtil2 provides useful functionality to do that // For example searching for all elements within the root Object's tree EObject rootElement = EcoreUtil2.getRootContainer(context); Iterable candidates = EcoreUtil2.getAllContentsOfType(rootElement, Insert.class); // Create IEObjectDescriptions and puts them into an IScope instance - return Scopes.scopeFor(candidates); +// + Predicate predicate = new Predicate() { + + @Override + public boolean apply(IEObjectDescription objectDescription) { + EObject eObjectOrProxy = objectDescription.getEObjectOrProxy(); + if (eObjectOrProxy instanceof Insert) { + Insert insert = (Insert) eObjectOrProxy; + return Category.ACTOR.equals(insert.getCategory()); + } + return false; + } + }; + IScope scope = Scopes.scopeFor(candidates); + + return new FilteringScope(scope,predicate); } return super.getScope(context, reference); @@ -48,4 +71,5 @@ public IScope getScope(EObject context, EReference reference) { + } diff --git a/org.eclipse.triquetrum.commands.xtext/src/main/java/org/eclipse/triquetrum/commands/validation/TqCLUtils.java b/org.eclipse.triquetrum.commands.xtext/src/main/java/org/eclipse/triquetrum/commands/validation/TqCLUtils.java index 9b5784d9..61e52f16 100644 --- a/org.eclipse.triquetrum.commands.xtext/src/main/java/org/eclipse/triquetrum/commands/validation/TqCLUtils.java +++ b/org.eclipse.triquetrum.commands.xtext/src/main/java/org/eclipse/triquetrum/commands/validation/TqCLUtils.java @@ -29,4 +29,9 @@ public static String cleanParameterName(String id) { return null; } + public static String createEditorEntityName(String entityName) { + return entityName.contains(" ") ? ("\"" + entityName + "\"") : entityName; + + } + } diff --git a/org.eclipse.triquetrum.commands.xtext/src/main/xtend-gen/org/eclipse/triquetrum/commands/.TqclRuntimeModule.xtendbin b/org.eclipse.triquetrum.commands.xtext/src/main/xtend-gen/org/eclipse/triquetrum/commands/.TqclRuntimeModule.xtendbin deleted file mode 100644 index dde8342650c91ec0c60d5ebb888f02a3be54494a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1626 zcmaJ>Yd9NL7*3HTN?jsxEj6r-TWLd>ODpVQm8ldVLYtt8YZ4Q2X|?VxqAo>|mQk#x ziYTS(9-g{QwWxcjqV6o&bc|a3s`c6So*(C&ALl#gyx;r27__hm6aWT;0pYllwtzzr z7pzGXvaT168cd=F)AJndXhZr^ch-tuOhKK?;-pm5D%~Od=CwM6Cvc~|hc2`b-FjryTYFgQ|eaBVjN(ax5E~;n{tib|Ae`7JvINMnsryNsAp652mZEMtY!B&iX4!u zC-wW{v@0uvi~Wm_(jxjMe*l&+@{seX)9TbHlI8O@6~- zqloj8;H><1d7VWeT+F8&%=pKu)B^KjpCi%}`@w7BTf9n+KYU>R3RySN`J$4=gp=!I z%?QL;+dv@<`04cqH*z{z4boii#+-ctkDj&~Zn&s9HP+YlT7qPMg9cg|Xb5Fd11~FX za4mr{vmmpY^GacQ9#TO>+E- zP+nlkXd?-0chx#=Y(D>aN22cl0uXtgQj8Q+QOV%1Pw9`5WcP$HXb`y6yU~z$1OR}E z005Z()CyFfl^_zG#t8Bv>0Tw#y@GrLgMDe#&J2{l3<~;^z_P3+tQBH5(P5iPVOv^ioljNvg!0XpM$=S?BVK5nNzb`q zwy+nuu}|Kbk}Smu>r!?qHnWnS1R|gc4c53kc|tu~-x&{;?tB%O?%wUi#m)v^n@O)~ zPCsL-4Ah&Lp59;HZInpsT=F+gguTp1zC+&cX7e=+f-=Dd7Z!I+#KWPZqIs_GpQiOD z9NW(MU>JbsEEonjb4=6;$|t3JFg1*{(snB-z#_44?MmC^`rta|&#?Xp?xxk|!w}?y zFw@w<{S`_crL`Y$hD+A58$3ViPL1h?1$Rh*d5u%wCdFU&UL_tsCo8S+2QxWZDO`pc zAH}hy5mVYZejN$E7V9<7?($@jzG3i`3xAM`o7aSRFt|qTJ>~Sc@e(dV z?d?K`ITb`vakftZIQy(lEfMRhQd6HgzREE?J`f1P16_BCARgA%#fQ+NzT9EE zJh$FtT{JS+{y0>LYaQ6KL_t1dxp99U@p;>H#k{NfA)J6UjgbkgxC-h{$sHAa6hijA z`1L}Xe4b6|R_(g>o3b8wqz%-)9G6fD9kEf+?!)b5K37Okv4@@}?#I4S+`t|FtKl z&10G=7^BZ7IWQ4Cx`WoyRb_dLDE0&4?_zRbo$=xfadC_&xk^M#3X!D`UQ}8%b;>MW zD2a2DEtXwTAmWcdz*qN{FqUhSC+u>f$*@d5p!TT6F=55F$F$OowEL|4nRt;QLVIg5 z4R@(sHIZ7?Y^9asCLSU#mZX`idK+M;d0O{--I%h<)_Fg2n!Xa!(ZaG1rg~Q_+rS1m z8ePwDIdBvREY({PG9>uxO@YfW=p#Z5R93QyzGjs&Z|C?98 gtZ?{U|GYa&(6_^#!JvU(9n=>VjAw#51$eOg8)?*|^8f$< diff --git a/org.eclipse.triquetrum.commands.xtext/src/main/xtend-gen/org/eclipse/triquetrum/commands/.TqclStandaloneSetup.xtendbin b/org.eclipse.triquetrum.commands.xtext/src/main/xtend-gen/org/eclipse/triquetrum/commands/.TqclStandaloneSetup.xtendbin deleted file mode 100644 index 45c2a1b0da193d3a645efd8d39fdae0ae6449e77..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1900 zcmaKtdpr~BAICSs|iZnmg};l z&~Ymxm*WyixgW}l|Mr1OrM3WAP_vD1fzftchs#& z{Y6&7*OHyL=W{_k;k1D)Tq=1rgIV1WWHDF%*>U*pvsi(xdf}Nl%xuUddo4w7Mv2wU z=QBk*>5$5m0Wa%QL$#Z~pgo!k8|@xGLp_3pp+hKqCybwA+NG0_*$X$H;Q zMegsgWw(PrH^SCT`lAd{pkluSjxDW&5Gx$XO#S-cVO=U$q!!g7croD;9rn=S^vv+> z(|q4culNx@bBaoypx{ia@GJh&p!Xw&bf|p~k}2*=$Xglz?J?4E1X*X@r5I-9Llds+ zsEr9#br`TiZkEF@RP>?mJb@U9&wwK(HSmMZg;<&MQw0qZ(XI>xI7YFu$3@rgLgk9; zD5nTdPK-t1wyYo2EqI<294AJxC0&I1?y4EhyovRo|6M(-`&7u82iCt$`3 zjXg(hv`uo4NBYJYQL;+kFM?eU%M^CoxdvfW%Ct++_{bq^(wjgb>3S8uN`^pfX~n(M zX^}V9?Z^)gzZP@E5_jmG!YJA1M{Q7mY{0kkB!wRmBkX3Y7dKe!YBUN__6|^T94`JQ z#}w4OQkvJM-bb3W3hi`Jkz9(J^luwLGSz1EAL_@Z+(HdBg)cSK%)iD&0{etRo)=y2 z8@zfnJy?-w$`lJPY$EQ8p&{S&aw_9K)ORh{^1v-di#_S-TrHWA&dWS@_49_Rlq+J} z@hWQKda2F5{pY0l*Mp3X{;9X7b2wLlT-ffm@|sO7g>-H-wt2D|((&$l{IbHE3#V&0T4i$w9^@%})XZM=d- zb;;;CgWq%!wqahfEcGBQ*DNO&sH`i=&dqQb&c-63v;*}mZw+#RH!!yqltuX$4=1m$B5j8h1I(B{QJi~x+n8h z%P}Y4sFDRwfqor@7Eyx0r8OP_RLZH?_`%p^g1LX9hs8B(B250wO%qcdYg@1mfdr&PpYI+Bwx@EINU?ORK1lg~|Dk!NaS_vX}45hYzIg1v0t zS~vZ8ALoFxw(5Z6vTv?@w;4R%Pjqx`eJr~1>Q&UnLrCi1Ol@4?wQcsIZxAulKYTx;{)(3A{Bxe+W-Knh4W@I?A6%?s$$&7LXEvK3bfF zQf{B`T1Y%4SD?vimp8ByX>#E3c}=ebmk!!FlWgC#S5S#V9;sM4cV@wYDNRb>)Hz#? zYkWv|Wv`NP3N}~AtTzptTO+X)_bHh^&3-Eo>^LU_(j6dVC~Z6W(>94XEKmXh_@_hd zCUnQkFSWa0{rlwZ`0Nn;j}A!wcb@-!!|s25`L>tTmr=!GrM4>w03f+NYPaWt|Lpz- Dg0mj; diff --git a/org.eclipse.triquetrum.commands.xtext/src/main/xtend-gen/org/eclipse/triquetrum/commands/TqclRuntimeModule.java b/org.eclipse.triquetrum.commands.xtext/src/main/xtend-gen/org/eclipse/triquetrum/commands/TqclRuntimeModule.java deleted file mode 100644 index d0930e29..00000000 --- a/org.eclipse.triquetrum.commands.xtext/src/main/xtend-gen/org/eclipse/triquetrum/commands/TqclRuntimeModule.java +++ /dev/null @@ -1,13 +0,0 @@ -/** - * generated by Xtext 2.10.0 - */ -package org.eclipse.triquetrum.commands; - -import org.eclipse.triquetrum.commands.AbstractTqclRuntimeModule; - -/** - * Use this class to register components to be used at runtime / without the Equinox extension registry. - */ -@SuppressWarnings("all") -public class TqclRuntimeModule extends AbstractTqclRuntimeModule { -} diff --git a/org.eclipse.triquetrum.commands.xtext/src/main/xtend-gen/org/eclipse/triquetrum/commands/TqclStandaloneSetup.java b/org.eclipse.triquetrum.commands.xtext/src/main/xtend-gen/org/eclipse/triquetrum/commands/TqclStandaloneSetup.java deleted file mode 100644 index 7c0e5cb5..00000000 --- a/org.eclipse.triquetrum.commands.xtext/src/main/xtend-gen/org/eclipse/triquetrum/commands/TqclStandaloneSetup.java +++ /dev/null @@ -1,17 +0,0 @@ -/** - * generated by Xtext 2.10.0 - */ -package org.eclipse.triquetrum.commands; - -import org.eclipse.triquetrum.commands.TqclStandaloneSetupGenerated; - -/** - * Initialization support for running Xtext languages without Equinox extension registry. - */ -@SuppressWarnings("all") -public class TqclStandaloneSetup extends TqclStandaloneSetupGenerated { - public static void doSetup() { - TqclStandaloneSetup _tqclStandaloneSetup = new TqclStandaloneSetup(); - _tqclStandaloneSetup.createInjectorAndDoEMFRegistration(); - } -} diff --git a/org.eclipse.triquetrum.workflow.editor/src/main/java/org/eclipse/triquetrum/workflow/editor/TriquetrumLibraryProvider.java b/org.eclipse.triquetrum.workflow.editor/src/main/java/org/eclipse/triquetrum/workflow/editor/TriquetrumLibraryProvider.java index c5d1a3af..08102a18 100644 --- a/org.eclipse.triquetrum.workflow.editor/src/main/java/org/eclipse/triquetrum/workflow/editor/TriquetrumLibraryProvider.java +++ b/org.eclipse.triquetrum.workflow.editor/src/main/java/org/eclipse/triquetrum/workflow/editor/TriquetrumLibraryProvider.java @@ -16,6 +16,7 @@ import org.eclipse.triquetrum.commands.api.services.DirectorDescriptor; import org.eclipse.triquetrum.commands.api.services.EntityDescriptor; import org.eclipse.triquetrum.commands.api.services.ParameterDescriptor; +import org.eclipse.triquetrum.commands.api.services.PortDescriptor; import org.eclipse.triquetrum.commands.api.services.TqCLLibraryException; import org.eclipse.triquetrum.commands.api.services.TqCLLibraryProvider; import org.eclipse.triquetrum.workflow.model.util.PtolemyUtil; @@ -26,6 +27,7 @@ import ptolemy.actor.CompositeActor; import ptolemy.data.expr.Parameter; import ptolemy.kernel.Entity; +import ptolemy.kernel.Port; import ptolemy.kernel.util.Attribute; public class TriquetrumLibraryProvider implements TqCLLibraryProvider { @@ -47,48 +49,56 @@ private void init() { for (IExtension extension : extensions) { IConfigurationElement[] configurationElements = extension.getConfigurationElements(); for (IConfigurationElement group : configurationElements) { - String groupName = group.getAttribute("displayName"); - - IConfigurationElement[] children = group.getChildren(); - for (IConfigurationElement element : children) { - String clazz = element.getAttribute("class"); - String displayName = element.getAttribute("displayName"); - String icon = element.getAttribute("icon"); - String type = element.getAttribute("type"); - if (type != null) { - BoCategory boCategory = BoCategory.valueOf(type); - switch (boCategory) { - case Actor: - ActorDescriptor actorDescriptor = new ActorDescriptor(TRIQUETRUM_LIBRARY_NAME, displayName, - clazz, icon); - fillParameters(actorDescriptor); - actors.put(actorDescriptor.getClazz(), actorDescriptor); - break; - case Director: - DirectorDescriptor directorDescriptor = new DirectorDescriptor(TRIQUETRUM_LIBRARY_NAME, - displayName, clazz, icon); - fillParameters(directorDescriptor); - directors.put(directorDescriptor.getClazz(), directorDescriptor); - break; - case Parameter: - ParameterDescriptor parameterDescriptor = new ParameterDescriptor(TRIQUETRUM_LIBRARY_NAME, - displayName, clazz, icon); - fillParameters(parameterDescriptor); - parameters.put(parameterDescriptor.getClazz(), parameterDescriptor); - default: - break; - } - } else { - // TODO: manage errors - } - - } + fillElementsFromGroup(group); } } initialized = true; } + public void fillElementsFromGroup(IConfigurationElement group) { + String groupName = group.getAttribute("displayName"); + + IConfigurationElement[] children = group.getChildren(); + for (IConfigurationElement element : children) { + if (element.getName().equals("entry")) { + String clazz = element.getAttribute("class"); + String displayName = element.getAttribute("displayName"); + String icon = element.getAttribute("icon"); + String type = element.getAttribute("type"); + if (type != null) { + BoCategory boCategory = BoCategory.valueOf(type); + switch (boCategory) { + case Actor: + ActorDescriptor actorDescriptor = new ActorDescriptor(TRIQUETRUM_LIBRARY_NAME, + displayName, clazz, icon); + fillParameters(actorDescriptor); + actors.put(actorDescriptor.getClazz(), actorDescriptor); + break; + case Director: + DirectorDescriptor directorDescriptor = new DirectorDescriptor(TRIQUETRUM_LIBRARY_NAME, + displayName, clazz, icon); + fillParameters(directorDescriptor); + directors.put(directorDescriptor.getClazz(), directorDescriptor); + break; + case Parameter: + ParameterDescriptor parameterDescriptor = new ParameterDescriptor( + TRIQUETRUM_LIBRARY_NAME, displayName, clazz, icon); + fillParameters(parameterDescriptor); + parameters.put(parameterDescriptor.getClazz(), parameterDescriptor); + break; + default: + System.out.println("unsupported category " + boCategory.name()); + break; + } + } + } else if(element.getName().equals("group")){ + fillElementsFromGroup(element); + } + + } + } + private void fillParameters(EntityDescriptor entityDescriptor) { CompositeActor ptolemyModel = new CompositeActor(); @@ -102,6 +112,7 @@ private void fillParameters(EntityDescriptor entityDescriptor) { Entity entity = PtolemyUtil._createEntity(ptolemyModel, actorDescriptor.getClazz(), providerVersion, "parameterfilling"); paramList = entity.attributeList(Parameter.class); + fillPorts(actorDescriptor, entity); } else { Attribute attribute = PtolemyUtil._createAttribute(ptolemyModel, entityDescriptor.getClazz(), "parameterfilling"); @@ -126,6 +137,20 @@ private void fillParameters(EntityDescriptor entityDescriptor) { } } + public void fillPorts(ActorDescriptor actorDescriptor, Entity entity) { + List portList = entity.portList(); + for (Object object : portList) { + if (object instanceof Port) { + Port port = (Port) object; + PortDescriptor portDescriptor = new PortDescriptor(TRIQUETRUM_LIBRARY_NAME, port.getName(), port.getClassName(), null); + actorDescriptor.addPort(portDescriptor); + } + else{ + System.out.println(""); + } + } + } + @Override public List getActors(String library) throws TqCLLibraryException { init(); @@ -152,9 +177,8 @@ public List getPortTypes(String library) throws TqCLLibraryException { } @Override - public List getActorPorts(String actor) throws TqCLLibraryException { - // TODO Auto-generated method stub - return null; + public List getActorPorts(String actor) throws TqCLLibraryException { + return actors.get(actor).getPorts(); } @Override @@ -172,8 +196,7 @@ public Set getLibraryNames() { @Override public boolean hasElement(String element) { - // TODO Auto-generated method stub - return false; + return actors.containsKey(element)||directors.containsKey(element)||parameters.containsKey(element); } @Override diff --git a/target/classes/org/eclipse/triquetrum/commands/api/.gitignore b/target/classes/org/eclipse/triquetrum/commands/api/.gitignore new file mode 100644 index 00000000..81ebf4e6 --- /dev/null +++ b/target/classes/org/eclipse/triquetrum/commands/api/.gitignore @@ -0,0 +1 @@ +/TqCLCommandServices.class