import javax.swing.AbstractAction;
import javax.swing.Action;
import javax.swing.JOptionPane;
+import javax.swing.UIManager;
+import javax.swing.UnsupportedLookAndFeelException;
import net.pterodactylus.jsite.core.Core;
import net.pterodactylus.jsite.core.CoreListener;
import net.pterodactylus.jsite.core.Node;
import net.pterodactylus.jsite.core.Project;
+import net.pterodactylus.jsite.core.Request;
import net.pterodactylus.jsite.i18n.I18n;
import net.pterodactylus.jsite.i18n.gui.I18nAction;
+import net.pterodactylus.util.image.IconLoader;
import net.pterodactylus.util.io.Closer;
import net.pterodactylus.util.logging.Logging;
import net.pterodactylus.util.logging.LoggingListener;
private ConfigurationDialog configurationDialog;
/** The list of all defined nodes. */
- private List<Node> nodeList;
+ private List<Node> nodeList = Collections.synchronizedList(new ArrayList<Node>());
//
// CONFIGURATION
/** The user font. */
private String userFont;
+ /** The class name of the look and feel. */
+ private String lookAndFeel;
+
/**
* Creates a new swing interface.
*
this.configDirectory = configDirectory;
I18n.setLocale(Locale.ENGLISH);
loadConfig();
+ if (lookAndFeel != null) {
+ try {
+ UIManager.setLookAndFeel(lookAndFeel);
+ } catch (ClassNotFoundException cnfe1) {
+ logger.log(Level.WARNING, "could not load look and feel", cnfe1);
+ } catch (InstantiationException ie1) {
+ logger.log(Level.WARNING, "could not load look and feel", ie1);
+ } catch (IllegalAccessException iae1) {
+ logger.log(Level.WARNING, "could not load look and feel", iae1);
+ } catch (UnsupportedLookAndFeelException ulafe1) {
+ logger.log(Level.WARNING, "could not load look and feel", ulafe1);
+ }
+ }
if (antialias) {
System.setProperty("swing.aatext", "true");
}
mainWindow = new MainWindow(this);
mainWindow.setAdvancedMode(advancedMode);
logWindow = new LogWindow();
- logWindow.setVisible(true); /* TODO - remove */
}
//
if (configProperties.containsKey("userFont")) {
userFont = configProperties.getProperty("userFont");
}
+ if (configProperties.containsKey("lookAndFeel")) {
+ lookAndFeel = configProperties.getProperty("lookAndFeel");
+ }
if (configProperties.containsKey("language")) {
I18n.setLocale(new Locale(configProperties.getProperty("language")));
}
if (userFont != null) {
configProperties.setProperty("userFont", userFont);
}
+ if (lookAndFeel != null) {
+ configProperties.setProperty("lookAndFeel", lookAndFeel);
+ }
configProperties.setProperty("language", I18n.getLocale().getLanguage());
FileOutputStream configOutputStream = null;
try {
* Initializes all actions.
*/
private void initActions() {
- configureAction = new I18nAction("mainWindow.menu.jSite.configure") {
+ configureAction = new I18nAction("mainWindow.menu.jSite.configure", IconLoader.loadIcon("/preferences-system.png")) {
/**
* {@inheritDoc}
importConfig();
}
};
- quitAction = new I18nAction("mainWindow.menu.jSite.quit") {
+ quitAction = new I18nAction("mainWindow.menu.jSite.quit", IconLoader.loadIcon("/system-log-out.png")) {
/**
* {@inheritDoc}
configurationDialog.setAntialias(antialias);
configurationDialog.setControlFont(controlFont);
configurationDialog.setUserFont(userFont);
+ configurationDialog.setLookAndFeel(lookAndFeel);
configurationDialog.setVisible(true);
if (!configurationDialog.wasCancelled()) {
advancedMode = configurationDialog.isAdvancedMode();
antialias = configurationDialog.isAntialias();
controlFont = configurationDialog.getControlFont();
userFont = configurationDialog.getUserFont();
+ lookAndFeel = configurationDialog.getLookAndFeel();
saveConfig();
}
}
* Quits jSite.
*/
private void quit() {
+ /* TODO - ask */
+ core.stop();
saveConfig();
System.exit(0);
}
* The list of nodes
*/
private void rebuildNodeActions(List<Node> nodes) {
+ logger.fine("rebuilding node actions…");
nodeConnectActions.clear();
nodeNodeConnectActions.clear();
nodeConnectActionNodes.clear();
nodeNodeDisconnectActions.clear();
nodeDisconnectActionNodes.clear();
for (Node node: nodes) {
+ logger.finer("adding node “" + node + "” to menu");
Action nodeConnectAction = new AbstractAction(node.getName()) {
/**
* {@inheritDoc}
*/
public void coreLoaded() {
- this.nodeList = core.getNodes();
- manageNodesDialog.setNodeList(nodeList);
mainWindow.setVisible(true);
mainWindow.setStatusBarText(I18n.get("mainWindow.statusBar.coreLoaded"));
}
/**
* {@inheritDoc}
*/
+ public void nodeAdded(Node node) {
+ logger.log(Level.INFO, "node added: " + node);
+ nodeList.add(node);
+ manageNodesDialog.setNodeList(nodeList);
+ rebuildNodeActions(nodeList);
+ mainWindow.refreshNodeMenuItems();
+ }
+
+ /**
+ * {@inheritDoc}
+ */
+ public void nodeRemoved(Node node) {
+ logger.log(Level.INFO, "node removed: " + node);
+ nodeList.remove(node);
+ rebuildNodeActions(nodeList);
+ mainWindow.refreshNodeMenuItems();
+ }
+
+ /**
+ * {@inheritDoc}
+ */
public void nodeConnecting(Node node) {
Action nodeConnectAction = nodeNodeConnectActions.get(node);
nodeConnectActions.remove(nodeConnectAction);
public void nodeConnected(Node node) {
Action nodeDisconnectAction = nodeNodeDisconnectActions.get(node);
nodeDisconnectActions.add(nodeDisconnectAction);
+ mainWindow.setStatusBarText(I18n.get("mainWindow.statusBar.connectedToNode", node.getName(), node.getHostname(), node.getPort()));
mainWindow.refreshNodeMenuItems();
}
nodeConnectActions.add(nodeConnectAction);
Action nodeDisconnectAction = nodeNodeDisconnectActions.get(node);
nodeDisconnectActions.remove(nodeDisconnectAction);
+ mainWindow.setStatusBarText(I18n.get("mainWindow.statusBar.disconnectedFromNode", node.getName(), node.getHostname(), node.getPort()));
mainWindow.refreshNodeMenuItems();
}
+ /**
+ * {@inheritDoc}
+ */
+ public void requestAdded(Node node, Request request) {
+ logger.log(Level.INFO, "request added to node: " + request + ", " + node);
+ /* TODO - implement */
+ }
+
+ /**
+ * {@inheritDoc}
+ */
+ public void requestProgressed(Request request, int totalBlocks, int requiredBlocks, int successfulBlocks, int failedBlocks, int fatallyFailedBlocks, boolean finalizedTotal) {
+ /* TODO - update table model */
+ }
+
//
// INTERFACE LoggingListener
//