Overview | Package | Class | Tree | Deprecated | Index | Help
PREV CLASS NEXT CLASS | FRAMES NO FRAMES
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD

## PER.basicGUI
Class BasicGUI

    java.lang.Object
      java.awt.Component
          java.awt.Container
              java.awt.Window
                  java.awt.Frame
                      javax.swing.JFrame
                          PER.basicGUI.BasicGUI

All Implemented Interfaces:
  javax.accessibility.Accessible, java.awt.image.ImageObserver, java.awt.MenuContainer, javax.swing.RootPaneContainer, java.io.Serializable, javax.swing.WindowConstants

public class BasicGUI
extends javax.swing.JFrame

BasicGUI is a graphical user interface for people wishing to program the Personal Exploration Rover (PER). BasicGUI provides some basic functionality, allowing programmers to design their own PER programs without the need to design a graphical interface.

The BasicGUI interface already provides a way for people to specify an IP address, connect to a rover, take and display pictures and panoramas, save images, and view text output from the rover.

BasicGUI also contains ten command buttons. The programmer can specify the commands associated with these buttons, as well as the button text, and an associated command description. There are also six input fields which can be used to specify variables used by the commands.

Each command button is already linked to a mouseListener, so pressing the button will launch the command. The programmer only needs to fill in the `command` method corresponding to the button they wish to use. For example, to program `button1` to drive 50 cm, you could do something like the following:

``

       private void command1() {
           //create a DriveToAction
           Action currAction = new DriveToAction(50);
           //execute the Action and print the results
           if(executeAction(currAction)){
               outputln("Drive successful");
           }else{
               outputln("Drive failed: "+ActionConstants.getErrorText(currAction.getReturnValue()));
           }
       }

The above code sample illustrates two other useful functions in BasicGUI: `executeAction` and `outputln`. `executeAction` is a blocking method for executing an Action. `outputln` will print a message to the output text area in the interface. Another useful function to be aware of is `displayImage` which will display an image in the interface and allow the image to be viewed at full resolution or scaled.

