basetablesection.java

来自「一个eclipse插件源代码。用于web开发」· Java 代码 · 共 212 行

JAVA
212
字号
/*
 * $Header: /home/cvs/WEBPUMP2.0/WebPumpIDE_Src/WebPumpIDE/src/com/webpump/ui/base/gui/BaseTableSection.java,v 1.1.1.1 2004/07/01 09:07:40 wang_j Exp $
 * $Revision: 1.1.1.1 $
 * $Date: 2004/07/01 09:07:40 $
 *
 * ====================================================================
 *
 * The NanJing HopeRun(IT-FOREST) Software License, Version 2.0.0
 *
 * Copyright 2003-2004 by NanJing HopeRun(IT-FOREST) Information System Co., Ltd, CHINA and
 *                        IT Forest Corporation
 * All rights reserved.
 *
 * This software is the confidential and proprietary information of
 * HopeRun(IT-FOREST) Information System Co., Ltd, CHINA and IT Forest Corporation.
 * You shall not disclose such Confidential Information and shall use it only in
 * accordance with the terms of the license agreement you entered into with
 * HopeRun(IT-FOREST) Information System Co., Ltd, CHINA and IT Forest Corporation.
 */
package com.webpump.ui.base.gui;

import java.util.Vector;

import org.eclipse.jface.viewers.*;
import org.eclipse.pde.core.IModelChangedEvent;
import org.eclipse.pde.internal.core.*;
import org.eclipse.pde.internal.ui.PDEPlugin;
import org.eclipse.pde.internal.ui.editor.TableSection;
import org.eclipse.pde.internal.ui.elements.DefaultTableProvider;
import org.eclipse.pde.internal.ui.parts.EditableTablePart;
import org.eclipse.pde.internal.ui.wizards.ListUtil;
import org.eclipse.swt.SWT;
import org.eclipse.swt.dnd.Clipboard;
import org.eclipse.swt.widgets.*;
import org.eclipse.update.ui.forms.internal.*;

import com.webpump.ui.base.data.*;


public class BaseTableSection extends TableSection {
	/**
	 * @param formPage
	 * @param buttonLabels
	 */
	protected Vector imports;
	protected String m_strSelectName;
	
	protected class TableContentProvider extends DefaultTableProvider {
		public Object[] getElements(Object parent) {
			
			if (parent instanceof BaseDataObject)
			{
				return ((BaseDataObject)parent).getChild();
			}

			return new Object[0];
		}

	}
	
	
	public BaseTableSection(BasePage page) {
		super(page, null);
		setHeaderText("");
		getTablePart().setEditable(false);
	}

	public BaseTableSection(BasePage page,String[] strArray) {
		super(page, strArray);
	}
		
	private FormWidgetFactory factory;
	protected TableViewer tableViewer;
	private boolean needsUpdate = false;
	protected BaseDataObject m_objDataObject;
	
	/* (非 Javadoc)
	 * @see org.eclipse.update.ui.forms.internal.FormSection#createClient(org.eclipse.swt.widgets.Composite, org.eclipse.update.ui.forms.internal.FormWidgetFactory)
	 */
	public Composite createClient(Composite parent, FormWidgetFactory factory) {
		this.factory = factory;
		Composite container = createClientContainer(parent, 2, factory);
		EditableTablePart part = getTablePart();
		
		part.setEditable(false);
		
		createViewerPartControl(container, SWT.SINGLE|SWT.FULL_SELECTION , 2, factory);
		tableViewer = part.getTableViewer();
		
		tableViewer.setContentProvider(new TableContentProvider());
		tableViewer.setLabelProvider(PDEPlugin.getDefault().getLabelProvider());
		tableViewer.setSorter(ListUtil.NAME_SORTER);
		factory.paintBordersFor(container);
		return container;
	}

	public void initialize(Object input) {
		BaseModel model = (BaseModel) input;
		tableViewer.setInput(getDataFromModel(model));
		model.addModelChangedListener(this);
	}

	protected void selectionChanged(IStructuredSelection selection) {
		Object item = selection.getFirstElement();
		fireSelectionNotification(item);
		getFormPage().setSelection(selection);
	}	


	public void modelChanged(IModelChangedEvent event) {
		if (event.getChangeType() == IModelChangedEvent.WORLD_CHANGED) {	
			BaseModel model = (BaseModel) getFormPage().getModel();
			tableViewer.setInput(getDataFromModel(model));
			tableViewer.refresh();
		}

		Object changeObject = event.getChangedObjects()[0];
		
		if (isRefresh(changeObject))
		{
			if (event.getChangeType() == IModelChangedEvent.CHANGE) 
			{
				tableViewer.refresh();
				return;
			}

			if (event.getChangeType() == IModelChangedEvent.INSERT) 
			{
				tableViewer.refresh();
				return;
			}

			if (event.getChangeType() == IModelChangedEvent.REMOVE) 
			{
				tableViewer.refresh();
				return;
			}			
		}

	}
	
	public void modelsChanged(IModelProviderEvent e) {
		imports = null;
		tableViewer.getControl().getDisplay().asyncExec(new Runnable() {
			public void run() {
				if (!tableViewer.getControl().isDisposed())
					tableViewer.refresh();
			}
		});
	}
	
	
	public void dispose() {
		BaseModel model = (BaseModel) getFormPage().getModel();
		model.removeModelChangedListener(this);
		super.dispose();
	}
	
	public void update() {
		tableViewer.refresh();
		needsUpdate = false;
	}	
	
	public String getSelectName()
	{
		return m_strSelectName;
	}
	
	protected void doPaste() {
		ISelection selection = viewerPart.getViewer().getSelection();
		IStructuredSelection ssel = (IStructuredSelection)selection;
		if (ssel.size()>1) return;
		
		Object target = ssel.getFirstElement();
		
		Clipboard clipboard = getFormPage().getEditor().getClipboard();
		
		Object [] objects = (Object[])clipboard.getContents(BaseDataTransfer.getInstance());
		if (objects!=null) {
			doPaste(target, objects);
		}
	}
	
	public boolean canPaste(Clipboard clipboard) {
		ISelection selection = viewerPart.getViewer().getSelection();
		IStructuredSelection ssel = (IStructuredSelection)selection;
		if (ssel.size()>1) return false;
			
		Object target = ssel.getFirstElement();
		
		Object [] objects = (Object[])clipboard.getContents(BaseDataTransfer.getInstance());
		if (objects!=null && objects.length>0) {
			return canPaste(target, objects);
		}
		else return false;
	}
	
	public BaseDataObject getDataFromModel(BaseModel objModel)
	{
		return objModel.getDataObject() ; 
	}
	
	public boolean isRefresh(Object object)
	{
		if (object instanceof BaseObject)
			return true;
		else
			return false;	
	}
	 		
}

⌨️ 快捷键说明

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