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

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

Introduction

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

Prototype

public CellConstraints xy(int col, int row) 

Source Link

Document

Sets column and row origins; sets width and height to 1; uses the default alignments.

Examples:

 cc.xy(1, 1); cc.xy(1, 3); 

Usage

From source file:ca.sqlpower.architect.swingui.enterprise.UserEditorPanel.java

License:Open Source License

public UserEditorPanel(User baseUser, String username, Action closeAction, final ArchitectSession session) {
    this.user = baseUser;
    this.session = session;
    this.securityWorkspace = (ArchitectSwingProject) user.getParent();
    this.username = username;
    this.closeAction = closeAction;

    final Dimension prefScrollPaneDimension = new Dimension(250, 300);

    usernameLabel = new JLabel("User Name");
    usernameField = new JTextField();
    usernameField.setText(user.getUsername());
    usernameField.getDocument().addDocumentListener(textFieldListener);

    fullnameLabel = new JLabel("Full Name");
    fullnameField = new JTextField();
    fullnameField.setText(user.getFullName());
    fullnameField.getDocument().addDocumentListener(textFieldListener);

    emailLabel = new JLabel("Email");
    emailField = new JTextField();
    emailField.setText(user.getEmail());
    emailField.getDocument().addDocumentListener(textFieldListener);

    ListCellRenderer groupListCellRenderer = new DefaultListCellRenderer() {
        @Override/*www  . j av a  2 s  .  c o  m*/
        public Component getListCellRendererComponent(JList list, Object value, int index, boolean isSelected,
                boolean cellHasFocus) {
            super.getListCellRendererComponent(list, value, index, isSelected, cellHasFocus);
            setIcon(GROUP_ICON);
            return this;
        }
    };

    availableGroupsLabel = new JLabel("Available Groups");
    availableGroupsList = new JList(new DefaultListModel());
    availableGroupsList.setCellRenderer(groupListCellRenderer);
    availableGroupsScrollPane = new JScrollPane(availableGroupsList);
    availableGroupsScrollPane.setPreferredSize(prefScrollPaneDimension);

    currentGroupsLabel = new JLabel("Current Groups");
    currentGroupsList = new JList(new DefaultListModel());
    currentGroupsList.setCellRenderer(groupListCellRenderer);
    currentGroupsScrollPane = new JScrollPane(currentGroupsList);
    currentGroupsScrollPane.setPreferredSize(prefScrollPaneDimension);

    Grant globalGrant = null;
    for (Grant grant : user.getChildren(Grant.class)) {
        if (grant.isSystemLevel() && grant.getType().equals(ArchitectSwingProject.class.getName())) {
            if (globalGrant != null) {
                throw new IllegalStateException("Multiple grants for Architect Project found");
            }

            globalGrant = grant;
        }
    }

    if (globalGrant != null) {
        privilegesEditorPanel = new PrivilegesEditorPanel(globalGrant, user, null,
                ArchitectSwingProject.class.getName(), username, securityWorkspace);
    } else {
        privilegesEditorPanel = new PrivilegesEditorPanel(null, user, null,
                ArchitectSwingProject.class.getName(), username, securityWorkspace);
    }

    JButton addButton = new JButton(addAction);
    addButton.setIcon(RIGHT_ARROW);
    JButton removeButton = new JButton(removeAction);
    removeButton.setIcon(LEFT_ARROW);

    CellConstraints cc = new CellConstraints();
    DefaultFormBuilder upperPanelBuilder = new DefaultFormBuilder(
            new FormLayout("pref, 5dlu, pref:grow", "pref, pref, pref, pref, pref, 5dlu"));
    upperPanelBuilder.add(usernameLabel, cc.xy(1, 1));
    upperPanelBuilder.add(usernameField, cc.xyw(3, 1, 1));
    upperPanelBuilder.add(fullnameLabel, cc.xy(1, 3));
    upperPanelBuilder.add(fullnameField, cc.xyw(3, 3, 1));
    upperPanelBuilder.add(emailLabel, cc.xy(1, 4));
    upperPanelBuilder.add(emailField, cc.xy(3, 4));

    passwordButton = new JButton(changePasswordAction);

    ButtonBarBuilder2 passwordBuilder = ButtonBarBuilder2.createLeftToRightBuilder();
    passwordBuilder.addGlue();
    passwordBuilder.addButton(passwordButton);

    DefaultFormBuilder buttonPanelBuilder = new DefaultFormBuilder(
            new FormLayout("pref", "pref:grow, pref, 5dlu, pref, pref:grow"));
    buttonPanelBuilder.add(addButton, cc.xy(1, 2));
    buttonPanelBuilder.add(removeButton, cc.xy(1, 5));

    DefaultFormBuilder centrePanelBuilder = new DefaultFormBuilder(
            new FormLayout("pref, 5dlu, pref, 5dlu, pref", "pref, pref:grow"));
    centrePanelBuilder.add(availableGroupsLabel, cc.xy(1, 1));
    centrePanelBuilder.add(currentGroupsLabel, cc.xy(5, 1));
    centrePanelBuilder.add(availableGroupsScrollPane, cc.xy(1, 2));
    centrePanelBuilder.add(buttonPanelBuilder.getPanel(), cc.xy(3, 2));
    centrePanelBuilder.add(currentGroupsScrollPane, cc.xy(5, 2));

    DefaultFormBuilder builder = new DefaultFormBuilder(
            new FormLayout("pref:grow", "pref, pref, 3dlu, pref:grow, 5dlu, pref"));
    builder.add(upperPanelBuilder.getPanel(), cc.xy(1, 1));
    builder.add(passwordBuilder.getPanel(), cc.xy(1, 2));
    builder.add(centrePanelBuilder.getPanel(), cc.xy(1, 4));

    DefaultFormBuilder bottomBuilder = new DefaultFormBuilder(
            new FormLayout("pref:grow, 5dlu, pref:grow", "pref, 3dlu, pref"));
    bottomBuilder.add(new JLabel("System Privileges"), cc.xy(1, 1));
    bottomBuilder.add(privilegesEditorPanel.getPanel(), cc.xy(1, 3));

    ButtonBarBuilder2 bbb = ButtonBarBuilder2.createLeftToRightBuilder();
    bbb.addGlue();
    bbb.addButton(new JButton(okAction));
    bbb.addRelatedGap();
    bbb.addButton(new JButton(cancelAction));

    bottomBuilder.add(bbb.getPanel(), cc.xy(3, 3));
    builder.add(bottomBuilder.getPanel(), cc.xy(1, 6));
    builder.setDefaultDialogBorder();

    panel = builder.getPanel();

    fillGroupLists();
    disableIfNecessary();
}

