package husacct.control.presentation.workspace.loaders; import husacct.ServiceProvider; import husacct.common.locale.ILocaleService; import husacct.control.presentation.util.FileDialog; import java.awt.Dimension; import java.awt.GridBagConstraints; import java.awt.GridBagLayout; import java.awt.Insets; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.io.File; import java.util.HashMap; import javax.swing.JButton; import javax.swing.JFileChooser; import javax.swing.JLabel; import javax.swing.JPanel; import javax.swing.JTextField; import javax.swing.filechooser.FileNameExtensionFilter; public class HusacctLoadPanel extends LoaderPanel{ private static final long serialVersionUID = 1L; private JLabel pathLabel,descriptionLabel; private JTextField pathText; private JButton browseButton; private static File selectedFile; private GridBagConstraints constraints; private ILocaleService localeService = ServiceProvider.getInstance().getLocaleService(); public HusacctLoadPanel(){ super(); setup(); addComponents(); setListeners(); } private void setup(){ setLayout(new GridBagLayout()); constraints = new GridBagConstraints(); } private void addComponents(){ descriptionLabel = new JLabel(localeService.getTranslatedString("OpenFromHusacct")); pathLabel = new JLabel(localeService.getTranslatedString("PathLabelShort")); pathText = new JTextField(20); browseButton = new JButton(localeService.getTranslatedString("BrowseButton")); pathText.setEnabled(false); if(selectedFile != null){ pathText.setText(selectedFile.getAbsolutePath()); } JPanel hiddenPanel = new JPanel(); hiddenPanel.setPreferredSize(new Dimension(100, 10)); add(descriptionLabel, getConstraint(0, 0, 3, 1)); add(pathLabel, getConstraint(0, 1, 1, 1)); add(pathText, getConstraint(1, 1, 2, 1)); add(hiddenPanel, getConstraint(1, 2, 1, 1)); add(browseButton, getConstraint(2, 2, 1, 1)); } private GridBagConstraints getConstraint(int gridx, int gridy, int gridwidth, int gridheight){ constraints.fill = GridBagConstraints.BOTH; constraints.insets = new Insets(3, 3, 3, 3); constraints.gridx = gridx; constraints.gridy = gridy; constraints.gridwidth = gridwidth; constraints.gridheight = gridheight; return constraints; } private void setListeners(){ browseButton.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent arg0) { showFileDialog(); } }); } protected void showFileDialog() { FileNameExtensionFilter filter = new FileNameExtensionFilter("hu", "hu"); FileDialog fileChooser = new FileDialog(JFileChooser.FILES_ONLY, localeService.getTranslatedString("OpenButton"), filter); File currentDirectory = getDirectoryFromFile(selectedFile); fileChooser.setCurrentDirectory(currentDirectory); int returnVal = fileChooser.showDialog(this); if(returnVal == JFileChooser.APPROVE_OPTION) { setFile(fileChooser.getSelectedFile()); } } private void setFile(File file) { selectedFile = file; pathText.setText(file.getAbsolutePath()); } @Override public HashMap<String, Object> getData() { HashMap<String, Object> data = new HashMap<String, Object>(); data.put("file", selectedFile); return data; } @Override public boolean validateData() { if(selectedFile == null){ ServiceProvider.getInstance().getControlService().showErrorMessage(localeService.getTranslatedString("NoFileLocationError")); return false; } return true; } }