📄 infomanagerwindow.java
字号:
else if(obj instanceof Integer) {
Integer i = (Integer)obj;
if(i == 3)
owner = 10000;
else
return;
}
rm.delete(owner, IKeyConstants.ALL, IKeyConstants.SUB_ALL);
records.clear();
pageCount = 0;
pageNum = 0;
recordViewer.refresh();
resetNavigator();
refreshRichBox(null);
} else {
// 删除
RecordManager rm = main.getRecordManager();
int base = pageNum * rm.getPageSize();
int[] indices = recordViewer.getTable().getSelectionIndices();
for(int i = indices.length - 1; i >= 0; i--) {
TableItem ti = recordViewer.getTable().getItem(indices[i]);
RecordEntry entry = (RecordEntry)ti.getData();
rm.delete(entry);
records.remove(base + indices[i]);
}
// 重新计算页数
if(records.isEmpty())
pageCount = 0;
else
pageCount = (records.size() + rm.getPageSize() - 1) / rm.getPageSize();
if(pageNum >= pageCount)
pageNum = Math.max(0, pageCount - 1);
if(pageCount > 0)
lblPage.setText(NLS.bind(info_page, String.valueOf(pageNum + 1), String.valueOf(pageCount)));
else
lblPage.setText("");
// 刷新,同步
recordViewer.refresh();
resetNavigator();
rm.sync();
}
}
}
protected void navigateTo(int page) {
recordViewer.refresh();
lblPage.setText(NLS.bind(info_page, String.valueOf(page + 1), String.valueOf(pageCount)));
resetNavigator();
}
protected void onSearch() {
records.clear();
if(scope == 0) {
// 搜索
try {
ProgressMonitorDialog dialog = new ProgressMonitorDialog(getShell());
dialog.run(true, true, new IRunnableWithProgress() {
public void run(IProgressMonitor monitor) throws InvocationTargetException, InterruptedException {
RecordManager rm = main.getRecordManager();
monitor.beginTask("Searching...", scopes.size());
for(Object obj : scopes) {
int scope;
if(obj instanceof User)
scope = ((User)obj).qq;
else
scope = ((Cluster)obj).clusterId;
records.addAll(rm.search(scope, IKeyConstants.ALL, IKeyConstants.SUB_ALL, keyword, false, 0));
monitor.worked(1);
if(monitor.isCanceled())
break;
}
monitor.done();
}
});
} catch(InvocationTargetException e) {
} catch(InterruptedException e) {
}
} else {
records.clear();
records.addAll(searchOne(scope));
}
RecordManager rm = main.getRecordManager();
if(records.isEmpty())
pageCount = 0;
else
pageCount = (records.size() + rm.getPageSize() - 1) / rm.getPageSize();
pageNum = 0;
if(pageCount > 0)
lblPage.setText(NLS.bind(info_page, String.valueOf(pageNum + 1), String.valueOf(pageCount)));
else
lblPage.setText("");
recordViewer.refresh();
refreshRichBox(null);
resetNavigator();
}
protected List<RecordEntry> searchOne(int scope) {
RecordManager rm = main.getRecordManager();
boolean isCluster = ModelRegistry.getCluster(scope) != null;
int type = isCluster ? IKeyConstants.CLUSTER : IKeyConstants.NORMAL;
return rm.search(scope, type, IKeyConstants.SUB_ALL, keyword, false, 0);
}
protected void onRecordSelection(SelectionChangedEvent event) {
IStructuredSelection s = (IStructuredSelection)event.getSelection();
if(s.isEmpty()) {
tiExport.setEnabled(false);
tiDelete.setEnabled(false);
refreshRichBox(null);
} else {
tiExport.setEnabled(true);
tiDelete.setEnabled(true);
RecordEntry first = (RecordEntry)s.getFirstElement();
refreshRichBox(first);
}
}
private void refreshRichBox(RecordEntry first) {
if(first == null) {
lblDate.setText(info_date + ':');
lblTime.setText(info_time + ':');
lblSender.setText(info_sender + ':');
lblReceiver.setText(info_receiver + ':');
box.clear();
} else {
box.setText(first.message);
date.setTime(first.time);
lblDate.setText(info_date + ": " + dateFormat.format(date));
lblTime.setText(info_time + ": " + timeFormat.format(date));
User sender = ModelRegistry.getUser(first.sender);
if(sender == null)
lblSender.setText(info_sender + ": " + first.sender);
else
lblSender.setText(info_sender + ": " + sender.displayName);
if(first.type == IKeyConstants.NORMAL) {
User receiver = ModelRegistry.getUser(first.receiver);
if(receiver == null)
lblReceiver.setText(info_receiver + ": " + first.receiver);
else
lblReceiver.setText(info_receiver + ": " + receiver.displayName);
} else
lblReceiver.setText(info_receiver + ':');
}
}
protected void onSelection(Object obj) {
if(obj instanceof Integer) {
Integer i = (Integer)obj;
if(i == 3) {
/*
* 选择了系统消息
*/
reloadRecord(10000, IKeyConstants.SYSTEM, IKeyConstants.SUB_ALL);
} else
resetAll();
} else if(obj instanceof Group) {
resetAll();
} else if(obj instanceof User) {
// 设置搜索范围
User u = (User)obj;
scope = u.qq;
int index = scopes.indexOf(u);
if(index != -1)
comboScope.select(index + 1);
// 刷新记录表
reloadRecord(u.qq, IKeyConstants.NORMAL, IKeyConstants.SUB_ALL);
} else if(obj instanceof Cluster) {
Cluster c = (Cluster)obj;
scope = c.clusterId;
pageNum = 0;
pageCount = 0;
int index = scopes.indexOf(c);
if(index != -1)
comboScope.select(index + 1);
// 刷新记录
reloadRecord(c.clusterId, IKeyConstants.CLUSTER, IKeyConstants.SUB_ALL);
}
}
private void reloadRecord(int owner, int type, int subType) {
RecordManager rm = main.getRecordManager();
records.clear();
records.addAll(rm.getRecord(owner, type, subType));
if(records.isEmpty())
pageCount = 0;
else
pageCount = (records.size() + rm.getPageSize() - 1) / rm.getPageSize();
pageNum = Math.max(0, pageCount - 1);
if(pageCount > 0)
lblPage.setText(NLS.bind(info_page, String.valueOf(pageNum + 1), String.valueOf(pageCount)));
else
lblPage.setText("");
recordViewer.refresh();
tiExport.setEnabled(true);
tiDelete.setEnabled(true);
refreshRichBox(null);
resetNavigator();
}
private void resetAll() {
scope = 0;
pageNum = 0;
pageCount = 0;
comboScope.select(0);
lblPage.setText("");
tiExport.setEnabled(false);
tiDelete.setEnabled(false);
records.clear();
recordViewer.refresh();
resetNavigator();
refreshRichBox(null);
}
private void resetNavigator() {
if(pageCount <= 1) {
tiFirst.setEnabled(false);
tiPrev.setEnabled(false);
tiNext.setEnabled(false);
tiLast.setEnabled(false);
} else if(pageNum >= pageCount - 1) {
tiFirst.setEnabled(true);
tiPrev.setEnabled(true);
tiNext.setEnabled(false);
tiLast.setEnabled(false);
} else if(pageNum <= 0) {
tiFirst.setEnabled(false);
tiPrev.setEnabled(false);
tiNext.setEnabled(true);
tiLast.setEnabled(true);
} else {
tiFirst.setEnabled(true);
tiPrev.setEnabled(true);
tiNext.setEnabled(true);
tiLast.setEnabled(true);
}
}
protected Object getSelectedObject() {
IStructuredSelection s = (IStructuredSelection)treeViewer.getSelection();
return s.getFirstElement();
}
private void initializeViewers() {
recordViewer.setInput(this);
treeViewer.setInput(this);
}
@SuppressWarnings("unchecked")
private void initializeControls() {
tiExport.setEnabled(false);
tiDelete.setEnabled(false);
tiSearch.setEnabled(false);
resetNavigator();
List<User> users = ModelRegistry.getSortedUserList();
for(User u : users)
comboScope.add("" + u.qq + '(' + u.displayName + ')');
scopes.addAll(users);
for(Cluster c : clusters)
comboScope.add("" + c.externalId + '(' + c.name + ')');
scopes.addAll(clusters);
}
private void initializeVariables() {
active = false;
searchMode = SEARCH_RECORD;
scope = SCOPE_ALL;
pageNum = 0;
pageCount = 0;
keyword = "";
scopes = new ArrayList();
records = new ArrayList<RecordEntry>();
clusters = new ArrayList<Cluster>(main.getBlindHelper().getClusterGroup().clusters);
otherGroups = main.getBlindHelper().getUserGroupList();
for(Iterator<Cluster> i = clusters.iterator(); i.hasNext(); ) {
if(i.next().clusterType != ClusterType.NORMAL) {
i.remove();
}
}
}
@Override
protected ShellListener getShellListener() {
return this;
}
@Override
protected Shell getParentShell() {
return null;
}
@Override
protected Point getInitialSize() {
return new Point(800, 600);
}
/**
* 设置最小化状态
*
* @param b
*/
public void setMinimized(boolean b) {
getShell().setMinimized(b);
}
/**
* 设置焦点
*/
public void setFocus() {
getShell().setFocus();
}
/**
* 设置窗口激活
*/
public void setActive() {
getShell().setActive();
}
public boolean isActive() {
return active;
}
public void shellActivated(ShellEvent e) {
active = true;
}
public void shellClosed(ShellEvent e) {
main.getShellRegistry().deregisterInfoManagerWindow();
}
public void shellDeactivated(ShellEvent e) {
active = false;
}
public void shellDeiconified(ShellEvent e) {
}
public void shellIconified(ShellEvent e) {
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -