List of usage examples for com.jgoodies.forms.layout CellConstraints CellConstraints
public CellConstraints()
From source file:ca.sqlpower.architect.swingui.ProfileGraphPanel.java
License:Open Source License
private JLabel makeInfoRow(PanelBuilder pb, String title, int row) { CellConstraints cc = new CellConstraints(); pb.appendRow("default"); pb.appendRow("2dlu"); pb.add(new JLabel(title), cc.xy(2, row)); JLabel label = new JLabel("--"); pb.add(label, cc.xy(4, row));//from ww w . jav a 2s . c om return label; }
From source file:ca.sqlpower.architect.swingui.ProfilePanel.java
License:Open Source License
private void setup() { progressBar.setVisible(false);//from w w w.j a v a 2 s . c o m FormLayout controlsLayout = new FormLayout("4dlu,fill:min(150dlu;default):grow, 4dlu", // columns "default, 4dlu, fill:min(200dlu;default):grow,4dlu,default"); // rows CellConstraints cc = new CellConstraints(); setLayout(new BorderLayout()); controlsArea = logger.isDebugEnabled() ? new FormDebugPanel(controlsLayout) : new JPanel(controlsLayout); controlsArea.setLayout(new BoxLayout(controlsArea, BoxLayout.Y_AXIS)); tableSelector = new JComboBox(); tableSelector.setRenderer(new DefaultListCellRenderer() { @Override public Component getListCellRendererComponent(JList list, Object value, int index, boolean isSelected, boolean cellHasFocus) { TableProfileResult tpr = (TableProfileResult) value; StringBuffer buf = new StringBuffer(); if (tpr != null) { buf.append(tpr.getProfiledObject().getName()); buf.append(" ("); DateFormat df = DateFormat.getDateTimeInstance(); buf.append(df.format(new Date(tpr.getCreateStartTime()))); buf.append(")"); } else { buf.append("All"); } return super.getListCellRendererComponent(list, buf.toString(), index, isSelected, cellHasFocus); } }); tableSelector.addActionListener(new ActionListener() { /* * Called when the user selects a table; displays its profile (fast) */ public void actionPerformed(ActionEvent e) { final TableProfileResult tpr = (TableProfileResult) tableSelector.getSelectedItem(); try { List<SQLColumn> columns = new ArrayList<SQLColumn>(); if (tpr == null) { for (TableProfileResult tableProfile : tableModel.getTableResultsToScan()) { for (ColumnProfileResult cpr : tableProfile.getColumnProfileResults()) { columns.add(cpr.getProfiledObject()); } } } else { for (ColumnProfileResult cpr : tpr.getColumnProfileResults()) { SQLColumn column = cpr.getProfiledObject(); columns.add(column); } } SQLColumn selectedColumn = null; if (columnSelector.getSelectedIndex() >= 0) { selectedColumn = (SQLColumn) columnSelector.getSelectedValues()[0]; } columnSelector.setModel(new DefaultComboBoxModel(columns.toArray())); if (columns.size() > 0) { if (selectedColumn != null && columns.contains(selectedColumn)) { columnSelector.setSelectedValue(selectedColumn, true); } else { columnSelector.setSelectedIndex(0); } } } catch (Exception ex) { ASUtils.showExceptionDialogNoReport(ProfilePanel.this, "Error in profile", ex); } } }); columnSelector = new JList(); // TODO maybe someday we can allow the user to compare profiles by removing this... columnSelector.setSelectionMode(ListSelectionModel.SINGLE_SELECTION); columnSelector.addListSelectionListener(new ListSelectionListener() { /* * Called when the user selects a column; gets its profile (fast) */ public void valueChanged(ListSelectionEvent e) { SQLColumn col = (SQLColumn) columnSelector.getSelectedValue(); if (col == null) { logger.debug("Null selection in columnSelector.ListSelectionListener"); return; } for (final ColumnProfileResult pr : tableModel.getResultList()) { SQLColumn column = (SQLColumn) pr.getProfiledObject(); if (col == column) { displayPanel.displayProfile((ColumnProfileResult) pr); break; } } } }); PanelBuilder pb = new PanelBuilder(controlsLayout, controlsArea); pb.setDefaultDialogBorder(); pb.add(tableSelector, cc.xy(2, 1)); pb.add(new JScrollPane(columnSelector), cc.xy(2, 3)); pb.add(progressBar, cc.xy(2, 5)); this.add(controlsArea, BorderLayout.WEST); this.add(displayPanel.getDisplayArea(), BorderLayout.CENTER); }
From source file:ca.sqlpower.architect.swingui.ProfileResultsViewer.java
License:Open Source License
/** * Creates but does not show a new profile result viewer dialog. *//* w w w.ja v a 2s. com*/ public ProfileResultsViewer(ProfileManager pm) { this.profileManager = pm; this.results = new ArrayList<TableProfileResult>(); this.frame = new JFrame(Messages.getString("ProfileResultsViewer.frameTitle")); //$NON-NLS-1$ frame.setIconImage(ASUtils.getFrameIconImage()); frame.addWindowListener(new WindowAdapter() { public void windowClosed(WindowEvent e) { tm.cleanup(); profileManager.removeProfileChangeListener(profileChangeListener); } }); // The UI for this window is shown in three tabs. Each tab is defined in // its own block, both for readability, and to prevent too much // interdependency between them. JTabbedPane tabPane = new JTabbedPane(); tm = new ProfileTableModel(profileManager); profileManager.addProfileChangeListener(profileChangeListener); // This listener monitors for double clicks in the table view tab, and // responds by showing the appropriate column in the column view tab. ProfilePanelMouseListener profilePanelMouseListener = new ProfilePanelMouseListener(); // These listeners keep the two table selectors (one on the graph tab, // and one on the table view tab) in sync ComboBoxSynchronizationListener graphPanelListener = new ComboBoxSynchronizationListener(); ComboBoxSynchronizationListener tableViewListener = new ComboBoxSynchronizationListener(); // The first tab is the column specific tab. It contains a ProfilePanel, // which contains a ProfileGraphPanel, which displays the column // information and pie chart. { JPanel profilePanel = new JPanel(new BorderLayout()); final ProfilePanel p = new ProfilePanel(tm, profileManager); p.setTabPane(tabPane); p.setTableModel(tm); profilePanel.add(p, BorderLayout.CENTER); ButtonBarBuilder2 profileButtons = new ButtonBarBuilder2(); profileButtons.addGlue(); profileButtons.addFixed(new JButton(closeAction)); profilePanel.add(profileButtons.getPanel(), BorderLayout.SOUTH); tabPane.addTab(Messages.getString("ProfileResultsViewer.graphViewTab"), profilePanel); //$NON-NLS-1$ profilePanelMouseListener.setProfilePanel(p); p.getTableSelector().addActionListener(graphPanelListener); tableViewListener.setTarget(p.getTableSelector()); frame.addWindowListener(new WindowListener() { @Override public void windowOpened(WindowEvent e) { } @Override public void windowIconified(WindowEvent e) { } @Override public void windowDeiconified(WindowEvent e) { } @Override public void windowDeactivated(WindowEvent e) { } @Override public void windowClosing(WindowEvent e) { } @Override public void windowClosed(WindowEvent e) { p.close(); if (tableNotesFieldListener != null) { tableNotesFieldListener.cancel(); } } @Override public void windowActivated(WindowEvent e) { } }); } // This tab displays a table that shows data for all columns from the // selected table, or all tables. { TableModelSearchDecorator searchDecorator = new TableModelSearchDecorator(tm); final TableFilterDecorator filterTableModel = new TableFilterDecorator(searchDecorator); TableModelSortDecorator tableModelSortDecorator = new TableModelSortDecorator(filterTableModel); final ProfileJTable viewTable = new ProfileJTable(tableModelSortDecorator); searchDecorator.setTableTextConverter(viewTable); TableModelColumnAutofit columnAutoFit = new TableModelColumnAutofit(tableModelSortDecorator, viewTable); JTableHeader tableHeader = viewTable.getTableHeader(); tableModelSortDecorator.setTableHeader(tableHeader); columnAutoFit.setTableHeader(tableHeader); viewTable.setAutoResizeMode(JTable.AUTO_RESIZE_ALL_COLUMNS); profilePanelMouseListener.setTabPane(tabPane); viewTable.addMouseListener(profilePanelMouseListener); viewTable.getModel().addTableModelListener(new TableModelListener() { public void tableChanged(TableModelEvent e) { TableUtils.fitColumnWidths(viewTable, 2); } }); JScrollPane editorScrollPane = new JScrollPane(viewTable); editorScrollPane.setVerticalScrollBarPolicy(JScrollPane.VERTICAL_SCROLLBAR_ALWAYS); editorScrollPane.setPreferredSize(new Dimension(800, 600)); editorScrollPane.setMinimumSize(new Dimension(10, 10)); JPanel tableViewPane = new JPanel(new BorderLayout()); final JTextArea notesField; if (profileManager.getWorkspaceContainer() instanceof ArchitectSession && ((ArchitectSession) profileManager.getWorkspaceContainer()).isEnterpriseSession()) { notesField = new JTextArea(); notesField.setEnabled(false); // Kind of a hack, but the default selection is all tables, so this shoudn't be enabled notesField.setText("Select a Table"); JScrollPane notesScroll = new JScrollPane(notesField); notesScroll.setVerticalScrollBarPolicy(JScrollPane.VERTICAL_SCROLLBAR_ALWAYS); notesScroll.setHorizontalScrollBarPolicy(JScrollPane.HORIZONTAL_SCROLLBAR_ALWAYS); notesScroll.setMinimumSize(new Dimension(0, 50)); JPanel notesPanel = new JPanel(new BorderLayout()); notesPanel.add(new JLabel("Table Profile Notes:"), BorderLayout.NORTH); notesPanel.add(notesScroll, BorderLayout.CENTER); JSplitPane tableViewSplit = new JSplitPane(JSplitPane.VERTICAL_SPLIT); tableViewSplit.setTopComponent(editorScrollPane); tableViewSplit.setBottomComponent(notesPanel); tableViewPane.add(tableViewSplit, BorderLayout.CENTER); } else { tableViewPane.add(editorScrollPane); notesField = null; } JPanel searchPanel = new JPanel(); { FormLayout layout = new FormLayout( "4dlu, pref, 4dlu, pref, 4dlu, pref:grow, 4dlu, pref, 4dlu, pref, 4dlu", "pref"); DefaultFormBuilder builder = new DefaultFormBuilder(layout, searchPanel); CellConstraints cc = new CellConstraints(); JLabel tableLabel = new JLabel("Table:"); tableSelector = new JComboBox(); tableSelector.setRenderer(new DefaultListCellRenderer() { @Override public Component getListCellRendererComponent(JList list, Object value, int index, boolean isSelected, boolean cellHasFocus) { TableProfileResult tpr = (TableProfileResult) value; StringBuffer buf = new StringBuffer(); if (tpr != null) { buf.append(tpr.getProfiledObject().getName()); buf.append(" ("); DateFormat df = DateFormat.getDateTimeInstance(); buf.append(df.format(new Date(tpr.getCreateStartTime()))); buf.append(")"); } else { buf.append("All"); } return super.getListCellRendererComponent(list, buf.toString(), index, isSelected, cellHasFocus); } }); tableSelector.addActionListener(new ActionListener() { private AbstractSPListener tableNotesListener; public void actionPerformed(ActionEvent e) { final TableProfileResult tpr = (TableProfileResult) tableSelector.getSelectedItem(); filterTableModel.setFilter(tpr); if (notesField != null) { if (tableNotesFieldListener != null) { notesField.getDocument().removeDocumentListener(tableNotesFieldListener); tableNotesFieldListener.cancel(); } if (currentTable != null) { currentTable.removeSPListener(tableNotesListener); } currentTable = tpr; if (tpr != null) { notesField.setText(tpr.getNotes()); tableNotesListener = new AbstractSPListener() { @Override public void propertyChanged(PropertyChangeEvent evt) { if ("notes".equals(evt.getPropertyName())) { if (!evt.getNewValue().equals(notesField.getText())) { notesField.setText((String) evt.getNewValue()); } } } }; tpr.addSPListener(tableNotesListener); tableNotesFieldListener = new TimedDocumentListener( tpr.getProfiledObject().getName(), 2500) { @Override public void textChanged() { final String notesText = notesField.getText(); profileManager.getRunnableDispatcher().runInForeground(new Runnable() { public void run() { if (!tpr.getNotes().equals(notesText)) { tpr.setNotes(notesText); } } }); } }; notesField.setEnabled(true); } else { notesField.setEnabled(false); notesField.setText("Select a Table"); tableNotesFieldListener = null; } if (tableNotesFieldListener != null) { notesField.getDocument().addDocumentListener(tableNotesFieldListener); } } } }); tableSelector.addActionListener(tableViewListener); graphPanelListener.setTarget(tableSelector); JLabel searchLabel = new JLabel(Messages.getString("ProfileResultsViewer.search")); //$NON-NLS-1$ JTextField searchField = new JTextField(searchDecorator.getDoc(), "", 25); //$NON-NLS-1$ searchField.setEditable(true); builder.add(tableLabel, cc.xy(2, 1)); builder.add(tableSelector, cc.xy(4, 1)); builder.add(searchLabel, cc.xy(8, 1)); builder.add(searchField, cc.xy(10, 1)); } tableViewPane.add(searchPanel, BorderLayout.NORTH); ButtonBarBuilder2 tableButtons = new ButtonBarBuilder2(); tableButtons.addGlue(); tableButtons.addFixed( new JButton(new SaveProfileAction(frame, Messages.getString("ProfileResultsViewer.PDFExport"), viewTable, SaveProfileAction.SaveableFileType.PDF))); tableButtons.addFixed( new JButton(new SaveProfileAction(frame, Messages.getString("ProfileResultsViewer.CSVExport"), viewTable, SaveProfileAction.SaveableFileType.CSV))); tableButtons.addFixed( new JButton(new SaveProfileAction(frame, Messages.getString("ProfileResultsViewer.HTMLExport"), viewTable, SaveProfileAction.SaveableFileType.HTML))); tableButtons.addFixed(new JButton(closeAction)); tableViewPane.add(tableButtons.getPanel(), BorderLayout.SOUTH); tabPane.addTab(Messages.getString("ProfileResultsViewer.tableViewTab"), tableViewPane); //$NON-NLS-1$ } // This tab displays a table with top value information from all columns. { final MultiFreqValueCountTableModel columnTableModel = new MultiFreqValueCountTableModel(tm); JTextField columnSearchField = new JTextField("", 25); //$NON-NLS-1$ final FancyExportableJTable columnTable = new FancyExportableJTable(columnTableModel, columnSearchField.getDocument()); columnTable.getTableModelSortDecorator().setColumnComparator(columnTableModel.getColumnClass(2), new ColumnValueCount.ColumnValueComparator()); columnTableModel.addTableModelListener(new TableModelListener() { public void tableChanged(TableModelEvent e) { TableUtils.fitColumnWidths(columnTable, 15); } }); columnTable.setColumnFormatter(4, new PercentTableCellRenderer(false).getFormat()); columnTable.setColumnFormatter(5, new DateTableCellRenderer().getFormat()); for (int i = 0; i < columnTableModel.getColumnCount(); i++) { columnTable.getColumnModel().getColumn(i).setCellRenderer(columnTableModel.getCellRenderer(i)); } JPanel columnViewerPanel = new JPanel(new BorderLayout()); columnViewerPanel.add(new JScrollPane(columnTable), BorderLayout.CENTER); JPanel columnSearchPanel = new JPanel(new FlowLayout(FlowLayout.RIGHT)); columnSearchPanel.add(new JLabel(Messages.getString("ProfileResultsViewer.search"))); //$NON-NLS-1$ columnSearchPanel.add(columnSearchField); columnViewerPanel.add(columnSearchPanel, BorderLayout.NORTH); ButtonBarBuilder2 columnButtonBar = new ButtonBarBuilder2(); columnButtonBar.addGlue(); final JButton csvExportButton = new JButton(columnTable.getExportCSVAction()); csvExportButton.setText(Messages.getString("ProfileResultsViewer.CSVExport")); columnButtonBar.addFixed(csvExportButton); final JButton htmlExportButton = new JButton(columnTable.getExportHTMLAction()); htmlExportButton.setText(Messages.getString("ProfileResultsViewer.HTMLExport")); columnButtonBar.addFixed(htmlExportButton); columnButtonBar.addFixed(new JButton(closeAction)); columnViewerPanel.add(columnButtonBar.getPanel(), BorderLayout.SOUTH); tabPane.addTab(Messages.getString("ProfileResultsViewer.columnViewTab"), columnViewerPanel); } frame.add(tabPane, BorderLayout.CENTER); frame.setDefaultCloseOperation(JDialog.DISPOSE_ON_CLOSE); frame.pack(); frame.setLocationRelativeTo(null); SPSUtils.makeJDialogCancellable(frame, null); }
From source file:ca.sqlpower.architect.swingui.SQLScriptDialog.java
License:Open Source License
private JPanel buildPanel() { FormLayout sqlLayout = new FormLayout("4dlu, min:grow, 4dlu", //columns //$NON-NLS-1$ "pref, 4dlu, pref, 6dlu, fill:300dlu:grow,6dlu, pref, 6dlu, pref"); //rows //$NON-NLS-1$ CellConstraints cc = new CellConstraints(); sqlDoc = new DefaultStyledDocument(); SimpleAttributeSet att = new SimpleAttributeSet(); StyleConstants.setForeground(att, Color.black); for (DDLStatement ddl : statements) { try {// ww w.j a v a2 s . c om sqlDoc.insertString(sqlDoc.getLength(), ddl.getSQLText() + ddl.getSqlTerminator(), att); } catch (BadLocationException e) { ASUtils.showExceptionDialogNoReport(parent, Messages.getString("SQLScriptDialog.couldNotCreateDocument"), e); //$NON-NLS-1$ logger.error("Could not create document for results", e); //$NON-NLS-1$ } } sqlScriptArea = new JTextPane(); sqlScriptArea.setMargin(new Insets(6, 10, 4, 6)); sqlScriptArea.setDocument(sqlDoc); sqlScriptArea.setEditable(false); sqlScriptArea.setAutoscrolls(true); JScrollPane sp = new JScrollPane(sqlScriptArea); Action copy = new CopyAction(sqlDoc); Action execute = null; execute = new AbstractAction() { public void actionPerformed(ActionEvent e) { if (targetDataSource.get(JDBCDataSource.PL_UID) != null) { new Thread(executeTask).start(); ProgressWatcher.watchProgress(progressBar, executeTask, statusLabel); } else { JOptionPane.showMessageDialog(SQLScriptDialog.this, Messages.getString("SQLScriptDialog.noTargetDb"), //$NON-NLS-1$ Messages.getString("SQLScriptDialog.couldNotExecuteDialogTitle"), //$NON-NLS-1$ JOptionPane.ERROR_MESSAGE); } } }; Action save = new AbstractAction() { public void actionPerformed(ActionEvent e) { logger.info("SQL_FILE_FILTER:" + ((FileExtensionFilter) SPSUtils.SQL_FILE_FILTER).toString()); //$NON-NLS-1$ SPSUtils.saveDocument(parent, sqlDoc, (FileExtensionFilter) SPSUtils.SQL_FILE_FILTER); } }; CloseAction close = new CloseAction(); close.setWhatToClose(this); SPSUtils.makeJDialogCancellable(this, close); ButtonBarBuilder barBuilder = new ButtonBarBuilder(); JButton copyButton = new JButton(copy); copyButton.setText(Messages.getString("SQLScriptDialog.copyOption")); //$NON-NLS-1$ barBuilder.addGridded(copyButton); barBuilder.addRelatedGap(); barBuilder.addGlue(); executeButton = new JButton(execute); executeButton.setText(Messages.getString("SQLScriptDialog.executeOption")); //$NON-NLS-1$ barBuilder.addGridded(executeButton); barBuilder.addRelatedGap(); barBuilder.addGlue(); JButton saveButton = new JButton(save); saveButton.setText(Messages.getString("SQLScriptDialog.saveOption")); //$NON-NLS-1$ barBuilder.addGridded(saveButton); barBuilder.addRelatedGap(); barBuilder.addGlue(); addWindowListener(new CloseWindowAction()); JButton closeButton = new JButton(close); closeButton.setText(Messages.getString("SQLScriptDialog.closeOption")); //$NON-NLS-1$ barBuilder.addGridded(closeButton); getRootPane().setDefaultButton(executeButton); PanelBuilder pb; JPanel panel = logger.isDebugEnabled() ? new FormDebugPanel(sqlLayout) : new JPanel(sqlLayout); pb = new PanelBuilder(sqlLayout, panel); pb.setDefaultDialogBorder(); pb.add(new JLabel(header), cc.xy(2, 1)); // Prevent the user from being able to execute the script if // an invalid target database is selected. if (targetDataSource != null && targetDataSource.get(JDBCDataSource.PL_UID) != null) { pb.add(new JLabel(Messages.getString("SQLScriptDialog.yourTargetDbIs") + targetDataSource.getName()), //$NON-NLS-1$ cc.xy(2, 3)); executeButton.setEnabled(true); } else { pb.add(new JLabel(Messages.getString("SQLScriptDialog.yourTargetDbIsNotConfigured")), cc.xy(2, 3)); executeButton.setEnabled(false); } pb.add(sp, cc.xy(2, 5)); pb.add(barBuilder.getPanel(), cc.xy(2, 7, "c,c")); //$NON-NLS-1$ pb.add(progressBar, cc.xy(2, 9)); return pb.getPanel(); }
From source file:ca.sqlpower.architect.swingui.WelcomeScreen.java
License:Open Source License
public void showWelcomeDialog(Component dialogOwner) { final JDialog d = SPSUtils.makeOwnedDialog(dialogOwner, Messages.getString("WelcomeScreen.welcomeScreenTitle")); //$NON-NLS-1$ d.setLayout(new BorderLayout(0, 12)); DefaultFormBuilder builder = new DefaultFormBuilder( new FormLayout("pref:grow, fill:pref, pref:grow", "pref, pref, pref")); CellConstraints cc = new CellConstraints(); JPanel logoPanel = LogoLayout.generateLogoPanel(); builder.add(logoPanel, cc.xyw(1, 1, 3)); d.add(builder.getPanel(), BorderLayout.NORTH); logoPanel.getLayout().layoutContainer(logoPanel); HTMLEditorKit htmlKit = new HTMLEditorKit(); final JEditorPane htmlComponent = new JEditorPane(); htmlComponent.setEditorKit(htmlKit); htmlComponent.setText(welcomeHTMLstuff); htmlComponent.setEditable(false);//from w ww. j a v a 2s .c o m htmlComponent.setBackground(null); /** Jump to the URL (in the user's configured browser) * when a link is clicked. */ htmlComponent.addHyperlinkListener(new HyperlinkListener() { public void hyperlinkUpdate(HyperlinkEvent evt) { if (evt.getEventType() == HyperlinkEvent.EventType.ACTIVATED) { URL url = evt.getURL(); try { BrowserUtil.launch(url.toString()); } catch (IOException e1) { throw new RuntimeException(Messages.getString("WelcomeScreen.unexpectedError"), e1); //$NON-NLS-1$ } } } }); d.add(htmlComponent, BorderLayout.CENTER); showPrefsAgain = new JCheckBox(Messages.getString("WelcomeScreen.showWelcomeInFuture")); //$NON-NLS-1$ showPrefsAgain.setSelected(true); JButton closeButton = new JButton(Messages.getString("WelcomeScreen.closeButton")); //$NON-NLS-1$ closeButton.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { context.getUserSettings().getSwingSettings() .setBoolean(ArchitectSwingUserSettings.SHOW_WELCOMESCREEN, showPrefsAgain.isSelected()); d.dispose(); } }); JPanel bottomPanel = new JPanel(); bottomPanel.setLayout(new BorderLayout()); bottomPanel.setBorder(BorderFactory.createEmptyBorder(12, 12, 12, 12)); bottomPanel.add(showPrefsAgain, BorderLayout.WEST); bottomPanel.add(closeButton, BorderLayout.EAST); d.add(bottomPanel, BorderLayout.SOUTH); d.getRootPane().setDefaultButton(closeButton); d.pack(); // The dialog is just a few pixels too wide after packing. d.setSize(d.getSize().width - 4, d.getSize().height); d.setLocationRelativeTo(dialogOwner); d.setVisible(true); }
From source file:ca.sqlpower.matchmaker.swingui.action.ProgressAction.java
License:Open Source License
/** * Setup the dialog, monitors and worker. Classes that extend this class * should use doStuff() and cleanUp()//from w ww.j a va 2 s.c o m */ public void actionPerformed(ActionEvent e) { final JDialog progressDialog; final Map<String, Object> properties = new HashMap<String, Object>(); progressDialog = new JDialog(frame, "Progress...", false); progressDialog.setLocationRelativeTo(frame); progressDialog.setTitle(getDialogMessage()); PanelBuilder pb = new PanelBuilder( new FormLayout("4dlu,fill:min(100dlu;default):grow, pref, fill:min(100dlu;default):grow,4dlu", "4dlu,pref,4dlu, pref, 6dlu, pref,4dlu")); JLabel label = new JLabel(getDialogMessage()); JProgressBar progressBar = new JProgressBar(); final MonitorableImpl monitor = new MonitorableImpl(); if (!setup(monitor, properties)) { // if setup indicates not to continue (returns false), then exit method return; } CellConstraints c = new CellConstraints(); pb.add(label, c.xyw(2, 2, 3)); pb.add(progressBar, c.xyw(2, 4, 3)); pb.add(new JButton(new AbstractAction(getButtonText()) { public void actionPerformed(ActionEvent e) { progressDialog.dispose(); monitor.setCancelled(true); } }), c.xy(3, 6)); progressDialog.add(pb.getPanel()); SPSwingWorker worker = new SPSwingWorker(session) { @Override public void cleanup() throws Exception { if (getDoStuffException() != null) { SPSUtils.showExceptionDialogNoReport(session.getFrame(), "An unexpected exception occurred during the export", getDoStuffException()); } ProgressAction.this.cleanUp(monitor); monitor.setFinished(true); progressDialog.dispose(); } @Override public void doStuff() throws Exception { ProgressAction.this.doStuff(monitor, properties); } }; ProgressWatcher.watchProgress(progressBar, monitor); progressDialog.pack(); progressDialog.setVisible(true); new Thread(worker).start(); }
From source file:ca.sqlpower.matchmaker.swingui.address.AddressValidationEntryPanel.java
License:Open Source License
private void buildUI() { DefaultFormBuilder builder = new DefaultFormBuilder( new FormLayout("fill:pref:grow,4dlu,fill:pref", "pref,4dlu,pref,4dlu,fill:pref:grow"), panel); builder.setDefaultDialogBorder();/*from w ww . j a v a 2s .co m*/ CellConstraints cc = new CellConstraints(); try { final Address address1; logger.debug("ADDRESS BEFORE PARSING IS : " + addressResult.getOutputAddress()); address1 = Address.parse(addressResult.getOutputAddress().getAddress(), addressResult.getOutputAddress().getMunicipality(), addressResult.getOutputAddress().getProvince(), addressResult.getOutputAddress().getPostalCode(), addressResult.getOutputAddress().getCountry(), addressDatabase); logger.debug("ADDRESS AFTER PARSING IS : " + address1); logger.debug("The output address is not empty."); logger.debug("The non-empty address is: " + address1); this.addressValidator = new AddressValidator(addressDatabase, address1); JButton saveButton = new JButton("Save"); selectedAddressLabel = new AddressLabel(addressResult.getOutputAddress(), null, true, addressValidator.isAddressValid()); selectedAddressLabel.addPropertyChangeListener(new PropertyChangeListener() { public void propertyChange(PropertyChangeEvent evt) { if (evt.getPropertyName().equals("currentAddress")) { // update the suggestionList Address address = (Address) evt.getNewValue(); if (address.getType() == null) { //unparsed address, needs to be parsed, This could also be a failed to parse address, won't hurt to try parsing again try { address = Address.parse(address.getAddress(), address.getMunicipality(), address.getProvince(), address.getPostalCode(), address.getCountry(), addressDatabase); } catch (RecognitionException e) { MMSUtils.showExceptionDialog(panel, "There was an error while trying to parse this address", e); } catch (DatabaseException e) { MMSUtils.showExceptionDialog(panel, "There was a database error while trying to parse this address", e); } } addressValidator = new AddressValidator(addressDatabase, address); suggestionList.setModel(new JList(addressValidator.getSuggestions().toArray()).getModel()); selectedAddressLabel.setAddressValid(addressValidator.isAddressValid()); updateProblemDetails(); save(); } } }); selectedAddressLabel.setFont(selectedAddressLabel.getFont() .deriveFont((float) (selectedAddressLabel.getFont().getSize() + 3))); JButton revertButton = new JButton("Revert"); revertButton.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { try { logger.debug("Revert Address: " + addressResult.toString()); Address address = Address.parse(addressResult.getInputAddress().getUnparsedAddressLine1(), addressResult.getInputAddress().getMunicipality(), addressResult.getInputAddress().getProvince(), addressResult.getInputAddress().getPostalCode(), addressResult.getInputAddress().getCountry(), addressDatabase); addressResult.setOutputAddress(selectedAddressLabel.getCurrentAddress()); selectedAddressLabel.setCurrentAddress(address); } catch (RecognitionException e1) { e1.printStackTrace(); } catch (DatabaseException e1) { throw new RuntimeException("A database exception occurred while parsing the address" + e1); } } }); saveButton.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { save(); } }); // undoButton = new JButton("Undo"); // redoButton = new JButton("Redo"); JLabel suggestLabel = new JLabel("Suggestions:"); suggestLabel.setFont(suggestLabel.getFont().deriveFont(Font.BOLD)); problemsBuilder = new DefaultFormBuilder(new FormLayout("fill:pref:grow")); updateProblemDetails(); suggestionList = new JList(addressValidator.getSuggestions().toArray()); logger.debug("There are " + addressValidator.getSuggestions().size() + " suggestions."); suggestionList.setSelectionMode(ListSelectionModel.SINGLE_SELECTION); suggestionList.setCellRenderer(new AddressListCellRenderer(address1, false)); suggestionList.addMouseListener(new MouseAdapter() { public void mouseReleased(MouseEvent e) { logger.debug("Mouse Clicked on suggestion list " + ((JList) e.getSource()).getSelectedValue()); final Address selected = (Address) ((JList) e.getSource()).getSelectedValue(); if (selected != null) { //XXX:This does not update the model currently selectedAddressLabel.setCurrentAddress(selected); } } }); JScrollPane scrollList = new JScrollPane(suggestionList); scrollList.setPreferredSize(new Dimension(230, 1000)); ButtonBarBuilder bbb = new ButtonBarBuilder(); bbb.addRelatedGap(); bbb.addGridded(revertButton); bbb.addRelatedGap(); bbb.addGridded(saveButton); bbb.addRelatedGap(); builder.add(bbb.getPanel(), cc.xy(1, 1)); builder.add(suggestLabel, cc.xy(3, 1)); builder.add(selectedAddressLabel, cc.xy(1, 3)); builder.add(problemsBuilder.getPanel(), cc.xy(1, 5)); builder.add(scrollList, cc.xywh(3, 3, 1, 3)); } catch (RecognitionException e1) { MMSUtils.showExceptionDialog(getPanel(), "There was an error while trying to parse this address", e1); } catch (DatabaseException e1) { MMSUtils.showExceptionDialog(getPanel(), "There was a database error while trying to parse this address", e1); } }
From source file:ca.sqlpower.matchmaker.swingui.BuildExampleTableDialog.java
License:Open Source License
/** * Builds the gui for this dialog//from www. ja va2s .c om */ private void buildGUI() { JPanel panel; if (logger.isDebugEnabled()) { panel = new FormDebugPanel(); } else { panel = new JPanel(); } FormLayout layout = new FormLayout("4dlu,pref,4dlu,pref:grow,4dlu", "4dlu,pref:grow,4dlu,pref,4dlu,pref,4dlu,pref,4dlu,pref,4dlu,pref,4dlu,pref,4dlu,pref,4dlu"); panel.setLayout(layout); CellConstraints cc = new CellConstraints(); int row = 2; panel.add(status, cc.xyw(2, row, 3)); row += 2; panel.add(new JLabel("Data Source:"), cc.xy(2, row)); panel.add(sourceChooser.getDataSourceComboBox(), cc.xy(4, row)); row += 2; panel.add(sourceChooser.getCatalogTerm(), cc.xy(2, row)); panel.add(sourceChooser.getCatalogComboBox(), cc.xy(4, row)); row += 2; panel.add(sourceChooser.getSchemaTerm(), cc.xy(2, row)); panel.add(sourceChooser.getSchemaComboBox(), cc.xy(4, row)); row += 2; panel.add(new JLabel("Table:"), cc.xy(2, row)); panel.add(tableName, cc.xy(4, row)); row += 2; panel.add(new JLabel("# of Rows to Insert:"), cc.xy(2, row)); panel.add(rowCounter, cc.xy(4, row)); row += 2; cancel = new JButton(new AbstractAction("Close") { public void actionPerformed(ActionEvent e) { dispose(); } }); create = new JButton(new AbstractAction("Create") { public void actionPerformed(ActionEvent e) { try { generateTableSQL(); } catch (Exception ex) { SPSUtils.showExceptionDialogNoReport(BuildExampleTableDialog.this, "Error while trying to create example table", ex); } } }); panel.add(ButtonBarFactory.buildOKCancelBar(create, cancel), cc.xyw(2, row, 3)); row += 2; progress = new JProgressBar(0, spinnerNumberModel.getNumber().intValue()); popMon = new PopulationMonitor(spinnerNumberModel.getNumber().intValue()); pw = new ProgressWatcher(progress, popMon); panel.add(progress, cc.xyw(2, row, 3)); setContentPane(panel); pack(); }
From source file:ca.sqlpower.matchmaker.swingui.BuildExampleTableDialog.java
License:Open Source License
/** * Creates and shows a dialog with the generated SQL for the * result table in it. The dialog has buttons with actions * that can save, execute, or copy the SQL to the clipboard. *//*from www . ja va 2s . co m*/ public void generateTableSQL() throws InstantiationException, IllegalAccessException, HeadlessException, SQLException, SQLObjectException, ClassNotFoundException { final DDLGenerator ddlg = DDLUtils.createDDLGenerator(getDataSource()); if (ddlg == null) { JOptionPane.showMessageDialog(swingSession.getFrame(), "Couldn't create DDL Generator for database type\n" + getDataSource().getDriverClass()); return; } ddlg.setTargetCatalog(getTableCatalog()); ddlg.setTargetSchema(getTableSchema()); table = swingSession.getDatabase(getDataSource()).getTableByName(getTableCatalog(), getTableSchema(), tableName.getText()); if (swingSession.tableExists(table)) { int answer = JOptionPane.showConfirmDialog(swingSession.getFrame(), "Example table already exists, do you want to drop and recreate it?", "Table already exists", JOptionPane.YES_NO_OPTION); if (answer != JOptionPane.YES_OPTION) { return; } ddlg.dropTable(table); while (table.getColumns().size() != 0) { table.removeColumn(0); } } else { table = SQLObjectUtils.addSimulatedTable(swingSession.getDatabase(getDataSource()), getTableCatalog(), getTableSchema(), tableName.getText()); } SQLColumn id = new SQLColumn(table, "ID", swingSession.getSQLType(Types.INTEGER), 0, 0, false); table.addColumn(id); table.addToPK(id); table.addColumn(new SQLColumn(table, "FirstName", swingSession.getSQLType(Types.VARCHAR), 100, 0, false)); table.addColumn(new SQLColumn(table, "LastName", swingSession.getSQLType(Types.VARCHAR), 100, 0, false)); table.addColumn(new SQLColumn(table, "Email", swingSession.getSQLType(Types.VARCHAR), 100, 0, false)); table.addColumn(new SQLColumn(table, "Address", swingSession.getSQLType(Types.VARCHAR), 100, 0, false)); table.addColumn(new SQLColumn(table, "HomePhone", swingSession.getSQLType(Types.VARCHAR), 100, 0, false)); table.addColumn(new SQLColumn(table, "CellPhone", swingSession.getSQLType(Types.VARCHAR), 100, 0, false)); ddlg.addTable(table); final JDialog editor = new JDialog(swingSession.getFrame(), "Create Example Table", true); JComponent cp = (JComponent) editor.getContentPane(); Box statementsBox = Box.createVerticalBox(); final List<JTextArea> sqlTextFields = new ArrayList<JTextArea>(); for (DDLStatement sqlStatement : ddlg.getDdlStatements()) { final JTextArea sqlTextArea = new JTextArea(sqlStatement.getSQLText()); statementsBox.add(sqlTextArea); sqlTextFields.add(sqlTextArea); } Action saveAction = new AbstractAction("Save") { public void actionPerformed(ActionEvent e) { AbstractDocument doc = new DefaultStyledDocument(); for (JTextArea sqlText : sqlTextFields) { try { doc.insertString(doc.getLength(), sqlText.getText(), null); doc.insertString(doc.getLength(), ";\n", null); } catch (BadLocationException e1) { SPSUtils.showExceptionDialogNoReport(editor, "Unexcepted Document Error", e1); } } SPSUtils.saveDocument(swingSession.getFrame(), doc, (FileExtensionFilter) SPSUtils.SQL_FILE_FILTER); } }; Action copyAction = new AbstractAction("Copy to Clipboard") { public void actionPerformed(ActionEvent e) { StringBuffer buf = new StringBuffer(); for (JTextArea sqlText : sqlTextFields) { buf.append(sqlText.getText()); buf.append(";\n"); } StringSelection selection = new StringSelection(buf.toString()); Clipboard clipboard = Toolkit.getDefaultToolkit().getSystemClipboard(); clipboard.setContents(selection, selection); } }; Action executeAction = new AbstractAction("Execute") { public void actionPerformed(ActionEvent e) { // Builds the gui part of the error pane that will be used // if a sql statement fails JPanel errorPanel = new JPanel( new FormLayout("4dlu,300dlu,4dlu", "4dlu,pref,4dlu,pref,4dlu,200dlu,4dlu,pref,4dlu")); CellConstraints cc = new CellConstraints(); JLabel topLabel = new JLabel(); JTextArea errorMsgLabel = new JTextArea(); errorMsgLabel.setLineWrap(true); errorMsgLabel.setWrapStyleWord(true); errorMsgLabel.setPreferredSize(new Dimension(300, 40)); JLabel bottomLabel = new JLabel(); JTextArea errorStmtLabel = new JTextArea(); JScrollPane errorStmtPane = new JScrollPane(errorStmtLabel); errorStmtPane.setPreferredSize(new Dimension(300, 300)); errorStmtPane.scrollRectToVisible(new Rectangle(0, 0)); int row = 2; errorPanel.add(topLabel, cc.xy(2, row)); row += 2; errorPanel.add(errorMsgLabel, cc.xy(2, row)); row += 2; errorPanel.add(errorStmtPane, cc.xy(2, row)); row += 2; errorPanel.add(bottomLabel, cc.xy(2, row, "f,f")); Connection con = null; Statement stmt = null; String sql = null; try { con = swingSession.getDatabase(getDataSource()).getConnection(); stmt = con.createStatement(); int successCount = 0; for (JTextArea sqlText : sqlTextFields) { sql = sqlText.getText(); try { stmt.executeUpdate(sql); successCount += 1; } catch (SQLException e1) { topLabel.setText("There was an error in the SQL statement: "); errorMsgLabel.setText(e1.getMessage()); errorStmtLabel.setText(sql); bottomLabel.setText("Do you want to continue executing the create script?"); int choice = JOptionPane.showOptionDialog(editor, errorPanel, "SQL Error", JOptionPane.YES_NO_OPTION, JOptionPane.ERROR_MESSAGE, null, new String[] { "Abort", "Continue" }, "Continue"); if (choice != 1) { break; } } } JOptionPane.showMessageDialog(swingSession.getFrame(), "Successfully executed " + successCount + " of " + sqlTextFields.size() + " SQL Statements." + (successCount == 0 ? "\n\nBetter Luck Next Time." : "")); //closes the dialog if all the statement is executed successfully //if not, the dialog remains on the screen if (successCount == sqlTextFields.size()) { editor.dispose(); //start the thread to populate the table. new Thread(new PopulateTableWorker(swingSession, table)).start(); } } catch (SQLException ex) { SPSUtils.showExceptionDialogNoReport(editor, "Create Script Failure", ex); } catch (SQLObjectException ex) { SPSUtils.showExceptionDialogNoReport(editor, "Error Generating Example table", ex); } finally { try { if (stmt != null) { stmt.close(); } } catch (SQLException ex) { logger.warn("Couldn't close statement", ex); } try { if (con != null) { con.close(); } } catch (SQLException ex) { logger.warn("Couldn't close connection", ex); } } } }; Action cancelAction = new AbstractAction("Close") { public void actionPerformed(ActionEvent e) { editor.dispose(); } }; // the gui layout part cp.setLayout(new BorderLayout(10, 10)); cp.setBorder(BorderFactory.createEmptyBorder(10, 10, 10, 10)); cp.add(new JScrollPane(statementsBox), BorderLayout.CENTER); ButtonBarBuilder bbb = ButtonBarBuilder.createLeftToRightBuilder(); bbb.addGridded(new JButton(saveAction)); bbb.addGridded(new JButton(copyAction)); bbb.addGridded(new JButton(executeAction)); bbb.addGridded(new JButton(cancelAction)); cp.add(bbb.getPanel(), BorderLayout.SOUTH); editor.pack(); editor.setLocationRelativeTo(BuildExampleTableDialog.this); editor.setVisible(true); }
From source file:ca.sqlpower.matchmaker.swingui.DeleteFolderDialog.java
License:Open Source License
public void buildUI() { FormLayout layout = new FormLayout("4dlu, pref, 4dlu", "4dlu,pref,4dlu,pref,4dlu, pref,4dlu,pref,4dlu"); //1 2 3 4 5 6 7 8 9 CellConstraints cc = new CellConstraints(); PanelBuilder pb = new PanelBuilder(layout); deleteAll = new JRadioButton("Delete all content"); moveContent = new JRadioButton("Move to:"); // default to move the contents moveContent.setSelected(true);/*w w w.j av a 2s . co m*/ moveTo = new JComboBox(); List<PlFolder> folders = new ArrayList<PlFolder>(); folders.addAll(session.getCurrentFolderParent().getChildren(PlFolder.class)); folders.remove(folder); moveTo.setModel(new DefaultComboBoxModel(folders.toArray())); moveTo.setRenderer(new MatchMakerObjectComboBoxCellRenderer()); okButton = new JButton(okAction); cancelButton = new JButton(cancelAction); group = new ButtonGroup(); group.add(deleteAll); group.add(moveContent); pb.add(deleteAll, cc.xy(2, 2)); pb.add(moveContent, cc.xy(2, 4)); pb.add(moveTo, cc.xy(2, 6)); if (folders.size() == 0) { moveContent.setEnabled(false); moveTo.setEnabled(false); deleteAll.setSelected(true); } pb.add(ButtonBarFactory.buildOKCancelBar(okButton, cancelButton), cc.xy(2, 8)); dialog = new JDialog(parent, "Delete " + folder.getName() + " folder"); pb.setBorder(new EmptyBorder(10, 10, 10, 10)); dialog.setContentPane(pb.getPanel()); }