Revision: 2402
http://sourceforge.net/p/swingme/code/2402
Author: yuranet
Date: 2021-02-24 17:31:28 +0000 (Wed, 24 Feb 2021)
Log Message:
-----------
lists work in dialogs, yay
Modified Paths:
--------------
AndroidME/src_SwingME_plaf/net/yura/android/plaf/AndroidLookAndFeel.java
Modified: AndroidME/src_SwingME_plaf/net/yura/android/plaf/AndroidLookAndFeel.java
===================================================================
--- AndroidME/src_SwingME_plaf/net/yura/android/plaf/AndroidLookAndFeel.java 2021-02-24 16:36:58 UTC (rev 2401)
+++ AndroidME/src_SwingME_plaf/net/yura/android/plaf/AndroidLookAndFeel.java 2021-02-24 17:31:28 UTC (rev 2402)
@@ -1,6 +1,22 @@
package net.yura.android.plaf;
-import javax.microedition.lcdui.Image;
+import android.annotation.TargetApi;
+import android.content.Context;
+import android.content.res.ColorStateList;
+import android.content.res.TypedArray;
+import android.graphics.Bitmap;
+import android.graphics.Bitmap.Config;
+import android.graphics.Canvas;
+import android.graphics.Color;
+import android.graphics.PorterDuff.Mode;
+import android.graphics.Rect;
+import android.graphics.drawable.BitmapDrawable;
+import android.graphics.drawable.ColorDrawable;
+import android.graphics.drawable.Drawable;
+import android.os.Build;
+import android.util.DisplayMetrics;
+import android.view.ViewConfiguration;
+import net.yura.android.AlertOptionPane;
import net.yura.android.AndroidMeActivity;
import net.yura.android.AndroidMeApp;
import net.yura.android.NativeAndroidMenu;
@@ -21,23 +37,7 @@
import net.yura.mobile.gui.components.TextField;
import net.yura.mobile.gui.plaf.Style;
import net.yura.mobile.gui.plaf.SynthLookAndFeel;
-import android.annotation.TargetApi;
-import android.content.Context;
-import android.content.res.ColorStateList;
-import android.content.res.TypedArray;
-import android.graphics.Bitmap;
-import android.graphics.Bitmap.Config;
-import android.graphics.Canvas;
-import android.graphics.Color;
-import android.graphics.PorterDuff.Mode;
-import android.graphics.Rect;
-import android.graphics.drawable.BitmapDrawable;
-import android.graphics.drawable.ColorDrawable;
-import android.graphics.drawable.Drawable;
-import android.os.Build;
-import android.util.DisplayMetrics;
-import android.view.ViewConfiguration;
-import net.yura.android.AlertOptionPane;
+import javax.microedition.lcdui.Image;
public class AndroidLookAndFeel extends SynthLookAndFeel {
@@ -162,10 +162,29 @@
// --- List ---
+ int[] nonDefaultSwingMeStates = {
+ Style.DISABLED,
+ Style.DISABLED|Style.FOCUSED,
+ Style.DISABLED|Style.SELECTED,
+ Style.DISABLED|Style.FOCUSED|Style.SELECTED,
+ Style.FOCUSED,
+ Style.SELECTED,
+ Style.FOCUSED|Style.SELECTED,
+ };
+
Style listStyle = new Style(defaultStyle);
- listStyle.addBorder(getBorder(ctx, android.R.style.Widget_ListView_White, android.R.attr.background ),Style.ALL);
- setStyleFor("ListWhite",listStyle);
+ setForegroundColor(ctx, listStyle, android.R.style.TextAppearance_Large, ListCellRenderer.class, nonDefaultSwingMeStates); // Has defined in simple_list_item.xml
+ setStyleFor("List",listStyle);
+ Style tableStyle = new Style(defaultStyle);
+ setForegroundColor(ctx, tableStyle, android.R.style.TextAppearance_Large, ListCellRenderer.class, nonDefaultSwingMeStates); // Has defined in simple_list_item.xml
+ setStyleFor("Table",tableStyle);
+
+ Style whiteListStyle = new Style(defaultStyle);
+ setForegroundColor(ctx, whiteListStyle, android.R.style.TextAppearance_Large, ListCellRenderer.class, nonDefaultSwingMeStates); // Has defined in simple_list_item.xml
+ whiteListStyle.addBorder(getBorder(ctx, android.R.style.Widget_ListView_White, android.R.attr.background ),Style.ALL);
+ setStyleFor("ListWhite",whiteListStyle);
+
Rect listExtraPadding = getAdjustedDensityRect(ctx, 10, 10, 10, 10);
Border divider2 = getListDivider(ctx, android.R.style.Widget_ListView, android.R.attr.listDivider);
@@ -172,7 +191,6 @@
Style listCellRenderer = new Style(defaultStyle);
Border mainBorder = getBorder(ctx, android.R.style.Widget_ListView, android.R.attr.listSelector , listExtraPadding);
listCellRenderer.addBorder(new BorderWithDivider(mainBorder, divider2,false ),Style.ALL);
- setForegroundColor(ctx, listCellRenderer, android.R.style.TextAppearance_Large,ListCellRenderer.class); // Has defined in simple_list_item.xml
setStyleFor("ListRenderer",listCellRenderer);
// --- List (No padding) ---
@@ -179,13 +197,11 @@
Style listCellRendererCollapsed = new Style(defaultStyle);
Border mainBorder2 = getBorder(ctx, android.R.style.Widget_ListView, android.R.attr.listSelector);
listCellRendererCollapsed.addBorder(new BorderWithDivider(mainBorder2, divider2,true ),Style.ALL);
- setForegroundColor(ctx, listCellRendererCollapsed, android.R.style.TextAppearance_Large,ListCellRenderer.class); // Has defined in simple_list_item.xml
setStyleFor("ListRendererCollapsed",listCellRendererCollapsed);
Style gridCellRendererCollapsed = new Style(defaultStyle);
gridCellRendererCollapsed.addBorder( getBorder(ctx, android.R.style.Widget_ListView, android.R.attr.listSelector) ,Style.ALL);
- setForegroundColor(ctx, gridCellRendererCollapsed, android.R.style.TextAppearance_Large,ListCellRenderer.class); // Has defined in simple_list_item.xml
setStyleFor("GridRendererCollapsed",gridCellRendererCollapsed);
@@ -232,6 +248,17 @@
setStyleFor("PreferenceSeparator", preferenceSeparatorStyle);
+ int[] allSwingMeStates = {
+ 0, // nothing, default state
+ Style.DISABLED,
+ Style.DISABLED|Style.FOCUSED,
+ Style.DISABLED|Style.SELECTED,
+ Style.DISABLED|Style.FOCUSED|Style.SELECTED,
+ Style.FOCUSED,
+ Style.SELECTED,
+ Style.FOCUSED|Style.SELECTED,
+ };
+
// --- Button ---
Style buttonStyle = new Style(defaultStyle);
Drawable but = getDrawable(ctx, android.R.attr.buttonStyle, android.R.attr.background);
@@ -244,7 +271,7 @@
padding.left = (int) (padding.left*1.5);
padding.right = (int) (padding.right*1.5);
buttonStyle.addBorder(new AndroidBorder(but, padding),Style.ALL);
- setForegroundColor(ctx, buttonStyle, android.R.style.Widget_Button,Button.class);
+ setForegroundColor(ctx, buttonStyle, android.R.style.Widget_Button,Button.class, allSwingMeStates);
setStyleFor("Button", buttonStyle);
Drawable btn_circle = getDrawable(ctx, "btn_circle"); // CAN BE NULL!!
@@ -256,13 +283,13 @@
int w = btn_circle==null?helpDrawable.getIntrinsicWidth():btn_circle.getIntrinsicWidth();
AndroidIcon helpIcon = new AndroidIcon(helpDrawable, w, w);
helpButtonStyle.addBorder( new IconBorder(padding2.top,padding2.left,padding2.bottom,padding2.right,helpIcon,null) ,Style.ALL);
- setForegroundColor(ctx, helpButtonStyle, android.R.style.Widget_Button,Button.class);
+ setForegroundColor(ctx, helpButtonStyle, android.R.style.Widget_Button,Button.class, allSwingMeStates);
setStyleFor("helpButton", helpButtonStyle);
Style sbuttonStyle = new Style(defaultStyle);
sbuttonStyle.addBorder(getBorder(ctx, android.R.attr.buttonStyle, android.R.attr.background),Style.ALL);
- setForegroundColor(ctx, sbuttonStyle, android.R.style.Widget_Button,Button.class);
+ setForegroundColor(ctx, sbuttonStyle, android.R.style.Widget_Button,Button.class, allSwingMeStates);
setStyleFor("SmallButton", sbuttonStyle);
Style redButtonStyle = new Style(defaultStyle);
@@ -269,7 +296,7 @@
Drawable d = getDrawable(ctx, android.R.attr.buttonStyle, android.R.attr.background);
d.setColorFilter(0x88FF0000, Mode.SRC_ATOP);
redButtonStyle.addBorder(new AndroidBorder(d),Style.ALL);
- setForegroundColor(ctx, redButtonStyle, android.R.style.Widget_Button,Button.class);
+ setForegroundColor(ctx, redButtonStyle, android.R.style.Widget_Button,Button.class, allSwingMeStates);
setStyleFor("RedButton", redButtonStyle);
// --- Radio Button ---
@@ -277,7 +304,7 @@
radioStyle.addProperty(createButtonIcon(ctx, android.R.style.Widget_CompoundButton_RadioButton), "icon", Style.ALL);
// Can't use the border. The border contains (left) padding for the button! Assuming transparent
// addBorder(ctx, radioStyle, android.R.style.Widget_CompoundButton_RadioButton, android.R.attr.background);
- setForegroundColor(ctx, radioStyle, android.R.style.Widget_CompoundButton_RadioButton,RadioButton.class);
+ setForegroundColor(ctx, radioStyle, android.R.style.Widget_CompoundButton_RadioButton,RadioButton.class, allSwingMeStates);
setStyleFor("RadioButton",radioStyle);
// --- Check Box ---
@@ -285,7 +312,7 @@
checkboxStyle.addProperty(createButtonIcon(ctx, android.R.style.Widget_CompoundButton_CheckBox), "icon", Style.ALL);
// Can't use the border. The border contains (left) padding for the button! Assuming transparent
// addBorder(ctx, checkboxStyle, android.R.style.Widget_CompoundButton_CheckBox, android.R.attr.background);
- setForegroundColor(ctx, checkboxStyle, android.R.style.Widget_CompoundButton_CheckBox,CheckBox.class);
+ setForegroundColor(ctx, checkboxStyle, android.R.style.Widget_CompoundButton_CheckBox,CheckBox.class, allSwingMeStates);
setStyleFor("CheckBox",checkboxStyle);
// --- Frame ---
@@ -305,7 +332,7 @@
// --- TextField ---
Style textFieldStyle = new Style(defaultStyle);
textFieldStyle.addBorder(getBorder(ctx, android.R.attr.editTextStyle, android.R.attr.background),Style.ALL);
- setForegroundColor(ctx, textFieldStyle, android.R.style.Widget_EditText,TextField.class);
+ setForegroundColor(ctx, textFieldStyle, android.R.style.Widget_EditText,TextField.class, allSwingMeStates);
setStyleFor("TextField",textFieldStyle);
// --- TextArea ---
@@ -317,7 +344,7 @@
// --- ComboBox ---
Style comboStyle = new Style(buttonStyle);
comboStyle.addBorder(getBorder(ctx, android.R.style.Widget_Spinner, android.R.attr.background),Style.ALL);
- setForegroundColor(ctx, comboStyle, android.R.style.TextAppearance_Widget_TextView_SpinnerItem,ComboBox.class);
+ setForegroundColor(ctx, comboStyle, android.R.style.TextAppearance_Widget_TextView_SpinnerItem,ComboBox.class, allSwingMeStates);
setStyleFor("ComboBox",comboStyle);
// --- ComboBox2 ---
@@ -328,7 +355,7 @@
Style comboStyle2 = new Style(defaultStyle);
Rect comboBox2Padding = getAdjustedDensityRect(ctx, 9, 17, 9, 17);
comboStyle2.addBorder( new IconBorder(comboBox2Padding.top,comboBox2Padding.left,comboBox2Padding.bottom,comboBox2Padding.right,new AndroidIcon(btn_circle),new AndroidIcon(d2)) ,Style.ALL);
- setForegroundColor(ctx, comboStyle2, android.R.style.Widget_CompoundButton_RadioButton,RadioButton.class); // TODO this is a guess
+ setForegroundColor(ctx, comboStyle2, android.R.style.Widget_CompoundButton_RadioButton,RadioButton.class, allSwingMeStates); // TODO this is a guess
setStyleFor("ComboBox2",comboStyle2);
}
@@ -602,23 +629,12 @@
return res;
}
- static void setForegroundColor(Context ctx, Style style, int defStyle,Class cl) {
- int[] all = {
- Style.ALL,
- Style.DISABLED,
- Style.DISABLED|Style.FOCUSED,
- Style.DISABLED|Style.SELECTED,
- Style.DISABLED|Style.FOCUSED|Style.SELECTED,
- Style.FOCUSED,
- Style.SELECTED,
- Style.FOCUSED|Style.SELECTED,
- };
-
+ static void setForegroundColor(Context ctx, Style style, int defStyle,Class cl, int[] swingMeStates) {
ColorStateList clist = getTextColor(ctx, defStyle);
int defColor = clist.getDefaultColor();
- for (int i = 0; i < all.length; i++) {
- int swingMeState = all[i];
+ for (int i = 0; i < swingMeStates.length; i++) {
+ int swingMeState = swingMeStates[i];
int[] stateSet = AndroidBorder.getDrawableState(swingMeState, cl, true);
int color = clist.getColorForState(stateSet, defColor);
style.addForeground(color, swingMeState);
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|