Implement choose browser combobox.

This commit is contained in:
Pavel V. Talanov
2012-03-20 21:02:50 +04:00
parent c4f59ff7de
commit 5cc2b053b7
4 changed files with 46 additions and 2 deletions
@@ -63,7 +63,7 @@ public final class K2JSBrowserProgramRunner extends GenericProgramRunner {
private static void openBrowser(@NotNull K2JSConfigurationSettings configurationSettings) {
String filePath = configurationSettings.getFilePath();
String url = VirtualFileManager.constructUrl(LocalFileSystem.PROTOCOL, filePath);
BrowsersConfiguration.launchBrowser(BrowsersConfiguration.BrowserFamily.FIREFOX, url);
BrowsersConfiguration.launchBrowser(configurationSettings.getBrowserFamily(), url);
}
@NotNull
@@ -16,6 +16,7 @@
package org.jetbrains.jet.plugin.k2jsrun;
import com.intellij.ide.browsers.BrowsersConfiguration;
import org.jetbrains.annotations.NotNull;
/**
@@ -26,6 +27,18 @@ public class K2JSConfigurationSettings {
@NotNull
private String filePath = "";
@NotNull
private BrowsersConfiguration.BrowserFamily browserFamily = BrowsersConfiguration.getInstance().getActiveBrowsers().get(0);
@NotNull
public BrowsersConfiguration.BrowserFamily getBrowserFamily() {
return browserFamily;
}
public void setBrowserFamily(@NotNull BrowsersConfiguration.BrowserFamily browserFamily) {
this.browserFamily = browserFamily;
}
@NotNull
public String getFilePath() {
return filePath;
@@ -39,7 +39,7 @@
<text value="Browser"/>
</properties>
</component>
<component id="a2cc0" class="javax.swing.JComboBox">
<component id="a2cc0" class="javax.swing.JComboBox" binding="browserComboBox">
<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"/>
</constraints>
@@ -16,6 +16,8 @@
package org.jetbrains.jet.plugin.k2jsrun;
import com.intellij.ide.browsers.BrowsersConfiguration;
import com.intellij.ide.ui.ListCellRendererWrapper;
import com.intellij.openapi.fileChooser.FileChooserDescriptor;
import com.intellij.openapi.fileChooser.FileChooserDescriptorFactory;
import com.intellij.openapi.fileTypes.StdFileTypes;
@@ -36,6 +38,7 @@ public final class K2JSRunConfigurationEditor extends SettingsEditor<K2JSRunConf
private JPanel mainPanel;
private TextFieldWithBrowseButton chooseFile;
private JComboBox browserComboBox;
@NotNull
private final Project project;
@@ -46,11 +49,16 @@ public final class K2JSRunConfigurationEditor extends SettingsEditor<K2JSRunConf
@Override
protected void resetEditorFrom(K2JSRunConfiguration configuration) {
chooseFile.setText(configuration.settings().getFilePath());
browserComboBox.setSelectedItem(configuration.settings().getBrowserFamily());
}
@Override
protected void applyEditorTo(@NotNull K2JSRunConfiguration configuration) throws ConfigurationException {
configuration.settings().setFilePath(FileUtil.toSystemIndependentName(chooseFile.getText()));
Object item = browserComboBox.getSelectedItem();
if (item instanceof BrowsersConfiguration.BrowserFamily) {
configuration.settings().setBrowserFamily((BrowsersConfiguration.BrowserFamily)item);
}
}
@NotNull
@@ -59,9 +67,32 @@ public final class K2JSRunConfigurationEditor extends SettingsEditor<K2JSRunConf
FileChooserDescriptor fileChooserDescriptor = FileChooserDescriptorFactory.createSingleFileDescriptor(StdFileTypes.HTML);
fileChooserDescriptor.setRoots(ProjectRootManager.getInstance(project).getContentRootUrls());
chooseFile.addBrowseFolderListener("Choose file", "Yeah!", project, fileChooserDescriptor);
setupBrowserCombobox();
return mainPanel;
}
private void setupBrowserCombobox() {
for (BrowsersConfiguration.BrowserFamily family : BrowsersConfiguration.getInstance().getActiveBrowsers()) {
browserComboBox.addItem(family);
}
browserComboBox.setRenderer(new ListCellRendererWrapper<BrowsersConfiguration.BrowserFamily>(browserComboBox) {
@Override
public void customize(JList list, BrowsersConfiguration.BrowserFamily family, int index, boolean selected, boolean hasFocus) {
if (family != null) {
setText(family.getName());
setIcon(family.getIcon());
}
}
});
if (browserComboBox.getItemCount() < 2) {
browserComboBox.setVisible(false);
browserComboBox.setVisible(false);
}
else {
browserComboBox.setSelectedItem(0);
}
}
@Override
protected void disposeEditor() {
// do nothing