package husacct.control.presentation.workspace; import husacct.ServiceProvider; import husacct.common.locale.ILocaleService; import husacct.control.presentation.workspace.savers.SaverPanel; import husacct.control.presentation.workspace.savers.SaverPanelFactory; import husacct.control.task.MainController; import husacct.control.task.resources.ResourceFactory; import java.awt.Dimension; import java.awt.FlowLayout; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.util.HashMap; import java.util.List; import javax.swing.BoxLayout; import javax.swing.JButton; import javax.swing.JDialog; import javax.swing.JList; import javax.swing.JPanel; import javax.swing.JScrollPane; import javax.swing.ListSelectionModel; @SuppressWarnings("serial") public class SaveWorkspaceDialog extends JDialog{ String selectedLoader = "Xml"; private MainController mainController; private JList<Object> saverList; private List<String> saverListData; private JButton saveButton, cancelButton; private JPanel saverPanelContainer; private JPanel savePanel; private SaverPanel selectedSaverPanel; private ILocaleService localeService = ServiceProvider.getInstance().getLocaleService(); public SaveWorkspaceDialog(MainController mainController){ super(mainController.getMainGui(), true); this.setTitle(localeService.getTranslatedString("SaveWorkspace")); this.mainController = mainController; this.setup(); this.setSavers(); this.addComponents(); this.setListeners(); this.setResizable(true); ServiceProvider.getInstance().getControlService().centerDialog(this); this.setVisible(true); } private void setup(){ this.setDefaultCloseOperation(DISPOSE_ON_CLOSE); this.setSize(new Dimension(400, 380)); } private void setSavers(){ List<String> savers = ResourceFactory.getAvailableResources(); saverListData = savers; } private void addComponents(){ saverList = new JList<Object>(saverListData.toArray()); saverList.setSelectionMode(ListSelectionModel.SINGLE_INTERVAL_SELECTION); saverList.setLayoutOrientation(JList.VERTICAL); saverList.setVisibleRowCount(-1); JScrollPane listScrollPane = new JScrollPane(saverList); listScrollPane.setAlignmentX(LEFT_ALIGNMENT); savePanel = new JPanel(); savePanel.setLayout(new BoxLayout(savePanel, BoxLayout.Y_AXIS)); saverPanelContainer = new JPanel(); saverPanelContainer.setPreferredSize(new Dimension(350, 300)); JPanel buttonsPanel = new JPanel(new FlowLayout(FlowLayout.RIGHT)); saveButton = new JButton(localeService.getTranslatedString("SaveButton")); cancelButton = new JButton(localeService.getTranslatedString("CancelButton")); saveButton.setEnabled(true); getRootPane().setDefaultButton(saveButton); buttonsPanel.add(saveButton); buttonsPanel.add(cancelButton); savePanel.add(saverPanelContainer); savePanel.add(buttonsPanel); add( savePanel); selectedSaverPanel = SaverPanelFactory.get(selectedLoader); saverPanelContainer.removeAll(); saverPanelContainer.add(selectedSaverPanel); validate(); } private void setListeners(){ cancelButton.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent e) { dispose(); } }); saveButton.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent e) { if(selectedSaverPanel.validateData() && saveWorkspace()){ dispose(); } } }); } private boolean saveWorkspace(){ HashMap<String, Object> data = selectedSaverPanel.getData(); HashMap<String, Object> config = selectedSaverPanel.getConfig(); return mainController.getWorkspaceController().saveWorkspace(selectedLoader, data, config); } }