import gui.Gui;
import java.util.Scanner;
import javax.swing.JOptionPane;
import javax.swing.UIManager;
import api.ApiClient;
import controller.Controller;
public class Start {
public static void main(String args[])
{
boolean cli = false;
boolean disableGui = false;
boolean disableRpc = false;
for(String arg: args)
{
if(arg.startsWith("-disablerpc"))
{
disableRpc = true;
}
if(arg.equals("-disablegui"))
{
disableGui = true;
}
if(arg.equals("-cli"))
{
cli = true;
}
}
if(!cli)
{
try
{
//ONE MUST BE ENABLED
if(disableGui && disableRpc)
{
throw new Exception("Both gui and rpc cannot be disabled!");
}
//STARTING NETWORK/BLOCKCHAIN/RPC
Controller.getInstance().start(disableRpc);
if(!disableGui)
{
//START GUI
new Gui();
}
}
catch(Exception e)
{
e.printStackTrace();
//USE SYSTEM STYLE
try {
UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());
} catch (Exception e2) {
e2.printStackTrace();
}
//ERROR STARTING
System.out.println("STARTUP ERROR: " + e.getMessage());
if(!disableGui)
{
JOptionPane.showMessageDialog(null, e.getMessage(), "Startup Error", JOptionPane.ERROR_MESSAGE);
}
//FORCE SHUTDOWN
System.exit(0);
}
}
else
{
Scanner scanner = new Scanner(System.in);
ApiClient client = new ApiClient();
while(true)
{
System.out.print("[COMMAND] ");
String command = scanner.nextLine();
if(command.equals("quit"))
{
scanner.close();
System.exit(0);
}
String result = client.executeCommand(command);
System.out.println("[RESULT] " + result);
}
}
}
}