/SeeIT3D/src/seeit3d/internal/SeeIT3D.java
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}