XStructurePlugin.java :  » IntelliJ » xstructure » org » sylfra » idea » plugins » xstructure » Java Open Source

Java Open Source » IntelliJ » xstructure 
xstructure » org » sylfra » idea » plugins » xstructure » XStructurePlugin.java
package org.sylfra.idea.plugins.xstructure;

import com.intellij.javaee.ExternalResourceManager;
import com.intellij.openapi.application.ApplicationManager;
import com.intellij.openapi.components.ApplicationComponent;
import com.intellij.openapi.components.ServiceManager;
import com.intellij.openapi.diagnostic.Logger;
import org.jetbrains.annotations.NonNls;
import org.jetbrains.annotations.NotNull;
import org.sylfra.idea.plugins.xstructure.registry.XMappingSetRegistry;
import org.sylfra.idea.plugins.xstructure.resolution.XMappingResolverFactory;
import org.sylfra.idea.plugins.xstructure.settings.XStructureSettingsComponent;

/**
 * The main application component available as a singleton and providing convenient methods
 * to access services declared in plugin.xml
 *
 * @author <a href="mailto:sylfradev@yahoo.fr">Sylvain FRANCOIS</a>
 * @version $Id: XStructurePlugin.java 51 2009-08-21 12:25:14Z syllant $
 */
public class XStructurePlugin implements ApplicationComponent
{
  public static final String COMPONENT_NAME = "xStructure";
  public static final String PLUGIN_ID = "org.sylfra.idea.plugins.xstructure";

  private static final Logger LOGGER =
    Logger.getInstance(XStructurePlugin.class.getName());

  private XMappingResolverFactory xMappingResolverFactory;

  public static XStructurePlugin getInstance()
  {
    return ApplicationManager.getApplication().getComponent(XStructurePlugin.class);
  }

  /**
   * {@inheritDoc}
   */
  @NonNls
  @NotNull
  public String getComponentName()
  {
    return COMPONENT_NAME;
  }

  /**
   * {@inheritDoc}
   */
  public void initComponent()
  {
    registerXStructureSchemas();

    // Load configuration
    try
    {
      getSettingsComponent().installDefautMappings();
    }
    catch (XSException e)
    {
      LOGGER.warn(e);
    }
  }

  /**
   * {@inheritDoc}
   */
  public void disposeComponent()
  {
  }

  private void registerXStructureSchemas()
  {
    ExternalResourceManager.getInstance().addResource(
      "http://plugins.intellij.net/xstructure/ns/xstructure_1_0.xsd",
      "/org/sylfra/idea/plugins/xstructure/resources/schemas/xstructure_1_0.xsd");
    ExternalResourceManager.getInstance().addResource(
      "http://plugins.intellij.net/xstructure/ns/xstructure_1_1.xsd",
      "/org/sylfra/idea/plugins/xstructure/resources/schemas/xstructure_1_1.xsd");
  }

  /**
   * Provides mapping set registry component
   *
   * @return mapping set registry component
   */
  public XMappingSetRegistry getXMappingSetRegistry()
  {
    return ApplicationManager.getApplication().getComponent(XMappingSetRegistry.class);
  }

  /**
   * Provides mapping resolver factory
   *
   * @return mapping resolver factory
   */
  public XMappingResolverFactory getXMappingResolverFactory()
  {
    if (xMappingResolverFactory == null)
    {
      xMappingResolverFactory = new XMappingResolverFactory();
    }
    return xMappingResolverFactory;
  }

  /**
   * Provides settings component
   *
   * @return settings component
   */
  public XStructureSettingsComponent getSettingsComponent()
  {
    return ServiceManager.getService(XStructureSettingsComponent.class);
  }
}
java2s.com  | Contact Us | Privacy Policy
Copyright 2009 - 12 Demo Source and Support. All rights reserved.
All other trademarks are property of their respective owners.