Package org.jetbrains.plugins.clojure.runner

Source Code of org.jetbrains.plugins.clojure.runner.ClojureScriptRunConfigurationType

package org.jetbrains.plugins.clojure.runner;

import com.intellij.execution.Location;
import com.intellij.execution.RunManager;
import com.intellij.execution.RunnerAndConfigurationSettings;
import com.intellij.execution.configurations.ConfigurationFactory;
import com.intellij.execution.configurations.ConfigurationType;
import com.intellij.openapi.module.ModuleUtil;
import com.intellij.openapi.vfs.VirtualFile;
import com.intellij.psi.PsiDirectory;
import com.intellij.psi.PsiFile;
import org.jetbrains.annotations.NonNls;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.plugins.clojure.ClojureIcons;
import org.jetbrains.plugins.clojure.psi.api.ClojureFile;

import javax.swing.*;

import static com.intellij.execution.configurations.ConfigurationTypeUtil.findConfigurationType;

/**
* Created by IntelliJ IDEA.
* User: peter
* Date: Jan 7, 2009
* Time: 6:00:33 PM
* Copyright 2007, 2008, 2009 Red Shark Technology
* <p/>
* http://www.apache.org/licenses/LICENSE-2.0
* <p/>
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
public class ClojureScriptRunConfigurationType implements ConfigurationType {


  private ClojureScriptConfigurationFactory myConfigurationFactory;

  public ClojureScriptRunConfigurationType() {
    myConfigurationFactory = new ClojureScriptConfigurationFactory(this);
  }

  // this is the text that appears in the Add New Configurion... list
  public String getDisplayName() {
    return "Clojure Script";
  }

  public String getConfigurationTypeDescription() {
    return "Clojure Script";
  }

  public Icon getIcon() {
    return ClojureIcons.CLOJURE_ICON_16x16;
  }

  @NonNls
  @NotNull
  public String getId() {
    return "ClojureScriptRunConfiguration";
  }

  public ConfigurationFactory[] getConfigurationFactories() {
    return new ConfigurationFactory[]{myConfigurationFactory};
  }

  public RunnerAndConfigurationSettings createConfigurationByLocation(Location location) {
    PsiFile file = location.getPsiElement().getContainingFile();
    if (file instanceof ClojureFile) {
      ClojureFile clojureFile = (ClojureFile) file;
      RunnerAndConfigurationSettings settings = RunManager.getInstance(location.getProject()).
          createRunConfiguration("", myConfigurationFactory);
      ClojureScriptRunConfiguration configuration = (ClojureScriptRunConfiguration) settings.getConfiguration();
      PsiDirectory dir = clojureFile.getContainingDirectory();
      assert dir != null;
      configuration.setWorkDir(dir.getVirtualFile().getPath());
      VirtualFile vFile = clojureFile.getVirtualFile();
      assert vFile != null;
      configuration.setScriptPath(vFile.getPath());
      configuration.setName(vFile.getNameWithoutExtension());
      configuration.setModule(ModuleUtil.findModuleForPsiElement(clojureFile));
      return settings;
    }
    return null;
  }

  public static ClojureScriptRunConfigurationType getInstance() {
    return findConfigurationType(ClojureScriptRunConfigurationType.class);
  }
}
TOP

Related Classes of org.jetbrains.plugins.clojure.runner.ClojureScriptRunConfigurationType

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.