Android Open Source - clash_of_balls Menu Item Keyboard






From Project

Back to project page clash_of_balls.

License

The source code is released under:

GNU General Public License

If you think the Android project clash_of_balls listed in this page is inappropriate, such as containing malicious code/tools or violating the copyright, please email info at java2s dot com, thanks.

Java Source Code

/*
 * Copyright (C) 2012-2013 Hans Hardmeier <hanshardmeier@gmail.com>
 * Copyright (C) 2012-2013 Andrin Jenal/*w  w  w .  j  a  va 2s  .c o  m*/
 * Copyright (C) 2012-2013 Beat Kng <beat-kueng@gmx.net>
 * 
 * This program is free software; you can redistribute it and/or modify
 * it under the terms of the GNU General Public License as published by
 * the Free Software Foundation; version 3 of the License.
 * 
 * This program is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 * GNU General Public License for more details.
 *
 */

package com.sapos_aplastados.game.clash_of_balls.menu;

import android.app.Activity;
import android.app.AlertDialog;
import android.content.Context;
import android.content.DialogInterface;
import android.text.Editable;
import android.text.TextWatcher;
import android.util.Log;
import android.widget.EditText;
import android.widget.Toast;

import com.sapos_aplastados.game.clash_of_balls.R;
import com.sapos_aplastados.game.clash_of_balls.Font2D;
import com.sapos_aplastados.game.clash_of_balls.Texture;
import com.sapos_aplastados.game.clash_of_balls.TextureManager;
import com.sapos_aplastados.game.clash_of_balls.VertexBufferFloat;
import com.sapos_aplastados.game.clash_of_balls.game.RenderHelper;
import com.sapos_aplastados.game.clash_of_balls.game.Vector;

/**
 * Menu item with keyboard input
 *
 */
public class MenuItemKeyboard extends MenuItem {

  
  private static final String LOG_TAG = "MenuItemKeyboard";
  
  private Context m_activity_context;
  private Texture m_texture;
  private TextureManager m_tex_manager;
  private String m_dialog_text;
  private String m_text_input="";
  
  private final int m_max_text_len = 15;
  
  private String m_new_str;
  
  private String m_regex = "^[a-zA-Z0-9 ]+$";
  private String m_regex_msg = "Please enter only letters or numbers or spaces";

  private Font2D m_item_font;
  
  public MenuItemKeyboard(Vector position, Vector size
      , Font2D.Font2DSettings font_settings, TextureManager tex_manager
      , Context activity_context, String text) {
    
    super(position, size);
    
    m_item_font = new Font2D(tex_manager, size, font_settings, (int)Math.round(size.y * 0.5));
    m_dialog_text = text;
    m_tex_manager=tex_manager;
    m_activity_context = activity_context;
    m_texture=m_tex_manager.get(R.raw.texture_grey_unpressed_button);
    m_position_data = new VertexBufferFloat
        (VertexBufferFloat.sprite_position_data, 3);
    RenderHelper.initColorArray(0xffffffff, m_color);
  }
  
  public String getString(){
    return m_text_input;
  }
  
  public void setString(String new_str) {
    m_text_input = new_str;
    m_item_font.setString(new_str);
  }
  
  private void setStringFromOutside(String new_str) {
    synchronized(this) {
      m_new_str = new String(new_str);
    }
  }
  
  public void onTouchDown(float x, float y) {
    // do nothing
  }
  public void onTouchUp(float x, float y) {
    
    
    ((Activity) m_activity_context).runOnUiThread(new Runnable()
        {
            public void run()
            { 
              AlertDialog.Builder alert = new AlertDialog.Builder(m_activity_context);

              alert.setTitle("Clash of Balls");
              alert.setMessage(m_dialog_text);

              // Set an EditText view to get user input 
              final EditText input = new EditText(m_activity_context);
              input.setSingleLine();
              input.addTextChangedListener(new TextValidator(input) {
                  @Override
                  public String validate(EditText textView, String text) {
                    Log.d(LOG_TAG,"validate: "+text);        
                    if(text.length()>0){
                      if(!text.matches(m_regex)){
                        text=text.substring(0,text.length()-1);
                        Toast.makeText(m_activity_context, m_regex_msg
                            , Toast.LENGTH_SHORT).show();
                      }
                      if(text.length() > m_max_text_len) {
                        text = text.substring(0,m_max_text_len);
                      }
                    }
            return text;
                  }
              });
              
              alert.setView(input);

              alert.setPositiveButton("Ok", new DialogInterface.OnClickListener() {
              public void onClick(DialogInterface dialog, int whichButton) {
                String str = input.getText().toString();
                setStringFromOutside(str);
                Log.d(LOG_TAG,"Text input: "+str);
                }
              });

              alert.setNegativeButton("Cancel", new DialogInterface.OnClickListener() {
                public void onClick(DialogInterface dialog, int whichButton) {
                  // Canceled.
                }
              });

              alert.show();
            }
            
            abstract class TextValidator implements TextWatcher {
                private EditText textView;

                public TextValidator(EditText textView) {
                    this.textView = textView;
                }

                public abstract String validate(EditText textView, String text);

                final public void afterTextChanged(Editable s) {
                    String text = textView.getText().toString();
                    String newString = validate(textView, text);
                    textView.setSelection(text.length());
                    if(!newString.equals(text))textView.setText(newString);
                   
                }

                final public void beforeTextChanged(CharSequence s, int start, int count, int after) { /* Don't care */ }

                final public void onTextChanged(CharSequence s, int start, int before, int count) { /* Don't care */ }
            }
            
         }
  );

  }
  
  public void move(float dsec) {
    synchronized (this) {
      if(m_new_str != null) {
        setString(m_new_str);
        m_new_str = null;
      }
    }
  }

  public void draw(RenderHelper renderer) {      
    renderer.pushModelMat();
    renderer.modelMatTranslate(m_position.x, m_position.y, 0.f);
    renderer.modelMatScale(m_size.x, m_size.y, 0.f);
    
    drawTexture(renderer, m_texture);
    
    m_item_font.draw(renderer);
        
        renderer.popModelMat();
  }
  
}




Java Source Code List

au.com.bytecode.opencsv.CSVParser.java
au.com.bytecode.opencsv.CSVReader.java
au.com.bytecode.opencsv.CSVWriter.java
au.com.bytecode.opencsv.ResultSetHelperService.java
au.com.bytecode.opencsv.ResultSetHelper.java
com.sapos_aplastados.game.clash_of_balls.FPSCounter.java
com.sapos_aplastados.game.clash_of_balls.Font2D.java
com.sapos_aplastados.game.clash_of_balls.FontNumbers.java
com.sapos_aplastados.game.clash_of_balls.GameLevel.java
com.sapos_aplastados.game.clash_of_balls.GameRenderer.java
com.sapos_aplastados.game.clash_of_balls.GameSettings.java
com.sapos_aplastados.game.clash_of_balls.ITouchInput.java
com.sapos_aplastados.game.clash_of_balls.LevelManager.java
com.sapos_aplastados.game.clash_of_balls.MainActivity.java
com.sapos_aplastados.game.clash_of_balls.Maths.java
com.sapos_aplastados.game.clash_of_balls.NetworkService.java
com.sapos_aplastados.game.clash_of_balls.ShaderManager.java
com.sapos_aplastados.game.clash_of_balls.TextureBase.java
com.sapos_aplastados.game.clash_of_balls.TextureManager.java
com.sapos_aplastados.game.clash_of_balls.Texture.java
com.sapos_aplastados.game.clash_of_balls.UIBase.java
com.sapos_aplastados.game.clash_of_balls.UIHandler.java
com.sapos_aplastados.game.clash_of_balls.VertexBufferFloat.java
com.sapos_aplastados.game.clash_of_balls.game.DynamicGameObject.java
com.sapos_aplastados.game.clash_of_balls.game.GameBase.java
com.sapos_aplastados.game.clash_of_balls.game.GameField.java
com.sapos_aplastados.game.clash_of_balls.game.GameHole.java
com.sapos_aplastados.game.clash_of_balls.game.GameItem.java
com.sapos_aplastados.game.clash_of_balls.game.GameMenuInGame.java
com.sapos_aplastados.game.clash_of_balls.game.GameObject.java
com.sapos_aplastados.game.clash_of_balls.game.GamePlayer.java
com.sapos_aplastados.game.clash_of_balls.game.GameServer.java
com.sapos_aplastados.game.clash_of_balls.game.GameStatistics.java
com.sapos_aplastados.game.clash_of_balls.game.GameView.java
com.sapos_aplastados.game.clash_of_balls.game.GameWall.java
com.sapos_aplastados.game.clash_of_balls.game.Game.java
com.sapos_aplastados.game.clash_of_balls.game.IDrawable.java
com.sapos_aplastados.game.clash_of_balls.game.IMoveable.java
com.sapos_aplastados.game.clash_of_balls.game.RenderHelper.java
com.sapos_aplastados.game.clash_of_balls.game.SensorThread.java
com.sapos_aplastados.game.clash_of_balls.game.StaticGameObjectNoInteraction.java
com.sapos_aplastados.game.clash_of_balls.game.StaticGameObject.java
com.sapos_aplastados.game.clash_of_balls.game.Vector3D.java
com.sapos_aplastados.game.clash_of_balls.game.Vector.java
com.sapos_aplastados.game.clash_of_balls.game.event.EventGameEnd.java
com.sapos_aplastados.game.clash_of_balls.game.event.EventGameInfo.java
com.sapos_aplastados.game.clash_of_balls.game.event.EventGameStartNow.java
com.sapos_aplastados.game.clash_of_balls.game.event.EventImpact.java
com.sapos_aplastados.game.clash_of_balls.game.event.EventItemAdded.java
com.sapos_aplastados.game.clash_of_balls.game.event.EventItemRemoved.java
com.sapos_aplastados.game.clash_of_balls.game.event.EventItemUpdate.java
com.sapos_aplastados.game.clash_of_balls.game.event.EventPool.java
com.sapos_aplastados.game.clash_of_balls.game.event.Event.java
com.sapos_aplastados.game.clash_of_balls.helper.RawResourceReader.java
com.sapos_aplastados.game.clash_of_balls.helper.ShaderHelper.java
com.sapos_aplastados.game.clash_of_balls.helper.TextureHelper.java
com.sapos_aplastados.game.clash_of_balls.menu.CreationMenu.java
com.sapos_aplastados.game.clash_of_balls.menu.GameMenuBase.java
com.sapos_aplastados.game.clash_of_balls.menu.HelpMenu.java
com.sapos_aplastados.game.clash_of_balls.menu.JoinMenu.java
com.sapos_aplastados.game.clash_of_balls.menu.MainMenu.java
com.sapos_aplastados.game.clash_of_balls.menu.MenuBackground.java
com.sapos_aplastados.game.clash_of_balls.menu.MenuItemArrow.java
com.sapos_aplastados.game.clash_of_balls.menu.MenuItemButton.java
com.sapos_aplastados.game.clash_of_balls.menu.MenuItemGreyButton.java
com.sapos_aplastados.game.clash_of_balls.menu.MenuItemImg.java
com.sapos_aplastados.game.clash_of_balls.menu.MenuItemKeyboard.java
com.sapos_aplastados.game.clash_of_balls.menu.MenuItemLevel.java
com.sapos_aplastados.game.clash_of_balls.menu.MenuItemList.java
com.sapos_aplastados.game.clash_of_balls.menu.MenuItemResultEntry.java
com.sapos_aplastados.game.clash_of_balls.menu.MenuItemStringMultiline.java
com.sapos_aplastados.game.clash_of_balls.menu.MenuItemString.java
com.sapos_aplastados.game.clash_of_balls.menu.MenuItem.java
com.sapos_aplastados.game.clash_of_balls.menu.PopupBase.java
com.sapos_aplastados.game.clash_of_balls.menu.PopupCredit.java
com.sapos_aplastados.game.clash_of_balls.menu.PopupGameStart.java
com.sapos_aplastados.game.clash_of_balls.menu.PopupMsg.java
com.sapos_aplastados.game.clash_of_balls.menu.ResultsMenu.java
com.sapos_aplastados.game.clash_of_balls.menu.WaitMenu.java
com.sapos_aplastados.game.clash_of_balls.network.AlljoynInterface.java
com.sapos_aplastados.game.clash_of_balls.network.NetworkClient.java
com.sapos_aplastados.game.clash_of_balls.network.NetworkServer.java
com.sapos_aplastados.game.clash_of_balls.network.Networking.java