Showing posts with label Java Simple Report on JTextArea.. Show all posts
Showing posts with label Java Simple Report on JTextArea.. Show all posts

Wednesday, June 18, 2014

Java Printing Simple Report Document on JTextArea.


package reportlast;

/**
 * @author icebreakersandy
 * e. sndpdevhare10@gmail.com
 */

import static reportlast.PrintFileToPrinter.myStyledText;
import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.Container;
import java.awt.FlowLayout;
import java.awt.Font;
import java.awt.Graphics;
import java.awt.Graphics2D;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.font.LineBreakMeasurer;
import java.awt.font.TextLayout;
import java.awt.geom.Point2D;
import java.awt.print.PageFormat;
import java.awt.print.Printable;
import java.awt.print.PrinterException;
import java.text.AttributedCharacterIterator;
import java.util.Formatter;
import java.util.MissingFormatArgumentException;
import javax.swing.BorderFactory;
import javax.swing.JApplet;
import javax.swing.JButton;
import javax.swing.JPanel;
import javax.swing.JTextArea;
import javax.swing.border.Border;
public class MainReport extends JApplet implements ActionListener {
    String[] colName = new String[]{"Date", "Account.No", "Description", "Deposit", "Withdraw"};
    String a[][] = new String[][]{{"13/12/2013", "101", "AlphaSoftInfotekNashik", "3000", "0"},
    {"15/12/2013", "102", "Bank Ladger 2 xxxxxxxxxxxxx", "5000", "0"},
    {"16/12/2013", "103", "Accout Closing with Details", "800", "0"}};
    int[] pageBreaks;  // array of page break line positions.
    String[] No_of_Lines;
    StringBuilder sb = new StringBuilder();
    final String Header = "%s %85s%n%n%s %10s%n";
    final String format = "|%1$-30s|%2$-30s|%3$-30s|%4$-30s|%5$-35s";
    final String NumColF = "";
    String cformat = "%20s";
    String format1 = "%20s";
    Formatter fmt = new Formatter();
    String s1 = "%53s";//for spillover text
    String s2 = "%10s";
    int i, j, k;
    int Position = 0;
    boolean flag = false;
    boolean found;
    String a1 = "";
    String a2;
    Container c;
    JTextArea outputArea;
    public static final int LINES = 10;
    public static final int CHAR_PER_LINE = 40;
    JButton ShowRbtn;
    public void init() {
        c = getContentPane();
        c.setLayout(new FlowLayout());
        outputArea = new JTextArea(30, 60);
        outputArea.setLocation(400, 400);
        outputArea.setColumns(80);
        outputArea.setLineWrap(true);
        outputArea.setWrapStyleWord(true);
        outputArea.setEditable(false);
        Border border = BorderFactory.createLineBorder(Color.RED);
        outputArea.setBorder(BorderFactory.createCompoundBorder(border,
                BorderFactory.createEmptyBorder(10, 10, 10, 10)));
        JPanel p1 = new JPanel();
        JButton ShowRbtn = new JButton("Show Report");
        JButton printbtn = new JButton("Print");
        printbtn.addActionListener(new PrintButtonListener());
        c.add(outputArea, BorderLayout.CENTER);
        p1.add(printbtn, BorderLayout.CENTER);
        p1.add(ShowRbtn, BorderLayout.CENTER);
        ShowRbtn.addActionListener(this);
        c.add(p1, BorderLayout.SOUTH);
        this.setSize(1000, 600);//Applet Window size
    }
    public void actionPerformed(ActionEvent e) throws MissingFormatArgumentException {
        outputArea.setEditable(false);
        outputArea.setFont(new Font("Courier New", Font.PLAIN, 12));
        outputArea.append("\n\n");
        outputArea.setText(" ");
        outputArea.append(String.format("%80s %n%n", "NAME: ALPHASOFT INFOTEK LTD, Nashik."));
        outputArea.append(String.format("%67s  %n", "REPORTS  : Bank Ladger "));
        outputArea.append(String.format("%69s  %n", "ACCOUNTS : Sales Account "));
        outputArea.append(String.format("%77s  %n%n", "PERIOD   : 01/12/13  TO 30/12/13 "));
        outputArea.append("------------------------------------------------------------------------------------------------------------------");
        outputArea.append(String.format("%s %n", " "));
        outputArea.append(String.format("%-20s", "Date"));
        outputArea.append(String.format("%20s", "Account No"));
        outputArea.append(String.format("%27s", "Acount Details"));
        outputArea.append(String.format("%23s", "Deposit"));
        outputArea.append(String.format("%23s", "Withdraw"));
        outputArea.append(String.format("%s %n%n", " "));
        outputArea.append("------------------------------------------------------------------------------------------------------------------");
                for (i = 0; i < a.length; i++) {
            outputArea.append("\n");
            for (j = 0; j < a[i].length; j++) {
                int stln = 20;
                if (a[i][j].length() > 20) {
                    a1 = a[i][j].substring(0, 20);
                    flag = true;
                    Position = j;
                    outputArea.append(a1 + String.format(s2, ' '));
                    a2 = a[i][j].substring(20);
                }//end of if
                else {
                    outputArea.append(a[i][j] + String.format(cformat, ' '));
                }
            }//end of j loop
            if (flag == true) {
                outputArea.append(String.format("%n", ' '));
                flag = false;
                for (k = 0; k < a[i].length; k++) {
                    if (k == Position) {
                        outputArea.append(String.format(s1, ' ') + a2);
                    }
                }
            }
            outputArea.append("\n");
        }//end of i loop

    }//end of action performed method
//print button listener
    public class PrintButtonListener implements ActionListener {
        public void actionPerformed(ActionEvent event) {
           
            try{
                outputArea.print();
            }catch(PrinterException p)
            {
                System.out.println(p);
            }
           
       }
        class PaintCover implements Printable {

            public int print(Graphics g, PageFormat format, int pageIndex) throws PrinterException {
                Graphics2D graphics2d = (Graphics2D) g;
                graphics2d.translate(format.getImageableX(), format.getImageableY());
                /**
                 * Setting the text color*
                 */
                graphics2d.setPaint(Color.black);
                Point2D.Float pen = new Point2D.Float();
                AttributedCharacterIterator charIterator = myStyledText.getIterator();
                LineBreakMeasurer measurer = new LineBreakMeasurer(charIterator,
                        graphics2d.getFontRenderContext());
                float wrappingWidth = (float) format.getImageableWidth();
                while (measurer.getPosition() < charIterator.getEndIndex()) {
                    TextLayout layout = measurer.nextLayout(wrappingWidth);
                    pen.y += layout.getAscent();
                    float dx = layout.isLeftToRight() ? 0 : (wrappingWidth - layout
                            .getAdvance());
                    layout.draw(graphics2d, pen.x + dx, pen.y);
                    pen.y += layout.getDescent() + layout.getLeading();
                }
                return Printable.PAGE_EXISTS;
            }

        }
    }

    public static String rightpad(String inp, int ln, String rl) {
        String pd = "";
        for (int nx = 0; nx < ln - inp.length(); nx++) {
            pd += " ";
        }
        if (rl == "R") {
            pd = inp + pd;
        } else {

            pd = pd + inp;
        }

        return pd;
    }
}//end of class