Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/oracle/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Eclipse plugin Eclipse JFace Treeviewer视图在调用setSelection时未选择_Eclipse Plugin_Eclipse Rcp_Jface - Fatal编程技术网

Eclipse plugin Eclipse JFace Treeviewer视图在调用setSelection时未选择

Eclipse plugin Eclipse JFace Treeviewer视图在调用setSelection时未选择,eclipse-plugin,eclipse-rcp,jface,Eclipse Plugin,Eclipse Rcp,Jface,我的eclipse插件中有一个带有treeviewer的视图,我正在尝试使用iSelectService根据编辑器中的选择在treeviewer中选择一行。我能够找到必须选择的元素,并在下面的代码段中尝试了以下操作: v.setExpandedState(file, true); v.refresh(); v.setSelection(new StructuredSelection(iDialogSettings), true); 我还检查了视图的Contentprovider,它正在返回

我的eclipse插件中有一个带有treeviewer的视图,我正在尝试使用iSelectService根据编辑器中的选择在treeviewer中选择一行。我能够找到必须选择的元素,并在下面的代码段中尝试了以下操作:

v.setExpandedState(file, true);

v.refresh();

v.setSelection(new StructuredSelection(iDialogSettings), true);
我还检查了视图的Contentprovider,它正在返回正确的父元素

我做错了什么?我还需要检查和尝试什么

我查看了以下帖子:

编辑:

视图-

 public class Objects extends ViewPart {

        public static final String ID = "suitacore.views.Objects"; //$NON-NLS-1$

        private TreeViewer v = null;

        private Tree tree;

        private List <IFile> outer; 

        private Action groupByDate;

        public Objects() {
        }


        private void resizeTable(Tree table_) {
        for (TreeColumn tc : table_.getColumns())
            tc.pack();
    }

        /**
         * Create contents of the view part.
         * @param parent
         */
        @Override
        public void createPartControl(Composite parent) {

        v = new TreeViewer(parent, SWT.FULL_SELECTION | SWT.V_SCROLL
            | SWT.H_SCROLL | SWT.BORDER);

        tree = v.getTree();
        v.getTree().setLinesVisible(true);

        v.getTree().setHeaderVisible(true);

        v.getTree().setFont((new Font(null, "Calibri", 11, SWT.CENTER)));



        String[] columLabels = { 
            "                   ObjectMaps                 ",
            "ObjectReference", 
            "ObjectTagName",
            "ObjectIDAttribute",
            "ObjectNameAttribute", 
            "ObjectXPathAttribute",
            "ObjectClassAttributes",
            "     ObjectText    " , 
            "MoreAttributes"};


        for (int i = 0; i < columLabels.length; i++) {
            TreeViewerColumn column = new TreeViewerColumn(v, SWT.NONE);
            column.getColumn().setWidth(100);
            column.getColumn().setMoveable(true);
            column.getColumn().setText(columLabels[i]);

            if (i == 1) {
                column.setEditingSupport(new ObjectsViewTextCellEditingSupport(v));
            }

        }



        IWorkspaceRoot root = ResourcesPlugin.getWorkspace().getRoot();

        IProject projects[] = root.getProjects();

        outer = new ArrayList<IFile>();

        for (IProject iProject : projects) {
            IFolder objectMap = iProject.getFolder(ProjectConstants.objectMap);

            if (null != objectMap) {
            try {
                for (IResource iResource : objectMap.members()) {
                if (iResource instanceof IFile) {
                    IFile file = (IFile) iResource;
                    if (file.getFileExtension().equals("xml")) {

                    outer.add(file);

                    }

                }
                }
            } catch (CoreException e) {
                e.printStackTrace();
            }

        }

        }

        v.setContentProvider(new ObjectViewContentProvider(outer));
        v.setLabelProvider(new ObjectViewLabelProvider());
        v.setInput(outer);




        createActions();
        initializeToolBar();
        initializeMenu();
        resizeTable(tree);

        getSite().setSelectionProvider(v);

        ISelectionService ss = getSite().getWorkbenchWindow().getSelectionService();
        ss.addPostSelectionListener(listener);


        }

        private Object searchObjectfromID(String objectID) {

            Object iSection = null;
            for (IFile file : outer) {

                if (file.getFileExtension().equalsIgnoreCase("xml")) {

                    DialogSettings settings = new DialogSettings("root");

                    try {
                        settings.load(file.getLocation().toString());

                        IDialogSettings sections[] = settings.getSections();

                        for (IDialogSettings iDialogSettings : sections) {

                            if (iDialogSettings.getName().equals(objectID)) {

                                System.out.println("Dialog setting for the element>" + iDialogSettings.getName());

                                v.setExpandedState(file, true);

                                //v.setSelection(new StructuredSelection(file), true);

                                v.setSelection(new StructuredSelection(iDialogSettings), true);

                                v.refresh(true);

                                break;
                            }

                        }
                    } catch (IOException e) {
                        e.printStackTrace();
                    }
                }
            }
            return iSection;
        }

        /* adding listeners*/
        private ISelectionListener listener = new ISelectionListener() {

            public void selectionChanged(IWorkbenchPart sourcepart, ISelection selection) {

                if (sourcepart != Objects.this)  {

                    System.out.println("printing selection for object view ..." + selection);
                    if (selection instanceof IStructuredSelection) {
                        IStructuredSelection ss = (IStructuredSelection) selection;
                        Object element = ss.getFirstElement();
                        System.out.println("printing selected element for object view ..." + element);
                        if (element instanceof CSVRow) {
                            CSVRow row = (CSVRow) element;
                            System.out.println("here is our obejct id in the obejct view" + row.getElementAt(2));
                            final String objectID= row.getElementAt(2);

                            PlatformUI.getWorkbench().getDisplay().asyncExec(new Runnable() {
                                public void run() {
                                searchObjectfromID(objectID);
                                }
                            });

                        }
                    }
                }
            }
        };

        /**
         * Create the actions.
         */
        private void createActions() {
        // Create the actions
        }

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

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

        @Override
        public void setFocus() {
        // Set the focus
        }

    }
