--- /dev/null
+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();
+ }
+
+}
\ No newline at end of file