aboutsummaryrefslogtreecommitdiff
path: root/idea_plugin/src/main/java/com/google/googlejavaformat/intellij/GoogleJavaFormatSettings.java
diff options
context:
space:
mode:
authorSorin Basca <sorinbasca@google.com>2024-01-16 12:10:38 +0000
committerAutomerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>2024-01-16 12:10:38 +0000
commit897a1820eb727e6daab691616114df17d04bc66d (patch)
treed592898fe81e13c3f80b13796f41ac7dc8417424 /idea_plugin/src/main/java/com/google/googlejavaformat/intellij/GoogleJavaFormatSettings.java
parent23900a4073caf1243f551a2b9a1a2c13eab80dcf (diff)
parent26c8b23036c5b9a8fc56821bd0c1ae703482d018 (diff)
downloadgoogle-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.java115
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;
+ }
+ }
+ }
+}