package com.floreantpos.config.ui; import java.awt.Frame; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.util.ArrayList; import java.util.List; import javax.swing.JButton; import javax.swing.JPanel; import javax.swing.JSeparator; import javax.swing.JTabbedPane; import javax.swing.event.ChangeEvent; import javax.swing.event.ChangeListener; import net.miginfocom.swing.MigLayout; import com.floreantpos.PosException; import com.floreantpos.ui.dialog.POSDialog; import com.floreantpos.ui.dialog.POSMessageDialog; public class ConfigurationDialog extends POSDialog implements ChangeListener, ActionListener { private static final String OK = "Ok"; private static final String CANCEL = "Cancel"; private JTabbedPane tabbedPane = new JTabbedPane(); private List<ConfigurationView> views = new ArrayList<ConfigurationView>(); public ConfigurationDialog(Frame parent) { super(parent, false); setLayout(new MigLayout("","","[fill,grow][]")); add(tabbedPane , "grow"); RestaurantConfigurationView restaurantConfigurationView = new RestaurantConfigurationView(); addView(restaurantConfigurationView); //PrintConfigurationView printConfigurationView = new PrintConfigurationView(); addView(new PrintConfigurationView()); DrawerPullConfigurationView drawerPullConfigurationView = new DrawerPullConfigurationView(); addView(drawerPullConfigurationView); tabbedPane.addChangeListener(this); JPanel bottomPanel = new JPanel(new MigLayout("fillx")); bottomPanel.add(new JSeparator(), "span, grow"); JButton btnOk = new JButton(CANCEL); btnOk.addActionListener(this); bottomPanel.add(btnOk, "dock east, gaptop 5"); JButton btnCancel = new JButton(OK); btnCancel.addActionListener(this); bottomPanel.add(btnCancel, "dock east, gapright 5, gaptop 5"); add(bottomPanel, "newline,growx, gaptop 10"); setDefaultCloseOperation(DISPOSE_ON_CLOSE); } public void addView(ConfigurationView view) { tabbedPane.addTab(view.getName(), view); views.add(view); } @Override public void setVisible(boolean b) { super.setVisible(b); if(b) { stateChanged(null); } } public void stateChanged(ChangeEvent e) { ConfigurationView view = (ConfigurationView) tabbedPane.getSelectedComponent(); if(!view.isInitialized()) { try { view.initialize(); } catch (Exception e1) { POSMessageDialog.showError(this, POSMessageDialog.ERROR_MESSAGE, e1); } } } public void actionPerformed(ActionEvent e) { if(OK.equalsIgnoreCase(e.getActionCommand())) { try { for (ConfigurationView view : views) { if(view.isInitialized()) view.save(); } setCanceled(false); dispose(); } catch (PosException x) { POSMessageDialog.showError(this, x.getMessage()); } catch (Exception x) { POSMessageDialog.showError(this, POSMessageDialog.ERROR_MESSAGE, x); } } else if(CANCEL.equalsIgnoreCase(e.getActionCommand())) { setCanceled(true); dispose(); } } }