From 1db400658d524555a320f2b31dbe3b7551bbb86d Mon Sep 17 00:00:00 2001 From: pq Date: Thu, 17 Apr 2025 20:00:01 -0700 Subject: [PATCH] [CQ] De-duplicate color parsing and app creation code --- .../src/io/flutter/editor/FlutterColors.java | 2 +- .../editor/FlutterCupertinoColors.java | 23 ++--------- .../src/io/flutter/run/SdkAttachConfig.java | 17 +------- .../src/io/flutter/run/SdkRunConfig.java | 39 ++++++++++++------- 4 files changed, 29 insertions(+), 52 deletions(-) diff --git a/flutter-idea/src/io/flutter/editor/FlutterColors.java b/flutter-idea/src/io/flutter/editor/FlutterColors.java index af37f358d6..b149ddb191 100644 --- a/flutter-idea/src/io/flutter/editor/FlutterColors.java +++ b/flutter-idea/src/io/flutter/editor/FlutterColors.java @@ -112,7 +112,7 @@ private static String maybeTrimSuffix(String value, String suffix) { return value; } - private static Color parseColor(String hexValue) { + static @Nullable Color parseColor(String hexValue) { if (hexValue == null) { return null; } diff --git a/flutter-idea/src/io/flutter/editor/FlutterCupertinoColors.java b/flutter-idea/src/io/flutter/editor/FlutterCupertinoColors.java index 247e997ff9..a8fc339c23 100644 --- a/flutter-idea/src/io/flutter/editor/FlutterCupertinoColors.java +++ b/flutter-idea/src/io/flutter/editor/FlutterCupertinoColors.java @@ -37,7 +37,7 @@ public class FlutterCupertinoColors { for (Map.Entry entry : colors.entrySet()) { final String name = (String)entry.getKey(); final String value = (String)entry.getValue(); - final Color color = parseColor(value); + final Color color = FlutterColors.parseColor(value); if (color != null) { colorToName.put(color, name); } @@ -90,25 +90,8 @@ private static String maybeTrimSuffix(String value, String suffix) { return value; } - private static Color parseColor(String hexValue) { - if (hexValue == null) { - return null; - } - - try { - // argb to r, g, b, a - final long value = Long.parseLong(hexValue, 16); - - //noinspection UseJBColor - return new Color((int)(value >> 16) & 0xFF, (int)(value >> 8) & 0xFF, (int)value & 0xFF, (int)(value >> 24) & 0xFF); - } - catch (IllegalArgumentException e) { - return null; - } - } - - private static Color getColorValue(String name) { + private static @Nullable Color getColorValue(String name) { final String hexValue = colors.getProperty(name); - return parseColor(hexValue); + return FlutterColors.parseColor(hexValue); } } diff --git a/flutter-idea/src/io/flutter/run/SdkAttachConfig.java b/flutter-idea/src/io/flutter/run/SdkAttachConfig.java index 3ae13ea239..fe5ba71014 100644 --- a/flutter-idea/src/io/flutter/run/SdkAttachConfig.java +++ b/flutter-idea/src/io/flutter/run/SdkAttachConfig.java @@ -81,22 +81,7 @@ public LaunchState getState(@NotNull Executor executor, @NotNull ExecutionEnviro if (device == null) return null; final GeneralCommandLine command = getCommand(env, device); - - final FlutterApp app = FlutterApp.start(env, project, module, mode, device, command, - StringUtil.capitalize(mode.mode()) + "App", - "StopApp"); - - // Stop the app if the Flutter SDK changes. - final FlutterSdkManager.Listener sdkListener = new FlutterSdkManager.Listener() { - @Override - public void flutterSdkRemoved() { - app.shutdownAsync(); - } - }; - FlutterSdkManager.getInstance(project).addListener(sdkListener); - Disposer.register(app, () -> FlutterSdkManager.getInstance(project).removeListener(sdkListener)); - - return app; + return getFlutterApp(env, device, project, module, mode, command); }; final LaunchState launcher = new AttachState(env, mainFile.getAppDir(), mainFile.getFile(), this, createAppCallback); diff --git a/flutter-idea/src/io/flutter/run/SdkRunConfig.java b/flutter-idea/src/io/flutter/run/SdkRunConfig.java index c3c75d066d..b1472a5f19 100644 --- a/flutter-idea/src/io/flutter/run/SdkRunConfig.java +++ b/flutter-idea/src/io/flutter/run/SdkRunConfig.java @@ -187,21 +187,7 @@ public LaunchState getState(@NotNull Executor executor, @NotNull ExecutionEnviro } } - final FlutterApp app = FlutterApp.start(env, project, module, mode, device, command, - StringUtil.capitalize(mode.mode()) + "App", - "StopApp"); - - // Stop the app if the Flutter SDK changes. - final FlutterSdkManager.Listener sdkListener = new FlutterSdkManager.Listener() { - @Override - public void flutterSdkRemoved() { - app.shutdownAsync(); - } - }; - FlutterSdkManager.getInstance(project).addListener(sdkListener); - Disposer.register(app, () -> FlutterSdkManager.getInstance(project).removeListener(sdkListener)); - - return app; + return getFlutterApp(env, device, project, module, mode, command); }; final LaunchState launcher = new LaunchState(env, mainFile.getAppDir(), mainFile.getFile(), this, createAppCallback); @@ -209,6 +195,29 @@ public void flutterSdkRemoved() { return launcher; } + static @NotNull FlutterApp getFlutterApp(@NotNull ExecutionEnvironment env, + @NotNull FlutterDevice device, + Project project, + Module module, + RunMode mode, + GeneralCommandLine command) throws ExecutionException { + final FlutterApp app = FlutterApp.start(env, project, module, mode, device, command, + StringUtil.capitalize(mode.mode()) + "App", + "StopApp"); + + // Stop the app if the Flutter SDK changes. + final FlutterSdkManager.Listener sdkListener = new FlutterSdkManager.Listener() { + @Override + public void flutterSdkRemoved() { + app.shutdownAsync(); + } + }; + FlutterSdkManager.getInstance(project).addListener(sdkListener); + Disposer.register(app, () -> FlutterSdkManager.getInstance(project).removeListener(sdkListener)); + + return app; + } + protected void addConsoleFilters(@NotNull LaunchState launcher, @NotNull ExecutionEnvironment env, @NotNull MainFile mainFile,