416fc50421
X-SVN-Rev: 8644
210 lines
8.6 KiB
Java
210 lines
8.6 KiB
Java
/*
|
|
*****************************************************************************
|
|
* Copyright (C) 2000-2002, International Business Machines Corporation and *
|
|
* others. All Rights Reserved. *
|
|
*****************************************************************************
|
|
*
|
|
* $Source: /xsrl/Nsvn/icu/unicodetools/com/ibm/rbm/RBJavaExporter.java,v $
|
|
* $Date: 2002/05/20 18:53:10 $
|
|
* $Revision: 1.1 $
|
|
*
|
|
*****************************************************************************
|
|
*/
|
|
package com.ibm.rbm;
|
|
|
|
import java.io.*;
|
|
import java.awt.*;
|
|
import java.awt.event.*;
|
|
import javax.swing.*;
|
|
import javax.swing.border.*;
|
|
import javax.swing.filechooser.*;
|
|
import java.util.*;
|
|
|
|
/**
|
|
* An exporter plug-in class for RBManager. The resources exported here conform to
|
|
* the Java standard for Resource Bundles as specified in java.util.ListResourceBundle.
|
|
* The output files are compilable java files that are not associated with any
|
|
* package.
|
|
*
|
|
* @author Jared Jackson - Email: <a href="mailto:jjared@almaden.ibm.com">jjared@almaden.ibm.com</a>
|
|
* @see com.ibm.rbm.RBManager
|
|
*/
|
|
public class RBJavaExporter extends RBExporter {
|
|
private String packageName = null;
|
|
private boolean publicClass = true;
|
|
private boolean publicMethods = true;
|
|
|
|
|
|
public RBJavaExporter() {
|
|
super();
|
|
|
|
// Initialize the file chooser if necessary
|
|
if (chooser == null) {
|
|
chooser = new JFileChooser();
|
|
chooser.setFileFilter(new javax.swing.filechooser.FileFilter(){
|
|
public String getDescription() {
|
|
return "Java Source Files";
|
|
}
|
|
public boolean accept(File f) {
|
|
if (f.isDirectory()) return true;
|
|
if (f.getName().endsWith(".java") && f.getName().indexOf("_") < 0) return true;
|
|
return false;
|
|
}
|
|
});
|
|
} // end if
|
|
}
|
|
|
|
protected void export(RBManager rbm) throws IOException {
|
|
if (rbm == null) return;
|
|
// Open the additional Dialog
|
|
RBJavaExporterDialog parametersDialog = new RBJavaExporterDialog();
|
|
packageName = parametersDialog.getPackageName();
|
|
publicClass = parametersDialog.isClassPublic();
|
|
publicMethods = parametersDialog.isMethodsPublic();
|
|
|
|
// 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.endsWith(".java")) base_name = base_name.substring(0,base_name.length()-5);
|
|
|
|
Vector bundle_v = rbm.getBundles();
|
|
for (int i=0; i < bundle_v.size(); i++) {
|
|
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 + ".java";
|
|
|
|
StringBuffer buffer = new StringBuffer();
|
|
buffer.append("/* File: " + file_name + "\n");
|
|
buffer.append(" * Date: " + (new Date()) + "\n");
|
|
buffer.append(" * Comment: This file was generated automatically by RBManager" + "\n");
|
|
buffer.append(" */\n\n");
|
|
if (packageName != null) {
|
|
buffer.append("package " + packageName + ";\n\n");
|
|
}
|
|
buffer.append("import java.util.ListResourceBundle;\n\n");
|
|
buffer.append((publicClass ? "public " : "protected "));
|
|
buffer.append("class " + base_enc + " extends ListResourceBundle {\n");
|
|
buffer.append("\t" + (publicMethods ? "public" : "protected") + " Object[][] getContents() {\n");
|
|
buffer.append("\t\treturn contents;\n");
|
|
buffer.append("\t}\n");
|
|
buffer.append("\tprivate static final Object[][] contents = {\n");
|
|
buffer.append("\t// LOCALIZE THIS\n");
|
|
|
|
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);
|
|
buffer.append("\t\t{\"" + item.getKey() + "\", \"" + item.getTranslation() + "\"},\t// " + item.getComment() + "\n");
|
|
} // end for - k
|
|
} // end for - j
|
|
|
|
buffer.append("\t// END OF MATERIAL TO LOCALIZE\n");
|
|
buffer.append("\t};\n");
|
|
buffer.append("}");
|
|
|
|
// Write out the file
|
|
File write_file = new File(directory, file_name);
|
|
FileWriter writer = new FileWriter(write_file);
|
|
writer.write(buffer.toString());
|
|
writer.flush();
|
|
writer.close();
|
|
} // end for - i
|
|
}
|
|
}
|
|
|
|
class RBJavaExporterDialog extends JDialog {
|
|
JCheckBox packageCheck;
|
|
JRadioButton classPublicRadio;
|
|
JRadioButton classProtectedRadio;
|
|
JRadioButton methodsPublicRadio;
|
|
JRadioButton methodsProtectedRadio;
|
|
JTextField packageField;
|
|
|
|
public RBJavaExporterDialog() {
|
|
super(new JFrame(), Resources.getTranslation("dialog_title_export_java_options"), true);
|
|
initComponents();
|
|
}
|
|
|
|
public String getPackageName() {
|
|
if (!(packageCheck.isSelected())) return null;
|
|
String retVal = packageField.getText();
|
|
if (retVal == null || retVal.trim().equals("")) return null;
|
|
return retVal.trim();
|
|
}
|
|
|
|
public boolean isClassPublic() {
|
|
return classPublicRadio.isSelected();
|
|
}
|
|
|
|
public boolean isMethodsPublic() {
|
|
return methodsPublicRadio.isSelected();
|
|
}
|
|
|
|
private void handleClose() {
|
|
setVisible(false);
|
|
dispose();
|
|
}
|
|
|
|
private void initComponents() {
|
|
getContentPane().setLayout(new BorderLayout());
|
|
getContentPane().removeAll();
|
|
|
|
packageCheck = new JCheckBox(Resources.getTranslation("export_java_package"), false);
|
|
classPublicRadio = new JRadioButton(Resources.getTranslation("export_java_class_public"), true);
|
|
classProtectedRadio = new JRadioButton(Resources.getTranslation("export_java_class_protected"), false);
|
|
methodsPublicRadio = new JRadioButton(Resources.getTranslation("export_java_class_public"), true);
|
|
methodsProtectedRadio = new JRadioButton(Resources.getTranslation("export_java_class_protected"), false);
|
|
packageField = new JTextField();
|
|
packageField.setColumns(30);
|
|
|
|
JButton okButton = new JButton(Resources.getTranslation("OK"));
|
|
JLabel titleLabel = new JLabel(Resources.getTranslation("export_java_title"), SwingConstants.LEFT);
|
|
|
|
JPanel okPanel = new JPanel();
|
|
okPanel.add(okButton);
|
|
JPanel centerPanel = new JPanel(new GridLayout(1,1));
|
|
centerPanel.setBorder(BorderFactory.createBevelBorder(BevelBorder.RAISED));
|
|
Box centerBox = Box.createVerticalBox();
|
|
Box packageBox = Box.createHorizontalBox();
|
|
packageBox.add(packageCheck);
|
|
packageBox.add(packageField);
|
|
centerBox.add(packageBox);
|
|
centerBox.add(new JSeparator());
|
|
centerBox.add(classPublicRadio);
|
|
centerBox.add(classProtectedRadio);
|
|
centerBox.add(new JSeparator());
|
|
centerBox.add(methodsPublicRadio);
|
|
centerBox.add(methodsProtectedRadio);
|
|
centerPanel.add(centerBox);
|
|
|
|
getContentPane().add(titleLabel, BorderLayout.NORTH);
|
|
getContentPane().add(okPanel, BorderLayout.SOUTH);
|
|
getContentPane().add(centerPanel, BorderLayout.CENTER);
|
|
|
|
okButton.addActionListener(new ActionListener(){
|
|
public void actionPerformed(ActionEvent ev) {
|
|
handleClose();
|
|
}
|
|
});
|
|
|
|
ButtonGroup classGroup = new ButtonGroup();
|
|
ButtonGroup methodsGroup = new ButtonGroup();
|
|
classGroup.add(classPublicRadio);
|
|
classGroup.add(classProtectedRadio);
|
|
methodsGroup.add(methodsPublicRadio);
|
|
methodsGroup.add(methodsProtectedRadio);
|
|
|
|
//validateTree();
|
|
pack();
|
|
//setLocation(new Point(25,25));
|
|
setVisible(true);
|
|
}
|
|
} |