diff --git a/src/main/java/icons/ResourceIcon.java b/src/main/java/icons/ResourceIcon.java new file mode 100644 index 0000000..cb31808 --- /dev/null +++ b/src/main/java/icons/ResourceIcon.java @@ -0,0 +1,31 @@ +package icons; + +import com.intellij.ui.IconManager; + +import javax.swing.Icon; +import java.awt.Component; +import java.awt.Graphics; + +public class ResourceIcon implements Icon { + + private final Icon baseIcon; + + public ResourceIcon(String path) { + this.baseIcon = IconManager.getInstance().getIcon(path, ResourceIcon.class); + } + + @Override + public void paintIcon(Component c, Graphics g, int x, int y) { + this.baseIcon.paintIcon(c, g, x, y); + } + + @Override + public int getIconWidth() { + return this.baseIcon.getIconWidth(); + } + + @Override + public int getIconHeight() { + return this.baseIcon.getIconHeight(); + } +} diff --git a/src/main/java/icons/SingleHotSwapIcons.java b/src/main/java/icons/SingleHotSwapIcons.java index 1913804..a26e3d5 100644 --- a/src/main/java/icons/SingleHotSwapIcons.java +++ b/src/main/java/icons/SingleHotSwapIcons.java @@ -1,43 +1,15 @@ package icons; -import com.intellij.icons.AllIcons; -import com.intellij.ui.IconManager; -import com.intellij.ui.JBColor; import org.jetbrains.annotations.NotNull; import javax.swing.Icon; -import java.awt.Color; -import java.awt.Component; -import java.awt.Graphics; -import java.awt.Graphics2D; public class SingleHotSwapIcons { - public static final @NotNull - Icon SINGLE_HOTSWAP = new Icon() { - private final Icon baseIcon = AllIcons.Actions.Compile; + @NotNull + public static final Icon SINGLE_HOTSWAP = new ResourceIcon("/icons/singlehotswap.svg"); - @Override - public void paintIcon(Component c, Graphics g, int x, int y) { - IconManager.getInstance() - .colorize( - (Graphics2D) g, - this.baseIcon, - new JBColor( - new Color(0x3388FF), - new Color(0x3388FF) - ) - ).paintIcon(c, g, x, y); - } + @NotNull + public static final Icon SINGLE_HOTSWAP_REDESIGN = new ResourceIcon("/icons/singlehotswap_redesign.svg"); - @Override - public int getIconWidth() { - return this.baseIcon.getIconWidth(); - } - - @Override - public int getIconHeight() { - return this.baseIcon.getIconHeight(); - } - }; } diff --git a/src/main/java/net/labymod/intellij/singlehotswap/actions/SingleHotswapAction.java b/src/main/java/net/labymod/intellij/singlehotswap/actions/SingleHotswapAction.java index 3edfc8b..0371564 100644 --- a/src/main/java/net/labymod/intellij/singlehotswap/actions/SingleHotswapAction.java +++ b/src/main/java/net/labymod/intellij/singlehotswap/actions/SingleHotswapAction.java @@ -115,6 +115,7 @@ public void actionPerformed(@NotNull AnActionEvent event) { // Get debugger session DebuggerManagerEx debuggerManager = DebuggerManagerEx.getInstanceEx(project); DebuggerSession debugger = debuggerManager.getContext().getDebuggerSession(); + assert debugger != null; HotSwapProgressImpl progress = new HotSwapProgressImpl(project); try { @@ -126,7 +127,8 @@ public void actionPerformed(@NotNull AnActionEvent event) { progress.setTitle("Initialize hotswap task..."); // Create compiler and progress - AbstractCompiler compiler = context.compiler(this.configuration); + boolean forceDefault = event.getInputEvent().isShiftDown(); + AbstractCompiler compiler = context.compiler(this.configuration, forceDefault); ClassFile outputFile = context.getClassFile(psiFile); VirtualFile sourceFile = psiFile.getVirtualFile(); diff --git a/src/main/java/net/labymod/intellij/singlehotswap/hotswap/Context.java b/src/main/java/net/labymod/intellij/singlehotswap/hotswap/Context.java index 9cba7f7..479167d 100644 --- a/src/main/java/net/labymod/intellij/singlehotswap/hotswap/Context.java +++ b/src/main/java/net/labymod/intellij/singlehotswap/hotswap/Context.java @@ -19,9 +19,10 @@ public interface Context { * Returns the compiler for this context * * @param configuration The configuration to use to modify the compiler settings + * @param forceDefault Whether to force the default compiler * @return The compiler for this context */ - AbstractCompiler compiler(SingleHotswapConfiguration configuration); + AbstractCompiler compiler(SingleHotswapConfiguration configuration, boolean forceDefault); /** * Returns the class file for the given PSI file diff --git a/src/main/java/net/labymod/intellij/singlehotswap/hotswap/impl/AbstractContext.java b/src/main/java/net/labymod/intellij/singlehotswap/hotswap/impl/AbstractContext.java index 4d2e40f..d30c587 100644 --- a/src/main/java/net/labymod/intellij/singlehotswap/hotswap/impl/AbstractContext.java +++ b/src/main/java/net/labymod/intellij/singlehotswap/hotswap/impl/AbstractContext.java @@ -29,7 +29,7 @@ public abstract class AbstractContext implements Context { @Override - public AbstractCompiler compiler(SingleHotswapConfiguration configuration) { + public AbstractCompiler compiler(SingleHotswapConfiguration configuration, boolean forceDefault) { return new DefaultCompiler(this); } diff --git a/src/main/java/net/labymod/intellij/singlehotswap/hotswap/impl/type/JavaContext.java b/src/main/java/net/labymod/intellij/singlehotswap/hotswap/impl/type/JavaContext.java index 9851fb1..fa07fbc 100644 --- a/src/main/java/net/labymod/intellij/singlehotswap/hotswap/impl/type/JavaContext.java +++ b/src/main/java/net/labymod/intellij/singlehotswap/hotswap/impl/type/JavaContext.java @@ -16,9 +16,9 @@ public class JavaContext extends AbstractContext { @Override - public AbstractCompiler compiler(SingleHotswapConfiguration configuration) { + public AbstractCompiler compiler(SingleHotswapConfiguration configuration, boolean forceDefault) { // Choose between built-in Java compiler or default compiler - return configuration.isUseBuiltInCompiler() + return configuration.isUseBuiltInCompiler() && !forceDefault ? new BuiltInJavaCompiler(this) : new DefaultCompiler(this); } diff --git a/src/main/resources/META-INF/plugin.xml b/src/main/resources/META-INF/plugin.xml index b2d783e..e80029a 100644 --- a/src/main/resources/META-INF/plugin.xml +++ b/src/main/resources/META-INF/plugin.xml @@ -1,7 +1,7 @@ net.labymod.intellij.singlehotswap Single Hotswap - 2.1 + 2.2 LabyMedia @@ -35,17 +35,29 @@ - + + + +
  • Added hotswap button to new UI
  • +
  • Added option to force the default compiler when holding shift while clicking on the hotswap button
  • + v2.1 (17.07.2022):
    • Fixed support for kotlin & inner classes
    • diff --git a/src/main/resources/icons/singlehotswap.svg b/src/main/resources/icons/singlehotswap.svg new file mode 100644 index 0000000..e35ca63 --- /dev/null +++ b/src/main/resources/icons/singlehotswap.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/main/resources/icons/singlehotswap_redesign.svg b/src/main/resources/icons/singlehotswap_redesign.svg new file mode 100644 index 0000000..b7f78e5 --- /dev/null +++ b/src/main/resources/icons/singlehotswap_redesign.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file