Remove TranslateToJsAction.
Improve configuration UI. Add directory to store generated files setting.
This commit is contained in:
@@ -28,7 +28,6 @@ import com.intellij.openapi.project.Project;
|
|||||||
import com.intellij.openapi.vfs.LocalFileSystem;
|
import com.intellij.openapi.vfs.LocalFileSystem;
|
||||||
import com.intellij.openapi.vfs.VirtualFileManager;
|
import com.intellij.openapi.vfs.VirtualFileManager;
|
||||||
import org.jetbrains.annotations.NotNull;
|
import org.jetbrains.annotations.NotNull;
|
||||||
import org.jetbrains.jet.plugin.actions.TranslateToJsAction;
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @author Pavel Talanov
|
* @author Pavel Talanov
|
||||||
@@ -46,10 +45,10 @@ public final class K2JSBrowserProgramRunner extends GenericProgramRunner {
|
|||||||
try {
|
try {
|
||||||
K2JSConfigurationSettings configurationSettings = getSettings(state);
|
K2JSConfigurationSettings configurationSettings = getSettings(state);
|
||||||
try {
|
try {
|
||||||
TranslateToJsAction.doPerform(project);
|
K2JSRunnerUtils.translateAndSave(project, configurationSettings.getGeneratedFilePath());
|
||||||
}
|
}
|
||||||
catch (Throwable e) {
|
catch (Throwable e) {
|
||||||
TranslateToJsAction.notifyFailure(e);
|
K2JSRunnerUtils.notifyFailure(e);
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
openBrowser(configurationSettings);
|
openBrowser(configurationSettings);
|
||||||
@@ -61,7 +60,10 @@ public final class K2JSBrowserProgramRunner extends GenericProgramRunner {
|
|||||||
}
|
}
|
||||||
|
|
||||||
private static void openBrowser(@NotNull K2JSConfigurationSettings configurationSettings) {
|
private static void openBrowser(@NotNull K2JSConfigurationSettings configurationSettings) {
|
||||||
String filePath = configurationSettings.getFilePath();
|
if (!configurationSettings.isShouldOpenInBrowserAfterTranslation()) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
String filePath = configurationSettings.getPageToOpenFilePath();
|
||||||
String url = VirtualFileManager.constructUrl(LocalFileSystem.PROTOCOL, filePath);
|
String url = VirtualFileManager.constructUrl(LocalFileSystem.PROTOCOL, filePath);
|
||||||
BrowsersConfiguration.launchBrowser(configurationSettings.getBrowserFamily(), url);
|
BrowsersConfiguration.launchBrowser(configurationSettings.getBrowserFamily(), url);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -17,19 +17,33 @@
|
|||||||
package org.jetbrains.jet.plugin.k2jsrun;
|
package org.jetbrains.jet.plugin.k2jsrun;
|
||||||
|
|
||||||
import com.intellij.ide.browsers.BrowsersConfiguration;
|
import com.intellij.ide.browsers.BrowsersConfiguration;
|
||||||
|
import com.intellij.openapi.project.Project;
|
||||||
import org.jetbrains.annotations.NotNull;
|
import org.jetbrains.annotations.NotNull;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @author Pavel Talanov
|
* @author Pavel Talanov
|
||||||
*/
|
*/
|
||||||
public class K2JSConfigurationSettings {
|
public final class K2JSConfigurationSettings {
|
||||||
|
|
||||||
@NotNull
|
@NotNull
|
||||||
private String filePath = "";
|
private String pageToOpenFilePath = "";
|
||||||
|
|
||||||
|
@NotNull
|
||||||
|
private String generatedFilePath;
|
||||||
|
|
||||||
|
private boolean shouldOpenInBrowserAfterTranslation = false;
|
||||||
|
|
||||||
@NotNull
|
@NotNull
|
||||||
private BrowsersConfiguration.BrowserFamily browserFamily = BrowsersConfiguration.getInstance().getActiveBrowsers().get(0);
|
private BrowsersConfiguration.BrowserFamily browserFamily = BrowsersConfiguration.getInstance().getActiveBrowsers().get(0);
|
||||||
|
|
||||||
|
public K2JSConfigurationSettings(@NotNull Project project) {
|
||||||
|
generatedFilePath = project.getBasePath() + "/generated.js";
|
||||||
|
}
|
||||||
|
|
||||||
|
public K2JSConfigurationSettings() {
|
||||||
|
generatedFilePath = "";
|
||||||
|
}
|
||||||
|
|
||||||
@NotNull
|
@NotNull
|
||||||
public BrowsersConfiguration.BrowserFamily getBrowserFamily() {
|
public BrowsersConfiguration.BrowserFamily getBrowserFamily() {
|
||||||
return browserFamily;
|
return browserFamily;
|
||||||
@@ -40,11 +54,28 @@ public class K2JSConfigurationSettings {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@NotNull
|
@NotNull
|
||||||
public String getFilePath() {
|
public String getPageToOpenFilePath() {
|
||||||
return filePath;
|
return pageToOpenFilePath;
|
||||||
}
|
}
|
||||||
|
|
||||||
public void setFilePath(@NotNull String filePath) {
|
public void setPageToOpenFilePath(@NotNull String pageToOpenFilePath) {
|
||||||
this.filePath = filePath;
|
this.pageToOpenFilePath = pageToOpenFilePath;
|
||||||
|
}
|
||||||
|
|
||||||
|
@NotNull
|
||||||
|
public String getGeneratedFilePath() {
|
||||||
|
return generatedFilePath;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setGeneratedFilePath(@NotNull String generatedFilePath) {
|
||||||
|
this.generatedFilePath = generatedFilePath;
|
||||||
|
}
|
||||||
|
|
||||||
|
public boolean isShouldOpenInBrowserAfterTranslation() {
|
||||||
|
return shouldOpenInBrowserAfterTranslation;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setShouldOpenInBrowserAfterTranslation(boolean shouldOpenInBrowserAfterTranslation) {
|
||||||
|
this.shouldOpenInBrowserAfterTranslation = shouldOpenInBrowserAfterTranslation;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -42,11 +42,11 @@ import java.util.Collection;
|
|||||||
/**
|
/**
|
||||||
* @author Pavel Talanov
|
* @author Pavel Talanov
|
||||||
*/
|
*/
|
||||||
public class K2JSRunConfiguration extends ModuleBasedConfiguration<RunConfigurationModule>
|
public final class K2JSRunConfiguration extends ModuleBasedConfiguration<RunConfigurationModule>
|
||||||
implements RunConfigurationWithSuppressedDefaultRunAction {
|
implements RunConfigurationWithSuppressedDefaultRunAction {
|
||||||
|
|
||||||
@NotNull
|
@NotNull
|
||||||
private K2JSConfigurationSettings settings = new K2JSConfigurationSettings();
|
private K2JSConfigurationSettings settings = new K2JSConfigurationSettings(getProject());
|
||||||
|
|
||||||
public K2JSRunConfiguration(String name, RunConfigurationModule runConfigurationModule, ConfigurationFactory factory) {
|
public K2JSRunConfiguration(String name, RunConfigurationModule runConfigurationModule, ConfigurationFactory factory) {
|
||||||
super(name, runConfigurationModule, factory);
|
super(name, runConfigurationModule, factory);
|
||||||
|
|||||||
@@ -8,7 +8,7 @@
|
|||||||
<properties/>
|
<properties/>
|
||||||
<border type="none"/>
|
<border type="none"/>
|
||||||
<children>
|
<children>
|
||||||
<grid id="aad78" layout-manager="GridLayoutManager" row-count="2" column-count="2" same-size-horizontally="false" same-size-vertically="false" hgap="-1" vgap="-1">
|
<grid id="aad78" layout-manager="GridLayoutManager" row-count="4" column-count="2" same-size-horizontally="false" same-size-vertically="false" hgap="-1" vgap="-1">
|
||||||
<margin top="0" left="0" bottom="0" right="0"/>
|
<margin top="0" left="0" bottom="0" right="0"/>
|
||||||
<constraints>
|
<constraints>
|
||||||
<grid row="0" column="0" row-span="1" col-span="1" vsize-policy="3" hsize-policy="3" anchor="0" fill="3" indent="0" use-parent-layout="false"/>
|
<grid row="0" column="0" row-span="1" col-span="1" vsize-policy="3" hsize-policy="3" anchor="0" fill="3" indent="0" use-parent-layout="false"/>
|
||||||
@@ -16,15 +16,15 @@
|
|||||||
<properties/>
|
<properties/>
|
||||||
<border type="none"/>
|
<border type="none"/>
|
||||||
<children>
|
<children>
|
||||||
<component id="5ba6" class="com.intellij.openapi.ui.TextFieldWithBrowseButton" binding="chooseFile">
|
<component id="5ba6" class="com.intellij.openapi.ui.TextFieldWithBrowseButton" binding="htmlChooseFile">
|
||||||
<constraints>
|
<constraints>
|
||||||
<grid row="0" column="1" row-span="1" col-span="1" vsize-policy="0" hsize-policy="3" anchor="0" fill="1" indent="0" use-parent-layout="false"/>
|
<grid row="2" column="1" row-span="1" col-span="1" vsize-policy="0" hsize-policy="3" anchor="0" fill="1" indent="0" use-parent-layout="false"/>
|
||||||
</constraints>
|
</constraints>
|
||||||
<properties/>
|
<properties/>
|
||||||
</component>
|
</component>
|
||||||
<component id="cf71a" class="javax.swing.JLabel">
|
<component id="cf71a" class="javax.swing.JLabel">
|
||||||
<constraints>
|
<constraints>
|
||||||
<grid row="0" column="0" row-span="1" col-span="1" vsize-policy="0" hsize-policy="0" anchor="8" fill="0" indent="0" use-parent-layout="false"/>
|
<grid row="2" column="0" row-span="1" col-span="1" vsize-policy="0" hsize-policy="0" anchor="8" fill="0" indent="0" use-parent-layout="false"/>
|
||||||
</constraints>
|
</constraints>
|
||||||
<properties>
|
<properties>
|
||||||
<text value="HTML file"/>
|
<text value="HTML file"/>
|
||||||
@@ -32,7 +32,7 @@
|
|||||||
</component>
|
</component>
|
||||||
<component id="f4230" class="javax.swing.JLabel">
|
<component id="f4230" class="javax.swing.JLabel">
|
||||||
<constraints>
|
<constraints>
|
||||||
<grid row="1" column="0" row-span="1" col-span="1" vsize-policy="0" hsize-policy="0" anchor="8" fill="0" indent="0" use-parent-layout="false"/>
|
<grid row="3" column="0" row-span="1" col-span="1" vsize-policy="0" hsize-policy="0" anchor="8" fill="0" indent="0" use-parent-layout="false"/>
|
||||||
</constraints>
|
</constraints>
|
||||||
<properties>
|
<properties>
|
||||||
<labelFor value="a2cc0"/>
|
<labelFor value="a2cc0"/>
|
||||||
@@ -41,7 +41,29 @@
|
|||||||
</component>
|
</component>
|
||||||
<component id="a2cc0" class="javax.swing.JComboBox" binding="browserComboBox">
|
<component id="a2cc0" class="javax.swing.JComboBox" binding="browserComboBox">
|
||||||
<constraints>
|
<constraints>
|
||||||
<grid row="1" column="1" row-span="1" col-span="1" vsize-policy="0" hsize-policy="2" anchor="8" fill="0" indent="0" use-parent-layout="false"/>
|
<grid row="3" column="1" row-span="1" col-span="1" vsize-policy="0" hsize-policy="2" anchor="8" fill="0" indent="0" use-parent-layout="false"/>
|
||||||
|
</constraints>
|
||||||
|
<properties/>
|
||||||
|
</component>
|
||||||
|
<component id="beb35" class="javax.swing.JCheckBox" binding="openInBrowserCheckBox">
|
||||||
|
<constraints>
|
||||||
|
<grid row="1" column="0" row-span="1" col-span="1" vsize-policy="0" hsize-policy="3" anchor="8" fill="0" indent="0" use-parent-layout="false"/>
|
||||||
|
</constraints>
|
||||||
|
<properties>
|
||||||
|
<text value="Open in browser after translation"/>
|
||||||
|
</properties>
|
||||||
|
</component>
|
||||||
|
<component id="f6a73" class="javax.swing.JLabel">
|
||||||
|
<constraints>
|
||||||
|
<grid row="0" column="0" row-span="1" col-span="1" vsize-policy="0" hsize-policy="0" anchor="8" fill="0" indent="0" use-parent-layout="false"/>
|
||||||
|
</constraints>
|
||||||
|
<properties>
|
||||||
|
<text value="Generated file directory"/>
|
||||||
|
</properties>
|
||||||
|
</component>
|
||||||
|
<component id="12973" class="com.intellij.openapi.ui.TextFieldWithBrowseButton" binding="generatedChooseFile">
|
||||||
|
<constraints>
|
||||||
|
<grid row="0" column="1" row-span="1" col-span="1" vsize-policy="0" hsize-policy="3" anchor="0" fill="1" indent="0" use-parent-layout="false"/>
|
||||||
</constraints>
|
</constraints>
|
||||||
<properties/>
|
<properties/>
|
||||||
</component>
|
</component>
|
||||||
|
|||||||
@@ -26,10 +26,13 @@ import com.intellij.openapi.options.SettingsEditor;
|
|||||||
import com.intellij.openapi.project.Project;
|
import com.intellij.openapi.project.Project;
|
||||||
import com.intellij.openapi.roots.ProjectRootManager;
|
import com.intellij.openapi.roots.ProjectRootManager;
|
||||||
import com.intellij.openapi.ui.TextFieldWithBrowseButton;
|
import com.intellij.openapi.ui.TextFieldWithBrowseButton;
|
||||||
import com.intellij.openapi.util.io.FileUtil;
|
|
||||||
import org.jetbrains.annotations.NotNull;
|
import org.jetbrains.annotations.NotNull;
|
||||||
|
|
||||||
import javax.swing.*;
|
import javax.swing.*;
|
||||||
|
import java.awt.event.ItemEvent;
|
||||||
|
import java.awt.event.ItemListener;
|
||||||
|
|
||||||
|
import static com.intellij.openapi.util.io.FileUtil.toSystemIndependentName;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @author Pavel Talanov
|
* @author Pavel Talanov
|
||||||
@@ -37,8 +40,10 @@ import javax.swing.*;
|
|||||||
public final class K2JSRunConfigurationEditor extends SettingsEditor<K2JSRunConfiguration> {
|
public final class K2JSRunConfigurationEditor extends SettingsEditor<K2JSRunConfiguration> {
|
||||||
|
|
||||||
private JPanel mainPanel;
|
private JPanel mainPanel;
|
||||||
private TextFieldWithBrowseButton chooseFile;
|
private TextFieldWithBrowseButton htmlChooseFile;
|
||||||
private JComboBox browserComboBox;
|
private JComboBox browserComboBox;
|
||||||
|
private JCheckBox openInBrowserCheckBox;
|
||||||
|
private TextFieldWithBrowseButton generatedChooseFile;
|
||||||
@NotNull
|
@NotNull
|
||||||
private final Project project;
|
private final Project project;
|
||||||
|
|
||||||
@@ -47,31 +52,60 @@ public final class K2JSRunConfigurationEditor extends SettingsEditor<K2JSRunConf
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
protected void resetEditorFrom(K2JSRunConfiguration configuration) {
|
protected void resetEditorFrom(@NotNull K2JSRunConfiguration configuration) {
|
||||||
chooseFile.setText(configuration.settings().getFilePath());
|
htmlChooseFile.setText(toSystemIndependentName(configuration.settings().getPageToOpenFilePath()));
|
||||||
browserComboBox.setSelectedItem(configuration.settings().getBrowserFamily());
|
browserComboBox.setSelectedItem(configuration.settings().getBrowserFamily());
|
||||||
|
generatedChooseFile.setText(toSystemIndependentName(configuration.settings().getGeneratedFilePath()));
|
||||||
|
openInBrowserCheckBox.setSelected(configuration.settings().isShouldOpenInBrowserAfterTranslation());
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
protected void applyEditorTo(@NotNull K2JSRunConfiguration configuration) throws ConfigurationException {
|
protected void applyEditorTo(@NotNull K2JSRunConfiguration configuration) throws ConfigurationException {
|
||||||
configuration.settings().setFilePath(FileUtil.toSystemIndependentName(chooseFile.getText()));
|
K2JSConfigurationSettings settings = configuration.settings();
|
||||||
|
settings.setPageToOpenFilePath(toSystemIndependentName(htmlChooseFile.getText()));
|
||||||
Object item = browserComboBox.getSelectedItem();
|
Object item = browserComboBox.getSelectedItem();
|
||||||
if (item instanceof BrowsersConfiguration.BrowserFamily) {
|
if (item instanceof BrowsersConfiguration.BrowserFamily) {
|
||||||
configuration.settings().setBrowserFamily((BrowsersConfiguration.BrowserFamily)item);
|
settings.setBrowserFamily((BrowsersConfiguration.BrowserFamily)item);
|
||||||
}
|
}
|
||||||
|
settings.setGeneratedFilePath(toSystemIndependentName(generatedChooseFile.getText()));
|
||||||
|
settings.setShouldOpenInBrowserAfterTranslation(openInBrowserCheckBox.isSelected());
|
||||||
}
|
}
|
||||||
|
|
||||||
@NotNull
|
@NotNull
|
||||||
@Override
|
@Override
|
||||||
protected JComponent createEditor() {
|
protected JComponent createEditor() {
|
||||||
FileChooserDescriptor fileChooserDescriptor = FileChooserDescriptorFactory.createSingleFileDescriptor(StdFileTypes.HTML);
|
setUpShowInBrowserCheckBox();
|
||||||
fileChooserDescriptor.setRoots(ProjectRootManager.getInstance(project).getContentRootUrls());
|
setUpChooseHtmlToShow();
|
||||||
chooseFile.addBrowseFolderListener("Choose file", "Yeah!", project, fileChooserDescriptor);
|
setUpBrowserCombobox();
|
||||||
setupBrowserCombobox();
|
setUpChooseGenerateFilePath();
|
||||||
return mainPanel;
|
return mainPanel;
|
||||||
}
|
}
|
||||||
|
|
||||||
private void setupBrowserCombobox() {
|
private void setUpChooseGenerateFilePath() {
|
||||||
|
FileChooserDescriptor fileChooserDescriptor =
|
||||||
|
FileChooserDescriptorFactory.getDirectoryChooserDescriptor("directory where generated files will be stored");
|
||||||
|
fileChooserDescriptor.setRoots(ProjectRootManager.getInstance(project).getContentRootUrls());
|
||||||
|
generatedChooseFile.addBrowseFolderListener(null, null, project, fileChooserDescriptor);
|
||||||
|
}
|
||||||
|
|
||||||
|
private void setUpShowInBrowserCheckBox() {
|
||||||
|
openInBrowserCheckBox.addItemListener(new ItemListener() {
|
||||||
|
@Override
|
||||||
|
public void itemStateChanged(ItemEvent e) {
|
||||||
|
boolean selected = openInBrowserCheckBox.isSelected();
|
||||||
|
htmlChooseFile.setEnabled(selected);
|
||||||
|
browserComboBox.setEnabled(selected);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
private void setUpChooseHtmlToShow() {
|
||||||
|
FileChooserDescriptor fileChooserDescriptor = FileChooserDescriptorFactory.createSingleFileDescriptor(StdFileTypes.HTML);
|
||||||
|
fileChooserDescriptor.setRoots(ProjectRootManager.getInstance(project).getContentRootUrls());
|
||||||
|
htmlChooseFile.addBrowseFolderListener("Choose file to show after translation is finished", null, project, fileChooserDescriptor);
|
||||||
|
}
|
||||||
|
|
||||||
|
private void setUpBrowserCombobox() {
|
||||||
for (BrowsersConfiguration.BrowserFamily family : BrowsersConfiguration.getInstance().getActiveBrowsers()) {
|
for (BrowsersConfiguration.BrowserFamily family : BrowsersConfiguration.getInstance().getActiveBrowsers()) {
|
||||||
browserComboBox.addItem(family);
|
browserComboBox.addItem(family);
|
||||||
}
|
}
|
||||||
|
|||||||
+10
-56
@@ -14,17 +14,13 @@
|
|||||||
* limitations under the License.
|
* limitations under the License.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
package org.jetbrains.jet.plugin.actions;
|
package org.jetbrains.jet.plugin.k2jsrun;
|
||||||
|
|
||||||
import com.google.common.collect.Lists;
|
import com.google.common.collect.Lists;
|
||||||
import com.google.common.collect.Sets;
|
import com.google.common.collect.Sets;
|
||||||
import com.intellij.notification.Notification;
|
import com.intellij.notification.Notification;
|
||||||
import com.intellij.notification.NotificationType;
|
import com.intellij.notification.NotificationType;
|
||||||
import com.intellij.notification.Notifications;
|
import com.intellij.notification.Notifications;
|
||||||
import com.intellij.openapi.actionSystem.AnAction;
|
|
||||||
import com.intellij.openapi.actionSystem.AnActionEvent;
|
|
||||||
import com.intellij.openapi.actionSystem.PlatformDataKeys;
|
|
||||||
import com.intellij.openapi.application.ApplicationManager;
|
|
||||||
import com.intellij.openapi.module.Module;
|
import com.intellij.openapi.module.Module;
|
||||||
import com.intellij.openapi.module.ModuleManager;
|
import com.intellij.openapi.module.ModuleManager;
|
||||||
import com.intellij.openapi.project.Project;
|
import com.intellij.openapi.project.Project;
|
||||||
@@ -33,9 +29,7 @@ import com.intellij.openapi.vfs.VirtualFile;
|
|||||||
import com.intellij.psi.PsiFile;
|
import com.intellij.psi.PsiFile;
|
||||||
import com.intellij.psi.PsiManager;
|
import com.intellij.psi.PsiManager;
|
||||||
import org.jetbrains.annotations.NotNull;
|
import org.jetbrains.annotations.NotNull;
|
||||||
import org.jetbrains.annotations.Nullable;
|
|
||||||
import org.jetbrains.jet.lang.psi.JetFile;
|
import org.jetbrains.jet.lang.psi.JetFile;
|
||||||
import org.jetbrains.jet.plugin.JetMainDetector;
|
|
||||||
import org.jetbrains.k2js.facade.K2JSTranslator;
|
import org.jetbrains.k2js.facade.K2JSTranslator;
|
||||||
|
|
||||||
import java.util.Collection;
|
import java.util.Collection;
|
||||||
@@ -49,7 +43,7 @@ import static org.jetbrains.jet.plugin.actions.JavaToKotlinActionUtil.allVirtual
|
|||||||
/**
|
/**
|
||||||
* @author Pavel Talanov
|
* @author Pavel Talanov
|
||||||
*/
|
*/
|
||||||
public final class TranslateToJsAction extends AnAction {
|
public final class K2JSRunnerUtils {
|
||||||
|
|
||||||
public static void notifyFailure(@NotNull Throwable exception) {
|
public static void notifyFailure(@NotNull Throwable exception) {
|
||||||
Notifications.Bus.notify(new Notification("JsTranslator", "Translation failed.",
|
Notifications.Bus.notify(new Notification("JsTranslator", "Translation failed.",
|
||||||
@@ -63,36 +57,18 @@ public final class TranslateToJsAction extends AnAction {
|
|||||||
NotificationType.INFORMATION));
|
NotificationType.INFORMATION));
|
||||||
}
|
}
|
||||||
|
|
||||||
public void actionPerformed(final AnActionEvent event) {
|
public static void translateAndSave(@NotNull Project project, @NotNull String outputDirPath) throws Exception {
|
||||||
Runnable task = new Runnable() {
|
|
||||||
@Override
|
|
||||||
public void run() {
|
|
||||||
try {
|
|
||||||
performAction(event);
|
|
||||||
}
|
|
||||||
catch (Throwable e) {
|
|
||||||
e.printStackTrace();
|
|
||||||
notifyFailure(e);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
};
|
|
||||||
ApplicationManager.getApplication().runWriteAction(task);
|
|
||||||
}
|
|
||||||
|
|
||||||
private static void performAction(@NotNull AnActionEvent event) throws Exception {
|
|
||||||
final Project project = PlatformDataKeys.PROJECT.getData(event.getDataContext());
|
|
||||||
assert project != null;
|
|
||||||
doPerform(project);
|
|
||||||
}
|
|
||||||
|
|
||||||
public static void doPerform(@NotNull Project project) throws Exception {
|
|
||||||
Set<VirtualFile> allVirtualFiles = getAllProjectVirtualFiles(project);
|
Set<VirtualFile> allVirtualFiles = getAllProjectVirtualFiles(project);
|
||||||
List<JetFile> kotlinFiles = getJetFiles(allVirtualFiles, project);
|
List<JetFile> kotlinFiles = getJetFiles(allVirtualFiles, project);
|
||||||
String outputPath = getOutputPath(JetMainDetector.getFileWithMain(kotlinFiles));
|
String outputFilePath = constructPathToGeneratedFile(project, outputDirPath);
|
||||||
K2JSTranslator.translateWithCallToMainAndSaveToFile(kotlinFiles,
|
K2JSTranslator.translateWithCallToMainAndSaveToFile(kotlinFiles,
|
||||||
outputPath,
|
outputFilePath,
|
||||||
project);
|
project);
|
||||||
notifySuccess(outputPath);
|
notifySuccess(outputDirPath);
|
||||||
|
}
|
||||||
|
|
||||||
|
private static String constructPathToGeneratedFile(Project project, String outputDirPath) {
|
||||||
|
return outputDirPath + "/" + project.getName() + ".js";
|
||||||
}
|
}
|
||||||
|
|
||||||
@NotNull
|
@NotNull
|
||||||
@@ -120,26 +96,4 @@ public final class TranslateToJsAction extends AnAction {
|
|||||||
}
|
}
|
||||||
return kotlinFiles;
|
return kotlinFiles;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@NotNull
|
|
||||||
private static String getOutputPath(@Nullable PsiFile psiFile) {
|
|
||||||
if (psiFile == null) {
|
|
||||||
throw new AssertionError("Main was not detected.");
|
|
||||||
}
|
|
||||||
VirtualFile virtualFile = psiFile.getVirtualFile();
|
|
||||||
assert virtualFile != null : "Internal error: Psi file should correspond to actual virtual file";
|
|
||||||
String originalFilePath = virtualFile.getPath();
|
|
||||||
|
|
||||||
//TODO: make platform independent
|
|
||||||
String pathToDir = originalFilePath.substring(0, originalFilePath.lastIndexOf("/") + 1);
|
|
||||||
String generatedFileName = ((JetFile)psiFile).getNamespaceHeader().getName() + ".js";
|
|
||||||
return pathToDir + generatedFileName;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public void update(AnActionEvent e) {
|
|
||||||
// Editor editor = e.getData(PlatformDataKeys.EDITOR);
|
|
||||||
// e.getPresentation().setEnabled(editor != null);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
@@ -29,7 +29,7 @@ public final class K2JSRunConfigurationType extends ConfigurationTypeBase {
|
|||||||
}
|
}
|
||||||
|
|
||||||
public K2JSRunConfigurationType() {
|
public K2JSRunConfigurationType() {
|
||||||
super("K2JSConfigurationType", "K2JS", "Kotlin to Javascript", JetFileType.INSTANCE.getIcon());
|
super("K2JSConfigurationType", "K2JS", "Kotlin to Javascript configuration", JetFileType.INSTANCE.getIcon());
|
||||||
addFactory(new K2JSConfigurationFactory());
|
addFactory(new K2JSConfigurationFactory());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user