Package net.cis.client.game.ui.debug

Source Code of net.cis.client.game.ui.debug.DebugGUI

package net.cis.client.game.ui.debug;

import java.text.SimpleDateFormat;
import java.util.List;

import net.cis.client.game.ui.debug.ctrl.TextFieldInputMappingAdv;
import net.cis.common.script.ReflectionScript;

import com.jme3.app.SimpleApplication;
import com.jme3.niftygui.NiftyJmeDisplay;

import de.lessvoid.nifty.Nifty;
import de.lessvoid.nifty.NiftyEventSubscriber;
import de.lessvoid.nifty.builder.ControlBuilder;
import de.lessvoid.nifty.builder.ControlDefinitionBuilder;
import de.lessvoid.nifty.builder.PanelBuilder;
import de.lessvoid.nifty.builder.TextBuilder;
import de.lessvoid.nifty.controls.ListBox;
import de.lessvoid.nifty.controls.NiftyInputControl;
import de.lessvoid.nifty.controls.TextField;
import de.lessvoid.nifty.controls.listbox.builder.ListBoxBuilder;
import de.lessvoid.nifty.elements.Element;
import de.lessvoid.nifty.input.NiftyInputEvent;
import de.lessvoid.nifty.screen.KeyInputHandler;
import de.lessvoid.nifty.screen.Screen;
import de.lessvoid.nifty.screen.ScreenController;
import de.lessvoid.nifty.tools.Color;

public class DebugGUI implements ScreenController
{

  private SimpleApplication simpleApplication;
  private Nifty nifty;
  private boolean isInPause = false;
  private TextField textfield;
  private ListBox<DebugEntry> debugEntries;
  private ListBox<String> codeSuggestions;
  private ReflectionScript script;
 
  private static final Color RED = new Color(1, 0, 0, 1);
  private static final Color YELLOW = new Color(1, 1, 0, 1);
  private static final Color GREEN = new Color(0, 1, 0, 1);
 
  private static final SimpleDateFormat timeFormat = new SimpleDateFormat("HH:mm:ss");
 
 
  public DebugGUI(SimpleApplication sa)
  {
    simpleApplication = sa;
    script = new ReflectionScript(sa);
   
    initDisplay();
    initInputTextField();
    initDebugTextListbox();
    initCodeSuggesitonListbox();
   
  }
 
  protected void initDisplay()
  {
    NiftyJmeDisplay niftyDisplay = new NiftyJmeDisplay(simpleApplication.getAssetManager(), simpleApplication.getInputManager(), simpleApplication.getAudioRenderer(), simpleApplication.getGuiViewPort());
    nifty = niftyDisplay.getNifty();
    nifty.fromXml("hud/debug/debugGUI.xml", "debugGUI", this);
    simpleApplication.getGuiViewPort().addProcessor(niftyDisplay);
  }
  protected void initInputTextField()
  {
    textfield = nifty.getScreen("debugGUI").findNiftyControl("txtInput", TextField.class);
    Element elem = textfield.getElement();
    elem.attachInputControl(new NiftyInputControl(elem.getAttachedInputControl().getController(), new TextFieldInputMappingAdv()));
    elem.getAttachedInputControl().addInputHandler(new KeyInputHandler() {
     
      @Override
      public boolean keyEvent(NiftyInputEvent inputEvent) {
        return onTextChanged(inputEvent);
      }
    });
  }
  @SuppressWarnings("unchecked")
  protected void initDebugTextListbox()
  {
  //((ListBox<DebugEntry>)nifty.getScreen("debugGUI").findNiftyControl("listbox", ListBox.class)).setListBoxViewConverter(new DebugEntryViewConverter());
  ControlDefinitionBuilder rowControlBuilder = new ControlDefinitionBuilder("row") {
    {
      panel(new PanelBuilder() {
        {
          childLayoutHorizontal();
          width("100%");
          alignLeft();
          text(new TextBuilder("#lbTextElem") {
            {
              width("100%");
              style("base-font");
              alignLeft();
              textHAlignLeft();
            }
          });
        }
      });
    }
  };
   rowControlBuilder.registerControlDefintion(nifty);

  new ListBoxBuilder("debugEntries") {{ viewConverterClass(DebugEntryViewConverter.class); displayItems(12); selectionModeDisabled(); hideHorizontalScrollbar(); width("100%"); height("100%"); childLayoutVertical(); optionalVerticalScrollbar(); alignLeft(); valignBottom(); control(new ControlBuilder("row")); }}
  .build(nifty, nifty.getScreen("debugGUI"), nifty.getScreen("debugGUI").findElementByName("chatpanel"));
 
  debugEntries = nifty.getScreen("debugGUI").findNiftyControl("debugEntries", ListBox.class);
 
  }
 
