Package es.emergya.ui.base

Source Code of es.emergya.ui.base.Cerrar

/*
* Copyright (C) 2010, Emergya (http://www.emergya.es)
*
* @author <a href="mailto:jlrodriguez@emergya.es">Juan Luís Rodríguez</a>
* @author <a href="mailto:marias@emergya.es">María Arias</a>
*
* This file is part of GoFleet
*
* This software 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; either version 2 of the License, or
* (at your option) any later version.
*
* This software 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.
*
* You should have received a copy of the GNU 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
*
* As a special exception, if you link this library with other files to
* produce an executable, this library does not by itself cause the
* resulting executable to be covered by the GNU General Public License.
* This exception does not however invalidate any other reasons why the
* executable file might be covered by the GNU General Public License.
*/
package es.emergya.ui.base;

import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.Dimension;
import java.awt.Font;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
import java.util.Calendar;
import java.util.Date;
import java.util.Stack;

import javax.swing.ImageIcon;
import javax.swing.JDialog;
import javax.swing.JLabel;
import javax.swing.SwingUtilities;
import javax.swing.border.MatteBorder;

import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.gofleet.context.GoWired;

import es.emergya.cliente.constants.LogicConstants;

public class Message {
  private final long serialVersionUID = -6691454170753397497L;
  private Stack<String> colaMensajes;
  private Font font = null;
  private Color color;
  private Date fecha;
  final Log log = LogFactory.getLog(this.getClass());

  @GoWired
  public BasicWindow window;

  public void setWindow(BasicWindow window) {
    this.window = window;
  }

  /** Message font size. */
  private final float MESSAGE_FONT_SIZE = 20.0f;

  {
    colaMensajes = new java.util.Stack<String>();
    color = new Color(248, 216, 152);

    this.fecha = Calendar.getInstance().getTime();

    font = LogicConstants.deriveBoldFont(MESSAGE_FONT_SIZE);

  }

  private void inicializar(final String texto) {
    log.trace("inicializar(" + texto + ")");
    final Message message_ = this;
   
    SwingUtilities.invokeLater(new Runnable() {

      @Override
      public void run() {
        log.trace("Sacamos un nuevo mensaje: " + texto);
        JDialog frame = new JDialog(window.getFrame(), true);
        frame.setUndecorated(true);
        frame.getContentPane().setBackground(Color.WHITE);
        frame.setLocation(150, window.getHeight() - 140);
        frame.setSize(new Dimension(window.getWidth() - 160, 130));
        frame.setName("Incoming Message");
        frame.setBackground(Color.WHITE);
        frame.getRootPane().setBorder(
            new MatteBorder(4, 4, 4, 4, color));

        frame.setLayout(new BorderLayout());
        if (font != null)
          frame.setFont(font);

        JLabel icon = new JLabel(new ImageIcon(this.getClass()
            .getResource("/images/button-ok.png")));
        icon.setToolTipText("Cerrar");

        icon.removeMouseListener(null);
        icon.addMouseListener(new Cerrar(frame, message_));

        JLabel text = new JLabel(texto);
        text.setBackground(Color.WHITE);
        text.setForeground(Color.BLACK);
        frame.add(text, BorderLayout.WEST);
        frame.add(icon, BorderLayout.EAST);

        frame.setVisible(true);
      }
    });
  }

  public void setMessage(String message) {

    if (message == null || message.trim().equals(""))
      return;
    log.trace("setMessage(" + message + ")");

    colaMensajes.add("<html>" + message + "</html>");

    getNext();
  }

  public void updateAll() {
    try {
      // List<Avisos> avisos = AvisosHome.getNotRead(this.fecha);
      // for (Avisos a : avisos) {
      // setMessage(a.getTexto());
      // if (a.getHora().after(this.fecha))
      // this.fecha = a.getHora();
      // }

      // getNext();
    } catch (Exception e) {
      log.error(e, e);
    }
  }

  public void changeColor(Color color) {
    log.trace("changeColor()");
    this.color = color;
  }

  protected void getNext() {
    log.trace("getNext()");

    if (!window.isAuthenticated())
      return;

    try {
      String s = null;
      while (!colaMensajes.empty() && s == null) {
        s = colaMensajes.remove(0);
        if (s != null) {
          log.trace("Mostramos " + s);
          inicializar(s);
        }
      }
    } catch (Exception e) {
      log.error(e, e);
    }

  }

}

class Cerrar extends MouseAdapter {

  private JDialog frame = null;
  private Message m = null;
 
  Cerrar(JDialog frame, Message m) {
    super();
    this.frame = frame;
    this.m = m;
  }

  @Override
  public void mouseClicked(MouseEvent e) {
    if (e.getClickCount() == 1) {
      if (this.frame != null)
        this.frame.dispose();
      this.m.getNext();
    }
  }
}
TOP

Related Classes of es.emergya.ui.base.Cerrar

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.