import org.eclipse.ui.keys.IBindingService;
import org.eclipse.ui.progress.IProgressService;
import org.eclipse.ui.statushandlers.AbstractStatusHandler;
+import org.eclipse.ui.statushandlers.StatusAdapter;
import org.osgi.framework.Bundle;
+import org.osgi.framework.BundleContext;
import org.osgi.framework.ServiceReference;
import org.osgi.framework.Version;
import org.simantics.CancelStartupException;
+import org.simantics.DatabaseBaselines;
import org.simantics.PlatformException;
import org.simantics.Simantics;
import org.simantics.SimanticsPlatform;
import org.simantics.SimanticsPlatform.OntologyRecoveryPolicy;
import org.simantics.SimanticsPlatform.RecoveryPolicy;
import org.simantics.TimingProgressMonitor;
+import org.simantics.UnhandledExceptionService;
import org.simantics.application.arguments.IArguments;
import org.simantics.application.arguments.SimanticsArguments;
import org.simantics.db.common.Indexing;
if (PROFILE_PLATFORM_STARTUP)
mon = new TimingProgressMonitor();
SimanticsPlatform.INSTANCE.startUp(databaseDriverId, mon, workspacePolicy, ontologyPolicy, requireSynchronize, new JFaceUserAgent());
+ if(DatabaseBaselines.shouldCreateAutomaticBaseline(SimanticsPlatform.INSTANCE.databaseExists() != null)) {
+ SimanticsPlatform.INSTANCE.shutdown(null);
+ DatabaseBaselines.createAutomaticBaseline(SimanticsPlatform.INSTANCE.dbLocation());
+ SimanticsPlatform.INSTANCE.reconnect(Simantics.getDefaultDatabaseDriver());
+ }
// Make sure that the default perspective comes from the project if
// the project has set ProjectKeys#DEFAULT_PERSPECTIVE.
* location is not being shown
*/
public String getWorkspaceLocation() {
- // read command line, which has priority
- IEclipseContext context = getWorkbenchConfigurer().getWorkbench().getService(IEclipseContext.class);
- String location = context != null ? (String) context.get(E4Workbench.FORCED_SHOW_LOCATION) : null;
- if (location != null) {
- return location;
- }
- // read the preference
- if (IDEWorkbenchPlugin.getDefault().getPreferenceStore().getBoolean(IDEInternalPreferences.SHOW_LOCATION)) {
- return Platform.getLocation().toOSString();
- }
- return null;
+ // read command line, which has priority
+ IEclipseContext context = getWorkbenchConfigurer().getWorkbench().getService(IEclipseContext.class);
+ String location = context != null ? (String) context.get(E4Workbench.FORCED_SHOW_LOCATION) : null;
+ if (location != null) {
+ return location;
+ }
+ // read the preference
+ if (IDEWorkbenchPlugin.getDefault().getPreferenceStore().getBoolean(IDEInternalPreferences.SHOW_LOCATION)) {
+ return Platform.getLocation().toOSString();
+ }
+ return null;
}
/**
*
* @see org.eclipse.ui.application.WorkbenchAdvisor#getWorkbenchErrorHandler()
*/
+
+ private AbstractStatusHandler workbenchErrorHandler = new AbstractStatusHandler() {
+
+ @Override
+ public void handle(StatusAdapter statusAdapter, int style) {
+ if (ideWorkbenchErrorHandler == null) {
+ ideWorkbenchErrorHandler = new IDEWorkbenchErrorHandler(
+ getWorkbenchConfigurer());
+ }
+ ideWorkbenchErrorHandler.handle(statusAdapter, style);
+
+ BundleContext context = Activator.getDefault().getBundle().getBundleContext();
+ ServiceReference<?> ref = context.getServiceReference(UnhandledExceptionService.class.getName());
+ UnhandledExceptionService unhandled = (UnhandledExceptionService)context.getService(ref);
+ Throwable t = statusAdapter.getStatus().getException();
+ if(t != null)
+ unhandled.handle(t);
+
+ }
+ };
+
@Override
public AbstractStatusHandler getWorkbenchErrorHandler() {
- if (ideWorkbenchErrorHandler == null) {
- ideWorkbenchErrorHandler = new IDEWorkbenchErrorHandler(
- getWorkbenchConfigurer());
- }
- return ideWorkbenchErrorHandler;
+ return workbenchErrorHandler;
}
/* (non-Javadoc)