// ============================================================================
//
// Copyright (C) 2006-2016 Talend Inc. - www.talend.com
//
// This source code is available under agreement available at
// %InstallDIR%\features\org.talend.rcp.branding.%PRODUCTNAME%\%PRODUCTNAME%license.txt
//
// You should have received a copy of the agreement
// along with this program; if not, write to Talend SA
// 9 rue Pages 92150 Suresnes, France
//
// ============================================================================
package org.talend.dataprofiler.rcp.intro;
import org.eclipse.jface.action.IContributionItem;
import org.eclipse.jface.action.ICoolBarManager;
import org.eclipse.jface.action.IMenuManager;
import org.eclipse.jface.preference.PreferenceManager;
import org.eclipse.swt.graphics.Point;
import org.eclipse.swt.graphics.Rectangle;
import org.eclipse.swt.widgets.Display;
import org.eclipse.ui.application.ActionBarAdvisor;
import org.eclipse.ui.application.IActionBarConfigurer;
import org.eclipse.ui.application.IWorkbenchWindowConfigurer;
import org.eclipse.ui.application.WorkbenchWindowAdvisor;
import org.eclipse.ui.internal.WorkbenchPlugin;
import org.talend.commons.utils.VersionUtils;
import org.talend.core.ITDQRepositoryService;
import org.talend.core.ui.branding.IBrandingService;
import org.talend.dataprofiler.core.service.GlobalServiceRegister;
import org.talend.dataprofiler.core.ui.perspective.ChangePerspectiveAction;
/**
* DOC rli class global comment. Detailled comment <br/>
*
*/
public class ApplicationWorkbenchWindowAdvisor extends WorkbenchWindowAdvisor {
public ApplicationWorkbenchWindowAdvisor(IWorkbenchWindowConfigurer configurer) {
super(configurer);
}
@Override
public ActionBarAdvisor createActionBarAdvisor(IActionBarConfigurer configurer) {
return new ApplicationActionBarAdvisor(configurer);
}
@Override
public void preWindowOpen() {
IWorkbenchWindowConfigurer configurer = getWindowConfigurer();
Rectangle screenSize = Display.getDefault().getClientArea();
configurer.setInitialSize(new Point(screenSize.width, screenSize.height));
configurer.setShowCoolBar(true);
// TDQ-9268 Progress display on statausLine.
configurer.setShowStatusLine(true);
configurer.setShowProgressIndicator(true);
String buildId = VersionUtils.getVersion();
IBrandingService brandingService = GlobalServiceRegister.getDefault().getBrandingService(IBrandingService.class);
configurer.setTitle(brandingService.getFullProductName() + " (" + buildId + ")"); //$NON-NLS-1$ //$NON-NLS-2$
}
/*
* (non-Javadoc)
*
* @see org.eclipse.ui.application.WorkbenchWindowAdvisor#postWindowOpen()
*/
@SuppressWarnings("restriction")
@Override
public void postWindowOpen() {
this.getWindowConfigurer().getWindow().getShell().setMaximized(true);
super.postWindowOpen();
ChangePerspectiveAction.getAction().switchTitle();
IWorkbenchWindowConfigurer workbenchWindowConfigurer = getWindowConfigurer();
// hide Preference page
PreferenceManager preferenceManager = workbenchWindowConfigurer.getWindow().getWorkbench().getPreferenceManager();
preferenceManager.remove("org.eclipse.debug.ui.DebugPreferencePage" + WorkbenchPlugin.PREFERENCE_PAGE_CATEGORY_SEPARATOR
+ "org.eclipse.ui.externaltools.ExternalToolsPreferencePage");
// hide toolBar item
IActionBarConfigurer actionBarConfigurer = workbenchWindowConfigurer.getActionBarConfigurer();
ICoolBarManager coolBarManager = actionBarConfigurer.getCoolBarManager();
IContributionItem toolBarItem = coolBarManager.find("org.eclipse.debug.ui.launchActionSet");
if (toolBarItem != null) {
coolBarManager.remove(toolBarItem);
}
// hide run menu
// hide Help->Install New Software and Help->Check For Updates
// hide File->Open File...
IMenuManager menuManager = actionBarConfigurer.getMenuManager();
IContributionItem[] menuItems = menuManager.getItems();
for (IContributionItem menuItem : menuItems) {
// Hack to remove the Run menu - it seems you cannot do this using the
// "org.eclipse.ui.activities" extension
// Hack to remove the Navigate menu -which can't be removed by "org.eclipse.ui.activities
if ("org.eclipse.ui.run".equals(menuItem.getId()) || "navigate".equals(menuItem.getId())) { //$NON-NLS-1$//$NON-NLS-2$
menuManager.remove(menuItem);
}
if ("file".equals(menuItem.getId())) { //$NON-NLS-1$
hideFileActions(menuItem);
}
if ("help".equals(menuItem.getId())) { //$NON-NLS-1$
hideHelpActions(menuItem);
}
}
ITDQRepositoryService tdqRepositoryService = (ITDQRepositoryService) org.talend.core.GlobalServiceRegister.getDefault()
.getService(ITDQRepositoryService.class);
if (tdqRepositoryService != null) {
tdqRepositoryService.addPartListener();
tdqRepositoryService.addSoftwareSystemUpdateListener();
}
}
private void hideHelpActions(IContributionItem menuItem) {
if (!(menuItem instanceof IMenuManager)) {
return;
}
IMenuManager menuManager = (IMenuManager) menuItem;
// 'removeIds' refer to DI side(ActionBarBuildHelper.java).
String[] removeIds = { "org.eclipse.equinox.p2.ui.sdk.update", "group.assist", //$NON-NLS-1$ //$NON-NLS-2$
"org.eclipse.ui.actions.showKeyAssistHandler", "additions", "group.tutorials", //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
"subversive", "subversive.help", "org.eclipse.equinox.p2.ui.sdk.install" }; //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
for (String id : removeIds) {
menuManager.remove(id);
}
}
private void hideFileActions(IContributionItem menuItem) {
if (!(menuItem instanceof IMenuManager)) {
return;
}
IMenuManager menuManager = (IMenuManager) menuItem;
// 'removeIds' refer to DI side(ActionBarBuildHelper.java).
String[] removeIds = { "org.eclipse.ui.openLocalFile" }; //$NON-NLS-1$
for (String id : removeIds) {
menuManager.remove(id);
}
}
}