/*******************************************************************************
 * Copyright (c) 2008 Innoopract Informationssysteme GmbH.
 * 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:
 *     Innoopract Informationssysteme GmbH - initial API and implementation
 ******************************************************************************/
package org.eclipse.epp.wizard.internal;

/**
 * enumeration of all supported platforms
 * 
 * @author mwoelker
 */
public enum Platform {
  WIN32("win32", "Windows", "zip"), 
  LINUX("linux", "Linux", "tar.gz"), 
  MACOSX("macosx", "Mac OS X", "tar.gz");

  private final String id;
  private final String label;
  private final String extension;

  private Platform( String id, String label, String extension ) {
    this.id = id;
    this.extension = extension;
    this.label = label;
  }

  public String getId() {
    return id;
  }

  public String getLabel() {
    return label;
  }

  public String getExtension() {
    return extension;
  }
}
