List of usage examples for com.jgoodies.forms.builder DefaultFormBuilder append
public JLabel append(String textWithMnemonic)
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(); }