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

📄 cachetablepanel.java

📁 自行开发的高缓存table
💻 JAVA
📖 第 1 页 / 共 3 页
字号:
// Decompiled by DJ v2.9.9.60 Copyright 2000 Atanas Neshkov  Date: 2004-2-20 9:13:07
// Home Page : http://members.fortunecity.com/neshkov/dj.html  - Check often for new version!
// Decompiler options: packimports(3) 
// Source File Name:   CacheTablePanel.java

package utility.CacheTable;

import java.awt.Component;
import java.awt.Container;
import java.awt.Cursor;
import java.awt.Dimension;
import java.awt.Graphics;
import java.awt.GridBagConstraints;
import java.awt.GridBagLayout;
import java.awt.Insets;
import java.awt.Point;
import java.awt.event.AdjustmentEvent;
import java.awt.event.AdjustmentListener;
import java.awt.event.KeyAdapter;
import java.awt.event.KeyEvent;
import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;
import java.io.PrintStream;
import java.lang.reflect.Field;
import java.lang.reflect.Modifier;
import java.math.BigInteger;
import java.util.Vector;
import javax.swing.BorderFactory;
import javax.swing.JComponent;
import javax.swing.JPanel;
import javax.swing.JScrollBar;
import javax.swing.JScrollPane;
import javax.swing.JTable;
import javax.swing.JViewport;
import javax.swing.ListSelectionModel;
import javax.swing.event.ListSelectionEvent;
import javax.swing.event.ListSelectionListener;
import javax.swing.table.DefaultTableModel;
import sbsnms.asn.IDList;
import sbsnms.asn.IDType;
import utility.Compare;
import utility.MemoryMgr;
import utility.SortVector;
import utility.Trace;

// Referenced classes of package utility.CacheTable:
//            IDListTable, RequestDataListener

