Package com.sun.messaging.jmq.admin.apps.console.util

Source Code of com.sun.messaging.jmq.admin.apps.console.util.BytesField

/*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
*
* Copyright (c) 2000-2010 Oracle and/or its affiliates. All rights reserved.
*
* The contents of this file are subject to the terms of either the GNU
* General Public License Version 2 only ("GPL") or the Common Development
* and Distribution License("CDDL") (collectively, the "License").  You
* may not use this file except in compliance with the License.  You can
* obtain a copy of the License at
* https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
* or packager/legal/LICENSE.txt.  See the License for the specific
* language governing permissions and limitations under the License.
*
* When distributing the software, include this License Header Notice in each
* file and include the License file at packager/legal/LICENSE.txt.
*
* GPL Classpath Exception:
* Oracle designates this particular file as subject to the "Classpath"
* exception as provided by Oracle in the GPL Version 2 section of the License
* file that accompanied this code.
*
* Modifications:
* If applicable, add the following below the License Header, with the fields
* enclosed by brackets [] replaced by your own identifying information:
* "Portions Copyright [year] [name of copyright owner]"
*
* Contributor(s):
* If you wish your version of this file to be governed by only the CDDL or
* only the GPL Version 2, indicate your decision by adding "[Contributor]
* elects to include this software in this distribution under the [CDDL or GPL
* Version 2] license."  If you don't indicate a single choice of license, a
* recipient has the option to distribute your version of this file under
* either the CDDL, the GPL Version 2 or to extend the choice of license to
* its licensees as provided above.  However, if you add GPL Version 2 code
* and therefore, elected the GPL Version 2 license, then the option applies
* only if the new code is made subject to such option by the copyright
* holder.
*/

/*
* @(#)BytesField.java  1.6 06/28/07
*/

package com.sun.messaging.jmq.admin.apps.console.util;

import java.awt.BorderLayout;
import java.awt.event.ActionListener;
import javax.swing.JPanel;
import javax.swing.JComboBox;

import com.sun.messaging.jmq.util.SizeString;
import com.sun.messaging.jmq.admin.util.Globals;
import com.sun.messaging.jmq.admin.resources.AdminConsoleResources;

/**
* This class implements a field used to enter some amount of
* bytes. It supports the selection of the byte unit:
*
* <UL>
* <LI>MegaBytes
* <LI>KiloBytes
* <LI>Bytes
* </UL>
* The default unit displayed is KILOBYTES.
* <P>
*
* The getValue() method returns the value entered in <STRONG>BYTES</STRONG>.
*/
public class BytesField extends JPanel {
    public final static int    BYTES    = 0;
    public final static int    KILOBYTES  = 1;
    public final static int    MEGABYTES  = 2;

    private static AdminConsoleResources acr = Globals.getAdminConsoleResources();

    private LongField  lf;
    private JComboBox  unitCB;

    public BytesField(long min, long max, String text) {
  this(min, max, text, 0);
    }

    public BytesField(long min, long max, int columns) {
  this(min, max, null, columns);
    }

    public BytesField(long min, long max,
      String text, int columns) {
  initGui(min, max, text, columns);
  setUnit(KILOBYTES);
    }

    public void addActionListener(ActionListener l)  {
  lf.addActionListener(l);
    }

    public void setText(String s)  {
  lf.setText(s);
    }

    public String getText()  {
  return (lf.getText());
    }

    public void setEnabled(boolean b)  {
  lf.setEnabled(b);
  unitCB.setEnabled(b);
    }

    /**
     * Set the byte unit.
     *
     * @param unit  byte unit. Can be one of MEGABYTES,
     *      KILOBYTES, or BYTES
     */
    public void setUnit(int unit)  {
  if ((unit < 0) || (unit > MEGABYTES))  {
      return;
  }

  unitCB.setSelectedIndex(unit);
    }

    /*
     * Returns the unit of the value i.e. BYTES, KILOBYTES, or
     * MEGABYTES.
     *
     * @return  The unit of the value.
     */
    public int getUnit()  {
  int selIndex = unitCB.getSelectedIndex();

  return (selIndex);
    }


    /**
     * Sets the bytes string using the format
     * recognized by the SizeString class.
     */
    public void setSizeString(String strVal)  {
  SizeString  ss;
  String    tmp = strVal.trim();
  long    val;
  int    unit;
  char    c;

  try  {
      ss = new SizeString(tmp);
  } catch (Exception e)  {
      /*
       * Should not get here
       */
      return;
  }

  c = tmp.charAt(tmp.length() -1);

  if (Character.isLetter(c)) {
      switch (c)  {
      case 'm':
      case 'M':
    val = ss.getMBytes();
          unit = BytesField.MEGABYTES;
      break;

      case 'k':
      case 'K':
    val = ss.getKBytes();
          unit = BytesField.KILOBYTES;
      break;

      case 'b':
      case 'B':
    val = ss.getBytes();
          unit = BytesField.BYTES;
      break;

      default:
    val = 0;
          unit = BytesField.BYTES;
      break;
      }
  } else  {
      val = ss.getBytes();
      unit = BytesField.BYTES;
  }

  setText(Long.toString(val));
  setUnit(unit);
    }

    /**
     * Returns the bytes string in the format recognized by
     * the SizeString class.
     */
    public String getSizeString()  {
  String  strValue = getText();
  int  unit = getUnit();
  String  unitStr;

  switch (unit)  {
  case BytesField.BYTES:
      unitStr = "b";
  break;

  case BytesField.KILOBYTES:
      unitStr = "k";
  break;

  case BytesField.MEGABYTES:
      unitStr = "m";
  break;

  default:
      unitStr = "b";
  break;
  }

  return (strValue + unitStr);
    }


    /**
     * Return the value in bytes.
     *
     * @return  The value entered in bytes.
     */
    public long getValue()  {
  String  s;
  int  selIndex;
  long  tmpLong;

  s = lf.getText();

  try  {
      tmpLong = Long.parseLong(s);
  } catch (Exception e)  {
      return (-1);
  }

  selIndex = unitCB.getSelectedIndex();

  switch (selIndex)  {
  case MEGABYTES:
      return (tmpLong * 1048576);

  case KILOBYTES:
      return (tmpLong * 1024);

  case BYTES:
      return (tmpLong);

  default:
      return (-1);
  }
    }

    private void initGui(long min, long max, String text, int collumns)  {
        String[] units;

  lf = new LongField(min, max, text, collumns);

  units = new String[ 3 ];
  units[MEGABYTES] = acr.getString(acr.I_MEGABYTES);
  units[KILOBYTES] = acr.getString(acr.I_KILOBYTES);
  units[BYTES] = acr.getString(acr.I_BYTES);

  unitCB = new JComboBox(units);
  setLayout(new BorderLayout());

  add(lf, "Center");
  add(unitCB, "East");
    }

}
TOP

Related Classes of com.sun.messaging.jmq.admin.apps.console.util.BytesField

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.