package husacct.control.presentation.util;
import husacct.ServiceProvider;
import husacct.common.dto.ProjectDTO;
import husacct.common.locale.ILocaleService;
import husacct.common.services.IServiceListener;
import husacct.control.IControlService;
import java.awt.Component;
import java.awt.GridBagLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.util.ArrayList;
import java.util.Arrays;
import javax.swing.DefaultListModel;
import javax.swing.JButton;
import javax.swing.JFileChooser;
import javax.swing.JLabel;
import javax.swing.JList;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JTextArea;
import javax.swing.JTextField;
import javax.swing.ListSelectionModel;
import javax.swing.event.ListSelectionEvent;
import javax.swing.event.ListSelectionListener;
public class AddProjectPanel extends JPanel{
private static final long serialVersionUID = 1L;
private JLabel pathLabel, projectNameLabel, versionLabel;
private JTextArea descriptionText;
private JList pathList;
private JPanel panel;
private JTextField projectNameText, versionText;
private JButton addButton, removeButton, confirmButton;
private DefaultListModel pathListModel = new DefaultListModel();
private IControlService controlService = ServiceProvider.getInstance().getControlService();
private ILocaleService localeService = ServiceProvider.getInstance().getLocaleService();
public AddProjectPanel(){
addComponents();
setListeners();
setDefaultValues();
}
public void addComponents(){
this.setLayout(new GridBagLayout());
versionLabel = new JLabel(localeService.getTranslatedString("VersionLabel"));
pathLabel = new JLabel(localeService.getTranslatedString("PathLabel"));
projectNameLabel = new JLabel(localeService.getTranslatedString("ProjectNameLabel"));
addButton = new JButton(localeService.getTranslatedString("AddButton"));
removeButton = new JButton(localeService.getTranslatedString("RemoveButton"));
confirmButton = new JButton(localeService.getTranslatedString("OkButton"));
projectNameText = new JTextField("myApplication", 20);
versionText = new JTextField(10);
descriptionText = new JTextArea(localeService.getTranslatedString("ProjectTextSpace"), 5, 5);
pathList = new JList(pathListModel);
pathList.setSelectionMode(ListSelectionModel.SINGLE_INTERVAL_SELECTION);
pathList.setLayoutOrientation(JList.VERTICAL);
pathList.setVisibleRowCount(-1);
JScrollPane listScroller = new JScrollPane(pathList);
listScroller.setAlignmentX(Component.LEFT_ALIGNMENT);
removeButton.setEnabled(false);
/*
add(projectNameLabel, getConstraint(0, 0, 1, 1));
add(projectNameText, getConstraint(1, 0, 2, 1));
add(versionLabel, getConstraint(0, 1, 1, 1));
add(versionText, getConstraint(1, 1, 2, 1));
add(descriptionText, getConstraint(0, 2, 3, 1, 200, 200));
add(pathLabel, getConstraint(0, 3, 1, 1));
add(listScroller, getConstraint(0, 4, 2, 3, 200, 150));
add(addButton, getConstraint(2, 4, 1, 1));
add(removeButton, getConstraint(2, 5, 1, 1));
add(confirmButton, getConstraint(1, 6, 1, 1));*/
}
private void setListeners(){
pathList.addListSelectionListener(new ListSelectionListener() {
@Override
public void valueChanged(ListSelectionEvent e) {
if(pathList.getSelectedIndex() >= 0){
removeButton.setEnabled(true);
} else {
removeButton.setEnabled(false);
}
}
});
addButton.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
showAddFileDialog();
}
});
removeButton.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
pathListModel.remove(pathList.getSelectedIndex());
}
});
localeService.addServiceListener(new IServiceListener() {
@Override
public void update() {
versionLabel = new JLabel(localeService.getTranslatedString("VersionLabel"));
pathLabel = new JLabel(localeService.getTranslatedString("PathLabel"));
projectNameLabel = new JLabel(localeService.getTranslatedString("ProjectNameLabel"));
addButton = new JButton(localeService.getTranslatedString("AddButton"));
removeButton = new JButton(localeService.getTranslatedString("RemoveButton"));
confirmButton = new JButton(localeService.getTranslatedString("OkButton"));
}
});
}
private void showAddFileDialog() {
FileDialog fileChooser = new FileDialog(JFileChooser.DIRECTORIES_ONLY, localeService.getTranslatedString("AddButton"));
int returnVal = fileChooser.showDialog(panel);
if(returnVal == JFileChooser.APPROVE_OPTION) {
pathListModel.add(pathListModel.size(), fileChooser.getSelectedFile().getAbsolutePath());
}
}
private void setDefaultValues(){
ProjectDTO project = new ProjectDTO("", null, "", "", "", null);
}
public ProjectDTO getProjectData(){
String name = projectNameText.getText();
String version = versionText.getText();
String description = descriptionText.getText();
ArrayList<String> paths = new ArrayList<String>(Arrays.asList(Arrays.copyOf(pathListModel.toArray(), pathListModel.toArray().length, String[].class)));
return new ProjectDTO(name, paths, "", version, description, null);
}
/*
private GridBagConstraints getConstraint(int gridx, int gridy, int gridwidth, int gridheight, int ipadx, int ipady){
constraint.fill = GridBagConstraints.BOTH;
constraint.insets = new Insets(3, 3, 3, 3);
constraint.ipadx = ipadx;
constraint.ipady = ipady;
constraint.gridx = gridx;
constraint.gridy = gridy;
constraint.gridwidth = gridwidth;
constraint.gridheight = gridheight;
return constraint;
}
private GridBagConstraints getConstraint(int gridx, int gridy, int gridwidth, int gridheight){
return getConstraint(gridx, gridy, gridwidth, gridheight, 0, 0);
}
*/
public boolean dataValidated() {
/*
String applicationName = applicationNameText.getText();
boolean showError = false;
String errorMessage = "";
if(applicationName == null || applicationName.length() < 1){
errorMessage = localeService.getTranslatedString("FieldEmptyError");
showError = true;
}
if (!Regex.matchRegex(Regex.nameWithSpacesRegex, applicationNameText.getText())) {
errorMessage = localeService.getTranslatedString("MustBeAlphaNumericError");
showError = true;
}
if(showError){
controlService.showErrorMessage(errorMessage);
return false;
}*/
return true;
}
}