Skip to content

Commit 5baa9c2

Browse files
committed
merged installed and updates tables
1 parent 8690e72 commit 5baa9c2

File tree

2 files changed

+126
-46
lines changed

2 files changed

+126
-46
lines changed

src/processing/mode/android/SDKDownloader.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33
/*
44
Part of the Processing project - http://processing.org
55
6-
Copyright (c) 2014-16 The Processing Foundation
6+
Copyright (c) 2014-17 The Processing Foundation
77
88
This program is free software; you can redistribute it and/or modify
99
it under the terms of the GNU General Public License version 2

src/processing/mode/android/SDKUpdater.java

Lines changed: 125 additions & 45 deletions
Original file line numberDiff line numberDiff line change
@@ -24,35 +24,41 @@
2424
import java.io.IOException;
2525
import java.util.ArrayList;
2626
import java.util.Arrays;
27+
import java.util.HashMap;
2728
import java.util.List;
2829
import java.util.Vector;
2930
import java.util.concurrent.CancellationException;
3031
import java.util.concurrent.ExecutionException;
3132

3233
@SuppressWarnings("serial")
3334
public class SDKUpdater extends JFrame implements PropertyChangeListener {
34-
private final Vector<String> columnsInstalled = new Vector<>(Arrays.asList("Path", "Version", "Description"));
35-
private final Class[] columnClassI = new Class[]{
36-
String.class, String.class, String.class
37-
};
35+
private final Vector<String> columns = new Vector<>(Arrays.asList("Package name", "Installed version", "New version"));
36+
// private final Class[] columnClassI = new Class[]{
37+
// String.class, String.class, String.class
38+
// };
3839

39-
private final Vector<String> columnsUpdates = new Vector<>(Arrays.asList("ID", "Installed", "Available"));
40-
private final Class[] columnClassU = new Class[]{
41-
String.class, String.class, String.class
42-
};
40+
// private final Vector<String> columnsUpdates = new Vector<>(Arrays.asList("ID", "Installed", "Available"));
41+
// private final Class[] columnClassU = new Class[]{
42+
// String.class, String.class, String.class
43+
// };
4344

4445
private static final String PROPERTY_CHANGE_QUERY = "query";
4546

4647
private AndroidSDK sdk;
47-
// private File toolsFolder;
48-
private Vector<Vector<String>> updatesList;
4948
private Vector<Vector<String>> installedList;
49+
// private Vector<Vector<String>> updatesList;
50+
5051
private QueryTask queryTask;
5152
private DownloadTask downloadTask;
5253
private boolean downloadTaskRunning;
5354

55+
// private Vector<Vector<String>> packageInfo;
56+
// private DefaultTableModel packageTable;
57+
5458
private DefaultTableModel modelInstalled;
55-
private DefaultTableModel modelUpdates;
59+
private int numUpdates;
60+
// private DefaultTableModel modelUpdates;
61+
5662
private JProgressBar progressBar;
5763
private JLabel status;
5864
private JButton actionButton;
@@ -74,10 +80,8 @@ public SDKUpdater(Editor editor, AndroidMode androidMode) {
7480
e.printStackTrace();
7581
}
7682

77-
if (sdk == null)
78-
return;
83+
if (sdk == null) return;
7984

80-
// toolsFolder = sdk.getToolsFolder();
8185
queryTask = new QueryTask();
8286
queryTask.addPropertyChangeListener(this);
8387
queryTask.execute();
@@ -89,13 +93,16 @@ public void propertyChange(PropertyChangeEvent evt) {
8993
switch (evt.getPropertyName()) {
9094
case PROPERTY_CHANGE_QUERY:
9195
progressBar.setIndeterminate(false);
92-
if (updatesList.size() == 0) {
96+
if (numUpdates == 0) {
97+
actionButton.setEnabled(false);
9398
status.setText("No updates available");
94-
status.setForeground(Color.GREEN);
9599
} else {
96-
actionButton.setVisible(true);
97-
status.setText("Update(s) found!");
98-
status.setForeground(Color.BLUE);
100+
actionButton.setEnabled(true);
101+
if (numUpdates == 1) {
102+
status.setText("1 update found!");
103+
} else {
104+
status.setText(numUpdates + " updates found!");
105+
}
99106
}
100107
break;
101108
}
@@ -104,7 +111,7 @@ public void propertyChange(PropertyChangeEvent evt) {
104111
class QueryTask extends SwingWorker<Object, Object> {
105112
@Override
106113
protected Object doInBackground() throws Exception {
107-
updatesList = new Vector<>();
114+
numUpdates = 0;
108115
installedList = new Vector<>();
109116

110117
/* Following code is from listPackages() of com.android.sdklib.tool.SdkManagerCli
@@ -132,13 +139,77 @@ public Channel getChannel() {
132139
}), null);
133140

134141
RepositoryPackages packages = mRepoManager.getPackages();
135-
142+
HashMap<String, String[]> local = new HashMap();
143+
for (LocalPackage pck : packages.getLocalPackages().values()) {
144+
String path = pck.getPath();
145+
String name = pck.getDisplayName();
146+
String ver = pck.getVersion().toString();
147+
int rev = name.indexOf(", rev");
148+
if (-1 < rev) {
149+
name = name.substring(0, rev);
150+
}
151+
int maj = ver.indexOf(".");
152+
if (-1 < maj) {
153+
String major = ver.substring(0, maj);
154+
int pos = name.indexOf(major);
155+
if (-1 < pos) {
156+
name = name.substring(0, pos).trim();
157+
}
158+
}
159+
local.put(path, new String[]{name, ver});
160+
}
161+
162+
HashMap<String, String[]> update = new HashMap();
163+
for (UpdatablePackage pck : packages.getUpdatedPkgs()) {
164+
String path = pck.getPath();
165+
String inst = pck.getLocal().getVersion().toString();
166+
String updt = pck.getRemote().getVersion().toString();
167+
update.put(path, new String[]{inst, updt});
168+
}
169+
170+
for (String path: local.keySet()) {
171+
Vector<String> info = new Vector<>();
172+
String[] locInfo = local.get(path);
173+
info.add(locInfo[0]);
174+
info.add(locInfo[1]);
175+
if (update.containsKey(path)) {
176+
String[] updInfo = update.get(path);
177+
info.add(updInfo[1]);
178+
numUpdates++;
179+
} else {
180+
info.add("");
181+
}
182+
installedList.add(info);
183+
}
184+
185+
186+
/*
136187
for (LocalPackage local : packages.getLocalPackages().values()) {
137188
Vector<String> localPackages = new Vector<>();
189+
String name = local.getDisplayName();
190+
String ver = local.getVersion().toString();
191+
int rev = name.indexOf(", rev");
192+
if (-1 < rev) {
193+
name = name.substring(0, rev);
194+
}
195+
int maj = ver.indexOf(".");
196+
if (-1 < maj) {
197+
String major = ver.substring(0, maj);
198+
int pos = name.indexOf(major);
199+
if (-1 < pos) {
200+
name = name.substring(0, pos).trim();
201+
}
202+
}
203+
138204
localPackages.add(local.getPath());
139205
localPackages.add(local.getVersion().toString());
140-
localPackages.add(local.getDisplayName());
141-
206+
localPackages.add(name);
207+
208+
System.out.println("*************************");
209+
System.out.println(local.getDisplayName());
210+
System.out.println(name);
211+
212+
142213
installedList.add(localPackages);
143214
}
144215
@@ -150,6 +221,8 @@ public Channel getChannel() {
150221
151222
updatesList.add(updatePackages);
152223
}
224+
*/
225+
153226

