/* ************************************************************************\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
{\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
-\r
- var stopCommand = this.commandManager.getCommandById("stop");\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 stopCommand = commandManager.getCommandById("stop");\r
var serviceManager = org.argeo.slc.web.util.RequestManager.getInstance();\r
serviceManager.setStopCommand(stopCommand);\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
\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
- var model = this.getModel();\r
- model.removeRows(0, model.getRowCount());\r
- var serviceManager = org.argeo.slc.web.util.RequestManager.getInstance();\r
- var request = serviceManager.getRequest(url, "GET", "application/xml"); \r
- request.addListener("completed", function(response){\r
- xml = response.getContent();\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
- serviceManager.requestCompleted(this);\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, false); \r
- } \r
+ }\r
+ \r
}\r
});
\ No newline at end of file