From source file:ca.sqlpower.architect.swingui.IndexEditPanel.java

License:Open Source License

private void createGUI(SQLIndex index, SQLTable parent, ArchitectSwingSession session)
        throws SQLObjectException {
    this.parent = parent;
    PanelBuilder pb = new PanelBuilder((FormLayout) panel.getLayout(), panel);
    CellConstraints cc = new CellConstraints();
    pb.add(new JLabel(Messages.getString("IndexEditPanel.indexName")), cc.xy(1, 1)); //$NON-NLS-1$
    pb.add(name = new JTextField("", 30), cc.xyw(3, 1, 4)); //$NON-NLS-1$
    unique = new JCheckBox(Messages.getString("IndexEditPanel.uniqueIndex")); //$NON-NLS-1$
    pb.add(unique, cc.xy(3, 3));/*from www  . j  a v  a  2 s .  c  o  m*/
    primaryKey = new JCheckBox(Messages.getString("IndexEditPanel.primaryKeyIndex")); //$NON-NLS-1$
    pb.add(primaryKey, cc.xy(3, 5));
    clustered = new JCheckBox(Messages.getString("IndexEditPanel.clusteredIndex")); //$NON-NLS-1$
    clustered.setSelected(index.isClustered());
    pb.add(clustered, cc.xy(3, 7));
    pb.add(new JLabel(Messages.getString("IndexEditPanel.indexType")), cc.xy(1, 9)); //$NON-NLS-1$

    indexType = new JComboBox();
    //add the platform default type
    indexType.addItem(DEFAULT_INDEX_TYPE);
    for (String type : getIndexTypes()) {
        indexType.addItem(type);
    }
    pb.add(indexType, cc.xyw(3, 9, 4));

    editIndex(index);
    columnsTable = new IndexColumnTable(parent, indexCopy, index);

    pb.add(new JScrollPane(columnsTable.getTable()), cc.xyw(1, 13, 6));

    // we want the buttons at their natural sizes, and the buttonbarbuilder wasn't doing that
    JPanel upDownPanel = new JPanel(new FlowLayout(FlowLayout.LEFT));
    upDownPanel.add(new JButton(new AbstractAction(null, SPSUtils.createIcon("chevrons_up1", null)) { //$NON-NLS-1$

        public void actionPerformed(ActionEvent e) {
            columnsTable.moveRow(true);
        }

    }));
    upDownPanel.add(new JButton(new AbstractAction(null, SPSUtils.createIcon("chevrons_down1", null)) { //$NON-NLS-1$
        public void actionPerformed(ActionEvent e) {
            columnsTable.moveRow(false);
        }
    }));

    pb.add(upDownPanel, cc.xyw(1, 15, 6));
    loadIndexIntoPanel();
}

