blob: cddadb428948efa767c732a6bb6db9e78b4d2f99 [file] [log] [blame]
/*
* Copyright (c) 2007, 2009 Borland Software Corporation
*
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License v1.0
* which accompanies this distribution, and is available at
* http://www.eclipse.org/legal/epl-v10.html
*
* Contributors:
* bblajer (Borland) - initial API and implementation
*/
«IMPORT 'http://www.eclipse.org/gmf/2009/GenModel'»
«EXTENSION xpt::editor::Wizard»
«EXTENSION xpt::editor::i18n»
«DEFINE className FOR gmfgen::GenDiagram»URISelectorPage«ENDDEFINE»
«DEFINE qualifiedClassName FOR gmfgen::GenDiagram»«editorGen.editor.packageName».«EXPAND className»«ENDDEFINE»
«DEFINE URISelectorPage FOR gmfgen::GenDiagram
«EXPAND xpt::Common::copyright FOR editorGen
package «editorGen.editor.packageName»;
«EXPAND xpt::Common::generatedClassComment»
public abstract class «EXPAND className» «EXPAND supertypes» {
«EXPAND fileField
«EXPAND validator
«EXPAND ctor
«EXPAND createControl
«EXPAND setFile
«EXPAND validatePage
«EXPAND validateFile
«EXPAND getFileExtension
«EXPAND getFileURI
«EXPAND additions
}
«ENDDEFINE»
«DEFINE supertypes FOR gmfgen::GenDiagram»extends org.eclipse.jface.wizard.WizardPage«ENDDEFINE»
«DEFINE fileField FOR gmfgen::GenDiagram
«EXPAND xpt::Common::generatedMemberComment»
private org.eclipse.swt.widgets.Text fileField;
«ENDDEFINE»
«DEFINE ctor FOR gmfgen::GenDiagram
«EXPAND xpt::Common::generatedMemberComment»
protected «EXPAND className»(String name) {
super(name);
}
«ENDDEFINE»
«DEFINE createControl FOR gmfgen::GenDiagram
«EXPAND xpt::Common::generatedMemberComment»
public void createControl(org.eclipse.swt.widgets.Composite parent) {
org.eclipse.swt.widgets.Composite composite = new org.eclipse.swt.widgets.Composite(parent, org.eclipse.swt.SWT.NONE);
{
org.eclipse.swt.layout.GridLayout layout = new org.eclipse.swt.layout.GridLayout();
layout.numColumns = 1;
layout.verticalSpacing = 12;
composite.setLayout(layout);
org.eclipse.swt.layout.GridData data = new org.eclipse.swt.layout.GridData();
data.verticalAlignment = org.eclipse.swt.layout.GridData.FILL;
data.grabExcessVerticalSpace = true;
data.horizontalAlignment = org.eclipse.swt.layout.GridData.FILL;
composite.setLayoutData(data);
}
org.eclipse.swt.widgets.Label resourceURILabel = new org.eclipse.swt.widgets.Label(composite, org.eclipse.swt.SWT.LEFT);
{
resourceURILabel.setTextEXPAND xpt::Externalizer::accessorCall(i18nForNewDiagramFileWizardFileLabel(self)) FOR editorGen»);
org.eclipse.swt.layout.GridData data = new org.eclipse.swt.layout.GridData();
data.horizontalAlignment = org.eclipse.swt.layout.GridData.FILL;
resourceURILabel.setLayoutData(data);
}
org.eclipse.swt.widgets.Composite fileComposite = new org.eclipse.swt.widgets.Composite(composite, org.eclipse.swt.SWT.NONE);
{
org.eclipse.swt.layout.GridData data = new org.eclipse.swt.layout.GridData();
data.horizontalAlignment = org.eclipse.swt.layout.GridData.FILL;
data.grabExcessHorizontalSpace = true;
fileComposite.setLayoutData(data);
org.eclipse.swt.layout.GridLayout layout = new org.eclipse.swt.layout.GridLayout();
layout.marginHeight = 0;
layout.marginWidth = 0;
layout.numColumns = 2;
fileComposite.setLayout(layout);
}
fileField = new org.eclipse.swt.widgets.Text(fileComposite, org.eclipse.swt.SWT.BORDER);
{
org.eclipse.swt.layout.GridData data = new org.eclipse.swt.layout.GridData();
data.horizontalAlignment = org.eclipse.swt.layout.GridData.FILL;
data.grabExcessHorizontalSpace = true;
data.horizontalSpan = 1;
fileField.setLayoutData(data);
}
fileField.addModifyListener(validator);
org.eclipse.swt.widgets.Button resourceURIBrowseFileSystemButton = new org.eclipse.swt.widgets.Button(fileComposite, org.eclipse.swt.SWT.PUSH);
resourceURIBrowseFileSystemButton.setTextEXPAND xpt::Externalizer::accessorCall(i18nForNewDiagramFileWizardBrowseButton(self)) FOR editorGen»);
resourceURIBrowseFileSystemButton.addSelectionListener(new org.eclipse.swt.events.SelectionAdapter() {
public void widgetSelected(org.eclipse.swt.events.SelectionEvent event) {
String fileExtension = getFileExtension();
String extensionFilter;
if (fileExtension == null) {
extensionFilter = "*.*"; «EXPAND xpt::Common::nonNLS»
} else {
extensionFilter = "*." + fileExtension; «EXPAND xpt::Common::nonNLS»
}
String filePath = «getDiagramEditorUtilQualifiedClassName()».openFilePathDialog(getShell(), extensionFilter, org.eclipse.swt.SWT.OPEN);
if (filePath != null) {
if (fileExtension != null && !filePath.endsWith("." + fileExtension)) { «EXPAND xpt::Common::nonNLS»
filePath = filePath + "." + fileExtension; «EXPAND xpt::Common::nonNLS»
}
fileField.setText(filePath);
}
}
});
setPageComplete(validatePage());
setControl(composite);
}
«ENDDEFINE»
«DEFINE validator FOR gmfgen::GenDiagram
«EXPAND xpt::Common::generatedMemberComment»
protected org.eclipse.swt.events.ModifyListener validator = new org.eclipse.swt.events.ModifyListener() {
public void modifyText(org.eclipse.swt.events.ModifyEvent e) {
setPageComplete(validatePage());
}
};
«ENDDEFINE»
«DEFINE setFile FOR gmfgen::GenDiagram
«EXPAND xpt::Common::generatedMemberComment»
protected final void setFile(java.io.File file) {
fileField.setText(file.getPath());
}
«ENDDEFINE»
«DEFINE validatePage FOR gmfgen::GenDiagram
«EXPAND xpt::Common::generatedMemberComment»
protected boolean validatePage() {
org.eclipse.emf.common.util.URI fileURI = getFileURI();
if (fileURI == null || fileURI.isEmpty()) {
setErrorMessage(null);
return false;
}
if (fileURI.isFile()) {
java.io.File file = new java.io.File(fileURI.toFileString());
String fileProblem = validateFile(file);
if (fileProblem != null) {
setErrorMessage(fileProblem);
return false;
}
}
String requiredExt = getFileExtension();
if (requiredExt != null) {
String enteredExt = fileURI.fileExtension();
if (enteredExt == null || !enteredExt.equals(requiredExt)) {
setErrorMessage(org.eclipse.osgi.util.NLS.bindEXPAND xpt::Externalizer::accessorCall(i18nForNewDiagramFileWizardIncorrectExtension(self)) FOR editorGen», requiredExt));
return false;
}
}
setErrorMessage(null);
return true;
}
«ENDDEFINE»
«DEFINE validateFile FOR gmfgen::GenDiagram
«EXPAND xpt::Common::generatedMemberComment('Checks the given file and returns the error message if there are problems or <code>null</code> if the file is OK.'
protected abstract String validateFile(java.io.File file);
«ENDDEFINE»
«DEFINE getFileExtension FOR gmfgen::GenDiagram
«EXPAND xpt::Common::generatedMemberComment('Returns the file extension the opened file should conform to or <code>null</code>\n' +
'if there are no restrictions on file extension'
protected abstract String getFileExtension();
«ENDDEFINE»
«DEFINE getFileURI FOR gmfgen::GenDiagram
«EXPAND xpt::Common::generatedMemberComment»
protected org.eclipse.emf.common.util.URI getFileURI() {
try {
return org.eclipse.emf.common.util.URI.createFileURI(fileField.getText());
} catch (Exception exception) {
}
return null;
}
«ENDDEFINE»
«DEFINE additions FOR gmfgen::GenDiagram»«ENDDEFINE»
«DEFINE i18nAccessors FOR gmfgen::GenDiagram
«IF isRichClientPlatform(self)-»
«EXPAND xpt::Externalizer::accessorField(i18nForNewDiagramFileWizardIncorrectExtension(self))-»
«EXPAND xpt::Externalizer::accessorField(i18nForNewDiagramFileWizardBrowseButton(self))-»
«EXPAND xpt::Externalizer::accessorField(i18nForNewDiagramFileWizardFileLabel(self))-»
«ENDIF
«ENDDEFINE»
«DEFINE i18nValues FOR gmfgen::GenDiagram
«IF isRichClientPlatform(self)-»
«EXPAND xpt::Externalizer::messageEntry(i18nForNewDiagramFileWizardIncorrectExtension(self), 'The file name must end in {0}')-»
«EXPAND xpt::Externalizer::messageEntry(i18nForNewDiagramFileWizardBrowseButton(self), '&Browse...')-»
«EXPAND xpt::Externalizer::messageEntry(i18nForNewDiagramFileWizardFileLabel(self), '&File')-»
«ENDIF
«ENDDEFINE»