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.ActionEvent;
28 import java.awt.event.ActionListener;
29 import java.awt.event.WindowEvent;
30 import java.awt.event.WindowListener;
31 import javax.swing.AbstractButton;
32 import javax.swing.BorderFactory;
33 import javax.swing.Box;
34 import javax.swing.BoxLayout;
35 import javax.swing.JButton;
36 import javax.swing.JDialog;
37 import javax.swing.JLabel;
38 import javax.swing.JPanel;
39 import javax.swing.JScrollPane;
40 import javax.swing.JTextArea;
41 import javax.swing.JViewport;
42 import javax.swing.WindowConstants;
43 import org.jetbrains.annotations.NotNull;
72 public static boolean askConfirmErrors(@NotNull
final String errors, @NotNull
final Component parent) {
73 final JDialog dialog =
new JDialog((Frame)
null,
"Syntax Errors",
true);
74 dialog.setDefaultCloseOperation(WindowConstants.DO_NOTHING_ON_CLOSE);
76 final JPanel mainPanel =
new JPanel();
77 mainPanel.setLayout(
new BoxLayout(mainPanel, BoxLayout.Y_AXIS));
78 final Container headerPanel =
new JPanel(
new GridLayout(2, 1));
79 final Container buttonPanel =
new JPanel(
new FlowLayout(FlowLayout.CENTER));
82 final Component header1 =
new JLabel(
"The following lines from the archetype text appear to be wrong.");
83 final Component header2 =
new JLabel(
"They do not match the type definitions:");
84 headerPanel.add(header1);
85 headerPanel.add(header2);
88 final JTextArea textArea =
new JTextArea(errors, 7, 25);
89 textArea.setBorder(BorderFactory.createEmptyBorder(1, 4, 0, 0));
90 final JScrollPane scrollPane =
new JScrollPane(textArea);
91 scrollPane.getViewport().setScrollMode(JViewport.SIMPLE_SCROLL_MODE);
94 final AbstractButton dumpButton =
new JButton(
"Dump All Errors");
95 final AbstractButton keepButton =
new JButton(
"Keep Above Text");
96 buttonPanel.add(dumpButton);
97 buttonPanel.add(keepButton);
99 final boolean[] result = {
true };
102 final ActionListener actionListener =
new ActionListener() {
105 public void actionPerformed(@NotNull
final ActionEvent e) {
106 result[0] = e.getSource() == keepButton;
111 keepButton.addActionListener(actionListener);
112 dumpButton.addActionListener(actionListener);
113 final WindowListener windowListener =
new WindowListener() {
116 public void windowOpened(@NotNull
final WindowEvent e) {
120 public void windowClosing(@NotNull
final WindowEvent e) {
126 public void windowClosed(@NotNull
final WindowEvent e) {
130 public void windowIconified(@NotNull
final WindowEvent e) {
134 public void windowDeiconified(@NotNull
final WindowEvent e) {
138 public void windowActivated(@NotNull
final WindowEvent e) {
142 public void windowDeactivated(@NotNull
final WindowEvent e) {
146 dialog.addWindowListener(windowListener);
149 mainPanel.setBorder(BorderFactory.createEmptyBorder(10, 10, 10, 10));
150 mainPanel.add(headerPanel);
151 mainPanel.add(Box.createVerticalStrut(10));
152 mainPanel.add(scrollPane);
153 mainPanel.add(Box.createVerticalStrut(10));
154 mainPanel.add(buttonPanel);
156 dialog.getContentPane().add(mainPanel);
160 dialog.setLocationRelativeTo(parent);
161 dialog.setVisible(
true);