📄 cachetablepanel.java
字号:
// 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 + -