diff options
Diffstat (limited to 'java/src/IceGridGUI/LiveDeployment/ShowPrefsDialog.java')
-rw-r--r-- | java/src/IceGridGUI/LiveDeployment/ShowPrefsDialog.java | 230 |
1 files changed, 230 insertions, 0 deletions
diff --git a/java/src/IceGridGUI/LiveDeployment/ShowPrefsDialog.java b/java/src/IceGridGUI/LiveDeployment/ShowPrefsDialog.java new file mode 100644 index 00000000000..c9d197ddf5b --- /dev/null +++ b/java/src/IceGridGUI/LiveDeployment/ShowPrefsDialog.java @@ -0,0 +1,230 @@ +// ********************************************************************** +// +// Copyright (c) 2003-2014 ZeroC, Inc. All rights reserved. +// +// This copy of Ice is licensed to you under the terms described in the +// ICE_LICENSE file included in this distribution. +// +// ********************************************************************** + +package IceGridGUI.LiveDeployment; + +import java.awt.event.ActionEvent; +import java.awt.event.ActionListener; + +import javax.swing.BoxLayout; +import javax.swing.JButton; +import javax.swing.JComponent; +import javax.swing.JDialog; +import javax.swing.JOptionPane; +import javax.swing.JTextField; +import javax.swing.WindowConstants; + +import com.jgoodies.forms.builder.DefaultFormBuilder; +import com.jgoodies.forms.builder.ButtonBarBuilder; +import com.jgoodies.forms.factories.Borders; +import com.jgoodies.forms.layout.FormLayout; +import com.jgoodies.forms.util.LayoutStyle; + +class ShowPrefsDialog extends JDialog +{ + ShowPrefsDialog(final ShowLogFileDialog dialog) + { + super(dialog, "Preferences - IceGrid Admin", true); + setDefaultCloseOperation(WindowConstants.DISPOSE_ON_CLOSE); + + final JTextField maxLinesField = new JTextField(10); + maxLinesField.setText(Integer.toString(dialog.getMaxLines())); + maxLinesField.setToolTipText("Maximum number of lines in this dialog's buffer"); + + final JTextField maxSizeField = new JTextField(10); + maxSizeField.setText(Integer.toString(dialog.getMaxSize())); + maxSizeField.setToolTipText("Maximum number of characters in this dialog's buffer"); + + final JTextField initialLinesField = new JTextField(10); + initialLinesField.setText(Integer.toString(dialog.getInitialLines())); + initialLinesField.setToolTipText("Start by retrieving <num> lines from the server; -1 means retrieve all"); + + final JTextField maxReadSizeField = new JTextField(10); + maxReadSizeField.setText(Integer.toString(dialog.getMaxReadSize())); + maxReadSizeField.setToolTipText("Maximum number of bytes read by each request"); + + final JTextField periodField = new JTextField(10); + periodField.setText(Float.toString((float)dialog.getPeriod() / 1000)); + periodField.setToolTipText("After reaching EOF, check every <num> seconds for new output"); + + JButton okButton = new JButton("OK"); + ActionListener okListener = new ActionListener() + { + @Override + public void actionPerformed(ActionEvent e) + { + try + { + int maxLines = parseInt(maxLinesField, "Max lines in buffer"); + int maxSize = parseInt(maxSizeField, "Max characters in buffer"); + int initialLines = parseInt(initialLinesField, "Number of lines retrieved initially"); + int maxReadSize = parseInt(maxReadSizeField, "Max bytes read per request"); + int period = (int)(parseFloat(periodField, "Poll period (seconds)") * 1000); + + dialog.setPrefs(maxLines, maxSize, initialLines, maxReadSize, period); + dispose(); + } + catch(NumberFormatException ex) + { + return; + } + } + }; + okButton.addActionListener(okListener); + getRootPane().setDefaultButton(okButton); + + JButton cancelButton = new JButton("Cancel"); + ActionListener cancelListener = new ActionListener() + { + @Override + public void actionPerformed(ActionEvent e) + { + dispose(); + } + }; + cancelButton.addActionListener(cancelListener); + + FormLayout layout = new FormLayout("left:pref, 3dlu, fill:pref:grow", ""); + DefaultFormBuilder builder = new DefaultFormBuilder(layout); + builder.border(Borders.DIALOG); + builder.rowGroupingEnabled(true); + builder.lineGapSize(LayoutStyle.getCurrent().getLinePad()); + + builder.append("Max lines in buffer", maxLinesField); + builder.nextLine(); + builder.append("Max characters in buffer", maxSizeField); + builder.nextLine(); + builder.append("Number of lines retrieved initially", initialLinesField); + builder.nextLine(); + builder.append("Max bytes read per request", maxReadSizeField); + builder.nextLine(); + builder.append("Poll period (seconds)", periodField); + builder.nextLine(); + + JComponent buttonBar = new ButtonBarBuilder().addGlue().addButton(okButton, cancelButton).build(); + buttonBar.setBorder(Borders.DIALOG); + + java.awt.Container contentPane = getContentPane(); + contentPane.setLayout(new BoxLayout(contentPane, BoxLayout.Y_AXIS)); + contentPane.add(builder.getPanel()); + contentPane.add(buttonBar); + + pack(); + setResizable(false); + setLocationRelativeTo(dialog); + setVisible(true); + } + + ShowPrefsDialog(final ShowIceLogDialog dialog) + { + super(dialog, "Preferences - IceGrid Admin", true); + setDefaultCloseOperation(WindowConstants.DISPOSE_ON_CLOSE); + + final JTextField maxMessagesField = new JTextField(10); + maxMessagesField.setText(Integer.toString(dialog.getMaxMessages())); + maxMessagesField.setToolTipText("Maximum number of log messages to keep in this dialog's buffer"); + + final JTextField initialMessagesField = new JTextField(10); + initialMessagesField.setText(Integer.toString(dialog.getInitialMessages())); + initialMessagesField.setToolTipText("Start by retrieving <num> log messages from the server; -1 means retrieve all"); + + JButton okButton = new JButton("OK"); + ActionListener okListener = new ActionListener() + { + @Override + public void actionPerformed(ActionEvent e) + { + try + { + int maxMessages = parseInt(maxMessagesField, "Max log messages in buffer"); + int initialMessages = parseInt(initialMessagesField, "Number of log messages retrieved initially"); + dialog.setPrefs(maxMessages, initialMessages); + dispose(); + } + catch(NumberFormatException ex) + { + return; + } + } + }; + okButton.addActionListener(okListener); + getRootPane().setDefaultButton(okButton); + + JButton cancelButton = new JButton("Cancel"); + ActionListener cancelListener = new ActionListener() + { + @Override + public void actionPerformed(ActionEvent e) + { + dispose(); + } + }; + cancelButton.addActionListener(cancelListener); + + FormLayout layout = new FormLayout("left:pref, 3dlu, fill:pref:grow", ""); + DefaultFormBuilder builder = new DefaultFormBuilder(layout); + builder.border(Borders.DIALOG); + builder.rowGroupingEnabled(true); + builder.lineGapSize(LayoutStyle.getCurrent().getLinePad()); + + builder.append("Max log messages in buffer", maxMessagesField); + builder.nextLine(); + builder.append("Number of log messages retrieved initially", initialMessagesField); + builder.nextLine(); + + JComponent buttonBar = new ButtonBarBuilder().addGlue().addButton(okButton, cancelButton).build(); + buttonBar.setBorder(Borders.DIALOG); + + java.awt.Container contentPane = getContentPane(); + contentPane.setLayout(new BoxLayout(contentPane, BoxLayout.Y_AXIS)); + contentPane.add(builder.getPanel()); + contentPane.add(buttonBar); + + pack(); + setResizable(false); + setLocationRelativeTo(dialog); + setVisible(true); + } + + private int parseInt(JTextField field, String label) throws NumberFormatException + { + try + { + return Integer.parseInt(field.getText()); + } + catch(NumberFormatException e) + { + JOptionPane.showMessageDialog( + this, + label + " must be an integer", + "Invalid entry", + JOptionPane.ERROR_MESSAGE); + + throw e; + } + } + + private float parseFloat(JTextField field, String label) throws NumberFormatException + { + try + { + return Float.parseFloat(field.getText()); + } + catch(NumberFormatException e) + { + JOptionPane.showMessageDialog( + this, + label + " must be a decimal number", + "Invalid entry", + JOptionPane.ERROR_MESSAGE); + + throw e; + } + } +} |