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
No comments:
Post a Comment