
var app = {
_mainWindow: null,
_textarea: null,
_statusbar: null,
/ *
* initialization
* /
init: function () {
window.nativeWindow.maximize ();
app.doCreateMainWindow ();
app.setupListeners ();
window.nativeWindow.visible = true;
},
/ *
* event handlers
* /
setupListeners: function () {
// native window events
window.nativeWindow.addEventListener ('displayStateChanging', app.doDisplayStateChanging);
// main window events
this._mainWindow.on ('minimize', app.doMinimize);
this._mainWindow.on ('close', app.doClose);
// events in textarea
this._textarea.on ('specialkey', app.doSpecialKey);
},
/ *
* creating the main window
* /
doCreateMainWindow: function () {
this._statusbar = new Ext.StatusBar ({
// default text
text: 'http://www.typograf.ru',
items: [
// separator
'-',
{// "open in browser" button on statusbar
text: 'open in browser',
handler: function () {
// function will work by clicking on the button
// its meaning is to open the link in the default browser
var request = new air.URLRequest ('http://www.typograf.ru');
air.navigateToURL (request);
}
}
]
});
this._textarea = new Ext.form.TextArea ({
// default text
emptyText: 'Enter the text you want to stamp and press Ctrl + Enter',
region: 'center'
});
this._mainWindow = new Ext.Window ({
width: 800,
height: 600,
minWidth: 300,
minHeight: 200,
layout: 'border',
x: 100,
y: 100,
minimizable: true
maximizable: true
title: "Typographer",
iconCls: 'icon',
// toolbar
tbar: [
{
text: "paste from buffer",
handler: function () {
// does the clipboard really have text?
if (air.Clipboard.generalClipboard.hasFormat (air.ClipboardFormats.TEXT_FORMAT)) {
// paste the text
app._textarea.setValue (
// from buffer =)
air.Clipboard.generalClipboard.getData (air.ClipboardFormats.TEXT_FORMAT)
);
}
}
},
{
text: "copy to clipboard",
handler: function () {
// get the entered text
var text = app._textarea.getValue ();
// if empty, do nothing
if (text == '')
return;
// clear the clipboard
air.Clipboard.generalClipboard.clear ();
// and copy the data there in text (TEXT_FORMAT) format
air.Clipboard.generalClipboard.setData (air.ClipboardFormats.TEXT_FORMAT, text);
}
},
{
text: "clear",
handler: function () {
// clear input field
app._textarea.reset ();
}
}
],
// statusbar
bbar: this._statusbar,
// text field
items: this._textarea
});
this._mainWindow.show ();
},
/ *
* event handling on window state change
* @param {Event} event displayStateChanging
* /
doDisplayStateChanging: function (e) {
if (e.afterDisplayState == 'normal') {
e.preventDefault ();
window.nativeWindow.visible = false;
window.nativeWindow.maximize ();
window.nativeWindow.visible = true;
}
else
if (e.afterDisplayState == 'minimized') {
e.preventDefault ();
window.nativeWindow.visible = false;
window.nativeWindow.minimize ();
window.nativeWindow.visible = true;
}
},
/ *
* handling service key press event in _textarea
* @param {Ext.form.TextField} element
* @param {Event} keypress event
* /
doSpecialKey: function (field, e) {
var keyCode = e.getKey ();
if (keyCode == 13) {
// no need to move the carriage in this case
e.preventDefault ();
// process the text if it is
if (app._textarea.getValue ()! = '')
app.doProcess ();
}
},
/ *
* handling the event of closing the main window
* @param {Ext.window} window
* /
doClose: function (win) {
air.NativeApplication.nativeApplication.exit ();
},
/ *
* event handling for minimizing the main window
* @param {Ext.window} window
* /
doMinimize: function (win) {
window.nativeWindow.visible = false;
window.nativeWindow.minimize ();
window.nativeWindow.visible = true;
},
// typography text processing
doProcess: function () {
this._textarea.disable ();
this._statusbar.setStatus ('Processing ...');
// loader
var loader = new air.URLLoader ();
// we will perceive the received information in text form
loader.dataFormat = air.URLLoaderDataFormat.TEXT;
// specify the handler to receive data
loader.addEventListener (air.Event.COMPLETE, app.doGetProcessed);
// request
var request = new air.URLRequest ('http://www.typograf.ru/webservice/');
// specify the data transfer method to the service - post
request.method = air.URLRequestMethod.POST;
// and specify, in fact, what we pass to the service
request.data = 'chr = utf-8 & text =' + this._textarea.getValue ();
// go ;)
loader.load (request);
},
/ *
* receiving data from the server
* @param {Event} event air.Event.COMPLETE
* /
doGetProcessed: function (e) {
// get loader
var loader = e.target;
app._textarea.setValue (loader.data);
app._textarea.enable ();
app._statusbar.setStatus ('http://www.typograf.ru');
}
} Source: https://habr.com/ru/post/27523/
All Articles