下面列出了怎么用org.eclipse.ui.IWorkbenchPartSite的API类实例代码及写法,或者点击链接到github查看源代码。
/**
* Returns an OSGi service from {@link ExecutionEvent}. It looks up a service in the following
* locations (if exist) in the given order:
*
* {@code HandlerUtil.getActiveSite(event)}
* {@code HandlerUtil.getActiveEditor(event).getEditorSite()}
* {@code HandlerUtil.getActiveEditor(event).getSite()}
* {@code HandlerUtil.getActiveWorkbenchWindow(event)}
* {@code PlatformUI.getWorkbench()}
*/
public static <T> T getService(ExecutionEvent event, Class<T> api) {
IWorkbenchSite activeSite = HandlerUtil.getActiveSite(event);
if (activeSite != null) {
return activeSite.getService(api);
}
IEditorPart activeEditor = HandlerUtil.getActiveEditor(event);
if (activeEditor != null) {
IEditorSite editorSite = activeEditor.getEditorSite();
if (editorSite != null) {
return editorSite.getService(api);
}
IWorkbenchPartSite site = activeEditor.getSite();
if (site != null) {
return site.getService(api);
}
}
IWorkbenchWindow workbenchWindow = HandlerUtil.getActiveWorkbenchWindow(event);
if (workbenchWindow != null) {
return workbenchWindow.getService(api);
}
return PlatformUI.getWorkbench().getService(api);
}
/**
* Notifies the listener that the menu is about to be hidden.
*/
@Override
public final void menuAboutToHide(final IMenuManager mgr) {
gatherContributions(mgr);
cleanupNeeded = true;
// Remove this menu as a visible menu.
final IWorkbenchPartSite site = part.getSite();
if (site != null) {
final IWorkbench workbench = site.getWorkbenchWindow().getWorkbench();
if (workbench instanceof Workbench) {
// try delaying this until after the selection event
// has been fired.
// This is less threatening if the popup: menu
// contributions aren't tied to the evaluation service
workbench.getDisplay().asyncExec(() -> {
final Workbench realWorkbench = (Workbench) workbench;
runCleanUp(realWorkbench);
});
}
}
}
private Display getDisplay() {
XtextEditor editor = this.editor;
if (editor == null){
if(sourceViewer != null)
return sourceViewer.getControl().getDisplay();
return null;
}
IWorkbenchPartSite site = editor.getSite();
if (site == null)
return null;
Shell shell = site.getShell();
if (shell == null || shell.isDisposed())
return null;
Display display = shell.getDisplay();
if (display == null || display.isDisposed())
return null;
return display;
}
public static IWorkbenchPartSite getSite() {
final IWorkbench workbench = PlatformUI.getWorkbench();
IWorkbenchWindow activeWorkbenchWindow = workbench.getActiveWorkbenchWindow();
if (activeWorkbenchWindow == null) {
return null;
}
IWorkbenchPage activePage = activeWorkbenchWindow.getActivePage();
if (activePage == null) {
return null;
}
IEditorPart activeEditor = activePage.getActiveEditor();
if (activeEditor == null) {
return null;
}
return activeEditor.getSite();
}
/**
* In the console context, use paste as
* in some consoles (e.g. org.eclipse.debug.internal.ui.views.console.ProcessConsole), updateText
* will not simulate keyboard input
*
* @param event the ExecutionEvent
* @param widget The consoles StyledText widget
*/
protected void paste(ExecutionEvent event, StyledText widget) {
IWorkbenchPart apart = HandlerUtil.getActivePart(event);
if (apart != null) {
try {
IWorkbenchPartSite site = apart.getSite();
if (site != null) {
IHandlerService service = (IHandlerService) site.getService(IHandlerService.class);
if (service != null) {
service.executeCommand(IEmacsPlusCommandDefinitionIds.EMP_PASTE, null);
KillRing.getInstance().setYanked(true);
}
}
} catch (CommandException e) {
}
}
}
@Override
public void run() {
if (inputFile == null) {
return;
}
IWorkbenchPartSite workbenchPartSite = derivedSourceView.getSite();
IWorkbenchPage workbenchPage = workbenchPartSite.getPage();
try {
IEditorPart editorPart = workbenchPage.openEditor(new FileEditorInput(inputFile),
COMPILATION_UNIT_EDITOR_ID, true, IWorkbenchPage.MATCH_ID | IWorkbenchPage.MATCH_INPUT);
if (selectedRegion != null) {
((ITextEditor) editorPart).selectAndReveal(selectedRegion.getOffset(), selectedRegion.getLength());
}
} catch (PartInitException partInitException) {
throw new WrappedRuntimeException(partInitException);
}
}
private Display getDisplay() {
XtextEditor editor = this.editor;
if (editor == null) {
if (sourceViewer != null) {
return sourceViewer.getControl().getDisplay();
}
return null;
}
IWorkbenchPartSite site = editor.getSite();
if (site == null) {
return null;
}
Shell shell = site.getShell();
if (shell == null || shell.isDisposed()) {
return null;
}
Display display = shell.getDisplay();
if (display == null || display.isDisposed()) {
return null;
}
return display;
}
public void addContextMenu(String string, IWorkbenchPartSite iWorkbenchPartSite){
MenuManager mgr = new MenuManager();
Menu popupmenu = new PopupMenuBuilder(natTable, mgr).build();
iWorkbenchPartSite.registerContextMenu(string, mgr, null);
natTable.addConfiguration(new AbstractUiBindingConfiguration() {
@Override
public void configureUiBindings(UiBindingRegistry uiBindingRegistry){
uiBindingRegistry.registerMouseDownBinding(
new MouseEventMatcher(SWT.NONE, null, MouseEventMatcher.RIGHT_BUTTON),
new PopupMenuAction(popupmenu));
}
});
}
@Override
public boolean isEnabled() {
IWorkbenchWindow window = PlatformUI.getWorkbench().getActiveWorkbenchWindow();
if (window == null) {
return false;
}
IWorkbenchPartSite site = window.getActivePage().getActiveEditor().getSite();
if (site == null) {
return false;
}
ISelectionProvider selectionProvider = site.getSelectionProvider();
if (selectionProvider == null) {
return false;
}
ISelection currentSelection = selectionProvider.getSelection();
setContext(refactoring, currentSelection);
return refactoring.isExecutable();
}
public UnansweredDocumentsView(Composite parent, IWorkbenchPartSite site,
Supplier<Questionnaire> questionnaireSupplier, Supplier<IProject> projectSupplier) {
this.questionnaireSupplier = questionnaireSupplier;
this.projectSupplier = projectSupplier;
incompleteDocumentsLabel = new Label(parent, 0);
incompleteDocumentsLabel.setText(TEMPLATE_ANSWERS_COMPLETE);
incompleteDocumentsLabel.setLayoutData(new GridData(SWT.BEGINNING, SWT.BEGINNING, false, false, 2, 1));
incompleteDocumentsList = new ListViewer(parent, SWT.V_SCROLL);
GridData gd = new GridData(SWT.BEGINNING, SWT.BEGINNING, false, false, 2, 1);
gd.heightHint = (int) (((org.eclipse.swt.widgets.List) incompleteDocumentsList.getControl()).getItemHeight()
* 4);
gd.widthHint = 300;
incompleteDocumentsList.getControl().setLayoutData(gd);
incompleteDocumentsList.getControl().setVisible(false);
incompleteDocumentsList.setSorter(new ViewerSorter());
incompleteDocumentsList.setContentProvider(ArrayContentProvider.getInstance());
incompleteDocumentsList.setLabelProvider(new LabelProvider() {
@Override
public String getText(Object element) {
return ((Document) element).getKey();
}
});
site.setSelectionProvider(incompleteDocumentsList);
}
public NewTextSearchActionGroup(IViewPart part) {
Assert.isNotNull(part);
IWorkbenchPartSite site = part.getSite();
fSelectionProvider = site.getSelectionProvider();
fPage = site.getPage();
fOpenPropertiesDialog = new PropertyDialogAction(site, fSelectionProvider);
fOpenAction = new OpenFileAction(fPage);
ISelection selection = fSelectionProvider.getSelection();
if (selection instanceof IStructuredSelection) {
fOpenPropertiesDialog.selectionChanged((IStructuredSelection) selection);
} else {
fOpenPropertiesDialog.selectionChanged(selection);
}
}
/**
* Create the composite.
*
* @param parent
* @param style
* @param partSite
*/
public MedicationComposite(Composite parent, int style, IWorkbenchPartSite partSite){
super(parent, style);
setLayout(new GridLayout(1, false));
searchFilterComposite();
medicationTableComposite(partSite);
stateComposite();
medicationDetailComposite();
showSearchFilterComposite(false);
showMedicationDetailComposite(null);
dropTarget =
new GenericObjectDropTarget("Medication", this,
new DropMedicationReceiver(getShell()));
}
/**
* Makes sure that the editor's folding state is correct the next time
* it becomes visible. If it already is visible, it toggles the folding
* state. If not, it either registers a part listener to toggle folding
* when the editor becomes visible, or cancels an already registered
* runner.
*/
public void runWhenNextVisible() {
// if there is one already: toggling twice is the identity
if (fFoldingRunner != null) {
fFoldingRunner.cancel();
return;
}
IWorkbenchPartSite site= getSite();
if (site != null) {
IWorkbenchPage page= site.getPage();
if (!page.isPartVisible(JavaEditor.this)) {
// if we're not visible - defer until visible
fPage= page;
fFoldingRunner= this;
page.addPartListener(this);
return;
}
}
// we're visible - run now
toggleFolding();
}
/**
* Update the presentation.
*
* @param textPresentation the text presentation
* @param addedPositions the added positions
* @param removedPositions the removed positions
*/
private void updatePresentation(TextPresentation textPresentation, List<Position> addedPositions, List<Position> removedPositions) {
Runnable runnable= fJobPresenter.createUpdateRunnable(textPresentation, addedPositions, removedPositions);
if (runnable == null)
return;
JavaEditor editor= fEditor;
if (editor == null)
return;
IWorkbenchPartSite site= editor.getSite();
if (site == null)
return;
Shell shell= site.getShell();
if (shell == null || shell.isDisposed())
return;
Display display= shell.getDisplay();
if (display == null || display.isDisposed())
return;
display.asyncExec(runnable);
}
@Override
public void uninstall() {
IWorkbenchPartSite site= fTextEditor.getSite();
IWorkbenchWindow window= site.getWorkbenchWindow();
window.getPartService().removePartListener(fPartListener);
fPartListener= null;
Shell shell= window.getShell();
if (shell != null && !shell.isDisposed())
shell.removeShellListener(fActivationListener);
fActivationListener= null;
JavaCore.removeElementChangedListener(fJavaElementChangedListener);
fJavaElementChangedListener= null;
IWorkspace workspace= JavaPlugin.getWorkspace();
workspace.removeResourceChangeListener(fResourceChangeListener);
fResourceChangeListener= null;
JavaPlugin.getDefault().getCombinedPreferenceStore().removePropertyChangeListener(fPropertyChangeListener);
fPropertyChangeListener= null;
super.uninstall();
}
public NewTextSearchActionGroup(IViewPart part) {
Assert.isNotNull(part);
IWorkbenchPartSite site = part.getSite();
fSelectionProvider = site.getSelectionProvider();
fPage = site.getPage();
fOpenPropertiesDialog = new PropertyDialogAction(site, fSelectionProvider);
fOpenAction = new OpenFileAction(fPage);
ISelection selection = fSelectionProvider.getSelection();
if (selection instanceof IStructuredSelection) {
fOpenPropertiesDialog.selectionChanged((IStructuredSelection) selection);
} else {
fOpenPropertiesDialog.selectionChanged(selection);
}
}
/**
* Attaches a contextmenu listener to the tree
*/
void initContextMenu(IMenuListener menuListener, String popupId, IWorkbenchPartSite viewSite) {
MenuManager menuMgr = new MenuManager();
menuMgr.setRemoveAllWhenShown(true);
menuMgr.addMenuListener(menuListener);
Menu menu = menuMgr.createContextMenu(getControl());
getControl().setMenu(menu);
viewSite.registerContextMenu(popupId, menuMgr, this);
}
/**
* Attaches a contextmenu listener to the tree
*/
void initContextMenu(IMenuListener menuListener, String popupId, IWorkbenchPartSite viewSite) {
MenuManager menuMgr= new MenuManager();
menuMgr.setRemoveAllWhenShown(true);
menuMgr.addMenuListener(menuListener);
Menu menu= menuMgr.createContextMenu(getControl());
getControl().setMenu(menu);
viewSite.registerContextMenu(popupId, menuMgr, this);
}
/**
* Attaches a contextmenu listener to the tree
*/
void initContextMenu(IMenuListener menuListener, String popupId, IWorkbenchPartSite viewSite) {
MenuManager menuMgr= new MenuManager();
menuMgr.setRemoveAllWhenShown(true);
menuMgr.addMenuListener(menuListener);
Menu menu= menuMgr.createContextMenu(getControl());
getControl().setMenu(menu);
viewSite.registerContextMenu(popupId, menuMgr, this);
}
@Override
public ViewInstance createViewInstance ( final ViewManager viewManager, final ViewManagerContext viewManagerContext, final ViewInstanceDescriptor descriptor, final Composite viewHolder, final ResourceManager manager, final IWorkbenchPartSite site )
{
final VisualInterfaceViewInstance instance = new VisualInterfaceViewInstance ( viewManager, viewManagerContext, viewHolder, descriptor, site.getService ( IEvaluationService.class ) );
instance.init ();
return instance;
}
@Override
public ViewInstance createViewInstance ( final ViewManager viewManager, final ViewManagerContext viewManagerContext, final ViewInstanceDescriptor descriptor, final Composite viewHolder, final ResourceManager manager, final IWorkbenchPartSite site )
{
final ChartView view = new ChartView ( viewManagerContext, manager, descriptor, viewHolder, (IEvaluationService)site.getService ( IEvaluationService.class ), true );
view.init ();
return view;
}
private void hookContextMenu ( final IWorkbenchPartSite site )
{
final MenuManager menuMgr = new MenuManager ( "#PopupMenu" ); //$NON-NLS-1$
menuMgr.setRemoveAllWhenShown ( true );
menuMgr.addMenuListener ( new IMenuListener () {
@Override
public void menuAboutToShow ( final IMenuManager manager )
{
fillContextMenu ( manager );
}
} );
final Menu menu = menuMgr.createContextMenu ( this.viewer.getControl () );
this.viewer.getControl ().setMenu ( menu );
site.registerContextMenu ( menuMgr, this.viewer );
}
/**
* Registers the context menu, if {@link #hasContextMenu()} returns true, with the site. The id
* of the context menu is viewId plus . and {@link #getCodeSystemName()}. <br />
* example ids: <i>ch.elexis.codedetailview.Block</i> or <i>ch.elexis.LeistungenView.Block</i>
*
* @param site
*/
public void activateContextMenu(IWorkbenchPartSite site,
DelegatingSelectionProvider selectionProvider, String viewId){
if (hasContextMenu() && site.getPart() != null) {
selectionProvider.setSelectionProviderDelegate(getSelectionProvider());
site.registerContextMenu(viewId + "." + getCodeSystemName(), getMenuManager(),
selectionProvider);
}
}
public EditorDocumentUndoChange(String name, ITextEditor editor, UndoEdit undoEdit, boolean doSave) {
this.name = name;
IWorkbenchPartSite site = editor.getSite();
this.page = site.getPage();
this.editorID = site.getId();
this.editorInput = editor.getEditorInput();
this.undoEdit = undoEdit;
this.doSave = doSave;
}
private Shell getShell() {
ITextEditor editor = getTextEditor();
if (editor != null) {
IWorkbenchPartSite site = editor.getSite();
Shell shell = site.getShell();
if (shell != null && !shell.isDisposed()) {
return shell;
}
}
return null;
}
/**
* Underlying implementation of <code>getSelectedResources</code>
*
* @return the list of selected <code>IResource</code> objects, or empty list if none.
*/
protected static List<IResource> getSelectedResources0() {
IWorkbenchWindow window = PlatformUI.getWorkbench().getActiveWorkbenchWindow();
List<IResource> resources = new ArrayList<IResource>();
if (window != null) {
IWorkbenchPage page = window.getActivePage();
if (page != null) {
IWorkbenchPart part = page.getActivePart();
if (part instanceof IEditorPart) {
IEditorPart epart = (IEditorPart) part;
IResource adaptee = (IResource) epart.getEditorInput().getAdapter(IResource.class);
if (adaptee != null) {
resources.add(adaptee);
}
}
else if (part != null) {
IWorkbenchPartSite site = part.getSite();
if(site != null) {
ISelectionProvider provider = site.getSelectionProvider();
if (provider != null) {
ISelection selection = provider.getSelection();
resources = getObjectsFromStructuredSelection(selection, IResource.class);
}
}
}
}
}
return resources;
}
public OpenEditorActionGroup(IWorkbenchPartSite site, ISelectionProvider specialSelectionProvider) {
fSite= site;
fOpen= new OpenAction(fSite);
fSelectionProvider= specialSelectionProvider == null ? fSite.getSelectionProvider() : specialSelectionProvider;
initialize();
if (specialSelectionProvider != null)
fOpen.setSpecialSelectionProvider(specialSelectionProvider);
}
protected static IWorkbenchWindow getWindow(IWorkbenchPart part) {
IWorkbenchWindow window;
IWorkbenchPartSite currentSite = part != null ? part.getSite() : null;
if (currentSite != null) {
window = currentSite.getWorkbenchWindow();
} else {
window = FindbugsPlugin.getActiveWorkbenchWindow();
}
return window;
}
public void format() {
Display display = null;
IWorkbenchPartSite site = getSite();
Shell shell = site.getShell();
if (shell != null && !shell.isDisposed())
display = shell.getDisplay();
BusyIndicator.showWhile(display, new Runnable() {
public void run() {
doFormat();
}
});
}
/**
* Maximize a part. Calling this a second time will "un-maximize" a part.
*
* @param part
* the workbench part
*/
public static void maximize(@NonNull IWorkbenchPart part) {
assertNotNull(part);
IWorkbenchPartSite site = part.getSite();
assertNotNull(site);
// The annotation is to make the compiler not complain.
@Nullable Object handlerServiceObject = site.getService(IHandlerService.class);
assertTrue(handlerServiceObject instanceof IHandlerService);
IHandlerService handlerService = (IHandlerService) handlerServiceObject;
try {
handlerService.executeCommand(IWorkbenchCommandConstants.WINDOW_MAXIMIZE_ACTIVE_VIEW_OR_EDITOR, null);
} catch (ExecutionException | NotDefinedException | NotEnabledException | NotHandledException e) {
fail(e.getMessage());
}
}