package net.sourceforge.phpeclipse.wiki.actions; import java.io.ByteArrayInputStream; import net.sourceforge.phpeclipse.wiki.editor.WikiEditorPlugin; import net.sourceforge.phpeclipse.wiki.preferences.Util; import org.eclipse.core.resources.IContainer; import org.eclipse.core.resources.IFile; import org.eclipse.core.resources.IFolder; import org.eclipse.core.resources.WorkspaceJob; import org.eclipse.core.runtime.CoreException; 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.ui.progress.IProgressConstants; public class CreateFilesJob extends WorkspaceJob { IFile[] files; public CreateFilesJob(IFile[] files) { super("Create Wiki Files Job"); this.files = files; } public IStatus runInWorkspace(IProgressMonitor monitor) { try { monitor.beginTask("Create Wiki Files", 100); IFile file; int partOfWork = 100 / files.length; int work = 0; String newText = WikiEditorPlugin.AUTOMATICALLY_CREATED; byte[] buffer = newText.getBytes(); ByteArrayInputStream source = new ByteArrayInputStream(buffer); ProblemConsole console = new ProblemConsole(); for (int i = 0; i < files.length; i++) { file = files[i]; IContainer parent = file.getParent(); if (parent instanceof IFolder && (!((IFolder) parent).exists())) { Util.createFolder((IFolder) parent, monitor); } try { if (!file.exists()) { file.create(source, true, monitor); } else { console.println("File: " + file.getLocation().toString() + "\n==>file already exists!"); } } catch (CoreException e) { if (file != null) { console.println("File: " + file.getLocation().toString() + "\n==>CoreException: "+e.getMessage()); } } if (monitor.isCanceled()) { return Status.CANCEL_STATUS; } work += partOfWork; monitor.worked(work); } if (isModal(this)) { // The progress dialog is still open show the message console.reportError(); } else { setProperty(IProgressConstants.KEEP_PROPERTY, Boolean.TRUE); // setProperty(IProgressConstants.ACTION_PROPERTY, getWikisCompletedAction()); } return Status.OK_STATUS; // } catch(CoreException e) { // return e.getStatus(); } finally { monitor.done(); } // return Status.OK_STATUS; } public boolean isModal(Job job) { Boolean isModal = (Boolean) job.getProperty(IProgressConstants.PROPERTY_IN_DIALOG); if (isModal == null) { return false; } return isModal.booleanValue(); } }