org.eclipse.linuxtools.internal.docker.ui.utils.UIUtils.java Source code

Java tutorial

Introduction

Here is the source code for org.eclipse.linuxtools.internal.docker.ui.utils.UIUtils.java

Source

/*******************************************************************************
 * Copyright (c) 2010, 2016 Red Hat, Inc. and others.
 * Distributed under license by Red Hat, Inc. All rights reserved.
 * This program is 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:
 *     Red Hat, Inc. - initial API and implementation
 ******************************************************************************/
package org.eclipse.linuxtools.internal.docker.ui.utils;

import org.eclipse.core.runtime.Assert;
import org.eclipse.jface.action.ContributionManager;
import org.eclipse.jface.action.GroupMarker;
import org.eclipse.jface.action.IContributionManager;
import org.eclipse.jface.action.IMenuManager;
import org.eclipse.jface.action.MenuManager;
import org.eclipse.jface.dialogs.IDialogSettings;
import org.eclipse.jface.resource.ImageDescriptor;
import org.eclipse.jface.resource.JFaceResources;
import org.eclipse.jface.viewers.ISelection;
import org.eclipse.jface.viewers.IStructuredSelection;
import org.eclipse.swt.events.DisposeListener;
import org.eclipse.swt.widgets.Control;
import org.eclipse.swt.widgets.Menu;
import org.eclipse.ui.IEditorPart;
import org.eclipse.ui.IWorkbench;
import org.eclipse.ui.IWorkbenchActionConstants;
import org.eclipse.ui.IWorkbenchPage;
import org.eclipse.ui.IWorkbenchPartSite;
import org.eclipse.ui.IWorkbenchWindow;
import org.eclipse.ui.PlatformUI;
import org.eclipse.ui.menus.IMenuService;
import org.eclipse.ui.part.EditorPart;
import org.eclipse.ui.plugin.AbstractUIPlugin;

/**
 * @author Andre Dietisheim
 */
public class UIUtils {

    private UIUtils() {
    }

    /**
     * Returns the selection of the active workbench window.
     * 
     * @return the selection
     * 
     * @see IWorkbenchWindow#getSelectionService()
     */
    public static ISelection getWorkbenchWindowSelection() {
        return getActiveWorkbenchWindow().getSelectionService().getSelection();
    }

    /**
     * Gets the structured selection.
     * 
     * @return the structured selection
     */
    public static IStructuredSelection getStructuredSelection() {
        ISelection selection = getWorkbenchWindowSelection();
        if (selection instanceof IStructuredSelection) {
            return (IStructuredSelection) selection;
        } else {
            return null;
        }
    }

    /**
     * Gets the first element.
     * 
     * @param selection
     *            the selection
     * @param expectedClass
     *            the expected class
     * 
     * @return the first element
     */
    @SuppressWarnings("unchecked")
    public static <T> T getFirstElement(final ISelection selection, final Class<T> expectedClass) {
        if (selection == null) {
            return null;
        } else {
            Assert.isTrue(selection instanceof IStructuredSelection);
            Object firstElement = ((IStructuredSelection) selection).getFirstElement();
            if (firstElement != null && expectedClass.isAssignableFrom(firstElement.getClass())) {
                return (T) firstElement;
            } else {
                return null;
            }
        }
    }

    /**
     * Gets the active page.
     * 
     * @return the active page
     */
    public static IWorkbenchPage getActivePage() {
        IWorkbenchPage workbenchPage = getActiveWorkbenchWindow().getActivePage();
        Assert.isNotNull(workbenchPage);
        return workbenchPage;
    }

    /**
     * Returns the editor that's currently active (focused).
     * 
     * @return the active editor
     */
    public static IEditorPart getActiveEditor() {
        IEditorPart editor = getActivePage().getActiveEditor();
        Assert.isNotNull(editor);
        return editor;
    }

    /**
     * Gets the active workbench window.
     * 
     * @return the active workbench window
     */
    public static IWorkbenchWindow getActiveWorkbenchWindow() {
        IWorkbenchWindow workbenchWindow = getWorkbench().getActiveWorkbenchWindow();
        Assert.isNotNull(workbenchWindow);
        return workbenchWindow;
    }

    /**
     * Gets the workbench.
     * 
     * @return the workbench
     */
    public static IWorkbench getWorkbench() {
        IWorkbench workbench = PlatformUI.getWorkbench();
        Assert.isNotNull(workbench);
        return workbench;
    }

    /**
     * Replaces an image with the given key by the given image descriptor.
     * 
     * @param imageKey
     *            the image key
     * @param imageDescriptor
     *            the image descriptor
     */
    public static void replaceInJfaceImageRegistry(final String imageKey, final ImageDescriptor imageDescriptor) {
        Assert.isNotNull(imageKey);
        Assert.isNotNull(imageDescriptor);

        JFaceResources.getImageRegistry().remove(imageKey);
        JFaceResources.getImageRegistry().put(imageKey, imageDescriptor);
    }

    /**
     * Register the given ContributionManager with the given id. The
     * contribution manager gets unregistered on control disposal.
     * 
     * @param id
     *            the id
     * @param contributionManager
     *            the contribution manager
     * @param control
     *            the control
     * 
     * @see ContributionManager
     * @see IMenuService
     * @see DisposeListener
     */
    public static void registerContributionManager(final String id, final IContributionManager contributionManager,
            final Control control) {
        Assert.isNotNull(id);
        Assert.isNotNull(contributionManager);
        Assert.isTrue(control != null && !control.isDisposed());

        final IMenuService menuService = PlatformUI.getWorkbench().getService(IMenuService.class);
        menuService.populateContributionManager((ContributionManager) contributionManager, id);
        contributionManager.update(true);
        control.addDisposeListener(
                e -> menuService.releaseContributions((ContributionManager) contributionManager));
    }

    /**
     * Creates context menu to a given control.
     * 
     * @param control
     *            the control
     * 
     * @return the i menu manager
     */
    public static IMenuManager createContextMenu(final Control control) {
        Assert.isTrue(control != null && !control.isDisposed());

        MenuManager menuManager = new MenuManager();
        menuManager.add(new GroupMarker(IWorkbenchActionConstants.MB_ADDITIONS));

        Menu menu = menuManager.createContextMenu(control);
        control.setMenu(menu);
        return menuManager;
    }

    /**
     * Gets the dialog settings for the given identifer and plugin.
     * 
     * @param identifier
     *            the identifier
     * @param plugin
     *            the plugin
     * 
     * @return the dialog settings
     */
    public static IDialogSettings getDialogSettings(final String identifier, final AbstractUIPlugin plugin) {
        Assert.isNotNull(plugin);
        IDialogSettings dialogSettings = plugin.getDialogSettings();
        IDialogSettings section = dialogSettings.getSection(identifier);
        if (section == null) {
            section = dialogSettings.addNewSection(identifier);
        }
        return section;
    }

    /**
     * Returns the page for a given editor.
     * 
     * @param editor
     *            the editor
     * @return the page
     * 
     * @see IWorkbenchPage
     */
    public static IWorkbenchPage getPage(EditorPart editor) {
        Assert.isNotNull(editor);
        IWorkbenchPartSite site = editor.getSite();
        Assert.isNotNull(site);
        return site.getPage();
    }

}