Commit b3804e6f authored by Dmitry Trofimov's avatar Dmitry Trofimov
Browse files

Improve UI: grayscale icons, better text

parent ae7bb3d2
Showing with 33 additions and 37 deletions
+33 -37
python/resources/icons/com/jetbrains/professional/Docker.png

206 Bytes | W: 0px | H: 0px

python/resources/icons/com/jetbrains/professional/Docker.png

168 Bytes | W: 0px | H: 0px

python/resources/icons/com/jetbrains/professional/Docker.png
python/resources/icons/com/jetbrains/professional/Docker.png
python/resources/icons/com/jetbrains/professional/Docker.png
python/resources/icons/com/jetbrains/professional/Docker.png
  • 2-up
  • Swipe
  • Onion skin
python/resources/icons/com/jetbrains/professional/Docker@2x.png

385 Bytes | W: 0px | H: 0px

python/resources/icons/com/jetbrains/professional/Docker@2x.png

303 Bytes | W: 0px | H: 0px

python/resources/icons/com/jetbrains/professional/Docker@2x.png
python/resources/icons/com/jetbrains/professional/Docker@2x.png
python/resources/icons/com/jetbrains/professional/Docker@2x.png
python/resources/icons/com/jetbrains/professional/Docker@2x.png
  • 2-up
  • Swipe
  • Onion skin
python/resources/icons/com/jetbrains/professional/DockerCompose.png

214 Bytes | W: 0px | H: 0px

python/resources/icons/com/jetbrains/professional/DockerCompose.png

211 Bytes | W: 0px | H: 0px

python/resources/icons/com/jetbrains/professional/DockerCompose.png
python/resources/icons/com/jetbrains/professional/DockerCompose.png
python/resources/icons/com/jetbrains/professional/DockerCompose.png
python/resources/icons/com/jetbrains/professional/DockerCompose.png
  • 2-up
  • Swipe
  • Onion skin
python/resources/icons/com/jetbrains/professional/DockerCompose@2x.png

395 Bytes | W: 0px | H: 0px

python/resources/icons/com/jetbrains/professional/DockerCompose@2x.png

311 Bytes | W: 0px | H: 0px

python/resources/icons/com/jetbrains/professional/DockerCompose@2x.png
python/resources/icons/com/jetbrains/professional/DockerCompose@2x.png
python/resources/icons/com/jetbrains/professional/DockerCompose@2x.png
python/resources/icons/com/jetbrains/professional/DockerCompose@2x.png
  • 2-up
  • Swipe
  • Onion skin
python/resources/icons/com/jetbrains/professional/vagrant.png

102 Bytes | W: 0px | H: 0px

python/resources/icons/com/jetbrains/professional/vagrant.png

93 Bytes | W: 0px | H: 0px

python/resources/icons/com/jetbrains/professional/vagrant.png
python/resources/icons/com/jetbrains/professional/vagrant.png
python/resources/icons/com/jetbrains/professional/vagrant.png
python/resources/icons/com/jetbrains/professional/vagrant.png
  • 2-up
  • Swipe
  • Onion skin
python/resources/icons/com/jetbrains/professional/vagrant@2x.png

145 Bytes | W: 0px | H: 0px

python/resources/icons/com/jetbrains/professional/vagrant@2x.png

125 Bytes | W: 0px | H: 0px

python/resources/icons/com/jetbrains/professional/vagrant@2x.png
python/resources/icons/com/jetbrains/professional/vagrant@2x.png
python/resources/icons/com/jetbrains/professional/vagrant@2x.png
python/resources/icons/com/jetbrains/professional/vagrant@2x.png
  • 2-up
  • Swipe
  • Onion skin
python/resources/icons/com/jetbrains/professional/vagrant@2x_dark.png

143 Bytes | W: 0px | H: 0px

python/resources/icons/com/jetbrains/professional/vagrant@2x_dark.png

125 Bytes | W: 0px | H: 0px

python/resources/icons/com/jetbrains/professional/vagrant@2x_dark.png
python/resources/icons/com/jetbrains/professional/vagrant@2x_dark.png
python/resources/icons/com/jetbrains/professional/vagrant@2x_dark.png
python/resources/icons/com/jetbrains/professional/vagrant@2x_dark.png
  • 2-up
  • Swipe
  • Onion skin
