// Path: src/net/sourceforge/arbaro/params/AbstractParam.java
// public abstract class AbstractParam {
// 	public static final int GENERAL = -999; // no level - general params
// 	String name;
// 	String group;
// 	int level;
// 	int order;
// 	String shortDesc;
// 	String longDesc;
// 	boolean enabled;
// 
// 	protected ChangeEvent changeEvent = null;
// 	protected EventListenerList listenerList = new EventListenerList();
// 
// 	public AbstractParam(String nam, String grp, int lev, int ord,
// 			String sh, String lng) {
// 		name = nam;
// 		group = grp;
// 		level = lev;
// 		order = ord;
// 		shortDesc = sh;
// 		longDesc = lng;
// 		enabled=true;
// 	}
// 
// 	public abstract void setValue(String val) throws ParamException;
// 	public abstract String getValue();
// 	public abstract String getDefaultValue();
// 	public abstract void clear();
// 	public abstract boolean empty();
// 
// 	public static boolean loading=false;
// 
// 	protected void warn(String warning) {
// 		if (! loading) Console.errorOutput("WARNING: "+warning);
// 	}
// 
// 	public String getNiceName() {
// 
// 		String result = "";
// 		// remove leading number
// 		int i = ('0'<=name.charAt(0))&&(name.charAt(0)<='9') ? 1 : 0;
// 		for (; i < name.length(); i++) {
// 			char c = name.charAt(i);
// 			if(('A'<=c) && (c<='Z')) {
// 				result += " " + c;
// 			} else {
// 				result += c;
// 			}
// 		}
// 		// replace 'V' at end with 'Variation'
// 		if('V'==result.charAt(result.length()-1)) {
// 			result = result.substring(0,result.length()-1)+"Variation";
// 		}
// 		// replace 'Res' at end with 'Resolution'
// 		if(result.substring(result.length()-3).equals("Res")) {
// 			result = result.substring(0,result.length()-3)+"Resolution";
// 		}
// 		// replace 'Res' at end with 'Resolution'
// 		if(result.substring(result.length()-4).equals("Dist")) {
// 			result = result.substring(0,result.length()-4)+"Distribution";
// 		}
// 
// 		return result;
// 	}
// 
// 	public void setEnabled(boolean en) {
// 		enabled = en;
// 		fireStateChanged();
// 	}
// 
// 	public boolean getEnabled() {
// 		return enabled;
// 	}
// 
// 	public String getName() {
// 		return name;
// 	}
// 
// 	public static String replaceCharAt(String s, int pos, char c) {
// 	   return s.substring(0,pos) + c + s.substring(pos+1);
// 	}
// 
// 	public String getGroup() {
// 		return group;
// 	}
// 
// 	public int getLevel() {
// 		return level;
// 	}
// 
// 	public int getOrder() {
// 		return order;
// 	}
// 
// 	public String getShortDesc() {
// 		return shortDesc;
// 	}
// 
// 	public String toString() {
// 		if (! empty()) {
// 			return getValue();
// 		}
// 		// else
// 		return getDefaultValue();
// 	}
// 
// 	public String getLongDesc() {
// 		return longDesc;
// 	}
// 
// 	public void addChangeListener(ChangeListener l) {
// 		listenerList.add(ChangeListener.class, l);
// 	}
// 
// 	public void removeChangeListener(ChangeListener l) {
// 		listenerList.remove(ChangeListener.class, l);
// 	}
// 
// 	protected void fireStateChanged() {
// 		Object [] listeners = listenerList.getListenerList();
// 		for (int i = listeners.length -2; i>=0; i-=2) {
// 			if (listeners[i] == ChangeListener.class) {
// 				if (changeEvent == null) {
// 					changeEvent = new ChangeEvent(this);
// 				}
// 				((ChangeListener)listeners[i+1]).stateChanged(changeEvent);
// 			}
// 		}
// 	}
// }


