20 package net.sf.gridarta.gui.dialog.gameobjectattributes;
22 import java.awt.Component;
23 import java.awt.Container;
24 import java.awt.FlowLayout;
25 import java.awt.Frame;
26 import java.awt.GridLayout;
27 import java.awt.event.ActionListener;
28 import java.awt.event.WindowEvent;
29 import java.awt.event.WindowListener;
30 import javax.swing.AbstractButton;
31 import javax.swing.BorderFactory;
32 import javax.swing.Box;
33 import javax.swing.BoxLayout;
34 import javax.swing.JButton;
35 import javax.swing.JDialog;
36 import javax.swing.JLabel;
37 import javax.swing.JPanel;
38 import javax.swing.JScrollPane;
39 import javax.swing.JTextArea;
40 import javax.swing.JViewport;
41 import javax.swing.WindowConstants;
42 import org.jetbrains.annotations.NotNull;
72 final JDialog dialog =
new JDialog((Frame)
null,
"Syntax Errors",
true);
73 dialog.setDefaultCloseOperation(WindowConstants.DO_NOTHING_ON_CLOSE);
75 final JPanel mainPanel =
new JPanel();
76 mainPanel.setLayout(
new BoxLayout(mainPanel, BoxLayout.Y_AXIS));
77 final Container headerPanel =
new JPanel(
new GridLayout(2, 1));
78 final Container buttonPanel =
new JPanel(
new FlowLayout(FlowLayout.CENTER));
81 final Component header1 =
new JLabel(
"The following lines from the archetype text appear to be wrong.");
82 final Component header2 =
new JLabel(
"They do not match the type definitions:");
83 headerPanel.add(header1);
84 headerPanel.add(header2);
87 final JTextArea textArea =
new JTextArea(
errors, 7, 25);
88 textArea.setBorder(BorderFactory.createEmptyBorder(1, 4, 0, 0));
89 final JScrollPane scrollPane =
new JScrollPane(textArea);
90 scrollPane.getViewport().setScrollMode(JViewport.SIMPLE_SCROLL_MODE);
93 final AbstractButton dumpButton =
new JButton(
"Dump All Errors");
94 final AbstractButton keepButton =
new JButton(
"Keep Above Text");
95 buttonPanel.add(dumpButton);
96 buttonPanel.add(keepButton);
98 final boolean[] result = {
true };
101 final ActionListener actionListener = e -> {
102 result[0] = e.getSource() == keepButton;
105 keepButton.addActionListener(actionListener);
106 dumpButton.addActionListener(actionListener);
107 final WindowListener windowListener =
new WindowListener() {
110 public void windowOpened(@NotNull
final WindowEvent e) {
114 public void windowClosing(@NotNull
final WindowEvent e) {
120 public void windowClosed(@NotNull
final WindowEvent e) {
124 public void windowIconified(@NotNull
final WindowEvent e) {
128 public void windowDeiconified(@NotNull
final WindowEvent e) {
132 public void windowActivated(@NotNull
final WindowEvent e) {
136 public void windowDeactivated(@NotNull
final WindowEvent e) {
140 dialog.addWindowListener(windowListener);
143 mainPanel.setBorder(BorderFactory.createEmptyBorder(10, 10, 10, 10));
144 mainPanel.add(headerPanel);
145 mainPanel.add(Box.createVerticalStrut(10));
146 mainPanel.add(scrollPane);
147 mainPanel.add(Box.createVerticalStrut(10));
148 mainPanel.add(buttonPanel);
150 dialog.getContentPane().add(mainPanel);
154 dialog.setLocationRelativeTo(parent);
155 dialog.setVisible(
true);