From source file:ca.sqlpower.architect.swingui.KettleDataSourceTypeOptionPanel.java

License:Open Source License

public KettleDataSourceTypeOptionPanel() {
    PanelBuilder pb = new PanelBuilder(new FormLayout("4dlu,pref,4dlu,pref:grow,4dlu",
            "4dlu,pref,4dlu,pref,4dlu,pref,4dlu,pref,4dlu,pref,4dlu"));

    CellConstraints cc = new CellConstraints();
    CellConstraints cl = new CellConstraints();
    int row = 2;/*from   ww  w  . j a v a2 s.  c  o m*/
    pb.addLabel("Kettle Connection Type", cl.xy(2, row), kettleConnectionType, cc.xy(4, row));
    List<String> dbConnectionNames = KettleUtils.retrieveKettleConnectionTypes();
    for (String dbConnectionName : dbConnectionNames) {
        kettleConnectionType.addItem(dbConnectionName);
    }
    kettleConnectionType.setSelectedIndex(-1);

    panel = pb.getPanel();
}

From source file:ca.sqlpower.architect.swingui.olap.OLAPSchemaManager.java

License:Open Source License

private JPanel createPanel() {
    FormLayout layout = new FormLayout("6dlu, fill:min(160dlu;default):grow, 6dlu, pref, 6dlu", // columns //$NON-NLS-1$
            " 6dlu,10dlu,6dlu,fill:min(180dlu;default):grow,10dlu"); // rows //$NON-NLS-1$

    layout.setColumnGroups(new int[][] { { 1, 3, 5 } });
    CellConstraints cc = new CellConstraints();

    PanelBuilder pb;//from  w  w  w . j ava2 s  .  co m
    JPanel p = logger.isDebugEnabled() ? new FormDebugPanel(layout) : new JPanel(layout);
    pb = new PanelBuilder(layout, p);
    pb.setDefaultDialogBorder();

    pb.add(new JLabel("Available OLAP Schemas"), cc.xy(2, 2)); //$NON-NLS-1$

    TableModel tm = new SchemaTableModel(session.getOLAPRootObject());
    osessionTable = new JTable(tm);
    osessionTable.setTableHeader(null);
    osessionTable.setShowGrid(false);
    osessionTable.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
    osessionTable.addMouseListener(new MouseAdapter() {
        public void mouseClicked(MouseEvent evt) {
            boolean enableActions = getSelectedOSession() != null;
            removeOLAPSchemaAction.setEnabled(enableActions);
            editOLAPSchemaAction.setEnabled(enableActions);
            exportSchemaAction.setEnabled(enableActions);

            if (evt.getClickCount() == 2) {
                editOLAPSchemaAction.actionPerformed(null);
            }
        }
    });

    JScrollPane sp = new JScrollPane(osessionTable);

    pb.add(sp, cc.xy(2, 4));

    ButtonStackBuilder bsb = new ButtonStackBuilder();

    JButton newOLAPSchemaButton = new JButton(new OLAPEditAction(session, null));
    newOLAPSchemaButton.setText("New...");
    bsb.addGridded(newOLAPSchemaButton);
    bsb.addRelatedGap();

    JButton importOLAPSchemaButton = new JButton(new ImportSchemaAction(session));
    importOLAPSchemaButton.setText("Import...");
    bsb.addGridded(importOLAPSchemaButton);
    bsb.addGridded(new JButton(exportSchemaAction));
    bsb.addRelatedGap();

    bsb.addGridded(new JButton(editOLAPSchemaAction));
    bsb.addRelatedGap();
    bsb.addGridded(new JButton(removeOLAPSchemaAction));

    removeOLAPSchemaAction.setEnabled(false);
    editOLAPSchemaAction.setEnabled(false);
    exportSchemaAction.setEnabled(false);

    bsb.addUnrelatedGap();
    bsb.addGridded(new JButton(closeAction));

    pb.add(bsb.getPanel(), cc.xy(4, 4));
    return pb.getPanel();

}

From source file:ca.sqlpower.architect.swingui.ProfileGraphPanel.java

