-
+
+
+
+
+
+
+JQueryUIDock
+
+Docking facility built upon JQuery UI Tabs & Sortable and the UI Layout plugin
+
+
+
-
-
-
-
-
-
+
-
diff --git a/lib/jquery-ui-1.11.1/external/jquery/jquery.js b/javascripts/jquery-ui-1.11.1/external/jquery/jquery.js
similarity index 100%
rename from lib/jquery-ui-1.11.1/external/jquery/jquery.js
rename to javascripts/jquery-ui-1.11.1/external/jquery/jquery.js
diff --git a/lib/jquery-ui-1.11.1/images/ui-bg_diagonals-thick_18_b81900_40x40.png b/javascripts/jquery-ui-1.11.1/images/ui-bg_diagonals-thick_18_b81900_40x40.png
similarity index 100%
rename from lib/jquery-ui-1.11.1/images/ui-bg_diagonals-thick_18_b81900_40x40.png
rename to javascripts/jquery-ui-1.11.1/images/ui-bg_diagonals-thick_18_b81900_40x40.png
diff --git a/lib/jquery-ui-1.11.1/images/ui-bg_diagonals-thick_20_666666_40x40.png b/javascripts/jquery-ui-1.11.1/images/ui-bg_diagonals-thick_20_666666_40x40.png
similarity index 100%
rename from lib/jquery-ui-1.11.1/images/ui-bg_diagonals-thick_20_666666_40x40.png
rename to javascripts/jquery-ui-1.11.1/images/ui-bg_diagonals-thick_20_666666_40x40.png
diff --git a/lib/jquery-ui-1.11.1/images/ui-bg_flat_0_aaaaaa_40x100.png b/javascripts/jquery-ui-1.11.1/images/ui-bg_flat_0_aaaaaa_40x100.png
similarity index 100%
rename from lib/jquery-ui-1.11.1/images/ui-bg_flat_0_aaaaaa_40x100.png
rename to javascripts/jquery-ui-1.11.1/images/ui-bg_flat_0_aaaaaa_40x100.png
diff --git a/lib/jquery-ui-1.11.1/images/ui-bg_flat_10_000000_40x100.png b/javascripts/jquery-ui-1.11.1/images/ui-bg_flat_10_000000_40x100.png
similarity index 100%
rename from lib/jquery-ui-1.11.1/images/ui-bg_flat_10_000000_40x100.png
rename to javascripts/jquery-ui-1.11.1/images/ui-bg_flat_10_000000_40x100.png
diff --git a/lib/jquery-ui-1.11.1/images/ui-bg_flat_75_ffffff_40x100.png b/javascripts/jquery-ui-1.11.1/images/ui-bg_flat_75_ffffff_40x100.png
similarity index 100%
rename from lib/jquery-ui-1.11.1/images/ui-bg_flat_75_ffffff_40x100.png
rename to javascripts/jquery-ui-1.11.1/images/ui-bg_flat_75_ffffff_40x100.png
diff --git a/lib/jquery-ui-1.11.1/images/ui-bg_glass_100_f6f6f6_1x400.png b/javascripts/jquery-ui-1.11.1/images/ui-bg_glass_100_f6f6f6_1x400.png
similarity index 100%
rename from lib/jquery-ui-1.11.1/images/ui-bg_glass_100_f6f6f6_1x400.png
rename to javascripts/jquery-ui-1.11.1/images/ui-bg_glass_100_f6f6f6_1x400.png
diff --git a/lib/jquery-ui-1.11.1/images/ui-bg_glass_100_fdf5ce_1x400.png b/javascripts/jquery-ui-1.11.1/images/ui-bg_glass_100_fdf5ce_1x400.png
similarity index 100%
rename from lib/jquery-ui-1.11.1/images/ui-bg_glass_100_fdf5ce_1x400.png
rename to javascripts/jquery-ui-1.11.1/images/ui-bg_glass_100_fdf5ce_1x400.png
diff --git a/lib/jquery-ui-1.11.1/images/ui-bg_glass_55_fbf9ee_1x400.png b/javascripts/jquery-ui-1.11.1/images/ui-bg_glass_55_fbf9ee_1x400.png
similarity index 100%
rename from lib/jquery-ui-1.11.1/images/ui-bg_glass_55_fbf9ee_1x400.png
rename to javascripts/jquery-ui-1.11.1/images/ui-bg_glass_55_fbf9ee_1x400.png
diff --git a/lib/jquery-ui-1.11.1/images/ui-bg_glass_65_ffffff_1x400.png b/javascripts/jquery-ui-1.11.1/images/ui-bg_glass_65_ffffff_1x400.png
similarity index 100%
rename from lib/jquery-ui-1.11.1/images/ui-bg_glass_65_ffffff_1x400.png
rename to javascripts/jquery-ui-1.11.1/images/ui-bg_glass_65_ffffff_1x400.png
diff --git a/lib/jquery-ui-1.11.1/images/ui-bg_glass_75_dadada_1x400.png b/javascripts/jquery-ui-1.11.1/images/ui-bg_glass_75_dadada_1x400.png
similarity index 100%
rename from lib/jquery-ui-1.11.1/images/ui-bg_glass_75_dadada_1x400.png
rename to javascripts/jquery-ui-1.11.1/images/ui-bg_glass_75_dadada_1x400.png
diff --git a/lib/jquery-ui-1.11.1/images/ui-bg_glass_75_e6e6e6_1x400.png b/javascripts/jquery-ui-1.11.1/images/ui-bg_glass_75_e6e6e6_1x400.png
similarity index 100%
rename from lib/jquery-ui-1.11.1/images/ui-bg_glass_75_e6e6e6_1x400.png
rename to javascripts/jquery-ui-1.11.1/images/ui-bg_glass_75_e6e6e6_1x400.png
diff --git a/lib/jquery-ui-1.11.1/images/ui-bg_glass_95_fef1ec_1x400.png b/javascripts/jquery-ui-1.11.1/images/ui-bg_glass_95_fef1ec_1x400.png
similarity index 100%
rename from lib/jquery-ui-1.11.1/images/ui-bg_glass_95_fef1ec_1x400.png
rename to javascripts/jquery-ui-1.11.1/images/ui-bg_glass_95_fef1ec_1x400.png
diff --git a/lib/jquery-ui-1.11.1/images/ui-bg_gloss-wave_35_f6a828_500x100.png b/javascripts/jquery-ui-1.11.1/images/ui-bg_gloss-wave_35_f6a828_500x100.png
similarity index 100%
rename from lib/jquery-ui-1.11.1/images/ui-bg_gloss-wave_35_f6a828_500x100.png
rename to javascripts/jquery-ui-1.11.1/images/ui-bg_gloss-wave_35_f6a828_500x100.png
diff --git a/lib/jquery-ui-1.11.1/images/ui-bg_highlight-soft_100_eeeeee_1x100.png b/javascripts/jquery-ui-1.11.1/images/ui-bg_highlight-soft_100_eeeeee_1x100.png
similarity index 100%
rename from lib/jquery-ui-1.11.1/images/ui-bg_highlight-soft_100_eeeeee_1x100.png
rename to javascripts/jquery-ui-1.11.1/images/ui-bg_highlight-soft_100_eeeeee_1x100.png
diff --git a/lib/jquery-ui-1.11.1/images/ui-bg_highlight-soft_75_cccccc_1x100.png b/javascripts/jquery-ui-1.11.1/images/ui-bg_highlight-soft_75_cccccc_1x100.png
similarity index 100%
rename from lib/jquery-ui-1.11.1/images/ui-bg_highlight-soft_75_cccccc_1x100.png
rename to javascripts/jquery-ui-1.11.1/images/ui-bg_highlight-soft_75_cccccc_1x100.png
diff --git a/lib/jquery-ui-1.11.1/images/ui-bg_highlight-soft_75_ffe45c_1x100.png b/javascripts/jquery-ui-1.11.1/images/ui-bg_highlight-soft_75_ffe45c_1x100.png
similarity index 100%
rename from lib/jquery-ui-1.11.1/images/ui-bg_highlight-soft_75_ffe45c_1x100.png
rename to javascripts/jquery-ui-1.11.1/images/ui-bg_highlight-soft_75_ffe45c_1x100.png
diff --git a/lib/jquery-ui-1.11.1/images/ui-icons_222222_256x240.png b/javascripts/jquery-ui-1.11.1/images/ui-icons_222222_256x240.png
similarity index 100%
rename from lib/jquery-ui-1.11.1/images/ui-icons_222222_256x240.png
rename to javascripts/jquery-ui-1.11.1/images/ui-icons_222222_256x240.png
diff --git a/lib/jquery-ui-1.11.1/images/ui-icons_228ef1_256x240.png b/javascripts/jquery-ui-1.11.1/images/ui-icons_228ef1_256x240.png
similarity index 100%
rename from lib/jquery-ui-1.11.1/images/ui-icons_228ef1_256x240.png
rename to javascripts/jquery-ui-1.11.1/images/ui-icons_228ef1_256x240.png
diff --git a/lib/jquery-ui-1.11.1/images/ui-icons_2e83ff_256x240.png b/javascripts/jquery-ui-1.11.1/images/ui-icons_2e83ff_256x240.png
similarity index 100%
rename from lib/jquery-ui-1.11.1/images/ui-icons_2e83ff_256x240.png
rename to javascripts/jquery-ui-1.11.1/images/ui-icons_2e83ff_256x240.png
diff --git a/lib/jquery-ui-1.11.1/images/ui-icons_454545_256x240.png b/javascripts/jquery-ui-1.11.1/images/ui-icons_454545_256x240.png
similarity index 100%
rename from lib/jquery-ui-1.11.1/images/ui-icons_454545_256x240.png
rename to javascripts/jquery-ui-1.11.1/images/ui-icons_454545_256x240.png
diff --git a/lib/jquery-ui-1.11.1/images/ui-icons_888888_256x240.png b/javascripts/jquery-ui-1.11.1/images/ui-icons_888888_256x240.png
similarity index 100%
rename from lib/jquery-ui-1.11.1/images/ui-icons_888888_256x240.png
rename to javascripts/jquery-ui-1.11.1/images/ui-icons_888888_256x240.png
diff --git a/lib/jquery-ui-1.11.1/images/ui-icons_cd0a0a_256x240.png b/javascripts/jquery-ui-1.11.1/images/ui-icons_cd0a0a_256x240.png
similarity index 100%
rename from lib/jquery-ui-1.11.1/images/ui-icons_cd0a0a_256x240.png
rename to javascripts/jquery-ui-1.11.1/images/ui-icons_cd0a0a_256x240.png
diff --git a/lib/jquery-ui-1.11.1/images/ui-icons_ef8c08_256x240.png b/javascripts/jquery-ui-1.11.1/images/ui-icons_ef8c08_256x240.png
similarity index 100%
rename from lib/jquery-ui-1.11.1/images/ui-icons_ef8c08_256x240.png
rename to javascripts/jquery-ui-1.11.1/images/ui-icons_ef8c08_256x240.png
diff --git a/lib/jquery-ui-1.11.1/images/ui-icons_ffd27a_256x240.png b/javascripts/jquery-ui-1.11.1/images/ui-icons_ffd27a_256x240.png
similarity index 100%
rename from lib/jquery-ui-1.11.1/images/ui-icons_ffd27a_256x240.png
rename to javascripts/jquery-ui-1.11.1/images/ui-icons_ffd27a_256x240.png
diff --git a/lib/jquery-ui-1.11.1/images/ui-icons_ffffff_256x240.png b/javascripts/jquery-ui-1.11.1/images/ui-icons_ffffff_256x240.png
similarity index 100%
rename from lib/jquery-ui-1.11.1/images/ui-icons_ffffff_256x240.png
rename to javascripts/jquery-ui-1.11.1/images/ui-icons_ffffff_256x240.png
diff --git a/lib/jquery-ui-1.11.1/index.html b/javascripts/jquery-ui-1.11.1/index.html
similarity index 100%
rename from lib/jquery-ui-1.11.1/index.html
rename to javascripts/jquery-ui-1.11.1/index.html
diff --git a/lib/jquery-ui-1.11.1/jquery-ui.css b/javascripts/jquery-ui-1.11.1/jquery-ui.css
similarity index 100%
rename from lib/jquery-ui-1.11.1/jquery-ui.css
rename to javascripts/jquery-ui-1.11.1/jquery-ui.css
diff --git a/lib/jquery-ui-1.11.1/jquery-ui.js b/javascripts/jquery-ui-1.11.1/jquery-ui.js
similarity index 100%
rename from lib/jquery-ui-1.11.1/jquery-ui.js
rename to javascripts/jquery-ui-1.11.1/jquery-ui.js
diff --git a/lib/jquery-ui-1.11.1/jquery-ui.min.css b/javascripts/jquery-ui-1.11.1/jquery-ui.min.css
similarity index 100%
rename from lib/jquery-ui-1.11.1/jquery-ui.min.css
rename to javascripts/jquery-ui-1.11.1/jquery-ui.min.css
diff --git a/lib/jquery-ui-1.11.1/jquery-ui.min.js b/javascripts/jquery-ui-1.11.1/jquery-ui.min.js
similarity index 100%
rename from lib/jquery-ui-1.11.1/jquery-ui.min.js
rename to javascripts/jquery-ui-1.11.1/jquery-ui.min.js
diff --git a/lib/jquery-ui-1.11.1/jquery-ui.structure.css b/javascripts/jquery-ui-1.11.1/jquery-ui.structure.css
similarity index 100%
rename from lib/jquery-ui-1.11.1/jquery-ui.structure.css
rename to javascripts/jquery-ui-1.11.1/jquery-ui.structure.css
diff --git a/lib/jquery-ui-1.11.1/jquery-ui.structure.min.css b/javascripts/jquery-ui-1.11.1/jquery-ui.structure.min.css
similarity index 100%
rename from lib/jquery-ui-1.11.1/jquery-ui.structure.min.css
rename to javascripts/jquery-ui-1.11.1/jquery-ui.structure.min.css
diff --git a/lib/jquery-ui-1.11.1/jquery-ui.theme.css b/javascripts/jquery-ui-1.11.1/jquery-ui.theme.css
similarity index 100%
rename from lib/jquery-ui-1.11.1/jquery-ui.theme.css
rename to javascripts/jquery-ui-1.11.1/jquery-ui.theme.css
diff --git a/lib/jquery-ui-1.11.1/jquery-ui.theme.custom.css b/javascripts/jquery-ui-1.11.1/jquery-ui.theme.custom.css
similarity index 100%
rename from lib/jquery-ui-1.11.1/jquery-ui.theme.custom.css
rename to javascripts/jquery-ui-1.11.1/jquery-ui.theme.custom.css
diff --git a/lib/jquery-ui-1.11.1/jquery-ui.theme.min.css b/javascripts/jquery-ui-1.11.1/jquery-ui.theme.min.css
similarity index 100%
rename from lib/jquery-ui-1.11.1/jquery-ui.theme.min.css
rename to javascripts/jquery-ui-1.11.1/jquery-ui.theme.min.css
diff --git a/lib/jquery.layout-latest/jquery.layout-latest.js b/javascripts/jquery.layout-latest/jquery.layout-latest.js
similarity index 100%
rename from lib/jquery.layout-latest/jquery.layout-latest.js
rename to javascripts/jquery.layout-latest/jquery.layout-latest.js
diff --git a/lib/jquery.layout-latest/layout-default-latest.css b/javascripts/jquery.layout-latest/layout-default-latest.css
similarity index 100%
rename from lib/jquery.layout-latest/layout-default-latest.css
rename to javascripts/jquery.layout-latest/layout-default-latest.css
diff --git a/lib/jquery.layout.all-1.2.0/changelog.txt b/javascripts/jquery.layout.all-1.2.0/changelog.txt
similarity index 100%
rename from lib/jquery.layout.all-1.2.0/changelog.txt
rename to javascripts/jquery.layout.all-1.2.0/changelog.txt
diff --git a/lib/jquery.layout.all-1.2.0/example.html b/javascripts/jquery.layout.all-1.2.0/example.html
similarity index 100%
rename from lib/jquery.layout.all-1.2.0/example.html
rename to javascripts/jquery.layout.all-1.2.0/example.html
diff --git a/lib/jquery.layout.all-1.2.0/jquery.js b/javascripts/jquery.layout.all-1.2.0/jquery.js
similarity index 100%
rename from lib/jquery.layout.all-1.2.0/jquery.js
rename to javascripts/jquery.layout.all-1.2.0/jquery.js
diff --git a/lib/jquery.layout.all-1.2.0/jquery.layout.js b/javascripts/jquery.layout.all-1.2.0/jquery.layout.js
similarity index 100%
rename from lib/jquery.layout.all-1.2.0/jquery.layout.js
rename to javascripts/jquery.layout.all-1.2.0/jquery.layout.js
diff --git a/lib/jquery.layout.all-1.2.0/jquery.layout.min.js b/javascripts/jquery.layout.all-1.2.0/jquery.layout.min.js
similarity index 100%
rename from lib/jquery.layout.all-1.2.0/jquery.layout.min.js
rename to javascripts/jquery.layout.all-1.2.0/jquery.layout.min.js
diff --git a/lib/jquery.layout.all-1.2.0/jquery.ui.all.js b/javascripts/jquery.layout.all-1.2.0/jquery.ui.all.js
similarity index 100%
rename from lib/jquery.layout.all-1.2.0/jquery.ui.all.js
rename to javascripts/jquery.layout.all-1.2.0/jquery.ui.all.js
diff --git a/lib/jquery.layout.all-1.2.0/nested.html b/javascripts/jquery.layout.all-1.2.0/nested.html
similarity index 100%
rename from lib/jquery.layout.all-1.2.0/nested.html
rename to javascripts/jquery.layout.all-1.2.0/nested.html
diff --git a/lib/jquery.layout.all-1.2.0/simple.html b/javascripts/jquery.layout.all-1.2.0/simple.html
similarity index 100%
rename from lib/jquery.layout.all-1.2.0/simple.html
rename to javascripts/jquery.layout.all-1.2.0/simple.html
diff --git a/lib/ui-dock.js b/javascripts/ui-dock.js
similarity index 88%
rename from lib/ui-dock.js
rename to javascripts/ui-dock.js
index 7924052..22b5c1a 100644
--- a/lib/ui-dock.js
+++ b/javascripts/ui-dock.js
@@ -146,9 +146,8 @@ function Tab(dock, view) {
/**
* The master container keeps track of all docks
- * and views added to the widget, and implements
- * operations that require coordination between
- * multiple nodes.
+ * and views added to the widget. It also takes care of
+ * operations involving multiple containers and docks.
*
* @constructor
*/
@@ -165,12 +164,14 @@ function MasterContainer(rootElement, options) {
// State variables
var count = 0; // Used for producing unique dock IDs
- var armed = false;
- var moved = false;
+ var armed = false; // True if tracking is in
+ var moved = false; //
// Callbacks
var closeViewCallback = options['closeViewCallback'];
+ /** For a view to be correctly handled inside the widget,
+ * it must first be added to the master. */
this.addView = function(id, $elem, title, closeable) {
if (id in this.views)
return $.error('There is already a view with identifier ' + view.id);
@@ -180,6 +181,8 @@ function MasterContainer(rootElement, options) {
return this.passView(view);
};
+ /** Opening a view will activate the relevant tab in the
+ * dock that's currently holding it, making it visible. */
this.openView = function(viewID) {
if (!(viewID in this.views))
$.error('Invalid view identifier ' + viewID);
@@ -187,7 +190,8 @@ function MasterContainer(rootElement, options) {
var view = views[viewID];
view.getDock().openView(view);
};
-
+
+ /** Activated by clicking on a close icon. */
this.deleteView = function(viewID) {
if (!(viewID in this.views))
$.error('Invalid view identifier ' + viewID);
@@ -203,15 +207,18 @@ function MasterContainer(rootElement, options) {
closeViewCallback(view);
};
+ /** Registering docks is necessary for cross-container
+ * interactions. */
this.registerDock = function(dock) {
dock.id = this.id + count++;
this.docks[dock.id] = dock;
};
-
this.unregisterDock = function(dock) {
delete this.docks[dock.id];
};
+ /** Fired when a tab is dropped on any tablist
+ * (sortable receive event). */
this.doReceive = function(dock, event, ui) {
var $li = ui.item;
var viewID = $li.attr('data-view-id');
@@ -223,6 +230,7 @@ function MasterContainer(rootElement, options) {
this.transfer(viewID, originID, destinationID);
};
+ /** Transfers a view from one dock to another. */
this.transfer = function(viewID, originID, destinationID) {
var view = views[viewID];
var origin = docks[originID];
@@ -235,6 +243,7 @@ function MasterContainer(rootElement, options) {
view.tab.updateDock(destination);
};
+ /** Notifies docks to start watching mouse movements. */
this.armTrackers = function(origin, event, ui) {
armed = true;
moved = false;
@@ -246,6 +255,8 @@ function MasterContainer(rootElement, options) {
}
};
+ /** Notifies docks that mouse dragging has stopped, triggering
+ * various checks. */
this.shutTrackers = function(event, ui) {
if (!armed)
return;
@@ -265,13 +276,28 @@ function MasterContainer(rootElement, options) {
armed = false;
};
+ // The master container is also a split container
SplitContainer.call(this, this, null, new Dock(this, this));
+
this.$root.addClass('ui-dock-master');
this.$root.append(this.$elem);
if (options['height'] !== 'root')
this.$elem.height(options['height']);
}
+/**
+ * A Dock object is a wrapper to a regular jQUery UI Tabs widget,
+ * providing much of the functionality in this plugin, namely :
+ * - adding and closing tabbed views
+ * - watching drag & drop events via an attached DropTracker
+ * object (see below) and triggering dock split actions
+ * - auto-destroy when all views have been removed
+ *
+ * A Dock always has a SplitContainer parent which handles the
+ * actual splitting behaviour.
+ *
+ * @constructor
+ */
function Dock(master, parent) {
this.master = master;
this.parent = parent;
@@ -289,7 +315,10 @@ function Dock(master, parent) {
// Active view ID
var active = null;
-
+
+ /** The jQuery UI Sortable API is not only used
+ * to enable sortable tabs, but also to handle all drag & drop
+ * events in a unified way */
var sortable_cfg = {
appendTo: master.$root,
helper: 'clone', // This is required for the appendTo logic
@@ -300,7 +329,7 @@ function Dock(master, parent) {
distance: 20,
tolerance: 'pointer',
- // Callbacks
+ // Callbacks : forwarded to the master
start: function(event, ui) {
master.armTrackers(self, event, ui);
},
@@ -346,6 +375,8 @@ function Dock(master, parent) {
$elem.tabs('option', 'active', view.tab.getTabItem().index());
};
+ /** When a view is dropped in a splittable region, the
+ * current tab is destroyed and recreated in the newly formed dock */
this.closeView = function(viewID) {
var view = this.extractView(viewID);
view.tab.getTabItem().remove();
@@ -353,6 +384,9 @@ function Dock(master, parent) {
return view;
};
+ /** Used when the tab has already been dropped in a
+ * connected sortable tablist and thus doesn't need further
+ * processing */
this.extractView = function(viewID) {
if (!(viewID in this.views))
$.error('Invalid view identifier ' + viewID);
@@ -364,6 +398,8 @@ function Dock(master, parent) {
return view;
};
+ /** If no view remains, destroy this dock and notify the parent
+ * SplitContainer */
this.checkEmpty = function() {
if (Object.keys(this.views).length == 0)
this.parent.close();
@@ -378,11 +414,13 @@ function Dock(master, parent) {
checkTracker();
};
+ // Reapply jQuery UI widgets on the tablist
this.rebuild = function() {
$elem.tabs(tabs_cfg);
self.tablist.sortable(sortable_cfg);
};
+ // Reapply Tabs only
this.resetTabs = function() {
$elem.tabs('destroy');
$elem.tabs(tabs_cfg);
@@ -392,6 +430,7 @@ function Dock(master, parent) {
master.registerDock(this);
build();
+ // Called when a Dock is created
function build() {
$elem.empty();
@@ -408,6 +447,7 @@ function Dock(master, parent) {
checkTracker();
}
+ // Check if this dock needs a DropTracker and create / destroy accordingly
function checkTracker() {
if (!self.parent)
return;
@@ -424,12 +464,14 @@ function Dock(master, parent) {
});
}
+ // Refresh tab positions
function refreshTabs() {
$elem.tabs('refresh');
restoreActive();
self.tablist.sortable('refresh');
}
+ // Restore open view
function restoreActive() {
if (active) {
var view = views[active];
@@ -443,6 +485,13 @@ function Dock(master, parent) {
}
}
+/**
+ * SplitContainers may either contain a unique Dock child
+ * (the "leaf"), or two resizable children SplitContainer
+ * elements ("prime" and "second"), in which case the "isSplit()"
+ * method returns true. Resizing (and related bonus features) is
+ * delegated to the jQuery Layout plugin.
+ */
function SplitContainer(master, parent, dock, $elem) {
var self = this;
diff --git a/lib/ui-dock-config.js b/lib/ui-dock-config.js
deleted file mode 100644
index ab5506d..0000000
--- a/lib/ui-dock-config.js
+++ /dev/null
@@ -1,3 +0,0 @@
-/**
- * @author Amine
- */
diff --git a/params.json b/params.json
new file mode 100644
index 0000000..f57ac8d
--- /dev/null
+++ b/params.json
@@ -0,0 +1 @@
+{"name":"JqueryUIDock","tagline":"Docking facility built upon JQuery UI Tabs & Sortable and the UI Layout plugin","body":"JQueryUIDock\r\n============\r\n\r\nDocking facility built upon JQuery UI Tabs & Sortable and the UI Layout plugin\r\n","google":"","note":"Don't delete this file! It's used internally to help with page regeneration."}
\ No newline at end of file
diff --git a/stylesheets/print.css b/stylesheets/print.css
new file mode 100644
index 0000000..541695b
--- /dev/null
+++ b/stylesheets/print.css
@@ -0,0 +1,226 @@
+html, body, div, span, applet, object, iframe,
+h1, h2, h3, h4, h5, h6, p, blockquote, pre,
+a, abbr, acronym, address, big, cite, code,
+del, dfn, em, img, ins, kbd, q, s, samp,
+small, strike, strong, sub, sup, tt, var,
+b, u, i, center,
+dl, dt, dd, ol, ul, li,
+fieldset, form, label, legend,
+table, caption, tbody, tfoot, thead, tr, th, td,
+article, aside, canvas, details, embed,
+figure, figcaption, footer, header, hgroup,
+menu, nav, output, ruby, section, summary,
+time, mark, audio, video {
+ margin: 0;
+ padding: 0;
+ border: 0;
+ font-size: 100%;
+ font: inherit;
+ vertical-align: baseline;
+}
+/* HTML5 display-role reset for older browsers */
+article, aside, details, figcaption, figure,
+footer, header, hgroup, menu, nav, section {
+ display: block;
+}
+body {
+ line-height: 1;
+}
+ol, ul {
+ list-style: none;
+}
+blockquote, q {
+ quotes: none;
+}
+blockquote:before, blockquote:after,
+q:before, q:after {
+ content: '';
+ content: none;
+}
+table {
+ border-collapse: collapse;
+ border-spacing: 0;
+}
+body {
+ font-size: 13px;
+ line-height: 1.5;
+ font-family: 'Helvetica Neue', Helvetica, Arial, serif;
+ color: #000;
+}
+
+a {
+ color: #d5000d;
+ font-weight: bold;
+}
+
+header {
+ padding-top: 35px;
+ padding-bottom: 10px;
+}
+
+header h1 {
+ font-weight: bold;
+ letter-spacing: -1px;
+ font-size: 48px;
+ color: #303030;
+ line-height: 1.2;
+}
+
+header h2 {
+ letter-spacing: -1px;
+ font-size: 24px;
+ color: #aaa;
+ font-weight: normal;
+ line-height: 1.3;
+}
+#downloads {
+ display: none;
+}
+#main_content {
+ padding-top: 20px;
+}
+
+code, pre {
+ font-family: Monaco, "Bitstream Vera Sans Mono", "Lucida Console", Terminal;
+ color: #222;
+ margin-bottom: 30px;
+ font-size: 12px;
+}
+
+code {
+ padding: 0 3px;
+}
+
+pre {
+ border: solid 1px #ddd;
+ padding: 20px;
+ overflow: auto;
+}
+pre code {
+ padding: 0;
+}
+
+ul, ol, dl {
+ margin-bottom: 20px;
+}
+
+
+/* COMMON STYLES */
+
+table {
+ width: 100%;
+ border: 1px solid #ebebeb;
+}
+
+th {
+ font-weight: 500;
+}
+
+td {
+ border: 1px solid #ebebeb;
+ text-align: center;
+ font-weight: 300;
+}
+
+form {
+ background: #f2f2f2;
+ padding: 20px;
+
+}
+
+
+/* GENERAL ELEMENT TYPE STYLES */
+
+h1 {
+ font-size: 2.8em;
+}
+
+h2 {
+ font-size: 22px;
+ font-weight: bold;
+ color: #303030;
+ margin-bottom: 8px;
+}
+
+h3 {
+ color: #d5000d;
+ font-size: 18px;
+ font-weight: bold;
+ margin-bottom: 8px;
+}
+
+h4 {
+ font-size: 16px;
+ color: #303030;
+ font-weight: bold;
+}
+
+h5 {
+ font-size: 1em;
+ color: #303030;
+}
+
+h6 {
+ font-size: .8em;
+ color: #303030;
+}
+
+p {
+ font-weight: 300;
+ margin-bottom: 20px;
+}
+
+a {
+ text-decoration: none;
+}
+
+p a {
+ font-weight: 400;
+}
+
+blockquote {
+ font-size: 1.6em;
+ border-left: 10px solid #e9e9e9;
+ margin-bottom: 20px;
+ padding: 0 0 0 30px;
+}
+
+ul li {
+ list-style: disc inside;
+ padding-left: 20px;
+}
+
+ol li {
+ list-style: decimal inside;
+ padding-left: 3px;
+}
+
+dl dd {
+ font-style: italic;
+ font-weight: 100;
+}
+
+footer {
+ margin-top: 40px;
+ padding-top: 20px;
+ padding-bottom: 30px;
+ font-size: 13px;
+ color: #aaa;
+}
+
+footer a {
+ color: #666;
+}
+
+/* MISC */
+.clearfix:after {
+ clear: both;
+ content: '.';
+ display: block;
+ visibility: hidden;
+ height: 0;
+}
+
+.clearfix {display: inline-block;}
+* html .clearfix {height: 1%;}
+.clearfix {display: block;}
\ No newline at end of file
diff --git a/stylesheets/pygment_trac.css b/stylesheets/pygment_trac.css
new file mode 100644
index 0000000..c6a6452
--- /dev/null
+++ b/stylesheets/pygment_trac.css
@@ -0,0 +1,69 @@
+.highlight { background: #ffffff; }
+.highlight .c { color: #999988; font-style: italic } /* Comment */
+.highlight .err { color: #a61717; background-color: #e3d2d2 } /* Error */
+.highlight .k { font-weight: bold } /* Keyword */
+.highlight .o { font-weight: bold } /* Operator */
+.highlight .cm { color: #999988; font-style: italic } /* Comment.Multiline */
+.highlight .cp { color: #999999; font-weight: bold } /* Comment.Preproc */
+.highlight .c1 { color: #999988; font-style: italic } /* Comment.Single */
+.highlight .cs { color: #999999; font-weight: bold; font-style: italic } /* Comment.Special */
+.highlight .gd { color: #000000; background-color: #ffdddd } /* Generic.Deleted */
+.highlight .gd .x { color: #000000; background-color: #ffaaaa } /* Generic.Deleted.Specific */
+.highlight .ge { font-style: italic } /* Generic.Emph */
+.highlight .gr { color: #aa0000 } /* Generic.Error */
+.highlight .gh { color: #999999 } /* Generic.Heading */
+.highlight .gi { color: #000000; background-color: #ddffdd } /* Generic.Inserted */
+.highlight .gi .x { color: #000000; background-color: #aaffaa } /* Generic.Inserted.Specific */
+.highlight .go { color: #888888 } /* Generic.Output */
+.highlight .gp { color: #555555 } /* Generic.Prompt */
+.highlight .gs { font-weight: bold } /* Generic.Strong */
+.highlight .gu { color: #800080; font-weight: bold; } /* Generic.Subheading */
+.highlight .gt { color: #aa0000 } /* Generic.Traceback */
+.highlight .kc { font-weight: bold } /* Keyword.Constant */
+.highlight .kd { font-weight: bold } /* Keyword.Declaration */
+.highlight .kn { font-weight: bold } /* Keyword.Namespace */
+.highlight .kp { font-weight: bold } /* Keyword.Pseudo */
+.highlight .kr { font-weight: bold } /* Keyword.Reserved */
+.highlight .kt { color: #445588; font-weight: bold } /* Keyword.Type */
+.highlight .m { color: #009999 } /* Literal.Number */
+.highlight .s { color: #d14 } /* Literal.String */
+.highlight .na { color: #008080 } /* Name.Attribute */
+.highlight .nb { color: #0086B3 } /* Name.Builtin */
+.highlight .nc { color: #445588; font-weight: bold } /* Name.Class */
+.highlight .no { color: #008080 } /* Name.Constant */
+.highlight .ni { color: #800080 } /* Name.Entity */
+.highlight .ne { color: #990000; font-weight: bold } /* Name.Exception */
+.highlight .nf { color: #990000; font-weight: bold } /* Name.Function */
+.highlight .nn { color: #555555 } /* Name.Namespace */
+.highlight .nt { color: #000080 } /* Name.Tag */
+.highlight .nv { color: #008080 } /* Name.Variable */
+.highlight .ow { font-weight: bold } /* Operator.Word */
+.highlight .w { color: #bbbbbb } /* Text.Whitespace */
+.highlight .mf { color: #009999 } /* Literal.Number.Float */
+.highlight .mh { color: #009999 } /* Literal.Number.Hex */
+.highlight .mi { color: #009999 } /* Literal.Number.Integer */
+.highlight .mo { color: #009999 } /* Literal.Number.Oct */
+.highlight .sb { color: #d14 } /* Literal.String.Backtick */
+.highlight .sc { color: #d14 } /* Literal.String.Char */
+.highlight .sd { color: #d14 } /* Literal.String.Doc */
+.highlight .s2 { color: #d14 } /* Literal.String.Double */
+.highlight .se { color: #d14 } /* Literal.String.Escape */
+.highlight .sh { color: #d14 } /* Literal.String.Heredoc */
+.highlight .si { color: #d14 } /* Literal.String.Interpol */
+.highlight .sx { color: #d14 } /* Literal.String.Other */
+.highlight .sr { color: #009926 } /* Literal.String.Regex */
+.highlight .s1 { color: #d14 } /* Literal.String.Single */
+.highlight .ss { color: #990073 } /* Literal.String.Symbol */
+.highlight .bp { color: #999999 } /* Name.Builtin.Pseudo */
+.highlight .vc { color: #008080 } /* Name.Variable.Class */
+.highlight .vg { color: #008080 } /* Name.Variable.Global */
+.highlight .vi { color: #008080 } /* Name.Variable.Instance */
+.highlight .il { color: #009999 } /* Literal.Number.Integer.Long */
+
+.type-csharp .highlight .k { color: #0000FF }
+.type-csharp .highlight .kt { color: #0000FF }
+.type-csharp .highlight .nf { color: #000000; font-weight: normal }
+.type-csharp .highlight .nc { color: #2B91AF }
+.type-csharp .highlight .nn { color: #000000 }
+.type-csharp .highlight .s { color: #A31515 }
+.type-csharp .highlight .sc { color: #A31515 }
diff --git a/stylesheets/stylesheet.css b/stylesheets/stylesheet.css
new file mode 100644
index 0000000..3bb2a2f
--- /dev/null
+++ b/stylesheets/stylesheet.css
@@ -0,0 +1,478 @@
+/* http://meyerweb.com/eric/tools/css/reset/
+ v2.0 | 20110126
+ License: none (public domain)
+*/
+html, body, div, span, applet, object, iframe,
+h1, h2, h3, h4, h5, h6, p, blockquote, pre,
+a, abbr, acronym, address, big, cite, code,
+del, dfn, em, img, ins, kbd, q, s, samp,
+small, strike, strong, sub, sup, tt, var,
+b, u, i, center,
+dl, dt, dd, ol, ul, li,
+fieldset, form, label, legend,
+table, caption, tbody, tfoot, thead, tr, th, td,
+article, aside, canvas, details, embed,
+figure, figcaption, footer, header, hgroup,
+menu, nav, output, ruby, section, summary,
+time, mark, audio, video {
+ margin: 0;
+ padding: 0;
+ border: 0;
+ font-size: 100%;
+ font: inherit;
+ vertical-align: baseline;
+}
+/* HTML5 display-role reset for older browsers */
+article, aside, details, figcaption, figure,
+footer, header, hgroup, menu, nav, section {
+ display: block;
+}
+body {
+ line-height: 1;
+}
+ol, ul {
+ list-style: none;
+}
+blockquote, q {
+ quotes: none;
+}
+blockquote:before, blockquote:after,
+q:before, q:after {
+ content: '';
+ content: none;
+}
+table {
+ border-collapse: collapse;
+ border-spacing: 0;
+}
+
+/* LAYOUT STYLES */
+body {
+ font-size: 15px;
+ line-height: 1.5;
+ background: #fafafa url(../images/body-bg.jpg) 0 0 repeat;
+ font-family: 'Helvetica Neue', Helvetica, Arial, serif;
+ font-weight: 400;
+ color: #666;
+}
+
+a {
+ color: #2879d0;
+}
+a:hover {
+ color: #2268b2;
+}
+
+header {
+ padding-top: 40px;
+ padding-bottom: 40px;
+ font-family: 'Architects Daughter', 'Helvetica Neue', Helvetica, Arial, serif;
+ background: #2e7bcf url(../images/header-bg.jpg) 0 0 repeat-x;
+ border-bottom: solid 1px #275da1;
+}
+
+header h1 {
+ letter-spacing: -1px;
+ font-size: 72px;
+ color: #fff;
+ line-height: 1;
+ margin-bottom: 0.2em;
+ width: 540px;
+}
+
+header h2 {
+ font-size: 26px;
+ color: #9ddcff;
+ font-weight: normal;
+ line-height: 1.3;
+ width: 540px;
+ letter-spacing: 0;
+}
+
+.inner {
+ position: relative;
+ width: 940px;
+ margin: 0 auto;
+}
+
+#content-wrapper {
+ border-top: solid 1px #fff;
+ padding-top: 30px;
+}
+
+#main-content {
+ width: 690px;
+ float: left;
+}
+
+#main-content img {
+ max-width: 100%;
+}
+
+aside#sidebar {
+ width: 200px;
+ padding-left: 20px;
+ min-height: 504px;
+ float: right;
+ background: transparent url(../images/sidebar-bg.jpg) 0 0 no-repeat;
+ font-size: 12px;
+ line-height: 1.3;
+}
+
+aside#sidebar p.repo-owner,
+aside#sidebar p.repo-owner a {
+ font-weight: bold;
+}
+
+#downloads {
+ margin-bottom: 40px;
+}
+
+a.button {
+ width: 134px;
+ height: 58px;
+ line-height: 1.2;
+ font-size: 23px;
+ color: #fff;
+ padding-left: 68px;
+ padding-top: 22px;
+ font-family: 'Architects Daughter', 'Helvetica Neue', Helvetica, Arial, serif;
+}
+a.button small {
+ display: block;
+ font-size: 11px;
+}
+header a.button {
+ position: absolute;
+ right: 0;
+ top: 0;
+ background: transparent url(../images/github-button.png) 0 0 no-repeat;
+}
+aside a.button {
+ width: 138px;
+ padding-left: 64px;
+ display: block;
+ background: transparent url(../images/download-button.png) 0 0 no-repeat;
+ margin-bottom: 20px;
+ font-size: 21px;
+}
+
+code, pre {
+ font-family: Monaco, "Bitstream Vera Sans Mono", "Lucida Console", Terminal, monospace;
+ color: #222;
+ margin-bottom: 30px;
+ font-size: 13px;
+}
+
+code {
+ background-color: #f2f8fc;
+ border: solid 1px #dbe7f3;
+ padding: 0 3px;
+}
+
+pre {
+ padding: 20px;
+ background: #fff;
+ text-shadow: none;
+ overflow: auto;
+ border: solid 1px #f2f2f2;
+}
+pre code {
+ color: #2879d0;
+ background-color: #fff;
+ border: none;
+ padding: 0;
+}
+
+ul, ol, dl {
+ margin-bottom: 20px;
+}
+
+
+/* COMMON STYLES */
+
+hr {
+ height: 0;
+ margin-top: 1em;
+ margin-bottom: 1em;
+ border: 0;
+ border-top: solid 1px #ddd;
+}
+
+table {
+ width: 100%;
+ border: 1px solid #ebebeb;
+}
+
+th {
+ font-weight: 500;
+}
+
+td {
+ border: 1px solid #ebebeb;
+ text-align: center;
+ font-weight: 300;
+}
+
+form {
+ background: #f2f2f2;
+ padding: 20px;
+
+}
+
+
+/* GENERAL ELEMENT TYPE STYLES */
+
+#main-content h1 {
+ font-family: 'Architects Daughter', 'Helvetica Neue', Helvetica, Arial, serif;
+ font-size: 2.8em;
+ letter-spacing: -1px;
+ color: #474747;
+}
+
+#main-content h1:before {
+ content: "/";
+ color: #9ddcff;
+ padding-right: 0.3em;
+ margin-left: -0.9em;
+}
+
+#main-content h2 {
+ font-family: 'Architects Daughter', 'Helvetica Neue', Helvetica, Arial, serif;
+ font-size: 22px;
+ font-weight: bold;
+ margin-bottom: 8px;
+ color: #474747;
+}
+#main-content h2:before {
+ content: "//";
+ color: #9ddcff;
+ padding-right: 0.3em;
+ margin-left: -1.5em;
+}
+
+#main-content h3 {
+ font-family: 'Architects Daughter', 'Helvetica Neue', Helvetica, Arial, serif;
+ font-size: 18px;
+ font-weight: bold;
+ margin-top: 24px;
+ margin-bottom: 8px;
+ color: #474747;
+}
+
+#main-content h3:before {
+ content: "///";
+ color: #9ddcff;
+ padding-right: 0.3em;
+ margin-left: -2em;
+}
+
+#main-content h4 {
+ font-family: 'Architects Daughter', 'Helvetica Neue', Helvetica, Arial, serif;
+ font-size: 15px;
+ font-weight: bold;
+ color: #474747;
+}
+
+h4:before {
+ content: "////";
+ color: #9ddcff;
+ padding-right: 0.3em;
+ margin-left: -2.8em;
+}
+
+#main-content h5 {
+ font-family: 'Architects Daughter', 'Helvetica Neue', Helvetica, Arial, serif;
+ font-size: 14px;
+ color: #474747;
+}
+h5:before {
+ content: "/////";
+ color: #9ddcff;
+ padding-right: 0.3em;
+ margin-left: -3.2em;
+}
+
+#main-content h6 {
+ font-family: 'Architects Daughter', 'Helvetica Neue', Helvetica, Arial, serif;
+ font-size: .8em;
+ color: #474747;
+}
+h6:before {
+ content: "//////";
+ color: #9ddcff;
+ padding-right: 0.3em;
+ margin-left: -3.7em;
+}
+
+p {
+ margin-bottom: 20px;
+}
+
+a {
+ text-decoration: none;
+}
+
+p a {
+ font-weight: 400;
+}
+
+blockquote {
+ font-size: 1.6em;
+ border-left: 10px solid #e9e9e9;
+ margin-bottom: 20px;
+ padding: 0 0 0 30px;
+}
+
+ul {
+ list-style: disc inside;
+ padding-left: 20px;
+}
+
+ol {
+ list-style: decimal inside;
+ padding-left: 3px;
+}
+
+dl dd {
+ font-style: italic;
+ font-weight: 100;
+}
+
+footer {
+ background: transparent url('../images/hr.png') 0 0 no-repeat;
+ margin-top: 40px;
+ padding-top: 20px;
+ padding-bottom: 30px;
+ font-size: 13px;
+ color: #aaa;
+}
+
+footer a {
+ color: #666;
+}
+footer a:hover {
+ color: #444;
+}
+
+/* MISC */
+.clearfix:after {
+ clear: both;
+ content: '.';
+ display: block;
+ visibility: hidden;
+ height: 0;
+}
+
+.clearfix {display: inline-block;}
+* html .clearfix {height: 1%;}
+.clearfix {display: block;}
+
+/* #Media Queries
+================================================== */
+
+/* Smaller than standard 960 (devices and browsers) */
+@media only screen and (max-width: 959px) {}
+
+/* Tablet Portrait size to standard 960 (devices and browsers) */
+@media only screen and (min-width: 768px) and (max-width: 959px) {
+ .inner {
+ width: 740px;
+ }
+ header h1, header h2 {
+ width: 340px;
+ }
+ header h1 {
+ font-size: 60px;
+ }
+ header h2 {
+ font-size: 30px;
+ }
+ #main-content {
+ width: 490px;
+ }
+ #main-content h1:before,
+ #main-content h2:before,
+ #main-content h3:before,
+ #main-content h4:before,
+ #main-content h5:before,
+ #main-content h6:before {
+ content: none;
+ padding-right: 0;
+ margin-left: 0;
+ }
+}
+
+/* All Mobile Sizes (devices and browser) */
+@media only screen and (max-width: 767px) {
+ .inner {
+ width: 93%;
+ }
+ header {
+ padding: 20px 0;
+ }
+ header .inner {
+ position: relative;
+ }
+ header h1, header h2 {
+ width: 100%;
+ }
+ header h1 {
+ font-size: 48px;
+ }
+ header h2 {
+ font-size: 24px;
+ }
+ header a.button {
+ background-image: none;
+ width: auto;
+ height: auto;
+ display: inline-block;
+ margin-top: 15px;
+ padding: 5px 10px;
+ position: relative;
+ text-align: center;
+ font-size: 13px;
+ line-height: 1;
+ background-color: #9ddcff;
+ color: #2879d0;
+ -moz-border-radius: 5px;
+ -webkit-border-radius: 5px;
+ border-radius: 5px;
+ }
+ header a.button small {
+ font-size: 13px;
+ display: inline;
+ }
+ #main-content,
+ aside#sidebar {
+ float: none;
+ width: 100% ! important;
+ }
+ aside#sidebar {
+ background-image: none;
+ margin-top: 20px;
+ border-top: solid 1px #ddd;
+ padding: 20px 0;
+ min-height: 0;
+ }
+ aside#sidebar a.button {
+ display: none;
+ }
+ #main-content h1:before,
+ #main-content h2:before,
+ #main-content h3:before,
+ #main-content h4:before,
+ #main-content h5:before,
+ #main-content h6:before {
+ content: none;
+ padding-right: 0;
+ margin-left: 0;
+ }
+}
+
+/* Mobile Landscape Size to Tablet Portrait (devices and browsers) */
+@media only screen and (min-width: 480px) and (max-width: 767px) {}
+
+/* Mobile Portrait Size to Mobile Landscape Size (devices and browsers) */
+@media only screen and (max-width: 479px) {}
diff --git a/css/ui-dock.css b/stylesheets/ui-dock.css
similarity index 93%
rename from css/ui-dock.css
rename to stylesheets/ui-dock.css
index 7b9954a..4bf8a17 100644
--- a/css/ui-dock.css
+++ b/stylesheets/ui-dock.css
@@ -32,12 +32,11 @@
.ui-dock-highlight {
position: absolute;
z-index: 100;
- background: rgba(250, 250, 200, 0.2);
+ background: rgba(230, 230, 180, 0.2);
border:3px solid;
- border-color: rgba(230, 230, 180, 0.2);
+ border-color: rgba(200, 200, 150, 0.2);
border-radius: 1px;
box-sizing: border-box;
-
vertical-align: middle;
text-align: center;
}