package husacct.control.presentation.workspace; import husacct.ServiceProvider; import husacct.common.locale.ILocaleService; import husacct.control.presentation.workspace.loaders.LoaderPanel; import husacct.control.presentation.workspace.loaders.LoaderPanelFactory; import husacct.control.task.MainController; import java.awt.Dimension; import java.awt.FlowLayout; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.util.HashMap; import javax.swing.BoxLayout; import javax.swing.JButton; import javax.swing.JDialog; import javax.swing.JPanel; @SuppressWarnings("serial") public class OpenWorkspaceDialog extends JDialog{ private String selectedLoader = "Xml"; private MainController mainController; private JButton openButton, cancelButton; private JPanel loaderPanelContainer; private JPanel openPanel; private LoaderPanel selectedLoaderPanel; private ILocaleService localeService = ServiceProvider.getInstance().getLocaleService(); public OpenWorkspaceDialog(MainController mainController){ super(mainController.getMainGui(), true); this.setTitle(localeService.getTranslatedString("OpenWorkspace")); this.mainController = mainController; this.setup(); 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, 250)); } private void addComponents(){ openPanel = new JPanel(); openPanel.setLayout(new BoxLayout(openPanel, BoxLayout.Y_AXIS)); loaderPanelContainer = new JPanel(); loaderPanelContainer.setPreferredSize(new Dimension(350, 200)); JPanel buttonsPanel = new JPanel(new FlowLayout(FlowLayout.CENTER)); openButton = new JButton(localeService.getTranslatedString("OpenButton")); cancelButton = new JButton(localeService.getTranslatedString("CancelButton")); openButton.setEnabled(true); getRootPane().setDefaultButton(openButton); buttonsPanel.add(openButton); buttonsPanel.add(cancelButton); openPanel.add(loaderPanelContainer); openPanel.add(buttonsPanel); add(openPanel); selectedLoaderPanel = LoaderPanelFactory.get(selectedLoader); loaderPanelContainer.removeAll(); loaderPanelContainer.add(selectedLoaderPanel); } private void setListeners(){ cancelButton.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent e) { dispose(); } }); openButton.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent e) { if(selectedLoaderPanel.validateData() && loadWorkspace()){ dispose(); mainController.getViewController().showDefineArchitecture(); } } }); } private boolean loadWorkspace(){ HashMap<String, Object> data = selectedLoaderPanel.getData(); return mainController.getWorkspaceController().loadWorkspace(selectedLoader, data); } }