PageRenderTime 59ms CodeModel.GetById 38ms app.highlight 16ms RepoModel.GetById 1ms app.codeStats 0ms

/SeeIT3D/src/seeit3d/internal/SeeIT3D.java

https://github.com/davidmr/seeit3d
Java | 144 lines | 104 code | 18 blank | 22 comment | 2 complexity | 925448fdd01d44becc0ef7330fc041ce MD5 | raw file
  1/**
  2 * 
  3 *  Copyright 2011 David Montaño
  4 *
  5 *  Licensed under the Apache License, Version 2.0 (the "License");
  6 *  you may not use this file except in compliance with the License.
  7 *  You may obtain a copy of the License at
  8 *
  9 *      http://www.apache.org/licenses/LICENSE-2.0
 10 *
 11 *  Unless required by applicable law or agreed to in writing, software
 12 *  distributed under the License is distributed on an "AS IS" BASIS,
 13 *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 14 *  See the License for the specific language governing permissions and
 15 *  limitations under the License.
 16 */
 17package seeit3d.internal;
 18
 19import org.eclipse.core.commands.Command;
 20import org.eclipse.core.resources.IWorkspace;
 21import org.eclipse.core.resources.ResourcesPlugin;
 22import org.eclipse.core.runtime.IProgressMonitor;
 23import org.eclipse.core.runtime.IStatus;
 24import org.eclipse.core.runtime.Status;
 25import org.eclipse.jface.preference.IPreferenceStore;
 26import org.eclipse.swt.widgets.Display;
 27import org.eclipse.swt.widgets.Shell;
 28import org.eclipse.ui.PlatformUI;
 29import org.eclipse.ui.commands.ICommandService;
 30import org.eclipse.ui.progress.UIJob;
 31
 32import seeit3d.internal.base.SeeIT3DModule;
 33import seeit3d.internal.base.core.api.ISeeIT3DPreferences;
 34import seeit3d.internal.base.error.ErrorHandler;
 35import seeit3d.internal.base.ui.ide.commands.ChangeSortingPolyCylindersCriteriaCommand;
 36import seeit3d.internal.base.ui.ide.observers.WorkspaceClosedObserver;
 37import seeit3d.internal.base.visual.api.IColorScaleRegistry;
 38import seeit3d.internal.base.visual.api.IRelationshipsRegistry;
 39import seeit3d.internal.base.visual.colorscale.imp.BlueGreenRed;
 40import seeit3d.internal.base.visual.colorscale.imp.BlueToYellow;
 41import seeit3d.internal.base.visual.colorscale.imp.BlueTone;
 42import seeit3d.internal.base.visual.colorscale.imp.ColdToHotColorScale;
 43import seeit3d.internal.base.visual.colorscale.imp.GrayColorScale;
 44import seeit3d.internal.base.visual.colorscale.imp.HeatedObject;
 45import seeit3d.internal.base.visual.colorscale.imp.LinearOptimal;
 46import seeit3d.internal.base.visual.colorscale.imp.MagentaTone;
 47import seeit3d.internal.base.visual.colorscale.imp.Rainbow;
 48import seeit3d.internal.base.visual.relationships.imp.ArcBasedGenerator;
 49import seeit3d.internal.base.visual.relationships.imp.CommonBaseGenerator;
 50import seeit3d.internal.base.visual.relationships.imp.LineBaseGenerator;
 51import seeit3d.internal.base.visual.relationships.imp.MovementBasedGenerator;
 52import seeit3d.internal.base.visual.relationships.imp.NoRelationships;
 53
 54import com.google.inject.Guice;
 55import com.google.inject.Injector;
 56
 57/**
 58 * Class in charge of loading contributions and initialize data for the plugin
 59 * 
 60 * @author David Montaño
 61 * 
 62 */
 63public class SeeIT3D {
 64
 65	private static Injector injector;
 66
 67	public static void initialize() {
 68		try {
 69			injector = Guice.createInjector(new SeeIT3DModule());
 70			initializeColorScales();
 71			initializeRelationshipsGenerator();
 72			initializePreferences();
 73			initializeSortRadio();
 74			registerGlobalListener();
 75			ErrorHandler.setShell(new Shell(Display.getDefault()));
 76		} catch (Exception e) {
 77			ErrorHandler.error(e);
 78		}
 79	}
 80
 81	private static void initializeColorScales() {
 82		IColorScaleRegistry registry = injector.getInstance(IColorScaleRegistry.class);
 83		registry.registerColorScale(new BlueTone());
 84		registry.registerColorScale(new BlueToYellow());
 85		registry.registerColorScale(new BlueGreenRed());
 86		registry.registerColorScale(new ColdToHotColorScale());
 87		registry.registerColorScale(new GrayColorScale());
 88		registry.registerColorScale(new HeatedObject());
 89		registry.registerColorScale(new LinearOptimal());
 90		registry.registerColorScale(new MagentaTone());
 91		registry.registerColorScale(new Rainbow());
 92	}
 93
 94	private static void initializeRelationshipsGenerator() {
 95		IRelationshipsRegistry registry = injector.getInstance(IRelationshipsRegistry.class);
 96		registry.registerRelationshipGenerator(NoRelationships.class);
 97		registry.registerRelationshipGenerator(CommonBaseGenerator.class);
 98		registry.registerRelationshipGenerator(LineBaseGenerator.class);
 99		registry.registerRelationshipGenerator(ArcBasedGenerator.class);
100		registry.registerRelationshipGenerator(MovementBasedGenerator.class);
101	}
102
103	private static void initializePreferences() {
104		ISeeIT3DPreferences preferences = injector.getInstance(ISeeIT3DPreferences.class);
105		IPreferenceStore preferenceStore = Activator.getDefault().getPreferenceStore();
106		preferences.setPreferencesDefaults(preferenceStore);
107		preferences.loadStoredPreferences(preferenceStore);
108		preferenceStore.addPropertyChangeListener(preferences);
109	}
110
111	private static void registerGlobalListener() {
112		IWorkspace workspace = ResourcesPlugin.getWorkspace();
113		workspace.addResourceChangeListener(new WorkspaceClosedObserver());
114
115	}
116
117	private static void initializeSortRadio() {
118		UIJob job = new UIJob("InitSortRadioState") {
119
120			@Override
121			public IStatus runInUIThread(IProgressMonitor monitor) {
122
123				ICommandService commandService = (ICommandService) PlatformUI.getWorkbench().getActiveWorkbenchWindow().getService(ICommandService.class);
124				Command command = commandService.getCommand(ChangeSortingPolyCylindersCriteriaCommand.CHANGE_SORT_COMMAND_ID);
125				command.isEnabled();
126				return new Status(IStatus.OK, Activator.PLUGIN_ID, "Init commands workaround performed succesfully");
127			}
128
129		};
130		job.schedule();
131	}
132
133	public static Injector injector() {
134		checkInitialized();
135		return injector;
136	}
137
138	private static void checkInitialized() {
139		if (injector == null) {
140			throw new IllegalStateException("SeeIT 3D not initialized");
141		}
142	}
143
144}