From 15dee3103e5fe952bf094645aed8a06be5c10cb2 Mon Sep 17 00:00:00 2001 From: Ruben Daniels Date: Tue, 17 Feb 2015 04:11:06 +0000 Subject: [PATCH] Basics are working --- configs/client-default.js | 3 ++ plugins/c9.ide.ui/widgets.datagrid.js | 15 +++++++-- plugins/c9.ide.ui/widgets.list.js | 44 ++++++++++++++++----------- plugins/c9.ide.ui/widgets.tree.js | 8 +++-- 4 files changed, 48 insertions(+), 22 deletions(-) diff --git a/configs/client-default.js b/configs/client-default.js index bc0f3eda..47369527 100644 --- a/configs/client-default.js +++ b/configs/client-default.js @@ -220,6 +220,9 @@ module.exports = function(options) { autoInit: !options.local }, "plugins/c9.ide.ui/forms", + "plugins/c9.ide.ui/widgets.list", + "plugins/c9.ide.ui/widgets.tree", + "plugins/c9.ide.ui/widgets.datagrid", "plugins/c9.ide.ui/focus", "plugins/c9.ide.ui/lib_apf", diff --git a/plugins/c9.ide.ui/widgets.datagrid.js b/plugins/c9.ide.ui/widgets.datagrid.js index a8122cc2..852f2696 100644 --- a/plugins/c9.ide.ui/widgets.datagrid.js +++ b/plugins/c9.ide.ui/widgets.datagrid.js @@ -1,10 +1,12 @@ define(function(require, exports, module) { - main.consumes = ["Tree"]; + main.consumes = ["Tree", "layout", "ui"]; main.provides = ["Datagrid"]; return main; function main(options, imports, register) { var Tree = imports.Tree; + var layout = imports.layout; + var ui = imports.ui; var TreeModel = require("ace_tree/data_provider"); @@ -22,10 +24,19 @@ define(function(require, exports, module) { model.columns = options.columns; options.model = model; - var plugin = new Tree(options, forPlugin); + var plugin = new Tree(options, forPlugin, true); // var emit = plugin.getEmitter(); if (baseclass) plugin.baseclass(); + layout.on("eachTheme", function(e){ + var cls = "." + plugin.theme + " .row"; + var height = parseInt(ui.getStyleRule(cls, "height"), 10) || 24; + // model.rowHeightInner = height - 1; + model.rowHeight = height; + + if (e.changed) plugin.resize(true); + }); + /** */ /** diff --git a/plugins/c9.ide.ui/widgets.list.js b/plugins/c9.ide.ui/widgets.list.js index f205d83e..a6110307 100644 --- a/plugins/c9.ide.ui/widgets.list.js +++ b/plugins/c9.ide.ui/widgets.list.js @@ -27,7 +27,9 @@ define(function(require, exports, module) { var model; var redirectEvents; var meta = {}; - var excludedEvents = { "load":1, "unload":1 }; + var excludedEvents = { + "load":1, "unload":1, "addListener":1, "removeListener":1 + }; plugin.on("load", function(){ acetree = new AceTree(options.container); @@ -40,43 +42,44 @@ define(function(require, exports, module) { for (var prop in options) { if (prop == "container") continue; if (plugin.hasOwnProperty(prop)) - plugin[prop](options[prop]); + plugin[prop] = options[prop]; } // Configure redirected events redirectEvents = { - scroll: acetree.provider, + scroll: model, scrollbarVisibilityChanged: acetree.renderer, resize: acetree.renderer, - expand: acetree.provider, - collapse: acetree.provider + expand: model, + collapse: model }; }); plugin.on("unload", function(){ - acetree && acetree.destroy(); - - acetree = null; - model = null; - redirectEvents = null; + if (acetree) { + model.setRoot(null); + acetree.destroy(); + acetree.container.innerHTML = ""; + } meta = {}; }); plugin.on("newListener", function(type, fn){ if (excludedEvents[type]) return; if (redirectEvents[type]) - redirectEvents.on(type, fn); + redirectEvents[type].on(type, fn); else acetree.on(type, fn); }); plugin.on("removeListener", function(type, fn){ if (excludedEvents[type]) return; if (redirectEvents[type]) - redirectEvents.removeListener(type, fn); + redirectEvents[type].removeListener(type, fn); else acetree.removeListener(type, fn); }); /** + * */ /** * @constructor @@ -101,14 +104,15 @@ define(function(require, exports, module) { * */ get selectedNodes(){ - return (acetree.selection.getCursor() - || acetree.getFirstNode()) || null; + return (acetree.selection.getSelectedNodes() || []);/*.map(function(n){ + return n.id; + }); */ }, /** * */ get selectedNode(){ - return acetree.selection.getSelectedNodes() || []; + return (acetree.selection.getCursor() || null); //.id || null; }, /** * @@ -117,7 +121,7 @@ define(function(require, exports, module) { /** * */ - get scrollTop(){ return acetree.provider.getScrollTop(); }, + get scrollTop(){ return model.getScrollTop(); }, /** * */ @@ -354,7 +358,7 @@ define(function(require, exports, module) { * */ setScrollTop: function(scrollTop){ - return acetree.provider.setScrollTop(scrollTop); + return model.setScrollTop(scrollTop); }, /** * @@ -397,6 +401,12 @@ define(function(require, exports, module) { */ getIndexForNode: function(node){ return model.getIndexForNode(node); + }, + /** + * + */ + refresh: function(){ + plugin.setRoot(plugin.root); } }); diff --git a/plugins/c9.ide.ui/widgets.tree.js b/plugins/c9.ide.ui/widgets.tree.js index ee3dacbc..9e74eac3 100644 --- a/plugins/c9.ide.ui/widgets.tree.js +++ b/plugins/c9.ide.ui/widgets.tree.js @@ -16,10 +16,12 @@ define(function(require, exports, module) { if (!options.baseName) options.baseName = "tree"; - var model = new TreeModel(); - options.model = model; + if (!options.model) { + var model = new TreeModel(); + options.model = model; + } - var plugin = new List(options, forPlugin); + var plugin = new List(options, forPlugin, true); // var emit = plugin.getEmitter(); if (baseclass) plugin.baseclass();