<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    posts - 20, comments - 16, trackbacks - 0, articles - 0

    獲取某個視圖的id的方法總結。

    Posted on 2008-01-08 10:27 Raul Gong 閱讀(1888) 評論(0)  編輯  收藏 所屬分類: eclipse
    在制作eclipse插件的時候,時常需要對已經存在的視圖做一些擴展,例如在project explorer中增加一個右鍵菜單,或者需要獲取outline中當前選中項,等等。而這些操作的前提,是獲取這些視圖的id,然后通過獲取視圖的語句獲取到視圖,并進行下一步操作。

    例如:如果是在view中:

    IViewPart part = getViewSite().getPage().findView("org.eclipse.ui.views.ContentOutline");

    如果是在action中:

    IViewPart part = Plugin.getDefault().getWorkbench().getActiveWorkbenchWindow().getActivePage().findView("org.eclipse.ui.views.ContentOutline");


    可見獲取到視圖的id是很重要的。如何獲取id呢,有很多方法,我覺得比較常用的是以下兩種:

    1.通過手動查找目標視圖所在的插件的plugin.xml中對改視圖的定義,獲得視圖id。

    描述:我覺得這是最保險的辦法,因為所有的視圖都必定有一個plugin.xml定義,但是找到這個plugin.xml還是需要一些操作,可能會耗費一些時間。
    步驟:
    a.點擊“工具欄”->“Search”->“Search”,或者熱鍵“ctrl+h”。選“ Plugin Search”。
    b.Search for 選"Extention Point",Limit to 選“References”,External Scope 選“Enabled Plug-ins only”。
    c.下面的scope選“Worksapaces”。
    d.上面的Search String框填入我們要搜索的插件的擴展點的名字,這里我們要找視圖插件,所以填入:org.eclipse.ui.views
    e.點擊search以后,在底部Search視圖內列出很多搜索結果,任意選中一個,雙擊,可以看到editor內打開了該plugin.xml,選中編輯器底部的Extentions,用圖形化的方式來查看會更快捷。
    f.可以看到該插件使用的擴展點已經以列表的形式列出,我們查找的org.eclipse.ui.views擴展點也已經選中,展開選中的擴展點,可以看到它實現了哪些view,點擊某一個,可以在頁面右邊看到該視圖的詳細信息,第一項即是視圖的id。

    我們無法知道目標視圖在搜索結果中的哪個plugin中,所以可能會耗費一些時間,建議在查看搜索結果時,通過對視圖的分類分析,確定一個大概范圍再進行查看。
    同時,用這種方法也可以查找其他擴展點的實現插件。

    2.通過代碼直接讀出該視圖的id。

    描述:通過這種方法,可以直接用鼠標點擊某個你想知道的視圖,控制臺會打印出該視圖的id和所屬插件的id。
    步驟:
    a.通過插件向導新建一個插件,并使用Available Templates中的Plugin with a view模板,點finish。
    b.對自動創建的SampleView代碼進行修改,修改結果如下。其中主要步驟有三個:實現IPartListener2接口,編寫isActivePart()方法,調用isActivePart()方法。

    package com.raul.learn.sampleview.views;


    import org.eclipse.swt.widgets.Composite;
    import org.eclipse.ui.part.*;
    import org.eclipse.jface.viewers.*;
    import org.eclipse.swt.graphics.Image;
    import org.eclipse.jface.action.*;
    import org.eclipse.jface.dialogs.MessageDialog;
    import org.eclipse.ui.*;
    import org.eclipse.swt.widgets.Menu;
    import org.eclipse.swt.SWT;

    import com.raul.learn.sampleview.Activator;


    /**
     * This sample class demonstrates how to plug-in a new
     * workbench view. The view shows data obtained from the
     * model. The sample creates a dummy model on the fly,
     * but a real implementation would connect to the model
     * available either in this or another plug-in (e.g. the workspace).
     * The view is connected to the model using a content provider.
     * <p>
     * The view uses a label provider to define how model
     * objects should be presented in the view. Each
     * view can present the same model objects using
     * different labels and icons, if needed. Alternatively,
     * a single label provider can be shared between views
     * in order to ensure that objects of the same type are
     * presented in the same way everywhere.
     * <p>
     
    */


    public class SampleView extends ViewPart implements IPartListener2{
        
    private TableViewer viewer;
        
    private Action action1;
        
    private Action action2;
        
    private Action doubleClickAction;

        
    /*
         * 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 SampleView() {
            Activator.getDefault().getWorkbench().getActiveWorkbenchWindow()
            .getActivePage().addPartListener(
    this);

        }


        @Override
        
    public void dispose() {
            
    // TODO Auto-generated method stub
            Activator.getDefault().getWorkbench().getActiveWorkbenchWindow()
            .getActivePage().removePartListener(
    this);
            
    super.dispose();
        }

        
        
    /**
         * This is a callback that will allow us
         * to create the viewer and initialize it.
         
    */

        
    public void createPartControl(Composite parent) {
            viewer 
    = new TableViewer(parent, SWT.MULTI | SWT.H_SCROLL | SWT.V_SCROLL);
            viewer.setContentProvider(
    new ViewContentProvider());
            viewer.setLabelProvider(
    new ViewLabelProvider());
            viewer.setSorter(
    new NameSorter());
            viewer.setInput(getViewSite());
            makeActions();
            hookContextMenu();
            hookDoubleClickAction();
            contributeToActionBars();
        }


        
    private void hookContextMenu() {
            MenuManager menuMgr 
    = new MenuManager("#PopupMenu");
            menuMgr.setRemoveAllWhenShown(
    true);
            menuMgr.addMenuListener(
    new IMenuListener() {
                
    public void menuAboutToShow(IMenuManager manager) {
                    SampleView.
    this.fillContextMenu(manager);
                }

            }
    );
            Menu menu 
    = menuMgr.createContextMenu(viewer.getControl());
            viewer.getControl().setMenu(menu);
            getSite().registerContextMenu(menuMgr, viewer);
        }


        
    private void contributeToActionBars() {
            IActionBars bars 
    = getViewSite().getActionBars();
            fillLocalPullDown(bars.getMenuManager());
            fillLocalToolBar(bars.getToolBarManager());
        }


        
    private void fillLocalPullDown(IMenuManager manager) {
            manager.add(action1);
            manager.add(
    new Separator());
            manager.add(action2);
        }


        
    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) {
            manager.add(action1);
            manager.add(action2);
        }


        
    private void makeActions() {
            action1 
    = new Action() {
                
    public void run() {
                    showMessage(
    "Action 1 executed");
                }

            }
    ;
            action1.setText(
    "Action 1");
            action1.setToolTipText(
    "Action 1 tooltip");
            action1.setImageDescriptor(PlatformUI.getWorkbench().getSharedImages().
                getImageDescriptor(ISharedImages.IMG_OBJS_INFO_TSK));
            
            action2 
    = new Action() {
                
    public void run() {
                    showMessage(
    "Action 2 executed");
                }

            }
    ;
            action2.setText(
    "Action 2");
            action2.setToolTipText(
    "Action 2 tooltip");
            action2.setImageDescriptor(PlatformUI.getWorkbench().getSharedImages().
                    getImageDescriptor(ISharedImages.IMG_OBJS_INFO_TSK));
            doubleClickAction 
    = new Action() {
                
    public void run() {
                    ISelection selection 
    = viewer.getSelection();
                    Object obj 
    = ((IStructuredSelection)selection).getFirstElement();
                    showMessage(
    "Double-click detected on "+obj.toString());
                }

            }
    ;
        }


        
    private void hookDoubleClickAction() {
            viewer.addDoubleClickListener(
    new IDoubleClickListener() {
                
    public void doubleClick(DoubleClickEvent event) {
                    doubleClickAction.run();
                }

            }
    );
        }

        
    private void showMessage(String message) {
            MessageDialog.openInformation(
                viewer.getControl().getShell(),
                
    "Sample View",
                message);
        }


        
    /**
         * Passing the focus request to the viewer's control.
         
    */

        
    public void setFocus() {
            viewer.getControl().setFocus();
        }


        @Override
        
    public void partActivated(IWorkbenchPartReference partRef) {
            
    // TODO Auto-generated method stub
            isActivePart();
        }


        @Override
        
    public void partBroughtToTop(IWorkbenchPartReference partRef) {
            
    // TODO Auto-generated method stub
            
        }


        @Override
        
    public void partClosed(IWorkbenchPartReference partRef) {
            
    // TODO Auto-generated method stub
            
        }


        @Override
        
    public void partDeactivated(IWorkbenchPartReference partRef) {
            
    // TODO Auto-generated method stub
            
        }


        @Override
        
    public void partHidden(IWorkbenchPartReference partRef) {
            
    // TODO Auto-generated method stub
            
        }


        @Override
        
    public void partInputChanged(IWorkbenchPartReference partRef) {
            
    // TODO Auto-generated method stub
            
        }


        @Override
        
    public void partOpened(IWorkbenchPartReference partRef) {
            
    // TODO Auto-generated method stub
            
        }


        @Override
        
    public void partVisible(IWorkbenchPartReference partRef) {
            
    // TODO Auto-generated method stub
            
        }

        
        
    private void isActivePart() {
            IWorkbenchPart part 
    = getViewSite().getPage().getActivePart();
            
    //return part != null && part.equals(this);        
            System.out.println(part.getSite().getId());
            part.getSite().getPluginId();
        }

    }



    然后調插件,在運行環境中調出該視圖,接著當你用鼠標點擊你想知道的視圖時,在開發環境中的控制臺,就會打印出該視圖的id以及所屬插件的id。
    主站蜘蛛池模板: 成人精品一区二区三区不卡免费看| 无码人妻AV免费一区二区三区| 国产亚洲成人久久| 免费精品无码AV片在线观看| 午夜在线a亚洲v天堂网2019| 国产福利电影一区二区三区,亚洲国模精品一区 | 久久青青草原亚洲av无码| 国产免费一区二区三区在线观看| 色在线亚洲视频www| 亚洲真人日本在线| 亚洲美女视频免费| 一级毛片一级毛片免费毛片| 亚洲特级aaaaaa毛片| 亚洲阿v天堂在线2017免费| 中国人xxxxx69免费视频| 黄页网站在线视频免费| 久久精品a亚洲国产v高清不卡| 四虎影库久免费视频| 最近中文字幕国语免费完整| 免费福利资源站在线视频| 亚洲女人初试黑人巨高清| 狠狠亚洲婷婷综合色香五月排名| 91免费国产在线观看| a级毛片免费全部播放无码| 激情小说亚洲色图| 亚洲AV一二三区成人影片| 亚洲色精品88色婷婷七月丁香| 国产一精品一AV一免费孕妇| 中国性猛交xxxxx免费看| 色天使色婷婷在线影院亚洲| 亚洲自偷精品视频自拍| 在线观看午夜亚洲一区| 免费高清在线影片一区| 亚洲大片免费观看| 国产永久免费高清在线| 免费人成动漫在线播放r18| 亚洲最大中文字幕无码网站 | 国产在线98福利播放视频免费| 每天更新的免费av片在线观看| 久久er国产精品免费观看8| 亚洲AV无码资源在线观看|