@Override public void doSave(final IProgressMonitor monitor) { for (final IEditorPart dirtyEditor : getDirtyEditors()) { dirtyEditor.doSave(monitor); } final RobotProject project = editorInput.getRobotProject(); project.clearAll(); new RedEclipseProjectConfigWriter() .writeConfiguration(editorInput.getProjectConfiguration(), project); }
private void installResourceListener() { final IProject project = editorInput.getRobotProject().getProject(); resourceListener = new RedXmlFileChangeListener( project, new OnRedConfigFileChange() { @Override public void whenFileWasRemoved() { SwtThread.syncExec( new Runnable() { @Override public void run() { getSite().getPage().closeEditor(RedProjectEditor.this, false); } }); } @Override public void whenFileChanged() { editorInput.refreshProjectConfiguration( ((IFileEditorInput) getEditorInput()).getFile()); setupEnvironmentLoadingJob(); } }); ResourcesPlugin.getWorkspace() .addResourceChangeListener(resourceListener, IResourceChangeEvent.POST_CHANGE); }
private void setupEnvironmentLoadingJob() { final RobotProject project = editorInput.getRobotProject(); final String activeEnv = "activeEnv"; final String allEnvs = "allEnvs"; final Job envLoadingJob = new Job("Reading available frameworks") { @Override protected IStatus run(final IProgressMonitor monitor) { eventBroker.send( RobotProjectConfigEvents.ROBOT_CONFIG_ENV_LOADING_STARTED, editorInput.getProjectConfiguration()); final RobotRuntimeEnvironment activeEnvironment = project == null ? null : project.getRuntimeEnvironment(); if (monitor.isCanceled()) { return Status.CANCEL_STATUS; } final List<RobotRuntimeEnvironment> allRuntimeEnvironments = RedPlugin.getDefault().getAllRuntimeEnvironments(); if (monitor.isCanceled()) { return Status.CANCEL_STATUS; } setProperty(createKey(activeEnv), activeEnvironment); setProperty(createKey(allEnvs), allRuntimeEnvironments); return Status.OK_STATUS; } }; envLoadingJob.addJobChangeListener( new JobChangeAdapter() { @SuppressWarnings("unchecked") @Override public void done(final IJobChangeEvent event) { final RobotRuntimeEnvironment env = (RobotRuntimeEnvironment) envLoadingJob.getProperty(createKey(activeEnv)); final List<RobotRuntimeEnvironment> allEnvironments = (List<RobotRuntimeEnvironment>) envLoadingJob.getProperty(createKey(allEnvs)); eventBroker.send( RobotProjectConfigEvents.ROBOT_CONFIG_ENV_LOADED, new Environments(allEnvironments, env)); } }); envLoadingJob.schedule(); }