/*******************************************************************************
* 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.internal;
import javax.annotation.PostConstruct;
import javax.inject.Inject;
import javax.inject.Named;
import org.eclipse.e4.core.commands.EHandlerService;
import org.eclipse.e4.core.contexts.Active;
import org.eclipse.e4.core.contexts.IEclipseContext;
import org.eclipse.e4.core.di.annotations.Optional;
import org.eclipse.e4.core.services.statusreporter.StatusReporter;
import org.eclipse.e4.ui.di.UISynchronize;
import org.eclipse.e4.ui.model.application.MApplication;
import org.eclipse.e4.ui.model.application.ui.basic.MWindow;
import org.eclipse.e4.ui.progress.IProgressService;
import org.eclipse.e4.ui.services.IServiceConstants;
import org.eclipse.e4.ui.workbench.modeling.EModelService;
import org.eclipse.e4.ui.workbench.modeling.EPartService;
import org.eclipse.swt.widgets.Display;
import org.eclipse.swt.widgets.Shell;
import org.osgi.service.log.LogService;
public class Services {
// TODO E4 synchronization needed ?
@Inject
private Display display;
@Inject
@Optional
@Named(IServiceConstants.ACTIVE_SHELL)
private Shell shell;
@Inject
private MApplication mApplication;
@Inject
@Optional
@Active
private MWindow window;
@Inject
private EHandlerService eHandlerService;
@Inject
private IProgressService progressService;
@Inject
private EModelService modelService;
@Inject
private EPartService partService;
@Inject
private LogService logService;
@Inject
private StatusReporter statusReporter;
@Inject
private UISynchronize uiSynchronize;
@Inject
IEclipseContext localContext;
IEclipseContext appContext;
protected static Services instance;
Services() {
instance = this;
}
@PostConstruct
void init() {
appContext = mApplication.getContext();
appContext.set(Services.class, this);
}
public <T> T getService(Class<T> clazz) {
return localContext.get(clazz);
}
public <T> void registerService(Class<T> clazz, T value) {
appContext.set(clazz, value);
}
public static Services getInstance() {
return instance;
}
public Display getDisplay() {
return display != null ? display : getDefaultDisplay();
}
private Display getDefaultDisplay() {
Display display = Display.getCurrent();
if (display == null) {
display = Display.getDefault();
}
return display;
}
public Shell getShell() {
return shell;
}
public UISynchronize getUISynchronize() {
return uiSynchronize;
}
public EHandlerService getEHandlerService() {
return eHandlerService;
}
public LogService getLogService() {
return logService;
}
public StatusReporter getStatusReporter() {
return statusReporter;
}
public IProgressService getProgressService() {
return progressService;
}
public EModelService getModelService() {
return modelService;
}
public EPartService getPartService() {
return partService;
}
public MWindow getMWindow() {
return window;
}
public MApplication getMApplication() {
return mApplication;
}
}