58,452
社区成员
发帖
与我相关
我的任务
分享
package roadshow.views;
import java.util.ArrayList;
import org.eclipse.swt.widgets.Composite;
import org.eclipse.swt.widgets.Tree;
import org.eclipse.ui.part.*;
import org.eclipse.jface.viewers.*;
import org.eclipse.swt.graphics.Image;
import org.eclipse.jface.action.*;
import org.eclipse.ui.*;
import org.eclipse.swt.SWT;
import roadshow.business.RoadModelService;
import roadshow.pojos.RoadModel;
import roadshow.tree.TreeViewerContentProvider;
import roadshow.tree.TreeViewerLableProvider;
public class RoadModelTreeView extends ViewPart {
public static final String ID = "roadshow.views.RoadModelTreeView";
RoadModelService roadModelService = new RoadModelService();
public String roadModelId="";
public Tree tree;
/*
* The content provider class is responsible for
* providing objects to the view. It can wrap
* existing objects in adapters or simply return
* objects as-is. These objects may be sensitive
* to the current input of the view, or ignore
* it and always show the same content
* (like Task List, for example).
*/
class ViewContentProvider implements IStructuredContentProvider {
public void inputChanged(Viewer v, Object oldInput, Object newInput) {
}
public void dispose() {
}
public Object[] getElements(Object parent) {
return new String[] { "One", "Two", "Three" };
}
}
class ViewLabelProvider extends LabelProvider implements ITableLabelProvider {
public String getColumnText(Object obj, int index) {
return getText(obj);
}
public Image getColumnImage(Object obj, int index) {
return getImage(obj);
}
public Image getImage(Object obj) {
return PlatformUI.getWorkbench().
getSharedImages().getImage(ISharedImages.IMG_OBJ_ELEMENT);
}
}
class NameSorter extends ViewerSorter {
}
/**
* The constructor.
*/
public RoadModelTreeView() {
}
/**
* This is a callback that will allow us
* to create the viewer and initialize it.
*/
public void createPartControl(Composite parent) {
final TreeViewer treeViewer = new TreeViewer(parent,SWT.BORDER);
tree = treeViewer.getTree();
treeViewer.setContentProvider(new TreeViewerContentProvider());
treeViewer.setLabelProvider(new TreeViewerLableProvider());
ArrayList<RoadModel> rootList = roadModelService.getRootRoadModel();//得到根节点
treeViewer.setInput(rootList);
//做一个判断,选中最小节点,并将节点展开
if(rootList.size()>0){
RoadModel roadModel = (RoadModel)rootList.get(0);
RoadModel miniModel = roadModelService.getMiniFirstNode(roadModel.getId());
ISelection selection = new StructuredSelection(new Object[]{miniModel});
treeViewer.setSelection(selection);
treeViewer.expandToLevel(miniModel, 8);
treeViewer.getTree().showSelection();
roadModelId = miniModel.getId();
}
treeViewer.addSelectionChangedListener(new ISelectionChangedListener() {
public void selectionChanged(SelectionChangedEvent event) {
IStructuredSelection selection = (IStructuredSelection)treeViewer
.getSelection();
System.out.println("选中前模型=="+roadModelId);
RoadModel roadModel = (RoadModel)selection.getFirstElement();
roadModelId = roadModel.getId();
System.out.println("选中模型=="+roadModelId);
updateStatusline(event);
}
});
makeActions();
hookContextMenu();
hookDoubleClickAction();
contributeToActionBars();
}
public void expand(TreeViewer treeViewer,RoadModel model){
System.out.println("逐级展开=="+model.toString());
if(model.getParent()!=null){
treeViewer.expandToLevel(model, 1);
expand(treeViewer,model.getParent());
}
}
private void hookContextMenu() {
MenuManager menuMgr = new MenuManager("#PopupMenu");
menuMgr.setRemoveAllWhenShown(true);
menuMgr.addMenuListener(new IMenuListener() {
public void menuAboutToShow(IMenuManager manager) {
RoadModelTreeView.this.fillContextMenu(manager);
}
});
}
private void contributeToActionBars() {
IActionBars bars = getViewSite().getActionBars();
fillLocalPullDown(bars.getMenuManager());
fillLocalToolBar(bars.getToolBarManager());
}
private void fillLocalPullDown(IMenuManager manager) {
manager.add(new Separator());
}
private void fillContextMenu(IMenuManager manager) {
// manager.add(action1);
// manager.add(action2);
// Other plug-ins can contribute there actions here
manager.add(new Separator(IWorkbenchActionConstants.MB_ADDITIONS));
}
private void fillLocalToolBar(IToolBarManager manager) {
}
private void makeActions() {
}
private void hookDoubleClickAction() {
}
private void showMessage(String message) {
// MessageDialog.openInformation(
// viewer.getControl().getShell(),
// "模型树",
// message);
}
/**
* Passing the focus request to the viewer's control.
*/
public void setFocus() {
// viewer.getControl().setFocus();
}
protected void updateStatusline(SelectionChangedEvent event) {
IStatusLineManager statusline = this.getViewSite().getActionBars().getStatusLineManager();
IStructuredSelection selection = (IStructuredSelection) event.getSelection();
String msg = getSelectionMessage(selection);
System.out.println("\t选择了:"+msg);
statusline.setMessage(msg);
}
private String getSelectionMessage(IStructuredSelection selection) {
if (selection.isEmpty()) {
return "";
}
if (selection.size() == 1) {
return selection.getFirstElement().toString();
}
return selection.size() + " items selected";
}
public void initData(){
}
}
/**
* 2010-6-24
* TreeViewerContentProvider.java
* author:aiguo zhuang
*/
package roadshow.tree;
import java.util.List;
import org.eclipse.jface.viewers.ITreeContentProvider;
import org.eclipse.jface.viewers.Viewer;
import roadshow.business.RoadModelService;
import roadshow.pojos.RoadModel;
/**
* @author Administrator
*
*/
public class TreeViewerContentProvider implements ITreeContentProvider {
RoadModelService roadModelService = new RoadModelService();
/**
* 由这个方法决定父结点应该显示哪些子结点
* parent 当前被单击的结点对象
* return 由子结点作为元素的数组
*/
public Object[] getChildren(Object parentElement) {
RoadModel roadModel = (RoadModel) parentElement;
String id = roadModel.getId();
List list = roadModelService.getChildRoadModelByParentId(id);
if(list == null || list.isEmpty()) {
return new Object[0];
}else {
return list.toArray();
}
}
/* (non-Javadoc)
* @see org.eclipse.jface.viewers.ITreeContentProvider#getParent(java.lang.Object)
*/
public Object getParent(Object element) {
return ((RoadModel)element).getParent();
}
/**
* 判断某结点是否有子结点。如果有子结点,这时结点前都有一逐步形成“+”号图标
* parent需要判断是否有子结点
* return false无子结点,true有子结点
*/
public boolean hasChildren(Object element) {
RoadModel roadModel = (RoadModel) element;
String id = roadModel.getId();
List list = roadModelService.getChildRoadModelByParentId(id);
if(list == null || list.isEmpty()) {
return false;
}else {
return true;
}
}
/* (non-Javadoc)
* 得到根节点
* @see org.eclipse.jface.viewers.IStructuredContentProvider#getElements(java.lang.Object)
*/
public Object[] getElements(Object inputElement) {
// TODO Auto-generated method stub
if(inputElement instanceof List) {
List list = (List) inputElement;
return list.toArray();
}else {
return new Object[0];
}
}
/* (non-Javadoc)
* @see org.eclipse.jface.viewers.IContentProvider#dispose()
*/
public void dispose() {
// TODO Auto-generated method stub
}
/* (non-Javadoc)
* @see org.eclipse.jface.viewers.IContentProvider#inputChanged(org.eclipse.jface.viewers.Viewer, java.lang.Object, java.lang.Object)
*/
public void inputChanged(Viewer arg0, Object arg1, Object arg2) {
// TODO Auto-generated method stub
}
}
/**
* 2010-6-24
* TreeViewerLableProvider.java
* author:aiguo zhuang
*/
package roadshow.tree;
import org.eclipse.jface.viewers.ILabelProvider;
import org.eclipse.jface.viewers.ILabelProviderListener;
import org.eclipse.swt.graphics.Image;
import org.eclipse.ui.ISharedImages;
import org.eclipse.ui.PlatformUI;
import roadshow.business.RoadModelService;
import roadshow.pojos.RoadModel;
/**
* @author Administrator
*
*/
public class TreeViewerLableProvider implements ILabelProvider {
RoadModelService roadModelService = new RoadModelService();
/* (non-Javadoc)
* @see org.eclipse.jface.viewers.ILabelProvider#getImage(java.lang.Object)
*/
public Image getImage(Object element) {
String imageKey = ISharedImages.IMG_OBJ_PROJECT;//图片路径
return PlatformUI.getWorkbench().getSharedImages().getImage(imageKey);
}
/* (non-Javadoc)
* @see org.eclipse.jface.viewers.ILabelProvider#getText(java.lang.Object)
*/
public String getText(Object element) {
RoadModel roadModel = (RoadModel) element;
String nodeName = roadModel.toString();
return nodeName;
}
/* (non-Javadoc)
* @see org.eclipse.jface.viewers.IBaseLabelProvider#addListener(org.eclipse.jface.viewers.ILabelProviderListener)
*/
public void addListener(ILabelProviderListener arg0) {
// TODO Auto-generated method stub
}
/* (non-Javadoc)
* @see org.eclipse.jface.viewers.IBaseLabelProvider#dispose()
*/
public void dispose() {
// TODO Auto-generated method stub
}
/* (non-Javadoc)
* @see org.eclipse.jface.viewers.IBaseLabelProvider#isLabelProperty(java.lang.Object, java.lang.String)
*/
public boolean isLabelProperty(Object arg0, String arg1) {
// TODO Auto-generated method stub
return false;
}
/* (non-Javadoc)
* @see org.eclipse.jface.viewers.IBaseLabelProvider#removeListener(org.eclipse.jface.viewers.ILabelProviderListener)
*/
public void removeListener(ILabelProviderListener arg0) {
// TODO Auto-generated method stub
}
}