shutdownHook.run();
break;
}
- if (words.getFirst().equalsIgnoreCase("info") && (words.size() == 3) && words.get(1).equalsIgnoreCase("window")) {
- var windowName = words.get(2);
- stream(Window.getWindows()).filter(window -> window.getName().equals(windowName))
- .forEach(window -> writeLine.accept(createMessage(getComponentObject(window).put("info", "window"))));
+ if (words.getFirst().equalsIgnoreCase("list") && (words.size() > 1)) {
+ if (words.get(1).equalsIgnoreCase("windows")) {
+ var listEvent = objectMapper.createObjectNode().put("list", "windows");
+ var windowNode = listEvent.putArray("windows");
+ windows.values().stream()
+ .map(this::getComponentObject)
+ .forEach(windowNode::add);
+ writeLine.accept(createMessage(listEvent));
+ }
}
}
} finally {
}));
}
+ @Test
+ @Timeout(value = 5, unit = TimeUnit.SECONDS, threadMode = SEPARATE_THREAD)
+ public void serverSendsInformationAboutAllWindows() throws Exception {
+ SwingUtilities.invokeAndWait(() -> {
+ var window = new Window(null);
+ var mainPanel = new JPanel(new BorderLayout());
+ mainPanel.add(new JLabel("Label"), BorderLayout.NORTH);
+ mainPanel.add(new JButton("Button"), BorderLayout.SOUTH);
+ window.add(mainPanel);
+ window.pack();
+ window.setVisible(true);
+ var frame = new Frame("Test Frame");
+ frame.setVisible(true);
+ });
+ try (var server = new Server()) {
+ server.start();
+ server.waitForNextScan();
+ createConnection(server, verifyConnectedEvent((reader, ready, writer) -> {
+ writer.accept("list windows");
+ var reply = objectMapper.readTree(reader.get());
+ assertThat(reply, jsonObject().where("list", jsonText("windows"))
+ .where("windows", jsonArray(containsInAnyOrder(
+ jsonObject().where("id", jsonInt(anything())).where("type", jsonText("java.awt.Frame")).where("title", jsonText("Test Frame")),
+ jsonObject().where("id", jsonInt(anything()))
+ .where("children", jsonArray(contains(jsonObject().where("type", jsonText("javax.swing.JPanel"))
+ .where("children", jsonArray(containsInAnyOrder(
+ jsonObject().where("type", jsonText("javax.swing.JLabel")),
+ jsonObject().where("type", jsonText("javax.swing.JButton")))))))))))
+ );
+ }));
+ }
+ }
+
@BeforeEach
@AfterEach
public void removeAllWindows() throws Exception {