Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
13 changes: 13 additions & 0 deletions build.gradle.kts
Original file line number Diff line number Diff line change
Expand Up @@ -19,6 +19,7 @@ import java.time.format.DateTimeFormatter
// Specify UTF-8 for all compilations so we avoid Windows-1252.
allprojects {
tasks.withType<JavaCompile> {
options.compilerArgs.addAll(listOf("-Xlint:unchecked", "-Xlint:deprecation"))
options.encoding = "UTF-8"
}
tasks.withType<Test> {
Expand Down Expand Up @@ -316,6 +317,18 @@ intellijPlatform {
}
} else {
recommended()
select {
types = listOf(IntelliJPlatformType.AndroidStudio)
channels = listOf(ProductRelease.Channel.RELEASE)
sinceBuild = "2024.1"
untilBuild = "2025.2.*"
}
select {
types = listOf(IntelliJPlatformType.IntellijIdeaCommunity, IntelliJPlatformType.IntellijIdeaUltimate)
channels = listOf(ProductRelease.Channel.RELEASE)
sinceBuild = "243"
untilBuild = "253.*"
}
}
}
}
Expand Down
1 change: 1 addition & 0 deletions resources/META-INF/plugin.xml
Original file line number Diff line number Diff line change
Expand Up @@ -283,6 +283,7 @@
<backgroundPostStartupActivity id="FontPreviewStartupActivity"
implementation="io.flutter.font.FontPreviewStartupActivity"
order="last"/>
<backgroundPostStartupActivity implementation="io.flutter.project.FlutterAndroidModulePostStartupActivity"/>

