package husacct.validate.presentation.browseViolations;
import husacct.ServiceProvider;
import husacct.common.help.presentation.HelpableJPanel;
import husacct.common.help.presentation.HelpableJScrollPane;
import husacct.validate.domain.validation.Violation;
import husacct.validate.presentation.tableModels.ViolationDataModel;
import husacct.validate.presentation.tableModels.ViolationTable;
import husacct.validate.presentation.tableModels.ViolationsPerRuleTable;
import husacct.validate.presentation.tableModels.ViolationsPerRuleDataModel;
import husacct.validate.task.TaskServiceImpl;
import java.awt.Color;
import java.util.List;
import javax.swing.GroupLayout;
import javax.swing.GroupLayout.Alignment;
import javax.swing.LayoutStyle.ComponentPlacement;
import javax.swing.ListSelectionModel;
import javax.swing.UIManager;
import javax.swing.border.TitledBorder;
import javax.swing.table.TableColumn;
public class ViolationPerRulePanel extends HelpableJPanel {
private static final long serialVersionUID = 1L;
private static final Color PANELBACKGROUND = UIManager.getColor("Panel.background");
private final TaskServiceImpl taskServiceImpl;
private GroupLayout theLayout;
private ViolationsPerRuleTable violationsPerRuleTable;
private ViolationsPerRuleDataModel violationsPerRuleDataModel;
private HelpableJScrollPane ruleScrollPane, violationsScrollPane;
private ViolationTable violationTable;
private ViolationDataModel tableModel;
public ViolationPerRulePanel(TaskServiceImpl taskServiceImpl) {
this.taskServiceImpl = taskServiceImpl;
createLayout();
violationsPerRuleTable = new ViolationsPerRuleTable(this);
violationsPerRuleDataModel = new ViolationsPerRuleDataModel(taskServiceImpl);
violationsPerRuleTable.setModel(violationsPerRuleDataModel);
ruleScrollPane.setViewportView(violationsPerRuleTable);
violationsPerRuleTable.setBackground(PANELBACKGROUND);
violationsPerRuleTable.setAutoCreateRowSorter(true);
violationTable = new ViolationTable();
tableModel = new ViolationDataModel();
violationTable.setModel(tableModel);
violationsScrollPane.setViewportView(violationTable);
violationTable.setBackground(PANELBACKGROUND);
violationTable.setAutoCreateRowSorter(true);
setLayout(theLayout);
}
private void createLayout() {
ruleScrollPane = new HelpableJScrollPane();
ruleScrollPane.setBorder(new TitledBorder(ServiceProvider.getInstance().getLocaleService().getTranslatedString("ViolationsPerRuleTotalTitle")));
violationsScrollPane = new HelpableJScrollPane();
violationsScrollPane.setBorder(new TitledBorder(ServiceProvider.getInstance().getLocaleService().getTranslatedString("Violations")));
theLayout = new GroupLayout(this);
theLayout.setHorizontalGroup(theLayout.createParallelGroup(Alignment.TRAILING)
.addGroup(theLayout.createSequentialGroup()
.addContainerGap()
.addGroup(theLayout.createParallelGroup(Alignment.TRAILING)
.addComponent(ruleScrollPane, Alignment.LEADING, GroupLayout.DEFAULT_SIZE, 497, Short.MAX_VALUE)
.addComponent(violationsScrollPane, Alignment.LEADING, GroupLayout.DEFAULT_SIZE, 497, Short.MAX_VALUE))
.addContainerGap()));
theLayout.setVerticalGroup(theLayout.createParallelGroup(Alignment.LEADING)
.addGroup(theLayout.createSequentialGroup()
.addContainerGap()
.addComponent(ruleScrollPane, GroupLayout.DEFAULT_SIZE, 235, Short.MAX_VALUE)
.addPreferredGap(ComponentPlacement.RELATED)
.addComponent(violationsScrollPane, GroupLayout.DEFAULT_SIZE, 235, Short.MAX_VALUE)
.addContainerGap()));
ruleScrollPane.setBackground(PANELBACKGROUND);
violationsScrollPane.setBackground(PANELBACKGROUND);
}
public void reload() {
violationsPerRuleDataModel = new ViolationsPerRuleDataModel(taskServiceImpl);
violationsPerRuleTable.setModel(violationsPerRuleDataModel);
violationsPerRuleTable.setColumnWidths();
violationsPerRuleTable.setAutoCreateRowSorter(true);
ruleScrollPane.setBorder(new TitledBorder(ServiceProvider.getInstance().getLocaleService().getTranslatedString("ViolationsPerRuleTotalTitle")));
ruleScrollPane.repaint();
this.repaint();
if (violationsPerRuleTable.getRowCount() >= 1) {
violationsPerRuleTable.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
violationsPerRuleTable.setRowSelectionInterval(0, 0);
int selectedRow = violationsPerRuleTable.getSelectedRow();
int id = (int) violationsPerRuleTable.getValueAt(selectedRow, 0);
showViolationsSelectedRule(id);
} else {
clearViolationTable();
}
}
protected void setColumnWidths() {
TableColumn column = null;
for (int i = 0; i < violationTable.getColumnCount(); i++) {
column = violationTable.getColumnModel().getColumn(i);
if (i == 0) {
column.setPreferredWidth(290); // From
} else if (i == 1) {
column.setPreferredWidth(290); // To
} else if (i == 2) {
column.setPreferredWidth(150); // Rule
} else if (i == 3) {
column.setPreferredWidth(70); // DependencyKind
} else if (i == 4) {
column.setPreferredWidth(50); // Direct
} else if (i == 5) {
column.setPreferredWidth(50); // LineNumber
}
}
}
public void showViolationsSelectedRule(int id) {
// Load violationTable
String moduleFrom = (String) violationsPerRuleDataModel.getValueAtNotTranslated(id -1, 1);
String moduleTo = (String) violationsPerRuleDataModel.getValueAtNotTranslated(id -1, 3);
String ruleTypeKey = (String) violationsPerRuleDataModel.getValueAtNotTranslated(id -1, 2);
List<Violation> violationsPerRuleList = taskServiceImpl.getViolationsByRule(moduleFrom, moduleTo, ruleTypeKey);
tableModel = new ViolationDataModel();
tableModel.setData(violationsPerRuleList);
violationTable.setModel(tableModel);
violationTable.setAutoCreateRowSorter(true);
violationTable.setColumnWidths();
violationsScrollPane.setBorder(new TitledBorder(ServiceProvider.getInstance().getLocaleService().getTranslatedString("Violations")));
violationsScrollPane.repaint();
}
private void clearViolationTable() {
tableModel = new ViolationDataModel();
violationTable.setModel(tableModel);
violationTable.setAutoCreateRowSorter(true);
violationTable.setColumnWidths();
violationsScrollPane.setBorder(new TitledBorder(ServiceProvider.getInstance().getLocaleService().getTranslatedString("Violations")));
violationsScrollPane.repaint();
}
}