List of usage examples for com.jgoodies.forms.layout FormLayout FormLayout
public FormLayout(ColumnSpec[] colSpecs, RowSpec[] rowSpecs)
From source file:ca.sqlpower.architect.swingui.olap.HierarchyEditPanel.java
License:Open Source License
/** * Creates a new property editor for the given OLAP Hierarchy. * /* w ww. j av a2 s . c o m*/ * @param cube The data model of the hierarchy to edit */ public HierarchyEditPanel(Hierarchy hierarchy) throws SQLObjectException { this.hierarchy = hierarchy; List<SQLTable> tables = OLAPUtil.getAvailableTables(hierarchy); 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", name = new JTextField(hierarchy.getName())); builder.append("Caption", captionField = new JTextField(hierarchy.getCaption())); builder.append("Has All", hasAll = new JCheckBox()); hasAll.setSelected(hierarchy.getHasAll() != null ? hierarchy.getHasAll() : true); builder.append("All Level Name", allLevelName = new JTextField( hierarchy.getAllLevelName() != null ? hierarchy.getAllLevelName() : "All")); builder.append("Table", tableChooser = new JComboBox(new Vector<SQLTable>(tables))); builder.append("Primary Key", primaryKey = new JComboBox()); if (tables.isEmpty()) { tableChooser.addItem("Database has no tables"); tableChooser.setEnabled(false); primaryKey.addItem("Table not selected"); primaryKey.setEnabled(false); } else { SQLTable t = OLAPUtil.tableForHierarchy(hierarchy); if (tables.contains(t)) { tableChooser.setSelectedItem(t); } else { t = (SQLTable) tableChooser.getSelectedItem(); } updateColumns(hierarchy.getPrimaryKey()); } tableChooser.addItemListener(new ItemListener() { public void itemStateChanged(ItemEvent e) { updateColumns(null); } }); handler = new FormValidationHandler(status, true); Validator validator = new OLAPObjectNameValidator((OLAPObject) hierarchy.getParent(), hierarchy, true); handler.addValidateObject(name, validator); handler.addValidateObject(primaryKey, new NotNullValidator("Primary key")); panel = builder.getPanel(); }
From source file:ca.sqlpower.architect.swingui.olap.JoinEntryPanel.java
License:Open Source License
private void buildUI() { DefaultFormBuilder builder = new DefaultFormBuilder( new FormLayout("fill:max(500dlu;pref):grow", "pref, fill:max(300dlu;pref):grow"), panel); JToolBar toolbar = new JToolBar(); toolbar.add(pen.getDeleteButton());/*from w w w.j a v a 2 s . com*/ toolbar.add(pen.getCreateJoinButton()); toolbar.addSeparator(); toolbar.add(pen.getZoomSliderContainer()); builder.append(toolbar); builder.nextLine(); JSplitPane splitPane = new JSplitPane(JSplitPane.HORIZONTAL_SPLIT); splitPane.add(pen.getScrollPane(), JSplitPane.LEFT); SQLObjectRoot root = new SQLObjectRoot(); TreeModel treeModel; DBTree tree; try { root.addChild(db); tree = new DBTree(session); treeModel = new DBTreeModel(root, tree); } catch (SQLObjectException e) { throw new RuntimeException(e); } tree.setModel(treeModel); tree.setPopupMenuEnabled(false); JPanel treePanel = new JPanel(new BorderLayout()); treePanel.add(new JLabel(db.getName()), BorderLayout.NORTH); treePanel.add(new JScrollPane(tree)); splitPane.add(treePanel, JSplitPane.RIGHT); splitPane.setResizeWeight(0.95); builder.append(splitPane); }
From source file:ca.sqlpower.architect.swingui.olap.LevelEditPanel.java
License:Open Source License
/** * Creates a new property editor for the given level of a hierarchy. * /*from www . ja v a 2s . c o m*/ * @param cube * The data model of the Level to edit * @throws SQLObjectException * if digging up the source table results in a database error */ public LevelEditPanel(Level level) throws SQLObjectException { this.level = level; 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", name = new JTextField(level.getName())); builder.append("Caption", captionField = new JTextField(level.getCaption())); builder.append("Column", columnChooser = new JComboBox()); if (level.getUniqueMembers() != null) { builder.append("Unique Members", uniqueMembers = new JCheckBox("", level.getUniqueMembers())); } else { builder.append("Unique Members", uniqueMembers = new JCheckBox("")); } Hierarchy hierarchy = (Hierarchy) level.getParent(); Dimension dimension = (Dimension) hierarchy.getParent(); // Currently, the levelType attribute appears to only apply to Time Dimensions if (dimension.getType() != null && dimension.getType().equals("TimeDimension")) { builder.append("Level Type", levelType = new JComboBox(LevelType.values())); if (level.getLevelType() != null) { levelType.setSelectedItem(LevelType.valueOf(level.getLevelType())); } else { levelType.setSelectedItem(LevelType.values()[0]); } } SQLTable dimensionTable = OLAPUtil.tableForHierarchy(hierarchy); // if the hierarchy's table was not set, then we try to find it from elsewhere. // we'll look through the cubes that reference the hierarchy's parent dimension // and if the fact table and foreign keys of those are same through out, we set // those values for the hierarchy. if (dimensionTable == null) { OLAPSession oSession = OLAPUtil.getSession(level); Schema sch = oSession.getSchema(); String parentDimName = hierarchy.getParent().getName(); boolean valid = true; Table fact = null; String foreignKey = null; for (int i = 0; i < sch.getCubes().size() && valid; i++) { Cube c = sch.getCubes().get(i); if (c.getFact() == null) continue; for (CubeDimension cd : c.getDimensions()) { if (cd instanceof DimensionUsage) { DimensionUsage du = (DimensionUsage) cd; if (du.getSource().equalsIgnoreCase(parentDimName)) { Table rel = (Table) c.getFact(); String fk = du.getForeignKey(); if (fk != null) { if (fact == null && foreignKey == null) { fact = rel; foreignKey = fk; } else { if (!fact.getSchema().equalsIgnoreCase(rel.getSchema()) || !fact.getName().equalsIgnoreCase(rel.getName()) || !foreignKey.equalsIgnoreCase(fk)) { valid = false; } } } break; } } } } if (valid && fact != null && foreignKey != null) { dimensionTable = OLAPUtil.getSQLTableFromOLAPTable(oSession.getDatabase(), fact); Table tab = new Table(); tab.setSchema(fact.getSchema()); tab.setName(fact.getName()); hierarchy.setRelation(tab); hierarchy.setPrimaryKey(foreignKey); } } if (dimensionTable == null) { columnChooser.addItem("Parent hierarchy has no table"); columnChooser.setEnabled(false); } else if (dimensionTable.getColumns().isEmpty()) { columnChooser.addItem("Parent hierarchy table has no columns"); columnChooser.setEnabled(false); } else { columnChooser.setModel(new SQLObjectComboBoxModel(dimensionTable, SQLColumn.class)); for (SQLColumn col : dimensionTable.getColumns()) { if (col.getName().equalsIgnoreCase(level.getColumn())) { columnChooser.setSelectedItem(col); } } } handler = new FormValidationHandler(status, true); Validator validator = new OLAPObjectNameValidator((OLAPObject) level.getParent(), level, false); handler.addValidateObject(name, validator); handler.addValidateObject(columnChooser, new NotNullValidator("Column")); builder.appendSeparator("Properties"); propertiesPanel = new PropertiesEditPanel(dimensionTable, handler); builder.append(propertiesPanel, 3); panel = builder.getPanel(); }
From source file:ca.sqlpower.architect.swingui.olap.MeasureEditPanel.java
License:Open Source License
/** * Creates a new property editor for the given OLAP Measure. * //from w ww . j a va2s. c o m * @param cube The data model of the measure to edit * @throws SQLObjectException * if populating the necessary SQLObjects fails */ public MeasureEditPanel(Measure measure) throws SQLObjectException { this.measure = measure; handler = new FormValidationHandler(status, true); 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", name = new JTextField(measure.getName())); builder.append("Caption", captionField = new JTextField(measure.getCaption())); String[] rolapAggregates = new String[] { "sum", "count", "min", "max", "avg", "distinct-count" }; builder.append("Aggregator", aggregator = new JComboBox(rolapAggregates)); if (measure.getAggregator() != null) { aggregator.setSelectedItem(measure.getAggregator()); } builder.appendSeparator("Value"); Action radioButtonsAction = new AbstractAction() { public void actionPerformed(ActionEvent arg0) { columnChooser.setEnabled(columnRadioButton.isSelected()); expression.setEnabled(expRadioButton.isSelected()); handler.performFormValidation(); } }; columnRadioButton = new JRadioButton(); columnRadioButton.setAction(radioButtonsAction); columnRadioButton.setText("Use Column"); expRadioButton = new JRadioButton(); expRadioButton.setAction(radioButtonsAction); expRadioButton.setText("Use Expression"); ButtonGroup buttonGroup = new ButtonGroup(); buttonGroup.add(columnRadioButton); buttonGroup.add(expRadioButton); builder.append(columnRadioButton, 3); builder.append(columnChooser = new JComboBox(), 3); builder.append(expRadioButton, 3); builder.append(new JScrollPane(expression = new JTextArea(4, 30)), 3); expression.setLineWrap(true); Cube parentCube = (Cube) measure.getParent(); SQLTable cubeTable = OLAPUtil.tableForCube(parentCube); boolean enableColumns = false; if (cubeTable == null) { columnChooser.addItem("Parent Cube has no table"); } else if (cubeTable.getColumns().isEmpty()) { columnChooser.addItem("Parent Cube table has no columns"); } else { columnChooser.setModel(new SQLObjectComboBoxModel(cubeTable, SQLColumn.class)); columnRadioButton.doClick(); for (SQLColumn col : cubeTable.getColumns()) { if (col.getName().equalsIgnoreCase(measure.getColumn())) { columnChooser.setSelectedItem(col); break; } } enableColumns = true; } columnChooser.setEnabled(enableColumns); columnRadioButton.setEnabled(enableColumns); SQL exp = null; MeasureExpression mExp = measure.getMeasureExp(); if (mExp != null) { for (SQL sql : measure.getMeasureExp().getExpressions()) { // we only support generic expressions right now. if (sql.getDialect() != null && sql.getDialect().equalsIgnoreCase("generic")) { exp = sql; } } expRadioButton.doClick(); } expression.setText(exp == null ? "" : exp.getText()); if (!columnRadioButton.isSelected()) { expRadioButton.doClick(); } Validator validator = new OLAPObjectNameValidator((OLAPObject) measure.getParent(), measure, false); handler.addValidateObject(name, validator); handler.addValidateObject(columnChooser, new NotNullValidator("Value column")); panel = builder.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 a v a 2 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.olap.SchemaEditPanel.java
License:Open Source License
public SchemaEditPanel(ArchitectSwingSession session, Schema schema) throws SQLObjectException { this.schema = schema; FormLayout layout = new FormLayout("left:max(40dlu;pref), 3dlu, 80dlu:grow", ""); DefaultFormBuilder builder = new DefaultFormBuilder(layout); builder.setDefaultDialogBorder();//from w ww . ja v a 2 s . com builder.append(status, 3); builder.append("Database", databaseBox = new JComboBox(new SQLObjectComboBoxModel(session.getRootObject(), SQLObject.class))); OLAPSession osession = OLAPUtil.getSession(schema); if (osession.getDatabase() != null) { databaseBox.setSelectedItem(osession.getDatabase()); } else { databaseBox.setSelectedItem(session.getTargetDatabase()); } builder.append("Name", nameField = new JTextField(schema.getName())); handler = new FormValidationHandler(status); handler.addValidateObject(databaseBox, new NotNullValidator("Schema")); editorPanel = builder.getPanel(); }
From source file:ca.sqlpower.architect.swingui.olap.ViewEntryPanel.java
License:Open Source License
public ViewEntryPanel(ArchitectSwingSession session, SQLDatabase db, CubeEditPanel cubeEditPanel) { this.cubeEditPanel = cubeEditPanel; DefaultFormBuilder builder = new DefaultFormBuilder( new FormLayout("pref, 5dlu:grow, pref, 3dlu, pref", "pref, fill:pref:grow")); queryComponents = new SQLQueryUIComponents(session, session.getDataSources(), session, builder.getPanel()); queryComponents.getRowLimitSpinner().setValue(Integer.valueOf(1000)); queryComponents.getDatabaseComboBox().setSelectedItem(db.getDataSource()); JToolBar toolbar = new JToolBar(); toolbar.add(queryComponents.getPrevQueryButton()); toolbar.add(queryComponents.getNextQueryButton()); toolbar.addSeparator();/*from www . ja v a 2 s .c o m*/ toolbar.add(queryComponents.getExecuteButton()); toolbar.add(queryComponents.getStopButton()); toolbar.add(queryComponents.getClearButton()); toolbar.addSeparator(); toolbar.add(queryComponents.getUndoButton()); toolbar.add(queryComponents.getRedoButton()); toolbar.addSeparator(); toolbar.add(new JLabel(db.getName())); builder.append(toolbar); builder.append("Row Limit", queryComponents.getRowLimitSpinner()); builder.nextLine(); queryArea = queryComponents.getQueryArea(); builder.append(new JScrollPane(queryArea), 5); queryArea.setText(cubeEditPanel.getSelectText()); JSplitPane rightSplitPane = new JSplitPane(JSplitPane.VERTICAL_SPLIT); rightSplitPane.setTopComponent(builder.getPanel()); rightSplitPane.setBottomComponent(queryComponents.getResultTabPane()); rightSplitPane .setPreferredSize(new Dimension((int) Math.max(400, rightSplitPane.getPreferredSize().getWidth()), (int) Math.max(500, rightSplitPane.getPreferredSize().getHeight()))); rightSplitPane.setResizeWeight(0.5); SQLObjectRoot root = new SQLObjectRoot(); TreeModel treeModel; DBTree tree; try { root.addChild(db); tree = new DBTree(session); treeModel = new DBTreeModel(root, tree); } catch (SQLObjectException e) { throw new RuntimeException(e); } tree.setModel(treeModel); tree.setPopupMenuEnabled(false); splitPane = new JSplitPane(JSplitPane.HORIZONTAL_SPLIT); splitPane.setLeftComponent(tree); splitPane.setRightComponent(rightSplitPane); splitPane.setResizeWeight(0.2); }
From source file:ca.sqlpower.architect.swingui.olap.VirtualCubeEditPanel.java
License:Open Source License
/** * Creates a new property editor for the given OLAP Virtual Cube. * /*w w w . ja v a2 s . com*/ * @param vCube The data model of the Virtual Cube to edit */ public VirtualCubeEditPanel(VirtualCube vCube) { this.vCube = vCube; 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(vCube.getName())); builder.append("Caption", captionField = new JTextField(vCube.getCaption())); // default measure is optional so we need to add in a null option List<VirtualCubeMeasure> measures = new ArrayList<VirtualCubeMeasure>(vCube.getMeasures()); measures.add(0, null); builder.append("Default Measure", defMeasure = new JComboBox(measures.toArray())); defMeasure.setRenderer(new OLAPObjectListCellRenderer()); for (VirtualCubeMeasure vMs : vCube.getMeasures()) { if (vMs.getName().equals(vCube.getDefaultMeasure())) { defMeasure.setSelectedItem(vMs); break; } } handler = new FormValidationHandler(status); Validator validator = new OLAPObjectNameValidator((OLAPObject) vCube.getParent(), vCube, false); handler.addValidateObject(nameField, validator); panel = builder.getPanel(); }
From source file:ca.sqlpower.architect.swingui.PreferencesEditor.java
License:Open Source License
private JPanel createLabelPanel(ArchitectSwingSession session) { FormLayout layout = new FormLayout("pref:grow, pref, pref:grow", "pref"); //$NON-NLS-1$ //$NON-NLS-2$ DefaultFormBuilder fb = new DefaultFormBuilder(layout); JLabel label = new JLabel(); label.setText((session.isEnterpriseSession() ? "Enterprise Server JDBCDrivers on " + ((ArchitectSwingSessionImpl) session).getServerName() : "Local JDBCDrivers")); label.setFont(new Font("Arial", Font.BOLD, 18)); label.setIcon((session.isEnterpriseSession() ? SERVER_JDBCDRIVER_ICON : LOCAL_JDBCDRIVER_ICON)); fb.add(label, "2, 1"); return fb.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 ww w .j a va2 s . c o 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()); }