[Squirrel-sql-commits] sql12/fw/src/net/sourceforge/squirrel_sql/fw/gui/action TableExportCsvCommand
A Java SQL client for any JDBC compliant database
Brought to you by:
colbell,
gerdwagner
Update of /cvsroot/squirrel-sql/sql12/fw/src/net/sourceforge/squirrel_sql/fw/gui/action In directory sc8-pr-cvs8.sourceforge.net:/tmp/cvs-serv21390/fw/src/net/sourceforge/squirrel_sql/fw/gui/action Modified Files: I18NStrings.properties Added Files: TableExportCsvCommand.java TableExportCsvController.java TableExportCsvDlg.java Log Message: Feature request #1446675 Output tables to CSV files --- NEW FILE: TableExportCsvController.java --- package net.sourceforge.squirrel_sql.fw.gui.action; import net.sourceforge.squirrel_sql.fw.gui.GUIUtils; import net.sourceforge.squirrel_sql.fw.util.StringManager; import net.sourceforge.squirrel_sql.fw.util.StringManagerFactory; import javax.swing.*; import java.io.File; import java.awt.event.*; import java.awt.*; import java.util.prefs.Preferences; public class TableExportCsvController { private static final String PREF_KEY_CSV_FILE = "SquirrelSQL.csvexport.csvfile"; private static final String PREF_KEY_WITH_HEADERS = "SquirrelSQL.csvexport.withColumnHeaders"; private static final String PREF_KEY_SEPERATOR_TAB = "SquirrelSQL.csvexport.sepearatorTab"; private static final String PREF_KEY_SEPERATOR_CHAR = "SquirrelSQL.csvexport.sepearatorChar"; private static final String PREF_KEY_EXPORT_COMPLETE = "SquirrelSQL.csvexport.exportcomplete"; private static final String PREF_KEY_EXECUTE_COMMAND = "SquirrelSQL.csvexport.executeCommand"; private static final String PREF_KEY_COMMAND = "SquirrelSQL.csvexport.commandString"; private static final StringManager s_stringMgr = StringManagerFactory.getStringManager(TableExportCsvController.class); private TableExportCsvDlg _dlg; private boolean _ok = false; TableExportCsvController() { _dlg = new TableExportCsvDlg(); initDlg(); initListeners(); _dlg.txtSeparatorChar.addKeyListener(new KeyAdapter() { public void keyTyped(KeyEvent e) { onSeparatorCharChanged(e); } }); _dlg.getRootPane().setDefaultButton(_dlg.btnOk); installEscapeClose(); _dlg.setSize(460, 315); GUIUtils.centerWithinParent(_dlg); _dlg.setVisible(true); } private void onSeparatorCharChanged(KeyEvent e) { SwingUtilities.invokeLater(new Runnable() { public void run() { String text = _dlg.txtSeparatorChar.getText(); if(null != text && 1 < text.length()) { _dlg.txtSeparatorChar.setText(text.substring(0,1)); Toolkit.getDefaultToolkit().beep(); } } }); } private void initListeners() { _dlg.btnOk.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { onOK(); } }); _dlg.btnCancel.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { closeDlg(); } }); _dlg.chkSeparatorTab.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { onChkSeparatorTab(); } }); _dlg.chkExecCommand.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { onChkExecCommand(); } }); _dlg.btnFile.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { onFile(); } }); _dlg.btnCommandFile.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { onCommandFile(); } }); } private void onCommandFile() { JFileChooser chooser = new JFileChooser(System.getProperties().getProperty("user.home")); chooser.setFileSelectionMode(JFileChooser.FILES_AND_DIRECTORIES); // i18n[TableExportCsvController.commandChooserTitel=Choose command executable] chooser.setDialogTitle(s_stringMgr.getString("TableExportCsvController.commandChooserTitel")); // i18n[TableExportCsvController.commandChooserButton=Choose] if(JFileChooser.APPROVE_OPTION != chooser.showDialog(_dlg, s_stringMgr.getString("TableExportCsvController.commandChooserButton"))) { return; } if(null != chooser.getSelectedFile()) { _dlg.txtFile.setText(chooser.getSelectedFile().getPath() + " %file"); } } private void onFile() { JFileChooser chooser = null; String csvFileName = _dlg.txtFile.getText(); if(null != csvFileName && 0 < csvFileName.trim().length()) { File csvFile = new File(csvFileName); File parentFile = csvFile.getParentFile(); if(null != parentFile && parentFile.exists()) { chooser = new JFileChooser(parentFile); } } if(null == chooser) { chooser = new JFileChooser(System.getProperties().getProperty("user.home")); } chooser.setFileSelectionMode(JFileChooser.FILES_AND_DIRECTORIES); // i18n[TableExportCsvController.fileChooserTitel=Choose export file] chooser.setDialogTitle(s_stringMgr.getString("TableExportCsvController.fileChooserTitel")); // i18n[TableExportCsvController.fileChooserButton=Choose] if(JFileChooser.APPROVE_OPTION != chooser.showDialog(_dlg, s_stringMgr.getString("TableExportCsvController.fileChooserButton"))) { return; } if(null != chooser.getSelectedFile()) { _dlg.txtFile.setText(chooser.getSelectedFile().getPath()); } } private void onOK() { String csvFileName = _dlg.txtFile.getText(); if(null == csvFileName || 0 == csvFileName.trim().length()) { // i18n[TableExportCsvController.noFile=You must provide a export file name.] String msg = s_stringMgr.getString("TableExportCsvController.noFile"); JOptionPane.showMessageDialog(_dlg, msg); return; } if(false == _dlg.chkSeparatorTab.isSelected()) { String sepChar = _dlg.txtSeparatorChar.getText(); if(null == sepChar || 1 != sepChar.trim().length()) { // i18n[TableExportCsvController.invalidSeparator=You must provide a single separator character or check "Use tab" to use the tab character.] String msg = s_stringMgr.getString("TableExportCsvController.invalidSeparator"); JOptionPane.showMessageDialog(_dlg, msg); return; } } if(_dlg.chkExecCommand.isSelected()) { String command = _dlg.txtCommand.getText(); if(null == command || 0 == command.trim().length()) { // i18n[TableExportCsvController.noCommand=You must provide a command string or uncheck "Execute command".] String msg = s_stringMgr.getString("TableExportCsvController.noCommand"); JOptionPane.showMessageDialog(_dlg, msg); return; } } if(new File(csvFileName).exists()) { // i18n[TableExportCsvController.replaceFile=The export file already exisits. Would you like to replace it?] String msg = s_stringMgr.getString("TableExportCsvController.replaceFile"); if(JOptionPane.OK_OPTION != JOptionPane.showConfirmDialog(_dlg, msg)) { return; } } writePrefs(); closeDlg(); _ok = true; } private void writePrefs() { Preferences.userRoot().put(PREF_KEY_CSV_FILE, _dlg.txtFile.getText()); Preferences.userRoot().putBoolean(PREF_KEY_WITH_HEADERS, _dlg.chkWithHeaders.isSelected()); Preferences.userRoot().putBoolean(PREF_KEY_SEPERATOR_TAB, _dlg.chkSeparatorTab.isSelected()); Preferences.userRoot().put(PREF_KEY_SEPERATOR_CHAR, _dlg.txtSeparatorChar.getText()); Preferences.userRoot().putBoolean(PREF_KEY_EXPORT_COMPLETE, _dlg.radComplete.isSelected()); Preferences.userRoot().putBoolean(PREF_KEY_EXECUTE_COMMAND, _dlg.chkExecCommand.isSelected()); Preferences.userRoot().put(PREF_KEY_COMMAND, _dlg.txtCommand.getText()); } private void initDlg() { _dlg.txtFile.setText(Preferences.userRoot().get(PREF_KEY_CSV_FILE, null)); _dlg.chkWithHeaders.setSelected(Preferences.userRoot().getBoolean(PREF_KEY_WITH_HEADERS, true)); _dlg.chkSeparatorTab.setSelected(Preferences.userRoot().getBoolean(PREF_KEY_SEPERATOR_TAB, false)); onChkSeparatorTab(); if(false == _dlg.chkSeparatorTab.isSelected()) { _dlg.txtSeparatorChar.setText(Preferences.userRoot().get(PREF_KEY_SEPERATOR_CHAR, ",")); } if(Preferences.userRoot().getBoolean(PREF_KEY_EXPORT_COMPLETE, true)) { _dlg.radComplete.setSelected(true); } else { _dlg.radSelection.setSelected(true); } _dlg.chkExecCommand.setSelected(Preferences.userRoot().getBoolean(PREF_KEY_EXECUTE_COMMAND, false)); onChkExecCommand(); _dlg.txtCommand.setText(Preferences.userRoot().get(PREF_KEY_COMMAND, "openoffice.org-2.0 -calc %file")); } private void onChkExecCommand() { _dlg.txtCommand.setEnabled(_dlg.chkExecCommand.isSelected()); _dlg.btnCommandFile.setEnabled(_dlg.chkExecCommand.isSelected()); } private void onChkSeparatorTab() { if(_dlg.chkSeparatorTab.isSelected()) { _dlg.txtSeparatorChar.setText(null); _dlg.txtSeparatorChar.setEnabled(false); } else { _dlg.txtSeparatorChar.setEnabled(true); } } private void installEscapeClose() { AbstractAction closeAction = new AbstractAction() { public void actionPerformed(ActionEvent actionEvent) { closeDlg(); } }; KeyStroke escapeStroke = KeyStroke.getKeyStroke(KeyEvent.VK_ESCAPE, 0); _dlg.getRootPane().getInputMap(JComponent.WHEN_ANCESTOR_OF_FOCUSED_COMPONENT).put(escapeStroke, "CloseAction"); _dlg.getRootPane().getInputMap(JComponent.WHEN_IN_FOCUSED_WINDOW).put(escapeStroke, "CloseAction"); _dlg.getRootPane().getInputMap(JComponent.WHEN_FOCUSED).put(escapeStroke, "CloseAction"); _dlg.getRootPane().getActionMap().put("CloseAction", closeAction); } private void closeDlg() { _dlg.setVisible(false); _dlg.dispose(); } boolean isOK() { return _ok; } File getFile() { return new File(_dlg.txtFile.getText()); } String getSeparatorChar() { if(_dlg.chkSeparatorTab.isSelected()) { return "\t"; } else { return _dlg.txtSeparatorChar.getText(); } } boolean includeHeaders() { return _dlg.chkWithHeaders.isSelected(); } boolean exportComplete() { return _dlg.radComplete.isSelected(); } String getCommand() { if(_dlg.chkExecCommand.isSelected()) { return _dlg.txtCommand.getText().replaceAll("%file", _dlg.txtFile.getText()); } else { return null; } } } --- NEW FILE: TableExportCsvCommand.java --- package net.sourceforge.squirrel_sql.fw.gui.action; import net.sourceforge.squirrel_sql.fw.util.StringManager; import net.sourceforge.squirrel_sql.fw.util.StringManagerFactory; import net.sourceforge.squirrel_sql.fw.util.log.LoggerController; import net.sourceforge.squirrel_sql.fw.util.log.ILogger; import net.sourceforge.squirrel_sql.fw.gui.GUIUtils; import javax.swing.*; import java.io.BufferedWriter; import java.io.File; import java.io.FileWriter; import java.io.IOException; public class TableExportCsvCommand { private static final StringManager s_stringMgr = StringManagerFactory.getStringManager(TableExportCsvCommand.class); private static ILogger s_log = LoggerController.createLogger(TableExportCsvCommand.class); private JTable _table; public TableExportCsvCommand(JTable table) { _table = table; } public void execute() { TableExportCsvController ctrl = new TableExportCsvController(); if(false == ctrl.isOK()) { return; } if(writeCsvFile(ctrl)) { String command = ctrl.getCommand(); if(null != command) { executeCommand(command); } } } private void executeCommand(String command) { try { Runtime.getRuntime().exec(command); } catch (IOException e) { Object[] params = new Object[]{command, e.getMessage()}; // i18n[TableExportCsvCommand.failedToExecuteCommand=Failed to execute\n{0}\nError message\n{1}\nSee last log entry for details.] String msg = s_stringMgr.getString("TableExportCsvCommand.failedToExecuteCommand", params); s_log.error(msg, e); JOptionPane.showMessageDialog(GUIUtils.getMainFrame(), msg); } } private boolean writeCsvFile(TableExportCsvController ctrl) { File file = null; try { file = ctrl.getFile(); if(null != file.getParentFile()) { file.getParentFile().mkdirs(); } FileWriter fw = new FileWriter(file); BufferedWriter bw = new BufferedWriter(fw); String separator = ctrl.getSeparatorChar(); boolean includeHeaders = ctrl.includeHeaders(); boolean complete = ctrl.exportComplete(); int nbrSelRows = _table.getSelectedRowCount(); if(0 == nbrSelRows || complete) { nbrSelRows = _table.getRowCount(); } int nbrSelCols = _table.getSelectedColumnCount(); if(0 == nbrSelCols || complete) { nbrSelCols = _table.getColumnCount(); } int[] selRows = _table.getSelectedRows(); if(0 == selRows.length || complete) { selRows = new int[nbrSelRows]; for (int i = 0; i < selRows.length; i++) { selRows[i] = i; } } int[] selCols = _table.getSelectedColumns(); if(0 == selCols.length || complete) { selCols = new int[nbrSelCols]; for (int i = 0; i < selCols.length; i++) { selCols[i] = i; } } if (includeHeaders) { for (int colIdx = 0; colIdx < nbrSelCols; ++colIdx) { String columnName = _table.getColumnName(selCols[colIdx]); bw.write(getData(separator, columnName)); if(nbrSelCols -1 > colIdx) { bw.write(separator); } } bw.write('\n'); } for (int rowIdx = 0; rowIdx < nbrSelRows; ++rowIdx) { for (int colIdx = 0; colIdx < nbrSelCols; ++colIdx) { Object cellObj = _table.getValueAt(selRows[rowIdx], selCols[colIdx]); bw.write(getData(separator, cellObj)); if(nbrSelCols -1 > colIdx) { bw.write(separator); } } bw.write('\n'); } bw.flush(); fw.flush(); bw.close(); fw.close(); return true; } catch (IOException e) { Object[] params = new Object[]{file, e.getMessage()}; // i18n[TableExportCsvCommand.failedToWriteCsvFile=Failed to write file\n{0}\nError message\n{1}\nSee last log entry for details.] String msg = s_stringMgr.getString("TableExportCsvCommand.failedToWriteCsvFile", params); s_log.error(msg, e); JOptionPane.showMessageDialog(GUIUtils.getMainFrame(), msg); return false; } } private String getData(String sepChar, Object cellObj) { if (cellObj == null) { return ""; } else { String ret = cellObj.toString().trim(); if(0 <= ret.indexOf(sepChar) || 0 <= ret.indexOf('\n')) { ret = "\"" + ret.replaceAll("\"", "\"\"") + "\""; } return ret; } } } Index: I18NStrings.properties =================================================================== RCS file: /cvsroot/squirrel-sql/sql12/fw/src/net/sourceforge/squirrel_sql/fw/gui/action/I18NStrings.properties,v retrieving revision 1.4 retrieving revision 1.5 diff -C2 -d -r1.4 -r1.5 *** I18NStrings.properties 22 Jan 2006 16:12:09 -0000 1.4 --- I18NStrings.properties 26 May 2006 17:54:17 -0000 1.5 *************** *** 9,11 **** TableCopyHtmlCommand.error.flavors=Encountered an exception while attempting to load data flavors ! TileInternalFramesAction.title=Tile \ No newline at end of file --- 9,36 ---- TableCopyHtmlCommand.error.flavors=Encountered an exception while attempting to load data flavors ! TileInternalFramesAction.title=Tile ! ! TableExportCsvDlg.exportCsvTitle=CSV export ! TableExportCsvDlg.exportCsvFile=Export to file: ! TableExportCsvDlg.separator=Separator: ! TableExportCsvDlg.exportCompleteTable=Export complete table ! TableExportCsvDlg.exportSelection=Export selection ! TableExportCsvDlg.executeCommand=Execute command (%file will be replaced by export file name) ! TableExportCsvDlg.OK=OK ! TableExportCsvDlg.Cancel=Cancel ! TableExportCsvDlg.sepeartorTab=Use tab character ! TableExportCsvDlg.withHeaders=Include column headers ! ! TableExportCsvController.noFile=You must provide a export file name. ! TableExportCsvController.noCommand=You must provide a command string or uncheck "Execute command". ! TableExportCsvController.invalidSeparator=You must provide a single separator character or check "Use tab" to use the tab character. ! TableExportCsvController.replaceFile=The export file already exisits. Would you like to replace it? ! TableExportCsvController.fileChooserTilte=Choose export file ! TableExportCsvCommand.failedToWriteCsvFile=Failed to write file\n{0}\nError message\n{1}\nSee last log entry for details. ! TableExportCsvCommand.failedToExecuteCommand=Failed to execute\n{0}\nError message\n{1}\nSee last log entry for details. ! ! TableExportCsvController.fileChooserTitel=Choose export file ! TableExportCsvController.fileChooserButton=Choose ! TableExportCsvController.commandChooserTitel=Choose command executable ! TableExportCsvController.commandChooserButton=Choose ! --- NEW FILE: TableExportCsvDlg.java --- package net.sourceforge.squirrel_sql.fw.gui.action; import net.sourceforge.squirrel_sql.fw.util.StringManager; import net.sourceforge.squirrel_sql.fw.util.StringManagerFactory; import net.sourceforge.squirrel_sql.fw.gui.GUIUtils; import net.sourceforge.squirrel_sql.fw.resources.LibraryResources; import javax.swing.*; import java.awt.*; public class TableExportCsvDlg extends JDialog { private static final StringManager s_stringMgr = StringManagerFactory.getStringManager(TableExportCsvDlg.class); JTextField txtFile; JButton btnFile; JCheckBox chkWithHeaders; JCheckBox chkSeparatorTab; JTextField txtSeparatorChar; JRadioButton radComplete; JRadioButton radSelection; JCheckBox chkExecCommand; JTextField txtCommand; JButton btnCommandFile; JButton btnOk; JButton btnCancel; public TableExportCsvDlg() { super(GUIUtils.getMainFrame(), true); // i18n[TableExportCsvDlg.exportCsvTitle=CSV export] setTitle(s_stringMgr.getString("TableExportCsvDlg.exportCsvTitle")); getContentPane().setLayout(new GridBagLayout()); GridBagConstraints gbc; gbc = new GridBagConstraints(0, 0, 1, 1, 0, 0, GridBagConstraints.NORTHWEST, GridBagConstraints.NONE, new Insets(5, 5, 5, 5), 0, 0); // i18n[TableExportCsvDlg.exportCsvFile=Export to file:] getContentPane().add(new JLabel(s_stringMgr.getString("TableExportCsvDlg.exportCsvFile")), gbc); gbc = new GridBagConstraints(0, 2, 1, 1, 0, 0, GridBagConstraints.NORTHWEST, GridBagConstraints.HORIZONTAL, new Insets(0, 5, 5, 5), 0, 0); getContentPane().add(getFilePanel(), gbc); // i18n[TableExportCsvDlg.withHeaders=Include column headers] chkWithHeaders = new JCheckBox(s_stringMgr.getString("TableExportCsvDlg.withHeaders")); gbc = new GridBagConstraints(0, 3, 1, 1, 0, 0, GridBagConstraints.NORTHWEST, GridBagConstraints.HORIZONTAL, new Insets(15, 5, 5, 5), 0, 0); getContentPane().add(chkWithHeaders, gbc); gbc = new GridBagConstraints(0, 4, 1, 1, 0, 0, GridBagConstraints.NORTHWEST, GridBagConstraints.HORIZONTAL, new Insets(15, 5, 5, 5), 0, 0); getContentPane().add(getSeparatorPanel(), gbc); gbc = new GridBagConstraints(0, 5, 1, 1, 0, 0, GridBagConstraints.NORTHWEST, GridBagConstraints.HORIZONTAL, new Insets(15, 5, 5, 5), 0, 0); getContentPane().add(getSelelectionPanel(), gbc); chkExecCommand = new JCheckBox(s_stringMgr.getString("TableExportCsvDlg.executeCommand")); gbc = new GridBagConstraints(0, 6, 1, 1, 0, 0, GridBagConstraints.NORTHWEST, GridBagConstraints.NONE, new Insets(15, 5, 5, 5), 0, 0); // i18n[TableExportCsvDlg.executeCommand=Execute command (%file will be replaced by export file name)] getContentPane().add(chkExecCommand, gbc); gbc = new GridBagConstraints(0, 7, 1, 1, 0, 0, GridBagConstraints.NORTHWEST, GridBagConstraints.HORIZONTAL, new Insets(0, 5, 5, 5), 0, 0); getContentPane().add(getCommandPanel(), gbc); gbc = new GridBagConstraints(0, 8, 1, 1, 0, 0, GridBagConstraints.NORTHWEST, GridBagConstraints.HORIZONTAL, new Insets(15, 5, 5, 5), 0, 0); getContentPane().add(getButtonPanel(), gbc); gbc = new GridBagConstraints(0, 9, 1, 1, 1, 1, GridBagConstraints.NORTHWEST, GridBagConstraints.BOTH, new Insets(5, 5, 5, 5), 0, 0); getContentPane().add(new JPanel(), gbc); } private Component getButtonPanel() { JPanel ret = new JPanel(new GridBagLayout()); GridBagConstraints gbc; // i18n[TableExportCsvDlg.OK=OK] btnOk = new JButton(s_stringMgr.getString("TableExportCsvDlg.OK")); gbc = new GridBagConstraints(0, 0, 1, 1, 0, 0, GridBagConstraints.WEST, GridBagConstraints.NONE, new Insets(0, 0, 0, 5), 0, 0); ret.add(btnOk, gbc); // i18n[TableExportCsvDlg.Cancel=Cancel] btnCancel = new JButton(s_stringMgr.getString("TableExportCsvDlg.Cancel")); gbc = new GridBagConstraints(1, 0, 1, 1, 0, 0, GridBagConstraints.WEST, GridBagConstraints.NONE, new Insets(0, 0, 0, 0), 0, 0); ret.add(btnCancel, gbc); gbc = new GridBagConstraints(2, 0, 1, 1, 1, 0, GridBagConstraints.WEST, GridBagConstraints.HORIZONTAL, new Insets(0, 5, 0, 5), 0, 0); ret.add(new JPanel(), gbc); return ret; } private Component getCommandPanel() { JPanel ret = new JPanel(new GridBagLayout()); GridBagConstraints gbc; txtCommand = new JTextField(); gbc = new GridBagConstraints(0, 0, 1, 1, 1, 0, GridBagConstraints.WEST, GridBagConstraints.HORIZONTAL, new Insets(0, 0, 0, 5), 0, 0); ret.add(txtCommand, gbc); LibraryResources rsrc = new LibraryResources(); btnCommandFile = new JButton(rsrc.getIcon(LibraryResources.IImageNames.OPEN)); gbc = new GridBagConstraints(1, 0, 1, 1, 0, 0, GridBagConstraints.WEST, GridBagConstraints.NONE, new Insets(0, 0, 0, 0), 0, 0); ret.add(btnCommandFile, gbc); return ret; } private Component getSelelectionPanel() { JPanel ret = new JPanel(new GridBagLayout()); GridBagConstraints gbc; // i18n[TableExportCsvDlg.exportCompleteTable=Export complete table] radComplete = new JRadioButton(s_stringMgr.getString("TableExportCsvDlg.exportCompleteTable")); gbc = new GridBagConstraints(0, 0, 1, 1, 0, 0, GridBagConstraints.WEST, GridBagConstraints.NONE, new Insets(0, 0, 0, 5), 0, 0); ret.add(radComplete, gbc); // i18n[TableExportCsvDlg.exportSelection=Export selection] radSelection = new JRadioButton(s_stringMgr.getString("TableExportCsvDlg.exportSelection")); gbc = new GridBagConstraints(1, 0, 1, 1, 0, 0, GridBagConstraints.WEST, GridBagConstraints.NONE, new Insets(0, 0, 0, 0), 0, 0); ret.add(radSelection, gbc); gbc = new GridBagConstraints(1, 0, 1, 1, 1, 0, GridBagConstraints.WEST, GridBagConstraints.HORIZONTAL, new Insets(0, 0, 0, 0), 0, 0); ret.add(new JPanel(), gbc); ButtonGroup bg = new ButtonGroup(); bg.add(radComplete); bg.add(radSelection); return ret; } private Component getSeparatorPanel() { JPanel ret = new JPanel(new GridBagLayout()); GridBagConstraints gbc; gbc = new GridBagConstraints(0, 0, 1, 1, 0, 0, GridBagConstraints.WEST, GridBagConstraints.NONE, new Insets(0, 0, 0, 5), 0, 0); // i18n[TableExportCsvDlg.separator=Separator:] ret.add(new JLabel(s_stringMgr.getString("TableExportCsvDlg.separator")), gbc); txtSeparatorChar = new JTextField(1); gbc = new GridBagConstraints(1, 0, 1, 1, 0, 0, GridBagConstraints.WEST, GridBagConstraints.NONE, new Insets(0, 0, 0, 20), 0, 0); ret.add(txtSeparatorChar, gbc); // i18n[TableExportCsvDlg.sepeartorTab=Use tab character] chkSeparatorTab = new JCheckBox(s_stringMgr.getString("TableExportCsvDlg.sepeartorTab")); gbc = new GridBagConstraints(2, 0, 1, 1, 0, 0, GridBagConstraints.WEST, GridBagConstraints.NONE, new Insets(0, 0, 0, 0), 0, 0); ret.add(chkSeparatorTab, gbc); gbc = new GridBagConstraints(3, 0, 1, 1, 1, 0, GridBagConstraints.WEST, GridBagConstraints.HORIZONTAL, new Insets(0, 0, 0, 0), 0, 0); ret.add(new JPanel(), gbc); return ret; } private Component getFilePanel() { JPanel ret = new JPanel(new GridBagLayout()); GridBagConstraints gbc; txtFile = new JTextField(); gbc = new GridBagConstraints(0, 0, 1, 1, 1, 0, GridBagConstraints.WEST, GridBagConstraints.HORIZONTAL, new Insets(0, 0, 0, 5), 0, 0); ret.add(txtFile, gbc); LibraryResources rsrc = new LibraryResources(); btnFile = new JButton(rsrc.getIcon(LibraryResources.IImageNames.OPEN)); gbc = new GridBagConstraints(1, 0, 1, 1, 0, 0, GridBagConstraints.WEST, GridBagConstraints.NONE, new Insets(0, 0, 0, 0), 0, 0); ret.add(btnFile, gbc); return ret; } } |