summaryrefslogtreecommitdiff
path: root/NET/worlds/scape/ToolTipManager.java
diff options
context:
space:
mode:
authorFuwn <[email protected]>2026-02-12 22:33:32 -0800
committerFuwn <[email protected]>2026-02-12 22:33:32 -0800
commitc7a9d4a6bd53ed7d61731770f2f10e8b9fd435f9 (patch)
treedf9f48bf128a6c0186a8e91857d6ff30fe0e9f18 /NET/worlds/scape/ToolTipManager.java
downloadworldsplayer-c7a9d4a6bd53ed7d61731770f2f10e8b9fd435f9.tar.xz
worldsplayer-c7a9d4a6bd53ed7d61731770f2f10e8b9fd435f9.zip
Initial commit
Diffstat (limited to 'NET/worlds/scape/ToolTipManager.java')
-rw-r--r--NET/worlds/scape/ToolTipManager.java102
1 files changed, 102 insertions, 0 deletions
diff --git a/NET/worlds/scape/ToolTipManager.java b/NET/worlds/scape/ToolTipManager.java
new file mode 100644
index 0000000..e578dd1
--- /dev/null
+++ b/NET/worlds/scape/ToolTipManager.java
@@ -0,0 +1,102 @@
+package NET.worlds.scape;
+
+import NET.worlds.console.Console;
+import NET.worlds.console.DefaultConsole;
+import NET.worlds.console.MultiLineLabel;
+import NET.worlds.core.IniFile;
+import java.awt.Color;
+import java.awt.Font;
+import java.awt.Frame;
+import java.awt.Window;
+
+public class ToolTipManager {
+ private static ToolTipManager manager_ = null;
+ private static final int FRAME_DELAY = 15;
+ private int savedX;
+ private int savedY;
+ private int savedLoops;
+ private boolean toolTipActive;
+ private WObject savedObject;
+ private Window toolTipWindow;
+ private MultiLineLabel toolTipTextArea;
+ private Font toolTipFont;
+
+ private ToolTipManager() {
+ this.savedX = this.savedY = this.savedLoops = 0;
+ this.toolTipActive = false;
+ this.savedObject = null;
+ this.toolTipFont = new Font("Arial", 0, 10);
+ Console.getActive();
+ this.toolTipWindow = new Window((Frame)Console.getFrame());
+ this.toolTipTextArea = new MultiLineLabel();
+ this.toolTipTextArea.setBackground(Color.yellow);
+ this.toolTipTextArea.setForeground(Color.black);
+ this.toolTipTextArea.setMarginWidth(2);
+ this.toolTipTextArea.setMarginHeight(2);
+ this.toolTipWindow.setFont(this.toolTipFont);
+ this.toolTipWindow.add(this.toolTipTextArea);
+ }
+
+ public static ToolTipManager toolTipManager() {
+ if (manager_ == null) {
+ manager_ = new ToolTipManager();
+ }
+
+ return manager_;
+ }
+
+ public void heartbeat() {
+ if (IniFile.gamma().getIniInt("DisableToolTips", 0) != 1) {
+ WObject obj = Camera.getMousePickWObject();
+ int x = (int)Camera.getMousePickX();
+ int y = (int)Camera.getMousePickY();
+ if (obj != null && x > 0 && y > 0 && x == this.savedX && y == this.savedY && this.savedObject == obj) {
+ this.savedLoops++;
+ } else {
+ if (this.toolTipActive) {
+ this.removeToolTip();
+ this.toolTipActive = false;
+ }
+
+ this.savedLoops = 0;
+ }
+
+ if (!this.toolTipActive && obj != null && this.savedLoops > 15) {
+ this.toolTipActive = true;
+ if (obj != null) {
+ this.savedObject = obj;
+ if (obj.getToolTipText() != null) {
+ String oldText = obj.getToolTipText();
+ String newText = oldText.replace('|', '\n');
+ this.createToolTip(this.savedX, this.savedY, newText);
+ }
+ }
+ }
+
+ this.savedX = x;
+ this.savedY = y;
+ this.savedObject = obj;
+ }
+ }
+
+ void createToolTip(int winX, int winY, String text) {
+ int baseX = ((DefaultConsole)Console.getActive()).getRender().getLocationOnScreen().x;
+ int baseY = ((DefaultConsole)Console.getActive()).getRender().getLocationOnScreen().y;
+ int offsetX = 16;
+ int offsetY = 16;
+ this.toolTipWindow.setLocation(winX + baseX + offsetX, winY + baseY + offsetY);
+ this.toolTipTextArea.setLabel(text);
+ this.toolTipWindow.setSize(this.toolTipTextArea.preferredSize());
+ this.toolTipWindow.setEnabled(false);
+ this.toolTipWindow.show();
+ }
+
+ public void removeToolTip() {
+ this.toolTipWindow.hide();
+ }
+
+ public void killToolTip() {
+ this.savedLoops = 0;
+ this.toolTipWindow.hide();
+ }
+}