X-Git-Url: https://gerrit.simantics.org/r/gitweb?a=blobdiff_plain;f=bundles%2Forg.simantics.scl.ui%2Fsrc%2Forg%2Fsimantics%2Fscl%2Fui%2Fassist%2FSCLContentProposalProvider.java;h=34464476b287e2b0e5e3647569b3a03937034753;hb=bf5f7cda1b9b64484cc6e53499e38d6785744aec;hp=8c51a111410f88c414ec0e844a4a28144440cdf8;hpb=969bd23cab98a79ca9101af33334000879fb60c5;p=simantics%2Fplatform.git diff --git a/bundles/org.simantics.scl.ui/src/org/simantics/scl/ui/assist/SCLContentProposalProvider.java b/bundles/org.simantics.scl.ui/src/org/simantics/scl/ui/assist/SCLContentProposalProvider.java index 8c51a1114..34464476b 100644 --- a/bundles/org.simantics.scl.ui/src/org/simantics/scl/ui/assist/SCLContentProposalProvider.java +++ b/bundles/org.simantics.scl.ui/src/org/simantics/scl/ui/assist/SCLContentProposalProvider.java @@ -1,63 +1,63 @@ -package org.simantics.scl.ui.assist; - -import java.util.ArrayList; -import java.util.List; -import java.util.Map; - -import org.eclipse.jface.fieldassist.IContentProposal; -import org.eclipse.jface.fieldassist.IContentProposalProvider; -import org.simantics.scl.compiler.commands.CommandSession; -import org.simantics.scl.compiler.elaboration.modules.SCLValue; -import org.simantics.scl.compiler.environment.Environments; -import org.simantics.scl.compiler.types.Type; - - -public class SCLContentProposalProvider implements IContentProposalProvider { - - private final CommandSession session; - - public SCLContentProposalProvider(CommandSession session) { - this.session = session; - } - - @Override - public IContentProposal[] getProposals(String contents, int position) { - int startPos = getPrefixStartPos(contents, position); - String prefix = contents.substring(startPos, position); - int prefixLength = prefix.length(); - int namespaceLength = prefix.indexOf('.'); - if(namespaceLength < 0) - namespaceLength = 0; - else - ++namespaceLength; - - List values = Environments.findValuesForPrefix( - session.getRuntimeEnvironment().getEnvironment(), - prefix); - - ArrayList proposals = new ArrayList(); - for(SCLValue value : values) - if(!value.isPrivate() && !(value.getName().name.contains("$") && - Character.isLetter(value.getName().name.charAt(0)))) - proposals.add(new SCLContentProposal(value)); - - prefix = prefix.toLowerCase(); - for(Map.Entry entry : session.localNamesForContentProposals().entrySet()) - if(entry.getKey().toLowerCase().startsWith(prefix)) - proposals.add(new SCLContentProposal(entry.getKey(), "LocalEnvironment", entry.getValue())); - - return proposals.toArray(new IContentProposal[proposals.size()]); - } - - private static int getPrefixStartPos(String contents, int position) { - int pos = position; - while(pos > 0) { - char c = contents.charAt(pos-1); - if(Character.isJavaIdentifierPart(c) || c == '.') - --pos; - else - break; - } - return pos; - } +package org.simantics.scl.ui.assist; + +import java.util.ArrayList; +import java.util.List; +import java.util.Map; + +import org.eclipse.jface.fieldassist.IContentProposal; +import org.eclipse.jface.fieldassist.IContentProposalProvider; +import org.simantics.scl.compiler.commands.CommandSession; +import org.simantics.scl.compiler.elaboration.modules.SCLValue; +import org.simantics.scl.compiler.environment.Environments; +import org.simantics.scl.compiler.types.Type; + + +public class SCLContentProposalProvider implements IContentProposalProvider { + + private final CommandSession session; + + public SCLContentProposalProvider(CommandSession session) { + this.session = session; + } + + @Override + public IContentProposal[] getProposals(String contents, int position) { + int startPos = getPrefixStartPos(contents, position); + String prefix = contents.substring(startPos, position); + int prefixLength = prefix.length(); + int namespaceLength = prefix.indexOf('.'); + if(namespaceLength < 0) + namespaceLength = 0; + else + ++namespaceLength; + + List values = Environments.findValuesForPrefix( + session.getRuntimeEnvironment().getEnvironment(), + prefix); + + ArrayList proposals = new ArrayList(); + for(SCLValue value : values) + if(!value.isPrivate() && !(value.getName().name.contains("$") && + Character.isLetter(value.getName().name.charAt(0)))) + proposals.add(new SCLContentProposal(value)); + + prefix = prefix.toLowerCase(); + for(Map.Entry entry : session.localNamesForContentProposals().entrySet()) + if(entry.getKey().toLowerCase().startsWith(prefix)) + proposals.add(new SCLContentProposal(entry.getKey(), "LocalEnvironment", entry.getValue())); + + return proposals.toArray(new IContentProposal[proposals.size()]); + } + + private static int getPrefixStartPos(String contents, int position) { + int pos = position; + while(pos > 0) { + char c = contents.charAt(pos-1); + if(Character.isJavaIdentifierPart(c) || c == '.') + --pos; + else + break; + } + return pos; + } } \ No newline at end of file