package husacct.control.presentation.workspace.savers;
import husacct.ServiceProvider;
import husacct.common.locale.ILocaleService;
import husacct.control.IControlService;
import husacct.control.presentation.util.FileDialog;
import husacct.control.presentation.util.Regex;
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 HusacctSavePanel extends SaverPanel{
private static final long serialVersionUID = 1L;
private JLabel pathLabel,descriptionLabel;
private JTextField pathText;
private JButton browseButton;
private static File selectedFile;
private GridBagConstraints constraints;
private IControlService controlService = ServiceProvider.getInstance().getControlService();
private ILocaleService localeService = ServiceProvider.getInstance().getLocaleService();
public HusacctSavePanel(){
super();
setup();
addComponents();
setListeners();
}
private void setup(){
setLayout(new GridBagLayout());
constraints = new GridBagConstraints();
}
private void addComponents(){
descriptionLabel = new JLabel(localeService.getTranslatedString("SaveToHusacct"));
pathLabel = new JLabel(localeService.getTranslatedString("PathLabelShort"));
pathText = new JTextField(25);
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 fileDialog = new FileDialog(JFileChooser.FILES_ONLY, localeService.getTranslatedString("SaveButton"), filter);
File currentDirectory = getDirectoryFromFile(selectedFile);
fileDialog.setCurrentDirectory(currentDirectory);
int returnVal = fileDialog.showDialog(this);
if(returnVal == JFileChooser.APPROVE_OPTION) {
if(fileDialog.getSelectedFile().exists()){
setFile(fileDialog.getSelectedFile());
} else {
setFile(new File(fileDialog.getSelectedFile().getAbsolutePath() + "." + fileDialog.getFileFilter().getDescription()));
}
}
}
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){
controlService.showErrorMessage(localeService.getTranslatedString("NoFileLocationError"));
return false;
}
else if(!Regex.matchRegex(Regex.filenameRegex, selectedFile.getName())) {
controlService.showErrorMessage(localeService.getTranslatedString("InvalidFilenameError"));
return false;
}
return true;
}
@Override
public HashMap<String, Object> getConfig() {
//TODO return config;
return null;
}
}