001    package org.shiftone.jrat.provider.tree.ui.summary.action;
002    
003    
004    import org.jdesktop.swingx.JXTable;
005    import org.jdesktop.swingx.decorator.SortOrder;
006    
007    import javax.swing.*;
008    import javax.swing.table.DefaultTableModel;
009    import java.awt.*;
010    import java.awt.event.ActionEvent;
011    import java.util.Iterator;
012    import java.util.Properties;
013    
014    /**
015     * @author (jeff@shiftone.org) Jeff Drost
016     */
017    public class ShowSystemPropertiesAction extends AbstractAction {
018    
019        private final Component component;
020        private final Properties properties;
021    
022    
023        public ShowSystemPropertiesAction(Component component, Properties properties) {
024            super("Show System Properties");
025            this.component = component;
026            this.properties = properties;
027        }
028    
029        public void actionPerformed(ActionEvent e) {
030    
031            JDialog dialog = new TextDialog(properties);
032    
033            dialog.setSize(new Dimension(400, 500));
034            dialog.setLocationRelativeTo(component);
035            dialog.setModal(true);
036            dialog.setVisible(true);
037    
038        }
039    
040        private class TextDialog extends JDialog {
041    
042            public TextDialog(Properties properties) {
043    
044                DefaultTableModel tableModel = new DefaultTableModel();
045    
046                tableModel.addColumn("Name");
047                tableModel.addColumn("Value");
048                for (Iterator keys = properties.keySet().iterator(); keys.hasNext();) {
049    
050                    String key = (String) keys.next();
051                    String value = properties.getProperty(key);
052    
053                    tableModel.addRow(new Object[]{key, value});
054                }
055    
056                JXTable table = new JXTable(tableModel);
057                table.setSortOrder(0, SortOrder.ASCENDING);
058    
059    
060                setLayout(new BorderLayout());
061                add(new JScrollPane(table), BorderLayout.CENTER);
062    
063                setTitle("System Properties During Run");
064                setModal(true);
065            }
066    
067        }
068    
069    }