| /* |
| ***************************************************************************** |
| * Copyright (C) 2000-2004, International Business Machines Corporation and * |
| * others. All Rights Reserved. * |
| ***************************************************************************** |
| */ |
| package com.ibm.rbm; |
| |
| import java.io.*; |
| import javax.swing.*; |
| import java.util.*; |
| |
| /** |
| * This class provides a plug-in exporter utility for RBManager that outputs Java |
| * standard .properties files in the according to the file structure of Resource |
| * Bundles. Most all meta-data is lost in this export. |
| * |
| * @author Jared Jackson |
| * @see com.ibm.rbm.RBManager |
| */ |
| public class RBPropertiesExporter extends RBExporter { |
| |
| public RBPropertiesExporter() { |
| super(); |
| |
| // Initialize the file chooser if necessary |
| if (chooser == null) { |
| chooser = new JFileChooser(); |
| chooser.setFileFilter(new javax.swing.filechooser.FileFilter(){ |
| public String getDescription() { |
| return "Base Class Properties Files"; |
| } |
| public boolean accept(File f) { |
| if (f.isDirectory()) return true; |
| String name = f.getName(); |
| if (name.toLowerCase().endsWith(".properties") && f.getName().indexOf("_") < 0) return true; |
| return false; |
| } |
| }); |
| } // end if |
| } |
| |
| public void export(RBManager rbm) throws IOException { |
| if (rbm == null) return; |
| // Open the Save Dialog |
| int ret_val = chooser.showSaveDialog(null); |
| if (ret_val != JFileChooser.APPROVE_OPTION) return; |
| // Retrieve basic file information |
| File file = chooser.getSelectedFile(); // The file(s) we will be working with |
| File directory = new File(file.getParent()); // The directory we will be writing to |
| String base_name = file.getName(); // The base name of the files we will write |
| if (base_name == null || base_name.equals("")) base_name = rbm.getBaseClass(); |
| if (base_name.toLowerCase().endsWith(".properties")) |
| base_name = base_name.substring(0,base_name.length()-11); |
| |
| Vector bundle_v = rbm.getBundles(); |
| for (int i=0; i < bundle_v.size(); i++) { |
| Properties prop = new Properties(); |
| Bundle bundle = (Bundle)bundle_v.elementAt(i); |
| String base_enc = base_name; |
| if (bundle.encoding != null && !bundle.encoding.equals("")) base_enc = base_enc + "_" + bundle.encoding; |
| String file_name = base_enc + ".properties"; |
| String header = "Resource Bundle: " + file_name + " - File automatically generated by RBManager at " + (new Date()); |
| |
| Vector group_v = bundle.getGroupsAsVector(); |
| for (int j=0; j < group_v.size(); j++) { |
| BundleGroup group = (BundleGroup)group_v.elementAt(j); |
| Vector item_v = group.getItemsAsVector(); |
| for (int k=0; k < item_v.size(); k++) { |
| BundleItem item = (BundleItem)item_v.elementAt(k); |
| prop.setProperty(item.getKey(), item.getTranslation()); |
| } // end for - k |
| } // end for - j |
| |
| // Write out the file |
| File write_file = new File(directory, file_name); |
| FileOutputStream fos = new FileOutputStream(write_file); |
| prop.store(fos, header); |
| } // end for - i |
| } |
| } |