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.swingui.db.DataSourceTypeCopyPropertiesPanel.java

License:Open Source License

private JPanel buildUI() {
    DefaultFormBuilder builder = new DefaultFormBuilder(new FormLayout("pref"));
    builder.setDefaultDialogBorder();/*from   ww w.  j a v  a2s  .c  o  m*/
    builder.append(new JLabel("Copy all properties from which data source type?"));
    builder.append(dsTypesComboBox);
    builder.append(new JLabel("Note: This will overwrite all current settings on " + dsType.getName() + "."));
    return builder.getPanel();
}

From source file:ca.sqlpower.swingui.db.NewDataSourceTypePanel.java

License:Open Source License

private JPanel buildUI() {
    DefaultFormBuilder builder = new DefaultFormBuilder(new FormLayout("pref"));
    builder.setDefaultDialogBorder();/*from  ww  w.  j  a  v  a  2s.c om*/

    builder.append("New Data Source Type");
    builder.append(blankOption);
    builder.append(copyOption);
    builder.append(existingDSTypes);

    return builder.getPanel();
}

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

License:Open Source License

/**
 * Creates a new user prompter that uses a dialog to prompt the user.
 * Normally this constructor should be called via a {@link UserPrompterFactory}
 * such as the current ArchitectSession.
 *///from  w w w . j a va 2s . c  om
public DialogUserPrompter(UserPromptOptions optionType, UserPromptResponse defaultResponseType, JFrame owner,
        String questionMessage, boolean modal, String... buttonNames) {
    if (optionType.getButtonCount() != buttonNames.length) {
        throw new IllegalStateException(
                "Expecting " + optionType.getButtonCount() + " arguments for the optionType " + optionType
                        + "Recieved only " + buttonNames.length + "arguments\n" + Arrays.toString(buttonNames));
    }
    this.defaultResponseType = defaultResponseType;
    this.owner = owner;
    applyToAll = new JCheckBox(Messages.getString("ModalDialogUserPrompter.applyToAllOption")); //$NON-NLS-1$

    confirmDialog = new JDialog(owner);

    // FIXME the title needs to be configurable and/or set itself based on prompt type
    confirmDialog.setTitle(""); //$NON-NLS-1$

    // this is just filled with the message pattern template to help with sizing
    //Using JEditorPane for html messages as JTextAreas do not respect html tags.
    //Using JTextArea for the rest of the messages as JEditorPane does not support
    //new line characters and to keep font consistent.
    if (questionMessage.startsWith("<html>")) {
        questionField = new JEditorPane();
        questionField.setText(questionMessage);
        ((JEditorPane) questionField).setContentType("text/html");
        questionField.setFont(new JTextArea().getFont());
    } else {
        questionField = new JTextArea(questionMessage);
    }
    questionField.setEditable(false);
    questionField.setBackground(null);

    questionFormat = new MessageFormat(questionMessage);

    JPanel confirmPanel = new JPanel();
    FormLayout formLayout = new FormLayout("10dlu, 2dlu, pref:grow, 2dlu, 10dlu" //$NON-NLS-1$
            , ""); //$NON-NLS-1$
    DefaultFormBuilder builder = new DefaultFormBuilder(formLayout, confirmPanel);
    builder.setDefaultDialogBorder();

    builder.nextColumn(2);
    builder.append(questionField);
    builder.nextLine();

    builder.appendParagraphGapRow();
    builder.nextLine();

    ButtonBarBuilder buttonBar = new ButtonBarBuilder();
    buttonBar.addGlue();
    JButton okButton = new JButton();
    if (optionType == UserPromptOptions.OK_NEW_NOTOK_CANCEL || optionType == UserPromptOptions.OK_NOTOK_CANCEL
            || optionType == UserPromptOptions.OK_NEW_CANCEL || optionType == UserPromptOptions.OK_CANCEL
            || optionType == UserPromptOptions.OK) {
        okButton.setText(buttonNames[0]);
        buttonBar.addGridded(okButton);
    }
    JButton notOkButton = new JButton();
    if (optionType == UserPromptOptions.OK_NEW_NOTOK_CANCEL
            || optionType == UserPromptOptions.OK_NOTOK_CANCEL) {
        buttonBar.addRelatedGap();
        notOkButton
                .setText((optionType == UserPromptOptions.OK_NOTOK_CANCEL) ? buttonNames[1] : buttonNames[2]);
        buttonBar.addGridded(notOkButton);
    }
    JButton cancelButton = new JButton();
    if (optionType == UserPromptOptions.OK_NEW_NOTOK_CANCEL || optionType == UserPromptOptions.OK_NOTOK_CANCEL
            || optionType == UserPromptOptions.OK_NEW_CANCEL || optionType == UserPromptOptions.OK_CANCEL) {
        buttonBar.addRelatedGap();
        cancelButton.setText(buttonNames[buttonNames.length - 1]);
        buttonBar.addGridded(cancelButton);
    }
    buttonBar.addGlue();

    okButton.addActionListener(new ActionListener() {
        public void actionPerformed(ActionEvent e) {
            response = UserPromptResponse.OK;
            confirmDialog.dispose();
        }
    });
    notOkButton.addActionListener(new ActionListener() {
        public void actionPerformed(ActionEvent e) {
            response = UserPromptResponse.NOT_OK;
            confirmDialog.dispose();
        }
    });
    cancelButton.addActionListener(new ActionListener() {
        public void actionPerformed(ActionEvent e) {
            response = UserPromptResponse.CANCEL;
            confirmDialog.dispose();
        }
    });
    builder.append(""); //$NON-NLS-1$
    builder.append(buttonBar.getPanel());
    builder.nextLine();

    builder.append(""); //$NON-NLS-1$
    builder.append(applyToAll);

    switch (defaultResponseType) {
    case OK:
        okButton.requestFocusInWindow();
        break;
    case NOT_OK:
        notOkButton.requestFocusInWindow();
        break;
    case CANCEL:
        cancelButton.requestFocusInWindow();
        break;
    default:
        throw new UnsupportedOperationException(
                "Default response type : " + defaultResponseType + " is not known");
    }

    confirmDialog.setModal(modal);
    confirmDialog.add(builder.getPanel());
}

From source file:ca.sqlpower.swingui.enterprise.client.ServerProjectsManagerPanel.java

License:Open Source License

/**
 * This constructor creates a dialog for modifying and loading a project
 * from a single server designated by the given serverInfo parameter.
 * /*w  w w . j a  va2  s .  co m*/
 * @param serverInfo
 *            Projects will be retrieved from this server based on the
 *            information and displayed. The dialog will allow editing the
 *            security as well as creating and deleting projects on this
 *            server.
 * @param dialogOwner
 *            The dialog to parent new dialogs to.
 * @param upf
 *            A user prompter factory for displaying error and warning
 *            messages to users.
 * @param closeAction
 *            An action that will close the dialog or frame that this dialog
 *            is contained in.
 * @param defaultFileDirectory
 *            A default file directory to start looking for files in if the
 *            user wants to upload a project. If null this will default to
 *            the user's home directory.
 * @param cookieStore
 *            A cookie store for HTTP requests. Used by the
 *            {@link ClientSideSessionUtils}.
 */
public ServerProjectsManagerPanel(SPServerInfo serverInfo, Component dialogOwner, UserPrompterFactory upf,
        Action closeAction, File defaultFileDirectory, CookieStore cookieStore) {
    this.serverInfo = serverInfo;
    this.dialogOwner = dialogOwner;
    this.upf = upf;
    this.closeAction = closeAction;
    this.defaultFileDirectory = defaultFileDirectory;
    this.cookieStore = cookieStore;

    cookieStore.clear();

    DefaultFormBuilder builder = new DefaultFormBuilder(
            new FormLayout("pref:grow, 5dlu, pref", "pref, pref, pref"));

    servers = null;

    projects = new JList(new DefaultListModel());
    projects.addMouseListener(new MouseAdapter() {
        @Override
        public void mouseReleased(MouseEvent e) {
            refreshPanel();
            if (e.getClickCount() == 2 && SwingUtilities.isLeftMouseButton(e)) {
                getOpenAction().actionPerformed(null);
            }
        }
    });

    JScrollPane projectsPane = new JScrollPane(projects);
    projectsPane.setPreferredSize(new Dimension(250, 300));

    CellConstraints cc = new CellConstraints();
    builder.add(new JLabel(serverInfo.getName() + "'s projects:"), cc.xyw(1, 1, 2));
    builder.nextLine();
    builder.add(projectsPane, cc.xywh(1, 2, 1, 2));

    DefaultFormBuilder buttonBarBuilder = new DefaultFormBuilder(new FormLayout("pref"));
    buttonBarBuilder.append(new JButton(refreshAction));
    buttonBarBuilder.append(securityButton);
    buttonBarBuilder.append(new JButton(newAction));
    buttonBarBuilder.append(openButton);
    buttonBarBuilder.append(new JButton(deleteAction));
    buttonBarBuilder.append(new JButton(closeAction));
    builder.add(buttonBarBuilder.getPanel(), cc.xy(3, 2));
    builder.setDefaultDialogBorder();
    panel = builder.getPanel();
}

From source file:ca.sqlpower.swingui.enterprise.client.ServerProjectsManagerPanel.java

License:Open Source License

/**
 * Creates a dialog that lets the user choose a server connection and then a
 * project.//ww  w . j a  va2 s .  c o  m
 * 
 * @param serverManager
 *            This object contains all of the server information objects
 *            known and the servers based on their information will be
 *            displayed in a list so a user can navigate to different
 *            projects in different servers.
 * @param dialogOwner
 *            The dialog to parent new dialogs to.
 * @param upf
 *            A user prompter factory for displaying error and warning
 *            messages to users.
 * @param closeAction
 *            An action that will close the dialog or frame that this dialog
 *            is contained in.
 * @param defaultFileDirectory
 *            A default file directory to start looking for files in if the
 *            user wants to upload a project. If null this will default to
 *            the user's home directory.
 * @param cookieStore
 *            A cookie store for HTTP requests. Used by the
 *            {@link ClientSideSessionUtils}.
 */
public ServerProjectsManagerPanel(SPServerInfoManager serverManager, Component dialogOwner,
        UserPrompterFactory upf, Action closeAction, File defaultFileDirectory, CookieStore cookieStore) {
    this.dialogOwner = dialogOwner;
    this.upf = upf;
    this.closeAction = closeAction;
    this.defaultFileDirectory = defaultFileDirectory;
    this.cookieStore = cookieStore;

    cookieStore.clear();

    DefaultFormBuilder builder = new DefaultFormBuilder(
            new FormLayout("pref:grow, 5dlu, pref:grow, 5dlu, pref", "pref, pref, pref"));

    servers = new JList(new DefaultListModel());
    servers.addMouseListener(new MouseAdapter() {
        @Override
        public void mouseReleased(MouseEvent e) {
            if (SwingUtilities.isLeftMouseButton(e)) {
                refreshInfoList();
            }
        }
    });

    DefaultListModel serversModel = (DefaultListModel) servers.getModel();
    serversModel.removeAllElements();
    if (serverManager.getServers(false).size() > 0) {
        for (SPServerInfo serverInfo : serverManager.getServers(false)) {
            serversModel.addElement(serverInfo);
        }
    } else {
        serversModel.addElement("No Servers");
        servers.setEnabled(false);
    }

    projects = new JList(new DefaultListModel());
    projects.addMouseListener(new MouseAdapter() {
        @Override
        public void mouseReleased(MouseEvent e) {
            refreshPanel();
            if (e.getClickCount() == 2 && SwingUtilities.isLeftMouseButton(e)) {
                getOpenAction().actionPerformed(null);
            }
        }
    });

    JScrollPane projectsPane = new JScrollPane(projects);
    projectsPane.setPreferredSize(new Dimension(250, 300));

    JScrollPane serverPane = new JScrollPane(servers);
    serverPane.setPreferredSize(new Dimension(250, 300));

    CellConstraints cc = new CellConstraints();
    builder.add(new JLabel("Servers:"), cc.xyw(1, 1, 2));
    builder.add(new JLabel("Projects:"), cc.xyw(3, 1, 2));
    builder.nextLine();
    builder.add(serverPane, cc.xywh(1, 2, 1, 2));
    builder.add(projectsPane, cc.xywh(3, 2, 1, 2));

    DefaultFormBuilder buttonBarBuilder = new DefaultFormBuilder(new FormLayout("pref"));
    buttonBarBuilder.append(new JButton(refreshAction));
    buttonBarBuilder.append(securityButton);
    buttonBarBuilder.append(new JButton(newAction));
    buttonBarBuilder.append(openButton);
    buttonBarBuilder.append(new JButton(uploadAction));
    buttonBarBuilder.append(new JButton(deleteAction));
    buttonBarBuilder.append(new JButton(closeAction));
    builder.add(buttonBarBuilder.getPanel(), cc.xy(5, 2));
    builder.setDefaultDialogBorder();
    panel = builder.getPanel();
}

From source file:ca.sqlpower.swingui.enterprise.client.SPServerInfoManagerPanel.java

License:Open Source License

/**
 * Creates a panel that displays the currently configured server
 * connections. New connections can be added from this panel and existing
 * connections can be modified or removed.
 * /* w  w  w .  j a  v  a  2  s .c  om*/
 * @param manager
 *            An {@link SPServerInfoManager} instance that contains server connection information.
 * @param dialogOwner
 *            A component that will be used as the dialog owner for other
 *            panels.
 * @param closeAction
 *            An action that will properly close the object displaying the
 *            panel.
 * @param boxLabel
 *           Label of the server information box
 * @param addOrEditDialogLable
 *             Label of the Add/Edit panel
 */
public SPServerInfoManagerPanel(SPServerInfoManager manager, Component dialogOwner, Action closeAction,
        String boxLabel, String addOrEditDialogLable) {
    this.manager = manager;
    this.dialogOwner = dialogOwner;
    this.boxLable = boxLabel;
    this.addOrEditDialogLabel = addOrEditDialogLable;
    DefaultFormBuilder builder = new DefaultFormBuilder(
            new FormLayout("pref:grow, 5dlu, pref", "pref, pref, pref"));

    serverInfos = new JList(new DefaultListModel());
    serverInfos.addMouseListener(new MouseAdapter() {
        @Override
        public void mouseClicked(MouseEvent e) {
            if (e.getClickCount() == 2 && SwingUtilities.isLeftMouseButton(e)
                    && connectButton.getAction() != null) {
                connectButton.getAction().actionPerformed(null);
            }
        }

    });
    JScrollPane scrollPane = new JScrollPane(serverInfos);
    scrollPane.setPreferredSize(new Dimension(400, 300));

    this.connectButton = new JButton();

    // Build the GUI
    refreshInfoList();
    CellConstraints cc = new CellConstraints();
    builder.add(new JLabel(boxLable), cc.xyw(1, 1, 3));
    builder.nextLine();
    builder.add(scrollPane, cc.xywh(1, 2, 1, 2));

    DefaultFormBuilder buttonBarBuilder = new DefaultFormBuilder(new FormLayout("pref"));
    buttonBarBuilder.append(new JButton(addAction));
    buttonBarBuilder.append(new JButton(editAction));
    buttonBarBuilder.append(new JButton(removeAction));
    buttonBarBuilder.append(connectButton);
    buttonBarBuilder.append(new JButton(closeAction));
    builder.add(buttonBarBuilder.getPanel(), cc.xy(3, 2));
    builder.setDefaultDialogBorder();
    panel = builder.getPanel();
}

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

License:Open Source License

public ModalDialogListUserPrompter(JFrame parentFrame, String question, List<T> responses, T defaultResponse) {
    this.parentFrame = parentFrame;
    this.defaultResponse = defaultResponse;
    applyToAll = new JCheckBox(Messages.getString("ModalDialogUserPrompter.applyToAllOption")); //$NON-NLS-1$

    confirmDialog = new JDialog(parentFrame);

    // FIXME the title needs to be configurable and/or set itself based on prompt type
    confirmDialog.setTitle(""); //$NON-NLS-1$

    // this is just filled with the message pattern template to help with sizing
    questionField = new JTextArea(question);
    questionField.setEditable(false);//from  w  w  w  .  jav  a2  s. co m
    questionField.setBackground(null);

    questionFormat = new MessageFormat(question);

    JPanel confirmPanel = new JPanel();
    FormLayout formLayout = new FormLayout("pref:grow" //$NON-NLS-1$
            , ""); //$NON-NLS-1$

    optionBox = new JComboBox();
    for (T item : responses) {
        optionBox.addItem(item);
    }

    optionBox.setSelectedItem(defaultResponse);
    DefaultFormBuilder builder = new DefaultFormBuilder(formLayout, confirmPanel);
    builder.setDefaultDialogBorder();

    builder.append(questionField);

    builder.nextLine();
    builder.append(optionBox);

    builder.nextLine();
    ButtonBarBuilder buttonBar = new ButtonBarBuilder();
    buttonBar.addGlue();
    JButton okButton = new JButton();
    okButton.setText("Ok");
    buttonBar.addGridded(okButton);
    buttonBar.addGlue();

    okButton.addActionListener(new ActionListener() {
        @SuppressWarnings("unchecked")
        public void actionPerformed(ActionEvent e) {
            responseButton = UserPromptResponse.OK;
            response = (T) optionBox.getSelectedItem();
            confirmDialog.dispose();
        }
    });
    builder.append(""); //$NON-NLS-1$
    builder.append(buttonBar.getPanel());
    builder.nextLine();

    builder.append(""); //$NON-NLS-1$
    builder.append(applyToAll);

    okButton.requestFocusInWindow();

    confirmDialog.setModal(true);
    confirmDialog.add(builder.getPanel());
}

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

License:Open Source License

/**
 * @param question/*from w  w w .ja  v a 2 s  .  c  o  m*/
 *            A question string that asks the user what the string to be
 *            replaced should actually be.
 * @param defaultResponseType
 *            The default button that will be highlighted.
 * @param defaultResponse
 *            The default response to use if the user wants to click through
 *            the dialog. This will be displayed as the editable default
 *            text and must be a String object.
 * @param okName
 *            The text that goes on the OK button.
 * @param cancelName
 *            The text that goes on the cancel button.
 */
public TextUserPrompter(Window owner, String question, UserPromptResponse defaultResponseType,
        Object defaultResponse, String okName, String cancelName) {
    this.owner = owner;
    this.defaultResponseType = defaultResponseType;
    textField = new JTextField((String) defaultResponse);

    DefaultFormBuilder builder = new DefaultFormBuilder(new FormLayout("pref"));
    builder.setDefaultDialogBorder();
    builder.append(new JLabel(question));
    builder.nextLine();
    builder.append(textField);
    builder.nextLine();
    final JButton okButton = new JButton(new AbstractAction(okName) {
        public void actionPerformed(ActionEvent e) {
            response = UserPromptResponse.OK;
            prompt.dispose();
        }
    });
    final JButton cancelButton = new JButton(new AbstractAction(cancelName) {
        public void actionPerformed(ActionEvent e) {
            response = UserPromptResponse.CANCEL;
            prompt.dispose();
        }
    });
    JPanel okCancelBar = ButtonBarFactory.buildOKCancelBar(okButton, cancelButton);
    builder.append(okCancelBar);
    prompt = new JDialog(owner);
    prompt.add(builder.getPanel());
}

From source file:ca.sqlpower.util.HTMLUserPrompter.java

License:Open Source License

/**
 * Creates a new user prompter that uses a dialog to prompt the user. The
 * question message is displayed in a {@link JEditorPane} so that it can be
 * displayed using styles via HTML. A {@link HyperlinkListener} can be
 * attached to this prompt to open hyperlinks.
 *//*w w  w .  j a  v  a  2s . c  o m*/
public HTMLUserPrompter(UserPromptOptions optionType, UserPromptResponse defaultResponseType, JFrame owner,
        String questionMessage, boolean modal, HyperlinkListener hyperlinkListener, String... buttonNames) {
    if (optionType.getButtonCount() != buttonNames.length) {
        throw new IllegalStateException(
                "Expecting " + optionType.getButtonCount() + " arguments for the optionType " + optionType
                        + "Received only " + buttonNames.length + "arguments\n" + Arrays.toString(buttonNames));
    }
    this.defaultResponseType = defaultResponseType;
    this.owner = owner;
    applyToAll = new JCheckBox(Messages.getString("ModalDialogUserPrompter.applyToAllOption")); //$NON-NLS-1$

    confirmDialog = new JDialog(owner);

    // FIXME the title needs to be configurable and/or set itself based on prompt type
    confirmDialog.setTitle(""); //$NON-NLS-1$

    // this is just filled with the message pattern template to help with sizing
    questionField = new JEditorPane();
    questionField.setEditorKit(new HTMLEditorKit());
    questionField.setText(questionMessage);
    questionField.setEditable(false);
    questionField.setBackground(null);
    if (hyperlinkListener != null) {
        questionField.addHyperlinkListener(hyperlinkListener);
    }

    JPanel confirmPanel = new JPanel();
    FormLayout formLayout = new FormLayout("10dlu, 2dlu, pref:grow, 2dlu, 10dlu" //$NON-NLS-1$
            , ""); //$NON-NLS-1$
    DefaultFormBuilder builder = new DefaultFormBuilder(formLayout, confirmPanel);
    builder.setDefaultDialogBorder();

    builder.nextColumn(2);
    builder.append(questionField);
    builder.nextLine();

    builder.appendParagraphGapRow();
    builder.nextLine();

    ButtonBarBuilder buttonBar = new ButtonBarBuilder();
    buttonBar.addGlue();
    JButton okButton = new JButton();
    if (optionType == UserPromptOptions.OK_NEW_NOTOK_CANCEL || optionType == UserPromptOptions.OK_NOTOK_CANCEL
            || optionType == UserPromptOptions.OK_NEW_CANCEL || optionType == UserPromptOptions.OK_CANCEL
            || optionType == UserPromptOptions.OK) {
        okButton.setText(buttonNames[0]);
        buttonBar.addGridded(okButton);
    }
    JButton notOkButton = new JButton();
    if (optionType == UserPromptOptions.OK_NEW_NOTOK_CANCEL
            || optionType == UserPromptOptions.OK_NOTOK_CANCEL) {
        buttonBar.addRelatedGap();
        notOkButton
                .setText((optionType == UserPromptOptions.OK_NOTOK_CANCEL) ? buttonNames[1] : buttonNames[2]);
        buttonBar.addGridded(notOkButton);
    }
    JButton cancelButton = new JButton();
    if (optionType == UserPromptOptions.OK_NEW_NOTOK_CANCEL || optionType == UserPromptOptions.OK_NOTOK_CANCEL
            || optionType == UserPromptOptions.OK_NEW_CANCEL || optionType == UserPromptOptions.OK_CANCEL) {
        buttonBar.addRelatedGap();
        cancelButton.setText(buttonNames[buttonNames.length - 1]);
        buttonBar.addGridded(cancelButton);
    }
    buttonBar.addGlue();

    okButton.addActionListener(new ActionListener() {
        public void actionPerformed(ActionEvent e) {
            response = UserPromptResponse.OK;
            confirmDialog.dispose();
        }
    });
    notOkButton.addActionListener(new ActionListener() {
        public void actionPerformed(ActionEvent e) {
            response = UserPromptResponse.NOT_OK;
            confirmDialog.dispose();
        }
    });
    cancelButton.addActionListener(new ActionListener() {
        public void actionPerformed(ActionEvent e) {
            response = UserPromptResponse.CANCEL;
            confirmDialog.dispose();
        }
    });
    builder.append(""); //$NON-NLS-1$
    builder.append(buttonBar.getPanel());
    builder.nextLine();

    builder.append(""); //$NON-NLS-1$
    builder.append(applyToAll);

    switch (defaultResponseType) {
    case OK:
        okButton.requestFocusInWindow();
        break;
    case NOT_OK:
        notOkButton.requestFocusInWindow();
        break;
    case CANCEL:
        cancelButton.requestFocusInWindow();
        break;
    default:
        throw new UnsupportedOperationException(
                "Default response type : " + defaultResponseType + " is not known");
    }

    confirmDialog.setModal(modal);
    confirmDialog.add(builder.getPanel());
}

From source file:ca.sqlpower.wabit.swingui.enterprise.ServerInfoManager.java

License:Open Source License

/**
 * Creates a panel that displays the currently configured server
 * connections. New connections can be added from this panel and existing
 * connections can be modified or removed.
 * /* ww w. j a  va 2  s.  c  o m*/
 * @param m_context
 *            A Wabit context that contains server connection information.
 * @param m_dialogOwner
 *            A component that will be used as the dialog owner for other
 *            panels.
 * @param closeAction
 *            An action that will properly close the object displaying the
 *            panel.
 */
public ServerInfoManager(WabitSessionContext m_context, Component m_dialogOwner, final Runnable closeAction) {
    this.context = m_context;
    this.dialogOwner = m_dialogOwner;
    DefaultFormBuilder builder = new DefaultFormBuilder(
            new FormLayout("pref:grow, 5dlu, pref", "pref, pref, pref"));

    serverInfos = new JList(new DefaultListModel());
    serverInfos.addMouseListener(new MouseAdapter() {
        @Override
        public void mouseClicked(MouseEvent e) {
            if (e.getClickCount() == 2 && SwingUtilities.isLeftMouseButton(e)) {
                editSelectedServer();
            }
        }

    });
    JScrollPane scrollPane = new JScrollPane(serverInfos);
    scrollPane.setPreferredSize(new Dimension(400, 300));

    this.connectButton = new JButton("Connect");
    this.connectButton.addActionListener(new ActionListener() {
        public void actionPerformed(ActionEvent e) {
            SPServerInfo selectedItem = (SPServerInfo) serverInfos.getSelectedValue();

            Window dialogParent;
            if (dialogOwner instanceof Window) {
                dialogParent = (Window) dialogOwner;
            } else {
                dialogParent = SwingUtilities.getWindowAncestor(dialogOwner);
            }

            if (selectedItem != null) {
                LogInToServerAction action = new LogInToServerAction(dialogParent, selectedItem, context);
                action.actionPerformed(e);
            }
        }
    });

    // Build the GUI
    refreshInfoList();
    CellConstraints cc = new CellConstraints();
    builder.add(new JLabel("Available Server Connections:"), cc.xyw(1, 1, 3));
    builder.nextLine();
    builder.add(scrollPane, cc.xywh(1, 2, 1, 2));

    DefaultFormBuilder buttonBarBuilder = new DefaultFormBuilder(new FormLayout("pref"));
    buttonBarBuilder.append(new JButton(addAction));
    buttonBarBuilder.append(new JButton(editAction));
    buttonBarBuilder.append(new JButton(removeAction));
    buttonBarBuilder.append(connectButton);
    buttonBarBuilder.append(new JButton(new AbstractAction("Close") {
        public void actionPerformed(ActionEvent arg0) {
            closeAction.run();
        }
    }));
    builder.add(buttonBarBuilder.getPanel(), cc.xy(3, 2));
    builder.setDefaultDialogBorder();
    panel = builder.getPanel();
}