private JPanel createSecondaryDataSourcePanel() { final JPanel innerSecondaryDataSourcePanel = new JPanel(new BorderLayout()); innerSecondaryDataSourcePanel.add( new SortHeaderPanel(secondaryDataSourcePropertiesTableModel), BorderLayout.NORTH); final JComboBox comboBox = new SmartComboBox(editModel.getSecondaryDataSourcesModel()); comboBox.setRenderer(new ExpressionListCellRenderer()); innerSecondaryDataSourcePanel.add(comboBox, BorderLayout.CENTER); final JPanel secondaryDataSourcePanel = new JPanel(new BorderLayout()); secondaryDataSourcePanel.add(innerSecondaryDataSourcePanel, BorderLayout.NORTH); secondaryDataSourcePanel.add( configureExpressionTable(secondaryDataSourceTable, secondaryDataSourcePropertiesTableModel), BorderLayout.CENTER); return secondaryDataSourcePanel; }
public ChartEditingResult performEdit( final Element element, final ReportDesignerContext reportDesignerContext) throws CloneNotSupportedException { if (element == null) { throw new NullPointerException(); } if (reportDesignerContext == null) { throw new NullPointerException(); } if (LegacyChartsUtil.isLegacyChartElement(element) == false) { return null; } try { chartTable.setReportDesignerContext(reportDesignerContext); primaryDataSourceTable.setReportDesignerContext(reportDesignerContext); secondaryDataSourceTable.setReportDesignerContext(reportDesignerContext); chartPropertiesTableModel.setActiveContext(reportDesignerContext.getActiveContext()); primaryDataSourcePropertiesTableModel.setActiveContext( reportDesignerContext.getActiveContext()); secondaryDataSourcePropertiesTableModel.setActiveContext( reportDesignerContext.getActiveContext()); final Element editableElement = element.derive(); final Expression chartExpression = editableElement.getAttributeExpression( AttributeNames.Core.NAMESPACE, AttributeNames.Core.VALUE); final Expression originalPrimaryDataSourceExpression; final Expression originalSecondaryDataSourceExpression; if (chartExpression != null) { originalPrimaryDataSourceExpression = extractPrimaryDatasource(element); originalSecondaryDataSourceExpression = extractSecondaryDatasource(element); editModel.setChartExpression(chartExpression.getInstance()); if (originalPrimaryDataSourceExpression != null) { editModel.setPrimaryDataSource(originalPrimaryDataSourceExpression.getInstance()); } else { editModel.setPrimaryDataSource(null); } if (originalSecondaryDataSourceExpression != null) { editModel.setSecondaryDataSource(originalSecondaryDataSourceExpression.getInstance()); } else { editModel.setSecondaryDataSource(null); } } else { editModel.setChartExpression(null); editModel.setPrimaryDataSource(null); editModel.setSecondaryDataSource(null); originalPrimaryDataSourceExpression = null; originalSecondaryDataSourceExpression = null; } if (editModel.getCurrentChartType() != null) { final ChartType chartType = editModel.getCurrentChartType(); if (editModel.getPrimaryDataSource() == null) { final Class dataSourceImplementation = chartType.getPreferredPrimaryDataSourceImplementation(); final ExpressionMetaData data = ExpressionRegistry.getInstance() .getExpressionMetaData(dataSourceImplementation.getName()); editModel.getPrimaryDataSourcesModel().setSelectedItem(data); } if (editModel.getSecondaryDataSource() == null) { final Class dataSourceImplementation = chartType.getPreferredSecondaryDataSourceImplementation(); if (dataSourceImplementation != null) { final ExpressionMetaData data = ExpressionRegistry.getInstance() .getExpressionMetaData(dataSourceImplementation.getName()); editModel.getSecondaryDataSourcesModel().setSelectedItem(data); } } } if (performEdit() == false) { return null; } secondaryDataSourceTable.stopEditing(); primaryDataSourceTable.stopEditing(); chartTable.stopEditing(); return new ChartEditingResult( chartExpression, originalPrimaryDataSourceExpression, originalSecondaryDataSourceExpression, editModel.getChartExpression(), editModel.getPrimaryDataSource(), editModel.getSecondaryDataSource()); } finally { chartTable.setReportDesignerContext(null); primaryDataSourceTable.setReportDesignerContext(null); secondaryDataSourceTable.setReportDesignerContext(null); chartPropertiesTableModel.setActiveContext(null); primaryDataSourcePropertiesTableModel.setActiveContext(null); secondaryDataSourcePropertiesTableModel.setActiveContext(null); } }