Package org.pdfsam.plugin.split.components

Source Code of org.pdfsam.plugin.split.components.JSplitSizeCombo

/*
* Created on 30-Nov-2007
* Copyright (C) 2007 by Andrea Vacondio.
*
* This program is free software; you can redistribute it and/or modify it under the terms of the
* GNU General Public License as published by the Free Software Foundation;
* either version 2 of the License.
* This program 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 General Public License for more details.
* You should have received a copy of the GNU General Public License along with this program;
* if not, write to the Free Software Foundation, Inc.,
*  59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
*/
package org.pdfsam.plugin.split.components;

import java.math.BigDecimal;
import java.util.regex.Matcher;
import java.util.regex.Pattern;

import javax.swing.JComboBox;

import org.pdfsam.guiclient.configuration.Configuration;
import org.pdfsam.i18n.GettextResource;
/**
* Combo for the size selection
* @author Andrea Vacondio
*
*/
public class JSplitSizeCombo extends JComboBox {

  private static final long serialVersionUID = 1342525636090510279L;

  private Pattern pattern = Pattern.compile("^(\\d+[.[0-9]+]*)(\\s*)([KB||MB]+)", Pattern.CASE_INSENSITIVE );
 
  public static final String KB = "KB";
  public static final String MB = "MB";
 
  public JSplitSizeCombo(){
    init();
  }
 
  private void init(){
    setEditable(true);
    addItem("");
    addItem("500 "+KB);
    addItem("1 "+MB);
    addItem("3 "+MB);
    addItem("5 "+MB);
    addItem("10 "+MB);
  }
 
  /**
   * @return Bytes of the selected item
   * @throws Exception
   */
  public long getSelectedBytes() throws Exception{
    long retVal = 0;
    if(isValidSelectedItem()){
      Matcher m = pattern.matcher((String)getSelectedItem());
      m.reset();
      m.matches();
      BigDecimal value = new BigDecimal(m.group(1));
      String unit = m.group(3);
      if (KB.equals(unit.toUpperCase())){
        value = value.multiply(new BigDecimal(1024));
      }else if (MB.equals(unit.toUpperCase())){
        value = value.multiply(new BigDecimal(1024*1024));
      }else{
        throw new Exception(GettextResource.gettext(Configuration.getInstance().getI18nResourceBundle(),"Invalid unit: ")+unit);
      }
      retVal = value.longValue();
    }
    return retVal;
  }
 
  /**
   * @return true if the selected item is valid
   */
  public boolean isValidSelectedItem(){
    pattern.matcher((String)getSelectedItem()).reset();
    return pattern.matcher((String)getSelectedItem()).matches();
  }
 
  /**
   * @return if a not empty item is selected
   */
  public boolean isSelectedItem(){
    return (getSelectedItem()!=null && ((String)getSelectedItem()).trim().length()>0);
  }
}
TOP

Related Classes of org.pdfsam.plugin.split.components.JSplitSizeCombo

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.