001package arcommon.ui.window;
002
003import java.awt.BorderLayout;
004import java.awt.Component;
005import java.awt.event.ActionEvent;
006import java.awt.event.ActionListener;
007
008import javax.swing.JButton;
009
010import arcommon.ui.component.OkCancelButtonBarJComponent;
011
012public abstract class AbstractOKCancelSettingsJFrame extends AbstractSettingsJFrame {
013
014    private OkCancelButtonBarJComponent okCancelButtonBarJComponent;
015    private boolean okPressed;
016    
017    public AbstractOKCancelSettingsJFrame(String title) {
018        super(title);
019    }
020
021    protected void createComponents() {
022        getContentPane().setLayout(new BorderLayout());
023        
024        okCancelButtonBarJComponent = new OkCancelButtonBarJComponent() {
025            public void eventOkActionPerformed(ActionEvent e) {
026                pressOk();
027            }
028
029            public void eventCancelActionPerformed(ActionEvent e) {
030                okPressed = false;
031                dispose();
032            }
033            
034            private static final long serialVersionUID = 2398287437510581494L;
035        };
036        
037        getRootPane().setDefaultButton(okCancelButtonBarJComponent.getOkButton());
038
039        getContentPane().add(okCancelButtonBarJComponent, BorderLayout.SOUTH);
040        
041        getContentPane().add(createCenterComponent(), BorderLayout.CENTER);
042    }
043    
044    protected abstract Component createCenterComponent();
045    
046    public void addApplyButton() {
047        JButton jButton = new JButton("Apply");
048        jButton.addActionListener(new ActionListener() {
049            public void actionPerformed(ActionEvent e) {
050                saveIfValid();
051            }
052        });
053        addExtraButton(jButton);
054    }
055    
056    public void addExtraButton(JButton jbutton) {
057        okCancelButtonBarJComponent.addExtraButton(jbutton);
058    }
059    
060    public void pressOk() {
061        if (validateDialogData()) {
062            save();
063            okPressed = true;
064            dispose();
065        }
066    }
067
068    public boolean getOkPressed() {
069        return okPressed;
070    }
071    
072    protected boolean validateDialogData() {
073        return true;
074    }
075
076    public void saveIfValid() {
077        if (validateDialogData()) {
078            save();
079        }
080    }
081
082    protected abstract void save();
083    
084    private static final long serialVersionUID = -2507879731713986317L;
085
086}