154227
return null;
155228
}
@@ -162,12 +235,13 @@ protected void done() {
162235
get();
163236
firePropertyChange(PROPERTY_CHANGE_QUERY, "query", "SUCCESS");
164237

165-
if (updatesList != null && installedList != null) {
166-
modelInstalled.setDataVector(installedList, columnsInstalled);
167-
modelUpdates.setDataVector(updatesList, columnsUpdates);
168-
169-
modelUpdates.fireTableDataChanged();
238+
if (installedList != null) {
239+
modelInstalled.setDataVector(installedList, columns);
170240
modelInstalled.fireTableDataChanged();
241+
242+
// modelUpdates.setDataVector(updatesList, columnsUpdates);
243+
// modelUpdates.fireTableDataChanged();
244+
171245
}
172246
} catch (InterruptedException | CancellationException e) {
173247
this.cancel(false);
@@ -232,7 +306,8 @@ protected void done() {
232306

233307
try {
234308
get();
235-
actionButton.setVisible(false); //Hide button after update completes
309+
// actionButton.setVisible(false); //Hide button after update completes
310+
actionButton.setEnabled(false);
236311
status.setText("Refreshing packages...");
237312

238313
queryTask = new QueryTask();
@@ -290,47 +365,48 @@ private void createLayout() {
290365

291366
/* Packages panel */
292367
JPanel packagesPanel = new JPanel();
293-
packagesPanel.setBorder(BorderFactory.createTitledBorder(
294-
BorderFactory.createEtchedBorder(), "Packages"));
368+
// packagesPanel.setBorder(BorderFactory.createTitledBorder(
369+
// BorderFactory.createEtchedBorder(), "Packages"));
295370

296371
BoxLayout boxLayout = new BoxLayout(packagesPanel, BoxLayout.Y_AXIS);
297372
packagesPanel.setLayout(boxLayout);
298373

299374
/* Installed Packages panel */
300-
JPanel installedPanel = new JPanel(new BorderLayout());
301-
installedPanel.setBorder(BorderFactory.createTitledBorder(
302-
BorderFactory.createEtchedBorder(), "Installed"));
375+
// JPanel installedPanel = new JPanel(new BorderLayout());
376+
// installedPanel.setBorder(BorderFactory.createTitledBorder(
377+
// BorderFactory.createEtchedBorder(), "Installed"));
303378

304379
//Installed Packages table
305-
modelInstalled = new DefaultTableModel(15, columnClassI.length) {
380+
modelInstalled = new DefaultTableModel(15, columns.size()) {
306381
@Override
307382
public boolean isCellEditable(int row, int column) {
308383
return false;
309384
}
310385

311386
@Override
312387
public Class<?> getColumnClass(int columnIndex) {
313-
return columnClassI[columnIndex];
388+
return String.class;
314389
}
315390
};
316391
JTable tInstalled = new JTable(modelInstalled) {
317392
@Override
318393
public String getColumnName(int column) {
319-
return columnsInstalled.get(column);
394+
return columns.get(column);
320395
}
321396
};
322397
tInstalled.setFillsViewportHeight(true);
323398

324399
tInstalled.setPreferredScrollableViewportSize(new Dimension(tInstalled.getPreferredSize().width,
325400
15 * tInstalled.getRowHeight()));
326-
installedPanel.add(new JScrollPane(tInstalled));
401+
packagesPanel.add(new JScrollPane(tInstalled));
327402

328403

329404
/* Updates panel */
330-
JPanel updatesPanel = new JPanel(new BorderLayout());
331-
updatesPanel.setBorder(BorderFactory.createTitledBorder(
332-
BorderFactory.createEtchedBorder(), "Available Updates"));
405+
// JPanel updatesPanel = new JPanel(new BorderLayout());
406+
// updatesPanel.setBorder(BorderFactory.createTitledBorder(
407+
// BorderFactory.createEtchedBorder(), "Available Updates"));
333408

409+
/*
334410
//Updates table
335411
modelUpdates = new DefaultTableModel(5, columnClassU.length) {
336412
@Override
@@ -353,9 +429,12 @@ public String getColumnName(int column) {
353429
tUpdates.setPreferredScrollableViewportSize(new Dimension(tUpdates.getPreferredSize().width,
354430
5 * tUpdates.getRowHeight()));
355431
updatesPanel.add(new JScrollPane(tUpdates), BorderLayout.CENTER);
356-
357-
packagesPanel.add(installedPanel);
358-
packagesPanel.add(updatesPanel);
432+
*/
433+
434+
435+
436+
// packagesPanel.add(installedPanel);
437+
// packagesPanel.add(updatesPanel);
359438

360439
JPanel controlPanel = new JPanel();
361440
GridBagLayout gridBagLayout = new GridBagLayout();
@@ -393,7 +472,8 @@ public void actionPerformed(ActionEvent e) {
393472
}
394473
}
395474
});
396-
actionButton.setVisible(false);
475+
// actionButton.setVisible(false);
476+
actionButton.setEnabled(false);
397477
gbc.gridx = 1;
398478
gbc.gridy = 0;
399479
gbc.weightx = 0.0;

0 commit comments

Comments
 (0)