📄 subserveview.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 + -