blob: c4baf003c98530a000c0e5e95861a410d0d5710d [file] [log] [blame]
/**
* Copyright (c) 2002-2007 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 - Initial API and implementation
*/
package org.eclipse.xsd;
import java.util.Comparator;
import org.eclipse.emf.common.CommonPlugin;
import org.eclipse.emf.common.EMFPlugin;
import org.eclipse.emf.common.util.ResourceLocator;
/**
* The <b>Plugin</b> for the model.
* The XML Schema model needs to be able to run
* within an Eclipse workbench,
* within a headless Eclipse workspace,
* or just stand-alone as part of some other application.
* To support this, all access is directed to the static methods,
* which can redirect the service as appopriate to the runtime.
* During stand-alone invocation no plugin initialization takes place.
* In this case you will need the resources jar on the class path.
* @see #getBaseURL()
*/
public final class XSDPlugin extends EMFPlugin
{
/**
* The singleton instance of the plugin.
*/
public static final XSDPlugin INSTANCE = new XSDPlugin();
/**
* The one instance of this class.
*/
static private Implementation plugin;
/**
* Creates the singleton instance.
*/
private XSDPlugin()
{
super(new ResourceLocator[] {});
}
/**
* A comparator for strings which does collation specific to the current locale by default.
*/
public static class StringComparator implements Comparator<String>
{
private Comparator<String> comparator = CommonPlugin.INSTANCE.getComparator();
public int compare(String s1, String s2)
{
return comparator.compare(s1, s2);
}
}
/**
* A comparator for strings which does collation based simply on unicode values.
*/
public static class UnicodeStringComparator extends StringComparator
{
@Override
public int compare(String s1, String s2)
{
return s1.compareTo(s2);
}
}
/**
* The current comparator.
*/
private StringComparator comparator = new StringComparator();
/**
* Returns the comparator that will be used to sort namespaces and names.
* The default comparator is specific to the current locale at startup.
* Changes to the comparator after it's already in use will be ignored.
* @return the comparator that will be used to sort namespaces and names.
*/
public StringComparator getComparator()
{
return comparator;
}
/**
* Sets the comparator that will be used to sort namespaces and names.
* Changes to the comparator after it's already in use will be ignored.
* @param comparator the comparator that will be used to sort namespaces and names.
*/
public void setComparator(StringComparator comparator)
{
this.comparator = comparator;
}
/*
* Javadoc copied from base class.
*/
@Override
public ResourceLocator getPluginResourceLocator()
{
return plugin;
}
/**
* Returns the singleton instance of the Eclipse plugin.
* @return the singleton instance.
*/
public static Implementation getPlugin()
{
return plugin;
}
/**
* The actual implementation of the Eclipse <b>Plugin</b>.
*/
public static class Implementation extends EMFPlugin.EclipsePlugin
{
/**
* Creates an instance.
*/
public Implementation()
{
super();
// Remember the static instance.
//
plugin = this;
}
}
}