|
|
@@ -0,0 +1,146 @@ |
|
|
package de.lmu.ifi.dbs.knowing.ui.wizard; |
|
|
|
|
|
import java.io.IOException; |
|
|
import java.io.InputStream; |
|
|
import java.lang.reflect.InvocationTargetException; |
|
|
|
|
|
import javax.xml.bind.JAXBException; |
|
|
|
|
|
import org.eclipse.core.resources.IContainer; |
|
|
import org.eclipse.core.resources.IFile; |
|
|
import org.eclipse.core.resources.IResource; |
|
|
import org.eclipse.core.resources.IWorkspaceRoot; |
|
|
import org.eclipse.core.resources.ResourcesPlugin; |
|
|
import org.eclipse.core.runtime.CoreException; |
|
|
import org.eclipse.core.runtime.IProgressMonitor; |
|
|
import org.eclipse.core.runtime.IStatus; |
|
|
import org.eclipse.core.runtime.Path; |
|
|
import org.eclipse.core.runtime.Status; |
|
|
import org.eclipse.jface.dialogs.MessageDialog; |
|
|
import org.eclipse.jface.operation.IRunnableWithProgress; |
|
|
import org.eclipse.jface.viewers.ISelection; |
|
|
import org.eclipse.jface.viewers.IStructuredSelection; |
|
|
import org.eclipse.jface.wizard.Wizard; |
|
|
import org.eclipse.ui.INewWizard; |
|
|
import org.eclipse.ui.IWorkbench; |
|
|
import org.eclipse.ui.IWorkbenchPage; |
|
|
import org.eclipse.ui.IWorkbenchWizard; |
|
|
import org.eclipse.ui.PartInitException; |
|
|
import org.eclipse.ui.PlatformUI; |
|
|
import org.eclipse.ui.dialogs.WizardNewFileCreationPage; |
|
|
import org.eclipse.ui.ide.IDE; |
|
|
|
|
|
import de.lmu.ifi.dbs.knowing.ui.util.DPUUtil; |
|
|
|
|
|
public class NewDPUWizardOld extends Wizard implements INewWizard { |
|
|
|
|
|
private WizardNewFileCreationPage page; |
|
|
|
|
|
private ISelection selection; |
|
|
|
|
|
public NewDPUWizardOld() { |
|
|
setWindowTitle("New Wizard"); |
|
|
setNeedsProgressMonitor(true); |
|
|
} |
|
|
|
|
|
@Override |
|
|
public void addPages() { |
|
|
addPage(page = new WizardNewFileCreationPage("DPU Source", (IStructuredSelection) selection)); |
|
|
page.setFileExtension("dpu"); |
|
|
page.setFileName("datamining"); |
|
|
|
|
|
} |
|
|
|
|
|
/** |
|
|
* This method is called when 'Finish' button is pressed in |
|
|
* the wizard. We will create an operation and run it |
|
|
* using wizard as execution context. |
|
|
*/ |
|
|
@Override |
|
|
public boolean performFinish() { |
|
|
final String containerName = page.getContainerFullPath().toOSString(); |
|
|
final String fileName = page.getFileName(); |
|
|
IRunnableWithProgress op = new IRunnableWithProgress() { |
|
|
public void run(IProgressMonitor monitor) throws InvocationTargetException { |
|
|
try { |
|
|
doFinish(containerName, fileName, monitor); |
|
|
} catch (CoreException e) { |
|
|
throw new InvocationTargetException(e); |
|
|
} finally { |
|
|
monitor.done(); |
|
|
} |
|
|
} |
|
|
}; |
|
|
try { |
|
|
getContainer().run(true, false, op); |
|
|
} catch (InterruptedException e) { |
|
|
return false; |
|
|
} catch (InvocationTargetException e) { |
|
|
Throwable realException = e.getTargetException(); |
|
|
MessageDialog.openError(getShell(), "Error", realException.getMessage()); |
|
|
return false; |
|
|
} |
|
|
return true; |
|
|
} |
|
|
|
|
|
/** |
|
|
* The worker method. It will find the container, create the |
|
|
* file if missing or just replace its contents, and open |
|
|
* the editor on the newly created file. |
|
|
*/ |
|
|
|
|
|
private void doFinish(String containerName, String fileName,IProgressMonitor monitor) throws CoreException { |
|
|
// create a sample file |
|
|
monitor.beginTask("Creating " + fileName, 2); |
|
|
IWorkspaceRoot root = ResourcesPlugin.getWorkspace().getRoot(); |
|
|
IResource resource = root.findMember(new Path(containerName)); |
|
|
if (!resource.exists() || !(resource instanceof IContainer)) { |
|
|
throwCoreException("Container \"" + containerName + "\" does not exist."); |
|
|
} |
|
|
IContainer container = (IContainer) resource; |
|
|
final IFile file = container.getFile(new Path(fileName)); |
|
|
try { |
|
|
InputStream stream = DPUUtil.createDPUInputStream(); |
|
|
if (file.exists()) { |
|
|
file.setContents(stream, true, true, monitor); |
|
|
} else { |
|
|
file.create(stream, true, monitor); |
|
|
} |
|
|
stream.close(); |
|
|
} catch (IOException e) { |
|
|
e.printStackTrace(); |
|
|
} catch (JAXBException e) { |
|
|
e.printStackTrace(); |
|
|
} |
|
|
monitor.worked(1); |
|
|
monitor.setTaskName("Opening file for editing..."); |
|
|
getShell().getDisplay().asyncExec(new Runnable() { |
|
|
public void run() { |
|
|
IWorkbenchPage page = |
|
|
PlatformUI.getWorkbench().getActiveWorkbenchWindow().getActivePage(); |
|
|
try { |
|
|
IDE.openEditor(page, file, true); |
|
|
} catch (PartInitException e) { |
|
|
} |
|
|
} |
|
|
}); |
|
|
monitor.worked(1); |
|
|
} |
|
|
|
|
|
private void throwCoreException(String message) throws CoreException { |
|
|
IStatus status = new Status(IStatus.ERROR, "de.mukis.editor.test", IStatus.OK, message, null); |
|
|
throw new CoreException(status); |
|
|
} |
|
|
|
|
|
/** |
|
|
* We will accept the selection in the workbench to see if |
|
|
* we can initialize from it. |
|
|
* @see IWorkbenchWizard#init(IWorkbench, IStructuredSelection) |
|
|
*/ |
|
|
@Override |
|
|
public void init(IWorkbench workbench, IStructuredSelection selection) { |
|
|
this.selection = selection; |
|
|
} |
|
|
|
|
|
|
|
|
} |