/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package ro.nextreports.designer; import java.awt.Color; import java.awt.Font; import java.beans.PropertyChangeEvent; import java.util.ArrayList; import java.util.List; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import ro.nextreports.designer.action.undo.ModifyElementsEdit; import ro.nextreports.designer.grid.Cell; import ro.nextreports.designer.grid.DefaultGridModel; import ro.nextreports.designer.grid.SelectionModel; import ro.nextreports.designer.grid.event.SelectionModelEvent; import ro.nextreports.designer.grid.event.SelectionModelListener; import ro.nextreports.designer.property.BorderPropertyEditor; import ro.nextreports.designer.property.CustomSizePropertyEditor; import ro.nextreports.designer.property.ExtendedColorPropertyEditor; import ro.nextreports.designer.property.FieldPatternPropertyEditor; import ro.nextreports.designer.property.FormattingConditionsPropertyEditor; import ro.nextreports.designer.property.HideWhenExpressionPropertyEditor; import ro.nextreports.designer.property.HyperlinkPropertyEditor; import ro.nextreports.designer.property.ImagePropertyEditor; import ro.nextreports.designer.property.PaddingPropertyEditor; import ro.nextreports.designer.property.RowFormattingConditionsPropertyEditor; import ro.nextreports.designer.property.SqlPropertyEditor; import ro.nextreports.designer.property.TemplatePropertyEditor; import ro.nextreports.designer.util.I18NSupport; import ro.nextreports.engine.util.ObjectCloner; import ro.nextreports.engine.band.BandElement; import ro.nextreports.engine.band.FieldBandElement; import ro.nextreports.engine.band.ForReportBandElement; import ro.nextreports.engine.band.ImageColumnBandElement; import ro.nextreports.engine.band.Padding; import ro.nextreports.engine.band.ColumnBandElement; import ro.nextreports.engine.band.HyperlinkBandElement; import ro.nextreports.engine.band.Hyperlink; import ro.nextreports.engine.band.ImageBandElement; import ro.nextreports.engine.band.FunctionBandElement; import ro.nextreports.engine.band.ExpressionBandElement; import ro.nextreports.engine.band.PaperSize; import ro.nextreports.engine.band.RowElement; import ro.nextreports.engine.ReportLayout; import ro.nextreports.engine.condition.FormattingConditions; import ro.nextreports.engine.condition.RowFormattingConditions; import ro.nextreports.engine.exporter.ResultExporter; import com.l2fprod.common.beans.editor.ComboBoxPropertyEditor; import com.l2fprod.common.beans.editor.IntegerPropertyEditor; import com.l2fprod.common.propertysheet.DefaultProperty; import com.l2fprod.common.propertysheet.Property; import com.l2fprod.common.propertysheet.PropertyEditorRegistry; import com.l2fprod.common.propertysheet.PropertySheetPanel; /** * @author Decebal Suiu */ public class PropertyPanel extends PropertySheetPanel implements SelectionModelListener { private String PAGE_FORMAT_NAME = "PageFormat"; private String PAGE_FORMAT_PARAM_NAME = I18NSupport.getString("property.page.format"); private String TEMPLATE_NAME = "TemplateName"; private String TEMPLATE_PARAM_NAME = I18NSupport.getString("property.template.name"); private String TEMPLATE_SHEET_NAME = "Sheet"; private String TEMPLATE_SHEET_PARAM_NAME = I18NSupport.getString("property.template.sheet"); private String SHEET_NAME = "SheetName"; private String SHEET_PARAM_NAME = I18NSupport.getString("property.sheet.name"); private String CUSTOM_PAGE_FORMAT_DEF_NAME = "CustomPageFormat"; private String CUSTOM_PAGE_FORMAT_DEF_PARAM_NAME = I18NSupport.getString("property.page.custom"); private String PAGE_PADDING_NAME = "PagePadding"; private String PAGE_PADDING_PARAM_NAME = I18NSupport.getString("property.page.padding"); private String ORIENTATION_NAME = "Orientation"; private String ORIENTATION_PARAM_NAME = I18NSupport.getString("property.orientation"); private String REPORT_TYPE_NAME = "Type"; private String REPORT_TYPE_PARAM_NAME = I18NSupport.getString("property.report.type"); private String HEADER_NAME = "HeaderPerPage"; private String HEADER_PARAM_NAME = I18NSupport.getString("property.header.on.every.page"); private String EMPTY_DATA_NAME = "EmptyData"; private String EMPTY_DATA_PARAM_NAME = I18NSupport.getString("property.emptyData.show"); private String BG_IMAGE_NAME = "BgImage"; private String BG_IMAGE_PARAM_NAME = I18NSupport.getString("property.background.image"); private String TEXT_PARAM_NAME = I18NSupport.getString("property.text"); private String FONT_PARAM_NAME = I18NSupport.getString("property.font"); private String BACKGROUND_PARAM_NAME = I18NSupport.getString("property.background"); private String FOREGROUND_PARAM_NAME = I18NSupport.getString("property.foreground"); private String ALIGNMENT_PARAM_NAME = I18NSupport.getString("property.allignment"); private String V_ALIGNMENT_PARAM_NAME = I18NSupport.getString("property.vertical.allignment"); private String PATTERN_PARAM_NAME = I18NSupport.getString("property.pattern"); private String WIDTH_PARAM_NAME = I18NSupport.getString("property.width"); private String HEIGHT_PARAM_NAME = I18NSupport.getString("property.height"); private String PADDING_PARAM_NAME = I18NSupport.getString("property.padding"); private String BORDER_PARAM_NAME = I18NSupport.getString("property.border"); private String WRAPTEXT_PARAM_NAME = I18NSupport.getString("property.wrapText"); private String LINE_SPACING_PARAM_NAME = I18NSupport.getString("property.lineSpacing"); private String TEXT_ROTATION_PARAM_NAME = I18NSupport.getString("property.textRotation"); private String REPEATED_PARAM_NAME = I18NSupport.getString("property.repeatedValue"); private String HIDE_WHEN_EXPRESSION_PARAM_NAME = I18NSupport.getString("property.hide.when.expression"); private String URL_PARAM_NAME = I18NSupport.getString("property.url"); private String CONDITION_NAME = "Condition"; private String CONDITION_PARAM_NAME = I18NSupport.getString("property.condition"); private String ROW_CONDITION_NAME = "RowCondition"; private String ROW_CONDITION_PARAM_NAME = I18NSupport.getString("property.condition"); private String ROW_NEW_PAGE_NAME = "RowNewPage"; private String ROW_NEW_PAGE_PARAM_NAME = I18NSupport.getString("property.newpage"); //private String FOR_REPORT_NAME = "ForReport"; private String FOR_REPORT_PARAM_NAME = I18NSupport.getString("property.forreport.sql"); private String HTML_ACC_HEADERS = I18NSupport.getString("property.accessibility.html.headers"); private String HTML_ACC_ID = I18NSupport.getString("property.accessibility.html.id"); private String HTML_ACC_SCOPE = I18NSupport.getString("property.accessibility.html.scope"); private String HTML_SCOPE_NONE = " "; private String HTML_SCOPE_ROW = "row"; private String HTML_SCOPE_COL = "col"; private static Log LOG = LogFactory.getLog(PropertyPanel.class); private List<ReportGridCell> reportGridCells; private List<Integer> rows; private String formattingCellBand; private PropertyEditorRegistry editorRegistry; private boolean isInit; private String PORTRAIT = I18NSupport.getString("export.properties.portrait"); private String LANDSCAPE = I18NSupport.getString("export.properties.landscape"); private String DEFAULT_TYPE = I18NSupport.getString("property.report.default"); private String ALARM_TYPE = I18NSupport.getString("property.report.alarm"); private String TABLE_TYPE = I18NSupport.getString("property.report.table"); private String INDICATOR_TYPE = I18NSupport.getString("property.report.indicator"); private String DISPLAY_TYPE = I18NSupport.getString("property.report.display"); private String CENTER = I18NSupport.getString("property.allignment.center"); private String LEFT = I18NSupport.getString("property.allignment.left"); private String RIGHT = I18NSupport.getString("property.allignment.right"); private String TOP = I18NSupport.getString("property.vertical.allignment.top"); private String MIDDLE = I18NSupport.getString("property.vertical.allignment.middle"); private String BOTTOM = I18NSupport.getString("property.vertical.allignment.bottom"); private boolean ignoreEvent; public PropertyPanel() { super(); setDescriptionVisible(false); setToolBarVisible(false); if (Globals.getAccessibilityHtml()) { setMode(PropertySheetPanel.VIEW_AS_CATEGORIES); } //setSortingCategories(true); reportGridCells = new ArrayList<ReportGridCell>(); rows = new ArrayList<Integer>(); editorRegistry = (PropertyEditorRegistry) getEditorFactory(); } @Override public void propertyChange(PropertyChangeEvent event) { if (ignoreEvent) { return; } if (isInit) { return; } Property prop = (Property) event.getSource(); String propName = prop.getName(); // report properties if (ORIENTATION_NAME.equals(propName)) { String propValue = (String) prop.getValue(); LayoutHelper.getReportLayout().setOrientation(getOrientation(propValue)); return; } else if (REPORT_TYPE_NAME.equals(propName)) { String propValue = (String) prop.getValue(); LayoutHelper.getReportLayout().setReportType(getReportType(propValue)); return; } else if (HEADER_NAME.equals(propName)) { Boolean propValue = (Boolean) prop.getValue(); LayoutHelper.getReportLayout().setHeaderOnEveryPage(propValue); return; } else if (EMPTY_DATA_NAME.equals(propName)) { Boolean propValue = (Boolean) prop.getValue(); LayoutHelper.getReportLayout().setShowEmptyData(propValue); return; } else if (PAGE_FORMAT_NAME.equals(propName)) { String propValue = (String) prop.getValue(); LayoutHelper.getReportLayout().setPageFormat(propValue); List<Property> props = getReportProperties(LayoutHelper.getReportLayout()); setProperties(props.toArray(new Property[props.size()])); return; } else if (TEMPLATE_NAME.equals(propName)) { String propValue = (String) prop.getValue(); LayoutHelper.getReportLayout().setTemplateName(propValue); return; } else if (TEMPLATE_SHEET_NAME.equals(propName)) { Integer propValue = (Integer) prop.getValue(); LayoutHelper.getReportLayout().setTemplateSheet(propValue); return; } else if (SHEET_NAME.equals(propName)) { String propValue = (String) prop.getValue(); LayoutHelper.getReportLayout().setSheetNames(propValue); return; } else if (CUSTOM_PAGE_FORMAT_DEF_NAME.equals(propName)) { PaperSize propValue = (PaperSize) prop.getValue(); LayoutHelper.getReportLayout().setPaperSize(propValue); return; } else if (PAGE_PADDING_NAME.equals(propName)) { Padding propValue = (Padding) prop.getValue(); LayoutHelper.getReportLayout().setPagePadding(propValue); return; } else if (BG_IMAGE_NAME.equals(propName)) { String propValue = (String) prop.getValue(); LayoutHelper.getReportLayout().setBackgroundImage(propValue); return; } // row properties for (Integer i : rows) { if (ROW_CONDITION_NAME.equals(propName)) { RowFormattingConditions propValue = (RowFormattingConditions) prop.getValue(); RowElement element = BandUtil.getRowElement(LayoutHelper.getReportLayout(), i); element.setFormattingConditions(propValue); } else if (ROW_NEW_PAGE_NAME.equals(propName)) { Boolean newPage = (Boolean) prop.getValue(); RowElement element = BandUtil.getRowElement(LayoutHelper.getReportLayout(), i); element.setStartOnNewPage(newPage); } } ReportGrid reportGrid = Globals.getReportGrid(); DefaultGridModel reportGridModel = (DefaultGridModel) reportGrid.getModel(); List<BandElement> oldElements = new ArrayList<BandElement>(); List<BandElement> elements = new ArrayList<BandElement>(); List<Integer> rows = new ArrayList<Integer>(); List<Integer> columns = new ArrayList<Integer>(); for (ReportGridCell reportGridCell : reportGridCells) { BandElement element = reportGridCell.getValue(); oldElements.add(ObjectCloner.silenceDeepCopy(element)); int row = reportGridCell.getRow(); rows.add(row); int column = reportGridCell.getColumn(); columns.add(column); try { if (TEXT_PARAM_NAME.equals(propName)) { String propValue = (String) prop.getValue(); element.setText(propValue); } else if (FONT_PARAM_NAME.equals(propName)) { Font propValue = (Font) prop.getValue(); element.setFont(propValue); } else if (BACKGROUND_PARAM_NAME.equals(propName)) { Color propValue = (Color) prop.getValue(); element.setBackground(propValue); } else if (FOREGROUND_PARAM_NAME.equals(propName)) { Color propValue = (Color) prop.getValue(); element.setForeground(propValue); } else if (ALIGNMENT_PARAM_NAME.equals(propName)) { String propValue = (String) prop.getValue(); if (CENTER.equals(propValue)) { element.setHorizontalAlign(BandElement.CENTER); } else if (RIGHT.equals(propValue)) { element.setHorizontalAlign(BandElement.RIGHT); } else { element.setHorizontalAlign(BandElement.LEFT); } } else if (V_ALIGNMENT_PARAM_NAME.equals(propName)) { String propValue = (String) prop.getValue(); if (MIDDLE.equals(propValue)) { element.setVerticalAlign(BandElement.MIDDLE); } else if (TOP.equals(propValue)) { element.setVerticalAlign(BandElement.TOP); } else { element.setVerticalAlign(BandElement.BOTTOM); } } else if (PATTERN_PARAM_NAME.equals(propName)) { String propValue = (String) prop.getValue(); ((FieldBandElement) element).setPattern(propValue); } else if (WIDTH_PARAM_NAME.equals(propName)) { Integer propValue = (Integer) prop.getValue(); if (element instanceof ImageBandElement) { ((ImageBandElement) element).setWidth(propValue); } else { ((ImageColumnBandElement) element).setWidth(propValue); } } else if (HEIGHT_PARAM_NAME.equals(propName)) { Integer propValue = (Integer) prop.getValue(); if (element instanceof ImageBandElement) { ((ImageBandElement) element).setHeight(propValue); } else { ((ImageColumnBandElement) element).setHeight(propValue); } } else if (URL_PARAM_NAME.equals(propName)) { Hyperlink propValue = (Hyperlink) prop.getValue(); ((HyperlinkBandElement) element).setHyperlink(propValue); } else if (PADDING_PARAM_NAME.equals(propName)) { Padding propValue = (Padding) prop.getValue(); element.setPadding(propValue); } else if (BORDER_PARAM_NAME.equals(propName)) { ro.nextreports.engine.band.Border propValue = (ro.nextreports.engine.band.Border) prop.getValue(); element.setBorder(propValue); } else if (CONDITION_NAME.equals(propName)) { FormattingConditions propValue = (FormattingConditions) prop.getValue(); element.setFormattingConditions(propValue); } else if (HTML_ACC_HEADERS.equals(propName)) { String propValue = (String) prop.getValue(); if ((propValue != null) && propValue.trim().equals("")) { propValue = null; } element.setHtmlAccHeaders(propValue); } else if (HTML_ACC_ID.equals(propName)) { String propValue = (String) prop.getValue(); if ((propValue != null) && propValue.trim().equals("")) { propValue = null; } element.setHtmlAccId(propValue); } else if (HTML_ACC_SCOPE.equals(propName)) { String propValue = (String) prop.getValue(); if (HTML_SCOPE_NONE.equals(propValue)) { element.setHtmlAccScope(null); } else { element.setHtmlAccScope(propValue); } } else if(WRAPTEXT_PARAM_NAME.equals(propName)) { Boolean propValue = (Boolean)prop.getValue(); element.setWrapText(propValue); } else if(LINE_SPACING_PARAM_NAME.equals(propName)) { Integer propValue = (Integer)prop.getValue(); if (propValue.intValue() <= 0) { propValue = 100; } element.setPercentLineSpacing(propValue); } else if(TEXT_ROTATION_PARAM_NAME.equals(propName)) { Short propValue = (Short)prop.getValue(); element.setTextRotation(propValue); } else if(REPEATED_PARAM_NAME.equals(propName)) { Boolean propValue = (Boolean)prop.getValue(); element.setRepeatedValue(propValue); } else if(HIDE_WHEN_EXPRESSION_PARAM_NAME.equals(propName)) { String propValue = (String)prop.getValue(); if ((propValue != null) && propValue.trim().equals("")) { propValue = null; } element.setHideWhenExpression(propValue); } else if (ROW_CONDITION_NAME.equals(propName)) { // nothing to do here } else if (ROW_NEW_PAGE_NAME.equals(propName)) { // nothing to do here } else if (FOR_REPORT_PARAM_NAME.equals(propName)) { String propValue = (String) prop.getValue(); ((ForReportBandElement)element).setSql(propValue); } else { throw new RuntimeException("Invalid property name '" + propName + "'"); } elements.add(ObjectCloner.silenceDeepCopy(element)); } catch (Exception e) { LOG.error(e.getMessage(), e); } } int n = elements.size(); if (n > 0) { ignoreEvent = true; for (int i = 0; i < n; i++) { reportGridModel.fireGridCellUpdated(rows.get(i), columns.get(i)); } Globals.getReportUndoManager().addEdit(new ModifyElementsEdit(elements, oldElements, rows, columns)); ignoreEvent = false; } } public void refresh() { setProperties(new Property[0]); } public void selectionChanged(SelectionModelEvent event) { if (ignoreEvent) { return; } if (event.isRootSelection()) { List<Property> props = getReportProperties(LayoutHelper.getReportLayout()); setProperties(props.toArray(new Property[props.size()])); return; } try { isInit = true; SelectionModel selectionModel = (SelectionModel) event.getSource(); List<Cell> selectedCells = selectionModel.getSelectedCells(); List<Integer> selectedRows = selectionModel.getSelectedRows(); if (selectedCells.size() == 0) { if (selectedRows.size() > 0) { rows.clear(); rows.addAll(selectedRows); List<Property> props = getRowProperties(); setProperties(props.toArray(new Property[props.size()])); return; } setProperties(new Property[0]); return; } reportGridCells.clear(); for (Cell cell : selectedCells) { BandElement element = (BandElement) Globals.getReportGrid().getValueAt(cell.getRow(), cell.getColumn()); if (element != null) { reportGridCells.add(new ReportGridCell(element, cell.getRow(), cell.getColumn())); } formattingCellBand = BandUtil.getBand(LayoutHelper.getReportLayout(),cell.getRow()).getName(); } List<Property> props = getFilteredProperties(); setProperties(props.toArray(new Property[props.size()])); } catch (Throwable e) { e.printStackTrace(); LOG.error(e.getMessage(), e); } finally { isInit = false; } } private List<Property> getFilteredProperties() { List<Property> props = new ArrayList<Property>(); if (reportGridCells.size() == 0) { return props; } boolean multipleSelection = (reportGridCells.size() > 1); // System.out.println("multipleSelection = " + multipleSelection); // text if (!multipleSelection) { props.add(getTextProperty()); } // font props.add(getFontProperty()); // background props.add(getBackgroundProperty()); // foreground props.add(getForegroundProperty()); // alignment props.add(getAlignmentProperty()); // vertical alignment props.add(getVerticalAlignmentProperty()); // pattern //@todo a way to see that all reportGridCells have the same type? //if (!multipleSelection) { if (reportGridCells.get(0).getValue() instanceof FieldBandElement) { props.add(getPatternProperty()); } //} if ((reportGridCells.get(0).getValue() instanceof ImageBandElement) || (reportGridCells.get(0).getValue() instanceof ImageColumnBandElement) ) { props.add(getWidthProperty()); props.add(getHeightProperty()); } // padding props.add(getPaddingProperty()); // border props.add(getBorderProperty()); // wrap text props.add(getWrapTextProperty()); // line spacing props.add(getLineSpaceProperty()); // text rotation props.add(getTextRotationProperty()); // repeated value if ((reportGridCells.get(0).getValue() instanceof ColumnBandElement) || (reportGridCells.get(0).getValue() instanceof ExpressionBandElement)) { props.add(getRepeatedProperty()); } String bandName = BandUtil.getBand(LayoutHelper.getReportLayout(), reportGridCells.get(0)).getName(); boolean isStaticBand = !(bandName.equals(ReportLayout.DETAIL_BAND_NAME) || bandName.startsWith(ReportLayout.GROUP_HEADER_BAND_NAME_PREFIX) || bandName.startsWith(ReportLayout.GROUP_FOOTER_BAND_NAME_PREFIX)); boolean isFooterBand = bandName.equals(ReportLayout.FOOTER_BAND_NAME) || bandName.startsWith(ReportLayout.GROUP_FOOTER_BAND_NAME_PREFIX); props.add(getHideWhenExpressionProperty(isStaticBand, isFooterBand, bandName)); if (reportGridCells.get(0).getValue() instanceof HyperlinkBandElement) { props.add(getHyperlinkProperty()); } if (!multipleSelection) { if (reportGridCells.get(0).getValue() instanceof ColumnBandElement) { String column = ((ColumnBandElement)reportGridCells.get(0).getValue()).getColumn(); props.add(getConditionProperty(ReportLayoutUtil.getColumnType(column))); } else if (reportGridCells.get(0).getValue() instanceof FunctionBandElement) { props.add(getConditionProperty(null)); // type is java.lang.Double } else if (reportGridCells.get(0).getValue() instanceof ExpressionBandElement) { String expression = ((ExpressionBandElement)reportGridCells.get(0).getValue()).getExpression(); props.add(getConditionProperty(ReportLayoutUtil.getExpressionType(expression))); } } else { String type = null; boolean sameType = true; for (ReportGridCell cell : reportGridCells) { String cellType = null; if (cell.getValue() instanceof ColumnBandElement) { String column = ((ColumnBandElement)cell.getValue()).getColumn(); cellType = ReportLayoutUtil.getColumnType(column); } else if (cell.getValue() instanceof FunctionBandElement) { cellType = "java.lang.Double"; } else if (cell.getValue() instanceof ExpressionBandElement) { String expression = ((ExpressionBandElement)cell.getValue()).getExpression(); cellType = ReportLayoutUtil.getExpressionType(expression); } if (cellType == null) { // a cell that is not column, function or expression sameType = false; break; } if (type == null) { type = cellType; } else if (!type.equals(cellType)) { sameType = false; break; } } if (sameType) { props.add(getConditionProperty(type)); } } if (reportGridCells.get(0).getValue() instanceof ForReportBandElement) { props.add(getForReportSqlProperty()); } // html accesibility properties if (Globals.getAccessibilityHtml()) { props.add(getHtmlAccHeadersProperty()); props.add(getHtmlAccIdProperty()); props.add(getHtmlAccScopeProperty()); } return props; } ///// report properties private List<Property> getReportProperties(ReportLayout reportLayout) { List<Property> props = new ArrayList<Property>(); props.add(getReportTypeProperty(reportLayout)); props.add(getPageFormatProperty(reportLayout)); if (ReportLayout.CUSTOM.equals(reportLayout.getPageFormat())) { props.add(getPaperSizeProperty(reportLayout)); } props.add(getOrientationProperty(reportLayout)); props.add(getPagePaddingProperty(reportLayout)); props.add(getHeaderProperty(reportLayout)); props.add(getEmptyDataProperty(reportLayout)); props.add(getBackgroundImageProperty(reportLayout)); props.add(getTemplateProperty(reportLayout)); props.add(getTemplateSheetProperty(reportLayout)); props.add(getSheetNameProperty(reportLayout)); return props; } private List<Property> getRowProperties() { List<Property> props = new ArrayList<Property>(); props.add(getRowConditionProperty()); props.add(getRowNewPageProperty()); return props; } private Property getPageFormatProperty(ReportLayout reportLayout) { DefaultProperty pageFormatProp = new DefaultProperty(); pageFormatProp.setName(PAGE_FORMAT_NAME); pageFormatProp.setDisplayName(PAGE_FORMAT_PARAM_NAME); pageFormatProp.setType(String.class); ComboBoxPropertyEditor editor = new ComboBoxPropertyEditor(); editor.setAvailableValues(ReportLayout.getPageFormats()); pageFormatProp.setValue(reportLayout.getPageFormat()); editorRegistry.registerEditor(pageFormatProp, editor); return pageFormatProp; } private Property getPaperSizeProperty(ReportLayout reportLayout) { DefaultProperty paperSizeProp = new DefaultProperty(); paperSizeProp.setName(CUSTOM_PAGE_FORMAT_DEF_NAME); paperSizeProp.setDisplayName(CUSTOM_PAGE_FORMAT_DEF_PARAM_NAME); paperSizeProp.setType(PaperSize.class); paperSizeProp.setValue(reportLayout.getPaperSize()); CustomSizePropertyEditor sizeEditor = new CustomSizePropertyEditor(); editorRegistry.registerEditor(paperSizeProp, sizeEditor); return paperSizeProp; } private Property getPagePaddingProperty(ReportLayout reportLayout) { DefaultProperty pagePaddingProp = new DefaultProperty(); pagePaddingProp.setName(PAGE_PADDING_NAME); pagePaddingProp.setDisplayName(PAGE_PADDING_PARAM_NAME); pagePaddingProp.setType(Padding.class); pagePaddingProp.setValue(reportLayout.getPagePadding()); PaddingPropertyEditor paddingEditor = new PaddingPropertyEditor(); editorRegistry.registerEditor(pagePaddingProp, paddingEditor); return pagePaddingProp; } private Property getOrientationProperty(ReportLayout reportLayout) { DefaultProperty orientationProp = new DefaultProperty(); orientationProp.setName(ORIENTATION_NAME); orientationProp.setDisplayName(ORIENTATION_PARAM_NAME); orientationProp.setType(String.class); ComboBoxPropertyEditor editor = new ComboBoxPropertyEditor(); editor.setAvailableValues(new String[] { PORTRAIT, LANDSCAPE }); setOrientation(reportLayout.getOrientation(), orientationProp); editorRegistry.registerEditor(orientationProp, editor); return orientationProp; } private int getOrientation(String orientation) { if (LANDSCAPE.equals(orientation)) { return ResultExporter.LANDSCAPE; } else { return ResultExporter.PORTRAIT; } } private void setOrientation(int orientation, Property orientationProp) { String orientationS; switch (orientation) { case ResultExporter.LANDSCAPE: orientationS = LANDSCAPE; break; default: orientationS = PORTRAIT; break; } orientationProp.setValue(orientationS); } private Property getReportTypeProperty(ReportLayout reportLayout) { DefaultProperty reportTypeProp = new DefaultProperty(); reportTypeProp.setName(REPORT_TYPE_NAME); reportTypeProp.setDisplayName(REPORT_TYPE_PARAM_NAME); reportTypeProp.setType(String.class); ComboBoxPropertyEditor editor = new ComboBoxPropertyEditor(); editor.setAvailableValues(new String[] { DEFAULT_TYPE, ALARM_TYPE, TABLE_TYPE, INDICATOR_TYPE, DISPLAY_TYPE }); setReportType(reportLayout.getReportType(), reportTypeProp); editorRegistry.registerEditor(reportTypeProp, editor); return reportTypeProp; } private int getReportType(String type) { if (ALARM_TYPE.equals(type)) { return ResultExporter.ALARM_TYPE; } else if (TABLE_TYPE.equals(type)){ return ResultExporter.TABLE_TYPE; } else if (INDICATOR_TYPE.equals(type)){ return ResultExporter.INDICATOR_TYPE; } else if (DISPLAY_TYPE.equals(type)){ return ResultExporter.DISPLAY_TYPE; } else { return ResultExporter.DEFAULT_TYPE; } } private void setReportType(int type, Property typeProp) { String typeS; switch (type) { case ResultExporter.ALARM_TYPE: typeS = ALARM_TYPE; break; case ResultExporter.TABLE_TYPE: typeS = TABLE_TYPE; break; case ResultExporter.INDICATOR_TYPE: typeS = INDICATOR_TYPE; break; case ResultExporter.DISPLAY_TYPE: typeS = DISPLAY_TYPE; break; default: typeS = DEFAULT_TYPE; break; } typeProp.setValue(typeS); } private Property getHeaderProperty(ReportLayout reportLayout) { DefaultProperty headerPop = new DefaultProperty(); headerPop.setName(HEADER_NAME); headerPop.setDisplayName(HEADER_PARAM_NAME); headerPop.setType(Boolean.class); headerPop.setValue(reportLayout.isHeaderOnEveryPage()); return headerPop; } private Property getEmptyDataProperty(ReportLayout reportLayout) { DefaultProperty emptyDataProp = new DefaultProperty(); emptyDataProp.setName(EMPTY_DATA_NAME); emptyDataProp.setDisplayName(EMPTY_DATA_PARAM_NAME); emptyDataProp.setType(Boolean.class); emptyDataProp.setValue(reportLayout.isShowEmptyData()); return emptyDataProp; } private Property getBackgroundImageProperty(ReportLayout reportLayout) { DefaultProperty imageProp = new DefaultProperty(); imageProp.setName(BG_IMAGE_NAME); imageProp.setDisplayName(BG_IMAGE_PARAM_NAME); imageProp.setType(String.class); imageProp.setValue(reportLayout.getBackgroundImage()); ImagePropertyEditor imageEditor = new ImagePropertyEditor(); editorRegistry.registerEditor(imageProp, imageEditor); return imageProp; } private Property getTemplateProperty(ReportLayout reportLayout) { DefaultProperty templateProp = new DefaultProperty(); templateProp.setName(TEMPLATE_NAME); templateProp.setDisplayName(TEMPLATE_PARAM_NAME); templateProp.setType(String.class); templateProp.setValue(reportLayout.getTemplateName()); TemplatePropertyEditor imageEditor = new TemplatePropertyEditor(); editorRegistry.registerEditor(templateProp, imageEditor); return templateProp; } private Property getTemplateSheetProperty(ReportLayout reportLayout) { DefaultProperty sheetProp = new DefaultProperty(); sheetProp.setName(TEMPLATE_SHEET_NAME); sheetProp.setDisplayName(TEMPLATE_SHEET_PARAM_NAME); sheetProp.setType(Integer.class); sheetProp.setValue(reportLayout.getTemplateSheet()); return sheetProp; } private Property getSheetNameProperty(ReportLayout reportLayout) { DefaultProperty sheetNameProp = new DefaultProperty(); sheetNameProp.setName(SHEET_NAME); sheetNameProp.setDisplayName(SHEET_PARAM_NAME); sheetNameProp.setType(String.class); sheetNameProp.setValue(reportLayout.getSheetNames()); return sheetNameProp; } //// end report properties private Property getTextProperty() { DefaultProperty textProp = new DefaultProperty(); textProp.setName(TEXT_PARAM_NAME); textProp.setDisplayName(TEXT_PARAM_NAME); textProp.setType(String.class); BandElement be = reportGridCells.get(0).getValue(); textProp.setValue(be.getText()); if ((be instanceof FieldBandElement) || (be instanceof ImageBandElement)) { textProp.setEditable(false); } if (Globals.getAccessibilityHtml()) { textProp.setCategory(I18NSupport.getString("property.category.main")); } return textProp; } private Property getForReportSqlProperty() { DefaultProperty queryProp = new DefaultProperty(); queryProp.setName(FOR_REPORT_PARAM_NAME); queryProp.setDisplayName(FOR_REPORT_PARAM_NAME); queryProp.setType(String.class); queryProp.setValue(getUniqueForReportSql()); if (Globals.getAccessibilityHtml()) { queryProp.setCategory(I18NSupport.getString("property.category.main")); } SqlPropertyEditor sqlEditor = new SqlPropertyEditor(); editorRegistry.registerEditor(queryProp, sqlEditor); return queryProp; } private Property getFontProperty() { DefaultProperty fontProp = new DefaultProperty(); fontProp.setName(FONT_PARAM_NAME); fontProp.setDisplayName(FONT_PARAM_NAME); fontProp.setType(Font.class); fontProp.setValue(getUniqueFont()); if (Globals.getAccessibilityHtml()) { fontProp.setCategory(I18NSupport.getString("property.category.main")); } return fontProp; } private Property getWrapTextProperty() { DefaultProperty wrapProp = new DefaultProperty(); wrapProp.setName(WRAPTEXT_PARAM_NAME); wrapProp.setDisplayName(WRAPTEXT_PARAM_NAME); wrapProp.setType(Boolean.class); wrapProp.setValue(getUniqueWrapText()); if (Globals.getAccessibilityHtml()) { wrapProp.setCategory(I18NSupport.getString("property.category.main")); } return wrapProp; } private Property getLineSpaceProperty() { DefaultProperty lineSpaceProp = new DefaultProperty(); lineSpaceProp.setName(LINE_SPACING_PARAM_NAME); lineSpaceProp.setDisplayName(LINE_SPACING_PARAM_NAME); lineSpaceProp.setType(Integer.class); lineSpaceProp.setValue(getUniquePercentLineSpacing()); if (Globals.getAccessibilityHtml()) { lineSpaceProp.setCategory(I18NSupport.getString("property.category.main")); } return lineSpaceProp; } private Property getTextRotationProperty() { DefaultProperty rotationProp = new DefaultProperty(); rotationProp.setName(TEXT_ROTATION_PARAM_NAME); rotationProp.setDisplayName(TEXT_ROTATION_PARAM_NAME); rotationProp.setType(Short.class); rotationProp.setValue(getUniqueTextRotation()); ComboBoxPropertyEditor alignmentEditor = new ComboBoxPropertyEditor(); alignmentEditor.setAvailableValues(new Short[] { -90, 0, 90 }); if (Globals.getAccessibilityHtml()) { rotationProp.setCategory(I18NSupport.getString("property.category.main")); } editorRegistry.registerEditor(rotationProp, alignmentEditor); return rotationProp; } private Property getRepeatedProperty() { DefaultProperty repeatedProp = new DefaultProperty(); repeatedProp.setName(REPEATED_PARAM_NAME); repeatedProp.setDisplayName(REPEATED_PARAM_NAME); repeatedProp.setType(Boolean.class); repeatedProp.setValue(getUniqueRepeated()); if (Globals.getAccessibilityHtml()) { repeatedProp.setCategory(I18NSupport.getString("property.category.main")); } return repeatedProp; } private Property getHideWhenExpressionProperty(boolean isStaticBand, boolean isFooterBand, String bandName) { DefaultProperty hideWhenExpression = new DefaultProperty(); hideWhenExpression.setName(HIDE_WHEN_EXPRESSION_PARAM_NAME); hideWhenExpression.setDisplayName(HIDE_WHEN_EXPRESSION_PARAM_NAME); hideWhenExpression.setType(String.class); hideWhenExpression.setValue(getUniqueHideWhenExpression()); if (Globals.getAccessibilityHtml()) { hideWhenExpression.setCategory(I18NSupport.getString("property.category.main")); } HideWhenExpressionPropertyEditor hideEditor = new HideWhenExpressionPropertyEditor(isStaticBand, isFooterBand, bandName); editorRegistry.registerEditor(hideWhenExpression, hideEditor); return hideWhenExpression; } private Property getBackgroundProperty() { DefaultProperty backgroundProp = new DefaultProperty(); backgroundProp.setName(BACKGROUND_PARAM_NAME); backgroundProp.setDisplayName(BACKGROUND_PARAM_NAME); backgroundProp.setType(Color.class); backgroundProp.setValue(getUniqueBackground()); if (Globals.getAccessibilityHtml()) { backgroundProp.setCategory(I18NSupport.getString("property.category.main")); } ExtendedColorPropertyEditor colorEditor = new ExtendedColorPropertyEditor(); editorRegistry.registerEditor(backgroundProp, colorEditor); return backgroundProp; } private Property getForegroundProperty() { DefaultProperty foregroundProp = new DefaultProperty(); foregroundProp.setName(FOREGROUND_PARAM_NAME); foregroundProp.setDisplayName(FOREGROUND_PARAM_NAME); foregroundProp.setType(Color.class); foregroundProp.setValue(getUniqueForeground()); if (Globals.getAccessibilityHtml()) { foregroundProp.setCategory(I18NSupport.getString("property.category.main")); } ExtendedColorPropertyEditor colorEditor = new ExtendedColorPropertyEditor(); editorRegistry.registerEditor(foregroundProp, colorEditor); return foregroundProp; } private Property getAlignmentProperty() { DefaultProperty alignmentProp = new DefaultProperty(); alignmentProp.setName(ALIGNMENT_PARAM_NAME); alignmentProp.setDisplayName(ALIGNMENT_PARAM_NAME); alignmentProp.setType(String.class); ComboBoxPropertyEditor alignmentEditor = new ComboBoxPropertyEditor(); alignmentEditor.setAvailableValues(new String[] { LEFT, CENTER, RIGHT }); int alignment = getUniqueAllignment(); switch (alignment) { case BandElement.CENTER: alignmentProp.setValue(CENTER); break; case BandElement.RIGHT: alignmentProp.setValue(RIGHT); break; case BandElement.LEFT: alignmentProp.setValue(LEFT); break; default: alignmentProp.setValue(null); } if (Globals.getAccessibilityHtml()) { alignmentProp.setCategory(I18NSupport.getString("property.category.main")); } editorRegistry.registerEditor(alignmentProp, alignmentEditor); return alignmentProp; } private Property getVerticalAlignmentProperty() { DefaultProperty alignmentProp = new DefaultProperty(); alignmentProp.setName(V_ALIGNMENT_PARAM_NAME); alignmentProp.setDisplayName(V_ALIGNMENT_PARAM_NAME); alignmentProp.setType(String.class); ComboBoxPropertyEditor alignmentEditor = new ComboBoxPropertyEditor(); alignmentEditor.setAvailableValues(new String[] { TOP, MIDDLE, BOTTOM }); int alignment = getUniqueVAllignment(); switch (alignment) { case BandElement.TOP: alignmentProp.setValue(TOP); break; case BandElement.MIDDLE: alignmentProp.setValue(MIDDLE); break; case BandElement.BOTTOM: alignmentProp.setValue(BOTTOM); break; default: alignmentProp.setValue(null); } if (Globals.getAccessibilityHtml()) { alignmentProp.setCategory(I18NSupport.getString("property.category.main")); } editorRegistry.registerEditor(alignmentProp, alignmentEditor); return alignmentProp; } private Property getPatternProperty() { DefaultProperty patternProp = new DefaultProperty(); patternProp.setName(PATTERN_PARAM_NAME); patternProp.setDisplayName(PATTERN_PARAM_NAME); patternProp.setType(String.class); patternProp.setValue(((FieldBandElement) reportGridCells.get(0).getValue()).getPattern()); if (Globals.getAccessibilityHtml()) { patternProp.setCategory(I18NSupport.getString("property.category.main")); } FieldPatternPropertyEditor patternEditor = new FieldPatternPropertyEditor(); editorRegistry.registerEditor(patternProp, patternEditor); return patternProp; } private Property getWidthProperty() { DefaultProperty widthProp = new DefaultProperty(); widthProp.setName(WIDTH_PARAM_NAME); widthProp.setDisplayName(WIDTH_PARAM_NAME); widthProp.setType(Integer.class); if (reportGridCells.get(0).getValue() instanceof ImageBandElement) { widthProp.setValue(((ImageBandElement) reportGridCells.get(0).getValue()).getWidth()); } else { widthProp.setValue(((ImageColumnBandElement) reportGridCells.get(0).getValue()).getWidth()); } if (Globals.getAccessibilityHtml()) { widthProp.setCategory(I18NSupport.getString("property.category.main")); } IntegerPropertyEditor widthEditor = new IntegerPropertyEditor(); editorRegistry.registerEditor(widthProp, widthEditor); return widthProp; } private Property getHeightProperty() { DefaultProperty heightProp = new DefaultProperty(); heightProp.setName(HEIGHT_PARAM_NAME); heightProp.setDisplayName(HEIGHT_PARAM_NAME); heightProp.setType(Integer.class); if (reportGridCells.get(0).getValue() instanceof ImageBandElement) { heightProp.setValue(((ImageBandElement) reportGridCells.get(0).getValue()).getHeight()); } else { heightProp.setValue(((ImageColumnBandElement) reportGridCells.get(0).getValue()).getHeight()); } if (Globals.getAccessibilityHtml()) { heightProp.setCategory(I18NSupport.getString("property.category.main")); } IntegerPropertyEditor heightEditor = new IntegerPropertyEditor(); editorRegistry.registerEditor(heightProp, heightEditor); return heightProp; } private Property getHyperlinkProperty() { DefaultProperty urlProp = new DefaultProperty(); urlProp.setName(URL_PARAM_NAME); urlProp.setDisplayName(URL_PARAM_NAME); urlProp.setType(Hyperlink.class); urlProp.setValue(((HyperlinkBandElement) reportGridCells.get(0).getValue()).getHyperlink()); if (Globals.getAccessibilityHtml()) { urlProp.setCategory(I18NSupport.getString("property.category.main")); } HyperlinkPropertyEditor hyperlinkEditor = new HyperlinkPropertyEditor(); editorRegistry.registerEditor(urlProp, hyperlinkEditor); return urlProp; } private Property getPaddingProperty() { DefaultProperty paddingProp = new DefaultProperty(); paddingProp.setName(PADDING_PARAM_NAME); paddingProp.setDisplayName(PADDING_PARAM_NAME); paddingProp.setType(Padding.class); paddingProp.setValue(getUniquePadding()); if (Globals.getAccessibilityHtml()) { paddingProp.setCategory(I18NSupport.getString("property.category.main")); } PaddingPropertyEditor paddingEditor = new PaddingPropertyEditor(); editorRegistry.registerEditor(paddingProp, paddingEditor); return paddingProp; } private Property getBorderProperty() { DefaultProperty borderProp = new DefaultProperty(); borderProp.setName(BORDER_PARAM_NAME); borderProp.setDisplayName(BORDER_PARAM_NAME); borderProp.setType(ro.nextreports.engine.band.Border.class); borderProp.setValue(getUniqueBorder()); if (Globals.getAccessibilityHtml()) { borderProp.setCategory(I18NSupport.getString("property.category.main")); } BorderPropertyEditor borderEditor = new BorderPropertyEditor(); editorRegistry.registerEditor(borderProp, borderEditor); return borderProp; } private Property getConditionProperty(String type) { DefaultProperty conditionProp = new DefaultProperty(); conditionProp.setName(CONDITION_NAME); conditionProp.setDisplayName(CONDITION_PARAM_NAME); conditionProp.setType(FormattingConditions.class); conditionProp.setValue(getUniqueBorder()); conditionProp.setValue(reportGridCells.get(0).getValue().getFormattingConditions()); if (Globals.getAccessibilityHtml()) { conditionProp.setCategory(I18NSupport.getString("property.category.main")); } FormattingConditionsPropertyEditor conditionEditor = new FormattingConditionsPropertyEditor(type, formattingCellBand); editorRegistry.registerEditor(conditionProp, conditionEditor); return conditionProp; } private Property getRowConditionProperty() { DefaultProperty conditionProp = new DefaultProperty(); conditionProp.setName(ROW_CONDITION_NAME); conditionProp.setDisplayName(ROW_CONDITION_PARAM_NAME); conditionProp.setType(FormattingConditions.class); conditionProp.setValue(BandUtil.getRowElement(LayoutHelper.getReportLayout(), rows.get(0)).getFormattingConditions()); if (Globals.getAccessibilityHtml()) { conditionProp.setCategory(I18NSupport.getString("property.category.main")); } RowFormattingConditionsPropertyEditor conditionEditor = new RowFormattingConditionsPropertyEditor(rows); editorRegistry.registerEditor(conditionProp, conditionEditor); return conditionProp; } private Property getRowNewPageProperty() { DefaultProperty newPageProp = new DefaultProperty(); newPageProp.setName(ROW_NEW_PAGE_NAME); newPageProp.setDisplayName(ROW_NEW_PAGE_PARAM_NAME); newPageProp.setType(Boolean.class); newPageProp.setValue(BandUtil.getRowElement(LayoutHelper.getReportLayout(), rows.get(0)).isStartOnNewPage()); if (Globals.getAccessibilityHtml()) { newPageProp.setCategory(I18NSupport.getString("property.category.main")); } return newPageProp; } private Property getHtmlAccHeadersProperty() { DefaultProperty accHeaders = new DefaultProperty(); accHeaders.setName(HTML_ACC_HEADERS); accHeaders.setDisplayName(HTML_ACC_HEADERS); accHeaders.setType(String.class); accHeaders.setValue(getUniqueHtmlAccHeaders()); if (Globals.getAccessibilityHtml()) { accHeaders.setCategory(I18NSupport.getString("property.category.accessibility.html")); } return accHeaders; } private Property getHtmlAccIdProperty() { DefaultProperty accId = new DefaultProperty(); accId.setName(HTML_ACC_ID); accId.setDisplayName(HTML_ACC_ID); accId.setType(String.class); accId.setValue(getUniqueHtmlAccId()); if (Globals.getAccessibilityHtml()) { accId.setCategory(I18NSupport.getString("property.category.accessibility.html")); } return accId; } private Property getHtmlAccScopeProperty() { DefaultProperty scopeProp = new DefaultProperty(); scopeProp.setName(HTML_ACC_SCOPE); scopeProp.setDisplayName(HTML_ACC_SCOPE); scopeProp.setType(String.class); ComboBoxPropertyEditor alignmentEditor = new ComboBoxPropertyEditor(); alignmentEditor.setAvailableValues(new String[] { HTML_SCOPE_NONE, HTML_SCOPE_ROW, HTML_SCOPE_COL }); String scope = getUniqueHtmlAccScope(); if (HTML_SCOPE_ROW.equals(scope)) { scopeProp.setValue(HTML_SCOPE_ROW); } else if (HTML_SCOPE_COL.equals(scope)) { scopeProp.setValue(HTML_SCOPE_COL); } else { scopeProp.setValue(null); } if (Globals.getAccessibilityHtml()) { scopeProp.setCategory(I18NSupport.getString("property.category.accessibility.html")); } editorRegistry.registerEditor(scopeProp, alignmentEditor); return scopeProp; } private Font getUniqueFont() { Font font = null; int n = reportGridCells.size(); for (int i = 0; i < n; i++) { BandElement element = reportGridCells.get(i).getValue(); if (i == 0) { font = element.getFont(); continue; } if (!font.equals(element.getFont())) { return null; } } return font; } private Boolean getUniqueWrapText() { Boolean wrap = null; int n = reportGridCells.size(); for (int i = 0; i < n; i++) { BandElement element = reportGridCells.get(i).getValue(); if (i == 0) { wrap = Boolean.valueOf(element.isWrapText()); continue; } if (!wrap.equals(element.isWrapText())) { return null; } } return wrap; } private Short getUniqueTextRotation() { Short rotation = null; int n = reportGridCells.size(); for (int i = 0; i < n; i++) { BandElement element = reportGridCells.get(i).getValue(); if (i == 0) { rotation = element.getTextRotation(); continue; } if (rotation != element.getTextRotation()) { return null; } } return rotation; } private Integer getUniquePercentLineSpacing() { Integer space = null; int n = reportGridCells.size(); for (int i = 0; i < n; i++) { BandElement element = reportGridCells.get(i).getValue(); if (i == 0) { space = element.getPercentLineSpacing(); continue; } if (space != element.getPercentLineSpacing()) { return null; } } return space; } private Boolean getUniqueRepeated() { Boolean repeated = null; int n = reportGridCells.size(); for (int i = 0; i < n; i++) { BandElement element = reportGridCells.get(i).getValue(); if (i == 0) { repeated = Boolean.valueOf(element.isRepeatedValue()); continue; } if (!repeated.equals(element.isRepeatedValue())) { return null; } } return repeated; } private String getUniqueHideWhenExpression() { String hideWhenExpression = null; int n = reportGridCells.size(); for (int i = 0; i < n; i++) { BandElement element = reportGridCells.get(i).getValue(); if (i == 0) { hideWhenExpression = element.getHideWhenExpression(); continue; } if ((hideWhenExpression == null) || !hideWhenExpression.equals(element.getHideWhenExpression())) { return null; } } return hideWhenExpression; } private Color getUniqueBackground() { Color background = null; int n = reportGridCells.size(); for (int i = 0; i < n; i++) { BandElement element = reportGridCells.get(i).getValue(); if (i == 0) { background = element.getBackground(); continue; } if (!background.equals(element.getBackground())) { return null; } } return background; } private Color getUniqueForeground() { Color foreground = null; int n = reportGridCells.size(); for (int i = 0; i < n; i++) { BandElement element = reportGridCells.get(i).getValue(); if (i == 0) { foreground = element.getForeground(); continue; } if (!foreground.equals(element.getForeground())) { return null; } } return foreground; } private Padding getUniquePadding() { Padding padding = null; int n = reportGridCells.size(); for (int i = 0; i < n; i++) { BandElement element = reportGridCells.get(i).getValue(); if (i == 0) { padding = element.getPadding(); if (padding == null) { return null; } else { continue; } } if (!padding.equals(element.getPadding())) { return null; } } return padding; } private ro.nextreports.engine.band.Border getUniqueBorder() { ro.nextreports.engine.band.Border border = null; int n = reportGridCells.size(); for (int i = 0; i < n; i++) { BandElement element = reportGridCells.get(i).getValue(); if (i == 0) { border = element.getBorder(); if (border == null) { return null; } else { continue; } } if (!border.equals(element.getBorder())) { return null; } } return border; } private int getUniqueAllignment() { int allignment = -1; int n = reportGridCells.size(); for (int i = 0; i < n; i++) { BandElement element = reportGridCells.get(i).getValue(); if (i == 0) { allignment = element.getHorizontalAlign(); continue; } if (allignment != element.getHorizontalAlign()) { return -1; } } return allignment; } private int getUniqueVAllignment() { int allignment = -1; int n = reportGridCells.size(); for (int i = 0; i < n; i++) { BandElement element = reportGridCells.get(i).getValue(); if (i == 0) { allignment = element.getVerticalAlign(); continue; } if (allignment != element.getVerticalAlign()) { return -1; } } return allignment; } private String getUniqueHtmlAccHeaders() { String accHeaders = null; int n = reportGridCells.size(); for (int i = 0; i < n; i++) { BandElement element = reportGridCells.get(i).getValue(); if (i == 0) { accHeaders = element.getHtmlAccHeaders(); continue; } if ((accHeaders == null) || !accHeaders.equals(element.getHtmlAccHeaders())) { return null; } } return accHeaders; } private String getUniqueHtmlAccId() { String accId = null; int n = reportGridCells.size(); for (int i = 0; i < n; i++) { BandElement element = reportGridCells.get(i).getValue(); if (i == 0) { accId = element.getHtmlAccId(); continue; } if ((accId == null) || !accId.equals(element.getHtmlAccId())) { return null; } } return accId; } private String getUniqueHtmlAccScope() { String accScope = null; int n = reportGridCells.size(); for (int i = 0; i < n; i++) { BandElement element = reportGridCells.get(i).getValue(); if (i == 0) { accScope = element.getHtmlAccScope(); continue; } if ((accScope == null) || !accScope.equals(element.getHtmlAccScope())) { return null; } } return accScope; } private String getUniqueForReportSql() { String sql = null; int n = reportGridCells.size(); for (int i = 0; i < n; i++) { ForReportBandElement element = (ForReportBandElement)reportGridCells.get(i).getValue(); if (i == 0) { sql = element.getSql(); continue; } if ((sql == null) || !sql.equals(element.getSql())) { return null; } } return sql; } }