Package cc.sketchchair.core

Source Code of cc.sketchchair.core.UI

/*******************************************************************************
* This is part of SketchChair, an open-source tool for designing your own furniture.
*     www.sketchchair.cc
*    
*     Copyright (C) 2012, Diatom Studio ltd.  Contact: hello@diatom.cc
*
*     This program is free software: you can redistribute it and/or modify
*     it under the terms of the GNU General Public License as published by
*     the Free Software Foundation, either version 3 of the License, or
*     (at your option) any later version.
*
*     This program is distributed in the hope that it will be useful,
*     but WITHOUT ANY WARRANTY; without even the implied warranty of
*     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
*     GNU General Public License for more details.
*
*     You should have received a copy of the GNU General Public License
*     along with this program.  If not, see <http://www.gnu.org/licenses/>.
******************************************************************************/
package cc.sketchchair.core;

import java.awt.CheckboxMenuItem;
import java.awt.Menu;
import java.awt.MenuBar;
import java.awt.MenuItem;
import java.awt.MenuShortcut;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.ItemEvent;
import java.awt.event.ItemListener;
import java.awt.event.KeyEvent;
import java.io.File;
import java.lang.reflect.InvocationTargetException;
import java.lang.reflect.Method;

import cc.sketchchair.sketch.SETTINGS_SKETCH;
import cc.sketchchair.sketch.SketchSpline;
import cc.sketchchair.sketch.SketchTools;
import cc.sketchchair.widgets.WidgetMaterials;
import cc.sketchchair.widgets.WidgetPlanes;
import cc.sketchchair.widgets.WidgetPreviewPanel;
import cc.sketchchair.widgets.WidgetSlices;
import cc.sketchchair.widgets.WidgetToolSettings;

import ModalGUI.GUIButton;
import ModalGUI.GUIColourPicker;
import ModalGUI.GUIComponentSet;
import ModalGUI.GUIEvent;
import ModalGUI.GUIImage;
import ModalGUI.GUILabel;
import ModalGUI.GUINumberfield;
import ModalGUI.GUIPanel;
import ModalGUI.GUIPanelTabbed;
import ModalGUI.GUISlider;
import ModalGUI.GUITextfield;
import ModalGUI.GUIToggle;
import ModalGUI.GUIToggleSlide;
import ModalGUI.GUIWindow;
import ModalGUI.ModalGUI;

import processing.core.PApplet;
import processing.core.PConstants;

class myMenuListener implements ActionListener, ItemListener {
  public ActionEvent quedAction = null;

  myMenuListener() {

  }

  public void actionPerformed(ActionEvent e) {
    quedAction = e;
  }

  public void processAction() {

    MenuItem source = (MenuItem) (quedAction.getSource());

    if (source.getActionCommand().equals("selectTool")) {
      GLOBAL.uiTools.selectTool(Integer.parseInt(source.getName()));
    }

    try {

      GUIEvent e2 = new GUIEvent(null, null);

      if (!source.getName().startsWith("menuitem"))
        e2.val = Integer.parseInt(source.getName());

      Method m = GLOBAL.uiTools.getClass().getDeclaredMethod(
          source.getActionCommand(), new Class[] { e2.getClass() });
      try {
        m.invoke(GLOBAL.uiTools, new Object[] { e2 });
      } catch (InvocationTargetException ex) {
        LOGGER.error(ex.getCause().getMessage());
      } catch (IllegalAccessException illegalaccessexception) {
      }
    } catch (NoSuchMethodException ex) {
      LOGGER.error("NoSuchMethodException");
    }
    quedAction = null;
  }

  //gets the class name of an object
  protected String getClassName(Object o) {
    String classString = o.getClass().getName();
    int dotIndex = classString.lastIndexOf(".");
    return classString.substring(dotIndex + 1);
  }

  public void itemStateChanged(ItemEvent e) {
    MenuItem source = (MenuItem) (e.getSource());
    String s = "Item event detected."
        + source.getName()
        + " "
        + "    Event source: "
        + source.getLabel()
        + " (an instance of "
        + getClassName(source)
        + ")"
        + "    New state: "
        + ((e.getStateChange() == ItemEvent.SELECTED) ? "selected"
            : "unselected");
    LOGGER.debug(s);
  }
}

/**
* Sets up the GUI.
* @author gregsaul
*
*/

class UI {
  static String LANGUAGE = "ENG"; //"JP";

  static int mouseX;
  static int mouseY;
  public static boolean mouseDown;
  public static int pmouseX;
  public static int pmouseY;
  public static boolean mouseClicked;

  static MenuBar myMenu;
  static Menu topButton;
  static MenuItem item1;
  static MenuItem item2;
  static MenuItem item3;
  static MenuItem item4;
  static MenuItem item5;

  static myMenuListener menuListen;
  public static GUIToggle physicsToggle;
  private static int mouseButton;
  private static GUIToggle patternButton;
  private static GUIToggle savePdfButton;
  private static GUIToggle printPdfButton;
  private static GUIToggle printRoboButton;
  private static GUIToggle rotateCamera;
  private static GUIToggle saveChairToggle;
  private static GUIToggle saveChairFileButton;
  private static GUIToggle shareChairButton;

  static void setupGUI(PApplet applet, ModalGUI gui) {

    float posY = 10;
    float posX = 10;
    gui.reset();
    GUIButton resetButton;

    gui.useAlphaMouseOver = false;

    GUIButton button;
    GUIToggle toggle;
    String LANGUAGE = SETTINGS.LANGUAGE;
    String TOOL_NAME = null;

    //GUIPanel filePanel = new GUIPanel(5,3,37f,340f);
    //filePanel.setLabel("file");
    GUIPanel toolPanel = new GUIPanel(10, 15, 42f, 390f, gui);

    GUIPanel cameraPanel = new GUIPanel(65f, 15, 115, 87, gui);
    cameraPanel.setLabel("camera");

    GUIPanel physicsPanel = new GUIPanel(65f, 110f, 115, 95, gui);
    physicsPanel.setLabel("physics");

    GLOBAL.environments.setupGUI(GLOBAL.gui, GLOBAL.applet);
    GLOBAL.planesWidget.setupGUI(GLOBAL.applet, GLOBAL.gui);
    GLOBAL.loadWidget.setupGUI(GLOBAL.applet, GLOBAL.gui);
    GLOBAL.widgetMaterials.setupGUI(GLOBAL.applet, GLOBAL.gui);

    GLOBAL.environments.panel.docTo(GLOBAL.slicesWidget.panel);
    GLOBAL.loadWidget.panel.docTo(GLOBAL.environments.panel);
    GLOBAL.widgetMaterials.panel.docTo(GLOBAL.loadWidget.panel);

    //cameraPanel.autoHide = true;
    //physicsPanel.autoHide = true;
    //filePanel.autoHide = true;

    gui.add(toolPanel);

    gui.add(cameraPanel);

    gui.add(physicsPanel);

    button = new GUIButton(posX, posY, "proButtons/GUI_DRAW_TOOL_UP.png",
        "proButtons/GUI_DRAW_TOOL_DOWN.png", gui);
    button.addActionListener(GLOBAL.uiTools.SketchTools, "selectTool",
        SketchTools.DRAW_TOOL);

    button.addToolTip(GLOBAL.applet, "proButtons/GUI_DRAW_TOOLTIP",
        LANGUAGE);

    gui.add(button);
    posY += 30;
    toolPanel.placeComponent(button);

    button = new GUIButton(posX, posY, "proButtons/GUI_LEG_TOOL_UP.png",
        "proButtons/GUI_LEG_TOOL_DOWN.png", gui);
    button.addActionListener(GLOBAL.uiTools.SketchTools, "selectTool",
        SketchTools.LEG_TOOL);
    //button.addToolTip(GLOBAL.applet,"proButtons/GUI_LEG_TOOLTIP", LANGUAGE);
    gui.add(button);
    posY += 30;
    toolPanel.placeComponent(button);

    button = new GUIButton(posX, posY, "proButtons/GUI_SELECT_TOOL_UP.png",
        "proButtons/GUI_SELECT_TOOL_DOWN.png", gui);
    button.addActionListener(GLOBAL.uiTools.SketchTools, "selectTool",
        SketchTools.SELECT_TOOL);
    button.addToolTip(GLOBAL.applet, "proButtons/GUI_SELECT_TOOLTIP",
        LANGUAGE);
    gui.add(button);
    posY += 30;
    toolPanel.placeComponent(button);

    button = new GUIButton(posX, posY, "proButtons/GUI_DRAW_PATH_UP.png",
        "proButtons/GUI_DRAW_PATH_DOWN.png", gui);
    button.addActionListener(GLOBAL.uiTools.SketchTools, "selectTool",
        SketchTools.DRAW_PATH_TOOL);
    button.addToolTip(GLOBAL.applet, "proButtons/GUI_DRAW_PATH_TOOLTIP",
        LANGUAGE);
    gui.add(button);
    posY += 30;
    toolPanel.placeComponent(button);

    button = new GUIButton(posX, posY,
        "proButtons/GUI_SELECT_BEZIER_UP.png",
        "proButtons/GUI_SELECT_BEZIER_DOWN.png", gui);
    button.addActionListener(GLOBAL.uiTools.SketchTools, "selectTool",
        SketchTools.SELECT_BEZIER_TOOL);
    button.addToolTip(GLOBAL.applet,
        "proButtons/GUI_SELECT_BEZIER_TOOLTIP", LANGUAGE);
    gui.add(button);
    posY += 30;
    toolPanel.placeComponent(button);

    button = new GUIButton(posX, posY,
        "proButtons/GUI_MEASURE_TOOL_UP.png",
        "proButtons/GUI_MEASURE_TOOL_DOWN.png", gui);
    button.addActionListener(GLOBAL.uiTools, "selectTool",
        UITools.MEASURE_TOOL);
    button.addToolTip(GLOBAL.applet, "proButtons/GUI_MEASURE_TOOLTIP",
        LANGUAGE);
    gui.add(button);
    posY += 30;
    toolPanel.placeComponent(button);

    button = new GUIButton(posX, posY, "proButtons/GUI_ZOOM_TOOL_UP.png",
        "proButtons/GUI_ZOOM_TOOL_DOWN.png", gui);
    button.addActionListener(GLOBAL.uiTools, "selectTool",
        UITools.ZOOM_CAM_TOOL);
    button.addToolTip(GLOBAL.applet, "proButtons/GUI_ZOOM_TOOLTIP",
        LANGUAGE);
    gui.add(button);
    posY += 30;
    cameraPanel.placeComponent(button);

    button = new GUIButton(posX, posY, "proButtons/GUI_ROTATE_TOOL_UP.png",
        "proButtons/GUI_ROTATE_TOOL_DOWN.png", gui);
    button.addActionListener(GLOBAL.uiTools, "selectTool",
        UITools.ROTATE_CAM_TOOL);
    button.addToolTip(GLOBAL.applet, "proButtons/GUI_ZOOM_TOOLTIP",
        LANGUAGE);
    gui.add(button);
    posY += 30;
    cameraPanel.placeComponent(button);

    button = new GUIButton(posX, posY, "proButtons/GUI_CAMERA_MOVE_UP.png",
        "proButtons/GUI_CAMERA_MOVE_DOWN.png", gui);
    button.addActionListener(GLOBAL.uiTools, "selectTool",
        UITools.MOVE_CAM_TOOL);
    button.addToolTip(GLOBAL.applet, "proButtons/GUI_MOVE_CAM_TOOLTIP",
        LANGUAGE);

    gui.add(button);
    posY += 30;
    cameraPanel.placeComponent(button);

    button = new GUIButton(posX, posY,
        "proButtons/GUI_CAM_JUMP_FRONT_UP.png",
        "proButtons/GUI_CAM_JUMP_FRONT_DOWN.png", gui);
    button.addActionListener(GLOBAL.uiTools, "camJumpFront",
        UITools.MOVE_CAM_TOOL);
    button.addToolTip(GLOBAL.applet, "proButtons/GUI_MOVE_OBJECT_TOOLTIP",
        LANGUAGE);

    gui.add(button);
    posY += 30;
    cameraPanel.placeComponent(button);

    button = new GUIButton(posX, posY,
        "proButtons/GUI_CAM_JUMP_SIDE_UP.png",
        "proButtons/GUI_CAM_JUMP_SIDE_DOWN.png", gui);
    button.addActionListener(GLOBAL.uiTools, "camJumpSide",
        UITools.MOVE_CAM_TOOL);
    button.addToolTip(GLOBAL.applet,
        "proButtons/GUI_CAM_JUMP_SIDE_TOOLTIP", LANGUAGE);

    gui.add(button);
    posY += 30;
    cameraPanel.placeComponent(button);

    button = new GUIButton(posX, posY,
        "proButtons/GUI_CAM_JUMP_TOP_UP.png",
        "proButtons/GUI_CAM_JUMP_TOP_DOWN.png", gui);
    button.addActionListener(GLOBAL.uiTools, "camJumpTop",
        UITools.MOVE_CAM_TOOL);
    button.addToolTip(GLOBAL.applet, "proButtons/GUI_CAM_JUMP_TOP_TOOLTIP",
        LANGUAGE);

    gui.add(button);
    posY += 30;
    cameraPanel.placeComponent(button);

    //PHYSICS controls
    physicsToggle = new GUIToggle(posX, posY,
        "proButtons/GUI_PHYSICS_START_UP.png",
        "proButtons/GUI_PHYSICS_START_DOWN.png", gui);
    physicsToggle.addActionListener(GLOBAL.uiTools, "physicsPlay",
        UITools.MOVE_CAM_TOOL);
    physicsToggle.addToolTip(GLOBAL.applet,
        "proButtons/GUI_PHYSICS_START_TOOLTIP", LANGUAGE);

    physicsToggle.addLinkedVal(gui.physics_on);

    gui.add(physicsToggle);
    posY += 30;
    physicsPanel.placeComponent(physicsToggle);

    //PHYSICS controls
    button = new GUIButton(posX, posY,
        "proButtons/GUI_PHYSICS_PAUSE_UP.png",
        "proButtons/GUI_PHYSICS_PAUSE_DOWN.png", gui);
    button.addActionListener(GLOBAL.uiTools, "physicsPause",
        UITools.MOVE_CAM_TOOL);
    button.addToolTip(GLOBAL.applet,
        "proButtons/GUI_PHYSICS_PAUSE_TOOLTIP", LANGUAGE);

    gui.add(button);
    posY += 30;
    physicsPanel.placeComponent(button);

    //PHYSICS controls
    button = new GUIButton(posX, posY,
        "proButtons/GUI_PHYSICS_RESTART_UP.png",
        "proButtons/GUI_PHYSICS_RESTART_DOWN.png", gui);
    button.addActionListener(GLOBAL.uiTools, "physicsRewind",
        UITools.MOVE_CAM_TOOL);
    button.addToolTip(GLOBAL.applet,
        "proButtons/GUI_PHYSICS_RESTART_TOOLTIP", LANGUAGE);

    gui.add(button);
    posY += 30;
    physicsPanel.placeComponent(button);

    button = new GUIButton(posX, posY,
        "proButtons/GUI_MOVE_CAM_TOOL_UP.png",
        "proButtons/GUI_MOVE_CAM_TOOL_DOWN.png", gui);
    button.addActionListener(GLOBAL.uiTools, "selectTool",
        UITools.MOVE_OBJECT);
    gui.add(button);
    posY += 30;
    physicsPanel.placeComponent(button);

    toggle = new GUIToggle(posX, posY, "proButtons/GUI_BUILD_CHAIR_UP.png",
        "proButtons/GUI_BUILD_CHAIR_DOWN.png", gui);
    toggle.addActionListener(GLOBAL.uiTools, "toggleCentreConstraintChair",
        UITools.MOVE_OBJECT);
    gui.add(toggle);
    posY += 30;
    physicsPanel.placeComponent(toggle);
    toggle.setState(true);

    button = new GUIButton(posX, posY, "proButtons/GUI_CAMERA_MOVE_UP.png",
        "proButtons/GUI_CAMERA_MOVE_DOWN.png", gui);
    button.addActionListener(GLOBAL.uiTools, "selectTool",
        UITools.MOVE_2D_TOOL);
    gui.add(button);
    posY += 30;
    physicsPanel.placeComponent(button);

    button = new GUIButton(posX, posY, "proButtons/GUI_SCALE_TOOL_UP.png",
        "proButtons/GUI_SCALE_TOOL_DOWN.png", gui);
    button.addActionListener(GLOBAL.uiTools, "selectTool",
        UITools.SCALE_TOOL);
    button.addToolTip(GLOBAL.applet, "proButtons/GUI_SCALE_TOOLTIP",
        LANGUAGE);

    gui.add(button);
    posY += 30;
    toolPanel.placeComponent(button);

    button = new GUIButton(posX, posY, "proButtons/GUI_UNDO_TOOL_UP.png",
        "proButtons/GUI_UNDO_TOOL_DOWN.png", gui);
    button.addActionListener(GLOBAL.uiTools, "undo", UITools.MOVE_CAM_TOOL);
    button.addToolTip(GLOBAL.applet, "proButtons/GUI_UNDO_TOOLTIP",
        LANGUAGE);

    gui.add(button);
    posY += 30;
    toolPanel.placeComponent(button);

    /*
     
      gui.add(filePanel);
     
      button = new GUI.GUIButton(posX, posY, "proButtons/GUI_SAVE_PATTERN_UP.png",
          "proButtons/GUI_SAVE_PATTERN_DOWN.png",GLOBAL.applet);
      button.addActionListener(GLOBAL.uiTools, "saveChairToFileAuto",
          UITools.MOVE_OBJECT);
      gui.add(button);
      posY += 30;   
      filePanel.placeComponent(button);
     
     
     
      button = new GUI.GUIButton(posX, posY, "proButtons/GUI_LOAD_UP.png",
          "proButtons/GUI_LOAD_DOWN.png",GLOBAL.applet);
      button.addActionListener(GLOBAL.uiTools, "openChairFromFileAuto",
          UITools.MOVE_OBJECT);
      gui.add(button);
      posY += 30;   
      filePanel.placeComponent(button);
     

     
     
     
      button = new GUI.GUIButton(posX, posY, "proButtons/GUI_EXPORT_UP.png",
          "proButtons/GUI_EXPORT_DOWN.png",GLOBAL.applet);
      button.addActionListener(GLOBAL.uiTools, "savePDFauto",
          UITools.MOVE_OBJECT);
      gui.add(button);
      posY += 30;   
      filePanel.placeComponent(button);

     
     
     

     
     
     

     
      toggle = new GUI.GUIToggle(posX, posY, "proButtons/GUI_REFERENCE_GEOM_UP.png",
          "proButtons/GUI_REFERENCE_GEOM_DOWN.png",GLOBAL.applet);
      toggle.addActionListener(GLOBAL.uiTools, "toggleReferenceGeom",
          UITools.MOVE_CAM_TOOL);
      toggle.addToolTip(GLOBAL.applet,"proButtons/GUI_REFERENCE_GEOM_TOOLTIP", LANGUAGE);

      //gui.add(toggle);
      //posY += 30;   
      //toolPanel.placeComponent(toggle);
     
     
     
     
      button = new GUI.GUIButton(posX, posY, "proButtons/GUI_REDO_TOOL_UP.png",
          "proButtons/GUI_REDO_TOOL_DOWN.png",GLOBAL.applet);
      button.addActionListener(GLOBAL.uiTools, "redo",
          UITools.MOVE_CAM_TOOL);
      button.addToolTip(GLOBAL.applet,"proButtons/GUI_REDO_TOOLTIP", LANGUAGE);

      gui.add(button);
      posY += 30;   
      filePanel.placeComponent(button);

     
      toggle = new GUI.GUIToggle(posX, posY, "proButtons/GUI_PRINT_UP.png",
          "proButtons/GUI_PRINT_DOWN.png");
      toggle.addActionListener(GLOBAL.uiTools, "changeView",
          UITools.VIEW_SHAPE_PACK);
      filePanel.addToolTip(GLOBAL.applet,"proButtons/GUI_PRINT_TOOLTIP", LANGUAGE);
      gui.add(toggle);
      posY += 30;
      filePanel.placeComponent(toggle);
     
     
     
     
      button = new GUI.GUIButton(posX, posY, "proButtons/GUI_DELETE_UP.png",
          "proButtons/GUI_DELETE_DOWN.png",GLOBAL.applet);
      button.addActionListener(GLOBAL.uiTools, "deleteAllChairs",
          UITools.MOVE_CAM_TOOL);
      button.addToolTip(GLOBAL.applet,"proButtons/GUI_DELETE_TOOLTIP", LANGUAGE);

      gui.add(button);
      posY += 30;   
      filePanel.placeComponent(button);
     
     
      toggle = new GUI.GUIToggle(posX, posY, "proButtons/GUI_PERFORMANCE_MODE_UP.png",
          "proButtons/GUI_PERFORMANCE_MODE_DOWN.png",GLOBAL.applet);
      toggle.addActionListener(GLOBAL.uiTools, "togglePerformance",
          UITools.MOVE_CAM_TOOL);
      toggle.addToolTip(GLOBAL.applet,"proButtons/GUI_PERFORMANCE_MODE_TOOLTIP", LANGUAGE);

      gui.add(toggle);
      posY += 30;   
      filePanel.placeComponent(toggle);
     
     
      button = new GUI.GUIButton(posX, posY, "proButtons/GUI_SCREEN_CAPTURE_UP.png",
          "proButtons/GUI_SCREEN_CAPTURE_DOWN.png",GLOBAL.applet);
      button.addActionListener(GLOBAL.uiTools, "captureScreen",
          UITools.MOVE_CAM_TOOL);
      button.addToolTip(GLOBAL.applet,"proButtons/GUI_SCREEN_CAPTURE_TOOLTIP", LANGUAGE);

      gui.add(button);
      posY += 30;   
      filePanel.placeComponent(button);
     
     
      toggle = new GUI.GUIToggle(posX, posY, "proButtons/GUI_PERFORMANCE_MODE_UP.png",
          "proButtons/GUI_PERFORMANCE_MODE_DOWN.png",GLOBAL.applet);
      toggle.addActionListener(GLOBAL.uiTools, "toggleExpert",
          UITools.MOVE_CAM_TOOL);
      toggle.addToolTip(GLOBAL.applet,"proButtons/GUI_PERFORMANCE_MODE_TOOLTIP", LANGUAGE);

      gui.add(toggle);
      posY += 30;   
      filePanel.placeComponent(toggle);
     
     
     

      resetButton = new GUI.GUIButton(posX, posY, "proButtons/UI_RESET_UP_JP.png",
          "proButtons/UI_RESET_DOWN_JP.png",GLOBAL.applet);
      resetButton.addActionListener(GLOBAL.uiTools, "reset",
          UITools.MOVE_CAM_TOOL);
      //button.addToolTip(GLOBAL.applet,"proButtons/GUI_SCREEN_CAPTURE_TOOLTIP", LANGUAGE);

      gui.add(resetButton);
      resetButton.setPos(GLOBAL.windowWidth-resetButton.getWidth(), GLOBAL.windowHeight-resetButton.getHeight());
      resetButton.setController(gui);
      posY += 30;   
      //filePanel.placeComponent(button);
     
      */

    setupMenuBar(applet);
  }

