public final void updateMode()
    {
        // WE'LL NEED THESE GUYS
        Poseur singleton = Poseur.getPoseur();
        PoseurStateManager state = singleton.getStateManager();
        PoseurState mode = state.getMode();
        PoseurFileManager fileManager = singleton.getFileManager();

        // IN THIS MODE THE USER IS DRAGGING THE MOUSE TO
        // COMPLETE THE DRAWING OF A SINGLE SHAPE
        if (mode == PoseurState.COMPLETE_SHAPE_STATE)
        {
            // THIS USES THE CROSSHAIR
            selectCursor(Cursor.CROSSHAIR_CURSOR);
        }
        // IN THIS MODE THE USER IS ABOUT TO START DRAGGING
        // THE MOUSE TO CREATE A SHAPE
        else if (mode == PoseurState.CREATE_SHAPE_STATE)
        {
            // THIS USES THE CROSSHAIR
            selectCursor(Cursor.CROSSHAIR_CURSOR);
            
            // TURN THE APPROPRIATE CONTROLS ON/OFF
            setEnabledEditControls(false);
            selectionButton.setEnabled(true);            
        }
        // IN THIS STATE THE USER HAS SELECTED A SHAPE
        // ON THE CANVAS AND IS DRAGGING IT
        else if (mode == PoseurState.DRAG_SHAPE_STATE)
        {
            // THIS USES THE MOVE 
            selectCursor(Cursor.MOVE_CURSOR);
        }
        // IN THIS STATE THE USER IS ABLE TO CLICK ON
        // A SHAPE TO SELECT IT. THIS IS THE MOST COMMON
        // STATE AND IS THE DEFAULT AT THE START OF THE APP
        else if (mode == PoseurState.SELECT_SHAPE_STATE)
        {
            // THIS USES THE ARROW CURSOR
            selectCursor(Cursor.DEFAULT_CURSOR);
            
            // THERE IS NO SHAPE SELECTED, SO WE CAN'T
            // USE THE EDIT CONTROLS
            enableSaveAsAndExport();
            setEnabledEditControls(false);
            selectionButton.setEnabled(false);
            setEnabledColorControls(true);
            setEnabledShapeControls(true);
            setEnabledZoomControls(true);
        }
        // IN THIS STATE A SHAPE HAS BEEN SELECTED AND SO WE
        // MAY EDIT IT, LIKE CHANGE IT'S COLORS OR TRANSPARENCY
        else if (mode == PoseurState.SHAPE_SELECTED_STATE)
        {
            // THIS USES THE ARROW CURSOR
            selectCursor(Cursor.DEFAULT_CURSOR);
            
            // THE EDIT CONTROLS CAN NOW BE USED
            setEnabledEditControls(true);
        }
        // THIS IS THE STATE WHEN THE Poseur APP FIRST
        // STARTS. THERE IS NO Pose YET, SO MOST CONTROLS
        // ARE DISABLED
        else if (mode == PoseurState.STARTUP_STATE)
        {
            // THIS USES THE ARROW CURSOR
            selectCursor(Cursor.DEFAULT_CURSOR);
            
            // NOTHING IS SELECTED SO WE CAN'T EDIT YET
            enableStartupFileControls();
            setEnabledEditControls(false);
            selectionButton.setEnabled(false);
            setEnabledColorControls(false);
            toggleOutlineColorButton();
            setEnabledZoomControls(false);
            setEnabledShapeControls(false);
        }
        saveButton.setEnabled(!fileManager.isSaved());
        
        // AND UPDATE THE SLIDER
        PoseurShape selectedShape = state.getSelectedShape();
        if (selectedShape != null)
        {
            // UPDATE THE SLIDER ACCORDING TO THE SELECTED
            // SHAPE'S ALPHA (TRANSPARENCY) VALUE, IF THERE
            // EVEN IS A SELECTED SHAPE
            transparencySlider.setValue(selectedShape.getAlpha());
        }    

        // REDRAW EVERYTHING
        trueCanvas.repaint();
        zoomableCanvas.repaint();        
    }