Skip to content

Commit

Permalink
Merge pull request #4 from Doogie13/master
Browse files Browse the repository at this point in the history
Added Tabs
  • Loading branch information
Lokfid authored Aug 21, 2024
2 parents 0918b1e + 0307ea5 commit 4708012
Show file tree
Hide file tree
Showing 5 changed files with 226 additions and 58 deletions.
2 changes: 1 addition & 1 deletion gradle.properties
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,6 @@ org.gradle.jvmargs=-Xmx1G

#properties
minecraft_version = 1.20.1
plugin_version = 1.0.1
plugin_version = 1.1.0
maven_group = org.lokfid
archives_base_name = web
25 changes: 6 additions & 19 deletions src/main/java/org/lokfid/BrowserPlugin.java
Original file line number Diff line number Diff line change
@@ -1,7 +1,6 @@
package org.lokfid;

import com.cinemamod.mcef.MCEF;
import com.cinemamod.mcef.MCEFBrowser;
import org.rusherhack.client.api.RusherHackAPI;
import org.rusherhack.client.api.plugin.Plugin;

Expand All @@ -12,40 +11,28 @@
*/
public class BrowserPlugin extends Plugin {

private MCEFBrowser browser;
BrowserWindow browser;

@Override
public void onLoad() {

if (!MCEF.isInitialized())
MCEF.initialize();

browser = new BrowserWindow(this);

//creating and registering a new module
RusherHackAPI.getWindowManager().registerFeature(new BrowserWindow(this));
RusherHackAPI.getWindowManager().registerFeature(browser);

Runtime.getRuntime().addShutdownHook(new Thread(() -> {
if (hasBrowser()) {
getBrowser().close();
}
browser.shutDown();
}));

}

public boolean hasBrowser() {
return browser != null;
}

public MCEFBrowser getBrowser() {
if (browser == null)
browser = MCEF.createBrowser("https://start.duckduckgo.com/", true);
return browser;
}

@Override
public void onUnload() {
if (browser != null) {
browser.close();
}
browser.shutDown();
}

}
55 changes: 49 additions & 6 deletions src/main/java/org/lokfid/BrowserWindow.java
Original file line number Diff line number Diff line change
Expand Up @@ -4,21 +4,30 @@
import org.rusherhack.client.api.feature.window.ResizeableWindow;
import org.rusherhack.client.api.render.graphic.IGraphic;
import org.rusherhack.client.api.render.graphic.TextureGraphic;
import org.rusherhack.client.api.ui.window.content.component.ButtonComponent;
import org.rusherhack.client.api.ui.window.view.SimpleView;
import org.rusherhack.client.api.ui.window.view.TabbedView;
import org.rusherhack.client.api.ui.window.view.WindowView;

import java.io.IOException;
import java.util.ArrayList;
import java.util.List;

/**
* @author Doogie13
* @since 18/08/2024
*/
public class BrowserWindow extends ResizeableWindow {

private final List<BrowserWindowView> browsers = new ArrayList<>();
private final SimpleView simpleView;
private TabbedView tabbedView = null;

private IGraphic[] graphics = new IGraphic[50];

public BrowserWindow(BrowserPlugin plugin) {
super("Rusher Browser", 400, 320);
wv = new BrowserWindowContent(plugin, this);
browsers.add(new BrowserWindowView(this));
try {
for (int i = 1; i <= 50; i++) {
StringBuilder s = new StringBuilder(String.valueOf(i));
Expand All @@ -31,13 +40,32 @@ public BrowserWindow(BrowserPlugin plugin) {
plugin.getLogger().error(s.toString());
graphics = null;
}
ButtonComponent newTabButton = new ButtonComponent(this, "New Tab", 50, 12, () -> {
BrowserWindowView browserWindowView = new BrowserWindowView(this);
browsers.add(browserWindowView);
tabbedView.setActiveTabView(browserWindowView);
});
ButtonComponent closeTabButton = new ButtonComponent(this, "Close Tab", 50, 12, () -> {
BrowserWindowView browserWindowView = (BrowserWindowView) tabbedView.getActiveTabView();
if (browsers.size() > 1) {
int i = browsers.indexOf(browserWindowView);
browsers.remove(browserWindowView);
if (browserWindowView.hasBrowser())
browserWindowView.getBrowser().close();
tabbedView.setActiveTabView(browsers.get(Math.max(i - 1, 0)));
} else
browserWindowView.resetBrowser();
});
ButtonComponent homeButton = new ButtonComponent(this, "Home", 50, 12,
() -> ((BrowserWindowView) tabbedView.getActiveTabView()).resetBrowser());
tabbedView = new TabbedView(this, (List) browsers);
simpleView = new SimpleView(this,
List.of(new ButtonHeader(this, newTabButton, closeTabButton, homeButton), tabbedView));
}

private final BrowserWindowContent wv;

@Override
public WindowView getRootView() {
return wv;
return simpleView;
}

@Override
Expand All @@ -50,7 +78,22 @@ public boolean renderIcon(double x, double y, double width, double height) {
@Override
public void onClose() {
super.onClose();
RusherHackAPI.getEventBus().unsubscribe(wv);
wv.subscribed = true;
unsubscribeAll(null);
}

public void shutDown() {
onClose();
for (BrowserWindowView browserWindowView : browsers)
if (browserWindowView.hasBrowser())
browserWindowView.getBrowser().close();
}

public void unsubscribeAll(BrowserWindowView ignored) {
for (BrowserWindowView b : browsers) {
if (ignored != null && b == ignored)
continue;
RusherHackAPI.getEventBus().unsubscribe(b);
b.subscribed = false;
}
}
}
Loading

0 comments on commit 4708012

Please sign in to comment.