  static void setupGUIIntroWindow(PApplet applet, ModalGUI gui) {

    float windowWidth = SETTINGS.GUIDE_WINDOW_WIDTH;
    float windowHeight = SETTINGS.GUIDE_WINDOW_HEIGHT;

    GUIWindow window = new GUIWindow(0f, 0f, windowWidth, windowHeight, gui);
    window.setLightboxed(true);
    window.centre();
    gui.add(window);

    float posX = 100;
    float posY = 100;
    float spacingY = 80;

    GUIImage guiImg;
    guiImg = new GUIImage(30, 50, "gui/WINDOW_INTRO_TITLE.png", gui);
    window.add(guiImg);

    GUIButton button;
    button = new GUIToggle(400, 50, "gui/WINDOW_INTRO_NEW_CHAIR-03.png",
        gui);
    button.addActionListener(GLOBAL.uiTools, "deleteAllChairs",
        UITools.LEG_TOOL);
    button.addActionListener(GLOBAL.uiTools, "setDisplaypanelAsShown",
        UITools.LEG_TOOL);
    button.addActionListener(GLOBAL.uiTools.SketchTools, "selectTool",
        SketchTools.DRAW_TOOL);

    button.addActionListener(window, "close", UITools.LEG_TOOL);
    window.add(button);
    posY += spacingY;

    button = new GUIToggle(400, 200, "gui/WINDOW_INTRO_LIBRARY.png", gui);
    button.addActionListener(window, "close", UITools.LEG_TOOL);
    button.addActionListener(GLOBAL.uiTools, "setDisplaypanelAsShown",
        UITools.LEG_TOOL);
    button.addActionListener(GLOBAL.uiTools.SketchTools, "selectTool",
        SketchTools.SELECT_TOOL);
    button.addActionListener(GLOBAL.uiTools, "loadTemplateChair",
        UITools.LEG_TOOL);
    window.add(button);

    posY += spacingY;

  }

  static void setupGUIExhibition(PApplet applet, ModalGUI gui) {

    if (true)
      return;

    float posY = 10;
    float posX = 10;

    gui.reset();
    GUIButton resetButton;

    gui.useAlphaMouseOver = true;

    GUIButton button;
    GUIToggle toggle;
    String TOOL_NAME = null;

    posY = 0;
    setupMenuBar(applet);

    /*
    button = new GUI.GUIButton(GLOBAL.windowWidth-100, posY, "touchButtons/GUI_NEWCHAIR_UP.png",
        "touchButtons/GUI_NEWCHAIR_DOWN.png", GLOBAL.applet);
    button.addActionListener(GLOBAL.uiTools, "newChair",
        UITools.DRAW_TOOL);
   
    button.addToolTip(GLOBAL.applet,"GUI_DRAW_TOOLTIP", LANGUAGE);
   
    gui.add(button);

   
   
   
   
    */

    toggle = new GUIToggle(GLOBAL.windowWidth - 100, posY, "touchButtons"
        + LANGUAGE + "/GUI_DRAW_UP.png", "touchButtons" + LANGUAGE
        + "/GUI_DRAW_DOWN.png", gui);
    toggle.addActionListener(GLOBAL.uiTools, "selectTool",
        UITools.DRAW_TOOL);
    gui.add(toggle);

    posY += 85;

    toggle = new GUIToggle(GLOBAL.windowWidth - 100, posY, "touchButtons"
        + LANGUAGE + "/GUI_DRAW_LEG_UP.png", "touchButtons" + LANGUAGE
        + "/GUI_DRAW_LEG_DOWN.png", gui);
    toggle.addActionListener(GLOBAL.uiTools, "selectTool", UITools.LEG_TOOL);

    gui.add(toggle);

    posY += 85;

    GUISlider slider = new GUISlider(GLOBAL.windowWidth - 60, posY, 60, 20,
        50, gui);
    slider.setVal(GLOBAL.uiTools.brush_dia);
    slider.addActionListener(GLOBAL.uiTools, "changeToolWidth",
        UITools.DRAW_TOOL);
    slider.setShowValLabel(true);
    slider.setLabelValMultiplier(2.0f);

    toggle.addToolTip(GLOBAL.applet, "proButtons/GUI_DRAW_TOOLTIP",
        LANGUAGE);
    //  gui.add(slider);

    posY += 5;
    toggle = new GUIToggle(GLOBAL.windowWidth - 100, posY, "touchButtons"
        + LANGUAGE + "/GUI_EDIT_UP.png", "touchButtons" + LANGUAGE
        + "/GUI_EDIT_DOWN.png", gui);
    toggle.addActionListener(GLOBAL.uiTools, "selectTool",
        UITools.SELECT_TOOL);

    gui.add(toggle);

    posY += 85;
    toggle = new GUIToggle(GLOBAL.windowWidth - 100, posY, "touchButtons"
        + LANGUAGE + "/GUI_SIT_UP.png", "touchButtons" + LANGUAGE
        + "/GUI_STAND_DOWN.png", gui);
    toggle.addActionListener(GLOBAL.uiTools, "sitStand", UITools.DRAW_TOOL);

    gui.add(toggle);

    /* 
     
      posY += 140;
      toggle = new GUI.GUIToggle(GLOBAL.windowWidth-100, posY, "touchButtons"+LANGUAGE+"/GUI_CAMERAZOOM_UP.png",
          "touchButtons"+LANGUAGE+"/GUI_CAMERAZOOM_DOWN.png", GLOBAL.applet);
      toggle.addActionListener(GLOBAL.uiTools, "selectTool",
          UITools.ZOOM_CAM_TOOL);
         
      gui.add(toggle);
     
     
      toggle = new GUI.GUIToggle(GLOBAL.windowWidth-66, posY, "touchButtons"+LANGUAGE+"/GUI_CAMERAMOVE_UP.png",
          "touchButtons"+LANGUAGE+"/GUI_CAMERAMOVE_DOWN.png", GLOBAL.applet);
      toggle.addActionListener(GLOBAL.uiTools, "selectTool",
          UITools.MOVE_CAM_TOOL);
         
      gui.add(toggle);
      posY -= 60;
     
      */
    posY += 85;
    rotateCamera = new GUIToggle(GLOBAL.windowWidth - 100, posY,
        "touchButtons" + LANGUAGE + "/GUI_CAMERA_ROTATE_UP.png",
        "touchButtons" + LANGUAGE + "/GUI_CAMERA_ROTATE_DOWN.png", gui);
    rotateCamera.addActionListener(GLOBAL.uiTools, "autoRotate",
        UITools.ROTATE_CAM_TOOL);

    gui.add(rotateCamera);

    posY += 85;
    patternButton = new GUIToggle(GLOBAL.windowWidth - 100, posY,
        "touchButtons" + LANGUAGE + "/GUI_PATTERN_UP.png",
        "touchButtons" + LANGUAGE + "/GUI_PATTERN_DOWN.png", gui);
    patternButton.addActionListener(GLOBAL.uiTools, "toggleView",
        UITools.VIEW_SHAPE_PACK);
    gui.add(patternButton);

    posY += 85;
    savePdfButton = new GUIToggle(GLOBAL.windowWidth - 100, posY,
        "touchButtons" + LANGUAGE + "/GUI_SAVEPDF_UP.png",
        "touchButtons" + LANGUAGE + "/GUI_SAVEPDF_DOWN.png", gui);
    savePdfButton.addActionListener(GLOBAL.uiTools, "savePDF",
        UITools.VIEW_SHAPE_PACK);
    savePdfButton.hide();
    gui.add(savePdfButton);

    posY += 85;
    printPdfButton = new GUIToggle(GLOBAL.windowWidth - 100, posY,
        "touchButtons" + LANGUAGE + "/GUI_PRINT_UP.png", "touchButtons"
            + LANGUAGE + "/GUI_PRINT_DOWN.png", gui);
    printPdfButton.addActionListener(GLOBAL.uiTools, "print",
        UITools.VIEW_SHAPE_PACK);
    printPdfButton.hide();
    gui.add(printPdfButton);

    posY += 85;
    printRoboButton = new GUIToggle(GLOBAL.windowWidth - 100, posY,
        "touchButtons" + LANGUAGE + "/GUI_CUTPLOT_UP.png",
        "touchButtons" + LANGUAGE + "/GUI_CUTPLOT_DOWN.png", gui);
    printRoboButton.addActionListener(GLOBAL.uiTools, "saveCraftRobo",
        UITools.VIEW_SHAPE_PACK);
    printRoboButton.hide();
    gui.add(printRoboButton);

    posY -= 85 * 2;

    saveChairToggle = new GUIToggle(GLOBAL.windowWidth - 100, posY,
        "touchButtons" + LANGUAGE + "/GUI_SAVECHAIR_UP.png",
        "touchButtons" + LANGUAGE + "/GUI_SAVECHAIR_DOWN.png", gui);
    saveChairToggle.addActionListener(GLOBAL.uiTools, "",
        UITools.VIEW_SAVE_CHAIR);

    gui.add(saveChairToggle);
    posY += 85;

    saveChairFileButton = new GUIToggle(GLOBAL.windowWidth - 100, posY,
        "touchButtons" + LANGUAGE + "/GUI_SAVECHAIRFILE_UP.png",
        "touchButtons" + LANGUAGE + "/GUI_SAVECHAIRFILE_DOWN.png", gui);
    saveChairFileButton.addActionListener(GLOBAL.uiTools,
        "saveChairToFile", UITools.DRAW_TOOL);
    saveChairFileButton.hide();
    gui.add(saveChairFileButton);
    posY += 85;

    shareChairButton = new GUIToggle(GLOBAL.windowWidth - 100, posY,
        "touchButtons" + LANGUAGE + "/GUI_SHARE_UP.png", "touchButtons"
            + LANGUAGE + "/GUI_SHARE_DOWN.png", gui);
    shareChairButton.addActionListener(SketchChairCloudhook.getInstance(),
        "ShareChairOnline", UITools.DRAW_TOOL);
    shareChairButton.hide();
    gui.add(shareChairButton);
    posY -= 85;

    toggle = new GUIToggle(GLOBAL.windowWidth - 100, posY, "touchButtons"
        + LANGUAGE + "/GUI_UNDO_UP.png", "touchButtons" + LANGUAGE
        + "/GUI_UNDO_DOWN.png", gui);
    toggle.addActionListener(GLOBAL.uiTools, "undo", UITools.DRAW_TOOL);

    gui.add(toggle);

    posY += 85;
    toggle = new GUIToggle(GLOBAL.windowWidth - 100, posY,
        "/GUI_DELETE_UP.png", "/GUI_DELETE_DOWN.png", gui);
    toggle.addActionListener(GLOBAL.uiTools, "deleteLastChair",
        UITools.DRAW_TOOL);

    gui.add(toggle);

   
    /*
    posY += 85;
    toggle = new GUIToggle(GLOBAL.windowWidth - 100, posY, "touchButtons"
        + LANGUAGE + "/GUI_RESTART_UP.png", "touchButtons" + LANGUAGE
        + "/GUI_RESTART_DOWN.png", gui);
    toggle.addActionListener(GLOBAL.uiTools, "reset", UITools.DRAW_TOOL);

    gui.add(toggle);

    toggle = new GUIToggle(0, 0, "touchButtons" + LANGUAGE
        + "/GUI_HELP_UP.png", "touchButtons" + LANGUAGE
        + "/GUI_HELP_DOWN.png", gui);
    toggle.addActionListener(GLOBAL.uiTools, "showInstructions",
        UITools.DRAW_TOOL);

    gui.add(toggle);
*/
    //  toolPanel.placeComponent(button);

  }