import net.sourceforge.arbaro.params.AbstractParam;
import java.awt.Color;
import javax.swing.JTree;
import javax.swing.event.ChangeEvent;
import javax.swing.event.ChangeListener;
import javax.swing.event.TreeSelectionEvent;
import javax.swing.event.TreeSelectionListener;
import javax.swing.tree.*;

				}
				
		);
	}
	
	public String getGroupName() throws Exception {
		DefaultMutableTreeNode node = 
			(DefaultMutableTreeNode)
			getLastSelectedPathComponent();
		if (!node.isRoot()) {
			return ((GroupNode)node).getGroupName();
		}
		// no group selected
		throw new Exception("no group selected");
	}
	
	public int getGroupLevel() throws Exception {
		// FIXME: higher nodes could return the level too
		DefaultMutableTreeNode node = 
			(DefaultMutableTreeNode)
			getLastSelectedPathComponent();
		if (!node.isRoot()) {
			return ((GroupNode)node).getGroupLevel();
		}
		// no group selected
		throw new Exception("no group selected");
	}	
	
	private void createNodes() {
		

// Path: src/net/sourceforge/arbaro/params/AbstractParam.java
// public abstract class AbstractParam {
// 	public static final int GENERAL = -999; // no level - general params
// 	String name;
// 	String group;
// 	int level;
// 	int order;
// 	String shortDesc;
// 	String longDesc;
// 	boolean enabled;
// 
// 	protected ChangeEvent changeEvent = null;
// 	protected EventListenerList listenerList = new EventListenerList();
// 
// 	public AbstractParam(String nam, String grp, int lev, int ord,
// 			String sh, String lng) {
// 		name = nam;
// 		group = grp;
// 		level = lev;
// 		order = ord;
// 		shortDesc = sh;
// 		longDesc = lng;
// 		enabled=true;
// 	}
// 
// 	public abstract void setValue(String val) throws ParamException;
// 	public abstract String getValue();
// 	public abstract String getDefaultValue();
// 	public abstract void clear();
// 	public abstract boolean empty();
// 
// 	public static boolean loading=false;
// 
// 	protected void warn(String warning) {
// 		if (! loading) Console.errorOutput("WARNING: "+warning);
// 	}
// 
// 	public String getNiceName() {
// 
// 		String result = "";
// 		// remove leading number
// 		int i = ('0'<=name.charAt(0))&&(name.charAt(0)<='9') ? 1 : 0;
// 		for (; i < name.length(); i++) {
// 			char c = name.charAt(i);
// 			if(('A'<=c) && (c<='Z')) {
// 				result += " " + c;
// 			} else {
// 				result += c;
// 			}
// 		}
// 		// replace 'V' at end with 'Variation'
// 		if('V'==result.charAt(result.length()-1)) {
// 			result = result.substring(0,result.length()-1)+"Variation";
// 		}
// 		// replace 'Res' at end with 'Resolution'
// 		if(result.substring(result.length()-3).equals("Res")) {
// 			result = result.substring(0,result.length()-3)+"Resolution";
// 		}
// 		// replace 'Res' at end with 'Resolution'
// 		if(result.substring(result.length()-4).equals("Dist")) {
// 			result = result.substring(0,result.length()-4)+"Distribution";
// 		}
// 
// 		return result;
// 	}
// 
// 	public void setEnabled(boolean en) {
// 		enabled = en;
// 		fireStateChanged();
// 	}
// 
// 	public boolean getEnabled() {
// 		return enabled;
// 	}
// 
// 	public String getName() {
// 		return name;
// 	}
// 
// 	public static String replaceCharAt(String s, int pos, char c) {
// 	   return s.substring(0,pos) + c + s.substring(pos+1);
// 	}
// 
// 	public String getGroup() {
// 		return group;
// 	}
// 
// 	public int getLevel() {
// 		return level;
// 	}
// 
// 	public int getOrder() {
// 		return order;
// 	}
// 
// 	public String getShortDesc() {
// 		return shortDesc;
// 	}
// 
// 	public String toString() {
// 		if (! empty()) {
// 			return getValue();
// 		}
// 		// else
// 		return getDefaultValue();
// 	}
// 
// 	public String getLongDesc() {
// 		return longDesc;
// 	}
// 
// 	public void addChangeListener(ChangeListener l) {
// 		listenerList.add(ChangeListener.class, l);
// 	}
// 
// 	public void removeChangeListener(ChangeListener l) {
// 		listenerList.remove(ChangeListener.class, l);
// 	}
// 
// 	protected void fireStateChanged() {
// 		Object [] listeners = listenerList.getListenerList();
// 		for (int i = listeners.length -2; i>=0; i-=2) {
// 			if (listeners[i] == ChangeListener.class) {
// 				if (changeEvent == null) {
// 					changeEvent = new ChangeEvent(this);
// 				}
// 				((ChangeListener)listeners[i+1]).stateChanged(changeEvent);
// 			}
// 		}
// 	}
// }


// Path: src/net/sourceforge/arbaro/gui/ParamGroupsView.java
import net.sourceforge.arbaro.params.AbstractParam;
import java.awt.Color;
import javax.swing.JTree;
import javax.swing.event.ChangeEvent;
import javax.swing.event.ChangeListener;
import javax.swing.event.TreeSelectionEvent;
import javax.swing.event.TreeSelectionListener;
import javax.swing.tree.*;

				}
				
		);
	}
	
	public String getGroupName() throws Exception {
		DefaultMutableTreeNode node = 
			(DefaultMutableTreeNode)
			getLastSelectedPathComponent();
		if (!node.isRoot()) {
			return ((GroupNode)node).getGroupName();
		}
		// no group selected
		throw new Exception("no group selected");
	}
	
	public int getGroupLevel() throws Exception {
		// FIXME: higher nodes could return the level too
		DefaultMutableTreeNode node = 
			(DefaultMutableTreeNode)
			getLastSelectedPathComponent();
		if (!node.isRoot()) {
			return ((GroupNode)node).getGroupLevel();
		}
		// no group selected
		throw new Exception("no group selected");
	}	
	
	private void createNodes() {
		

		GroupNode general = new GroupNode("","General",AbstractParam.GENERAL);
