/******************************************************************************* * Copyright (c) 2001, 2006 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 * Jens Lukowski/Innoopract - initial renaming/restructuring * *******************************************************************************/ package org.eclipse.wst.xml.ui.internal.nsedit; import org.eclipse.core.runtime.IPath; import org.eclipse.swt.SWT; import org.eclipse.swt.events.ModifyEvent; import org.eclipse.swt.events.ModifyListener; import org.eclipse.swt.layout.GridData; import org.eclipse.swt.widgets.Composite; import org.eclipse.swt.widgets.Label; import org.eclipse.swt.widgets.Text; import org.eclipse.wst.xml.core.internal.contentmodel.util.NamespaceInfo; import org.eclipse.wst.xml.ui.internal.XMLUIMessages; /* * This class is an extension of CommonEditNamespacesDialog. This class adds * the target namespaces dialog field. */ public class CommonEditNamespacesTargetFieldDialog extends CommonEditNamespacesDialog { class TargetNamespaceModifyListener implements ModifyListener { public void modifyText(ModifyEvent e) { String oldTargetNamespace = targetNamespace; targetNamespace = targetNamespaceField.getText(); updateTargetNamespaceAndNamespaceInfo(oldTargetNamespace, targetNamespace); } } protected String targetNamespace; protected Text targetNamespaceField; public CommonEditNamespacesTargetFieldDialog(Composite parent, IPath resourceLocation1) { super(parent, resourceLocation1, XMLUIMessages._UI_NAMESPACE_DECLARATIONS); Composite targetComp = getTopComposite(); targetComp.setLayoutData(new GridData(GridData.FILL_HORIZONTAL)); GridData gd = new GridData(GridData.FILL_BOTH); Label targetNamespaceLabel = new Label(targetComp, SWT.NONE); targetNamespaceLabel.setLayoutData(gd); targetNamespaceLabel.setText(XMLUIMessages._UI_TARGET_NAMESPACE); targetNamespaceField = new Text(targetComp, SWT.BORDER); targetNamespaceField.setLayoutData(new GridData(GridData.FILL_HORIZONTAL)); targetNamespaceField.addModifyListener(new TargetNamespaceModifyListener()); // createControlArea(); } public String getTargetNamespace() { return targetNamespace; } public void performEdit() { Object selection = getSelection(tableViewer.getSelection()); if (selection != null) { boolean editTargetNamespace = false; NamespaceInfo nsInfo = (NamespaceInfo) selection; if (getTargetNamespace().equals(nsInfo.uri)) { editTargetNamespace = true; } invokeDialog(XMLUIMessages._UI_LABEL_NEW_NAMESPACE_INFORMATION, nsInfo); updateErrorMessage(namespaceInfoList); performDelayedUpdate(); if (editTargetNamespace) { targetNamespaceField.setText(nsInfo.uri); } } } public void setTargetNamespace(String theTargetNamespace) { targetNamespace = theTargetNamespace != null ? theTargetNamespace : ""; //$NON-NLS-1$ targetNamespaceField.setText(targetNamespace); // updateTargetNamespaceAndNamespaceInfo(targetNamespace); } void updateTargetNamespaceAndNamespaceInfo(String oldTargetNamespace, String newTargetNamespace) { NamespaceInfo info = getNamespaceInfo(newTargetNamespace); if (info == null) { info = getNamespaceInfo(oldTargetNamespace); if (info == null) { info = new NamespaceInfo(newTargetNamespace, "tns", null); //$NON-NLS-1$ namespaceInfoList.add(info); } else { info.uri = targetNamespace; } } tableViewer.refresh(); } }