fix javadoc header
[fanfix.git] / src / jexer / TTreeItem.java
index e97ea0eb5aa641a4bd818033c6074136d5d0e671..2770c463bbd026e5893a01ec8e72b153dabdf5ab 100644 (file)
@@ -1,4 +1,4 @@
-/**
+/*
  * Jexer - Java Text User Interface
  *
  * License: LGPLv3 or later
@@ -76,7 +76,7 @@ public class TTreeItem extends TWidget {
     /**
      * Set the displayable text for this item.
      *
-     * @param the displayable text for this item
+     * @param text the displayable text for this item
      */
     public final void setText(final String text) {
         this.text = text;
@@ -203,6 +203,18 @@ public class TTreeItem extends TWidget {
         this.selectable = selectable;
     }
 
+    /**
+     * Pointer to the previous keyboard-navigable item (kbUp).  Note package
+     * private access.
+     */
+    TTreeItem keyboardPrevious = null;
+
+    /**
+     * Pointer to the next keyboard-navigable item (kbDown).  Note package
+     * private access.
+     */
+    TTreeItem keyboardNext = null;
+
     /**
      * Public constructor.
      *
@@ -253,10 +265,10 @@ public class TTreeItem extends TWidget {
     /**
      * Recursively expand the tree into a linear array of items.
      *
-     * @param prefix vertical bar of parent levels and such that is set on
+     * @param prefix vertical bar of parent levels and such that is set on
      * each child
-     * @param last if true, this is the "last" leaf node of a tree
-     * @param additional items to add to the array
+     * @param last if true, this is the "last" leaf node of a tree
+     * @return additional items to add to the array
      */
     public List<TTreeItem> expandTree(final String prefix, final boolean last) {
         List<TTreeItem> array = new ArrayList<TTreeItem>();
@@ -323,7 +335,7 @@ public class TTreeItem extends TWidget {
      */
     @Override
     public void onMouseUp(final TMouseEvent mouse) {
-        if ((mouse.getX() == (getExpanderX() - view.hScroller.getValue()))
+        if ((mouse.getX() == (getExpanderX() - view.getHScroller().getValue()))
             && (mouse.getY() == 0)
         ) {
             if (selectable) {
@@ -356,6 +368,34 @@ public class TTreeItem extends TWidget {
         }
     }
 
+    /**
+     * Handle keystrokes.
+     *
+     * @param keypress keystroke event
+     */
+    @Override
+    public void onKeypress(final TKeypressEvent keypress) {
+        if (keypress.equals(kbLeft)
+            || keypress.equals(kbRight)
+            || keypress.equals(kbSpace)
+        ) {
+            if (selectable) {
+                // Flip expanded flag
+                expanded = !expanded;
+                if (expanded == false) {
+                    // Unselect children that became invisible
+                    unselect();
+                }
+                view.setSelected(this);
+            }
+            // Let subclasses do something with this
+            onExpand();
+        } else {
+            // Pass other keys (tab etc.) on to TWidget's handler.
+            super.onKeypress(keypress);
+        }
+    }
+
     /**
      * Draw this item to a window.
      */
@@ -365,7 +405,7 @@ public class TTreeItem extends TWidget {
             return;
         }
 
-        int offset = -view.hScroller.getValue();
+        int offset = -view.getHScroller().getValue();
 
         CellAttributes color = getTheme().getColor("ttreeview");
         CellAttributes textColor = getTheme().getColor("ttreeview");
@@ -384,7 +424,6 @@ public class TTreeItem extends TWidget {
         // Blank out the background
         getScreen().hLineXY(0, 0, getWidth(), ' ', color);
 
-        int expandX = 0;
         String line = prefix;
         if (level > 0) {
             if (last) {
@@ -397,12 +436,12 @@ public class TTreeItem extends TWidget {
                 line += "[ ] ";
             }
         }
-        getScreen().putStrXY(offset, 0, line, color);
+        getScreen().putStringXY(offset, 0, line, color);
         if (selected) {
-            getScreen().putStrXY(offset + line.length(), 0, text,
+            getScreen().putStringXY(offset + line.length(), 0, text,
                 selectedColor);
         } else {
-            getScreen().putStrXY(offset + line.length(), 0, text, textColor);
+            getScreen().putStringXY(offset + line.length(), 0, text, textColor);
         }
         if ((level > 0) && (expandable)) {
             if (expanded) {