62,614
社区成员
发帖
与我相关
我的任务
分享
package test;
import org.eclipse.jface.viewers.ILabelProviderListener;
import org.eclipse.jface.viewers.ITableLabelProvider;
import org.eclipse.jface.viewers.ITreeContentProvider;
import org.eclipse.jface.viewers.TableTreeViewer;
import org.eclipse.jface.viewers.Viewer;
import org.eclipse.swt.SWT;
import org.eclipse.swt.graphics.Image;
import org.eclipse.swt.layout.FillLayout;
import org.eclipse.swt.layout.GridData;
import org.eclipse.swt.widgets.Display;
import org.eclipse.swt.widgets.Shell;
import org.eclipse.swt.widgets.TableColumn;
import org.dom4j.DocumentFactory;
import org.dom4j.Element;
public class TestFrameEx extends Shell {
public static Element element = null;
static {
element = DocumentFactory.getInstance().createElement("root");
Element f1 = element.addElement("folder");
f1.addAttribute("name", "folder1");
Element e1 = f1.addElement("data");
e1.addAttribute("name", "e1");
e1.addAttribute("value", "v1");
Element e2 = f1.addElement("data");
e2.addAttribute("name", "e2");
e2.addAttribute("value", "v2");
Element f2 = element.addElement("folder");
f2.addAttribute("name", "folder2");
Element e3 = f2.addElement("data");
e3.addAttribute("name", "e3");
e3.addAttribute("value", "v3");
Element e4 = f2.addElement("data");
e4.addAttribute("name", "e4");
e4.addAttribute("value", "v4");
}
/**
* Launch the application
* @param args
*/
public static void main(String args[]) {
try {
Display display = Display.getDefault();
TestFrameEx shell = new TestFrameEx(display, SWT.SHELL_TRIM);
shell.open();
shell.layout();
while (!shell.isDisposed()) {
if (!display.readAndDispatch())
display.sleep();
}
} catch (Exception e) {
e.printStackTrace();
}
}
/**
* Create the shell
* @param display
* @param style
*/
public TestFrameEx(Display display, int style) {
super(display, style);
createContents();
setLayout(new FillLayout());
}
/**
* Create contents of the window
*/
protected void createContents() {
setText("SWT Application");
setSize(500, 375);
final TableTreeViewer ttv = new TableTreeViewer(this, SWT.BORDER);
ttv.getTableTree().setLayoutData(new GridData(GridData.FILL_BOTH));
// Set the content and label providers
ttv.setContentProvider(new MyPlayerTreeContentProvider());
ttv.setLabelProvider(new MyPlayerTreeLabelProvider());
ttv.setInput(element);
//final CellEditor[] cellEditors = new CellEditor[2];
//cellEditors[1] = new TextCellEditor(ttv.getTableTree());
/*ttv.setCellEditors(cellEditors);
ttv.setColumnProperties(new String[]{"name", "value"});
ttv.setCellModifier(new ICellModifier() {
public boolean canModify(Object element, String property) {
// TODO Auto-generated method stub
Element data = (Element)element;
if (data.getName().compareTo("folder") == 0) {
return false;
}
if (data.getName().compareTo("data") == 0) {
String strName = data.attributeValue("name");
if (strName.compareTo("e1") == 0) {
cellEditors[1] = new ComboBoxCellEditor(
ttv.getTableTree(), new String[]{"v1", "v5", "v6"});
}
if (property.compareTo("value") == 0)
return true;
}
return false;
}
public Object getValue(Object element, String property) {
// TODO Auto-generated method stub
Element data = (Element)element;
return data.attributeValue("value");
}
public void modify(Object element, String property, Object value) {
// TODO Auto-generated method stub
Item item = (Item) ((TreeColumn) element).getData();
if (item instanceof Element) {
((Element)item).setAttributeValue("value", value + "");
}
System.out.println(((Element)item).asXML());
}
});*/
// Set up the table
TableColumn column1 = new TableColumn(ttv.getTableTree().getTable(), SWT.CENTER);
column1.setText("Name");
column1.setWidth(200);
TableColumn column2 = new TableColumn(ttv.getTableTree().getTable(), SWT.CENTER);
column2.setText("Value");
column2.setWidth(200);
//Expand everything
ttv.expandAll();
// Pack the columns
for (int i = 0, n = ttv.getTableTree().getTable().getColumnCount(); i < n; i++) {
ttv.getTableTree().getTable().getColumn(i).pack();
}
// Turn on the header and the lines
ttv.getTableTree().getTable().setHeaderVisible(true);
ttv.getTableTree().getTable().setLinesVisible(true);
// Pack the window
pack();
ttv.reveal(ttv.getElementAt(0));
}
@Override
protected void checkSubclass() {
// Disable the check that prevents subclassing of SWT components
}
}
class MyPlayerTreeContentProvider implements ITreeContentProvider {
private static final Object[] EMPTY = new Object[] {};
public Object[] getChildren(Object parentElement) {
// TODO Auto-generated method stub
if (parentElement instanceof Element) {
Object[] objs = ((Element)parentElement).elements().toArray();
System.out.println(objs);
return objs;
}
return EMPTY;
}
public Object getParent(Object element) {
// TODO Auto-generated method stub
return ((Element)element).getParent();
}
public boolean hasChildren(Object element) {
// TODO Auto-generated method stub
return getChildren(element).length > 0;
}
public Object[] getElements(Object inputElement) {
// TODO Auto-generated method stub
return getChildren(inputElement);
}
public void dispose() {
// TODO Auto-generated method stub
}
public void inputChanged(Viewer viewer, Object oldInput, Object newInput) {
// TODO Auto-generated method stub
}
}
class MyPlayerTreeLabelProvider implements ITableLabelProvider {
public static final int COLUMN_NAME = 0;
public static final int COLUMN_VALUE = 1;
public String getColumnText(Object element, int columnIndex) {
// TODO Auto-generated method stub
Element data = (Element) element;
//System.out.println(data.asXML());
String text = "";
switch (columnIndex) {
case COLUMN_NAME:
text = data.attributeValue("name");
break;
case COLUMN_VALUE:
text = data.attributeValue("value");
break;
}
return text;
}
public void addListener(ILabelProviderListener listener) {
// TODO Auto-generated method stub
}
public void dispose() {
// TODO Auto-generated method stub
}
public boolean isLabelProperty(Object element, String property) {
// TODO Auto-generated method stub
return false;
}
public void removeListener(ILabelProviderListener listener) {
// TODO Auto-generated method stub
}
public Image getColumnImage(Object element, int columnIndex) {
// TODO Auto-generated method stub
return null;
}