Skip to content

Commit

Permalink
add showNotification method and calls for debugging
Browse files Browse the repository at this point in the history
- add showNotification to utils

- it helps to debug while working, to see what values are

- use showNotification in code, and need to pass project to use it

- this will be removed later, for debugging purposes only for now
  • Loading branch information
nan-li committed May 2, 2022
1 parent 2c6b7d3 commit 22c9ccc
Show file tree
Hide file tree
Showing 6 changed files with 64 additions and 22 deletions.
9 changes: 7 additions & 2 deletions src/main/kotlin/OneSignalToolWindowFactory.kt
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@ import com.intellij.ui.content.ContentFactory

import sdksetup.SDKSetupFirstStepPanel
import sdksetup.SDKSetupSecondStepPanel
import utils.showNotification

import java.awt.CardLayout
import javax.swing.JComponent
Expand Down Expand Up @@ -32,8 +33,8 @@ class OneSignalToolWindowFactory : ToolWindowFactory, OneSignalStepListener {
this.toolWindow = toolWindow

// If basePath is null add step to get basePath
sdkSetupSteps["first_step_panel"] = SDKSetupFirstStepPanel(project.basePath!!, this@OneSignalToolWindowFactory)
sdkSetupSteps["second_step_panel"] = SDKSetupSecondStepPanel(project.basePath!!, this@OneSignalToolWindowFactory)
sdkSetupSteps["first_step_panel"] = SDKSetupFirstStepPanel(project.basePath!!, project, this@OneSignalToolWindowFactory)
sdkSetupSteps["second_step_panel"] = SDKSetupSecondStepPanel(project.basePath!!, project, this@OneSignalToolWindowFactory)

val welcomePanel = WelcomeScreenPanel(this@OneSignalToolWindowFactory)

Expand All @@ -51,6 +52,10 @@ class OneSignalToolWindowFactory : ToolWindowFactory, OneSignalStepListener {
}

override fun onNextStep() {
project?.let {
showNotification(it, "Navigating to next panel")
}

var index = 0
val keysIterator = sdkSetupSteps.keys.iterator()
while (keysIterator.hasNext()) {
Expand Down
11 changes: 6 additions & 5 deletions src/main/kotlin/sdksetup/SDKSetupFirstStepController.kt
Original file line number Diff line number Diff line change
@@ -1,28 +1,29 @@
package sdksetup

import com.intellij.openapi.project.Project
import utils.appendStringByMatch
import java.io.File

class SDKSetupFirstStepController {
/**
* Add dependencies to project level build.gradle file
*/
fun addSDKToBuildGradle(basePath: String) {
fun addSDKToBuildGradle(basePath: String, project: Project) {
val projectBuildGradle = File("$basePath/build.gradle")
var content: String = projectBuildGradle.readText()

content = content.appendStringByMatch("mavenCentral\\(\\)", "gradlePluginPortal()", "\n\t\t")
content = content.appendStringByMatch("jcenter\\(\\)", "gradlePluginPortal()", "\n\t\t")
content = content.appendStringByMatch("mavenCentral\\(\\)", "gradlePluginPortal()", "\n\t\t", project)
content = content.appendStringByMatch("jcenter\\(\\)", "gradlePluginPortal()", "\n\t\t", project)

content = content.appendStringByMatch(
"classpath 'com.android.tools.build:gradle:.+'",
"gradle.plugin.com.onesignal:onesignal-gradle-plugin",
"classpath 'gradle.plugin.com.onesignal:onesignal-gradle-plugin:[0.12.9, 0.99.99]'", "\n\t\t"
"classpath 'gradle.plugin.com.onesignal:onesignal-gradle-plugin:[0.12.9, 0.99.99]'", "\n\t\t", project
)
content = content.appendStringByMatch(
"classpath\\s\"com\\.android\\.tools\\.build:gradle:.+\"",
"gradle.plugin.com.onesignal:onesignal-gradle-plugin",
"classpath \"gradle.plugin.com.onesignal:onesignal-gradle-plugin:[0.12.9, 0.99.99]\"", "\n\t\t"
"classpath \"gradle.plugin.com.onesignal:onesignal-gradle-plugin:[0.12.9, 0.99.99]\"", "\n\t\t", project
)

projectBuildGradle.writeText(content)
Expand Down
4 changes: 3 additions & 1 deletion src/main/kotlin/sdksetup/SDKSetupFirstStepPanel.kt
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@ package sdksetup

import OneSignalStep
import OneSignalStepListener
import com.intellij.openapi.project.Project
import view.MultilineLabel
import java.awt.GridBagConstraints
import java.awt.GridBagLayout
Expand All @@ -10,6 +11,7 @@ import javax.swing.JPanel

class SDKSetupFirstStepPanel(
private val basePath: String,
private val project: Project,
private val stepListener: OneSignalStepListener
) : JPanel(),
OneSignalStep {
Expand Down Expand Up @@ -79,7 +81,7 @@ class SDKSetupFirstStepPanel(

private fun initListeners() {
nextButton.addActionListener {
controller.addSDKToBuildGradle(basePath)
controller.addSDKToBuildGradle(basePath, project)
stepListener.onNextStep()
}
cancelButton.addActionListener {
Expand Down
25 changes: 16 additions & 9 deletions src/main/kotlin/sdksetup/SDKSetupSecondStepController.kt
Original file line number Diff line number Diff line change
@@ -1,15 +1,16 @@
package sdksetup

import com.intellij.openapi.project.Project
import utils.appendStringByMatch
import java.io.File

class SDKSetupSecondStepController {

fun addSDKToAppBuildGradle(basePath: String, appDirectory: String) {
addSDKToAppBuildGradle("$basePath/$appDirectory")
fun addSDKToAppBuildGradle(basePath: String, appDirectory: String, project: Project) {
addSDKToAppBuildGradle("$basePath/$appDirectory", project)
}

fun addSDKToAppBuildGradle(buildGradlePath: String) {
fun addSDKToAppBuildGradle(buildGradlePath: String, project: Project) {
val projectBuildGradle = File("$buildGradlePath/build.gradle")
var content: String = projectBuildGradle.readText()

Expand All @@ -19,26 +20,30 @@ class SDKSetupSecondStepController {
"implementation \"androidx.appcompat:appcompat:[^']*\"",
"com.onesignal:OneSignal",
"implementation \"com.onesignal:OneSignal:[4.0.0, 4.99.99]\"",
"\n\t"
"\n\t",
project
)
content = content.appendStringByMatch(
"implementation \"com.google.android.material:material:[^']*\"",
"com.onesignal:OneSignal",
"implementation \"com.onesignal:OneSignal:[4.0.0, 4.99.99]\"",
"\n\t"
"\n\t",
project
)

content = content.appendStringByMatch(
"implementation 'androidx.appcompat:appcompat:[^']*'",
"com.onesignal:OneSignal",
"implementation 'com.onesignal:OneSignal:[4.0.0, 4.99.99]'",
"\n\t"
"\n\t",
project
)
content = content.appendStringByMatch(
"implementation 'com.google.android.material:material:[^']*'",
"com.onesignal:OneSignal",
"implementation 'com.onesignal:OneSignal:[4.0.0, 4.99.99]'",
"\n\t"
"\n\t",
project
)

// injecting onesignal-gradle-plugin
Expand All @@ -47,13 +52,15 @@ class SDKSetupSecondStepController {
"apply plugin: 'com.android.application'",
"com.onesignal.androidsdk.onesignal-gradle-plugin",
"apply plugin: 'com.onesignal.androidsdk.onesignal-gradle-plugin'",
"\n"
"\n",
project
)
content = content.appendStringByMatch(
"id 'com.android.application'",
"com.onesignal.androidsdk.onesignal-gradle-plugin",
"id 'com.onesignal.androidsdk.onesignal-gradle-plugin'",
"\n\t"
"\n\t",
project
)

projectBuildGradle.writeText(content)
Expand Down
8 changes: 6 additions & 2 deletions src/main/kotlin/sdksetup/SDKSetupSecondStepPanel.kt
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,8 @@ package sdksetup

import OneSignalStep
import OneSignalStepListener
import com.intellij.openapi.project.Project
import utils.showNotification
import view.MultilineLabel
import java.awt.GridBagConstraints
import java.awt.GridBagLayout
Expand All @@ -11,6 +13,7 @@ import javax.swing.JTextField

class SDKSetupSecondStepPanel(
private val basePath: String,
private val project: Project,
private val stepListener: OneSignalStepListener
) : JPanel(),
OneSignalStep {
Expand Down Expand Up @@ -91,10 +94,11 @@ class SDKSetupSecondStepPanel(
private fun initListeners() {
nextButton.addActionListener {
val buildGradlePath = appDirectoryField.text
showNotification(project, "appDirectory $buildGradlePath")
if (buildGradlePath.isEmpty())
controller.addSDKToAppBuildGradle(basePath, "app")
controller.addSDKToAppBuildGradle(basePath, "app", project = project)
else
controller.addSDKToAppBuildGradle(buildGradlePath)
controller.addSDKToAppBuildGradle(buildGradlePath, project = project)
stepListener.onNextStep()
}
cancelButton.addActionListener {
Expand Down
29 changes: 26 additions & 3 deletions src/main/kotlin/utils/StringMatchingUtils.kt
Original file line number Diff line number Diff line change
@@ -1,7 +1,12 @@
package utils

fun String.appendStringByMatch(match: String, append: String, indentation: String): String =
appendStringByMatch(match, append, append, indentation)
import com.intellij.notification.NotificationDisplayType
import com.intellij.notification.NotificationGroup
import com.intellij.notification.NotificationType
import com.intellij.openapi.project.Project

fun String.appendStringByMatch(match: String, append: String, indentation: String, project: Project): String =
appendStringByMatch(match, append, append, indentation, project)

/**
* Injects a String into a receiver String of content. Before adding it, we check if it will be a duplicate.
Expand All @@ -13,23 +18,28 @@ fun String.appendStringByMatch(match: String, append: String, indentation: Strin
* @param appendId If this substring exists in the receiver content already, we won't add [append].
* @param append The String we want to add to the receiver content.
* @param indentation The indentation to add between [match] and [append].
* @param project Temporarily here to show notifications for debugging purposes. Will be removed.
* @return String with [append] injected into it, or the same string if no changes are made.
*/
fun String.appendStringByMatch(
match: String,
appendId: String,
append: String,
indentation: String
indentation: String,
project: Project
): String {
val appendIdRegex = appendId.toRegex()
val appendIdMatch = appendIdRegex.find(this)?.range

showNotification(project, "appendId string: $appendId match: $appendIdMatch")
return if (appendIdMatch == null) {
// no duplicate found, continue with logic to add the new string
val matchRegex = match.toRegex()
val regexMatch = matchRegex.find(this)?.range
showNotification(project, "Match string: $match match: $regexMatch")
if (regexMatch != null) {
// anchor substring found, add the new string to the end of it
showNotification(project, "Making replacement \"$match$indentation$append\"")
"${this.substring(0, regexMatch.last + 1)}$indentation$append${
this.substring(
regexMatch.last + 1,
Expand All @@ -46,3 +56,16 @@ fun String.appendStringByMatch(
this
}
}

/**
* Show a notification to aid in debug process while working
*/
fun showNotification(project: Project, message: String) {
NotificationGroup("someID", NotificationDisplayType.BALLOON)
.createNotification(
"OneSignal plugin:",
message,
NotificationType.WARNING,
null
).notify(project)
}

0 comments on commit 22c9ccc

Please sign in to comment.