Package org.jrobin.inspector

Source Code of org.jrobin.inspector.EditArchiveDialog

/*******************************************************************************
* Copyright (c) 2001-2005 Sasa Markovic and Ciaran Treanor.
* Copyright (c) 2011 The OpenNMS Group, Inc.
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public
* License as published by the Free Software Foundation; either
* version 2.1 of the License, or (at your option) any later version.
*
* This library is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
* Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public
* License along with this library; if not, write to the Free Software
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA
*******************************************************************************/

package org.jrobin.inspector;

import org.jrobin.core.RrdException;
import org.jrobin.core.ArcDef;

import javax.swing.*;
import java.awt.*;
import java.awt.event.WindowEvent;
import java.awt.event.ActionListener;
import java.awt.event.ActionEvent;

class EditArchiveDialog extends JDialog {
  private static final long serialVersionUID = 1L;
  private static final int FIELD_SIZE = 20;
  private static final String TITLE_NEW = "New archive";
  private static final String TITLE_EDIT = "Edit archive";

  private JLabel consolFunLabel = new JLabel("Consolidation function: ");
  private JLabel xffLabel = new JLabel("X-files factor: ");
  private JLabel stepsLabel = new JLabel("Steps: ");
  private JLabel rowsLabel = new JLabel("Rows: ");

  private JComboBox consolFunCombo = new JComboBox();
  private JTextField xffField = new JTextField(FIELD_SIZE);
  private JTextField stepsField = new JTextField(FIELD_SIZE);
  private JTextField rowsField = new JTextField(FIELD_SIZE);

  private JButton okButton = new JButton("OK");
  private JButton cancelButton = new JButton("Cancel");

  private ArcDef arcDef;

  EditArchiveDialog(Frame parent, ArcDef arcDef) {
    super(parent, arcDef == null ? TITLE_NEW : TITLE_EDIT, true);
    constructUI(arcDef);
    pack();
    Util.centerOnScreen(this);
    setVisible(true);
  }

  private void constructUI(ArcDef arcDef) {
    // fill controls
    String[] funs = ArcDef.CONSOL_FUNS;
    for (String fun : funs) {
      consolFunCombo.addItem(fun);
    }
    consolFunCombo.setSelectedIndex(0);
    if (arcDef == null) {
      // NEW
      xffField.setText("" + 0.5);
    }
    else {
      // EDIT
      consolFunCombo.setSelectedItem(arcDef.getConsolFun());
      consolFunCombo.setEnabled(false);
      xffField.setText("" + arcDef.getXff());
      stepsField.setText("" + arcDef.getSteps());
      stepsField.setEnabled(false);
      rowsField.setText("" + arcDef.getRows());
      // rowsField.setEnabled(false);
    }

    // layout
    JPanel content = (JPanel) getContentPane();
    GridBagLayout layout = new GridBagLayout();
    content.setLayout(layout);
    GridBagConstraints gbc = new GridBagConstraints();
    gbc.insets = new Insets(3, 3, 3, 3);
    gbc.gridx = 0;
    gbc.gridy = 0;
    gbc.anchor = GridBagConstraints.EAST;
    layout.setConstraints(consolFunLabel, gbc);
    content.add(consolFunLabel);
    gbc.gridy = 1;
    layout.setConstraints(xffLabel, gbc);
    content.add(xffLabel);
    gbc.gridy = 2;
    layout.setConstraints(stepsLabel, gbc);
    content.add(stepsLabel);
    gbc.gridy = 3;
    layout.setConstraints(rowsLabel, gbc);
    content.add(rowsLabel);
    gbc.gridy = 4;
    layout.setConstraints(okButton, gbc);
    okButton.setPreferredSize(cancelButton.getPreferredSize());
    content.add(okButton);
    gbc.gridx = 1;
    gbc.gridy = 0;
    gbc.anchor = GridBagConstraints.WEST;
    layout.setConstraints(consolFunCombo, gbc);
    content.add(consolFunCombo);
    gbc.gridy = 1;
    layout.setConstraints(xffField, gbc);
    content.add(xffField);
    gbc.gridy = 2;
    layout.setConstraints(stepsField, gbc);
    content.add(stepsField);
    gbc.gridy = 3;
    layout.setConstraints(rowsField, gbc);
    content.add(rowsField);
    gbc.gridy = 4;
    layout.setConstraints(cancelButton, gbc);
    content.add(cancelButton);
    getRootPane().setDefaultButton(okButton);

    // actions
    okButton.addActionListener(new ActionListener() {
      public void actionPerformed(ActionEvent e) {
        ok();
      }
    });
    cancelButton.addActionListener(new ActionListener() {
      public void actionPerformed(ActionEvent e) {
        cancel();
      }
    });

    setDefaultCloseOperation(JDialog.DISPOSE_ON_CLOSE);
  }

  private void ok() {
    arcDef = createArcDef();
    if (arcDef != null) {
      close();
    }
  }

  private void close() {
    dispatchEvent(new WindowEvent(this, WindowEvent.WINDOW_CLOSING));
  }

  private void cancel() {
    close();
  }

  private ArcDef createArcDef() {
    String consolFun = (String) consolFunCombo.getSelectedItem();
    double xff;
    try {
      xff = Double.parseDouble(xffField.getText());
      if (xff < 0 || xff >= 1D) {
        throw new NumberFormatException();
      }
    }
    catch (NumberFormatException nfe) {
      Util.error(this, "X-files factor must be a number not less than 0.0 and less than 1.0");
      return null;
    }
    int steps;
    try {
      steps = Integer.parseInt(stepsField.getText());
      if (steps <= 0) {
        throw new NumberFormatException();
      }
    }
    catch (NumberFormatException nfe) {
      Util.error(this, "Number of steps must be a positive integer");
      return null;
    }
    int rows;
    try {
      rows = Integer.parseInt(rowsField.getText());
      if (rows <= 0) {
        throw new NumberFormatException();
      }
    }
    catch (NumberFormatException nfe) {
      Util.error(this, "Number of rows must be a positive integer");
      return null;
    }
    try {
      return new ArcDef(consolFun, xff, steps, rows);
    }
    catch (RrdException e) {
      // should not be hear ever!
      Util.error(this, e);
      return null;
    }
  }

  ArcDef getArcDef() {
    return arcDef;
  }
}
TOP

Related Classes of org.jrobin.inspector.EditArchiveDialog

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.