/* * Copyright (C) 2014 GG-Net GmbH - Oliver Günther * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see <http://www.gnu.org/licenses/>. */ package eu.ggnet.dwoss.util; import java.awt.Color; import java.awt.print.PrinterException; import java.util.logging.Level; import java.util.logging.Logger; import javax.swing.JOptionPane; import javax.swing.text.*; import org.apache.commons.lang3.StringUtils; /** * * @author oliver.guenther * @deprecated use HtmlPanel and the SAFT */ @Deprecated public class HtmlDialog extends javax.swing.JDialog { public HtmlDialog() { this(null, null); } public HtmlDialog(java.awt.Window parent) { this(parent, null); } /** Creates new form StockTransactionManagerDetailDialog */ public HtmlDialog(java.awt.Window parent, ModalityType modalityType) { super(parent); initComponents(); if ( modalityType == null ) setModalityType(ModalityType.APPLICATION_MODAL); else setModalityType(modalityType); setLocationRelativeTo(parent); } public HtmlDialog setText(String text) { documentTextPane.setText(text.replaceFirst("\\<\\?.*\\?\\>", "")); // Solution for XHTML documentTextPane.setCaretPosition(0); return this; } private void search() { try { Highlighter.HighlightPainter painter = new DefaultHighlighter.DefaultHighlightPainter(Color.RED); documentTextPane.getHighlighter().removeAllHighlights(); StyledDocument styledDocument = documentTextPane.getStyledDocument(); String text = styledDocument.getText(0, styledDocument.getLength()); if ( StringUtils.isBlank(text) || StringUtils.isBlank(searchField.getText()) ) return; int indexOf = text.indexOf(searchField.getText()); if ( indexOf == -1 ) JOptionPane.showMessageDialog(this, "Nichts gefunden."); while (indexOf != -1) { try { documentTextPane.getHighlighter().addHighlight(indexOf, indexOf + searchField.getText().length(), painter); indexOf = text.indexOf(searchField.getText(), indexOf + 1); } catch (BadLocationException ex) { Logger.getLogger(HtmlDialog.class.getName()).log(Level.SEVERE, null, ex); } } } catch (BadLocationException ex) { Logger.getLogger(HtmlDialog.class.getName()).log(Level.SEVERE, null, ex); } } /** This method is called from within the constructor to * initialize the form. * WARNING: Do NOT modify this code. The content of this method is * always regenerated by the Form Editor. */ @SuppressWarnings("unchecked") // <editor-fold defaultstate="collapsed" desc="Generated Code">//GEN-BEGIN:initComponents private void initComponents() { jScrollPane1 = new javax.swing.JScrollPane(); documentTextPane = new javax.swing.JTextPane(); closeButton = new javax.swing.JButton(); printButton = new javax.swing.JButton(); searchField = new javax.swing.JTextField(); searchButton = new javax.swing.JButton(); setDefaultCloseOperation(javax.swing.WindowConstants.DISPOSE_ON_CLOSE); documentTextPane.setEditable(false); documentTextPane.setContentType("text/html"); // NOI18N jScrollPane1.setViewportView(documentTextPane); closeButton.setText("Schließen"); closeButton.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { closeButtonActionPerformed(evt); } }); printButton.setText("Drucken"); printButton.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { printButtonActionPerformed(evt); } }); searchField.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { searchFieldActionPerformed(evt); } }); searchButton.setText("Suchen"); searchButton.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { searchButtonActionPerformed(evt); } }); javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane()); getContentPane().setLayout(layout); layout.setHorizontalGroup( layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGroup(layout.createSequentialGroup() .addContainerGap() .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGroup(layout.createSequentialGroup() .addComponent(searchField) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addComponent(searchButton) .addGap(18, 18, 18) .addComponent(printButton) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addComponent(closeButton)) .addComponent(jScrollPane1, javax.swing.GroupLayout.DEFAULT_SIZE, 815, Short.MAX_VALUE)) .addContainerGap()) ); layout.setVerticalGroup( layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, layout.createSequentialGroup() .addContainerGap() .addComponent(jScrollPane1, javax.swing.GroupLayout.DEFAULT_SIZE, 516, Short.MAX_VALUE) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) .addComponent(closeButton) .addComponent(printButton) .addComponent(searchField, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) .addComponent(searchButton)) .addContainerGap()) ); pack(); }// </editor-fold>//GEN-END:initComponents private void closeButtonActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_closeButtonActionPerformed this.setVisible(false); }//GEN-LAST:event_closeButtonActionPerformed private void printButtonActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_printButtonActionPerformed try { documentTextPane.print(); } catch (PrinterException ex) { JOptionPane.showMessageDialog(this, ex, "PrinterException", JOptionPane.ERROR_MESSAGE); } }//GEN-LAST:event_printButtonActionPerformed private void searchFieldActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_searchFieldActionPerformed search(); }//GEN-LAST:event_searchFieldActionPerformed private void searchButtonActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_searchButtonActionPerformed search(); }//GEN-LAST:event_searchButtonActionPerformed /** * @param args the command line arguments */ public static void main(String args[]) { HtmlDialog dialog = new HtmlDialog(); dialog.setText(getTestText()); dialog.setVisible(true); System.out.println("Now the dialog is closed"); System.exit(0); } private static String getTestText() { String s = "<html>" + "<head>" + "<style type=\"text/css\">" + "body {" + "font: 14px Verdana, Arial, Helvetica, sans-serif;" + "}" + "</style>" + "</head>" + "<body>" + "<h2><u><i>Transaktion Nummer:</i></u> 1 - <u><i>Type:</i></u> BLALBLAA - <u><i>Status:</i></u> PREPARED</h2>" + "<h2><u><i>Quelle:</i></u> Strusbek - <u><i>Ziel:</i></u> Manhagener Allee</h2>" + "<hr />" + "<ul>" + "<li>Endnummer 0:</li>" + "<ul>" + "<li>12310 (PC) - Packard Bell iMedia 2312</li>" + "<li>32310 (Notebook) - Aspire 7550-321</li>" + "<li>42620 (Aspire PC) - Aspire Predator G7200</li>" + "</ul>" + "<li>Endnummer 1:</li>" + "<ul>" + "<li>12311 (PC) - Packard Bell iMedia 2312</li>" + "<li>32311 (Notebook) - Aspire 7550-321</li>" + "<li>42621 (Aspire PC) - Aspire Predator G7200</li>" + "</ul><" + "</ul>" + "<hr />" + "</body>" + "</html>"; return s; } // Variables declaration - do not modify//GEN-BEGIN:variables private javax.swing.JButton closeButton; private javax.swing.JTextPane documentTextPane; private javax.swing.JScrollPane jScrollPane1; private javax.swing.JButton printButton; private javax.swing.JButton searchButton; private javax.swing.JTextField searchField; // End of variables declaration//GEN-END:variables }