From 6b148a59dac5451d2153c45da1e86fddb78fb9d0 Mon Sep 17 00:00:00 2001 From: Karl Tauber Date: Sat, 11 Jul 2020 13:01:59 +0200 Subject: [PATCH] Theme Editor: added auto-completion for "amount" and "options" parameters of color functions --- .../themeeditor/FlatCompletionProvider.java | 26 ++++++++++++++++++- 1 file changed, 25 insertions(+), 1 deletion(-) diff --git a/flatlaf-theme-editor/src/main/java/com/formdev/flatlaf/themeeditor/FlatCompletionProvider.java b/flatlaf-theme-editor/src/main/java/com/formdev/flatlaf/themeeditor/FlatCompletionProvider.java index bcd8693a..6a55af55 100644 --- a/flatlaf-theme-editor/src/main/java/com/formdev/flatlaf/themeeditor/FlatCompletionProvider.java +++ b/flatlaf-theme-editor/src/main/java/com/formdev/flatlaf/themeeditor/FlatCompletionProvider.java @@ -34,6 +34,7 @@ import org.fife.ui.autocomplete.CompletionProvider; import org.fife.ui.autocomplete.CompletionProviderBase; import org.fife.ui.autocomplete.DefaultCompletionProvider; import org.fife.ui.autocomplete.FunctionCompletion; +import org.fife.ui.autocomplete.ParameterChoicesProvider; import org.fife.ui.autocomplete.ParameterizedCompletion; import org.fife.ui.autocomplete.ParameterizedCompletion.Parameter; import org.fife.ui.rsyntaxtextarea.RSyntaxTextArea; @@ -304,10 +305,12 @@ class FlatCompletionProvider */ private static class ValueCompletionProvider extends BaseCompletionProvider + implements ParameterChoicesProvider { ValueCompletionProvider() { setAutoActivationRules( true, null ); setParameterizedCompletionParams( '(', ",", ')' ); + setParameterChoicesProvider( this ); addFunction( "rgb", "red", "0-255 or 0-100%", @@ -343,7 +346,8 @@ class FlatCompletionProvider private void addFunction( String name, String... paramNamesAndDescs ) { List params = new ArrayList<>(); for( int i = 0; i < paramNamesAndDescs.length; i += 2 ) { - boolean endParam = i + 2 >= paramNamesAndDescs.length; +// boolean endParam = i + 2 >= paramNamesAndDescs.length; + boolean endParam = false; Parameter param = new Parameter( null, paramNamesAndDescs[i], endParam ); param.setDescription( paramNamesAndDescs[i + 1] ); params.add( param ); @@ -359,5 +363,25 @@ class FlatCompletionProvider f.setParams( params ); addCompletion( f ); } + + @Override + public List getParameterChoices( JTextComponent tc, Parameter param ) { + switch( param.getName() ) { + case "amount": + return createParameterChoices( "5%", "10%", "15%", "20%", "25%" ); + + case "options": + return createParameterChoices( "relative", "autoInverse", "noAutoInverse", "lazy", "derived" ); + } + + return null; + } + + private List createParameterChoices( String... values ) { + List result = new ArrayList<>(); + for( String value : values ) + result.add( new BasicCompletion( this, value ) ); + return result; + } } }