  @SuppressWarnings("unchecked")
  protected void initCodeSuggesitonListbox()
  {   
    codeSuggestions = (ListBox<String>)nifty.getScreen("debugGUI").findNiftyControl("scriptHelp", ListBox.class);
    codeSuggestions.getElement().hide();
  }
 
  public void togglePauseMode()
  {
    isInPause = !isInPause;
    simpleApplication.getInputManager().setCursorVisible(isInPause);
   
    nifty.getScreen("debugGUI").findElementByName("mainMenu").setVisible(isInPause);
    if(!isInPause)
      {
      nifty.getScreen("debugGUI").findElementByName("chatlayer").disable();
      codeSuggestions.getElement().hide();
      }
    else
      {
      nifty.getScreen("debugGUI").findElementByName("chatlayer").enable();
      }
  }
 
  public void onMainMenuClick(String command)
  {
    if(command.equalsIgnoreCase("exit"))
      simpleApplication.stop();
    if(command.equalsIgnoreCase("blah"))
      {
      addDebugOutput("Hello World!");
      }
    else
      System.out.println("Unknown Command: " + command);
   
   
  }
 
  public void addDebugOutput(String s){addDebugOutput(s, DebugLogLevel.Info);}
  public void addDebugOutput(String s, DebugLogLevel l)
  {
    Color c = (l == DebugLogLevel.Error ? RED : (l == DebugLogLevel.Warning ? YELLOW : GREEN));
   
    debugEntries.addItem(new DebugEntry(timeFormat.format(System.currentTimeMillis()) + "> " +s, c));
    debugEntries.showItemByIndex(debugEntries.itemCount() - 1);
  }

  @Override
  public void bind(Nifty arg0, Screen arg1) {
  }

  @Override
  public void onEndScreen() {
  }

  @Override
  public void onStartScreen() {
  }
   
  //It's a PRE-Input event
  @NiftyEventSubscriber(id="txtInput")
  public void onTextChanged(final String id, final NiftyInputEvent event)
  {
    System.out.println(event.toString() + " [" + event.getCharacter() + "] --> " +  textfield.getText());
    System.out.println(nifty.getScreen("debugGUI").findElementByName("chatlayer").getStyle());
    codeSuggestions.getElement().show();
  }
 
  //The PostInputEvent
  protected boolean onTextChanged(NiftyInputEvent inputEvent)
  {
    String toEval = textfield.getText().trim();
    script.setEvalString(toEval);
   
    codeSuggestions.clear();
       
    if(inputEvent == NiftyInputEvent.SubmitText)
      {
      String ret = script.eval();
      addDebugOutput(ret, ret.startsWith("Err") ? DebugLogLevel.Error : (ret.startsWith("Warn") ? DebugLogLevel.Warning : DebugLogLevel.Info));

      return false;
      }
   
   
   
    List<String> suggestions = script.getSuggestions();
    if(suggestions != null)
      codeSuggestions.addAllItems(suggestions);
   
    return false;
  }
}
TOP

Related Classes of net.cis.client.game.ui.debug.DebugGUI

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.