Android Open Source - nadia Menu






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

/*
 * Menu.java/*ww  w .  ja v  a  2 s.c  o m*/
 * 
 * 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 com.redarctic.nadia.ext.simplesignalslot.SignalSlotMap;
import com.redarctic.nadia.ext.simplesignalslot.SlotProviderMethodPair;
import com.redarctic.nadia.baseengine.ColorPallete;
import com.redarctic.nadia.baseengine.SpriteFont;
import com.redarctic.nadia.controls.DirectionalPad;

import android.graphics.Bitmap;
import android.graphics.Canvas;
import android.graphics.Paint;
import android.graphics.Point;
import android.graphics.Rect;

public class Menu extends ControlManager {
  private static final long serialVersionUID = -5944428321944028960L;
  
  private ControlBorder controlBorder;
  private Point initPosition;
  private PictureBox arrowImage;
  
  private int maxItemWidth = 0;
  
  public Menu(DirectionalPad gamepad) {
    super();
    setGamepad(gamepad);
  }
  
  public Menu(DirectionalPad gamepad, Point initPosition) {
    super();
    setGamepad(gamepad);
    setInitPosition(initPosition);
  }
  
  public Menu(Paint spriteFont, DirectionalPad gamepad, Point initPosition) {
    super(spriteFont);
    setGamepad(gamepad);
    setInitPosition(initPosition);
  }
  
  ///
  /// GETTERS AND SETTERS
  ///  
  public ControlBorder getControlBorder() {
    return controlBorder;
  }

  public void setControlBorder(ControlBorder controlBorder) {
    this.controlBorder = controlBorder;
  }

  public Point getInitPosition() {
    return initPosition;
  }

  public void setInitPosition(Point initPosition) {
    this.initPosition = initPosition;
  }

  public void setArrowImage(Bitmap arrowImage) {
    if (arrowImage != null) {
      if (this.arrowImage != null) {
        this.arrowImage = null;
      }
      this.arrowImage = new PictureBox(arrowImage, 
          new Rect(0, 0, arrowImage.getWidth(), arrowImage.getHeight()));
    }
  }
  ///
  /// End of GETTERS AND SETTERS
  ///
  

  public void calculate() {
    if (this.initPosition != null && this.arrowImage != null) {      
      Point posit = new Point(initPosition);
      Point p1 = new Point(posit);
      p1.x -= 10;
      p1.y -= 20;
      
      for (Control c : this) {
        if (c instanceof LinkLabel) {
          if (c.getSize().x > maxItemWidth) {
            maxItemWidth = c.getSize().x;
          }
          
          Point pos = new Point(posit);
          c.setPosition(pos);
          posit.y += (c.getSize().y + 5);
          pos = null;
        }
      }
      
      Point p2 = new Point();
      p2.x = (maxItemWidth + this.arrowImage.getImage().getWidth() + 20);
      p2.y = posit.y - p1.y + 10;
      
      this.controlBorder = new ControlBorder(p1, p2);
    }
  }
  
  public void calculate(Point initPosition, Bitmap arrowImage) {
    if (initPosition != null && arrowImage != null) {
      this.setInitPosition(initPosition);
      this.setArrowImage(arrowImage);
      
      calculate();
    }
    else {
      throw new NullPointerException();
    }
  }

  @Override
  public void update(Canvas canvas) {
    super.update(canvas);
  }

  @Override
  public void drawMe(Canvas canvas) {    
    if (this.controlBorder != null) {
      this.controlBorder.drawMe(canvas);
    }
    if (this.arrowImage != null) {
      this.arrowImage.drawMe(canvas);
    }
    super.drawMe(canvas);
  }
  
  public void initConnections() {
    SignalSlotMap.fastConnect(this, ControlManager.SIGNAL_FOCUS_CHANGED, 
        SlotProviderMethodPair.create(this, "focusChanged", Integer.class));
  }
  
  public void focusChanged(Integer selectedControl) {
    if (this.arrowImage != null) {
      if (this.isEmpty())
        return;
      
      if (selectedControl >= this.size())
        selectedControl = 0;
      
      Control control = get(selectedControl);
      if (control instanceof LinkLabel) {
        control.setHasFocus(true);
        this.set(selectedControl, control);
        Point position = new Point(control.getPosition().x
            + this.maxItemWidth + 10, control.getPosition().y
            - (this.arrowImage.getSourceRect().height() >> 1));
        this.arrowImage.setPosition(position);
      }
    }
  }
  
  public void disconnectAll() {
    for (Control c : this) {
      if (c instanceof LinkLabel)
        SignalSlotMap.fastDisconnect((LinkLabel)c);
    }
  }
  
  public void add(String member) {
    LinkLabel element = new LinkLabel();
    element.setText(member);
    element.setSize(SpriteFont.getMeasureString(member));
    element.setColor(ColorPallete.COLOR_MENU_TEXT_LIGHT);
    element.setGamepad(getGamepad());
    this.add(element);
  }
}




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