NativeDialogs
Adobe Air Native Extension for mobile native dialogs (IOS,Andoid) - Toast, Text Input dialog, Progress dialog, Alert dialog, multi single choice dialog + DatePicker dialog
Install / Use
/learn @mateuszmackowiak/NativeDialogsREADME
Native Dialogs - Adobe air Native Extension
============= Adobe Air Native Extension for mobile native dialogs (IOS,Andoid) - Toast, Text Input dialog, Progress dialog, Alert dialog, multi / single choice dialog, DatePicker dialog , PickerList dialog
##warning In iOS7 there have been changes to the api that blocks adding subiews to the alert Dialog. I plan to change it a little. For now user themes for iOS NativeProgressDialog.
NativePickerDialog (IOS/Andorid)
Displays a dialog with a scrollable list. On IOS - the native picker
Usage
protected function onsPickerButtonClicked(event:MouseEvent):void
{
var picker:NativePickerDialog = new NativePickerDialog();
var pickerlist1:PickerList = new PickerList(["HAHAHA","ATATAT","tatasd"],1);
pickerlist1.addEventListener(NativeDialogListEvent.LIST_CHANGE,mess);
var pickerlist2:PickerList = new PickerList(["affasf","sagasdg","ah5we","fdsad"],2);
pickerlist2.addEventListener(NativeDialogListEvent.LIST_CHANGE,mess);
picker.dataProvider = Vector.<PickerList>([pickerlist1,pickerlist2]);
picker.addEventListener(NativeDialogEvent.CLOSED,readAllSelectedValuesFromPickers);
picker.show();
}
private function readSelectedValuesFromPickerList(event:NativeDialogListEvent):void
{
var pickerList:PickerList = PickerList(event.target);
trace(event);
trace("selectedIndex: "+pickerList.selectedIndex);
trace("selectedItem: "+pickerList.selectedItem);
}
private function readAllSelectedValuesFromPickers(event:NativeDialogEvent):void
{
var picker:NativePickerDialog = NativePickerDialog(event.target);
var v:Vector.<PickerList> = picker.dataProvider;
var pickerList:PickerList;
trace(event);
for (var i:int = 0; i < v.length; i++)
{
pickerList = v[i];
trace("pickerlist "+i);
trace("selectedIndex: "+pickerList.selectedIndex);
trace("selectedItem: "+pickerList.selectedItem);
}
picker.dispose();
}
NativeDatePickerDialog (IOS/Andorid)
Displays a native date-picker dialog. (Now DISPLAY_MODE_DATE_AND_TIME works on Android)
Usage
protected function showDatePicker():void
{
var d:NativeDatePickerDialog = new NativeDatePickerDialog();
d.addEventListener(NativeDialogEvent.CLOSED,onCloseDialog);
d.addEventListener(NativeDialogEvent.CANCELED,trace);
d.addEventListener(NativeDialogEvent.OPENED,trace);
d.addEventListener(Event.CHANGE,function(event:Event):void
{
var n:NativeDatePickerDialog = NativeDatePickerDialog(event.target);
trace(event);
trace("Date set to:"+String(n.date));
});
d.buttons = Vector.<String>(["Cancle","OK"]);
d.displayMode = NativeDatePickerDialog.DISPLAY_MODE_DATE_AND_TIME;
d.title = "DatePicker";
d.message = "Select date:";
d.show(false);
}
private function onCloseDialog(event:NativeDialogEvent):void
{
var m:iNativeDialog = iNativeDialog(event.target);
m.removeEventListener(NativeDialogEvent.CLOSED,onCloseDialog);
trace(event);
m.dispose();//Must be called if not used again
}
NativeAlertDialog (IOS/Android)
Displays a native alert dialog.
Usage:
private function showAlert(){
NativeAlertDialog.showAlert( "some message" , "title" , Vector.<String>(["OK","Cancle"]) ,
function someAnswerFunction(event:NativeDialogEvent):void{
//event.preventDefault();
var buttonPressed:String = event.index;// the index of the pressed button
// IMPORTANT:
//default behavior is to remove the default listener "someAnswerFunction()" and to call the dispose()
//
trace(event);
});
/*
var a:NativeAlertDialog = new NativeAlertDialog();
a.addEventListener(NativeDialogEvent.OPENED,trace);
// This solution (a.closeHandler) is added only in NativeAlertDialog class to create a default handler.
// By default the dialog will be desposed using this method
a.closeHandler = function(e:NativeDialogEvent):void{
trace(e);
};
a.title = "Title";
a.message = "Some message.";
a.closeLabel = "OK";
a.show();
*/
NativeProgressDialog (Android / IOS)
Displays a progress dialog.
Some help provided by memeller
Available themes for IOS:
- IOS_SVHUD_BLACK_BACKGROUND_THEME - uses SVProgressHUD
- IOS_SVHUD_NON_BACKGROUND_THEME - uses SVProgressHUD
- IOS_SVHUD_GRADIENT_BACKGROUND_THEME - uses SVProgressHUD
- DEFAULT_THEME (cancleble is ignored)
Usage:
private var progressPopup:NativeProgressDialog;
private var myTimer:Timer = new Timer(100);
protected function showProgressDialog():void
{
var p:NativeProgressDialog= new NativeProgressDialog();
p.addEventListener(NativeDialogEvent.CLOSED,onCloseDialog);
p.addEventListener(NativeDialogEvent.CANCELED,trace);
p.addEventListener(NativeDialogEvent.OPENED,trace);
p.secondaryProgress = 45;
p.max = 50;
p.title = "Title";
p.message ="Message";
p.showProgressbar();
progressPopup = p;
myTimer.addEventListener(TimerEvent.TIMER, updateProgress);
myTimer.start();
}
private function onCloseDialog(event:NativeDialogEvent):void
{
var m:iNativeDialog = iNativeDialog(event.target);
m.removeEventListener(NativeDialogEvent.CLOSED,onCloseDialog);
trace(event);
m.dispose();
}
private function updateProgress(event:TimerEvent):void
{
var p:int = progressPopup.progress;
p++;
if(p>=50){
p = 0;
progressPopup.hide(1);
myTimer.removeEventListener(TimerEvent.TIMER,updateProgress);
(event.target as Timer).stop();
}
else{
if(p==25){
progressPopup.shake();
//progressPopup.setMessage("some message changed in between");
//progressPopup.setTitle("some title changed in between");
}
try{
progressPopup.setProgress(p);
}catch(e:Error){
trace(e);
}
}
}
NativeListDialog(Android / IOS)
Displays a native popup dialog with a multi-choice or single-choice list.
IOS uses: SBTableAlert
Usage:
private function showMultiChoiceDialog():void{
var m:NativeListDialog = new NativeListDialog();
m.addEventListener(NativeDialogEvent.CANCELED,trace);
m.addEventListener(NativeDialogEvent.OPENED,trace);
m.addEventListener(NativeDialogEvent.CLOSED,readSelected);
m.addEventListener(NativeDialogListEvent.LIST_CHANGE,function(event:NativeDialogListEvent):void
{
trace(event);
var m:iNativeDialog = iNativeDialog(event.target);
m.shake();
});
m.buttons = Vector.<String> (["OK","Cancle"]);
m.title = "Title";
m.message = "Message";
m.dataProvider = Vector.<Object>(["one","two","three"]);
m.displayMode = NativeListDialog.DISPLAY_MODE_MULTIPLE;
m.show();
}
protected function showSingleChoiceDialog(event:MouseEvent):void
{
var m:NativeListDialog = new NativeListDialog();
m.addEventListener(NativeDialogEvent.CANCELED,trace);
m.addEventListener(NativeDialogEvent.OPENED,trace);
m.addEventListener(NativeDialogEvent.CLOSED,readSelected);
m.addEventListener(NativeDialogListEvent.LIST_CHANGE,trace);
m.buttons = Vector.<String> (["OK","Cancle"]);
m.title = "Title";
m.message = "Message";
m.dataProvider = Vector.<Object>(["one","two","three"]);
m.displayMode = NativeListDialog.DISPLAY_MODE_SINGLE;
m.show();
}
private function readSelected(event:NativeDialogEvent):void
{
var m:NativeListDialog = NativeListDialog(event.target);
trace(event);
trace("selectedIndex: "+m.selectedIndex);
trace("selectedIndexes: "+m.selectedIndexes);
trace("selectedItem: "+m.selectedItem);
trace("selectedItems: "+m.selectedItems);
m.dispose();
}
private function onCloseDialog(event:NativeDialogEvent):void
{
var m:iNativeDialog = iNativeDialog(event.target);
m.removeEventListener(NativeDialogEvent.CLOSED,onCloseDialog);
trace(event);
m.dispose();
}
Text input Dialog (Android /IOS)
Displays a dialog with defined text-fields..
(on IOS 5 uses default dialog) - on ios 4 don't know if Apple will not refuses ###Important:### IOS limitations - There can be only 2 buttons and 2 text inputs.
To display message specyfie for the first NativeTextField editable == false
Usage:
protected function showTextInput():void
{
var t:NativeTextInputDialog = new NativeTextInputDialog();
t.addEventListener(NativeDialogEvent.CANCELED,trace);
t.addEventListener(NativeDialogEvent.CLOSED,onCloseDialog);
var v:Vector.<NativeTextField> = new Vector.<NativeTextField>();
//creates a message text-field
var message:NativeTextField = new NativeTextField(null);
message.text = "Message";
message.editable = false;
v.push(message);
// create text-input
var serverAdressTextInput:NativeTextField = new NativeTextField("serverAdress");
serverAdressTextInput.displayAsPassword = true;
serverAdressTextInput.prompText = "prompt";
serverAdressTextInput.softKeyboardType = SoftKeyboardType.URL;
serverAdressTextInput.addEventListener(Event.CHANGE,function(event:Event):void{
var tf:NativeTextField = NativeTextField(event.target);
tf.nativeTextInputDialog.shake();
});
// on return click
serverAdressTextInput.addEventListener(TextEvent.TEXT_INPUT,function(event:Event):void{
var tf:NativeTextField = NativeTextField(event.target);
tf.nativeTextInputDialog.hide(0);
});
v.push(serverAdressTextInput);
t.textInputs = v;
t.title = "Title";
t.show();
}
private function onCloseDialog(event:NativeDialogEvent):void
{
var m:iNativeDialog = iNativeDialog(event.target);
m.removeEventListener(NativeDialogEvent.CLOSED,onCloseDialog);
trace(event);
m.dispose();
}
Toast (Android / IOS)
