Example usage for com.jgoodies.forms.layout CellConstraints CellConstraints

List of usage examples for com.jgoodies.forms.layout CellConstraints CellConstraints

Introduction

In this page you can find the example usage for com.jgoodies.forms.layout CellConstraints CellConstraints.

Prototype

public CellConstraints() 

Source Link

Document

Constructs a default instance of CellConstraints .

Usage

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());

}