/*
* 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.main;
import java.util.List;
import reportgen.prototype.context.group.ExpressionEditorPanel;
import reportgen.math.complex.ExpressionListener;
import java.awt.BorderLayout;
import java.awt.Window;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.DefaultComboBoxModel;
import reportgen.gui.genepanel.formatpanel.dlg.StylePanel;
import reportgen.gui.genepanel.formatpanel.dlg.TableListener;
import reportgen.utils.ReportException;
import reportgen.math.agregate.agregate.AggregateFunction;
import reportgen.ren.report.extendedformat.cell.CellValue;
import reportgen.utils.ReportDialog;
/**
*
* @author axe
*/
class SheetCellDlg extends ReportDialog implements ExpressionListener {
private final CellValue value;
private boolean activeCombo = true;
private final TableListener tableListener;
/** Creates new form TableDlg */
public SheetCellDlg(Window parent, CellValue aCell, TableListener aTableListener) {
super(parent, "Параметры таблицы");
initComponents();
this.value = aCell;
this.tableListener = aTableListener;
ExpressionEditorPanel panel = value.getValue().getPanel(this);
panel.addExpressionListener(this);
mainPanel.add(panel, BorderLayout.CENTER);
colLabel.setText("Столбец: " + aCell.getColReference().getTitle());
rowLabel.setText("Строка: " + aCell.getRowReference().getTitle());
changed();
functionCombo.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
if(activeCombo) {
value.setFunction((AggregateFunction) functionCombo.getSelectedItem());
}
}
});
mainTab.add("Стиль оформления", new StylePanel(value.getStyle(), tableListener));
}
@Override
public void changed() {
activeCombo = false;
try {
Class cls = value.getValue().getCls();
List<AggregateFunction> func = value.getContext().getAggregFunctions(cls);
functionCombo.setModel(new DefaultComboBoxModel(func.toArray()));
if(!func.contains(value.getFunction())) {
value.setFunction(AggregateFunction.ASIS);
}
functionCombo.setSelectedItem(value.getFunction());
} catch (ReportException ex) {
value.setFunction(AggregateFunction.ASIS);
functionCombo.removeAllItems();
functionCombo.addItem(AggregateFunction.ASIS);
functionCombo.setSelectedItem(AggregateFunction.ASIS);
}
activeCombo = true;
}
@SuppressWarnings("unchecked")
// <editor-fold defaultstate="collapsed" desc="Generated Code">//GEN-BEGIN:initComponents
private void initComponents() {
jPanel1 = new javax.swing.JPanel();
jPanel4 = new javax.swing.JPanel();
colLabel = new javax.swing.JLabel();
rowLabel = new javax.swing.JLabel();
mainTab = new javax.swing.JTabbedPane();
jPanel2 = new javax.swing.JPanel();
mainPanel = new javax.swing.JPanel();
comboPanel = new javax.swing.JPanel();
functionCombo = new javax.swing.JComboBox();
jLabel1 = new javax.swing.JLabel();
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));
jPanel4.setBorder(javax.swing.BorderFactory.createTitledBorder("Ячейка на пересечении"));
jPanel4.setLayout(new java.awt.GridLayout(0, 1, 5, 5));
colLabel.setText("Столбец:");
jPanel4.add(colLabel);
rowLabel.setText("Строка:");
jPanel4.add(rowLabel);
jPanel1.add(jPanel4, java.awt.BorderLayout.NORTH);
mainPanel.setLayout(new java.awt.BorderLayout(2, 2));
comboPanel.setLayout(new java.awt.BorderLayout(5, 5));
functionCombo.setModel(new javax.swing.DefaultComboBoxModel(new String[] { "Item 1", "Item 2", "Item 3", "Item 4" }));
comboPanel.add(functionCombo, java.awt.BorderLayout.CENTER);
jLabel1.setText("Функция:");
comboPanel.add(jLabel1, java.awt.BorderLayout.WEST);
mainPanel.add(comboPanel, java.awt.BorderLayout.NORTH);
javax.swing.GroupLayout jPanel2Layout = new javax.swing.GroupLayout(jPanel2);
jPanel2.setLayout(jPanel2Layout);
jPanel2Layout.setHorizontalGroup(
jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGap(0, 507, Short.MAX_VALUE)
.addGroup(jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(jPanel2Layout.createSequentialGroup()
.addContainerGap()
.addComponent(mainPanel, javax.swing.GroupLayout.DEFAULT_SIZE, 483, Short.MAX_VALUE)
.addContainerGap()))
);
jPanel2Layout.setVerticalGroup(
jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGap(0, 504, Short.MAX_VALUE)
.addGroup(jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(javax.swing.GroupLayout.Alignment.TRAILING, jPanel2Layout.createSequentialGroup()
.addContainerGap()
.addComponent(mainPanel, javax.swing.GroupLayout.DEFAULT_SIZE, 480, Short.MAX_VALUE)
.addContainerGap()))
);
mainTab.addTab("Значение", jPanel2);
jPanel1.add(mainTab, 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, 512, Short.MAX_VALUE)
.addContainerGap())
);
layout.setVerticalGroup(
layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(layout.createSequentialGroup()
.addContainerGap()
.addComponent(jPanel1, javax.swing.GroupLayout.DEFAULT_SIZE, 653, Short.MAX_VALUE)
.addContainerGap())
);
pack();
}// </editor-fold>//GEN-END:initComponents
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.JLabel colLabel;
private javax.swing.JPanel comboPanel;
private javax.swing.JComboBox functionCombo;
private javax.swing.JLabel jLabel1;
private javax.swing.JPanel jPanel1;
private javax.swing.JPanel jPanel2;
private javax.swing.JPanel jPanel3;
private javax.swing.JPanel jPanel4;
private javax.swing.JPanel mainPanel;
private javax.swing.JTabbedPane mainTab;
private javax.swing.JButton okBtn;
private javax.swing.JLabel rowLabel;
// End of variables declaration//GEN-END:variables
}