Android Open Source - nadia Left Right Selector






From Project

Back to project page nadia.

License

The source code is released under:

GNU Lesser General Public License

If you think the Android project nadia 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

/*
 * LeftRightSelector.java//from ww w.java  2  s  .c om
 * 
 * Copyright (c) 2013, Emmanuel Arana Corzo. All rights reserved.
 *
 * This library is free software; you can redistribute it and/or
 * modify it under the terms of the GNU Lesser General Public
 * License as published by the Free Software Foundation; either
 * version 2.1 of the License, or (at your option) any later version.
 *
 * This library 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
 * Lesser General Public License for more details.
 *
 * You should have received a copy of the GNU Lesser General Public
 * License along with this library; if not, write to the Free Software
 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
 * MA 02110-1301  USA
 */

package com.redarctic.nadia.controls.menu;

import java.util.ArrayList;

import com.redarctic.nadia.ext.MathHelper;
import com.redarctic.nadia.ext.simplesignalslot.ISignalProvider;
import com.redarctic.nadia.ext.simplesignalslot.ISlotProvider;
import com.redarctic.nadia.ext.simplesignalslot.SignalSlotMap;
import com.redarctic.nadia.ext.simplesignalslot.SlotProviderMethodPair;
import com.redarctic.nadia.baseengine.SpriteFont;
import com.redarctic.nadia.controls.DirectionalPad;

import android.graphics.Bitmap;
import android.graphics.Canvas;
import android.graphics.Color;
import android.graphics.Point;

public class LeftRightSelector extends Control implements ISignalProvider, ISlotProvider {
  
  ArrayList<String> items = new ArrayList<String>();
  Bitmap leftTexture;
  Bitmap rightTexture;
  Bitmap stopTexture;
  
  int selectedColor = Color.RED;
  int maxItemWidth;
  int selectedItem;
  
  public static final String SIGNAL_SELECTION_CHANGED = "SELECTION_CHANGED";
  
  public LeftRightSelector(Bitmap leftArrow, Bitmap rightArrow, Bitmap stop) {
    this.leftTexture = leftArrow;
    this.rightTexture = rightArrow;
    this.stopTexture = stop;
    this.setTabStop(true);
    this.setColor(Color.WHITE);
  }
  
  public int getSelectedColor() {
    return selectedColor;
  }

  public void setSelectedColor(int selectedColor) {
    this.selectedColor = selectedColor;
  }

  public ArrayList<String> getItems() {
    return items;
  }
  
  public int getSelectedIndex() {
    return selectedItem;
  }
  
  public void setSelectedIndex(int value) {
    selectedItem = (int)MathHelper.clamp((float)value, 0.0f, (float)items.size());
  }
  
  public String getSelectedItem() {
    return getItems().get(selectedItem);
  }  
  
  public void setItems(String[] items, int maxWidth) {
    this.items.clear();
    
    for (String s : items) {
      this.items.add(s);
    }
    
    this.maxItemWidth = maxWidth;
  }
  
  protected void onSelectionChanged() {
    SignalSlotMap.fastEmit(this, SIGNAL_SELECTION_CHANGED, this);
  }
  
  @Override
  public synchronized void initialize() {
    SignalSlotMap.fastConnect(this.gamepad, DirectionalPad.SIGNAL_BUTTON_LEFT_PRESSED, 
        SlotProviderMethodPair.create(this, "handleInputLeft"));
    SignalSlotMap.fastConnect(this.gamepad, DirectionalPad.SIGNAL_BUTTON_RIGHT_PRESSED, 
        SlotProviderMethodPair.create(this, "handleInputRight"));
  }
  
  @Override
  public void update(Canvas canvas) {
  }

  @Override
  public synchronized void drawMe(Canvas canvas) {
    Point drawTo = this.position;
    
    if (this.selectedItem != 0) {
      canvas.drawBitmap(leftTexture, drawTo.x, drawTo.y, null);
    }
    else {
      canvas.drawBitmap(stopTexture, drawTo.x, drawTo.y, null);
    }
    
    drawTo.x += leftTexture.getWidth() + 5;
    
    int itemWidth = (int)SpriteFont.getDefaultFont(this.getColor()).measureText(items.get(selectedItem));
    int offset = (maxItemWidth - itemWidth) / 2;
    
    drawTo.x += offset;
    
    SpriteFont.drawText(canvas, this.items.get(this.selectedItem), 
        drawTo, SpriteFont.getDefaultFont(
            (isHasFocus()) ? this.selectedColor : this.getColor() ));
    
    drawTo.x += -1 * offset + this.maxItemWidth + 5;
    
    if (this.selectedItem != this.items.size() - 1) {
      canvas.drawBitmap(rightTexture, drawTo.x, drawTo.y, null);
    }
    else {
      canvas.drawBitmap(stopTexture, drawTo.x, drawTo.y, null);
    }
  }

  @Override
  public void handleInput() {    
  }
  
  public void handleInputLeft() {
    if (!items.isEmpty()) {
      selectedItem--;
      if (selectedItem < 0)
        selectedItem = 0;
      onSelectionChanged();
    }
      
  }
  
  public void handleInputRight() {
    if (!items.isEmpty()) {
      selectedItem++;
      if (selectedItem >= items.size())
        selectedItem = items.size() - 1;
      onSelectionChanged();
    }
      
  }

}




Java Source Code List

com.ashokgelal.samaya.DateTimeFormatter.java
com.ashokgelal.samaya.DateTimeInterval.java
com.ashokgelal.samaya.DateTimeParser.java
com.ashokgelal.samaya.DateTime.java
com.ashokgelal.samaya.ModelUtil.java
com.ashokgelal.samaya.Samaya.java
com.ashokgelal.samaya.TimeSpan.java
com.ashokgelal.samaya.ToStringUtil.java
com.ashokgelal.samaya.Util.java
com.redarctic.nadia.baseengine.BaseGameState.java
com.redarctic.nadia.baseengine.ColorPallete.java
com.redarctic.nadia.baseengine.DrawableGameComponent.java
com.redarctic.nadia.baseengine.DrawableObject.java
com.redarctic.nadia.baseengine.GameComponent.java
com.redarctic.nadia.baseengine.GameStateManager.java
com.redarctic.nadia.baseengine.GameState.java
com.redarctic.nadia.baseengine.GameSurfaceView.java
com.redarctic.nadia.baseengine.GameSurface.java
com.redarctic.nadia.baseengine.SpriteFont.java
com.redarctic.nadia.baseengine.Sprite.java
com.redarctic.nadia.baseengine.character.BaseModifier.java
com.redarctic.nadia.baseengine.character.Classes.java
com.redarctic.nadia.baseengine.character.FormulaModifierException.java
com.redarctic.nadia.baseengine.character.Player.java
com.redarctic.nadia.baseengine.item.ArmorLocation.java
com.redarctic.nadia.baseengine.item.Armor.java
com.redarctic.nadia.baseengine.item.BaseItem.java
com.redarctic.nadia.baseengine.item.ItemManager.java
com.redarctic.nadia.baseengine.item.ItemType.java
com.redarctic.nadia.baseengine.item.Shield.java
com.redarctic.nadia.baseengine.item.Weapon.java
com.redarctic.nadia.baseengine.item.WeaponsType.java
com.redarctic.nadia.baseengine.sprite.AnimatedSprite.java
com.redarctic.nadia.baseengine.sprite.AnimationException.java
com.redarctic.nadia.baseengine.sprite.AnimationKey.java
com.redarctic.nadia.baseengine.sprite.Animation.java
com.redarctic.nadia.baseengine.tileengine.Camera.java
com.redarctic.nadia.baseengine.tileengine.Engine.java
com.redarctic.nadia.baseengine.tileengine.MapLayer.java
com.redarctic.nadia.baseengine.tileengine.TileException.java
com.redarctic.nadia.baseengine.tileengine.TileMap.java
com.redarctic.nadia.baseengine.tileengine.Tile.java
com.redarctic.nadia.baseengine.tileengine.Tileset.java
com.redarctic.nadia.baseengine.world.Level.java
com.redarctic.nadia.baseengine.world.World.java
com.redarctic.nadia.collision.Circle.java
com.redarctic.nadia.collision.CollisionPolygon.java
com.redarctic.nadia.collision.ConvexPolygonException.java
com.redarctic.nadia.collision.Rectangle.java
com.redarctic.nadia.controls.ButtonPad.java
com.redarctic.nadia.controls.DirectionalPad.java
com.redarctic.nadia.controls.menu.CharacterDialog.java
com.redarctic.nadia.controls.menu.ControlBorder.java
com.redarctic.nadia.controls.menu.ControlManager.java
com.redarctic.nadia.controls.menu.Control.java
com.redarctic.nadia.controls.menu.Label.java
com.redarctic.nadia.controls.menu.LeftRightSelector.java
com.redarctic.nadia.controls.menu.LinkLabel.java
com.redarctic.nadia.controls.menu.Menu.java
com.redarctic.nadia.controls.menu.PictureBox.java
com.redarctic.nadia.controls.menu.SimpleConversation.java
com.redarctic.nadia.ext.MathHelper.java
com.redarctic.nadia.ext.StringHelper.java
com.redarctic.nadia.ext.simplesignalslot.ISignalProvider.java
com.redarctic.nadia.ext.simplesignalslot.ISlotProvider.java
com.redarctic.nadia.ext.simplesignalslot.PrimitiveWrapper.java
com.redarctic.nadia.ext.simplesignalslot.SignalSlotMap.java
com.redarctic.nadia.ext.simplesignalslot.SignalSlotPair.java
com.redarctic.nadia.ext.simplesignalslot.SlotProviderMethodPair.java