Skip to content

Commit 50d1e60

Browse files
committed
[Lib/Board manager] Workaround for unselectable dropdown
The on-hover UX should be slightly adapted to understand the needed action. At least, using this method, the selected value does not disappear.
1 parent bc65629 commit 50d1e60

File tree

3 files changed

+30
-4
lines changed

3 files changed

+30
-4
lines changed

app/src/cc/arduino/contributions/libraries/ui/ContributedLibraryTableCellEditor.java

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -33,6 +33,7 @@
3333

3434
import java.awt.Color;
3535
import java.awt.Component;
36+
import java.util.ArrayList;
3637
import java.util.Collections;
3738
import java.util.LinkedList;
3839
import java.util.List;
@@ -53,6 +54,8 @@
5354
@SuppressWarnings("serial")
5455
public class ContributedLibraryTableCellEditor extends InstallerTableCell {
5556

57+
private List<Component> cellList = new ArrayList<Component>();
58+
5659
private ContributedLibraryReleases editorValue;
5760
private ContributedLibraryTableCellJPanel editorCell;
5861

@@ -67,6 +70,10 @@ public Component getTableCellEditorComponent(JTable table, Object value,
6770
int column) {
6871
editorValue = (ContributedLibraryReleases) value;
6972

73+
if (cellList.size() > row && cellList.get(row) != null) {
74+
return cellList.get(row);
75+
}
76+
7077
editorCell = new ContributedLibraryTableCellJPanel(table, value, true);
7178
editorCell.installButton
7279
.addActionListener(e -> onInstall(editorValue.getSelected(),
@@ -135,6 +142,9 @@ public Component getTableCellEditorComponent(JTable table, Object value,
135142
.setVisible(installed == null && uninstalledReleases.size() > 1);
136143

137144
editorCell.setBackground(new Color(218, 227, 227)); // #dae3e3
145+
146+
cellList.add(row, editorCell);
147+
138148
return editorCell;
139149
}
140150

app/src/cc/arduino/contributions/packages/ui/ContributedPlatformTableCellEditor.java

Lines changed: 14 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -33,6 +33,7 @@
3333

3434
import java.awt.Color;
3535
import java.awt.Component;
36+
import java.util.ArrayList;
3637
import java.util.Collections;
3738
import java.util.LinkedList;
3839
import java.util.List;
@@ -51,6 +52,8 @@
5152
@SuppressWarnings("serial")
5253
public class ContributedPlatformTableCellEditor extends InstallerTableCell {
5354

55+
private List<Component> cellList = new ArrayList<Component>();
56+
5457
private ContributedPlatformTableCellJPanel cell;
5558
private ContributedPlatformReleases value;
5659

@@ -65,6 +68,10 @@ public Component getTableCellEditorComponent(JTable table, Object _value,
6568
int column) {
6669
value = (ContributedPlatformReleases) _value;
6770

71+
if (cellList.size() > row && cellList.get(row) != null) {
72+
return cellList.get(row);
73+
}
74+
6875
cell = new ContributedPlatformTableCellJPanel();
6976
cell.installButton.addActionListener(e -> onInstall(value.getSelected(),
7077
value.getInstalled()));
@@ -74,9 +81,10 @@ public Component getTableCellEditorComponent(JTable table, Object _value,
7481
.getSelectedItem();
7582
onInstall(selected, value.getInstalled());
7683
});
77-
cell.versionToInstallChooser.addItemListener(e -> value
78-
.select((ContributedPlatform) cell.versionToInstallChooser
79-
.getSelectedItem()));
84+
cell.versionToInstallChooser.addItemListener(e -> {
85+
value.select((ContributedPlatform) cell.versionToInstallChooser
86+
.getSelectedItem());
87+
});
8088

8189
setEnabled(true);
8290

@@ -129,6 +137,9 @@ public Component getTableCellEditorComponent(JTable table, Object _value,
129137

130138
cell.update(table, _value, true, !installedBuiltIn.isEmpty());
131139
cell.setBackground(new Color(218, 227, 227)); // #dae3e3
140+
141+
cellList.add(row, cell);
142+
132143
return cell;
133144
}
134145

app/src/cc/arduino/contributions/ui/InstallerJDialog.java

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -171,10 +171,15 @@ public void keyReleased(KeyEvent keyEvent) {
171171

172172
contribTable.addMouseMotionListener(new MouseMotionListener() {
173173

174+
private int previousRowAtPoint = -1;
175+
174176
public void mouseDragged(MouseEvent e) {}
175177

176178
public void mouseMoved(MouseEvent e) {
177-
contribTable.editCellAt(contribTable.rowAtPoint(e.getPoint()), 0);
179+
if (contribTable.rowAtPoint(e.getPoint()) != previousRowAtPoint) {
180+
contribTable.editCellAt(contribTable.rowAtPoint(e.getPoint()), 0);
181+
previousRowAtPoint = contribTable.rowAtPoint(e.getPoint());
182+
}
178183
}
179184
});
180185

0 commit comments

Comments
 (0)