/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/
/*
* TableDlg.java
*
* Created on 22.06.2009, 13:43:09
*/
package reportgen.gui.genepanel.formatpanel.dlg.range;
import reportgen.gui.genepanel.formatpanel.dlg.ChildRangePanel;
import java.awt.BorderLayout;
import java.awt.Window;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.event.DocumentEvent;
import javax.swing.event.DocumentListener;
import javax.swing.text.BadLocationException;
import javax.swing.text.Document;
import reportgen.gui.genepanel.formatpanel.dlg.StylePanel;
import reportgen.gui.genepanel.formatpanel.dlg.TableListener;
import reportgen.ren.report.extendedformat.range.ColRowRange;
import reportgen.ren.report.extendedformat.range.RangeOrderList;
import reportgen.ren.report.extendedformat.range.cross.ColRowRangeCrossReport;
import reportgen.ren.report.extendedformat.range.generic.ColRowRangeGeneric;
import reportgen.ren.report.extendedformat.range.group.ColRowRangeGroup;
import reportgen.utils.ReportDialog;
/**
*
* @author axe
*/
public class RangeDlg extends ReportDialog {
private final ColRowRange range;
private final TableListener tableListener;
public RangeDlg(Window aParent, ColRowRange aRange, TableListener aTableListener) {
super(aParent, "Параметры таблицы");
initComponents();
this.range = aRange;
this.tableListener = aTableListener;
this.tableTitleField.setText(range.getTitle());
this.tableTitleField.getDocument().addDocumentListener( new DocumentListener() {
@Override
public void insertUpdate(DocumentEvent e) {
update(e.getDocument());
}
@Override
public void removeUpdate(DocumentEvent e) {
update(e.getDocument());
}
@Override
public void changedUpdate(DocumentEvent e) {}
private void update(Document doc) {
try {
range.setTitle(doc.getText(0, doc.getLength()));
} catch (BadLocationException ex) {
ex.printStackTrace();
//do nothing
}
}
});
removeEmptyCheck.setSelected(range.isRemoveEmptyRange());
removeEmptyCheck.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
range.setRemoveEmptyRange(removeEmptyCheck.isSelected());
}
});
visibleCheck.setSelected(range.isVisible());
visibleCheck.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
range.setVisible(visibleCheck.isSelected());
}
});
criteriaPanelInner.add(range.getCriteria().getPanel(this));
titlePanel.add(range.getTitleExpression().getPanel(this), BorderLayout.CENTER);
RangeOrderList orders = range.getOrders();
if(orders != null) {
mainTab.add("Сортировка", new OrderRangePanel(this, orders, range.getLocalContext()));
}
mainTab.add("Фильтр(включая)",
new ExternalCriteriaPanel(range, range.getIncluded()));
mainTab.add("Фильтр(исключая)",
new ExternalCriteriaPanel(range, range.getExcluded()));
childPanelInner.removeAll();
childPanelInner.add(new ChildRangePanel(range.getInner(), this, tableListener));
initPanels();
typeCombo.addItem(ChildRangePanel.GENERIC);
typeCombo.addItem(ChildRangePanel.GROUP);
typeCombo.addItem(ChildRangePanel.CROSS);
if(range instanceof ColRowRangeGeneric) {
typeCombo.setSelectedItem(ChildRangePanel.GENERIC);
} else if(range instanceof ColRowRangeGroup) {
typeCombo.setSelectedItem(ChildRangePanel.GROUP);
} else if(range instanceof ColRowRangeCrossReport) {
typeCombo.setSelectedItem(ChildRangePanel.CROSS);
}
typeCombo.setEnabled(false);
mainTab.add("Стиль оформления", new StylePanel(range.getStyle(), tableListener));
}
@SuppressWarnings("unchecked")
// <editor-fold defaultstate="collapsed" desc="Generated Code">//GEN-BEGIN:initComponents
private void initComponents() {
jPanel1 = new javax.swing.JPanel();
jPanel5 = new javax.swing.JPanel();
jPanel8 = new javax.swing.JPanel();
typeCombo = new javax.swing.JComboBox();
jLabel2 = new javax.swing.JLabel();
removeEmptyCheck = new javax.swing.JCheckBox();
jPanel2 = new javax.swing.JPanel();
mainTab = new javax.swing.JTabbedPane();
mainPanel = new javax.swing.JPanel();
jPanel4 = new javax.swing.JPanel();
jPanel6 = new javax.swing.JPanel();
visibleCheck = new javax.swing.JCheckBox();
titlePanel = new javax.swing.JPanel();
jScrollPane1 = new javax.swing.JScrollPane();
tableTitleField = new javax.swing.JTextArea();
criteriaPanel = new javax.swing.JPanel();
criteriaPanelInner = new javax.swing.JPanel();
childPanel = new javax.swing.JPanel();
childPanelInner = new javax.swing.JPanel();
jPanel3 = new javax.swing.JPanel();
okBtn = new javax.swing.JButton();
setDefaultCloseOperation(javax.swing.WindowConstants.DISPOSE_ON_CLOSE);
jPanel1.setLayout(new java.awt.BorderLayout(5, 5));
jPanel5.setLayout(new java.awt.GridLayout(0, 1, 5, 5));
jPanel8.setLayout(new java.awt.BorderLayout(5, 5));
jPanel8.add(typeCombo, java.awt.BorderLayout.CENTER);
jLabel2.setText("Вид диапазона:");
jPanel8.add(jLabel2, java.awt.BorderLayout.WEST);
jPanel5.add(jPanel8);
removeEmptyCheck.setText("Не отображать, если не содержит данных");
jPanel5.add(removeEmptyCheck);
jPanel1.add(jPanel5, java.awt.BorderLayout.NORTH);
jPanel2.setLayout(new java.awt.BorderLayout(5, 5));
jPanel4.setLayout(new java.awt.BorderLayout(10, 10));
jPanel6.setLayout(new java.awt.GridLayout(0, 1, 5, 5));
visibleCheck.setText("Отображать заголовок раздела");
jPanel6.add(visibleCheck);
jPanel4.add(jPanel6, java.awt.BorderLayout.NORTH);
titlePanel.setBorder(javax.swing.BorderFactory.createCompoundBorder(javax.swing.BorderFactory.createTitledBorder("Заголовок диапазона"), javax.swing.BorderFactory.createEmptyBorder(1, 1, 1, 1)));
titlePanel.setLayout(new java.awt.BorderLayout(10, 10));
tableTitleField.setColumns(20);
tableTitleField.setRows(5);
jScrollPane1.setViewportView(tableTitleField);
titlePanel.add(jScrollPane1, java.awt.BorderLayout.NORTH);
jScrollPane1.getAccessibleContext().setAccessibleName("Простое название диапазона");
jPanel4.add(titlePanel, java.awt.BorderLayout.CENTER);
javax.swing.GroupLayout mainPanelLayout = new javax.swing.GroupLayout(mainPanel);
mainPanel.setLayout(mainPanelLayout);
mainPanelLayout.setHorizontalGroup(
mainPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(mainPanelLayout.createSequentialGroup()
.addContainerGap()
.addComponent(jPanel4, javax.swing.GroupLayout.DEFAULT_SIZE, 550, Short.MAX_VALUE)
.addContainerGap())
);
mainPanelLayout.setVerticalGroup(
mainPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(mainPanelLayout.createSequentialGroup()
.addContainerGap()
.addComponent(jPanel4, javax.swing.GroupLayout.DEFAULT_SIZE, 518, Short.MAX_VALUE)
.addContainerGap())
);
mainTab.addTab("Название", mainPanel);
criteriaPanelInner.setLayout(new java.awt.GridLayout(1, 0));
javax.swing.GroupLayout criteriaPanelLayout = new javax.swing.GroupLayout(criteriaPanel);
criteriaPanel.setLayout(criteriaPanelLayout);
criteriaPanelLayout.setHorizontalGroup(
criteriaPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGap(0, 574, Short.MAX_VALUE)
.addGroup(criteriaPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(criteriaPanelLayout.createSequentialGroup()
.addContainerGap()
.addComponent(criteriaPanelInner, javax.swing.GroupLayout.DEFAULT_SIZE, 550, Short.MAX_VALUE)
.addContainerGap()))
);
criteriaPanelLayout.setVerticalGroup(
criteriaPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGap(0, 542, Short.MAX_VALUE)
.addGroup(criteriaPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(criteriaPanelLayout.createSequentialGroup()
.addContainerGap()
.addComponent(criteriaPanelInner, javax.swing.GroupLayout.DEFAULT_SIZE, 518, Short.MAX_VALUE)
.addContainerGap()))
);
mainTab.addTab("Критерии выборки", criteriaPanel);
childPanelInner.setLayout(new java.awt.GridLayout(1, 0));
javax.swing.GroupLayout childPanelLayout = new javax.swing.GroupLayout(childPanel);
childPanel.setLayout(childPanelLayout);
childPanelLayout.setHorizontalGroup(
childPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGap(0, 574, Short.MAX_VALUE)
.addGroup(childPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(childPanelLayout.createSequentialGroup()
.addContainerGap()
.addComponent(childPanelInner, javax.swing.GroupLayout.DEFAULT_SIZE, 550, Short.MAX_VALUE)
.addContainerGap()))
);
childPanelLayout.setVerticalGroup(
childPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGap(0, 542, Short.MAX_VALUE)
.addGroup(childPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(childPanelLayout.createSequentialGroup()
.addContainerGap()
.addComponent(childPanelInner, javax.swing.GroupLayout.DEFAULT_SIZE, 518, Short.MAX_VALUE)
.addContainerGap()))
);
mainTab.addTab("Дочерние элементы", childPanel);
jPanel2.add(mainTab, java.awt.BorderLayout.CENTER);
jPanel1.add(jPanel2, java.awt.BorderLayout.CENTER);
jPanel3.setLayout(new java.awt.FlowLayout(java.awt.FlowLayout.RIGHT));
okBtn.setText(" OK ");
okBtn.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
okBtnActionPerformed(evt);
}
});
jPanel3.add(okBtn);
jPanel1.add(jPanel3, java.awt.BorderLayout.SOUTH);
javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane());
getContentPane().setLayout(layout);
layout.setHorizontalGroup(
layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(layout.createSequentialGroup()
.addContainerGap()
.addComponent(jPanel1, javax.swing.GroupLayout.DEFAULT_SIZE, 579, Short.MAX_VALUE)
.addContainerGap())
);
layout.setVerticalGroup(
layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(layout.createSequentialGroup()
.addContainerGap()
.addComponent(jPanel1, javax.swing.GroupLayout.DEFAULT_SIZE, 683, Short.MAX_VALUE)
.addContainerGap())
);
pack();
}// </editor-fold>//GEN-END:initComponents
private void initPanels() {
if(range instanceof ColRowRangeGroup) {
ColRowRangeGroup group = (ColRowRangeGroup) range;
mainTab.add("Группировка", group.getGroupValue().getPanel(this));
} else if(range instanceof ColRowRangeCrossReport) {
ColRowRangeCrossReport cross = (ColRowRangeCrossReport) range;
mainTab.add("Кроссотчет", new CrossReportPanel(this, cross));
}
}
private void okBtnActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_okBtnActionPerformed
setVisible(false);
}//GEN-LAST:event_okBtnActionPerformed
// Variables declaration - do not modify//GEN-BEGIN:variables
private javax.swing.JPanel childPanel;
private javax.swing.JPanel childPanelInner;
private javax.swing.JPanel criteriaPanel;
private javax.swing.JPanel criteriaPanelInner;
private javax.swing.JLabel jLabel2;
private javax.swing.JPanel jPanel1;
private javax.swing.JPanel jPanel2;
private javax.swing.JPanel jPanel3;
private javax.swing.JPanel jPanel4;
private javax.swing.JPanel jPanel5;
private javax.swing.JPanel jPanel6;
private javax.swing.JPanel jPanel8;
private javax.swing.JScrollPane jScrollPane1;
private javax.swing.JPanel mainPanel;
private javax.swing.JTabbedPane mainTab;
private javax.swing.JButton okBtn;
private javax.swing.JCheckBox removeEmptyCheck;
private javax.swing.JTextArea tableTitleField;
private javax.swing.JPanel titlePanel;
private javax.swing.JComboBox typeCombo;
private javax.swing.JCheckBox visibleCheck;
// End of variables declaration//GEN-END:variables
}