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

📄 kindtreeview.java

📁 eclipse rcp 项目实例
💻 JAVA
字号:
package com.niis.myprice.views;

import java.util.ArrayList;

import org.eclipse.jface.action.Action;
import org.eclipse.jface.action.IMenuListener;
import org.eclipse.jface.action.IMenuManager;
import org.eclipse.jface.action.IToolBarManager;
import org.eclipse.jface.action.MenuManager;
import org.eclipse.jface.action.Separator;
import org.eclipse.jface.dialogs.MessageDialog;
import org.eclipse.jface.viewers.DoubleClickEvent;
import org.eclipse.jface.viewers.IDoubleClickListener;
import org.eclipse.jface.viewers.ISelection;
import org.eclipse.jface.viewers.ISelectionChangedListener;
import org.eclipse.jface.viewers.IStructuredContentProvider;
import org.eclipse.jface.viewers.IStructuredSelection;
import org.eclipse.jface.viewers.ITreeContentProvider;
import org.eclipse.jface.viewers.LabelProvider;
import org.eclipse.jface.viewers.SelectionChangedEvent;
import org.eclipse.jface.viewers.TableViewer;
import org.eclipse.jface.viewers.TreeViewer;
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.widgets.Composite;
import org.eclipse.swt.widgets.Menu;
import org.eclipse.swt.widgets.Tree;
import org.eclipse.ui.ISharedImages;
import org.eclipse.ui.IViewPart;
import org.eclipse.ui.IWorkbenchActionConstants;
import org.eclipse.ui.PartInitException;
import org.eclipse.ui.PlatformUI;
import org.eclipse.ui.part.ViewPart;

import com.niis.myprice.domain.DataTree;
import com.niis.myprice.domain.Kind;
import com.niis.myprice.domain.Node;
import com.niis.myprice.util.message.Messages;

public class KindTreeView extends ViewPart {

	// private Tree tree;
	private TreeViewer viewer;

	public static final String ID = "com.niis.myprice.views.KindTreeView"; //$NON-NLS-1$

	private Action addKindAction;

	private Action modifyKindAction;

	private Action deleteKindAction;

	private Action viewKindAction;

	private Action viewWareAction;

	private Action doubleClickAction;

	public static String activeViewId = WelcomView.ID;

	/**
	 * Create contents of the view part
	 * 
	 * @param parent
	 */
	public void createPartControl(Composite parent) {
		Composite container = new Composite(parent, SWT.NONE);

		viewer = new TreeViewer(container, SWT.BORDER);
		viewer.setContentProvider(new KindContentProvider());
		viewer.setLabelProvider(new KindLabelProvider());
		viewer.setInput(DataTree.getDt().getAbstractRoot());
		addListener2viewer(viewer);
		Tree tree = viewer.getTree();
		FillLayout layout = new FillLayout();
		container.setLayout(layout);
		// tree.setBounds(10, 10, 200, 216);
		//
		createActions();
		hookContextMenu();
		// hookDoubleClickAction();
		initializeToolBar();
		initializeMenu();
	}

	public void addListener2viewer(TreeViewer viewer) {
		viewer.addSelectionChangedListener(new ISelectionChangedListener() {
			public void selectionChanged(SelectionChangedEvent event) {
				if (activeViewId.equals(KindView.ID)) {
					viewKindAction.run();
				}
				if (activeViewId.equals(WareView.ID)) {
					viewWareAction.run();
				}
				if(activeViewId.equals(WelcomView.ID)){
					activeViewId = KindView.ID;
				}
			}
		});
	}

	/**
	 * Create the actions
	 */
	private void createActions() {
		makeAddKindAction();
		makeModifyKindAction();
		makeDeleteKindAction();
		makeDoubleClickAction();
		makeViewKindAction();
		makeViewWareAction();
	}

	public void makeAddKindAction() {
		addKindAction = new Action() {
			public void run() {
				try {
					ISelection selection = viewer.getSelection();
					Object obj = ((IStructuredSelection) selection)
							.getFirstElement();
					if (obj instanceof Kind) {
						Kind parentKind = (Kind) obj;
						IViewPart view = getSite().getWorkbenchWindow()
								.getActivePage().showView(KindView.ID);
						if (view instanceof KindView) {
							KindView kindView = ((KindView) view);
							kindView.setKind(new Kind(parentKind));
							kindView.refreshData(0);
						}
					}
				} catch (PartInitException e) {
					MessageDialog.openError(getSite().getShell(), "Error", //$NON-NLS-1$
							"Error opening view:" + e.getMessage()); //$NON-NLS-1$
				}
			}
		};
		addKindAction.setText(Messages.getString("KindTreeView.addkind")); //$NON-NLS-1$
		addKindAction.setToolTipText("add Action tooltip"); //$NON-NLS-1$
		addKindAction.setImageDescriptor(PlatformUI.getWorkbench()
				.getSharedImages().getImageDescriptor(
						ISharedImages.IMG_OBJS_INFO_TSK));

	}