公共类对象扩展了ViewPart{
public static final String ID=“suitacore.views.Objects”;//$NON-NLS-1$
私有TreeViewer v=null;
私家树;
私人名单;
私人行动分组日期;
公共对象(){
}
私有void可调整大小(树表){
for(treecocolumn tc:table_u.getColumns())
tc.pack();
}
/**
*创建视图零件的内容。
*@param父级
*/
@凌驾
公共void createPartControl(复合父级){
v=新树视图(父级,SWT.FULL|U选择| SWT.v|U滚动
|SWT.H|U卷轴(SWT.边框);
tree=v.getTree();
v、 getTree().setLinesVisible(true);
v、 getTree().setheadervible(true);
v、 getTree().setFont((新字体(null,“Calibri”,11,SWT.CENTER));
字符串[]columLabels={
“对象映射”,
“对象引用”,
“对象标记名”,
“客观属性”,
“ObjectNameAttribute”,
“ObjectXPathAttribute”,
“ObjectClassAttributes”,
“ObjectText”,
“更多属性”};
对于(int i=0;i”+iDialogSettings.getName());
v、 setExpandedState(文件,true);
//v、 setSelection(新结构选择(文件),true);
v、 setSelection(新结构选择(iDialogSettings),true);
v、 刷新(真);
打破
}
}
}捕获(IOE异常){
e、 printStackTrace();
}
}
}
回程截取;
}
/*添加侦听器*/
私有ISelectionListener=新ISelectionListener(){
公共无效选择已更改(IWorkbenchPart源部件,ISelection选择){
if(sourcepart!=Objects.this){
System.out.println(“对象视图打印选择…”+选择);
if(IStructuredSelection的选择实例){
IStructuredSelection ss=(IStructuredSelection)选择;
Object元素=ss.getFirstElement();
System.out.println(“打印对象视图的选定元素…”+元素);
if(CSVRow的元素实例){
CSVRow行=(CSVRow)元素;
println(“这是obejct视图中的obejct id”+row.getElementAt(2));
最终字符串objectID=row.getElementAt(2);
PlatformUI.getWorkbench().getDisplay().asyncExec(新的Runnable(){
公开募捐{
searchObjectfromID(objectID);
}
public class ObjectViewContentProvider implements ITreeContentProvider {

    private List <IFile> outer; 

    public ObjectViewContentProvider(List<IFile> outer) {
        super();
        this.outer = outer;
    }

    @Override
    public void dispose() {

    }

    @Override
    public void inputChanged(Viewer viewer, Object oldInput, Object newInput) {

    }

    @Override
    public Object[] getElements(Object inputElement) {
        return ((List) inputElement).toArray();
    }

    @Override
    public Object[] getChildren(Object parentElement) {

        Object obj[] = null;

        if (parentElement instanceof IFile) {

            System.out.println("get children called ObejctVewContentProvider......." + parentElement);

            IFile file = (IFile) parentElement;

            if (file.getFileExtension().equalsIgnoreCase("xml")) {

                DialogSettings rootSection = new DialogSettings("root");

                try {
                    rootSection.load(file.getLocation().toString());

                    obj = rootSection.getSections();

                    System.out.println("no of childeren for file parent>>" + obj.length );
                } 
                catch (IOException e) {
                    e.printStackTrace();
                }
            }
        }

        else if (parentElement instanceof IDialogSettings) {
            /*System.out.println("get children called ObejctVewContentProvider......." + parentElement);

            IDialogSettings objects = (IDialogSettings) parentElement;

            obj = objects.getSections();

            System.out.println("no of childeren for IDialogsettings parent>>" + obj.length );*/
        }

        return obj;
    }

    @Override
    public Object getParent(Object element) {

        IFile ifile = null;

        System.out.println("get parent called ObejctVewContentProvider........................" + element);

        if (element instanceof IDialogSettings) {

            System.out.println("ObejctVewContentProvider......>>>" + element);

            IDialogSettings section = (IDialogSettings) element;

            for (IFile file : outer) {

                if (file.getFileExtension().equalsIgnoreCase("xml")) {

                    DialogSettings settings = new DialogSettings("root");

                    try {
                        settings.load(file.getLocation().toString());

                        IDialogSettings sections[] = settings.getSections();

                        for (IDialogSettings iDialogSettings : sections) {

                            if (iDialogSettings.getName().equals(section.getName())) {
                                ifile = file;
                                System.out.println("Returning parent for section >>" + ifile);
                                break;
                            }

                        }
                    } catch (IOException e) {
                        e.printStackTrace();
                    }
                }

            }
        }

        else if (element instanceof DialogSettings) {
            System.out.println("ObejctVewContentProvider......<<<<<<<<<<<<<<<<<<<<<<<<<<<" + element);

        }

        return ifile;
    }

    @Override
    public boolean hasChildren(Object element) {
        Object[] obj = getChildren(element);
        return obj == null ? false : obj.length > 0;
    }



}
public boolean equals(Object a, Object b);

public int hashCode(Object element);