/** Destructor */ public void terminate() { IWorkspace ws = ResourcesPlugin.getWorkspace(); ws.removeResourceChangeListener(this); if (this.loadedSpec != null && PreferenceStoreHelper.getInstancePreferenceStore() .getBoolean(IPreferenceConstants.I_RESTORE_LAST_SPEC)) { PreferenceStoreHelper.getInstancePreferenceStore() .setValue(IPreferenceConstants.I_SPEC_LOADED, this.loadedSpec.getName()); } else { PreferenceStoreHelper.getInstancePreferenceStore() .setValue(IPreferenceConstants.I_SPEC_LOADED, ""); } }
private void showOrHideProblemView() { boolean showProblems = PreferenceStoreHelper.getInstancePreferenceStore() .getBoolean(IPreferenceConstants.I_PARSER_POPUP_ERRORS); if (showProblems) { if (TLAMarkerHelper.currentSpecHasProblems()) { // This used to be in Activator. However, // at startup there might not be an // activePage which results in a // NullPointerException. Thus, have the // ProblemView check the parse status when // UI startup complete. ProblemView view = (ProblemView) UIHelper.getActivePage().findView(ProblemView.ID); // show if (view != null) { // already shown, hide UIHelper.hideView(ProblemView.ID); } // not shown, show UIHelper.openViewNoFocus(ProblemView.ID); } else { // hide UIHelper.hideView(ProblemView.ID); } } }
/** Constructor */ public WorkspaceSpecManager() { // initialize the spec life cycle manager lifecycleManager = new SpecLifecycleManager(); IProgressMonitor monitor = null; IWorkspace ws = ResourcesPlugin.getWorkspace(); String specLoadedName = PreferenceStoreHelper.getInstancePreferenceStore() .getString(IPreferenceConstants.I_SPEC_LOADED); IProject[] projects = ws.getRoot().getProjects(); try { Spec spec = null; for (int i = 0; i < projects.length; i++) { // changed from projects[i].isAccessible() if (projects[i].isOpen()) { if (projects[i].hasNature(TLANature.ID)) { spec = new Spec(projects[i]); // Added by LL on 12 Apr 2011 // If spec.rootFile = null, then this is a bad spec. So // we should report it and not perform addSpec(spec). It // would be nice if we could report it to the user, but // it seems to be impossible to popup a window at this point // in the code. if (spec.getRootFile() == null) { Activator.getDefault() .logError("The bad spec is: `" + projects[i].getName() + "'", null); } else { // This to threw a null pointer exception for Tom, probably causing the abortion // of the Toolbox start. But it started on the next attempt. Should we catch the // and perhaps report the bad spec? addSpec(spec); } // load the spec if found if (spec.getName().equals(specLoadedName)) { this.setSpecLoaded(spec); } } } else { // DELETE closed projects projects[i].delete(IResource.FORCE | IResource.ALWAYS_DELETE_PROJECT_CONTENT, monitor); } } if (specLoadedName != null && !specLoadedName.equals("") && this.loadedSpec == null) { // there was a spec loaded but it was not found // explicit un-set it setSpecLoaded(null); } } catch (CoreException e) { Activator.getDefault().logError("Error initializing specification workspace", e); } ws.addResourceChangeListener(this); Platform.getAdapterManager().registerAdapters(this, IProject.class); }