📄 addressbookpanel.java
字号:
public void actionPerformed(ActionEvent e)
{
boolean b=useRegExp.isSelected();
if(!b)
doNormalSearch();
else
doSearchUseRegularExpression();
}
}
class BtnModifyL implements ActionListener
{
public void actionPerformed(ActionEvent e)
{
int rowCount=table.getRowCount();
//int tableColumn=table.getColumnModel().getColumnIndex("ID");
int column=IdColumn;//table.convertColumnIndexToModel(tableColumn);
AddressEntryDialog addressEntryDialog
=new AddressEntryDialog(null,addressBookModel);
addressEntryDialog.setModal(true);
for(int i=0;i<rowCount;i++)
{
if(tableModel.getValueAt(i,0).equals(Boolean.TRUE))
{
long id=((Long)tableModel.getValueAt
( tableModel.getRowInModel( i ),column ))
.longValue();
addressEntryDialog.showAddressEntryDialog
(addressBookModel.getAddressEntry(id));
AddressEntry entry=addressEntryDialog.getInputAddressEntry();
if(entry!=null)
addressBookModel.updateAddressEntry(entry);
}
}
addressEntryDialog.dispose();
searchResult.clear();
updateView();
}
}
class BtnDeleteFromGroupL implements ActionListener
{
public void actionPerformed(ActionEvent e)
{
int rowCount=table.getRowCount();
//int tableColumn=table.getColumnModel().getColumnIndex("ID");
int column=IdColumn;//=table.convertColumnIndexToModel(tableColumn);
for(int i=0;i<rowCount;i++)
{
if(tableModel.getValueAt(i,0).equals(Boolean.TRUE))
{
long id=((Long)tableModel.getValueAt
( tableModel.getRowInModel( i ),column ))
.longValue();
addressBookModel.removeAddressEntryFromGroup
(comboViewMode.getSelectedItem().toString(),id);
}
}
updateView();
}
}
class BtnDeleteForeverL implements ActionListener
{
public void actionPerformed(ActionEvent e)
{
int rowCount=table.getRowCount();
int tableColumn=table.getColumnModel().getColumnIndex("Selected");
int c=table.convertColumnIndexToModel(tableColumn);
//int tableColumn=table.getColumnModel().getColumnIndex("ID");
int column=IdColumn;//table.convertColumnIndexToModel(tableColumn);
for(int i=0;i<rowCount;i++)
{
if(tableModel.getValueAt(i,c).equals(Boolean.TRUE))
{
long id=((Long)tableModel.getValueAt
( tableModel.getRowInModel( i ),column ))
.longValue();
addressBookModel.removeAddressEntry(id);
}
}
updateView();
}
}
class BtnMoveToGroupL implements ActionListener
{
public void actionPerformed(ActionEvent e)
{
if(comboGroups.getModel().getSize()==0)
return;
String destGroup=comboGroups.getSelectedItem().toString();
String displayingGroup=comboViewMode.getSelectedItem().toString();
if(destGroup.length()==0 || destGroup.equals(displayingGroup))
return;
int rowCount=table.getRowCount();
int tableColumn=table.getColumnModel().getColumnIndex("Selected");
int c=table.convertColumnIndexToModel(tableColumn);
int column=IdColumn;//table.convertColumnIndexToModel(tableColumn);
for(int i=0;i<rowCount;i++)
{
if(tableModel.getValueAt(i,c).equals(Boolean.TRUE))
{
long id=((Long)tableModel.getValueAt
( tableModel.getRowInModel( i ),column ))
.longValue();
addressBookModel.addGroupMember(destGroup,id);
if(checkBoxDeleteSimultaneously.isSelected())
{
addressBookModel.removeAddressEntryFromGroup
(displayingGroup,id);
}
}
}
updateView();
}
}
class TableHeaderMouseL extends MouseAdapter
{
public void mouseClicked(MouseEvent e) {
if(e.getClickCount()<2)
return;
int tableColumn=table.columnAtPoint(e.getPoint());
int modelColumn=table.convertColumnIndexToModel(tableColumn);
tableModel.sort(modelColumn);
}
}
class ComBoSortModeL implements ActionListener
{
public void actionPerformed(ActionEvent e)
{
String columnName=comboSortMode.getSelectedItem().toString();
int columnIndex=table.getColumnModel().getColumnIndex(columnName);
int modelColumn=table.convertColumnIndexToModel(columnIndex);
tableModel.sort(modelColumn);
}
}
class ComboViewModeL implements ActionListener
{
public void actionPerformed(ActionEvent e)
{
if(comboViewMode.getItemCount()==0)
return;
String mode=comboViewMode.getSelectedItem().toString();
if(mode.length()==0)
return;
/*if(mode.equals("All"))
{
btnDeleteFromGroup.setEnabled(false);
Collection<AddressEntry> allMembers =
addressBookModel.getAllAddressEntries();
tableModel.setRowCount(0);
for(AddressEntry ele:allMembers)
{
tableModel.addRow(ele.toArray());
}
}*/
if(mode.equals("Search"))
{
btnDeleteFromGroup.setEnabled(false);
checkBoxDeleteSimultaneously.setEnabled(false);
tableModel.setRowCount(0);
for(AddressEntry ele:searchResult)
{
tableModel.addRow(ele.toArray());
}
}
else
{
if(mode.equals("All"))
{
btnDeleteFromGroup.setEnabled(false);
checkBoxDeleteSimultaneously.setEnabled(false);
}
else
{
btnDeleteFromGroup.setEnabled(true);
checkBoxDeleteSimultaneously.setSelected(false);
checkBoxDeleteSimultaneously.setEnabled(true);
}
Collection<AddressEntry> groupMembers
= addressBookModel.getGroupMembers(mode);
tableModel.setRowCount(0);
for(AddressEntry ele:groupMembers)
{
tableModel.addRow(ele.toArray());
}
}
}
}
}
/**
* a table model can do sort by clicking the table header column
* @author Elegate,elegate@gmail.com
* @author cs department of NJU
*/
class SortFilterTableModel extends DefaultTableModel
{
public static final int UP=0;
public static final int DOWN=1;
public static final int NO_ORDER=2;
/**
*
*/
private static final long serialVersionUID = 1L;
private int sortDirection=UP;
public SortFilterTableModel()
{
updateRows();
}
public SortFilterTableModel(String[] columns,int rowCount)
{
super(columns,rowCount);
updateRows();
}
/**
Sorts the rows.
@param c the column that should become sorted
*/
public void sort(int c)
{
if(rows.length!=getRowCount())
updateRows();
sortColumn = c;
if(rows.length>0)
Arrays.sort(rows);
fireTableDataChanged();
if(sortDirection==UP)
sortDirection=DOWN;
else
sortDirection=UP;
}
// Compute the moved row for the three methods that access
// model elements
public Object getValueAt(int r, int c)
{
if(rows.length!=getRowCount())
updateRows();
if(r<rows.length)
return super.getValueAt(rows[r].index, c);
else
return super.getValueAt(r,c);
}
public boolean isCellEditable(int r, int c)
{
if(c==0)
return true;
else
return false;
//return super.isCellEditable(rows[r].index, c);
}
public void setValueAt(Object aValue, int r, int c)
{
if(rows.length!=getRowCount())
updateRows();
if(rows.length>r)
super.setValueAt(aValue, rows[r].index, c);
else
super.setValueAt(aValue,r,c);
}
@SuppressWarnings("unchecked")
public Class getColumnClass(int c)
{
Vector v=(Vector)dataVector.elementAt(0);
Object obj=v.elementAt(c);
if(obj!=null)
return obj.getClass();
else
return super.getColumnClass(c);
}
public int getRowInModel(int r)
{
if(rows.length!=getRowCount())
updateRows();
if(r<rows.length)
return rows[r].index;
else
return r;
}
private Object getValueAtInModel(int r,int c)
{
return super.getValueAt(r,c);
}
/**
This inner class holds the index of the model row
Rows are compared by looking at the model row entries
in the sort column.
*/
private class Row implements Comparable
{
public int index;
@SuppressWarnings("unchecked")
public int compareTo(Object other)
{
Row otherRow = (Row)other;
Object a = getValueAtInModel(index, sortColumn);
Object b = getValueAtInModel(otherRow.index, sortColumn);
int ret;
if (a instanceof Comparable)
ret = ((Comparable)a).compareTo(b);
else
{
if(b==null)
ret=1;
else
ret = a.toString().compareTo(b.toString());
}
if(sortDirection==UP)
return ret;
else
return -ret;
}
}
private void updateRows()
{
rows = new Row[getRowCount()];
for (int i = 0; i < rows.length; i++)
{
rows[i] = new Row();
rows[i].index = i;
}
}
private int sortColumn;
private Row[] rows;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -