forked from Botanical/BotanJS
214 lines
5.9 KiB
JavaScript
214 lines
5.9 KiB
JavaScript
(function ()
|
|
{
|
|
var ns = __namespace( "Astro.Blog.AstroEdit.Visualizer.Snippet" );
|
|
|
|
/** @type {System.utils.IKey} */
|
|
var IKey = __import( "System.utils.IKey" );
|
|
/** @type {System.utils.DataKey} */
|
|
var DataKey = __import( "System.utils.DataKey" );
|
|
/** @type {Dandelion.IDOMElement} */
|
|
var IDOMElement = __import( "Dandelion.IDOMElement" );
|
|
/** @type {Dandelion} */
|
|
var Dand = __import( "Dandelion" );
|
|
/** @type {Components.MessageBox} */
|
|
var MessageBox = __import( "Components.MessageBox" );
|
|
|
|
var compileProp = ns[ NS_INVOKE ]( "compileProp" );
|
|
|
|
var swf = function (insertSnippet, snippetWrap, createContext, override)
|
|
{
|
|
var
|
|
temp, i, j
|
|
|
|
// Pending
|
|
, defaultArt = ""
|
|
|
|
, handler = function ()
|
|
{
|
|
// Input fields
|
|
var input_w = Dand.wrapna("input", new IKey("type", "number"))
|
|
, input_h = Dand.wrapna("input", new IKey("type", "number"))
|
|
, input_title = Dand.wrap("input", null, "v_snippet_input_single", null, [new IKey("type", "text"), new IKey("placeHolder", "optional")] )
|
|
, input_desc = Dand.wrap("input", null, "v_snippet_input_single", null, [new IKey("type", "text"), new IKey("placeHolder", "optional")] )
|
|
, input_api = Dand.wrapna("input", new IKey("type", "checkbox"))
|
|
, input_preview = Dand.wrap("input", null, "v_snippet_input_single", null, [new IKey("type", "text"), new IKey("placeHolder", "optional")] )
|
|
, input_src = Dand.wrap("input", null, "v_snippet_input_single", null, new IKey("type", "text"))
|
|
, stage = this._stage;
|
|
|
|
if (stage)
|
|
{
|
|
input_src.value = this._src;
|
|
input_w.value = this._width;
|
|
input_h.value = this._height;
|
|
input_title.value = this._title;
|
|
input_desc.value = this._desc;
|
|
input_preview.value = this._preview;
|
|
input_api.checked = (this._extAPI == "on");
|
|
}
|
|
|
|
new MessageBox(
|
|
"Insert swf object",
|
|
Dand.wrape([
|
|
Dand.wrape([Dand.textNode("Dimensions: "), input_w, Dand.textNode("\u00D7"), input_h, Dand.textNode("px")])
|
|
|
|
, Dand.wrapc("v_instruction flsf", "Title:")
|
|
, input_title
|
|
|
|
, Dand.wrapc("v_instruction flsf", "Description:")
|
|
, input_desc
|
|
|
|
, Dand.wrapc("v_instruction flsf", "Preview image:")
|
|
, input_preview
|
|
|
|
, Dand.wrapc("v_instruction flsf", "Link to swf:")
|
|
, input_src
|
|
|
|
, Dand.wrape( Dand.wrapne( "label", [ input_api, "Use external API" ] ) )
|
|
]
|
|
)
|
|
, "OK", "Cancel", visualizer.bind({src:input_src, width:input_w, height:input_h, title: input_title, desc: input_desc, extAPI: input_api, preview: input_preview, stage: this._stage})).show();
|
|
}
|
|
|
|
, visualizer = function (submitted, override)
|
|
{
|
|
var src, width, height, title, desc, preview, extAPI
|
|
, stage = this.stage;
|
|
|
|
if (override)
|
|
{
|
|
src = override.value;
|
|
width = override.width;
|
|
height = override.height;
|
|
title = override.title;
|
|
desc = override.desc;
|
|
preview = override.preview;
|
|
extAPI = override.useExtAPI;
|
|
}
|
|
else
|
|
{
|
|
src = this.src.value;
|
|
width = this.width.value;
|
|
height = this.height.value;
|
|
title = this.title.value;
|
|
desc = this.desc.value;
|
|
preview = this.preview.value;
|
|
extAPI = this.extAPI.checked ? "on" : "";
|
|
}
|
|
|
|
if (submitted && width && height && src)
|
|
{
|
|
|
|
if (!stage)
|
|
{
|
|
// Visualize component
|
|
|
|
temp = Dand.wrapc("v_box"
|
|
, Dand.wrapc("v_description"
|
|
, [
|
|
Dand.wrap("span", null, "fls", title)
|
|
, Dand.textNode(" ")
|
|
, Dand.wrap("span", null, "v_caption_desc flsf", desc)
|
|
]
|
|
, new IKey("style", "font-size: 2em")
|
|
)
|
|
, [
|
|
new DataKey("value", src)
|
|
, new DataKey("width", width)
|
|
, new DataKey("height", height)
|
|
, new DataKey("title", title)
|
|
, new DataKey("desc", desc)
|
|
, new DataKey("preview", preview)
|
|
, new DataKey("useExtAPI", extAPI)
|
|
|
|
, new IKey
|
|
(
|
|
"style"
|
|
, "background-position: center; background-repeat: no-repeat; "
|
|
+ "width: " + width +"px; height: " + height + "px; "
|
|
+ "background-image: url(" + (preview ? preview : defaultArt) + ")"
|
|
)
|
|
]
|
|
);
|
|
insertSnippet(j = snippetWrap("Swf", temp), Boolean(override));
|
|
}
|
|
else
|
|
{
|
|
IDOMElement(stage).setAttribute
|
|
(
|
|
[
|
|
new DataKey("value", src)
|
|
, new DataKey("width", width)
|
|
, new DataKey("height", height)
|
|
, new DataKey("title", title)
|
|
, new DataKey("desc", desc)
|
|
, new DataKey("preview", preview)
|
|
, new DataKey("useExtAPI", extAPI)
|
|
]
|
|
);
|
|
|
|
stage.style.width = width + "px";
|
|
stage.style.height = height + "px";
|
|
stage.style.backgroundImage = "url(" + (preview ? preview : defaultArt) + ")";
|
|
|
|
// Title
|
|
temp = stage.firstChild.firstChild;
|
|
temp.removeChild(temp.firstChild);
|
|
temp.appendChild(Dand.textNode(title));
|
|
|
|
// Desc
|
|
temp = stage.firstChild.lastChild;
|
|
temp.removeChild(temp.firstChild);
|
|
temp.appendChild(Dand.textNode(desc));
|
|
|
|
temp = stage;
|
|
}
|
|
|
|
|
|
i = {
|
|
_src: src
|
|
, _width: width
|
|
, _height: height
|
|
, _title: title
|
|
, _desc: desc
|
|
, _preview: preview
|
|
, _extAPI: extAPI || "off"
|
|
, _stage: temp
|
|
};
|
|
|
|
// Set context menu
|
|
createContext(i, j, handler);
|
|
}
|
|
}
|
|
;
|
|
|
|
if (override)
|
|
{
|
|
visualizer(true, override);
|
|
override = false;
|
|
}
|
|
else
|
|
{
|
|
return handler;
|
|
}
|
|
return true;
|
|
};
|
|
|
|
var compile = function (stage)
|
|
{
|
|
// [swf width="" height="" title="" desc="" preview="" useExtAPI="" ]src[/swf];
|
|
var element = IDOMElement(stage)
|
|
, props = ["width", "height", "title", "desc", "preview", "useExtAPI"];
|
|
|
|
return "[swf"
|
|
+ compileProp( element, props )
|
|
+ "]"
|
|
+ element.getDAttribute("value")
|
|
+ "[/swf]"
|
|
;
|
|
};
|
|
|
|
__static_method( swf, "compile", compile );
|
|
|
|
ns[ NS_EXPORT ]( EX_CLASS, "Swf", swf );
|
|
})();
|