public void actionPerformed(final ActionEvent e) { final ReportRenderContext activeContext = getActiveContext(); if (activeContext == null) { return; } final ReportDesignerContext context = getReportDesignerContext(); final Component parent = context.getParent(); final Window window = LibSwingUtil.getWindowAncestor(parent); final RowBandingDialog dialog; if (window instanceof JDialog) { dialog = new RowBandingDialog((JDialog) window); } else if (window instanceof JFrame) { dialog = new RowBandingDialog((JFrame) window); } else { dialog = new RowBandingDialog(); } final RowBandingFunction function = findRowbandingFunction(activeContext); final AbstractReportDefinition report = activeContext.getReportDefinition(); if (function == null) { final RowBandingFunction newFunction = new RowBandingFunction(); if (dialog.performEdit(newFunction)) { report.getExpressions().add(newFunction); activeContext .getUndo() .addChange( ActionMessages.getString("EditRowBandingAction.Text"), new ExpressionAddedUndoEntry(report.getExpressions().size() - 1, newFunction)); report.notifyNodeChildAdded(function); } } else { final RowBandingFunction instance = (RowBandingFunction) function.getInstance(); if (dialog.performEdit(instance)) { final ExpressionCollection expressionCollection = report.getExpressions(); final int idx = expressionCollection.indexOf(function); expressionCollection.set(idx, instance); activeContext .getUndo() .addChange( ActionMessages.getString("EditRowBandingAction.Text"), new ExpressionEditUndoEntry(idx, function, instance)); report.fireModelLayoutChanged(report, ReportModelEvent.NODE_PROPERTIES_CHANGED, instance); } } }
/** Invoked when an action occurs. */ public void actionPerformed(final ActionEvent e) { final ReportDocumentContext activeContext = getActiveContext(); if (activeContext == null) { return; } final ReportDesignerContext context = getReportDesignerContext(); final Component parent = context.getView().getParent(); final Window window = LibSwingUtil.getWindowAncestor(parent); final DocumentMetaDataDialog dialog; if (window instanceof JDialog) { dialog = new DocumentMetaDataDialog((JDialog) window); } else if (window instanceof JFrame) { dialog = new DocumentMetaDataDialog((JFrame) window); } else { dialog = new DocumentMetaDataDialog(); } try { final MasterReport report = activeContext.getContextRoot(); final DocumentBundle bundle = report.getBundle(); final DocumentMetaData oldMetaData = (DocumentMetaData) bundle.getMetaData().clone(); final DocumentMetaData result = dialog.performEdit( oldMetaData, report.getResourceManager(), report.getDefinitionSource()); if (result == null) { return; } final MetaDataEditUndoEntry undoEntry = new MetaDataEditUndoEntry(oldMetaData, result); undoEntry.redo(activeContext); activeContext .getUndo() .addChange(ActionMessages.getString("EditReportPropertiesAction.Text"), undoEntry); } catch (CloneNotSupportedException cne) { // should not happen UncaughtExceptionsModel.getInstance().addException(cne); } }
/** Invoked when an action occurs. */ public void actionPerformed(final ActionEvent e) { final ReportDesignerContext reportDesignerContext = getReportDesignerContext(); final ReportRenderContext activeContext = getActiveContext(); if (activeContext == null) { return; } if (activeContext.isChanged()) { // ask the user and maybe save the report.. final int option = JOptionPane.showConfirmDialog( reportDesignerContext.getParent(), Messages.getInstance() .getString("PublishToServerAction.ReportModifiedWarning.Message"), Messages.getInstance().getString("PublishToServerAction.ReportModifiedWarning.Title"), JOptionPane.YES_NO_CANCEL_OPTION, JOptionPane.WARNING_MESSAGE); if (option == JOptionPane.YES_OPTION) { if (SaveReportAction.saveReport( reportDesignerContext, activeContext, reportDesignerContext.getParent()) == false) { return; } } if (option == JOptionPane.CANCEL_OPTION) { return; } } final PublishToServerTask publishToServerTask = new PublishToServerTask(reportDesignerContext, reportDesignerContext.getParent()); final LoginTask loginTask = new LoginTask( reportDesignerContext, reportDesignerContext.getParent(), publishToServerTask); SwingUtilities.invokeLater(loginTask); }
public void run() { final ReportDocumentContext context = dragContext.getRenderContext(); if (rootband) { final int result = JOptionPane.showOptionDialog( dragContext.getRepresentationContainer(), Messages.getString( "CrosstabReportElementDragHandler.BandedOrInlineSubreportQuestion"), Messages.getString("CrosstabReportElementDragHandler.InsertSubreport"), JOptionPane.YES_NO_CANCEL_OPTION, JOptionPane.PLAIN_MESSAGE, null, new String[] { Messages.getString("CrosstabReportElementDragHandler.Inline"), Messages.getString("CrosstabReportElementDragHandler.Banded"), Messages.getString("CrosstabReportElementDragHandler.Cancel") }, Messages.getString("CrosstabReportElementDragHandler.Inline")); if (result == JOptionPane.CLOSED_OPTION || result == 2) { return; } if (result == 0) { final UndoManager undo = context.getUndo(); undo.addChange( Messages.getString("CrosstabReportElementDragHandler.UndoEntry"), new ElementEditUndoEntry( parent.getObjectID(), parent.getElementCount(), null, subReport)); parent.addElement(subReport); } else { final AbstractRootLevelBand arb = (AbstractRootLevelBand) parent; final UndoManager undo = context.getUndo(); undo.addChange( Messages.getString("CrosstabReportElementDragHandler.UndoEntry"), new BandedSubreportEditUndoEntry( parent.getObjectID(), arb.getSubReportCount(), null, subReport)); arb.addSubReport(subReport); } } else { final UndoManager undo = context.getUndo(); undo.addChange( Messages.getString("CrosstabReportElementDragHandler.UndoEntry"), new ElementEditUndoEntry( parent.getObjectID(), parent.getElementCount(), null, subReport)); parent.addElement(subReport); } final ReportDesignerContext designerContext = dragContext.getDesignerContext(); final Window window = LibSwingUtil.getWindowAncestor(designerContext.getView().getParent()); final AbstractReportDefinition reportDefinition = designerContext.getActiveContext().getReportDefinition(); try { // Create the new subreport tab - this is where the contents of the Crosstab // dialog will go. Zoom the crosstab canvas to 150% as crosstab has a lot of elements to // display subReport.setDataFactory(reportDefinition.getDataFactory()); subReport .getReportDefinition() .setAttribute(ReportDesignerBoot.DESIGNER_NAMESPACE, ReportDesignerBoot.ZOOM, 1.5f); final ResourceBundleFactory rbf = subReport.getResourceBundleFactory(); subReport.setResourceBundleFactory(rbf); final int idx = designerContext.addSubReport(designerContext.getActiveContext(), subReport); designerContext.setActiveDocument(designerContext.getReportRenderContext(idx)); } catch (ReportDataFactoryException e) { UncaughtExceptionsModel.getInstance().addException(e); } // Prompt user to either create or use an existing data-source. final SubReportDataSourceDialog crosstabDataSourceDialog; if (window instanceof Dialog) { crosstabDataSourceDialog = new SubReportDataSourceDialog((Dialog) window); } else if (window instanceof Frame) { crosstabDataSourceDialog = new SubReportDataSourceDialog((Frame) window); } else { crosstabDataSourceDialog = new SubReportDataSourceDialog(); } // User has prompted to select a data-source. Get the selected query final String queryName = crosstabDataSourceDialog.performSelection(designerContext); if (queryName != null) { subReport.setQuery(queryName); // Invoke Crosstab dialog final InsertCrosstabGroupAction crosstabAction = new InsertCrosstabGroupAction(); crosstabAction.setReportDesignerContext(designerContext); crosstabAction.actionPerformed(new ActionEvent(this, ActionEvent.ACTION_PERFORMED, "")); } dragContext .getRenderContext() .getSelectionModel() .setSelectedElements(new Object[] {subReport}); }
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); } }