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"); } } }