diff --git a/app/src/cc/arduino/packages/contributions/ui/ContributedPlatformTableCell.java b/app/src/cc/arduino/packages/contributions/ui/ContributedPlatformTableCell.java index cc337b7dc..0437c78e0 100644 --- a/app/src/cc/arduino/packages/contributions/ui/ContributedPlatformTableCell.java +++ b/app/src/cc/arduino/packages/contributions/ui/ContributedPlatformTableCell.java @@ -28,36 +28,27 @@ */ package cc.arduino.packages.contributions.ui; -import static processing.app.I18n._; -import static processing.app.I18n.format; +import cc.arduino.packages.contributions.ContributedBoard; +import cc.arduino.packages.contributions.ContributedPlatform; +import cc.arduino.packages.contributions.ui.ContributionIndexTableModel.ContributedPlatformReleases; +import cc.arduino.ui.InstallerTableCell; +import processing.app.Base; -import java.awt.Color; -import java.awt.Component; -import java.awt.Insets; -import java.awt.event.ActionEvent; -import java.awt.event.ActionListener; - -import javax.swing.Box; -import javax.swing.BoxLayout; -import javax.swing.JButton; -import javax.swing.JComboBox; -import javax.swing.JLabel; -import javax.swing.JPanel; -import javax.swing.JTable; -import javax.swing.JTextPane; -import javax.swing.Timer; +import javax.swing.*; import javax.swing.border.EmptyBorder; import javax.swing.event.HyperlinkEvent; import javax.swing.event.HyperlinkListener; import javax.swing.text.Document; import javax.swing.text.html.HTMLDocument; import javax.swing.text.html.StyleSheet; +import java.awt.*; +import java.awt.event.ActionEvent; +import java.awt.event.ActionListener; +import java.awt.event.ItemEvent; +import java.awt.event.ItemListener; -import processing.app.Base; -import cc.arduino.packages.contributions.ContributedBoard; -import cc.arduino.packages.contributions.ContributedPlatform; -import cc.arduino.packages.contributions.ui.ContributionIndexTableModel.ContributedPlatformReleases; -import cc.arduino.ui.InstallerTableCell; +import static processing.app.I18n._; +import static processing.app.I18n.format; @SuppressWarnings("serial") public class ContributedPlatformTableCell extends InstallerTableCell { @@ -103,7 +94,7 @@ public class ContributedPlatformTableCell extends InstallerTableCell { } }); - installButton = new JButton(_("Update")); + installButton = new JButton(_("Install")); installButton.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent e) { @@ -132,6 +123,14 @@ public class ContributedPlatformTableCell extends InstallerTableCell { downgradeChooser = new JComboBox(); downgradeChooser.addItem("-"); downgradeChooser.setMaximumSize(downgradeChooser.getPreferredSize()); + downgradeChooser.addItemListener(new ItemListener() { + @Override + public void itemStateChanged(ItemEvent e) { + Object selectVersionItem = downgradeChooser.getItemAt(0); + boolean disableDowngrade = (e.getItem() == selectVersionItem); + downgradeButton.setEnabled(!disableDowngrade); + } + }); panel = new JPanel(); panel.setLayout(new BoxLayout(panel, BoxLayout.Y_AXIS)); @@ -219,6 +218,7 @@ public class ContributedPlatformTableCell extends InstallerTableCell { setEnabled(true); downgradeChooser.removeAllItems(); + downgradeChooser.addItem(_("Select version")); boolean visible = false; for (ContributedPlatform release : editorValue.releases) { if (release.isInstalled()) @@ -240,16 +240,23 @@ public class ContributedPlatformTableCell extends InstallerTableCell { ContributedPlatform selectedPlatform = releases.getSelected(); ContributedPlatform installedPlatform = releases.getInstalled(); - boolean removable, upgradable; + boolean removable, installable, upgradable; if (installedPlatform == null) { + installable = true; removable = false; upgradable = false; } else { + installable = false; removable = true; upgradable = (selectedPlatform != installedPlatform); } - installButton.setVisible(upgradable); + if (installable) + installButton.setText(_("Install")); + if (upgradable) + installButton.setText(_("Upgrade")); + installButton.setVisible(installable || upgradable); + removeButton.setVisible(removable); removeButtonStrut.setVisible(removable);