import jexer.bits.Cell;
import jexer.bits.CellAttributes;
+import jexer.bits.Clipboard;
/**
* MultiScreen mirrors its I/O to several screens.
* @return drawing boundary
*/
public int getClipRight() {
- return screens.get(0).getClipRight();
+ if (screens.size() > 0) {
+ return screens.get(0).getClipRight();
+ }
+ return 0;
}
/**
* @return drawing boundary
*/
public int getClipBottom() {
- return screens.get(0).getClipBottom();
+ if (screens.size() > 0) {
+ return screens.get(0).getClipBottom();
+ }
+ return 0;
}
/**
* @return drawing boundary
*/
public int getClipLeft() {
- return screens.get(0).getClipLeft();
+ if (screens.size() > 0) {
+ return screens.get(0).getClipLeft();
+ }
+ return 0;
}
/**
* @return drawing boundary
*/
public int getClipTop() {
- return screens.get(0).getClipTop();
+ if (screens.size() > 0) {
+ return screens.get(0).getClipTop();
+ }
+ return 0;
}
/**
* @return attributes at (x, y)
*/
public CellAttributes getAttrXY(final int x, final int y) {
- return screens.get(0).getAttrXY(x, y);
+ if (screens.size() > 0) {
+ return screens.get(0).getAttrXY(x, y);
+ }
+ return new CellAttributes();
}
/**
* @return the character + attributes
*/
public Cell getCharXY(final int x, final int y) {
- return screens.get(0).getCharXY(x, y);
+ if (screens.size() > 0) {
+ return screens.get(0).getCharXY(x, y);
+ }
+ return new Cell();
}
/**
*/
public int getHeight() {
// Return the smallest height of the screens.
- int height = screens.get(0).getHeight();
+ int height = 25;
+ if (screens.size() > 0) {
+ height = screens.get(0).getHeight();
+ }
for (Screen screen: screens) {
if (screen.getHeight() < height) {
height = screen.getHeight();
*/
public int getWidth() {
// Return the smallest width of the screens.
- int width = screens.get(0).getWidth();
+ int width = 80;
+ if (screens.size() > 0) {
+ width = screens.get(0).getWidth();
+ }
for (Screen screen: screens) {
if (screen.getWidth() < width) {
width = screen.getWidth();
* @return true if the cursor is visible
*/
public boolean isCursorVisible() {
- return screens.get(0).isCursorVisible();
+ if (screens.size() > 0) {
+ return screens.get(0).isCursorVisible();
+ }
+ return true;
}
/**
* @return the cursor x column position
*/
public int getCursorX() {
- return screens.get(0).getCursorX();
+ if (screens.size() > 0) {
+ return screens.get(0).getCursorX();
+ }
+ return 0;
}
/**
* @return the cursor y row position
*/
public int getCursorY() {
- return screens.get(0).getCursorY();
+ if (screens.size() > 0) {
+ return screens.get(0).getCursorY();
+ }
+ return 0;
}
/**
}
}
+ /**
+ * Set a selection area on the screen.
+ *
+ * @param x0 the starting X position of the selection
+ * @param y0 the starting Y position of the selection
+ * @param x1 the ending X position of the selection
+ * @param y1 the ending Y position of the selection
+ * @param rectangle if true, this is a rectangle select
+ */
+ public void setSelection(final int x0, final int y0,
+ final int x1, final int y1, final boolean rectangle) {
+
+ for (Screen screen: screens) {
+ screen.setSelection(x0, y0, x1, y1, rectangle);
+ }
+ }
+
+ /**
+ * Copy the screen selection area to the clipboard.
+ *
+ * @param clipboard the clipboard to use
+ * @param x0 the starting X position of the selection
+ * @param y0 the starting Y position of the selection
+ * @param x1 the ending X position of the selection
+ * @param y1 the ending Y position of the selection
+ * @param rectangle if true, this is a rectangle select
+ */
+ public void copySelection(final Clipboard clipboard,
+ final int x0, final int y0, final int x1, final int y1,
+ final boolean rectangle) {
+
+ // Only copy from the first screen.
+ if (screens.size() > 0) {
+ screens.get(0).copySelection(clipboard, x0, y0, x1, y1, rectangle);
+ }
+ }
+
}