mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-09-27 10:03:11 +07:00
project configuration: improve 'Convert to Repository Library' action
Add button 'Change Coordinates...' to 'Replace Library' dialog which allow user to try again with different coordinates.
This commit is contained in:
+18
-8
@@ -38,6 +38,7 @@ import com.intellij.openapi.roots.libraries.NewLibraryConfiguration
|
||||
import com.intellij.openapi.roots.libraries.ui.OrderRoot
|
||||
import com.intellij.openapi.roots.ui.configuration.libraryEditor.LibraryEditor
|
||||
import com.intellij.openapi.roots.ui.configuration.libraryEditor.LibraryEditorBase
|
||||
import com.intellij.openapi.ui.DialogWrapper
|
||||
import com.intellij.openapi.ui.Messages
|
||||
import com.intellij.openapi.util.io.FileUtil
|
||||
import com.intellij.openapi.vfs.*
|
||||
@@ -91,10 +92,7 @@ abstract class ConvertToRepositoryLibraryActionBase(protected val context: Struc
|
||||
null) != Messages.YES) {
|
||||
return
|
||||
}
|
||||
val coordinates = specifyMavenCoordinates(listOf(mavenCoordinates)) ?: return
|
||||
ApplicationManager.getApplication().invokeLater {
|
||||
downloadLibraryAndReplace(library, coordinates)
|
||||
}
|
||||
changeCoordinatesAndRetry(mavenCoordinates, library)
|
||||
return
|
||||
}
|
||||
|
||||
@@ -104,11 +102,16 @@ abstract class ConvertToRepositoryLibraryActionBase(protected val context: Struc
|
||||
if (task.cancelled) return
|
||||
|
||||
if (!task.filesAreTheSame) {
|
||||
val ok = LibraryJarsDiffDialog(task.libraryFileToCompare, task.downloadedFileToCompare, mavenCoordinates,
|
||||
LibraryUtil.getPresentableName(library), project).showAndGet()
|
||||
val dialog = LibraryJarsDiffDialog(task.libraryFileToCompare, task.downloadedFileToCompare, mavenCoordinates,
|
||||
LibraryUtil.getPresentableName(library), project)
|
||||
dialog.show()
|
||||
task.deleteTemporaryFiles()
|
||||
if (!ok) {
|
||||
return
|
||||
when (dialog.exitCode) {
|
||||
DialogWrapper.CANCEL_EXIT_CODE -> return
|
||||
LibraryJarsDiffDialog.CHANGE_COORDINATES_CODE -> {
|
||||
changeCoordinatesAndRetry(mavenCoordinates, library)
|
||||
return
|
||||
}
|
||||
}
|
||||
}
|
||||
ApplicationManager.getApplication().invokeLater {
|
||||
@@ -121,6 +124,13 @@ abstract class ConvertToRepositoryLibraryActionBase(protected val context: Struc
|
||||
}
|
||||
}
|
||||
|
||||
private fun changeCoordinatesAndRetry(mavenCoordinates: JpsMavenRepositoryLibraryDescriptor, library: LibraryEx) {
|
||||
val coordinates = specifyMavenCoordinates(listOf(mavenCoordinates)) ?: return
|
||||
ApplicationManager.getApplication().invokeLater {
|
||||
downloadLibraryAndReplace(library, coordinates)
|
||||
}
|
||||
}
|
||||
|
||||
private fun detectOrSpecifyMavenCoordinates(library: Library): JpsMavenRepositoryLibraryDescriptor? {
|
||||
val detectedCoordinates = detectMavenCoordinates(library.getFiles(OrderRootType.CLASSES))
|
||||
LOG.debug("Maven coordinates for ${LibraryUtil.getPresentableName(library)} JARs: $detectedCoordinates")
|
||||
|
||||
+15
@@ -26,6 +26,8 @@ import com.intellij.openapi.vfs.VirtualFile
|
||||
import com.intellij.ui.components.JBLabel
|
||||
import com.intellij.xml.util.XmlStringUtil
|
||||
import org.jetbrains.jps.model.library.JpsMavenRepositoryLibraryDescriptor
|
||||
import java.awt.event.ActionEvent
|
||||
import javax.swing.Action
|
||||
|
||||
/**
|
||||
* @author nik
|
||||
@@ -35,6 +37,9 @@ class LibraryJarsDiffDialog(libraryFile: VirtualFile,
|
||||
private val mavenCoordinates: JpsMavenRepositoryLibraryDescriptor,
|
||||
private val libraryName: String,
|
||||
project: Project) : DialogWrapper(project) {
|
||||
companion object {
|
||||
val CHANGE_COORDINATES_CODE = 2;
|
||||
}
|
||||
|
||||
private val panel: DiffRequestPanel
|
||||
|
||||
@@ -53,4 +58,14 @@ class LibraryJarsDiffDialog(libraryFile: VirtualFile,
|
||||
override fun createCenterPanel() = panel.component
|
||||
|
||||
override fun getPreferredFocusedComponent() = panel.preferredFocusedComponent
|
||||
|
||||
override fun createActions(): Array<Action> {
|
||||
return arrayOf(okAction, ChangeCoordinatesAction(), cancelAction)
|
||||
}
|
||||
|
||||
private inner class ChangeCoordinatesAction : DialogWrapperAction("Change Coordinates...") {
|
||||
override fun doAction(e: ActionEvent?) {
|
||||
close(CHANGE_COORDINATES_CODE)
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user