📄 zdefaultbook.java
字号:
/*
* Copyright 2002 EZCell , Inc. All rights reserved.
* Version 1.0.
* Author W.John
*/
/*
* put your module comment here
* formatted with JxBeauty (c) johann.langhofer@nextra.at
*/
package ezcell;
import java.awt.print.PageFormat;
import java.awt.print.Paper;
import java.awt.print.PrinterJob;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;
import java.io.Serializable;
import java.net.URL;
import java.net.URLConnection;
import java.util.Vector;
import javax.swing.event.ChangeEvent;
/**
* DOCUMENT ME!
*
* @version 1.00
* @author W.John
*/
public class ZDefaultBook implements Serializable, ZBook {
final static String ZCELL_FILE = "ZCELL_FILE";
private String fileName;
private boolean modified;
private Vector sheets;
private Vector listeners;
private ZSheet header;
private ZSheet footer;
private String title;
private PageFormat pf = PrinterJob.getPrinterJob().defaultPage();
private int headerHeight = 80;
private int footerHeight = 80;
public ZDefaultBook() {
try {
init();
clear();
} catch (Exception e) {
}
}
/**
*
* @return
*/
public int getCount() {
return sheets.size();
}
/**
*
* @return
*/
public String getFileName() {
return fileName;
}
/**
*
* @return
*/
public ZSheet getFooter() {
return footer;
}
/**
*
* @param h
*/
public void setFooterHeight(int h) {
if (footerHeight == h) {
return;
}
footerHeight = h;
firePageFormatChanged();
}
/**
*
* @return
*/
public int getFooterHeight() {
return footerHeight;
}
/**
*
* @return
*/
public ZSheet getHeader() {
return header;
}
/**
*
* @param h
*/
public void setHeaderHeight(int h) {
if (headerHeight == h) {
return;
}
headerHeight = h;
firePageFormatChanged();
}
/**
*
* @return
*/
public int getHeaderHeight() {
return headerHeight;
}
/**
*
* @param modified
*/
public void setModified(boolean modified) {
this.modified = modified;
}
/**
*
* @return
*/
public boolean isModified() {
return modified;
}
/**
*
* @param format
*/
public void setPageFormat(PageFormat format) {
pf = format;
firePageFormatChanged();
}
/**
*
* @return
*/
public PageFormat getPageFormat() {
return pf;
}
/**
*
* @param index
*
* @return
*/
public ZSheet getSheet(int index) {
return (ZSheet) sheets.get(index);
}
/**
*
* @param title
*/
public void setTitle(String title) {
if ((this.title != null) && this.title.equals(title)) {
return;
}
this.title = title;
}
/**
*
* @return
*/
public String getTitle() {
return title;
}
/**
*
* @param sheet
*/
public void add(ZSheet sheet) {
((ZDefaultSheet) sheet).setBook(this);
sheets.add(sheet);
modified = true;
fireSheetAdded(sheet);
}
/**
*
* @return
*/
public ZSheet add() {
ZSheet sheet = new ZDefaultSheet();
add(sheet);
return sheet;
}
/**
*/
public void addFooter() {
if (footer != null) {
return;
}
footer = new ZDefaultSheet(this);
ChangeEvent e = new ChangeEvent(this);
for (int i = 0; i < listeners.size(); i++) {
ZBookListener lst = (ZBookListener) listeners.get(i);
lst.footerAdded(e);
}
}
/**
*/
public void addHeader() {
if (header != null) {
return;
}
header = new ZDefaultSheet(this);
ChangeEvent e = new ChangeEvent(this);
for (int i = 0; i < listeners.size(); i++) {
ZBookListener lst = (ZBookListener) listeners.get(i);
lst.headerAdded(e);
}
}
/**
*
* @param lst
*/
public void addListener(ZBookListener lst) {
listeners.add(lst);
}
/**
*/
public void clear() {
for (int i = sheets.size() - 1; i >= 0; i--)
remove(i);
add();
setModified(false);
}
/**
*
* @param sheet
*/
public void fireSheetAdded(ZSheet sheet) {
ChangeEvent e = new ChangeEvent(this);
for (int i = 0; i < listeners.size(); i++) {
ZBookListener lst = (ZBookListener) listeners.get(i);
lst.sheetAdded(e, sheet);
}
}
/**
*
* @param sheet
*/
public void remove(ZSheet sheet) {
sheets.remove(sheet);
modified = true;
fireSheetRemoved(sheet);
}
/**
*
* @param index
*/
public void remove(int index) {
if (index < sheets.size()) {
remove((ZSheet) sheets.get(index));
}
}
/**
*/
public void removeFooter() {
footer = null;
ChangeEvent e = new ChangeEvent(this);
for (int i = 0; i < listeners.size(); i++) {
ZBookListener lst = (ZBookListener) listeners.get(i);
lst.footerRemoved(e);
}
}
/**
*/
public void removeHeader() {
header = null;
ChangeEvent e = new ChangeEvent(this);
for (int i = 0; i < listeners.size(); i++) {
ZBookListener lst = (ZBookListener) listeners.get(i);
lst.headerRemoved(e);
}
}
/**
*
* @param lst
*/
public void removeListener(ZBookListener lst) {
listeners.remove(lst);
}
/**
*
* @throws Exception
*/
public void save() throws Exception {
saveAs(fileName);
}
/**
*
* @param fileName
*
* @throws Exception
*/
public void saveAs(String fileName) throws Exception {
FileOutputStream fo = new FileOutputStream(fileName);
ObjectOutputStream oo = new ObjectOutputStream(fo);
oo.writeObject(ZCELL_FILE);
oo.writeObject(this);
oo.close();
this.fileName = fileName;
modified = false;
}
static ZDefaultBook create() {
return new ZDefaultBook();
}
static ZDefaultBook open(String fileName) throws Exception {
try {
InputStream is = new FileInputStream(fileName);
ZDefaultBook rb = open(is);
rb.fileName = fileName;
return rb;
} catch (Exception ex) {
throw new Exception("file ;" + fileName + " is not a valid ZCell file! ");
}
}
static ZDefaultBook open(URL url) throws Exception {
try {
URLConnection uc = url.openConnection();
uc.connect();
ZDefaultBook rb = open(uc.getInputStream());
return rb;
} catch (Exception ex) {
throw new Exception(url.toString() + "can not be opened! ");
}
}
static ZDefaultBook open(InputStream is) throws Exception {
ObjectInputStream2 oi = new ObjectInputStream2(is);
String ff = (String) oi.readObject();
if (!ff.equals(ZCELL_FILE)) {
throw new Exception(); // "file ;"+fileName+" is not a valid ZCell file! ");
}
ZDefaultBook book = (ZDefaultBook) oi.readObject();
oi.close();
return book;
}
/**
*/
private void firePageFormatChanged() {
ChangeEvent e = new ChangeEvent(this);
for (int i = 0; i < listeners.size(); i++) {
ZBookListener lst = (ZBookListener) listeners.get(i);
lst.pageFormatChanged(e);
}
}
/**
*
* @param sheet
*/
private void fireSheetRemoved(ZSheet sheet) {
ChangeEvent e = new ChangeEvent(this);
for (int i = 0; i < listeners.size(); i++) {
ZBookListener lst = (ZBookListener) listeners.get(i);
lst.sheetRemoved(e, sheet);
}
}
/**
*/
private void init() {
fileName = "Untitle.zs";
modified = false;
sheets = new Vector();
listeners = new Vector();
header = new ZDefaultSheet(this);
header.setTitle("header");
footer = new ZDefaultSheet(this);
footer.setTitle("footer");
}
/**
*
* @param ois
*
* @throws ClassNotFoundException
* @throws IOException
*/
private void readObject(ObjectInputStream ois) throws ClassNotFoundException, IOException {
ObjectInputStream2 ois2 = (ObjectInputStream2) ois;
init();
ois2.book = this;
title = (String) ois.readObject();
sheets = (Vector) ois.readObject();
header = (ZSheet) ois.readObject();
footer = (ZSheet) ois.readObject();
headerHeight = ois.readInt();
footerHeight = ois.readInt();
// read PageFormat,
int o;
double x;
double y;
double dx;
double dy;
double sx;
double sy;
o = ois.readInt();
x = ois.readDouble();
y = ois.readDouble();
dx = ois.readDouble();
dy = ois.readDouble();
sx = ois.readDouble();
sy = ois.readDouble();
pf = PrinterJob.getPrinterJob().defaultPage();
pf.setOrientation(o);
Paper paper = new Paper();
paper.setImageableArea(x, y, dx, dy);
paper.setSize(sx, sy);
pf.setPaper(paper);
}
/**
*
* @param oos
*
* @throws IOException
*/
private void writeObject(ObjectOutputStream oos) throws IOException {
oos.writeObject(title);
oos.writeObject(sheets);
oos.writeObject(header);
oos.writeObject(footer);
oos.writeInt(headerHeight);
oos.writeInt(footerHeight);
// write pageformat
oos.writeInt(pf.getOrientation());
oos.writeDouble(pf.getImageableX());
oos.writeDouble(pf.getImageableY());
oos.writeDouble(pf.getImageableWidth());
oos.writeDouble(pf.getImageableHeight());
oos.writeDouble(pf.getWidth());
oos.writeDouble(pf.getHeight());
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -