diff --git a/bindings/android-sdk/android_bindings_generator.lpi b/bindings/android-sdk/android_bindings_generator.lpi index d781dcf58..1932ee8dd 100644 --- a/bindings/android-sdk/android_bindings_generator.lpi +++ b/bindings/android-sdk/android_bindings_generator.lpi @@ -39,7 +39,7 @@ - + @@ -48,7 +48,7 @@ - + @@ -59,9 +59,9 @@ - + - + @@ -71,7 +71,7 @@ - + @@ -79,7 +79,7 @@ - + @@ -87,7 +87,7 @@ - + @@ -95,7 +95,7 @@ - + @@ -103,25 +103,26 @@ - + - + + - - - + + + @@ -130,7 +131,7 @@ - + @@ -138,14 +139,14 @@ - + - + @@ -153,7 +154,7 @@ - + @@ -162,7 +163,7 @@ - + @@ -170,7 +171,7 @@ - + @@ -178,7 +179,7 @@ - + @@ -186,23 +187,23 @@ - + - + - - - + + + @@ -212,14 +213,14 @@ - + - + @@ -229,36 +230,37 @@ - + + - - - + + + + - - - - + + + - + - + @@ -267,200 +269,200 @@ - + - - - + - - - + - - - + - - - + - - - + - - - + - + - + + + + + + + + + - + - + - + - + - + - + - - + + - - + + - - + + - - + + - + - + - + - + - + - + - + - - + + - - + + - - + + - + - - + + - - + + - - + + - - + + - + - + - - + + - - + + - - + + + + + + diff --git a/bindings/android-sdk/android_sdk_bindings_gen.pas b/bindings/android-sdk/android_sdk_bindings_gen.pas index 637e849d1..78d1dd942 100644 --- a/bindings/android-sdk/android_sdk_bindings_gen.pas +++ b/bindings/android-sdk/android_sdk_bindings_gen.pas @@ -22,17 +22,27 @@ type FClassNum, FMethodNum: Integer; FIsGlobalObject: Boolean; FGlobalObject: string; + // List of Callback types which are used later + FCallbackTypesJavaName: TStringList; + FCallbackTypesParams: TStringList; + FCallbackTypesInnerName: TStringList; + FCallbackTypesFirstParam: TStringList; // // ProcessMethodReturnValue FMethodReturnPas, FDeclarationBase: string; FDeclarationIsFunction: Boolean; // ProcessMethodName FMethodName: string; + // ProcessMethodPreface + FJavaParamSelf: String; + FIDString: String; + FIDSetter, FIDStart, FIDFinished: String; + FCallbackName, FSetterName, FCallerName: string; // ProcessMethodParameters - FPascalParams, FJavaParams: string; + FPascalParams, FJavaParams, FFirstParam: string; FHasStringParam: Boolean; FPasOutputImplCurLine: Integer; - FCallbackTypePas: string; + FCallbackTypePas, FCallbackTypeJava: string; // procedure GeneratePascalFile(ASourceFile: string; ADest: TStringList); procedure GenerateJavaFile(ASourceFile: string; ADest: TStringList); @@ -47,6 +57,7 @@ type // procedure ProcessMethodReturnValue(ASourceLine: string; var lReaderPos: Integer); procedure ProcessMethodName(ASourceLine: string; var lReaderPos: Integer); + procedure ProcessMethodPreface(ASourceLine: string; AIsCallback: Boolean); procedure ProcessMethodParameters(ASourceLine: string; var lReaderPos: Integer; AAddParamRead: Boolean = True); // function GetNextWord(ALine: string; var AStartPos: Integer): string; @@ -162,6 +173,7 @@ begin ADest.Add(' JavaLang MyJavaLang;'); ADest.Add(' // lists of variables'); ADest.Add(' ArrayList ViewElements;'); + ADest.Add(' ArrayList ViewElementsTags;'); ADest.Add(''); ADest.Add(' public AndroidAll(AndroidPipesComm AAndroidPipesComm, Activity AActivity, JavaLang AJavaLang)'); ADest.Add(' {'); @@ -169,6 +181,7 @@ begin ADest.Add(' MyAndroidPipesComm = AAndroidPipesComm;'); ADest.Add(' MyJavaLang = AJavaLang;'); ADest.Add(' ViewElements = new ArrayList();'); + ADest.Add(' ViewElementsTags = new ArrayList();'); ADest.Add(' }'); ADest.Add(''); ADest.Add(' public void DebugOut(String Str)'); @@ -205,13 +218,15 @@ begin ADest.Add(' ArrayAdapter param_self_ArrayAdapter_String_;'); ADest.Add(' AdapterView param_self_AdapterView;'); ADest.Add(' AlertDialog.Builder param_self_AlertDialog_Builder;'); + ADest.Add(' Dialog param_self_Dialog;'); + ADest.Add(' AlertDialog param_self_AlertDialog;'); ADest.Add(' //'); ADest.Add(' // Params'); ADest.Add(' //'); ADest.Add(' ViewGroup.LayoutParams lViewGroup_LayoutParams_1, lViewGroup_LayoutParams_2, lViewGroup_LayoutParams_3;'); ADest.Add(' SpinnerAdapter lSpinnerAdapter_1;'); ADest.Add(' DisplayMetrics lDisplayMetrics_1;'); - ADest.Add(' CharSequence lCharSequence_1;'); + ADest.Add(' CharSequence lCharSequence_1, lCharSequence_2;'); ADest.Add(' String lString_1;'); ADest.Add(' View lView_1;'); ADest.Add(' int lint_1, lint_2, lint_3, lint_4;'); @@ -579,6 +594,7 @@ begin else begin FJavaOutputMethods.Add(Format(' ViewElements.add(%s);', [lMethodReturnJavaIdentifier])); + FJavaOutputMethods.Add( ' ViewElementsTags.add(null);'); FJavaOutputMethods.Add(Format(' MyAndroidPipesComm.%s(ViewElements.size() - 1);', [GetJavaResultFunction(lMethodReturn)])) end; end; @@ -673,6 +689,7 @@ begin FPasOutputImpl.Add('end;'); FJavaOutputMethods.Add(' ViewElements.add(new ' + FClassName + '(' + lConstructorJavaParams + '));'); + FJavaOutputMethods.Add(' ViewElementsTags.add(null);'); FJavaOutputMethods.Add(' MyAndroidPipesComm.SendIntResult(ViewElements.size() - 1);'); FJavaOutputMethods.Add(' break;'); @@ -701,10 +718,12 @@ procedure TAndroidSDKBindingsGen.ProcessModelCallbackSetter(ASourceLine: string) var lReaderPos: Integer = 1; lCurWord: string; - lSetterName, lCallerName, lCallbackName, lCallbackDeclaration: string; - lIDSetter, lIDStart, lIDFinished: String; - lJavaParamSelf: string; lStr: String; + lSeparator: String; + lJavaCallbackIndex: Integer; + lJavaCallbackParams, lJavaCallbackInnerName, lFirstCallbackParam: String; + lHugeParamList: TStringList; + lHugeParamListText: String; begin if ASourceLine = '' then Exit; @@ -712,49 +731,40 @@ begin ProcessMethodReturnValue(ASourceLine, lReaderPos); ProcessMethodName(ASourceLine, lReaderPos); + + // Pascal and Java Implementation Start + ProcessMethodPreface(ASourceLine, True); + ProcessMethodParameters(ASourceLine, lReaderPos); - lSetterName := FMethodName; - lIDSetter := GetIDString(lSetterName); - lCallbackName := Copy(lSetterName, 4, Length(lSetterName)); // remove the "set" from the setter name - lCallerName := 'call' + lCallbackName; - AddOutputIDs(lIDSetter); - Inc(FMethodNum); - lIDStart := GetIDString(lCallbackName + '_Start'); - AddOutputIDs(lIDStart); - Inc(FMethodNum); - lIDFinished := GetIDString(lCallbackName + '_Finished'); - AddOutputIDs(lIDFinished); - Inc(FMethodNum); + // Pascal implementation continuation + if FPascalParams = '' then lSeparator := '' + else lSeparator := '; '; + FPasOutputImpl.Insert(FPasOutputImplCurLine, + Format('procedure %s.%s(%s%sACallback: %s);', [FClassNamePas, FSetterName, FPascalParams, lSeparator, FCallbackTypePas])); - FPasOutputClasses.Add( ' public'); - FPasOutputClasses.Add(Format(' %s: %s;', [lCallbackName, FCallbackTypePas])); - FPasOutputClasses.Add(Format(' procedure %s(ACallback: %s);', [lSetterName, FCallbackTypePas])); - FPasOutputClasses.Add(Format(' procedure %s();', [lCallerName])); - FPasOutputClasses.Add( ' public'); - - FPasOutputImpl.Add(Format('procedure %s.%s(ACallback: %s);', [FClassNamePas, lSetterName, FCallbackTypePas])); - FPasOutputImpl.Add( 'begin'); - FPasOutputImpl.Add( ' OnClickListener := ACallback;'); - FPasOutputImpl.Add( ' vAndroidPipesComm.SendByte(ShortInt(amkUICommand));'); - FPasOutputImpl.Add( ' vAndroidPipesComm.SendInt(' + lIDSetter + ');'); - FPasOutputImpl.Add( ' vAndroidPipesComm.SendInt(Index); // Self, Java Index'); - FPasOutputImpl.Add( ' vAndroidPipesComm.SendInt(PtrInt(Self)); // Self, Pascal pointer'); FPasOutputImpl.Add( ' vAndroidPipesComm.WaitForReturn();'); FPasOutputImpl.Add( 'end;'); FPasOutputImpl.Add( ''); - FPasOutputImpl.Add(Format('procedure %s.%s();', [FClassNamePas, lCallerName])); + FPasOutputImpl.Add(Format('procedure %s.%s();', [FClassNamePas, FCallerName])); FPasOutputImpl.Add( 'begin'); - FPasOutputImpl.Add( ' if Assigned(OnClickListener) then OnClickListener(Self);'); + FPasOutputImpl.Add(Format(' if Assigned(%s) then %s();', [FCallbackName, FCallbackName])); FPasOutputImpl.Add( 'end;'); - // Method type and name - FPasOutputMessages.Add(' ' + lIDStart + ':'); - FPasOutputMessages.Add(' begin'); - FPasOutputMessages.Add(' lPascalPointer := vAndroidPipesComm.ReadInt();'); - FPasOutputMessages.Add(' TTextView(lPascalPointer).callOnClickListener();'); - FPasOutputMessages.Add(' vAndroidPipesComm.SendMessage(amkUICommand, ' + lIDFinished + ');'); - FPasOutputMessages.Add(' end;'); + // Pascal Interface + FPasOutputClasses.Add( ' public'); + FPasOutputClasses.Add(Format(' %s: %s;', [FCallbackName, FCallbackTypePas])); + FPasOutputClasses.Add(Format(' procedure %s(%s%sACallback: %s);', [FSetterName, FPascalParams, lSeparator, FCallbackTypePas])); + FPasOutputClasses.Add(Format(' procedure %s();', [FCallerName])); + FPasOutputClasses.Add( ' public'); + + // Pascal Message Reader + FPasOutputMessages.Add( ' ' + FIDStart + ':'); + FPasOutputMessages.Add( ' begin'); + FPasOutputMessages.Add( ' lPascalPointer := vAndroidPipesComm.ReadInt();'); + FPasOutputMessages.Add(Format(' %s(lPascalPointer).%s();', [FClassNamePas, FCallerName])); + FPasOutputMessages.Add( ' vAndroidPipesComm.SendMessage(amkUICommand, ' + FIDFinished + ');'); + FPasOutputMessages.Add( ' end;'); { amkUI_MenuItem_setOnMenuItemClickListener_Start: begin lInt := ReadInt(); @@ -766,36 +776,35 @@ begin end; end;} - // ----------------------------------------------- // Now Java: // ----------------------------------------------- - lJavaParamSelf := 'param_self_' + FClassName; - FJavaOutputMethods.Add( ' // ' + ASourceLine); - FJavaOutputMethods.Add( ' case ' + lIDSetter + ':'); - FJavaOutputMethods.Add( ' DebugOut("' + lIDSetter + '");'); - FJavaOutputMethods.Add( ' // Self'); - FJavaOutputMethods.Add( ' lInt = MyAndroidPipesComm.GetInt();'); - FJavaOutputMethods.Add( ' ' + lJavaParamSelf + ' = (' + FClassName + ') ViewElements.get(lInt);'); - FJavaOutputMethods.Add( ' lPascalPointer = MyAndroidPipesComm.GetInt();'); - FJavaOutputMethods.Add(Format(' %s.setTag(Integer.valueOf(lPascalPointer));', [lJavaParamSelf])); - FJavaOutputMethods.Add( ''); + lJavaCallbackIndex := FCallbackTypesJavaName.IndexOf(FCallbackTypeJava); + lJavaCallbackParams := FCallbackTypesParams.Strings[lJavaCallbackIndex]; + lJavaCallbackInnerName := FCallbackTypesInnerName.Strings[lJavaCallbackIndex]; + lFirstCallbackParam := FCallbackTypesFirstParam.Strings[lJavaCallbackIndex]; + + lHugeParamList := TStringList.Create; + lHugeParamList.Add(Format(' new %s()', [FCallbackTypeJava])); + lHugeParamList.Add( ' {'); + lHugeParamList.Add(Format(' public void %s(%s)', [lJavaCallbackInnerName, lJavaCallbackParams])); + lHugeParamList.Add( ' {'); + lHugeParamList.Add( ' // Perform action'); + lHugeParamList.Add(Format(' DebugOut("START %s");', [FCallbackTypeJava])); + lHugeParamList.Add(Format(' MyAndroidPipesComm.SendMessage(AndroidPipesComm.amkUICommand, %s);', [FIDStart])); + lHugeParamList.Add(Format(' Integer lTag = (Integer) ViewElementsTags.get(ViewElements.indexOf(%s));', [lFirstCallbackParam])); + //FJavaOutputMethods.Add( ' Integer lTag = (Integer) v.getTag();'); + lHugeParamList.Add( ' MyAndroidPipesComm.SendInt(lTag.intValue());'); + lHugeParamList.Add(Format(' MyAndroidPipesComm.WaitForPascalMessage(AndroidPipesComm.amkUICommand, %s);', [FIDFinished])); + lHugeParamList.Add(Format(' DebugOut("END %s");', [FCallbackTypeJava])); + lHugeParamList.Add( ' }'); + lHugeParamList.Add( ' }'); + lHugeParamListText := StringReplace(FJavaParams, '$', lHugeParamList.Text, []); + lHugeParamList.Free; + FJavaOutputMethods.Add( ' // Run the code'); - FJavaOutputMethods.Add(Format(' %s.setOnClickListener(', [lJavaParamSelf])); - FJavaOutputMethods.Add(Format(' new View.OnClickListener()', [])); - FJavaOutputMethods.Add( ' {'); - FJavaOutputMethods.Add( ' public void onClick(View v)'); - FJavaOutputMethods.Add( ' {'); - FJavaOutputMethods.Add( ' // Perform action'); - FJavaOutputMethods.Add( ' DebugOut("START TextView OnClickListener");'); - FJavaOutputMethods.Add(Format(' MyAndroidPipesComm.SendMessage(AndroidPipesComm.amkUICommand, %s);', [lIDStart])); - FJavaOutputMethods.Add( ' Integer lTag = (Integer) v.getTag();'); - FJavaOutputMethods.Add( ' MyAndroidPipesComm.SendInt(lTag.intValue());'); - FJavaOutputMethods.Add(Format(' MyAndroidPipesComm.WaitForPascalMessage(AndroidPipesComm.amkUICommand, %s);', [lIDFinished])); - FJavaOutputMethods.Add( ' DebugOut("END TextView OnClickListener");'); - FJavaOutputMethods.Add( ' }'); - FJavaOutputMethods.Add( ' });'); + FJavaOutputMethods.Add(Format(' %s.%s(%s);', [FJavaParamSelf, FMethodName, lHugeParamListText])); FJavaOutputMethods.Add( ' MyAndroidPipesComm.SendResult();'); FJavaOutputMethods.Add( ' break;'); (* case amkUI_TextView_setOnClickListener: @@ -833,22 +842,40 @@ var lReaderPos: Integer = 1; lCurWord: string; lStr, lCallbackDeclaration, lPascalType: String; + lJavaName, lJavaParams, lFirstParam: String; begin if ASourceLine = '' then Exit; lStr := GetNextWord(ASourceLine, lReaderPos); lStr := GetNextWord(ASourceLine, lReaderPos); + lJavaName := lStr; lPascalType := GetPascalTypeName(lStr); ProcessMethodReturnValue(ASourceLine, lReaderPos); ProcessMethodName(ASourceLine, lReaderPos); + lJavaParams := Copy(ASourceLine, lReaderPos, Length(ASourceLine)); + lJavaParams := Trim(lJavaParams); + lJavaParams := Copy(lJavaParams, 2, Length(lJavaParams)-2); + ProcessMethodParameters(ASourceLine, lReaderPos, False); + // Correct code, but at the moment too complex + + {$IFDEF CORRECT_TYPES} if FDeclarationIsFunction then FPasOutputTypes.Add(Format(' %s = %s (%s): %s of object;', [lPascalType, FDeclarationBase, FPascalParams, FMethodReturnPas])) else FPasOutputTypes.Add(Format(' %s = %s (%s) of object;', [lPascalType, FDeclarationBase, FPascalParams])); + {$ELSE} + FPasOutputTypes.Add(Format(' %s = procedure () of object;', [lPascalType, FDeclarationBase, FPascalParams])); + {$ENDIF} + + // Also add to the lists + FCallbackTypesJavaName.Add(lJavaName); + FCallbackTypesParams.Add(lJavaParams); + FCallbackTypesInnerName.Add(FMethodName); + FCallbackTypesFirstParam.Add(FFirstParam); end; procedure TAndroidSDKBindingsGen.ProcessMethodReturnValue(ASourceLine: string; @@ -878,6 +905,65 @@ begin FMethodName := GetNextWord(ASourceLine, lReaderPos); end; +procedure TAndroidSDKBindingsGen.ProcessMethodPreface(ASourceLine: string; AIsCallback: Boolean); +begin + FIDString := GetIDString(FMethodName); + // Lists of constants for the IDs + + if not AIsCallback then AddOutputIDs(FIDString) + else + begin + FSetterName := FMethodName; + FIDSetter := GetIDString(FSetterName); + FCallbackName := Copy(FSetterName, 4, Length(FSetterName)); // remove the "set" from the setter name + FCallerName := 'call' + FCallbackName; + AddOutputIDs(FIDSetter); + Inc(FMethodNum); + FIDStart := GetIDString(FCallbackName + '_Start'); + AddOutputIDs(FIDStart); + Inc(FMethodNum); + FIDFinished := GetIDString(FCallbackName + '_Finished'); + AddOutputIDs(FIDFinished); + Inc(FMethodNum); + end; + + // Pascal implementation start, without method title + FPasOutputImplCurLine := FPasOutputImpl.Count; + FPasOutputImpl.Add( 'begin'); + if AIsCallback then + FPasOutputImpl.Add(Format(' %s := ACallback;', [FCallbackName])); + FPasOutputImpl.Add( ' vAndroidPipesComm.SendByte(ShortInt(amkUICommand));'); + FPasOutputImpl.Add( ' vAndroidPipesComm.SendInt(' + FIDSetter + ');'); + if not FIsGlobalObject then + FPasOutputImpl.Add( ' vAndroidPipesComm.SendInt(Index); // Self, Java Index'); + if AIsCallback then + FPasOutputImpl.Add( ' vAndroidPipesComm.SendInt(PtrInt(Self)); // Self, Pascal pointer'); + + // Java implementation + FJavaParamSelf := 'param_self_' + JavaRemoveGeneric(ConvertPointToUnderline(FClassName)); + FJavaOutputMethods.Add(Format(' // %s', [ASourceLine])); + FJavaOutputMethods.Add(Format(' case %s:', [FIDString])); + FJavaOutputMethods.Add(Format(' DebugOut("%s");', [FIDString])); + if not FIsGlobalObject then + begin + FJavaOutputMethods.Add( ' // Self'); + FJavaOutputMethods.Add( ' lInt = MyAndroidPipesComm.GetInt();'); + FJavaOutputMethods.Add(Format(' %s = (%s) ViewElements.get(lInt);', [FJavaParamSelf, FClassName])); + end + else + FJavaParamSelf := FGlobalObject; + + FJavaOutputMethods.Add(' // params'); + + if AIsCallback then + begin + FJavaOutputMethods.Add( ' lPascalPointer = MyAndroidPipesComm.GetInt();'); + FJavaOutputMethods.Add(Format(' ViewElementsTags.set(lInt, new Integer(lPascalPointer));', [fJavaParamSelf])); + //FJavaOutputMethods.Add(Format(' %s.setTag(Integer.valueOf(lPascalPointer));', [lJavaParamSelf])); + FJavaOutputMethods.Add( ''); + end; +end; + // callbacksetter void setOnClickListener($View.OnClickListener l) // $ indicates that this parameter should be skipped procedure TAndroidSDKBindingsGen.ProcessMethodParameters(ASourceLine: string; @@ -889,12 +975,14 @@ var lParamTypePas, lParamName, lParamPrefix: String; lJavaParams, lJavaParamVar: String; StringParamCount: Integer = 0; + i: Integer; begin // Add all parameters TmpStr := ''; lJavaParams := ''; FHasStringParam := False; FCallbackTypePas := ''; + FFirstParam := ''; repeat lParamType := GetNextWord(ASourceLine, lReaderPos); @@ -909,10 +997,11 @@ begin Continue; end; - // Parameter to skip because it is a callback name, just write $, + // Parameter to skip because it is a callback name, just write "$, " to the Java Params if lParamType[1] = '$' then begin - TmpStr := TmpStr + '$, '; + lJavaParams := lJavaParams + '$, '; + FCallbackTypeJava := StringReplace(lParamType, '$', '', [rfReplaceAll]); FCallbackTypePas := GetPascalTypeName(lParamType); FCallbackTypePas := StringReplace(FCallbackTypePas, '$', '', [rfReplaceAll]); lParamType := GetNextWord(ASourceLine, lReaderPos); @@ -921,6 +1010,7 @@ begin lParamTypePas := GetPascalTypeName(lParamType); lParamName := GetNextWord(ASourceLine, lReaderPos); + if FFirstParam = '' then FFirstParam := lParamName; if PassByReference(lParamType) then lParamPrefix := 'var ' else lParamPrefix := ''; @@ -961,6 +1051,21 @@ begin FPascalParams := TmpStr; // And for Java params too FJavaParams := System.Copy(lJavaParams, 0, Length(lJavaParams)-2); + + // Insert the start + //FPasOutputClasses.Add(' ' + DeclarationBase + TmpStr + lPascalMethodModifiers); + //FPasOutputImpl.Insert(FPasOutputImplCurLine, DeclarationBase + FClassNamePas + '.' + TmpStr); + if FHasStringParam then + begin + FPasOutputImpl.Insert(FPasOutputImplCurLine, 'var'); + for i := 1 to StringParamCount do + begin + FPasOutputImpl.Insert(FPasOutputImplCurLine+i, Format(' lString_%d: TString;', [i])); + FPasOutputImpl.Add(Format(' lString_%d.Free;', [i])); + end; + end; + //FPasOutputImpl.Add('end;'); + //FPasOutputImpl.Add(''); end; { Reads one word in a string, starting at AStartPos (1-based index) @@ -1114,6 +1219,11 @@ begin FJavaOutputIDs := TStringList.Create; FJavaOutputMethods := TStringList.Create; + FCallbackTypesJavaName := TStringList.Create; + FCallbackTypesParams := TStringList.Create; + FCallbackTypesInnerName := TStringList.Create; + FCallbackTypesFirstParam := TStringList.Create; + FClassNum := $100; end; @@ -1134,6 +1244,11 @@ begin FJavaOutputIDs.Free; FJavaOutputMethods.Free; + FCallbackTypesJavaName.Free; + FCallbackTypesParams.Free; + FCallbackTypesInnerName.Free; + FCallbackTypesFirstParam.Free; + inherited Destroy; end; diff --git a/bindings/android-sdk/sdk_level_7/android_all.txt b/bindings/android-sdk/sdk_level_7/android_all.txt index 3400ad3ed..876b35074 100644 --- a/bindings/android-sdk/sdk_level_7/android_all.txt +++ b/bindings/android-sdk/sdk_level_7/android_all.txt @@ -50,12 +50,116 @@ method void getMetrics(DisplayMetrics outMetrics) method Display getDefaultDisplay() [Dialog] TJavaObject +#void addContentView(View view, ViewGroup.LayoutParams params) +#void cancel() +#void closeOptionsMenu() +#void dismiss() +#boolean dispatchGenericMotionEvent(MotionEvent ev) +#boolean dispatchKeyEvent(KeyEvent event) +#boolean dispatchKeyShortcutEvent(KeyEvent event) +#boolean dispatchPopulateAccessibilityEvent(AccessibilityEvent event) +#boolean dispatchTouchEvent(MotionEvent ev) +#boolean dispatchTrackballEvent(MotionEvent ev) +#View findViewById(int id) +#ActionBar getActionBar() +#final Context getContext() +#View getCurrentFocus() +#LayoutInflater getLayoutInflater() +#final Activity getOwnerActivity() +#final int getVolumeControlStream() +#Window getWindow() +#void hide() +#void invalidateOptionsMenu() +#boolean isShowing() +#void onActionModeFinished(ActionMode mode) +#void onActionModeStarted(ActionMode mode) +#void onAttachedToWindow() +#void onBackPressed() +#void onContentChanged() +#boolean onContextItemSelected(MenuItem item) +#void onContextMenuClosed(Menu menu) +#void onCreateContextMenu(ContextMenu menu, View v, ContextMenu.ContextMenuInfo menuInfo) +#boolean onCreateOptionsMenu(Menu menu) +#boolean onCreatePanelMenu(int featureId, Menu menu) +#View onCreatePanelView(int featureId) +#void onDetachedFromWindow() +#boolean onGenericMotionEvent(MotionEvent event) +#boolean onKeyDown(int keyCode, KeyEvent event) +#boolean onKeyLongPress(int keyCode, KeyEvent event) +#boolean onKeyMultiple(int keyCode, int repeatCount, KeyEvent event) +#boolean onKeyShortcut(int keyCode, KeyEvent event) +#boolean onKeyUp(int keyCode, KeyEvent event) +#boolean onMenuItemSelected(int featureId, MenuItem item) +#boolean onMenuOpened(int featureId, Menu menu) +#boolean onOptionsItemSelected(MenuItem item) +#void onOptionsMenuClosed(Menu menu) +#void onPanelClosed(int featureId, Menu menu) +#boolean onPrepareOptionsMenu(Menu menu) +#boolean onPreparePanel(int featureId, View view, Menu menu) +#void onRestoreInstanceState(Bundle savedInstanceState) +#Bundle onSaveInstanceState() +#boolean onSearchRequested() +#boolean onTouchEvent(MotionEvent event) +#boolean onTrackballEvent(MotionEvent event) +#void onWindowAttributesChanged(WindowManager.LayoutParams params) +#void onWindowFocusChanged(boolean hasFocus) +#ActionMode onWindowStartingActionMode(ActionMode.Callback callback) +#void openContextMenu(View view) +#void openOptionsMenu() +#void registerForContextMenu(View view) +#final boolean requestWindowFeature(int featureId) +#void setCancelMessage(Message msg) +#void setCancelable(boolean flag) +#void setCanceledOnTouchOutside(boolean cancel) +#void setContentView(View view) +#void setContentView(int layoutResID) +#void setContentView(View view, ViewGroup.LayoutParams params) +#void setDismissMessage(Message msg) +#final void setFeatureDrawable(int featureId, Drawable drawable) +#final void setFeatureDrawableAlpha(int featureId, int alpha) +#final void setFeatureDrawableResource(int featureId, int resId) +#final void setFeatureDrawableUri(int featureId, Uri uri) +#void setOnCancelListener(DialogInterface.OnCancelListener listener) +#void setOnDismissListener(DialogInterface.OnDismissListener listener) +#void setOnKeyListener(DialogInterface.OnKeyListener onKeyListener) +#void setOnShowListener(DialogInterface.OnShowListener listener) +#final void setOwnerActivity(Activity activity) +#void setTitle(int titleId) +#void setTitle(CharSequence title) +#final void setVolumeControlStream(int streamType) +method void show() +#void takeKeyEvents(boolean get) +#void unregisterForContextMenu(View view) [AlertDialog] Dialog +const THEME_HOLO_DARK = $00000002; +const THEME_HOLO_LIGHT = $00000003; +const THEME_TRADITIONAL = $00000001; +# Button getButton(int whichButton) +# ListView getListView() +# boolean onKeyDown(int keyCode, KeyEvent event) +# boolean onKeyUp(int keyCode, KeyEvent event) +# void setButton(CharSequence text, Message msg) +callbacksetter void setButton(int whichButton, CharSequence text, $DialogInterface.OnClickListener listener) +# void setButton(CharSequence text, DialogInterface.OnClickListener listener) +# void setButton(int whichButton, CharSequence text, Message msg) +# void setButton2(CharSequence text, DialogInterface.OnClickListener listener) +# void setButton2(CharSequence text, Message msg) +# void setButton3(CharSequence text, DialogInterface.OnClickListener listener) +# void setButton3(CharSequence text, Message msg) +# void setCustomTitle(View customTitleView) +#void setIcon(Drawable icon) +#void setIcon(int resId) +#void setIconAttribute(int attrId) +# void setInverseBackgroundForced(boolean forceInverseBackground) +method void setMessage(CharSequence message) +method void setTitle(CharSequence title) +#void setView(View view, int viewSpacingLeft, int viewSpacingTop, int viewSpacingRight, int viewSpacingBottom) +method void setView(View view) [AlertDialog.Builder] TJavaObject constructor Create(Activity) -#public AlertDialog create () +method AlertDialog create () #public Context getContext () #public AlertDialog.Builder setAdapter (ListAdapter adapter, DialogInterface.OnClickListener listener) #public AlertDialog.Builder setCancelable (boolean cancelable) @@ -79,7 +183,7 @@ method AlertDialog.Builder setMessage (CharSequence message) #public AlertDialog.Builder setOnKeyListener (DialogInterface.OnKeyListener onKeyListener) #public AlertDialog.Builder setPositiveButton (int textId, DialogInterface.OnClickListener listener) #public AlertDialog.Builder setPositiveButton (CharSequence text, DialogInterface.OnClickListener listener) -# callbacksetter AlertDialog.Builder setPositiveButton (CharSequence text, DialogInterface.OnClickListener $listener) +#callbacksetter AlertDialog.Builder setPositiveButton (CharSequence text, $DialogInterface.OnClickListener listener) #public AlertDialog.Builder setSingleChoiceItems (CharSequence[] items, int checkedItem, DialogInterface.OnClickListener listener) #public AlertDialog.Builder setSingleChoiceItems (ListAdapter adapter, int checkedItem, DialogInterface.OnClickListener listener) #public AlertDialog.Builder setSingleChoiceItems (int itemsId, int checkedItem, DialogInterface.OnClickListener listener) diff --git a/examples/androidlcl/android/src/com/pascal/androidlcl/AndroidAll.java b/examples/androidlcl/android/src/com/pascal/androidlcl/AndroidAll.java index 531774619..afde62b34 100644 --- a/examples/androidlcl/android/src/com/pascal/androidlcl/AndroidAll.java +++ b/examples/androidlcl/android/src/com/pascal/androidlcl/AndroidAll.java @@ -19,6 +19,7 @@ public class AndroidAll JavaLang MyJavaLang; // lists of variables ArrayList ViewElements; + ArrayList ViewElementsTags; public AndroidAll(AndroidPipesComm AAndroidPipesComm, Activity AActivity, JavaLang AJavaLang) { @@ -26,6 +27,7 @@ public class AndroidAll MyAndroidPipesComm = AAndroidPipesComm; MyJavaLang = AJavaLang; ViewElements = new ArrayList(); + ViewElementsTags = new ArrayList(); } public void DebugOut(String Str) @@ -42,88 +44,97 @@ public class AndroidAll static final int amkUI_TDisplayMetrics_widthPixels_5 = 0x00101005; static final int amkUI_TDisplayMetrics_xdpi_6 = 0x00101006; static final int amkUI_TDisplayMetrics_ydpi_7 = 0x00101007; + // DialogInterface // Activity - static final int amkUI_TActivity_setTitle_0 = 0x00102000; - static final int amkUI_TActivity_getTitle_1 = 0x00102001; + static final int amkUI_TActivity_setTitle_0 = 0x00103000; + static final int amkUI_TActivity_getTitle_1 = 0x00103001; // Display - static final int amkUI_TDisplay_getMetrics_0 = 0x00103000; + static final int amkUI_TDisplay_getMetrics_0 = 0x00104000; // WindowManager - static final int amkUI_TWindowManager_getDefaultDisplay_0 = 0x00104000; + static final int amkUI_TWindowManager_getDefaultDisplay_0 = 0x00105000; // Dialog + static final int amkUI_TDialog_show_0 = 0x00106000; // AlertDialog + static final int amkUI_TAlertDialog_setButton_0 = 0x00107000; + static final int amkUI_TAlertDialog_Button_Start_1 = 0x00107001; + static final int amkUI_TAlertDialog_Button_Finished_2 = 0x00107002; + static final int amkUI_TAlertDialog_setMessage_3 = 0x00107003; + static final int amkUI_TAlertDialog_setTitle_4 = 0x00107004; + static final int amkUI_TAlertDialog_setView_5 = 0x00107005; // AlertDialog.Builder - static final int amkUI_TAlertDialog_Builder_Create_0 = 0x00107000; - static final int amkUI_TAlertDialog_Builder_setMessage_1 = 0x00107001; - static final int amkUI_TAlertDialog_Builder_setTitle_2 = 0x00107002; - static final int amkUI_TAlertDialog_Builder_setView_3 = 0x00107003; - static final int amkUI_TAlertDialog_Builder_show_4 = 0x00107004; + static final int amkUI_TAlertDialog_Builder_Create_0 = 0x00108000; + static final int amkUI_TAlertDialog_Builder_create_1 = 0x00108001; + static final int amkUI_TAlertDialog_Builder_setMessage_2 = 0x00108002; + static final int amkUI_TAlertDialog_Builder_setTitle_3 = 0x00108003; + static final int amkUI_TAlertDialog_Builder_setView_4 = 0x00108004; + static final int amkUI_TAlertDialog_Builder_show_5 = 0x00108005; // ViewGroup.LayoutParams - static final int amkUI_TViewGroup_LayoutParams_Create_0 = 0x00108000; + static final int amkUI_TViewGroup_LayoutParams_Create_0 = 0x00109000; // View - static final int amkUI_TView_setLayoutParams_0 = 0x00109000; - static final int amkUI_TView_setVisibility_1 = 0x00109001; + static final int amkUI_TView_setLayoutParams_0 = 0x0010A000; + static final int amkUI_TView_setVisibility_1 = 0x0010A001; // ViewGroup - static final int amkUI_TViewGroup_addView_0 = 0x0010A000; - static final int amkUI_TViewGroup_addView_1 = 0x0010A001; - static final int amkUI_TViewGroup_addView_2 = 0x0010A002; - static final int amkUI_TViewGroup_addView_3 = 0x0010A003; - static final int amkUI_TViewGroup_addView_4 = 0x0010A004; + static final int amkUI_TViewGroup_addView_0 = 0x0010B000; + static final int amkUI_TViewGroup_addView_1 = 0x0010B001; + static final int amkUI_TViewGroup_addView_2 = 0x0010B002; + static final int amkUI_TViewGroup_addView_3 = 0x0010B003; + static final int amkUI_TViewGroup_addView_4 = 0x0010B004; // LinearLayout - static final int amkUI_TLinearLayout_Create_0 = 0x0010B000; - static final int amkUI_TLinearLayout_setOrientation_1 = 0x0010B001; + static final int amkUI_TLinearLayout_Create_0 = 0x0010C000; + static final int amkUI_TLinearLayout_setOrientation_1 = 0x0010C001; // AbsoluteLayout - static final int amkUI_TAbsoluteLayout_Create_0 = 0x0010C000; + static final int amkUI_TAbsoluteLayout_Create_0 = 0x0010D000; // AbsoluteLayout.LayoutParams - static final int amkUI_TAbsoluteLayout_LayoutParams_Create_0 = 0x0010D000; + static final int amkUI_TAbsoluteLayout_LayoutParams_Create_0 = 0x0010E000; // TextView - static final int amkUI_TTextView_Create_0 = 0x0010E000; - static final int amkUI_TTextView_setText_1 = 0x0010E001; - static final int amkUI_TTextView_setOnClickListener_2 = 0x0010E002; - static final int amkUI_TTextView_OnClickListener_Start_3 = 0x0010E003; - static final int amkUI_TTextView_OnClickListener_Finished_4 = 0x0010E004; - static final int amkUI_TTextView_setTextSize_5 = 0x0010E005; - static final int amkUI_TTextView_getText_6 = 0x0010E006; + static final int amkUI_TTextView_Create_0 = 0x0010F000; + static final int amkUI_TTextView_setText_1 = 0x0010F001; + static final int amkUI_TTextView_setOnClickListener_2 = 0x0010F002; + static final int amkUI_TTextView_OnClickListener_Start_3 = 0x0010F003; + static final int amkUI_TTextView_OnClickListener_Finished_4 = 0x0010F004; + static final int amkUI_TTextView_setTextSize_5 = 0x0010F005; + static final int amkUI_TTextView_getText_6 = 0x0010F006; // EditText - static final int amkUI_TEditText_Create_0 = 0x0010F000; + static final int amkUI_TEditText_Create_0 = 0x00110000; // Button - static final int amkUI_TButton_Create_0 = 0x00110000; + static final int amkUI_TButton_Create_0 = 0x00111000; // FrameLayout // TimePicker - static final int amkUI_TTimePicker_Create_0 = 0x00112000; - static final int amkUI_TTimePicker_getCurrentHour_1 = 0x00112001; - static final int amkUI_TTimePicker_setCurrentHour_2 = 0x00112002; - static final int amkUI_TTimePicker_getCurrentMinute_3 = 0x00112003; - static final int amkUI_TTimePicker_setCurrentMinute_4 = 0x00112004; - static final int amkUI_TTimePicker_is24HourView_5 = 0x00112005; - static final int amkUI_TTimePicker_setIs24HourView_6 = 0x00112006; + static final int amkUI_TTimePicker_Create_0 = 0x00113000; + static final int amkUI_TTimePicker_getCurrentHour_1 = 0x00113001; + static final int amkUI_TTimePicker_setCurrentHour_2 = 0x00113002; + static final int amkUI_TTimePicker_getCurrentMinute_3 = 0x00113003; + static final int amkUI_TTimePicker_setCurrentMinute_4 = 0x00113004; + static final int amkUI_TTimePicker_is24HourView_5 = 0x00113005; + static final int amkUI_TTimePicker_setIs24HourView_6 = 0x00113006; // ScrollView - static final int amkUI_TScrollView_Create_0 = 0x00113000; + static final int amkUI_TScrollView_Create_0 = 0x00114000; // CompoundButton - static final int amkUI_TCompoundButton_isChecked_0 = 0x00114000; - static final int amkUI_TCompoundButton_performClick_1 = 0x00114001; - static final int amkUI_TCompoundButton_setChecked_2 = 0x00114002; - static final int amkUI_TCompoundButton_toggle_3 = 0x00114003; + static final int amkUI_TCompoundButton_isChecked_0 = 0x00115000; + static final int amkUI_TCompoundButton_performClick_1 = 0x00115001; + static final int amkUI_TCompoundButton_setChecked_2 = 0x00115002; + static final int amkUI_TCompoundButton_toggle_3 = 0x00115003; // CheckBox - static final int amkUI_TCheckBox_Create_0 = 0x00115000; + static final int amkUI_TCheckBox_Create_0 = 0x00116000; // AdapterView - static final int amkUI_TAdapterView_getSelectedItemPosition_0 = 0x00116000; + static final int amkUI_TAdapterView_getSelectedItemPosition_0 = 0x00117000; // AbsSpinner - static final int amkUI_TAbsSpinner_getCount_0 = 0x00117000; - static final int amkUI_TAbsSpinner_setAdapter_1 = 0x00117001; - static final int amkUI_TAbsSpinner_setSelection_2 = 0x00117002; + static final int amkUI_TAbsSpinner_getCount_0 = 0x00118000; + static final int amkUI_TAbsSpinner_setAdapter_1 = 0x00118001; + static final int amkUI_TAbsSpinner_setSelection_2 = 0x00118002; // Spinner - static final int amkUI_TSpinner_Create_0 = 0x00118000; + static final int amkUI_TSpinner_Create_0 = 0x00119000; // Filterable // Adapter // ListAdapter // SpinnerAdapter // BaseAdapter // ArrayAdapter - static final int amkUI_TArrayAdapter_String__Create_0 = 0x0011E000; - static final int amkUI_TArrayAdapter_String__add_1 = 0x0011E001; - static final int amkUI_TArrayAdapter_String__clear_2 = 0x0011E002; - static final int amkUI_TArrayAdapter_String__insert_3 = 0x0011E003; - static final int amkUI_TArrayAdapter_String__remove_4 = 0x0011E004; + static final int amkUI_TArrayAdapter_String__Create_0 = 0x0011F000; + static final int amkUI_TArrayAdapter_String__add_1 = 0x0011F001; + static final int amkUI_TArrayAdapter_String__clear_2 = 0x0011F002; + static final int amkUI_TArrayAdapter_String__insert_3 = 0x0011F003; + static final int amkUI_TArrayAdapter_String__remove_4 = 0x0011F004; // layout public boolean ProcessCommand(int Buffer) @@ -153,13 +164,15 @@ public class AndroidAll ArrayAdapter param_self_ArrayAdapter_String_; AdapterView param_self_AdapterView; AlertDialog.Builder param_self_AlertDialog_Builder; + Dialog param_self_Dialog; + AlertDialog param_self_AlertDialog; // // Params // ViewGroup.LayoutParams lViewGroup_LayoutParams_1, lViewGroup_LayoutParams_2, lViewGroup_LayoutParams_3; SpinnerAdapter lSpinnerAdapter_1; DisplayMetrics lDisplayMetrics_1; - CharSequence lCharSequence_1; + CharSequence lCharSequence_1, lCharSequence_2; String lString_1; View lView_1; int lint_1, lint_2, lint_3, lint_4; @@ -182,6 +195,7 @@ public class AndroidAll case amkUI_TDisplayMetrics_Create_0: DebugOut("amkUI_TDisplayMetrics_Create_0"); ViewElements.add(new DisplayMetrics()); + ViewElementsTags.add(null); MyAndroidPipesComm.SendIntResult(ViewElements.size() - 1); break; // field float density @@ -302,16 +316,112 @@ public class AndroidAll // lResult_Display = param_self_WindowManager.getDefaultDisplay(); ViewElements.add(lResult_Display); + ViewElementsTags.add(null); MyAndroidPipesComm.SendIntResult(ViewElements.size() - 1); break; + // method void show() + case amkUI_TDialog_show_0: + DebugOut("amkUI_TDialog_show_0"); + // Self + lInt = MyAndroidPipesComm.GetInt(); + param_self_Dialog = (Dialog) ViewElements.get(lInt); + // params + // + param_self_Dialog.show(); + MyAndroidPipesComm.SendResult(); + break; + // callbacksetter void setButton(int whichButton, CharSequence text, $DialogInterface.OnClickListener listener) + case amkUI_TAlertDialog_setButton_0: + DebugOut("amkUI_TAlertDialog_setButton_0"); + // Self + lInt = MyAndroidPipesComm.GetInt(); + param_self_AlertDialog = (AlertDialog) ViewElements.get(lInt); + // params + lPascalPointer = MyAndroidPipesComm.GetInt(); + ViewElementsTags.set(lInt, new Integer(lPascalPointer)); + + lInt = MyAndroidPipesComm.GetInt(); + lint_1 = lInt; + lInt = MyAndroidPipesComm.GetInt(); + lCharSequence_2 = (CharSequence) MyJavaLang.LangElements.get(lInt); + // Run the code + param_self_AlertDialog.setButton(lint_1, lCharSequence_2, new DialogInterface.OnClickListener() + { + public void onClick(DialogInterface dialog, int which) + { + // Perform action + DebugOut("START DialogInterface.OnClickListener"); + MyAndroidPipesComm.SendMessage(AndroidPipesComm.amkUICommand, amkUI_TAlertDialog_Button_Start_1); + Integer lTag = (Integer) ViewElementsTags.get(ViewElements.indexOf(dialog)); + MyAndroidPipesComm.SendInt(lTag.intValue()); + MyAndroidPipesComm.WaitForPascalMessage(AndroidPipesComm.amkUICommand, amkUI_TAlertDialog_Button_Finished_2); + DebugOut("END DialogInterface.OnClickListener"); + } + } +); + MyAndroidPipesComm.SendResult(); + break; + // method void setMessage(CharSequence message) + case amkUI_TAlertDialog_setMessage_3: + DebugOut("amkUI_TAlertDialog_setMessage_3"); + // Self + lInt = MyAndroidPipesComm.GetInt(); + param_self_AlertDialog = (AlertDialog) ViewElements.get(lInt); + // params + lInt = MyAndroidPipesComm.GetInt(); + lCharSequence_1 = (CharSequence) MyJavaLang.LangElements.get(lInt); + // + param_self_AlertDialog.setMessage(lCharSequence_1); + MyAndroidPipesComm.SendResult(); + break; + // method void setTitle(CharSequence title) + case amkUI_TAlertDialog_setTitle_4: + DebugOut("amkUI_TAlertDialog_setTitle_4"); + // Self + lInt = MyAndroidPipesComm.GetInt(); + param_self_AlertDialog = (AlertDialog) ViewElements.get(lInt); + // params + lInt = MyAndroidPipesComm.GetInt(); + lCharSequence_1 = (CharSequence) MyJavaLang.LangElements.get(lInt); + // + param_self_AlertDialog.setTitle(lCharSequence_1); + MyAndroidPipesComm.SendResult(); + break; + // method void setView(View view) + case amkUI_TAlertDialog_setView_5: + DebugOut("amkUI_TAlertDialog_setView_5"); + // Self + lInt = MyAndroidPipesComm.GetInt(); + param_self_AlertDialog = (AlertDialog) ViewElements.get(lInt); + // params + lInt = MyAndroidPipesComm.GetInt(); + lView_1 = (View) ViewElements.get(lInt); + // + param_self_AlertDialog.setView(lView_1); + MyAndroidPipesComm.SendResult(); + break; case amkUI_TAlertDialog_Builder_Create_0: DebugOut("amkUI_TAlertDialog_Builder_Create_0"); ViewElements.add(new AlertDialog.Builder(activity)); + ViewElementsTags.add(null); + MyAndroidPipesComm.SendIntResult(ViewElements.size() - 1); + break; + // method AlertDialog create () + case amkUI_TAlertDialog_Builder_create_1: + DebugOut("amkUI_TAlertDialog_Builder_create_1"); + // Self + lInt = MyAndroidPipesComm.GetInt(); + param_self_AlertDialog_Builder = (AlertDialog.Builder) ViewElements.get(lInt); + // params + // + lResult_AlertDialog = param_self_AlertDialog_Builder.create(); + ViewElements.add(lResult_AlertDialog); + ViewElementsTags.add(null); MyAndroidPipesComm.SendIntResult(ViewElements.size() - 1); break; // method AlertDialog.Builder setMessage (CharSequence message) - case amkUI_TAlertDialog_Builder_setMessage_1: - DebugOut("amkUI_TAlertDialog_Builder_setMessage_1"); + case amkUI_TAlertDialog_Builder_setMessage_2: + DebugOut("amkUI_TAlertDialog_Builder_setMessage_2"); // Self lInt = MyAndroidPipesComm.GetInt(); param_self_AlertDialog_Builder = (AlertDialog.Builder) ViewElements.get(lInt); @@ -321,11 +431,12 @@ public class AndroidAll // lResult_AlertDialog_Builder = param_self_AlertDialog_Builder.setMessage(lCharSequence_1); ViewElements.add(lResult_AlertDialog_Builder); + ViewElementsTags.add(null); MyAndroidPipesComm.SendIntResult(ViewElements.size() - 1); break; // method AlertDialog.Builder setTitle (CharSequence title) - case amkUI_TAlertDialog_Builder_setTitle_2: - DebugOut("amkUI_TAlertDialog_Builder_setTitle_2"); + case amkUI_TAlertDialog_Builder_setTitle_3: + DebugOut("amkUI_TAlertDialog_Builder_setTitle_3"); // Self lInt = MyAndroidPipesComm.GetInt(); param_self_AlertDialog_Builder = (AlertDialog.Builder) ViewElements.get(lInt); @@ -335,11 +446,12 @@ public class AndroidAll // lResult_AlertDialog_Builder = param_self_AlertDialog_Builder.setTitle(lCharSequence_1); ViewElements.add(lResult_AlertDialog_Builder); + ViewElementsTags.add(null); MyAndroidPipesComm.SendIntResult(ViewElements.size() - 1); break; // method AlertDialog.Builder setView (View view) - case amkUI_TAlertDialog_Builder_setView_3: - DebugOut("amkUI_TAlertDialog_Builder_setView_3"); + case amkUI_TAlertDialog_Builder_setView_4: + DebugOut("amkUI_TAlertDialog_Builder_setView_4"); // Self lInt = MyAndroidPipesComm.GetInt(); param_self_AlertDialog_Builder = (AlertDialog.Builder) ViewElements.get(lInt); @@ -349,11 +461,12 @@ public class AndroidAll // lResult_AlertDialog_Builder = param_self_AlertDialog_Builder.setView(lView_1); ViewElements.add(lResult_AlertDialog_Builder); + ViewElementsTags.add(null); MyAndroidPipesComm.SendIntResult(ViewElements.size() - 1); break; // method AlertDialog show () - case amkUI_TAlertDialog_Builder_show_4: - DebugOut("amkUI_TAlertDialog_Builder_show_4"); + case amkUI_TAlertDialog_Builder_show_5: + DebugOut("amkUI_TAlertDialog_Builder_show_5"); // Self lInt = MyAndroidPipesComm.GetInt(); param_self_AlertDialog_Builder = (AlertDialog.Builder) ViewElements.get(lInt); @@ -361,6 +474,7 @@ public class AndroidAll // lResult_AlertDialog = param_self_AlertDialog_Builder.show(); ViewElements.add(lResult_AlertDialog); + ViewElementsTags.add(null); MyAndroidPipesComm.SendIntResult(ViewElements.size() - 1); break; case amkUI_TViewGroup_LayoutParams_Create_0: @@ -368,6 +482,7 @@ public class AndroidAll lint_1 = MyAndroidPipesComm.GetInt(); lint_2 = MyAndroidPipesComm.GetInt(); ViewElements.add(new ViewGroup.LayoutParams(lint_1, lint_2)); + ViewElementsTags.add(null); MyAndroidPipesComm.SendIntResult(ViewElements.size() - 1); break; // method void setLayoutParams(ViewGroup.LayoutParams params); @@ -476,6 +591,7 @@ public class AndroidAll case amkUI_TLinearLayout_Create_0: DebugOut("amkUI_TLinearLayout_Create_0"); ViewElements.add(new LinearLayout(activity)); + ViewElementsTags.add(null); MyAndroidPipesComm.SendIntResult(ViewElements.size() - 1); break; // method void setOrientation(int orientation); @@ -494,6 +610,7 @@ public class AndroidAll case amkUI_TAbsoluteLayout_Create_0: DebugOut("amkUI_TAbsoluteLayout_Create_0"); ViewElements.add(new AbsoluteLayout(activity)); + ViewElementsTags.add(null); MyAndroidPipesComm.SendIntResult(ViewElements.size() - 1); break; case amkUI_TAbsoluteLayout_LayoutParams_Create_0: @@ -503,11 +620,13 @@ public class AndroidAll lint_3 = MyAndroidPipesComm.GetInt(); lint_4 = MyAndroidPipesComm.GetInt(); ViewElements.add(new AbsoluteLayout.LayoutParams(lint_1, lint_2, lint_3, lint_4)); + ViewElementsTags.add(null); MyAndroidPipesComm.SendIntResult(ViewElements.size() - 1); break; case amkUI_TTextView_Create_0: DebugOut("amkUI_TTextView_Create_0"); ViewElements.add(new TextView(activity)); + ViewElementsTags.add(null); MyAndroidPipesComm.SendIntResult(ViewElements.size() - 1); break; // method void setText(CharSequence AText); virtual; @@ -523,30 +642,31 @@ public class AndroidAll param_self_TextView.setText(lCharSequence_1); MyAndroidPipesComm.SendResult(); break; - // callbacksettercaller setOnClickListener callOnClickListener OnClickListener = procedure (v: TView) of object; + // callbacksetter void setOnClickListener($View.OnClickListener l) case amkUI_TTextView_setOnClickListener_2: DebugOut("amkUI_TTextView_setOnClickListener_2"); // Self lInt = MyAndroidPipesComm.GetInt(); param_self_TextView = (TextView) ViewElements.get(lInt); + // params lPascalPointer = MyAndroidPipesComm.GetInt(); - param_self_TextView.setTag(Integer.valueOf(lPascalPointer)); + ViewElementsTags.set(lInt, new Integer(lPascalPointer)); // Run the code - param_self_TextView.setOnClickListener( - new View.OnClickListener() + param_self_TextView.setOnClickListener( new View.OnClickListener() { public void onClick(View v) { // Perform action - DebugOut("START TextView OnClickListener"); + DebugOut("START View.OnClickListener"); MyAndroidPipesComm.SendMessage(AndroidPipesComm.amkUICommand, amkUI_TTextView_OnClickListener_Start_3); - Integer lTag = (Integer) v.getTag(); + Integer lTag = (Integer) ViewElementsTags.get(ViewElements.indexOf(v)); MyAndroidPipesComm.SendInt(lTag.intValue()); MyAndroidPipesComm.WaitForPascalMessage(AndroidPipesComm.amkUICommand, amkUI_TTextView_OnClickListener_Finished_4); - DebugOut("END TextView OnClickListener"); + DebugOut("END View.OnClickListener"); } - }); + } +); MyAndroidPipesComm.SendResult(); break; // method void setTextSize(int unit_; float size); @@ -578,16 +698,19 @@ public class AndroidAll case amkUI_TEditText_Create_0: DebugOut("amkUI_TEditText_Create_0"); ViewElements.add(new EditText(activity)); + ViewElementsTags.add(null); MyAndroidPipesComm.SendIntResult(ViewElements.size() - 1); break; case amkUI_TButton_Create_0: DebugOut("amkUI_TButton_Create_0"); ViewElements.add(new Button(activity)); + ViewElementsTags.add(null); MyAndroidPipesComm.SendIntResult(ViewElements.size() - 1); break; case amkUI_TTimePicker_Create_0: DebugOut("amkUI_TTimePicker_Create_0"); ViewElements.add(new TimePicker(activity)); + ViewElementsTags.add(null); MyAndroidPipesComm.SendIntResult(ViewElements.size() - 1); break; // method int getCurrentHour(); @@ -665,6 +788,7 @@ public class AndroidAll case amkUI_TScrollView_Create_0: DebugOut("amkUI_TScrollView_Create_0"); ViewElements.add(new ScrollView(activity)); + ViewElementsTags.add(null); MyAndroidPipesComm.SendIntResult(ViewElements.size() - 1); break; // method boolean isChecked() @@ -716,6 +840,7 @@ public class AndroidAll case amkUI_TCheckBox_Create_0: DebugOut("amkUI_TCheckBox_Create_0"); ViewElements.add(new CheckBox(activity)); + ViewElementsTags.add(null); MyAndroidPipesComm.SendIntResult(ViewElements.size() - 1); break; // method int getSelectedItemPosition() @@ -769,12 +894,14 @@ public class AndroidAll case amkUI_TSpinner_Create_0: DebugOut("amkUI_TSpinner_Create_0"); ViewElements.add(new Spinner(activity)); + ViewElementsTags.add(null); MyAndroidPipesComm.SendIntResult(ViewElements.size() - 1); break; case amkUI_TArrayAdapter_String__Create_0: DebugOut("amkUI_TArrayAdapter_String__Create_0"); lint_1 = MyAndroidPipesComm.GetInt(); ViewElements.add(new ArrayAdapter(activity, lint_1)); + ViewElementsTags.add(null); MyAndroidPipesComm.SendIntResult(ViewElements.size() - 1); break; // method void add(String aobject)