package org.insightech.er.wizard.page; import java.io.IOException; import java.io.InputStream; import org.eclipse.core.resources.IFile; import org.eclipse.core.resources.IWorkspace; import org.eclipse.core.resources.IWorkspaceRoot; import org.eclipse.core.resources.ResourcesPlugin; import org.eclipse.core.runtime.IPath; import org.eclipse.jface.viewers.IStructuredSelection; import org.eclipse.swt.widgets.Composite; import org.eclipse.ui.dialogs.WizardNewFileCreationPage; import org.insightech.er.Activator; import org.insightech.er.ResourceString; import org.insightech.er.editor.model.ERDiagram; import org.insightech.er.editor.persistent.Persistent; public class NewDiagramWizardPage1 extends WizardNewFileCreationPage { private ERDiagram diagram; private static final String EXTENSION = ".erm"; public NewDiagramWizardPage1(IStructuredSelection selection) { super(ResourceString.getResourceString("wizard.new.diagram.title"), selection); this.setTitle(ResourceString .getResourceString("wizard.new.diagram.title")); } /** * {@inheritDoc} */ @Override public void createControl(Composite parent) { super.createControl(parent); this.setFileName("newfile"); } /** * {@inheritDoc} */ @Override protected boolean validatePage() { boolean valid = super.validatePage(); if (valid) { String fileName = this.getFileName(); if (fileName.indexOf(".") != -1 && !fileName.endsWith(EXTENSION)) { this.setErrorMessage(ResourceString .getResourceString("error.erm.extension")); valid = false; } } if (valid) { String fileName = this.getFileName(); if (fileName.indexOf(".") == -1) { fileName = fileName + EXTENSION; } IWorkspace workspace = ResourcesPlugin.getWorkspace(); IWorkspaceRoot root = workspace.getRoot(); IPath containerPath = this.getContainerFullPath(); IPath newFilePath = containerPath.append(fileName); if (root.getFile(newFilePath).exists()) { this .setErrorMessage("'" + fileName + "' " + ResourceString .getResourceString("error.file.already.exists")); valid = false; } } if (valid) { this.setMessage(ResourceString .getResourceString("wizard.new.diagram.message")); } return valid; } public void createERDiagram(String database) { this.diagram = new ERDiagram(database); this.diagram.init(); } /** * {@inheritDoc} */ @Override protected InputStream getInitialContents() { Persistent persistent = Persistent.getInstance(); try { InputStream in = persistent.createInputStream(this.diagram); return in; } catch (IOException e) { Activator.showExceptionDialog(e); } return null; } /** * {@inheritDoc} */ @Override public IFile createNewFile() { String fileName = this.getFileName(); if (fileName.indexOf(".") == -1) { this.setFileName(fileName + EXTENSION); } return super.createNewFile(); } }