Закрываем И запускаем AIR-debugger с помощью Eclipse Monkey

Monday, February 23rd, 2009

Про апгрейченый скрипт запуска AIR дебагера:

 
/*
 * Menu: Kill adl an run debug
 * Key: M3+d
 * Kudos: Ilja Panin http://the33cows.com
 * DOM: http://download.eclipse.org/technology/dash/update/org.eclipse.eclipsemonkey.lang.javascript
 */
 
var workspace = Packages.org.eclipse.core.resources.ResourcesPlugin.getWorkspace(); 
var configToRunName = "[YOU_DEBUG_CONFIGURATION_NAME]";
 
function main() 
{
	Packages.java.lang.Runtime.getRuntime().exec("tskill.exe adl");
 
	loadBundle("org.eclipse.debug.ui");
 
	var ProgressMonitorDialog = Packages.org.eclipse.jface.dialogs.ProgressMonitorDialog;
	var IRunnableWithProgress = Packages.org.eclipse.jface.operation.IRunnableWithProgress;
 
	var runnableWithProgress = new IRunnableWithProgress({run: runfun});
	var monitorDialog = new ProgressMonitorDialog(window.getShell()).run(true, true, runnableWithProgress);;
}
 
 
function runfun(monitorDialog)
{
	monitorDialog.beginTask("Run debbuger ...", 1);
	var plugin =  Packages.org.eclipse.debug.core.DebugPlugin;
	var launchManager = plugin.getDefault().getLaunchManager();
	configurations = launchManager.getLaunchConfigurations();
 
	var conf;
 
	for (var i in configurations)
	{
		if (configurations[i].getName() == configToRunName )
		{
			conf = configurations[i];
		}	
	}
 
	if (conf)
	{
		var launch = Packages.org.eclipse.debug.ui.DebugUITools.buildAndLaunch(conf, "debug", monitorDialog);
	}
	else
	{
		debug("project not found!");
	}
 
	monitorDialog.done()
}
 
function debug(s) 
{
  	out.println(s);
}

Правила применения:
1.заменяем строку [YOU_DEBUG_CONFIGURATION_NAME] на имя конфигурации запуска приложения. Это имя можно найти в меню “Run -> Open Debug Dialog…”
2. заменяем сочетание M3+d на свое (M3 это alt). Для меня alt+d ближе чем F11 🙂

При выполнении скрипт, убивается процесс AIR дебагера и запускает процесс сборки и новый дебагер.



Закрываем AIR-debugger с помощью Eclipse Monkey

Sunday, February 22nd, 2009

Flex Builder не умеет закрывать дебагер AIR приложений.

Лично я все время забываю закрывать приложение и каждый раз при запуске получаю сообщение об ошибке. После чего приходится “искать” приложение и закрывать его. Отнимает время и иногда нервирует.

Чтобы облегчить себе работу в закрытии приложения я написал небольшой Eclipse Monkey script:


/*
 * Menu: kill adl
 * Key: M3+d
 * Kudos: Ilja Panin http://the33cows.com
 * DOM: http://download.eclipse.org/technology/dash/update/org.eclipse.eclipsemonkey.lang.javascript
 */

function main()
{
	Packages.java.lang.Runtime.getRuntime().exec("tskill.exe adl");
}

он убивает запущенный процесс adl.exe(отладчик AIR) легким движением руки ) и экономит время.

В идеале я хотел написать скрипт, который слушает событие эклипса о запуске дебагера, и автоматом дебагер, но не нашел как “достучатся” до дебагера.

upd: чтобы запустить скрипт нужно создать в папке со скриптами(по умолчанию проект monkey папка scripts) js файл, например kill-adl.js в него вставить код. Запускаеться скрипт нажатием alt+d или выбором пункта из меню



Custom chrome в AIR приложении и человеческий фактор

Tuesday, September 23rd, 2008

Пример приложения использующая исходники можно найти на сайте http://www.graviti.tv/blog/?p=46http://www.graviti.tv/blog/?p=75 )

Но статья не о том как сделать кастомный хром, а неверном решении индийцев из адоб.

У кастомного хрома, как и у FlexChrome (showFlexChrome=”true”) есть проблемка, при максимайзе приложения оно выступает на 3 пиксела за экран во все стороны. При showFlexChrome=”true” как раз прячется скругление заголовка окна. Великолепный ход конем! :). При showFlexChrome=”true” это еще простительно, а вот когда у вас полностью свой кастом хром, то получается ужастно.

