/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/
/*
* ConditionPanelUnary.java
*
* Created on 28.04.2009, 14:22:13
*/
package reportgen.math.condition.unary;
import reportgen.prototype.context.group.ExpressionEditorPanel;
import java.awt.BorderLayout;
import java.awt.Window;
import reportgen.prototype.context.Context;
import reportgen.prototype.context.ContextMode;
import reportgen.math.MathExpression;
import reportgen.math.MathExpressionOperand;
import reportgen.math.reference.corecol.MathExpressionCoreColumnRef;
import reportgen.math.reference.method.MathExpressionEntityMethodRef;
import reportgen.math.reference.rescol.MathExpressionResultColumnRef;
/**
*
* @author axe
*/
class MathExpressionConditionUnaryNullPanel
extends ExpressionEditorPanel<MathExpressionConditionUnaryNull> {
private Window parent;
private MathExpressionConditionUnaryNull me;
private ExpressionEditorPanel operandPanel = null;
public MathExpressionConditionUnaryNullPanel(Window aParent,
MathExpressionConditionUnaryNull exp) {
initComponents();
this.parent = aParent;
this.me = exp;
assert me != null;
mainPanel.add(me.getOperator().getPanel(parent), BorderLayout.NORTH);
MathExpressionOperand operand = me.getOperand();
Context localContext = me.getLocalContext();
//если операнд есть, он сам знает свою панель,
//иначе придется перебирать режимы контекста и создавать панель, соотв режиму контекста
if(operand != null) {
//панель останется как нулл
mainPanel.add(operand.getPanel(parent), BorderLayout.CENTER);
} else
{
if(localContext.getContextMode() == ContextMode.STAGE_3_CONDITIONS) {
operandPanel = MathExpressionResultColumnRef.GROUP.getCreatePanel(parent,
me.getChildContext(MathExpressionResultColumnRef.GROUP)
);
} else if (localContext.getContextMode() == ContextMode.STAGE_2_CONDITIONS) {
operandPanel = MathExpressionCoreColumnRef.GROUP.getCreatePanel(parent,
me.getChildContext(MathExpressionCoreColumnRef.GROUP)
);
} else if (localContext.getContextMode() == ContextMode.RESULT) {
operandPanel = MathExpressionEntityMethodRef.GROUP.getCreatePanel(parent,
me.getChildContext(MathExpressionEntityMethodRef.GROUP)
);
} else { //ContextMode.SQL
operandPanel = new MathExpressionUnaryNullPanel(parent, operand, me, localContext);
}
mainPanel.add(operandPanel, BorderLayout.CENTER);
}
mainPanel.validate();
}
@Override
public MathExpressionConditionUnaryNull getValue() {
if(operandPanel != null) {
MathExpression value = operandPanel.getValue();
if(value == null) {
return null;
}
me.setOperand((MathExpressionOperand) value);
}
return me;
}
@SuppressWarnings("unchecked")
// <editor-fold defaultstate="collapsed" desc="Generated Code">//GEN-BEGIN:initComponents
private void initComponents() {
jPanel6 = new javax.swing.JPanel();
mainPanel = new javax.swing.JPanel();
jPanel6.setLayout(new java.awt.BorderLayout(5, 5));
mainPanel.setLayout(new java.awt.BorderLayout());
jPanel6.add(mainPanel, java.awt.BorderLayout.CENTER);
javax.swing.GroupLayout layout = new javax.swing.GroupLayout(this);
this.setLayout(layout);
layout.setHorizontalGroup(
layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(layout.createSequentialGroup()
.addContainerGap()
.addComponent(jPanel6, javax.swing.GroupLayout.DEFAULT_SIZE, 376, Short.MAX_VALUE)
.addContainerGap())
);
layout.setVerticalGroup(
layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(layout.createSequentialGroup()
.addContainerGap()
.addComponent(jPanel6, javax.swing.GroupLayout.PREFERRED_SIZE, 295, javax.swing.GroupLayout.PREFERRED_SIZE)
.addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
);
}// </editor-fold>//GEN-END:initComponents
// Variables declaration - do not modify//GEN-BEGIN:variables
private javax.swing.JPanel jPanel6;
private javax.swing.JPanel mainPanel;
// End of variables declaration//GEN-END:variables
}