/*
Code revised from Desktop Java Live:
http://www.sourcebeat.com/downloads/
*/
import java.awt.event.ActionEvent;
import javax.swing.AbstractAction;
import javax.swing.BorderFactory;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.JTextField;
import com.jgoodies.forms.builder.DefaultFormBuilder;
import com.jgoodies.forms.layout.FormLayout;
public class ErrorDialogExample extends JPanel {
JTextField nameField;
JTextField siteField;
JTextField feedField;
Feed feed;
public ErrorDialogExample() {
DefaultFormBuilder formBuilder = new DefaultFormBuilder(new FormLayout(""));
formBuilder.setBorder(BorderFactory.createEmptyBorder(5, 5, 5, 5));
formBuilder.appendColumn("right:pref");
formBuilder.appendColumn("3dlu");
formBuilder.appendColumn("fill:p:g");
this.nameField = new JTextField();
formBuilder.append("Name:", this.nameField);
this.siteField = new JTextField();
formBuilder.append("Site Url:", this.siteField);
this.feedField = new JTextField();
formBuilder.append("Feed Url:", this.feedField);
formBuilder.append(new JButton(new ShowFeedInformationAction()), 3);
createFeed();
initializeFormElements();
add(formBuilder.getPanel());
}
private void createFeed() {
this.feed = new Feed();
this.feed.setName("ClientJava.com");
this.feed.setSiteUrl("http://www.clientjava.com/blog");
this.feed.setFeedUrl("http://www.clientjava.com/blog/rss.xml");
}
private void initializeFormElements() {
this.nameField.setText(this.feed.getName());
this.siteField.setText(this.feed.getSiteUrl());
this.feedField.setText(this.feed.getFeedUrl());
}
private void synchFormAndFeed() {
this.feed.setName(this.nameField.getText());
this.feed.setSiteUrl(this.siteField.getText());
this.feed.setFeedUrl(this.feedField.getText());
}
private boolean validateFeed() {
boolean valid = true;
if (this.nameField.getText().trim().length() == 0) {
JOptionPane.showMessageDialog(null, "Name must not be empty.", "Error", JOptionPane.ERROR_MESSAGE);
valid = false;
}
if (this.siteField.getText().trim().length() == 0) {
JOptionPane.showMessageDialog(null, "Site URL must not be empty.", "Error", JOptionPane.ERROR_MESSAGE);
valid = false;
}
if (this.feedField.getText().trim().length() == 0) {
JOptionPane.showMessageDialog(null, "Feed URL must not be empty.", "Error", JOptionPane.ERROR_MESSAGE);
valid = false;
}
return valid;
}
private Feed getFeed() {
return this.feed;
}
private class ShowFeedInformationAction extends AbstractAction {
public ShowFeedInformationAction() {
super("Show Feed Information");
}
public void actionPerformed(ActionEvent event) {
if (validateFeed()) {
synchFormAndFeed();
StringBuffer message = new StringBuffer();
message.append("<html>");
message.append("<b>Name:</b> ");
message.append(getFeed().getName());
message.append("<br>");
message.append("<b>Site URL:</b> ");
message.append(getFeed().getSiteUrl());
message.append("<br>");
message.append("<b>Feed URL:</b> ");
message.append(getFeed().getFeedUrl());
message.append("</html>");
JOptionPane.showMessageDialog(null, message.toString());
}
}
}
public static void main(String[] a){
JFrame f = new JFrame("Error Dialog Example");
f.setDefaultCloseOperation(2);
f.add(new ErrorDialogExample());
f.pack();
f.setVisible(true);
}
}
|