⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 mytableview.java

📁 一个简单的CellEditor的例子 希望给学习java的朋友一点帮助
💻 JAVA
字号:
package com.intotherain.examples.SimpleCellEditor.view;

import java.util.List;

import org.eclipse.jface.viewers.CellEditor;
import org.eclipse.jface.viewers.ICellModifier;
import org.eclipse.jface.viewers.ILabelProviderListener;
import org.eclipse.jface.viewers.ISelectionChangedListener;
import org.eclipse.jface.viewers.IStructuredContentProvider;
import org.eclipse.jface.viewers.ITableLabelProvider;
import org.eclipse.jface.viewers.SelectionChangedEvent;
import org.eclipse.jface.viewers.StructuredSelection;
import org.eclipse.jface.viewers.TableViewer;
import org.eclipse.jface.viewers.TextCellEditor;
import org.eclipse.jface.viewers.Viewer;
import org.eclipse.swt.SWT;
import org.eclipse.swt.graphics.Image;
import org.eclipse.swt.widgets.Composite;
import org.eclipse.swt.widgets.Item;
import org.eclipse.swt.widgets.Table;
import org.eclipse.swt.widgets.TableColumn;
import org.eclipse.ui.PlatformUI;
import org.eclipse.ui.part.ViewPart;
import org.eclipse.ui.views.properties.PropertySheet;

import com.intotherain.examples.SimpleCellEditor.CellEditors.EditIETypeCellEditor;
import com.intotherain.examples.SimpleCellEditor.model.IETypeEnum;
import com.intotherain.examples.SimpleCellEditor.model.Record;
import com.intotherain.examples.SimpleCellEditor.util.MyFactory;

/**
 * 
 * @author intotherain
 *
 */
public class MyTableView extends ViewPart {
    public static final String ID = "com.intotherain.examples.SimpleCellEditor.MyTableView";

    private TableViewer viewer;

    private Table table;

    private EditIETypeCellEditor myCellEditor;

    private String[] property = new String[] { "id", "name", "online time",
            "IE type" };

    public MyTableView() {
        super();
    }

    @Override
    public void createPartControl(Composite parent) {
        viewer = new TableViewer(parent, SWT.FULL_SELECTION | SWT.FLAT
                | SWT.H_SCROLL | SWT.V_SCROLL);
        viewer.setContentProvider(new MyContentProvider());
        viewer.setLabelProvider(new MyLabelProvider());

        table = viewer.getTable();
        table.setLinesVisible(true);
        table.setHeaderVisible(true);

        TableColumn c1 = new TableColumn(table, SWT.LEFT);
        c1.setText("id"); //$NON-NLS-1$
        c1.setWidth(100);

        TableColumn c2 = new TableColumn(table, SWT.LEFT);
        c2.setText("name");//$NON-NLS-1$
        c2.setWidth(100);

        TableColumn c3 = new TableColumn(table, SWT.LEFT);
        c3.setText("online time"); //$NON-NLS-1$
        c3.setWidth(120);

        TableColumn c4 = new TableColumn(table, SWT.LEFT);
        c4.setText("IE type"); //$NON-NLS-1$
        c4.setWidth(200);
        viewer.setColumnProperties(property);

        CellEditor[] editors = new CellEditor[4];
        editors[0] = new TextCellEditor(table);
        editors[1] = new TextCellEditor(table);
        editors[2] = new TextCellEditor(table);
        editors[3] = new EditIETypeCellEditor(table);
        myCellEditor = (EditIETypeCellEditor) editors[3];

        viewer.setCellModifier(new MyCellModifier(viewer));
        viewer.setCellEditors(editors);

        viewer.setInput(MyFactory.createRecords());

        viewer.addSelectionChangedListener(new ISelectionChangedListener() {

            public void selectionChanged(SelectionChangedEvent event) {
                StructuredSelection sel = (StructuredSelection) event
                        .getSelection();
                Object object = sel.getFirstElement();
                myCellEditor.setCurrentRecord((Record) object);
            }

        });

        getSite().setSelectionProvider(viewer);
    }

    @Override
    public void setFocus() {
        viewer.getControl().setFocus();
    }

    public void refresh() {
        viewer.refresh();
    }

}

class MyContentProvider implements IStructuredContentProvider {

    public Object[] getElements(Object inputElement) {
        if (inputElement instanceof List) {
            List input = (List) inputElement;
            return input.toArray();
        }
        return null;
    }

    public void dispose() {
    }

    public void inputChanged(Viewer viewer, Object oldInput, Object newInput) {

    }

}

class MyLabelProvider implements ITableLabelProvider {

    public Image getColumnImage(Object element, int columnIndex) {
        return null;
    }

    public String getColumnText(Object element, int columnIndex) {
        Record record = (Record) element;
        String text = "";
        switch (columnIndex) {
        case 0:
            text = record.getId();
            break;
        case 1:
            text = record.getUsrName();
            break;
        case 2:
            text = record.getTotalTime();
            break;
        case 3:
            text = record.getIeType().toString();
            break;
        }

        return text;
    }

    public void addListener(ILabelProviderListener listener) {

    }

    public void dispose() {

    }

    public boolean isLabelProperty(Object element, String property) {
        return false;
    }

    public void removeListener(ILabelProviderListener listener) {

    }

}

class MyCellModifier implements ICellModifier {
    TableViewer viewer;
    
    public MyCellModifier(TableViewer v) {
        viewer  = v;
    }
    
    public boolean canModify(Object element, String property) {
        if (property.equals("IE type")) {
            return true;
        }
        return false;
    }

    public Object getValue(Object element, String property) {
        if (property.equals("IE type")) {
            Record record = (Record) element;
            return record.getIeType();
        }
        return null;
    }

    public void modify(Object element, String property, Object value) {
        if (element instanceof Item) {
            element = ((Item) element).getData();
            Record record = (Record) element;

            if (property.equals("IE type")) {
                record.setIeType((IETypeEnum) value);
            }
            
            PropertySheet sheet = (PropertySheet)PlatformUI.getWorkbench().getActiveWorkbenchWindow().getActivePage().findView("org.eclipse.ui.views.PropertySheet");
            sheet.selectionChanged(null, new StructuredSelection(record));
            viewer.refresh();
        }

    }

}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -