📄 infomanagerwindow.java
字号:
tiDelete = new ToolItem(tb, SWT.PUSH);
tiDelete.setImage(res.getImage(Resources.icoDelete));
tiDelete.setText(button_delete);
tiDelete.addSelectionListener(new SelectionAdapter() {
@Override
public void widgetSelected(SelectionEvent e) {
onDelete();
}
});
// separator
new ToolItem(tb, SWT.SEPARATOR);
// 其他控件的容器
ToolItem tiControls = new ToolItem(tb, SWT.SEPARATOR);
Composite controlContainer = new Composite(tb, SWT.NONE);
GridLayout layout = new GridLayout(7, false);
layout.marginHeight = layout.marginWidth = 1;
controlContainer.setLayout(layout);
tiControls.setControl(controlContainer);
controlContainer.addPaintListener(new AroundBorderPaintListener(new Class[] { CCombo.class, Text.class }, Colors.PAGE_CONTROL_BORDER));
// 查找
Label lblSearch = new Label(controlContainer, SWT.LEFT);
lblSearch.setText(info_search);
final CCombo comboSearch = new CCombo(controlContainer, SWT.READ_ONLY | SWT.FLAT);
GridData gd = new GridData(GridData.VERTICAL_ALIGN_CENTER);
gd.widthHint = 100;
comboSearch.setLayoutData(gd);
comboSearch.setBackground(Colors.WHITE);
comboSearch.add(info_record);
comboSearch.select(0);
comboSearch.addSelectionListener(new SelectionAdapter() {
@Override
public void widgetSelected(SelectionEvent e) {
searchMode = comboSearch.getSelectionIndex();
}
});
// 范围
Label lblScope = new Label(controlContainer, SWT.LEFT);
lblScope.setText(info_scope);
comboScope = new CCombo(controlContainer, SWT.READ_ONLY | SWT.FLAT);
gd = new GridData(GridData.VERTICAL_ALIGN_CENTER);
gd.widthHint = 150;
comboScope.setLayoutData(gd);
comboScope.setBackground(Colors.WHITE);
comboScope.add(info_all);
comboScope.select(0);
comboScope.setVisibleItemCount(20);
comboScope.addSelectionListener(new SelectionAdapter() {
@Override
public void widgetSelected(SelectionEvent e) {
if(comboScope.getSelectionIndex() == 0)
scope = 0;
else {
Object obj = scopes.get(comboScope.getSelectionIndex() - 1);
if(obj instanceof User)
scope = ((User)obj).qq;
else
scope = ((Cluster)obj).clusterId;
}
}
});
// 关键字
Label lblKeyword = new Label(controlContainer, SWT.LEFT);
lblKeyword.setText(info_key);
gd = new GridData();
gd.horizontalIndent = 15;
lblKeyword.setLayoutData(gd);
Text textKeyword = new Text(controlContainer, SWT.SINGLE);
gd = new GridData();
gd.widthHint = 150;
gd.heightHint = 18;
textKeyword.setLayoutData(gd);
textKeyword.addModifyListener(new ModifyListener() {
public void modifyText(ModifyEvent e) {
Text t = (Text)e.getSource();
keyword = t.getText().trim();
if(keyword.equals(""))
tiSearch.setEnabled(false);
else
tiSearch.setEnabled(true);
}
});
textKeyword.addKeyListener(new KeyAdapter() {
@Override
public void keyPressed(KeyEvent e) {
if(e.character == SWT.CR && !keyword.equals(""))
onSearch();
}
});
tiSearch = new ToolItem(tb, SWT.PUSH);
tiSearch.setImage(res.getImage(Resources.icoSearch));
tiSearch.setText(button_search);
tiSearch.addSelectionListener(new SelectionAdapter() {
@Override
public void widgetSelected(SelectionEvent e) {
onSearch();
}
});
// 下部分的容器
Composite bottomContainer = new Composite(control, SWT.NONE);
layout = new GridLayout(3, false);
layout.marginHeight = layout.marginWidth = 1;
layout.horizontalSpacing = layout.verticalSpacing = 1;
bottomContainer.setLayout(layout);
bottomContainer.setLayoutData(new GridData(GridData.FILL_BOTH));
bottomContainer.addPaintListener(new AroundBorderPaintListener(new Class[] { ViewForm.class }, Colors.PAGE_CONTROL_BORDER));
// 树型图
final ViewForm vfTree = new ViewForm(bottomContainer, SWT.FLAT);
gd = new GridData(GridData.FILL_VERTICAL);
gd.verticalSpan = 3;
gd.widthHint = 200;
vfTree.setLayoutData(gd);
Composite topLeft = new Composite(vfTree, SWT.NONE);
topLeft.setLayout(new GridLayout());
Label lblName = new Label(topLeft, SWT.CENTER);
lblName.setText(main.getMyModel().nick + '(' + main.getMyModel().qq + ')');
vfTree.setTopLeft(topLeft);
treeViewer = new TreeViewer(vfTree, SWT.SINGLE);
treeViewer.setContentProvider(new TreeContentProvider());
treeViewer.setLabelProvider(new TreeLabelProvider());
treeViewer.setSorter(new TreeSorter());
treeViewer.getTree().setLinesVisible(true);
vfTree.setContent(treeViewer.getTree());
treeViewer.addSelectionChangedListener(new ISelectionChangedListener() {
public void selectionChanged(SelectionChangedEvent event) {
Object obj = getSelectedObject();
if(obj != null) {
onSelection(obj);
}
}
});
// sash
Sash vSash = new Sash(bottomContainer, SWT.VERTICAL);
gd = new GridData(GridData.FILL_VERTICAL);
gd.verticalSpan = 3;
vSash.setLayoutData(gd);
vSash.addSelectionListener(new SelectionAdapter() {
@Override
public void widgetSelected(SelectionEvent e) {
GridData gd = (GridData)vfTree.getLayoutData();
gd.widthHint = e.x;
vfTree.getParent().layout();
vfTree.getParent().redraw();
}
});
// tab folder
CTabFolder folder = new CTabFolder(bottomContainer, SWT.TOP | SWT.FLAT | SWT.BORDER);
folder.setLayoutData(new GridData(GridData.FILL_BOTH));
// 聊天记录tab
CTabItem tiRecord = new CTabItem(folder, SWT.NONE);
tiRecord.setText(info_record);
tiRecord.setImage(res.getImage(Resources.icoMessage));
// 聊天记录tab容器
Composite recordContainer = new Composite(folder, SWT.NONE);
layout = new GridLayout();
layout.marginHeight = layout.marginWidth = layout.verticalSpacing = layout.horizontalSpacing = 0;
recordContainer.setLayout(layout);
recordViewer = new TableViewer(recordContainer, SWT.FULL_SELECTION | SWT.MULTI | SWT.V_SCROLL | SWT.H_SCROLL);
TableColumn tc = new TableColumn(recordViewer.getTable(), SWT.LEFT);
tc.setText(info_sender);
tc.setWidth(100);
tc = new TableColumn(recordViewer.getTable(), SWT.LEFT);
tc.setText(info_date);
tc.setWidth(100);
tc = new TableColumn(recordViewer.getTable(), SWT.LEFT);
tc.setText(info_time);
tc.setWidth(100);
tc = new TableColumn(recordViewer.getTable(), SWT.LEFT);
tc.setText(info_content);
tc.setWidth(310);
recordViewer.getTable().setHeaderVisible(true);
recordViewer.getTable().setLinesVisible(true);
recordViewer.getTable().setLayoutData(new GridData(GridData.FILL_BOTH));
recordViewer.setContentProvider(new RecordContentProvider());
recordViewer.setLabelProvider(new RecordLabelProvider());
recordViewer.addSelectionChangedListener(new ISelectionChangedListener() {
public void selectionChanged(SelectionChangedEvent event) {
onRecordSelection(event);
}
});
recordViewer.addDoubleClickListener(new IDoubleClickListener() {
public void doubleClick(DoubleClickEvent event) {
onRecordDoubleClick(event);
}
});
// 记录导航按钮条
Composite navContainer = new Composite(recordContainer, SWT.NONE);
layout = new GridLayout(2, false);
layout.marginHeight = layout.marginWidth = 0;
navContainer.setLayout(layout);
navContainer.setLayoutData(new GridData(GridData.FILL_HORIZONTAL));
lblPage = new Label(navContainer, SWT.LEFT);
gd = new GridData(GridData.FILL_HORIZONTAL);
gd.horizontalIndent = 5;
lblPage.setLayoutData(gd);
// 导航工具条
ToolBar tbNav = new ToolBar(navContainer, SWT.FLAT | SWT.RIGHT);
tiFirst = new ToolItem(tbNav, SWT.PUSH);
tiFirst.setImage(res.getImage(Resources.icoFirst));
tiFirst.setText(button_first);
tiFirst.addSelectionListener(new SelectionAdapter() {
@Override
public void widgetSelected(SelectionEvent e) {
pageNum = 0;
navigateTo(pageNum);
}
});
tiPrev = new ToolItem(tbNav, SWT.PUSH);
tiPrev.setImage(res.getImage(Resources.icoPrevious));
tiPrev.setText(button_previous);
tiPrev.addSelectionListener(new SelectionAdapter() {
@Override
public void widgetSelected(SelectionEvent e) {
navigateTo(--pageNum);
}
});
tiNext = new ToolItem(tbNav, SWT.PUSH);
tiNext.setImage(res.getImage(Resources.icoNext));
tiNext.setText(button_next);
tiNext.addSelectionListener(new SelectionAdapter() {
@Override
public void widgetSelected(SelectionEvent e) {
navigateTo(++pageNum);
}
});
tiLast = new ToolItem(tbNav, SWT.PUSH);
tiLast.setImage(res.getImage(Resources.icoLast));
tiLast.setText(button_last);
tiLast.addSelectionListener(new SelectionAdapter() {
@Override
public void widgetSelected(SelectionEvent e) {
pageNum = pageCount - 1;
navigateTo(pageNum);
}
});
tiRecord.setControl(recordContainer);
// horizontal sash
Sash hSash = new Sash(bottomContainer, SWT.HORIZONTAL);
hSash.setLayoutData(new GridData(GridData.FILL_HORIZONTAL));
hSash.addSelectionListener(new SelectionAdapter() {
@Override
public void widgetSelected(SelectionEvent e) {
GridData gd = (GridData)vfRecord.getLayoutData();
gd.heightHint = vfRecord.getParent().getClientArea().height - e.y;
vfRecord.getParent().layout();
vfRecord.getParent().redraw();
}
});
vfRecord = new ViewForm(bottomContainer, SWT.FLAT);
gd = new GridData(GridData.FILL_HORIZONTAL);
gd.heightHint = 100;
vfRecord.setLayoutData(gd);
topLeft = new Composite(vfRecord, SWT.NONE);
layout = new GridLayout(4, true);
topLeft.setLayout(layout);
lblDate = new Label(topLeft, SWT.LEFT);
lblDate.setLayoutData(new GridData(GridData.FILL_HORIZONTAL | GridData.VERTICAL_ALIGN_CENTER));
lblDate.setText(info_date + ":");
lblTime = new Label(topLeft, SWT.LEFT);
lblTime.setLayoutData(new GridData(GridData.FILL_HORIZONTAL | GridData.VERTICAL_ALIGN_CENTER));
lblTime.setText(info_time + ":");
lblSender = new Label(topLeft, SWT.LEFT);
lblSender.setLayoutData(new GridData(GridData.FILL_HORIZONTAL | GridData.VERTICAL_ALIGN_CENTER));
lblSender.setText(info_sender + ":");
lblReceiver = new Label(topLeft, SWT.LEFT);
lblReceiver.setLayoutData(new GridData(GridData.FILL_HORIZONTAL | GridData.VERTICAL_ALIGN_CENTER));
lblReceiver.setText(info_receiver + ":");
vfRecord.setTopLeft(topLeft);
box = new RichBox(vfRecord);
box.setReadonly(true);
box.setBackground(Colors.WHITE);
vfRecord.setContent(box);
controlContainer.setSize(controlContainer.computeSize(SWT.DEFAULT, SWT.DEFAULT));
tiControls.setWidth(controlContainer.getSize().x);
folder.setSelection(0);
initializeControls();
initializeViewers();
return control;
}
/**
* 处理记录双击事件
*
* @param event
*/
protected void onRecordDoubleClick(DoubleClickEvent event) {
IStructuredSelection s = (IStructuredSelection)event.getSelection();
RecordEntry entry = (RecordEntry)s.getFirstElement();
if(entry == null)
return;
main.getShellLauncher().openReceiveSystemMessageShell(entry);
}
/**
* 点击export按钮时调用此方法
*/
protected void onExport() {
boolean onTree = treeViewer.getTree().isFocusControl();
if(onTree) {
Object obj = getSelectedObject();
if(obj instanceof User) {
User f = (User)obj;
main.getExportHelper().exportMessage(f);
} else if(obj instanceof Cluster) {
Cluster c = (Cluster)obj;
main.getExportHelper().exportMessage(c);
} else if(obj instanceof Integer) {
Integer i = (Integer)obj;
if(i == 3)
main.getExportHelper().exportSystemMessage();
}
} else {
List<RecordEntry> entries = new ArrayList<RecordEntry>();
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();
entries.add(entry);
}
Object obj = getSelectedObject();
if(obj instanceof User) {
User f = (User)obj;
main.getExportHelper().exportMessage(f, entries);
} else if(obj instanceof Cluster) {
Cluster c = (Cluster)obj;
main.getExportHelper().exportMessage(c, entries);
} else if(obj instanceof Integer) {
Integer i = (Integer)obj;
if(i == 3)
main.getExportHelper().exportSystemMessage(entries);
}
}
}
protected void onDelete() {
boolean onTree = treeViewer.getTree().isFocusControl();
if(MessageDialog.openQuestion(getShell(), message_box_common_question_title, message_box_confirm_delete_message)) {
if(onTree) {
RecordManager rm = main.getRecordManager();
Object obj = getSelectedObject();
int owner = 0;
if(obj instanceof User)
owner = ((User)obj).qq;
else if(obj instanceof Cluster)
owner = ((Cluster)obj).clusterId;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -