org.isoe.fwk.uihelper.impl.NavigatorHelper.java Source code

Java tutorial

Introduction

Here is the source code for org.isoe.fwk.uihelper.impl.NavigatorHelper.java

Source

/**
 * Copyright (c) 2014 Laboratoire de Genie Informatique et Ingenierie de Production - Ecole des Mines d'Ales
 *
 * All rights reserved. This program and the accompanying materials
 * are made available under the terms of the Eclipse Public License v1.0
 * which accompanies this distribution, and is available at
 * http://www.eclipse.org/legal/epl-v10.html
 *
 * Contributors:
 *    Francois Pfister (ISOE-LGI2P) - initial API and implementation
 */
package org.isoe.fwk.uihelper.impl;

import java.util.Iterator;
import java.util.List;

import org.eclipse.core.resources.IFile;
import org.eclipse.core.resources.IProject;
import org.eclipse.core.runtime.IPath;
import org.eclipse.emf.ecoretools.legacy.diagram.part.EcoreDiagramEditor;
import org.eclipse.gmf.runtime.notation.Diagram;
import org.eclipse.jdt.core.IJavaElement;
import org.eclipse.jdt.internal.ui.packageview.PackageExplorerPart;
import org.eclipse.jface.viewers.ISelection;
import org.eclipse.jface.viewers.IStructuredSelection;
import org.eclipse.jface.viewers.StructuredSelection;
import org.eclipse.jface.viewers.TreePath;
import org.eclipse.jface.viewers.TreeSelection;
import org.eclipse.jface.viewers.TreeViewer;
import org.eclipse.swt.widgets.Control;
import org.eclipse.swt.widgets.Tree;
import org.eclipse.swt.widgets.TreeItem;
import org.eclipse.ui.IEditorPart;
import org.eclipse.ui.IViewPart;
import org.eclipse.ui.IViewReference;
import org.eclipse.ui.IWorkbenchPage;
import org.eclipse.ui.IWorkbenchWindow;
import org.eclipse.ui.PartInitException;
import org.eclipse.ui.PlatformUI;
import org.eclipse.ui.ide.IDE;
import org.isoe.fwk.uihelper.INavigatorHelper;
import org.isoe.fwk.utils.ResourceUtils;
import org.eclipse.gmf.runtime.diagram.ui.resources.editor.parts.DiagramDocumentEditor;

/**
 *
 * @author fpfister
 *
 */
import org.isoe.diagraph.controler.IDiagraphControler; //FP140707refactored

public class NavigatorHelper implements INavigatorHelper {

    IDiagraphControler controler;

    public NavigatorHelper(IDiagraphControler controler) {
        this.controler = controler;
    }

    private IViewPart findView(String vid) {
        return PlatformUI.getWorkbench().getActiveWorkbenchWindow().getActivePage().findView(vid);
    }

    private IEditorPart bringToTop(IProject project) {
        String langName = project.getName();
        langName = langName.substring(langName.lastIndexOf(".") + 1);
        IFile diagramfile = ResourceUtils.getFile(project, "model" + "/" + langName, "ecorediag");// errstatechart.ecorediag
        if (diagramfile == null)
            return null;

        IWorkbenchPage page = PlatformUI.getWorkbench().getActiveWorkbenchWindow().getActivePage();

        try {
            IEditorPart openedEditor = IDE.openEditor(page, diagramfile);
            page.bringToTop(openedEditor);
            // result.setFocus();
            return openedEditor;
        } catch (PartInitException e) {
            // clog("Open editor failed: " + diagramfile.toString() + " -- " +
            // e);
            return null;
        }
    }

    @Override
    public Diagram bringToTop(String language) {
        try {
            IViewPart navigator = findView("org.eclipse.jdt.ui.PackageExplorer"); // FP130130x
            if (navigator == null)
                navigator = PlatformUI.getWorkbench().getActiveWorkbenchWindow().getActivePage()
                        .showView("org.eclipse.jdt.ui.PackageExplorer");
            TreeViewer tree = ((PackageExplorerPart) navigator).getTreeViewer();
            List<IProject> projects = controler.getDsmlProjects();
            for (IProject iProject : projects) {
                if (iProject.getName().endsWith("." + language)) {
                    StructuredSelection ssel = new StructuredSelection(iProject);
                    tree.getControl().setRedraw(false);
                    tree.setSelection(ssel, true);
                    tree.getControl().setRedraw(true);
                    IEditorPart opened = bringToTop(iProject);
                    if (opened == null) {
                        System.err.println("error while focusDiagram " + language);
                        return null;
                    }
                    return ((EcoreDiagramEditor) opened).getDiagram();
                }
            }
        } catch (Exception e) {
            System.err.println("error while focusDiagram " + language);
        }
        System.err.println("should not happen in bringToTop for language " + language);
        throw new RuntimeException("should not happen in bringToTop for language " + language);//d = getCurrentDiagram();
    }

    /*
    public EPackage get_(String language) {
        return (EPackage) bringToTop(language).getElement();
    }
    */

    private IViewPart focusInPackageExplorerTraverserSnippet(String language) {
        IViewPart navigator = null;

        try {
            navigator = findView("org.eclipse.jdt.ui.PackageExplorer"); // FP130130x
            if (navigator == null)
                navigator = PlatformUI.getWorkbench().getActiveWorkbenchWindow().getActivePage()
                        .showView("org.eclipse.jdt.ui.PackageExplorer");

            IWorkbenchWindow window = PlatformUI.getWorkbench().getActiveWorkbenchWindow();
            ISelection selection_ = window.getSelectionService().getSelection("org.eclipse.jdt.ui.PackageExplorer");

            if (selection_ instanceof Tree) {
                TreeItem[] selected = ((Tree) selection_).getSelection();
                for (TreeItem treeItem : selected) {
                    System.out.println(treeItem.getText());
                }

            }

            if (selection_ instanceof TreeSelection) {
                TreeSelection ts = (TreeSelection) selection_;
                List tsl = ts.toList();
                for (Object object : tsl) {
                    System.out.println(tsl.getClass().getName());
                }
            }

            Iterator ite = ((IStructuredSelection) selection_).iterator();
            while (ite.hasNext()) {
                Object obj = ite.next();
                String testString = "";
                if (obj instanceof IJavaElement) {
                    IPath packageName = ((IJavaElement) obj).getPath();// /lang.m2.helloworld
                    System.out.println("getFileExtension()   " + packageName.getFileExtension());
                    String s = packageName.toString();
                    String s1[] = s.split("/");
                    if ("java".equals(packageName.getFileExtension())) {
                        System.out.println("package name " + s1[1]);
                        System.out.println("project name" + ((IJavaElement) obj).getElementName());
                    }
                }
            }

            if (navigator instanceof PackageExplorerPart) {
                PackageExplorerPart pe = (PackageExplorerPart) navigator;
                TreeViewer tree = pe.getTreeViewer();

                Control[] childs = tree.getTree().getChildren();
                for (Control control : childs) {
                    System.out.println(control.getClass().getName());
                }

                TreeItem[] selected = tree.getTree().getSelection();
                for (TreeItem treeItem : selected) {
                    System.out.println(treeItem.getText());
                }

                TreeItem[] items = tree.getTree().getItems();
                for (TreeItem treeItem : items) {
                    ;// System.out.println(treeItem.getText());
                }

                Object[] els = tree.getExpandedElements();
                for (Object el : els) {
                    System.out.println(el.getClass().getName());
                }
                // tree.getChildren(widget, elementChildren)

                org.eclipse.jface.viewers.TreePath[] tp = tree.getExpandedTreePaths();
                for (TreePath treePath : tp) {
                    System.out.println(treePath.getFirstSegment().toString());
                }

                List<IProject> projects = controler.getDsmlProjects();
                for (IProject iProject : projects) {
                    if (iProject.getName().endsWith("." + language)) {
                        StructuredSelection ssel = new StructuredSelection(iProject);
                        tree.getControl().setRedraw(false);
                        tree.setSelection(ssel, true);
                        tree.getControl().setRedraw(true);

                        IEditorPart opened = bringToTop(iProject);
                        // if (currentPackage==null)
                        // throw new
                        // RuntimeException("should not happen in getPackage()");
                        ((EcoreDiagramEditor) opened).getDiagram();

                    }
                }

            }
            // org.eclipse.jdt.ui.PackageExplorer pe;

            IViewReference[] views = PlatformUI.getWorkbench().getActiveWorkbenchWindow().getActivePage()
                    .getViewReferences();
            for (IViewReference view : views) {
                if ("org.eclipse.jdt.ui.PackageExplorer".equals(view.getId())) {
                    IViewPart pExplorer = view.getView(true);

                    TreeViewer viewer;

                    // pExplorer.
                    // pExplorer.getViewSite().getSelectionProvider().setSelection(selection);
                    break;
                }
            }

        } catch (PartInitException e1) {
            e1.printStackTrace();
            return null;
        }
        return navigator;
    }

}