blob: 9b58bd0cca3ef292d8dc4469dd1c75b893a2b4bf [file] [log] [blame]
/*
* Copyright (c) 2012 Google Inc.
*
* 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
*/
package com.google.eclipse.protobuf.ui;
import com.google.eclipse.protobuf.ui.builder.ProtobufBuilderState;
import com.google.inject.*;
import com.google.inject.name.Names;
import org.eclipse.core.resources.*;
import org.eclipse.core.runtime.*;
import org.eclipse.ui.*;
import org.eclipse.xtext.builder.builderState.IBuilderState;
import org.eclipse.xtext.builder.clustering.ClusteringBuilderState;
import org.eclipse.xtext.builder.impl.*;
import org.eclipse.xtext.builder.resourceloader.*;
import org.eclipse.xtext.resource.*;
import org.eclipse.xtext.ui.editor.*;
import org.eclipse.xtext.ui.notification.*;
import org.eclipse.xtext.ui.resource.*;
import org.eclipse.xtext.ui.shared.JdtHelper;
import org.eclipse.xtext.ui.shared.internal.SharedModule;
import org.eclipse.xtext.ui.util.IJdtHelper;
/**
* @author alruiz@google.com (Alex Ruiz)
*/
@SuppressWarnings("restriction")
public class ProtobufSharedModule extends SharedModule {
@Override protected void configure() {
bind(IBuilderState.class).to(ProtobufBuilderState.class).in(Scopes.SINGLETON);
bind(IResourceDescriptions.class).to(DirtyStateAwareResourceDescriptions.class).in(Scopes.SINGLETON);
bind(IResourceServiceProvider.Registry.class).toInstance(IResourceServiceProvider.Registry.INSTANCE);
bind(IResourceSetProvider.class).to(SimpleResourceSetProvider.class);
bind(IExtensionRegistry.class).toInstance(Platform.getExtensionRegistry());
bind(IResourceChangeListener.class).annotatedWith(Names.named(ProjectOpenedOrClosedListener.class.getName()))
.to(ProjectOpenedOrClosedListener.class);
bind(IExternalContentSupport.IExternalContentProvider.class).to(IDirtyStateManager.class).in(Scopes.SINGLETON);
bind(IDirtyStateManager.class).to(DirtyStateManager.class).in(Scopes.SINGLETON);
bind(IStateChangeEventBroker.class).to(StateChangeEventBroker.class).in(Scopes.SINGLETON);
bind(IncrementalProjectBuilder.class).to(XtextBuilder.class);
bind(IStorage2UriMapper.class).to(Storage2UriMapperImpl.class).in(Scopes.SINGLETON);
bind(IWorkbench.class).toProvider(new Provider<IWorkbench>() {
@Override public IWorkbench get() {
if (PlatformUI.isWorkbenchRunning()) {
return PlatformUI.getWorkbench();
}
return null;
}
});
bind(IWorkspace.class).toProvider(new Provider<IWorkspace>() {
@Override public IWorkspace get() {
return ResourcesPlugin.getWorkspace();
}
});
bind(IJdtHelper.class).to(JdtHelper.class).asEagerSingleton();
boolean parallel = false;
if (parallel) {
bind(IResourceLoader.class).toProvider(ResourceLoaderProviders.getParallelLoader());
bind(IResourceLoader.class).annotatedWith(Names.named(ClusteringBuilderState.RESOURCELOADER_GLOBAL_INDEX))
.toProvider(ResourceLoaderProviders.getParallelLoader());
bind(IResourceLoader.class).annotatedWith(Names.named(ClusteringBuilderState.RESOURCELOADER_CROSS_LINKING))
.toProvider(ResourceLoaderProviders.getParallelLoader());
} else {
bind(IResourceLoader.class).toProvider(ResourceLoaderProviders.getSerialLoader());
bind(IResourceLoader.class).annotatedWith(Names.named(ClusteringBuilderState.RESOURCELOADER_GLOBAL_INDEX))
.toProvider(ResourceLoaderProviders.getSerialLoader());
bind(IResourceLoader.class).annotatedWith(Names.named(ClusteringBuilderState.RESOURCELOADER_CROSS_LINKING))
.toProvider(ResourceLoaderProviders.getSerialLoader());
}
}
}