commit 7da27d2b165f7ab2601fa5d886e143475d2999fe
Author: leszek <leszek@koltunski.pl>
Date:   Tue Jul 25 18:28:15 2023 +0200

    initial support for Bandaged UI.

diff --git a/src/main/java/org/distorted/bandaged/BandagedCreatorActivity.java b/src/main/java/org/distorted/bandaged/BandagedCreatorActivity.java
index ff03ba03..5de230ac 100644
--- a/src/main/java/org/distorted/bandaged/BandagedCreatorActivity.java
+++ b/src/main/java/org/distorted/bandaged/BandagedCreatorActivity.java
@@ -190,7 +190,12 @@ public class BandagedCreatorActivity extends AppCompatActivity
       BandagedCreatorView view = findViewById(R.id.bandagedCreatorObjectView);
       view.onResume();
 
-      if( mScreen==null ) mScreen = new BandagedCreatorScreen();
+      if( mScreen==null )
+        {
+        int ordinal = getObjectOrdinal();
+        mScreen = new BandagedCreatorScreen(ordinal);
+        }
+
       mScreen.onAttachedToWindow(this);
 
       restorePreferences();
@@ -329,6 +334,13 @@ public class BandagedCreatorActivity extends AppCompatActivity
       return mScreenHeight;
       }
 
+///////////////////////////////////////////////////////////////////////////////////////////////////
+
+    public int getObjectOrdinal()
+      {
+      return 0;
+      }
+
 ///////////////////////////////////////////////////////////////////////////////////////////////////
 
     public static int getDrawableSize()
diff --git a/src/main/java/org/distorted/bandaged/BandagedCreatorRenderer.java b/src/main/java/org/distorted/bandaged/BandagedCreatorRenderer.java
index 960b8a1a..1dcafc17 100644
--- a/src/main/java/org/distorted/bandaged/BandagedCreatorRenderer.java
+++ b/src/main/java/org/distorted/bandaged/BandagedCreatorRenderer.java
@@ -40,9 +40,7 @@ import org.distorted.library.type.Static1D;
 import org.distorted.library.type.Static3D;
 import org.distorted.library.type.Static4D;
 import org.distorted.objectlib.bandaged.BandagedObject;
-//import org.distorted.objectlib.bandaged.BandagedObjectCuboid;
-import org.distorted.objectlib.bandaged.BandagedObjectCuboid;
-import org.distorted.objectlib.bandaged.BandagedObjectPyraminx;
+import org.distorted.objectlib.bandaged.LocallyBandagedList;
 import org.distorted.objectlib.json.JsonWriter;
 import org.distorted.objectlib.main.TwistyObject;
 
@@ -79,7 +77,7 @@ public class BandagedCreatorRenderer implements GLSurfaceView.Renderer, Distorte
 
 ///////////////////////////////////////////////////////////////////////////////////////////////////
 
-   BandagedCreatorRenderer(BandagedCreatorView v)
+   BandagedCreatorRenderer(BandagedCreatorView v, int ordinal)
      {
      mView = v;
      mResources = v.getResources();
@@ -100,7 +98,7 @@ public class BandagedCreatorRenderer implements GLSurfaceView.Renderer, Distorte
      mScreen = new DistortedScreen();
      mScreen.glClearColor(BRIGHTNESS, BRIGHTNESS, BRIGHTNESS, 1.0f);
      mScale = new Static3D(1,1,1);
-     mObject = new BandagedObjectPyraminx(mScreen);
+     mObject= LocallyBandagedList.create(ordinal,mScreen);
 
      mInitRatio = mObject.getScreenRatio();
      mObjectScreenRatio= mInitRatio;
diff --git a/src/main/java/org/distorted/bandaged/BandagedCreatorScreen.java b/src/main/java/org/distorted/bandaged/BandagedCreatorScreen.java
index f37da933..baaf2650 100644
--- a/src/main/java/org/distorted/bandaged/BandagedCreatorScreen.java
+++ b/src/main/java/org/distorted/bandaged/BandagedCreatorScreen.java
@@ -30,8 +30,7 @@ import org.distorted.external.RubikFiles;
 import org.distorted.helpers.TransparentImageButton;
 import org.distorted.main.R;
 import org.distorted.main.RubikActivity;
-
-import static org.distorted.objectlib.scrambling.ScrambleStateLocallyBandaged.MAX_SUPPORTED_SIZE;
+import org.distorted.objectlib.bandaged.LocallyBandagedList;
 
 ///////////////////////////////////////////////////////////////////////////////////////////////////
 
@@ -45,12 +44,18 @@ public class BandagedCreatorScreen implements AdapterView.OnItemSelectedListener
   private Spinner mSpinnerX, mSpinnerY, mSpinnerZ;
   private boolean mSpinnersReady;
   private float mTextSize;
+  private final int mOrdinal;
+  private final int mDimension;
+  private final int mMaxSupported;
 
 ///////////////////////////////////////////////////////////////////////////////////////////////////
 
-  public BandagedCreatorScreen()
+  public BandagedCreatorScreen(int ordinal)
     {
-    mSpinnersReady = false;
+    mOrdinal      = ordinal;
+    mMaxSupported = LocallyBandagedList.getMaxSupported(ordinal);
+    mDimension    = LocallyBandagedList.getDimension(ordinal);
+    mSpinnersReady= false;
     mNumObjects = 0;
     mViews = new ArrayList<>();
     }
@@ -115,9 +120,9 @@ public class BandagedCreatorScreen implements AdapterView.OnItemSelectedListener
 
   private String[] createSizes(String mark)
     {
-    String[] ret = new String[MAX_SUPPORTED_SIZE];
+    String[] ret = new String[mMaxSupported];
 
-    for(int i=1; i<=MAX_SUPPORTED_SIZE; i++)
+    for(int i=1; i<=mMaxSupported; i++)
       {
       ret[i-1] = mark+" : "+i;
       }
@@ -173,26 +178,47 @@ public class BandagedCreatorScreen implements AdapterView.OnItemSelectedListener
     layout.addView(layoutRight);
 
     mSpinnerX = act.findViewById(R.id.bandagedCreatorX);
-    mSpinnerX.setOnItemSelectedListener(this);
-    ArrayAdapter<String> adX = new ArrayAdapter<>(act, R.layout.spinner_item, createSizes("X") );
-    mSpinnerX.setAdapter(adX);
-
     mSpinnerY = act.findViewById(R.id.bandagedCreatorY);
-    mSpinnerY.setOnItemSelectedListener(this);
-    ArrayAdapter<String> adY = new ArrayAdapter<>(act, R.layout.spinner_item, createSizes("Y") );
-    mSpinnerY.setAdapter(adY);
-
     mSpinnerZ = act.findViewById(R.id.bandagedCreatorZ);
-    mSpinnerZ.setOnItemSelectedListener(this);
-    ArrayAdapter<String> adZ = new ArrayAdapter<>(act, R.layout.spinner_item, createSizes("Z") );
-    mSpinnerZ.setAdapter(adZ);
-
-    ViewGroup.MarginLayoutParams paramsX = (ViewGroup.MarginLayoutParams) mSpinnerX.getLayoutParams();
-    paramsX.setMargins(0,0,2*padding,0);
-    ViewGroup.MarginLayoutParams paramsY = (ViewGroup.MarginLayoutParams) mSpinnerY.getLayoutParams();
-    paramsY.setMargins(padding,0,padding,0);
-    ViewGroup.MarginLayoutParams paramsZ = (ViewGroup.MarginLayoutParams) mSpinnerZ.getLayoutParams();
-    paramsZ.setMargins(2*padding,0,0,0);
+
+    if( mDimension>=1 )
+      {
+      mSpinnerX.setOnItemSelectedListener(this);
+      ArrayAdapter<String> adX=new ArrayAdapter<>(act, R.layout.spinner_item, createSizes("X"));
+      mSpinnerX.setAdapter(adX);
+      ViewGroup.MarginLayoutParams paramsX=(ViewGroup.MarginLayoutParams) mSpinnerX.getLayoutParams();
+      paramsX.setMargins(0, 0, 2*padding, 0);
+      }
+    else
+      {
+      mSpinnerX.setVisibility(View.INVISIBLE);
+      }
+
+    if( mDimension>=2 )
+      {
+      mSpinnerY.setOnItemSelectedListener(this);
+      ArrayAdapter<String> adY=new ArrayAdapter<>(act, R.layout.spinner_item, createSizes("Y"));
+      mSpinnerY.setAdapter(adY);
+      ViewGroup.MarginLayoutParams paramsY=(ViewGroup.MarginLayoutParams) mSpinnerY.getLayoutParams();
+      paramsY.setMargins(padding, 0, padding, 0);
+      }
+    else
+      {
+      mSpinnerY.setVisibility(View.INVISIBLE);
+      }
+
+    if( mDimension>=3 )
+      {
+      mSpinnerZ.setOnItemSelectedListener(this);
+      ArrayAdapter<String> adZ=new ArrayAdapter<>(act, R.layout.spinner_item, createSizes("Z"));
+      mSpinnerZ.setAdapter(adZ);
+      ViewGroup.MarginLayoutParams paramsZ=(ViewGroup.MarginLayoutParams) mSpinnerZ.getLayoutParams();
+      paramsZ.setMargins(2*padding, 0, 0, 0);
+      }
+    else
+      {
+      mSpinnerZ.setVisibility(View.INVISIBLE);
+      }
     }
 
 ///////////////////////////////////////////////////////////////////////////////////////////////////
@@ -339,28 +365,35 @@ public class BandagedCreatorScreen implements AdapterView.OnItemSelectedListener
     @Override
     public void onNothingSelected(AdapterView<?> parent) { }
 
+///////////////////////////////////////////////////////////////////////////////////////////////////
+
+    private String generateObjectKey()
+      {
+      return mOrdinal==0 ? "bandagedObjects" : "bandagedObjects"+mOrdinal;
+      }
+
 ///////////////////////////////////////////////////////////////////////////////////////////////////
 
     public void savePreferences(SharedPreferences.Editor editor)
       {
       String objects = generateObjectStrings();
-      editor.putString("bandagedObjects", objects );
+      editor.putString(generateObjectKey(), objects );
 
-      editor.putInt("bandagedX", mX);
-      editor.putInt("bandagedY", mY);
-      editor.putInt("bandagedZ", mZ);
+      editor.putInt("bandagedX"+mOrdinal, mX);
+      editor.putInt("bandagedY"+mOrdinal, mY);
+      editor.putInt("bandagedZ"+mOrdinal, mZ);
       }
 
 ///////////////////////////////////////////////////////////////////////////////////////////////////
 
     public void restorePreferences(BandagedCreatorActivity act, SharedPreferences preferences)
       {
-      String objects = preferences.getString("bandagedObjects","");
+      String objects = preferences.getString(generateObjectKey(),"");
       addObjects(act,objects);
 
-      mX = preferences.getInt("bandagedX", 2);
-      mY = preferences.getInt("bandagedY", 2);
-      mZ = preferences.getInt("bandagedZ", 2);
+      mX = preferences.getInt("bandagedX"+mOrdinal, 2);
+      mY = preferences.getInt("bandagedY"+mOrdinal, 2);
+      mZ = preferences.getInt("bandagedZ"+mOrdinal, 2);
 
       mSpinnerX.setSelection(mX);
       mSpinnerY.setSelection(mY);
diff --git a/src/main/java/org/distorted/bandaged/BandagedCreatorView.java b/src/main/java/org/distorted/bandaged/BandagedCreatorView.java
index 3e7deb37..d8d6010c 100644
--- a/src/main/java/org/distorted/bandaged/BandagedCreatorView.java
+++ b/src/main/java/org/distorted/bandaged/BandagedCreatorView.java
@@ -51,7 +51,7 @@ public class BandagedCreatorView extends GLSurfaceView
       if(!isInEditMode())
         {
         BandagedCreatorActivity act = (BandagedCreatorActivity)context;
-        mRenderer = new BandagedCreatorRenderer(this);
+        mRenderer = new BandagedCreatorRenderer(this,act.getObjectOrdinal() );
         mTouchControl = mRenderer.createTouchControl();
 
         final ActivityManager activityManager= (ActivityManager) context.getSystemService(Context.ACTIVITY_SERVICE);
