Skip to content
Snippets Groups Projects
Commit a6ee6bc4 authored by Piotr Gawron's avatar Piotr Gawron
Browse files

plugin can define min width required

parent 602d93ad
No related branches found
No related tags found
1 merge request!140Plugin framework fixes
......@@ -91,6 +91,20 @@ Plugin.prototype.load = function () {
};
Plugin.prototype.getMinWidth = function () {
var result = 0;
var data = this.getLoadedPluginData();
if (data.minWidth !== undefined) {
var value = 0;
if (typeof data.minWidth === "function") {
value = parseInt(data.minWidth());
} else {
value = parseInt(data.minWidth);
}
}
return value;
};
Plugin.prototype.unload = function () {
var self = this;
return Promise.resolve().then(function () {
......@@ -98,7 +112,7 @@ Plugin.prototype.unload = function () {
}).then(function () {
var removedListeners = self.getMinervaPluginProxy().project.map.removeAllListeners();
if (removedListeners.length > 0) {
logger.warn("'"+self.getLoadedPluginData().getName() + "' plugin didn't remove all registered listeners");
logger.warn("'" + self.getLoadedPluginData().getName() + "' plugin didn't remove all registered listeners");
}
return self.callListeners("onUnload");
}).then(function () {
......
......@@ -88,6 +88,7 @@ PluginManager.prototype.addPlugin = function (options) {
self._pluginOnResizeHandlers[plugin.getPluginId()] = adjustHeight;
GuiConnector.addWindowResizeEvent(adjustHeight);
adjustHeight();
self.adjustMinWidth();
return plugin;
});
};
......@@ -98,7 +99,6 @@ PluginManager.prototype.createTabForPlugin = function () {
var guiUtils = new GuiUtils(self.getConfiguration());
if (tabData === undefined) {
self.getElement().style.width = "300px";
self.getElement().style.minWidth = "150px";
self.getElement().style.maxWidth = "600px";
self.getElement().style.height = "100%";
self._tabData = guiUtils.createTabDiv({element: self.getElement(), id: "plugin_tab"});
......@@ -111,6 +111,19 @@ PluginManager.prototype.createTabForPlugin = function () {
tabData: tabData
});
};
PluginManager.prototype.adjustMinWidth = function () {
var self = this;
var minWidth = 150;
for (var i = 0; i < self._plugins.length; i++) {
var plugin = self._plugins[i];
var value = plugin.getMinWidth();
if (value > minWidth) {
minWidth = value;
}
}
self.getElement().style.minWidth = minWidth + "px";
};
PluginManager.prototype.removePlugin = function (plugin) {
var self = this;
var found = false;
......@@ -124,7 +137,9 @@ PluginManager.prototype.removePlugin = function (plugin) {
return Promise.reject(new Error("Plugin not registered"));
}
GuiConnector.removeWindowResizeEvent(self._pluginOnResizeHandlers[plugin.getPluginId()]);
return plugin.unload();
return plugin.unload().then(function () {
self.adjustMinWidth();
});
};
PluginManager.prototype.destroy = function () {
......
......@@ -38,6 +38,12 @@ describe('PluginManager', function () {
assert.equal(1, manager.getPlugins().length);
});
});
it('with min width', function () {
var manager = new PluginManager(createParams());
return manager.addPlugin({url: "./testFiles/plugin/min-width.js"}).then(function () {
assert.equal("200px", $(manager.getElement()).css("min-width"));
});
});
it('after removal', function () {
var manager = new PluginManager(createParams());
return manager.addPlugin({url: "./testFiles/plugin/empty.js"}).then(function (plugin) {
......
minervaDefine(function () {
return {
register: function (object) {
console.log("registering test plugin with min width");
},
unregister: function () {
console.log("unregistering test plugin");
},
getName: function () {
return "test plugin";
},
minWidth: function () {
return 200;
},
getVersion: function () {
return "0.0.1";
}
};
});
\ No newline at end of file
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment