77 Token ,
88 WordCompletion ,
99} from "../constraintMenu/AutoCompletion" ;
10- import { SModelElementImpl , SModelRootImpl , SParentElementImpl , SPortImpl } from "sprotty" ;
10+ import { SModelElementImpl , SParentElementImpl , SPortImpl } from "sprotty" ;
1111import { LabelTypeRegistry } from "../labels/labelTypeRegistry" ;
1212import { DfdNodeImpl } from "./nodes" ;
1313
@@ -148,14 +148,14 @@ export class ReplaceAutoCompleteTree extends AutoCompleteTree {
148148
149149export namespace TreeBuilder {
150150 export function buildTree (
151- model : SModelRootImpl ,
152151 labelTypeRegistry : LabelTypeRegistry ,
152+ port ?: SPortImpl ,
153153 ) : AutoCompleteNode < WordOrReplacableWord > [ ] {
154154 return [
155155 buildSetOrUnsetStatement ( labelTypeRegistry , "set" ) ,
156156 buildSetOrUnsetStatement ( labelTypeRegistry , "unset" ) ,
157- buildForwardStatement ( model ) ,
158- buildAssignStatement ( labelTypeRegistry , model ) ,
157+ buildForwardStatement ( port ) ,
158+ buildAssignStatement ( labelTypeRegistry , port ) ,
159159 ] ;
160160 }
161161
@@ -173,9 +173,9 @@ export namespace TreeBuilder {
173173 } ;
174174 }
175175
176- function buildForwardStatement ( model : SModelRootImpl ) {
176+ function buildForwardStatement ( port ?: SPortImpl ) {
177177 const inputNode : AutoCompleteNode = {
178- word : new InputListWord ( model ) ,
178+ word : new InputListWord ( port ) ,
179179 children : [ ] ,
180180 } ;
181181 return {
@@ -186,20 +186,20 @@ export namespace TreeBuilder {
186186
187187 function buildAssignStatement (
188188 labelTypeRegistry : LabelTypeRegistry ,
189- model : SModelRootImpl ,
189+ port ?: SPortImpl ,
190190 ) : AutoCompleteNode < WordOrReplacableWord > {
191191 const fromNode : AutoCompleteNode = {
192192 word : new ConstantWord ( "from" ) ,
193193 children : [
194194 {
195- word : new InputListWord ( model ) ,
195+ word : new InputListWord ( port ) ,
196196 children : [ ] ,
197197 } ,
198198 ] ,
199199 } ;
200200 const ifNode : AutoCompleteNode = {
201201 word : new ConstantWord ( "if" ) ,
202- children : buildCondition ( model , labelTypeRegistry , fromNode ) ,
202+ children : buildCondition ( labelTypeRegistry , fromNode , port ) ,
203203 } ;
204204 return {
205205 word : new ConstantWord ( "assign" ) ,
@@ -212,7 +212,7 @@ export namespace TreeBuilder {
212212 } ;
213213 }
214214
215- function buildCondition ( model : SModelRootImpl , labelTypeRegistry : LabelTypeRegistry , nextNode : AutoCompleteNode ) {
215+ function buildCondition ( labelTypeRegistry : LabelTypeRegistry , nextNode : AutoCompleteNode , port ?: SPortImpl ) {
216216 const connectors : AutoCompleteNode [ ] = [ "&&" , "||" ] . map ( ( o ) => ( {
217217 word : new ConstantWord ( o ) ,
218218 children : [ ] ,
@@ -221,7 +221,7 @@ export namespace TreeBuilder {
221221 const expressors : AutoCompleteNode [ ] = [
222222 new ConstantWord ( "TRUE" ) ,
223223 new ConstantWord ( "FALSE" ) ,
224- new InputLabelWord ( model , labelTypeRegistry ) ,
224+ new InputLabelWord ( labelTypeRegistry , port ) ,
225225 ] . map ( ( e ) => ( {
226226 word : e ,
227227 children : [ ...connectors , nextNode ] ,
@@ -236,20 +236,14 @@ export namespace TreeBuilder {
236236}
237237
238238abstract class InputAwareWord {
239- constructor ( private model : SModelRootImpl ) { }
239+ constructor ( private port ?: SPortImpl ) { }
240240
241241 protected getAvailableInputs ( ) : string [ ] {
242- const selectedPorts = this . getSelectedPorts ( this . model ) ;
243- if ( selectedPorts . length === 0 ) {
244- return [ ] ;
245- }
246- return selectedPorts . flatMap ( ( port ) => {
247- const parent = port . parent ;
248- if ( ! ( parent instanceof DfdNodeImpl ) ) {
249- return [ ] ;
250- }
242+ const parent = this . port ?. parent ;
243+ if ( parent && parent instanceof DfdNodeImpl ) {
251244 return parent . getAvailableInputs ( ) . filter ( ( input ) => input !== undefined ) as string [ ] ;
252- } ) ;
245+ }
246+ return [ ] ;
253247 }
254248
255249 private getSelectedPorts ( node : SModelElementImpl ) : SPortImpl [ ] {
@@ -386,8 +380,8 @@ class InputWord extends InputAwareWord implements ReplaceableAbstractWord {
386380
387381class InputListWord implements ReplaceableAbstractWord {
388382 private inputWord : InputWord ;
389- constructor ( model : SModelRootImpl ) {
390- this . inputWord = new InputWord ( model ) ;
383+ constructor ( port ?: SPortImpl ) {
384+ this . inputWord = new InputWord ( port ) ;
391385 }
392386
393387 completionOptions ( word : string ) : WordCompletion [ ] {
@@ -426,8 +420,8 @@ class InputLabelWord implements ReplaceableAbstractWord {
426420 private inputWord : InputWord ;
427421 private labelWord : LabelWord ;
428422
429- constructor ( model : SModelRootImpl , labelTypeRegistry : LabelTypeRegistry ) {
430- this . inputWord = new InputWord ( model ) ;
423+ constructor ( labelTypeRegistry : LabelTypeRegistry , port ?: SPortImpl ) {
424+ this . inputWord = new InputWord ( port ) ;
431425 this . labelWord = new LabelWord ( labelTypeRegistry ) ;
432426 }
433427
0 commit comments