Package org.spoutcraft.client

Source Code of org.spoutcraft.client.ScheduledTextFieldUpdate

/*
* This file is part of Spoutcraft.
*
* Copyright (c) 2011 SpoutcraftDev <http://spoutcraft.org/>
* Spoutcraft is licensed under the GNU Lesser General Public License.
*
* Spoutcraft 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 3 of the License, or
* (at your option) any later version.
*
* Spoutcraft 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 program.  If not, see <http://www.gnu.org/licenses/>.
*/
package org.spoutcraft.client;

import org.spoutcraft.api.gui.Screen;
import org.spoutcraft.api.gui.TextField;
import org.spoutcraft.client.packet.PacketControlAction;

public class ScheduledTextFieldUpdate implements Runnable {
  private static final long DELAY_TIME = 500;
  private static final long SLEEP_TIME = 125;
  private TextField textField;
  private Screen screen;
  private long sendTime;
  private Thread thread;

  public ScheduledTextFieldUpdate(Screen screen, TextField textField) {
    this.textField = textField;
    this.screen = screen;
  }

  public void run() {
    delay();
    while (!expired()) {
      try {
        Thread.sleep(SLEEP_TIME);
      } catch (InterruptedException e) {
        break;
      }
    }
    textField.onTypingFinished();
    SpoutClient.getInstance().getPacketManager().sendSpoutPacket(new PacketControlAction(screen, textField, textField.getText(), textField.getCursorPosition()));
  }

  public synchronized void delay() {
    sendTime = System.currentTimeMillis() + DELAY_TIME;
  }

  public synchronized boolean expired() {
    return sendTime <= System.currentTimeMillis();
  }

  public synchronized void start() {
    (thread = new Thread(this)).start();
  }

  public synchronized boolean isAlive() {
    return thread.isAlive();
  }
}
TOP

Related Classes of org.spoutcraft.client.ScheduledTextFieldUpdate

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.