blob: bfd18946afcbf791cd5d82237be69b2b085e71c5 [file] [log] [blame]
package org.eclipse.mylyn.docs.intent.exporter.client;
import org.eclipse.core.runtime.IProgressMonitor;
import org.eclipse.core.runtime.IStatus;
import org.eclipse.core.runtime.Status;
import org.eclipse.core.runtime.jobs.Job;
import org.eclipse.emf.common.util.BasicMonitor;
import org.eclipse.mylyn.docs.intent.client.ui.preferences.IntentPreferenceConstants;
import org.eclipse.mylyn.docs.intent.client.ui.preferences.IntentPreferenceService;
import org.eclipse.mylyn.docs.intent.core.document.IntentDocument;
import org.eclipse.mylyn.docs.intent.exporter.api.IntentHTMLExporter;
import org.eclipse.mylyn.docs.intent.exporter.ui.IntentPreviewView;
/*******************************************************************************
* Copyright (c) 2010, 2011 Obeo. All rights reserved. This program and the accompanying materials are made
* available under the terms of the Eclipse Public License v1.0 which accompanies this distribution, and is
* available at http://www.eclipse.org/legal/epl-v10.html Contributors: Obeo - initial API and implementation
*******************************************************************************/
/**
* A {@link Job} in charge of exporting an {@link IntentDocument}.
* @author <a href="mailto:alex.lagarde@obeo.fr">Alex Lagarde</a>
*
*/
public class IntentExporterJob extends Job {
/**
* Constant for this job's name.
*/
private static final String JOB_NAME = "Creating HTML preview";
/**
* The {@link IntentHTMLExporter} to use for export.
*/
private IntentHTMLExporter htmlExporter;
/**
* The {@link IntentDocument} to export.
*/
private IntentDocument intentDocument;
/**
* Location of the target folder in which document will be exported.
*/
private String targetFolderLocation;
/**
* Default constructor.
*
* @param intentDocument
* the {@link IntentDocument} to export
* @param targetFolderLocation
* the location of the folder used to store the HTML preview
*/
public IntentExporterJob(IntentDocument intentDocument, String targetFolderLocation) {
super(JOB_NAME);
this.intentDocument = intentDocument;
this.htmlExporter = new IntentHTMLExporter();
this.targetFolderLocation = targetFolderLocation;
}
/**
* {@inheritDoc}
*
* @see org.eclipse.core.runtime.jobs.Job#run(org.eclipse.core.runtime.IProgressMonitor)
*/
@Override
protected IStatus run(IProgressMonitor monitor) {
if (IntentPreferenceService.getBoolean(IntentPreferenceConstants.SHOW_PREVIEW_PAGE)) {
// Step 1: launch the export
htmlExporter.exportIntentDocumentation(intentDocument, targetFolderLocation,
"IntentDocumentation", false, BasicMonitor.toMonitor(monitor));
// Step 2: if the Intent Preview view is currently active, refresh it
IntentPreviewView.refreshPreviewView();
}
return Status.OK_STATUS;
}
}