| /* |
| * 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.setText(«EXPAND 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.setText(«EXPAND 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.bind(«EXPAND 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» |