Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -19,4 +19,5 @@ public class Messages {
protected String enableDebugToSeeExamplesList;
protected String separator;
protected String outputTitle;
protected String preserveLog;
}
Original file line number Diff line number Diff line change
Expand Up @@ -8,21 +8,25 @@
import java.io.IOException;

import javax.imageio.ImageIO;
import javax.swing.BoxLayout;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JSeparator;
import javax.swing.JTextArea;
import javax.swing.JCheckBox;
import javax.swing.SwingConstants;

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.ApplicationContext;
import org.springframework.stereotype.Component;

import com.penapereira.example.constructs.app.properties.ApplicationProperties;
import com.penapereira.example.constructs.app.properties.Messages;
import com.penapereira.example.constructs.app.ExampleRunnerInterface;

@Component
public class MainWindow extends JFrame {
Expand All @@ -31,13 +35,19 @@ public class MainWindow extends JFrame {

private static final long serialVersionUID = 1L;

private JTextArea outputArea;
private JTextArea outputArea;
private JCheckBox preserveLogCheck;

@Autowired
Messages msg;

@Autowired
ApplicationProperties props;
@Autowired
ApplicationProperties props;

@Autowired
ApplicationContext ctx;

private java.util.Map<String, ExampleRunnerInterface> examples;

public MainWindow() {
super();
Expand Down Expand Up @@ -73,19 +83,28 @@ private void loadIcon() {
private JPanel getMainComponent() {
JPanel mainPanel = new JPanel(new BorderLayout());

JPanel infoPanel = new JPanel(new GridLayout(4, 1));
createCenteredTitle(msg.getGreeting(), infoPanel);
createCenteredLabelOnPanel(msg.getInfo(), infoPanel);
createCenteredHyperlink(msg.getHomeUrl(), infoPanel);
mainPanel.add(infoPanel, BorderLayout.NORTH);
JPanel infoPanel = new JPanel(new GridLayout(4, 1));
createCenteredTitle(msg.getGreeting(), infoPanel);
createCenteredLabelOnPanel(msg.getInfo(), infoPanel);
createCenteredHyperlink(msg.getHomeUrl(), infoPanel);
mainPanel.add(infoPanel, BorderLayout.NORTH);

mainPanel.add(createExamplesPanel(), BorderLayout.WEST);

outputArea = new JTextArea(10, 40);
outputArea.setEditable(false);
JScrollPane scrollPane = new JScrollPane(outputArea);
scrollPane.setBorder(javax.swing.BorderFactory.createTitledBorder(msg.getOutputTitle()));
mainPanel.add(scrollPane, BorderLayout.CENTER);
outputArea = new JTextArea(10, 40);
outputArea.setEditable(false);
JScrollPane scrollPane = new JScrollPane(outputArea);
scrollPane.setBorder(javax.swing.BorderFactory.createTitledBorder(msg.getOutputTitle()));

return mainPanel;
preserveLogCheck = new JCheckBox(msg.getPreserveLog());

JPanel outputPanel = new JPanel(new BorderLayout());
outputPanel.add(preserveLogCheck, BorderLayout.NORTH);
outputPanel.add(scrollPane, BorderLayout.CENTER);

mainPanel.add(outputPanel, BorderLayout.CENTER);

return mainPanel;
}

private void createCenteredTitle(String text, JPanel panel) {
Expand Down Expand Up @@ -117,4 +136,55 @@ public void appendOutput(String text) {
}
}

private JPanel createExamplesPanel() {
examples = ctx.getBeansOfType(ExampleRunnerInterface.class);

JPanel panel = new JPanel();
panel.setLayout(new BoxLayout(panel, BoxLayout.Y_AXIS));
panel.setBorder(javax.swing.BorderFactory.createTitledBorder(msg.getExamplesFound()));

javax.swing.JButton allButton = new javax.swing.JButton("Run All");
allButton.addActionListener(e -> runAllExamples());
panel.add(allButton);

examples.forEach((name, runner) -> {
String clean = name.replaceFirst("ExampleRunner", "");
javax.swing.JButton btn = new javax.swing.JButton(clean);
btn.addActionListener(e -> runExample(runner));
panel.add(btn);
});

return panel;
}

private void runExample(ExampleRunnerInterface runner) {
if (!preserveLogCheck.isSelected()) {
outputArea.setText("");
}
new Thread(() -> {
try {
log.trace(msg.getSeparator());
runner.runExample();
} catch (Exception e) {
log.error("Error executing example", e);
}
}).start();
}

private void runAllExamples() {
if (!preserveLogCheck.isSelected()) {
outputArea.setText("");
}
new Thread(() -> {
examples.values().forEach(r -> {
try {
log.trace(msg.getSeparator());
r.runExample();
} catch (Exception e) {
log.error("Error executing example", e);
}
});
}).start();
}

}
1 change: 1 addition & 0 deletions src/main/resources/application.properties
Original file line number Diff line number Diff line change
Expand Up @@ -19,5 +19,6 @@ msg.examplesFound=Implemented examples found
msg.enableTraceToSeeExamplesDetails= [*] Please enable TRACE log level if you want to see examples output
msg.enableDebugToSeeExamplesList= [*] Please enable DEBUG log level if you want to see the examples list
msg.outputTitle=Output
msg.preserveLog=Preserve log

msg.separator=-------------------------------------------------------------