  static void setupGUITabsAll(PApplet applet, ModalGUI gui) {
   
   
   
    GUIToggle toggle = null;
    float posX= 0; float posY = 0;
    float button_width = 45;
    float button_height = 45;
   
    GLOBAL.uiTools.toggleSet.reset();
   
   
   
    GLOBAL.previewWidget = new WidgetPreviewPanel(GLOBAL.windowWidth -260, 0,260,GLOBAL.windowHeight-250, gui);
    gui.add(GLOBAL.previewWidget);
   
   
   

    /*
    GUIButton imgB = new GUIButton(0, 0, "SketchCHAIRtittle.png",
        "SketchCHAIRtittleOVER.png", gui);
    imgB.addActionListener(GLOBAL.uiTools, "gotoWebsite", null);
    gui.add(imgB);
    */
    /*

    GUIToggleSlide sliderToggle = new GUIToggleSlide(GLOBAL.windowWidth -110, 18, "basic",
        "expert", gui);
    sliderToggle.addActionListener(GLOBAL.uiTools, "toggleExpert", null);
    sliderToggle.isDown = !SETTINGS.EXPERT_MODE;
    gui.add(sliderToggle);
    */
   
   
   
   
    /*
   
    //camera
     *
     *
   
    tabbedPanel.addTabbedPanel(cameraPanel, "camera", gui);
*/
    //toggleSet = new GUIComponentSet();

   
     button_width = 25;

    GLOBAL.patternCameraPanel = new GUIPanel(0f, 10f, (int) 0,(int) 0, gui);
    gui.add(GLOBAL.patternCameraPanel);
    GLOBAL.patternCameraPanel.renderBorder =false;
   
    toggle = new GUIToggle(posX, posY, button_width, button_width,
        "gui/camera_zoom.png", gui);
    toggle.setComponentSet(GLOBAL.uiTools.toggleSet);
    toggle.addActionListener(GLOBAL.uiTools, "selectTool",
        UITools.ZOOM_CAM_TOOL);
    //toggle.setLabel("zoom");
    //toggle.label.align = GUILabel.CENTRE;
    //toggle.label.layout = GUILabel.UNDER_COMPONENT;

    GLOBAL.patternCameraPanel.add(toggle);

    posX += button_width+5;

 

    toggle = new GUIToggle(posX, posY, button_width, button_width,
        "gui/camera_move.png", gui);
    toggle.setComponentSet(GLOBAL.uiTools.toggleSet);
    toggle.addActionListener(GLOBAL.uiTools, "selectTool",
        UITools.MOVE_CAM_TOOL);
    //toggle.setLabel("move");
    //toggle.label.align = GUILabel.CENTRE;
    //toggle.label.layout = GUILabel.UNDER_COMPONENT;

    GLOBAL.patternCameraPanel.add(toggle);

   
   
    GLOBAL.patternCameraPanel.hide();
   
   
   
   
   
   
    GLOBAL.cameraPanel = new GUIPanel(0f, 10f, (int) 0,(int) 0, gui);
    gui.add(GLOBAL.cameraPanel);
    GLOBAL.cameraPanel.renderBorder =false;
   
     posX = 0;
     posY = 0;
   
   
    
    
     GUIComponentSet physicsSet = new GUIComponentSet();
     //Physics
    
      toggle = new GUIToggle(posX, posY, button_width, button_width,
          "gui/GUI_PHYSICS_PLAY.png","gui/GUI_PHYSICS_PAUSE.png", gui);
      toggle.setComponentSet(physicsSet);
      toggle.addActionListener(GLOBAL.uiTools, "physicsPlayPause",
          UITools.ZOOM_CAM_TOOL);
      //toggle.setLabel("play");
      //toggle.label.align = GUILabel.CENTRE;
      //toggle.label.layout = GUILabel.UNDER_COMPONENT;

      GLOBAL.cameraPanel.add(toggle);

     
      posX += button_width+5;

     
      toggle = new GUIToggle(posX, posY, button_width, button_width,
          "gui/GUI_PHYSICS_STOP.png", gui);
      toggle.setComponentSet(physicsSet);
      toggle.addActionListener(GLOBAL.uiTools, "physicsRewind",
          UITools.ZOOM_CAM_TOOL);
      //toggle.setLabel("stop");
      //toggle.label.align = GUILabel.CENTRE;
      //toggle.label.layout = GUILabel.UNDER_COMPONENT;

      GLOBAL.cameraPanel.add(toggle);

      posX += button_width+25;
     
      //GUILabel label = new GUILabel(posX, posY,"view",gui);
      //gui.add(label);
     
    toggle = new GUIToggle(posX, posY, button_width, button_width,
        "gui/camera_zoom.png", gui);
    toggle.setComponentSet(GLOBAL.uiTools.toggleSet);
    toggle.addActionListener(GLOBAL.uiTools, "selectTool",
        UITools.ZOOM_CAM_TOOL);
    //toggle.setLabel("zoom");
    //toggle.label.align = GUILabel.CENTRE;
    //toggle.label.layout = GUILabel.UNDER_COMPONENT;

    GLOBAL.cameraPanel.add(toggle);

    posX += button_width+5;

 

    toggle = new GUIToggle(posX, posY, button_width, button_width,
        "gui/camera_move.png", gui);
    toggle.setComponentSet(GLOBAL.uiTools.toggleSet);
    toggle.addActionListener(GLOBAL.uiTools, "selectTool",
        UITools.MOVE_CAM_TOOL);
    //toggle.setLabel("move");
    //toggle.label.align = GUILabel.CENTRE;
    //toggle.label.layout = GUILabel.UNDER_COMPONENT;

    GLOBAL.cameraPanel.add(toggle);

    posX += button_width+5;

   
    toggle = new GUIToggle(posX, posY, button_width, button_width,
        "gui/camera_rotate.png", gui);
    toggle.setComponentSet(GLOBAL.uiTools.toggleSet);
    toggle.addActionListener(GLOBAL.uiTools, "selectTool",
        UITools.ROTATE_CAM_TOOL);
    //toggle.setLabel("rotate");
    //toggle.label.align = GUILabel.CENTRE;
    //toggle.label.layout = GUILabel.UNDER_COMPONENT;

    GLOBAL.cameraPanel.add(toggle);

    posX += button_width+5;
   
    /*
    new GUIPanel(GLOBAL.windowWidth - slicePanleWidth,
        0, slicePanleWidth, slicePanleHeight, gui);
    */
   
   

    /*
    sliderToggle = new GUIToggleSlide(410, 18, "3D", "pattern", gui);
    sliderToggle.isDown = GLOBAL.uiTools.currentView == UITools.VIEW_CHAIR_EDIT;
    sliderToggle.addActionListener(GLOBAL.uiTools, "toggleView", null);
    gui.add(sliderToggle);

  */
   
   
   
   

   
   
  }
  static void setupGUITabsBasic(PApplet applet, ModalGUI gui) {

   
   
    if(GLOBAL.designToolbarPattern != null)
    GLOBAL.designToolbarPattern.hide();
   
    if(GLOBAL.designToolbarBasic != null)
      GLOBAL.designToolbarBasic.show();
   
    if(GLOBAL.designToolbarAdvanced!= null)
      GLOBAL.designToolbarAdvanced.hide();
   
   

    //if we've already loaded the toolboar down't load it again
    if(GLOBAL.designToolbarAdvanced != null)
      GLOBAL.designToolbarAdvanced  = null;
   
    //if we're changing from basic to advanced view dump the basic gui.
    if(GLOBAL.designToolbarBasic != null)
      return;
   
   
   
   
   
    float button_width = 45;
    float button_height = 45;

    float posY = 10;
    float posX = 10;
    float panelHeight = 120;

    gui.reset();


    //panel for slice widget
    float slicePanleWidth = 100;
    float slicePanleHeight = 100;
    GLOBAL.slicePanel = new GUIPanel(GLOBAL.windowWidth - slicePanleWidth,
        0, slicePanleWidth, slicePanleHeight, gui);
    GLOBAL.slicePanel.invisible();
    gui.add(GLOBAL.slicePanel);
   
    GLOBAL.slicesWidget = new WidgetSlices(240, 0, 300, slicePanleHeight, gui);
    GLOBAL.planesWidget = new WidgetPlanes(0, 0, 900, slicePanleHeight, gui);

   
   

    setupGUITabsAll(applet,gui);

    GUIPanelTabbed tabbedPanel = new GUIPanelTabbed(0f, GLOBAL.windowHeight
        - panelHeight, (int) GLOBAL.windowWidth, (int) panelHeight, gui);
    gui.add(tabbedPanel);
    GLOBAL.designToolbarBasic = tabbedPanel;

    //tools
    GUIPanel toolPanel = new GUIPanel(0f,
        GLOBAL.windowHeight - panelHeight, (int) GLOBAL.windowWidth,
        (int) panelHeight, gui);
    tabbedPanel.addTabbedPanel(toolPanel, "tools", gui);


    GUIToggle toggle = new GUIToggle(posX, posY, button_width,
        button_height, "gui/draw.png", gui);
    toggle.setComponentSet(GLOBAL.uiTools.toggleSet);
    toggle.addActionListener(GLOBAL.uiTools.SketchTools, "selectTool",
        SketchTools.DRAW_TOOL);
    toggle.setLabel("brush");
    toggle.label.align = GUILabel.CENTRE;
    toggle.label.layout = GUILabel.UNDER_COMPONENT;
    if (GLOBAL.uiTools.SketchTools.getCurrentTool() == SketchTools.DRAW_TOOL)
      toggle.toggleDown();
    toolPanel.placeComponent(toggle);

    toggle = new GUIToggle(posX, posY, button_width, button_height,
        "gui/add_leg.png", gui);
    toggle.setComponentSet(GLOBAL.uiTools.toggleSet);
    toggle.addActionListener(GLOBAL.uiTools.SketchTools, "selectTool",
        SketchTools.LEG_TOOL);
    toggle.addActionListener(GLOBAL.uiTools, "selectLegPlanes",
        SketchTools.LEG_TOOL);
    toggle.setLabel("leg");
    toggle.label.align = GUILabel.CENTRE;
    toggle.label.layout = GUILabel.UNDER_COMPONENT;
    if (GLOBAL.uiTools.SketchTools.getCurrentTool() == SketchTools.LEG_TOOL)
      toggle.toggleDown();
    toolPanel.placeComponent(toggle);

    toggle = new GUIToggle(posX, posY, button_width, button_height,
        "gui/select.png", gui);
    toggle.setComponentSet(GLOBAL.uiTools.toggleSet);
    toggle.addActionListener(GLOBAL.uiTools.SketchTools, "selectTool",
        SketchTools.SELECT_TOOL);
    toggle.setLabel("select");
   
    if (GLOBAL.uiTools.SketchTools.getCurrentTool() == SketchTools.SELECT_TOOL)
      toggle.toggleDown();
   
    toggle.label.align = GUILabel.CENTRE;
    toggle.label.layout = GUILabel.UNDER_COMPONENT;

    toolPanel.placeComponent(toggle);

    toggle = new GUIToggle(120, posY, button_width, button_height,
        "gui/sit.png", "gui/stand.png", gui);
    toggle.addActionListener(GLOBAL.uiTools, "sitStand", UITools.DRAW_TOOL);
    toggle.setLabel("sit/stand");
    toggle.label.align = GUILabel.CENTRE;
    toggle.label.layout = GUILabel.UNDER_COMPONENT;
    toolPanel.placeComponent(toggle);

    toggle = new GUIToggle(120, posY, button_width, button_height,
        "gui/camera_rotate.png", gui);
    toggle.addActionListener(GLOBAL.uiTools, "autoRotate",
        UITools.DRAW_TOOL);
    toggle.setLabel("rotate");
    toggle.label.align = GUILabel.CENTRE;
    toggle.label.layout = GUILabel.UNDER_COMPONENT;
    toolPanel.placeComponent(toggle);

    GUIButton button = new GUIButton(posX, posY, button_width,
        button_height, "gui/undo.png", null, gui);
    button.addActionListener(GLOBAL.uiTools, "undo", UITools.SCALE_TOOL);
    button.setLabel("undo");
    button.label.align = GUILabel.CENTRE;
    button.label.layout = GUILabel.UNDER_COMPONENT;

    toolPanel.placeComponent(button);

    button = new GUIButton(posX, posY, button_width, button_height,
        "gui/GUI_SLICE_DELETE_BUTTON.png", null, gui);
    button.addActionListener(GLOBAL.uiTools, "deleteAllChairsFlag",
        UITools.SCALE_TOOL);
    button.setLabel("delete");
    button.label.align = GUILabel.CENTRE;
    button.label.layout = GUILabel.UNDER_COMPONENT;

    toolPanel.placeComponent(button);

    button = new GUIButton(posX, posY, button_width, button_height,
        "gui/GUI_MAKE_BUTTON.png", null, gui);
    button.addActionListener(GLOBAL.uiTools, "makeChairWindow",
        UITools.SCALE_TOOL);
    button.setLabel("make");
    button.label.align = GUILabel.CENTRE;
    button.label.layout = GUILabel.UNDER_COMPONENT;

    toolPanel.placeComponent(button);

    /*
    button = new GUIButton(GLOBAL.windowWidth - 80, posY + 10,
        button_width, button_height, "gui/GUI_SLICE_DELETE_BUTTON.png",
        null, gui);
    button.addActionListener(GLOBAL.uiTools, "reset", UITools.SCALE_TOOL);
    button.setLabel("reset");
    button.label.align = GUILabel.CENTRE;
    button.label.layout = GUILabel.UNDER_COMPONENT;

    toolPanel.add(button);
    */

    setupMenuBar(applet);

    if (GLOBAL.displayIntroPanel && SETTINGS.displayIntroPanel) {
      setupGUIIntroWindow(applet, gui);
    }

  }

  static void setupGUITabsExpert(PApplet applet, ModalGUI gui) {

   
   
    if(GLOBAL.designToolbarPattern != null)
    GLOBAL.designToolbarPattern.hide();
   
    if(GLOBAL.designToolbarBasic != null)
      GLOBAL.designToolbarBasic.hide();
   
    if(GLOBAL.designToolbarAdvanced!= null)
      GLOBAL.designToolbarAdvanced.show();
   
   
    //if we're changing from basic to advanced view dump the basic gui.
    if(GLOBAL.designToolbarBasic != null)
      GLOBAL.designToolbarBasic = null;
   
   
    //if we've already loaded the toolboar down't load it again
    if(GLOBAL.designToolbarAdvanced != null)
      return;
   
   
    float button_width = 45;
    float button_height = 45;

    float posY = 10;
    float posX = 10;
    float panelHeight = SETTINGS.panelHeight;
   
    float panelWidth = SETTINGS.panelWidth;

    gui.reset();


   
    //panel for slice widget
    float slicePanleWidth = 100;
    float slicePanleHeight = 100;
    GLOBAL.slicePanel = new GUIPanel(GLOBAL.windowWidth - slicePanleWidth,
        0, slicePanleWidth, slicePanleHeight, gui);
    GLOBAL.slicePanel.invisible();
    gui.add(GLOBAL.slicePanel);
    setupGUITabsAll(applet,gui);

    /*
    sliderToggle = new GUIToggleSlide(GLOBAL.windowWidth - 100, 18,
        "3D Preview on", "off", gui);
    sliderToggle.isDown = true;
    sliderToggle.addActionListener(GLOBAL.uiTools, "render3dPreview", null);
    gui.add(sliderToggle);
     */

    GUIPanelTabbed tabbedPanel = new GUIPanelTabbed((GLOBAL.windowWidth-panelWidth)/2.0f, GLOBAL.windowHeight
        - panelHeight, (int) panelWidth, (int) panelHeight, gui);
    gui.add(tabbedPanel);
    GLOBAL.designToolbarAdvanced = tabbedPanel;

    /*
          ______
    _________/tools/____________________________________________________________________________
   
    Tools tab hold tools for manipulating design
    */

    GUIPanel toolPanel = new GUIPanel(0f,0f, (int) tabbedPanel.getWidth(),
        (int) panelHeight, gui);
    tabbedPanel.addTabbedPanel(toolPanel, "tools","gui/GUI_TAB_EDIT_UP.png","gui/GUI_TAB_EDIT_DOWN.png", gui);


    GUIToggle toggle = new GUIToggle(posX, posY, button_width,
        button_height, "gui/draw.png", gui);
    toggle.setComponentSet(GLOBAL.uiTools.toggleSet);
    toggle.addActionListener(GLOBAL.uiTools.SketchTools, "selectTool",
        SketchTools.DRAW_TOOL);
    toggle.setLabel("brush");
    toggle.label.align = GUILabel.CENTRE;
    toggle.label.layout = GUILabel.UNDER_COMPONENT;
   
    if (GLOBAL.uiTools.SketchTools.getCurrentTool() == SketchTools.DRAW_TOOL)
      toggle.toggleDown();
   
    toolPanel.placeComponent(toggle);

    toggle = new GUIToggle(posX, posY, button_width, button_height,
        "gui/add_leg.png", gui);
    toggle.setComponentSet(GLOBAL.uiTools.toggleSet);
    toggle.addActionListener(GLOBAL.uiTools.SketchTools, "selectTool",
        SketchTools.LEG_TOOL);
    toggle.setLabel("leg");
    toggle.label.align = GUILabel.CENTRE;
    toggle.label.layout = GUILabel.UNDER_COMPONENT;

    if (GLOBAL.uiTools.SketchTools.getCurrentTool() == SketchTools.LEG_TOOL)
      toggle.toggleDown();
   
    toolPanel.placeComponent(toggle);

    toggle = new GUIToggle(posX, posY, button_width, button_height,
        "gui/select.png", gui);
    toggle.setComponentSet(GLOBAL.uiTools.toggleSet);
    toggle.addActionListener(GLOBAL.uiTools.SketchTools, "selectTool",
        SketchTools.SELECT_TOOL);
    toggle.setLabel("select");
    toggle.label.align = GUILabel.CENTRE;
    toggle.label.layout = GUILabel.UNDER_COMPONENT;


    if (GLOBAL.uiTools.SketchTools.getCurrentTool() == SketchTools.SELECT_TOOL)
      toggle.toggleDown();
   
    toolPanel.placeComponent(toggle);

    toggle = new GUIToggle(posX, posY, button_width, button_height,
        "gui/draw_path.png", gui);
    toggle.setComponentSet(GLOBAL.uiTools.toggleSet);
    toggle.addActionListener(GLOBAL.uiTools.SketchTools, "selectTool",
        SketchTools.DRAW_PATH_TOOL);
    toggle.setLabel("path");
    toggle.label.align = GUILabel.CENTRE;
    toggle.label.layout = GUILabel.UNDER_COMPONENT;
    if (GLOBAL.uiTools.SketchTools.getCurrentTool() == SketchTools.DRAW_PATH_TOOL)
      toggle.toggleDown();
   
    toolPanel.placeComponent(toggle);

    toggle = new GUIToggle(posX, posY, button_width, button_height,
        "gui/GUI_OFFSET_PATH_ICON.png", gui);
    toggle.setComponentSet(GLOBAL.uiTools.toggleSet);
    toggle.addActionListener(GLOBAL.uiTools.SketchTools, "selectTool",
        SketchTools.DRAW_OFFSETPATH_TOOL);
    toggle.setLabel("offset path");
    toggle.label.align = GUILabel.CENTRE;
    toggle.label.layout = GUILabel.UNDER_COMPONENT;
    if (GLOBAL.uiTools.SketchTools.getCurrentTool() == SketchTools.DRAW_OFFSETPATH_TOOL)
      toggle.toggleDown();
    toolPanel.placeComponent(toggle);

    toggle = new GUIToggle(posX, posY, button_width, button_height,
        "gui/bezier.png", gui);
    toggle.setComponentSet(GLOBAL.uiTools.toggleSet);
    toggle.addActionListener(GLOBAL.uiTools.SketchTools, "selectTool",
        SketchTools.SELECT_BEZIER_TOOL);
    toggle.setLabel("bezier");
    toggle.label.align = GUILabel.CENTRE;
    toggle.label.layout = GUILabel.UNDER_COMPONENT;
    if (GLOBAL.uiTools.SketchTools.getCurrentTool() == SketchTools.SELECT_BEZIER_TOOL)
      toggle.toggleDown();
    toolPanel.placeComponent(toggle);

    toggle = new GUIToggle(posX, posY, button_width, button_height,
        "gui/measure.png", gui);
    toggle.setComponentSet(GLOBAL.uiTools.toggleSet);
    toggle.addActionListener(GLOBAL.uiTools, "selectTool",
        UITools.MEASURE_TOOL);
    toggle.setLabel("measure");
    toggle.label.align = GUILabel.CENTRE;
    toggle.label.layout = GUILabel.UNDER_COMPONENT;
    if (GLOBAL.uiTools.getCurrentTool() == UITools.MEASURE_TOOL)
      toggle.toggleDown();
    toolPanel.placeComponent(toggle);

    toggle = new GUIToggle(posX, posY, button_width, button_height,
        "gui/scale.png", gui);
    toggle.setComponentSet(GLOBAL.uiTools.toggleSet);
    toggle.addActionListener(GLOBAL.uiTools, "selectTool",
        UITools.SCALE_TOOL);
    toggle.setLabel("scale");
    toggle.label.align = GUILabel.CENTRE;
    toggle.label.layout = GUILabel.UNDER_COMPONENT;

    toolPanel.placeComponent(toggle);

    GUIButton button = new GUIButton(posX, posY, button_width,
        button_height, "gui/undo.png", null, gui);
    button.addActionListener(GLOBAL.uiTools, "undo", UITools.SCALE_TOOL);
    button.setLabel("undo");
    button.label.align = GUILabel.CENTRE;
    button.label.layout = GUILabel.UNDER_COMPONENT;

    toolPanel.placeComponent(button);

    GLOBAL.widgetToolSettings = new WidgetToolSettings(600, 0, 250,
        toolPanel.getHeight(), gui);
    toolPanel.add(GLOBAL.widgetToolSettings);

    /*
     *
     *
     *
     *
        ______
    _______/layers/____________________________________________________________________________

    Selecting and editing layers
    
     */

    GUIPanel LayerPanel = new GUIPanel(0f, 0f, (int) tabbedPanel.getWidth(), (int) panelHeight, gui);
    tabbedPanel.addTabbedPanel(LayerPanel, "layers","gui/GUI_TAB_LAYERS_UP.png","gui/GUI_TAB_LAYERS_DOWN.png", gui);

    GLOBAL.planesWidget = new WidgetPlanes(0, 0, 900, 100, gui);
    //GLOBAL.planesWidget.setup();

    LayerPanel.add(GLOBAL.planesWidget);

    /*
     *
     *
     *
     *
        ______
    _______/slices/____________________________________________________________________________

    Selecting and editing slices
    
     */
    GUIPanel slicesPanel = new GUIPanel(0f, 0f, tabbedPanel.getWidth(), (int) panelHeight, gui);
    tabbedPanel.addTabbedPanel(slicesPanel, "slices","gui/GUI_TAB_SLICES_UP.png","gui/GUI_TAB_SLICES_DOWN.png", gui);

    GLOBAL.toggleSetSlices = new GUIComponentSet();

    toggle = new GUIToggle(posX, posY, button_width, button_height,
        "gui/GUI_SLICE_SLICE_BUTTON.png", gui);
    toggle.setComponentSet(GLOBAL.toggleSetSlices);
    toggle.addActionListener(GLOBAL.uiTools, "selectTool",
        UITools.SLICES_SINGLE_SLICE);
    toggle.setLabel("slice");
    toggle.label.align = GUILabel.CENTRE;
    toggle.label.layout = GUILabel.UNDER_COMPONENT;
    slicesPanel.placeComponent(toggle);

    toggle = new GUIToggle(posX, posY, button_width, button_height,
        "gui/GUI_SLICE_MULTISLICE_BUTTON.png", gui);
    toggle.setComponentSet(GLOBAL.toggleSetSlices);
    toggle.addActionListener(GLOBAL.uiTools, "selectTool",
        UITools.SLICES_GROUP_SLICES);
    toggle.setLabel("slice" + '\n' + "group");
    toggle.label.align = GUILabel.CENTRE;
    toggle.label.layout = GUILabel.UNDER_COMPONENT;
    slicesPanel.placeComponent(toggle);

    toggle = new GUIToggle(posX, posY, button_width, button_height,
        "gui/GUI_SLICE_SLAT_BUTTON.png", gui);
    toggle.setComponentSet(GLOBAL.toggleSetSlices);
    toggle.addActionListener(GLOBAL.uiTools, "selectTool",
        UITools.SLICES_SINGLE_SLAT);
    toggle.setLabel("slat");
    toggle.label.align = GUILabel.CENTRE;
    toggle.label.layout = GUILabel.UNDER_COMPONENT;
    slicesPanel.placeComponent(toggle);

    toggle = new GUIToggle(posX, posY, button_width, button_height,
        "gui/GUI_SLICE_SLAT_BUTTON.png", gui);
    toggle.setComponentSet(GLOBAL.toggleSetSlices);
    toggle.addActionListener(GLOBAL.uiTools, "selectTool",
        UITools.SLICES_SLATSLICE_GROUP);
    toggle.setLabel("slatSlice" + '\n' + "group");
    toggle.label.align = GUILabel.CENTRE;
    toggle.label.layout = GUILabel.UNDER_COMPONENT;
    slicesPanel.placeComponent(toggle);

    GLOBAL.slicesWidget = new WidgetSlices(250, 0, 300, panelHeight, gui);
    GLOBAL.slicesWidget.setupButtons();
    slicesPanel.add(GLOBAL.slicesWidget);

   
    /*
    button = new GUIButton(GLOBAL.windowWidth - 80,
        GLOBAL.windowHeight - 100, button_width, button_height,
        "gui/GUI_SLICE_DELETE_BUTTON.png", null, gui);
    button.addActionListener(GLOBAL.uiTools, "reset", UITools.SCALE_TOOL);
    button.setLabel("reset");
    button.label.align = GUILabel.CENTRE;
    button.label.layout = GUILabel.UNDER_COMPONENT;

    gui.add(button);
*/
    //GLOBAL.widgetToolSettings.setupToolSettings(0);

    /*

    //physics
    GUIPanel physicsPanel = new GUIPanel(0f, GLOBAL.windowHeight
        - panelHeight, (int) GLOBAL.windowWidth, (int) panelHeight, gui);
    tabbedPanel.addTabbedPanel(physicsPanel, "physics", gui);

    physicsPanel.setContentPosition(30, 20);
    sliderToggle = new GUIToggleSlide(80, 50, "on", "off", gui);
    sliderToggle.addActionListener(GLOBAL.jBullet, "physics_on");
    physicsPanel.placeComponent(sliderToggle);

    posY = 20;
    posX = 0;
    posX += 185;
    toggle = new GUIToggle(120, posY, button_width, button_height,
        "gui/sit.png", "gui/stand.png", gui);
    toggle.addActionListener(GLOBAL.uiTools, "sitStand", UITools.DRAW_TOOL);
    toggle.setLabel("sit/stand");

    toggle.label.align = GUILabel.LEFT;
    toggle.label.layout = GUILabel.UNDER_COMPONENT;

    physicsPanel.placeComponent(toggle);

    posX += 185;
    toggle = new GUIToggle(190, posY, button_width, button_height,
        "gui/pause.png", gui);
    toggle.addActionListener(GLOBAL.uiTools, "puase", UITools.DRAW_TOOL);
    toggle.setLabel("pause");

    toggle.label.align = GUILabel.LEFT;
    toggle.label.layout = GUILabel.UNDER_COMPONENT;

    physicsPanel.placeComponent(toggle);

    //camera
    GUIPanel cameraPanel = new GUIPanel(0f, 0f, (int) GLOBAL.windowWidth,
        (int) panelHeight, gui);
    tabbedPanel.addTabbedPanel(cameraPanel, "camera", gui);

    //toggleSet = new GUIComponentSet();

    toggle = new GUIToggle(posX, posY, button_width, button_height,
        "gui/camera_zoom.png", gui);
    toggle.setComponentSet(toggleSet);
    toggle.addActionListener(GLOBAL.uiTools, "selectTool",
        UITools.ZOOM_CAM_TOOL);
    toggle.setLabel("zoom");
    toggle.label.align = GUILabel.CENTRE;
    toggle.label.layout = GUILabel.UNDER_COMPONENT;

    cameraPanel.placeComponent(toggle);

    toggle = new GUIToggle(posX, posY, button_width, button_height,
        "gui/camera_rotate.png", gui);
    toggle.setComponentSet(toggleSet);
    toggle.addActionListener(GLOBAL.uiTools, "selectTool",
        UITools.ROTATE_CAM_TOOL);
    toggle.setLabel("rotate");
    toggle.label.align = GUILabel.CENTRE;
    toggle.label.layout = GUILabel.UNDER_COMPONENT;

    cameraPanel.placeComponent(toggle);

    toggle = new GUIToggle(posX, posY, button_width, button_height,
        "gui/camera_move.png", gui);
    toggle.setComponentSet(toggleSet);
    toggle.addActionListener(GLOBAL.uiTools, "selectTool",
        UITools.MOVE_CAM_TOOL);
    toggle.setLabel("move");
    toggle.label.align = GUILabel.CENTRE;
    toggle.label.layout = GUILabel.UNDER_COMPONENT;

    cameraPanel.placeComponent(toggle);

    toggle = new GUIToggle(posX, posY, button_width, button_height,
        "gui/GUI_CAM_JUMP_FRONT_UP.png", gui);
    toggle.setComponentSet(toggleSet);
    toggle.addActionListener(GLOBAL.uiTools, "camJumpFront",
        UITools.MOVE_CAM_TOOL);
    toggle.setLabel("front");
    toggle.label.align = GUILabel.CENTRE;
    toggle.label.layout = GUILabel.UNDER_COMPONENT;

    cameraPanel.placeComponent(toggle);

    toggle = new GUIToggle(posX, posY, button_width, button_height,
        "gui/GUI_CAM_JUMP_SIDE_UP.png", gui);
    toggle.setComponentSet(toggleSet);
    toggle.addActionListener(GLOBAL.uiTools, "camJumpSide",
        UITools.MOVE_CAM_TOOL);
    toggle.setLabel("side");
    toggle.label.align = GUILabel.CENTRE;
    toggle.label.layout = GUILabel.UNDER_COMPONENT;

    cameraPanel.placeComponent(toggle);

    toggle = new GUIToggle(posX, posY, button_width, button_height,
        "gui/GUI_CAM_JUMP_TOP_UP.png", gui);
    toggle.setComponentSet(toggleSet);
    toggle.addActionListener(GLOBAL.uiTools, "camJumpTop",
        UITools.MOVE_CAM_TOOL);
    toggle.setLabel("top");
    toggle.label.align = GUILabel.CENTRE;
    toggle.label.layout = GUILabel.UNDER_COMPONENT;

    cameraPanel.placeComponent(toggle);

    //save
    GUIPanel savePanel = new GUIPanel(0f, 0f, (int) GLOBAL.windowWidth,
        (int) panelHeight, gui);
    tabbedPanel.addTabbedPanel(savePanel, "save", gui);

    button = new GUIButton(0, 0, button_width, button_height,
        "gui/save_pdf.png", null, gui);
    button.addActionListener(GLOBAL.uiTools, "savePDF",
        UITools.VIEW_SHAPE_PACK);
    button.setLabel("save pdf");
    button.label.align = GUILabel.CENTRE;
    button.label.layout = GUILabel.UNDER_COMPONENT;
    savePanel.placeComponent(button);

    button = new GUIButton(0, 0, button_width, button_height,
        "gui/print.png", null, gui);
    button.addActionListener(GLOBAL.uiTools, "print",
        UITools.VIEW_SHAPE_PACK);
    button.setLabel("print");
    button.label.align = GUILabel.CENTRE;
    button.label.layout = GUILabel.UNDER_COMPONENT;
    savePanel.placeComponent(button);

    button = new GUIButton(0, 0, button_width, button_height,
        "gui/plot.png", null, gui);
    button.addActionListener(GLOBAL.uiTools, "saveCraftRobo",
        UITools.VIEW_SHAPE_PACK);
    button.setLabel("plot");
    button.label.align = GUILabel.CENTRE;
    button.label.layout = GUILabel.UNDER_COMPONENT;
    savePanel.placeComponent(button);

    button = new GUIButton(0, 0, button_width, button_height,
        "gui/save_cha.png", null, gui);
    button.addActionListener(GLOBAL.uiTools, "saveChairToFile",
        UITools.VIEW_SHAPE_PACK);
    button.setLabel("save");
    button.label.align = GUILabel.CENTRE;
    button.label.layout = GUILabel.UNDER_COMPONENT;
    savePanel.placeComponent(button);

   
    button = new GUIButton(0,0,button_width,button_height,  "gui/share.png",null,gui);
    button.addActionListener(GLOBAL.uiTools, "ShareChairOnline",
        UITools.VIEW_SHAPE_PACK);
    button.setLabel("upload");
    button.label.align = GUILabel.CENTRE; button.label.layout = GUILabel.UNDER_COMPONENT;
   
    savePanel.placeComponent(button);



    */

    toolPanel.show();

    setupMenuBar(applet);

  }

