protected void initScreen() { display = NewtFactory.createDisplay(null); display.addReference(); screen = NewtFactory.createScreen(display, 0); screen.addReference(); monitors = new ArrayList<MonitorDevice>(); GraphicsEnvironment environment = GraphicsEnvironment.getLocalGraphicsEnvironment(); GraphicsDevice[] awtDevices = environment.getScreenDevices(); List<MonitorDevice> newtDevices = screen.getMonitorDevices(); // AWT and NEWT name devices in different ways, depending on the platform, // and also appear to order them in different ways. The following code // tries to address the differences. if (PApplet.platform == PConstants.LINUX) { for (GraphicsDevice device : awtDevices) { String did = device.getIDstring(); String[] parts = did.split("\\."); String id1 = ""; if (1 < parts.length) { id1 = parts[1].trim(); } MonitorDevice monitor = null; int id0 = newtDevices.size() > 0 ? newtDevices.get(0).getId() : 0; for (int i = 0; i < newtDevices.size(); i++) { MonitorDevice mon = newtDevices.get(i); String mid = String.valueOf(mon.getId() - id0); if (id1.equals(mid)) { monitor = mon; break; } } if (monitor != null) { monitors.add(monitor); } } } else { // All the other platforms... for (GraphicsDevice device : awtDevices) { String did = device.getIDstring(); String[] parts = did.split("Display"); String id1 = ""; if (1 < parts.length) { id1 = parts[1].trim(); } MonitorDevice monitor = null; for (int i = 0; i < newtDevices.size(); i++) { MonitorDevice mon = newtDevices.get(i); String mid = String.valueOf(mon.getId()); if (id1.equals(mid)) { monitor = mon; break; } } if (monitor == null) { // Didn't find a matching monitor, try using less stringent id check for (int i = 0; i < newtDevices.size(); i++) { MonitorDevice mon = newtDevices.get(i); String mid = String.valueOf(mon.getId()); if (-1 < did.indexOf(mid)) { monitor = mon; break; } } } if (monitor != null) { monitors.add(monitor); } } } }
public AWTGraphicsDevice(GraphicsDevice device, int unitID) { super(NativeWindowFactory.TYPE_AWT, device.getIDstring(), unitID); this.device = device; }