Table of Contents

Automatic User Interface

Introduction

Capsis is now able to generate automatically the graphical user interface for the model parameters without writing specific java code.

Model parameters are displayed in a simple dialog box. The following type are supported :

The generated dialog supports

Example

A initialization dialog :

import jeeb.lib.util.autoui.annotations.AutoUI;
import jeeb.lib.util.autoui.annotations.Editor;
import jeeb.lib.util.autoui.editors.FilenameEditor;
import capsis.kernel.AbstractSettings;
import capsis.kernel.GModel;
import capsis.kernel.GScene;
import capsis.kernel.InitialParameters;
 
@AutoUI(title="TestAutoUI.initializeScenario", translation="testautoui.Labels")
public class TestAutoUISettings extends AbstractSettings implements InitialParameters {
 
	public static final String SOME_VARIABLE = "defaultValue";
 
	@Editor
	public String someVariable = SOME_VARIABLE;
 
	@Editor(label = "A Filename", editorClass=FilenameEditor.class)
	public String filename;
 
	@Editor(label = "A Double")
	public Double param = 2.2;
 
	@Editor(min=-2, max=2, label = "an Integer")
	public int param2;
 
	public enum MyEnum {
		VAL1, VAL2, VAL3;
	}
 
	@Editor(label = "enumeration")
	public MyEnum e;
 
 
	@Editor(group="group1", label = "Another Double")
	public Double param3;
 
	/** 
	 * Subclass
	 * Diameter class cutting parameters
	 */
	@AutoUI(title="CutClass", translation="testautoui.Labels")
	static public class CutClass {
 
		@Editor
		public String label;
		@Editor
		public double percent;
 
		public CutClass() {}
		public CutClass(String l) {	label = l;	}
		public String toString() { return label + ": " + percent + "%"; }
	}
 
	@Editor(group="Thinning", elementClass=CutClass.class)
	public List<CutClass> cutClasses = new ArrayList<CutClass>();
 
 
 
	////////////////////////////// InitialParameters interface /////////////////////
	transient private GScene initScene;
 
	public void init (GModel model) throws Exception {	}
 
		// Set some other parameters here...
 
	}
 
	public GScene getInitScene () {return initScene;}
 
}

How to use AutoUI

Default Relay

When using default relay, Capsis build automatically initialization and evolution dialogs by using AutoUI annotations.

Specific Relay
class TestAutoUIRelay extends Relay
...
        /** Initialisation */
	public InitialParameters getInitialParameters () {
 
 
		TestAutoUISettings settings = (TestAutoUISettings settings) getModel().getSettings();
		AutoDialog<TestAutoUISettings> dlg = new AutoDialog<TestAutoUISettings>(settings);
		if (!dlg.isValidDialog ()) {
			dlg.dispose ();
			return null;
		}
 
		try {
			settings.init(getModel());
		} catch (Exception e) {
			Log.println (Log.ERROR, "Settings.init ()", e.toString (), e);
			JOptionPane.showMessageDialog (null, Translator.swap ("exceptionDuringInit"),
				Translator.swap ("Shared.warning"), JOptionPane.WARNING_MESSAGE );
			return null;
		}
 
		return settings;
	}