  static void setupGUIPattern(PApplet applet, ModalGUI gui) {

   
   
   
    if(GLOBAL.designToolbarPattern != null)
    GLOBAL.designToolbarPattern.show();
   
    if(GLOBAL.designToolbarBasic != null)
      GLOBAL.designToolbarBasic.hide();
   
    if(GLOBAL.designToolbarAdvanced!= null)
      GLOBAL.designToolbarAdvanced.hide();
   
    if(GLOBAL.previewWidget != null){
    GLOBAL.previewWidget.minimizeTogglePattern(null);
    GLOBAL.previewWidget.designItBtn.show();
    GLOBAL.previewWidget.makeItBtn.hide();
   
    }
   
   
    if(GLOBAL.designToolbarPattern != null)
      return;
   
   
    float button_width = 45;
    float button_height = 45;

    float posY = 10;
    float posX = 10;
   
    float panelHeight = SETTINGS.panelHeight;
   
    float panelWidth = SETTINGS.panelWidth;
   
   

  //  gui.reset();
   
  //  setupGUITabsAll(applet,gui);
   

    //panel for slice widget
    float slicePanleWidth = 100;
    float slicePanleHeight = 100;
    GLOBAL.slicePanel = new GUIPanel(GLOBAL.windowWidth - slicePanleWidth,
        0, slicePanleWidth, slicePanleHeight, gui);
    GLOBAL.slicePanel.invisible();
    gui.add(GLOBAL.slicePanel);



    /*
    sliderToggle = new GUIToggleSlide(GLOBAL.windowWidth - 100, 18,
        "3D Preview on", "off", gui);
    sliderToggle.isDown = true;
    sliderToggle.addActionListener(GLOBAL.uiTools, "render3dPreview", null);
    gui.add(sliderToggle);
     */

    GUIPanelTabbed tabbedPanel = new GUIPanelTabbed((GLOBAL.windowWidth-panelWidth)/2, GLOBAL.windowHeight
        - panelHeight, (int) panelWidth, (int) panelHeight, gui);
    gui.add(tabbedPanel);
    GLOBAL.designToolbarPattern = tabbedPanel;

    //tools
    GUIPanel toolPanel = new GUIPanel((GLOBAL.windowWidth-panelWidth)/2,
        GLOBAL.windowHeight - panelHeight, panelWidth,
        (int) panelHeight, gui);
    tabbedPanel.addTabbedPanel(toolPanel, "tools", gui);

   
    //save

    GUIButton button = new GUIButton(0, 0, button_width, button_height,
        "gui/save_pdf.png", null, gui);
    button.addActionListener(GLOBAL.uiTools, "savePDF",
        UITools.VIEW_SHAPE_PACK);
    button.setLabel("save pdf");
    button.label.align = GUILabel.CENTRE;
    button.label.layout = GUILabel.UNDER_COMPONENT;
    toolPanel.placeComponent(button);

    button = new GUIButton(0, 0, button_width, button_height,
        "gui/print.png", null, gui);
    button.addActionListener(GLOBAL.uiTools, "print",
        UITools.VIEW_SHAPE_PACK);
    button.setLabel("print");
    button.label.align = GUILabel.CENTRE;
    button.label.layout = GUILabel.UNDER_COMPONENT;
    toolPanel.placeComponent(button);

    button = new GUIButton(0, 0, button_width, button_height,
        "gui/plot.png", null, gui);
    button.addActionListener(GLOBAL.uiTools, "saveCraftRobo",
        UITools.VIEW_SHAPE_PACK);
    button.setLabel("plot");
    button.label.align = GUILabel.CENTRE;
    button.label.layout = GUILabel.UNDER_COMPONENT;
    toolPanel.placeComponent(button);
   
    // materials
    GLOBAL.widgetMaterials =  new WidgetMaterials(0f, GLOBAL.windowHeight
        - panelHeight, (int) panelWidth, (int) panelHeight, gui);
   
    tabbedPanel.addTabbedPanel(GLOBAL.widgetMaterials, "materials", gui);
   

  }