public class CacheTablePanel extends JPanel
    implements Compare
{
    public class CacheTableMouseListener
        implements MouseListener
    {

        public void mouseClicked(MouseEvent mouseevent)
        {
            setSelectAll(false);
        }

        public void mouseEntered(MouseEvent mouseevent)
        {
        }

        public void mouseExited(MouseEvent mouseevent)
        {
        }

        public void mousePressed(MouseEvent mouseevent)
        {
        }

        public void mouseReleased(MouseEvent mouseevent)
        {
        }

        public CacheTableMouseListener()
        {
        }
    }

    class CacheTableKeyListener extends KeyAdapter
    {

        public void keyPressed(KeyEvent keyevent)
        {
            int i = keyevent.getKeyCode();
            String s = KeyEvent.getKeyModifiersText(i);
            String s1 = KeyEvent.getKeyText(i);
            if(s1.trim().equals("Ctrl"))
                ctrlPressed = true;
            else
            if(s1.trim().equals("Shift"))
                shiftPressed = true;
            if(ctrlPressed && s1.trim().equals("A"))
            {
                APressed = true;
                setSelectAll(true);
            }
        }

        public void keyReleased(KeyEvent keyevent)
        {
            int i = keyevent.getKeyCode();
            String s = KeyEvent.getKeyModifiersText(i);
            String s1 = KeyEvent.getKeyText(i);
            if(s1.trim().equals("Ctrl"))
                ctrlPressed = false;
            else
            if(s1.trim().equals("Shift"))
                shiftPressed = false;
        }

        CacheTableKeyListener()
        {
        }
    }


    public CacheTablePanel()
    {
        this(null, null);
    }

    public CacheTablePanel(RequestDataListener requestdatalistener)
    {
        this(null, requestdatalistener);
    }

    public CacheTablePanel(IDListTable idlisttable)
    {
        this(idlisttable, null);
    }

    public CacheTablePanel(IDListTable idlisttable, RequestDataListener requestdatalistener)
    {
        isInit = false;
        isProgramSetValue = false;
        needToReadData = false;
        ctrlPressed = false;
        shiftPressed = false;
        iSetSelection = false;
        cacheScrlPane = new JScrollPane(21, 30);
        cacheScrlBar = new JScrollBar();
        isSelectAll = false;
        APressed = false;
        if(requestdatalistener != null)
            setRequestDataListener(requestdatalistener);
        jbInit();
        initAllData(idlisttable);
    }

    private void initAllData(IDListTable idlisttable)
    {
        setTableAwaredContent(idlisttable);
        if(cacheTable != null)
        {
            cleanCacheTable();
            setIDListAwaredContent(cacheTable.idList);
            if(idList != null && idList.size() > 0 && _listener != null)
            {
                isInit = true;
                startWork();
                isInit = false;
            }
        }
    }

    private void jbInit()
    {
        setBorder(BorderFactory.createEmptyBorder(2, 2, 2, 2));
        setMinimumSize(new Dimension(0, 28));
        setPreferredSize(new Dimension(0, 52));
        setLayout(new GridBagLayout());
        cacheScrlBar.setMinimumSize(new Dimension(0, 5));
        cacheScrlBar.setPreferredSize(new Dimension(0, 48));
        cacheScrlBar.setBorder(BorderFactory.createLoweredBevelBorder());
        add(cacheScrlPane, new GridBagConstraints(0, 0, 1, 1, 1.0D, 1.0D, 17, 1, new Insets(0, 0, 0, 0), 0, 0));
        add(cacheScrlBar, new GridBagConstraints(1, 0, 1, 1, 0.0D, 1.0D, 17, 3, new Insets(0, 0, 0, 0), 20, 0));
        cacheScrlBar.addAdjustmentListener(new AdjustmentListener() {

            public void adjustmentValueChanged(AdjustmentEvent adjustmentevent)
            {
                setCursor(Cursor.getPredefinedCursor(3));
                try
                {
                    cacheScrlBar_adjusted(adjustmentevent);
                }
                catch(Exception exception) { }
                setCursor(Cursor.getPredefinedCursor(0));
            }

        });
    }

    private void setTableAwaredContent(IDListTable idlisttable)
    {
        if(idlisttable != null)
        {
            cacheTable = idlisttable;
            cacheTable.getSelectionModel().addListSelectionListener(new ListSelectionListener() {

                public void valueChanged(ListSelectionEvent listselectionevent)
                {
                    cacheTable_valueChanged(listselectionevent);
                }

            });
            selectedIndex = -1;
            model = (DefaultTableModel)cacheTable.getModel();
            cacheScrlPane.getViewport().add(cacheTable);
            cacheTable.addKeyListener(new CacheTableKeyListener());
            cacheTable.addMouseListener(new CacheTableMouseListener());
            if(isSelectAll)
                addAllItems();
        }
    }

    private void setIDListAwaredContent(IDList idlist)
    {
        if(idlist != null)
        {
            idList = idlist;
            rowHeight = cacheTable.getRowHeight() + cacheTable.getIntercellSpacing().height;
            selectedRows = new SortVector(this);
            visibleAmount = cacheScrlPane.getPreferredSize().height;
            max = cacheTable.idList.size() * rowHeight;
            cacheSize = Math.max(cacheTable.cacheSize, 100);
            cacheScrlBar.setMinimum(min);
            cacheScrlBar.setUnitIncrement(rowHeight);
            isProgramSetValue = true;
            cacheScrlBar.setMaximum(max);
            cacheScrlBar.setVisibleAmount(visibleAmount);
            current = Math.min(cacheTable.currentItemIndex * rowHeight, max);
            cacheScrlBar.setValue(current);
            isProgramSetValue = false;
            compPos = getCompPos(current);
        }
    }

    private void startWork()
    {
        setData(getRequestDataIDList());
        setViewportPoint();
    }

    private void cleanCacheTable()
    {
        for(model = (DefaultTableModel)cacheTable.getModel(); model.getRowCount() > 0; model.removeRow(0));
    }

    public void setRequestDataListener(RequestDataListener requestdatalistener)
    {
        _listener = requestdatalistener;
    }

    public void removeRequestDataListener()
    {
        _listener = null;
    }

    public void paint(Graphics g)
    {
        visibleAmount = cacheScrlPane.getViewport().getExtentSize().height;
        cacheScrlBar.setBlockIncrement(visibleAmount);
        if(max != 0 && max > visibleAmount)
        {
            cacheScrlBar.setVisible(true);
            cacheScrlBar.setMaximum(max);
            cacheScrlBar.setVisibleAmount(visibleAmount);
        } else
        {
            cacheScrlBar.setVisible(false);
        }
        revalidate();
        super.paint(g);
    }

    private void setData(IDList idlist)
    {
        try
        {
            if(needToReadData)
            {
                if(idlist == null)
                    return;
                cacheScrlPane.getViewport().remove(cacheTable);
                int i = cacheTable.getRowCount();
                int j = idlist.size();
                int k = lowEdge;
                int l = upEdge;
                int i1 = oldLow;
                int j1 = oldUp;
                cacheTable = _listener.requestData(idlist, cacheTable, requestDataEvent);
                int k1;
                for(k1 = 1; cacheTable.getRowCount() < i + j && (requestDataEvent != 1 ? l > min / rowHeight : k < max / rowHeight) && k1 <= 20;)
                {
                    idlist = new IDList();
                    if(requestDataEvent == 1)
                    {
                        k = Math.min(k + cacheSize, max / rowHeight);
                        for(int l1 = 0; l1 < k - i1; l1++)
                            idlist.add(idList.elementAt(i1 + l1));

                        i1 = k;
                        cacheTable = _listener.requestData(idlist, cacheTable, requestDataEvent);
                        k1++;
                        for(int k2 = 0; k2 < idlist.size(); k2++)
                            cachedIDList.add(idlist.elementAt(k2));

                    } else
                    if(requestDataEvent == 2)
                    {
                        l = Math.max(l - cacheSize, min / rowHeight);
                        for(int i2 = 0; i2 < j1 - l; i2++)
                            idlist.add(idList.elementAt(l + i2));

                        j1 = l;
                        cacheTable = _listener.requestData(idlist, cacheTable, requestDataEvent);
                        k1++;
                        for(int l2 = 0; l2 < idlist.size(); l2++)
                            cachedIDList.insertElementAt(idlist.elementAt(l2), l2);

                    }
                }

                if(k1 <= 4)
                {
                    if(requestDataEvent == 1)
                    {
                        replaceCachedSegmentIDList(idList, cachedIDList, upEdge, k);
                        Vector vector = new Vector();
                        if(!isSelectAll)
                        {

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -