List of usage examples for com.jgoodies.forms.layout FormLayout FormLayout
public FormLayout(ColumnSpec[] colSpecs, RowSpec[] rowSpecs)
From source file:ca.sqlpower.architect.swingui.enterprise.RevisionListPanel.java
License:Open Source License
public RevisionListPanel(ArchitectSwingSession swingSession, ArchitectFrame architectFrame, Action closeAction) {//from w w w.ja v a 2 s . com this.dialogOwner = architectFrame; this.swingSession = swingSession; this.session = swingSession.getEnterpriseSession(); DefaultFormBuilder builder = new DefaultFormBuilder( new FormLayout("default:grow, 5dlu, pref", "pref, 2dlu, default:grow")); int currentRevision = session.getUpdater().getRevision(); long from = currentRevision - DEFAULT_REVISION_RANGE; if (from <= 0) from = 1; fromVersion = new JLongField(from); toVersion = new JLongField(currentRevision); revisionsTable = new RevisionsTable(this.session, from, currentRevision); revisionsTable.addMouseListener(new MouseAdapter() { @Override public void mouseClicked(MouseEvent e) { refreshPanel(); } }); CellConstraints cc = new CellConstraints(); builder.add(new JLabel("Revisions:"), cc.xy(1, 1)); builder.add(revisionsTable.getScrollPane(), cc.xy(1, 3)); DefaultFormBuilder textFieldBuilder = new DefaultFormBuilder(new FormLayout("pref, pref")); textFieldBuilder.append(new JLabel("from version "), fromVersion.getField()); textFieldBuilder.append(new JLabel("to version "), toVersion.getField()); DefaultFormBuilder filterBuilder = new DefaultFormBuilder(new FormLayout("pref")); filterBuilder.append(new JLabel("Display revisions ")); filterBuilder.append(textFieldBuilder.getPanel()); autoRefreshBox = new JCheckBox("Auto-refresh", false); autoRefresh = new Runnable() { public void run() { while (autoRefreshBox.isSelected()) { SwingUtilities.invokeLater(new Runnable() { public void run() { refreshAction.actionPerformed(null); } }); try { Thread.sleep(1000); } catch (InterruptedException ex) { autoRefreshBox.setSelected(false); } } } }; autoRefreshBox.addItemListener(new ItemListener() { public void itemStateChanged(ItemEvent e) { if (autoRefreshBox.isSelected()) { new Thread(autoRefresh).start(); } } }); autoRefreshBox.setSelected(true); DefaultFormBuilder buttonBarBuilder = new DefaultFormBuilder(new FormLayout("pref")); buttonBarBuilder.append(filterBuilder.getPanel()); buttonBarBuilder.append(new JLabel("\n")); buttonBarBuilder.append(new JButton(refreshAction)); buttonBarBuilder.append(new JButton(revertAction)); buttonBarBuilder.append(new JButton(openAction)); buttonBarBuilder.append(new JButton(compareAction)); buttonBarBuilder.append(new JButton(closeAction)); buttonBarBuilder.append(autoRefreshBox); builder.add(buttonBarBuilder.getPanel(), cc.xy(3, 3)); builder.setDefaultDialogBorder(); panel = builder.getPanel(); panel.setPreferredSize(new Dimension(700, 500)); refreshPanel(); }
From source file:ca.sqlpower.architect.swingui.enterprise.ServerProjectsManagerPanel.java
License:Open Source License
public ServerProjectsManagerPanel(SPServerInfo serverInfo, ArchitectSwingSession session, ArchitectSessionContext context, Component dialogOwner, Action closeAction) { this.serverInfo = serverInfo; this.dialogOwner = dialogOwner; this.session = session; this.context = context; this.closeAction = closeAction; ArchitectClientSideSession.getCookieStore().clear(); DefaultFormBuilder builder = new DefaultFormBuilder( new FormLayout("pref:grow, 5dlu, pref", "pref, pref, pref")); servers = null;/* ww w .j a v a2 s. c o m*/ projects = new JList(new DefaultListModel()); projects.addMouseListener(new MouseAdapter() { @Override public void mouseReleased(MouseEvent e) { refreshPanel(); if (e.getClickCount() == 2 && SwingUtilities.isLeftMouseButton(e)) { openAction.actionPerformed(null); } } }); JScrollPane projectsPane = new JScrollPane(projects); projectsPane.setPreferredSize(new Dimension(250, 300)); JButton securityButton = new JButton(openSecurityManagerPanelAction); refreshInfoList(); CellConstraints cc = new CellConstraints(); builder.add(new JLabel(serverInfo.getName() + "'s projects:"), cc.xyw(1, 1, 2)); builder.nextLine(); builder.add(projectsPane, cc.xywh(1, 2, 1, 2)); DefaultFormBuilder buttonBarBuilder = new DefaultFormBuilder(new FormLayout("pref")); buttonBarBuilder.append(new JButton(refreshAction)); buttonBarBuilder.append(securityButton); buttonBarBuilder.append(new JButton(newAction)); buttonBarBuilder.append(new JButton(openAction)); buttonBarBuilder.append(new JButton(deleteAction)); buttonBarBuilder.append(new JButton(closeAction)); builder.add(buttonBarBuilder.getPanel(), cc.xy(3, 2)); builder.setDefaultDialogBorder(); panel = builder.getPanel(); }
From source file:ca.sqlpower.architect.swingui.enterprise.ServerProjectsManagerPanel.java
License:Open Source License
public ServerProjectsManagerPanel(ArchitectSwingSession session, ArchitectSessionContext context, Component dialogOwner, Action closeAction) { this.session = session; this.dialogOwner = dialogOwner; this.context = context; this.closeAction = closeAction; ArchitectClientSideSession.getCookieStore().clear(); DefaultFormBuilder builder = new DefaultFormBuilder( new FormLayout("pref:grow, 5dlu, pref:grow, 5dlu, pref", "pref, pref, pref")); servers = new JList(new DefaultListModel()); servers.addMouseListener(new MouseAdapter() { @Override//from ww w . j a va2 s . c om public void mouseReleased(MouseEvent e) { if (SwingUtilities.isLeftMouseButton(e)) { refreshInfoList(); } } }); DefaultListModel serversModel = (DefaultListModel) servers.getModel(); serversModel.removeAllElements(); if (context.getServerManager().getServers(false).size() > 0) { for (SPServerInfo serverInfo : context.getServerManager().getServers(false)) { serversModel.addElement(serverInfo); } } else { serversModel.addElement("No Servers"); servers.setEnabled(false); } projects = new JList(new DefaultListModel()); projects.addMouseListener(new MouseAdapter() { @Override public void mouseReleased(MouseEvent e) { refreshPanel(); if (e.getClickCount() == 2 && SwingUtilities.isLeftMouseButton(e)) { openAction.actionPerformed(null); } } }); JScrollPane projectsPane = new JScrollPane(projects); projectsPane.setPreferredSize(new Dimension(250, 300)); JScrollPane serverPane = new JScrollPane(servers); serverPane.setPreferredSize(new Dimension(250, 300)); JButton securityButton = new JButton(openSecurityManagerPanelAction); refreshInfoList(); CellConstraints cc = new CellConstraints(); builder.add(new JLabel("Servers:"), cc.xyw(1, 1, 2)); builder.add(new JLabel("Projects:"), cc.xyw(3, 1, 2)); builder.nextLine(); builder.add(serverPane, cc.xywh(1, 2, 1, 2)); builder.add(projectsPane, cc.xywh(3, 2, 1, 2)); DefaultFormBuilder buttonBarBuilder = new DefaultFormBuilder(new FormLayout("pref")); buttonBarBuilder.append(new JButton(refreshAction)); buttonBarBuilder.append(securityButton); buttonBarBuilder.append(new JButton(newAction)); buttonBarBuilder.append(new JButton(openAction)); buttonBarBuilder.append(new JButton(uploadAction)); buttonBarBuilder.append(new JButton(deleteAction)); buttonBarBuilder.append(new JButton(closeAction)); builder.add(buttonBarBuilder.getPanel(), cc.xy(5, 2)); builder.setDefaultDialogBorder(); panel = builder.getPanel(); }
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// ww w . ja v a 2s . co 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
public IndexEditPanel(SQLIndex index, SQLTable parent, ArchitectSwingSession session) throws SQLObjectException { panel = new JPanel(new FormLayout("pref,4dlu,pref,4dlu,pref:grow,4dlu,pref", //$NON-NLS-1$ "pref,4dlu,pref,4dlu,pref,4dlu,pref,4dlu,pref,4dlu,pref,4dlu,pref:grow,4dlu,pref,4dlu")); //$NON-NLS-1$ this.session = session; SQLPowerUtils.listenToHierarchy(index, this); createGUI(index, parent, session);//from w w w . j a va2 s . co m }
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 w w w .j av a2s .c om*/ 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.CalculatedMemberEditPanel.java
License:Open Source License
public CalculatedMemberEditPanel(CalculatedMember model) { this.calculatedMember = model; FormLayout layout = new FormLayout("left:max(40dlu;pref), 3dlu, 150dlu:grow", ""); DefaultFormBuilder builder = new DefaultFormBuilder(layout); builder.setDefaultDialogBorder();//from w w w. ja va 2s .c o m builder.append("Name", nameField = new JTextField(model.getName())); builder.append("Caption", captionField = new JTextField(model.getCaption())); builder.append("Dimension", dimensionField = new JTextField(model.getDimension())); builder.append("Visible", visibleCheckBox = new JCheckBox("", model.getVisible() == null ? true : model.getVisible())); String formula = null; if (model.getFormula() != null) { formula = model.getFormula(); } else if (model.getFormulaElement() != null) { formula = model.getFormulaElement().getText(); } builder.append("Formula", formulaTextArea = new JTextArea(formula, 4, 50)); formulaTextArea.setLineWrap(true); builder.append("Format", formatField = new JTextField(model.getFormatString())); panel = builder.getPanel(); }
From source file:ca.sqlpower.architect.swingui.olap.CubeEditPanel.java
License:Open Source License
/** * Creates a new property editor for the given OLAP Cube. * /*from w w w . jav a 2 s .com*/ * TODO remove the dbMapping if it is no longer needed as the session will * be used from the playpen or remove the session from the view and join * entry panel constructors and pass a dbMapping as required instead. * * @param cube * The data model of the cube to edit */ public CubeEditPanel(Cube cube, final PlayPen playPen, final SQLDatabaseMapping dbMapping) throws SQLObjectException { this.cube = cube; List<SQLTable> tables = OLAPUtil.getAvailableTables(cube); FormLayout layout = new FormLayout("left:max(40dlu;pref), 3dlu, 80dlu:grow", ""); DefaultFormBuilder builder = new DefaultFormBuilder(layout); builder.setDefaultDialogBorder(); builder.append(status, 3); builder.append("Name", nameField = new JTextField(cube.getName())); builder.append("Caption", captionField = new JTextField(cube.getCaption())); // default measure is optional so we need to add in a null option List<Measure> measures = new ArrayList<Measure>(cube.getMeasures()); measures.add(0, null); builder.append("Default Measure", defMeasure = new JComboBox(measures.toArray())); defMeasure.setRenderer(new OLAPObjectListCellRenderer()); for (Measure ms : cube.getMeasures()) { if (ms.getName().equals(cube.getDefaultMeasure())) { defMeasure.setSelectedItem(ms); break; } } final JButton viewEditButton = new JButton(new AbstractAction("Edit...") { public void actionPerformed(ActionEvent e) { JDialog dialog = DataEntryPanelBuilder.createDataEntryPanelDialog( new ViewEntryPanel(playPen.getSession(), getDatabase(), CubeEditPanel.this), playPen, "View Builder", DataEntryPanelBuilder.OK_BUTTON_LABEL); dialog.pack(); dialog.setVisible(true); } }); builder.appendSeparator("Fact Table"); tableChooser = new JComboBox(new Vector<SQLTable>(tables)); final JScrollPane selectStatementsPane = new JScrollPane(selectStatements = new JTextArea("", 4, 30)); Action radioButtonsAction = new AbstractAction() { public void actionPerformed(ActionEvent arg0) { tableChooser.setEnabled(tableRadioButton.isSelected()); selectStatementsPane.setEnabled(viewRadioButton.isSelected()); viewAlias.setEnabled(viewRadioButton.isSelected()); viewEditButton.setEnabled(viewRadioButton.isSelected()); } }; tableRadioButton = new JRadioButton(); tableRadioButton.setAction(radioButtonsAction); tableRadioButton.setText("Use Existing Table"); viewRadioButton = new JRadioButton(); viewRadioButton.setAction(radioButtonsAction); viewRadioButton.setText("Use View"); ButtonGroup buttonGroup = new ButtonGroup(); buttonGroup.add(tableRadioButton); buttonGroup.add(viewRadioButton); DefaultFormBuilder factBuilder = new DefaultFormBuilder( new FormLayout("9dlu, 3dlu, pref, 3dlu, pref:grow")); builder.append(factBuilder.getPanel(), 3); factBuilder.append(tableRadioButton, 5); factBuilder.append("", tableChooser, 3); factBuilder.append(viewRadioButton, 5); factBuilder.append("", new JLabel("Alias"), viewAlias = new JTextField()); factBuilder.append("", new JLabel("SELECT Statements"), 3); factBuilder.append("", selectStatementsPane, 3); factBuilder.append("", viewEditButton); factBuilder.nextLine(); selectStatements.setLineWrap(true); selectStatements.setEditable(false); if (cube.getFact() instanceof View) { viewRadioButton.doClick(); tableRadioButton.setEnabled(false); tableChooser.setEnabled(false); //XXX There could be multiple SQL objects in a view but we can only edit one at a time right now. final List<SQL> selects = ((View) cube.getFact()).getSelects(); for (SQL sql : selects) { if (sql.getDialect() == null || sql.getDialect().equals("generic")) { selectStatements.append(sql.getText()); break; } } if (selectStatements.getText().trim().length() == 0 && !selects.isEmpty()) { selectStatements.append(selects.get(0).getText()); } } else if (tables.isEmpty()) { tableChooser.addItem("Database has no tables"); viewRadioButton.doClick(); tableRadioButton.setEnabled(false); tableChooser.setEnabled(false); } else { SQLTable t = OLAPUtil.tableForCube(cube); //if SQLTable t is not found, then either cube.fact is not defined, or cube.fact is a view if (tables.contains(t)) { tableChooser.setSelectedItem(t); tableRadioButton.doClick(); } else if (cube.getFact() != null) { viewRadioButton.doClick(); } else { tableRadioButton.doClick(); } } panel = builder.getPanel(); handler = new FormValidationHandler(status); Validator validator = new OLAPObjectNameValidator((OLAPObject) cube.getParent(), cube, false); handler.addValidateObject(nameField, validator); }
From source file:ca.sqlpower.architect.swingui.olap.DimensionEditPanel.java
License:Open Source License
/** * Creates a new property editor for the given OLAP dimension. * //w ww . j av a 2s.co m * @param dimension The dimension to edit * @throws SQLObjectException * if digging up the source table results in a database error */ public DimensionEditPanel(Dimension dimension) throws SQLObjectException { this.dimension = dimension; FormLayout layout = new FormLayout("left:max(40dlu;pref), 3dlu, 80dlu:grow", ""); DefaultFormBuilder builder = new DefaultFormBuilder(layout); builder.setDefaultDialogBorder(); builder.append(status, 3); builder.append("Name", nameField = new JTextField(dimension.getName())); builder.append("Caption", captionField = new JTextField(dimension.getCaption())); builder.append("Type", typeBox = new JComboBox(DimensionType.values())); if (dimension.getType() != null) { typeBox.setSelectedItem(DimensionType.valueOf(dimension.getType())); } else { typeBox.setSelectedItem(DimensionType.StandardDimension); } handler = new FormValidationHandler(status, true); Validator validator = new OLAPObjectNameValidator((OLAPObject) dimension.getParent(), dimension, false); handler.addValidateObject(nameField, validator); // private dimensions only. if (dimension.getParent() instanceof Cube) { builder.append("Foreign Key", foreignKeyChooser = new JComboBox()); handler.addValidateObject(foreignKeyChooser, new NotNullValidator("Foreign key")); Cube cube = (Cube) dimension.getParent(); SQLTable factTable = OLAPUtil.tableForCube(cube); if (factTable == null) { foreignKeyChooser.addItem("Parent Cube has no fact table"); foreignKeyChooser.setEnabled(false); } else if (factTable.getColumns().isEmpty()) { foreignKeyChooser.addItem("Parent Cube Fact table has no columns"); foreignKeyChooser.setEnabled(false); } else { foreignKeyChooser.setModel(new SQLObjectComboBoxModel(factTable, SQLColumn.class)); for (SQLColumn col : factTable.getColumns()) { if (col.getName().equals(dimension.getForeignKey())) { foreignKeyChooser.setSelectedItem(col); } } } } panel = builder.getPanel(); }
From source file:ca.sqlpower.architect.swingui.olap.DimensionUsageEditPanel.java
License:Open Source License
/** * Creates a new property editor for the given dimension usage. * /* www . j a v a2 s . co m*/ * @param dimensionUsage * usage The data model of the dimension usage to edit * @throws SQLObjectException * if digging up the source table results in a database error */ public DimensionUsageEditPanel(DimensionUsage dimensionUsage) throws SQLObjectException { this.dimensionUsage = dimensionUsage; FormLayout layout = new FormLayout("left:max(40dlu;pref), 3dlu, 80dlu:grow", ""); DefaultFormBuilder builder = new DefaultFormBuilder(layout); builder.setDefaultDialogBorder(); builder.append(status, 3); builder.append("Caption", captionField = new JTextField(dimensionUsage.getCaption())); builder.append("Foreign Key", foreignKeyChooser = new JComboBox()); Cube cube = (Cube) dimensionUsage.getParent(); SQLTable factTable = OLAPUtil.tableForCube(cube); if (factTable == null) { foreignKeyChooser.addItem("Parent Cube has no fact table"); foreignKeyChooser.setEnabled(false); } else if (factTable.getColumns().isEmpty()) { foreignKeyChooser.addItem("Parent Cube Fact table has no columns"); foreignKeyChooser.setEnabled(false); } else { foreignKeyChooser.setModel(new SQLObjectComboBoxModel(factTable, SQLColumn.class)); for (SQLColumn col : factTable.getColumns()) { if (col.getName().equals(dimensionUsage.getForeignKey())) { foreignKeyChooser.setSelectedItem(col); } } } handler = new FormValidationHandler(status, true); handler.addValidateObject(foreignKeyChooser, new NotNullValidator("Foreign key")); panel = builder.getPanel(); }