package reportgen.gui.genepanel.formatpanel.dlg.main;
import reportgen.gui.genepanel.formatpanel.dlg.range.RangeDlg;
import java.awt.Window;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import reportgen.gui.genepanel.formatpanel.dlg.TableListener;
import reportgen.math.complex.MathExpressionComplex;
import reportgen.ren.report.extendedformat.range.ColRowRange;
import reportgen.ren.report.extendedformat.range.cross.ColRowRangeCrossReport;
import reportgen.ren.report.extendedformat.range.group.ColRowRangeGroup;
import reportgen.utils.ReportException;
class RangeCell extends StyledCell implements ActionListener {
private final ColRowRange range;
public RangeCell(Window parent, ColRowRange range, TableListener tableListener) {
super(parent, tableListener, range.getStyle());
this.range = range;
}
@Override
public Object getValue() {
String txt = "";
if(range instanceof ColRowRangeGroup) {
ColRowRangeGroup group = (ColRowRangeGroup) range;
boolean valid = isValid(group.getGroupValue(), false);
if(valid) {
txt += "группа ";
} else {
txt += "ГР! ";
}
} else if(range instanceof ColRowRangeCrossReport) {
ColRowRangeCrossReport crep = (ColRowRangeCrossReport) range;
boolean valid = isValid(crep.getCrossCriteria(), false);
if(valid) {
txt += "кросс ";
} else {
txt += "КРОСС! ";
}
}
boolean critValid = isValid(range.getCriteria(), true);
if(critValid) {
if(!range.getCriteria().isEmpty()) {
txt = "(фильтр) ";
}
} else {
txt += "УСЛ! ";
}
txt += range.getTitle();
return txt;
}
@Override
public void setValue(Object font) {
throw new UnsupportedOperationException("Not supported yet.");
}
private static boolean isValid(MathExpressionComplex express, boolean canBeEmpty) {
boolean ok = false;
try {
express.validate();
if (canBeEmpty || !express.isEmpty()) {
ok = true;
}
} catch (ReportException ex) {
ok = false;
}
return ok;
}
@Override
public void actionPerformed(ActionEvent e) {
RangeDlg dlg = new RangeDlg(parent, range, tableListener);
dlg.setVisible(true);
tableListener.dataChanged();
}
}