Skip to content

Commit e0a1ede

Browse files
committed
tweaked updater layout
1 parent d635609 commit e0a1ede

File tree

2 files changed

+72
-146
lines changed

2 files changed

+72
-146
lines changed

src/processing/mode/android/KeyStoreManager.java

Lines changed: 3 additions & 3 deletions
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
@@ -84,7 +84,7 @@ private void createLayout() {
8484
buttons.setAlignmentX(LEFT_ALIGNMENT);
8585
JButton okButton = new JButton("OK");
8686
Dimension dim = new Dimension(Toolkit.getButtonWidth(),
87-
okButton.getPreferredSize().height);
87+
okButton.getPreferredSize().height);
8888
okButton.setPreferredSize(dim);
8989
okButton.addActionListener(new ActionListener() {
9090
public void actionPerformed(ActionEvent e) {
@@ -120,7 +120,7 @@ public void actionPerformed(ActionEvent e) {
120120

121121
JButton resetKeystoreButton = new JButton("Reset password");
122122
dim = new Dimension(Toolkit.getButtonWidth()*2,
123-
okButton.getPreferredSize().height);
123+
okButton.getPreferredSize().height);
124124
resetKeystoreButton.setPreferredSize(dim);
125125
resetKeystoreButton.addActionListener(new ActionListener() {
126126
public void actionPerformed(ActionEvent e) {

src/processing/mode/android/SDKUpdater.java

Lines changed: 69 additions & 143 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,24 @@
1+
/* -*- mode: java; c-basic-offset: 2; indent-tabs-mode: nil -*- */
2+
3+
/*
4+
Part of the Processing project - http://processing.org
5+
6+
Copyright (c) 2017 The Processing Foundation
7+
8+
This program is free software; you can redistribute it and/or modify
9+
it under the terms of the GNU General Public License version 2
10+
as published by the Free Software Foundation.
11+
12+
This program is distributed in the hope that it will be useful,
13+
but WITHOUT ANY WARRANTY; without even the implied warranty of
14+
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
15+
GNU General Public License for more details.
16+
17+
You should have received a copy of the GNU General Public License
18+
along with this program; if not, write to the Free Software Foundation,
19+
Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
20+
*/
21+
122
package processing.mode.android;
223

324
import com.android.repository.api.*;
@@ -14,6 +35,7 @@
1435
import javax.swing.*;
1536
import javax.swing.border.EmptyBorder;
1637
import javax.swing.table.DefaultTableModel;
38+
1739
import java.awt.*;
1840
import java.awt.event.ActionEvent;
1941
import java.awt.event.ActionListener;
@@ -32,37 +54,26 @@
3254

3355
@SuppressWarnings("serial")
3456
public class SDKUpdater extends JFrame implements PropertyChangeListener {
57+
final static private int DEF_NUM_ROWS = 10;
58+
final static private int DEF_COL_WIDTH = 200;
3559
private final Vector<String> columns = new Vector<>(Arrays.asList(
3660
"Package name", "Installed version", "New version"));
37-
// private final Class[] columnClassI = new Class[]{
38-
// String.class, String.class, String.class
39-
// };
40-
41-
// private final Vector<String> columnsUpdates = new Vector<>(Arrays.asList("ID", "Installed", "Available"));
42-
// private final Class[] columnClassU = new Class[]{
43-
// String.class, String.class, String.class
44-
// };
45-
4661
private static final String PROPERTY_CHANGE_QUERY = "query";
4762

4863
private AndroidSDK sdk;
49-
private Vector<Vector<String>> installedList;
50-
// private Vector<Vector<String>> updatesList;
5164

5265
private QueryTask queryTask;
5366
private DownloadTask downloadTask;
5467
private boolean downloadTaskRunning;
5568

56-
// private Vector<Vector<String>> packageInfo;
57-
// private DefaultTableModel packageTable;
58-
59-
private DefaultTableModel modelInstalled;
69+
private Vector<Vector<String>> packageList;
70+
private DefaultTableModel packageTable;
6071
private int numUpdates;
61-
// private DefaultTableModel modelUpdates;
6272

6373
private JProgressBar progressBar;
6474
private JLabel status;
6575
private JButton actionButton;
76+
private JTable table;
6677

6778
public SDKUpdater(Editor editor, AndroidMode androidMode) {
6879
super("SDK Updater");
@@ -113,7 +124,7 @@ class QueryTask extends SwingWorker<Object, Object> {
113124
@Override
114125
protected Object doInBackground() throws Exception {
115126
numUpdates = 0;
116-
installedList = new Vector<>();
127+
packageList = new Vector<>();
117128

118129
/* Following code is from listPackages() of com.android.sdklib.tool.SdkManagerCli
119130
with some changes
@@ -140,11 +151,12 @@ public Channel getChannel() {
140151
}), null);
141152

142153
RepositoryPackages packages = mRepoManager.getPackages();
143-
HashMap<String, String[]> local = new HashMap();
144-
for (LocalPackage pck : packages.getLocalPackages().values()) {
145-
String path = pck.getPath();
146-
String name = pck.getDisplayName();
147-
String ver = pck.getVersion().toString();
154+
HashMap<String, List<String>> installed = new HashMap<String, List<String>>();
155+
for (LocalPackage local : packages.getLocalPackages().values()) {
156+
String path = local.getPath();
157+
String name = local.getDisplayName();
158+
String ver = local.getVersion().toString();
159+
// Remove version from the display name
148160
int rev = name.indexOf(", rev");
149161
if (-1 < rev) {
150162
name = name.substring(0, rev);
@@ -157,74 +169,32 @@ public Channel getChannel() {
157169
name = name.substring(0, pos).trim();
158170
}
159171
}
160-
local.put(path, new String[]{name, ver});
172+
installed.put(path, Arrays.asList(name, ver));
161173
}
162174

163-
HashMap<String, String[]> update = new HashMap();
164-
for (UpdatablePackage pck : packages.getUpdatedPkgs()) {
165-
String path = pck.getPath();
166-
String inst = pck.getLocal().getVersion().toString();
167-
String updt = pck.getRemote().getVersion().toString();
168-
update.put(path, new String[]{inst, updt});
175+
HashMap<String, List<String>> updated = new HashMap<String, List<String>>();
176+
for (UpdatablePackage update : packages.getUpdatedPkgs()) {
177+
String path = update.getPath();
178+
String loc = update.getLocal().getVersion().toString();
179+
String rem = update.getRemote().getVersion().toString();
180+
updated.put(path, Arrays.asList(loc, rem));
169181
}
170182

171-
for (String path: local.keySet()) {
183+
for (String path: installed.keySet()) {
172184
Vector<String> info = new Vector<>();
173-
String[] locInfo = local.get(path);
174-
info.add(locInfo[0]);
175-
info.add(locInfo[1]);
176-
if (update.containsKey(path)) {
177-
String[] updInfo = update.get(path);
178-
info.add(updInfo[1]);
185+
List<String> locInfo = installed.get(path);
186+
info.add(locInfo.get(0));
187+
info.add(locInfo.get(1));
188+
if (updated.containsKey(path)) {
189+
String upVer = updated.get(path).get(1);
190+
info.add(upVer);
179191
numUpdates++;
180192
} else {
181193
info.add("");
182194
}
183-
installedList.add(info);
195+
packageList.add(info);
184196
}
185197

186-
187-
/*
188-
for (LocalPackage local : packages.getLocalPackages().values()) {
189-
Vector<String> localPackages = new Vector<>();
190-
String name = local.getDisplayName();
191-
String ver = local.getVersion().toString();
192-
int rev = name.indexOf(", rev");
193-
if (-1 < rev) {
194-
name = name.substring(0, rev);
195-
}
196-
int maj = ver.indexOf(".");
197-
if (-1 < maj) {
198-
String major = ver.substring(0, maj);
199-
int pos = name.indexOf(major);
200-
if (-1 < pos) {
201-
name = name.substring(0, pos).trim();
202-
}
203-
}
204-
205-
localPackages.add(local.getPath());
206-
localPackages.add(local.getVersion().toString());
207-
localPackages.add(name);
208-
209-
System.out.println("*************************");
210-
System.out.println(local.getDisplayName());
211-
System.out.println(name);
212-
213-
214-
installedList.add(localPackages);
215-
}
216-
217-
for (UpdatablePackage update : packages.getUpdatedPkgs()) {
218-
Vector<String> updatePackages = new Vector<>();
219-
updatePackages.add(update.getPath());
220-
updatePackages.add(update.getLocal().getVersion().toString());
221-
updatePackages.add(update.getRemote().getVersion().toString());
222-
223-
updatesList.add(updatePackages);
224-
}
225-
*/
226-
227-
228198
return null;
229199
}
230200

@@ -235,14 +205,10 @@ protected void done() {
235205
try {
236206
get();
237207
firePropertyChange(PROPERTY_CHANGE_QUERY, "query", "SUCCESS");
238-
239-
if (installedList != null) {
240-
modelInstalled.setDataVector(installedList, columns);
241-
modelInstalled.fireTableDataChanged();
242-
243-
// modelUpdates.setDataVector(updatesList, columnsUpdates);
244-
// modelUpdates.fireTableDataChanged();
245-
208+
209+
if (packageList != null) {
210+
packageTable.setDataVector(packageList, columns);
211+
packageTable.fireTableDataChanged();
246212
}
247213
} catch (InterruptedException | CancellationException e) {
248214
this.cancel(false);
@@ -307,7 +273,6 @@ protected void done() {
307273

308274
try {
309275
get();
310-
// actionButton.setVisible(false); //Hide button after update completes
311276
actionButton.setEnabled(false);
312277
status.setText("Refreshing packages...");
313278

@@ -366,19 +331,12 @@ private void createLayout() {
366331

367332
/* Packages panel */
368333
JPanel packagesPanel = new JPanel();
369-
// packagesPanel.setBorder(BorderFactory.createTitledBorder(
370-
// BorderFactory.createEtchedBorder(), "Packages"));
371334

372335
BoxLayout boxLayout = new BoxLayout(packagesPanel, BoxLayout.Y_AXIS);
373336
packagesPanel.setLayout(boxLayout);
374337

375-
/* Installed Packages panel */
376-
// JPanel installedPanel = new JPanel(new BorderLayout());
377-
// installedPanel.setBorder(BorderFactory.createTitledBorder(
378-
// BorderFactory.createEtchedBorder(), "Installed"));
379-
380-
//Installed Packages table
381-
modelInstalled = new DefaultTableModel(15, columns.size()) {
338+
// Packages table
339+
packageTable = new DefaultTableModel(DEF_NUM_ROWS, columns.size()) {
382340
@Override
383341
public boolean isCellEditable(int row, int column) {
384342
return false;
@@ -389,53 +347,21 @@ public Class<?> getColumnClass(int columnIndex) {
389347
return String.class;
390348
}
391349
};
392-
JTable tInstalled = new JTable(modelInstalled) {
350+
351+
table = new JTable(packageTable) {
393352
@Override
394353
public String getColumnName(int column) {
395354
return columns.get(column);
396355
}
397-
};
398-
tInstalled.setFillsViewportHeight(true);
399-
400-
tInstalled.setPreferredScrollableViewportSize(new Dimension(tInstalled.getPreferredSize().width,
401-
15 * tInstalled.getRowHeight()));
402-
packagesPanel.add(new JScrollPane(tInstalled));
403-
404-
405-
/* Updates panel */
406-
// JPanel updatesPanel = new JPanel(new BorderLayout());
407-
// updatesPanel.setBorder(BorderFactory.createTitledBorder(
408-
// BorderFactory.createEtchedBorder(), "Available Updates"));
409-
410-
/*
411-
//Updates table
412-
modelUpdates = new DefaultTableModel(5, columnClassU.length) {
413-
@Override
414-
public boolean isCellEditable(int row, int column) {
415-
return false;
416-
}
417-
418-
@Override
419-
public Class<?> getColumnClass(int columnIndex) {
420-
return columnClassU[columnIndex];
421-
}
422-
};
423-
JTable tUpdates = new JTable(modelUpdates) {
424-
@Override
425-
public String getColumnName(int column) {
426-
return columnsUpdates.get(column);
427-
}
428-
};
429-
tUpdates.setFillsViewportHeight(true);
430-
tUpdates.setPreferredScrollableViewportSize(new Dimension(tUpdates.getPreferredSize().width,
431-
5 * tUpdates.getRowHeight()));
432-
updatesPanel.add(new JScrollPane(tUpdates), BorderLayout.CENTER);
433-
*/
434-
435-
436-
437-
// packagesPanel.add(installedPanel);
438-
// packagesPanel.add(updatesPanel);
356+
};
357+
table.setFillsViewportHeight(true);
358+
table.setAutoResizeMode(JTable.AUTO_RESIZE_ALL_COLUMNS);
359+
Dimension dim = new Dimension(table.getColumnCount() * DEF_COL_WIDTH,
360+
table.getRowHeight() * DEF_NUM_ROWS);
361+
table.setPreferredSize(dim);
362+
table.setPreferredScrollableViewportSize(dim);
363+
364+
packagesPanel.add(new JScrollPane(table));
439365

440366
JPanel controlPanel = new JPanel();
441367
GridBagLayout gridBagLayout = new GridBagLayout();
@@ -473,7 +399,6 @@ public void actionPerformed(ActionEvent e) {
473399
}
474400
}
475401
});
476-
// actionButton.setVisible(false);
477402
actionButton.setEnabled(false);
478403
gbc.gridx = 1;
479404
gbc.gridy = 0;
@@ -498,6 +423,7 @@ public void actionPerformed(ActionEvent actionEvent) {
498423
controlPanel.add(closeButton, gbc);
499424

500425
verticalBox.add(packagesPanel);
426+
verticalBox.add(Box.createVerticalStrut(13));
501427
verticalBox.add(controlPanel);
502428
pack();
503429

@@ -515,10 +441,10 @@ public void windowClosing(WindowEvent e) {
515441
});
516442

517443
setLocationRelativeTo(null);
518-
setResizable(true);
444+
setResizable(false);
519445
setVisible(true);
520446
}
521-
447+
522448
public void cancelTasks() {
523449
queryTask.cancel(true);
524450
if (downloadTaskRunning) {

0 commit comments

Comments
 (0)