Changeset 12336


Ignore:
Timestamp:
2006-07-28T15:08:13+12:00 (18 years ago)
Author:
shaoqun
Message:

added more export versions and xslt transformation

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/gli/src/org/greenstone/gatherer/gui/ExportAsPrompt.java

    r12119 r12336  
    4141import java.io.*;
    4242import java.util.ArrayList;
     43import java.util.HashMap;
    4344import javax.swing.*;
    4445import javax.swing.event.*;
     46
    4547import org.greenstone.gatherer.Configuration;
    4648import org.greenstone.gatherer.DebugStream;
     
    5254import org.greenstone.gatherer.shell.GShellEvent;
    5355import org.greenstone.gatherer.shell.GShellListener;
     56import org.greenstone.gatherer.shell.GDefaultProgressMonitor;
    5457import org.greenstone.gatherer.util.ArrayTools;
    5558import org.greenstone.gatherer.util.CheckList;
     
    111114    private StringBuffer error_message = null;
    112115    /** The size of the export prompt screen. */
    113     public static final Dimension SIZE = new Dimension(500, 500);
     116    public static final Dimension SIZE = new Dimension(500, 520); 
     117    private GDefaultProgressMonitor progress_monitor;   
     118
     119    private JButton convert_xml_button1 = null;
     120    private JButton convert_xml_button2 = null;
     121
     122    private JPanel instructions_pane = null;
     123   
     124    private JPanel convert_xml_pane1 = null;
     125    private JPanel convert_xml_pane2 = null;
     126
     127    private JCheckBox convert_xml_checkbox1 = null;
     128    private JCheckBox convert_xml_checkbox2 = null;
     129
     130    private JCheckBox output_single_checkbox = null; 
     131
     132    private JTextField convert_xml_field1 = null;
     133    private JTextField convert_xml_field2 = null;
     134
     135    private File xsl_file1 = null;
     136    private File xsl_file2 = null;
     137
     138    private JPanel convert_xml_pane = null;
     139
     140    private HashMap plugoutMap = new HashMap();
     141 
    114142
    115143    /** Constructor.
     
    120148    public ExportAsPrompt() {
    121149    super(Gatherer.g_man, true);
    122     cancel_button = new GLIButton(Dictionary.get("General.Close"), Dictionary.get("General.Close_Tooltip"));
     150   
     151    plugoutMap.clear();         
     152    plugoutMap.put("DSpace","dublin-core.xml");
     153        plugoutMap.put("MARCXML","doc.xml");   
     154    plugoutMap.put("METS","doctxt.xml,docmets.xml");     
     155    plugoutMap.put("GA","doc.xml");
     156
     157        cancel_button = new GLIButton(Dictionary.get("General.Close"), Dictionary.get("General.Close_Tooltip"));
    123158   
    124159    details_textarea = new JTextArea(Dictionary.get("DeleteCollectionPrompt.No_Collection"));
     
    135170    instructions_textarea.setWrapStyleWord(true);
    136171   
     172             
    137173        // Save As
    138     ArrayList saveas_formats = new ArrayList();
    139     saveas_formats.add("METS");
    140     saveas_formats.add("DSpace");
    141 
     174    ArrayList saveas_formats = new ArrayList(plugoutMap.keySet());
     175       
    142176        saveas_label = new JLabel(Dictionary.get("ExportAsPrompt.SaveAs")
    143177);
     
    147181    saveas_combobox.setToolTipText(Dictionary.get("ExportAsPrompt.SaveAs_Tooltip"));
    148182       
     183
     184    // Add xml conversion feature
     185    convert_xml_button1 = new GLIButton(Dictionary.get("ExportAsPrompt.Browse"),Dictionary.get("ExportAsPrompt.Browse_Tooltip"));
     186    convert_xml_button1.setEnabled(false);
     187
     188        // Add xml conversion feature
     189    convert_xml_button2 = new GLIButton(Dictionary.get("ExportAsPrompt.Browse"),Dictionary.get("ExportAsPrompt.Browse_Tooltip"));
     190    convert_xml_button2.setEnabled(false);
     191
     192    convert_xml_checkbox1 = new JCheckBox();
     193        convert_xml_checkbox1.setText(Dictionary.get("ExportAsPrompt.ApplyXSL","doc.xml"));
     194        convert_xml_checkbox1.setToolTipText(Dictionary.get("ExportAsPrompt.ApplyXSL_Tooltip"));
     195       
     196    convert_xml_checkbox2 = new JCheckBox();
     197        convert_xml_checkbox2.setToolTipText(Dictionary.get("ExportAsPrompt.ApplyXSL_Tooltip"));
     198
     199        output_single_checkbox = new JCheckBox();
     200    output_single_checkbox.setText(Dictionary.get("ExportAsPrompt.MARCXMLGroup"));
     201        output_single_checkbox.setToolTipText(Dictionary.get("ExportAsPrompt.MARCXMLGroup_Tooltip"));
     202
     203        convert_xml_field1 = new JTextField();
     204    convert_xml_field2 = new JTextField();
     205
     206        convert_xml_pane1 = new JPanel(new BorderLayout());
     207       
     208    convert_xml_pane2 = new JPanel(new BorderLayout());
     209
     210    convert_xml_pane = new JPanel(new GridLayout(2,1));
    149211
    150212    all_collections = new ArrayList();
     
    174236    ok_button.setEnabled(false);
    175237    //title.getDocument().addDocumentListener(new DocumentListener());
     238
     239        convert_xml_button1.addActionListener(new ConvertXMLButtonListener());
     240    convert_xml_checkbox1.addActionListener(new ConvertXMLCheckboxListener());
     241   
     242    convert_xml_button2.addActionListener(new ConvertXMLButtonListener());
     243    convert_xml_checkbox2.addActionListener(new ConvertXMLCheckboxListener());
     244
     245        saveas_combobox.addActionListener(new SaveasListener());       
     246
    176247    }
    177248
     
    200271    public boolean display() {
    201272    // Top pane
    202     JPanel instructions_pane = new JPanel(new BorderLayout());
    203     instructions_pane.setBorder(BorderFactory.createEmptyBorder(0,0,5,0));
     273    instructions_pane = new JPanel(new BorderLayout());
     274    instructions_pane.setBorder(BorderFactory.createEmptyBorder(0,0,5,5));
    204275    instructions_pane.add(new JScrollPane(instructions_textarea), BorderLayout.CENTER);
    205276   
     
    209280    title_pane.add(title_label, BorderLayout.WEST);
    210281    title_pane.add(title_field, BorderLayout.CENTER);
    211     instructions_pane.add(title_pane, BorderLayout.CENTER);
    212 
    213     // Save as pane
     282   
     283        //apply xsl pane
     284         
     285    convert_xml_pane1.removeAll();
     286        convert_xml_pane2.removeAll();
     287    convert_xml_pane.removeAll();
     288
     289    convert_xml_pane1.add(convert_xml_checkbox1, BorderLayout.WEST);
     290    convert_xml_pane1.add(convert_xml_field1, BorderLayout.CENTER);
     291    convert_xml_pane1.add(convert_xml_button1, BorderLayout.EAST);
     292
     293    convert_xml_pane2.add(convert_xml_checkbox2, BorderLayout.WEST);
     294    convert_xml_pane2.add(convert_xml_field2, BorderLayout.CENTER);
     295    convert_xml_pane2.add(convert_xml_button2, BorderLayout.EAST);
     296     
     297    convert_xml_pane.add(convert_xml_pane1);
     298       
     299        String saveas = (String)saveas_combobox.getSelectedItem();
     300    if (saveas.equals("MARCXML")){
     301            convert_xml_pane.add(output_single_checkbox);
     302    }
     303        else{
     304        if (saveas.equals("METS")){
     305        convert_xml_pane.add(convert_xml_pane2);
     306        }
     307    }
     308    convert_xml_pane.revalidate();
     309    convert_xml_pane.repaint();
     310
     311        // Save as pane
    214312    JPanel saveas_pane = new JPanel(new BorderLayout());
    215     saveas_pane.setLayout(new BorderLayout());
     313    saveas_label.setBorder(BorderFactory.createEmptyBorder(0,5,0,15));
    216314    saveas_pane.add(saveas_label, BorderLayout.WEST);
    217315    saveas_pane.add(saveas_combobox, BorderLayout.CENTER);
    218     instructions_pane.add(saveas_pane, BorderLayout.SOUTH);
     316
     317        JPanel tmp_pane = new JPanel(new BorderLayout());
     318        tmp_pane.add(saveas_pane, BorderLayout.WEST);
     319    tmp_pane.add(title_pane, BorderLayout.CENTER);
     320
     321    instructions_pane.add(tmp_pane, BorderLayout.NORTH);         
     322
     323    instructions_pane.add(convert_xml_pane, BorderLayout.CENTER);
    219324
    220325    // Central pane
     
    280385
    281386    String export_type = (String) saveas_combobox.getSelectedItem();
    282 
     387     
    283388    // Generate the export.pl command
    284389    ArrayList command_parts_list = new ArrayList();
     
    296401    command_parts_list.add("-exportdir");
    297402    String export_dir = LocalGreenstone.getTmpDirectoryPath();
    298     if (cd_title.equals("")) {
     403        if (cd_title.equals("")) {
    299404        export_dir += "exported_" + export_type;
    300405    }
     
    304409    command_parts_list.add(export_dir);
    305410
    306    
     411        if (!export_type.equals("METS") && xsl_file1 !=null){
     412             command_parts_list.add("-xsltfile");
     413             command_parts_list.add(xsl_file1.getPath());
     414    }
     415
     416        if (xsl_file1 == null && export_type.equals("MARCXML")){
     417        command_parts_list.add("-xsltfile");
     418            //TODO: need to change once we have a place to store doc2marc.xsl and mapping.xml
     419        command_parts_list.add(Configuration.gsdl_path+"etc"+File.separator+"dc2marc.xsl");
     420    }
     421
     422        if (export_type.equals("MARCXML") && output_single_checkbox.isSelected()){
     423        command_parts_list.add("-group_marc");
     424    }
     425       
     426        if (export_type.equals("METS") && xsl_file1 !=null){
     427             command_parts_list.add("-xslt_txt");
     428             command_parts_list.add(xsl_file1.getPath());
     429    }
     430
     431         if (export_type.equals("METS") && xsl_file2 !=null){
     432             command_parts_list.add("-xslt_mets");
     433             command_parts_list.add(xsl_file2.getPath());
     434    }
     435       
    307436    for (int i = 0; i < num_collections; i++) {
    308437        command_parts_list.add(((BasicCollectionConfiguration) selected_collections.get(i)).getShortName());
     
    310439
    311440    DebugStream.print("export command = ");
    312     for (int i = 0; i < command_parts_list.size(); i++) {
     441         for (int i = 0; i < command_parts_list.size(); i++) {
    313442        DebugStream.print(command_parts_list.get(i) + " ");
    314         System.err.print(command_parts_list.get(i) + " ");
     443        //System.err.print(command_parts_list.get(i) + " ");         
    315444    }
    316445    DebugStream.println("");
    317     System.err.println("");
     446    //System.err.println("");
    318447
    319448    // Run the export.pl command
    320449    String[] command_parts = (String[]) command_parts_list.toArray(new String[0]);
    321     GShell process = new GShell(command_parts, GShell.EXPORTAS, 3, this, null, GShell.GSHELL_EXPORTAS);
     450
     451        progress_monitor = new  GDefaultProgressMonitor();
     452
     453    GShell process = new GShell(command_parts, GShell.EXPORTAS, 3, this,progress_monitor , GShell.GSHELL_EXPORTAS);
    322454    process.start();
    323455    //process.run();
     
    325457   
    326458    }
     459
     460
     461    public void cancelExporting(){
     462    progress_monitor.setStop(true);           
     463    }
     464
    327465
    328466    /** Shows an export complete prompt.
     
    523661        ///ystem.err.println("Process complete");
    524662        // Dispose of progress dialog
     663   
     664     
    525665        progress_dialog.setVisible(false);
    526666        progress_dialog.dispose();
     
    540680        }
    541681        error_message = null;
     682             
     683            convert_xml_button1.setEnabled(false);
     684            xsl_file1 = null;
     685            convert_xml_field1.setText("");
     686            convert_xml_checkbox1.setSelected(false);
     687
     688        convert_xml_button2.setEnabled(false);
     689            xsl_file2 = null;
     690            convert_xml_field2.setText("");
     691            convert_xml_checkbox2.setSelected(false);
    542692    }
    543693
     
    545695        extends ModalDialog {
    546696       
    547         private Dimension size = new Dimension(400,65);
     697        private Dimension size = new Dimension(400,110);
    548698       
    549699        public ProgressDialog() {
     
    557707        progress_bar.setIndeterminate(true);
    558708        content_pane.setBorder(BorderFactory.createEmptyBorder(5,5,5,5));
    559         content_pane.setLayout(new BorderLayout());
     709        GLIButton cancel_button = new GLIButton(Dictionary.get("ExportAsPrompt.Cancel"),Dictionary.get("ExportAsPrompt.Cancel_Tooltip"));
     710        cancel_button.setMnemonic(KeyEvent.VK_C);
     711   
     712        cancel_button.addActionListener(new ActionListener(){
     713            public void actionPerformed(ActionEvent e){
     714                cancelExporting();
     715            }
     716
     717                });
     718
     719                JPanel cancel_panel = new JPanel(new FlowLayout(FlowLayout.CENTER,0,0));
     720        cancel_panel.add(cancel_button);
     721                                   
     722        content_pane.setLayout(new BorderLayout(0,5));
    560723        content_pane.add(progress_label, BorderLayout.NORTH);
    561724        content_pane.add(progress_bar, BorderLayout.CENTER);
     725        content_pane.add(cancel_panel, BorderLayout.SOUTH);
     726
    562727        // Position
    563728        Rectangle frame_bounds = Gatherer.g_man.getBounds();
     
    567732    }
    568733
     734   private class ConvertXMLCheckboxListener implements ActionListener {
     735    public void actionPerformed(ActionEvent event) {
     736        if(convert_xml_checkbox1.isSelected() == true)
     737        {
     738            convert_xml_button1.setEnabled(true);
     739           
     740        }
     741
     742        if (convert_xml_checkbox2.isSelected() == true)
     743        {
     744            convert_xml_button2.setEnabled(true);
     745           
     746        }
     747           
     748    }
     749    }
     750
     751
     752     
     753    private class SaveasListener implements ActionListener {
     754   
     755    public void actionPerformed(ActionEvent event) {
     756       
     757        convert_xml_checkbox1.setSelected(false);
     758        convert_xml_checkbox2.setSelected(false);
     759        output_single_checkbox.setSelected(false);
     760
     761        convert_xml_button1.setEnabled(false);
     762            convert_xml_button2.setEnabled(false);
     763
     764            convert_xml_field1.setText("");
     765        convert_xml_field2.setText("");
     766       
     767        String saveas = (String)saveas_combobox.getSelectedItem();
     768
     769        if (convert_xml_pane.getComponentCount() > 1){
     770        convert_xml_pane.remove(1);
     771        }
     772
     773        if (!saveas.equals("METS")){
     774   
     775        convert_xml_checkbox1.setText(Dictionary.get("ExportAsPrompt.ApplyXSL",(String)plugoutMap.get(saveas)));   
     776        if (saveas.equals("MARCXML")){
     777            convert_xml_pane.add(output_single_checkbox);
     778        }       
     779        }
     780        else{
     781        String[] docs = ((String)plugoutMap.get(saveas)).split(",");
     782        convert_xml_checkbox1.setText(Dictionary.get("ExportAsPrompt.ApplyXSL",docs[0]));
     783        convert_xml_checkbox2.setText(Dictionary.get("ExportAsPrompt.ApplyXSL",docs[1]));
     784        convert_xml_pane.add(convert_xml_pane2);       
     785        }
     786       
     787        convert_xml_pane.revalidate();
     788        convert_xml_pane.repaint();
     789            instructions_pane.revalidate();
     790            instructions_pane.repaint();
     791             
     792    }
     793   
     794    }
     795       
     796     private class ConvertXMLButtonListener implements ActionListener {
     797    public void actionPerformed(ActionEvent event) {
     798        JFileChooser chooser = new JFileChooser();
     799        // Note: source for ExampleFileFilter can be found in FileChooserDemo,
     800        // under the demo/jfc directory in the Java 2 SDK, Standard Edition.
     801        javax.swing.filechooser.FileFilter filter = new javax.swing.filechooser.FileFilter(){
     802            public boolean accept(File f){
     803            return f.getPath().endsWith(".xsl")||f.isDirectory();
     804            } 
     805
     806            public String getDescription(){
     807            return "XSL file";
     808            }         
     809      };
     810       
     811        chooser.setFileFilter(filter);
     812        int returnVal = chooser.showOpenDialog(prompt);       
     813
     814        if(returnVal == JFileChooser.APPROVE_OPTION) {
     815        if (event.getSource() == convert_xml_button1){
     816
     817            xsl_file1 = chooser.getSelectedFile();
     818            convert_xml_field1.setText(xsl_file1.getPath());
     819        }
     820                else{
     821                     xsl_file2 = chooser.getSelectedFile();
     822            convert_xml_field2.setText(xsl_file2.getPath()); 
     823        }
     824
     825        }
     826    }
     827     }
    569828
    570829}
Note: See TracChangeset for help on using the changeset viewer.