python/resources/icons/com/jetbrains/professional/vagrant_dark.png

102 Bytes | W: | H:

python/resources/icons/com/jetbrains/professional/vagrant_dark.png

93 Bytes | W: | H:

python/resources/icons/com/jetbrains/professional/vagrant_dark.png
python/resources/icons/com/jetbrains/professional/vagrant_dark.png
python/resources/icons/com/jetbrains/professional/vagrant_dark.png
python/resources/icons/com/jetbrains/professional/vagrant_dark.png
  • 2-up
  • Swipe
  • Onion skin
......@@ -11,17 +11,14 @@ import com.intellij.openapi.projectRoots.Sdk
import com.intellij.openapi.ui.Splitter
import com.intellij.openapi.ui.ValidationInfo
import com.intellij.openapi.util.registry.Registry
import com.intellij.ui.components.JBLabel
import com.intellij.ui.HyperlinkLabel
import com.intellij.ui.components.JBList
import com.intellij.ui.components.labels.SwingActionLink
import com.intellij.ui.components.panels.HorizontalLayout
import com.intellij.ui.components.panels.VerticalLayout
import com.intellij.util.ui.JBUI
import java.awt.Component
import java.awt.event.ActionEvent
import javax.swing.*
const val PROFESSIONAL = "(Professional)"
import javax.swing.Icon
import javax.swing.JPanel
import javax.swing.JTextArea
abstract class PyAddSdkInfoProvider : PyAddSdkProvider {
override fun createView(project: Project?,
......@@ -31,7 +28,7 @@ abstract class PyAddSdkInfoProvider : PyAddSdkProvider {
if (Registry.`is`("python.show.professional.interpreter.types")) {
val panel = createPanel()
panel.panelName = panel.panelName + " " + PROFESSIONAL
panel.panelName = panel.panelName
panel
}
else null
......@@ -40,23 +37,23 @@ abstract class PyAddSdkInfoProvider : PyAddSdkProvider {
}
class PyAddDockerSdkInfoProvider : PyAddSdkInfoProvider() {
override fun createPanel() = PyAddProfessionalSdkInfoPanel("Docker", ProfessionalIcons.Docker, "using-docker-as-a-remote-interpreter.html")
override fun createPanel() = PyAddProfessionalSdkInfoPanel("Docker", ProfessionalIcons.Docker, "using-docker-as-a-remote-interpreter.html", "Are you developing your code using a Docker image? With PyCharm Professional Edition you can use a Docker container with the same ease of use as a virtualenv: run and debug code with a click of a button.")
}
class PyAddDockerComposeSdkInfoProvider : PyAddSdkInfoProvider() {
override fun createPanel() = PyAddProfessionalSdkInfoPanel("Docker Compose", ProfessionalIcons.DockerCompose, "using-docker-compose-as-a-remote-interpreter.html")
override fun createPanel() = PyAddProfessionalSdkInfoPanel("Docker Compose", ProfessionalIcons.DockerCompose, "using-docker-compose-as-a-remote-interpreter.html", "With Docker Compose you get a reproducible environment not only for your code, but also for backing services like a database. PyCharm Professional integrates seamlessly to give you the run and debug experience you’re used to from local development with containers.")
}
class PyAddSshSdkInfoProvider : PyAddSdkInfoProvider() {
override fun createPanel() = PyAddProfessionalSdkInfoPanel("SSH Interpreter", ProfessionalIcons.SSH, "configuring-remote-interpreters-via-ssh.html")
override fun createPanel() = PyAddProfessionalSdkInfoPanel("SSH Interpreter", ProfessionalIcons.SSH, "configuring-remote-interpreters-via-ssh.html", "Would you like to run and debug code on a remote machine? If you have SSH access to a machine, PyCharm Professional Edition is able to synchronize your code, and debug it remotely with the same ease-of-use you get locally.")
}
class PyAddVagrantSdkInfoProvider : PyAddSdkInfoProvider() {
override fun createPanel() = PyAddProfessionalSdkInfoPanel("Vagrant", ProfessionalIcons.Vagrant, "configuring-remote-interpreters-via-virtual-boxes.html")
override fun createPanel() = PyAddProfessionalSdkInfoPanel("Vagrant", ProfessionalIcons.Vagrant, "configuring-remote-interpreters-via-virtual-boxes.html", "Vagrant allows you to provision VMs for a consistent and reproducible development environment. PyCharm Professional Edition can shorten your development loop by connecting to the Python interpreter within your VM. Run and Debug your code straight from PyCharm.")
}
class PyAddProfessionalSdkInfoPanel(override var panelName: String, override val icon: Icon, val helpPage: String) : JPanel(), PyAddSdkView {
class PyAddProfessionalSdkInfoPanel(override var panelName: String, override val icon: Icon, val helpPage: String, val text: String) : JPanel(), PyAddSdkView {
override fun getOrCreateSdk(): Sdk? = null
......@@ -87,43 +84,42 @@ class PyAddProfessionalSdkInfoPanel(override var panelName: String, override val
init {
layout = VerticalLayout(JBUI.scale(10))
val panel = JPanel(HorizontalLayout(JBUI.scale(0)))
panel.add(HorizontalLayout.LEFT,
JBLabel("Support for ${this.panelName} is available in "))
panel.add(HorizontalLayout.LEFT, SwingActionLink(object : AbstractAction("PyCharm Professional Edition") {
override fun actionPerformed(e: ActionEvent?) {
val info = ApplicationInfo.getInstance()
val productVersion = info.majorVersion + "." + info.minorVersionMainPart
BrowserUtil.browse("https://www.jetbrains.com/pycharm/features/editions_comparison_matrix.html?utm_source=product&utm_medium=link&utm_campaign=PC_INTERPRETER&utm_content=$productVersion")
}
}))
add(VerticalLayout.TOP, panel)
val panel2 = JPanel(HorizontalLayout(JBUI.scale(0)))
panel2.add(HorizontalLayout.LEFT,
JBLabel("Read more about ${this.panelName} in "))
panel2.add(HorizontalLayout.LEFT, SwingActionLink(object : AbstractAction(" PyCharm help") {
override fun actionPerformed(e: ActionEvent?) {
val textArea = JTextArea(this.text, 3,80)
textArea.isEditable = false
textArea.lineWrap = true
textArea.isOpaque = false
textArea.wrapStyleWord = true
add(VerticalLayout.TOP, textArea)
add(VerticalLayout.TOP, HyperlinkLabel("Try PyCharm Professional Edition").apply { addHyperlinkListener {
val info = ApplicationInfo.getInstance()
val productVersion = info.majorVersion + "." + info.minorVersionMainPart
BrowserUtil.browse("https://www.jetbrains.com/pycharm/features/editions_comparison_matrix.html?utm_source=product&utm_medium=link&utm_campaign=PC_INTERPRETER&utm_content=$productVersion")
}})
add(VerticalLayout.TOP, HyperlinkLabel("Read more about ${this.panelName} support in PyCharm help").apply {
addHyperlinkListener {
BrowserUtil.browse("https://www.jetbrains.com/help/pycharm/$helpPage")
}
}))
add(VerticalLayout.TOP, panel2)
})
add(VerticalLayout.TOP, SwingActionLink(object : AbstractAction("Got it! Don't show features of Professional Edition here") {
override fun actionPerformed(e: ActionEvent?) {
add(VerticalLayout.TOP, HyperlinkLabel("Got it! Don't show features of Professional Edition here").apply {
addHyperlinkListener {
Registry.get("python.show.professional.interpreter.types").setValue(false)
val list = (this@PyAddProfessionalSdkInfoPanel.parent.parent as Splitter).firstComponent as JBList<*>
var newList = Lists.newArrayList<PyAddSdkView>()
for (i in 0 until list.itemsCount) {
val elementAt = list.model.getElementAt(i)
if (!(elementAt as PyAddSdkView).panelName.endsWith(PROFESSIONAL)) {
newList.add(elementAt)
if (!(elementAt is PyAddProfessionalSdkInfoPanel)) {
newList.add(elementAt as PyAddSdkView)
}
}
list.model = JBList.createDefaultListModel(newList)
list.selectedIndex = 0
}
}))
})
}
}
Supports Markdown
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment