All Downloads are FREE. Search and download functionalities are using the official Maven repository.

de.lessvoid.nifty.examples.mouse.MouseStartScreen Maven / Gradle / Ivy

Go to download

Lots of Nifty example code! You can find the source for nearly all demos/tutorials in here.

There is a newer version: 1.4.3
Show newest version
package de.lessvoid.nifty.examples.mouse;

import de.lessvoid.nifty.Nifty;
import de.lessvoid.nifty.NiftyEventSubscriber;
import de.lessvoid.nifty.NiftyMouse;
import de.lessvoid.nifty.controls.Label;
import de.lessvoid.nifty.elements.Element;
import de.lessvoid.nifty.elements.events.*;
import de.lessvoid.nifty.examples.NiftyExample;
import de.lessvoid.nifty.input.NiftyMouseInputEvent;
import de.lessvoid.nifty.screen.Screen;
import de.lessvoid.nifty.screen.ScreenController;

import javax.annotation.Nonnull;
import javax.annotation.Nullable;
import java.io.IOException;

/**
 * @author void
 */
public class MouseStartScreen implements ScreenController, NiftyExample {
  private Nifty nifty;
  private Screen screen;
  @Nullable
  private Label mousePrimaryText;
  @Nullable
  private Label mouseSecondaryText;
  @Nullable
  private Label mouseTertiaryText;
  @Nullable
  private Label mouseMoveText;
  @Nullable
  private Label mouseWheelText;

  @Nullable
  private Label mouseEventsPrimaryText;
  @Nullable
  private Label mouseEventsSecondaryText;
  @Nullable
  private Label mouseEventsTertiaryText;
  @Nullable
  private Label mouseEventsMoveText;
  @Nullable
  private Label mouseEventsWheelText;
  @Nullable
  private Label mouseEventsText;

  @Override
  public void bind(@Nonnull final Nifty newNifty, @Nonnull final Screen newScreen) {
    this.nifty = newNifty;
    this.screen = newScreen;
    this.mousePrimaryText = screen.findNiftyControl("mousePrimaryText", Label.class);
    this.mouseSecondaryText = screen.findNiftyControl("mouseSecondaryText", Label.class);
    this.mouseTertiaryText = screen.findNiftyControl("mouseTertiaryText", Label.class);
    this.mouseMoveText = screen.findNiftyControl("mouseMoveText", Label.class);
    this.mouseWheelText = screen.findNiftyControl("mouseWheelText", Label.class);

    this.mouseEventsPrimaryText = screen.findNiftyControl("mouseEventsPrimaryText", Label.class);
    this.mouseEventsSecondaryText = screen.findNiftyControl("mouseEventsSecondaryText", Label.class);
    this.mouseEventsTertiaryText = screen.findNiftyControl("mouseEventsTertiaryText", Label.class);
    this.mouseEventsMoveText = screen.findNiftyControl("mouseEventsMoveText", Label.class);
    this.mouseEventsWheelText = screen.findNiftyControl("mouseEventsWheelText", Label.class);
    this.mouseEventsText = screen.findNiftyControl("mouseEventsText", Label.class);
  }

  @Override
  public void onStartScreen() {
    System.out.println(screen.debugOutput());
  }

  @Override
  public void onEndScreen() {
  }

  public void quit() {
    nifty.setAlternateKeyForNextLoadXml("fade");
    nifty.fromXml("all/intro.xml", "menu");
  }

  // the old regular interact kinda way

  // primay

  public void primaryClick() {
    mousePrimaryText.setText("clicked");
  }

  public void primaryRelease() {
    mousePrimaryText.setText("");
  }

  public void primaryClickMouseMoved() {
    mousePrimaryText.setText("clicked mouse moved");
  }

  // secondary

  public void secondaryClick() {
    mouseSecondaryText.setText("clicked");
  }

  public void secondaryClickMouseMove() {
    mouseSecondaryText.setText("clicked mouse moved");
  }

  public void secondaryRelease() {
    mouseSecondaryText.setText("");
  }

  // tertiary

  public void tertiaryClick() {
    mouseTertiaryText.setText("clicked");
  }

  public void tertiaryClickMouseMove() {
    mouseTertiaryText.setText("clicked mouse moved");
  }

  public void tertiaryRelease() {
    mouseTertiaryText.setText("");
  }

  // mouse over

  public void mouseOver(final Element element, @Nonnull final NiftyMouseInputEvent event) {
    mouseMoveText.setText(event.getMouseX() + ", " + event.getMouseY());
  }

  // mouse wheel

