package husacct.define.presentation.jdialog;
import husacct.ServiceProvider;
import husacct.common.Resource;
import husacct.common.help.presentation.HelpableJDialog;
import husacct.control.ControlServiceImpl;
import husacct.define.presentation.moduletree.AnalyzedModuleTree;
import husacct.define.task.components.AnalyzedModuleComponent;
import java.awt.BorderLayout;
import java.awt.GridLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.util.ArrayList;
import javax.swing.BorderFactory;
import javax.swing.ImageIcon;
import javax.swing.JButton;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.WindowConstants;
import javax.swing.tree.TreePath;
import javax.swing.tree.TreeSelectionModel;
public class SoftwareUnitResultJDialog extends HelpableJDialog implements ActionListener {
private static final long serialVersionUID = 7060253504620240808L;
private JButton saveButton;
private JButton backButton;
private JButton selectAllButton;
private JButton deSelectAllButton;
private AnalyzedModuleTree resultTree;
private SoftwareUnitJDialog previousSoftwareUnitJDialog;
public SoftwareUnitResultJDialog(long moduleId, AnalyzedModuleTree resultTree, SoftwareUnitJDialog previousSoftwareUnitJDialog) {
super(((ControlServiceImpl) ServiceProvider.getInstance().getControlService()).getMainController().getMainGui(), true);
this.resultTree = resultTree;
this.previousSoftwareUnitJDialog = previousSoftwareUnitJDialog;
initUI();
}
private void initUI() {
try {
setDefaultCloseOperation(WindowConstants.DISPOSE_ON_CLOSE);
setTitle(ServiceProvider.getInstance().getLocaleService().getTranslatedString("ResultsTitle"));
setIconImage(new ImageIcon(Resource.get(Resource.HUSACCT_LOGO)).getImage());
this.getContentPane().add(this.createResultPanel(), BorderLayout.CENTER);
this.getContentPane().add(this.createButtonPanel(), BorderLayout.SOUTH);
this.setResizable(false);
this.setSize(500, 100);
this.pack();
ServiceProvider.getInstance().getControlService().centerDialog(this);
this.setVisible(true);
} catch (Exception e) {
e.printStackTrace();
}
}
private JPanel createResultPanel() {
JPanel resultPanel = new JPanel();
resultPanel.setLayout(new GridLayout(1,1));
resultPanel.setBorder(BorderFactory.createEmptyBorder(1, 1, 1, 1));
JScrollPane softwareUnitScrollPane = new JScrollPane();
//softwareUnitScrollPane.setSize(50, 50);
softwareUnitScrollPane.setPreferredSize(new java.awt.Dimension(500, 300));
softwareUnitScrollPane.setViewportView(resultTree);
int[] selectionRows = new int[resultTree.getRowCount()-1];
for(int i=1; i<resultTree.getRowCount(); i++){
selectionRows[i-1] = i;
}
resultTree.setSelectionRows(selectionRows);
resultPanel.add(softwareUnitScrollPane);
return resultPanel;
}
private JPanel createButtonPanel() {
JPanel buttonPanel = new JPanel();
selectAllButton = new JButton(ServiceProvider.getInstance().getLocaleService().getTranslatedString("SelectAll"));
buttonPanel.add(selectAllButton);
selectAllButton.addActionListener(this);
deSelectAllButton = new JButton(ServiceProvider.getInstance().getLocaleService().getTranslatedString("DeselectAll"));
buttonPanel.add(deSelectAllButton);
deSelectAllButton.addActionListener(this);
saveButton = new JButton(ServiceProvider.getInstance().getLocaleService().getTranslatedString("Add"));
buttonPanel.add(saveButton);
saveButton.addActionListener(this);
backButton = new JButton(ServiceProvider.getInstance().getLocaleService().getTranslatedString("Back"));
buttonPanel.add(backButton);
backButton.addActionListener(this);
return buttonPanel;
}
@Override
public void actionPerformed(ActionEvent action) {
if (action.getSource() == this.saveButton) {
this.save();
} else if (action.getSource() == this.backButton) {
this.cancel();
}
else if (action.getSource() == this.selectAllButton) {
int[] selectionRows = new int[resultTree.getRowCount()-1];
for(int i=1; i<resultTree.getRowCount(); i++){
selectionRows[i-1] = i;
}
resultTree.setSelectionRows(selectionRows);
}
else if (action.getSource() == this.deSelectAllButton) {
resultTree.setSelectionRow(-1);
}
}
private void save() {
TreeSelectionModel paths = resultTree.getSelectionModel();
ArrayList<AnalyzedModuleComponent> components = new ArrayList<AnalyzedModuleComponent>();
for (TreePath path : paths.getSelectionPaths()){
components.add((AnalyzedModuleComponent) path.getLastPathComponent());
}
this.dispose();
}
private void cancel() {
this.dispose();
previousSoftwareUnitJDialog.setVisible(true);
}
}