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