	public void makeModifyKindAction() {
		modifyKindAction = new Action() {
			public void run() {
				try {
					ISelection selection = viewer.getSelection();
					Object obj = ((IStructuredSelection) selection)
							.getFirstElement();
					if (obj instanceof Kind) {
						Kind kind = (Kind) obj;
						IViewPart view = getSite().getWorkbenchWindow()
								.getActivePage().showView(KindView.ID);
						if (view instanceof KindView) {
							KindView kindView = (KindView) view;
							kindView.setKind(kind);
							kindView.refreshData(1);

						}
					}
				} catch (PartInitException e) {
					MessageDialog.openError(getSite().getShell(), "Error", //$NON-NLS-1$
							"Error opening view:" + e.getMessage()); //$NON-NLS-1$
				}
			}
		};
		modifyKindAction.setText(Messages.getString("KindTreeView.modifykind")); //$NON-NLS-1$
		modifyKindAction.setToolTipText("add Action tooltip"); //$NON-NLS-1$
		modifyKindAction.setImageDescriptor(PlatformUI.getWorkbench()
				.getSharedImages().getImageDescriptor(
						ISharedImages.IMG_OBJS_INFO_TSK));

	}

	public void makeViewKindAction() {
		viewKindAction = new Action() {
			public void run() {
				try {
					ISelection selection = viewer.getSelection();
					Object obj = ((IStructuredSelection) selection)
							.getFirstElement();
					if (obj instanceof Kind) {
						Kind kind = (Kind) obj;
						IViewPart view = getSite().getWorkbenchWindow()
								.getActivePage().showView(KindView.ID);
						if (view instanceof KindView) {
							KindView kindView = (KindView) view;
							kindView.setKind(kind);
							kindView.refreshData(3);

						}
					}
				} catch (PartInitException e) {
					MessageDialog.openError(getSite().getShell(), "Error", //$NON-NLS-1$
							"Error opening view:" + e.getMessage()); //$NON-NLS-1$
				}
			}
		};
		viewKindAction.setText(Messages.getString("KindTreeView.viewkind")); //$NON-NLS-1$
		viewKindAction.setToolTipText("add Action tooltip"); //$NON-NLS-1$
		viewKindAction.setImageDescriptor(PlatformUI.getWorkbench()
				.getSharedImages().getImageDescriptor(
						ISharedImages.IMG_OBJS_INFO_TSK));

	}

	public void makeViewWareAction() {
		viewWareAction = new Action() {
			public void run() {
				ISelection selection = viewer.getSelection();
				Object obj = ((IStructuredSelection) selection)
						.getFirstElement();
				if (obj instanceof Kind) {
					Kind kind = (Kind) obj;
					try {
						IViewPart view = getSite().getWorkbenchWindow()
								.getActivePage().showView(WareView.ID);
						if (view instanceof WareView) {
							WareView wareView = (WareView) view;
							TableViewer tViewer = wareView.getViewer();
							tViewer.setInput(kind);
							wareView.refresh();
//							tViewer.refresh();
						}
					} catch (PartInitException e) {
						MessageDialog.openError(getSite().getShell(), "Error", //$NON-NLS-1$
								"Error opening view:" + e.getMessage()); //$NON-NLS-1$
					}
				}
			}
		};
		viewKindAction.setText(Messages.getString("KindTreeView.viewkind")); //$NON-NLS-1$
		viewKindAction.setToolTipText("add Action tooltip"); //$NON-NLS-1$
		viewKindAction.setImageDescriptor(PlatformUI.getWorkbench()
				.getSharedImages().getImageDescriptor(
						ISharedImages.IMG_OBJS_INFO_TSK));

	}

	public void makeDeleteKindAction() {
		deleteKindAction = new Action() {
			public void run() {
				ISelection selection = viewer.getSelection();
				Object obj = ((IStructuredSelection) selection)
						.getFirstElement();
				if (obj instanceof Kind) {
					Kind kind = (Kind) obj;
					if (kind.getParent().getParent() == null) {
						showMessage(Messages.getString("KindTreeView.cannotdeletekind")); //$NON-NLS-1$
						return;
					}
					boolean result = MessageDialog.openConfirm(getSite()
							.getShell(), "Tree View", Messages.getString("KindTreeView.deletekindandware")); //$NON-NLS-1$ //$NON-NLS-2$
					if (result) {
						kind.getParent().removeChild(kind);
						viewer.refresh();
					}
				}
			}
		};
		deleteKindAction.setText(Messages.getString("KindTreeView.deletekind")); //$NON-NLS-1$
		deleteKindAction.setToolTipText("add Action tooltip"); //$NON-NLS-1$
		deleteKindAction.setImageDescriptor(PlatformUI.getWorkbench()
				.getSharedImages().getImageDescriptor(
						ISharedImages.IMG_OBJS_INFO_TSK));

	}

	public void makeDoubleClickAction() {
		doubleClickAction = new Action() {
			public void run() {
			}
		};
	}

	/* hook event */
	private void hookContextMenu() {
		MenuManager menuMgr = new MenuManager("#PopupMenu"); //$NON-NLS-1$
		menuMgr.setRemoveAllWhenShown(true);
		menuMgr.addMenuListener(new IMenuListener() {
			public void menuAboutToShow(IMenuManager manager) {
				KindTreeView.this.fillContextMenu(manager);
			}
		});
		Menu menu = menuMgr.createContextMenu(viewer.getControl());
		viewer.getControl().setMenu(menu);
		getSite().registerContextMenu(menuMgr, viewer);
	}

	private void hookDoubleClickAction() {
		viewer.addDoubleClickListener(new IDoubleClickListener() {
			public void doubleClick(DoubleClickEvent event) {
				doubleClickAction.run();
			}
		});
	}

	/* add action to context menu */
	private void fillContextMenu(IMenuManager manager) {
		manager.add(addKindAction);
		manager.add(modifyKindAction);
		manager.add(deleteKindAction);
		manager.add(viewKindAction);
		manager.add(new Separator(IWorkbenchActionConstants.MB_ADDITIONS));
	}

	/**
	 * Initialize the toolbar
	 */
	private void initializeToolBar() {
		IToolBarManager toolbarManager = getViewSite().getActionBars()
				.getToolBarManager();
	}

	/**
	 * Initialize the menu
	 */
	private void initializeMenu() {
		IMenuManager menuManager = getViewSite().getActionBars()
				.getMenuManager();
	}

	public void refresh(Kind kind) {
		viewer.refresh(true);
		// viewer.collapseToLevel(elementOrTreePath, level)
		viewer.expandToLevel(kind, 1);
	}

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

	public void showMessage(String message) {
		MessageDialog.openInformation(getSite().getShell(), Messages.getString("KindTreeView.promptmessage"), message); //$NON-NLS-1$
	}

	class KindLabelProvider extends LabelProvider {
		public String getText(Object obj) {
			if (obj instanceof Kind) {
				return obj.toString();
			}
			return null;
		}

		public Image getImage(Object obj) {
			// String imageKey = ISharedImages.IMG_OBJ_ELEMENT;
			if (obj instanceof Kind) {
				String imageKey = ISharedImages.IMG_OBJ_FOLDER;
				PlatformUI.getWorkbench().getSharedImages().getImage(imageKey);
			}
			return null;
		}
	}

	class KindContentProvider implements IStructuredContentProvider,
			ITreeContentProvider {

		public Object[] getElements(Object parent) {
			if(parent instanceof Kind){
				return getChildren(parent);
			}
			return null;
		}

		public Object getParent(Object child) {
			if (child instanceof Node) {
				return ((Node) child).getParent();
			}
			return null;
		}

		public Object[] getChildren(Object parent) {
			if (parent instanceof Kind) {
				ArrayList children = ((Kind) parent).getChildren();
				
				return children.toArray(new Node[children.size()]);
				
			}
			return new Object[0];
		}

		public boolean hasChildren(Object parent) {
			if (parent instanceof Kind)
				return ((Kind) parent).hasChildren();
			return false;
		}

		public void dispose() {
			// TODO Auto-generated method stub

		}

		public void inputChanged(Viewer viewer, Object oldInput, Object newInput) {
			// TODO Auto-generated method stub

		}
	}
}

⌨️ 快捷键说明

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