package org.hwo.bitfields; import java.util.ArrayList; import java.util.LinkedList; import java.util.List; import javax.swing.event.ChangeEvent; import javax.swing.event.ChangeListener; import org.w3c.dom.Element; import org.w3c.dom.Node; import org.w3c.dom.NodeList; public class BitField { private List fields; private List changeListeners; public BitField() { this.fields = new ArrayList(); initialize(); } public BitField(Element fieldsNode) { this.fields = new ArrayList(); this.initialize(); this.clear(); if (fieldsNode != null) { fieldsFromXML(fieldsNode); } } private void initialize() { this.changeListeners = new LinkedList(); for (int i=0;i<4;i++) this.fields.add(new Field(this, i, 1)); } public void addChangeListener(ChangeListener listener){ this.changeListeners.add(listener); } public void removeChangeListener(ChangeListener listener){ this.changeListeners.remove(listener); } public void fireStateChanged(){ ChangeEvent ce = new ChangeEvent(this); for (ChangeListener listener: this.changeListeners){ listener.stateChanged(ce); } } public void fieldsFromXML(Node fieldsNode){ NodeList fields = ((Element)fieldsNode).getElementsByTagName("Field"); for (int i=0;i 0) sb.append(", "); sb.append(st); } } } return sb.toString(); } public Field[] getFields() { return this.fields.toArray(new Field[0]); } public void clear(){ this.fields.clear(); } public void addField(Field field){ this.fields.add(field); } public void removeField(Field field){ this.fields.remove(field); } public void initialize32Bit(){ this.clear(); for (int i=0;i<4;i++) this.fields.add(new Field(this, i, 1)); } /* public synchronized void setValue(int value,int start,int len) { if (this.value == null) this.value = 0; this.value &= ~((-1 >> (Integer.SIZE - len)) << start); this.value |= (value & (-1 >> (Integer.SIZE - len))) << start; } */ }