diff options
Diffstat (limited to 'bundles/org.eclipse.wst.xml.ui/src-wizards/org/eclipse/wst/xml/ui/internal/wizards/NewXMLWizard.java')
-rw-r--r-- | bundles/org.eclipse.wst.xml.ui/src-wizards/org/eclipse/wst/xml/ui/internal/wizards/NewXMLWizard.java | 967 |
1 files changed, 0 insertions, 967 deletions
diff --git a/bundles/org.eclipse.wst.xml.ui/src-wizards/org/eclipse/wst/xml/ui/internal/wizards/NewXMLWizard.java b/bundles/org.eclipse.wst.xml.ui/src-wizards/org/eclipse/wst/xml/ui/internal/wizards/NewXMLWizard.java deleted file mode 100644 index bc77849fa8..0000000000 --- a/bundles/org.eclipse.wst.xml.ui/src-wizards/org/eclipse/wst/xml/ui/internal/wizards/NewXMLWizard.java +++ /dev/null @@ -1,967 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2001, 2008 IBM Corporation and others. - * 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: - * IBM Corporation - initial API and implementation - * David Schneider, david.schneider@unisys.com - [142500] WTP properties pages fonts don't follow Eclipse preferences - *******************************************************************************/ -package org.eclipse.wst.xml.ui.internal.wizards; - -import java.io.File; -import java.lang.reflect.InvocationTargetException; -import java.util.Arrays; -import java.util.List; -import java.util.Vector; - -import org.eclipse.core.resources.IFile; -import org.eclipse.core.resources.IResource; -import org.eclipse.core.runtime.CoreException; -import org.eclipse.core.runtime.IPath; -import org.eclipse.core.runtime.IProgressMonitor; -import org.eclipse.core.runtime.Path; -import org.eclipse.core.runtime.Preferences; -import org.eclipse.jface.dialogs.Dialog; -import org.eclipse.jface.dialogs.MessageDialog; -import org.eclipse.jface.operation.IRunnableWithProgress; -import org.eclipse.jface.resource.ImageDescriptor; -import org.eclipse.jface.util.Assert; -import org.eclipse.jface.viewers.IStructuredSelection; -import org.eclipse.jface.wizard.IWizardPage; -import org.eclipse.jface.wizard.WizardDialog; -import org.eclipse.jface.wizard.WizardPage; -import org.eclipse.swt.SWT; -import org.eclipse.swt.events.ModifyEvent; -import org.eclipse.swt.events.ModifyListener; -import org.eclipse.swt.events.SelectionAdapter; -import org.eclipse.swt.events.SelectionEvent; -import org.eclipse.swt.events.SelectionListener; -import org.eclipse.swt.layout.GridData; -import org.eclipse.swt.layout.GridLayout; -import org.eclipse.swt.widgets.Button; -import org.eclipse.swt.widgets.Combo; -import org.eclipse.swt.widgets.Composite; -import org.eclipse.swt.widgets.Display; -import org.eclipse.swt.widgets.Event; -import org.eclipse.swt.widgets.Group; -import org.eclipse.swt.widgets.Label; -import org.eclipse.swt.widgets.Listener; -import org.eclipse.swt.widgets.Shell; -import org.eclipse.swt.widgets.Text; -import org.eclipse.ui.IEditorDescriptor; -import org.eclipse.ui.IWorkbenchPage; -import org.eclipse.ui.IWorkbenchWindow; -import org.eclipse.ui.PartInitException; -import org.eclipse.ui.PlatformUI; -import org.eclipse.ui.part.FileEditorInput; -import org.eclipse.ui.part.PageBook; -import org.eclipse.ui.wizards.newresource.BasicNewResourceWizard; -import org.eclipse.wst.common.uriresolver.internal.util.URIHelper; -import org.eclipse.wst.xml.core.internal.XMLCorePlugin; -import org.eclipse.wst.xml.core.internal.catalog.provisional.ICatalogEntry; -import org.eclipse.wst.xml.core.internal.contentmodel.CMDocument; -import org.eclipse.wst.xml.core.internal.contentmodel.CMElementDeclaration; -import org.eclipse.wst.xml.core.internal.contentmodel.CMNamedNodeMap; -import org.eclipse.wst.xml.core.internal.contentmodel.util.DOMContentBuilder; -import org.eclipse.wst.xml.core.internal.contentmodel.util.NamespaceInfo; -import org.eclipse.wst.xml.core.internal.preferences.XMLCorePreferenceNames; -import org.eclipse.wst.xml.ui.internal.Logger; -import org.eclipse.wst.xml.ui.internal.dialogs.NamespaceInfoErrorHelper; -import org.eclipse.wst.xml.ui.internal.dialogs.SelectFileOrXMLCatalogIdPanel; -import org.eclipse.wst.xml.ui.internal.editor.XMLEditorPluginImageHelper; -import org.eclipse.wst.xml.ui.internal.editor.XMLEditorPluginImages; -import org.eclipse.wst.xml.ui.internal.nsedit.CommonEditNamespacesDialog; - -import com.ibm.icu.text.Collator; - -public class NewXMLWizard extends NewModelWizard { - protected static final int CREATE_FROM_DTD = 0; - protected static final int CREATE_FROM_XSD = 1; - protected static final int CREATE_FROM_SCRATCH = 2; - - protected static final String[] createFromRadioButtonLabel = {XMLWizardsMessages._UI_RADIO_XML_FROM_DTD, XMLWizardsMessages._UI_RADIO_XML_FROM_SCHEMA, XMLWizardsMessages._UI_RADIO_XML_FROM_SCRATCH}; - - protected static final String[] filePageFilterExtensions = {".xml"}; //$NON-NLS-1$ - protected static final String[] browseXSDFilterExtensions = {".xsd"}; //$NON-NLS-1$ - protected static final String[] browseDTDFilterExtensions = {".dtd"}; //$NON-NLS-1$ - - protected static final int OPTIONAL_ELEMENT_DEPTH_LIMIT_DEFAULT_VALUE = 2; - - protected static final long XML_EDITOR_FILE_SIZE_LIMIT = 26214400; // 25 mb - - protected NewFilePage newFilePage; - /** - * @deprecated clients should not be allowed to change start page - */ - protected StartPage startPage; - private StartPage fCreateXMLFromWizardPage; - protected SelectGrammarFilePage selectGrammarFilePage; - protected SelectRootElementPage selectRootElementPage; - - protected String cmDocumentErrorMessage; - - protected NewXMLGenerator generator; - private NewXMLTemplatesWizardPage fNewXMLTemplatesWizardPage; - - - public NewXMLWizard() { - setWindowTitle(XMLWizardsMessages._UI_WIZARD_CREATE_NEW_TITLE); - ImageDescriptor descriptor = XMLEditorPluginImageHelper.getInstance().getImageDescriptor(XMLEditorPluginImages.IMG_WIZBAN_GENERATEXML); - setDefaultPageImageDescriptor(descriptor); - generator = new NewXMLGenerator(); - } - - - public NewXMLWizard(IFile file, CMDocument cmDocument) { - this(); - - generator.setGrammarURI(URIHelper.getPlatformURI(file)); - generator.setCMDocument(cmDocument); - } - - - public static void showDialog(Shell shell, IFile file, IStructuredSelection structuredSelection) { - String[] errorInfo = new String[2]; - // (cs) the URI argument to createCMDocument needs to be a fully - // qualified URI - // - CMDocument cmDocument = NewXMLGenerator.createCMDocument(URIHelper.getPlatformURI(file), errorInfo); - if (errorInfo[0] == null) { - NewXMLWizard wizard = new NewXMLWizard(file, cmDocument); - wizard.init(PlatformUI.getWorkbench(), structuredSelection); - wizard.setNeedsProgressMonitor(true); - WizardDialog dialog = new WizardDialog(shell, wizard); - dialog.create(); - dialog.getShell().setText(XMLWizardsMessages._UI_DIALOG_NEW_TITLE); - dialog.setBlockOnOpen(true); - dialog.open(); - } - else { - MessageDialog.openInformation(shell, errorInfo[0], errorInfo[1]); - } - } - - public void addPages() { - String grammarURI = generator.getGrammarURI(); - - // new file page - newFilePage = new NewFilePage(fSelection); - newFilePage.setTitle(XMLWizardsMessages._UI_WIZARD_CREATE_XML_FILE_HEADING); - newFilePage.setDescription(XMLWizardsMessages._UI_WIZARD_CREATE_XML_FILE_EXPL); - newFilePage.defaultName = (grammarURI != null) ? URIHelper.removeFileExtension(URIHelper.getLastSegment(grammarURI)) : "NewFile"; //$NON-NLS-1$ - Preferences preference = XMLCorePlugin.getDefault().getPluginPreferences(); - String ext = preference.getString(XMLCorePreferenceNames.DEFAULT_EXTENSION); - newFilePage.defaultFileExtension = "." + ext; //$NON-NLS-1$ - newFilePage.filterExtensions = filePageFilterExtensions; - addPage(newFilePage); - - if (grammarURI == null) { - // create xml from page - fCreateXMLFromWizardPage = new StartPage("StartPage", createFromRadioButtonLabel) //$NON-NLS-1$ - { - public void createControl(Composite parent) { - super.createControl(parent); - } - - public void setVisible(boolean visible) { - super.setVisible(visible); - getRadioButtonAtIndex(getCreateMode()).setSelection(true); - getRadioButtonAtIndex(getCreateMode()).setFocus(); - - // Set the help context for each button - PlatformUI.getWorkbench().getHelpSystem().setHelp(fCreateXMLFromWizardPage.getRadioButtonAtIndex(0), IXMLWizardHelpContextIds.XML_NEWWIZARD_CREATEXML1_HELPID); - PlatformUI.getWorkbench().getHelpSystem().setHelp(fCreateXMLFromWizardPage.getRadioButtonAtIndex(1), IXMLWizardHelpContextIds.XML_NEWWIZARD_CREATEXML2_HELPID); - PlatformUI.getWorkbench().getHelpSystem().setHelp(fCreateXMLFromWizardPage.getRadioButtonAtIndex(2), IXMLWizardHelpContextIds.XML_NEWWIZARD_CREATEXML3_HELPID); - } - }; - - - fCreateXMLFromWizardPage.setTitle(XMLWizardsMessages._UI_WIZARD_CREATE_XML_HEADING); - fCreateXMLFromWizardPage.setDescription(XMLWizardsMessages._UI_WIZARD_CREATE_XML_EXPL); - addPage(fCreateXMLFromWizardPage); - } - - // selectGrammarFilePage - selectGrammarFilePage = new SelectGrammarFilePage(); - addPage(selectGrammarFilePage); - - // select root element page - selectRootElementPage = new SelectRootElementPage(); - selectRootElementPage.setTitle(XMLWizardsMessages._UI_WIZARD_SELECT_ROOT_HEADING); - selectRootElementPage.setDescription(XMLWizardsMessages._UI_WIZARD_SELECT_ROOT_EXPL); - addPage(selectRootElementPage); - - // from "scratch" - fNewXMLTemplatesWizardPage = new NewXMLTemplatesWizardPage(); - addPage(fNewXMLTemplatesWizardPage); - } - - - public IWizardPage getStartingPage() { - WizardPage result = null; - if (startPage != null) { - result = startPage; - } - else { - result = newFilePage; - } - return result; - } - - - public int getCreateMode() { - String grammarURI = generator.getGrammarURI(); - - int result = CREATE_FROM_SCRATCH; - if (grammarURI != null) { - if (grammarURI.endsWith(".dtd")) //$NON-NLS-1$ - { - result = CREATE_FROM_DTD; - } - else if (grammarURI.endsWith(".xsd")) //$NON-NLS-1$ - { - result = CREATE_FROM_XSD; - } - } - else if (fCreateXMLFromWizardPage != null) { - int selectedIndex = fCreateXMLFromWizardPage.getSelectedRadioButtonIndex(); - if (selectedIndex != -1) { - result = selectedIndex; - } - } - return result; - } - - - public IWizardPage getNextPage(IWizardPage currentPage) { - WizardPage nextPage = null; - if (currentPage == startPage) { - nextPage = newFilePage; - } - else if (currentPage == newFilePage) { - if (generator.getGrammarURI() == null) - nextPage = fCreateXMLFromWizardPage; - else - nextPage = selectRootElementPage; - } - else if (currentPage == fCreateXMLFromWizardPage) { - if (getCreateMode() == CREATE_FROM_SCRATCH) { - nextPage = fNewXMLTemplatesWizardPage; - } - else if (generator.getGrammarURI() == null) { - nextPage = selectGrammarFilePage; - } - else { - nextPage = selectRootElementPage; - } - } - else if (currentPage == selectGrammarFilePage) { - nextPage = selectRootElementPage; - } - return nextPage; - } - - - public boolean canFinish() { - boolean result = false; - - IWizardPage currentPage = getContainer().getCurrentPage(); - // can finish on: new file page, create from & template page if creating from scratch, select root element page - if ((currentPage == newFilePage && generator.getGrammarURI() == null) || (fCreateXMLFromWizardPage != null && fCreateXMLFromWizardPage.getSelectedRadioButtonIndex() == CREATE_FROM_SCRATCH) || (currentPage == selectRootElementPage)) { - result = currentPage.isPageComplete(); - } - return result; - } - - - public boolean performFinish() { - boolean result = super.performFinish(); - // save user options for next use - fNewXMLTemplatesWizardPage.saveLastSavedPreferences(); - - String fileName = null; - try { - - String[] namespaceErrors = generator.getNamespaceInfoErrors(); - if (namespaceErrors != null) { - String title = namespaceErrors[0]; - String message = namespaceErrors[1]; - result = MessageDialog.openQuestion(getShell(), title, message); - } - - if (result) { - fileName = newFilePage.getFileName(); - if ((new Path(fileName)).getFileExtension() == null) { - newFilePage.setFileName(fileName.concat(newFilePage.defaultFileExtension)); - } - - final IFile newFile = newFilePage.createNewFile(); - final String xmlFileName = newFile.getLocation().toOSString(); - final String grammarFileName = fileName; - - if (getContainer().getCurrentPage() == selectRootElementPage) { - - int limit = selectRootElementPage.getOptionalElementDepthLimit(); - generator.setOptionalElementDepthLimit(limit); - setNeedsProgressMonitor(true); - getContainer().run(true, false, new IRunnableWithProgress(){ - public void run(IProgressMonitor progressMonitor) throws InvocationTargetException, InterruptedException { - progressMonitor.beginTask(XMLWizardsMessages._UI_WIZARD_GENERATING_XML_DOCUMENT, IProgressMonitor.UNKNOWN); - try { - generator.createXMLDocument(newFile, xmlFileName); - } catch (Exception exception) { - Logger.logException("Exception completing New XML wizard " + grammarFileName, exception); //$NON-NLS-1$ - } - progressMonitor.done(); - } - }); - } - else { - // put template contents into file - String templateString = fNewXMLTemplatesWizardPage.getTemplateString(); - generator.createTemplateXMLDocument(newFile, templateString); - } - newFile.refreshLocal(IResource.DEPTH_ONE, null); - IWorkbenchWindow workbenchWindow = PlatformUI.getWorkbench().getActiveWorkbenchWindow(); - BasicNewResourceWizard.selectAndReveal(newFile, workbenchWindow); - openEditor(newFile); - } - } - catch (Exception e) { - Logger.logException("Exception completing New XML wizard " + fileName, e); //$NON-NLS-1$ - } - return result; - } - - public void openEditor(IFile file) { - long length = 0; - IPath location = file.getLocation(); - if (location != null) { - File localFile = location.toFile(); - length = localFile.length(); - } - if(length < XML_EDITOR_FILE_SIZE_LIMIT) { - // Open editor on new file. - String editorId = null; - try { - IEditorDescriptor editor = PlatformUI.getWorkbench().getEditorRegistry().getDefaultEditor(file.getLocation().toOSString(), file.getContentDescription().getContentType()); - if (editor != null) { - editorId = editor.getId(); - } - } - catch (CoreException e1) { - // editor id could not be retrieved, so we can not open editor - return; - } - IWorkbenchWindow dw = PlatformUI.getWorkbench().getActiveWorkbenchWindow(); - try { - if (dw != null) { - IWorkbenchPage page = dw.getActivePage(); - if (page != null) { - page.openEditor(new FileEditorInput(file), editorId, true); - } - } - } - catch (PartInitException e) { - // editor can not open for some reason - return; - } - } - } - - - protected String getDefaultSystemId() { - String relativePath = "platform:/resource/" + newFilePage.getContainerFullPath().toString() + "/dummy"; //$NON-NLS-1$ //$NON-NLS-2$ - return URIHelper.getRelativeURI(generator.getGrammarURI(), relativePath); - } - - - /** - * SelectGrammarFilePage - */ - class SelectGrammarFilePage extends WizardPage { - protected SelectFileOrXMLCatalogIdPanel panel; - - SelectGrammarFilePage() { - super("SelectGrammarFilePage"); //$NON-NLS-1$ - } - - public void createControl(Composite parent) { - Composite composite = new Composite(parent, SWT.NONE); - PlatformUI.getWorkbench().getHelpSystem().setHelp(composite, IXMLWizardHelpContextIds.XML_NEWWIZARD_SELECTSOURCE_HELPID); - composite.setLayout(new GridLayout()); - composite.setLayoutData(new GridData(GridData.FILL_BOTH)); - setControl(composite); - - panel = new SelectFileOrXMLCatalogIdPanel(composite); - panel.setLayoutData(new GridData(GridData.FILL_BOTH)); - - SelectFileOrXMLCatalogIdPanel.Listener listener = new SelectFileOrXMLCatalogIdPanel.Listener() { - public void completionStateChanged() { - updateErrorMessage(); - } - }; - panel.setListener(listener); - Dialog.applyDialogFont(parent); - } - - public void setVisible(boolean visible) { - super.setVisible(visible); - if (visible) { - if (getCreateMode() == CREATE_FROM_DTD) { - setTitle(XMLWizardsMessages._UI_WIZARD_SELECT_DTD_FILE_TITLE); - setDescription(XMLWizardsMessages._UI_WIZARD_SELECT_DTD_FILE_DESC); - panel.setFilterExtensions(browseDTDFilterExtensions); - } - else { - setTitle(XMLWizardsMessages._UI_WIZARD_SELECT_XSD_FILE_TITLE); - setDescription(XMLWizardsMessages._UI_WIZARD_SELECT_XSD_FILE_DESC); - panel.setFilterExtensions(browseXSDFilterExtensions); - } - generator.setGrammarURI(null); - generator.setCMDocument(null); - cmDocumentErrorMessage = null; - } - panel.setVisibleHelper(visible); - } - - public String getURI() { - String uri = panel.getXMLCatalogURI(); - if (uri == null) { - IFile file = panel.getFile(); - if (file != null) { - uri = URIHelper.getPlatformURI(file); - } - } - return uri; - } - - public boolean isPageComplete() { - return (getURI() != null) && (getErrorMessage() == null); - } - - public String getXMLCatalogId() { - return panel.getXMLCatalogId(); - } - - public ICatalogEntry getXMLCatalogEntry() { - return panel.getXMLCatalogEntry(); - } - - public String computeErrorMessage() { - String errorMessage = null; - String uri = getURI(); - if (uri != null) { - if (!URIHelper.isReadableURI(uri, false)) { - errorMessage = XMLWizardsMessages._UI_LABEL_ERROR_CATALOG_ENTRY_INVALID; - } - } - return errorMessage; - } - - - public void updateErrorMessage() { - String errorMessage = computeErrorMessage(); - setErrorMessage(errorMessage); - setPageComplete(isPageComplete()); - } - } - - - /** - * SelectRootElementPage - */ - class SelectRootElementPage extends WizardPage implements SelectionListener { - protected Combo combo; - protected Button[] radioButton; - protected PageBook pageBook; - protected XSDOptionsPanel xsdOptionsPanel; - protected DTDOptionsPanel dtdOptionsPanel; - protected Text limitOptionalElementDepthTextControl; - protected Button limitOptionalElementDepthCheckButtonControl; - - - - SelectRootElementPage() { - super("SelectRootElementPage"); //$NON-NLS-1$ - } - - public void createControl(Composite parent) { - // container group - Composite containerGroup = new Composite(parent, SWT.NONE); - PlatformUI.getWorkbench().getHelpSystem().setHelp(containerGroup, IXMLWizardHelpContextIds.XML_NEWWIZARD_SELECTROOTELEMENT_HELPID); - containerGroup.setLayout(new GridLayout()); - containerGroup.setLayoutData(new GridData(GridData.FILL_HORIZONTAL)); - setControl(containerGroup); - - // select root element - Label containerLabel = new Label(containerGroup, SWT.NONE); - containerLabel.setText(XMLWizardsMessages._UI_LABEL_ROOT_ELEMENT); - combo = new Combo(containerGroup, SWT.DROP_DOWN | SWT.READ_ONLY); - combo.setLayoutData(new GridData(GridData.FILL_HORIZONTAL)); - combo.addSelectionListener(this); - - // Options - { - Group group = new Group(containerGroup, SWT.NONE); - group.setText(XMLWizardsMessages._UI_WIZARD_CONTENT_OPTIONS); - - GridLayout layout = new GridLayout(); - layout.numColumns = 1; - layout.makeColumnsEqualWidth = true; - layout.marginWidth = 0; - group.setLayout(layout); - group.setLayoutData(new GridData(GridData.FILL_HORIZONTAL)); - - radioButton = new Button[4]; - - radioButton[0] = new Button(group, SWT.CHECK); - radioButton[0].setText(XMLWizardsMessages._UI_WIZARD_CREATE_OPTIONAL_ATTRIBUTES); - radioButton[0].setLayoutData(new GridData(GridData.FILL_HORIZONTAL)); - radioButton[0].setSelection(false); - PlatformUI.getWorkbench().getHelpSystem().setHelp(radioButton[0], IXMLWizardHelpContextIds.XML_NEWWIZARD_SELECTROOTELEMENT1_HELPID); - - radioButton[1] = new Button(group, SWT.CHECK); - radioButton[1].setText(XMLWizardsMessages._UI_WIZARD_CREATE_OPTIONAL_ELEMENTS); - radioButton[1].setLayoutData(new GridData(GridData.FILL_HORIZONTAL)); - radioButton[1].setSelection(false); - PlatformUI.getWorkbench().getHelpSystem().setHelp(radioButton[1], IXMLWizardHelpContextIds.XML_NEWWIZARD_SELECTROOTELEMENT2_HELPID); - - radioButton[1].addSelectionListener(new SelectionAdapter(){ - public void widgetSelected(SelectionEvent selectionEvent) { - boolean enabled = radioButton[1].getSelection(); - limitOptionalElementDepthCheckButtonControl.setEnabled(enabled); - enabled = enabled && limitOptionalElementDepthCheckButtonControl.getSelection(); - limitOptionalElementDepthTextControl.setEnabled(enabled); - } - }); - Composite composite = new Composite(group, SWT.NONE); - GridLayout gridLayout = new GridLayout(); - gridLayout.marginHeight = 0; - gridLayout.marginWidth = 0; - gridLayout.numColumns = 2; - gridLayout.marginLeft = 20; - composite.setLayout(gridLayout); - limitOptionalElementDepthCheckButtonControl = new Button(composite, SWT.CHECK); - limitOptionalElementDepthCheckButtonControl.setText(XMLWizardsMessages._UI_WIZARD_LIMIT_OPTIONAL_ELEMENT_DEPTH); - limitOptionalElementDepthCheckButtonControl.setEnabled(false); - limitOptionalElementDepthCheckButtonControl.setSelection(true); - limitOptionalElementDepthCheckButtonControl.addSelectionListener(new SelectionAdapter(){ - public void widgetSelected(SelectionEvent selectionEvent) { - boolean enabled = limitOptionalElementDepthCheckButtonControl.getSelection(); - limitOptionalElementDepthTextControl.setEnabled(enabled); - } - }); - limitOptionalElementDepthTextControl = new Text(composite, SWT.BORDER); - limitOptionalElementDepthTextControl.setText(Integer.toString(OPTIONAL_ELEMENT_DEPTH_LIMIT_DEFAULT_VALUE)); - limitOptionalElementDepthTextControl.setEnabled(false); - GridData gridaData = new GridData(); - gridaData.widthHint = 25; - limitOptionalElementDepthTextControl.setLayoutData(gridaData); - limitOptionalElementDepthTextControl.addListener(SWT.Verify, new Listener() { - public void handleEvent(Event event) { - String string = event.text; - char[] chars = new char[string.length()]; - string.getChars(0, chars.length, chars, 0); - for (int i = 0; i < chars.length; i++) { - if (!('0' <= chars[i] && chars[i] <= '9')) { - event.doit = false; - return; - } - } - } - }); - - radioButton[2] = new Button(group, SWT.CHECK); - radioButton[2].setText(XMLWizardsMessages._UI_WIZARD_CREATE_FIRST_CHOICE); - radioButton[2].setLayoutData(new GridData(GridData.FILL_HORIZONTAL)); - radioButton[2].setSelection(true); - PlatformUI.getWorkbench().getHelpSystem().setHelp(radioButton[2], IXMLWizardHelpContextIds.XML_NEWWIZARD_SELECTROOTELEMENT3_HELPID); - - radioButton[3] = new Button(group, SWT.CHECK); - radioButton[3].setText(XMLWizardsMessages._UI_WIZARD_FILL_ELEMENTS_AND_ATTRIBUTES); - radioButton[3].setLayoutData(new GridData(GridData.FILL_HORIZONTAL)); - radioButton[3].setSelection(true); - PlatformUI.getWorkbench().getHelpSystem().setHelp(radioButton[3], IXMLWizardHelpContextIds.XML_NEWWIZARD_SELECTROOTELEMENT4_HELPID); - /* - * radioButton = new Button[2]; - * - * radioButton[0] = new Button(group, SWT.RADIO); - * radioButton[0].setText(XMLWizardsMessages.getString("_UI_WIZARD_CREATE_REQUIRED")); - * radioButton[0].setLayoutData(new - * GridData(GridData.FILL_HORIZONTAL)); - * radioButton[0].setSelection(true); - * WorkbenchHelp.setHelp(radioButton[0], - * XMLBuilderContextIds.XMLC_CREATE_REQUIRED_ONLY); - * - * radioButton[1] = new Button(group, SWT.RADIO); - * radioButton[1].setText(XMLWizardsMessages.getString("_UI_WIZARD_CREATE_OPTIONAL")); - * radioButton[1].setLayoutData(new - * GridData(GridData.FILL_HORIZONTAL)); - * WorkbenchHelp.setHelp(radioButton[1], - * XMLBuilderContextIds.XMLC_CREATE_REQUIRED_AND_OPTION); - */ - } - - // add the grammar specific generation options - // - { - pageBook = new PageBook(containerGroup, SWT.NONE); - pageBook.setLayoutData(new GridData(GridData.FILL_BOTH)); - xsdOptionsPanel = new XSDOptionsPanel(this, pageBook); - dtdOptionsPanel = new DTDOptionsPanel(this, pageBook); - pageBook.showPage(xsdOptionsPanel); - } - } - - public void widgetSelected(SelectionEvent event) { - int index = combo.getSelectionIndex(); - String rootElementName = (index != -1) ? combo.getItem(index) : null; - generator.setRootElementName(rootElementName); - } - - public void widgetDefaultSelected(SelectionEvent event) { - // do nothing - } - - public void setVisible(boolean visible) { - super.setVisible(visible); - - if (visible) { - try { - if (generator.getGrammarURI() == null) { - generator.setGrammarURI(selectGrammarFilePage.getURI()); - generator.setXMLCatalogEntry(selectGrammarFilePage.getXMLCatalogEntry()); - } - Assert.isNotNull(generator.getGrammarURI()); - - if (generator.getCMDocument() == null) { - final String[] errorInfo = new String[2]; - final CMDocument[] cmdocs = new CMDocument[1]; - Runnable r = new Runnable() { - public void run() { - cmdocs[0] = NewXMLGenerator.createCMDocument(generator.getGrammarURI(), errorInfo); - } - }; - org.eclipse.swt.custom.BusyIndicator.showWhile(Display.getCurrent(), r); - - generator.setCMDocument(cmdocs[0]); - cmDocumentErrorMessage = errorInfo[1]; - } - - combo.removeAll(); - if ((generator.getCMDocument() != null) && (cmDocumentErrorMessage == null)) { - CMNamedNodeMap nameNodeMap = generator.getCMDocument().getElements(); - Vector nameNodeVector = new Vector(); - - for (int i = 0; i < nameNodeMap.getLength(); i++) { - CMElementDeclaration cmElementDeclaration = (CMElementDeclaration) nameNodeMap.item(i); - Object value = cmElementDeclaration.getProperty("Abstract"); //$NON-NLS-1$ - if (value != Boolean.TRUE) { - nameNodeVector.add(cmElementDeclaration.getElementName()); - } - } - - Object[] nameNodeArray = nameNodeVector.toArray(); - if (nameNodeArray.length > 0) { - Arrays.sort(nameNodeArray, Collator.getInstance()); - } - - String defaultRootName = (String) (generator.getCMDocument()).getProperty("http://org.eclipse.wst/cm/properties/defaultRootName"); //$NON-NLS-1$ - int defaultRootIndex = -1; - for (int i = 0; i < nameNodeArray.length; i++) { - String elementName = (String) nameNodeArray[i]; - - combo.add(elementName); - if ((defaultRootName != null) && defaultRootName.equals(elementName)) { - defaultRootIndex = i; - } - } - - if (nameNodeArray.length > 0) { - defaultRootIndex = defaultRootIndex != -1 ? defaultRootIndex : 0; - combo.select(defaultRootIndex); - generator.setRootElementName(combo.getItem(defaultRootIndex)); - } - } - - if (generator.getGrammarURI().endsWith("xsd")) //$NON-NLS-1$ - { - pageBook.showPage(xsdOptionsPanel); - generator.setDefaultSystemId(getDefaultSystemId()); - generator.createNamespaceInfoList(); - - // Provide default namespace prefix if none - for (int i = 0; i < generator.namespaceInfoList.size(); i++) { - NamespaceInfo nsinfo = (NamespaceInfo) generator.namespaceInfoList.get(i); - if (((nsinfo.prefix == null) || (nsinfo.prefix.trim().length() == 0)) && ((nsinfo.uri != null) && (nsinfo.uri.trim().length() != 0))) { - nsinfo.prefix = getDefaultPrefix(generator.namespaceInfoList); - } - } - xsdOptionsPanel.setNamespaceInfoList(generator.namespaceInfoList); - } - else if (generator.getGrammarURI().endsWith("dtd")) //$NON-NLS-1$ - { - pageBook.showPage(dtdOptionsPanel); - dtdOptionsPanel.update(); - } - } - catch (Exception e) { - // XMLBuilderPlugin.getPlugin().getMsgLogger().writeCurrentThread(); - } - - /* - * String errorMessage = computeErrorMessage(); if - * (errorMessage == null) super.setVisible(visible); - */ - - updateErrorMessage(); - } - } - - private String getDefaultPrefix(List nsInfoList) { - String defaultPrefix = "p"; //$NON-NLS-1$ - if (nsInfoList == null) { - return defaultPrefix; - } - - Vector v = new Vector(); - for (int i = 0; i < nsInfoList.size(); i++) { - NamespaceInfo nsinfo = (NamespaceInfo) nsInfoList.get(i); - if (nsinfo.prefix != null) { - v.addElement(nsinfo.prefix); - } - } - - if (v.contains(defaultPrefix)) { - String s = defaultPrefix; - for (int j = 0; v.contains(s); j++) { - s = defaultPrefix + Integer.toString(j); - } - return s; - } - return defaultPrefix; - } - - public int getOptionalElementDepthLimit() { - int depth = -1; - if(radioButton[1].getSelection() && limitOptionalElementDepthCheckButtonControl.getSelection()) { - try { - depth = Integer.parseInt(limitOptionalElementDepthTextControl.getText()); - } catch( Exception exception) {} - } - return depth; - } - - public boolean isPageComplete() { - boolean complete = ((generator.getRootElementName() != null) && (generator.getRootElementName().length() > 0)) && (getErrorMessage() == null); - - if (complete) { - /* - * int buildPolicy = radioButton[0].getSelection() ? - * DOMContentBuilder.BUILD_ONLY_REQUIRED_CONTENT : - * DOMContentBuilder.BUILD_ALL_CONTENT; - */ - int buildPolicy = 0; - if (radioButton[0].getSelection()) { - buildPolicy = buildPolicy | DOMContentBuilder.BUILD_OPTIONAL_ATTRIBUTES; - } - if (radioButton[1].getSelection()) { - buildPolicy = buildPolicy | DOMContentBuilder.BUILD_OPTIONAL_ELEMENTS; - } - if (radioButton[2].getSelection()) { - buildPolicy = buildPolicy | DOMContentBuilder.BUILD_FIRST_CHOICE | DOMContentBuilder.BUILD_FIRST_SUBSTITUTION; - } - if (radioButton[3].getSelection()) { - buildPolicy = buildPolicy | DOMContentBuilder.BUILD_TEXT_NODES; - } - - generator.setBuildPolicy(buildPolicy); - } - - return complete; - } - - public String computeErrorMessage() { - String errorMessage = null; - - if (cmDocumentErrorMessage != null) { - errorMessage = cmDocumentErrorMessage; - } - else if ((generator.getRootElementName() == null) || (generator.getRootElementName().length() == 0)) { - errorMessage = XMLWizardsMessages._ERROR_ROOT_ELEMENT_MUST_BE_SPECIFIED; - } - - return errorMessage; - } - - - public void updateErrorMessage() { - String errorMessage = computeErrorMessage(); - if (errorMessage == null) { - if (xsdOptionsPanel.isVisible()) { - - errorMessage = xsdOptionsPanel.computeErrorMessage(); - } - else if (dtdOptionsPanel.isVisible()) { - errorMessage = dtdOptionsPanel.computeErrorMessage(); - } - } - setErrorMessage(errorMessage); - setPageComplete(isPageComplete()); - } - } - - // //////////////End SelectRootElementPage - - - - public static GridLayout createOptionsPanelLayout() { - GridLayout gridLayout = new GridLayout(); - gridLayout.marginWidth = 0; - gridLayout.horizontalSpacing = 0; - return gridLayout; - } - - - - /** - * - */ - class XSDOptionsPanel extends Composite { - protected String errorMessage = null; - protected SelectRootElementPage parentPage; - protected CommonEditNamespacesDialog editNamespaces; - private IPath currentPath = null; - - public XSDOptionsPanel(SelectRootElementPage parentPage, Composite parent) { - super(parent, SWT.NONE); - this.parentPage = parentPage; - - setLayout(createOptionsPanelLayout()); - setLayoutData(new GridData(GridData.FILL_BOTH)); - } - - private CommonEditNamespacesDialog getEditNamespaces() { - if (editNamespaces == null) { - Composite co = new Composite(this, SWT.NONE); - co.setLayout(new GridLayout()); - String tableTitle = XMLWizardsMessages._UI_LABEL_NAMESPACE_INFORMATION; - editNamespaces = new CommonEditNamespacesDialog(co, null, tableTitle, true, true); - this.layout(); - } - return editNamespaces; - } - - public void setNamespaceInfoList(List list) { - CommonEditNamespacesDialog editDialog = getEditNamespaces(); - - if (newFilePage != null) { - IPath newPath = newFilePage.getContainerFullPath(); - if (newPath != null) { - if (!newPath.equals(currentPath)) { - String resourceURI = "platform:/resource" + newPath.toString() + "/dummy"; //$NON-NLS-1$ //$NON-NLS-2$ - String resolvedPath = URIHelper.normalize(resourceURI, null, null); - resolvedPath = URIHelper.removeProtocol(resolvedPath); - - currentPath = new Path(resolvedPath); - editDialog.setResourcePath(currentPath); - } - } - } - editDialog.setNamespaceInfoList(list); - editDialog.updateErrorMessage(list); - } - - public void updateErrorMessage(List namespaceInfoList) { - NamespaceInfoErrorHelper helper = new NamespaceInfoErrorHelper(); - errorMessage = helper.computeErrorMessage(namespaceInfoList, null); - parentPage.updateErrorMessage(); - } - - - public String computeErrorMessage() { - return errorMessage; - } - } - - - /** - * - */ - public class DTDOptionsPanel extends Composite implements ModifyListener { - protected Group group; - protected Text systemIdField; - protected Text publicIdField; - protected SelectRootElementPage parentPage; - - public DTDOptionsPanel(SelectRootElementPage parentPage, Composite parent) { - super(parent, SWT.NONE); - this.parentPage = parentPage; - setLayoutData(new GridData(GridData.FILL_HORIZONTAL)); - - setLayout(createOptionsPanelLayout()); - Group group = new Group(this, SWT.NONE); - group.setText(XMLWizardsMessages._UI_LABEL_DOCTYPE_INFORMATION); - - GridLayout layout = new GridLayout(); - layout.numColumns = 2; - group.setLayout(layout); - group.setLayoutData(new GridData(GridData.FILL_HORIZONTAL)); - - Label publicIdLabel = new Label(group, SWT.NONE); - publicIdLabel.setText(XMLWizardsMessages._UI_LABEL_PUBLIC_ID); - publicIdField = new Text(group, SWT.SINGLE | SWT.BORDER); - publicIdField.setLayoutData(new GridData(GridData.FILL_HORIZONTAL)); - publicIdField.addModifyListener(this); - PlatformUI.getWorkbench().getHelpSystem().setHelp(publicIdField, IXMLWizardHelpContextIds.XML_NEWWIZARD_SELECTROOTELEMENT5_HELPID); - - Label systemIdLabel = new Label(group, SWT.NONE); - systemIdLabel.setText(XMLWizardsMessages._UI_LABEL_SYSTEM_ID); - systemIdField = new Text(group, SWT.SINGLE | SWT.BORDER); - systemIdField.setLayoutData(new GridData(GridData.FILL_HORIZONTAL)); - systemIdField.addModifyListener(this); - PlatformUI.getWorkbench().getHelpSystem().setHelp(systemIdField, IXMLWizardHelpContextIds.XML_NEWWIZARD_SELECTROOTELEMENT6_HELPID); - } - - public void update() { - String thePublicId = null; - String theSystemId = null; - ICatalogEntry xmlCatalogEntry = generator.getXMLCatalogEntry(); - - if (xmlCatalogEntry != null) { - if (xmlCatalogEntry.getEntryType() == ICatalogEntry.ENTRY_TYPE_PUBLIC) { - thePublicId = xmlCatalogEntry.getKey(); - theSystemId = xmlCatalogEntry.getAttributeValue(ICatalogEntry.ATTR_WEB_URL); - if (theSystemId == null) { - theSystemId = generator.getGrammarURI().startsWith("http:") ? generator.getGrammarURI() : URIHelper.getLastSegment(generator.getGrammarURI()); //$NON-NLS-1$ - } - } - else { - theSystemId = xmlCatalogEntry.getKey(); - } - } - else { - theSystemId = getDefaultSystemId(); - } - - publicIdField.setText(thePublicId != null ? thePublicId : ""); //$NON-NLS-1$ - systemIdField.setText(theSystemId != null ? theSystemId : ""); //$NON-NLS-1$ - } - - public void modifyText(ModifyEvent e) { - generator.setSystemId(systemIdField.getText()); - generator.setPublicId(publicIdField.getText()); - parentPage.updateErrorMessage(); - } - - public String computeErrorMessage() { - return null; - } - } - - -} |