<configurationType implementation="io.flutter.run.FlutterRunConfigurationType"/>
<runConfigurationProducer implementation="io.flutter.run.FlutterRunConfigurationProducer"/>
Expand Down
7 changes: 4 additions & 3 deletions src/io/flutter/FlutterInitializer.java
Original file line number Diff line number Diff line change
Expand Up @@ -25,6 +25,7 @@
import com.intellij.openapi.module.Module;
import com.intellij.openapi.project.ModuleListener;
import com.intellij.openapi.project.Project;
import com.intellij.openapi.project.ProjectUtil;
import com.intellij.openapi.roots.ProjectRootManager;
import com.intellij.openapi.vfs.VirtualFile;
import com.intellij.util.concurrency.AppExecutorUtil;
Expand Down Expand Up @@ -173,9 +174,9 @@ public void modulesAdded(@NotNull Project project, @NotNull List<? extends Modul
List<Module> modules = FlutterModuleUtils.findModulesWithFlutterContents(project);
for (Module module : modules) {
if (module.isDisposed() || !FlutterModuleUtils.isFlutterModule(module)) continue;
VirtualFile moduleFile = module.getModuleFile();
if (moduleFile == null) continue;
VirtualFile baseDir = moduleFile.getParent();
VirtualFile baseDir = ProjectUtil.guessModuleDir(module);
if (baseDir == null)
continue;
if (baseDir.getName().equals(".idea")) {
baseDir = baseDir.getParent();
}
Expand Down
20 changes: 16 additions & 4 deletions src/io/flutter/actions/FlutterBuildActionGroup.java
Original file line number Diff line number Diff line change
Expand Up @@ -6,8 +6,8 @@
package io.flutter.actions;

import com.intellij.execution.process.ColoredProcessHandler;
import com.intellij.execution.process.ProcessAdapter;
import com.intellij.execution.process.ProcessEvent;
import com.intellij.execution.process.ProcessListener;
import com.intellij.openapi.actionSystem.*;
import com.intellij.openapi.module.Module;
import com.intellij.openapi.module.ModuleUtilCore;
Expand All @@ -33,7 +33,7 @@ public static void build(@NotNull Project project,
@Nullable String desc) {
final ProgressHelper progressHelper = new ProgressHelper(project);
progressHelper.start(desc == null ? "building" : desc);
ProcessAdapter processAdapter = new ProcessAdapter() {
ProcessListener processListener = new ProcessListener() {
@Override
public void processTerminated(@NotNull ProcessEvent event) {
progressHelper.done();
Expand All @@ -42,18 +42,30 @@ public void processTerminated(@NotNull ProcessEvent event) {
FlutterMessages.showError("Error while building " + buildType, "`flutter build` returned: " + exitCode, project);
}
}

@Override
public void startNotified(@NotNull ProcessEvent event) {
}

@Override
public void processWillTerminate(@NotNull ProcessEvent event, boolean willBeDestroyed) {
}

@Override
public void onTextAvailable(@NotNull ProcessEvent event, @NotNull com.intellij.openapi.util.Key outputType) {
}
};
final Module module = pubRoot.getModule(project);
if (module != null) {
sdk.flutterBuild(pubRoot, buildType.type).startInModuleConsole(module, pubRoot::refresh, processAdapter);
sdk.flutterBuild(pubRoot, buildType.type).startInModuleConsole(module, pubRoot::refresh, processListener);
}
else {
final ColoredProcessHandler processHandler = sdk.flutterBuild(pubRoot, buildType.type).startInConsole(project);
if (processHandler == null) {
progressHelper.done();
}
else {
processHandler.addProcessListener(processAdapter);
processHandler.addProcessListener(processListener);
}
}
}
Expand Down
6 changes: 4 additions & 2 deletions src/io/flutter/actions/FlutterNewProjectAction.kt
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@
*/
package io.flutter.actions

import com.intellij.ide.impl.createNewProjectAsync

import com.intellij.ide.projectWizard.NewProjectWizard
import com.intellij.openapi.actionSystem.ActionUpdateThread
import com.intellij.openapi.actionSystem.AnAction
Expand Down Expand Up @@ -41,7 +41,9 @@ class FlutterNewProjectAction : AnAction(), DumbAware {
val wizard = withContext(Dispatchers.EDT) {
NewProjectWizard(null, ModulesProvider.EMPTY_MODULES_PROVIDER, null)
}
createNewProjectAsync(wizard)
com.intellij.openapi.application.ApplicationManager.getApplication().invokeLater {
com.intellij.ide.impl.NewProjectUtil.createNewProject(wizard)
}
}

}
Expand Down
3 changes: 2 additions & 1 deletion src/io/flutter/actions/FlutterRetargetAppAction.java
Original file line number Diff line number Diff line change
Expand Up @@ -72,7 +72,8 @@ public void update(@NotNull AnActionEvent e) {
if (text != null) {
presentation.setText(text, true);
}
action.update(e);
// action.update(e) is override-only.
com.intellij.openapi.actionSystem.ex.ActionUtil.performDumbAwareUpdate(action, e, false);
}
}

Expand Down
5 changes: 3 additions & 2 deletions src/io/flutter/actions/OpenInAndroidStudioAction.java
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,8 @@
import com.intellij.execution.ExecutionException;
import com.intellij.execution.configurations.GeneralCommandLine;
import com.intellij.execution.process.ColoredProcessHandler;
import com.intellij.execution.process.ProcessAdapter;

import com.intellij.execution.process.ProcessListener;
import com.intellij.execution.process.ProcessEvent;
import com.intellij.openapi.actionSystem.*;
import com.intellij.openapi.editor.CaretModel;
Expand Down Expand Up @@ -245,7 +246,7 @@ private static void openFileInStudio(@NotNull String androidStudioPath,
cmd.addParameter(sourceFile);
}
final ColoredProcessHandler handler = new ColoredProcessHandler(cmd);
handler.addProcessListener(new ProcessAdapter() {
handler.addProcessListener(new ProcessListener() {
@Override
public void processTerminated(@NotNull final ProcessEvent event) {
if (event.getExitCode() != 0) {
Expand Down
30 changes: 27 additions & 3 deletions src/io/flutter/actions/OpenInAppCodeAction.java
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@
import com.intellij.execution.ExecutionException;
import com.intellij.execution.configurations.GeneralCommandLine;
import com.intellij.execution.process.ColoredProcessHandler;
import com.intellij.execution.process.ProcessAdapter;
import com.intellij.execution.process.ProcessListener;
import com.intellij.execution.process.ProcessEvent;
import com.intellij.execution.process.ProcessOutputTypes;
import com.intellij.openapi.actionSystem.ActionUpdateThread;
Expand Down Expand Up @@ -46,13 +46,25 @@ private static void initialize() {
final GeneralCommandLine cmd = new GeneralCommandLine().withExePath("/bin/bash")
.withParameters("-c", "mdfind \"kMDItemContentType == 'com.apple.application-bundle'\" | grep AppCode.app");
final ColoredProcessHandler handler = new ColoredProcessHandler(cmd);
handler.addProcessListener(new ProcessAdapter() {
handler.addProcessListener(new ProcessListener() {
@Override
public void onTextAvailable(@NotNull ProcessEvent event, @NotNull Key outputType) {
if (outputType == ProcessOutputTypes.STDOUT) {
IS_APPCODE_INSTALLED = true;
}
}

@Override
public void processTerminated(@NotNull ProcessEvent event) {
}

@Override
public void startNotified(@NotNull ProcessEvent event) {
}

@Override
public void processWillTerminate(@NotNull ProcessEvent event, boolean willBeDestroyed) {
}
});
handler.startNotify();
}
Expand Down Expand Up @@ -110,13 +122,25 @@ private static void openInAppCode(@Nullable Project project, @NotNull String pat
try {
final GeneralCommandLine cmd = new GeneralCommandLine().withExePath("open").withParameters("-a", "AppCode.app", path);
final ColoredProcessHandler handler = new ColoredProcessHandler(cmd);
handler.addProcessListener(new ProcessAdapter() {
handler.addProcessListener(new ProcessListener() {
@Override
public void processTerminated(@NotNull final ProcessEvent event) {
if (event.getExitCode() != 0) {
FlutterMessages.showError("Error Opening", path, project);
}
}

@Override
public void startNotified(@NotNull ProcessEvent event) {
}

@Override
public void processWillTerminate(@NotNull ProcessEvent event, boolean willBeDestroyed) {
}

@Override
public void onTextAvailable(@NotNull ProcessEvent event, @NotNull com.intellij.openapi.util.Key outputType) {
}
});
handler.startNotify();
}
Expand Down
31 changes: 28 additions & 3 deletions src/io/flutter/actions/OpenInXcodeAction.java
Original file line number Diff line number Diff line change
Expand Up @@ -8,11 +8,12 @@
import com.intellij.execution.ExecutionException;
import com.intellij.execution.configurations.GeneralCommandLine;
import com.intellij.execution.process.ColoredProcessHandler;
import com.intellij.execution.process.ProcessAdapter;
import com.intellij.execution.process.ProcessListener;
import com.intellij.execution.process.ProcessEvent;
import com.intellij.openapi.actionSystem.*;
import com.intellij.openapi.project.Project;
import com.intellij.openapi.project.ProjectUtil;
import com.intellij.openapi.util.Key;
import com.intellij.openapi.util.SystemInfo;
import com.intellij.openapi.vfs.VirtualFile;
import io.flutter.FlutterMessages;
Expand Down Expand Up @@ -81,7 +82,7 @@ private static void openFile(@NotNull VirtualFile file) {
FlutterMessages.showError("Error Opening Xcode", "unable to run `flutter build`", project);
}
else {
processHandler.addProcessListener(new ProcessAdapter() {
processHandler.addProcessListener(new ProcessListener() {
@Override
public void processTerminated(@NotNull ProcessEvent event) {
progressHelper.done();
Expand All @@ -94,6 +95,18 @@ public void processTerminated(@NotNull ProcessEvent event) {

openWithXcode(project, file.getPath());
}

@Override
public void startNotified(@NotNull ProcessEvent event) {
}

@Override
public void processWillTerminate(@NotNull ProcessEvent event, boolean willBeDestroyed) {
}

@Override
public void onTextAvailable(@NotNull ProcessEvent event, @NotNull com.intellij.openapi.util.Key outputType) {
}
});
}
}
Expand All @@ -117,13 +130,25 @@ private static void openWithXcode(@Nullable Project project, @NotNull String pat
try {
final GeneralCommandLine cmd = new GeneralCommandLine().withExePath("open").withParameters(path);
final ColoredProcessHandler handler = new ColoredProcessHandler(cmd);
handler.addProcessListener(new ProcessAdapter() {
handler.addProcessListener(new ProcessListener() {
@Override
public void processTerminated(@NotNull final ProcessEvent event) {
if (event.getExitCode() != 0) {
FlutterMessages.showError("Error Opening", path, project);
}
}

@Override
public void startNotified(@NotNull ProcessEvent event) {
}

@Override
public void processWillTerminate(@NotNull ProcessEvent event, boolean willBeDestroyed) {
}

@Override
public void onTextAvailable(@NotNull ProcessEvent event, @NotNull com.intellij.openapi.util.Key outputType) {
}
});
handler.startNotify();
}
Expand Down
3 changes: 2 additions & 1 deletion src/io/flutter/actions/ReloadFlutterApp.java
Original file line number Diff line number Diff line change
Expand Up @@ -49,7 +49,8 @@ public void actionPerformed(@NotNull AnActionEvent e) {

// If the shift key is held down, perform a restart. We check to see if we're being invoked from the
// 'GoToAction' dialog. If so, the modifiers are for the command that opened the go-to action dialog.
final boolean shouldRestart = (e.getModifiers() & InputEvent.SHIFT_MASK) != 0 && !"GoToAction".equals(e.getPlace());
final boolean shouldRestart = (e.getModifiers() & InputEvent.SHIFT_DOWN_MASK) != 0
&& !"GoToAction".equals(e.getPlace());
analyticsData.add(AnalyticsConstants.REQUIRES_RESTART, shouldRestart);

var reloadManager = FlutterReloadManager.getInstance(project);
Expand Down
5 changes: 3 additions & 2 deletions src/io/flutter/android/AndroidSdk.java
Original file line number Diff line number Diff line change
Expand Up @@ -8,8 +8,9 @@
import com.intellij.execution.ExecutionException;
import com.intellij.execution.configurations.GeneralCommandLine;
import com.intellij.execution.process.ColoredProcessHandler;
import com.intellij.execution.process.ProcessAdapter;

import com.intellij.execution.process.ProcessEvent;
import com.intellij.execution.process.ProcessListener;
import com.intellij.execution.process.ProcessOutputTypes;
import com.intellij.openapi.diagnostic.Logger;
import com.intellij.openapi.project.Project;
Expand Down Expand Up @@ -95,7 +96,7 @@ public List<AndroidEmulator> getEmulators() {
try {
final StringBuilder stringBuilder = new StringBuilder();
final ColoredProcessHandler process = new ColoredProcessHandler(cmd);
process.addProcessListener(new ProcessAdapter() {
process.addProcessListener(new ProcessListener() {
@Override
public void onTextAvailable(@NotNull ProcessEvent event, @NotNull Key outputType) {
if (outputType == ProcessOutputTypes.STDOUT) {
Expand Down
5 changes: 3 additions & 2 deletions src/io/flutter/console/FlutterConsole.java
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,8 @@
import com.intellij.execution.filters.TextConsoleBuilder;
import com.intellij.execution.filters.TextConsoleBuilderFactory;
import com.intellij.execution.process.ColoredProcessHandler;
import com.intellij.execution.process.ProcessAdapter;

import com.intellij.execution.process.ProcessListener;
import com.intellij.execution.process.ProcessEvent;
import com.intellij.execution.ui.ConsoleView;
import com.intellij.execution.ui.ConsoleViewContentType;
Expand Down Expand Up @@ -81,7 +82,7 @@ void watchProcess(@NotNull ColoredProcessHandler process) {
view.attachToProcess(process);

// Print exit code.
final ProcessAdapter listener = new ProcessAdapter() {
final ProcessListener listener = new ProcessListener() {
@Override
public void processTerminated(final @NotNull ProcessEvent event) {
view.print(
Expand Down
18 changes: 16 additions & 2 deletions src/io/flutter/console/FlutterConsoleFilter.java
Original file line number Diff line number Diff line change
Expand Up @@ -12,10 +12,12 @@
import com.intellij.execution.filters.HyperlinkInfo;
import com.intellij.execution.filters.OpenFileHyperlinkInfo;
import com.intellij.execution.process.ColoredProcessHandler;
import com.intellij.execution.process.ProcessAdapter;
import com.intellij.execution.process.ProcessListener;
import com.intellij.execution.process.ProcessOutputTypes;
import com.intellij.execution.process.ProcessEvent;
import com.intellij.openapi.editor.markup.EffectType;
import com.intellij.openapi.editor.markup.TextAttributes;
import com.intellij.openapi.util.Key;
import com.intellij.openapi.module.Module;
import com.intellij.openapi.project.Project;
import com.intellij.openapi.ui.Messages;
Expand Down Expand Up @@ -54,13 +56,25 @@ public void navigate(@NotNull Project project) {
try {
final GeneralCommandLine cmd = new GeneralCommandLine().withExePath("open").withParameters(myPath);
final ColoredProcessHandler handler = new ColoredProcessHandler(cmd);
handler.addProcessListener(new ProcessAdapter() {
handler.addProcessListener(new ProcessListener() {
@Override
public void startNotified(@NotNull ProcessEvent event) {
}

@Override
public void processTerminated(@NotNull final ProcessEvent event) {
if (event.getExitCode() != 0) {
FlutterMessages.showError("Error Opening ", myPath, project);
}
}

@Override
public void processWillTerminate(@NotNull ProcessEvent event, boolean willBeDestroyed) {
}

@Override
public void onTextAvailable(@NotNull ProcessEvent event, @NotNull Key outputType) {
}
});
handler.startNotify();
}
Expand Down
Loading
Loading