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

📄 subserveview.java

📁 java eclipse rcp学习
💻 JAVA
字号:
/**
 * 
 */
package chainShopMS.views;

import java.util.ArrayList;

import org.eclipse.core.runtime.IAdaptable;
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.viewers.DoubleClickEvent;
import org.eclipse.jface.viewers.IDoubleClickListener;
import org.eclipse.jface.viewers.ISelection;
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.TreeViewer;
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.Menu;
import org.eclipse.ui.IActionBars;
import org.eclipse.ui.ISharedImages;
import org.eclipse.ui.IWorkbenchActionConstants;
import org.eclipse.ui.PlatformUI;
import org.eclipse.ui.actions.ActionFactory;
import org.eclipse.ui.part.DrillDownAdapter;
import org.eclipse.ui.part.ViewPart;

import chainShopMS.Activator;
import chainShopMS.action.ActionManager;


/**
 * @author Administrator
 *在总店的管理界面上,它放置总店可以分别查看和操作分店的操作
 */

public class SubServeView extends ViewPart
{
	/** 导航的树对象 */
	public static TreeViewer viewer;

	/** 可以为树添加返回导航操作对象 */
	private DrillDownAdapter drillDownAdapter;

	/** 折叠树操作 */
	private Action collapseAction;

	/** 展开树操作 */
	private Action expandAction;

	/** 双击树结点时操作 */
	private Action doubleClickAction;
	
	//从数据库中得到所有分店的名称,测试时需要首先设定
	/** 所有商店的名称*/
	private String []subShop= {"交大店","人大店","金五星","上海华联"};
	
	/** 该视图的ID */
	public static final String ID = "chainShopMS.views.SubServeView";
	
	
	/**
	 * 构造方法
	 */
	public SubServeView()
	{
	}
	
	//从数据库中得到所有分店的名称字符串数组*****************************************************
	
	//测试时使用首先设定的字符串
	
	//***********************************************************************
	
	/** 树结点类 */
	class TreeObject implements IAdaptable
	{
		private String name;

		private String key;

		private TreeParent parent;

		//构造方法
		public TreeObject()
		{
			
		}
		public TreeObject(final String name, final String key)
		{
			this.name = name;
			this.key = key;
		}

		public String getName()
		{
			return name;
		}

		public void setParent(final TreeParent parent)
		{
			this.parent = parent;
		}

		public TreeParent getParent()
		{
			return parent;
		}

		public String toString()
		{
			return getName();
		}

		public Object getAdapter(final Class key)
		{
			return null;
		}

		public String getKey()
		{
			return key;
		}

		public void setKey(final String key)
		{
			this.key = key;
		}
	}

	/** 树的父结点类 */
	class TreeParent extends TreeObject
	{
		private ArrayList children;

		public TreeParent(final String name)
		{
			super(name, "__Parent");
			children = new ArrayList();
		}

		public void addChild(final TreeObject child)
		{
			children.add(child);
			child.setParent(this);
		}

		public void removeChild(final TreeObject child)
		{
			children.remove(child);
			child.setParent(null);
		}

		public TreeObject[] getChildren()
		{
			return (TreeObject[]) children.toArray(new TreeObject[children
					.size()]);
		}

		public boolean hasChildren()
		{
			return children.size() > 0;
		}
	}

	/** 树的内容器 */
	class ViewContentProvider implements IStructuredContentProvider,
			ITreeContentProvider
	{
		private TreeParent invisibleRoot;

		public void inputChanged(final Viewer v, final Object oldInput,
				final Object newInput)
		{
		}

		public void dispose()
		{
		}

		public Object[] getElements(final Object parent)
		{
			if (parent.equals(getViewSite()))
			{
				if (invisibleRoot == null)
				{
					initialize();
				}
				return getChildren(invisibleRoot);
			}
			return getChildren(parent);
		}

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

		public Object[] getChildren(final Object parent)
		{
			if (parent instanceof TreeParent)
			{
				return ((TreeParent) parent).getChildren();
			}
			return new Object[0];
		}

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

		/** 初始化树中的数据 */
		private void initialize()
		{
			//把从数据库中得到的所有分店的名称添加到树的结点当中
			int subShopNum=subShop.length;
			final TreeObject []c=new TreeObject[subShopNum];
			final TreeParent t1 = new TreeParent("分店数据分析");
			for(int i=0;i<subShopNum;i++)//添加树的结点     注意数组的长度,不能到等于
			{
				
				c[i]=new TreeObject(subShop[i],"SubShopN");
				t1.addChild(c[i]);
				
			}
			
			invisibleRoot = new TreeParent("");
			invisibleRoot.addChild(t1);
			
		}
	}

	/** 树的内容器 */
	class ViewLabelProvider extends LabelProvider
	{

		public String getText(final Object obj)
		{
			return obj.toString();
		}

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

