diff --git a/app/src/main/assets/data/common/tooling-api-all.jar b/app/src/main/assets/data/common/tooling-api-all.jar index 9ffc053a5..7a6983df7 100644 Binary files a/app/src/main/assets/data/common/tooling-api-all.jar and b/app/src/main/assets/data/common/tooling-api-all.jar differ diff --git a/app/src/main/java/com/itsaky/androidide/handlers/EditorEventListener.kt b/app/src/main/java/com/itsaky/androidide/handlers/EditorEventListener.kt index 2cf0ab02b..38d5f732d 100644 --- a/app/src/main/java/com/itsaky/androidide/handlers/EditorEventListener.kt +++ b/app/src/main/java/com/itsaky/androidide/handlers/EditorEventListener.kt @@ -18,12 +18,12 @@ package com.itsaky.androidide.handlers import com.itsaky.androidide.EditorActivity -import com.itsaky.androidide.resources.R.string import com.itsaky.androidide.preferences.internal.isFirstBuild +import com.itsaky.androidide.resources.R.string import com.itsaky.androidide.services.GradleBuildService import com.itsaky.androidide.tooling.events.ProgressEvent -import com.itsaky.androidide.tooling.events.download.FileDownloadFinishEvent -import com.itsaky.androidide.tooling.events.task.TaskProgressEvent +import com.itsaky.androidide.tooling.events.configuration.ProjectConfigurationStartEvent +import com.itsaky.androidide.tooling.events.task.TaskStartEvent import com.itsaky.androidide.utils.ILogger import java.lang.ref.WeakReference @@ -64,10 +64,8 @@ class EditorEventListener : GradleBuildService.EventListener { } override fun onProgressEvent(event: ProgressEvent) { - if (event is FileDownloadFinishEvent) { - activity().setStatus("") - } else if (event is TaskProgressEvent) { - activity().setStatus(activity().getString(string.msg_running_task, event.descriptor.taskPath)) + if (event is ProjectConfigurationStartEvent || event is TaskStartEvent) { + activity().setStatus(event.descriptor.displayName) } } diff --git a/app/src/main/java/com/itsaky/androidide/services/GradleBuildService.java b/app/src/main/java/com/itsaky/androidide/services/GradleBuildService.java index 381177422..4d557cf1c 100644 --- a/app/src/main/java/com/itsaky/androidide/services/GradleBuildService.java +++ b/app/src/main/java/com/itsaky/androidide/services/GradleBuildService.java @@ -45,12 +45,12 @@ import com.blankj.utilcode.util.ResourceUtils; import com.blankj.utilcode.util.ThreadUtils; import com.blankj.utilcode.util.ZipUtils; import com.itsaky.androidide.BuildConfig; -import com.itsaky.androidide.resources.R; import com.itsaky.androidide.app.BaseApplication; import com.itsaky.androidide.lookup.Lookup; import com.itsaky.androidide.models.LogLine; import com.itsaky.androidide.projects.ProjectManager; import com.itsaky.androidide.projects.builder.BuildService; +import com.itsaky.androidide.resources.R; import com.itsaky.androidide.shell.CommonProcessExecutor; import com.itsaky.androidide.shell.ProcessStreamsHolder; import com.itsaky.androidide.tooling.api.IProject; @@ -65,6 +65,8 @@ import com.itsaky.androidide.tooling.api.messages.result.InitializeResult; import com.itsaky.androidide.tooling.api.messages.result.TaskExecutionResult; import com.itsaky.androidide.tooling.api.util.ToolingApiLauncher; import com.itsaky.androidide.tooling.events.ProgressEvent; +import com.itsaky.androidide.tooling.events.configuration.ProjectConfigurationStartEvent; +import com.itsaky.androidide.tooling.events.task.TaskStartEvent; import com.itsaky.androidide.utils.Environment; import com.itsaky.androidide.utils.ILogger; import com.itsaky.androidide.utils.InputStreamLineReader; @@ -146,7 +148,6 @@ public class GradleBuildService extends Service implements BuildService, IToolin public void onDestroy() { LOG.info("Service is being destroyed.", "Dismissing the shown notification..."); notificationManager.cancel(NOTIFICATION_ID); - if (server != null) { server.cancelCurrentBuild(); server.shutdown(); diff --git a/app/src/main/res/layout/layout_run_task_dialog.xml b/app/src/main/res/layout/layout_run_task_dialog.xml index 8e89e7dd6..726b23714 100644 --- a/app/src/main/res/layout/layout_run_task_dialog.xml +++ b/app/src/main/res/layout/layout_run_task_dialog.xml @@ -17,7 +17,6 @@ @@ -40,9 +39,9 @@ android:layout_height="wrap_content" android:layout_alignTop="@+id/exec" android:layout_alignBottom="@+id/exec" + android:layout_alignParentStart="true" android:layout_marginStart="16dp" - android:layout_marginTop="-8dp" - android:layout_marginBottom="1dp" + android:layout_toStartOf="@id/exec" android:gravity="center_vertical" android:text="@string/title_run_tasks" android:textAppearance="@style/TextAppearance.Material3.ActionBar.Title" /> diff --git a/build-tools/tooling-api-impl/src/main/java/com/itsaky/androidide/tooling/impl/Main.java b/build-tools/tooling-api-impl/src/main/java/com/itsaky/androidide/tooling/impl/Main.java index cead3b9cd..d830999b7 100644 --- a/build-tools/tooling-api-impl/src/main/java/com/itsaky/androidide/tooling/impl/Main.java +++ b/build-tools/tooling-api-impl/src/main/java/com/itsaky/androidide/tooling/impl/Main.java @@ -29,10 +29,14 @@ import com.itsaky.androidide.utils.ILogger; import com.itsaky.androidide.utils.JvmLogger; import org.gradle.tooling.ConfigurableLauncher; +import org.gradle.tooling.events.OperationType; import java.io.ByteArrayInputStream; import java.nio.charset.StandardCharsets; +import java.util.Collections; +import java.util.HashSet; import java.util.Objects; +import java.util.Set; import java.util.concurrent.ExecutionException; import java.util.concurrent.Future; @@ -87,8 +91,7 @@ public class Main { launcher.setStandardError(out); launcher.setStandardOutput(out); launcher.setStandardInput(new ByteArrayInputStream("NoOp".getBytes(StandardCharsets.UTF_8))); - - launcher.addProgressListener(new ForwardingProgressListener()); + launcher.addProgressListener(new ForwardingProgressListener(), progressUpdateTypes()); if (client != null) { try { @@ -109,4 +112,14 @@ public class Main { client.logMessage(line); } } + + public static Set progressUpdateTypes() { + final Set types = new HashSet<>(); + + // AndroidIDE currently does not handle any other type of events + types.add(OperationType.TASK); + types.add(OperationType.PROJECT_CONFIGURATION); + + return types; + } } diff --git a/build-tools/tooling-api-impl/src/main/java/com/itsaky/androidide/tooling/impl/ToolingApiServerImpl.kt b/build-tools/tooling-api-impl/src/main/java/com/itsaky/androidide/tooling/impl/ToolingApiServerImpl.kt index 961642549..9cde92cfa 100644 --- a/build-tools/tooling-api-impl/src/main/java/com/itsaky/androidide/tooling/impl/ToolingApiServerImpl.kt +++ b/build-tools/tooling-api-impl/src/main/java/com/itsaky/androidide/tooling/impl/ToolingApiServerImpl.kt @@ -39,10 +39,11 @@ import com.itsaky.androidide.tooling.api.messages.result.TaskExecutionResult.Fai import com.itsaky.androidide.tooling.api.messages.result.TaskExecutionResult.Failure.UNSUPPORTED_GRADLE_VERSION import com.itsaky.androidide.tooling.api.model.IdeGradleProject import com.itsaky.androidide.tooling.impl.model.InternalForwardingProject -import com.itsaky.androidide.tooling.impl.progress.ForwardingProgressListener import com.itsaky.androidide.tooling.impl.util.ProjectReader import com.itsaky.androidide.tooling.impl.util.StopWatch import com.itsaky.androidide.utils.ILogger +import java.io.File +import java.util.concurrent.* import org.eclipse.lsp4j.jsonrpc.CompletableFutures import org.gradle.tooling.BuildCancelledException import org.gradle.tooling.BuildException @@ -52,8 +53,6 @@ import org.gradle.tooling.GradleConnector import org.gradle.tooling.UnsupportedVersionException import org.gradle.tooling.exceptions.UnsupportedBuildArgumentException import org.gradle.tooling.exceptions.UnsupportedOperationConfigurationException -import java.io.File -import java.util.concurrent.* /** * Implementation for the Gradle Tooling API server. @@ -160,7 +159,6 @@ internal class ToolingApiServerImpl(private val forwardingProject: InternalForwa val connection = this.connector!!.connect() val builder = connection.newBuild() - builder.addProgressListener(ForwardingProgressListener()) // System.in and System.out are used for communication between this server and the // client. diff --git a/build-tools/tooling-api-impl/src/main/java/com/itsaky/androidide/tooling/impl/util/ProjectReader.java b/build-tools/tooling-api-impl/src/main/java/com/itsaky/androidide/tooling/impl/util/ProjectReader.java index eca5d9241..34bb0848f 100644 --- a/build-tools/tooling-api-impl/src/main/java/com/itsaky/androidide/tooling/impl/util/ProjectReader.java +++ b/build-tools/tooling-api-impl/src/main/java/com/itsaky/androidide/tooling/impl/util/ProjectReader.java @@ -393,7 +393,6 @@ public class ProjectReader { for (Object msg : messages) { sb.append(msg instanceof Throwable ? "\n" : MSG_SEPARATOR); sb.append(msg instanceof Throwable ? LogUtils.getFullStackTrace(((Throwable) msg)) : msg); - sb.append(msg instanceof Throwable ? "\n" : MSG_SEPARATOR); } return sb.toString(); diff --git a/tests/test-home/.androidide/init/model.jar b/tests/test-home/.androidide/init/model.jar index c9c627392..fd99c9154 100644 Binary files a/tests/test-home/.androidide/init/model.jar and b/tests/test-home/.androidide/init/model.jar differ