Как побороть это нормально я не нашел, пошел по простому выходу, вставил все приложение в отдельный компонент, а его сделал меньше текущего хрома ровно на 3 пх с каждой стороны)

<?xml version="1.0" encoding="utf-8"?>
<mx:WindowedApplication xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute"
			showFlexChrome="false"
			showStatusBar="false"
			showGripper="true"
			showTitleBar="false"
			width="700" height="500" frameRate="45"
			horizontalScrollPolicy="off" verticalScrollPolicy="off"
			xmlns:local="*"
			>
	<local:AIRApplicationContent 	width="{width-6}"
					height="{height-6}"
					x="{3}" y="{3}"
					filters="{[new DropShadowFilter(4,45,0,0.5)]}"
					/>
</mx:WindowedApplication>

В качестве бонуса получил использование тени от окна не сильно напрягаясь 🙂



AIR, FLEX3 — мы готовы! Silverlight 2 — сейчас прогреем и поедем

Monday, February 25th, 2008

Адоб зарелизил AIR и FLEX 3, бурные продолжительные апплодисменты, все встают.

В честь этого небольной редизайн сайта покравсив его в черный (флексовый) цвет. Также сделал клевую шапку-флешку иллюстрирующую что такое AIR. Стоит зайти посмотреть

Одновременно с этим injun #576871 написал пост о том, что

Скот Гутри, пару дней назад рассказал в нескольких строках о предстоящей первой бета-версии Silverlight 2.

Я если чесно очень боюсь Silverlight 2 — последнее време продукты от майкрософта безумно огромны, неповоротливы и громоздки, как бы Silverlight 2 не стал именно таким “выхлопом” от майкрософт.
Майкрософт сейчас подобен безумному полководцу с безграничной армией программеров-войнов, которых он шлет бездумно на бойницы пытаясь просто завалить их трупами войнов. Эти войны-программисты порождают безумное количесто софта который просто неудобен в использовании, но окружающие люди просто ничего не видят вокруг, за огромностью MS этого просто не видно. Эта толпа программистов способна(?) сделать много всякого функционала и возможностей, но обычно это выглядит очень убого, а порой это вообще никому не нужно. Пока МС просто пытается набрать колличественный показатель всяких плюшек и возможностей, но вопрос в том, сможет ли он перешагнуть в качественный. Лично я подозреваю, что уже не застигну этот момент ;(

“способна(?)” — это я к тому, что я в этой жизни так и не пронаблюдал релиза Silverlight 1.1, и его прорадителя :).



AIR. Сюрпризы от File.browseForOpen

Monday, October 15th, 2007

Поставил флекс билдер 3 и решил пощупать AIR за самые интересные места, а именно за работу с файловой системой

Взял самый простой пример их хелпа по File метод browseForOpen

воткнул его в приложение

}
catch (error:Error)
{
trace(“Failed:”, error.message)
}
}

public function fileSelected(event:Event) : void
{
var stream : FileStream = new FileStream();
stream.open(File(event.target), FileMode.READ);
var fileData:String = stream.readUTFBytes(stream.bytesAvailable);
fileList.text = fileData;
}
]]>
и получил огромный болт – при нажатии на кнопку “Browse…” появляется окошко, в нем выбираешь файл но никакого события не происходит ни cancel ни select вообще ничего не происходит.

3 раза перечитал хелп, погуглил, нашел интересный блог от Benjamin Dobler – RichApps и там нашел описание мероприятия от адоба и его результатов (там есть весомый архив с различными примерами AIR приложений, в том числе и работы с файловой системой). Блог нужно читать всем внимательно 3 раза ибо интересно.

Так вот его пример работал, а мой нет разница был в том что моя переменная File был объявлена локально в функции и видимо на крысу по быстрому собралась мусорщиком %).

Правильный ответ в моей проблеме это объявить переменную как свойства класса и становиться замечательно!

}
catch (error:Error)
{
trace(“Failed:”, error.message)
}
}

public function fileSelected(event:Event) : void
{
var stream : FileStream = new FileStream();
stream.open(File(event.target), FileMode.READ);
var fileData:String = stream.readUTFBytes(stream.bytesAvailable);
fileList.text = fileData;
}
]]>




]]> rss о RIA от 33 Коровы
Забадать RSS!
]]>
~~~~~~