/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/
/*
* JTextFieldSlider.java
*
* Created on 20.01.2012, 21:33:40
*/
package com.gyver.matrixmover.gui.component;
import com.gyver.matrixmover.gui.listener.interfaces.TFSListener;
import java.util.ArrayList;
import javax.swing.event.ChangeEvent;
/**
*
* @author Jonas
*/
public class JTextFieldSlider extends javax.swing.JPanel {
private int value = 0;
private ArrayList<TFSListener> listenerList = null;
/** Creates new form JTextFieldSlider */
public JTextFieldSlider() {
initComponents();
listenerList = new ArrayList<TFSListener>();
}
public void setValue(int value) {
slider.setValue(value);
textField.setText(String.valueOf(value));
this.value = value;
}
public int getValue() {
return value;
}
public void addTFSListener(TFSListener listener) {
listenerList.add(listener);
}
public void remodeTFSListener(TFSListener listener) {
listenerList.remove(listener);
}
public void setMinimum(int minimum) {
slider.setMinimum(minimum);
}
public void setMaximum(int maximum) {
slider.setMaximum(maximum);
}
private void informListener() {
for (TFSListener listener : listenerList) {
listener.stateChanged(new ChangeEvent(this));
}
}
/** This method is called from within the constructor to
* initialize the form.
* WARNING: Do NOT modify this code. The content of this method is
* always regenerated by the Form Editor.
*/
@SuppressWarnings("unchecked")
// <editor-fold defaultstate="collapsed" desc="Generated Code">//GEN-BEGIN:initComponents
private void initComponents() {
java.awt.GridBagConstraints gridBagConstraints;
textField = new javax.swing.JTextField();
slider = new javax.swing.JSlider();
setLayout(new java.awt.GridBagLayout());
textField.setMaximumSize(new java.awt.Dimension(25, 22));
textField.setMinimumSize(new java.awt.Dimension(25, 22));
textField.setPreferredSize(new java.awt.Dimension(25, 22));
textField.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
textFieldActionPerformed(evt);
}
});
textField.addKeyListener(new java.awt.event.KeyAdapter() {
public void keyTyped(java.awt.event.KeyEvent evt) {
textFieldKeyTyped(evt);
}
});
gridBagConstraints = new java.awt.GridBagConstraints();
gridBagConstraints.gridx = 0;
gridBagConstraints.gridy = 0;
gridBagConstraints.ipadx = 25;
add(textField, gridBagConstraints);
slider.addChangeListener(new javax.swing.event.ChangeListener() {
public void stateChanged(javax.swing.event.ChangeEvent evt) {
sliderStateChanged(evt);
}
});
gridBagConstraints = new java.awt.GridBagConstraints();
gridBagConstraints.gridx = 1;
gridBagConstraints.gridy = 0;
gridBagConstraints.fill = java.awt.GridBagConstraints.HORIZONTAL;
gridBagConstraints.weightx = 1.0;
gridBagConstraints.insets = new java.awt.Insets(0, 10, 0, 0);
add(slider, gridBagConstraints);
}// </editor-fold>//GEN-END:initComponents
private void sliderStateChanged(javax.swing.event.ChangeEvent evt) {//GEN-FIRST:event_sliderStateChanged
textField.setText(String.valueOf(slider.getValue()));
value = slider.getValue();
informListener();
}//GEN-LAST:event_sliderStateChanged
private void textFieldKeyTyped(java.awt.event.KeyEvent evt) {//GEN-FIRST:event_textFieldKeyTyped
}//GEN-LAST:event_textFieldKeyTyped
private void textFieldActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_textFieldActionPerformed
int newValue = 0;
try {
newValue = Integer.parseInt(textField.getText());
} catch (NumberFormatException nfe) {
newValue = value;
}
if (newValue < slider.getMinimum()) {
newValue = slider.getMinimum();
}
if (newValue > slider.getMaximum()) {
newValue = slider.getMaximum();
}
this.setValue(newValue);
}//GEN-LAST:event_textFieldActionPerformed
// Variables declaration - do not modify//GEN-BEGIN:variables
private javax.swing.JSlider slider;
private javax.swing.JTextField textField;
// End of variables declaration//GEN-END:variables
}