License:Open Source License

public ProfileGraphPanel(ProfilePanel panel, int rowCount) {
    this.profilePanel = panel;
    this.rowCount = rowCount;

    FormLayout displayLayout = new FormLayout("4dlu, default, 4dlu, 100dlu, 4dlu, fill:default:grow, 4dlu", // columns
            "4dlu, default, 6dlu"); // rows
    CellConstraints cc = new CellConstraints();

    validResultsPanel = ProfileGraphPanel.logger.isDebugEnabled() ? new FormDebugPanel(displayLayout)
            : new JPanel(displayLayout);
    validResultsPanel.setBorder(BorderFactory.createEtchedBorder());

    Font bodyFont = validResultsPanel.getFont();
    Font titleFont = bodyFont.deriveFont(Font.BOLD, bodyFont.getSize() * 1.25F);

    title = new JLabel("Column Name");
    title.setFont(titleFont);//from   w w w  .  ja v  a2  s .co m

    PanelBuilder pb = new PanelBuilder(displayLayout, validResultsPanel);
    pb.add(title, cc.xyw(2, 2, 5));

    int row = 4;
    rowCountDisplay = makeInfoRow(pb, "RowCount", row);
    row += 2;
    nullableLabel = makeInfoRow(pb, "Nullable", row);
    row += 2;
    nullCountLabel = makeInfoRow(pb, "Null Count", row);
    row += 2;
    nullPercentLabel = makeInfoRow(pb, "% Null Records", row);
    row += 2;
    minLengthLabel = makeInfoRow(pb, "Minimum Length", row);
    row += 2;
    maxLengthLabel = makeInfoRow(pb, "Maximum Length", row);
    row += 2;
    uniqueCountLabel = makeInfoRow(pb, "Unique Values", row);
    row += 2;
    uniquePercentLabel = makeInfoRow(pb, "% Unique", row);
    row += 2;
    minValue = makeInfoRow(pb, "Minimum Value", row);
    row += 2;
    maxValue = makeInfoRow(pb, "Maximum Value", row);
    row += 2;
    avgValue = makeInfoRow(pb, "Average Value", row);
    row += 2;

    freqValueTable = new FreqValueTable(null);
    freqValueSp = new JScrollPane(freqValueTable);

    pb.appendRow("fill:10dlu:grow");
    pb.appendRow("fill:default:grow");
    pb.add(freqValueSp, cc.xyw(2, row + 1, 3));

    // Now add something to represent the chart
    JFreeChart createPieChart = ChartFactory.createPieChart("", new DefaultPieDataset(new DefaultKeyedValues()),
            false, false, false);
    chartPanel = new ChartPanel(createPieChart);
    chartPanel.setPreferredSize(new Dimension(300, 300));

    if (panel.getProfileManager().getWorkspaceContainer() instanceof ArchitectSession
            && ((ArchitectSession) panel.getProfileManager().getWorkspaceContainer()).isEnterpriseSession()) {
        pb.add(new JLabel("Column Profile Notes"), cc.xy(6, 2));
        notesField = new JTextArea();
        notesField.setLineWrap(true);
        notesField.setWrapStyleWord(true);
        JScrollPane notesScroll = new JScrollPane(notesField);
        notesScroll.setHorizontalScrollBarPolicy(ScrollPaneConstants.HORIZONTAL_SCROLLBAR_NEVER);
        notesScroll.setVerticalScrollBarPolicy(JScrollPane.VERTICAL_SCROLLBAR_ALWAYS);
        pb.add(notesScroll, cc.xywh(6, 4, 1, row - 4));

        pb.appendRow("fill:4dlu:grow");
        pb.appendRow("4dlu");

        pb.add(chartPanel, cc.xy(6, row + 1));
    } else {
        pb.appendRow("fill:4dlu:grow");
        pb.appendRow("4dlu");
        pb.add(chartPanel, cc.xywh(6, 4, 1, row - 2));
    }

    invalidResultsPanel = new JPanel(new BorderLayout());
    invalidResultsLabel = new JLabel("No error message yet");
    invalidResultsPanel.add(invalidResultsLabel);

    displayArea = new JPanel(new GridLayout(1, 1));
    displayArea.setPreferredSize(validResultsPanel.getPreferredSize());
}

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.j  av  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);/*  w w  w  .  j  a  va  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.
 *///from  www  .  j a  va  2s  . co m
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 {//from   w w  w .  j  a v  a 2 s  .c o m
            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.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   ww  w. ja v  a 2 s  . co  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();
}