update project when textfields are updated
[jSite2.git] / src / net / pterodactylus / jsite / gui / SwingInterface.java
index 7d0a96d..49913ce 100644 (file)
@@ -26,6 +26,7 @@ import java.io.FileOutputStream;
 import java.io.IOException;
 import java.util.ArrayList;
 import java.util.Collections;
+import java.util.Date;
 import java.util.HashMap;
 import java.util.List;
 import java.util.Locale;
@@ -45,6 +46,7 @@ import javax.swing.UnsupportedLookAndFeelException;
 
 import net.pterodactylus.jsite.core.Core;
 import net.pterodactylus.jsite.core.CoreListener;
+import net.pterodactylus.jsite.core.NoNodeException;
 import net.pterodactylus.jsite.core.Node;
 import net.pterodactylus.jsite.core.Project;
 import net.pterodactylus.jsite.core.Request;
@@ -144,6 +146,9 @@ public class SwingInterface implements CoreListener, LoggingListener {
        /** The list of all defined nodes. */
        private List<Node> nodeList = Collections.synchronizedList(new ArrayList<Node>());
 
+       /** The request table model. */
+       private RequestTableModel requestTableModel = new RequestTableModel();
+
        //
        // CONFIGURATION
        //
@@ -370,6 +375,15 @@ public class SwingInterface implements CoreListener, LoggingListener {
                return deleteProjectAction;
        }
 
+       /**
+        * Returns the request table model.
+        * 
+        * @return The request table model
+        */
+       RequestTableModel getRequestTableModel() {
+               return requestTableModel;
+       }
+
        //
        // ACTIONS
        //
@@ -804,9 +818,18 @@ public class SwingInterface implements CoreListener, LoggingListener {
         * Adds a project.
         */
        private void addProject() {
-               Project project = new Project();
-               project.setName("New Project");
-               project.setDescription("");
+               try {
+                       Project project = core.createProject();
+                       mainWindow.addProject(project);
+                       project.setName(I18n.get("general.newProject.name"));
+                       project.setDescription(I18n.get("general.newProject.description", new Date()));
+               } catch (NoNodeException nne1) {
+                       /* TODO - add i18n */
+                       JOptionPane.showMessageDialog(mainWindow, I18n.get(""), I18n.get(""), JOptionPane.ERROR_MESSAGE);
+               } catch (IOException e) {
+                       /* TODO - add i18n */
+                       JOptionPane.showMessageDialog(mainWindow, I18n.get(""), I18n.get(""), JOptionPane.ERROR_MESSAGE);
+               }
        }
 
        /**
@@ -832,6 +855,9 @@ public class SwingInterface implements CoreListener, LoggingListener {
         */
        public void loadingProjectsDone(String directory) {
                mainWindow.setStatusBarText(I18n.get("mainWindow.statusBar.projectLoadingDone"));
+               for (Project project: core.getProjects()) {
+                       mainWindow.addProject(project);
+               }
        }
 
        /**
@@ -950,7 +976,7 @@ public class SwingInterface implements CoreListener, LoggingListener {
                JOptionPane.showMessageDialog(mainWindow, I18n.get("mainWindow.error.nodeConnectionFailed.message", node.getName(), node.getHostname(), node.getPort(), (cause != null) ? cause.getMessage() : "no reason given"), I18n.get("mainWindow.error.nodeConnectionFailed.title"), JOptionPane.ERROR_MESSAGE);
                mainWindow.refreshNodeMenuItems();
        }
-       
+
        /**
         * {@inheritDoc}
         */
@@ -966,17 +992,24 @@ public class SwingInterface implements CoreListener, LoggingListener {
        /**
         * {@inheritDoc}
         */
-       public void requestAdded(Node node, Request request) {
-               logger.log(Level.INFO, "request added to node: " + request + ", " + node);
+       public void requestAdded(Request request) {
+               logger.log(Level.INFO, "request added to node: " + request + ", " + request.getNode());
                /* TODO - implement */
+               requestTableModel.addRequest(request);
        }
 
        /**
         * {@inheritDoc}
         */
-       public void requestProgressed(Request request, int totalBlocks, int requiredBlocks, int successfulBlocks, int failedBlocks, int fatallyFailedBlocks, boolean finalizedTotal) {
+       public void requestProgressed(Request request) {
                /* TODO - update table model */
-               mainWindow.setStatusBarText(request.getIdentifier() + " @ " + ((10000 * successfulBlocks / requiredBlocks) / 100.0) + "%");
+       }
+
+       /**
+        * @see net.pterodactylus.jsite.core.CoreListener#requestRemoved(net.pterodactylus.jsite.core.Request)
+        */
+       public void requestRemoved(Request request) {
+               requestTableModel.removeRequest(request);
        }
 
        //