From f3709c55b84828fcadf28a6572296becf10329c4 Mon Sep 17 00:00:00 2001 From: Rustam Vishnyakov Date: Mon, 28 Jan 2019 19:40:36 +0300 Subject: [PATCH] Export wrap on typing property as boolean --- .../testData/codeStyle/jsonExport.j2ee.json | 3 ++- .../testData/codeStyle/jsonExport.json | 3 ++- .../codeStyle/JavaCodeStyleSettingsTest.java | 1 + .../properties/PropertyAccessorFactory.java | 3 +++ .../properties/WrapOnTypingAccessor.java | 26 +++++++++++++++++++ 5 files changed, 34 insertions(+), 2 deletions(-) create mode 100644 platform/lang-api/src/com/intellij/application/options/codeStyle/properties/WrapOnTypingAccessor.java diff --git a/java/java-tests/testData/codeStyle/jsonExport.j2ee.json b/java/java-tests/testData/codeStyle/jsonExport.j2ee.json index 890cce779f8e..a2e8af09c35e 100644 --- a/java/java-tests/testData/codeStyle/jsonExport.j2ee.json +++ b/java/java-tests/testData/codeStyle/jsonExport.j2ee.json @@ -258,7 +258,8 @@ "while_on_new_line": "false", "wrap_comments": "false", "wrap_first_method_in_call_chain": "false", - "wrap_long_lines": "false" + "wrap_long_lines": "false", + "wrap_on_typing": "true" } } ] diff --git a/java/java-tests/testData/codeStyle/jsonExport.json b/java/java-tests/testData/codeStyle/jsonExport.json index 21eca3aaa950..f18f34adfe12 100644 --- a/java/java-tests/testData/codeStyle/jsonExport.json +++ b/java/java-tests/testData/codeStyle/jsonExport.json @@ -241,7 +241,8 @@ "while_on_new_line": "false", "wrap_comments": "false", "wrap_first_method_in_call_chain": "false", - "wrap_long_lines": "false" + "wrap_long_lines": "false", + "wrap_on_typing": "true" } } ] diff --git a/java/java-tests/testSrc/com/intellij/java/psi/codeStyle/JavaCodeStyleSettingsTest.java b/java/java-tests/testSrc/com/intellij/java/psi/codeStyle/JavaCodeStyleSettingsTest.java index b64f1e5b3a44..f036b93f1040 100644 --- a/java/java-tests/testSrc/com/intellij/java/psi/codeStyle/JavaCodeStyleSettingsTest.java +++ b/java/java-tests/testSrc/com/intellij/java/psi/codeStyle/JavaCodeStyleSettingsTest.java @@ -82,6 +82,7 @@ public class JavaCodeStyleSettingsTest extends CodeStyleTestCase { final CommonCodeStyleSettings commonJavaSettings = settings.getCommonSettings(JavaLanguage.INSTANCE); commonJavaSettings.METHOD_PARAMETERS_WRAP = CommonCodeStyleSettings.WRAP_AS_NEEDED; commonJavaSettings.CALL_PARAMETERS_WRAP = CommonCodeStyleSettings.WRAP_ON_EVERY_ITEM; + commonJavaSettings.WRAP_ON_TYPING = CommonCodeStyleSettings.WrapOnTyping.WRAP.intValue; final JavaCodeStyleSettings javaSettings = settings.getCustomSettings(JavaCodeStyleSettings.class); javaSettings.FIELD_NAME_PREFIX = "m_"; javaSettings.STATIC_FIELD_NAME_SUFFIX = "_s"; diff --git a/platform/lang-api/src/com/intellij/application/options/codeStyle/properties/PropertyAccessorFactory.java b/platform/lang-api/src/com/intellij/application/options/codeStyle/properties/PropertyAccessorFactory.java index ce596ee29433..53db9f877194 100644 --- a/platform/lang-api/src/com/intellij/application/options/codeStyle/properties/PropertyAccessorFactory.java +++ b/platform/lang-api/src/com/intellij/application/options/codeStyle/properties/PropertyAccessorFactory.java @@ -65,6 +65,9 @@ class PropertyAccessorFactory { } return new BooleanAccessor(codeStyleObject, myField); case INT: + if ("WRAP_ON_TYPING".equals(myField.getName())) { + return new WrapOnTypingAccessor(codeStyleObject, myField); + } return new IntegerAccessor(codeStyleObject, myField); case STRING: CommaSeparatedValues annotation = myField.getAnnotation(CommaSeparatedValues.class); diff --git a/platform/lang-api/src/com/intellij/application/options/codeStyle/properties/WrapOnTypingAccessor.java b/platform/lang-api/src/com/intellij/application/options/codeStyle/properties/WrapOnTypingAccessor.java new file mode 100644 index 000000000000..ad325b119689 --- /dev/null +++ b/platform/lang-api/src/com/intellij/application/options/codeStyle/properties/WrapOnTypingAccessor.java @@ -0,0 +1,26 @@ +// Copyright 2000-2019 JetBrains s.r.o. Use of this source code is governed by the Apache 2.0 license that can be found in the LICENSE file. +package com.intellij.application.options.codeStyle.properties; + +import com.intellij.psi.codeStyle.CommonCodeStyleSettings; +import org.jetbrains.annotations.NotNull; + +import java.lang.reflect.Field; + +public class WrapOnTypingAccessor extends IntegerAccessor { + WrapOnTypingAccessor(@NotNull Object object, @NotNull Field field) { + super(object, field); + } + + @NotNull + @Override + protected String toExternal(@NotNull Integer value) { + return value == CommonCodeStyleSettings.WrapOnTyping.WRAP.intValue ? "true" : "false"; + } + + @Override + protected Integer fromExternal(@NotNull String str) { + return "true".equalsIgnoreCase(str) ? + CommonCodeStyleSettings.WrapOnTyping.WRAP.intValue : + CommonCodeStyleSettings.WrapOnTyping.NO_WRAP.intValue; + } +}