  public static void setupMenuBar(PApplet applet) {
    //----------------------------------------------------------------------------------------
    //MENU BAR
    //-----------------------------------------------------------------------------------------
    //this doesn't demonstrate best coding practice, just a simple method
    //create the MenuBar Object
   
   
   
    menuListen = new myMenuListener();
    myMenu = new MenuBar();
    MenuItem item = null;

    //create the top level button

    Menu File = new Menu("File");

    item = new MenuItem("New",new MenuShortcut('N',false));
    item.setActionCommand("deleteAllChairs");
    item.addActionListener(menuListen);
    File.add(item);

    item = new MenuItem("Save Chair",new MenuShortcut('S',false));
    item.setActionCommand("saveChairToFileAuto");
    item.addActionListener(menuListen);
    File.add(item);

    item = new MenuItem("Save Chair As",new MenuShortcut('S',true));
    item.setActionCommand("saveChairToFile");
    item.addActionListener(menuListen);
    File.add(item);

    item = new MenuItem("Share Chair Online");
    item.setActionCommand("ShareChairOnline");
    item.addActionListener(menuListen);
    File.add(item);

    Menu Export = new Menu("Export Pattern");

    item = new MenuItem("To PDF");
    item.setActionCommand("savePDF");
    item.addActionListener(menuListen);
    Export.add(item);
   
    item = new MenuItem("To SVG");
    item.setActionCommand("savePattern");
    item.addActionListener(menuListen);
    Export.add(item);

    item = new MenuItem("To DXF");
    item.setActionCommand("savePatternDXF");
    item.addActionListener(menuListen);
    Export.add(item);

    item = new MenuItem("Model To dxf");
    item.setActionCommand("saveModelDxf");
    item.addActionListener(menuListen);
    Export.add(item);

    item = new MenuItem("To craftRobo");
    item.setActionCommand("saveCraftRobo");
    item.setName(Integer.toString(UITools.DRAW_TOOL));
    item.addActionListener(menuListen);
    Export.add(item);

    item = new MenuItem("To PNG Preview");
    item.setActionCommand("exportPreview");
    item.addActionListener(menuListen);
    Export.add(item);

    File.add(Export);

    item = new MenuItem("Open",new MenuShortcut('O',false));
    item.setActionCommand("openChairFromFile");
    item.addActionListener(menuListen);
    File.add(item);
    /*
    item = new MenuItem("open template chair");
    item.setActionCommand("loadTemplateChair");
    item.addActionListener(menuListen);
    File.add(item);
    */
    item = new MenuItem("import image");
    item.setActionCommand("openEnvironmentFromFile");
    item.addActionListener(menuListen);
    File.add(item);

    item = new MenuItem("import SVG");
    item.setActionCommand("importSVG");
    item.addActionListener(menuListen);
    File.add(item);

    item = new MenuItem("Print Preview");
    item.setActionCommand("toggleView");
    item.addActionListener(menuListen);
    File.add(item);

    if (SETTINGS.DEVELOPER_MODE) {
      item = new MenuItem("Run Automated Actions");
      item.setActionCommand("runAutomatedActions");
      item.addActionListener(menuListen);
      File.add(item);

    }

    //add the button to the menu
    myMenu.add(File);

    Menu Edit = new Menu("Edit");

   
    item = new MenuItem("Copy" ,new MenuShortcut('C',false));
    item.setActionCommand("copyChair");
    item.addActionListener(menuListen);
    Edit.add(item);
   
    item = new MenuItem("Paste" ,new MenuShortcut('V',false));
    item.setActionCommand("pasteChair");
    item.addActionListener(menuListen);
    Edit.add(item);
   
   
    //create all the Menu Items and add the menuListener to check their state.
    item = new MenuItem("Undo" ,new MenuShortcut('Z',false));
    item.setActionCommand("undo");
    item.addActionListener(menuListen);
    Edit.add(item);

    //create all the Menu Items and add the menuListener to check their state.
    item = new MenuItem("Redo",new MenuShortcut('Z',true));
    item.setActionCommand("redo");
    item.addActionListener(menuListen);
    Edit.add(item);

    item = new MenuItem("Screen Capture");
    item.setActionCommand("captureScreen");
    item.addActionListener(menuListen);
    Edit.add(item);

    item = new MenuItem("Flip Chair");
    item.setActionCommand("flipChair");
    item.addActionListener(menuListen);
    Edit.add(item);

    myMenu.add(Edit);

    Menu Tools = new Menu("Tools");

    //create all the Menu Items and add the menuListener to check their state.

    item = new MenuItem("Select");
    item.setActionCommand("selectTool");
    item.setName(Integer.toString(UITools.SELECT_TOOL));
    item.addActionListener(menuListen);
    Tools.add(item);

    item = new MenuItem("Draw");
    item.setActionCommand("selectTool");
    item.setName(Integer.toString(UITools.DRAW_TOOL));
    item.addActionListener(menuListen);
    Tools.add(item);

    item = new MenuItem("Leg");
    item.setActionCommand("selectTool");
    item.setName(Integer.toString(UITools.LEG_TOOL));
    item.addActionListener(menuListen);
    Tools.add(item);

    item = new MenuItem("Path");
    item.setActionCommand("selectTool");
    item.setName(Integer.toString(UITools.DRAW_PATH_TOOL));
    item.addActionListener(menuListen);
    Tools.add(item);

    item = new MenuItem("Bezier");
    item.setActionCommand("selectTool");
    item.setName(Integer.toString(UITools.SELECT_BEZIER_TOOL));
    item.addActionListener(menuListen);
    Tools.add(item);

    item = new MenuItem("Scale");
    item.setActionCommand("selectTool");
    item.setName(Integer.toString(UITools.SCALE_TOOL));
    item.addActionListener(menuListen);
    Tools.add(item);

    item = new MenuItem("Measure");
    item.setActionCommand("selectTool");
    item.setName(Integer.toString(UITools.MEASURE_TOOL));
    item.addActionListener(menuListen);
    Tools.add(item);

    Menu camera = new Menu("Camera");

    item = new MenuItem("zoom");
    item.setActionCommand("selectTool");
    item.setName(Integer.toString(UITools.ZOOM_CAM_TOOL));
    item.addActionListener(menuListen);
    camera.add(item);

    item = new MenuItem("pan");
    item.setActionCommand("selectTool");
    item.setName(Integer.toString(UITools.MOVE_CAM_TOOL));
    item.addActionListener(menuListen);
    camera.add(item);

    item = new MenuItem("rotate");
    item.setActionCommand("selectTool");
    item.setName(Integer.toString(UITools.ROTATE_CAM_TOOL));
    item.addActionListener(menuListen);
    camera.add(item);

    Menu View = new Menu("View");

    item = new MenuItem("front");
    item.setActionCommand("camJumpFront");
    item.addActionListener(menuListen);
    View.add(item);

    item = new MenuItem("side");
    item.setActionCommand("camJumpSide");
    item.addActionListener(menuListen);
    View.add(item);

    item = new MenuItem("top");
    item.setActionCommand("camJumpTop");
    item.addActionListener(menuListen);
    View.add(item);

    item = new MenuItem("isometric");
    item.setActionCommand("camJumpIso");
    item.addActionListener(menuListen);
    View.add(item);

    camera.add(View);

    Tools.add(camera);

    myMenu.add(Tools);

   
    Menu layers = new Menu("Layers");

    item = new MenuItem("Select Next",new MenuShortcut(KeyEvent.VK_LEFT,false));
    item.setActionCommand("layersSelectNext");
    item.addActionListener(menuListen);
    layers.add(item);

    item = new MenuItem("Select Prev",new MenuShortcut(KeyEvent.VK_RIGHT,false));
    item.setActionCommand("layersSelectPrev");
    item.addActionListener(menuListen);
    layers.add(item);
    myMenu.add(layers);

   
    Menu physics = new Menu("Physics");

    item = new MenuItem("play/pause",new MenuShortcut('G',false));
    item.setActionCommand("physicsPlayPause");
    item.addActionListener(menuListen);
    physics.add(item);



    item = new MenuItem("rewind",new MenuShortcut('G',true));
    item.setActionCommand("physicsRewind");
    item.addActionListener(menuListen);
    physics.add(item);

    myMenu.add(physics);

    Menu Mode = new Menu("Mode");

    item = new MenuItem("Basic");
    item.setActionCommand("changeModeBasic");
    item.addActionListener(menuListen);
    Mode.add(item);

    item = new MenuItem("Expert");
    item.setActionCommand("changeModeExpert");
    item.addActionListener(menuListen);
    Mode.add(item);
   
   
    item = new MenuItem("Make It",new MenuShortcut('M',false));
    item.setActionCommand("viewPattern");
    item.addActionListener(menuListen);
    Mode.add(item);
   
    item = new MenuItem("Build It",new MenuShortcut('B',false));
    item.setActionCommand("viewModel");
    item.addActionListener(menuListen);
    Mode.add(item);
   
    myMenu.add(Mode);
   
   
   
   
   

    Menu view = new Menu("View");

    item = new MenuItem("Snap to Grid",new MenuShortcut('I',true));
    item.setActionCommand("toggleGrid");
    item.addActionListener(menuListen);
    view.add(item);

   
    item = new MenuItem("Ergonomic Figure",new MenuShortcut('E',false));
    item.setActionCommand("togglePerson");
    item.addActionListener(menuListen);
    view.add(item);
   
    item = new MenuItem("Floor",new MenuShortcut('F',false));
    item.setActionCommand("toggleFloor");
    item.addActionListener(menuListen);
    view.add(item);
   
    myMenu.add(view);
   
    /*
   
    Menu Language = new Menu("Language");

    item= new MenuItem("English");
    item.setActionCommand("selectLanguage");
    item.setName(Integer.toString(UITools.LANGUAGE_ENG));
    item.addActionListener(menuListen);
    Language.add(item);
   
    item= new MenuItem("Japanese");
    item.setActionCommand("selectLanguage");
    item.setName(Integer.toString(UITools.LANGUAGE_JP));
    item.addActionListener(menuListen);
    Language.add(item);
   
    myMenu.add(Language);
    */

    if (GLOBAL.frame == null)
      return;
    //add the menu to the frame!
    GLOBAL.frame.setMenuBar(myMenu);

    Menu Help = new Menu("Help");

    item = new MenuItem("About");
    item.setActionCommand("selectTool");
    item.setName(Integer.toString(UITools.ZOOM_CAM_TOOL));
    item.addActionListener(menuListen);
    Help.add(item);

    /*
    item= new MenuItem("Show Instructions");
    item.setActionCommand("showInstructions");
    item.addActionListener(menuListen);
    Help.add(item);
   
   
    item= new MenuItem("Show Instruction Movie");
    item.setActionCommand("showInstructionMovie");
    item.addActionListener(menuListen);
    Help.add(item);
    */

    if (!System.getProperty("java.version").startsWith("1.5")) {
      item = new MenuItem("reference");
      item.setActionCommand("showReferenceWebpage");
      item.addActionListener(menuListen);
      Help.add(item);

      item = new MenuItem("forum");
      item.setActionCommand("showForumWebpage");
      item.addActionListener(menuListen);
      Help.add(item);

      item = new MenuItem("report a bug");
      item.setActionCommand("showBugsWebpage");
      item.addActionListener(menuListen);
      Help.add(item);
    }

    myMenu.add(Help);

    //add the menu to the frame!
    GLOBAL.frame.setMenuBar(myMenu);

    //applet.println(myMenu);
  }

