package org.korsakow.ide.ui.dialogs;
import java.awt.Dimension;
import javax.swing.BorderFactory;
import javax.swing.Box;
import javax.swing.BoxLayout;
import javax.swing.JCheckBox;
import javax.swing.JComponent;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JTextPane;
import org.korsakow.ide.util.UIHelper;
public class AlertDialog extends JPanel
{
public static JComponent createMessage(String message)
{
JTextPane textField = new JTextPane();
textField.setBackground(new JPanel().getBackground());
textField.setEditable(false);
textField.setBorder(BorderFactory.createEmptyBorder(5, 5, 5, 5));
// textField.setMaximumSize(new Dimension(640, 100));
textField.setText(message);
Dimension prefSize = new Dimension(400, 100);
if (new JLabel(message).getPreferredSize().width < prefSize.width) {
prefSize = textField.getPreferredSize();
} else {
prefSize.height += 30;
}
prefSize.height = Math.max(prefSize.height, 50);
textField.setPreferredSize(prefSize);
return textField;
}
private JCheckBox dontShowAgainCheck;
private JComponent message;
public AlertDialog(JComponent message)
{
setLayout(new BoxLayout(this, BoxLayout.Y_AXIS));
add(this.message = message);
add(Box.createVerticalStrut(20));
final JPanel panel = UIHelper.createHorizontalFlowLayoutPanel(dontShowAgainCheck = new JCheckBox("Do not show again"));
add(panel);
panel.setBorder(BorderFactory.createEmptyBorder(0, 5, 0, 5));
dontShowAgainCheck.setVisible(false);
setPreferredSize(new Dimension(640, 240));
final Dimension maxSize = new Dimension(640, 480);
setMaximumSize(maxSize);
final Dimension prefSize = message.getPreferredSize();
prefSize.width = Math.min(prefSize.width, maxSize.width);
prefSize.height += dontShowAgainCheck.getPreferredSize().height;
prefSize.height = Math.min(prefSize.height, maxSize.height);
setPreferredSize(prefSize);
}
public boolean isOneTimeDialog() {
return dontShowAgainCheck.isVisible();
}
public boolean getDontShowAgain() {
return dontShowAgainCheck.isSelected();
}
public void setDontShowAgain(boolean dontshowagain) {
dontShowAgainCheck.setSelected(dontshowagain);
}
public void setDontShowAgainVisible(boolean visible) {
dontShowAgainCheck.setVisible(visible);
}
}