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}