package com.intellij.lang.javascript.flex.run; import com.intellij.ide.browsers.BrowserFamily; import com.intellij.ide.browsers.WebBrowser; import com.intellij.ide.browsers.WebBrowserManager; import com.intellij.ide.browsers.WebBrowserReferenceConverter; import com.intellij.lang.javascript.flex.FlexBundle; import com.intellij.openapi.util.SystemInfo; import com.intellij.openapi.util.io.FileUtil; import com.intellij.util.xmlb.annotations.OptionTag; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; public class LauncherParameters implements Cloneable { public enum LauncherType { OSDefault, Browser, Player } private @NotNull LauncherType myLauncherType = LauncherType.OSDefault; private @NotNull String myPlayerPath = SystemInfo.isMac ? "/Applications/Flash Player Debugger.app" : SystemInfo.isWindows ? "FlashPlayerDebugger.exe" : "/usr/bin/flashplayerdebugger"; private boolean myNewPlayerInstance = false; @NotNull private WebBrowser myBrowser = WebBrowserManager.getInstance().getFirstBrowser(BrowserFamily.FIREFOX); public LauncherParameters() { } public LauncherParameters(@NotNull final LauncherType launcherType, @NotNull final WebBrowser browser, @NotNull final String playerPath, final boolean isNewPlayerInstance) { myLauncherType = launcherType; myBrowser = browser; myPlayerPath = playerPath; myNewPlayerInstance = isNewPlayerInstance; } public String getPresentableText() { switch (myLauncherType) { case OSDefault: return FlexBundle.message("system.default.application"); case Browser: return myBrowser.getName(); case Player: return FileUtil.toSystemDependentName(myPlayerPath); default: assert false; return ""; } } @NotNull public LauncherType getLauncherType() { return myLauncherType; } @SuppressWarnings("UnusedDeclaration") public void setLauncherType(@NotNull final LauncherType launcherType) { myLauncherType = launcherType; } @NotNull @OptionTag(converter = WebBrowserReferenceConverter.class) public WebBrowser getBrowser() { return myBrowser; } public void setBrowser(@Nullable WebBrowser browser) { myBrowser = browser == null ? WebBrowserManager.getInstance().getFirstBrowser(BrowserFamily.FIREFOX) : browser; } @NotNull public String getPlayerPath() { return myPlayerPath; } @SuppressWarnings("UnusedDeclaration") public void setPlayerPath(@NotNull final String playerPath) { myPlayerPath = FileUtil.toSystemIndependentName(playerPath); } public boolean isNewPlayerInstance() { return myNewPlayerInstance; } @SuppressWarnings("UnusedDeclaration") public void setNewPlayerInstance(final boolean newPlayerInstance) { myNewPlayerInstance = newPlayerInstance; } @Override public LauncherParameters clone() { try { return (LauncherParameters)super.clone(); } catch (CloneNotSupportedException e) { throw new RuntimeException(e); } } public boolean equals(final Object o) { if (this == o) return true; if (o == null || getClass() != o.getClass()) return false; final LauncherParameters that = (LauncherParameters)o; if (myBrowser != that.myBrowser) return false; if (myLauncherType != that.myLauncherType) return false; if (!myPlayerPath.equals(that.myPlayerPath)) return false; return true; } public int hashCode() { assert false; return super.hashCode(); } }