  private String keyString = "";
  private int lastKey;

  /*Shortcuts
  Ctrl + Z (Undo)
  Ctrl + S (Save Chair)
  Ctrl + P (Print pdf)
 
 
⌘S Save
⇧⌘ Save As

⌘O Open

⌘Z Undo
⇧⌘Z Redo

⌘G Physics play/pause
⇧⌘G Physics reset

⇧⌘I  Show/Hide Grid
⌘E  Show/Hide Ergonomic Figure
⌘F  Show/Hide Floor


⌘M  make it
⌘B  build it



//Tools
    d Draw Tool
    a Select Tool
    b Bezier Tool
    o Offset Path Tool
    p Path tool
    l Leg tools
   
   
    Path Tool
    Ctrl add remove
    ` DEBUG
   
  */
  public void keyPressed(char key, int keyCode) {
     
    if (GLOBAL.gui.hasFocus()) {
      return;

    }

   
    //LOGGER.info("key pressed" + keyString);
    if (lastKey != keyCode) {
      //keyString +=  KeyEvent.getKeyText(keyCode);
      if (keyCode == 157 || keyCode == 17)
        keyString += "Ctrl";
      else
        keyString += key;

      lastKey = keyCode;
    }
    //LOGGER.debug(keyString);

    //shortcuts
 

   
    //reload defaults
    if (keyString.equals("CtrlR")) {
    GLOBAL.sketchProperties.loadDefaults();
    }

    // use a key press so that it doesn't make a million files

    if (GLOBAL.gui.textfieldHasFocus() || GLOBAL.gui.hasFocus())
      return;

    // if (key == PApplet.CODED) {

    if (keyCode == PConstants.BACKSPACE) {
      if (GLOBAL.sketchChairs.getCurChair() != null) {
        //GLOBAL.sketchChairs.curChair.selectedPlanes.removeLastSketch();
        //  GLOBAL.sketchChairs.curChair.updateCollisionShape();
      }
    }

    if (keyCode == PConstants.BACKSPACE || keyCode == PConstants.DELETE) {
      if (GLOBAL.sketchChairs.getCurChair() != null)
        GLOBAL.sketchChairs.getCurChair().deleteSelectedShapes();
    }

    //  }


    //Tools
    if (key == 'd') {
      GLOBAL.uiTools.SketchTools.selectTool(SketchTools.DRAW_TOOL);
    }
    if (key == 'a') {
      GLOBAL.uiTools.SketchTools.selectTool(SketchTools.SELECT_TOOL);
    }
    if (key == 'b') {
      GLOBAL.uiTools.SketchTools.selectTool(SketchTools.SELECT_BEZIER_TOOL);
   
    if (key == 'o') {
      GLOBAL.uiTools.SketchTools.selectTool(SketchTools.DRAW_OFFSETPATH_TOOL);
   
    if (key == 'p') {
      GLOBAL.uiTools.SketchTools.selectTool(SketchTools.DRAW_PATH_TOOL);
    }
    if (key == 'l') {
      GLOBAL.uiTools.SketchTools.selectTool(SketchTools.LEG_TOOL);
    }
   

   
 
    if (key == ' ') {
      GLOBAL.autoRotate = false;

     
      if(GLOBAL.uiTools.currentView == UITools.VIEW_SHAPE_PACK){
       
        GLOBAL.shapePack.ZOOM = ( (float)GLOBAL.applet.height/GLOBAL.shapePack.materialHeight);
        GLOBAL.shapePack.CAM_OFFSET_X = (int) -(GLOBAL.shapePack.materialWidth/2.0f);
        GLOBAL.shapePack.CAM_OFFSET_Y = (int) -(GLOBAL.shapePack.materialHeight/2.0f);
       
      }else{
      if (GLOBAL.rotateModelsX != 0 || GLOBAL.rotateModelsY != 0) {
        GLOBAL.prevRotateModelsX = GLOBAL.rotateModelsX;
        GLOBAL.prevRotateModelsY = GLOBAL.rotateModelsY;

        GLOBAL.rotateModelsX = 0;
        GLOBAL.rotateModelsY = 0;
      } else {
        GLOBAL.rotateModelsX = GLOBAL.prevRotateModelsX;
        GLOBAL.rotateModelsY = GLOBAL.prevRotateModelsY;
      }
      }
    }



 

   
    if (key == '`') {
     

      if(GLOBAL.debugPickBuffer){
        SETTINGS.show_framerate = false;
        SETTINGS.DEBUG = false;
        GLOBAL.debugPickBuffer = false;
        return;
      }
     
     
     
      if(SETTINGS.DEBUG ){
        SETTINGS.show_framerate = true;
        SETTINGS.DEBUG = false;
        GLOBAL.debugPickBuffer = false;
        return;
      }
     
      if(SETTINGS.show_framerate){
        SETTINGS.show_framerate = false;
        SETTINGS.DEBUG = false;
        GLOBAL.debugPickBuffer = true;
        return;
      }

     
      if(!SETTINGS.DEBUG){
      SETTINGS.DEBUG = true;
      return;
      }
     
     
    }

 
   
    if (key == 't') {
      SETTINGS.TOUCH_SCREEN_MODE = !SETTINGS.TOUCH_SCREEN_MODE;

      if (SETTINGS.TOUCH_SCREEN_MODE)
        SETTINGS_SKETCH.select_dia = SETTINGS_SKETCH.select_dia_touch;
      else
        SETTINGS_SKETCH.select_dia = SETTINGS_SKETCH.select_dia_default;

    }

    if (key == 'b') {
      if (SETTINGS.REC) {
        SETTINGS.REC = false;
        //GLOBAL.mm.finish();
      } else {
        String currentDir = new File(".").getAbsolutePath();
        String path = currentDir + "\\recordings\\drawing####.mov";

        int id = 0;
        boolean nameFound = false;
        String location = "";

        while (!nameFound && id < 10000) {
          location = currentDir + "\\recordings\\sketch-" + id
              + ".mov";
          File f = new File(location);

          if (!f.exists())
            nameFound = true;

          id++;
        }

        /*
        System.out.println("REC to: " +location);
          GLOBAL.mm = new MovieMaker(GLOBAL.applet, GLOBAL.windowWidth, GLOBAL.windowHeight, location,
                      15, MovieMaker.ANIMATION, MovieMaker.HIGH);
         
          SETTINGS.REC = true;
          */

      }
    }

 
    if (key == 'o') {

      GLOBAL.person.printOrigins();
    }

   
    // if(key == 'm')
  }

  public void keyReleased(char key, int keyCode) {
    // TODO Auto-generated method stub
    keyString = "";
    lastKey = -1;
  }

  public void toggleButtons() {

    if (SETTINGS.EXHIBITION_MODE && false) {
      GLOBAL.gui.components.showAll();
      UI.savePdfButton.hide();
      UI.printRoboButton.hide();
      UI.printPdfButton.hide();

      if (GLOBAL.uiTools.currentView == GLOBAL.uiTools.VIEW_SHAPE_PACK) {
        GLOBAL.gui.components.hideAll();
        UI.patternButton.show();
        UI.patternButton.justMade = true;

        UI.savePdfButton.show();
        UI.printRoboButton.show();
        UI.printPdfButton.show();

      } else {

        if (GLOBAL.autoRotate) {
          GLOBAL.gui.components.hideAll();
          UI.rotateCamera.show();

        }

        if (this.saveChairToggle.isDown) {
          GLOBAL.gui.components.hideAll();
          UI.saveChairToggle.show();
          //UI.saveChairToggle.justMade = true;

          UI.saveChairFileButton.show();
          UI.shareChairButton.show();

        } else {
          UI.saveChairFileButton.hide();
          UI.shareChairButton.hide();

        }
      }
    }
  }

  public void updateMouse(int mouseX, int mouseY, int pmouseX, int pmouseY,
      boolean mousePressed, int mouseButton) {
    UI.mouseX = mouseX;
    UI.mouseY = mouseY;
    UI.pmouseX = pmouseX;
    UI.pmouseY = pmouseY;
    UI.mouseDown = mousePressed;
    UI.mouseButton = mouseButton;

  }

}
TOP

Related Classes of cc.sketchchair.core.UI

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.