	public void createPartControl(final Composite parent)
	{
		/** 创建树 */
		viewer = new TreeViewer(parent, SWT.MULTI | SWT.H_SCROLL | SWT.V_SCROLL);
		/** 初始化树 */
		drillDownAdapter = new DrillDownAdapter(viewer);
		viewer.setContentProvider(new ViewContentProvider());
		viewer.setLabelProvider(new ViewLabelProvider());
		viewer.setInput(getViewSite());
		/** 创建树中所使用操作对象 */
		makeActions();
		/** 添加上下文菜单 */
		hookContextMenu();
		/** 添加双击事件 */
		hookDoubleClickAction();
		/** 添加到操作条中 */
		contributeToActionBars();
	}

	/** 添加上下文菜单 */
	private void hookContextMenu()
	{
		final MenuManager menuMgr = new MenuManager("#PopupMenu");
		menuMgr.setRemoveAllWhenShown(true);
		menuMgr.addMenuListener(new IMenuListener()
		{
			public void menuAboutToShow(final IMenuManager manager)
			{
				SubServeView.this.fillContextMenu(manager);
			}
		});
		final Menu menu = menuMgr.createContextMenu(viewer.getControl());
		viewer.getControl().setMenu(menu);
		getSite().registerContextMenu(menuMgr, viewer);
	}

	/** 添加到操作条中 */
	private void contributeToActionBars()
	{
		final IActionBars bars = getViewSite().getActionBars();
		fillLocalPullDown(bars.getMenuManager());
		fillLocalToolBar(bars.getToolBarManager());
	}

	/** 添加下拉菜单项 */
	private void fillLocalPullDown(final IMenuManager manager)
	{
		manager.add(collapseAction);
		manager.add(new Separator());
		manager.add(expandAction);
	}

	/** 添加上下文菜单项 */
	private void fillContextMenu(final IMenuManager manager)
	{
		manager.add(collapseAction);
		manager.add(expandAction);
		manager.add(new Separator());
		drillDownAdapter.addNavigationActions(manager);
		manager.add(new Separator(IWorkbenchActionConstants.MB_ADDITIONS));
	}

	/** 添加工具栏工具按钮 */
	private void fillLocalToolBar(final IToolBarManager manager)
	{
		manager.add(collapseAction);
		manager.add(expandAction);
		manager.add(new Separator());
		drillDownAdapter.addNavigationActions(manager);
	}

	/** 创建视图所使用的操作对象 */
	private void makeActions()
	{
		/** 展开全部按钮 */
		collapseAction = new Action()
		{
			public void run()
			{
				viewer.collapseAll();
			}
		};
		collapseAction.setText("折叠全部");
		collapseAction.setToolTipText("折叠全部");
		collapseAction.setImageDescriptor(Activator
				.getImageDescriptor("icons/collapse.gif"));
		/** 折叠全部按钮 */
		expandAction = new Action()
		{
			public void run()
			{
				viewer.expandAll();
			}
		};
		expandAction.setText("展开全部");
		expandAction.setToolTipText("展开全部");
		expandAction.setImageDescriptor(Activator
				.getImageDescriptor("icons/expand.gif"));
		/** 双击操作 */
		doubleClickAction = new Action()
		{
			public void run()
			{
				/** 获得当前选中的树节点 */
				final ISelection selection = viewer.getSelection();
				final Object obj = ((IStructuredSelection) selection)
						.getFirstElement();
				/** 如果选中的为TreeParent对象,则返回 */
				if (obj instanceof TreeParent)
				{
					return;
				}
				/** 如果选中的为子节点,则根据key值打开相应的操作 */
				final TreeObject object = (TreeObject) obj;
				if (object.getKey().equals("CHAIN_MANAGER"))
				{//选中连锁管理
					ActionManager.createShowViewAction(
							getSite().getWorkbenchWindow(),
							ChainDataTableView.ID).run();//打开数据库列表视图
					ActionManager.createShowViewAction(
							getSite().getWorkbenchWindow(),
							ChainMessageView.ID).run();//打开具体信息视图
				}
				else if (object.getKey().equals("CUSTOMER_ADD"))
				{
	//				ActionManager.createNewCustomerAction(
	//						getSite().getWorkbenchWindow()).run();
				}
				else if (object.getKey().equals("CONTACT_LIST"))
				{
//					ActionManager.createShowViewAction(
//							getSite().getWorkbenchWindow(),
//							ContactSummaryView.ID).run();
				}
				else if (object.getKey().equals("CONTACT_ADD"))
				{
	//				ActionManager.createNewContactAction(
	//						getSite().getWorkbenchWindow()).run();
				}
				else if (object.getKey().equals("PREF"))
				{
					ActionFactory.PREFERENCES.create(
							getSite().getWorkbenchWindow()).run();
				}
			}
		};

	}

	/** 双击树事件 */
	private void hookDoubleClickAction()
	{
		viewer.addDoubleClickListener(new IDoubleClickListener()
		{
			public void doubleClick(final DoubleClickEvent event)
			{
				doubleClickAction.run();
			}
		});
	}

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

⌨️ 快捷键说明

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