📄 securitytableview.java
字号:
package com.hnjchina.securityView;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;
import org.eclipse.swt.SWT;
import org.eclipse.swt.graphics.Image;
import org.eclipse.swt.layout.FillLayout;
import org.eclipse.swt.widgets.Composite;
import org.eclipse.jface.action.Action;
import org.eclipse.jface.action.IMenuManager;
import org.eclipse.jface.action.MenuManager;
import org.eclipse.jface.dialogs.MessageDialog;
import org.eclipse.jface.viewers.*;
import org.eclipse.swt.widgets.Menu;
import org.eclipse.swt.widgets.Table;
import org.eclipse.swt.widgets.TableColumn;
import org.eclipse.ui.part.ViewPart;
public class SecurityTableView extends ViewPart{
public void createTableViewer(Composite composite){
final TableViewer tv=new TableViewer(composite,SWT.MULTI|SWT.H_SCROLL|SWT.V_SCROLL|SWT.BORDER|SWT.FULL_SELECTION);
Table table=tv.getTable();
table.setHeaderVisible(true);
table.setLinesVisible(true);
TableLayout tlayout=new TableLayout();
table.setLayout(tlayout);
tlayout.addColumnData(new ColumnWeightData(5));
new TableColumn(table,SWT.NONE).setText("userid");
tlayout.addColumnData(new ColumnWeightData(100));
new TableColumn(table,SWT.NONE).setText("name");
tlayout.addColumnData(new ColumnWeightData(500));
new TableColumn(table,SWT.NONE).setText("description");
tlayout.addColumnData(new ColumnWeightData(10));
new TableColumn(table,SWT.NONE).setText("priority");
tlayout.addColumnData(new ColumnWeightData(10));
new TableColumn(table,SWT.NONE).setText("user_type");
tv.setContentProvider(new MyContentProvider());
MyActionGroup actiongroup=new MyActionGroup(tv);
actiongroup.fillContextMenu(new MenuManager());
tv.setLabelProvider(new MyLabelProvider());
tv.setInput(getPeoPles());
tv.addDoubleClickListener(new IDoubleClickListener(){
public void doubleClick(DoubleClickEvent event) {
IStructuredSelection selection=(IStructuredSelection)event.getSelection();
PeopleEntity obj=(PeopleEntity) selection.getFirstElement();
MessageDialog.openInformation(null, "提示", "you double click " + obj.getusername());
}
});
tv.addSelectionChangedListener(new ISelectionChangedListener(){
public void selectionChanged(SelectionChangedEvent event) {
}});
}
private List getPeoPles(){
String ls_des;
List peoples=new ArrayList();
Logon logon=new Logon();
ResultSet resultSet=logon.exesql("select userid,name,description,priority,user_type from security_users");
try {
while (resultSet.next())
{ PeopleEntity p=new PeopleEntity();
p.setuserid(resultSet.getInt("userid"));
p.setusername(resultSet.getString("name"));
ls_des=resultSet.getString("description");
// try {
// ls_des=new String(ls_des.getBytes("ISO-8859-1"));
// } catch (UnsupportedEncodingException e1) {
// e1.printStackTrace();
// }
p.setdescription(ls_des);
p.setpriority(resultSet.getInt("priority"));
p.setuser_type(resultSet.getInt("user_type"));
peoples.add(p);
}
} catch (SQLException e) {
e.printStackTrace();
}
return peoples;
}
/*内容器(写成了一个内部类). 在这里对所有记录集中的记录进行处理*/
private static final class MyContentProvider implements IStructuredContentProvider{
public Object[] getElements(Object element) {
if (element instanceof List)
return ((List)element).toArray();
else
return new Object[0];
}
public void dispose() {}
public void inputChanged(Viewer arg0, Object arg1, Object arg2) {}
}
public static final class MyLabelProvider implements ITableLabelProvider {
public Image getColumnImage(Object element, int col) {
return null;
}
public String getColumnText(Object element,int col) {
PeopleEntity o= (PeopleEntity) element;
if (col==0){
return String.valueOf(o.getuserid());
}
if (col==1){
return o.getusername();
}
if (col==2){
return o.getdescription();
}
if (col==3){
return String.valueOf(o.getpriority());
}
if (col==4){
return String.valueOf(o.getuser_type());
}
return null;
}
public void addListener(ILabelProviderListener arg0) {}
public void dispose() { }
public boolean isLabelProperty(Object arg0, String arg1) {
return false;
}
public void removeListener(ILabelProviderListener arg0) {}
}
/*这是一个实体类,相当于数据库中的一条记录。
* 具体为一个人的记录,象征性的包含四个不同数据类型的字段。
* 这些字段都是private的,然后以其相应的set/get方法来访问*/
public class PeopleEntity {
private long userid;
private String name;
private String description;
private int priority;
private int user_type;
public long getuserid(){return userid;}
public void setuserid(long ll_userid){userid=ll_userid;}
public String getusername(){return name;}
public void setusername(String ls_username){name=ls_username;}
public String getdescription(){return description;}
public void setdescription(String ls_des){description=ls_des;}
public int getpriority(){return priority;}
public void setpriority(int li_pri){priority=li_pri;}
public int getuser_type(){return user_type;}
public void setuser_type(int li_usertype){user_type=li_usertype;}
}
private final class MyActionGroup extends Action{
private TableViewer tv;
private OpenAction openAction;
private RefreshAction refreshAction;
public MyActionGroup(TableViewer v){
System.out.println("MyActionGroup");
this.tv=v;
openAction=new OpenAction(v);
refreshAction=new RefreshAction(v);
}
/*菜单的生成*/
public void fillContextMenu(IMenuManager mgr){
/* 下面两句代码,eclipse用到了"乒乓模式".menu和tv两个对象互为参数*/
Menu menu=((MenuManager)mgr).createContextMenu(tv.getTable());
tv.getTable().setMenu(menu);
if (!(openAction==null)){
tv.add(openAction);
tv.add(refreshAction);
}
}
}
private final class OpenAction extends Action{
private TableViewer tv;
public OpenAction(TableViewer v){
this.tv=v;
setText("open");
}
public void run(){
IStructuredSelection select=(IStructuredSelection) tv.getSelection();
PeopleEntity obj=(PeopleEntity) select.getFirstElement();
if (obj==null){
MessageDialog.openInformation(null,"message","you hava must select row");
}else{
MessageDialog.openInformation(null,"message","open row "+obj.getusername());
}
}
}
private final class RefreshAction extends Action{
private TableViewer tv;
public RefreshAction(TableViewer v){
this.tv=v;
setText("Refresh");
}
public void run(){
tv.refresh();
}
}
/* (non-Javadoc)
* @see org.eclipse.ui.part.WorkbenchPart#createPartControl(org.eclipse.swt.widgets.Composite)
*/
public void createPartControl(Composite parent) {
parent.setLayout(new FillLayout());
createTableViewer(parent);
}
/* (non-Javadoc)
* @see org.eclipse.ui.part.WorkbenchPart#setFocus()
*/
public void setFocus() {
// TODO Auto-generated method stub
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -