List of usage examples for com.jgoodies.forms.layout CellConstraints xy
public CellConstraints xy(int col, int row)
Examples:
cc.xy(1, 1); cc.xy(1, 3);
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(); }