- 자동으로 Application 닫도록 설정.
- 아이콘 클릭시 맨 위로 나타나도록 설정.
package kr.as3.display
{
/*****************************************************************
* Description : System Trayed Application's base class.
* Class Name : TrayedNativeWindow
* Company : Belong to www.as3.kr.
* Author : JINSANG YUN ( a.k.a. Wooyaggo victim4@gmail.com )
* Last modified : 2008.06.02
* Version : 1.0
*
* Copyright www.as3.kr. All Rights Reserved.
******************************************************************/
/**
* This source code follow LGPL (Lesser GPL)
*
* 본 제품(소프트웨어)는 GPL 라이센스 하에 배포되는 소프트웨어 TrayedNativeWindow 을 포함합니다
*
* 이 소스코드는 LGPL 을 따릅니다.
* 사실 저도 LGPL 을 잘 모릅니다.
*
* 하지만 단순한 몇가지를 나열해봅니다.
*
* * 라이센시(Licensee)는 오픈소스 소프트웨어(이 컴퍼넌트 클래스)를 자유롭게 사용할 수 있다.
* * 라이센시(Licensee)는 오픈소스 소프트웨어(이 컴퍼넌트 클래스)를 일정한 조건하에 자유롭게 복제할 수 있다.
* * 라이센시(Licensee)는 오픈소스 소프트웨어(이 컴퍼넌트 클래스)를 일정한 조건하에 자유롭게 수정, 수정된 내용을 재배포할 수 있다.
*
* * 복제, 수정, 재배포에 대한 조건 *
* * 저작권 관련 문구를 유지한다.
* * 제품명 혹은 컴퍼넌트(클래스)명을 중복되지 않게 한다.
* * 최종결과물에 사용 여부를 명시한다. (논문의 "인용" 과 비슷)
* * 수정, 추가하였을때는 수정, 추가한 소스코드도 공개한다. (저작자에게 email 로 알리면 된다고 봄)
* * 특허에 관련될 경우 복잡해지니 무시.
*
* 간단하게 이야기하면 이 소스는 LGPL 을 따르기 때문에 사용했다는 것을 반드시 밝혀야하고,
* 원본 소스가 수정 또는 추가되면 그 소스도 자동으로 LGPL 을 따르게 된다는 이야기입니다.
*
* 더 쉽게 말해서 걍 쓰시고 썼다는 이야기만 해주시면 될거 같습니다. 대부분 수정은 잘 안하자나요 ㅋㅋ
* 수정하면 수정했다고 공개하거나 메일로 소스랑 같이 알려주면되는거 같구요.
* 생각보다 그렇게 어려운 건 아닌거 같습니다^^
*
* 오픈소스 소프트웨어 라이센스 가이드 : http://wiki.kldp.org/wiki.php/OpenSourceLicenseGuide?action=show&redirect=FindPage#s-3.2.2
* KLDP 의 LGPL 관련 질문글 : http://search.empas.com/search/oea/kldp/oe.html?q=LGPL&sdsn=&en=utf8
*
* 우리 모두 같이 자유롭게 소스를 공개하고 떳떳하게 사용하는 분위기를 조성해봅시다.
*
*/
/**
* To make a application is nested within SystemTray, Instead extending Sprite or MovieClip, just extend TrayedNativeWindow.
*
* @author wooyaggo
*
*/ public class TrayedNativeWindow extends MovieClip
{
/**
* if you want to set InitOption, After set this, then call super();
*
* @example
* <listing version="3.0">
<font color="#BC00CC"><b>package </b></font><br/>
{<br/>
<font color="#3A33FF"><b>import </b></font>flash.display.NativeWindowInitOptions;<br/>
<br/>
<font color="#3A33FF"><b>import </b></font>kr.as3.display.TrayedNativeWindow;<br/>
<br/>
<font color="#3A33FF"><b>public </b></font><font color="#BC00CC"><b>class </b></font>SampleTrayApplication <font color="#3A33FF"><b>extends</b></font> TrayedNativeWindow<br/>
{<br/>
<font color="#3A33FF"><b>public </b></font><font color="#339966"><b>function</b></font> SampleTrayApplication()<br/>
{<br/>
<font color="#3A33FF"><b>this</b></font>.initOption = <font color="#3A33FF"><b>new</b></font> NativeWindowInitOptions();<br/>
<font color="#3A33FF"><b>this</b></font>.initOption.resizable = <font color="#3A33FF"><b>false</b></font>;<br/>
<br/>
<font color="#3A33FF"><b>super</b></font>();<br/>
}<br/>
}<br/>
}
* </listing>
*/ public var initOption: NativeWindowInitOptions;
/**
* You can access SystemTrayIcon without type-casting NativeApplication.nativeApplication.icon.
*/ public var icon: SystemTrayIcon;
/**
* Constructor, You can create nested-SystemTrayApplication nowhere at taskbar.
*
*/ public function TrayedNativeWindow()
{ var older: NativeWindow = this.stage.nativeWindow; var oldStage: Stage = this.stage;
/**
* To click tray icon when the application was covered with other windows, show up to front.
*/ private function showFrontListener( e: MouseEvent ): void
{ // keep a origin state. var isFronted: Boolean = this.stage.nativeWindow.alwaysInFront;