Example usage for com.jgoodies.forms.builder DefaultFormBuilder appendSeparator

List of usage examples for com.jgoodies.forms.builder DefaultFormBuilder appendSeparator

Introduction

In this page you can find the example usage for com.jgoodies.forms.builder DefaultFormBuilder appendSeparator.

Prototype

public JComponent appendSeparator(String text) 

Source Link

Document

Adds a separator with the given text that spans all columns.

Usage

From source file:be.ac.ua.comp.scarletnebula.gui.windows.AddFirewallRuleWindow.java

License:Open Source License

public AddFirewallRuleWindow(final JDialog parent, final CloudProvider provider, final Firewall firewall) {
    super(parent, "Add Rule", true);
    this.firewall = firewall;
    setLayout(new BorderLayout());
    setSize(400, 250);//  w  w  w.j a  v a  2 s.c  o  m
    setLocationRelativeTo(null);
    setLocationByPlatform(true);

    final FormLayout layout = new FormLayout("right:max(40dlu;p), 4dlu, min(50dlu;p):grow", "");
    // add rows dynamically
    final DefaultFormBuilder builder = new DefaultFormBuilder(layout);
    builder.setDefaultDialogBorder();
    builder.appendSeparator("New Rule");
    portRangeField.setInputVerifier(new PortRangeInputVerifier(portRangeField));
    builder.append("Port range", portRangeField);

    builder.append("Protocol", protocolDropdown);

    builder.append("IP", ipField);

    final JPanel mainPanel = new JPanel(new BorderLayout());
    mainPanel.add(builder.getPanel(), BorderLayout.CENTER);
    final JLabel bottomLabel = new JLabel(
            "<html><font size=\"6pt\" color=\"#657383\">Note: Use the IP address 0.0.0.0/0 to allow "
                    + "traffic from and to everyone. </font></html>");
    bottomLabel.setBorder(BorderFactory.createEmptyBorder(0, 10, 10, 10));
    mainPanel.add(bottomLabel, BorderLayout.PAGE_END);

    add(mainPanel, BorderLayout.CENTER);

    final JPanel buttonPanel = new JPanel();
    buttonPanel.setLayout(new BoxLayout(buttonPanel, BoxLayout.LINE_AXIS));
    buttonPanel.add(Box.createHorizontalGlue());
    final JButton cancelButton = ButtonFactory.createCancelButton();
    cancelButton.addActionListener(new CancelActionListener());
    buttonPanel.add(cancelButton);
    buttonPanel.add(Box.createHorizontalStrut(5));
    final JButton okButton = ButtonFactory.createOkButton();
    okButton.addActionListener(new OkActionListener());
    buttonPanel.add(okButton);
    buttonPanel.add(Box.createHorizontalStrut(10));
    buttonPanel.setBorder(BorderFactory.createEmptyBorder(0, 0, 10, 0));
    add(buttonPanel, BorderLayout.PAGE_END);

}

From source file:be.ac.ua.comp.scarletnebula.gui.windows.ServerPropertiesWindow.java

License:Open Source License

