Restyled the client frame
- Created new substance theme "Obsidian" - Created new ColorScheme file to hold all globally used colors - Darkened the client frame using the substance color scheme file - Changed substance's colorization factor to 1 - Tweaked the coloring on the dev plugin panel - Set the UI default foreground color on Buttons and MenuItems to White.
This commit is contained in:
@@ -32,6 +32,7 @@ import javax.swing.JButton;
|
||||
import javax.swing.JPanel;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import net.runelite.api.Client;
|
||||
import net.runelite.client.ui.ColorScheme;
|
||||
import net.runelite.client.ui.PluginPanel;
|
||||
|
||||
@Slf4j
|
||||
@@ -52,6 +53,8 @@ public class DevToolsPanel extends PluginPanel
|
||||
this.plugin = plugin;
|
||||
this.widgetInspector = widgetInspector;
|
||||
|
||||
setBackground(ColorScheme.DARK_GRAY_COLOR);
|
||||
|
||||
varTracker = new VarTracker(client);
|
||||
add(createOptionsPanel());
|
||||
}
|
||||
@@ -59,6 +62,7 @@ public class DevToolsPanel extends PluginPanel
|
||||
private JPanel createOptionsPanel()
|
||||
{
|
||||
final JPanel container = new JPanel();
|
||||
container.setBackground(ColorScheme.DARK_GRAY_COLOR);
|
||||
container.setLayout(new GridLayout(0, 2, 3, 3));
|
||||
|
||||
final JButton renderPlayersBtn = new JButton("Players");
|
||||
|
||||
@@ -67,11 +67,12 @@ import net.runelite.client.events.PluginToolbarButtonAdded;
|
||||
import net.runelite.client.events.PluginToolbarButtonRemoved;
|
||||
import net.runelite.client.events.TitleToolbarButtonAdded;
|
||||
import net.runelite.client.events.TitleToolbarButtonRemoved;
|
||||
import net.runelite.client.ui.skin.SubstanceRuneLiteLookAndFeel;
|
||||
import net.runelite.client.input.KeyManager;
|
||||
import net.runelite.client.util.OSType;
|
||||
import net.runelite.client.util.OSXUtil;
|
||||
import net.runelite.client.util.SwingUtil;
|
||||
import org.pushingpixels.substance.api.skin.SubstanceGraphiteLookAndFeel;
|
||||
import org.pushingpixels.substance.internal.SubstanceSynapse;
|
||||
import org.pushingpixels.substance.internal.utils.SubstanceCoreUtilities;
|
||||
import org.pushingpixels.substance.internal.utils.SubstanceTitlePaneUtilities;
|
||||
|
||||
@@ -327,7 +328,7 @@ public class ClientUI
|
||||
SwingUtil.setupDefaults();
|
||||
|
||||
// Use substance look and feel
|
||||
SwingUtil.setTheme(new SubstanceGraphiteLookAndFeel());
|
||||
SwingUtil.setTheme(new SubstanceRuneLiteLookAndFeel());
|
||||
|
||||
// Use custom UI font
|
||||
SwingUtil.setFont(FontManager.getRunescapeFont());
|
||||
@@ -362,6 +363,8 @@ public class ClientUI
|
||||
navContainer.setLayout(new BorderLayout(0, 0));
|
||||
navContainer.setMinimumSize(new Dimension(0, 0));
|
||||
navContainer.setMaximumSize(new Dimension(0, Integer.MAX_VALUE));
|
||||
// To reduce substance's colorization (tinting)
|
||||
navContainer.putClientProperty(SubstanceSynapse.COLORIZATION_FACTOR, 1.0);
|
||||
container.add(navContainer);
|
||||
|
||||
pluginToolbar = new ClientPluginToolbar();
|
||||
@@ -565,6 +568,7 @@ public class ClientUI
|
||||
|
||||
/**
|
||||
* Get offset of game canvas in game window
|
||||
*
|
||||
* @return game canvas offset
|
||||
*/
|
||||
public Point getCanvasOffset()
|
||||
|
||||
@@ -0,0 +1,60 @@
|
||||
/*
|
||||
* Copyright (c) 2018, Psikoi <https://github.com/psikoi>
|
||||
* All rights reserved.
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without
|
||||
* modification, are permitted provided that the following conditions are met:
|
||||
*
|
||||
* 1. Redistributions of source code must retain the above copyright notice, this
|
||||
* list of conditions and the following disclaimer.
|
||||
* 2. Redistributions in binary form must reproduce the above copyright notice,
|
||||
* this list of conditions and the following disclaimer in the documentation
|
||||
* and/or other materials provided with the distribution.
|
||||
*
|
||||
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
|
||||
* ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
|
||||
* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
|
||||
* DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR
|
||||
* ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
|
||||
* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
|
||||
* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
|
||||
* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
||||
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
|
||||
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
*/
|
||||
package net.runelite.client.ui;
|
||||
|
||||
import java.awt.Color;
|
||||
|
||||
/**
|
||||
* This class serves to hold commonly used UI colors.
|
||||
*/
|
||||
public class ColorScheme
|
||||
{
|
||||
/* The orange color used for the branding's accents */
|
||||
public static final Color BRAND_ORANGE = new Color(220, 138, 0);
|
||||
|
||||
public static final Color DARKER_GRAY_COLOR = new Color(30, 30, 30);
|
||||
public static final Color DARK_GRAY_COLOR = new Color(40, 40, 40);
|
||||
public static final Color MEDIUM_GRAY_COLOR = new Color(77, 77, 77);
|
||||
public static final Color LIGHT_GRAY_COLOR = new Color(165, 165, 165);
|
||||
public static final Color DARK_GRAY_HOVER_COLOR = new Color(35, 35, 35);
|
||||
|
||||
/* The color for the green progress bar (used in ge offers, farming tracker, etc)*/
|
||||
public static final Color PROGRESS_COMPLETE_COLOR = new Color(55, 240, 70);
|
||||
|
||||
/* The color for the red progress bar (used in ge offers, farming tracker, etc)*/
|
||||
public static final Color PROGRESS_ERROR_COLOR = new Color(230, 30, 30);
|
||||
|
||||
/* The color for the orange progress bar (used in ge offers, farming tracker, etc)*/
|
||||
public static final Color PROGRESS_INPROGRESS_COLOR = new Color(230, 150, 30);
|
||||
|
||||
/* The color for the price indicator in the ge search results */
|
||||
public static final Color GRAND_EXCHANGE_PRICE = new Color(110, 225, 110);
|
||||
|
||||
/* The color for the high alch indicator in the ge search results */
|
||||
public static final Color GRAND_EXCHANGE_ALCH = new Color(240, 207, 123);
|
||||
|
||||
/* The background color of the scrollbar's track */
|
||||
public static final Color SCROLL_TRACK_COLOR = new Color(25, 25, 25);
|
||||
}
|
||||
@@ -60,10 +60,12 @@ public abstract class PluginPanel extends JPanel
|
||||
{
|
||||
setBorder(BORDER_PADDING);
|
||||
setLayout(new GridLayout(0, 1, 0, 3));
|
||||
setBackground(ColorScheme.DARK_GRAY_COLOR);
|
||||
|
||||
final JPanel northPanel = new JPanel();
|
||||
northPanel.setLayout(new BorderLayout());
|
||||
northPanel.add(this, BorderLayout.NORTH);
|
||||
northPanel.setBackground(ColorScheme.DARK_GRAY_COLOR);
|
||||
|
||||
scrollPane = new JScrollPane(northPanel);
|
||||
scrollPane.getVerticalScrollBar().setUnitIncrement(16); //Otherwise scrollspeed is really slow
|
||||
|
||||
@@ -0,0 +1,220 @@
|
||||
/*
|
||||
* Copyright (c) 2018, Tomas Slusny <slusnucky@gmail.com>
|
||||
* Copyright (c) 2018, Psikoi <https://github.com/psikoi>
|
||||
* All rights reserved.
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without
|
||||
* modification, are permitted provided that the following conditions are met:
|
||||
*
|
||||
* 1. Redistributions of source code must retain the above copyright notice, this
|
||||
* list of conditions and the following disclaimer.
|
||||
* 2. Redistributions in binary form must reproduce the above copyright notice,
|
||||
* this list of conditions and the following disclaimer in the documentation
|
||||
* and/or other materials provided with the distribution.
|
||||
*
|
||||
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
|
||||
* ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
|
||||
* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
|
||||
* DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR
|
||||
* ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
|
||||
* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
|
||||
* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
|
||||
* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
||||
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
|
||||
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
*/
|
||||
package net.runelite.client.ui.skin;
|
||||
|
||||
import javax.swing.AbstractButton;
|
||||
import org.pushingpixels.substance.api.ComponentState;
|
||||
import org.pushingpixels.substance.api.SubstanceColorSchemeBundle;
|
||||
import org.pushingpixels.substance.api.SubstanceSkin;
|
||||
import org.pushingpixels.substance.api.SubstanceSlices.ColorSchemeAssociationKind;
|
||||
import org.pushingpixels.substance.api.SubstanceSlices.DecorationAreaType;
|
||||
import org.pushingpixels.substance.api.colorscheme.ColorSchemeSingleColorQuery;
|
||||
import org.pushingpixels.substance.api.colorscheme.SubstanceColorScheme;
|
||||
import org.pushingpixels.substance.api.painter.border.ClassicBorderPainter;
|
||||
import org.pushingpixels.substance.api.painter.border.CompositeBorderPainter;
|
||||
import org.pushingpixels.substance.api.painter.border.DelegateBorderPainter;
|
||||
import org.pushingpixels.substance.api.painter.decoration.MatteDecorationPainter;
|
||||
import org.pushingpixels.substance.api.painter.fill.FractionBasedFillPainter;
|
||||
import org.pushingpixels.substance.api.painter.highlight.ClassicHighlightPainter;
|
||||
import org.pushingpixels.substance.api.painter.overlay.BottomLineOverlayPainter;
|
||||
import org.pushingpixels.substance.api.painter.overlay.BottomShadowOverlayPainter;
|
||||
import org.pushingpixels.substance.api.painter.overlay.TopBezelOverlayPainter;
|
||||
import org.pushingpixels.substance.api.painter.overlay.TopLineOverlayPainter;
|
||||
import org.pushingpixels.substance.api.shaper.ClassicButtonShaper;
|
||||
import org.pushingpixels.substance.internal.utils.SubstanceColorUtilities;
|
||||
|
||||
public class ObsidianSkin extends SubstanceSkin
|
||||
{
|
||||
/**
|
||||
* Display name for <code>this</code> skin.
|
||||
*/
|
||||
private static final String NAME = "RuneLite";
|
||||
|
||||
/**
|
||||
* Creates a new <code>RuneLite</code> skin.
|
||||
*/
|
||||
ObsidianSkin()
|
||||
{
|
||||
final SubstanceSkin.ColorSchemes schemes = SubstanceSkin
|
||||
.getColorSchemes(getClass().getResource(NAME + ".colorschemes"));
|
||||
final SubstanceColorScheme activeScheme = schemes.get("RuneLite Active");
|
||||
final SubstanceColorScheme enabledScheme = schemes.get("RuneLite Enabled");
|
||||
|
||||
final SubstanceColorSchemeBundle defaultSchemeBundle = new SubstanceColorSchemeBundle(
|
||||
activeScheme, enabledScheme, enabledScheme);
|
||||
defaultSchemeBundle.registerColorScheme(enabledScheme, 0.6f,
|
||||
ComponentState.DISABLED_UNSELECTED);
|
||||
defaultSchemeBundle.registerColorScheme(activeScheme, 0.6f,
|
||||
ComponentState.DISABLED_SELECTED);
|
||||
|
||||
// borders
|
||||
final SubstanceColorScheme borderDisabledSelectedScheme = schemes
|
||||
.get("RuneLite Selected Disabled Border");
|
||||
final SubstanceColorScheme borderScheme = schemes.get("RuneLite Border");
|
||||
defaultSchemeBundle.registerColorScheme(borderDisabledSelectedScheme,
|
||||
ColorSchemeAssociationKind.BORDER, ComponentState.DISABLED_SELECTED);
|
||||
defaultSchemeBundle.registerColorScheme(borderScheme, ColorSchemeAssociationKind.BORDER);
|
||||
|
||||
// marks
|
||||
final SubstanceColorScheme markActiveScheme = schemes.get("RuneLite Mark Active");
|
||||
defaultSchemeBundle.registerColorScheme(markActiveScheme, ColorSchemeAssociationKind.MARK,
|
||||
ComponentState.getActiveStates());
|
||||
defaultSchemeBundle.registerColorScheme(markActiveScheme, 0.6f,
|
||||
ColorSchemeAssociationKind.MARK, ComponentState.DISABLED_SELECTED,
|
||||
ComponentState.DISABLED_UNSELECTED);
|
||||
|
||||
// separators
|
||||
final SubstanceColorScheme separatorScheme = schemes.get("RuneLite Separator");
|
||||
defaultSchemeBundle.registerColorScheme(separatorScheme,
|
||||
ColorSchemeAssociationKind.SEPARATOR);
|
||||
|
||||
// tab borders
|
||||
defaultSchemeBundle.registerColorScheme(schemes.get("RuneLite Tab Border"),
|
||||
ColorSchemeAssociationKind.TAB_BORDER, ComponentState.getActiveStates());
|
||||
|
||||
final SubstanceColorScheme watermarkScheme = schemes.get("RuneLite Watermark");
|
||||
|
||||
this.registerDecorationAreaSchemeBundle(defaultSchemeBundle, watermarkScheme,
|
||||
DecorationAreaType.NONE);
|
||||
|
||||
final SubstanceColorSchemeBundle decorationsSchemeBundle = new SubstanceColorSchemeBundle(
|
||||
activeScheme, enabledScheme, enabledScheme);
|
||||
decorationsSchemeBundle.registerColorScheme(enabledScheme, 0.5f,
|
||||
ComponentState.DISABLED_UNSELECTED);
|
||||
|
||||
// borders
|
||||
decorationsSchemeBundle.registerColorScheme(borderDisabledSelectedScheme,
|
||||
ColorSchemeAssociationKind.BORDER, ComponentState.DISABLED_SELECTED);
|
||||
decorationsSchemeBundle.registerColorScheme(borderScheme,
|
||||
ColorSchemeAssociationKind.BORDER);
|
||||
|
||||
// marks
|
||||
decorationsSchemeBundle.registerColorScheme(markActiveScheme,
|
||||
ColorSchemeAssociationKind.MARK, ComponentState.getActiveStates());
|
||||
|
||||
// separators
|
||||
final SubstanceColorScheme separatorDecorationsScheme = schemes
|
||||
.get("RuneLite Decorations Separator");
|
||||
decorationsSchemeBundle.registerColorScheme(separatorDecorationsScheme,
|
||||
ColorSchemeAssociationKind.SEPARATOR);
|
||||
|
||||
final SubstanceColorScheme decorationsWatermarkScheme = schemes
|
||||
.get("RuneLite Decorations Watermark");
|
||||
|
||||
this.registerDecorationAreaSchemeBundle(decorationsSchemeBundle, decorationsWatermarkScheme,
|
||||
DecorationAreaType.TOOLBAR, DecorationAreaType.GENERAL, DecorationAreaType.FOOTER);
|
||||
|
||||
final SubstanceColorSchemeBundle headerSchemeBundle = new SubstanceColorSchemeBundle(activeScheme,
|
||||
enabledScheme, enabledScheme);
|
||||
headerSchemeBundle.registerColorScheme(enabledScheme, 0.5f,
|
||||
ComponentState.DISABLED_UNSELECTED);
|
||||
|
||||
// borders
|
||||
final SubstanceColorScheme headerBorderScheme = schemes.get("RuneLite Header Border");
|
||||
headerSchemeBundle.registerColorScheme(borderDisabledSelectedScheme,
|
||||
ColorSchemeAssociationKind.BORDER, ComponentState.DISABLED_SELECTED);
|
||||
headerSchemeBundle.registerColorScheme(headerBorderScheme,
|
||||
ColorSchemeAssociationKind.BORDER);
|
||||
// marks
|
||||
headerSchemeBundle.registerColorScheme(markActiveScheme, ColorSchemeAssociationKind.MARK,
|
||||
ComponentState.getActiveStates());
|
||||
|
||||
headerSchemeBundle.registerHighlightColorScheme(activeScheme, 0.7f,
|
||||
ComponentState.ROLLOVER_UNSELECTED, ComponentState.ROLLOVER_ARMED,
|
||||
ComponentState.ARMED);
|
||||
headerSchemeBundle.registerHighlightColorScheme(activeScheme, 0.8f,
|
||||
ComponentState.SELECTED);
|
||||
headerSchemeBundle.registerHighlightColorScheme(activeScheme, 1.0f,
|
||||
ComponentState.ROLLOVER_SELECTED);
|
||||
|
||||
final SubstanceColorScheme headerWatermarkScheme = schemes.get("RuneLite Header Watermark");
|
||||
|
||||
this.registerDecorationAreaSchemeBundle(headerSchemeBundle, headerWatermarkScheme,
|
||||
DecorationAreaType.PRIMARY_TITLE_PANE, DecorationAreaType.SECONDARY_TITLE_PANE,
|
||||
DecorationAreaType.HEADER);
|
||||
|
||||
setTabFadeStart(0.2);
|
||||
setTabFadeEnd(0.9);
|
||||
|
||||
// Add overlay painters to paint drop shadows along the bottom
|
||||
// edges of toolbars and footers
|
||||
this.addOverlayPainter(BottomShadowOverlayPainter.getInstance(),
|
||||
DecorationAreaType.TOOLBAR);
|
||||
this.addOverlayPainter(BottomShadowOverlayPainter.getInstance(), DecorationAreaType.FOOTER);
|
||||
|
||||
// add an overlay painter to paint a dark line along the bottom
|
||||
// edge of toolbars
|
||||
final BottomLineOverlayPainter toolbarBottomLineOverlayPainter = new BottomLineOverlayPainter(
|
||||
(SubstanceColorScheme scheme) -> scheme.getUltraDarkColor().darker());
|
||||
this.addOverlayPainter(toolbarBottomLineOverlayPainter, DecorationAreaType.TOOLBAR);
|
||||
|
||||
// add an overlay painter to paint a dark line along the bottom
|
||||
// edge of toolbars
|
||||
final TopLineOverlayPainter toolbarTopLineOverlayPainter = new TopLineOverlayPainter(
|
||||
(SubstanceColorScheme scheme) -> SubstanceColorUtilities
|
||||
.getAlphaColor(scheme.getForegroundColor(), 32));
|
||||
this.addOverlayPainter(toolbarTopLineOverlayPainter, DecorationAreaType.TOOLBAR);
|
||||
|
||||
// add an overlay painter to paint a bezel line along the top
|
||||
// edge of footer
|
||||
final TopBezelOverlayPainter footerTopBezelOverlayPainter = new TopBezelOverlayPainter(
|
||||
(SubstanceColorScheme scheme) -> scheme.getUltraDarkColor().darker(),
|
||||
(SubstanceColorScheme scheme) -> SubstanceColorUtilities
|
||||
.getAlphaColor(scheme.getForegroundColor(), 32));
|
||||
this.addOverlayPainter(footerTopBezelOverlayPainter, DecorationAreaType.FOOTER);
|
||||
|
||||
this.setTabFadeStart(0.18);
|
||||
this.setTabFadeEnd(0.18);
|
||||
|
||||
// Set button shaper to use "flat" design
|
||||
this.buttonShaper = new ClassicButtonShaper()
|
||||
{
|
||||
@Override
|
||||
public float getCornerRadius(AbstractButton button, float insets)
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
};
|
||||
|
||||
this.watermark = null;
|
||||
this.fillPainter = new FractionBasedFillPainter("RuneLite",
|
||||
new float[]{0.0f, 0.5f, 1.0f},
|
||||
new ColorSchemeSingleColorQuery[]{ColorSchemeSingleColorQuery.ULTRALIGHT,
|
||||
ColorSchemeSingleColorQuery.LIGHT, ColorSchemeSingleColorQuery.LIGHT});
|
||||
this.decorationPainter = new MatteDecorationPainter();
|
||||
this.highlightPainter = new ClassicHighlightPainter();
|
||||
this.borderPainter = new CompositeBorderPainter("RuneLite", new ClassicBorderPainter(),
|
||||
new DelegateBorderPainter("RuneLite Inner", new ClassicBorderPainter(), 0x40FFFFFF,
|
||||
0x20FFFFFF, 0x00FFFFFF,
|
||||
(SubstanceColorScheme scheme) -> scheme.tint(0.2f)));
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getDisplayName()
|
||||
{
|
||||
return NAME;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,36 @@
|
||||
/*
|
||||
* Copyright (c) 2018, Tomas Slusny <slusnucky@gmail.com>
|
||||
* Copyright (c) 2018, Psikoi <https://github.com/psikoi>
|
||||
* All rights reserved.
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without
|
||||
* modification, are permitted provided that the following conditions are met:
|
||||
*
|
||||
* 1. Redistributions of source code must retain the above copyright notice, this
|
||||
* list of conditions and the following disclaimer.
|
||||
* 2. Redistributions in binary form must reproduce the above copyright notice,
|
||||
* this list of conditions and the following disclaimer in the documentation
|
||||
* and/or other materials provided with the distribution.
|
||||
*
|
||||
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
|
||||
* ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
|
||||
* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
|
||||
* DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR
|
||||
* ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
|
||||
* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
|
||||
* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
|
||||
* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
||||
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
|
||||
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
*/
|
||||
package net.runelite.client.ui.skin;
|
||||
|
||||
import org.pushingpixels.substance.api.SubstanceLookAndFeel;
|
||||
|
||||
public class SubstanceRuneLiteLookAndFeel extends SubstanceLookAndFeel
|
||||
{
|
||||
public SubstanceRuneLiteLookAndFeel()
|
||||
{
|
||||
super(new ObsidianSkin());
|
||||
}
|
||||
}
|
||||
@@ -25,6 +25,7 @@
|
||||
package net.runelite.client.util;
|
||||
|
||||
import java.awt.AWTException;
|
||||
import java.awt.Color;
|
||||
import java.awt.Dimension;
|
||||
import java.awt.Font;
|
||||
import java.awt.Frame;
|
||||
@@ -79,6 +80,9 @@ public class SwingUtil
|
||||
ToolTipManager.sharedInstance().setLightWeightPopupEnabled(false);
|
||||
JPopupMenu.setDefaultLightWeightPopupEnabled(false);
|
||||
|
||||
UIManager.put("Button.foreground", Color.WHITE);
|
||||
UIManager.put("MenuItem.foreground", Color.WHITE);
|
||||
|
||||
// Do not render shadows under popups/tooltips.
|
||||
// Fixes black boxes under popups that are above the game applet.
|
||||
System.setProperty("jgoodies.popupDropShadowEnabled", "false");
|
||||
@@ -210,7 +214,7 @@ public class SwingUtil
|
||||
result = JOptionPane.showConfirmDialog(
|
||||
frame,
|
||||
"Are you sure you want to exit?", "Exit",
|
||||
JOptionPane .OK_CANCEL_OPTION,
|
||||
JOptionPane.OK_CANCEL_OPTION,
|
||||
JOptionPane.QUESTION_MESSAGE);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -0,0 +1,166 @@
|
||||
# Copyright (c) 2018, Tomas Slusny <slusnucky@gmail.com>
|
||||
# Copyright (c) 2018, Psikoi <https://github.com/psikoi>
|
||||
# All rights reserved.
|
||||
#
|
||||
# Redistribution and use in source and binary forms, with or without
|
||||
# modification, are permitted provided that the following conditions are met:
|
||||
#
|
||||
# 1. Redistributions of source code must retain the above copyright notice, this
|
||||
# list of conditions and the following disclaimer.
|
||||
# 2. Redistributions in binary form must reproduce the above copyright notice,
|
||||
# this list of conditions and the following disclaimer in the documentation
|
||||
# and/or other materials provided with the distribution.
|
||||
#
|
||||
# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
|
||||
# ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
|
||||
# WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
|
||||
# DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR
|
||||
# ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
|
||||
# (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
|
||||
# LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
|
||||
# ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
||||
# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
|
||||
# SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
|
||||
RuneLite Enabled {
|
||||
kind=Dark
|
||||
colorUltraLight=#232323
|
||||
colorExtraLight=#232323
|
||||
colorLight=#232323
|
||||
colorMid=#232323
|
||||
colorDark=#232323
|
||||
colorUltraDark=#232323
|
||||
colorForeground=#C6C6C6
|
||||
}
|
||||
|
||||
RuneLite Active {
|
||||
kind=Light
|
||||
colorUltraLight=#4e4e4e
|
||||
colorExtraLight=#4e4e4e
|
||||
colorLight=#4e4e4e
|
||||
colorMid=#232323
|
||||
colorDark=#232323
|
||||
colorUltraDark=#232323
|
||||
colorForeground=#000000
|
||||
}
|
||||
|
||||
RuneLite Selected Disabled Border {
|
||||
kind=Dark
|
||||
colorUltraLight=#191919
|
||||
colorExtraLight=#191919
|
||||
colorLight=#191919
|
||||
colorMid=#191919
|
||||
colorDark=#191919
|
||||
colorUltraDark=#191919
|
||||
colorForeground=#C6C6C6
|
||||
}
|
||||
|
||||
RuneLite Border {
|
||||
kind=Dark
|
||||
colorUltraLight=#191919
|
||||
colorExtraLight=#191919
|
||||
colorLight=#191919
|
||||
colorMid=#191919
|
||||
colorDark=#191919
|
||||
colorUltraDark=#191919
|
||||
colorForeground=#C6C6C6
|
||||
}
|
||||
|
||||
RuneLite Tab Border {
|
||||
kind=Light
|
||||
colorUltraLight=#232323
|
||||
colorExtraLight=#232323
|
||||
colorLight=#232323
|
||||
colorMid=#232323
|
||||
colorDark=#232323
|
||||
colorUltraDark=#232323
|
||||
colorForeground=#232323
|
||||
}
|
||||
|
||||
RuneLite Mark Active {
|
||||
kind=Dark
|
||||
colorUltraLight=#191919
|
||||
colorExtraLight=#191919
|
||||
colorLight=#191919
|
||||
colorMid=#191919
|
||||
colorDark=#191919
|
||||
colorUltraDark=#191919
|
||||
colorForeground=#191919
|
||||
}
|
||||
|
||||
RuneLite Highlight {
|
||||
kind=Light
|
||||
colorUltraLight=#C6C6C6
|
||||
colorExtraLight=#C6C6C6
|
||||
colorLight=#C6C6C6
|
||||
colorMid=#C6C6C6
|
||||
colorDark=#C6C6C6
|
||||
colorUltraDark=#C6C6C6
|
||||
colorForeground=#191919
|
||||
}
|
||||
|
||||
RuneLite Watermark {
|
||||
kind=Light
|
||||
colorUltraLight=#313131
|
||||
colorExtraLight=#313131
|
||||
colorLight=#313131
|
||||
colorMid=#313131
|
||||
colorDark=#313131
|
||||
colorUltraDark=#313131
|
||||
colorForeground=#C6C6C6
|
||||
}
|
||||
|
||||
RuneLite Decorations Watermark {
|
||||
kind=Light
|
||||
colorUltraLight=#1e1e1e
|
||||
colorExtraLight=#1e1e1e
|
||||
colorLight=#1e1e1e
|
||||
colorMid=#1e1e1e
|
||||
colorDark=#1e1e1e
|
||||
colorUltraDark=#1e1e1e
|
||||
colorForeground=#1e1e1e
|
||||
}
|
||||
|
||||
RuneLite Separator {
|
||||
kind=Dark
|
||||
colorUltraLight=#232323
|
||||
colorExtraLight=#232323
|
||||
colorLight=#232323
|
||||
colorMid=#232323
|
||||
colorDark=#232323
|
||||
colorUltraDark=#232323
|
||||
colorForeground=#232323
|
||||
}
|
||||
|
||||
RuneLite Decorations Separator {
|
||||
kind=Dark
|
||||
colorUltraLight=#232323
|
||||
colorExtraLight=#232323
|
||||
colorLight=#232323
|
||||
colorMid=#232323
|
||||
colorDark=#232323
|
||||
colorUltraDark=#232323
|
||||
colorForeground=#232323
|
||||
}
|
||||
|
||||
RuneLite Header Watermark {
|
||||
kind=Dark
|
||||
colorUltraLight=#1e1e1e
|
||||
colorExtraLight=#1e1e1e
|
||||
colorLight=#1e1e1e
|
||||
colorMid=#1e1e1e
|
||||
colorDark=#1e1e1e
|
||||
colorUltraDark=#1e1e1e
|
||||
colorForeground=#C6C6C6
|
||||
}
|
||||
|
||||
RuneLite Header Border {
|
||||
kind=Dark
|
||||
colorUltraLight=#1e1e1e
|
||||
colorExtraLight=#1e1e1e
|
||||
colorLight=#1e1e1e
|
||||
colorMid=#1e1e1e
|
||||
colorDark=#1e1e1e
|
||||
colorUltraDark=#1e1e1e
|
||||
colorForeground=#C6C6C6
|
||||
}
|
||||
Reference in New Issue
Block a user