void actionPdf() throws IOException { final Range range = MainPanel.getParentMainPanelFromChild(this).getSelectedRange(); final File tempFile = createTempFileForPdf(); final Collector collector = getCollector(); final List<JavaInformations> javaInformationsList = getJavaInformationsList(); final RemoteCollector remoteCollector = getRemoteCollector(); final Map<String, byte[]> smallGraphs = remoteCollector.collectJRobins( PdfCoreReport.SMALL_GRAPH_WIDTH, PdfCoreReport.SMALL_GRAPH_HEIGHT); final Map<String, byte[]> smallOtherGraphs = remoteCollector.collectOtherJRobins( PdfCoreReport.SMALL_GRAPH_WIDTH, PdfCoreReport.SMALL_GRAPH_HEIGHT); final Map<String, byte[]> largeGraphs = remoteCollector.collectJRobins( PdfCoreReport.LARGE_GRAPH_WIDTH, PdfCoreReport.LARGE_GRAPH_HEIGHT); try (final OutputStream output = createFileOutputStream(tempFile)) { final PdfReport pdfReport = new PdfReport(collector, collectorServer, javaInformationsList, range, output); try { // PdfReport utilise collector.getRangeCountersToBeDisplayed(range), // mais les counters contiennent les bonnes données pour la période TOUT // et non pas celle de la variable "range" pdfReport.setCounterRange(Period.TOUT.getRange()); pdfReport.preInitGraphs(smallGraphs, smallOtherGraphs, largeGraphs); if (!collectorServer) { final List<CounterRequestContext> currentRequests = new ArrayList<>(); for (final List<CounterRequestContext> requests : getRemoteCollector().getCurrentRequests().values()) { currentRequests.addAll(requests); } Collections.sort( currentRequests, Collections.reverseOrder( new CounterRequestContextComparator(System.currentTimeMillis()))); pdfReport.setCurrentRequests(currentRequests); } pdfReport.toPdf(); } finally { pdfReport.close(); } } Desktop.getDesktop().open(tempFile); }
MainButtonsPanel( RemoteCollector remoteCollector, Range selectedRange, final URL monitoringUrl, boolean collectorServer) { super(remoteCollector, new BorderLayout()); this.collectorServer = collectorServer; setOpaque(true); setBackground(BACKGROUND); final JPanel centerPanel = new JPanel(new FlowLayout(FlowLayout.CENTER)); centerPanel.setOpaque(false); add(centerPanel, BorderLayout.CENTER); final CustomPeriodPanel customPeriodPanel = new CustomPeriodPanel(remoteCollector, selectedRange); add(customPeriodPanel, BorderLayout.SOUTH); final MButton refreshButton = createRefreshButton(); final MButton pdfButton = createPdfButton(); // on ne peut pas instancier defaultSerializable ici car sinon, // les données ne seraient plus à jour après une actualisation, donc on passe la valeur spéciale // null final MButton xmlJsonButton = createXmlJsonButton(null); final MButton onlineHelpButton = createOnlineHelpButton(); final MButton monitoringButton = new MButton(getString("Monitoring"), MONITORING_ICON); monitoringButton.setToolTipText( getFormattedString("Monitoring_sur", remoteCollector.getApplication())); centerPanel.add(refreshButton); centerPanel.add(pdfButton); centerPanel.add(xmlJsonButton); centerPanel.add(onlineHelpButton); centerPanel.add(monitoringButton); addPeriodButtons(centerPanel, customPeriodPanel); refreshButton.addActionListener( new ActionListener() { @Override public void actionPerformed(ActionEvent e) { actionRefresh(); } }); pdfButton.addActionListener( new ActionListener() { @Override public void actionPerformed(ActionEvent e) { try { actionPdf(); } catch (final Exception ex) { showException(ex); } } }); monitoringButton.addActionListener( new ActionListener() { @Override public void actionPerformed(ActionEvent e) { try { Desktop.getDesktop().browse(new URI(monitoringUrl.toExternalForm())); } catch (final Exception ex) { showException(ex); } } }); onlineHelpButton.addActionListener( new ActionListener() { @Override public void actionPerformed(ActionEvent e) { try { Desktop.getDesktop() .browse( new URI( monitoringUrl.toExternalForm() + "?resource=" + getString("help_url"))); } catch (final Exception ex) { showException(ex); } } }); }