blob: e1fdaeaeeffff80fef55791870ffdd770cf2ef6c [file] [log] [blame]
/*
* Licensed to the Apache Software Foundation (ASF) under one
* or more contributor license agreements. See the NOTICE file
* distributed with this work for additional information
* regarding copyright ownership. The ASF licenses this file
* to you under the Apache License, Version 2.0 (the
* "License"); you may not use this file except in compliance
* with the License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing,
* software distributed under the License is distributed on an
* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
* KIND, either express or implied. See the License for the
* specific language governing permissions and limitations
* under the License.
*
*/
define(["dojo/_base/declare",
"dojo/_base/lang",
"dojo/json",
"dojo/Deferred",
"dojo/Evented",
"dojox/widget/Portlet",
"qpid/common/MessageDialog",
"qpid/common/util"],
function (declare,
lang,
json,
Deferred,
Evented,
Portlet,
MessageDialog,
util)
{
return declare(Evented, {
portlet : null,
constructor: function (kwargs)
{
this.widgetSettings = kwargs.widgetSettings || {};
},
createPortlet: function ()
{
var portlet = new Portlet({
title: "Unvailable",
content: "This widget is currently not available",
open: !this.widgetSettings.hidden,
onClose: lang.hitch(this, function ()
{
MessageDialog.confirm({
title: "Remove widget?",
message: "Are you sure you want to remove the widget?"
+ "<br/>"
+ "It might become available at a later point.",
confirmationId: "dashboard.confirmation.widget.delete"
})
.then(lang.hitch(this, function ()
{
this.emit("close");
}));
})
});
if (portlet.closeIcon)
{
portlet.closeIcon.title = "Remove this query from the dashboard.";
util.stopEventPropagation(portlet.closeIcon, "mousedown");
}
if (portlet.arrowNode)
{
portlet.arrowNode.title = "Maximise/minimise this widget.";
util.stopEventPropagation(portlet.arrowNode, "mousedown");
}
portlet.on("hide", lang.hitch(this, function(){
this.widgetSettings.hidden = true;
this.emit("change");
}));
portlet.on("show", lang.hitch(this, function(){
this.widgetSettings.hidden = false;
this.emit("change");
}));
this.portlet = portlet;
var deferred = new Deferred();
deferred.resolve(portlet);
return deferred.promise;
},
destroy : function ()
{
if (this.portlet)
{
this.portlet.destroyRecursive();
}
},
getSettings: function ()
{
return this.widgetSettings;
},
activate: function ()
{
// noop
},
deactivate: function ()
{
// noop
}
});
});