Merge pull request #394 from UniquePassive/resize-frame
Add a config setting for the game's size
This commit is contained in:
@@ -140,6 +140,7 @@ public class RuneLite
|
|||||||
eventBus.register(overlayRenderer);
|
eventBus.register(overlayRenderer);
|
||||||
eventBus.register(menuManager);
|
eventBus.register(menuManager);
|
||||||
eventBus.register(chatMessageManager);
|
eventBus.register(chatMessageManager);
|
||||||
|
eventBus.register(gui);
|
||||||
|
|
||||||
// Setup the notifier
|
// Setup the notifier
|
||||||
notifier = new Notifier(properties.getTitle(), gui.getTrayIcon());
|
notifier = new Notifier(properties.getTitle(), gui.getTrayIcon());
|
||||||
@@ -161,7 +162,19 @@ public class RuneLite
|
|||||||
// Load the session, including saved configuration
|
// Load the session, including saved configuration
|
||||||
sessionManager.loadSession();
|
sessionManager.loadSession();
|
||||||
|
|
||||||
SwingUtilities.invokeAndWait(() -> gui.showWithChrome(runeliteConfig.enableCustomChrome()));
|
SwingUtilities.invokeAndWait(() ->
|
||||||
|
{
|
||||||
|
if (client != null)
|
||||||
|
{
|
||||||
|
client.setSize(runeliteConfig.gameSize());
|
||||||
|
client.setPreferredSize(runeliteConfig.gameSize());
|
||||||
|
|
||||||
|
client.getParent().setPreferredSize(runeliteConfig.gameSize());
|
||||||
|
client.getParent().setSize(runeliteConfig.gameSize());
|
||||||
|
}
|
||||||
|
|
||||||
|
gui.showWithChrome(runeliteConfig.enableCustomChrome());
|
||||||
|
});
|
||||||
|
|
||||||
eventBus.post(new ClientUILoaded());
|
eventBus.post(new ClientUILoaded());
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -28,6 +28,7 @@ import com.google.common.eventbus.EventBus;
|
|||||||
import com.google.inject.Injector;
|
import com.google.inject.Injector;
|
||||||
import com.google.inject.Key;
|
import com.google.inject.Key;
|
||||||
import java.awt.Color;
|
import java.awt.Color;
|
||||||
|
import java.awt.Dimension;
|
||||||
import java.io.File;
|
import java.io.File;
|
||||||
import java.io.FileInputStream;
|
import java.io.FileInputStream;
|
||||||
import java.io.FileNotFoundException;
|
import java.io.FileNotFoundException;
|
||||||
@@ -412,6 +413,13 @@ public class ConfigManager
|
|||||||
{
|
{
|
||||||
return Color.decode(str);
|
return Color.decode(str);
|
||||||
}
|
}
|
||||||
|
if (type == Dimension.class)
|
||||||
|
{
|
||||||
|
String[] splitStr = str.split("x");
|
||||||
|
int width = Integer.parseInt(splitStr[0]);
|
||||||
|
int height = Integer.parseInt(splitStr[1]);
|
||||||
|
return new Dimension(width, height);
|
||||||
|
}
|
||||||
if (type.isEnum())
|
if (type.isEnum())
|
||||||
{
|
{
|
||||||
return Enum.valueOf((Class<? extends Enum>) type, str);
|
return Enum.valueOf((Class<? extends Enum>) type, str);
|
||||||
@@ -429,6 +437,11 @@ public class ConfigManager
|
|||||||
{
|
{
|
||||||
return ((Enum) object).name();
|
return ((Enum) object).name();
|
||||||
}
|
}
|
||||||
|
if (object instanceof Dimension)
|
||||||
|
{
|
||||||
|
Dimension d = (Dimension) object;
|
||||||
|
return d.width + "x" + d.height;
|
||||||
|
}
|
||||||
return object.toString();
|
return object.toString();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -24,6 +24,8 @@
|
|||||||
*/
|
*/
|
||||||
package net.runelite.client.config;
|
package net.runelite.client.config;
|
||||||
|
|
||||||
|
import java.awt.Dimension;
|
||||||
|
|
||||||
@ConfigGroup(
|
@ConfigGroup(
|
||||||
keyName = "runelite",
|
keyName = "runelite",
|
||||||
name = "RuneLite",
|
name = "RuneLite",
|
||||||
@@ -31,6 +33,16 @@ package net.runelite.client.config;
|
|||||||
)
|
)
|
||||||
public interface RuneLiteConfig extends Config
|
public interface RuneLiteConfig extends Config
|
||||||
{
|
{
|
||||||
|
@ConfigItem(
|
||||||
|
keyName = "gameSize",
|
||||||
|
name = "Game size",
|
||||||
|
description = "The game will resize to this resolution upon starting the client"
|
||||||
|
)
|
||||||
|
default Dimension gameSize()
|
||||||
|
{
|
||||||
|
return new Dimension(765, 503);
|
||||||
|
}
|
||||||
|
|
||||||
@ConfigItem(
|
@ConfigItem(
|
||||||
keyName = "chatCommandsRecolorEnabled",
|
keyName = "chatCommandsRecolorEnabled",
|
||||||
name = "Enable chat commands recolor",
|
name = "Enable chat commands recolor",
|
||||||
|
|||||||
@@ -27,6 +27,7 @@ package net.runelite.client.plugins.config;
|
|||||||
import java.awt.BorderLayout;
|
import java.awt.BorderLayout;
|
||||||
import java.awt.Color;
|
import java.awt.Color;
|
||||||
import java.awt.Component;
|
import java.awt.Component;
|
||||||
|
import java.awt.Dimension;
|
||||||
import java.awt.event.FocusEvent;
|
import java.awt.event.FocusEvent;
|
||||||
import java.awt.event.FocusListener;
|
import java.awt.event.FocusListener;
|
||||||
import java.awt.event.ItemEvent;
|
import java.awt.event.ItemEvent;
|
||||||
@@ -57,6 +58,7 @@ import javax.swing.JTextField;
|
|||||||
import javax.swing.SpinnerModel;
|
import javax.swing.SpinnerModel;
|
||||||
import javax.swing.SpinnerNumberModel;
|
import javax.swing.SpinnerNumberModel;
|
||||||
import javax.swing.SwingConstants;
|
import javax.swing.SwingConstants;
|
||||||
|
import javax.swing.event.ChangeListener;
|
||||||
import javax.swing.event.DocumentEvent;
|
import javax.swing.event.DocumentEvent;
|
||||||
import javax.swing.event.DocumentListener;
|
import javax.swing.event.DocumentListener;
|
||||||
import lombok.extern.slf4j.Slf4j;
|
import lombok.extern.slf4j.Slf4j;
|
||||||
@@ -329,6 +331,41 @@ public class ConfigPanel extends PluginPanel
|
|||||||
item.add(colorPicker, BorderLayout.EAST);
|
item.add(colorPicker, BorderLayout.EAST);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (cid.getType() == Dimension.class)
|
||||||
|
{
|
||||||
|
JPanel dimensionPanel = new JPanel();
|
||||||
|
dimensionPanel.setLayout(new BorderLayout());
|
||||||
|
|
||||||
|
String str = configManager.getConfiguration(cd.getGroup().keyName(), cid.getItem().keyName());
|
||||||
|
String[] splitStr = str.split("x");
|
||||||
|
int width = Integer.parseInt(splitStr[0]);
|
||||||
|
int height = Integer.parseInt(splitStr[1]);
|
||||||
|
|
||||||
|
SpinnerModel widthModel = new SpinnerNumberModel(width, 0, Integer.MAX_VALUE, 1);
|
||||||
|
JSpinner widthSpinner = new JSpinner(widthModel);
|
||||||
|
Component widthEditor = widthSpinner.getEditor();
|
||||||
|
JFormattedTextField widthSpinnerTextField = ((JSpinner.DefaultEditor) widthEditor).getTextField();
|
||||||
|
widthSpinnerTextField.setColumns(4);
|
||||||
|
|
||||||
|
SpinnerModel heightModel = new SpinnerNumberModel(height, 0, Integer.MAX_VALUE, 1);
|
||||||
|
JSpinner heightSpinner = new JSpinner(heightModel);
|
||||||
|
Component heightEditor = heightSpinner.getEditor();
|
||||||
|
JFormattedTextField heightSpinnerTextField = ((JSpinner.DefaultEditor) heightEditor).getTextField();
|
||||||
|
heightSpinnerTextField.setColumns(4);
|
||||||
|
|
||||||
|
ChangeListener listener = e ->
|
||||||
|
configManager.setConfiguration(cd.getGroup().keyName(), cid.getItem().keyName(), widthSpinner.getValue() + "x" + heightSpinner.getValue());
|
||||||
|
|
||||||
|
widthSpinner.addChangeListener(listener);
|
||||||
|
heightSpinner.addChangeListener(listener);
|
||||||
|
|
||||||
|
dimensionPanel.add(widthSpinner, BorderLayout.WEST);
|
||||||
|
dimensionPanel.add(new JLabel(" x "), BorderLayout.CENTER);
|
||||||
|
dimensionPanel.add(heightSpinner, BorderLayout.EAST);
|
||||||
|
|
||||||
|
item.add(dimensionPanel, BorderLayout.EAST);
|
||||||
|
}
|
||||||
|
|
||||||
if (cid.getType().isEnum())
|
if (cid.getType().isEnum())
|
||||||
{
|
{
|
||||||
Class<? extends Enum> type = (Class<? extends Enum>) cid.getType();
|
Class<? extends Enum> type = (Class<? extends Enum>) cid.getType();
|
||||||
|
|||||||
@@ -61,10 +61,12 @@ import javax.swing.ToolTipManager;
|
|||||||
import javax.swing.UIManager;
|
import javax.swing.UIManager;
|
||||||
import javax.swing.UnsupportedLookAndFeelException;
|
import javax.swing.UnsupportedLookAndFeelException;
|
||||||
import javax.swing.plaf.FontUIResource;
|
import javax.swing.plaf.FontUIResource;
|
||||||
|
import com.google.common.eventbus.Subscribe;
|
||||||
import lombok.Getter;
|
import lombok.Getter;
|
||||||
import lombok.extern.slf4j.Slf4j;
|
import lombok.extern.slf4j.Slf4j;
|
||||||
import net.runelite.api.Client;
|
import net.runelite.api.Client;
|
||||||
import net.runelite.api.GameState;
|
import net.runelite.api.GameState;
|
||||||
|
import net.runelite.api.events.ConfigChanged;
|
||||||
import net.runelite.client.RuneLiteProperties;
|
import net.runelite.client.RuneLiteProperties;
|
||||||
import org.pushingpixels.substance.api.skin.SubstanceGraphiteLookAndFeel;
|
import org.pushingpixels.substance.api.skin.SubstanceGraphiteLookAndFeel;
|
||||||
import org.pushingpixels.substance.internal.SubstanceSynapse;
|
import org.pushingpixels.substance.internal.SubstanceSynapse;
|
||||||
@@ -250,6 +252,52 @@ public class ClientUI extends JFrame
|
|||||||
repaint();
|
repaint();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Subscribe
|
||||||
|
public void onConfigChanged(ConfigChanged event)
|
||||||
|
{
|
||||||
|
if (!event.getGroup().equals("runelite"))
|
||||||
|
{
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!event.getKey().equals("gameSize"))
|
||||||
|
{
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (client == null)
|
||||||
|
{
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
String[] splitStr = event.getNewValue().split("x");
|
||||||
|
int width = Integer.parseInt(splitStr[0]);
|
||||||
|
int height = Integer.parseInt(splitStr[1]);
|
||||||
|
|
||||||
|
// The upper bounds are defined by the applet's max size
|
||||||
|
// The lower bounds are taken care of by ClientPanel's setMinimumSize
|
||||||
|
|
||||||
|
if (width > 7680)
|
||||||
|
{
|
||||||
|
width = 7680;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (height > 2160)
|
||||||
|
{
|
||||||
|
height = 2160;
|
||||||
|
}
|
||||||
|
|
||||||
|
Dimension size = new Dimension(width, height);
|
||||||
|
|
||||||
|
client.setSize(size);
|
||||||
|
client.setPreferredSize(size);
|
||||||
|
|
||||||
|
client.getParent().setPreferredSize(size);
|
||||||
|
client.getParent().setSize(size);
|
||||||
|
|
||||||
|
pack();
|
||||||
|
}
|
||||||
|
|
||||||
private static void setUIFont(FontUIResource f)
|
private static void setUIFont(FontUIResource f)
|
||||||
{
|
{
|
||||||
final Enumeration keys = UIManager.getDefaults().keys();
|
final Enumeration keys = UIManager.getDefaults().keys();
|
||||||
|
|||||||
Reference in New Issue
Block a user