List of usage examples for com.jgoodies.forms.builder DefaultFormBuilder append
public JLabel append(String textWithMnemonic, Component component)
From source file:ca.sqlpower.matchmaker.swingui.munge.ConcatMungeComponent.java
License:Open Source License
@Override protected JPanel buildUI() { ConcatMungeStep step = (ConcatMungeStep) getStep(); addInputButton = new JButton(new AddInputAction("Add Input")); removeInputsButton = new JButton(new RemoveUnusedInputAction("Clean Up")); delimiterField = new JTextField(step.getDelimiter()); delimiterField.getDocument().addDocumentListener(new DocumentListener() { public void insertUpdate(DocumentEvent e) { doStuff();/*from w w w . j a v a 2 s. c o m*/ } public void removeUpdate(DocumentEvent e) { doStuff(); } public void changedUpdate(DocumentEvent e) { doStuff(); } private void doStuff() { ConcatMungeStep step = (ConcatMungeStep) getStep(); step.setDelimiter(delimiterField.getText()); } }); FormLayout fl = new FormLayout("pref:grow,4dlu,pref:grow"); DefaultFormBuilder b = new DefaultFormBuilder(fl); b.append("Delimiter", delimiterField); b.append(ButtonBarFactory.buildAddRemoveBar(addInputButton, removeInputsButton), 3); content = b.getPanel(); return content; }
From source file:ca.sqlpower.matchmaker.swingui.munge.CSVWriterMungeComponent.java
License:Open Source License
@Override protected JPanel buildUI() { final CSVWriterMungeStep step = (CSVWriterMungeStep) getStep(); addInputButton = new JButton(new AddInputAction("Add Input")); removeInputsButton = new JButton(new RemoveUnusedInputAction("Clean Up")); separatorField = new JTextField(step.getSeparator() + "", 1); getHandler().addValidateObject(separatorField, new CharacterValidator("separator")); separatorField.getDocument().addDocumentListener(new DocumentListener() { public void changedUpdate(DocumentEvent e) { doStuff();//from w w w . j a v a 2 s . co m } public void insertUpdate(DocumentEvent e) { doStuff(); } public void removeUpdate(DocumentEvent e) { doStuff(); } private void doStuff() { if (separatorField.getText().length() == 1) { step.setSeparator(separatorField.getText().charAt(0)); } } }); quoteField = new JTextField(step.getQuoteChar() + "", 1); getHandler().addValidateObject(quoteField, new CharacterValidator("quote")); quoteField.getDocument().addDocumentListener(new DocumentListener() { public void changedUpdate(DocumentEvent e) { doStuff(); } public void insertUpdate(DocumentEvent e) { doStuff(); } public void removeUpdate(DocumentEvent e) { doStuff(); } private void doStuff() { if (quoteField.getText().length() == 1) { step.setQuoteChar(quoteField.getText().charAt(0)); } } }); escapeField = new JTextField(step.getEscapeChar() + "", 1); getHandler().addValidateObject(escapeField, new CharacterValidator("escape")); escapeField.getDocument().addDocumentListener(new DocumentListener() { public void changedUpdate(DocumentEvent e) { doStuff(); } public void insertUpdate(DocumentEvent e) { doStuff(); } public void removeUpdate(DocumentEvent e) { doStuff(); } private void doStuff() { if (escapeField.getText().length() == 1) { step.setEscapeChar(escapeField.getText().charAt(0)); } } }); filePathField = new JTextField(step.getFilePath(), 20); getHandler().addValidateObject(filePathField, new FileNameValidator("Output")); filePathField.getDocument().addDocumentListener(new DocumentListener() { public void changedUpdate(DocumentEvent e) { doStuff(); } public void insertUpdate(DocumentEvent e) { doStuff(); } public void removeUpdate(DocumentEvent e) { doStuff(); } private void doStuff() { step.setFilePath(filePathField.getText()); } }); fileChooser = new JFileChooser(); fileButton = new JButton(new AbstractAction("...") { public void actionPerformed(ActionEvent e) { if (fileChooser.showSaveDialog(CSVWriterMungeComponent.this) == JFileChooser.APPROVE_OPTION) { filePathField.setText(fileChooser.getSelectedFile().getAbsolutePath()); } } }); clrFileCheckBox = new JCheckBox(); clrFileCheckBox.setSelected(step.getClearFile()); clrFileCheckBox.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { step.setClearFile(clrFileCheckBox.isSelected()); } }); FormLayout fl = new FormLayout("pref:grow,4dlu,pref:grow"); DefaultFormBuilder b = new DefaultFormBuilder(fl); b.append(filePathField, fileButton); b.append("Separator", separatorField); b.append("Quote Char", quoteField); b.append("Escape Char", escapeField); b.append("Clear File", clrFileCheckBox); b.append(ButtonBarFactory.buildAddRemoveBar(addInputButton, removeInputsButton), 3); content = b.getPanel(); return content; }
From source file:ca.sqlpower.matchmaker.swingui.munge.DateConstantMungeComponent.java
License:Open Source License
@Override protected JPanel buildUI() { final DateConstantMungeStep step = (DateConstantMungeStep) getStep(); Date value;/*from w ww. java 2 s . c o m*/ try { value = ((DateConstantMungeStep) getStep()).getValueAsDate(); } catch (ParseException e) { SPSUtils.showExceptionDialogNoReport(getPen(), "Error Loading munge step", e); value = null; } if (value == null) { value = new Date(); ((DateConstantMungeStep) getStep()).setValueAsDate(value); } dc = new SpinnerDateModel(value, null, null, Calendar.SECOND); date = new JSpinner(dc); editor = new JSpinner.DateEditor(date, getFormateString()); date.setEditor(editor); getHandler().addValidateObject(date, new DateValidator()); dc.addChangeListener(new ChangeListener() { public void stateChanged(ChangeEvent e) { setDate(); } }); retNull = new JCheckBox("Return null"); retNull.addActionListener(new AbstractAction() { public void actionPerformed(ActionEvent e) { boolean b = retNull.isSelected(); if (b) { useCurrent.setEnabled(false); useCurrent.setSelected(false); date.setEnabled(false); opts.setEnabled(!retNull.isSelected()); } else if (!useCurrent.isSelected()) { date.setEnabled(true); useCurrent.setEnabled(true); opts.setEnabled(!retNull.isSelected()); } step.setReturnNull(b); } }); useCurrent = new JCheckBox("Use Time of engine run"); useCurrent.addActionListener(new AbstractAction() { public void actionPerformed(ActionEvent e) { boolean b = useCurrent.isSelected(); if (b) { retNull.setEnabled(false); retNull.setSelected(false); date.setEnabled(false); opts.setEnabled(!retNull.isSelected()); } else if (!retNull.isSelected()) { date.setEnabled(true); opts.setEnabled(!retNull.isSelected()); retNull.setEnabled(true); } step.setUseCurrentTime(b); } }); retNull.setSelected(step.isReturnNull()); if (retNull.isSelected()) { useCurrent.setEnabled(false); } useCurrent.setSelected(step.getUseCurrentTime()); if (useCurrent.isSelected()) { retNull.setEnabled(false); } date.setEnabled(!retNull.isSelected() && !useCurrent.isSelected()); opts = new JComboBox(DateConstantMungeStep.FORMAT.toArray()); opts.addItemListener(new ItemListener() { public void itemStateChanged(ItemEvent e) { step.setDateFormat((String) opts.getSelectedItem()); date.setEditor(new JSpinner.DateEditor(date, getFormateString())); } }); opts.setSelectedItem(step.getDateFormat()); opts.setEnabled(!retNull.isSelected()); FormLayout layout = new FormLayout("pref,4dlu,pref:grow"); DefaultFormBuilder fb = new DefaultFormBuilder(layout); fb.append("Value:", date); fb.append("Format", opts); fb.append("", retNull); fb.append("", useCurrent); return fb.getPanel(); }
From source file:ca.sqlpower.matchmaker.swingui.munge.NumberConstantMungeComponent.java
License:Open Source License
@Override protected JPanel buildUI() { final NumberConstantMungeStep step = (NumberConstantMungeStep) getStep(); valueField = new JTextField(step.getValue() == null ? "" : step.getValue().toString()); valueField.getDocument().addDocumentListener(new DocumentListener() { void change() { step.setValue(new BigDecimal(valueField.getText())); }//from w w w . j a v a 2s. com public void changedUpdate(DocumentEvent e) { change(); } public void insertUpdate(DocumentEvent e) { change(); } public void removeUpdate(DocumentEvent e) { change(); } }); retNull = new JCheckBox("Return null"); retNull.addActionListener(new AbstractAction() { public void actionPerformed(ActionEvent e) { boolean b = retNull.isSelected(); valueField.setEnabled(!b); if (b) { step.setValue(null); } } }); retNull.setSelected(step.getValue() == null); valueField.setEnabled(!retNull.isSelected()); FormLayout layout = new FormLayout("pref,4dlu,pref:grow"); DefaultFormBuilder fb = new DefaultFormBuilder(layout); fb.append("Value:", valueField); fb.append("", retNull); return fb.getPanel(); }
From source file:ca.sqlpower.matchmaker.swingui.munge.StringConstantMungeComponent.java
License:Open Source License
@Override protected JPanel buildUI() { StringConstantMungeStep step = ((StringConstantMungeStep) getStep()); final JTextField valueField = new JTextField(step.getOutValue()); valueField.getDocument().addDocumentListener(new DocumentListener() { void change() { ((StringConstantMungeStep) getStep()).setOutValue(valueField.getText()); }/*from ww w . ja v a 2 s .c o m*/ public void changedUpdate(DocumentEvent e) { change(); } public void insertUpdate(DocumentEvent e) { change(); } public void removeUpdate(DocumentEvent e) { change(); } }); final JCheckBox retNull = new JCheckBox("Return null"); retNull.addActionListener(new AbstractAction() { public void actionPerformed(ActionEvent e) { boolean b = retNull.isSelected(); valueField.setEnabled(!b); ((StringConstantMungeStep) getStep()).setReturnNull(b); } }); retNull.setSelected(Boolean.valueOf(((StringConstantMungeStep) getStep()).isReturnNull())); valueField.setEnabled(!retNull.isSelected()); FormLayout layout = new FormLayout("pref,4dlu,pref:grow"); DefaultFormBuilder fb = new DefaultFormBuilder(layout); fb.append("Value:", valueField); fb.append("", retNull); return fb.getPanel(); }
From source file:ca.sqlpower.matchmaker.swingui.SQLObjectChooser.java
License:Open Source License
/** * Presents a modal dialog with combo boxes for database connections, * catalogs, and schemas. Initially, there is no selection in the database * combo box, and the others are empty. As databases are chosen by the user, * the other combo boxes become enabled depending on the containment * hierarchy of the selected datbase (for instance, some databases have * catalogs but not schemas; others have schemas but not catalogs; others * have both; and still others just have tables directly inside the * top-level database connection)./*w ww . j a v a 2 s. c o m*/ * <p> * The type of the return value depends on the containment hierarchy of the selected database (the possibilities are described above). * The guarantee is that the returned object will itself be a "table container;" that is, its * children are of type SQLTable. * * @param session The current MatchMaker session * @param owner The component that owns the dialog * @param dialogTitle The title to give the dialog * @param okButtonLabel The text that should appear on the OK button * @return The selected "table container" object, or <tt>null</tt> if the user cancels or * closes the dialog. * @throws SQLObjectException If there are problems connecting to or populating the chosen databases */ public static SQLObject showSchemaChooserDialog(MatchMakerSwingSession session, Component owner, String dialogTitle, String okButtonLabel) throws SQLObjectException { // single boolean in final array so the buttons can modify its value final boolean[] dialogAccepted = new boolean[1]; final JDialog d = SPSUtils.makeOwnedDialog(owner, dialogTitle); SQLObjectChooser soc = new SQLObjectChooser(session, d); FormLayout layout = new FormLayout("pref,4dlu,pref"); DefaultFormBuilder builder = new DefaultFormBuilder(layout); builder.setDefaultDialogBorder(); builder.append("Connection", soc.getDataSourceComboBox()); builder.append(soc.getCatalogTerm(), soc.getCatalogComboBox()); builder.append(soc.getSchemaTerm(), soc.getSchemaComboBox()); JButton okButton = new JButton(okButtonLabel); okButton.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { dialogAccepted[0] = true; d.dispose(); } }); JButton cancelButton = new JButton("Cancel"); cancelButton.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { d.dispose(); } }); builder.append(ButtonBarFactory.buildOKCancelBar(okButton, cancelButton), 3); d.setContentPane(builder.getPanel()); d.setDefaultCloseOperation(JDialog.DISPOSE_ON_CLOSE); d.setModal(true); d.pack(); d.setLocationRelativeTo(owner); for (;;) { dialogAccepted[0] = false; d.setVisible(true); if (!dialogAccepted[0]) { return null; } logger.debug("User submitted a selection. Chooser state: " + soc); // post-mortem: figure out if we're returning a database, catalog, or schema if (soc.schema != null) { return soc.schema; } else if (soc.catalog != null && !soc.schemaComboBox.isEnabled()) { return soc.catalog; } else if (soc.db != null && (!(soc.schemaComboBox.isEnabled() || soc.catalogComboBox.isEnabled()))) { return soc.db; } else { return null; } } }
From source file:ca.sqlpower.swingui.enterprise.client.SPServerInfoPanel.java
License:Open Source License
private JPanel buildUI(SPServerInfo si) { DefaultFormBuilder builder = new DefaultFormBuilder(new FormLayout("pref, 4dlu, max(100dlu; pref):grow")); //$NON-NLS-1$ builder.append(Messages.getString("SPServerInfoPanel.displayNameField"), //$NON-NLS-1$ name = new JTextField(si.getName())); builder.append(Messages.getString("SPServerInfoPanel.hostField"), //$NON-NLS-1$ host = new JTextField(si.getServerAddress())); builder.append(Messages.getString("SPServerInfoPanel.portField"), //$NON-NLS-1$ port = new JTextField(String.valueOf(si.getPort()))); builder.append(Messages.getString("SPServerInfoPanel.pathField"), path = new JTextField(si.getPath())); //$NON-NLS-1$ builder.append(Messages.getString("SPServerInfoPanel.usernameField"), //$NON-NLS-1$ username = new JTextField(si.getUsername())); if (si.isPasswordAllowed()) { builder.append(Messages.getString("SPServerInfoPanel.passwordField"), //$NON-NLS-1$ password = new JPasswordField(si.getPassword())); }/*from www . ja v a 2 s.c om*/ builder.append(testButton = new JButton(Messages.getString("SPServerInfoPanel.testConnectionButton"))); //$NON-NLS-1$ builder.appendParagraphGapRow(); return builder.getPanel(); }
From source file:ca.sqlpower.swingui.JDBCDataSourcePanel.java
License:Open Source License
/** * Builds and returns a Swing component that has all the general database * settings (the ones that are always required no matter what you want to * use this connection for).//from w ww . ja va2 s . co m */ private JPanel buildGeneralPanel(JDBCDataSource dbcs) { DataSourceCollection<SPDataSource> dsCollection = dbcs.getParentCollection(); List<JDBCDataSourceType> dataSourceTypes = dsCollection.getDataSourceTypes(); dataSourceTypes.add(0, new JDBCDataSourceType()); dataSourceTypeBox = new JComboBox(dataSourceTypes.toArray()); dataSourceTypeBox.setRenderer(new SPDataSourceTypeListCellRenderer()); dataSourceTypeBox.setSelectedIndex(0); // if this data source has no parent, it is a root data source if (dbcs.isParentSet()) { logger.debug("A PARENT! setting selected item to: \"" + dbcs.getParentType() + "\""); //$NON-NLS-1$ //$NON-NLS-2$ dataSourceTypeBox.setSelectedItem(dbcs.getParentType()); } else { logger.debug("NO PARENT! setting selected item to: \"" + dbcs + "\""); //$NON-NLS-1$ //$NON-NLS-2$ dataSourceTypeBox.setSelectedItem(dbcs); } dbNameField = new JTextField(dbcs.getName()); dbNameField.setName("dbNameField"); //$NON-NLS-1$ logger.debug("dbcs.getUrl() returns " + dbcs.getUrl()); //$NON-NLS-1$ dbUrlField = new JTextField(dbcs.getUrl()); platformSpecificOptions = new PlatformSpecificConnectionOptionPanel(dbUrlField); if (dbcs.isParentSet()) { platformSpecificOptions.setTemplate(dbcs.getParentType()); } dbTestResult = new JLabel(); sysprops = new JTextArea(); sysprops.setBorder(null); sysprops.setOpaque(false); sysprops.setEditable(false); sysprops.setFont(dbTestResult.getFont()); dbTestConnection = new JButton( new AbstractAction(Messages.getString("SPDataSourcePanel.testConnectionActionName")) { //$NON-NLS-1$ public void actionPerformed(ActionEvent e) { sysprops.setText(""); Connection con = null; try { JDBCDataSource dbcs = new JDBCDataSource( JDBCDataSourcePanel.this.dbcs.getParentCollection()); String name = dbNameField.getText(); dbcs.setName(name); dbcs.setDisplayName(name); dbcs.setParentType((JDBCDataSourceType) dataSourceTypeBox.getSelectedItem()); dbcs.setUrl(dbUrlField.getText()); dbcs.setUser(dbUserField.getText()); dbcs.setPass(new String(dbPassField.getPassword())); con = dbcs.createConnection(); // No exception thrown, so success! dbTestResult.setText(Messages.getString("SPDataSourcePanel.connectionTestSuccessful")); //$NON-NLS-1$ sysprops.append(JDBCDataSource.getConnectionInfoString(dbcs, true)); } catch (SQLException ex) { dbTestResult.setText(Messages.getString("SPDataSourcePanel.connectionTestFailed")); //$NON-NLS-1$ SPSUtils.showExceptionDialogNoReport(panel, Messages.getString("SPDataSourcePanel.connectionTestException"), ex); //$NON-NLS-1$ } finally { if (con != null) { try { con.close(); } catch (SQLException ex) { logger.error("Failed to close connection!", ex); //$NON-NLS-1$ } } } } }); //we know this should be set to pref but one of the components seems to be updating the //preferred size DefaultFormBuilder builder = new DefaultFormBuilder(new FormLayout("pref, 4dlu, 0:grow")); //$NON-NLS-1$ builder.append(Messages.getString("SPDataSourcePanel.connectionNameLabel"), dbNameField); //$NON-NLS-1$ builder.append(Messages.getString("SPDataSourcePanel.databaseTypeLabel"), dataSourceTypeBox); //$NON-NLS-1$ builder.append(Messages.getString("SPDataSourcePanel.connectionOptionsLabel"), //$NON-NLS-1$ platformSpecificOptions.getPanel()); builder.append(Messages.getString("SPDataSourcePanel.jdbcUrlLabel"), dbUrlField); //$NON-NLS-1$ builder.append(Messages.getString("SPDataSourcePanel.usernameLabel"), //$NON-NLS-1$ dbUserField = new JTextField(dbcs.getUser())); builder.append(Messages.getString("SPDataSourcePanel.passwordLabel"), //$NON-NLS-1$ dbPassField = new JPasswordField(dbcs.getPass())); // extra fields supplied by subclasses for (JComponent extraField : extraFields) { builder.append((String) extraField.getClientProperty(EXTRA_FIELD_LABEL_PROP), extraField); } builder.append(dbTestConnection, dbTestResult); builder.append("\t\t", sysprops); dataSourceTypeBox.addItemListener(new ItemListener() { public void itemStateChanged(ItemEvent e) { JDBCDataSourceType parentType = (JDBCDataSourceType) dataSourceTypeBox.getSelectedItem(); platformSpecificOptions.setTemplate(parentType); } }); // ensure enough width for the platform specific options JPanel p = builder.getPanel(); p.setPreferredSize(new Dimension(600, 300)); return p; }
From source file:ca.sqlpower.swingui.query.SQLQueryUIComponents.java
License:Open Source License
/** * Builds the UI of the {@link SQLQueryUIComponents}. If you just want an * easy way to build a full-featured query UI and don't want to customize * its internals, you have come to the right place. This also allows a SQL * string to initialize the query UI with. * /*from w ww . j av a2s. c o m*/ * @param swRegistry * The registry with which all background tasks will be * registered. This argument must not be null. * @param dsCollection * The collection of data sources that will be available for * querying from the UI. This argument must not be null. * * @param ds * The data source that the initial query will be executed on. * This data source must be contained in the dsCollection and not * null for the query to be executed. If the data source is null * then the query will not be executed. * * @param initialSQL * The string that will be executed immediately when the query * tool is shown. If this is null then no query will be executed. */ public static JComponent createQueryPanel(SwingWorkerRegistry swRegistry, DataSourceCollection dsCollection, SQLDatabaseMapping mapping, Window owner, SQLDatabase db, String initialSQL) { JPanel defaultQueryPanel = new JPanel(); SQLQueryUIComponents queryParts = new SQLQueryUIComponents(swRegistry, dsCollection, mapping, defaultQueryPanel); queryParts.addWindowListener(owner); JToolBar toolbar = new JToolBar(); toolbar.setFloatable(false); toolbar.add(queryParts.getPrevQueryButton()); toolbar.add(queryParts.getNextQueryButton()); toolbar.addSeparator(); toolbar.add(queryParts.getExecuteButton()); toolbar.add(queryParts.getStopButton()); toolbar.add(queryParts.getClearButton()); toolbar.addSeparator(); toolbar.add(queryParts.getAutoCommitToggleButton()); toolbar.add(queryParts.getCommitButton()); toolbar.add(queryParts.getRollbackButton()); toolbar.addSeparator(); toolbar.add(queryParts.getUndoButton()); toolbar.add(queryParts.getRedoButton()); FormLayout textAreaLayout = new FormLayout("pref:grow, 10dlu, pref, 10dlu, pref, 10dlu, pref", "pref, pref, fill:max(100dlu;pref):grow"); DefaultFormBuilder textAreaBuilder = new DefaultFormBuilder(textAreaLayout, defaultQueryPanel); textAreaBuilder.setDefaultDialogBorder(); textAreaBuilder.append(toolbar, 7); textAreaBuilder.nextLine(); textAreaBuilder.append(queryParts.getDatabaseComboBox()); textAreaBuilder.append(queryParts.getDbcsManagerButton()); textAreaBuilder.append(Messages.getString("SQLQuery.rowLimit")); JSpinner rowlimitSpinner = queryParts.getRowLimitSpinner(); rowlimitSpinner.setValue(new Integer(1000)); textAreaBuilder.append(rowlimitSpinner); textAreaBuilder.nextLine(); textAreaBuilder.append(new RTextScrollPane(queryParts.getQueryArea(), true), 7); JSplitPane queryPane = new JSplitPane(JSplitPane.VERTICAL_SPLIT); queryPane.add(defaultQueryPanel, JSplitPane.TOP); queryPane.add(queryParts.getResultTabPane(), JSplitPane.BOTTOM); if (db != null && initialSQL != null && dsCollection.getConnections().contains(db.getDataSource())) { queryParts.getDatabaseComboBox().setSelectedItem(db.getDataSource()); queryParts.getQueryArea().setText(initialSQL); queryParts.executeQuery(initialSQL); } return queryPane; }
From source file:ca.sqlpower.swingui.query.SQLQueryUIComponents.java
License:Open Source License
/** * Creates all of the JTables for the result tab and adds them to the result tab. * @throws SQLException //from w w w. jav a 2 s .c o m */ private synchronized void createResultSetTables(List<CachedRowSet> resultSets, StatementExecutor executor) throws SQLException { clearResultTables(true); for (StreamingRowSetListener rowSetListener : rowSetListeners) { rowSetListener.disconnect(); } rowSetListeners.clear(); searchDocument = new DefaultStyledDocument(); for (CachedRowSet rs : resultSets) { final JTable tempTable; FormLayout tableAreaLayout = new FormLayout("pref, 3dlu, pref:grow", "pref, fill:min(pref;50dlu):grow"); DefaultFormBuilder tableAreaBuilder = new DefaultFormBuilder(tableAreaLayout); if (showSearchOnResults) { JLabel searchLabel = new JLabel(ICON); searchLabel.setToolTipText("Search"); JTextField tableFilterTextField = new JTextField(searchDocument, null, 0); tableAreaBuilder.append(searchLabel, tableFilterTextField); } ResultSetTableModel model = new ResultSetTableModel(rs); StreamingRowSetListener rowSetListener = new StreamingRowSetListener(rs, model); rs.addRowSetListener(rowSetListener); rowSetListeners.add(rowSetListener); tempTable = new FancyExportableJTable(model, searchDocument); final TableModelListener tableListener = new TableModelListener() { public void tableChanged(TableModelEvent e) { tempTable.createDefaultColumnsFromModel(); } }; model.addTableModelListener(tableListener); // Allow users to select a single table cell. tempTable.setCellSelectionEnabled(true); tableAreaBuilder.nextLine(); JScrollPane tableScrollPane = new JScrollPane(tempTable); tableScrollPane.setPreferredSize(new Dimension((int) tableScrollPane.getPreferredSize().getWidth(), 0)); resultJTableScrollPanes.put(tempTable, tableScrollPane); tableAreaBuilder.append(tableScrollPane, 3); resultJTables.add((JTable) tempTable); tableToSQLMap.put(((JTable) tempTable), executor.getStatement()); JPanel tempResultPanel = tableAreaBuilder.getPanel(); resultTabPane.add(Messages.getString("SQLQuery.result"), tempResultPanel); resultTabPane.setSelectedIndex(1); } for (JTable table : resultJTables) { for (TableChangeListener l : tableListeners) { l.tableAdded(new TableChangeEvent(this, table)); } } }