| /******************************************************************************* |
| * Copyright (c) 2010 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 |
| *******************************************************************************/ |
| package org.eclipse.wst.xsd.ui.internal.common.properties.sections; |
| |
| import org.eclipse.jface.dialogs.Dialog; |
| import org.eclipse.swt.custom.CCombo; |
| import org.eclipse.swt.custom.CLabel; |
| import org.eclipse.swt.events.SelectionEvent; |
| import org.eclipse.swt.layout.GridLayout; |
| import org.eclipse.swt.widgets.Composite; |
| import org.eclipse.ui.IWorkbenchPart; |
| import org.eclipse.wst.xsd.ui.internal.common.commands.UpdateAttributeValueCommand; |
| import org.eclipse.wst.xsd.ui.internal.common.util.Messages; |
| import org.eclipse.wst.xsd.ui.internal.common.util.XSDCommonUIUtils; |
| import org.eclipse.wst.xsd.ui.internal.editor.XSDEditorCSHelpIds; |
| import org.eclipse.xsd.XSDForm; |
| import org.eclipse.xsd.util.XSDConstants; |
| |
| public class XSDSchemaAdvancedSection extends AbstractSection |
| { |
| IWorkbenchPart part; |
| protected CLabel elementFormLabel, attributeFormLabel, blockDefaultLabel, finalDefaultLabel; |
| protected CCombo elementFormCombo, attributeFormCombo, blockDefaultCombo, finalDefaultCombo; |
| |
| protected static final String emptyOption = ""; //$NON-NLS-1$ |
| |
| protected static final String [] formQualification = { emptyOption, XSDForm.QUALIFIED_LITERAL.getLiteral(), |
| XSDForm.UNQUALIFIED_LITERAL.getLiteral() }; //$NON-NLS-1$ |
| |
| |
| protected static final String derivedByChoicesComboValues[] = { "", XSDConstants.RESTRICTION_ELEMENT_TAG, //$NON-NLS-1$ |
| XSDConstants.EXTENSION_ELEMENT_TAG }; |
| |
| protected static final String blockDefaultValues[] = { emptyOption, "#" + XSDConstants.ALL_ELEMENT_TAG, //$NON-NLS-1$ |
| XSDConstants.EXTENSION_ELEMENT_TAG, XSDConstants.RESTRICTION_ELEMENT_TAG, |
| "substitution"}; |
| |
| protected static final String finalDefaultValues[] = { emptyOption, "#" + XSDConstants.ALL_ELEMENT_TAG, //$NON-NLS-1$ |
| XSDConstants.EXTENSION_ELEMENT_TAG, XSDConstants.RESTRICTION_ELEMENT_TAG, |
| XSDConstants.LIST_ELEMENT_TAG, XSDConstants.UNION_ELEMENT_TAG}; |
| |
| public XSDSchemaAdvancedSection() |
| { |
| super(); |
| } |
| |
| /** |
| * @see org.eclipse.wst.common.ui.properties.internal.provisional.ITabbedPropertySection#createControls(org.eclipse.swt.widgets.Composite, |
| * org.eclipse.wst.common.ui.properties.internal.provisional.TabbedPropertySheetWidgetFactory) |
| */ |
| public void createContents(Composite parent) |
| { |
| composite = getWidgetFactory().createFlatFormComposite(parent); |
| |
| GridLayout gridLayout = new GridLayout(); |
| gridLayout.marginTop = 0; |
| gridLayout.marginBottom = 0; |
| gridLayout.numColumns = 2; |
| composite.setLayout(gridLayout); |
| |
| // Create elementFormDefault label and combo |
| elementFormLabel = XSDCommonUIUtils.getNewPropertiesLabel(composite,getWidgetFactory(), |
| Messages._UI_LABEL_ELEMENTFORMDEFAULT); |
| elementFormCombo = XSDCommonUIUtils.getNewPropertiesCombo(composite,getWidgetFactory(),this, |
| formQualification,XSDEditorCSHelpIds.ADVANCE_TAB__SCHEMA_ELEMENT_FORM_DEFAULT); |
| |
| // Create attributeFormDefault label and combo |
| attributeFormLabel = XSDCommonUIUtils.getNewPropertiesLabel(composite,getWidgetFactory(), |
| Messages._UI_LABEL_ATTRIBUTEFORMDEFAULT); |
| attributeFormCombo = XSDCommonUIUtils.getNewPropertiesCombo(composite,getWidgetFactory(),this, |
| formQualification,XSDEditorCSHelpIds.ADVANCE_TAB__SCHEMA_ATTRIBUTE_FORM_DEFAULT); |
| |
| // Create blockDefault label and combo |
| blockDefaultLabel = XSDCommonUIUtils.getNewPropertiesLabel(composite,getWidgetFactory(), |
| Messages._UI_LABEL_BLOCKDEFAULT); |
| blockDefaultCombo = XSDCommonUIUtils.getNewPropertiesCombo(composite,getWidgetFactory(),this, |
| blockDefaultValues,XSDEditorCSHelpIds.ADVANCE_TAB__SCHEMA_BLOCK_DEFAULT); |
| |
| // Create finalDefault label and combo |
| finalDefaultLabel = XSDCommonUIUtils.getNewPropertiesLabel(composite,getWidgetFactory(), |
| Messages._UI_LABEL_FINALDEFAULT); |
| finalDefaultCombo = XSDCommonUIUtils.getNewPropertiesCombo(composite,getWidgetFactory(),this, |
| finalDefaultValues,XSDEditorCSHelpIds.ADVANCE_TAB__SCHEMA_FINAL_DEFAULT); |
| |
| Dialog.applyDialogFont(parent); |
| } |
| |
| /* |
| * @see org.eclipse.wst.common.ui.properties.internal.provisional.view.ITabbedPropertySection#refresh() |
| */ |
| public void refresh() |
| { |
| super.refresh(); |
| setListenerEnabled(false); |
| |
| if (xsdSchema != null) |
| { |
| if (elementFormCombo != null) |
| { |
| String text; |
| if (xsdSchema.getElement().hasAttribute(XSDConstants.ELEMENTFORMDEFAULT_ATTRIBUTE)) |
| { |
| text = xsdSchema.getElementFormDefault().getName(); |
| } |
| else |
| { |
| text = emptyOption; |
| } |
| elementFormCombo.setText(text); |
| } |
| |
| if (attributeFormCombo != null) |
| { |
| String text; |
| if (xsdSchema.getElement().hasAttribute(XSDConstants.ATTRIBUTEFORMDEFAULT_ATTRIBUTE)) |
| { |
| text = xsdSchema.getAttributeFormDefault().getName(); |
| } |
| else |
| { |
| text = emptyOption; |
| } |
| attributeFormCombo.setText(text); |
| } |
| |
| if (blockDefaultCombo != null) |
| { |
| String text; |
| if (xsdSchema.getElement().hasAttribute(XSDConstants.BLOCKDEFAULT_ATTRIBUTE)) |
| { |
| text = xsdSchema.getElement().getAttribute(XSDConstants.BLOCKDEFAULT_ATTRIBUTE); |
| } |
| else |
| { |
| text = emptyOption; |
| } |
| blockDefaultCombo.setText(text); |
| } |
| |
| if (finalDefaultCombo != null) |
| { |
| String text; |
| if (xsdSchema.getElement().hasAttribute(XSDConstants.FINALDEFAULT_ATTRIBUTE)) |
| { |
| text = xsdSchema.getElement().getAttribute(XSDConstants.FINALDEFAULT_ATTRIBUTE); |
| } |
| else |
| { |
| text = emptyOption; |
| } |
| finalDefaultCombo.setText(text); |
| } |
| } |
| setListenerEnabled(true); |
| } |
| |
| public void doWidgetSelected(SelectionEvent e) |
| { |
| if (xsdSchema != null) |
| { |
| if (e.widget == elementFormCombo && elementFormCombo != null) |
| { |
| String valueElementForm = elementFormCombo.getText(); |
| UpdateAttributeValueCommand command = new UpdateAttributeValueCommand(xsdSchema.getElement(), |
| XSDConstants.ELEMENTFORMDEFAULT_ATTRIBUTE, valueElementForm, |
| Messages._UI_LABEL_ELEMENTFORMDEFAULT); |
| command.setDeleteIfEmpty(true); |
| getCommandStack().execute(command); |
| } |
| |
| if (e.widget == attributeFormCombo && attributeFormCombo != null) |
| { |
| String valueAttributeForm = attributeFormCombo.getText(); |
| UpdateAttributeValueCommand command = new UpdateAttributeValueCommand(xsdSchema.getElement(), |
| XSDConstants.ATTRIBUTEFORMDEFAULT_ATTRIBUTE, valueAttributeForm, |
| Messages._UI_LABEL_ATTRIBUTEFORMDEFAULT); |
| command.setDeleteIfEmpty(true); |
| getCommandStack().execute(command); |
| } |
| |
| if (e.widget == blockDefaultCombo && blockDefaultCombo != null) |
| { |
| String valueBlockDefault = blockDefaultCombo.getText(); |
| UpdateAttributeValueCommand command = new UpdateAttributeValueCommand(xsdSchema.getElement(), |
| XSDConstants.BLOCKDEFAULT_ATTRIBUTE, valueBlockDefault, Messages._UI_LABEL_BLOCKDEFAULT); |
| command.setDeleteIfEmpty(true); |
| getCommandStack().execute(command); |
| } |
| |
| if(e.widget == finalDefaultCombo && finalDefaultCombo != null) |
| { |
| String finalBlockDefault = finalDefaultCombo.getText(); |
| UpdateAttributeValueCommand command = new UpdateAttributeValueCommand(xsdSchema.getElement(), |
| XSDConstants.FINALDEFAULT_ATTRIBUTE, finalBlockDefault, Messages._UI_LABEL_FINALDEFAULT); |
| command.setDeleteIfEmpty(true); |
| getCommandStack().execute(command); |
| } |
| } |
| } |
| } |