package org.fanhongtao.tools.misc;
import java.awt.BorderLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.JTextArea;
import javax.swing.JTextField;
import org.fanhongtao.lang.StringUtils;
import org.fanhongtao.swing.BaseFrame;
import org.fanhongtao.swing.panel.TextPanel;
/**
* @author Dharma
* @created 2009-5-18
*/
public class TagCalc extends BaseFrame
{
private JTextField tagField;
private JTextArea resultArea;
/* (non-Javadoc)
* @see dharma.ui.swing.BaseFrame#createContents(javax.swing.JFrame)
*/
@Override
protected void createContents(JFrame frame)
{
// frame.setSize(500, 250);
JPanel buttonPanel = new JPanel();
frame.setLayout(new BorderLayout(10, 10));
frame.add(buttonPanel, BorderLayout.SOUTH);
JButton btnCalc = new JButton("Calc");
buttonPanel.add(btnCalc);
btnCalc.setMnemonic(java.awt.event.KeyEvent.VK_C);
btnCalc.addActionListener(new ActionListener()
{
public void actionPerformed(ActionEvent e)
{
calcTag();
}
});
tagField = new JTextField(40);
TextPanel tagPanel = new TextPanel("&Tag", tagField);
resultArea = new JTextArea(5, 35);
resultArea.setEditable(false);
TextPanel resultPanel = new TextPanel("&Result", resultArea);
JPanel panel = new JPanel();
panel.setLayout(new BorderLayout(10, 10));
panel.add(tagPanel, BorderLayout.NORTH);
panel.add(resultPanel, BorderLayout.CENTER);
frame.add(panel, BorderLayout.CENTER);
frame.setSize(frame.getPreferredSize());
frame.setResizable(false);
}
private void calcTag()
{
String tag = tagField.getText().trim();
int value = 0;
try
{
value = Integer.parseInt(tag);
}
catch (NumberFormatException e)
{
try
{
value = Integer.parseInt(tag, 16);
}
catch (NumberFormatException ex)
{
JOptionPane.showMessageDialog(getFrame(), ex.getMessage(), "Invalid Tag value", JOptionPane.OK_OPTION);
return;
}
}
if (value < 0)
{
value += 256;
}
StringBuffer buf = new StringBuffer();
buf.append("Hex: ").append(Integer.toHexString(value).toUpperCase()).append(StringUtils.CRLF);
buf.append("Dec: ").append(value).append(StringUtils.CRLF);
if (value > 127)
{
value -= 256;
buf.append("Neg: ").append(value).append(StringUtils.CRLF);
}
resultArea.setText(buf.toString());
}
/**
* @param args
*/
public static void main(String[] args)
{
new TagCalc().run("Tag Calc");
}
}