To program `button1` to drive a variable distance based on user input, you could change the above example slightly: ``

       private void command1() {
           //get the distance entered by the user in the X variable field
           int dist = intInput(variableX);
           //check that the input is valid
           if(inputIsValid()){
               Action currAction = new DriveToAction(dist);
               ...

The sample code above uses one of the variable input fields to determine the driving distance. Although text entered into a JTextField is always a string, BasicGUI provides convenience methods to allow you to convert the input into other data types and check if the input is valid.

When you have programmed a button for a certain task, you will also want to change the text displayed on that button and provide a description of the task. To do this, modify the lines for the button in `setButtonText` and `setDescriptions`. For our example that drives a variable distance based on input variable X, we might do something like this:

``

      private void setButtonText(){
          button1.setText("Drive");
          ...

      private void setDescriptions(){
          description1.setText("Drive X cm");
          ...

One final feature of BasicGUI is the Stop button. If you use `executeAction` to execute Actions, the Stop button will work to kill these actions. If you use other Rover functions or the `Action.doAction` method to execute Actions, you will need to make sure that the Stop button still has the ability to kill these actions. For example, you may want to print a message while the rover is driving that tells how far it has traveled. ``

       private void command1() {
           Action currAction = new DriveToAction(100);
           //start driving
           currAction.doAction(rov);
           //wait for the rover to finish driving
           while(!currAction.isCompleted()){
               outputln("Drove " + rov.highLevelState.getDist() + " cm.");
               try{
                   Thread.sleep(100);
               }catch(java.lang.InterruptedException e){
                   //stop driving if someone hits the stop button
                   currAction.kill();
               }
           }
       }

The Stop button sets the `stop` variable to `true` so if you want the rover to do a dance until the Stop button is hit you could use a simple while loop such as: `

       private void command1() {
           while(!stop){
               //do a dance...
           }
       }

`

See Also:
  Serialized Form

Nested Class Summary

Nested classes inherited from class javax.swing.JFrame
`javax.swing.JFrame.AccessibleJFrame`

Nested classes inherited from class java.awt.Frame
`java.awt.Frame.AccessibleAWTFrame`

Nested classes inherited from class java.awt.Window
`java.awt.Window.AccessibleAWTWindow`

Nested classes inherited from class java.awt.Container
`java.awt.Container.AccessibleAWTContainer`

Nested classes inherited from class java.awt.Component
`java.awt.Component.AccessibleAWTComponent, java.awt.Component.BltBufferStrategy, java.awt.Component.FlipBufferStrategy`

Field Summary

Fields inherited from class javax.swing.JFrame
`accessibleContext, EXIT_ON_CLOSE, rootPane, rootPaneCheckingEnabled`

Fields inherited from class java.awt.Frame
`CROSSHAIR_CURSOR, DEFAULT_CURSOR, E_RESIZE_CURSOR, HAND_CURSOR, ICONIFIED, MAXIMIZED_BOTH, MAXIMIZED_HORIZ, MAXIMIZED_VERT, MOVE_CURSOR, N_RESIZE_CURSOR, NE_RESIZE_CURSOR, NORMAL, NW_RESIZE_CURSOR, S_RESIZE_CURSOR, SE_RESIZE_CURSOR, SW_RESIZE_CURSOR, TEXT_CURSOR, W_RESIZE_CURSOR, WAIT_CURSOR`

Fields inherited from class java.awt.Component
`BOTTOM_ALIGNMENT, CENTER_ALIGNMENT, LEFT_ALIGNMENT, RIGHT_ALIGNMENT, TOP_ALIGNMENT`

Fields inherited from interface javax.swing.WindowConstants
`DISPOSE_ON_CLOSE, DO_NOTHING_ON_CLOSE, HIDE_ON_CLOSE`

Fields inherited from interface java.awt.image.ImageObserver
`ABORT, ALLBITS, ERROR, FRAMEBITS, HEIGHT, PROPERTIES, SOMEBITS, WIDTH`

Constructor Summary
`BasicGUI(Rover r)` Creates new form BasicGUI

Method Summary
`static void` | `main(java.lang.String[] args)`

Methods inherited from class javax.swing.JFrame
`addImpl, createRootPane, frameInit, getAccessibleContext, getContentPane, getDefaultCloseOperation, getGlassPane, getJMenuBar, getLayeredPane, getRootPane, isDefaultLookAndFeelDecorated, isRootPaneCheckingEnabled, paramString, processWindowEvent, remove, setContentPane, setDefaultCloseOperation, setDefaultLookAndFeelDecorated, setGlassPane, setJMenuBar, setLayeredPane, setLayout, setRootPane, setRootPaneCheckingEnabled, update`

Methods inherited from class java.awt.Frame
`addNotify, finalize, getCursorType, getExtendedState, getFrames, getIconImage, getMaximizedBounds, getMenuBar, getState, getTitle, isResizable, isUndecorated, remove, removeNotify, setCursor, setExtendedState, setIconImage, setMaximizedBounds, setMenuBar, setResizable, setState, setTitle, setUndecorated`

Methods inherited from class java.awt.Window
`addPropertyChangeListener, addPropertyChangeListener, addWindowFocusListener, addWindowListener, addWindowStateListener, applyResourceBundle, applyResourceBundle, createBufferStrategy, createBufferStrategy, dispose, getBufferStrategy, getFocusableWindowState, getFocusCycleRootAncestor, getFocusOwner, getFocusTraversalKeys, getGraphicsConfiguration, getInputContext, getListeners, getLocale, getMostRecentFocusOwner, getOwnedWindows, getOwner, getToolkit, getWarningString, getWindowFocusListeners, getWindowListeners, getWindowStateListeners, hide, isActive, isFocusableWindow, isFocusCycleRoot, isFocused, isShowing, pack, postEvent, processEvent, processWindowFocusEvent, processWindowStateEvent, removeWindowFocusListener, removeWindowListener, removeWindowStateListener, setCursor, setFocusableWindowState, setFocusCycleRoot, setLocationRelativeTo, show, toBack, toFront`

Methods inherited from class java.awt.Container
`add, add, add, add, add, addContainerListener, applyComponentOrientation, areFocusTraversalKeysSet, countComponents, deliverEvent, doLayout, findComponentAt, findComponentAt, getAlignmentX, getAlignmentY, getComponent, getComponentAt, getComponentAt, getComponentCount, getComponents, getContainerListeners, getFocusTraversalPolicy, getInsets, getLayout, getMaximumSize, getMinimumSize, getPreferredSize, insets, invalidate, isAncestorOf, isFocusCycleRoot, isFocusTraversalPolicySet, layout, list, list, locate, minimumSize, paint, paintComponents, preferredSize, print, printComponents, processContainerEvent, remove, removeAll, removeContainerListener, setFocusTraversalKeys, setFocusTraversalPolicy, setFont, transferFocusBackward, transferFocusDownCycle, validate, validateTree`

Methods inherited from class java.awt.Component
`action, add, addComponentListener, addFocusListener, addHierarchyBoundsListener, addHierarchyListener, addInputMethodListener, addKeyListener, addMouseListener, addMouseMotionListener, addMouseWheelListener, bounds, checkImage, checkImage, coalesceEvents, contains, contains, createImage, createImage, createVolatileImage, createVolatileImage, disable, disableEvents, dispatchEvent, enable, enable, enableEvents, enableInputMethods, firePropertyChange, firePropertyChange, firePropertyChange, getBackground, getBounds, getBounds, getColorModel, getComponentListeners, getComponentOrientation, getCursor, getDropTarget, getFocusListeners, getFocusTraversalKeysEnabled, getFont, getFontMetrics, getForeground, getGraphics, getHeight, getHierarchyBoundsListeners, getHierarchyListeners, getIgnoreRepaint, getInputMethodListeners, getInputMethodRequests, getKeyListeners, getLocation, getLocation, getLocationOnScreen, getMouseListeners, getMouseMotionListeners, getMouseWheelListeners, getName, getParent, getPeer, getPropertyChangeListeners, getPropertyChangeListeners, getSize, getSize, getTreeLock, getWidth, getX, getY, gotFocus, handleEvent, hasFocus, imageUpdate, inside, isBackgroundSet, isCursorSet, isDisplayable, isDoubleBuffered, isEnabled, isFocusable, isFocusOwner, isFocusTraversable, isFontSet, isForegroundSet, isLightweight, isOpaque, isValid, isVisible, keyDown, keyUp, list, list, list, location, lostFocus, mouseDown, mouseDrag, mouseEnter, mouseExit, mouseMove, mouseUp, move, nextFocus, paintAll, prepareImage, prepareImage, printAll, processComponentEvent, processFocusEvent, processHierarchyBoundsEvent, processHierarchyEvent, processInputMethodEvent, processKeyEvent, processMouseEvent, processMouseMotionEvent, processMouseWheelEvent, removeComponentListener, removeFocusListener, removeHierarchyBoundsListener, removeHierarchyListener, removeInputMethodListener, removeKeyListener, removeMouseListener, removeMouseMotionListener, removeMouseWheelListener, removePropertyChangeListener, removePropertyChangeListener, repaint, repaint, repaint, repaint, requestFocus, requestFocus, requestFocusInWindow, requestFocusInWindow, reshape, resize, resize, setBackground, setBounds, setBounds, setComponentOrientation, setDropTarget, setEnabled, setFocusable, setFocusTraversalKeysEnabled, setForeground, setIgnoreRepaint, setLocale, setLocation, setLocation, setName, setSize, setSize, setVisible, show, size, toString, transferFocus, transferFocusUpCycle`

Methods inherited from class java.lang.Object
`clone, equals, getClass, hashCode, notify, notifyAll, wait, wait, wait`

Methods inherited from interface java.awt.MenuContainer
`getFont, postEvent`

Constructor Detail

### BasicGUI

    public BasicGUI(Rover r)

  Creates new form BasicGUI

Method Detail

### main

    public static void main(java.lang.String[] args)

  Parameters:
    `args` - the command line arguments

Overview | Package | Class | Tree | Deprecated | Index | Help
PREV CLASS NEXT CLASS | FRAMES NO FRAMES
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD