描述:通过这种方法,可以直接用鼠标点击某个你想知道的视图,控制台会打印出该视图的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> */ publicclass 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 { publicvoid inputChanged(Viewer v, Object oldInput, Object newInput) { } publicvoid dispose() { } public Object[] getElements(Object parent) { returnnew 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 publicvoid 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. */ publicvoid 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(); } privatevoid hookContextMenu() { MenuManager menuMgr = new MenuManager("#PopupMenu"); menuMgr.setRemoveAllWhenShown(true); menuMgr.addMenuListener(new IMenuListener() { publicvoid menuAboutToShow(IMenuManager manager) { SampleView.this.fillContextMenu(manager); } }); Menu menu = menuMgr.createContextMenu(viewer.getControl()); viewer.getControl().setMenu(menu); getSite().registerContextMenu(menuMgr, viewer); } privatevoid contributeToActionBars() { IActionBars bars = getViewSite().getActionBars(); fillLocalPullDown(bars.getMenuManager()); fillLocalToolBar(bars.getToolBarManager()); } privatevoid fillLocalPullDown(IMenuManager manager) { manager.add(action1); manager.add(new Separator()); manager.add(action2); } privatevoid fillContextMenu(IMenuManager manager) { manager.add(action1); manager.add(action2); // Other plug-ins can contribute there actions here manager.add(new Separator(IWorkbenchActionConstants.MB_ADDITIONS)); } privatevoid fillLocalToolBar(IToolBarManager manager) { manager.add(action1); manager.add(action2); } privatevoid makeActions() { action1 = new Action() { publicvoid 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() { publicvoid 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() { publicvoid run() { ISelection selection = viewer.getSelection(); Object obj = ((IStructuredSelection)selection).getFirstElement(); showMessage("Double-click detected on "+obj.toString()); } }; } privatevoid hookDoubleClickAction() { viewer.addDoubleClickListener(new IDoubleClickListener() { publicvoid doubleClick(DoubleClickEvent event) { doubleClickAction.run(); } }); } privatevoid showMessage(String message) { MessageDialog.openInformation( viewer.getControl().getShell(), "Sample View", message); } /** * Passing the focus request to the viewer's control. */ publicvoid setFocus() { viewer.getControl().setFocus(); } @Override publicvoid partActivated(IWorkbenchPartReference partRef) { // TODO Auto-generated method stub isActivePart(); } @Override publicvoid partBroughtToTop(IWorkbenchPartReference partRef) { // TODO Auto-generated method stub } @Override publicvoid partClosed(IWorkbenchPartReference partRef) { // TODO Auto-generated method stub } @Override publicvoid partDeactivated(IWorkbenchPartReference partRef) { // TODO Auto-generated method stub } @Override publicvoid partHidden(IWorkbenchPartReference partRef) { // TODO Auto-generated method stub } @Override publicvoid partInputChanged(IWorkbenchPartReference partRef) { // TODO Auto-generated method stub } @Override publicvoid partOpened(IWorkbenchPartReference partRef) { // TODO Auto-generated method stub } @Override publicvoid partVisible(IWorkbenchPartReference partRef) { // TODO Auto-generated method stub } privatevoid isActivePart() { IWorkbenchPart part = getViewSite().getPage().getActivePart(); //return part != null && part.equals(this); System.out.println(part.getSite().getId()); part.getSite().getPluginId(); } }