diff --git a/.classpath b/.classpath
index 81f3f7e..a48ae7b 100644
--- a/.classpath
+++ b/.classpath
@@ -5,7 +5,7 @@
-
+
diff --git a/.settings/org.eclipse.jdt.core.prefs b/.settings/org.eclipse.jdt.core.prefs
index 8000cd6..7341ab1 100644
--- a/.settings/org.eclipse.jdt.core.prefs
+++ b/.settings/org.eclipse.jdt.core.prefs
@@ -1,11 +1,11 @@
eclipse.preferences.version=1
org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled
-org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.6
+org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.7
org.eclipse.jdt.core.compiler.codegen.unusedLocal=preserve
-org.eclipse.jdt.core.compiler.compliance=1.6
+org.eclipse.jdt.core.compiler.compliance=1.7
org.eclipse.jdt.core.compiler.debug.lineNumber=generate
org.eclipse.jdt.core.compiler.debug.localVariable=generate
org.eclipse.jdt.core.compiler.debug.sourceFile=generate
org.eclipse.jdt.core.compiler.problem.assertIdentifier=error
org.eclipse.jdt.core.compiler.problem.enumIdentifier=error
-org.eclipse.jdt.core.compiler.source=1.6
+org.eclipse.jdt.core.compiler.source=1.7
diff --git a/src/org/hwo/ByteArrayHexlifier.java b/src/org/hwo/ByteArrayHexlifier.java
index a7809b2..11bf74f 100644
--- a/src/org/hwo/ByteArrayHexlifier.java
+++ b/src/org/hwo/ByteArrayHexlifier.java
@@ -52,6 +52,8 @@ public class ByteArrayHexlifier {
buffer[i] = (byte)((source[2*i] - '0')<<4);
}
+ buffer[i] <<= 4;
+
if ((source[(2*i)+1] >= 'A')&&(source[(2*i)+1] <= 'F'))
{
buffer[i] |= (byte)((source[(2*i)+1] - 'A' + 10));
diff --git a/src/org/hwo/bitfields/BitField.java b/src/org/hwo/bitfields/BitField.java
index 3508a36..abb7d6c 100644
--- a/src/org/hwo/bitfields/BitField.java
+++ b/src/org/hwo/bitfields/BitField.java
@@ -72,7 +72,11 @@ public class BitField {
}
}
- public synchronized String toText(Integer value)
+ public synchronized String toText(Integer value){
+ return toText(value,false);
+ }
+
+ public synchronized String toText(Integer value,boolean extended)
{
StringBuilder sb = new StringBuilder();
@@ -80,7 +84,7 @@ public class BitField {
{
for (Field field:this.fields)
{
- String st = field.toText(value);
+ String st = field.toText(value,extended);
if (st != null)
{
if (sb.length() > 0)
diff --git a/src/org/hwo/bitfields/Field.java b/src/org/hwo/bitfields/Field.java
index dac1148..53ff456 100644
--- a/src/org/hwo/bitfields/Field.java
+++ b/src/org/hwo/bitfields/Field.java
@@ -69,7 +69,10 @@ public class Field {
return bitField;
}
- public String toText(int srcValue)
+ public String toText(int srcValue){
+ return toText(srcValue,false);
+ }
+ public String toText(int srcValue,boolean extended)
{
if (len == 1)
if (getValue(srcValue)!= 0)
@@ -78,7 +81,7 @@ public class Field {
return null;
else
{
- return String.format("%s:%d", label, getValue(srcValue));
+ return String.format("%s: [0x%x] %d", label, getValue(srcValue),getValue(srcValue));
}
}
diff --git a/src/org/hwo/collections/IteratorEnumeration.java b/src/org/hwo/collections/IteratorEnumeration.java
new file mode 100644
index 0000000..e6a1ba1
--- /dev/null
+++ b/src/org/hwo/collections/IteratorEnumeration.java
@@ -0,0 +1,27 @@
+package org.hwo.collections;
+
+import java.util.Enumeration;
+import java.util.Iterator;
+
+public class IteratorEnumeration implements Enumeration {
+
+ Iterator iter;
+
+ public IteratorEnumeration(Iterator iter){
+ this.iter = iter;
+ }
+
+
+ @Override
+ public boolean hasMoreElements() {
+ return this.iter.hasNext();
+ }
+
+ @Override
+ public E nextElement() {
+ return this.iter.next();
+ }
+
+
+
+}
diff --git a/src/org/hwo/collections/LinkedListSet.java b/src/org/hwo/collections/LinkedListSet.java
new file mode 100644
index 0000000..9496912
--- /dev/null
+++ b/src/org/hwo/collections/LinkedListSet.java
@@ -0,0 +1,88 @@
+package org.hwo.collections;
+
+import java.util.Collection;
+import java.util.Iterator;
+import java.util.LinkedList;
+import java.util.Set;
+
+public class LinkedListSet implements Set {
+
+ private LinkedList elements;
+
+ public LinkedListSet(){
+ this.elements = new LinkedList<>();
+ }
+
+ @Override
+ public boolean add(T e) {
+ if (elements.contains(e))
+ return false;
+ return elements.add(e);
+ }
+
+ @Override
+ public boolean addAll(Collection extends T> c) {
+ boolean changed = false;
+ for (T e: c) {
+ if (add(e))
+ changed = true;
+ }
+ return changed;
+ }
+
+ @Override
+ public void clear() {
+ elements.clear();
+ }
+
+ @Override
+ public boolean contains(Object o) {
+ return elements.contains(o);
+ }
+
+ @Override
+ public boolean containsAll(Collection> c) {
+ return elements.containsAll(c);
+ }
+
+ @Override
+ public boolean isEmpty() {
+ return elements.isEmpty();
+ }
+
+ @Override
+ public Iterator iterator() {
+ return elements.iterator();
+ }
+
+ @Override
+ public boolean remove(Object o) {
+ return elements.remove(o);
+ }
+
+ @Override
+ public boolean removeAll(Collection> c) {
+ return elements.removeAll(c);
+ }
+
+ @Override
+ public boolean retainAll(Collection> c) {
+ return elements.retainAll(c);
+ }
+
+ @Override
+ public int size() {
+ return elements.size();
+ }
+
+ @Override
+ public Object[] toArray() {
+ return elements.toArray();
+ }
+
+ @Override
+ public T[] toArray(T[] a) {
+ return elements.toArray(a);
+ }
+
+}
diff --git a/src/org/hwo/collections/SortedList.java b/src/org/hwo/collections/SortedList.java
new file mode 100644
index 0000000..25bd78d
--- /dev/null
+++ b/src/org/hwo/collections/SortedList.java
@@ -0,0 +1,78 @@
+package org.hwo.collections;
+
+import java.util.ArrayList;
+import java.util.List;
+
+public class SortedList> {
+
+ private List backingStore;
+
+ public SortedList(){
+ this.backingStore = new ArrayList();
+ }
+
+ public SortedList(List backingStore){
+ this.backingStore = backingStore;
+ }
+
+ public T after(T element){
+ for (int i=0;i 0)
+ return backingStore.get(i);
+ }
+ return null;
+ }
+ public T before(T element){
+ for (int i=backingStore.size();i>0;i--){
+ if (backingStore.get(i-1).compareTo(element) < 0)
+ return backingStore.get(i-1);
+ }
+ return null;
+ }
+
+
+ public boolean add(T element){
+ if (backingStore.contains(element))
+ return false;
+
+ T a = after(element);
+ if (a == null){
+ System.err.println("a == null");
+ return backingStore.add(element);
+ }
+ System.err.println(String.format("Add: %d", backingStore.indexOf(a)));
+ backingStore.add(backingStore.indexOf(a), element);
+ return true;
+ }
+
+ public boolean remove(T element){
+ return backingStore.remove( element );
+ }
+ public boolean remove(int index){
+ return backingStore.remove( backingStore.get(index));
+ }
+
+ public int indexOf(T element){
+ return this.backingStore.indexOf(element);
+ }
+
+ public T get(int index){
+ return backingStore.get(index);
+ }
+
+ public boolean contains(T element){
+ return backingStore.contains(element);
+ }
+
+ public Object[] toArray(){
+ return backingStore.toArray();
+ }
+
+ public T[] toArray(T[] a){
+ return backingStore.toArray(a);
+ }
+
+
+
+}
diff --git a/src/org/hwo/interactiveobjects/ObjectEditorUIHelper.java b/src/org/hwo/interactiveobjects/ObjectEditorUIHelper.java
index 75e71cb..0136fa6 100644
--- a/src/org/hwo/interactiveobjects/ObjectEditorUIHelper.java
+++ b/src/org/hwo/interactiveobjects/ObjectEditorUIHelper.java
@@ -28,6 +28,10 @@ public class ObjectEditorUIHelper {
public static IObjectEditorUI editor(Object item) throws NoClassDefFoundError{
IObjectEditorUI editor;
+ if (item == null){
+ throw new NullPointerException("editor(...) needs object");
+ }
+
if (hashEditors.containsKey(item.getClass())){
return hashEditors.get(item.getClass());
}
diff --git a/src/org/hwo/xml/XMLHelper.java b/src/org/hwo/xml/XMLHelper.java
new file mode 100644
index 0000000..ae68ef4
--- /dev/null
+++ b/src/org/hwo/xml/XMLHelper.java
@@ -0,0 +1,44 @@
+package org.hwo.xml;
+
+import javax.xml.xpath.XPath;
+import javax.xml.xpath.XPathConstants;
+import javax.xml.xpath.XPathExpressionException;
+import javax.xml.xpath.XPathFactory;
+
+import org.hwo.logging.Logging;
+import org.w3c.dom.Document;
+import org.w3c.dom.Element;
+import org.w3c.dom.Node;
+import org.w3c.dom.NodeList;
+
+public class XMLHelper {
+
+ static XPath _xpath;
+
+
+ public static NodeList select(Node node,String xpath){
+ try {
+ return (NodeList)_xpath.evaluate(xpath, node, XPathConstants.NODESET);
+ } catch (XPathExpressionException e) {
+ Logging.log(e);
+ }
+
+ return null;
+ }
+
+ public static Element firstNamedElement(Node node,String name){
+ try {
+ return (Element)_xpath.evaluate(name, node, XPathConstants.NODE);
+ } catch (XPathExpressionException e) {
+ Logging.log(e);
+ }
+ return null;
+ }
+
+
+ static {
+ _xpath = XPathFactory.newInstance().newXPath();
+ }
+
+
+}