最先开始用的是SWT table来展示人员信息,代码如下
package cn.rescue.view;
import java.util.List;
import org.eclipse.swt.SWT;
import org.eclipse.swt.events.MouseEvent;
import org.eclipse.swt.events.MouseListener;
import org.eclipse.swt.events.SelectionAdapter;
import org.eclipse.swt.events.SelectionEvent;
import org.eclipse.swt.graphics.Color;
import org.eclipse.swt.graphics.Point;
import org.eclipse.swt.graphics.Rectangle;
import org.eclipse.swt.widgets.Composite;
import org.eclipse.swt.widgets.Display;
import org.eclipse.swt.widgets.Event;
import org.eclipse.swt.widgets.Listener;
import org.eclipse.swt.widgets.Table;
import org.eclipse.swt.widgets.TableColumn;
import org.eclipse.swt.widgets.TableItem;
import org.eclipse.ui.part.ViewPart;
import cn.rescue.gui.tree.MarkListTree;
import cn.rescue.soldier.Soldier;
import cn.rescue.soldier.SoldierOnOffManage;
import cn.rescue.soldier.SoldierRT;
import cn.rescue.util.UpdateToSynchro;
public class TableView extends ViewPart {
public static final String ID = "cn.TableView";
private static TableView tableView;
private static Table table;
private static int itemSelected=-1;
private List soldiersOnline=null;
public static TableView getInstance() {
if (tableView == null) {
tableView = new TableView();
}
return tableView;
}
public TableView() {
}
//创建展示人员信息的table
@Override
public void createPartControl(Composite parent) {
// TODO Auto-generated method stub
table = new Table(parent, SWT.SINGLE|SWT.CHECK|SWT.BORDER | SWT.FULL_SELECTION);
table.setHeaderVisible(true);
table.setLinesVisible(true);
table.addListener(SWT.Selection, new CheckedListener());
table.addListener(SWT.MouseDoubleClick,new CheckedListener());
createTableColumn();
}
public void createTableColumn(){
TableColumn t_name = new TableColumn(parent, SWT.NONE);
t_name.setWidth(60);
t_name.setText("姓名");
TableColumn t_sex = new TableColumn(parent, SWT.NONE);
t_sex.setWidth(50);
t_sex.setText("性别 ");
TableColumn t_age = new TableColumn(parent, SWT.NONE);
t_age.setWidth(50);
t_age.setText("年龄");
}
private class CheckedListener implements Listener {
TableItem itemChange = null;
@Override
public void handleEvent(Event event) {
if (event.detail == SWT.CHECK || event.type == SWT.MouseDoubleClick) {
if (event.type == SWT.MouseDoubleClick) {
itemChange = table.getItem(table.getSelectionIndex());
} else {
itemChange = (TableItem) event.item;
}
for (int i = 0; i < table.getItemCount(); i++) {
if (table.getItem(i).equals(itemChange)) {
if (itemSelected == i) {
table.getItem(itemSelected).setChecked(false);
itemSelected = -1;
UpdateToSynchro.getInstance()
.updateToSynchro_select(
itemChange.getText(11), false);
} else if (itemSelected != -1) {
table.getItem(itemSelected).setChecked(false);
itemSelected = i;
UpdateToSynchro.getInstance()
.updateToSynchro_select(
itemChange.getText(11), true);
table.getItem(itemSelected).setChecked(true);
} else {
itemSelected = i;
UpdateToSynchro.getInstance()
.updateToSynchro_select(
itemChange.getText(11), true);
table.getItem(itemSelected).setChecked(true);
}
}
}
}
}
}
}