*
* The MIT License (MIT)
*
- * Copyright (C) 2016 Kevin Lamonte
+ * Copyright (C) 2017 Kevin Lamonte
*
* Permission is hereby granted, free of charge, to any person obtaining a
* copy of this software and associated documentation files (the "Software"),
import java.util.List;
import java.util.ArrayList;
+import jexer.backend.Screen;
import jexer.bits.ColorTheme;
import jexer.event.TCommandEvent;
import jexer.event.TInputEvent;
import jexer.event.TMenuEvent;
import jexer.event.TMouseEvent;
import jexer.event.TResizeEvent;
-import jexer.io.Screen;
import jexer.menu.TMenu;
import static jexer.TKeypress.*;
this.height = height;
}
+ /**
+ * Change the dimensions.
+ *
+ * @param x absolute X position of the top-left corner
+ * @param y absolute Y position of the top-left corner
+ * @param width new widget width
+ * @param height new widget height
+ */
+ public final void setDimensions(final int x, final int y, final int width,
+ final int height) {
+
+ setX(x);
+ setY(y);
+ setWidth(width);
+ setHeight(height);
+ }
+
/**
* My tab order inside a window or containing widget.
*/
if (parent == this) {
return x;
}
- if ((parent instanceof TWindow) && !(parent instanceof TMenu)) {
+ if ((parent instanceof TWindow)
+ && !(parent instanceof TMenu)
+ && !(parent instanceof TDesktop)
+ ) {
// Widgets on a TWindow have (0,0) as their top-left, but this is
// actually the TWindow's (1,1).
return parent.getAbsoluteX() + x + 1;
if (parent == this) {
return y;
}
- if ((parent instanceof TWindow) && !(parent instanceof TMenu)) {
+ if ((parent instanceof TWindow)
+ && !(parent instanceof TMenu)
+ && !(parent instanceof TDesktop)
+ ) {
// Widgets on a TWindow have (0,0) as their top-left, but this is
// actually the TWindow's (1,1).
return parent.getAbsoluteY() + y + 1;
*/
public void onMouseDown(final TMouseEvent mouse) {
// Default: do nothing, pass to children instead
- for (TWidget widget: children) {
+ for (int i = children.size() - 1 ; i >= 0 ; i--) {
+ TWidget widget = children.get(i);
if (widget.mouseWouldHit(mouse)) {
// Dispatch to this child, also activate it
activate(widget);
*/
public void onMouseUp(final TMouseEvent mouse) {
// Default: do nothing, pass to children instead
- for (TWidget widget: children) {
+ for (int i = children.size() - 1 ; i >= 0 ; i--) {
+ TWidget widget = children.get(i);
if (widget.mouseWouldHit(mouse)) {
// Dispatch to this child, also activate it
activate(widget);
* @param resize resize event
*/
public void onResize(final TResizeEvent resize) {
- // Default: do nothing, pass to children instead
- for (TWidget widget: children) {
- widget.onResize(resize);
+ // Default: change my width/height.
+ if (resize.getType() == TResizeEvent.Type.WIDGET) {
+ width = resize.getWidth();
+ height = resize.getHeight();
+ } else {
+ // Let children see the screen resize
+ for (TWidget widget: children) {
+ widget.onResize(resize);
+ }
}
}
return new TText(this, text, x, y, width, height, "ttext");
}
+ /**
+ * Convenience function to add an editable text area box to this
+ * container/window.
+ *
+ * @param text text on the screen
+ * @param x column relative to parent
+ * @param y row relative to parent
+ * @param width width of text area
+ * @param height height of text area
+ * @return the new text box
+ */
+ public final TEditorWidget addEditor(final String text, final int x,
+ final int y, final int width, final int height) {
+
+ return new TEditorWidget(this, text, x, y, width, height);
+ }
+
/**
* Convenience function to spawn a message box.
*