Example usage for com.jgoodies.forms.layout FormLayout setHonorsVisibility

List of usage examples for com.jgoodies.forms.layout FormLayout setHonorsVisibility

Introduction

In this page you can find the example usage for com.jgoodies.forms.layout FormLayout setHonorsVisibility.

Prototype

public void setHonorsVisibility(boolean b) 

Source Link

Document

Specifies whether invisible components shall be taken into account by this layout for computing the layout size and setting component bounds.

Usage

From source file:ca.sqlpower.swingui.FontSelector.java

License:Open Source License

public FontSelector(Font font, String[] fontList, SPFontLoader fontLoader) {

    this.fontLoader = fontLoader;
    if (font == null) {
        if (fontList == null || fontList.length == 0) {
            throw new IllegalArgumentException("The fontList parameter requires at least one valid font.");
        }/* ww  w  .j  a  v a2 s .  c om*/
        font = Font.decode(fontList[0]);
        if (font == null) {
            throw new IllegalArgumentException("The fontList[0] element cannot be loaded.");
        }
    }

    logger.debug("Creating new font selector with given font: " + font);

    this.originalFont = font;

    SelectionHandler selectionHandler = new SelectionHandler();
    fontNameList = new JList(fontList);
    fontNameList.addListSelectionListener(selectionHandler);

    fontSizeSpinner = new JSpinner(new SpinnerNumberModel(font.getSize(), 1, 200, 1));
    fontSizeSpinner.addChangeListener(selectionHandler);

    fontSizeList = new JList(FONT_SIZES);
    fontSizeList.addListSelectionListener(new ListSelectionListener() {
        public void valueChanged(ListSelectionEvent e) {
            if (fontSizeList.getSelectedValue() != null) {
                fontSizeSpinner.setValue((Integer) fontSizeList.getSelectedValue());
            }
        }
    });

    styleChoice = new JList(FontStyle.values());
    styleChoice.setSelectedValue(FontStyle.forCode(font.getStyle()), true);
    styleChoice.addListSelectionListener(selectionHandler);

    FormLayout layout = new FormLayout("pref:grow, 4dlu, pref, 4dlu, pref",
            "pref, 4dlu, pref, 4dlu, fill:pref:grow");
    layout.setHonorsVisibility(true);
    DefaultFormBuilder builder = new DefaultFormBuilder(layout);
    CellConstraints cc = new CellConstraints();

    builder.add(new JScrollPane(fontNameList), cc.xywh(1, 1, 1, 3));
    builder.add(fontSizeSpinner, cc.xywh(3, 1, 1, 1));
    builder.add(new JScrollPane(fontSizeList), cc.xywh(3, 3, 1, 1));
    builder.add(new JScrollPane(styleChoice), cc.xywh(5, 1, 1, 3));

    previewArea.setBackground(Color.WHITE);
    previewArea.setPreferredSize(new Dimension(300, 100));
    builder.add(previewArea, cc.xywh(1, 5, 5, 1));

    // Set defaults after creating layout so the "scroll to visible" works
    fontSizeList.setSelectedValue(Integer.valueOf(font.getSize()), true);
    fontNameList.setSelectedValue(font.getFamily(), true);
    logger.debug(
            "Set family list to \"" + font.getFamily() + "\" and size to " + Integer.valueOf(font.getSize()));

    panel = builder.getPanel();

    previewFont(); // ensure view is up to date!
}

From source file:org.thelq.stackexchange.dbimport.gui.GUI.java

License:Apache License

public GUI(Controller passedController) {
    //Initialize logger
    logAppender = new GUILogAppender(this);

    //Set our Look&Feel
    try {/*from   ww  w.  j  a va  2 s. com*/
        if (SystemUtils.IS_OS_WINDOWS)
            UIManager.setLookAndFeel(new WindowsLookAndFeel());
        else
            UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());
    } catch (Exception e) {
        log.warn("Defaulting to Swing L&F due to exception", e);
    }

    this.controller = passedController;
    frame = new JFrame();
    frame.setTitle("Unified StackExchange Data Dump Importer v" + Controller.VERSION);
    frame.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);

    //Setup menu
    JMenuBar menuBar = new JMenuBar();
    menuAdd = new JMenuItem("Add Folders/Archives");
    menuAdd.setMnemonic(KeyEvent.VK_F);
    menuBar.add(menuAdd);
    frame.setJMenuBar(menuBar);

    //Primary panel
    FormLayout primaryLayout = new FormLayout("5dlu, pref:grow, 5dlu, 5dlu, pref",
            "pref, top:pref, pref, fill:140dlu:grow, pref, fill:80dlu");
    PanelBuilder primaryBuilder = new PanelBuilder(primaryLayout)
            .border(BorderFactory.createEmptyBorder(5, 5, 5, 5));

    //DB Config panel
    primaryBuilder.addSeparator("Database Configuration", CC.xyw(1, 1, 2));
    FormLayout configLayout = new FormLayout("pref, 3dlu, pref:grow, 6dlu, pref",
            "pref, pref:grow, 3dlu, pref:grow, 3dlu, pref:grow, 3dlu, pref:grow, 3dlu, pref:grow, 3dlu, pref:grow");
    configLayout.setHonorsVisibility(true);
    final PanelBuilder configBuilder = new PanelBuilder(configLayout);
    configBuilder.addLabel("Server", CC.xy(1, 2), dbType = new JComboBox<DatabaseOption>(), CC.xy(3, 2));
    configBuilder.add(dbAdvanced = new JCheckBox("Show advanced options"), CC.xy(5, 2));
    configBuilder.addLabel("JDBC Connection", CC.xy(1, 4), jdbcString = new JTextField(15), CC.xyw(3, 4, 3));
    configBuilder.addLabel("Username", CC.xy(1, 6), username = new JTextField(10), CC.xy(3, 6));
    configBuilder.addLabel("Password", CC.xy(1, 8), password = new JPasswordField(10), CC.xy(3, 8));
    configBuilder.add(importButton = new JButton("Import"), CC.xywh(5, 6, 1, 3));
    //Add hidden
    JLabel dialectLabel = new JLabel("Dialect");
    dialectLabel.setVisible(false);
    configBuilder.add(dialectLabel, CC.xy(1, 10), dialect = new JTextField(10), CC.xyw(3, 10, 3));
    dialect.setVisible(false);
    JLabel driverLabel = new JLabel("Driver");
    driverLabel.setVisible(false);
    configBuilder.add(driverLabel, CC.xy(1, 12), driver = new JTextField(10) {
        @Override
        public void setText(String text) {
            if (StringUtils.isBlank(text))
                log.debug("Text is blank", new RuntimeException("Text " + text + " is blank"));
            super.setText(text);
        }
    }, CC.xyw(3, 12, 3));
    driver.setVisible(false);
    primaryBuilder.add(configBuilder.getPanel(), CC.xy(2, 2));

    //Options
    primaryBuilder.addSeparator("Options", CC.xyw(4, 1, 2));
    FormLayout optionsLayout = new FormLayout("pref, 3dlu, pref:grow", "");
    DefaultFormBuilder optionsBuilder = new DefaultFormBuilder(optionsLayout);
    optionsBuilder.append(disableCreateTables = new JCheckBox("Disable Creating Tables"), 3);
    optionsBuilder.append("Global Table Prefix", globalTablePrefix = new JTextField(7));
    optionsBuilder.append("Threads", threads = new JSpinner());
    //Save a core for the database
    int numThreads = Runtime.getRuntime().availableProcessors();
    numThreads = (numThreads != 1) ? numThreads - 1 : numThreads;
    threads.setModel(new SpinnerNumberModel(numThreads, 1, 100, 1));
    optionsBuilder.append("Batch Size", batchSize = new JSpinner());
    batchSize.setModel(new SpinnerNumberModel(500, 1, 500000, 1));
    primaryBuilder.add(optionsBuilder.getPanel(), CC.xy(5, 2));

    //Locations
    primaryBuilder.addSeparator("Dump Locations", CC.xyw(1, 3, 5));
    FormLayout locationsLayout = new FormLayout("pref, 15dlu, pref, 5dlu, pref, 5dlu, pref:grow, 2dlu, pref",
            "");
    locationsBuilder = new DefaultFormBuilder(locationsLayout, new ScrollablePanel()).background(Color.WHITE)
            .lineGapSize(Sizes.ZERO);
    locationsPane = new JScrollPane(locationsBuilder.getPanel());
    locationsPane.getViewport().setBackground(Color.white);
    locationsPane.setVerticalScrollBarPolicy(JScrollPane.VERTICAL_SCROLLBAR_ALWAYS);
    locationsPane.setHorizontalScrollBarPolicy(JScrollPane.HORIZONTAL_SCROLLBAR_NEVER);
    primaryBuilder.add(locationsPane, CC.xyw(2, 4, 4));

    //Logger
    primaryBuilder.addSeparator("Log", CC.xyw(1, 5, 5));
    loggerText = new JTextPane();
    loggerText.setEditable(false);
    JPanel loggerTextPanel = new JPanel(new BorderLayout());
    loggerTextPanel.add(loggerText);
    JScrollPane loggerPane = new JScrollPane(loggerTextPanel);
    loggerPane.setVerticalScrollBarPolicy(JScrollPane.VERTICAL_SCROLLBAR_ALWAYS);
    loggerPane.setHorizontalScrollBarPolicy(JScrollPane.HORIZONTAL_SCROLLBAR_ALWAYS);
    JPanel loggerPanePanel = new JPanel(new BorderLayout());
    loggerPanePanel.add(loggerPane);
    primaryBuilder.add(loggerPanePanel, CC.xyw(2, 6, 4));

    menuAdd.addActionListener(new ActionListener() {
        public void actionPerformed(ActionEvent e) {
            //TODO: Allow 7z files but handle corner cases
            final JFileChooser fc = new JFileChooser();
            fc.setFileSelectionMode(JFileChooser.FILES_AND_DIRECTORIES);
            fc.setMultiSelectionEnabled(true);
            fc.setDialogTitle("Select Folders/Archives");
            fc.addChoosableFileFilter(new FileNameExtensionFilter("Archives", "7z", "zip"));
            fc.addChoosableFileFilter(new FileFilter() {
                @Getter
                protected String description = "Folders";

                @Override
                public boolean accept(File file) {
                    return file.isDirectory();
                }
            });

            if (fc.showOpenDialog(frame) != JFileChooser.APPROVE_OPTION)
                return;

            //Add files and folders in a seperate thread while updating gui in EDT
            importButton.setEnabled(false);
            for (File curFile : fc.getSelectedFiles()) {
                DumpContainer dumpContainer = null;
                try {
                    if (curFile.isDirectory())
                        dumpContainer = new FolderDumpContainer(curFile);
                    else
                        dumpContainer = new ArchiveDumpContainer(controller, curFile);
                    controller.addDumpContainer(dumpContainer);
                } catch (Exception ex) {
                    String type = (dumpContainer != null) ? dumpContainer.getType() : "";
                    LoggerFactory.getLogger(getClass()).error("Cannot open " + type, ex);
                    String location = (dumpContainer != null) ? Utils.getLongLocation(dumpContainer) : "";
                    showErrorDialog(ex, "Cannot open " + location, curFile.getAbsolutePath());
                    continue;
                }
            }
            updateLocations();
            importButton.setEnabled(true);
        }
    });

    //Add options (Could be in a map, but this is cleaner)
    dbType.addItem(new DatabaseOption().name("MySQL 5.5.3+")
            .jdbcString("jdbc:mysql://127.0.0.1:3306/stackexchange?rewriteBatchedStatements=true")
            .dialect("org.hibernate.dialect.MySQL5Dialect").driver("com.mysql.jdbc.Driver"));
    dbType.addItem(new DatabaseOption().name("PostgreSQL 8.1")
            .jdbcString("jdbc:postgresql://127.0.0.1:5432/stackexchange")
            .dialect("org.hibernate.dialect.PostgreSQL81Dialect").driver("org.postgresql.Driver"));
    dbType.addItem(new DatabaseOption().name("PostgreSQL 8.2+")
            .jdbcString("jdbc:postgresql://127.0.0.1:5432/stackexchange")
            .dialect("org.hibernate.dialect.PostgreSQL82Dialect").driver("org.postgresql.Driver"));
    dbType.addItem(new DatabaseOption().name("SQL Server")
            .jdbcString("jbdc:jtds:mssql://127.0.0.1:1433/stackexchange")
            .dialect("org.hibernate.dialect.SQLServerDialect").driver("net.sourceforge.jtds.jdbc.Driver"));
    dbType.addItem(new DatabaseOption().name("SQL Server 2005+")
            .jdbcString("jbdc:jtds:mssql://127.0.0.1:1433/stackexchange")
            .dialect("org.hibernate.dialect.SQLServer2005Dialect").driver("net.sourceforge.jtds.jdbc.Driver"));
    dbType.addItem(new DatabaseOption().name("SQL Server 2008+")
            .jdbcString("jbdc:jtds:mssql://127.0.0.1:1433/stackexchange")
            .dialect("org.hibernate.dialect.SQLServer2008Dialect").driver("net.sourceforge.jtds.jdbc.Driver"));
    dbType.addItem(new DatabaseOption().name("H2").jdbcString("jdbc:h2:stackexchange")
            .dialect("org.hibernate.dialect.H2Dialect").driver("org.h2.Driver"));
    dbType.setSelectedItem(null);
    dbType.addItemListener(new ItemListener() {
        boolean shownMysqlWarning = false;

        public void itemStateChanged(ItemEvent e) {
            //Don't run this twice for a single select
            if (e.getStateChange() == ItemEvent.DESELECTED)
                return;

            DatabaseOption selectedOption = (DatabaseOption) dbType.getSelectedItem();
            if (selectedOption.name().startsWith("MySQL") && !shownMysqlWarning) {
                //Hide popup so you don't have to click twice on the dialog 
                dbType.setPopupVisible(false);
                JOptionPane.showMessageDialog(frame,
                        "Warning: Your server must be configured with character_set_server=utf8mb4"
                                + "\nOtherwise, data dumps that contain 4 byte UTF-8 characters will fail",
                        "MySQL Warning", JOptionPane.WARNING_MESSAGE);
                shownMysqlWarning = true;
            }

            setDbOption(selectedOption);
        }
    });

    //Show and hide advanced options with checkbox
    dbAdvanced.addActionListener(new ActionListener() {
        public void actionPerformed(ActionEvent e) {
            boolean selected = ((JCheckBox) e.getSource()).isSelected();
            driver.setVisible(selected);
            ((JLabel) driver.getClientProperty("labeledBy")).setVisible(selected);
            dialect.setVisible(selected);
            ((JLabel) dialect.getClientProperty("labeledBy")).setVisible(selected);
        }
    });

    importButton.addActionListener(new ActionListener() {
        protected void showImportError(String error) {
            JOptionPane.showMessageDialog(frame, error, "Configuration Error", JOptionPane.ERROR_MESSAGE);
        }

        protected void showInputErrorDatabase(String error) {
            if (dbType.getSelectedItem() == null)
                showImportError("No dbType specified, " + StringUtils.uncapitalize(error));
            else
                showImportError(error);
        }

        public void actionPerformed(ActionEvent e) {
            boolean validationPassed = false;
            if (controller.getDumpContainers().isEmpty())
                showImportError("Please add dump folders/archives");
            else if (StringUtils.isBlank(jdbcString.getText()))
                showInputErrorDatabase("Must specify JDBC String");
            else if (StringUtils.isBlank(driver.getText()))
                showInputErrorDatabase("Must specify driver");
            else if (StringUtils.isBlank(dialect.getText()))
                showInputErrorDatabase("Must specify hibernate dialect");
            else
                validationPassed = true;

            if (!validationPassed)
                return;

            //Disable all GUI components so they can't change anything during processing
            setGuiEnabled(false);

            //Run in new thread
            controller.getGeneralThreadPool().execute(new Runnable() {
                public void run() {
                    try {
                        start();
                    } catch (final Exception e) {
                        //Show an error message box
                        SwingUtilities.invokeLater(new Runnable() {
                            public void run() {
                                LoggerFactory.getLogger(getClass()).error("Cannot import", e);
                                showErrorDialog(e, "Cannot import", null);
                            }
                        });
                    }
                    //Renable GUI
                    SwingUtilities.invokeLater(new Runnable() {
                        public void run() {
                            setGuiEnabled(true);
                        }
                    });
                }
            });
        }
    });

    //Done, init logger
    logAppender.init();
    log.info("Finished creating GUI");

    //Display
    frame.setContentPane(primaryBuilder.getPanel());
    frame.pack();
    frame.setMinimumSize(frame.getSize());

    frame.setVisible(true);
}

From source file:pcgui.ImportModelPanel.java

public void initialize() {
    FormLayout formLayout = new FormLayout(
            new ColumnSpec[] { ColumnSpec.decode("default:grow"), ColumnSpec.decode("107px"),
                    FormFactory.LABEL_COMPONENT_GAP_COLSPEC, ColumnSpec.decode("235px"),
                    ColumnSpec.decode("default:grow"), },
            new RowSpec[] { FormFactory.RELATED_GAP_ROWSPEC, RowSpec.decode("20px"), RowSpec.decode("46px"),
                    RowSpec.decode("29px"), RowSpec.decode("25dlu"), RowSpec.decode("29px"), });
    formLayout.setHonorsVisibility(false);
    setLayout(formLayout);/*from  w  w  w.  j a  v  a 2  s  .  c  o  m*/

    JLabel lblNewLabel_1 = new JLabel("Import Model");
    lblNewLabel_1.setFont(new Font("Tahoma", Font.BOLD, 16));
    add(lblNewLabel_1, "4, 2, left, center");

    JButton btnSelectFile = new JButton("Select File");
    btnSelectFile.addActionListener(new ActionListener() {
        public void actionPerformed(ActionEvent e) {
            jFileChooser = new JFileChooser();

            File workingDirectory = new File(System.getProperty("user.dir"));

            jFileChooser.setCurrentDirectory(workingDirectory);

            jFileChooser.setFileFilter(new FileFilter() {

                @Override
                public String getDescription() {
                    // TODO Auto-generated method stub
                    return "Mosel files";
                }

                @Override
                public boolean accept(File f) {
                    // TODO Auto-generated method stub
                    return f.isDirectory() || f.getName().endsWith(".mos");

                }
            });
            int returnVal = jFileChooser.showOpenDialog(null);

            if (returnVal == JFileChooser.APPROVE_OPTION) {
                File file = jFileChooser.getSelectedFile();

                // This is where a real application would open the file.

                lblSelectedFile.setText(file.getName());
                if (file.getName().endsWith(".mos")) {
                    btnNext.setEnabled(true);
                }

            } else {
                //               System.out.println("Open command cancelled by user.");
            }
        }
    });
    add(btnSelectFile, "2, 4, left, center");
    lblSelectedFile = new JLabel("No file selected");
    add(lblSelectedFile, "4, 4, fill, center");

    btnNext = new JButton("Next");
    btnNext.addActionListener(new ActionListener() {

        public void actionPerformed(ActionEvent e) {
            if (jFileChooser != null) {
                File file = jFileChooser.getSelectedFile();

                if (file.getName().endsWith("mos")) {
                    ModelParser parser = new ModelParser();
                    try {
                        paramList = parser.modelImport(file);

                        if (paramList != null) {
                            paramListReceiver.onParamListReceived(file, paramList, parser);
                            switcher.onPanelSwitched(Constants.SETUP_PARAM_PANEL_ID);
                        }
                    } catch (XPRMLicenseError e1) {
                        // TODO Auto-generated catch block
                        System.out.println(" XPRMLicenseError occured : " + e1.getMessage());
                        JOptionPane.showMessageDialog(new JFrame(),
                                "XPRMLicenseError occurred : " + e1.getMessage(), "XPRMLicenseError",
                                JOptionPane.ERROR_MESSAGE);
                        //                     e1.printStackTrace();
                    }
                    //                  catch (XPRMCompileException e1) {
                    //                     // TODO Auto-generated catch block
                    //                     System.out.println("XPRMCompileException occured : "+e1.getMessage());
                    //                     JOptionPane.showMessageDialog(new JFrame(), "XPRMCompileException occurred : "+e1.getMessage());
                    //                     e1.printStackTrace();
                    //                  } 
                    catch (IOException e1) {
                        // TODO Auto-generated catch block
                        System.out.println("IOException occured : " + e1.getMessage());
                        JOptionPane.showMessageDialog(new JFrame(),
                                "IOException occurred : " + e1.getMessage());
                        e1.printStackTrace();
                    }
                }

            }
        }
    });
    setFocusTraversalPolicy(new FocusTraversalOnArray(
            new Component[] { btnSelectFile, lblSelectedFile, lblNewLabel_1, btnNext }));
    add(btnNext, "4, 6, left, center");
}