diff options
author | Sorin Basca <sorinbasca@google.com> | 2024-01-16 12:10:38 +0000 |
---|---|---|
committer | Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com> | 2024-01-16 12:10:38 +0000 |
commit | 897a1820eb727e6daab691616114df17d04bc66d (patch) | |
tree | d592898fe81e13c3f80b13796f41ac7dc8417424 /idea_plugin/src/main/java/com/google/googlejavaformat/intellij/GoogleJavaFormatSettings.java | |
parent | 23900a4073caf1243f551a2b9a1a2c13eab80dcf (diff) | |
parent | 26c8b23036c5b9a8fc56821bd0c1ae703482d018 (diff) | |
download | google-java-format-897a1820eb727e6daab691616114df17d04bc66d.tar.gz |
Merge commit 'v1.19.0' am: 9b3a28805d am: 26c8b23036
Original change: https://android-review.googlesource.com/c/platform/external/google-java-format/+/2887766
Change-Id: I8246aff1657340343b7be41eaca56f5db378e808
Signed-off-by: Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
Diffstat (limited to 'idea_plugin/src/main/java/com/google/googlejavaformat/intellij/GoogleJavaFormatSettings.java')
-rw-r--r-- | idea_plugin/src/main/java/com/google/googlejavaformat/intellij/GoogleJavaFormatSettings.java | 115 |
1 files changed, 115 insertions, 0 deletions
diff --git a/idea_plugin/src/main/java/com/google/googlejavaformat/intellij/GoogleJavaFormatSettings.java b/idea_plugin/src/main/java/com/google/googlejavaformat/intellij/GoogleJavaFormatSettings.java new file mode 100644 index 0000000..ee187c0 --- /dev/null +++ b/idea_plugin/src/main/java/com/google/googlejavaformat/intellij/GoogleJavaFormatSettings.java @@ -0,0 +1,115 @@ +/* + * Copyright 2016 Google Inc. All Rights Reserved. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.google.googlejavaformat.intellij; + +import com.google.googlejavaformat.java.JavaFormatterOptions; +import com.intellij.openapi.components.PersistentStateComponent; +import com.intellij.openapi.components.State; +import com.intellij.openapi.components.Storage; +import com.intellij.openapi.project.Project; +import org.checkerframework.checker.nullness.qual.Nullable; +import org.jetbrains.annotations.NotNull; + +@State( + name = "GoogleJavaFormatSettings", + storages = {@Storage("google-java-format.xml")}) +class GoogleJavaFormatSettings implements PersistentStateComponent<GoogleJavaFormatSettings.State> { + + private final Project project; + + private State state = new State(); + + GoogleJavaFormatSettings(Project project) { + this.project = project; + } + + static GoogleJavaFormatSettings getInstance(Project project) { + return project.getService(GoogleJavaFormatSettings.class); + } + + @Nullable + @Override + public State getState() { + return state; + } + + @Override + public void loadState(@NotNull State state) { + this.state = state; + } + + boolean isEnabled() { + return state.enabled.equals(EnabledState.ENABLED); + } + + void setEnabled(boolean enabled) { + setEnabled(enabled ? EnabledState.ENABLED : EnabledState.DISABLED); + } + + void setEnabled(EnabledState enabled) { + if (enabled.equals(EnabledState.ENABLED)) { + JreConfigurationChecker.checkJreConfiguration(project); + } + state.enabled = enabled; + } + + boolean isUninitialized() { + return state.enabled.equals(EnabledState.UNKNOWN); + } + + JavaFormatterOptions.Style getStyle() { + return state.style; + } + + void setStyle(JavaFormatterOptions.Style style) { + state.style = style; + } + + enum EnabledState { + UNKNOWN, + ENABLED, + DISABLED + } + + static class State { + + private EnabledState enabled = EnabledState.UNKNOWN; + public JavaFormatterOptions.Style style = JavaFormatterOptions.Style.GOOGLE; + + // enabled used to be a boolean so we use bean property methods for backwards compatibility + public void setEnabled(@Nullable String enabledStr) { + if (enabledStr == null) { + enabled = EnabledState.UNKNOWN; + } else if (Boolean.parseBoolean(enabledStr)) { + enabled = EnabledState.ENABLED; + } else { + enabled = EnabledState.DISABLED; + } + } + + public String getEnabled() { + switch (enabled) { + case ENABLED: + return "true"; + case DISABLED: + return "false"; + default: + return null; + } + } + } +} |