commit 176308f853250ffa0af10916923d4127a1bdb1cf
Author: Leszek Koltunski <leszek@koltunski.pl>
Date:   Thu Mar 26 16:01:03 2020 +0000

    Progress with Pretty Patterns.

diff --git a/src/main/java/org/distorted/dialog/RubikDialogPatternPagerAdapter.java b/src/main/java/org/distorted/dialog/RubikDialogPatternPagerAdapter.java
index ba01a1b0..8cf8b64f 100644
--- a/src/main/java/org/distorted/dialog/RubikDialogPatternPagerAdapter.java
+++ b/src/main/java/org/distorted/dialog/RubikDialogPatternPagerAdapter.java
@@ -70,20 +70,9 @@ class RubikDialogPatternPagerAdapter extends PagerAdapter
   @NonNull
   public Object instantiateItem(@NonNull ViewGroup collection, final int position)
     {
-    mViews[position] = new RubikDialogPatternView(mAct);
-    collection.addView(mViews[position]);
-
     String[] categories = createCategories(position);
-    final LinearLayout section = mViews[position].createSection(mAct, categories);
-
-    mAct.runOnUiThread(new Runnable()
-        {
-        @Override
-        public void run()
-          {
-          mViews[position].addSection(section);
-          }
-        });
+    mViews[position] = new RubikDialogPatternView(mAct, categories);
+    collection.addView(mViews[position]);
 
     return mViews[position];
     }
diff --git a/src/main/java/org/distorted/dialog/RubikDialogPatternView.java b/src/main/java/org/distorted/dialog/RubikDialogPatternView.java
index f6ff1a08..2a21fa8d 100644
--- a/src/main/java/org/distorted/dialog/RubikDialogPatternView.java
+++ b/src/main/java/org/distorted/dialog/RubikDialogPatternView.java
@@ -21,6 +21,7 @@ package org.distorted.dialog;
 
 import android.content.Context;
 import android.support.v4.app.FragmentActivity;
+import android.util.AttributeSet;
 import android.util.DisplayMetrics;
 import android.view.View;
 import android.widget.Button;
@@ -37,24 +38,35 @@ public class RubikDialogPatternView extends FrameLayout
 
 ///////////////////////////////////////////////////////////////////////////////////////////////////
 
-  public RubikDialogPatternView(Context context)
+  public RubikDialogPatternView(Context context, AttributeSet attrs, int defStyle)
     {
-    super(context);
+    super(context, attrs, defStyle);
+    }
+
+///////////////////////////////////////////////////////////////////////////////////////////////////
+
+  public RubikDialogPatternView(Context context, AttributeSet attrs)
+    {
+    super(context, attrs);
+    }
 
-    View tab = inflate( context, R.layout.dialog_tab, null);
+///////////////////////////////////////////////////////////////////////////////////////////////////
+
+  public RubikDialogPatternView(FragmentActivity act, String[] categories)
+    {
+    super(act);
+
+    View tab = inflate( act, R.layout.dialog_tab, null);
     mLayout = tab.findViewById(R.id.tabLayout);
+    createSection(act,categories);
+
     addView(tab);
     }
 
 ///////////////////////////////////////////////////////////////////////////////////////////////////
 
-  LinearLayout createSection(FragmentActivity act, final String[] categories)
+  private void createSection(FragmentActivity act, final String[] categories)
     {
-    LinearLayout.LayoutParams params = new LinearLayout.LayoutParams(LinearLayout.LayoutParams.MATCH_PARENT, LinearLayout.LayoutParams.WRAP_CONTENT);
-    LinearLayout layout = new LinearLayout(act);
-    layout.setLayoutParams(params);
-    layout.setOrientation(LinearLayout.VERTICAL);
-
     DisplayMetrics metrics = act.getResources().getDisplayMetrics();
     final float scale = metrics.density;
     int len = categories.length;
@@ -64,9 +76,6 @@ public class RubikDialogPatternView extends FrameLayout
 
     for(int i=0; i<len; i++)
       {
-      android.util.Log.e("view", "adding button "+i +" to layout!");
-
-
       final int fi = i;
       Button button = new Button(act);
       button.setLayoutParams(bParams);
@@ -80,18 +89,8 @@ public class RubikDialogPatternView extends FrameLayout
           android.util.Log.e("view", "category "+categories[fi]+" clicked");
           }
         });
-      }
-
-    return layout;
-    }
 
-///////////////////////////////////////////////////////////////////////////////////////////////////
-// needs to run on UI thread
-
-  void addSection(LinearLayout section)
-    {
-    android.util.Log.e("view", "adding section to tab!");
-
-    mLayout.addView(section);
+      mLayout.addView(button);
+      }
     }
   }
