package net.sourceforge.pain.tools.guitool.dialog;
import net.sourceforge.pain.tools.guitool.*;
import net.sourceforge.pain.network.guitool.*;
import javax.swing.*;
import java.io.*;
public class GlobalPerformer {
private static GTClientConnection connection;
public static GTClientConnection getConnection() {
return connection;
}
public static void connect() {
assertState(!isConnected(), "already connected");
connection = new ConnectPerformer().connect();
if (connection == null) {
GuiTool.statusLog("connection canceled");
return;
}
GuiTool.statusLog("connected!");
GuiTool.appFrame.statusBar.setConnected(true);
GuiTool.appFrame.mainMenu.setConnected(true);
GuiTool.appFrame.toolbar.updateState();
GuiTool.appFrame.workspacePanel.updateState();
}
public static void disconnect() {
assertState(isConnected(), "not connected");
_disconnect();
}
private static void _disconnect() {
if (connection != null) {
connection.close();
connection = null;
}
GuiTool.statusLog("disconnected");
GuiTool.appFrame.statusBar.setConnected(false);
GuiTool.appFrame.mainMenu.setConnected(false);
GuiTool.appFrame.toolbar.updateState();
GuiTool.appFrame.workspacePanel.updateState();
}
private static void assertState(boolean check, String failMessage) {
if (check) {
return;
}
JOptionPane.showMessageDialog(GuiTool.appFrame, failMessage, "Internal Error", JOptionPane.ERROR_MESSAGE);
}
public static boolean isConnected() {
return connection != null;
}
public static void exit() {
System.exit(0);
}
public static void onRemoteDisconnect() {
JOptionPane.showMessageDialog(GuiTool.appFrame, "Remote disconnect", "INFO", JOptionPane.INFORMATION_MESSAGE);
_disconnect();
}
public static void ensureConnected() throws IllegalStateException {
if (!isConnected()) {
connect();
}
if (connection == null) {
throw new IllegalStateException("not connected");
}
}
}