]> git.argeo.org Git - gpl/argeo-slc.git/blobdiff - org.argeo.slc.webapp/src/main/webapp/source/class/org/argeo/slc/web/Application.js
Huge refactoring
[gpl/argeo-slc.git] / org.argeo.slc.webapp / src / main / webapp / source / class / org / argeo / slc / web / Application.js
index 33939256391b819dab25d806669fbda29c6bdd73..836593b117d27c5f7a98c0b34941c9a1af07cea6 100644 (file)
@@ -1,10 +1,10 @@
 /* ************************************************************************\r
 \r
-  Copyright:\r
+  Copyright: 2008 Argeo\r
 \r
-   License:\r
+   License: LGPL\r
 \r
-   Authors:\r
+   Authors: Charles du Jeu\r
 \r
 ************************************************************************ */\r
 \r
 qx.Class.define("org.argeo.slc.web.Application",\r
 {\r
   extend : qx.application.Standalone,\r
-\r
-\r
-  properties : \r
-  {\r
-       model : {nullable:true},\r
-       commandManager : {}\r
+  settings : {\r
+       //"slc.Perspective" : "org.argeo.slc.web.custom.Perspective"\r
   },\r
-\r
+  \r
   /*\r
   *****************************************************************************\r
      MEMBERS\r
@@ -44,157 +40,67 @@ qx.Class.define("org.argeo.slc.web.Application",
     {\r
       // Call super class\r
       this.base(arguments);\r
-      this.views = {};      \r
-\r
+      this.views = {};\r
+      \r
+      var viewsManager = org.argeo.slc.web.components.ViewsManager.getInstance();\r
+      viewsManager.setApplicationRoot(this.getRoot());\r
+      \r
       // Enable logging in debug variant\r
       if (qx.core.Variant.isSet("qx.debug", "on"))\r
       {\r
         qx.log.appender.Native;\r
         qx.log.appender.Console;\r
       }\r
+      var winLogger = org.argeo.slc.web.components.Logger.getInstance();\r
+      this.getRoot().add(winLogger);\r
+      qx.log.Logger.register(winLogger);\r
 \r
-\r
-      // May layout\r
+      // Main layout\r
       var layout = new qx.ui.layout.VBox();\r
       var container = new qx.ui.container.Composite(layout);\r
+      viewsManager.setViewPanesContainer(container);\r
+      // Document is the application root      \r
+      this.getRoot().add(container, {left:0,right:0,top:0,bottom:0});      \r
          \r
       var menuBar = new qx.ui.menubar.MenuBar();\r
       var toolbar = new qx.ui.toolbar.ToolBar();\r
-      this.commandManager = new org.argeo.slc.web.event.CommandsManager(this);\r
-      this.commandManager.createCommands();\r
-      this.commandManager.createMenuButtons(menuBar);\r
-      this.commandManager.createToolbarParts(toolbar);\r
-      toolbar.setShow("icon");\r
-      this.commandManager.addToolbarContextMenu(toolbar);\r
+      var commandManager = org.argeo.slc.web.event.CommandsManager.getInstance();\r
+      commandManager.createCommands();\r
+      commandManager.registerMenuBar(menuBar);\r
+      commandManager.registerToolBar(toolbar);\r
+      toolbar.setShow("both");\r
+      commandManager.addToolbarContextMenu(toolbar);\r
 \r
-      var splitPane = new qx.ui.splitpane.Pane("horizontal");\r
-         var splitLeft = new qx.ui.splitpane.Pane("vertical").set({\r
-           width: 300,\r
-           minWidth:100            \r
-         });\r
-         splitLeft.setDecorator(null);\r
-         var topLeft = new org.argeo.slc.web.components.View("list", "Test Cases");\r
-         this.registerView(topLeft);\r
-         \r
-         var bottomLeft = new org.argeo.slc.web.components.View("details", "Details");\r
-         bottomLeft.set({minHeight:200});\r
-         this.registerView(bottomLeft);\r
+      var stopCommand = commandManager.getCommandById("stop");\r
+      var serviceManager = org.argeo.slc.web.util.RequestManager.getInstance();\r
+      serviceManager.setStopCommand(stopCommand);\r
 \r
-         splitLeft.add(topLeft, 1);\r
-         splitLeft.add(bottomLeft, 0);\r
-         \r
-         splitPane.add(splitLeft, 0);\r
-         this.rightPane = new org.argeo.slc.web.components.View("applet", "Test");\r
-         this.registerView(this.rightPane);\r
-         splitPane.add(this.rightPane, 1);\r
-      \r
       container.add(menuBar);\r
-      container.add(toolbar);\r
-      container.add(splitPane, {flex:1});\r
-      \r
-      // Document is the application root\r
-      var doc = this.getRoot();\r
-      doc.add(container, {\r
-       left:0,\r
-       right:0,\r
-       top:0,\r
-       bottom:0\r
-      });\r
-  \r
-      this.initializeViews();\r
+      container.add(toolbar);      \r
+\r
+      /**\r
+       * Call GuiLoader to load default perspective and associated views.\r
+       */\r
+      var perspectiveClassName  = qx.core.Setting.get("slc.Perspective")\r
+      if(!perspectiveClassName){\r
+       this.error("Cannot find default perspective setting ! Please check your config.json file! (CUSTOM_PERSPECTIVE, line 23).");\r
+       return;\r
+      }\r
+      var perspectiveClass = qx.Class.getByName(perspectiveClassName);\r
+      if(!perspectiveClass){\r
+       this.error("Cannot find class for default perspective ("+perspectiveClassName+"). Please check your config.json file! (CUSTOM_PERSPECTIVE, line 23).");\r
+       return;\r
+      }\r
+      var perspective = new perspectiveClass;\r
+      perspective.initViewPanes(viewsManager);\r
+      perspective.initViews(viewsManager);\r
+\r
+         // Test\r
+         org.argeo.slc.web.util.RequestManager.getInstance().addListener("reload", function(e){\r
+               qx.log.Logger.info("Received reload event for data type : "+ e.getDataType());\r
+         });      \r
       \r
-    },\r
-\r
-       registerView : function(view){\r
-               this.views[view.getViewId()] = view;\r
-               view.getViewSelection().addListener("changeSelection", function(e){\r
-                       this.commandManager.refreshCommands(e.getData());\r
-         }, this);\r
-               \r
-       },\r
-       \r
-       getSelectionForView : function(viewId){\r
-               if(this.views[viewId]){\r
-                       return this.views[viewId].getViewSelection();\r
-               }\r
-               this.error("Cannot find view '"+viewId+"'");\r
-               return null;\r
-       },\r
-    \r
-    /**************************\r
-      CLIENT METHODS\r
-     ************************/\r
-    initializeViews : function(){\r
-         var view = this.views["list"];\r
-         var model = new qx.ui.table.model.Simple();\r
-         model.setColumns(["Test Case", "Date"]);        \r
-         this.setModel(model);\r
-         this.table = new qx.ui.table.Table(model, {\r
-               tableColumnModel: function(obj){\r
-                       return new qx.ui.table.columnmodel.Resize(obj)\r
-               }\r
-         });     \r
-         this.table.set({\r
-               statusBarVisible: false,\r
-               showCellFocusIndicator:false,\r
-               columnVisibilityButtonVisible:false,\r
-               contextMenu : this.commandManager.createMenuFromIds(["opentest", "deletetest", "copytocollection"]),\r
-               decorator : new qx.ui.decoration.Background("#fff")\r
-         });\r
-         this.table.addListener("dblclick", function(e){\r
-       this.commandManager.executeCommand("opentest");\r
-         }, this);\r
-         var columnModel = this.table.getTableColumnModel(); \r
-         columnModel.getBehavior().setWidth(0, "60%");\r
-         columnModel.setDataCellRenderer(0, new org.argeo.slc.web.components.XmlRenderer());\r
-         columnModel.setDataCellRenderer(1, new org.argeo.slc.web.components.XmlRenderer());\r
-         \r
-         this.table.getSelectionManager().getSelectionModel().addListener("changeSelection", function(e){\r
-               var viewSelection = view.getViewSelection();\r
-               viewSelection.clear();\r
-               var selectionModel = this.table.getSelectionManager().getSelectionModel();\r
-               if(!selectionModel.getSelectedCount()){\r
-                       return;\r
-               }\r
-               var ranges = this.table.getSelectionManager().getSelectionModel().getSelectedRanges();\r
-               var xmlNode = this.getModel().getRowData(ranges[0].minIndex);\r
-               viewSelection.addNode(xmlNode);\r
-               view.setViewSelection(viewSelection);\r
-         }, this);\r
-         \r
-         view.setContent(this.table, false);\r
-       \r
-    },\r
-    \r
-    loadTable : function(url){\r
-       \r
-      this.baseUrl = "http://localhost:7070/com.capco.sparta.web/";\r
-      this.resultListService = "resultList.xml";\r
-       \r
-               var model = this.getModel();\r
-               model.removeRows(0, model.getRowCount());\r
-               var request = new qx.io2.HttpRequest(url);              \r
-               request.addListener("load", function(e){\r
-                       var xml = this.getResponseXml();\r
-                       if(xml == null){\r
-                               var txt = this.getResponseText();\r
-                               xml = new qx.xml.Document.fromString(txt);\r
-                       }\r
-                       qx.log.Logger.info("Successfully loaded XML");\r
-                       var nodes = qx.xml.Element.selectNodes(xml, "//data");\r
-                       for(var i=0; i<nodes.length;i++){\r
-                               var rowData = nodes[i];\r
-                               model.addRows([rowData]);\r
-                       }\r
-               }, request);\r
-               request.send();\r
-    },\r
-    \r
-       createTestApplet : function(xmlNode){\r
-               var applet = new org.argeo.slc.web.components.Applet();\r
-               applet.initData(xmlNode);\r
-               this.rightPane.empty();\r
-               this.rightPane.setContent(applet, true);                \r
-       }       \r
+    }\r
+               \r
   }\r
 });
\ No newline at end of file