blob: 3a88e8d96d29b76a28d51b39b0ac6d0d3afdafc3 [file] [log] [blame]
/*******************************************************************************
* Copyright (c) 2013, 2018 Willink Transformations and others.
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License v2.0
* which accompanies this distribution, and is available at
* http://www.eclipse.org/legal/epl-v20.html
*
* Contributors:
* E.D.Willink - initial API and implementation
*******************************************************************************/
package org.eclipse.ocl.xtext.oclstdlib.ui.wizards;
import org.eclipse.core.resources.IFile;
import org.eclipse.core.resources.IResource;
import org.eclipse.jdt.annotation.NonNull;
import org.eclipse.jdt.annotation.Nullable;
import org.eclipse.ocl.pivot.library.LibraryConstants;
import org.eclipse.ocl.xtext.base.ui.wizards.AbstractFileDialog;
import org.eclipse.ocl.xtext.base.ui.wizards.AbstractFileNewWizard;
import org.eclipse.ocl.xtext.base.ui.wizards.AbstractFileNewWizardPage;
import org.eclipse.ocl.xtext.oclstdlib.ui.OCLstdlibUiModule;
import org.eclipse.ocl.xtext.oclstdlib.ui.messages.OCLstdlibUIMessages;
/**
* Wizard allowing the user to create a new OCL Standard Library file.
*/
public class OCLstdlibFileNewWizard extends AbstractFileNewWizard
{
@Override
protected @NonNull OCLstdlibFileDialog createDialog(@NonNull AbstractFileNewWizardPage wizardPage, @Nullable IResource initialSelection) {
return new OCLstdlibFileDialog(this, wizardPage, initialSelection);
}
@Override
protected String getEditorId() {
return OCLstdlibUiModule.EDITOR_ID;
}
@Override
public @NonNull String getInitialContentsAsString(@NonNull IFile newFile, @NonNull AbstractFileDialog dialog) {
StringBuilder s = new StringBuilder();
s.append("-- import an existing library to be extended\n");
s.append("import '" + LibraryConstants.STDLIB_URI + "';\n");
s.append("\n");
s.append("-- import an extension library re-using the imported library nsURI\n");
s.append("library lib : lib = '" + LibraryConstants.STDLIB_URI + "' {\n");
s.append(" type String : PrimitiveType {\n");
s.append(" -- define an additional operation accessed by my.strings.ExtraOperation.INSTANCE.evaluate\n");
s.append(" operation extraOperation(elem : Boolean) : Boolean => 'my.strings.ExtraOperation';\n");
s.append(" }\n");
s.append("}\n");
return s.toString();
}
@Override
public @NonNull String getNewFileExtension() {
return "oclstdlib";
}
@SuppressWarnings("null")
@Override
public @NonNull String getNewFileName() {
return OCLstdlibUIMessages.NewWizardPage_defaultFileName;
}
@SuppressWarnings("null")
@Override
public @NonNull String getNewFileLabel() {
return OCLstdlibUIMessages.NewWizardPage_fileNameLabel;
}
@SuppressWarnings("null")
@Override
public @NonNull String getPageDescription() {
return OCLstdlibUIMessages.NewWizardPage_pageDescription;
}
@SuppressWarnings("null")
@Override
public @NonNull String getPageSummary() {
return OCLstdlibUIMessages.NewWizardPage_pageSummary;
}
@SuppressWarnings("null")
@Override
public @NonNull String getPageTitle() {
return OCLstdlibUIMessages.NewWizardPage_pageTitle;
}
}