  public void mouseWheel(final Element element, @Nonnull final NiftyMouseInputEvent event) {
    mouseWheelText.setText(String.valueOf(event.getMouseWheel()));
  }

  // the new event subscriber way. please note that these methods really could be anywhere as long as
  // you call nifty.processAnnotations() on the class that implements them.

  // primary

  @NiftyEventSubscriber(id = "mouseEvents")
  public void onElementPrimaryClick(final String id, final NiftyMousePrimaryClickedEvent event) {
    mouseEventsPrimaryText.setText("clicked");
  }

  @NiftyEventSubscriber(id = "mouseEvents")
  public void onElementPrimaryClickMove(final String id, final NiftyMousePrimaryClickedMovedEvent event) {
    mouseEventsPrimaryText.setText("clicked mouse move");
  }

  @NiftyEventSubscriber(id = "mouseEvents")
  public void onElementPrimaryRelease(final String id, final NiftyMousePrimaryReleaseEvent event) {
    mouseEventsPrimaryText.setText("");
  }

  // secondary

  @NiftyEventSubscriber(id = "mouseEvents")
  public void onElementSecondaryClick(final String id, final NiftyMouseSecondaryClickedEvent event) {
    mouseEventsSecondaryText.setText("clicked");
  }

  @NiftyEventSubscriber(id = "mouseEvents")
  public void onElementSecondaryClickMove(final String id, final NiftyMouseSecondaryClickedMovedEvent event) {
    mouseEventsSecondaryText.setText("clicked mouse moved");
  }

  @NiftyEventSubscriber(id = "mouseEvents")
  public void onElementSecondaryRelease(final String id, final NiftyMouseSecondaryReleaseEvent event) {
    mouseEventsSecondaryText.setText("");
  }

  // Tertiary

  @NiftyEventSubscriber(id = "mouseEvents")
  public void onElementTertiaryClick(final String id, final NiftyMouseTertiaryClickedEvent event) {
    mouseEventsTertiaryText.setText("clicked");
  }

  @NiftyEventSubscriber(id = "mouseEvents")
  public void onElementTertiaryClickMove(final String id, final NiftyMouseTertiaryClickedMovedEvent event) {
    mouseEventsTertiaryText.setText("clicked mouse moved");
  }

  @NiftyEventSubscriber(id = "mouseEvents")
  public void onElementTertiaryRelease(final String id, final NiftyMouseTertiaryReleaseEvent event) {
    mouseEventsTertiaryText.setText("");
  }

  // mouse move

  @NiftyEventSubscriber(id = "mouseEvents")
  public void onElementMouseMove(final String id, @Nonnull final NiftyMouseMovedEvent event) {
    mouseEventsMoveText.setText(event.getMouseX() + ", " + event.getMouseY());
  }

  // mouse wheel

  @NiftyEventSubscriber(id = "mouseEvents")
  public void onElementMouseWheel(final String id, @Nonnull final NiftyMouseWheelEvent event) {
    mouseEventsWheelText.setText(String.valueOf(event.getMouseWheel()));
  }

  // general

  @NiftyEventSubscriber(id = "mouseEvents")
  public void onElementMouse(final String id, @Nonnull final NiftyMouseEvent event) {
    mouseEventsText.setText(
        id + " -> " + event.getMouseX() + ", " + event.getMouseY() + ", " + event.getMouseWheel() + "\n" +
            event.isButton0Down() + ", " + event.isButton1Down() + ", " + event.isButton2Down() + "\n" +
            event.isButton0Release() + ", " + event.isButton1Release() + ", " + event.isButton2Release());
  }

  @Nonnull
  @Override
  public String getStartScreen() {
    return "start";
  }

  @Nonnull
  @Override
  public String getMainXML() {
    return "mouse/mouse.xml";
  }

  @Nonnull
  @Override
  public String getTitle() {
    return "Nifty Mouse Control Example";
  }

  @Override
  public void prepareStart(@Nonnull Nifty nifty) {
    // get the NiftyMouse interface that gives us access to all mouse cursor related stuff
    NiftyMouse niftyMouse = nifty.getNiftyMouse();

    try {
      // register/load a mouse cursor (this would be done somewhere at the beginning)
      niftyMouse.registerMouseCursor("mouseId", "nifty-cursor.png", 0, 0);

      // change the cursor to the one we've loaded before
      niftyMouse.enableMouseCursor("mouseId");
    } catch (IOException e) {
      System.err.println("Failed to load mouse cursor!");
    }

    // we could set the position like so
    niftyMouse.setMousePosition(20, 20);
  }
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy