package org.jgrasstools.gears.io.dxfdwg.libs.dxf; ///* // * Library name : dxf // * (C) 2006 Micha�l Michaud // * // * 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 2 // * 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, write to the Free Software // * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. // * // * For more information, contact: // * // * michael.michaud@free.fr // * // */ // //package fr.michaelm.jump.drivers.dxf; // //import java.awt.event.ActionEvent; //import java.awt.event.ActionListener; //import java.awt.Component; //import java.awt.GridLayout; //import java.io.File; //import java.util.Collection; //import java.util.HashMap; //import java.util.HashSet; //import java.util.List; //import java.util.Map; //import java.util.Set; //import javax.swing.Box; //import javax.swing.BoxLayout; //import javax.swing.JButton; //import javax.swing.JCheckBox; //import javax.swing.JFileChooser; //import javax.swing.JLabel; //import javax.swing.JPanel; //import javax.swing.JTextField; //import javax.swing.SwingConstants; // //import com.vividsolutions.jts.util.Assert; //import com.vividsolutions.jump.feature.Feature; //import com.vividsolutions.jump.feature.FeatureSchema; //import com.vividsolutions.jump.workbench.datasource.InstallStandardDataSourceQueryChoosersPlugIn; //import com.vividsolutions.jump.util.Blackboard; //import com.vividsolutions.jump.workbench.plugin.AbstractPlugIn; //import com.vividsolutions.jump.workbench.plugin.PlugInContext; //import com.vividsolutions.jump.workbench.ui.GUIUtil; //import com.vividsolutions.jump.io.JUMPWriter; //import com.vividsolutions.jump.io.JUMPReader; //import com.vividsolutions.jump.workbench.datasource.LoadFileDataSourceQueryChooser; //import com.vividsolutions.jump.workbench.datasource.SaveFileDataSourceQueryChooser; //import com.vividsolutions.jump.workbench.datasource.DataSourceQueryChooserManager; //import com.vividsolutions.jump.workbench.model.*; //import com.vividsolutions.jump.workbench.ui.MultiInputDialog; //import com.vividsolutions.jump.workbench.WorkbenchContext; // // ///** // * User interface to save a JUMP layer into a DXF file // * Add an option to the standard panel // * - option to create "_" suffixed layers for holes in polygon // * @author Micha�l Michaud // * @version 0.5.0 (2006-11-12) // */ //// History //// 2006-11-12 : remove the header option after L. Becker and R. Littlefield //// have fix the bug in the header writing //// 2006-10-18 : add two options (one for header writing and the other to suffix //// layers containing holes) and a function to create valid DXF //// layer names from JUMP layer names //public class SaveDxfFileDataSourceQueryChooser extends SaveFileDataSourceQueryChooser { // // // Array making it possible to replace any of the 383 first unicode // // characters by a valid character for DXF layer name or file name // // (removes accents, escape characters and most of special symbols) // private static String[] asciiChar = new String[] { // "","","","","","","","","","","","","","","","", //00-0F // "","","","","","","","","","","","","","","","", //10-1F // "_","_","_","_","_","_","_","_","_","_","_","_","_","-",".","_", //20-2F // "0","1","2","3","4","5","6","7","8","9","_","_","_","_","_","_", //30-3F // "_","A","B","C","D","E","F","G","H","I","J","K","L","M","N","O", //40-4F // "P","Q","R","S","T","U","V","W","X","Y","Z","_","_","_","_","_", //50-5F // "_","a","b","c","d","e","f","g","h","i","j","k","l","m","n","o", //60-6F // "p","q","r","s","t","u","v","w","x","y","z","_","_","_","_","", //70-7F // "","","","","","","","","","","","","","","","", //80-8F // "","","","","","","","","","","","","","","","", //90-9F // "_","_","c","L","_","Y","_","_","","c","a","","_","-","r","", //A0-AF // "o","_","2","3","","u","_",".","","1","o","","_","_","_","_", //B0-BF // "A","A","A","A","A","A","AE","C","E","E","E","E","I","I","I","I",//C0-CF // "E","N","O","O","O","O","O","x","O","U","U","U","U","Y","T","SS",//D0-DF // "a","a","a","a","a","a","ae","c","e","e","e","e","i","i","i","i",//E0-EF // "e","n","o","o","o","o","o","_","0","u","u","u","u","y","t","y", //F0-FF // "A","a","A","a","A","a","C","c","C","c","C","c","C","c","D","d", //100-10F // "D","d","E","e","E","e","E","e","E","e","E","e","G","g","G","g", //110-11F // "G","g","G","g","H","h","H","h","I","i","I","i","I","i","I","i", //120-12F // "I","i","IJ","ij","J","j","K","k","k","L","l","L","l","L","l","L", //130-13F // "l","L","l","N","n","N","n","N","n","n","N","n","O","o","O","o", //140-14F // "O","o","OE","oe","R","r","R","r","R","r","S","s","S","s","S","s", //150-15F // "S","s","T","t","T","t","T","t","U","u","U","u","U","u","U","u", //160-16F // "U","u","U","u","W","w","Y","y","Y","Z","z","Z","z","Z","z","_" //170-17F // }; // // WorkbenchContext context; // JPanel optionPanel = new JPanel(); // //JCheckBox headerCB = new JCheckBox("Export dxf header", true); // JCheckBox suffixCB = new JCheckBox("Put polygon holes in layers with a '_' suffix", true); // // SaveDxfFileDataSourceQueryChooser(Class readerWriterDataSourceClass, String description, // String[] extensions, WorkbenchContext workbenchContext) { // super(readerWriterDataSourceClass, description, extensions, workbenchContext); // this.context = workbenchContext; // Box box = new Box(BoxLayout.Y_AXIS); // optionPanel.add(box); // //box.add(headerCB); // box.add(suffixCB); // } // // protected Map toProperties(File file) { // HashMap properties = new HashMap(super.toProperties(file)); // Layerable selectedLayer = context.getLayerNamePanel().getSelectedLayers()[0]; // String layerName = toAscii(selectedLayer.getName()).substring(0, Math.min(selectedLayer.getName().length(), 31)); // properties.put("LAYER_NAME", new String[]{layerName}); // // If the layer schema has an attribute "LAYER" the value of this // // attribute is used for the DXF layer name // if (selectedLayer instanceof Layer) { // FeatureSchema fs = ((Layer)selectedLayer).getFeatureCollectionWrapper().getFeatureSchema(); // if (fs.hasAttribute("LAYER")) { // Set layerSet = new HashSet(); // List features = ((Layer)selectedLayer).getFeatureCollectionWrapper().getFeatures(); // for (int i = 0 ; i < features.size() ; i++) { // if (((Feature)features.get(i)).getString("LAYER") != null && // ((Feature)features.get(i)).getString("LAYER").trim().length()>0 && // !((Feature)features.get(i)).getString("LAYER").endsWith("_")) { // layerSet.add(((Feature)features.get(i)).getString("LAYER")); // } // } // String[] set = (String[])layerSet.toArray(new String[layerSet.size()]); // properties.put("LAYER_NAME", set); // } // } // //properties.put("HEADER", new Boolean(headerCB.isSelected())); // properties.put("SUFFIX", new Boolean(suffixCB.isSelected())); // return properties; // } // // protected Component getSouthComponent1() { // return optionPanel; // } // // /** // * Remove accents using the asciiChar array. // */ // public static String toAscii(String in) { // String input = in.trim(); // StringBuffer output = new StringBuffer(""); // for(int i = 0 ; i < input.length() ; i++) { // int carVal = input.charAt(i); // if (carVal < 384) {output.append(asciiChar[carVal]);} // else {output.append("_");} // } // return output.toString(); // } // //}