/******************************************************************************* * Copyright (c) 2005, 2016 IBM Corporation and others. * 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: * IBM Corporation - initial API and implementation *******************************************************************************/ package org.eclipse.help.ui.internal; import org.eclipse.core.runtime.Platform; import org.eclipse.help.ILiveHelpAction; import org.eclipse.jface.preference.PreferenceDialog; import org.eclipse.swt.widgets.Display; import org.eclipse.swt.widgets.Shell; import org.eclipse.ui.IWorkbenchWindow; import org.eclipse.ui.PlatformUI; import org.eclipse.ui.dialogs.PreferencesUtil; public class ShowCapabilitiesPreferenceAction implements ILiveHelpAction { private boolean narrow; @Override public void setInitializationString(String data) { if (data!=null && data.equals("narrow")) //$NON-NLS-1$ narrow=true; } @Override public void run() { final Display display = PlatformUI.getWorkbench().getDisplay(); display.syncExec(() -> { Shell windowShell = null; if (!narrow) { Shell[] shells = display.getShells(); for (int i = 0; i < shells.length; i++) { Object data = shells[i].getData(); if (data != null && data instanceof IWorkbenchWindow) { windowShell = shells[i]; break; } } } if (windowShell != null) { windowShell.forceActive(); if (Platform.getWS().equals(Platform.WS_WIN32)) { // feature in Windows. Without this code, // the window will only flash in the launch bar. windowShell.setVisible(false); windowShell.setMinimized(true); windowShell.setVisible(true); windowShell.setMinimized(false); } } PreferenceDialog dialog = PreferencesUtil.createPreferenceDialogOn(windowShell, getCapabilityPageId(), null, null); dialog.open(); }); } private String getCapabilityPageId() { return "org.eclipse.sdk.capabilities"; //$NON-NLS-1$ } }