basetreesection.java

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

JAVA
212
字号
/*
 * $Header: /home/cvs/WEBPUMP2.0/WebPumpIDE_Src/WebPumpIDE/src/com/webpump/ui/base/gui/BaseTreeSection.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 org.eclipse.jface.viewers.*;
import org.eclipse.pde.core.*;
import org.eclipse.pde.internal.ui.editor.*;
import org.eclipse.pde.internal.ui.elements.DefaultContentProvider;
import org.eclipse.pde.internal.ui.parts.TreePart;
import org.eclipse.swt.SWT;
import org.eclipse.swt.dnd.Clipboard;
import org.eclipse.swt.graphics.Image;
import org.eclipse.swt.widgets.Composite;
import org.eclipse.ui.part.DrillDownAdapter;
import org.eclipse.update.ui.forms.internal.FormWidgetFactory;
import com.webpump.ui.base.data.*;

public class BaseTreeSection
	extends TreeSection
	implements IModelChangedListener {
		/**
	 * @param formPage
	 * @param buttonLabels
	 */
		
	protected class TreeContentProvider
		extends DefaultContentProvider
		implements ITreeContentProvider {
	
		public Object[] getChildren(Object parent) {
			Object[] children = null;
			if (parent instanceof BaseDataObject)
			{
				return ((BaseDataObject)parent).getChild();
			}

			if (children == null)
				children = new Object[0];
			return children;
		}
		public boolean hasChildren(Object parent) {
			return getChildren(parent).length > 0;
		}
		public Object getParent(Object child) {
			if (child instanceof BaseObject)
				return ((BaseObject) child).getParent();
			return null;
		}
		public Object[] getElements(Object parent) {
			return getChildren(parent);
		}
	}
				
	public BaseTreeSection(BasePage page) {
		super(
			page,
			new String[0]);

		handleDefaultButton = false;

	}
	
	public BaseTreeSection(BasePage page,String[] strArray) {
		super(page, strArray);
	}
		
	protected TreeViewer exceptionTree;
	
	private FormWidgetFactory factory;
	private Image extensionImage;
	private DrillDownAdapter drillDownAdapter;		
	/* (非 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;
		initializeImages();
		Composite container = createClientContainer(parent, 2, factory);

		TreePart treePart = getTreePart();

		createViewerPartControl(container, SWT.MULTI, 2, factory);
		exceptionTree = treePart.getTreeViewer();
		exceptionTree.setAutoExpandLevel(TreeViewer.ALL_LEVELS);

		exceptionTree.setContentProvider(new TreeContentProvider());

		drillDownAdapter = new DrillDownAdapter(exceptionTree);

		factory.paintBordersFor(container);
		return container;
	}
	
	public void initialize(Object input) {
		BaseModel model = (BaseModel) input;
		exceptionTree.setInput(getDataFromModel(model));
		boolean editable = model.isEditable();
		setReadOnly(!editable);
		TreePart treePart = getTreePart();
		treePart.setButtonEnabled(0, false);
		treePart.setButtonEnabled(2, false);
		treePart.setButtonEnabled(3, false);
		model.addModelChangedListener(this);
	}	
	
	public void dispose() {
		BaseModel model = (BaseModel) getFormPage().getModel();
		model.removeModelChangedListener(this);
		super.dispose();
	}
		
	public void modelChanged(IModelChangedEvent event) {
		if (event.getChangeType() == IModelChangedEvent.WORLD_CHANGED) {
			BaseModel model = (BaseModel) getFormPage().getModel();
			exceptionTree.setInput(getDataFromModel(model));
			exceptionTree.refresh();
			return;
		}
		Object changeObject = event.getChangedObjects()[0];
		if (changeObject instanceof BaseObject
			&& event.getChangeType() == IModelChangedEvent.CHANGE
			&& !(changeObject instanceof BaseDataObject)
			) {
			IStructuredSelection sel =
				(IStructuredSelection) exceptionTree.getSelection();
				BaseObject objBaseObject = (BaseObject)sel.getFirstElement();
				exceptionTree.refresh();
				exceptionTree.setSelection(new StructuredSelection(objBaseObject));
			return;
		}

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

	/**
	 * @param item
	 */
	public void setButtonStyle(Object item) {

	}	

	/**
	 * 
	 */
	private void initializeImages() {

		
	}
	
	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() ; 
	}
}

⌨️ 快捷键说明

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