📄 zbookstate.java
字号:
/*
* Copyright 2002 EZCell , Inc. All rights reserved.
* Version 1.0.
* Author W.John
*/
package ezcell;
import java.util.Vector;
import javax.swing.event.ChangeEvent;
/**
* ZBookState is used to maintain a list of all available sheetstates ,and to activate one of them.
*/
class ZBookState implements ZBookListener, ZActiveCellListener {
/**
* Delegation listen to, Defaults to a book from constructor .
* Change allowed by call setBook
* @see setBook
*/
ZBook book;
/**
* Available sheetstates, An instance created in this contructor , Keep alive with this class object
* setBook will clear all old elements .
*/
Vector sheetStates;
/** Defaults to null, When page header added the value be set,setBook will clear the value.
* @see headerAdded
*/
ZSheetState header;
/** Defaults to null, When page footer added the value be set,setBook will clear the value
* @see footerAdded
*/
ZSheetState footer;
/** Active sheetstate ,setBook will set the value with first sheet state at <code>sheets</code>
* This value can be changed by <code>setActive</code>
* @see setActive
*/
ZSheetState active;
/**A collection of ZBookStateListener ,used to notify any change of
* delegation or own active sheetstate
* @see addListener,removeListener
*/
Vector listeners;
/**
* constructor
* @param ZBook book
*/
ZBookState(ZBook book) {
sheetStates = new Vector();
listeners = new Vector();
setBook(book);
}
/**
* put your documentation comment here
* @param us
*/
public void setActive(ZSheetState sheetState) {
if (this.active == sheetState) {
return;
}
// Don't care about the old active sheet state.
if (this.active != null) {
this.active.removeListener(this);
}
this.active = sheetState;
// Note , the active state can be null !
// I care about any changes of the current active sheetstate.
if (this.active != null) {
this.active.addListener(this);
}
fireActiveChanged();
}
/**
* Make a sheetstate become active which contains the specified sheet.
* @param sheet
*/
public void setActive(ZSheet sheet) {
// if a sheetstate contains the sheet,then make it active.
ZSheetState sheetState = getSheetState(sheet);
if (sheetState != null) {
setActive(sheetState);
}
}
/**
* put your documentation comment here
* @return
*/
public ZSheetState getActive() {
return active;
}
/**
* Change the ZBook I care about
* @param zb
*/
public void setBook(ZBook book) {
if (this.book == book) {
return;
}
// no longer listen to old book's state
if (this.book != null) {
this.book.removeListener(this);
}
this.book = book;
// available sheetstates not available any more.
sheetStates.clear();
header = null;
footer = null;
//
// Create a sheetstate for every sheet in new book, and add it to the available list
for (int i = 0; i < book.getCount(); i++) {
ZSheet sheet = book.getSheet(i);
ZSheetState sheetState = new ZSheetState(sheet);
sheetStates.add(sheetState);
}
//
// Make the first sheetstate become active
if (!sheetStates.isEmpty()) {
setActive((ZSheetState) sheetStates.get(0));
}
// Install listener onto the new book, and notify i am changed.
this.book.addListener(this);
fireBookChanged();
}
/**
* put your documentation comment here
* @return
*/
public ZBook getBook() {
return book;
}
/**
* put your documentation comment here
* @return
*/
public int getCount() {
return sheetStates.size();
}
/**
* put your documentation comment here
* @param index
* @return
*/
public ZSheetState getSheetState(int index) {
if ((index < sheetStates.size()) && (index >= 0)) {
return (ZSheetState) sheetStates.get(index);
}
return null;
}
/**
* put your documentation comment here
* @param us
*/
public void activeCellChanged(ZSheetState sheetState) {
this.fireActiveCellChanged(sheetState);
}
/**
* put your documentation comment here
* @param lst
*/
public void addListener(ZBookStateListener lst) {
listeners.add(lst);
}
/**
* put your documentation comment here
* @param modal
*/
public void focusChanged(ZSheetState modal) {
}
/**
* put your documentation comment here
* @param e
*/
public void footerAdded(ChangeEvent e) {
if (footer.getSheet() == ((ZBook) e.getSource()).getFooter()) {
return;
}
footer = new ZSheetState(((ZBook) e.getSource()).getFooter());
ChangeEvent e1 = new ChangeEvent(this);
for (int i = 0; i < listeners.size(); i++) {
ZBookStateListener lst = (ZBookStateListener) listeners.get(i);
lst.footerAdded(e1);
}
}
/**
* put your documentation comment here
* @param e
*/
public void footerRemoved(ChangeEvent e) {
footer = null;
ChangeEvent e1 = new ChangeEvent(this);
for (int i = 0; i < listeners.size(); i++) {
ZBookStateListener lst = (ZBookStateListener) listeners.get(i);
lst.footerRemoved(e1);
}
}
/**
* put your documentation comment here
* @param e
*/
public void headerAdded(ChangeEvent e) {
if (header.getSheet() == ((ZBook) e.getSource()).getHeader()) {
return;
}
header = new ZSheetState(((ZBook) e.getSource()).getHeader());
ChangeEvent e1 = new ChangeEvent(this);
for (int i = 0; i < listeners.size(); i++) {
ZBookStateListener lst = (ZBookStateListener) listeners.get(i);
lst.headerAdded(e1);
}
}
/**
* put your documentation comment here
* @param e
*/
public void headerRemoved(ChangeEvent e) {
header = null;
ChangeEvent e1 = new ChangeEvent(this);
for (int i = 0; i < listeners.size(); i++) {
ZBookStateListener lst = (ZBookStateListener) listeners.get(i);
lst.headerRemoved(e1);
}
}
/**
* put your documentation comment here
* @param e
*/
public void pageFormatChanged(ChangeEvent e) {
ChangeEvent e1 = new ChangeEvent(this);
for (int i = 0; i < listeners.size(); i++) {
ZBookStateListener lst = (ZBookStateListener) listeners.get(i);
lst.pageFormatChanged(e1);
}
}
/**
* put your documentation comment here
* @param lst
*/
public void removeListener(ZBookStateListener lst) {
listeners.remove(lst);
}
/**
* put your documentation comment here
* @param e
* @param zs
*/
public void sheetAdded(ChangeEvent e, ZSheet sheet) {
ZSheetState sheetState = new ZSheetState(sheet);
sheetStates.add(sheetState);
fireSheetAdded(sheetState);
// make the new sheetState active
setActive(sheetState);
}
/**
* put your documentation comment here
* @param e
* @param zs
*/
public void sheetRemoved(ChangeEvent e, ZSheet sheet) {
ZSheetState sheetState = getSheetState(sheet);
if (sheetState == null) {
return;
}
sheetStates.remove(sheetState);
fireSheetRemoved(sheetState);
}
/**
* put your documentation comment here
* @param sheet
* @return
*/
private ZSheetState getSheetState(ZSheet sheet) {
for (int i = 0; i < sheetStates.size(); i++) {
if (sheet == ((ZSheetState) sheetStates.get(i)).getSheet()) {
return (ZSheetState) sheetStates.get(i);
}
}
return null;
}
/**
* put your documentation comment here
* @param us
*/
private void fireActiveCellChanged(ZSheetState sheetState) {
if (sheetState != active) {
return;
}
ChangeEvent e = new ChangeEvent(this);
for (int i = 0; i < listeners.size(); i++) {
ZBookStateListener lst = (ZBookStateListener) listeners.get(i);
lst.activeCellChanged(e);
}
}
/**
* put your documentation comment here
*/
private void fireActiveChanged() {
ChangeEvent e = new ChangeEvent(this);
for (int i = 0; i < listeners.size(); i++) {
ZBookStateListener lst = (ZBookStateListener) listeners.get(i);
lst.activeChanged(e);
}
fireActiveCellChanged(active);
}
/**
* put your documentation comment here
*/
private void fireBookChanged() {
ChangeEvent e = new ChangeEvent(this);
for (int i = 0; i < listeners.size(); i++) {
ZBookStateListener lst = (ZBookStateListener) listeners.get(i);
lst.bookChanged(e);
}
}
/**
* put your documentation comment here
*/
private void fireFocusChanged() {
}
/**
* put your documentation comment here
* @param us
*/
private void fireSheetAdded(ZSheetState us) {
ChangeEvent e = new ChangeEvent(this);
for (int i = 0; i < listeners.size(); i++) {
ZBookStateListener lst = (ZBookStateListener) listeners.get(i);
lst.sheetAdded(e, us);
}
}
/**
* put your documentation comment here
* @param us
*/
private void fireSheetRemoved(ZSheetState sheetState) {
ChangeEvent e = new ChangeEvent(this);
for (int i = 0; i < listeners.size(); i++) {
ZBookStateListener lst = (ZBookStateListener) listeners.get(i);
lst.sheetRemoved(e, sheetState);
}
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -