Package com.aem.sticky.dialog

Source Code of com.aem.sticky.dialog.Notification

/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/
package com.aem.sticky.dialog;

import com.aem.sticky.StickyListener;
import com.aem.sticky.button.TextButton;
import com.aem.sticky.button.events.SimpleClickListener;
import org.newdawn.slick.*;
import org.newdawn.slick.geom.Rectangle;
import org.newdawn.slick.geom.Shape;


/**
*
* @author abacs
*/
public class Notification {
 
  /** Center x coordinate. */
  private int centerX = 0;
  /** Center y coordinate. */
  private int centerY = 0;
 
  private TextButton textButton = null;
 
  private SimpleClickListener clickListener = null;
 
  private String bodyText = "";
 
  private String buttonText = "";
 
  private boolean show = false;
 
  protected Shape shape = new Rectangle(-1,-1,0,0);
 
  /** Text padding in pixels */
  protected int padding = 6;
 
  private Color color = Color.white;
 
  private Color backgroundColor = Color.black;
 
  // ---------------------------------------------------------------------
  // constructors:
 
 
  public Notification(int x, int y, String bodyText, String buttonText) {
    this.centerX = x;
    this.centerY = y;
    this.bodyText = bodyText;
    this.buttonText = buttonText;
  }
 
 
  // ---------------------------------------------------------------------
   
   
  /**
   *
   * @param container
   * @param listener
   * @param buttonSound
   * @throws SlickException
   */
  public void init(
      GameContainer container,
      StickyListener listener,
      Sound buttonSound
  ) throws SlickException {
    this.createTextButton(container, listener, buttonSound);
  }
 
  /**
   *
   * @param container
   * @param delta
   * @throws SlickException
   */
  public void update(GameContainer container, int delta)
    throws SlickException {
   
    if(this.textButton != null)
      this.textButton.update(container, delta);
  }
 
  /**
   *  Allows to draw the world.
   *  */
  public void render(
      GameContainer container,
      Graphics graphics
  ) throws SlickException {
   
    if(this.show == false)
      return;
   
    if(this.shape.getWidth() == 0){
      Font font = graphics.getFont();
     
      int width = font.getWidth(this.bodyText) + this.padding * 2;
      int height = font.getHeight(this.bodyText) + this.padding * 2 * 2;
      this.shape = new Rectangle(
          this.centerX - width/2,
          this.centerY - height,
          width,
          height
      );
     
      int buttonWidth = font.getWidth(this.buttonText) + 4;
     
      // also set the button position:
      this.textButton.moveTo(this.centerX - buttonWidth / 2, this.shape.getCenterY());
    }
   
    graphics.setColor(this.backgroundColor);
    graphics.fill(this.shape);
    graphics.setColor(this.color);
    graphics.draw(this.shape);
   
    graphics.setColor(this.color);
   
    // draw it:
    graphics.drawString(
        this.bodyText,
        this.shape.getX() + this.padding,
        this.shape.getY() + this.padding
    );
   
    if(this.textButton != null)
      this.textButton.render(container, graphics);
   
  }
 
  // ---------------------------------------------------------------------
 
  /**
   *
   * @param container
   * @param listener
   * @param buttonSound
   * @throws SlickException
   */
  private void createTextButton(
      GameContainer container,
      final StickyListener listener,
      Sound buttonSound
  ) throws SlickException {
   
    this.textButton =
      new TextButton(centerX, centerY, this.buttonText, buttonSound);
     
    listener.add(this.textButton);
     
    this.textButton.addListener(new SimpleClickListener() {
      @Override
      public void onClick() {
        hide();
        clickListener.onClick();
      }
    });
  }
 
  // -------------------------------------------------------------------------
 
  /**
   * Hides the dialog.
   */
  public void hide() {
    this.show = false;
    this.shape = new Rectangle(0,0,0,0);
    this.textButton.hide();
  }
 
  /**
   * Displays the dialog.
   */
  public void show() {
    this.show = true;
    this.shape.setX(this.centerX);
    this.shape.setY(this.centerY);
  }
 
  /**
   * Displays the dialog.
   */
  public boolean isVisible() {
    return this.show;
  }
 
  /**
   *
   */
  public void setButtonText(String buttonText) {
    this.buttonText = buttonText;
    if(this.textButton != null)
      this.textButton.setText(buttonText);
  }
 
  /**
   *
   */
  public void setBodyText(String bodyText) {
    this.bodyText = bodyText;
  }
 
  public void setColor(Color color) {
    this.color = color;
  }
 
  public void setBackgroundColor(Color color) {
    this.backgroundColor = color;
  }
 
  public void setPadding(int padding) {
    this.padding = padding;
  }
 
  /**
   *
   * @param centerX center position x
   * @param centerY center position y
   */
  public void moveTo(int centerX, int centerY) {
    this.centerX = centerX;
    this.centerY = centerY;
    this.shape = new Rectangle(0, 0, 0, 0);
  }
 
  /**
   *
   * @param listener
   */
  public void addListener(SimpleClickListener listener) {
    this.clickListener = listener;
  }
 
}
TOP

Related Classes of com.aem.sticky.dialog.Notification

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.