private void createOverviewPanel(final Collection<Server> servers) {
    overviewTab.setLayout(new BorderLayout());

    final FormLayout layout = new FormLayout("right:max(40dlu;p), 4dlu, min(50dlu;p):grow, 7dlu, "
            + "right:max(40dlu;p), 4dlu, min(50dlu;p):grow", "");
    // add rows dynamically
    final DefaultFormBuilder builder = new DefaultFormBuilder(layout);
    builder.setDefaultDialogBorder();//from  w  ww .ja  va  2  s  . co  m
    builder.appendSeparator("General Information");

    Component servernameComponent = null;
    Component servertagComponent = null;
    Component sshLoginMethodComponent = null;
    Component providerComponent = null;
    Component vncComponent = null;
    Component statisticsCommandComponent = null;

    if (servers.size() == 1) {
        final Server server = servers.iterator().next();

        servernameComponent = getSingleServerServerNameComponent(server);
        servertagComponent = getSingleServerTagComponent(server);
        sshLoginMethodComponent = getSingleServerSshLoginMethodComponent(server);
        providerComponent = getSingleProviderComponent(server);
        vncComponent = getSingleVNCComponent(server);
        statisticsCommandComponent = getSingleStatisticsCommandComponent(server);
    } else {
        servernameComponent = getMultipleServerServerNameComponent(servers);
        servertagComponent = getMultipleServerTagComponent(servers);
        sshLoginMethodComponent = new JLabel("...");
        providerComponent = getMultipleServersProviderComponent(servers);
        vncComponent = new JLabel("...");
        statisticsCommandComponent = new JLabel("...");
    }

    builder.append("Name", servernameComponent);
    builder.append("Tags", servertagComponent);
    builder.nextLine();

    builder.append("SSH Login", sshLoginMethodComponent);
    builder.append("Statistics Command", statisticsCommandComponent);
    builder.nextLine();

    builder.append("Provider", providerComponent);
    builder.append("VNC Password", vncComponent);
    builder.nextLine();

    builder.append("Architecture", architectureLabel);
    builder.append("Platform", platformLabel);
    builder.nextLine();

    builder.append("DNS Address", dnsLabel);
    builder.append("IP Address", ipLabel);
    builder.nextLine();

    builder.append("Status", statusLabel);
    builder.nextLine();

    builder.appendSeparator("Cloud Specific Information");
    builder.append("Name", unfriendlyNameLabel);
    builder.append("Size", sizeLabel);
    builder.nextLine();

    builder.append("Image", imageLabel);
    builder.nextLine();

    final JScrollPane bodyScrollPane = new JScrollPane(builder.getPanel());
    bodyScrollPane.setBorder(null);
    overviewTab.add(bodyScrollPane);
}

From source file:br.com.loja.view.swing.PanelEntity.java

public JPanel getPanel(Class<? extends Switchable> entityClass) {

    DefaultFormBuilder builder = new DefaultFormBuilder(new FormLayout(""));
    builder.setBorder(BorderFactory.createEmptyBorder(5, 5, 5, 5));
    builder.appendColumn("right:pref");
    builder.appendColumn("3dlu");
    builder.appendColumn("fill:max(pref; 180px)");

    builder.appendSeparator(entityClass.getSimpleName());

    for (Field f : ReflectionUtil.getAllFields(entityClass)) {

        if (!isMappable(f)) {
            continue;
        }//from  w  w w .  j a v a  2 s  .  c o m

        ComponentFactoryOld factory = new ComponentFactoryOld(f, serviceFactory);
        Component component = factory.getComponent();

        if (component != null) {
            if (component instanceof JTable) {
                JScrollPane scrollPane = new JScrollPane();
                scrollPane.setName("List " + component.getName());
                scrollPane.setPreferredSize(new Dimension(180, 240));
                scrollPane.setViewportView(component);
                builder.nextLine();
                builder.append(scrollPane.getName(), scrollPane);

            } else {
                builder.nextLine();
                builder.append(component.getName(), component);
            }
        }
    }

    return builder.getPanel();

}

From source file:br.com.loja.view.swing.PanelEntityEditor.java

private JPanel getPanelEntity() throws ServiceException {

    DefaultFormBuilder builder = new DefaultFormBuilder(new FormLayout(""));
    builder.setBorder(BorderFactory.createEmptyBorder(5, 5, 5, 5));
    builder.appendColumn("right:pref");
    builder.appendColumn("3dlu");
    builder.appendColumn("fill:max(pref; 180px)");

    builder.appendSeparator(entityClass.getSimpleName());

    for (Field field : ReflectionUtil.getAllFields(entityClass)) {

        if (!isMappable(field)) {
            continue;
        }/*w  w  w .  j av  a  2s .c o m*/

        ComponentFactory factory = new ComponentProducer(field).getComponentFactory();
        Component component = factory.getComponent();

        if (component != null) {

            component.setName(field.getName());

            component = buildScrollPane(component);

            builder.nextLine();
            builder.append(component.getName(), component);

            if (Collection.class.isAssignableFrom(field.getType())) {
                addCardPanel(getPanelEditor(field), field.getName());
            }
        }
    }

    JPanel panel = builder.getPanel();
    panel.setName(entityClass.getSimpleName());
    componentsAttributes = ComponentUtil.getComponents(panel);

    return panel;

}

From source file:brainflow.app.presentation.ColorGradientEditor.java

private void initLayout() {

    JPanel mainPanel = new JPanel();
    FormLayout layout = new FormLayout("l:p:g, 12dlu, l:p, 3dlu, p:g");
    DefaultFormBuilder builder = new DefaultFormBuilder(layout, mainPanel);
    layout.setColumnGroups(new int[][] { { 2, 4 } });
    builder.setLineGapSize(Sizes.dluX(8));

    builder.appendSeparator("Preview");

    colorBar = colorMap.createColorBar();
    colorBar.setBorder(BorderFactory.createBevelBorder(BevelBorder.LOWERED));
    builder.append(colorBar, 5);//from   ww  w . j av a2  s .com
    builder.appendSeparator("Colors");
    builder.nextLine();
    builder.setDefaultDialogBorder();
    builder.append(oneColorButton);

    builder.append("Color 1:", colorComboOne);
    builder.nextLine();
    builder.append(twoColorButton);

    builder.append("Color 2: ", colorComboTwo);

    setLayout(new BorderLayout());
    add(builder.getPanel(), BorderLayout.CENTER);

}

From source file:bzh.plealog.bioinfo.ui.filter.BFilterEditor.java

License:Open Source License

private void createGUI() {
    DefaultFormBuilder builder;
    FormLayout layout;//from w  w  w  .jav a2 s.  c o m
    JScrollPane scroller;
    JPanel top, expr, exprMain, rulesContainer;

    layout = new FormLayout("right:max(50dlu;p), 4dlu, 150dlu", "");
    builder = new DefaultFormBuilder(layout);
    builder.setDefaultDialogBorder();
    if (!_showRulesOnly) {
        _filterName = createTextField();
        _filterDescription = createTextField();
        builder.appendSeparator(FilterMessages.getString("BFilterEditor.ui.lbl.1"));
        builder.append(new JLabel(FilterMessages.getString("BFilterEditor.ui.lbl.2") + ": "), _filterName);
        builder.nextLine();
        builder.append(new JLabel(FilterMessages.getString("BFilterEditor.ui.lbl.3") + ": "),
                _filterDescription);
        builder.nextLine();
    }

    _rulesPanel = new JPanel();

    _rulesPanel.setLayout(new BoxLayout(_rulesPanel, BoxLayout.Y_AXIS));

    expr = new JPanel();
    expr.add(new JLabel(FilterMessages.getString("BFilterEditor.ui.lbl.4")));
    _exprType = new JComboBox<ExpressionTypeItem>();
    _exprType.addItem(_exprItems[ANY_EXPR_ITEM]);//or
    _exprType.addItem(_exprItems[ALL_EXPR_ITEM]);//and
    _exprType.setSelectedIndex(ALL_EXPR_ITEM);
    expr.add(_exprType);
    expr.add(new JLabel(FilterMessages.getString("BFilterEditor.ui.lbl.5") + ":"));
    exprMain = new JPanel(new BorderLayout());
    exprMain.add(expr, BorderLayout.WEST);
    rulesContainer = new JPanel(new BorderLayout());
    rulesContainer.add(_rulesPanel, BorderLayout.NORTH);
    scroller = new JScrollPane(rulesContainer);
    this.setLayout(new BorderLayout());
    top = new JPanel(new BorderLayout());
    if (!_showRulesOnly) {
        top.add(builder.getContainer(), BorderLayout.CENTER);
    }
    top.add(exprMain, BorderLayout.SOUTH);
    this.add(top, BorderLayout.NORTH);
    this.add(scroller, BorderLayout.CENTER);
    this.add(createHelper(), BorderLayout.SOUTH);
}

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

License:Open Source License

private void buildUI(SchemaPopulator targetSchemaPop, CatalogPopulator targetCatalogPop,
        SchemaPopulator sourceSchemaPop, CatalogPopulator sourceCatalogPop) {

    progressBar = new JProgressBar();
    progressBar.setIndeterminate(true);//from w w w.j  ava  2s  .  c o m
    progressBar.setVisible(false);

    sqlTypeDropdown = new JComboBox(DDLUtils.getDDLTypes(session.getDataSources()));
    sqlTypeDropdown.setRenderer(new DDLGeneratorListCellRenderer());
    sqlTypeDropdown.setName("sqlTypeDropDown"); //$NON-NLS-1$
    OutputChoiceListener listener = new OutputChoiceListener(sqlTypeDropdown);
    sqlTypeDropdown.setEnabled(false);
    sqlTypeDropdown.addActionListener(new ActionListener() {
        public void actionPerformed(ActionEvent e) {
            startCompareAction.setEnabled(isStartable());
        }
    });
    sqlButton = new JRadioButton();
    sqlButton.setName(OUTPUT_SQL);
    sqlButton.setActionCommand(OUTPUT_SQL);
    sqlButton.setSelected(false);
    sqlButton.addActionListener(listener);

    englishButton = new JRadioButton();
    englishButton.setName("englishButton"); //$NON-NLS-1$
    englishButton.setActionCommand(OUTPUT_ENGLISH);
    englishButton.setSelected(true);
    englishButton.addActionListener(listener);

    liquibaseButton = new JRadioButton();
    liquibaseButton.setName(OUTPUT_LIQUIBASE); //$NON-NLS-1$
    liquibaseButton.setActionCommand(OUTPUT_LIQUIBASE);
    liquibaseButton.setSelected(false);
    liquibaseButton.addActionListener(listener);

    showNoChanges = new JCheckBox();
    showNoChanges.setName("showNoChanges"); //$NON-NLS-1$

    includeIndexes = new JCheckBox(Messages.getString("CompareDMPanel.includeIndexes")); //$NON-NLS-1$
    includeIndexes.setName("includeIndexes"); //$NON-NLS-1$
    includeIndexes.setSelected(false);

    // Group the radio buttons.
    ButtonGroup outputGroup = new ButtonGroup();
    outputGroup.add(sqlButton);
    outputGroup.add(englishButton);
    outputGroup.add(liquibaseButton);

    startCompareAction = new StartCompareAction();
    startCompareAction.setEnabled(false);

    swapSourceTargetAction = new SwapSourceTargetAction();
    swapSourceTargetAction.setEnabled(true);

    buttonPanel = new JPanel(new FlowLayout(FlowLayout.RIGHT));

    FormLayout formLayout = new FormLayout("20dlu, 2dlu, pref, 4dlu," + // 1-4 //$NON-NLS-1$
            "0:grow, 4dlu, 0:grow, 4dlu," + // 5-8 //$NON-NLS-1$
            "0:grow, 4dlu, pref", // 9-11 //$NON-NLS-1$
            ""); //$NON-NLS-1$
    formLayout.setColumnGroups(new int[][] { { 5, 7, 9, } });
    JPanel panel = logger.isDebugEnabled() ? new FormDebugPanel() : new JPanel();
    DefaultFormBuilder builder = new DefaultFormBuilder(formLayout, panel);
    builder.setDefaultDialogBorder();

    CellConstraints cc = new CellConstraints();

    builder.append(statusComponent, 11);
    builder.nextLine();

    builder.appendSeparator(Messages.getString("CompareDMPanel.olderSeparator")); //$NON-NLS-1$
    builder.nextLine();
    builder.append(""); // takes up blank space //$NON-NLS-1$

    source.buildPartialUI(builder, true, sourceSchemaPop, sourceCatalogPop);

    builder.appendSeparator(Messages.getString("CompareDMPanel.newerSeparator")); //$NON-NLS-1$
    builder.appendRow(builder.getLineGapSpec());
    builder.appendRow("pref"); //$NON-NLS-1$
    builder.nextLine(2);
    builder.append(""); //$NON-NLS-1$

    target.buildPartialUI(builder, false, targetSchemaPop, targetCatalogPop);

    ActionListener radioButtonActionEnabler = new ActionListener() {
        public void actionPerformed(ActionEvent e) {
            startCompareAction.setEnabled(isStartable());
        }
    };
    source.playPenRadio.addActionListener(radioButtonActionEnabler);
    source.physicalRadio.addActionListener(radioButtonActionEnabler);
    source.loadRadio.addActionListener(radioButtonActionEnabler);

    target.playPenRadio.addActionListener(radioButtonActionEnabler);
    target.physicalRadio.addActionListener(radioButtonActionEnabler);
    target.loadRadio.addActionListener(radioButtonActionEnabler);

    JLabel temp;

    builder.appendSeparator(Messages.getString("CompareDMPanel.outpurFormatSeparator")); //$NON-NLS-1$
    builder.appendRow(builder.getLineGapSpec());
    builder.appendRow("pref"); //$NON-NLS-1$
    builder.nextLine(2);
    builder.nextColumn(2);
    builder.append(sqlButton);

    JPanel ddlTypePanel = new JPanel(new BorderLayout(3, 3));
    ddlTypePanel.add(temp = new JLabel(Messages.getString("CompareDMPanel.sqlFor")), BorderLayout.WEST); //$NON-NLS-1$
    associate(temp, sqlButton);
    ddlTypePanel.add(sqlTypeDropdown, BorderLayout.CENTER); // ddl generator
    // type list
    ddlTypePanel.add(temp = new JLabel(Messages.getString("CompareDMPanel.makeOlderLookLikeNewer")), //$NON-NLS-1$
            BorderLayout.EAST);
    associate(temp, sqlButton);
    builder.append(ddlTypePanel, 3);

    builder.appendRow(builder.getLineGapSpec());
    builder.appendRow("pref"); //$NON-NLS-1$
    builder.nextLine(2);
    builder.nextColumn(2);
    builder.append(liquibaseButton);
    temp = builder.append(Messages.getString("CompareDMPanel.liqubaseScript")); //$NON-NLS-1$
    associate(temp, liquibaseButton);

    this.lbOptions = new LiquibaseOptionsPanel();

    builder.appendRow("pref"); //$NON-NLS-1$
    builder.nextLine(1);
    builder.nextColumn(2);
    lbOptions.getPanel().setVisible(false);
    builder.append(lbOptions.getPanel(), 9);

    builder.appendRow(builder.getLineGapSpec());
    builder.appendRow("pref"); //$NON-NLS-1$
    builder.nextLine(2);
    builder.nextColumn(2);
    builder.append(englishButton);
    temp = builder.append(Messages.getString("CompareDMPanel.englishDescriptions")); //$NON-NLS-1$
    associate(temp, englishButton);

    builder.appendRow(builder.getLineGapSpec());
    builder.appendRow("pref"); //$NON-NLS-1$
    builder.nextLine(2);
    builder.nextColumn(2);
    builder.append(showNoChanges);
    temp = builder.append(Messages.getString("CompareDMPanel.suppressSimilarities")); //$NON-NLS-1$
    associate(temp, showNoChanges);
    builder.append(includeIndexes);
    builder.nextLine();

    builder.appendSeparator(Messages.getString("CompareDMPanel.status")); //$NON-NLS-1$
    builder.appendRow(builder.getLineGapSpec());
    builder.appendRow("pref"); //$NON-NLS-1$
    builder.nextLine(2);
    statusLabel = new JLabel(""); //$NON-NLS-1$
    builder.add(statusLabel, cc.xy(5, builder.getRow()));
    builder.add(progressBar, cc.xyw(7, builder.getRow(), 5));

    setLayout(new BorderLayout());
    add(builder.getPanel());
    setPreferredSize(new Dimension(800, 600));
    try {
        restoreSettingsFromProject();
    } catch (SQLObjectException e) {
        logger.warn("Failed to save user CompareDM preferences!", e); //$NON-NLS-1$
    }
}

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.j  a v a  2s  . c  om
 * 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.LevelEditPanel.java

License:Open Source License

/**
 * Creates a new property editor for the given level of a hierarchy.
 * /*from  w  w  w .ja  va2s .c  om*/
 * @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. 
 * //  w w w  . j a  v a2s.  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();
}