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

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

Introduction

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

Prototype

public JLabel append(String textWithMnemonic) 

Source Link

Document

Adds a text label to the panel and proceeds to the next column.

Usage

From source file:ca.sqlpower.wabit.swingui.NewWorkspaceScreen.java

License:Open Source License

private void buildUI() {
    dialog.setDefaultCloseOperation(WindowConstants.DISPOSE_ON_CLOSE);
    dialog.addWindowListener(new WindowAdapter() {
        @Override//from www.  j av a 2s .  c  om
        public void windowClosed(WindowEvent e) {
            if (databaseAdded) {
                SPObject currentEditor = session.getWorkspace().getEditorPanelModel();
                try {
                    final URI resource = WabitSwingSessionContextImpl.class
                            .getResource(WabitSessionContext.NEW_WORKSPACE_URL).toURI();
                    URL importURL = resource.toURL();
                    URLConnection urlConnection = importURL.openConnection();
                    InputStream in = new BufferedInputStream(urlConnection.getInputStream());
                    final OpenWorkspaceXMLDAO workspaceLoader = new OpenWorkspaceXMLDAO(context, in,
                            urlConnection.getContentLength());
                    workspaceLoader.importWorkspaces(session);
                } catch (Exception ex) {
                    throw new RuntimeException("Cannot find the templates file at " + "location "
                            + WabitSessionContext.NEW_WORKSPACE_URL);
                }
                session.getWorkspace().setEditorPanelModel(currentEditor);

                context.registerChildSession(session);
            }
            session.getWorkspace().removeDatabaseListChangeListener(workspaceDataSourceListener);
        }
    });

    DefaultFormBuilder builder = new DefaultFormBuilder(new FormLayout("pref:grow"));
    final JLabel selectDSLabel = new JLabel("Select a data source for your new workspace.");
    selectDSLabel.setHorizontalAlignment(SwingConstants.CENTER);
    builder.append(selectDSLabel);
    builder.nextLine();
    final JLabel additionalDSLabel = new JLabel("(Additional data sources can be added later.)");
    additionalDSLabel.setHorizontalAlignment(SwingConstants.CENTER);
    builder.append(additionalDSLabel);
    builder.nextLine();
    builder.append(WorkspacePanel.createDBConnectionManager(session, dialog).getPanel());

    dialog.add(builder.getPanel());
}

From source file:ca.sqlpower.wabit.swingui.QueryPanel.java

License:Open Source License

public QueryPanel(WabitSwingSession session, QueryCache cache) {
    logger.debug("Constructing new QueryPanel@" + System.identityHashCode(this));
    this.session = session;
    context = (WabitSwingSessionContext) session.getContext();
    mainSplitPane = new JSplitPane(JSplitPane.VERTICAL_SPLIT);
    queryCache = cache;//from   w  ww .  j a v a  2  s  . c o m

    queryCache.setResultSetListener(resultSetListener);
    queryCache.addResultSetProducerListener(rsProducerListener);

    final Action queryPenExecuteButtonAction = new AbstractAction() {
        public void actionPerformed(ActionEvent e) {
            execute();
        }
    };
    queryPen = new QueryPen(queryPenExecuteButtonAction, queryCache);
    queryPen.setExecuteIcon((ImageIcon) WabitIcons.RUN_ICON_32);
    queryPen.getGlobalWhereText().setText(cache.getGlobalWhereClause());

    exportQueryAction = new ExportWabitObjectAction<QueryCache>(session, queryCache,
            WabitIcons.WABIT_FILE_ICON_16, "Export Query to Wabit file");

    queryUIComponents = new SQLQueryUIComponents(session,
            new SpecificDataSourceCollection<JDBCDataSource>(session.getWorkspace(), JDBCDataSource.class),
            context, mainSplitPane, queryCache);
    queryUIComponents.setRowLimitSpinner(context.getRowLimitSpinner());
    queryUIComponents.setShowSearchOnResults(false);
    queryController = new QueryController(queryCache, queryPen, queryUIComponents.getDatabaseComboBox(),
            queryUIComponents.getQueryArea(), queryPen.getZoomSlider());
    queryPen.setZoom(queryCache.getZoomLevel());
    reportComboBox = queryUIComponents.getDatabaseComboBox();

    cornerPanel = new JPanel();
    DefaultFormBuilder builder = new DefaultFormBuilder(new FormLayout("pref", "pref, pref, pref"),
            cornerPanel);
    groupingLabel.setFont(new JTableHeader().getFont());

    //Resize grouping and having labels to the height of a combo box to be spaced properly
    //beside the headers in the results table. This is done by a listener as the components
    //aren't realized until they are displayed.
    reportComboBox.addComponentListener(new ComponentAdapter() {
        public void componentResized(ComponentEvent e) {
            groupingLabel.setPreferredSize(new Dimension((int) groupingLabel.getPreferredSize().getWidth(),
                    reportComboBox.getHeight()));
            havingLabel.setPreferredSize(
                    new Dimension((int) havingLabel.getPreferredSize().getWidth(), reportComboBox.getHeight()));
        }
    });
    havingLabel.setFont(new JTableHeader().getFont());
    builder.append(groupingLabel);
    builder.append(havingLabel);
    builder.append(columnNameLabel);

    dragTree = new JTree() {
        public void expandPath(TreePath tp) {
            try {
                if (tp.getLastPathComponent() instanceof SQLObject) {
                    ((SQLObject) tp.getLastPathComponent()).populate();
                }
                super.expandPath(tp);
            } catch (Exception ex) {
                logger.warn("Unexpected exception while expanding path " + tp, ex); //$NON-NLS-1$
            }
        }

        @Override
        public void expandRow(int row) {
            if (getPathForRow(row).getLastPathComponent() instanceof SQLObject) {
                try {
                    ((SQLObject) getPathForRow(row).getLastPathComponent()).populate();
                } catch (SQLObjectException e) {
                    throw new RuntimeException(e);
                }
            }
            super.expandRow(row);
        }
    };
    dragTree.setRootVisible(false);
    rootNode = new CustomSQLObjectRoot();
    reportComboBox.addActionListener(new AbstractAction() {
        public void actionPerformed(ActionEvent event) {
            try {
                for (int i = rootNode.getChildren().size() - 1; i >= 0; i--) {
                    rootNode.removeChild(rootNode.getChildren().get(i));
                }
                if (reportComboBox.getSelectedItem() != null) {
                    // FIXME the session (or session context) should be maintaining a map of data
                    // sources to SQLDatabase instances. Each SQLDatabase instance has its own connection pool! 
                    rootNode.addChild(context.getDatabase((JDBCDataSource) reportComboBox.getSelectedItem()));
                    for (SQLObject child : rootNode.getChildren()) {
                        child.populate();
                    }
                    DBTreeModel tempTreeModel = new DBTreeModel(rootNode, dragTree);
                    dragTree.setModel(tempTreeModel);
                    dragTree.expandRow(0);
                    dragTree.setVisible(true);
                }
            } catch (SQLObjectException e) {
                throw new RuntimeException("Could not add DataSource to rootNode", e);
            } catch (ObjectDependentException e) {
                throw new RuntimeException(e);
            }

        }
    });
    if (session.getWorkspace().getDataSources().size() != 0) {
        if (queryCache.getDatabase() == null) {
            dragTree.setVisible(false);
            List<SPDataSource> dataSources = session.getWorkspace().getConnections();
            List<JDBCDataSource> availableDS = new ArrayList<JDBCDataSource>();
            for (SPDataSource ds : dataSources) {
                if (ds instanceof JDBCDataSource) {
                    availableDS.add((JDBCDataSource) ds);
                }
            }
            final JDBCDataSource startingDataSource;
            if (availableDS.size() > 0) {
                startingDataSource = (JDBCDataSource) availableDS.get(0);
            } else {
                startingDataSource = null;
            }

            SPSwingWorker databaseLazyLoad = new SPSwingWorker(session) {
                public void doStuff() throws Exception {
                    if (startingDataSource != null) {
                        //populate the database
                        context.getDatabase(startingDataSource);
                    }
                }

                public void cleanup() throws Exception {
                    if (reportComboBox.getSelectedItem() == null) {
                        reportComboBox.setSelectedItem(startingDataSource);
                        dragTree.setVisible(true);
                    }
                }
            };
            //populates some data in a separate thread to create an easier workflow
            //when a user creates a new query (bug 2054)
            if (startingDataSource != null) {
                databaseLazyLoad.run();
            }
        } else {
            reportComboBox.setSelectedItem((SPDataSource) queryCache.getDatabase().getDataSource());
            dragTree.setVisible(true);
        }
    } else {
        dragTree.setVisible(false);
    }

    dragTree.setCellRenderer(new DBTreeCellRenderer());
    DragSource ds = new DragSource();
    ds.createDefaultDragGestureRecognizer(dragTree, DnDConstants.ACTION_COPY, new DragGestureListener() {

        public void dragGestureRecognized(DragGestureEvent dge) {

            if (dragTree.getSelectionPaths() == null) {
                return;
            }
            ArrayList<SQLObject> list = new ArrayList<SQLObject>();
            for (TreePath path : dragTree.getSelectionPaths()) {
                Object selectedNode = path.getLastPathComponent();
                if (!(selectedNode instanceof SQLObject)) {
                    throw new IllegalStateException(
                            "DBTrees are not allowed to contain non SQLObjects. This tree contains a "
                                    + selectedNode.getClass());
                }
                list.add((SQLObject) selectedNode);
            }

            Transferable dndTransferable = new SQLObjectSelection(list);
            dge.getDragSource().startDrag(dge, null, dndTransferable, new DragSourceAdapter() {
                // no op 
            });

        }
    });

    queryUIComponents.addTableChangeListener(new TableChangeListener() {
        public void tableRemoved(TableChangeEvent e) {
            if (tableColumnModel != null) {
                Enumeration<TableColumn> enumeration = tableColumnModel.getColumns();
                while (enumeration.hasMoreElements()) {
                    enumeration.nextElement().removePropertyChangeListener(resizingColumnChangeListener);
                }
                e.getChangedTable().getTableHeader()
                        .removeMouseMotionListener(reorderSelectionByHeaderAutoScrollTable);
            }
        }

        public void tableAdded(final TableChangeEvent e) {

            logger.debug("Table added.");
            queryController.unlistenToCellRenderer();
            TableModelSortDecorator sortDecorator = null;
            final JTable table = e.getChangedTable();
            if (table instanceof FancyExportableJTable) {
                FancyExportableJTable fancyTable = (FancyExportableJTable) table;
                sortDecorator = fancyTable.getTableModelSortDecorator();
            }
            ComponentCellRenderer renderer = new ComponentCellRenderer(table, sortDecorator);
            table.getTableHeader().setDefaultRenderer(renderer);

            ListModel lm = new RowListModel(table);
            final JList rowHeader = new JList(lm);
            rowHeader.setFixedCellWidth(groupingLabel.getPreferredSize().width + 2);

            rowHeader.setCellRenderer(new RowHeaderRenderer(table));

            table.addPropertyChangeListener("rowHeight", new PropertyChangeListener() {
                public void propertyChange(PropertyChangeEvent evt) {
                    rowHeader.setFixedCellHeight(table.getRowHeight());
                }
            });

            rowHeader.setFixedCellHeight(table.getRowHeight());

            ((JScrollPane) table.getParent().getParent()).setRowHeaderView(rowHeader);

            ((JScrollPane) table.getParent().getParent()).setCorner(JScrollPane.UPPER_LEFT_CORNER, cornerPanel);
            addGroupingTableHeaders();

            tableColumnModel = e.getChangedTable().getColumnModel();
            Enumeration<TableColumn> enumeration = tableColumnModel.getColumns();
            while (enumeration.hasMoreElements()) {
                enumeration.nextElement().addPropertyChangeListener(resizingColumnChangeListener);
            }
            table.getTableHeader().addMouseMotionListener(reorderSelectionByHeaderAutoScrollTable);

            //TODO: Add the new renderer to result sets on both tabs when a parser exists to go between them easier.
            if (queryPenAndTextTabPane.getSelectedComponent() != queryToolPanel) {
                queryController.listenToCellRenderer(renderer);
            }

            columnNameLabel.setIcon(null);

            searchField.setDocument(queryUIComponents.getSearchDocument());

        }
    });

    buildUI();

    /*
     * Default split pane size is 3/4-1/4 of the screen height or else
     * the results won't be visible and the user won't see them update
     */
    mainSplitPane.setDividerLocation(prefs.getInt(RESULTS_DIVIDER_LOCATON_KEY,
            (int) (session.getContext().getFrame().getHeight() * 3 / 4)));

}

From source file:ca.sqlpower.wabit.swingui.report.ResultSetSwingRenderer.java

License:Open Source License

/**
 * Helper method for {@link #getPropertiesPanel()}.
 *///  w  w  w  .  j  a va  2s.  co  m
private DataEntryPanel createColumnPropsPanel(final ColumnInfo ci) {

    final FormLayout layout = new FormLayout(
            "80dlu, 10dlu, min(pref; 100dlu):grow, 4dlu, pref:grow, 10dlu, pref:grow");

    DefaultFormBuilder fb = new DefaultFormBuilder(layout);

    final JTextField columnLabel = new JTextField(ci.getName());

    final JLabel widthLabel = new JLabel("Size");
    final JSpinner widthSpinner = new JSpinner(new SpinnerNumberModel(ci.getWidth(), 0, Integer.MAX_VALUE, 12));

    final JComboBox dataTypeComboBox = new JComboBox(DataType.values());
    final JLabel dataTypeLabel = new JLabel("Type");

    final JComboBox formatComboBox = new JComboBox();
    formatComboBox.setEditable(true);
    final JLabel formatLabel = new JLabel("Format");

    final JCheckBox subtotalCheckbox = new JCheckBox("Print Subtotals");

    final JLabel linkingLabel = new JLabel("Link to report");
    final JComboBox linkingBox = new JComboBox();
    // XXX Enable only when this is working.
    linkingBox.setEnabled(false);

    final ButtonGroup breakAndGroupButtons = new ButtonGroup();
    final JRadioButton noBreakOrGroupButton = new JRadioButton("None");
    breakAndGroupButtons.add(noBreakOrGroupButton);
    final JRadioButton breakRadioButton = new JRadioButton("Break Into Sections");
    breakAndGroupButtons.add(breakRadioButton);
    final JRadioButton pageBreakRadioButton = new JRadioButton("Break Into Sections (page break)");
    breakAndGroupButtons.add(pageBreakRadioButton);
    final JRadioButton groupRadioButton = new JRadioButton("Group (Suppress Repeating Values)");
    breakAndGroupButtons.add(groupRadioButton);

    final JLabel alignmentLabel = new JLabel("Alignment");
    ButtonGroup hAlignmentGroup = new ButtonGroup();
    final JToggleButton leftAlign = new JToggleButton(AlignmentIcons.LEFT_ALIGN_ICON,
            ci.getHorizontalAlignment() == HorizontalAlignment.LEFT);
    hAlignmentGroup.add(leftAlign);
    final JToggleButton centreAlign = new JToggleButton(AlignmentIcons.CENTRE_ALIGN_ICON,
            ci.getHorizontalAlignment() == HorizontalAlignment.CENTER);
    hAlignmentGroup.add(centreAlign);
    final JToggleButton rightAlign = new JToggleButton(AlignmentIcons.RIGHT_ALIGN_ICON,
            ci.getHorizontalAlignment() == HorizontalAlignment.RIGHT);
    hAlignmentGroup.add(rightAlign);
    Box alignmentBox = Box.createHorizontalBox();
    alignmentBox.add(leftAlign);
    alignmentBox.add(centreAlign);
    alignmentBox.add(rightAlign);
    alignmentBox.add(Box.createHorizontalGlue());

    /*
     * ROW 1 - Caption text field + two labels
     */
    JLabel captionLabel = new JLabel("Caption");
    captionLabel.setFont(captionLabel.getFont().deriveFont(Font.BOLD));
    fb.append(captionLabel);
    JLabel visLabel = new JLabel("Visual options");
    visLabel.setFont(visLabel.getFont().deriveFont(Font.BOLD));
    fb.append(visLabel, 3);
    JLabel advLabel = new JLabel("Advanced options");
    advLabel.setFont(advLabel.getFont().deriveFont(Font.BOLD));
    fb.append(advLabel);
    fb.nextLine();

    /*
     * Separator row
     */
    fb.append(new JSeparator(), 7);
    fb.nextLine();

    /*
     * Row 2
     */
    fb.append(columnLabel);
    fb.append(widthLabel);
    fb.append(widthSpinner);
    fb.append(subtotalCheckbox);
    subtotalCheckbox.setSelected(ci.getWillSubtotal());
    if (ci.getDataType().equals(DataType.NUMERIC)) {
        subtotalCheckbox.setEnabled(true);
    } else {
        subtotalCheckbox.setEnabled(false);
    }
    fb.nextLine();

    /*
     * Row 3
     */
    fb.append(new JLabel());
    fb.append(dataTypeLabel);
    fb.append(dataTypeComboBox);
    fb.append(linkingLabel);
    fb.nextLine();

    /*
     * Row 4
     */
    fb.append(new JLabel());
    fb.append(formatLabel);
    fb.append(formatComboBox);
    fb.append(linkingBox);
    fb.nextLine();

    /*
     * Row 5
     */
    fb.append(new JLabel());
    fb.append(alignmentLabel);
    fb.append(alignmentBox);
    fb.append(new JLabel("Breaking and Grouping"));
    fb.nextLine();

    /*
     * Row 6
     */
    fb.append(new JLabel(), 5);
    fb.append(noBreakOrGroupButton);
    fb.nextLine();

    /*
     * Row 7
     */
    fb.append(new JLabel(), 5);
    fb.append(breakRadioButton);
    fb.nextLine();

    /*
     * Row 8
     */
    fb.append(new JLabel(), 5);
    fb.append(pageBreakRadioButton);
    fb.nextLine();

    /*
     * spacer
     */
    fb.append(new JLabel(), 5);
    fb.append(groupRadioButton);
    fb.nextLine();

    dataTypeComboBox.setSelectedItem(ci.getDataType());
    if (dataTypeComboBox.getSelectedItem() == DataType.TEXT) {
        formatComboBox.setEnabled(false);
    } else {
        setItemforFormatComboBox(formatComboBox, (DataType) dataTypeComboBox.getSelectedItem());
        if (ci.getFormat() != null) {
            this.setOrInsertFormat(formatComboBox, ci.getFormat());
        }
    }

    dataTypeComboBox.addActionListener(new AbstractAction() {
        public void actionPerformed(ActionEvent e) {
            if (((JComboBox) e.getSource()).getSelectedItem() == DataType.TEXT) {
                formatComboBox.setEnabled(false);
                subtotalCheckbox.setEnabled(false);
            } else if (((JComboBox) e.getSource()).getSelectedItem() == DataType.DATE) {
                formatComboBox.setEnabled(true);
                subtotalCheckbox.setEnabled(false);
            } else if (((JComboBox) e.getSource()).getSelectedItem() == DataType.NUMERIC) {
                formatComboBox.setEnabled(true);
                subtotalCheckbox.setEnabled(true);
            }
            setItemforFormatComboBox(formatComboBox, (DataType) dataTypeComboBox.getSelectedItem());
        }
    });

    if (ci.getWillGroupOrBreak().equals(GroupAndBreak.GROUP)) {
        groupRadioButton.setSelected(true);
    } else if (ci.getWillGroupOrBreak().equals(GroupAndBreak.BREAK)) {
        breakRadioButton.setSelected(true);
    } else if (ci.getWillGroupOrBreak().equals(GroupAndBreak.PAGEBREAK)) {
        pageBreakRadioButton.setSelected(true);
    } else {
        noBreakOrGroupButton.setSelected(true);
    }

    // XXX Enable only when this is working
    //        for (Report report : WabitUtils.getWorkspace(ci).getReports()) {
    //           linkingBox.addItem(report);
    //        }
    //        linkingBox.addActionListener(new ActionListener() {
    //         public void actionPerformed(ActionEvent e) {
    //            // TODO populate and add a listener to the linking box
    //         }
    //      });

    final JPanel panel = fb.getPanel();
    panel.setBorder(BorderFactory.createEmptyBorder(5, 3, 3, 5));

    return new DataEntryPanel() {

        public boolean applyChanges() {
            ci.setName(columnLabel.getText());
            if (leftAlign.isSelected()) {
                ci.setHorizontalAlignment(HorizontalAlignment.LEFT);
            } else if (centreAlign.isSelected()) {
                ci.setHorizontalAlignment(HorizontalAlignment.CENTER);
            } else if (rightAlign.isSelected()) {
                ci.setHorizontalAlignment(HorizontalAlignment.RIGHT);
            }
            ci.setDataType((DataType) dataTypeComboBox.getSelectedItem());
            logger.debug("formatCombobBox.getSelectedItem is" + (String) formatComboBox.getSelectedItem());

            if (((DataType) dataTypeComboBox.getSelectedItem()).equals(DataType.TEXT)
                    || (formatComboBox.getSelectedItem() != null && ((String) formatComboBox.getSelectedItem())
                            .equals(ReportUtil.DEFAULT_FORMAT_STRING))) {
                ci.setFormat(null);
            } else {
                ci.setFormat(getFormat(ci.getDataType(), (String) formatComboBox.getSelectedItem()));
            }
            ci.setWidth((Integer) widthSpinner.getValue());

            if (groupRadioButton.isSelected()) {
                ci.setWillGroupOrBreak(GroupAndBreak.GROUP);
            } else if (breakRadioButton.isSelected()) {
                ci.setWillGroupOrBreak(GroupAndBreak.BREAK);
            } else if (pageBreakRadioButton.isSelected()) {
                ci.setWillGroupOrBreak(GroupAndBreak.PAGEBREAK);
            } else {
                ci.setWillGroupOrBreak(GroupAndBreak.NONE);
            }
            ci.setWillSubtotal(subtotalCheckbox.isSelected());

            renderer.refresh();

            return true;
        }

        public void discardChanges() {
            // no op
        }

        public JComponent getPanel() {
            return panel;
        }

        public boolean hasUnsavedChanges() {
            return true;
        }

    };
}

From source file:ca.sqlpower.wabit.swingui.WabitSwingSessionContextImpl.java

License:Open Source License

/**
 *  Builds the GUI/*from ww  w  .  j a v a 2 s. c  om*/
 * @throws SQLObjectException 
 */
private void buildUI() throws SQLObjectException {
    frame.setIconImage(FRAME_ICON.getImage());
    frame.setDefaultCloseOperation(WindowConstants.DO_NOTHING_ON_CLOSE);
    frame.addWindowListener(windowClosingListener);
    aboutAction = new AboutAction(frame);

    // this will be the frame's content pane
    JPanel cp = new JPanel(new BorderLayout());

    JToolBar toolBar = new JToolBar(JToolBar.HORIZONTAL);
    toolBar.setFloatable(false);

    /**
     * Creates a popup menu with all the possible 'New <insert Wabit object
     * here>' options
     */
    Action newAction = new AbstractAction("New", NEW_ICON) {
        public void actionPerformed(ActionEvent e) {
            if (e.getSource() instanceof JButton) {
                WabitSwingSession activeSession = getActiveSwingSession();
                JButton source = (JButton) e.getSource();
                JPopupMenu popupMenu = new JPopupMenu();
                popupMenu.add(new NewWorkspaceAction(WabitSwingSessionContextImpl.this));
                JMenu newWorkspaceServerSubMenu = createServerListMenu(frame, "New Server Workspace",
                        new ServerListMenuItemFactory() {
                            public JMenuItem createMenuEntry(SPServerInfo serviceInfo, Component dialogOwner) {
                                return new JMenuItem(new NewServerWorkspaceAction(dialogOwner,
                                        WabitSwingSessionContextImpl.this, serviceInfo));
                            }
                        });

                if (activeSession != null) {

                    objectsMenu(popupMenu, WabitWorkspace.class.getSimpleName(), null,
                            newWorkspaceServerSubMenu, WabitAccessManager.Permission.CREATE);

                    if (activeSession.getWorkspace().isSystemWorkspace()) {

                        objectsMenu(popupMenu, User.class.getSimpleName(), null,
                                new JMenuItem(new NewUserAction(activeSession)),
                                WabitAccessManager.Permission.CREATE);

                        objectsMenu(popupMenu, Group.class.getSimpleName(), null,
                                new JMenuItem(new NewGroupAction(activeSession)),
                                WabitAccessManager.Permission.CREATE);

                    } else {

                        objectsMenu(popupMenu, QueryCache.class.getSimpleName(), null,
                                new JMenuItem(new NewQueryAction(activeSession)),
                                WabitAccessManager.Permission.CREATE);

                        objectsMenu(popupMenu, OlapQuery.class.getSimpleName(), null,
                                new JMenuItem(new NewOLAPQueryAction(activeSession)),
                                WabitAccessManager.Permission.CREATE);

                        objectsMenu(popupMenu, Chart.class.getSimpleName(), null,
                                new JMenuItem(new NewChartAction(activeSession)),
                                WabitAccessManager.Permission.CREATE);

                        objectsMenu(popupMenu, WabitImage.class.getSimpleName(), null,
                                new JMenuItem(new NewImageAction(activeSession)),
                                WabitAccessManager.Permission.CREATE);

                        objectsMenu(popupMenu, Report.class.getSimpleName(), null,
                                new JMenuItem(new NewReportAction(activeSession)),
                                WabitAccessManager.Permission.CREATE);

                        objectsMenu(popupMenu, Template.class.getSimpleName(), null,
                                new JMenuItem(new NewTemplateAction(activeSession)),
                                WabitAccessManager.Permission.CREATE);

                        if (activeSession.getWorkspace().isServerWorkspace()) {

                            objectsMenu(popupMenu, ReportTask.class.getSimpleName(), null,
                                    new JMenuItem(new NewReportTaskAction(activeSession)),
                                    WabitAccessManager.Permission.CREATE);

                        }
                    }
                }
                popupMenu.show(source, 0, source.getHeight());
            }
        }
    };

    JButton newButton = new JButton(newAction);
    newButton.setVerticalTextPosition(SwingConstants.BOTTOM);
    newButton.setHorizontalTextPosition(SwingConstants.CENTER);

    JButton openButton = new JButton(openAction);
    openButton.setVerticalTextPosition(SwingConstants.BOTTOM);
    openButton.setHorizontalTextPosition(SwingConstants.CENTER);

    JButton saveButton = new JButton(saveAction);
    saveButton.setVerticalTextPosition(SwingConstants.BOTTOM);
    saveButton.setHorizontalTextPosition(SwingConstants.CENTER);

    JButton refreshButton = new JButton(new RefreshWorkspaceAction(this));
    refreshButton.setVerticalTextPosition(SwingConstants.BOTTOM);
    refreshButton.setHorizontalTextPosition(SwingConstants.CENTER);

    // OS X specific client properties to modify the button appearance.
    // This only seems to affect OS X 10.5 Leopard's buttons.
    newButton.putClientProperty("JButton.buttonType", "toolbar");
    openButton.putClientProperty("JButton.buttonType", "toolbar");
    saveButton.putClientProperty("JButton.buttonType", "toolbar");
    refreshButton.putClientProperty("JButton.buttonType", "toolbar");

    toolBar.add(newButton);
    toolBar.add(openButton);
    toolBar.add(saveButton);
    toolBar.add(refreshButton);

    JPanel leftPanel = new JPanel(new BorderLayout());

    // this is checked in the constructor
    assert getSessions().isEmpty();

    final ChangeListener tabChangeListener = new ChangeListener() {

        public void stateChanged(ChangeEvent e) {
            final int selectedIndex = stackedTabPane.getSelectedIndex();
            if (stackedTabPane.indexOfTab("Search") == selectedIndex)
                return;
            if (selectedIndex >= 0) {
                setActiveSession((WabitSwingSession) getSessions().get(selectedIndex - 1));
                setEditorPanel();
            }
        }
    };
    stackedTabPane.addChangeListener(tabChangeListener);

    JPanel logoPanel = new JPanel(new MigLayout("fill, ins 0, gap 0 0"));
    JLabel sqlPowerLogoLabel = SPSUtils.getSQLPowerLogoLabel();
    sqlPowerLogoLabel.setOpaque(false);
    logoPanel.add(sqlPowerLogoLabel, "grow 0 0, push 0 0");
    logoPanel.add(new JLabel(), "grow 100 0, push 100 0");

    leftPanel.add(toolBar, BorderLayout.NORTH);
    leftPanel.add(stackedTabPane, BorderLayout.CENTER);
    leftPanel.add(logoPanel, BorderLayout.SOUTH);

    wabitPane.setLeftComponent(leftPanel);

    wabitPane.setDividerLocation(prefs.getInt(MAIN_DIVIDER_LOCATION, DEFAULT_TREE_WIDTH));

    DefaultFormBuilder statusBarBuilder = new DefaultFormBuilder(
            new FormLayout("pref:grow, 4dlu, pref, 2dlu, max(50dlu; pref), 4dlu, pref"));
    statusBarBuilder.append(statusLabel);

    statusBarBuilder.append("Row Limit", getRowLimitSpinner());

    MemoryMonitor memoryMonitor = new MemoryMonitor();
    memoryMonitor.start();
    JLabel memoryLabel = memoryMonitor.getLabel();
    memoryLabel.setBorder(new EmptyBorder(0, 20, 0, 20));
    statusBarBuilder.append(memoryLabel);

    cp.add(wabitPane, BorderLayout.CENTER);
    cp.add(statusBarBuilder.getPanel(), BorderLayout.SOUTH);

    JMenuBar menuBar = new JMenuBar();
    JMenu fileMenu = new JMenu("File");
    fileMenu.setMnemonic('f');
    menuBar.add(fileMenu);
    fileMenu.add(new NewWorkspaceAction(this));
    JMenu newWorkspaceServerSubMenu = createServerListMenu(frame, "New Server Workspace",
            new ServerListMenuItemFactory() {
                public JMenuItem createMenuEntry(SPServerInfo serviceInfo, Component dialogOwner) {
                    return new JMenuItem(new NewServerWorkspaceAction(dialogOwner,
                            WabitSwingSessionContextImpl.this, serviceInfo));
                }
            });
    fileMenu.add(newWorkspaceServerSubMenu);
    fileMenu.add(new OpenWorkspaceAction(this));
    fileMenu.add(createRecentMenu());

    fileMenu.addSeparator();

    fileMenu.add(createServerListMenu(frame, "Log In to Wabit Server", new ServerListMenuItemFactory() {
        public JMenuItem createMenuEntry(SPServerInfo serviceInfo, Component dialogOwner) {
            return new JMenuItem(
                    new LogInToServerAction(dialogOwner, serviceInfo, WabitSwingSessionContextImpl.this));
        }
    }));

    JMenuItem openDemoMenuItem = new JMenuItem(new AbstractAction() {
        public void actionPerformed(ActionEvent e) {
            try {
                final URI resource = WabitSwingSessionContextImpl.class.getResource(EXAMPLE_WORKSPACE_URL)
                        .toURI();
                OpenWorkspaceAction.loadFiles(WabitSwingSessionContextImpl.this, resource);
            } catch (URISyntaxException ex) {
                throw new RuntimeException(ex);
            }
        }
    });
    fileMenu.addSeparator();
    openDemoMenuItem.setText("Open Demo Workspace");
    openDemoMenuItem.setIcon(OPEN_DEMO_ICON);
    fileMenu.add(openDemoMenuItem);

    fileMenu.addSeparator();
    fileMenu.add(new ImportWorkspaceAction(this));

    fileMenu.addSeparator();
    fileMenu.add(new SaveWorkspaceAction(this));
    fileMenu.add(new SaveWorkspaceAsAction(this));
    Icon saveAllIcon = new ImageIcon(
            WabitSwingSessionContextImpl.class.getClassLoader().getResource("icons/saveAll-16.png"));
    fileMenu.add(new AbstractAction("Save All", saveAllIcon) {
        public void actionPerformed(ActionEvent e) {
            SaveWorkspaceAction.saveAllSessions(WabitSwingSessionContextImpl.this);
        }
    });
    fileMenu.addSeparator();

    JMenuItem closeMenuItem = new JMenuItem(new CloseWorkspaceAction(this));
    closeMenuItem.setAccelerator(
            KeyStroke.getKeyStroke(KeyEvent.VK_W, Toolkit.getDefaultToolkit().getMenuShortcutKeyMask()));
    fileMenu.add(closeMenuItem);
    fileMenu.addSeparator();

    JMenuItem databaseConnectionManager = new JMenuItem(new AbstractAction("Database Connection Manager...") {
        public void actionPerformed(ActionEvent e) {
            WabitSwingSession activeSwingSession = getActiveSwingSession();
            if (activeSwingSession != null) {
                getActiveSwingSession().getDbConnectionManager().showDialog(getFrame());
            } else {
                // XXX: Temporary fix until setActiveSession() fires
                // property change events so that we can disable this action
                // instead.
                JOptionPane.showMessageDialog(frame, "Please open a workspace first in order to see\n"
                        + "which database connections are available");
            }
        }
    });
    fileMenu.add(databaseConnectionManager);

    if (!isMacOSX()) {
        fileMenu.addSeparator();
        fileMenu.add(prefsAction);
        fileMenu.addSeparator();
        fileMenu.add(exitAction);
    }

    JMenu editMenu = new JMenu("Edit");
    editMenu.setMnemonic('e');
    menuBar.add(editMenu);
    final JMenuItem searchMenuItem = new JMenuItem(selectSearchTabAction);
    searchMenuItem.setAccelerator(
            KeyStroke.getKeyStroke(KeyEvent.VK_F, Toolkit.getDefaultToolkit().getMenuShortcutKeyMask()));
    editMenu.add(searchMenuItem);

    JMenu viewMenu = new JMenu("View");
    viewMenu.setMnemonic('v');
    menuBar.add(viewMenu);
    viewMenu.add(new JMenuItem(maximizeEditorAction));

    viewMenu.addSeparator();

    ButtonGroup sourceListStyleGroup = new ButtonGroup();
    for (SourceListStyle sls : SourceListStyle.values()) {
        viewMenu.add(sls.makeMenuItem(this, sourceListStyleGroup));
    }

    JMenu helpMenu = new JMenu("Help");
    helpMenu.setMnemonic('h');
    menuBar.add(helpMenu);
    if (!isMacOSX()) {
        helpMenu.add(aboutAction);
        helpMenu.addSeparator();
    }

    helpMenu.add(new OpenUrlAction(SPSUtils.WABIT_GS_URL, "Getting Started"));
    helpMenu.add(new OpenUrlAction(SPSUtils.WABIT_DEMO_URL, "Tutorials"));
    helpMenu.add(new OpenUrlAction(SPSUtils.WABIT_FAQ_URL, "Frequently Asked Questions"));
    helpMenu.add(SPSUtils.forumAction);
    helpMenu.addSeparator();
    helpMenu.add(new OpenUrlAction(SPSUtils.WABIT_UPGRADE_URL, "Upgrade to Enterprise Edition"));
    helpMenu.add(new OpenUrlAction(SPSUtils.WABIT_PS_URL, "Premium Support"));
    helpMenu.add(new OpenUrlAction(SPSUtils.WABIT_UG_URL, "User Guide"));
    helpMenu.addSeparator();
    helpMenu.add(new CheckForUpdateAction("Check for Updates...", frame));

    frame.setJMenuBar(menuBar);
    frame.setContentPane(cp);

    //prefs
    if (prefs.get("frameBounds", null) != null) {
        String[] frameBounds = prefs.get("frameBounds", null).split(",");
        if (frameBounds.length == 4) {
            logger.debug("Frame bounds are " + Integer.parseInt(frameBounds[0]) + ", "
                    + Integer.parseInt(frameBounds[1]) + ", " + Integer.parseInt(frameBounds[2]) + ", "
                    + Integer.parseInt(frameBounds[3]));
            frame.setBounds(Integer.parseInt(frameBounds[0]), Integer.parseInt(frameBounds[1]),
                    Integer.parseInt(frameBounds[2]), Integer.parseInt(frameBounds[3]));
        }
    } else {
        frame.setSize(1050, 750);
        frame.setLocation(200, 100);
    }

    frame.setVisible(true);

    logger.debug("UI is built.");
}

From source file:ca.sqlpower.wabit.swingui.WabitWelcomeScreen.java

License:Open Source License

private void buildUI() {
    //This panel is only here to center the icons panel in the middle of the dialog

    JPanel iconsPanel = new JPanel(new MigLayout("ins n 0 n 0", "[center, grow]"));
    iconsPanel.setOpaque(false);/*from w w w  .j  av a  2 s . c o  m*/

    JPanel generateLogoPanel = LogoLayout.generateLogoPanel();
    generateLogoPanel.setOpaque(false);
    iconsPanel.add(generateLogoPanel, "wrap, alignx center");

    iconsPanel.add(buildButtonsPanel(), "");

    new JButton(new AbstractAction("View Tutorials") {
        public void actionPerformed(ActionEvent e) {
            // TODO Link to a website with demos of Wabit.
        }
    });
    //      bottomPanelBuilder.append(tutorialButton);
    //Temporary spacer label until tutorials exist on the website.

    DefaultFormBuilder bottomPanelBuilder = new DefaultFormBuilder(
            new FormLayout("pref, 4dlu, pref, 4dlu:grow, pref"));
    bottomPanelBuilder.setDefaultDialogBorder();
    JButton helpButton = new JButton(new HelpAction(context.getFrame()));
    bottomPanelBuilder.append(helpButton);

    mainPanel = new FurryPanel(new BorderLayout());
    mainPanel.add(iconsPanel, BorderLayout.CENTER);
    mainPanel.add(bottomPanelBuilder.getPanel(), BorderLayout.SOUTH);

    mainScrollPane = new JScrollPane(mainPanel);
}

From source file:com.lyndir.lhunath.opal.gui.template.shade.AbstractUi.java

License:Apache License

/**
 * Override this method if you have stuff that needs to be initialized before or after the UI building.<br> <br> Don't forget to call
 * super.buildUi() as well./*from   ww  w  .j a  v  a  2  s.  com*/
 */
protected void buildUi() {

    /* Container. */
    contentPane = new JPanel(new BorderLayout());
    contentPane.add(contentPanel = PaintPanel.gradientPanel());
    FormLayout layout = new FormLayout("0dlu, 0dlu, 0dlu:g, 0dlu, r:p", "t:m, f:0dlu:g, 4dlu, m");
    DefaultFormBuilder builder = new DefaultFormBuilder(layout, contentPanel);
    layout.setColumnGroups(new int[][] { { 1, 5 } });
    builder.setDefaultDialogBorder();

    /* Prepare the look and feel. */
    execute(BasicRequest.THEME, false);

    /* Header */
    logo = new JLabel();
    logo.setHorizontalAlignment(SwingConstants.CENTER);
    logo.addMouseListener(new MouseAdapter() {

        @Override
        public void mouseClicked(MouseEvent e) {

            if (e.getButton() == MouseEvent.BUTTON3)
                BaseConfig.dump();
            else
                toggleOverlay();
        }
    });

    titleBar = new JPanel(new FlowLayout(FlowLayout.RIGHT));
    titleBar.setLayout(new BoxLayout(titleBar, BoxLayout.X_AXIS));
    titleBar.setOpaque(false);

    windowedTitleButton = new JButton(UIUtils.getIcon("windowed-sss.png"));
    windowedTitleButton.setActionCommand("windowed");
    windowedTitleButton.addActionListener(this);
    windowedTitleButton.setBorderPainted(false);
    windowedTitleButton.setContentAreaFilled(false);
    fullscreenTitleButton = new JButton(UIUtils.getIcon("fullscreen-sss.png"));
    fullscreenTitleButton.setActionCommand("fullscreen");
    fullscreenTitleButton.addActionListener(this);
    fullscreenTitleButton.setBorderPainted(false);
    fullscreenTitleButton.setContentAreaFilled(false);
    closeTitleButton = new JButton(UIUtils.getIcon("close-sss.png"));
    closeTitleButton.setActionCommand("close");
    closeTitleButton.addActionListener(this);
    closeTitleButton.setBorderPainted(false);
    closeTitleButton.setContentAreaFilled(false);
    titleBar.add(closeTitleButton);

    builder.nextColumn(2);
    builder.append(logo);
    builder.append(titleBar);

    /* Panels */
    window = new SimpleInternalFrame(null, new JToolBar(), null, true);
    window.setSelected(true);
    window.setOpaque(false);

    /* Tabs */
    List<Tab> tabs = appendCustomTabs();
    tabs.addAll(buildTabs());
    for (Plugin plugin : plugins) {
        List<? extends Tab> pluginTabs = plugin.buildTabs();
        if (pluginTabs != null)
            tabs.addAll(pluginTabs);
    }
    for (Tab tab : tabs)
        tab.setAction(addPanelButton(tab));
    if (showingTab == null)
        showingTab = tabs.get(0);
    execute(BasicRequest.PANEL, false);
    builder.append(window, 5);
    builder.nextLine(2);

    progress = new JProgressBar() {

        @Override
        public void repaint(long tm, int x, int y, int width, int height) {

            setOpaque(getValue() != 0 || isIndeterminate());

            if (getParent() != null)
                getParent().repaint(tm, x, y, width, height);
            super.repaint(tm, x, y, width, height);
        }

        @Override
        protected void paintComponent(Graphics g) {

            super.paintComponent(g);

            if (isOpaque()) {
                ((Graphics2D) g).setPaint(getBackground());
                g.drawRect(0, 0, getWidth() - 1, getHeight() - 1);
            }
        }
    };

    progress.setString("");
    progress.setStringPainted(true);
    progress.setBorderPainted(false);
    progress.setBackground(UIUtils.setAlpha(progress.getBackground(), 100));

    for (int level = 0; level <= 5; ++level) {
        messageStack.add(new Stack<String>());
        progressStack.add(0d);
    }

    builder.append(progress, 5);

    /* Frame. */
    execute(BasicRequest.LOGO, false);
    execute(BasicRequest.FULLSCREEN, false);
}

From source file:com.projity.dialog.AboutDialog.java

License:Common Public License

/**
 * Builds the panel. Initializes and configures components first, then
 * creates a FormLayout, configures the layout, creates a builder, sets a
 * border, and finally adds the components.
 * /* w  ww.j  a va 2 s.  c  o m*/
 * @return the built panel
 */

public JComponent createContentPanel() {
    // Separating the component initialization and configuration
    // from the layout code makes both parts easier to read.
    //TODO set minimum size
    FormLayout layout = new FormLayout("default", // cols //$NON-NLS-1$
            "p, 3dlu,p, 3dlu, p, 3dlu, p, 10dlu,p"); // rows //$NON-NLS-1$

    // Create a builder that assists in adding components to the container.
    // Wrap the panel with a standardized border.
    DefaultFormBuilder builder = new DefaultFormBuilder(layout);
    builder.setDefaultDialogBorder();
    CellConstraints cc = new CellConstraints();
    JLabel logo = new JLabel(IconManager.getIcon("logo.ProjectLibre"));
    logo.setCursor(Cursor.getPredefinedCursor(Cursor.HAND_CURSOR));
    logo.addMouseListener(new MouseAdapter() {
        public void mouseClicked(MouseEvent arg0) {
            BrowserControl.displayURL("http://www.projectlibre.com");//$NON-NLS-1$
        }
    });
    builder.append(logo);
    builder.nextLine(2);
    builder.append(Messages.getContextString("Text.ShortTitle")); //$NON-NLS-1$
    builder.nextLine(2);
    String version = VersionUtils.getVersion();
    builder.append("Version " + (version == null ? "Unknown" : version)); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$ //$NON-NLS-4$      
    builder.nextLine(2);
    builder.append(Messages.getString("AboutDialog.copyright")); //$NON-NLS-1$
    if (Environment.isOpenProj()) {
        builder.nextLine(2);
        builder.append(Main.getRunSinceMessage()); //$NON-NLS-1$
    }
    return builder.getPanel();
}

From source file:com.projity.dialog.assignment.AssignmentDialog.java

License:Common Public License

public JComponent createEditorsButtons() {
    FormLayout layout = new FormLayout("20px", // cols //$NON-NLS-1$
            "20dlu,20px, 3dlu, 20px"); // rows //$NON-NLS-1$
    DefaultFormBuilder builder = new DefaultFormBuilder(layout);
    builder.nextLine(1);//from www  .j ava 2s  . c  o m
    builder.append(stopEditorButton);
    builder.nextLine(2);
    builder.append(cancelEditorButton);
    editorsButtons = builder.getPanel();
    return editorsButtons;
}

From source file:com.projity.dialog.assignment.AssignmentDialog.java

License:Common Public License

public JComponent createButtons() {
    FormLayout layout = new FormLayout("default", // cols //$NON-NLS-1$
            "50dlu,p,3dlu,p, 3dlu, p, 3dlu, p"); // rows //$NON-NLS-1$
    DefaultFormBuilder builder = new DefaultFormBuilder(layout);
    builder.nextLine(1);/* w  ww . java  2 s  .  c  o  m*/
    builder.append(assignButton);
    builder.nextLine(2);
    builder.append(removeButton);
    builder.nextLine(2);
    builder.append(replaceButton);
    builder.nextLine(2);
    builder.add(getHelpButton());

    return builder.getPanel();
}

From source file:com.projity.dialog.assignment.ReplaceAssignmentDialog.java

License:Common Public License

/**
 * Builds the panel. Initializes and configures components first, then
 * creates a FormLayout, configures the layout, creates a builder, sets a
 * border, and finally adds the components.
 * /*from   w  w  w .  j ava2 s  .  c  o m*/
 * @return the built panel
 */

public JComponent createContentPanel() {

    // Separating the component initialization and configuration
    // from the layout code makes both parts easier to read.
    initControls();
    //TODO set minimum size
    FormLayout layout = new FormLayout("140dlu:grow", // cols
            "p, 3dlu, p, 3dlu, fill:200dlu:grow"); // rows

    // Create a builder that assists in adding components to the container.
    // Wrap the panel with a standardized border.
    DefaultFormBuilder builder = new DefaultFormBuilder(layout);
    builder.setDefaultDialogBorder();
    CellConstraints cc = new CellConstraints();
    builder.append(resourceName);
    builder.nextLine(2);

    builder.append(Messages.getString("Text.With"));
    builder.nextLine(2);
    builder.append(spreadSheetPane);
    return builder.getPanel();
}