📄 bookloaderpanel.java
字号:
package com.ciash.bms.gui.search.loader;
import java.awt.Point;
import java.awt.JobAttributes.DefaultSelectionType;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
import java.util.Collection;
import java.util.HashMap;
import java.util.Iterator;
import java.util.Vector;
import javax.swing.DefaultListSelectionModel;
import javax.swing.JPopupMenu;
import javax.swing.ListSelectionModel;
import javax.swing.table.DefaultTableCellRenderer;
import com.ciash.bms.entity.Book;
import com.ciash.bms.entity.User;
import com.ciash.bms.gui.selecter.BookSelecter;
import com.ciash.bms.gui.selecter.event.BookSelectEvent;
import com.ciash.bms.gui.selecter.event.BookSelectListenable;
import com.ciash.bms.gui.selecter.event.BookSelectListener;
import com.ciash.bms.gui.updater.BookUpdater;
public class BookLoaderPanel extends ResultLoaderTable implements
BookSelectListenable, BookLoader, BookUpdater {
protected BookTableModel tableModel = new BookTableModel();
private HashMap cacheMap = new HashMap();
// 图书选择器
private Vector selecters = new Vector();
//
private Vector listeners = new Vector();
private HashMap tableMap = new HashMap();
public BookLoaderPanel() {
super();
resultTable.setModel(tableModel);
BookTableListener listener = new BookTableListener();
resultTable.addMouseListener(listener);
DefaultListSelectionModel selectionModel = new DefaultListSelectionModel();
selectionModel
.setSelectionMode(DefaultListSelectionModel.SINGLE_SELECTION);
resultTable.setSelectionModel(selectionModel);
}
public void install(Collection books) {
Iterator it = books.iterator();
int i = 0;
while (it.hasNext()) {
Book book = (Book) it.next();
cacheMap.put(book.getBookId(), book);
// 建立缓存
tableMap.put(book.getBookId(), new Integer(i));
tableModel.addRow(Book.valueToVector(book));
i++;
}
}
public void installBook(Book book) {
cacheMap.put(book.getBookId(), book);
tableMap.put(book.getBookId(), new Integer(0));
// 建立缓存
tableModel.addRow(Book.valueToVector(book));
}
public void clearResult() {
cacheMap.clear();// 清空缓存
tableMap.clear();
tableModel.setRowCount(0);
}
// --------------------------------------------------------------------------------------------
// 私有方法
/**
* 在缓存中查找书籍
*
* @param row
* 行数
* @return 返回查找到的书籍对象
*/
private Book searchBook(int row) {
if (row != -1) {
String id = (String) tableModel.getValueAt(row, 0);
return (Book) cacheMap.get(id);
}
return null;
}
/**
* 显示弹出菜单 参数:JDK 提供 MouseEvent事件
*/
private void showPopupMenu(MouseEvent e) {
if (e.getButton() == MouseEvent.BUTTON3) {
if (popupMenu != null) {
popupMenu.show(resultTable, e.getX(), e.getY());
}
}
}
public Collection uninstall() {
Collection c = cacheMap.values();
clearResult();
return c;
}
// --------------------------------------------------------------------------------------------
// setter 与 getter
public void addBookSelecter(BookSelecter bookSelecter) {
this.selecters.add(bookSelecter);
}
public void removeBookSelecter(BookSelecter bookSelecter) {
selecters.remove(bookSelecter);
}
// ---------------------------------------------------------------------------------------------
// 内部封装事件驱动机制,做到自己的事件自己处理
private class BookTableListener extends MouseAdapter {
public void mousePressed(MouseEvent e) {
Point point = e.getPoint();
int row = resultTable.rowAtPoint(point);
showPopupMenu(e);
Book b = searchBook(row);
Iterator it = selecters.iterator();
while (it.hasNext()) {
BookSelecter l = (BookSelecter) it.next();
l.setSelectBook(b);
}
it = listeners.iterator();
while (it.hasNext()) {
BookSelectListener l = (BookSelectListener) it.next();
l.userSelect(new BookSelectEvent(b));
}
}
}
public void addBookSelectListener(BookSelectListener bookSelectListener) {
listeners.add(bookSelectListener);
}
public void removeBookSelectListener(BookSelectListener bookSelectListener) {
listeners.remove(bookSelectListener);
}
public Collection getAll() {
return cacheMap.values();
}
public void updateDeleteBook(Book book) {
Object o = tableMap.get(book.getBookId());
if (o != null) {
int row = ((Integer) o).intValue();
System.out.println(row);
tableModel.removeRow(row);
tableMap.remove(book.getBookId());
cacheMap.remove(book.getBookId());
}
}
public void updateEditBook(Book book) {
Object o = tableMap.get(book.getBookId());
int row = -1;
if (o != null) {
int i = ((Integer) o).intValue();
row = i;
tableModel.removeRow(i);
tableModel.insertRow(i, book.valueToVector(book));
} else {
row = tableModel.getRowCount();
tableMap.put(book.getBookId(),new Integer(tableModel.getRowCount()));
tableModel.addRow(Book.valueToVector(book));
}
cacheMap.put(book.getBookId(), book);
resultTable.setRowSelectionInterval(row, row);
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -