Skip to content

Commit

Permalink
Merge pull request #353 from transoceanic/patch-1
Browse files Browse the repository at this point in the history
Add support for right to left direction languages
  • Loading branch information
purplecabbage committed Mar 6, 2019
2 parents c95dbcb + ba3a440 commit 7b16ee8
Showing 1 changed file with 17 additions and 10 deletions.
27 changes: 17 additions & 10 deletions src/android/InAppBrowser.java
Original file line number Diff line number Diff line change
Expand Up @@ -85,6 +85,8 @@ Licensed to the Apache Software Foundation (ASF) under one
import java.util.HashMap;
import java.util.StringTokenizer;

import android.content.res.Configuration;

@SuppressLint("SetJavaScriptEnabled")
public class InAppBrowser extends CordovaPlugin {

Expand Down Expand Up @@ -745,8 +747,10 @@ private View createCloseButton(int id){
_close = close;
}

Configuration config = activityRes.getConfiguration();
boolean isLeftToRight = config.getLayoutDirection() == View.LAYOUT_DIRECTION_LTR;
RelativeLayout.LayoutParams closeLayoutParams = new RelativeLayout.LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.MATCH_PARENT);
closeLayoutParams.addRule(RelativeLayout.ALIGN_PARENT_RIGHT);
closeLayoutParams.addRule(isLeftToRight ? RelativeLayout.ALIGN_PARENT_RIGHT : RelativeLayout.ALIGN_PARENT_LEFT);
_close.setLayoutParams(closeLayoutParams);

if (Build.VERSION.SDK_INT >= 16)
Expand All @@ -773,6 +777,9 @@ public void run() {
dialog.dismiss();
};

Configuration config = cordova.getActivity().getResources().getConfiguration();
boolean isLeftToRight = config.getLayoutDirection() == View.LAYOUT_DIRECTION_LTR;

// Let's create the main dialog
dialog = new InAppBrowserDialog(cordova.getActivity(), android.R.style.Theme_NoTitleBar);
dialog.getWindow().getAttributes().windowAnimations = android.R.style.Animation_Dialog;
Expand All @@ -790,25 +797,25 @@ public void run() {
toolbar.setBackgroundColor(toolbarColor);
toolbar.setLayoutParams(new RelativeLayout.LayoutParams(LayoutParams.MATCH_PARENT, this.dpToPixels(44)));
toolbar.setPadding(this.dpToPixels(2), this.dpToPixels(2), this.dpToPixels(2), this.dpToPixels(2));
toolbar.setHorizontalGravity(Gravity.LEFT);
toolbar.setHorizontalGravity(isLeftToRight ? Gravity.LEFT : Gravity.RIGHT);
toolbar.setVerticalGravity(Gravity.TOP);

// Action Button Container layout
RelativeLayout actionButtonContainer = new RelativeLayout(cordova.getActivity());
actionButtonContainer.setLayoutParams(new RelativeLayout.LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT));
actionButtonContainer.setHorizontalGravity(Gravity.LEFT);
actionButtonContainer.setHorizontalGravity(isLeftToRight ? Gravity.LEFT : Gravity.RIGHT);
actionButtonContainer.setVerticalGravity(Gravity.CENTER_VERTICAL);
actionButtonContainer.setId(Integer.valueOf(1));

// Back button
ImageButton back = new ImageButton(cordova.getActivity());
RelativeLayout.LayoutParams backLayoutParams = new RelativeLayout.LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.MATCH_PARENT);
backLayoutParams.addRule(RelativeLayout.ALIGN_LEFT);
backLayoutParams.addRule(isLeftToRight ? RelativeLayout.ALIGN_LEFT : RelativeLayout.ALIGN_RIGHT);
back.setLayoutParams(backLayoutParams);
back.setContentDescription("Back Button");
back.setId(Integer.valueOf(2));
Resources activityRes = cordova.getActivity().getResources();
int backResId = activityRes.getIdentifier("ic_action_previous_item", "drawable", cordova.getActivity().getPackageName());
int backResId = activityRes.getIdentifier(isLeftToRight ? "ic_action_previous_item" : "ic_action_next_item", "drawable", cordova.getActivity().getPackageName());
Drawable backIcon = activityRes.getDrawable(backResId);
if (navigationButtonColor != "") back.setColorFilter(android.graphics.Color.parseColor(navigationButtonColor));
if (Build.VERSION.SDK_INT >= 16)
Expand All @@ -830,11 +837,11 @@ public void onClick(View v) {
// Forward button
ImageButton forward = new ImageButton(cordova.getActivity());
RelativeLayout.LayoutParams forwardLayoutParams = new RelativeLayout.LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.MATCH_PARENT);
forwardLayoutParams.addRule(RelativeLayout.RIGHT_OF, 2);
forwardLayoutParams.addRule(isLeftToRight ? RelativeLayout.RIGHT_OF : RelativeLayout.LEFT_OF, 2);
forward.setLayoutParams(forwardLayoutParams);
forward.setContentDescription("Forward Button");
forward.setId(Integer.valueOf(3));
int fwdResId = activityRes.getIdentifier("ic_action_next_item", "drawable", cordova.getActivity().getPackageName());
int fwdResId = activityRes.getIdentifier(isLeftToRight ? "ic_action_next_item" : "ic_action_previous_item", "drawable", cordova.getActivity().getPackageName());
Drawable fwdIcon = activityRes.getDrawable(fwdResId);
if (navigationButtonColor != "") forward.setColorFilter(android.graphics.Color.parseColor(navigationButtonColor));
if (Build.VERSION.SDK_INT >= 16)
Expand All @@ -856,8 +863,8 @@ public void onClick(View v) {
// Edit Text Box
edittext = new EditText(cordova.getActivity());
RelativeLayout.LayoutParams textLayoutParams = new RelativeLayout.LayoutParams(LayoutParams.MATCH_PARENT, LayoutParams.MATCH_PARENT);
textLayoutParams.addRule(RelativeLayout.RIGHT_OF, 1);
textLayoutParams.addRule(RelativeLayout.LEFT_OF, 5);
textLayoutParams.addRule(isLeftToRight ? RelativeLayout.RIGHT_OF : RelativeLayout.LEFT_OF, 1);
textLayoutParams.addRule(isLeftToRight ? RelativeLayout.LEFT_OF : RelativeLayout.RIGHT_OF, 5);
edittext.setLayoutParams(textLayoutParams);
edittext.setId(Integer.valueOf(4));
edittext.setSingleLine(true);
Expand Down Expand Up @@ -894,7 +901,7 @@ public boolean onKey(View v, int keyCode, KeyEvent event) {
footerLayout.addRule(RelativeLayout.ALIGN_PARENT_BOTTOM, RelativeLayout.TRUE);
footer.setLayoutParams(footerLayout);
if (closeButtonCaption != "") footer.setPadding(this.dpToPixels(8), this.dpToPixels(8), this.dpToPixels(8), this.dpToPixels(8));
footer.setHorizontalGravity(Gravity.LEFT);
footer.setHorizontalGravity(isLeftToRight ? Gravity.LEFT : Gravity.RIGHT);
footer.setVerticalGravity(Gravity.BOTTOM);

View footerClose = createCloseButton(7);
Expand Down

0 comments on commit 7b16ee8

Please sign in to comment.