Initial git commit
|
@ -0,0 +1,8 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<classpath>
|
||||
<classpathentry excluding="mod_audio/|mod_calc/|mod_ipchat/|mod_pPw/" kind="src" path="src"/>
|
||||
<classpathentry excluding="jnativehook-2.0.3.jar" kind="src" path="res"/>
|
||||
<classpathentry exported="true" kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER"/>
|
||||
<classpathentry kind="lib" path="res/jnativehook-2.0.3.jar"/>
|
||||
<classpathentry kind="output" path="bin"/>
|
||||
</classpath>
|
|
@ -0,0 +1,17 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<projectDescription>
|
||||
<name>QuickLaunch</name>
|
||||
<comment></comment>
|
||||
<projects>
|
||||
</projects>
|
||||
<buildSpec>
|
||||
<buildCommand>
|
||||
<name>org.eclipse.jdt.core.javabuilder</name>
|
||||
<arguments>
|
||||
</arguments>
|
||||
</buildCommand>
|
||||
</buildSpec>
|
||||
<natures>
|
||||
<nature>org.eclipse.jdt.core.javanature</nature>
|
||||
</natures>
|
||||
</projectDescription>
|
|
@ -0,0 +1,12 @@
|
|||
eclipse.preferences.version=1
|
||||
org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled
|
||||
org.eclipse.jdt.core.compiler.codegen.methodParameters=do not generate
|
||||
org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.8
|
||||
org.eclipse.jdt.core.compiler.codegen.unusedLocal=preserve
|
||||
org.eclipse.jdt.core.compiler.compliance=1.8
|
||||
org.eclipse.jdt.core.compiler.debug.lineNumber=generate
|
||||
org.eclipse.jdt.core.compiler.debug.localVariable=generate
|
||||
org.eclipse.jdt.core.compiler.debug.sourceFile=generate
|
||||
org.eclipse.jdt.core.compiler.problem.assertIdentifier=error
|
||||
org.eclipse.jdt.core.compiler.problem.enumIdentifier=error
|
||||
org.eclipse.jdt.core.compiler.source=1.8
|
|
@ -0,0 +1,2 @@
|
|||
eclipse.preferences.version=1
|
||||
org.eclipse.ltk.core.refactoring.enable.project.refactoring.history=false
|
|
@ -0,0 +1,20 @@
|
|||
a
|
||||
/user/path/app.app
|
||||
b
|
||||
/path/to/somwhere/bla.exe
|
||||
e
|
||||
e
|
||||
f
|
||||
f
|
||||
g
|
||||
g
|
||||
h
|
||||
h
|
||||
i
|
||||
i
|
||||
j
|
||||
j
|
||||
k
|
||||
k
|
||||
l
|
||||
l
|
After Width: | Height: | Size: 249 B |
After Width: | Height: | Size: 350 B |
After Width: | Height: | Size: 361 KiB |
After Width: | Height: | Size: 138 KiB |
After Width: | Height: | Size: 344 B |
After Width: | Height: | Size: 191 B |
After Width: | Height: | Size: 360 B |
After Width: | Height: | Size: 272 B |
After Width: | Height: | Size: 1.3 KiB |
After Width: | Height: | Size: 249 B |
After Width: | Height: | Size: 350 B |
After Width: | Height: | Size: 361 KiB |
After Width: | Height: | Size: 138 KiB |
After Width: | Height: | Size: 344 B |
After Width: | Height: | Size: 191 B |
After Width: | Height: | Size: 360 B |
After Width: | Height: | Size: 272 B |
After Width: | Height: | Size: 1.3 KiB |
|
@ -0,0 +1,5 @@
|
|||
#Sat Oct 06 17:21:25 CEST 2018
|
||||
Load-File-on-startup=true
|
||||
key2=44
|
||||
key1=29
|
||||
Check-for-updates-on-startup=true
|
|
@ -0,0 +1,86 @@
|
|||
package basics;
|
||||
|
||||
import java.util.logging.Level;
|
||||
import java.util.logging.LogManager;
|
||||
import java.util.logging.Logger;
|
||||
|
||||
import org.jnativehook.GlobalScreen;
|
||||
import org.jnativehook.NativeHookException;
|
||||
|
||||
import javafx.application.Application;
|
||||
import javafx.event.EventHandler;
|
||||
import javafx.scene.Scene;
|
||||
import javafx.scene.image.Image;
|
||||
import javafx.stage.Stage;
|
||||
import javafx.stage.StageStyle;
|
||||
import javafx.stage.WindowEvent;
|
||||
import main.KeyChecker;
|
||||
import main.ModLoader;
|
||||
import main.Start;
|
||||
import manager.SettingManager;
|
||||
import scenes.MainScene;
|
||||
import update.Updater;
|
||||
|
||||
public class BasicGuiApp extends Application{
|
||||
|
||||
|
||||
|
||||
|
||||
public static Stage mainStage;
|
||||
public static Scene mainScene;
|
||||
public static KeyChecker listener;
|
||||
public static Updater up = new Updater();
|
||||
|
||||
public BasicGuiApp(){
|
||||
|
||||
ModLoader ml = new ModLoader();
|
||||
ml.init();
|
||||
ml.addMods();
|
||||
ml.initMods();
|
||||
|
||||
try {
|
||||
GlobalScreen.registerNativeHook();
|
||||
} catch (NativeHookException e) {
|
||||
|
||||
e.printStackTrace();
|
||||
}
|
||||
listener = new KeyChecker();
|
||||
LogManager.getLogManager().reset();
|
||||
|
||||
Logger logger = Logger.getLogger(GlobalScreen.class.getPackage().getName());
|
||||
logger.setLevel(Level.OFF);
|
||||
GlobalScreen.addNativeKeyListener(listener);
|
||||
}
|
||||
|
||||
|
||||
public void start(Stage primaryStage) throws Exception {
|
||||
|
||||
mainStage = primaryStage;
|
||||
mainStage.setTitle("QuickLaunch "+Start.VERSION);
|
||||
mainStage.getIcons().add(new Image(BasicGuiApp.class.getResourceAsStream("/icon.png")));
|
||||
mainStage.setOnCloseRequest(new EventHandler<WindowEvent>() {
|
||||
|
||||
public void handle(WindowEvent event) {
|
||||
SettingManager.saveSettings();
|
||||
System.exit(0);
|
||||
|
||||
}
|
||||
});
|
||||
|
||||
primaryStage.initStyle(StageStyle.TRANSPARENT);
|
||||
mainScene = new MainScene();
|
||||
|
||||
|
||||
|
||||
primaryStage.setScene(mainScene);
|
||||
primaryStage.centerOnScreen();
|
||||
primaryStage.requestFocus();
|
||||
primaryStage.show();
|
||||
|
||||
if(SettingManager.isCheckUptdateOnBoot()){
|
||||
up.checkForUpdate();
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
}
|
|
@ -0,0 +1,35 @@
|
|||
|
||||
package basics;
|
||||
|
||||
import java.io.IOException;
|
||||
|
||||
public class BasicMod {
|
||||
private String modname = "mod:mod";
|
||||
private double version = 0.0;
|
||||
|
||||
public void setModName(String name) {
|
||||
this.modname = name;
|
||||
}
|
||||
|
||||
public void setVersion(double version) {
|
||||
this.version = version;
|
||||
}
|
||||
|
||||
public String getModname() {
|
||||
return this.modname;
|
||||
}
|
||||
|
||||
public double getVersion() {
|
||||
return this.version;
|
||||
}
|
||||
|
||||
public void init() {
|
||||
}
|
||||
|
||||
public void checkInput(String input) throws IOException {
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
|
@ -0,0 +1,32 @@
|
|||
package guis;
|
||||
|
||||
|
||||
import javax.swing.JFileChooser;
|
||||
import javax.swing.JFrame;
|
||||
|
||||
public class FileChooseWindow {
|
||||
|
||||
|
||||
|
||||
public static String chooseFile(JFrame parentFrame){
|
||||
|
||||
|
||||
|
||||
JFileChooser jfc = new JFileChooser();
|
||||
|
||||
int result = jfc.showOpenDialog(parentFrame);
|
||||
if(result == JFileChooser.APPROVE_OPTION){
|
||||
String filePath = jfc.getSelectedFile().getAbsoluteFile().toString();
|
||||
return filePath;
|
||||
}
|
||||
else {
|
||||
String filePath = "XXX";
|
||||
return filePath;
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
}
|
|
@ -0,0 +1,116 @@
|
|||
package guis;
|
||||
|
||||
import java.io.IOException;
|
||||
|
||||
import basics.BasicGuiApp;
|
||||
import basics.BasicMod;
|
||||
import javafx.event.ActionEvent;
|
||||
import javafx.event.EventHandler;
|
||||
import javafx.scene.control.Button;
|
||||
import javafx.scene.control.TextField;
|
||||
import javafx.scene.input.KeyEvent;
|
||||
import javafx.scene.layout.AnchorPane;
|
||||
import javafx.scene.text.Font;
|
||||
import javafx.scene.text.Text;
|
||||
import main.ModLoader;
|
||||
import manager.ResourceManager;
|
||||
|
||||
public class MainGui extends AnchorPane{
|
||||
|
||||
|
||||
private static Text notificationText;
|
||||
public static TextField inputField;
|
||||
|
||||
public MainGui(){
|
||||
|
||||
this.setPrefWidth(400);
|
||||
this.setPrefHeight(60);
|
||||
this.setStyle("-fx-background-color: rgba(0, 0, 0, 0.8);");
|
||||
|
||||
|
||||
inputField = new TextField();
|
||||
inputField.setLayoutX(0);
|
||||
inputField.setLayoutY(0);
|
||||
inputField.setPrefWidth(370);
|
||||
inputField.setPrefHeight(60);
|
||||
inputField.requestFocus();
|
||||
inputField.setStyle("-fx-background-color: rgba(0, 0, 0, 0);"
|
||||
+ "-fx-text-inner-color: white;"
|
||||
+ "-fx-padding: 0px;"
|
||||
+ "-fx-border-insets: 0px;"
|
||||
+ "-fx-font-weight: bold"
|
||||
+ "-fx-background-insetts: 0px");
|
||||
inputField.setFont(ResourceManager.getFontBig());
|
||||
inputField.setOnKeyPressed(new EventHandler<KeyEvent>(){
|
||||
|
||||
public void handle(KeyEvent event) {
|
||||
String input;
|
||||
if(event.getCode().name().equals("ENTER")){
|
||||
BasicGuiApp.mainStage.setAlwaysOnTop(false);
|
||||
input = inputField.getText();
|
||||
inputField.setText("");
|
||||
if(input.equals("exit")){
|
||||
System.exit(-1);
|
||||
}
|
||||
|
||||
for (BasicMod bm : ModLoader.mods) {
|
||||
try {
|
||||
bm.checkInput(input);
|
||||
} catch (IOException e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
});
|
||||
|
||||
|
||||
Button minimize = new Button("-");
|
||||
minimize.setPrefWidth(30);
|
||||
minimize.setPrefHeight(30);
|
||||
minimize.setLayoutX(370);
|
||||
minimize.setLayoutY(-10);
|
||||
minimize.setStyle("-fx-background-color: rgba(0, 0, 0, 0);"
|
||||
+ "-fx-text-inner-color: white;"
|
||||
+ "-fx-text-fill: white;");
|
||||
minimize.setFont(new Font("Arial", 25));
|
||||
minimize.setOnAction(new EventHandler<ActionEvent>() {
|
||||
|
||||
|
||||
public void handle(ActionEvent event) {
|
||||
BasicGuiApp.mainStage.setIconified(true);
|
||||
|
||||
}
|
||||
});
|
||||
|
||||
notificationText = new Text();
|
||||
notificationText.setLayoutX(0);
|
||||
notificationText.setLayoutY(65);
|
||||
notificationText.prefWidth(400);
|
||||
notificationText.prefHeight(22);
|
||||
notificationText.setStyle("-fx-background-color: rgba(0, 0, 0, 0);"
|
||||
+ "-fx-fill: rgb(221,255,0);");
|
||||
notificationText.setFont(ResourceManager.getFontSmall());
|
||||
|
||||
this.getChildren().add(inputField);
|
||||
this.getChildren().add(minimize);
|
||||
this.getChildren().add(notificationText);
|
||||
}
|
||||
|
||||
|
||||
public static void addNotification(String msg,final int sec){
|
||||
notificationText.setText(msg);
|
||||
Thread t = new Thread(new Runnable() {
|
||||
public void run() {
|
||||
try {
|
||||
Thread.sleep(sec*1000);
|
||||
} catch (InterruptedException e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
notificationText.setText("");
|
||||
}
|
||||
});
|
||||
t.start();
|
||||
}
|
||||
}
|
|
@ -0,0 +1,159 @@
|
|||
package guis;
|
||||
|
||||
|
||||
import org.jnativehook.GlobalScreen;
|
||||
|
||||
import basics.BasicGuiApp;
|
||||
import javafx.event.ActionEvent;
|
||||
import javafx.event.EventHandler;
|
||||
import javafx.scene.control.Button;
|
||||
import javafx.scene.control.CheckBox;
|
||||
import javafx.scene.layout.AnchorPane;
|
||||
import javafx.scene.text.Text;
|
||||
import main.ShortcutKeyChecker;
|
||||
import manager.ResourceManager;
|
||||
import manager.SettingManager;
|
||||
|
||||
public class SettingGui extends AnchorPane{
|
||||
|
||||
|
||||
AnchorPane settingPane;
|
||||
|
||||
public SettingGui(){
|
||||
this.setPrefWidth(300);
|
||||
this.setPrefHeight(185);
|
||||
this.setStyle("-fx-background-color: rgba(240, 240, 240, 1);");
|
||||
|
||||
/////////////////////////////////////////////////////////////////////////////
|
||||
Text setting1 = new Text("Load File.txt on startup:");
|
||||
setting1.setFont(ResourceManager.getFontSmall());
|
||||
setting1.setLayoutX(10);
|
||||
setting1.setLayoutY(20);
|
||||
setting1.prefWidth(170);
|
||||
setting1.prefHeight(30);
|
||||
|
||||
final CheckBox setting1Box = new CheckBox();
|
||||
setting1Box.setLayoutX(180);
|
||||
setting1Box.setLayoutY(7);
|
||||
setting1Box.prefWidth(20);
|
||||
setting1Box.prefHeight(20);
|
||||
setting1Box.setSelected(SettingManager.isLoadFileOnBoot());
|
||||
///////////////////////////////////////////////////////////////////////////////
|
||||
/////////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
Text setting3 = new Text("Check for updates on startup:");
|
||||
setting3.setFont(ResourceManager.getFontSmall());
|
||||
setting3.setLayoutX(10);
|
||||
setting3.setLayoutY(100);
|
||||
setting3.prefWidth(220);
|
||||
setting3.prefHeight(30);
|
||||
|
||||
final CheckBox setting3Box = new CheckBox();
|
||||
setting3Box.setLayoutX(230);
|
||||
setting3Box.setLayoutY(87);
|
||||
setting3Box.prefWidth(30);
|
||||
setting3Box.prefHeight(30);
|
||||
setting3Box.setSelected(SettingManager.isCheckUptdateOnBoot());
|
||||
/////////////////////////////////////////////////////////////////////////////////
|
||||
/////////////////////////////////////////////////////////////////////////////////
|
||||
Text setting4 = new Text("QuickLaunch shortcut:");
|
||||
setting4.setFont(ResourceManager.getFontSmall());
|
||||
setting4.setLayoutX(10);
|
||||
setting4.setLayoutY(128);
|
||||
setting4.prefWidth(180);
|
||||
setting4.prefHeight(30);
|
||||
|
||||
final Button setting4button1 = new Button("key1");
|
||||
if(!(SettingManager.getKey1() == -1)){
|
||||
setting4button1.setText(SettingManager.getKey1()+"");
|
||||
}
|
||||
setting4button1.setFont(ResourceManager.getFontSmall());
|
||||
setting4button1.setLayoutX(10);
|
||||
setting4button1.setLayoutY(145);
|
||||
setting4button1.prefWidth(40);
|
||||
setting4button1.prefHeight(24);
|
||||
setting4button1.setOnAction(new EventHandler<ActionEvent>() {
|
||||
|
||||
|
||||
public void handle(ActionEvent event) {
|
||||
ShortcutKeyChecker skc = new ShortcutKeyChecker();
|
||||
GlobalScreen.removeNativeKeyListener(BasicGuiApp.listener);
|
||||
GlobalScreen.addNativeKeyListener(skc);
|
||||
while(skc.lastKey == -1){
|
||||
|
||||
try {
|
||||
Thread.sleep(100);
|
||||
} catch (InterruptedException e1) {
|
||||
e1.printStackTrace();
|
||||
}
|
||||
}
|
||||
setting4button1.setText(skc.lastKey+"");
|
||||
SettingManager.setKey1(skc.lastKey);
|
||||
GlobalScreen.removeNativeKeyListener(skc);
|
||||
GlobalScreen.addNativeKeyListener(BasicGuiApp.listener);
|
||||
|
||||
}
|
||||
});
|
||||
|
||||
final Button setting4button2 = new Button("key2");
|
||||
if(!(SettingManager.getKey2() == -1)){
|
||||
setting4button2.setText(SettingManager.getKey2()+"");
|
||||
}
|
||||
setting4button2.setFont(ResourceManager.getFontSmall());
|
||||
setting4button2.setLayoutX(95);
|
||||
setting4button2.setLayoutY(145);
|
||||
setting4button2.prefWidth(40);
|
||||
setting4button2.prefHeight(24);
|
||||
setting4button2.setOnAction(new EventHandler<ActionEvent>() {
|
||||
|
||||
|
||||
public void handle(ActionEvent event) {
|
||||
ShortcutKeyChecker skc = new ShortcutKeyChecker();
|
||||
GlobalScreen.removeNativeKeyListener(BasicGuiApp.listener);
|
||||
GlobalScreen.addNativeKeyListener(skc);
|
||||
while(skc.lastKey == -1){
|
||||
try {
|
||||
Thread.sleep(100);
|
||||
} catch (InterruptedException e1) {
|
||||
e1.printStackTrace();
|
||||
}
|
||||
}
|
||||
setting4button2.setText(skc.lastKey+"");
|
||||
SettingManager.setKey2(skc.lastKey);
|
||||
GlobalScreen.removeNativeKeyListener(skc);
|
||||
GlobalScreen.addNativeKeyListener(BasicGuiApp.listener);
|
||||
}
|
||||
});
|
||||
/////////////////////////////////////////////////////////////////////
|
||||
//////////////////////////////////////////////////////////////////////
|
||||
|
||||
Button exit = new Button("Done");
|
||||
exit.setFont(ResourceManager.getFontSmall());
|
||||
exit.setLayoutX(230);
|
||||
exit.setLayoutY(145);
|
||||
exit.prefWidth(50);
|
||||
exit.prefHeight(24);
|
||||
exit.setOnAction(new EventHandler<ActionEvent>() {
|
||||
|
||||
|
||||
public void handle(ActionEvent event) {
|
||||
SettingManager.setLoadFileOnBoot(setting1Box.isSelected());
|
||||
SettingManager.setCheckUptdateOnBoot(setting3Box.isSelected());
|
||||
SettingManager.saveSettings();
|
||||
BasicGuiApp.mainStage.setScene(BasicGuiApp.mainScene);
|
||||
|
||||
}
|
||||
});
|
||||
|
||||
|
||||
this.getChildren().add(setting1);
|
||||
this.getChildren().add(setting1Box);
|
||||
this.getChildren().add(setting3);
|
||||
this.getChildren().add(setting3Box);
|
||||
this.getChildren().add(setting4);
|
||||
this.getChildren().add(setting4button1);
|
||||
this.getChildren().add(setting4button2);
|
||||
this.getChildren().add(exit);
|
||||
}
|
||||
|
||||
}
|
|
@ -0,0 +1,93 @@
|
|||
package main;
|
||||
|
||||
|
||||
import org.jnativehook.keyboard.NativeKeyEvent;
|
||||
import org.jnativehook.keyboard.NativeKeyListener;
|
||||
|
||||
import basics.BasicGuiApp;
|
||||
import guis.MainGui;
|
||||
import javafx.application.Platform;
|
||||
import manager.OperatingSystem;
|
||||
import manager.SettingManager;
|
||||
|
||||
public class KeyChecker implements NativeKeyListener{
|
||||
|
||||
|
||||
boolean key1 = false;
|
||||
boolean key2 = false;
|
||||
|
||||
public void nativeKeyPressed(NativeKeyEvent nke) {
|
||||
if(nke.getKeyCode() == SettingManager.getKey1()){
|
||||
key1 = true;
|
||||
|
||||
}
|
||||
|
||||
if(nke.getKeyCode() == SettingManager.getKey2()){
|
||||
key2 = true;
|
||||
}
|
||||
|
||||
if(key1 && key2){
|
||||
//Workaround because toFront() does not work and makes window active
|
||||
Platform.runLater(new Runnable() {
|
||||
|
||||
public void run() {
|
||||
|
||||
if(SettingManager.getOperatingSystem() == OperatingSystem.LINUX) {
|
||||
BasicGuiApp.mainStage.setIconified(true);
|
||||
BasicGuiApp.mainStage.setIconified(false);
|
||||
BasicGuiApp.mainStage.toFront();
|
||||
BasicGuiApp.mainStage.requestFocus();
|
||||
MainGui.inputField.requestFocus();
|
||||
}
|
||||
else if(SettingManager.getOperatingSystem() == OperatingSystem.WINDOWS) {
|
||||
BasicGuiApp.mainStage.setAlwaysOnTop(true);
|
||||
BasicGuiApp.mainStage.setAlwaysOnTop(false);
|
||||
BasicGuiApp.mainStage.requestFocus();
|
||||
MainGui.inputField.requestFocus();
|
||||
BasicGuiApp.mainStage.setIconified(true);
|
||||
BasicGuiApp.mainStage.setIconified(false);
|
||||
}
|
||||
else if(SettingManager.getOperatingSystem() == OperatingSystem.OSX) {
|
||||
BasicGuiApp.mainStage.setIconified(true);
|
||||
BasicGuiApp.mainStage.setIconified(false);
|
||||
BasicGuiApp.mainStage.toFront();
|
||||
BasicGuiApp.mainStage.requestFocus();
|
||||
MainGui.inputField.requestFocus();
|
||||
|
||||
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
}
|
||||
|
||||
//1 = ESC => minimize
|
||||
if(nke.getKeyCode() == 1) {
|
||||
Platform.runLater(new Runnable() {
|
||||
|
||||
public void run() {
|
||||
|
||||
BasicGuiApp.mainStage.setIconified(true);
|
||||
|
||||
|
||||
}
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
public void nativeKeyReleased(NativeKeyEvent nke) {
|
||||
if(nke.getKeyCode() == SettingManager.getKey1()){
|
||||
key1 = false;
|
||||
}
|
||||
|
||||
if(nke.getKeyCode() == SettingManager.getKey2()){
|
||||
key2 = false;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
public void nativeKeyTyped(NativeKeyEvent arg0) {
|
||||
}
|
||||
|
||||
}
|
|
@ -0,0 +1,91 @@
|
|||
package main;
|
||||
|
||||
import java.io.BufferedReader;
|
||||
import java.io.File;
|
||||
import java.io.FileNotFoundException;
|
||||
import java.io.FileReader;
|
||||
import java.io.IOException;
|
||||
import java.lang.reflect.InvocationTargetException;
|
||||
import java.util.ArrayList;
|
||||
|
||||
import basics.BasicMod;
|
||||
import manager.SettingManager;
|
||||
import mod_quicklaunch.QuickLaunch;
|
||||
|
||||
public class ModLoader {
|
||||
public static ArrayList<BasicMod> mods = new ArrayList<BasicMod>();
|
||||
private BufferedReader bfr;
|
||||
|
||||
public void init() {
|
||||
System.out.println("ModLoader: Start init");
|
||||
File modfile = new File(SettingManager.getJarDirectory()+File.separator+"mods.txt");
|
||||
try {
|
||||
if (!modfile.exists()) {
|
||||
System.out.println("ModLoader: No mod file exists");
|
||||
System.out.println("ModLoader: Starting for the first time?");
|
||||
modfile.createNewFile();
|
||||
System.out.println("ModLoader: Mod file: mods.txt created");
|
||||
System.out.println("ModLoader: Ready to install mods");
|
||||
}
|
||||
this.bfr = new BufferedReader(new FileReader(modfile));
|
||||
}
|
||||
catch (FileNotFoundException e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
catch (IOException e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
System.out.println("ModLoader: Exit init");
|
||||
}
|
||||
|
||||
public void addMods() {
|
||||
mods.add(new QuickLaunch());
|
||||
String nextMod = null;
|
||||
try {
|
||||
nextMod = this.bfr.readLine();
|
||||
}
|
||||
catch (IOException e1) {
|
||||
e1.printStackTrace();
|
||||
}
|
||||
while (nextMod != null) {
|
||||
try {
|
||||
mods.add((BasicMod)Class.forName(nextMod).getConstructors()[0].newInstance(new Object[0]));
|
||||
nextMod = this.bfr.readLine();
|
||||
continue;
|
||||
}
|
||||
catch (InstantiationException e) {
|
||||
e.printStackTrace();
|
||||
continue;
|
||||
}
|
||||
catch (IllegalAccessException e) {
|
||||
e.printStackTrace();
|
||||
continue;
|
||||
}
|
||||
catch (IllegalArgumentException e) {
|
||||
e.printStackTrace();
|
||||
continue;
|
||||
}
|
||||
catch (InvocationTargetException e) {
|
||||
e.printStackTrace();
|
||||
continue;
|
||||
}
|
||||
catch (SecurityException e) {
|
||||
e.printStackTrace();
|
||||
continue;
|
||||
}
|
||||
catch (ClassNotFoundException e) {
|
||||
System.out.println("'" + nextMod + "'" + " is not installed");
|
||||
break;
|
||||
}
|
||||
catch (IOException e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public void initMods() {
|
||||
for (BasicMod mod : mods) {
|
||||
mod.init();
|
||||
}
|
||||
}
|
||||
}
|
|
@ -0,0 +1,32 @@
|
|||
package main;
|
||||
|
||||
import org.jnativehook.keyboard.NativeKeyEvent;
|
||||
import org.jnativehook.keyboard.NativeKeyListener;
|
||||
|
||||
public class ShortcutKeyChecker implements NativeKeyListener{
|
||||
|
||||
|
||||
public int lastKey = -1;
|
||||
|
||||
public ShortcutKeyChecker(){
|
||||
lastKey = -1;
|
||||
}
|
||||
|
||||
public void nativeKeyPressed(NativeKeyEvent nke) {
|
||||
System.out.println(nke.getKeyCode());
|
||||
lastKey = nke.getKeyCode();
|
||||
|
||||
}
|
||||
|
||||
public void nativeKeyReleased(NativeKeyEvent nke) {
|
||||
|
||||
lastKey = nke.getKeyCode();
|
||||
|
||||
}
|
||||
|
||||
public void nativeKeyTyped(NativeKeyEvent arg0) {
|
||||
System.out.println("c");
|
||||
|
||||
}
|
||||
|
||||
}
|
|
@ -0,0 +1,27 @@
|
|||
package main;
|
||||
|
||||
|
||||
import org.jnativehook.NativeHookException;
|
||||
|
||||
import basics.BasicGuiApp;
|
||||
import javafx.application.Application;
|
||||
import manager.SettingManager;
|
||||
import manager.ResourceManager;
|
||||
|
||||
public class Start {
|
||||
public static final float VERSION = 2.7f;
|
||||
//public static final float VERSION = 2.3f;
|
||||
|
||||
|
||||
@SuppressWarnings("static-access")
|
||||
public static void main(String[] args) throws NativeHookException {
|
||||
ResourceManager.loadResources();
|
||||
|
||||
SettingManager sm = new SettingManager();
|
||||
sm.loadSettings();
|
||||
sm.saveSettings();
|
||||
|
||||
Application.launch(BasicGuiApp.class);
|
||||
|
||||
}
|
||||
}
|
|
@ -0,0 +1,3 @@
|
|||
package manager;
|
||||
|
||||
public enum OperatingSystem {WINDOWS,OSX,LINUX}
|
|
@ -0,0 +1,90 @@
|
|||
package manager;
|
||||
|
||||
|
||||
import javafx.scene.image.Image;
|
||||
import javafx.scene.image.ImageView;
|
||||
import javafx.scene.text.Font;
|
||||
|
||||
public class ResourceManager {
|
||||
|
||||
private static Font fontBig = null;
|
||||
private static Font fontSmall = null;
|
||||
|
||||
private static ImageView addImage = null;
|
||||
private static ImageView backImage = null;
|
||||
private static ImageView editImage = null;
|
||||
private static ImageView lockImage = null;
|
||||
private static ImageView saveImage = null;
|
||||
private static ImageView unsavedImage = null;
|
||||
private static ImageView trashImage = null;
|
||||
|
||||
|
||||
public static void loadResources() {
|
||||
fontBig = Font.loadFont(ResourceManager.class.getResourceAsStream("/LiberationSerif-Regular.ttf"), 40);
|
||||
fontSmall = Font.loadFont(ResourceManager.class.getResourceAsStream("/LiberationSerif-Regular.ttf"), 17);
|
||||
|
||||
addImage = new ImageView(new Image(ResourceManager.class.getResourceAsStream("/plus.png"), 32, 32, true, false));
|
||||
addImage.setFitWidth(32);
|
||||
addImage.setFitHeight(32);
|
||||
addImage.setPreserveRatio(true);
|
||||
|
||||
backImage = new ImageView(new Image(ResourceManager.class.getResourceAsStream("/back.png"), 32, 32 ,true, false));
|
||||
editImage = new ImageView(new Image(ResourceManager.class.getResourceAsStream("/edit.png"),32 ,32, true, false));
|
||||
lockImage = new ImageView(new Image(ResourceManager.class.getResourceAsStream("/lock.png"), 32, 32, true, false));
|
||||
saveImage = new ImageView(new Image(ResourceManager.class.getResourceAsStream("/save.png"), 32, 32 ,true, false));
|
||||
unsavedImage = new ImageView(new Image(ResourceManager.class.getResourceAsStream("/unsaved.png"), 32, 32, true, false));
|
||||
|
||||
trashImage = new ImageView(new Image(ResourceManager.class.getResourceAsStream("/trash.png"), 32, 32 ,true, false));
|
||||
}
|
||||
|
||||
public static Font getFontBig() {
|
||||
return fontBig;
|
||||
}
|
||||
|
||||
|
||||
public static Font getFontSmall() {
|
||||
return fontSmall;
|
||||
}
|
||||
|
||||
|
||||
public static ImageView getAddImage() {
|
||||
return addImage;
|
||||
}
|
||||
|
||||
public static ImageView getBackImage() {
|
||||
return backImage;
|
||||
}
|
||||
|
||||
|
||||
public static ImageView getEditImage() {
|
||||
return editImage;
|
||||
}
|
||||
|
||||
|
||||
public static ImageView getLockImage() {
|
||||
return lockImage;
|
||||
}
|
||||
|
||||
|
||||
|
||||
public static ImageView getSaveImage() {
|
||||
return saveImage;
|
||||
}
|
||||
|
||||
public static ImageView getSaveImageUnsaved() {
|
||||
return unsavedImage;
|
||||
}
|
||||
|
||||
|
||||
|
||||
public static ImageView getTrashImage() {
|
||||
return trashImage;
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
}
|
|
@ -0,0 +1,185 @@
|
|||
package manager;
|
||||
|
||||
import java.io.BufferedReader;
|
||||
import java.io.File;
|
||||
import java.io.FileInputStream;
|
||||
import java.io.FileOutputStream;
|
||||
import java.io.FileReader;
|
||||
import java.io.IOException;
|
||||
import java.io.InputStream;
|
||||
import java.io.OutputStream;
|
||||
import java.util.Properties;
|
||||
|
||||
import main.Start;
|
||||
|
||||
public class SettingManager {
|
||||
|
||||
|
||||
|
||||
private static boolean loadFileOnBoot = true;
|
||||
private static boolean checkUptdateOnBoot = true;
|
||||
private static int key1 = -1,key2 = -1;
|
||||
private static OperatingSystem currentOS = null;
|
||||
|
||||
|
||||
private static String jarDirectory = "";
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
public SettingManager(){
|
||||
if(System.getProperty("os.name").toLowerCase().contains("nux")){
|
||||
currentOS = OperatingSystem.LINUX;
|
||||
}
|
||||
else if(System.getProperty("os.name").toLowerCase().contains("win")) {
|
||||
currentOS = OperatingSystem.WINDOWS;
|
||||
}
|
||||
else if(System.getProperty("os.name").toLowerCase().contains("mac")) {
|
||||
currentOS = OperatingSystem.OSX;
|
||||
}
|
||||
|
||||
|
||||
String path = Start.class.getProtectionDomain().getCodeSource().getLocation().getPath();
|
||||
jarDirectory = new File(path).getParentFile().getPath();
|
||||
}
|
||||
|
||||
public static void loadSettings(){
|
||||
try{
|
||||
File settingFile = new File(jarDirectory+File.separator+"settings.properties");
|
||||
File legacyFile = new File(jarDirectory+File.separator+"settings.txt");
|
||||
if(settingFile.exists()){
|
||||
if(legacyFile.exists()){
|
||||
legacyFile.delete();
|
||||
}
|
||||
InputStream input = null;
|
||||
Properties prop = new Properties();
|
||||
try{
|
||||
input = new FileInputStream(settingFile);
|
||||
prop.load(input);
|
||||
loadFileOnBoot = Boolean.parseBoolean(prop.getProperty("Load-File-on-startup"));
|
||||
checkUptdateOnBoot = Boolean.parseBoolean(prop.getProperty("Check-for-updates-on-startup"));
|
||||
key1 = Integer.parseInt(prop.getProperty("key1"));
|
||||
key2 = Integer.parseInt(prop.getProperty("key2"));
|
||||
}catch (IOException e) {
|
||||
e.printStackTrace();
|
||||
}finally{
|
||||
input.close();
|
||||
}
|
||||
}
|
||||
else{
|
||||
if(legacyFile.exists()){
|
||||
BufferedReader bfr = new BufferedReader(new FileReader(legacyFile));
|
||||
/////////////////////////////////////
|
||||
String currentLine = bfr.readLine();
|
||||
while(currentLine != null){
|
||||
if(currentLine.contains("Load File")){
|
||||
if(currentLine.contains("true")){
|
||||
loadFileOnBoot = true;
|
||||
}
|
||||
else if(currentLine.contains("false")){
|
||||
loadFileOnBoot = false;
|
||||
}
|
||||
}
|
||||
else if(currentLine.contains("Check for newer")){
|
||||
if(currentLine.contains("true")){
|
||||
checkUptdateOnBoot = true;
|
||||
}
|
||||
else if(currentLine.contains("false")){
|
||||
checkUptdateOnBoot = false;
|
||||
}
|
||||
}
|
||||
else if(currentLine.contains(";")){
|
||||
key1 = Integer.parseInt(currentLine.substring(0, 2));
|
||||
key2 = Integer.parseInt(currentLine.substring(3, 5));
|
||||
}
|
||||
currentLine = bfr.readLine();
|
||||
}
|
||||
bfr.close();
|
||||
}
|
||||
else{
|
||||
System.out.println("No setting file found probably first start");
|
||||
saveSettings();
|
||||
System.out.println("Setting file created");
|
||||
}
|
||||
}
|
||||
|
||||
}catch(NullPointerException npe){
|
||||
saveSettings();
|
||||
System.out.println("npe There is an error in your setting file\nYour settings File was updated");
|
||||
}catch(NumberFormatException nfe){
|
||||
saveSettings();
|
||||
System.out.println("There is an error in your setting file\nYour settings File was updated");
|
||||
} catch (IOException e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
public static void saveSettings(){
|
||||
OutputStream out = null;
|
||||
try {
|
||||
File settingFile = new File(jarDirectory+File.separator+"settings.properties");
|
||||
Properties prop = new Properties();
|
||||
out = new FileOutputStream(settingFile);
|
||||
prop.setProperty("Load-File-on-startup", ""+loadFileOnBoot);
|
||||
prop.setProperty("Check-for-updates-on-startup", ""+checkUptdateOnBoot);
|
||||
prop.setProperty("key1", ""+key1);
|
||||
prop.setProperty("key2", ""+key2);
|
||||
|
||||
prop.store(out, null);
|
||||
} catch (IOException e) {
|
||||
System.out.println("Writing permission denied");
|
||||
} finally{
|
||||
try {
|
||||
out.close();
|
||||
} catch (IOException e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public static OperatingSystem getOperatingSystem() {
|
||||
return currentOS;
|
||||
}
|
||||
|
||||
public static boolean isLoadFileOnBoot() {
|
||||
return loadFileOnBoot;
|
||||
}
|
||||
|
||||
public static void setLoadFileOnBoot(boolean loadFileOnBoot) {
|
||||
SettingManager.loadFileOnBoot = loadFileOnBoot;
|
||||
}
|
||||
|
||||
public static boolean isCheckUptdateOnBoot() {
|
||||
return checkUptdateOnBoot;
|
||||
}
|
||||
|
||||
public static void setCheckUptdateOnBoot(boolean checkUptdateOnBoot) {
|
||||
SettingManager.checkUptdateOnBoot = checkUptdateOnBoot;
|
||||
}
|
||||
|
||||
public static int getKey1() {
|
||||
return key1;
|
||||
}
|
||||
|
||||
public static void setKey1(int key1) {
|
||||
SettingManager.key1 = key1;
|
||||
}
|
||||
|
||||
public static int getKey2() {
|
||||
return key2;
|
||||
}
|
||||
|
||||
public static void setKey2(int key2) {
|
||||
SettingManager.key2 = key2;
|
||||
}
|
||||
|
||||
public static String getJarDirectory() {
|
||||
return jarDirectory;
|
||||
}
|
||||
|
||||
public static void setJarDirectory(String jarDirectory) {
|
||||
SettingManager.jarDirectory = jarDirectory;
|
||||
}
|
||||
}
|
|
@ -0,0 +1,34 @@
|
|||
|
||||
package mod_audio;
|
||||
|
||||
import javax.sound.sampled.Clip;
|
||||
|
||||
public class AudioPlayer
|
||||
implements Runnable {
|
||||
boolean loop = false;
|
||||
Clip sound;
|
||||
|
||||
public AudioPlayer(Clip clip) {
|
||||
this.sound = clip;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void run() {
|
||||
this.sound.start();
|
||||
if (this.loop) {
|
||||
this.sound.loop(-1);
|
||||
}
|
||||
}
|
||||
|
||||
public boolean isLoop() {
|
||||
return this.loop;
|
||||
}
|
||||
|
||||
public void setLoop(boolean loop) {
|
||||
this.loop = loop;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
|
@ -0,0 +1,25 @@
|
|||
|
||||
package mod_audio;
|
||||
|
||||
|
||||
|
||||
|
||||
import basics.BasicMod;
|
||||
import guis.FileChooseWindow;
|
||||
|
||||
public class Gui extends BasicMod {
|
||||
|
||||
FileChooseWindow fcw;
|
||||
public void init() {
|
||||
|
||||
|
||||
}
|
||||
@Override
|
||||
public void checkInput(String input) {
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
|
@ -0,0 +1,46 @@
|
|||
|
||||
package mod_audio;
|
||||
|
||||
import java.io.File;
|
||||
|
||||
import javax.sound.sampled.AudioSystem;
|
||||
import javax.sound.sampled.Clip;
|
||||
|
||||
import mod_audio.AudioPlayer;
|
||||
|
||||
public class Music {
|
||||
private File audiofile;
|
||||
private Clip clip;
|
||||
Thread sound;
|
||||
private AudioPlayer ap;
|
||||
|
||||
public Music(String filename) {
|
||||
this.audiofile = new File(filename);
|
||||
try {
|
||||
this.clip = AudioSystem.getClip();
|
||||
this.clip.open(AudioSystem.getAudioInputStream(this.audiofile));
|
||||
}
|
||||
catch (Exception e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
this.ap = new AudioPlayer(this.clip);
|
||||
this.sound = new Thread(this.ap);
|
||||
}
|
||||
|
||||
public void play() {
|
||||
this.sound.start();
|
||||
}
|
||||
|
||||
public void loop() {
|
||||
this.ap.setLoop(true);
|
||||
this.sound.start();
|
||||
}
|
||||
|
||||
public void stop() {
|
||||
this.clip.close();
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
|
@ -0,0 +1,145 @@
|
|||
package mod_calc;
|
||||
|
||||
import java.io.IOException;
|
||||
import java.util.ArrayList;
|
||||
|
||||
import javax.swing.JOptionPane;
|
||||
|
||||
import basics.BasicMod;
|
||||
|
||||
public class Calcmod extends BasicMod{
|
||||
ArrayList<Double> values;
|
||||
ArrayList<Character> operators;
|
||||
char current;
|
||||
String tmp;
|
||||
double output;
|
||||
double temp;
|
||||
public void init(){
|
||||
values = new ArrayList<Double>();
|
||||
operators = new ArrayList<Character>();
|
||||
current = ' ';
|
||||
tmp = "";
|
||||
System.out.println("Calculator installed");
|
||||
this.setModName("Calculator");
|
||||
this.setVersion(0.81);
|
||||
|
||||
}
|
||||
public void checkInput(String input) throws IOException {
|
||||
if(!input.isEmpty()){
|
||||
if(input.charAt(0)=='$'){
|
||||
for(int i = 1;i < input.length();i++){
|
||||
current = input.charAt(i);
|
||||
if(isAlternative(current)){
|
||||
current = changeAlternatives(current);
|
||||
System.out.println("alt");
|
||||
}
|
||||
if(isNumber(current)){
|
||||
tmp+= current;
|
||||
System.out.println("num");
|
||||
}
|
||||
else if(isOperator(current)){
|
||||
values.add(Double.parseDouble(tmp));
|
||||
tmp = "";
|
||||
operators.add(current);
|
||||
System.out.println("op");
|
||||
}
|
||||
}
|
||||
values.add(Double.parseDouble(tmp));
|
||||
}
|
||||
}
|
||||
solve();
|
||||
clear();
|
||||
|
||||
}
|
||||
|
||||
private boolean isNumber(char check){
|
||||
if((check == '1') ||
|
||||
(check == '2') ||
|
||||
(check == '3') ||
|
||||
(check == '4') ||
|
||||
(check == '5') ||
|
||||
(check == '6') ||
|
||||
(check == '7') ||
|
||||
(check == '8') ||
|
||||
(check == '9') ||
|
||||
(check == '0') ||
|
||||
(check == '.')){
|
||||
return true;
|
||||
}
|
||||
else{
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
private boolean isOperator(char check){
|
||||
if((check == '+') ||
|
||||
(check == '-') ||
|
||||
(check == '*') ||
|
||||
(check == '/')){
|
||||
return true;
|
||||
}
|
||||
else{
|
||||
return false;
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
||||
private boolean isAlternative(char check){
|
||||
if((check == ',') ||
|
||||
(check == 'x')){
|
||||
return true;
|
||||
}
|
||||
else{
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
private char changeAlternatives(char check){
|
||||
if(check == ','){
|
||||
return '.';
|
||||
}
|
||||
else if(check == 'x'){
|
||||
return '*';
|
||||
}
|
||||
else{
|
||||
return '?';
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
private void solve(){
|
||||
if(values.size() == operators.size()+1){
|
||||
output = values.get(0);
|
||||
for(int i=0;i<operators.size();i++){
|
||||
temp = values.get(i+1);
|
||||
if(operators.get(i) == '+'){
|
||||
output += temp;
|
||||
}
|
||||
else if(operators.get(i) == '-'){
|
||||
output -= temp;
|
||||
}
|
||||
else if(operators.get(i) == '*'){
|
||||
output *= temp;
|
||||
}
|
||||
else if(operators.get(i) == '/'){
|
||||
output /= temp;
|
||||
}
|
||||
}
|
||||
System.out.println(output);
|
||||
|
||||
JOptionPane.showMessageDialog(null, output);
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
private void clear(){
|
||||
values.clear();
|
||||
operators.clear();
|
||||
current = ' ';
|
||||
tmp = "";
|
||||
temp = 0;
|
||||
output = 0;
|
||||
}
|
||||
}
|
|
@ -0,0 +1,63 @@
|
|||
|
||||
package mod_ipchat;
|
||||
|
||||
import java.io.IOException;
|
||||
import java.net.Socket;
|
||||
import mod_ipchat.ChatInThread;
|
||||
import mod_ipchat.ChatOutThread;
|
||||
|
||||
public class ChatClient {
|
||||
private Socket outsocket;
|
||||
private Socket insocket;
|
||||
private boolean running = true;
|
||||
Thread chatout;
|
||||
|
||||
public ChatClient(String ip) {
|
||||
try {
|
||||
this.insocket = new Socket(ip, 8080);
|
||||
System.out.println("C: insocket connected");
|
||||
this.outsocket = new Socket(ip, 8081);
|
||||
System.out.println("C: outsocket connected");
|
||||
}
|
||||
catch (IOException e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
}
|
||||
|
||||
public void create() {
|
||||
ChatOutThread cot = new ChatOutThread(this.outsocket);
|
||||
Thread chatout = new Thread(cot);
|
||||
chatout.start();
|
||||
ChatInThread cin = new ChatInThread(this.insocket);
|
||||
Thread chatin = new Thread(cin);
|
||||
chatin.start();
|
||||
while (chatin.isAlive() && chatout.isAlive()) {
|
||||
}
|
||||
if (!chatin.isAlive()) {
|
||||
cot.setKill(true);
|
||||
} else if (chatout.isAlive()) {
|
||||
cin.setKill(true);
|
||||
}
|
||||
this.running = false;
|
||||
}
|
||||
|
||||
public boolean isRunning() {
|
||||
return this.running;
|
||||
}
|
||||
|
||||
public void setRunning(boolean running) {
|
||||
this.running = running;
|
||||
}
|
||||
|
||||
public Thread getChatout() {
|
||||
return this.chatout;
|
||||
}
|
||||
|
||||
public void setChatout(Thread chatout) {
|
||||
this.chatout = chatout;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
|
@ -0,0 +1,65 @@
|
|||
package mod_ipchat;
|
||||
|
||||
import java.io.DataInputStream;
|
||||
import java.io.IOException;
|
||||
import java.net.Socket;
|
||||
import java.util.Scanner;
|
||||
|
||||
public class ChatInThread
|
||||
implements Runnable {
|
||||
Scanner scn = new Scanner(System.in);
|
||||
DataInputStream in;
|
||||
boolean kill = false;
|
||||
|
||||
public ChatInThread(Socket socket) {
|
||||
try {
|
||||
this.in = new DataInputStream(socket.getInputStream());
|
||||
}
|
||||
catch (IOException e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void run() {
|
||||
block : do {
|
||||
try {
|
||||
do {
|
||||
String msg = this.in.readUTF();
|
||||
if (this.kill) {
|
||||
this.in.close();
|
||||
break block;
|
||||
}
|
||||
if (msg.equalsIgnoreCase("xxx")) {
|
||||
this.in.close();
|
||||
break block;
|
||||
}
|
||||
System.out.println(msg);
|
||||
Thread.sleep(1000);
|
||||
} while (true);
|
||||
}
|
||||
catch (IOException e) {
|
||||
e.printStackTrace();
|
||||
continue;
|
||||
}
|
||||
catch (InterruptedException e) {
|
||||
e.printStackTrace();
|
||||
continue;
|
||||
}
|
||||
|
||||
} while (true);
|
||||
System.out.println("Chatin Done");
|
||||
}
|
||||
|
||||
public boolean isKill() {
|
||||
return this.kill;
|
||||
}
|
||||
|
||||
public void setKill(boolean kill) {
|
||||
this.kill = kill;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
|
@ -0,0 +1,66 @@
|
|||
|
||||
package mod_ipchat;
|
||||
|
||||
import java.io.DataOutputStream;
|
||||
import java.io.IOException;
|
||||
import java.net.Socket;
|
||||
import java.util.Scanner;
|
||||
|
||||
public class ChatOutThread
|
||||
implements Runnable {
|
||||
Scanner scn = new Scanner(System.in);
|
||||
DataOutputStream out;
|
||||
String msg = "";
|
||||
boolean kill = false;
|
||||
|
||||
public ChatOutThread(Socket socket) {
|
||||
try {
|
||||
this.out = new DataOutputStream(socket.getOutputStream());
|
||||
}
|
||||
catch (IOException e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void run() {
|
||||
block : do {
|
||||
try {
|
||||
do {
|
||||
this.msg = this.scn.nextLine();
|
||||
this.out.writeUTF(this.msg);
|
||||
if (!this.kill) continue;
|
||||
this.out.close();
|
||||
break block;
|
||||
} while (!this.msg.equalsIgnoreCase("xxx"));
|
||||
this.out.close();
|
||||
break;
|
||||
}
|
||||
catch (IOException e) {
|
||||
e.printStackTrace();
|
||||
continue;
|
||||
}
|
||||
} while (true);
|
||||
System.out.println("Chatout Done");
|
||||
}
|
||||
|
||||
public String getMsg() {
|
||||
return this.msg;
|
||||
}
|
||||
|
||||
public void setMsg(String msg) {
|
||||
this.msg = msg;
|
||||
}
|
||||
|
||||
public boolean isKill() {
|
||||
return this.kill;
|
||||
}
|
||||
|
||||
public void setKill(boolean kill) {
|
||||
this.kill = kill;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
|
@ -0,0 +1,60 @@
|
|||
|
||||
package mod_ipchat;
|
||||
|
||||
import java.io.IOException;
|
||||
import java.net.ServerSocket;
|
||||
import java.net.Socket;
|
||||
import mod_ipchat.ChatInThread;
|
||||
import mod_ipchat.ChatOutThread;
|
||||
|
||||
public class ChatServer {
|
||||
private ServerSocket outserver;
|
||||
private Socket outsocket;
|
||||
private ServerSocket inserver;
|
||||
private Socket insocket;
|
||||
private boolean running = false;
|
||||
|
||||
public ChatServer() {
|
||||
try {
|
||||
this.running = true;
|
||||
this.outserver = new ServerSocket(8080);
|
||||
this.outsocket = this.outserver.accept();
|
||||
System.out.println("S: outsocket connected");
|
||||
this.inserver = new ServerSocket(8081);
|
||||
this.insocket = this.inserver.accept();
|
||||
System.out.println("S: insocket connected");
|
||||
}
|
||||
catch (IOException e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
}
|
||||
|
||||
public void create() {
|
||||
ChatOutThread cot = new ChatOutThread(this.outsocket);
|
||||
Thread chatout = new Thread(cot);
|
||||
chatout.start();
|
||||
ChatInThread cin = new ChatInThread(this.insocket);
|
||||
Thread chatin = new Thread(cin);
|
||||
chatin.start();
|
||||
while (chatin.isAlive() && chatout.isAlive()) {
|
||||
}
|
||||
if (!chatin.isAlive()) {
|
||||
cot.setKill(true);
|
||||
} else if (chatout.isAlive()) {
|
||||
cin.setKill(true);
|
||||
}
|
||||
this.running = false;
|
||||
}
|
||||
|
||||
public boolean isRunning() {
|
||||
return this.running;
|
||||
}
|
||||
|
||||
public void setRunning(boolean running) {
|
||||
this.running = running;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
|
@ -0,0 +1,44 @@
|
|||
|
||||
package mod_ipchat;
|
||||
|
||||
import java.io.IOException;
|
||||
import java.util.Scanner;
|
||||
|
||||
import basics.BasicMod;
|
||||
import mod_ipchat.ChatClient;
|
||||
import mod_ipchat.ChatServer;
|
||||
|
||||
public class Chatmod
|
||||
extends BasicMod {
|
||||
Scanner scn;
|
||||
|
||||
|
||||
public void init() {
|
||||
this.setModName("ipChat");
|
||||
this.scn = new Scanner(System.in);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void checkInput(String input) throws IOException {
|
||||
if (input.equalsIgnoreCase("chat")) {
|
||||
System.out.println("Syntax: chat -c \"creating a chat client\"");
|
||||
System.out.println(" chat -s \"creating a chat server\"");
|
||||
} else if (input.equalsIgnoreCase("chat -c")) {
|
||||
System.out.println("Please enter server ip");
|
||||
String ip = this.scn.nextLine();
|
||||
ChatClient cc = new ChatClient(ip);
|
||||
cc.create();
|
||||
while (cc.isRunning()) {
|
||||
}
|
||||
} else if (input.equalsIgnoreCase("chat -s")) {
|
||||
ChatServer cs = new ChatServer();
|
||||
cs.create();
|
||||
while (cs.isRunning()) {
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
|
@ -0,0 +1,45 @@
|
|||
package mod_pPw;
|
||||
|
||||
public class Hasher
|
||||
{
|
||||
public String outputID;
|
||||
public byte decodeFactor = 0;
|
||||
private byte inputLenght = 0;
|
||||
private byte exceptionCounter = 0;
|
||||
private char currentChar;
|
||||
|
||||
public Hasher()
|
||||
{
|
||||
this.outputID = "";
|
||||
}
|
||||
|
||||
public String hash(String str)
|
||||
{
|
||||
this.outputID = "";
|
||||
this.inputLenght = ((byte)str.length());
|
||||
for (int i = 0; i < this.inputLenght; i++)
|
||||
{
|
||||
this.currentChar = ((char)(str.charAt(i) + this.decodeFactor));
|
||||
for (int index = 0; index < 2; index++)
|
||||
{
|
||||
while ((this.currentChar < '!') || (this.currentChar > '~'))
|
||||
{
|
||||
this.currentChar = ((char)(33 + this.exceptionCounter));
|
||||
this.exceptionCounter = ((byte)(this.exceptionCounter + 1));
|
||||
}
|
||||
this.outputID += this.currentChar;
|
||||
}
|
||||
}
|
||||
return this.outputID;
|
||||
}
|
||||
|
||||
public byte getDecodeFactor()
|
||||
{
|
||||
return this.decodeFactor;
|
||||
}
|
||||
|
||||
public void setDecodeFactor(byte decodeFactor)
|
||||
{
|
||||
this.decodeFactor = decodeFactor;
|
||||
}
|
||||
}
|
|
@ -0,0 +1,38 @@
|
|||
package mod_pPw;
|
||||
|
||||
import java.util.Scanner;
|
||||
|
||||
import basics.BasicMod;
|
||||
|
||||
public class PPW
|
||||
extends BasicMod
|
||||
{
|
||||
Scanner scn;
|
||||
Hasher hash;
|
||||
|
||||
public void init()
|
||||
{
|
||||
setModName("PPW");
|
||||
setVersion(0.1D);
|
||||
System.out.println("PPW: Start init");
|
||||
|
||||
this.scn = new Scanner(System.in);
|
||||
this.hash = new Hasher();
|
||||
System.out.println("PPW: Exit init");
|
||||
}
|
||||
|
||||
public void checkInput(String input)
|
||||
{
|
||||
String givenID = "";
|
||||
String givenLM = "";
|
||||
if (input.equalsIgnoreCase("ppw"))
|
||||
{
|
||||
System.out.println("Please enter your private password ID");
|
||||
givenID = this.scn.nextLine();
|
||||
System.out.println("Please enter you personal parameter (1-100) ");
|
||||
givenLM = this.scn.nextLine();
|
||||
this.hash.setDecodeFactor(Byte.parseByte(givenLM));
|
||||
System.out.println("Your encrypted password is:" + this.hash.hash(givenID));
|
||||
}
|
||||
}
|
||||
}
|
|
@ -0,0 +1,53 @@
|
|||
package mod_quicklaunch;
|
||||
|
||||
import javafx.scene.control.TextArea;
|
||||
import javafx.scene.layout.AnchorPane;
|
||||
|
||||
public class HelpWindow extends AnchorPane{
|
||||
|
||||
private TextArea shortcuts;
|
||||
private TextArea description;
|
||||
private final int WINDOW_WIDTH = 500;
|
||||
private final int WINDOW_HEIGHT = 230;
|
||||
|
||||
public HelpWindow() {
|
||||
|
||||
this.setPrefSize(WINDOW_WIDTH, WINDOW_HEIGHT);
|
||||
|
||||
|
||||
shortcuts = new TextArea();
|
||||
shortcuts.setText("Shortcuts:\n/c\n/cos\n/cu\n/x | exit\n\n/? | help\n/lf\n/s\n/sf\n\nany shortcut");
|
||||
shortcuts.setPrefSize(WINDOW_WIDTH/5, WINDOW_HEIGHT+10);
|
||||
shortcuts.setLayoutX(-5);
|
||||
shortcuts.setLayoutY(-5);
|
||||
shortcuts.setEditable(false);
|
||||
shortcuts.setStyle("-fx-focus-color: transparent; -fx-faint-focus-color: white");
|
||||
|
||||
description = new TextArea();
|
||||
description.setPrefSize(WINDOW_WIDTH/5*4, WINDOW_HEIGHT+10);
|
||||
description.setLayoutX(WINDOW_WIDTH/5);
|
||||
description.setLayoutY(-5);
|
||||
description.setEditable(false);
|
||||
description.setStyle("-fx-focus-color: transparent ; -fx-faint-focus-color: white");
|
||||
description.setText("Description:\n"
|
||||
+ "Settings UI\n"
|
||||
+ "(Re)center QuickLaunch on screen\n"
|
||||
+ "Check for updates\n"
|
||||
+ "Kills the whole program instantly\n"
|
||||
+ "(If you changed something make sure it is already saved)\n"
|
||||
+ "Show this help dialog\n"
|
||||
+ "Load the shortcuts from the hard drive\n"
|
||||
+ "Open shortcut manager\n"
|
||||
+ "Save current shortcuts to hard drive\n"
|
||||
+ "(Overrides existing shortcuts)\n"
|
||||
+ "executes the program linked to the shortcut\n"
|
||||
+ "(Visit /s for all your personal shortcuts)");
|
||||
|
||||
|
||||
|
||||
this.getChildren().add(description);
|
||||
this.getChildren().add(shortcuts);
|
||||
this.requestFocus();
|
||||
}
|
||||
|
||||
}
|
|
@ -0,0 +1,179 @@
|
|||
package mod_quicklaunch;
|
||||
|
||||
import java.io.BufferedReader;
|
||||
import java.io.BufferedWriter;
|
||||
import java.io.File;
|
||||
import java.io.FileReader;
|
||||
import java.io.FileWriter;
|
||||
import java.io.IOException;
|
||||
import java.util.ArrayList;
|
||||
|
||||
import basics.BasicGuiApp;
|
||||
import basics.BasicMod;
|
||||
import guis.MainGui;
|
||||
import javafx.scene.Scene;
|
||||
import javafx.stage.Stage;
|
||||
import javafx.stage.StageStyle;
|
||||
import main.Start;
|
||||
import manager.SettingManager;
|
||||
import scenes.SettingScene;
|
||||
|
||||
public class QuickLaunch extends BasicMod {
|
||||
|
||||
private File textfile;
|
||||
private BufferedReader br;
|
||||
private BufferedWriter bw;
|
||||
private ArrayList<Shortcut> shortcuts;
|
||||
private String tmpSh = ".";
|
||||
private String tmpPa = ".";
|
||||
|
||||
public void init() {
|
||||
try {
|
||||
this.setModName("QL");
|
||||
|
||||
System.out.println("QL: Starting QuickLaunch");
|
||||
this.textfile = new File(SettingManager.getJarDirectory()+File.separator+"File.txt");
|
||||
System.out.println("QL: File name: File.txt");
|
||||
if (!this.textfile.exists()) {
|
||||
System.out.println("QL: There ist no File");
|
||||
this.textfile.createNewFile();
|
||||
System.out.println("QL: File.txt created");
|
||||
}
|
||||
shortcuts = new ArrayList<Shortcut>();
|
||||
|
||||
System.out.println("QL: Finished Initialisation");
|
||||
if(SettingManager.isLoadFileOnBoot()){
|
||||
loadFile();
|
||||
}
|
||||
}
|
||||
catch (IOException e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
}
|
||||
|
||||
public void checkInput(String input) throws IOException {
|
||||
if (input.equalsIgnoreCase("/cos")){
|
||||
this.centerOnScreen();
|
||||
} else if (input.equalsIgnoreCase("/cu")) {
|
||||
this.checkForUpdates();
|
||||
} else if (input.equalsIgnoreCase("exit")) {
|
||||
System.exit(-1);
|
||||
} else if ((input.equalsIgnoreCase("help")) || (input.equalsIgnoreCase("/?"))) {
|
||||
this.writeHelp();
|
||||
} else if (input.equalsIgnoreCase("loadFile") || input.equalsIgnoreCase("/lf")) {
|
||||
this.loadFile();
|
||||
} else if (input.equalsIgnoreCase("saveFile") || input.equalsIgnoreCase("/sf")) {
|
||||
this.saveFile(false);
|
||||
}else if (input.equalsIgnoreCase("/s")) {
|
||||
this.showShortcuts();
|
||||
} else if (input.equalsIgnoreCase("getPath")|| input.equalsIgnoreCase("/gp")) {
|
||||
this.getFilePath();
|
||||
} else if (input.equalsIgnoreCase("/v")) {
|
||||
this.QLversion();
|
||||
} else if (input.equalsIgnoreCase("/c")) {
|
||||
this.showSettings();
|
||||
} else {
|
||||
int i = 0;
|
||||
for (Shortcut sh : shortcuts) {
|
||||
if (input.equalsIgnoreCase(sh.getShortcut())){
|
||||
i = shortcuts.indexOf(sh);
|
||||
//Runtime.getRuntime().exec("cmd /c \"" + shortcuts.get(i).getPath() + "\"");
|
||||
ProcessBuilder pb = new ProcessBuilder(TokenConverter.convert(shortcuts.get(i).getPath()));
|
||||
pb.start();
|
||||
System.out.println("'" + shortcuts.get(i).getPath() + "' started");
|
||||
//MainGui.addNotification("'" + shortcuts.get(i).getPath() + "' started", 2);
|
||||
break;
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private void centerOnScreen() {
|
||||
BasicGuiApp.mainStage.centerOnScreen();
|
||||
}
|
||||
|
||||
private void checkForUpdates() {
|
||||
BasicGuiApp.up.checkForUpdate();
|
||||
}
|
||||
|
||||
private void loadFile() throws IOException {
|
||||
System.out.println("loading shortcuts");
|
||||
this.br = new BufferedReader(new FileReader(this.textfile));
|
||||
shortcuts.clear();
|
||||
tmpSh = "";
|
||||
tmpPa = "";
|
||||
while (this.tmpSh != null) {
|
||||
this.tmpSh = this.br.readLine();
|
||||
if (this.tmpSh == null) break;
|
||||
System.out.println(this.tmpSh);
|
||||
tmpPa = this.br.readLine();
|
||||
System.out.println(this.tmpPa);
|
||||
shortcuts.add(new Shortcut(tmpSh, tmpPa));
|
||||
System.out.println("shortcut added");
|
||||
}
|
||||
br.close();
|
||||
try{
|
||||
MainGui.addNotification("All shortcuts loaded", 2);
|
||||
}catch(NullPointerException npe){
|
||||
//will always fail when file gets read on boot
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
||||
private void saveFile(boolean silent) throws IOException {
|
||||
this.bw = new BufferedWriter(new FileWriter(this.textfile));
|
||||
|
||||
int i = 0;
|
||||
while (i <= shortcuts.size() - 1) {
|
||||
this.bw.write(shortcuts.get(i).getShortcut());
|
||||
this.bw.newLine();
|
||||
this.bw.write(shortcuts.get(i).getPath());
|
||||
this.bw.newLine();
|
||||
++i;
|
||||
}
|
||||
this.bw.close();
|
||||
if(!silent) {
|
||||
MainGui.addNotification("Data has been written", 2);
|
||||
}
|
||||
}
|
||||
|
||||
private void showShortcuts() {
|
||||
Stage stage = new Stage();
|
||||
ShortcutWindow sw = new ShortcutWindow(shortcuts);
|
||||
Scene s = new Scene(sw);
|
||||
stage.setScene(s);
|
||||
stage.setResizable(false);
|
||||
stage.initStyle(StageStyle.UNDECORATED);
|
||||
stage.showAndWait();
|
||||
try {
|
||||
saveFile(true);
|
||||
} catch (IOException e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
}
|
||||
|
||||
private void getFilePath(){
|
||||
MainGui.addNotification("Path: " + textfile.getAbsolutePath(), 6);
|
||||
}
|
||||
|
||||
private void QLversion() {
|
||||
MainGui.addNotification("QuickLaunch version: " + Start.VERSION , 5);
|
||||
}
|
||||
|
||||
private void writeHelp() {
|
||||
Stage stage = new Stage();
|
||||
HelpWindow hw = new HelpWindow();
|
||||
Scene s = new Scene(hw);
|
||||
stage.setTitle("Help dialog");
|
||||
stage.setResizable(false);
|
||||
stage.setScene(s);
|
||||
stage.showAndWait();
|
||||
}
|
||||
|
||||
private void showSettings() {
|
||||
SettingScene sc = new SettingScene();
|
||||
BasicGuiApp.mainStage.setScene(sc);
|
||||
}
|
||||
}
|
|
@ -0,0 +1,27 @@
|
|||
package mod_quicklaunch;
|
||||
|
||||
public class Shortcut {
|
||||
|
||||
private String shortcut;
|
||||
private String path;
|
||||
|
||||
public Shortcut(String shortcut,String path){
|
||||
this.shortcut = shortcut;
|
||||
this.path = path;
|
||||
}
|
||||
public String getShortcut() {
|
||||
return shortcut;
|
||||
}
|
||||
public void setShortcut(String shortcut) {
|
||||
this.shortcut = shortcut;
|
||||
}
|
||||
public String getPath() {
|
||||
return path;
|
||||
}
|
||||
public void setPath(String path) {
|
||||
this.path = path;
|
||||
}
|
||||
|
||||
|
||||
|
||||
}
|
|
@ -0,0 +1,87 @@
|
|||
package mod_quicklaunch;
|
||||
|
||||
import javafx.geometry.Pos;
|
||||
import javafx.scene.control.CheckBox;
|
||||
import javafx.scene.control.TextField;
|
||||
import javafx.scene.layout.Pane;
|
||||
|
||||
public class ShortcutEntryPane extends Pane{
|
||||
|
||||
private CheckBox checkBox;
|
||||
private TextField shortcutField;
|
||||
private TextField pathField;
|
||||
|
||||
public ShortcutEntryPane(Shortcut cut,int layoutY) {
|
||||
this.setPrefWidth(600);
|
||||
this.setPrefHeight(35);
|
||||
this.setLayoutX(0);
|
||||
this.setLayoutY(layoutY);
|
||||
|
||||
checkBox = new CheckBox();
|
||||
checkBox.setLayoutX(8);
|
||||
checkBox.setLayoutY(8);
|
||||
checkBox.setPrefWidth(18);
|
||||
checkBox.setPrefHeight(18);
|
||||
checkBox.setVisible(false);
|
||||
|
||||
|
||||
shortcutField = new TextField();
|
||||
shortcutField.setText(cut.getShortcut());
|
||||
shortcutField.setPrefWidth(92);
|
||||
shortcutField.setPrefHeight(27);
|
||||
shortcutField.setLayoutX(8);
|
||||
shortcutField.setLayoutY(4);
|
||||
shortcutField.setAlignment(Pos.CENTER);
|
||||
shortcutField.setEditable(false);
|
||||
shortcutField.setStyle("-fx-text-fill: gray");
|
||||
|
||||
pathField = new TextField();
|
||||
pathField.setText(cut.getPath());
|
||||
pathField.setPrefWidth(497);
|
||||
pathField.setPrefHeight(27);
|
||||
pathField.setLayoutX(100);
|
||||
pathField.setLayoutY(4);
|
||||
pathField.setEditable(false);
|
||||
pathField.setStyle("-fx-text-fill: gray");
|
||||
|
||||
this.getChildren().add(checkBox);
|
||||
this.getChildren().add(shortcutField);
|
||||
this.getChildren().add(pathField);
|
||||
}
|
||||
|
||||
public String getShortcut() {
|
||||
return shortcutField.getText();
|
||||
}
|
||||
|
||||
public String getPath() {
|
||||
return pathField.getText();
|
||||
}
|
||||
|
||||
public boolean isChecked() {
|
||||
return checkBox.isSelected();
|
||||
}
|
||||
|
||||
public void setEditable(boolean value) {
|
||||
shortcutField.setEditable(value);
|
||||
pathField.setEditable(value);
|
||||
if(value) {
|
||||
shortcutField.setStyle("-fx-text-fill: black");
|
||||
pathField.setStyle("-fx-text-fill: black");
|
||||
checkBox.setVisible(true);
|
||||
shortcutField.setPrefWidth(70);
|
||||
shortcutField.setLayoutX(30);
|
||||
}
|
||||
else {
|
||||
shortcutField.setStyle("-fx-text-fill: gray");
|
||||
pathField.setStyle("-fx-text-fill: gray");
|
||||
checkBox.setVisible(false);
|
||||
|
||||
shortcutField.setPrefWidth(92);
|
||||
shortcutField.setLayoutX(8);
|
||||
}
|
||||
}
|
||||
|
||||
public void focus() {
|
||||
shortcutField.requestFocus();
|
||||
}
|
||||
}
|
|
@ -0,0 +1,218 @@
|
|||
package mod_quicklaunch;
|
||||
|
||||
import java.util.ArrayList;
|
||||
|
||||
import javafx.event.ActionEvent;
|
||||
import javafx.event.EventHandler;
|
||||
import javafx.geometry.Insets;
|
||||
import javafx.scene.control.Button;
|
||||
import javafx.scene.control.ScrollPane;
|
||||
import javafx.scene.layout.AnchorPane;
|
||||
import javafx.scene.layout.Pane;
|
||||
import javafx.scene.paint.Color;
|
||||
import javafx.scene.shape.Rectangle;
|
||||
import javafx.stage.Stage;
|
||||
import manager.ResourceManager;
|
||||
|
||||
public class ShortcutWindow extends AnchorPane {
|
||||
|
||||
|
||||
Rectangle buttonBar;
|
||||
Button addButton;
|
||||
Button backButton;
|
||||
Button editButton;
|
||||
boolean editable = false;
|
||||
Button saveButton;
|
||||
Button trashButton;
|
||||
|
||||
Pane shortcutRootPane;
|
||||
ScrollPane scrollPane;
|
||||
private ArrayList<ShortcutEntryPane> shortcutEntries;
|
||||
|
||||
public ShortcutWindow(ArrayList<Shortcut> currentShortcuts) {
|
||||
|
||||
this.setPrefWidth(600);
|
||||
this.setMaxWidth(600);
|
||||
this.setPrefHeight(400);
|
||||
this.setMaxHeight(400);
|
||||
|
||||
buttonBar = new Rectangle(600,40);
|
||||
buttonBar.setLayoutX(0);
|
||||
buttonBar.setLayoutY(0);
|
||||
buttonBar.setFill(Color.WHITE);
|
||||
//buttonBar.setFill(Color.rgb(244, 244, 244));
|
||||
|
||||
addButton = new Button();
|
||||
addButton.setPrefWidth(32);
|
||||
addButton.setPrefHeight(32);
|
||||
addButton.setLayoutX(120);
|
||||
addButton.setLayoutY(5);
|
||||
addButton.setPadding(Insets.EMPTY);
|
||||
addButton.setStyle("-fx-background-color: transparent");
|
||||
addButton.setGraphic(ResourceManager.getAddImage());//Background(new Background(new BackgroundImage(ResourceManager.getAddImage(),BackgroundRepeat.NO_REPEAT,BackgroundRepeat.NO_REPEAT, BackgroundPosition.DEFAULT,BackgroundSize.DEFAULT)));
|
||||
addButton.setVisible(editable);
|
||||
|
||||
addButton.setOnAction(new EventHandler<ActionEvent>() {
|
||||
|
||||
public void handle(ActionEvent event) {
|
||||
shortcutEntries.add(new ShortcutEntryPane(new Shortcut("",""), shortcutEntries.size()*35));
|
||||
shortcutEntries.get(shortcutEntries.size()-1).setEditable(true);
|
||||
shortcutRootPane.setPrefHeight(shortcutRootPane.getPrefHeight()+35);
|
||||
shortcutRootPane.getChildren().add(shortcutEntries.get(shortcutEntries.size()-1));
|
||||
scrollPane.getContent().setVisible(false);
|
||||
scrollPane.getContent().setVisible(true);
|
||||
//Scrolling Thread :c
|
||||
Thread t = new Thread(new Runnable() {
|
||||
public void run() {
|
||||
try {
|
||||
Thread.sleep(200);
|
||||
} catch (InterruptedException e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
scrollPane.setVvalue(1.0);
|
||||
}
|
||||
});
|
||||
t.start();
|
||||
shortcutEntries.get(shortcutEntries.size()-1).focus();
|
||||
|
||||
|
||||
}
|
||||
});
|
||||
|
||||
backButton = new Button();
|
||||
backButton.setPrefWidth(32);
|
||||
backButton.setPrefHeight(32);
|
||||
backButton.setLayoutX(0);
|
||||
backButton.setLayoutY(5);
|
||||
backButton.setPadding(Insets.EMPTY);
|
||||
backButton.setStyle("-fx-background-color: transparent");
|
||||
backButton.setGraphic(ResourceManager.getBackImage());//setBackground(new Background(new BackgroundImage(ResourceManager.getBackImage(),BackgroundRepeat.NO_REPEAT,BackgroundRepeat.NO_REPEAT, BackgroundPosition.DEFAULT,BackgroundSize.DEFAULT)));
|
||||
backButton.setOnAction(new EventHandler<ActionEvent>() {
|
||||
|
||||
public void handle(ActionEvent event) {
|
||||
Stage thisStage = (Stage) ShortcutWindow.this.getScene().getWindow();
|
||||
thisStage.close();
|
||||
}
|
||||
});
|
||||
|
||||
editButton = new Button();
|
||||
editButton.setPrefWidth(32);
|
||||
editButton.setPrefHeight(32);
|
||||
editButton.setLayoutX(80);
|
||||
editButton.setLayoutY(5);
|
||||
editButton.setPadding(Insets.EMPTY);
|
||||
editButton.setStyle("-fx-background-color: transparent");
|
||||
editButton.setGraphic(ResourceManager.getEditImage());//setBackground(new Background(new BackgroundImage(ResourceManager.getEditImage(),BackgroundRepeat.NO_REPEAT,BackgroundRepeat.NO_REPEAT, BackgroundPosition.DEFAULT,BackgroundSize.DEFAULT)));
|
||||
editButton.setOnAction(new EventHandler<ActionEvent>() {
|
||||
|
||||
public void handle(ActionEvent event) {
|
||||
if(!editable) {
|
||||
editButton.setGraphic(ResourceManager.getLockImage());//setBackground(new Background(new BackgroundImage(ResourceManager.getLockImage(),BackgroundRepeat.NO_REPEAT,BackgroundRepeat.NO_REPEAT, BackgroundPosition.DEFAULT,BackgroundSize.DEFAULT)));
|
||||
editable = true;
|
||||
addButton.setVisible(editable);
|
||||
trashButton.setVisible(editable);
|
||||
saveButton.setGraphic(ResourceManager.getSaveImageUnsaved());
|
||||
|
||||
|
||||
for(ShortcutEntryPane sep: shortcutEntries) {
|
||||
sep.setEditable(editable);
|
||||
}
|
||||
}
|
||||
else {
|
||||
editButton.setGraphic(ResourceManager.getEditImage());//setBackground(new Background(new BackgroundImage(ResourceManager.getEditImage(),BackgroundRepeat.NO_REPEAT,BackgroundRepeat.NO_REPEAT, BackgroundPosition.DEFAULT,BackgroundSize.DEFAULT)));
|
||||
editable = false;
|
||||
addButton.setVisible(editable);
|
||||
trashButton.setVisible(editable);
|
||||
saveButton.setGraphic(ResourceManager.getSaveImage());
|
||||
for(ShortcutEntryPane sep: shortcutEntries) {
|
||||
sep.setEditable(editable);
|
||||
}
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
saveButton = new Button();
|
||||
saveButton.setPrefWidth(32);
|
||||
saveButton.setPrefHeight(32);
|
||||
saveButton.setLayoutX(40);
|
||||
saveButton.setLayoutY(5);
|
||||
saveButton.setPadding(Insets.EMPTY);
|
||||
saveButton.setStyle("-fx-background-color: transparent");
|
||||
saveButton.setGraphic(ResourceManager.getSaveImage());//setBackground(new Background(new BackgroundImage(ResourceManager.getSaveImage(),BackgroundRepeat.NO_REPEAT,BackgroundRepeat.NO_REPEAT, BackgroundPosition.DEFAULT,BackgroundSize.DEFAULT)));
|
||||
saveButton.setOnAction(new EventHandler<ActionEvent>() {
|
||||
|
||||
public void handle(ActionEvent event) {
|
||||
saveButton.setGraphic(ResourceManager.getSaveImage());
|
||||
editButton.fire();
|
||||
currentShortcuts.clear();
|
||||
for(int i = 0;i < shortcutEntries.size();i++) {
|
||||
currentShortcuts.add(new Shortcut(shortcutEntries.get(i).getShortcut(),shortcutEntries.get(i).getPath()));
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
trashButton = new Button();
|
||||
trashButton.setPrefWidth(32);
|
||||
trashButton.setPrefHeight(32);
|
||||
trashButton.setLayoutX(556);
|
||||
trashButton.setLayoutY(5);
|
||||
trashButton.setVisible(false);
|
||||
trashButton.setPadding(Insets.EMPTY);
|
||||
trashButton.setStyle("-fx-background-color: transparent");
|
||||
trashButton.setGraphic(ResourceManager.getTrashImage());//setBackground(new Background(new BackgroundImage(ResourceManager.getTrashImage(),BackgroundRepeat.NO_REPEAT,BackgroundRepeat.NO_REPEAT, BackgroundPosition.DEFAULT,BackgroundSize.DEFAULT)));
|
||||
trashButton.setOnAction(new EventHandler<ActionEvent>() {
|
||||
|
||||
public void handle(ActionEvent event) {
|
||||
boolean allRemoved = false;
|
||||
while(!allRemoved) {
|
||||
allRemoved = true;
|
||||
for(int i = 0; i < shortcutEntries.size();i++) {
|
||||
System.out.println(i);
|
||||
if(shortcutEntries.get(i).isChecked()) {
|
||||
allRemoved = false;
|
||||
shortcutEntries.remove(i);
|
||||
shortcutRootPane.getChildren().remove(i);
|
||||
break;
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
shortcutRootPane.setPrefHeight(shortcutEntries.size()*35);
|
||||
int y = 0;
|
||||
for(int i = 0;i < shortcutEntries.size();i++) {
|
||||
shortcutEntries.get(i).setLayoutY(y);
|
||||
y+=35;
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
shortcutRootPane = new Pane();
|
||||
shortcutRootPane.setPrefSize(582 , currentShortcuts.size()*35);
|
||||
shortcutRootPane.setLayoutX(0);
|
||||
shortcutRootPane.setLayoutY(0);
|
||||
|
||||
scrollPane = new ScrollPane(shortcutRootPane);
|
||||
scrollPane.setPrefSize(600, 360);
|
||||
scrollPane.setLayoutX(0);
|
||||
scrollPane.setLayoutY(40);
|
||||
|
||||
shortcutEntries = new ArrayList<ShortcutEntryPane>();
|
||||
int y = 0;
|
||||
for(int i = 0;i<currentShortcuts.size();i++) {
|
||||
shortcutEntries.add(new ShortcutEntryPane(currentShortcuts.get(i), y));
|
||||
shortcutRootPane.getChildren().add(shortcutEntries.get(i));
|
||||
y+=35;
|
||||
}
|
||||
|
||||
this.getChildren().add(scrollPane);
|
||||
this.getChildren().add(buttonBar);
|
||||
this.getChildren().add(addButton);
|
||||
this.getChildren().add(backButton);
|
||||
this.getChildren().add(editButton);
|
||||
this.getChildren().add(saveButton);
|
||||
this.getChildren().add(trashButton);
|
||||
|
||||
}
|
||||
|
||||
}
|
|
@ -0,0 +1,31 @@
|
|||
package mod_quicklaunch;
|
||||
|
||||
import java.util.ArrayList;
|
||||
|
||||
public class TokenConverter {
|
||||
|
||||
public static String[] convert(String input){
|
||||
ArrayList<String> tokens = new ArrayList<String>();
|
||||
String tmp = "";
|
||||
for(int i = 0;i < input.length();i++){
|
||||
char a = input.charAt(i);
|
||||
if(!(a == ';')){
|
||||
tmp += a;
|
||||
|
||||
}
|
||||
else{
|
||||
|
||||
tokens.add(tmp);
|
||||
tmp = "";
|
||||
}
|
||||
}
|
||||
tokens.add(tmp);
|
||||
|
||||
String[] returnArray = tokens.toArray(new String[tokens.size()]);
|
||||
|
||||
|
||||
|
||||
return returnArray;
|
||||
}
|
||||
|
||||
}
|
|
@ -0,0 +1,20 @@
|
|||
package scenes;
|
||||
|
||||
|
||||
import guis.MainGui;
|
||||
import javafx.scene.Scene;
|
||||
import javafx.scene.paint.Color;
|
||||
|
||||
|
||||
public class MainScene extends Scene{
|
||||
|
||||
public MainScene() {
|
||||
super(new MainGui());
|
||||
|
||||
this.setFill(Color.TRANSPARENT);
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
}
|
|
@ -0,0 +1,14 @@
|
|||
package scenes;
|
||||
|
||||
import guis.SettingGui;
|
||||
import javafx.scene.Scene;
|
||||
import javafx.scene.paint.Color;
|
||||
|
||||
public class SettingScene extends Scene{
|
||||
|
||||
public SettingScene() {
|
||||
super(new SettingGui());
|
||||
this.setFill(Color.TRANSPARENT);
|
||||
}
|
||||
|
||||
}
|