/******************************************************************************* * Copyright (c) 2010, 2015 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.e4.ui.progress; import javax.annotation.PostConstruct; import javax.inject.Inject; import org.eclipse.e4.ui.di.Focus; import org.eclipse.e4.ui.model.application.MApplication; import org.eclipse.e4.ui.model.application.commands.MCommand; import org.eclipse.e4.ui.model.application.commands.MHandler; import org.eclipse.e4.ui.model.application.ui.basic.MPart; import org.eclipse.e4.ui.model.application.ui.menu.MHandledMenuItem; import org.eclipse.e4.ui.model.application.ui.menu.MHandledToolItem; import org.eclipse.e4.ui.model.application.ui.menu.MMenu; import org.eclipse.e4.ui.model.application.ui.menu.MToolBar; import org.eclipse.e4.ui.progress.internal.DetailedProgressViewer; import org.eclipse.e4.ui.progress.internal.FinishedJobs; import org.eclipse.e4.ui.progress.internal.ProgressManager; import org.eclipse.e4.ui.progress.internal.ProgressManagerUtil; import org.eclipse.e4.ui.progress.internal.ProgressViewUpdater; import org.eclipse.e4.ui.progress.internal.ProgressViewerContentProvider; import org.eclipse.e4.ui.workbench.modeling.EModelService; import org.eclipse.e4.ui.workbench.modeling.ESelectionService; import org.eclipse.jface.viewers.ISelectionChangedListener; import org.eclipse.jface.viewers.SelectionChangedEvent; import org.eclipse.swt.SWT; import org.eclipse.swt.layout.GridData; import org.eclipse.swt.widgets.Composite; /** * @noreference */ public class ProgrammaticProgressView { private static final String CLEAR_ALL_ICON_URI = "platform:/plugin/org.eclipse.e4.ui.progress/icons/full/elcl16/progress_remall.png"; //$NON-NLS-1$ DetailedProgressViewer viewer; @Inject ESelectionService selectionService; @Inject EModelService modelService; MApplication application; MPart part; ISelectionChangedListener selectionListener; private MCommand clearAllCommand; private MCommand showPreferencesCommand; @PostConstruct public void createPartControl(Composite parent, MApplication application, MPart part, ProgressManager progressManager, IProgressService progressService, FinishedJobs finishedJobs, ProgressViewUpdater viewUpdater) { this.application = application; this.part = part; viewer = new DetailedProgressViewer(parent, SWT.MULTI | SWT.H_SCROLL, progressService, finishedJobs); viewer.setComparator(ProgressManagerUtil.getProgressViewerComparator()); viewer.getControl().setLayoutData( new GridData(SWT.FILL, SWT.FILL, true, true)); // helpSystem.setHelp(parent, IWorkbenchHelpContextIds.RESPONSIVE_UI); ProgressViewerContentProvider provider = new ProgressViewerContentProvider( viewer, finishedJobs, viewUpdater, progressManager, true, true); viewer.setContentProvider(provider); viewer.setInput(progressManager); selectionListener = new ISelectionChangedListener() { @Override public void selectionChanged(SelectionChangedEvent event) { if (selectionService != null) selectionService.setSelection(event.getSelection()); } }; viewer.addSelectionChangedListener(selectionListener); createCommands(); createViewMenu(); } @Focus public void setFocus() { if (viewer != null) { viewer.setFocus(); } } private void createCommands() { clearAllCommand = modelService.createModelElement(MCommand.class); clearAllCommand.setElementId("clearAllCommand"); //$NON-NLS-1$ clearAllCommand.setCommandName("clearAllCommand"); //$NON-NLS-1$ application.getCommands().add(clearAllCommand); showPreferencesCommand = modelService.createModelElement(MCommand.class); showPreferencesCommand.setElementId("showPreferencesCommand"); //$NON-NLS-1$ showPreferencesCommand.setCommandName("showPreferencesCommand"); //$NON-NLS-1$ application.getCommands().add(showPreferencesCommand); MHandler clearAllHandler = modelService.createModelElement(MHandler.class); clearAllHandler.setCommand(clearAllCommand); clearAllHandler.setContributionURI("bundleclass://org.eclipse.e4.ui.progress/org.eclipse.e4.ui.progress.ClearAllHandler"); //$NON-NLS-1$ part.getHandlers().add(clearAllHandler); MHandler showPreferencesHandler = modelService.createModelElement(MHandler.class); showPreferencesHandler.setCommand(showPreferencesCommand); showPreferencesHandler.setContributionURI("bundleclass://org.eclipse.e4.ui.progress/org.eclipse.e4.ui.progress.OpenPreferenceDialogHandler"); //$NON-NLS-1$ part.getHandlers().add(showPreferencesHandler); } private void createViewMenu() { MHandledToolItem clearAllButton = modelService.createModelElement(MHandledToolItem.class); clearAllButton.setIconURI(CLEAR_ALL_ICON_URI); clearAllButton.setCommand(clearAllCommand); MToolBar toolBar = modelService.createModelElement(MToolBar.class); toolBar.getChildren().add(clearAllButton); part.setToolbar(toolBar); MHandledMenuItem clearAllMenuItem = modelService.createModelElement(MHandledMenuItem.class); clearAllMenuItem.setLabel("Clear All"); //$NON-NLS-1$ clearAllMenuItem.setIconURI(CLEAR_ALL_ICON_URI); clearAllMenuItem.setCommand(clearAllCommand); MHandledMenuItem preferencesMenuItem = modelService.createModelElement(MHandledMenuItem.class); preferencesMenuItem.setLabel("Preferences"); //$NON-NLS-1$ preferencesMenuItem.setCommand(showPreferencesCommand); MMenu menu = modelService.createModelElement(MMenu.class); menu.getTags().add("ViewMenu"); // required //$NON-NLS-1$ menu.getChildren().add(clearAllMenuItem); menu.getChildren().add(preferencesMenuItem); part.getMenus().add(menu); } }