⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 zbookstate.java

📁 用Java写的报表.功能如下: 0.内建网络打印,网络预览功能! 1.文件操作。包括url 指定的文件。 2.全功能打印支持。包括打印预览。 3.Undo 和 redo。 4.合并单元格。 5.Cel
💻 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 + -