blob: e411b6cb906a35e7e622bfbd394eceeb4a349abd [file] [log] [blame]
/**
* Copyright (c) 2005-2012 IBM Corporation and others.
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License v2.0
* which accompanies this distribution, and is available at
* http://www.eclipse.org/legal/epl-v20.html
*
* Contributors:
* IBM - Initial API and implementation
*/
package org.eclipse.xsd.ecore.importer.ui;
import org.eclipse.swt.SWT;
import org.eclipse.swt.layout.GridData;
import org.eclipse.swt.widgets.Button;
import org.eclipse.swt.widgets.Composite;
import org.eclipse.swt.widgets.Event;
import org.eclipse.emf.importer.ModelImporter;
import org.eclipse.emf.importer.ui.contribution.base.ModelImporterDetailPage;
import org.eclipse.jface.dialogs.MessageDialog;
import org.eclipse.xsd.ecore.importer.XSDImporter;
import org.eclipse.xsd.ecore.importer.XSDImporterPlugin;
/**
* @since 2.1.0
*/
public class XSDDetailPage extends ModelImporterDetailPage
{
protected Button createMapButton;
/**
* @since 2.9
*/
protected Button sortAttributesButton;
public XSDDetailPage(ModelImporter modelImporter, String pageName)
{
super(modelImporter, pageName);
setTitle(XSDImporterPlugin.INSTANCE.getString("_UI_XSDImport_title"));
setDescription(XSDImporterPlugin.INSTANCE.getString(showGenModel() ?
"_UI_XSDImportNewProject_description": "_UI_XSDImportFile_description" ));
}
@Override
public void dispose()
{
if (createMapButton != null)
{
createMapButton.removeListener(SWT.Selection, this);
createMapButton = null;
}
if (sortAttributesButton != null)
{
sortAttributesButton.removeListener(SWT.Selection, this);
sortAttributesButton = null;
}
super.dispose();
}
public XSDImporter getXSDImporter()
{
return (XSDImporter)getModelImporter();
}
@Override
protected void addDetailControl(Composite parent)
{
XSDImporter xsdImporter = getXSDImporter();
if (xsdImporter.canCreateEcoreMap())
{
createMapButton = new Button(parent, SWT.CHECK);
if (xsdImporter.createEcoreMap())
{
createMapButton.setSelection(true);
}
createMapButton.setText(XSDImporterPlugin.INSTANCE.getString("_UI_Create_XML_Schema_to_Ecore_Map"));
{
GridData data = new GridData();
data.horizontalSpan = 1;
createMapButton.setLayoutData(data);
}
createMapButton.addListener(SWT.Selection, this);
}
sortAttributesButton = new Button(parent, SWT.CHECK);
if (xsdImporter.sortAttributes())
{
sortAttributesButton.setSelection(true);
}
sortAttributesButton.setText(XSDImporterPlugin.INSTANCE.getString("_UI_Sort_Attributes"));
{
GridData data = new GridData();
data.horizontalSpan = 1;
sortAttributesButton.setLayoutData(data);
}
sortAttributesButton.addListener(SWT.Selection, this);
}
@Override
protected void doHandleEvent(Event event)
{
if (event.type == SWT.Selection && (event.widget == createMapButton || event.widget == sortAttributesButton))
{
if (event.widget == createMapButton)
{
boolean enabled = createMapButton.getSelection();
if (enabled)
{
MessageDialog.openWarning(getContainer().getShell(), XSDImporterPlugin.INSTANCE.getString("_UI_Create_XML_Schema_to_Ecore_Map").replace("&", ""), XSDImporterPlugin.INSTANCE.getString("_UI_Create_XML_Schema_to_Ecore_Map_message"));
}
getXSDImporter().setCreateEcoreMap(createMapButton.getSelection());
}
else
{
getXSDImporter().setSortAttributes(sortAttributesButton.getSelection());
}
if (uriText.getText().trim().length() > 0)
{
refreshModel();
getContainer().updateButtons();
}
}
else
{
super.doHandleEvent(event);
}
}
}