Package syn3d.nodes.java3d

Source Code of syn3d.nodes.java3d.BuilderNodeJava3D$Java3DPlugin3DFileFilter

/* ========================
* JSynoptic : a free Synoptic editor
* ========================
*
* Project Info:  http://jsynoptic.sourceforge.net/index.html
*
* This program is free software; you can redistribute it and/or modify it under the terms
* of the GNU Lesser General Public License as published by the Free Software Foundation;
* either version 2.1 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 Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public License along with this
* program; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330,
* Boston, MA 02111-1307, USA.
*
* (C) Copyright 2001-2005, by :
*     Corporate:
*         Astrium SAS
*     Individual:
*         Ronan Ogor
*
* $Id: BuilderNodeJava3D.java,v 1.4 2007/06/05 14:32:30 ogor Exp $
*
* Changes
* -------
* 17 oct. 2005 : Creation date (RO);
*
*/
package syn3d.nodes.java3d;

import java.io.File;
import java.io.FileInputStream;
import java.io.ObjectInputStream;
import java.io.Serializable;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Iterator;
import java.util.List;
import java.util.Vector;

import javax.swing.JFileChooser;
import javax.swing.filechooser.FileFilter;

import simtools.ui.ColorMapper;
import syn3d.base.ActiveNode;
import syn3d.base.PluginManager;
import syn3d.nodes.BuilderNode;
import syn3d.nodes.NodeResourcesManager;
import syn3d.nodes.SceneNode;

/**
* @author ogor
*
* TODO To change the template for this generated type comment go to
* Window - Preferences - Java - Code Style - Code Templates
*/
public class BuilderNodeJava3D extends BuilderNode implements Serializable{
 
  static final long serialVersionUID = 2662447706232147011L;
 
  protected PluginManager pluginManager;
 
 
  public BuilderNodeJava3D(ActiveNode parent ,PluginManager pluginManager){
    super(parent);
    setName(NodeResourcesManager.getResources().getString("BuilderNodeName"));
    this.pluginManager = pluginManager;
  }
 
 
  protected static List actions = new ArrayList();
  static {
    actions.addAll(Arrays.asList(new String[] {
        NodeResourcesManager.getResources().getString("Open"),
    }));
  }
 
  public List getActions() {
    return actions;
  }
 
 
  public void doAction(Object action) {
    if (action==null) return;
    if (action.equals(NodeResourcesManager.getResources().getString("New"))) {
     
      /*
      mainBuiltin.createFromKey("Scene",this);
      SceneNodeJava3D newScene = new SceneNodeJava3D(this, null);
      newScene.setName(NodeResourcesManager.getResources().getString("SceneName")+ getChildren().size());
      */
   
    }
   
    if (action.equals(NodeResourcesManager.getResources().getString("Open"))) {
      // Select a Systema file
      Java3DPlugin3DFileFilter filter = new Java3DPlugin3DFileFilter();
      JFileChooser chooser = new JFileChooser();
      chooser.setAcceptAllFileFilterUsed(false);
      chooser.setFileFilter(filter);
     
      int returnVal = chooser.showDialog(null, NodeResourcesManager.getResources().getString("Open"));
      if (returnVal == JFileChooser.APPROVE_OPTION){
        loadJava3dScene(chooser.getSelectedFile());
     
    }
  }
 
 
  public boolean  loadJava3dScene(File f){
    try {
      FileInputStream fis = new FileInputStream(f);
      ObjectInputStream is = new ObjectInputStream(fis);
      Object o = is.readObject();
      if ((o==null) || !(o instanceof SceneNode)) {
        throw new java.io.IOException();
      }
      SceneNodeJava3D scene = (SceneNodeJava3D)o;
      scene.setParent(this);
      scene.setName((((f.getName().indexOf(".")) !=0)? (f.getName().substring(0,f.getName().indexOf("."))) : f.getName()));
     
      // Read color mappers
      o = is.readObject();
      if ((o!=null) && (o instanceof Vector)) {
        for (Iterator it = ((Vector)o).iterator(); it.hasNext(); ) {
          Object ito = it.next();
          if (!(ito instanceof ColorMapper)) continue;
          if (ColorMapper.colorMappers==null) ColorMapper.colorMappers = new Vector();
          if (!ColorMapper.colorMappers.contains(ito)) ColorMapper.colorMappers.add(ito);             
        }
      }
      is.close();
      fis.close(); // also closes the file
     
        //  Then, restore references between nodes and update the scene
        scene.restoreReferences(this);
       
        // Restore parameter related to the loaded scene
        scene.restoreScene(pluginManager);
       
    } catch (Exception e) {
      System.err.println(NodeResourcesManager.getResources().getStringValue("cannotLoadFile") + f.getName());
      return false;
    }
    System.err.println(NodeResourcesManager.getResources().getStringValue("loadOK") + f.getName());
    return true;
  }
 
 
  class Java3DPlugin3DFileFilter extends FileFilter{
    public boolean accept(File f) {
      if (f.isDirectory()) return true;
      String name = f.getName();
      return name.toLowerCase().endsWith("." + NodeResourcesManager.getResources().getStringValue("Java3DFilterExtension"));
    }
    public String getDescription() {
      return  NodeResourcesManager.getResources().getStringValue("Java3DFilterDescription") + " (*." + NodeResourcesManager.getResources().getStringValue("Java3DFilterExtension") + ")";
    }
  }
 
 
 
 
 
}
TOP

Related Classes of syn3d.nodes.java3d.BuilderNodeJava3D$Java3DPlugin3DFileFilter

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.