76 lines
1.4 KiB
Java
76 lines
1.4 KiB
Java
|
package org.hwo.bitfields.ui;
|
||
|
|
||
|
import javax.swing.JPanel;
|
||
|
|
||
|
import java.awt.FlowLayout;
|
||
|
|
||
|
import javax.swing.BoxLayout;
|
||
|
import javax.swing.JLabel;
|
||
|
|
||
|
import org.hwo.bitfields.BitField;
|
||
|
import org.hwo.bitfields.Field;
|
||
|
|
||
|
public class BitFieldEditor extends JPanel {
|
||
|
|
||
|
private Integer intValue;
|
||
|
private BitField bitField;
|
||
|
|
||
|
private FieldControl[] controls;
|
||
|
|
||
|
public BitFieldEditor() {
|
||
|
setLayout(new BoxLayout(this, BoxLayout.Y_AXIS));
|
||
|
}
|
||
|
|
||
|
public Integer getIntValue() {
|
||
|
return intValue;
|
||
|
}
|
||
|
|
||
|
public void setIntValue(Integer intValue) {
|
||
|
this.intValue = intValue;
|
||
|
}
|
||
|
|
||
|
public BitField getBitField() {
|
||
|
return bitField;
|
||
|
}
|
||
|
|
||
|
public void setBitField(BitField bitField) {
|
||
|
this.bitField = bitField;
|
||
|
|
||
|
initializeView();
|
||
|
}
|
||
|
|
||
|
|
||
|
private void initializeView()
|
||
|
{
|
||
|
if (controls != null)
|
||
|
{
|
||
|
for (FieldControl fc: controls)
|
||
|
{
|
||
|
remove(fc.getEditorComponent());
|
||
|
}
|
||
|
}
|
||
|
Field[] fields = bitField.getFields();
|
||
|
controls = new FieldControl[fields.length];
|
||
|
|
||
|
for (int i=0;i<fields.length;i++)
|
||
|
{
|
||
|
if (fields[i].getLength() == 1)
|
||
|
controls[i] = new BoolFieldEditor(fields[i]);
|
||
|
else
|
||
|
controls[i] = new IntFieldEditor(fields[i]);
|
||
|
|
||
|
add(controls[i].getEditorComponent());
|
||
|
}
|
||
|
}
|
||
|
|
||
|
@Override
|
||
|
public boolean requestFocusInWindow() {
|
||
|
if ((controls != null) && controls.length != 0)
|
||
|
{
|
||
|
return controls[0].getEditorComponent().requestFocusInWindow();
|
||
|
}
|
||
|
return false;
|
||
|
}
|
||
|
|
||
|
}
|