Package cc.sketchchair.environments

Source Code of cc.sketchchair.environments.Environments

/*******************************************************************************
* 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.environments;

import java.awt.FileDialog;
import java.io.File;
import java.util.ArrayList;

import javax.jnlp.FileContents;
import javax.jnlp.FileOpenService;
import javax.jnlp.ServiceManager;

import cc.sketchchair.core.GLOBAL;
import cc.sketchchair.core.LOGGER;
import cc.sketchchair.core.SETTINGS;
import cc.sketchchair.core.UITools;
import cc.sketchchair.sketch.SketchTools;

import ModalGUI.GUIButton;
import ModalGUI.GUIEvent;
import ModalGUI.GUIPanel;
import ModalGUI.ModalGUI;

import processing.core.PApplet;
import processing.core.PGraphics;
import processing.core.PImage;
import toxi.geom.Vec2D;

/**
* Container class for Environments.
* @author gregsaul
*
*/
public class Environments {
  public ArrayList<Environment> l = new ArrayList<Environment>();

  public boolean render = true;

  public GUIPanel panel;

  public Environments() {

  }

  public boolean containsEnvironment(String fileName) {
    for (Environment evenvironment : l) {
      if (evenvironment.fileName == fileName)
        return true;
    }
    return false;

  }

  public Environment get(String fileName) {
    for (Environment evenvironment : l) {
      if (evenvironment.fileName == fileName)
        return evenvironment;
    }
    return null;

  }

  public void loadEnvironment(GUIEvent e) {

    if (!containsEnvironment(e.stringVal)) {
      Environment environment = new Environment(e.stringVal,
          GLOBAL.applet);
      this.l.add(environment);
    } else {
      Environment environment = get(e.stringVal);
      environment.destroy();
    }

    //  System.out.println(e.stringVal);
  }

  void loadFolder(String folder, Object loadObj, ModalGUI gui,
      GUIPanel panel, PApplet applet) {
    File fp = new File(folder);

    if (!fp.isDirectory())
      return;
    GUIButton button = null;

    String dirContence[] = fp.list();

    for (int i = 0; i < dirContence.length; i++) {

      String path = folder + "\\" + dirContence[i];

      int dot = path.lastIndexOf(".");
      String ext = path.substring(dot + 1);

      if (ext.equals("jpg") || ext.equals("png")) {

        PImage image = applet.loadImage(path);
        PImage imageCpy = applet.createImage(40, 40, 2);

        if (image.width > image.height)
          imageCpy.copy(image, 0, 0, image.height, image.height, 0,
              0, 40, 40);
        else
          imageCpy.copy(image, 0, 0, image.width, image.width, 0, 0,
              40, 40);

        //image.resize(40, 40);

        button = new GUIButton(0, 0, imageCpy, null, GLOBAL.applet, gui);
        button.addActionListener(GLOBAL.environments,
            "loadEnvironment", path);

        //gui.add(button);
        panel.placeComponent(button);
      }
    }

  }

  public void mouseDragged(float mouseX, float mouseY) {

  }

  public void mousePressed(float mouseX, float mouseY) {
    if (render) {

      if ((GLOBAL.uiTools.getCurrentTool() == UITools.MOVE_OBJECT || GLOBAL.uiTools.SketchTools
          .getCurrentTool() == SketchTools.SELECT_TOOL
          && !GLOBAL.uiTools.keyPressed)) {
        for (Environment evenvironment : l) {
          if (evenvironment.visible
              && evenvironment.isOver(new Vec2D(mouseX, mouseY)))
            evenvironment.beingDragged = true;
        }

      }

      if ((GLOBAL.uiTools.getCurrentTool() == UITools.SCALE_TOOL)) {
        for (Environment evenvironment : l) {
          if (evenvironment.visible
              && evenvironment.isOver(new Vec2D(mouseX, mouseY)))
            evenvironment.beingScaled = true;
        }

      }

      if ((GLOBAL.uiTools.SketchTools.getCurrentTool() == SketchTools.SELECT_TOOL && GLOBAL.uiTools.keyPressed)) {
        for (Environment evenvironment : l) {
          if (evenvironment.visible
              && evenvironment.isOver(new Vec2D(mouseX, mouseY)))
            evenvironment.beingPushed = true;
        }

      }

      if (((GLOBAL.uiTools.getCurrentTool() == UITools.MOVE_OBJECT || GLOBAL.uiTools.SketchTools
          .getCurrentTool() == SketchTools.SELECT_TOOL) && GLOBAL.uiTools.mouseButton == UITools.MOUSE_RIGHT)) {

        for (Environment evenvironment : l) {
          if (evenvironment.visible
              && evenvironment.isOver(new Vec2D(mouseX, mouseY))) {
            evenvironment.wakeUp();
            break;
          }
        }

      }

    }
  }

  public void mouseReleased(float mouseX, float mouseY) {

    for (Environment evenvironment : l) {
      evenvironment.beingDragged = false;
      evenvironment.beingScaled = false;
      evenvironment.beingPushed = false;

    }

  }

  public void openEnvironmentFromFile(GUIEvent e) {
    LOGGER.info("Preparing to open SketchChair file.");

    FileDialog fd = new FileDialog(GLOBAL.applet.frame, "open",
        FileDialog.LOAD);
    fd.setFile("chair" + SETTINGS.chairSaveNum + ".png");
    String currentDir = new File(".").getAbsolutePath();
    fd.setDirectory(currentDir + "\\savedChairs\\");
    /*
    fd.setFilenameFilter(new FilenameFilter(){
      public boolean accept(File directory, String filename)
      {
      return (filename.endsWith("*.cha"));
      }
      });
    */
    fd.setLocation(50, 50);
    fd.pack();

    fd.show();

    //System.out.println(fd.getDirectory() +fd.getFile());
    if (fd.getName() != null) {
      String filename = fd.getFile();

      LOGGER.info("Loading: " + fd.getDirectory() + filename);

      Environment environment = new Environment(fd.getDirectory()
          + filename, GLOBAL.applet);
      this.l.add(environment);

    } else {
      // println("not an stl file");
    }

  }

  public void render(PGraphics g) {

    update();

    //if(render){
    for (Environment evenvironment : l) {

      evenvironment.render(g);

    }
    //}
  }

  public void setupGUI(ModalGUI gui, PApplet applet) {

    this.panel = new GUIPanel(GLOBAL.windowWidth - 240, 220, 220f, 110f,
        true, applet, gui);
    gui.add(this.panel);
    this.panel.setLabel("environments");

    /*
    buttonAddPlane = new GUI.GUIButton(panelX, 15, "proButtons/GUI_PLANE_ADD_UP.png",
          "GUI_PLANE_ADD_DOWN.png", GLOBAL.applet);
    buttonAddPlane.addActionListener(GLOBAL.uiTools, "addPlane",
          UITools.LINE_TOOL);
    buttonAddPlane.addToolTip(GLOBAL.applet,"GUI_PLANE_ADD_TOOLTIP", LANGUAGE);

      gui.add(buttonAddPlane);
     
      if(SETTINGS.WEB_MODE)
      return;
    */
    if (SETTINGS.WEB_MODE)
      return;
    //String currentDir = new File(".").getAbsolutePath();
    //currentDir =  currentDir+  "\\environments\\";

    //this.loadFolder(currentDir, this, gui, this.panel, applet);

  }

  void update() {

    for (int i = 0; i < this.l.size(); i++) {
      Environment evenvironment = this.l.get(i);
      if (evenvironment.destroy)
        this.l.remove(i);
      else
        evenvironment.update();
    }
  }
}
TOP

Related Classes of cc.sketchchair.environments.Environments

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.