Skip to content

Commit 33912b4

Browse files
committed
Add DeviceSelector window and populate the list
1 parent d829658 commit 33912b4

File tree

3 files changed

+177
-20
lines changed

3 files changed

+177
-20
lines changed

src/processing/mode/android/AndroidEditor.java

Lines changed: 16 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -21,19 +21,16 @@
2121

2222
package processing.mode.android;
2323

24+
import processing.app.*;
25+
import processing.core.PApplet;
26+
import processing.mode.java.JavaEditor;
27+
28+
import javax.swing.*;
2429
import java.awt.event.ActionEvent;
2530
import java.awt.event.ActionListener;
2631
import java.io.File;
2732
import java.io.IOException;
2833

29-
import javax.swing.JMenu;
30-
import javax.swing.JMenuItem;
31-
32-
import processing.app.*;
33-
import processing.mode.java.JavaEditor;
34-
35-
import processing.core.PApplet;
36-
3734

3835
public class AndroidEditor extends JavaEditor {
3936
private AndroidMode androidMode;
@@ -114,15 +111,25 @@ public void actionPerformed(ActionEvent e) {
114111

115112
menu.addSeparator();
116113

117-
item = new JMenuItem("Signing Key Setup");
114+
/*item = new JMenuItem("Signing Key Setup");
118115
item.addActionListener(new ActionListener() {
119116
public void actionPerformed(ActionEvent e) {
120117
new Keys(AndroidEditor.this);
121118
}
122119
});
123120
item.setEnabled(false);
121+
menu.add(item); */
122+
123+
item = new JMenuItem("Device selector");
124+
item.addActionListener(new ActionListener() {
125+
public void actionPerformed(ActionEvent e) {
126+
new DeviceSelector();
127+
}
128+
});
124129
menu.add(item);
125130

131+
menu.addSeparator();
132+
126133
item = new JMenuItem("Android SDK Manager");
127134
item.addActionListener(new ActionListener() {
128135
public void actionPerformed(ActionEvent e) {
Lines changed: 136 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,136 @@
1+
package processing.mode.android;
2+
3+
import processing.app.Base;
4+
import processing.app.Preferences;
5+
6+
import javax.swing.*;
7+
import javax.swing.border.EmptyBorder;
8+
import java.awt.*;
9+
import java.awt.event.ActionEvent;
10+
import java.awt.event.ActionListener;
11+
12+
public class DeviceSelector extends JFrame {
13+
14+
JList list;
15+
16+
public DeviceSelector() {
17+
super("Android device selector");
18+
19+
createLayout();
20+
}
21+
22+
private void refreshList() {
23+
Devices devices = Devices.getInstance();
24+
java.util.List<Device> deviceList = devices.findMultiple(false);
25+
26+
String[] data = new String[deviceList.size()];
27+
for(int i = 0; i < deviceList.size(); i++) {
28+
data[i] = deviceList.get(0).toString();
29+
}
30+
31+
list.setListData(data);
32+
}
33+
34+
private void createLayout() {
35+
Container outer = getContentPane();
36+
outer.removeAll();
37+
38+
Box pain = Box.createVerticalBox();
39+
pain.setBorder(new EmptyBorder(13, 13, 13, 13));
40+
outer.add(pain);
41+
42+
list = new JList();
43+
list.setSelectionMode(ListSelectionModel.MULTIPLE_INTERVAL_SELECTION);
44+
list.setLayoutOrientation(JList.VERTICAL);
45+
list.setVisibleRowCount(-1);
46+
47+
refreshList();
48+
49+
JScrollPane listScroller = new JScrollPane(list);
50+
listScroller.setPreferredSize(new Dimension(250, 80));
51+
pain.add(listScroller);
52+
53+
// buttons
54+
JPanel buttons = new JPanel();
55+
// buttons.setPreferredSize(new Dimension(400, 35));
56+
// JPanel buttons = new JPanel() {
57+
// public Dimension getPreferredSize() {
58+
// return new Dimension(400, 35);
59+
// }
60+
// public Dimension getMinimumSize() {
61+
// return new Dimension(400, 35);
62+
// }
63+
// public Dimension getMaximumSize() {
64+
// return new Dimension(400, 35);
65+
// }
66+
// };
67+
68+
// Box buttons = Box.createHorizontalBox();
69+
buttons.setAlignmentX(LEFT_ALIGNMENT);
70+
JButton okButton = new JButton("OK");
71+
Dimension dim = new Dimension(Preferences.BUTTON_WIDTH,
72+
okButton.getPreferredSize().height);
73+
okButton.setPreferredSize(dim);
74+
okButton.addActionListener(new ActionListener() {
75+
public void actionPerformed(ActionEvent e) {
76+
setVisible(false);
77+
}
78+
});
79+
okButton.setEnabled(true);
80+
81+
JButton refreshButton = new JButton("Refresh");
82+
refreshButton.setPreferredSize(dim);
83+
refreshButton.addActionListener(new ActionListener() {
84+
public void actionPerformed(ActionEvent e) {
85+
refreshList();
86+
}
87+
});
88+
refreshButton.setEnabled(true);
89+
90+
JButton cancelButton = new JButton("Cancel");
91+
cancelButton.setPreferredSize(dim);
92+
cancelButton.addActionListener(new ActionListener() {
93+
public void actionPerformed(ActionEvent e) {
94+
setVisible(false);
95+
}
96+
});
97+
cancelButton.setEnabled(true);
98+
99+
// think different, biznatchios!
100+
if (Base.isMacOS()) {
101+
buttons.add(cancelButton);
102+
103+
buttons.add(refreshButton);
104+
// buttons.add(Box.createHorizontalStrut(8));
105+
buttons.add(okButton);
106+
} else {
107+
buttons.add(okButton);
108+
109+
buttons.add(refreshButton);
110+
// buttons.add(Box.createHorizontalStrut(8));
111+
buttons.add(cancelButton);
112+
}
113+
// buttons.setMaximumSize(new Dimension(300, buttons.getPreferredSize().height));
114+
pain.add(buttons);
115+
116+
JRootPane root = getRootPane();
117+
root.setDefaultButton(okButton);
118+
ActionListener disposer = new ActionListener() {
119+
public void actionPerformed(ActionEvent actionEvent) {
120+
setVisible(false);
121+
}
122+
};
123+
processing.app.Toolkit.registerWindowCloseKeys(root, disposer);
124+
processing.app.Toolkit.setIcon(this);
125+
126+
pack();
127+
128+
Dimension screen = processing.app.Toolkit.getScreenSize();
129+
Dimension windowSize = getSize();
130+
131+
setLocation((screen.width - windowSize.width) / 2,
132+
(screen.height - windowSize.height) / 2);
133+
134+
setVisible(true);
135+
}
136+
}

src/processing/mode/android/Devices.java

Lines changed: 25 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -1,20 +1,16 @@
11
package processing.mode.android;
22

3+
import processing.app.exec.ProcessResult;
4+
import processing.mode.android.EmulatorController.State;
5+
36
import java.io.IOException;
47
import java.util.ArrayList;
58
import java.util.Collections;
69
import java.util.List;
710
import java.util.Map;
8-
import java.util.concurrent.Callable;
9-
import java.util.concurrent.ConcurrentHashMap;
10-
import java.util.concurrent.ExecutorService;
11-
import java.util.concurrent.Executors;
12-
import java.util.concurrent.Future;
13-
import java.util.concurrent.FutureTask;
11+
import java.util.concurrent.*;
1412

1513
//import processing.app.EditorConsole;
16-
import processing.app.exec.ProcessResult;
17-
import processing.mode.android.EmulatorController.State;
1814

1915
/**
2016
* <pre> AndroidEnvironment env = AndroidEnvironment.getInstance();
@@ -152,23 +148,41 @@ private Device find(final boolean wantEmulator) {
152148
return null;
153149
}
154150

151+
public List<Device> findMultiple(final boolean wantEmulator) {
152+
List<Device> deviceList = new ArrayList<Device>();
153+
154+
refresh();
155+
synchronized (devices) {
156+
for (final Device device : devices.values()) {
157+
final boolean isEmulator = device.getId().contains("emulator");
158+
if ((isEmulator && wantEmulator) || (!isEmulator && !wantEmulator)) {
159+
deviceList.add(device);
160+
}
161+
}
162+
}
163+
164+
return deviceList;
165+
}
155166

156167
/**
157168
* @return the first Android hardware device known to be running, or null if there are none.
158169
*/
159170
public Future<Device> getHardware() {
171+
return getHardware(blockingGetHardware());
172+
}
173+
174+
public Future<Device> getHardware(final Device device) {
160175
final Callable<Device> androidFinder = new Callable<Device>() {
161176
public Device call() throws Exception {
162-
return blockingGetHardware();
177+
return device;
163178
}
164179
};
165180
final FutureTask<Device> task =
166-
new FutureTask<Device>(androidFinder);
181+
new FutureTask<Device>(androidFinder);
167182
deviceLaunchThread.execute(task);
168183
return task;
169184
}
170185

171-
172186
private final Device blockingGetHardware() {
173187
Device hardware = find(false);
174188
if (hardware != null) {

0 commit comments

Comments
 (0)