/*
 * Copyright (c) 2005, 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 implementation
 *
 */
package org.eclipse.epf.diagramming.base.persistence;

import org.eclipse.gmf.runtime.diagram.ui.resources.editor.util.DiagramFileCreator;

/**
 * @author Shashidhar Kannoori
 */
public class DiagramFileCreatorEx extends DiagramFileCreator {

	public static final String default_diagram_file = "diagram"; 
	/**
	 * 
	 */
	private static DiagramFileCreatorEx INSTANCE = new DiagramFileCreatorEx();

	/**
	 * 
	 */
	public static DiagramFileCreatorEx getInstance() {
		return INSTANCE;
	}

	/**
	 * @generated
	 */
	public String getExtension() {
		return ".xmi"; //$NON-NLS-1$
	}

}