Index: /trunk/EventBenchConsole/.classpath
===================================================================
--- /trunk/EventBenchConsole/.classpath	(revision 187)
+++ /trunk/EventBenchConsole/.classpath	(revision 188)
@@ -22,4 +22,21 @@
 	<classpathentry kind="lib" path="lib/wstx-asl-3.2.6.jar"/>
 	<classpathentry kind="lib" path="lib/commons-codec-1.5.jar"/>
+	<classpathentry kind="lib" path="lib/swt/com.ibm.icu_4.4.2.v20110208.jar"/>
+	<classpathentry kind="lib" path="lib/swt/org.eclipse.core.commands_3.6.0.I20110111-0800.jar"/>
+	<classpathentry kind="lib" path="lib/swt/org.eclipse.core.databinding_1.4.0.I20110111-0800.jar"/>
+	<classpathentry kind="lib" path="lib/swt/org.eclipse.core.databinding.beans_1.2.100.I20100824-0800.jar"/>
+	<classpathentry kind="lib" path="lib/swt/org.eclipse.core.databinding.observable_1.4.0.I20110222-0800.jar"/>
+	<classpathentry kind="lib" path="lib/swt/org.eclipse.core.databinding.property_1.4.0.I20110222-0800.jar"/>
+	<classpathentry kind="lib" path="lib/swt/org.eclipse.core.runtime_3.7.0.v20110110.jar"/>
+	<classpathentry kind="lib" path="lib/swt/org.eclipse.equinox.common_3.6.0.v20110523.jar"/>
+	<classpathentry kind="lib" path="lib/swt/org.eclipse.equinox.registry_3.5.100.v20110502.jar"/>
+	<classpathentry kind="lib" path="lib/swt/org.eclipse.jface_3.7.0.I20110522-1430.jar"/>
+	<classpathentry kind="lib" path="lib/swt/org.eclipse.jface.databinding_1.5.0.I20100907-0800.jar"/>
+	<classpathentry kind="lib" path="lib/swt/org.eclipse.jface.text_3.7.0.v20110505-0800.jar"/>
+	<classpathentry kind="lib" path="lib/swt/org.eclipse.osgi_3.7.0.v20110613.jar"/>
+	<classpathentry kind="lib" path="lib/swt/org.eclipse.swt.win32.win32.x86_3.7.0.v3735b.jar"/>
+	<classpathentry kind="lib" path="lib/swt/org.eclipse.text_3.5.100.v20110505-0800.jar"/>
+	<classpathentry kind="lib" path="lib/swt/org.eclipse.ui.forms_3.5.100.v20110425.jar"/>
+	<classpathentry kind="lib" path="lib/swt/org.eclipse.ui.workbench_3.7.0.I20110519-0100.jar"/>
 	<classpathentry combineaccessrules="false" kind="src" path="/JavaHelperLib"/>
 	<classpathentry combineaccessrules="false" kind="src" path="/EventBenchCore"/>
Index: /trunk/EventBenchConsole/src/de/ugoe/cs/eventbench/Runner.java
===================================================================
--- /trunk/EventBenchConsole/src/de/ugoe/cs/eventbench/Runner.java	(revision 187)
+++ /trunk/EventBenchConsole/src/de/ugoe/cs/eventbench/Runner.java	(revision 188)
@@ -1,4 +1,5 @@
 package de.ugoe.cs.eventbench;
 
+import de.ugoe.cs.eventbench.swt.MainWindow;
 import de.ugoe.cs.util.console.CommandExecuter;
 import de.ugoe.cs.util.console.Console;
@@ -36,10 +37,19 @@
 				"de.ugoe.cs.eventbench.web.commands");
 		TextConsole textConsole = new TextConsole();
+		boolean swtGuiRunning = false;
 		if (args.length >= 1) {
-			for (String command : args) {
-				CommandExecuter.getInstance().exec(command);
+			if( args[0].equals("-swt") ) {
+				MainWindow mainWindow = new MainWindow();
+				mainWindow.open();
+				swtGuiRunning = true;
+			} else {
+				for (String command : args) {
+					CommandExecuter.getInstance().exec(command);
+				}
 			}
 		}
-		textConsole.run(true);
+		if( !swtGuiRunning ) {
+			textConsole.run(true);
+		}
 	}
 
Index: /trunk/EventBenchConsole/src/de/ugoe/cs/eventbench/swt/CommandHistory.java
===================================================================
--- /trunk/EventBenchConsole/src/de/ugoe/cs/eventbench/swt/CommandHistory.java	(revision 188)
+++ /trunk/EventBenchConsole/src/de/ugoe/cs/eventbench/swt/CommandHistory.java	(revision 188)
@@ -0,0 +1,72 @@
+package de.ugoe.cs.eventbench.swt;
+
+import org.eclipse.swt.widgets.Dialog;
+import org.eclipse.swt.widgets.Display;
+import org.eclipse.swt.widgets.Shell;
+import org.eclipse.swt.widgets.List;
+import org.eclipse.swt.SWT;
+import org.eclipse.swt.widgets.Label;
+import org.eclipse.swt.widgets.Button;
+import org.eclipse.swt.layout.GridLayout;
+import org.eclipse.swt.layout.GridData;
+
+public class CommandHistory extends Dialog {
+
+	protected Object result;
+	protected Shell shell;
+
+	/**
+	 * Create the dialog.
+	 * @param parent
+	 * @param style
+	 */
+	public CommandHistory(Shell parent, int style) {
+		super(parent, style);
+		setText("SWT Dialog");
+	}
+
+	/**
+	 * Open the dialog.
+	 * @return the result
+	 */
+	public Object open() {
+		createContents();
+		shell.open();
+		shell.layout();
+		Display display = getParent().getDisplay();
+		while (!shell.isDisposed()) {
+			if (!display.readAndDispatch()) {
+				display.sleep();
+			}
+		}
+		return result;
+	}
+
+	/**
+	 * Create contents of the dialog.
+	 */
+	private void createContents() {
+		shell = new Shell(getParent(), SWT.DIALOG_TRIM);
+		shell.setSize(450, 300);
+		shell.setText(getText());
+		shell.setLayout(new GridLayout(3, false));
+		
+		Label lblRecentCommands = new Label(shell, SWT.NONE);
+		lblRecentCommands.setLayoutData(new GridData(SWT.LEFT, SWT.CENTER, false, false, 2, 1));
+		lblRecentCommands.setText("Recent Commands:");
+		new Label(shell, SWT.NONE);
+		
+		List list = new List(shell, SWT.BORDER | SWT.V_SCROLL | SWT.MULTI);
+		list.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true, 3, 1));
+		
+		Button btnExec = new Button(shell, SWT.NONE);
+		btnExec.setText("Execute");
+		
+		Button btnCopyToClipboard = new Button(shell, SWT.NONE);
+		btnCopyToClipboard.setText("Copy to Clipboard");
+		
+		Button btnCreateBatchfile = new Button(shell, SWT.NONE);
+		btnCreateBatchfile.setText("Create Batchfile");
+
+	}
+}
Index: /trunk/EventBenchConsole/src/de/ugoe/cs/eventbench/swt/GenerateSequencesDialog.java
===================================================================
--- /trunk/EventBenchConsole/src/de/ugoe/cs/eventbench/swt/GenerateSequencesDialog.java	(revision 188)
+++ /trunk/EventBenchConsole/src/de/ugoe/cs/eventbench/swt/GenerateSequencesDialog.java	(revision 188)
@@ -0,0 +1,109 @@
+package de.ugoe.cs.eventbench.swt;
+
+import org.eclipse.swt.widgets.Dialog;
+import org.eclipse.swt.widgets.Display;
+import org.eclipse.swt.widgets.Shell;
+import org.eclipse.swt.widgets.Group;
+import org.eclipse.swt.SWT;
+import org.eclipse.swt.widgets.Text;
+import org.eclipse.swt.widgets.Button;
+import org.eclipse.swt.widgets.Spinner;
+import org.eclipse.swt.widgets.Label;
+import org.eclipse.ui.forms.widgets.FormToolkit;
+import org.eclipse.swt.layout.GridLayout;
+import org.eclipse.swt.layout.GridData;
+
+public class GenerateSequencesDialog extends Dialog {
+
+	protected Object result;
+	protected Shell shlGenerateSequences;
+	private Text text;
+	private final FormToolkit formToolkit = new FormToolkit(Display.getDefault());
+
+	/**
+	 * Create the dialog.
+	 * @param parent
+	 * @param style
+	 */
+	public GenerateSequencesDialog(Shell parent, int style) {
+		super(parent, style);
+		setText("SWT Dialog");
+	}
+
+	/**
+	 * Open the dialog.
+	 * @return the result
+	 */
+	public Object open() {
+		createContents();
+		shlGenerateSequences.open();
+		shlGenerateSequences.layout();
+		Display display = getParent().getDisplay();
+		while (!shlGenerateSequences.isDisposed()) {
+			if (!display.readAndDispatch()) {
+				display.sleep();
+			}
+		}
+		return result;
+	}
+
+	/**
+	 * Create contents of the dialog.
+	 */
+	private void createContents() {
+		shlGenerateSequences = new Shell(getParent(), SWT.DIALOG_TRIM | SWT.APPLICATION_MODAL);
+		shlGenerateSequences.setSize(201, 248);
+		shlGenerateSequences.setText("Generate Sequences");
+		shlGenerateSequences.setLayout(new GridLayout(2, false));
+		
+		Group group = new Group(shlGenerateSequences, SWT.NONE);
+		group.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, false, 2, 1));
+		group.setText("Name");
+		group.setLayout(new GridLayout(1, false));
+		
+		text = new Text(group, SWT.BORDER);
+		text.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true, 1, 1));
+		
+		Group grpNumber = new Group(shlGenerateSequences, SWT.NONE);
+		grpNumber.setLayoutData(new GridData(SWT.FILL, SWT.CENTER, true, false, 2, 1));
+		grpNumber.setText("Number");
+		grpNumber.setLayout(new GridLayout(2, false));
+		
+		Spinner spinner = new Spinner(grpNumber, SWT.BORDER);
+		spinner.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true, 1, 1));
+		
+		Button btnAll = new Button(grpNumber, SWT.CHECK);
+		btnAll.setText("All");
+		
+		Group grpLength = new Group(shlGenerateSequences, SWT.NONE);
+		grpLength.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, false, 2, 1));
+		grpLength.setText("Length");
+		grpLength.setLayout(new GridLayout(4, false));
+		
+		Button btnAll_1 = new Button(grpLength, SWT.CHECK);
+		btnAll_1.setText("All");
+		new Label(grpLength, SWT.NONE);
+		new Label(grpLength, SWT.NONE);
+		new Label(grpLength, SWT.NONE);
+		
+		Label label = new Label(grpLength, SWT.NONE);
+		label.setLayoutData(new GridData(SWT.FILL, SWT.CENTER, false, false, 1, 1));
+		label.setText("Min.");
+		
+		Spinner spinner_2 = new Spinner(grpLength, SWT.BORDER);
+		spinner_2.setLayoutData(new GridData(SWT.FILL, SWT.CENTER, true, false, 1, 1));
+		
+		Label label_1 = new Label(grpLength, SWT.NONE);
+		label_1.setLayoutData(new GridData(SWT.FILL, SWT.CENTER, false, true, 1, 1));
+		label_1.setText("Max.");
+		
+		Spinner spinner_1 = new Spinner(grpLength, SWT.BORDER);
+		spinner_1.setLayoutData(new GridData(SWT.FILL, SWT.CENTER, true, false, 1, 1));
+		spinner_1.setToolTipText("0 means no limitations");
+		
+		Button btnGenerate = formToolkit.createButton(shlGenerateSequences, "Generate!", SWT.NONE);
+		
+		Button btnAbort = formToolkit.createButton(shlGenerateSequences, "Abort", SWT.NONE);
+
+	}
+}
Index: /trunk/EventBenchConsole/src/de/ugoe/cs/eventbench/swt/MainWindow.java
===================================================================
--- /trunk/EventBenchConsole/src/de/ugoe/cs/eventbench/swt/MainWindow.java	(revision 188)
+++ /trunk/EventBenchConsole/src/de/ugoe/cs/eventbench/swt/MainWindow.java	(revision 188)
@@ -0,0 +1,256 @@
+package de.ugoe.cs.eventbench.swt;
+
+import java.util.Collection;
+
+import org.eclipse.swt.widgets.Display;
+import org.eclipse.swt.widgets.Shell;
+import org.eclipse.swt.widgets.Menu;
+import org.eclipse.swt.SWT;
+import org.eclipse.swt.widgets.MenuItem;
+import org.eclipse.swt.widgets.Text;
+import org.eclipse.swt.widgets.Label;
+import org.eclipse.swt.widgets.TabFolder;
+import org.eclipse.swt.widgets.TabItem;
+import org.eclipse.swt.widgets.Composite;
+import org.eclipse.swt.widgets.Button;
+import org.eclipse.swt.widgets.List;
+import org.eclipse.swt.layout.GridLayout;
+import org.eclipse.swt.layout.GridData;
+import org.eclipse.swt.events.SelectionAdapter;
+import org.eclipse.swt.events.SelectionEvent;
+
+import de.ugoe.cs.eventbench.data.Event;
+import de.ugoe.cs.eventbench.data.GlobalDataContainer;
+import de.ugoe.cs.util.console.CommandExecuter;
+import de.ugoe.cs.util.console.TextConsole;
+import org.eclipse.swt.events.KeyAdapter;
+import org.eclipse.swt.events.KeyEvent;
+
+public class MainWindow {
+
+	protected Shell shell;
+	private Text textCommand;
+	private Text textConsoleOutput;
+	private List list;
+
+	/**
+	 * Launch the application.
+	 * @param args
+	 */
+	public static void main(String[] args) {
+		// TODO this main method needs to be removed/remodeled when merging with other project
+		try {
+			CommandExecuter.getInstance().addCommandPackage(
+					"de.ugoe.cs.eventbench.commands");
+			CommandExecuter.getInstance().addCommandPackage(
+					"de.ugoe.cs.eventbench.windows.commands");
+			CommandExecuter.getInstance().addCommandPackage(
+					"de.ugoe.cs.eventbench.web.commands");
+			new TextConsole();
+			
+			MainWindow window = new MainWindow();
+			window.open();
+		} catch (Exception e) {
+			e.printStackTrace();
+		}
+	}
+
+	/**
+	 * Open the window.
+	 */
+	public void open() {
+		Display display = Display.getDefault();
+		createContents();
+		new SWTConsole(textConsoleOutput);
+		shell.open();
+		shell.layout();
+		while (!shell.isDisposed()) {
+			if (!display.readAndDispatch()) {
+				display.sleep();
+			}
+		}
+	}
+
+	/**
+	 * Create contents of the window.
+	 */
+	protected void createContents() {
+		shell = new Shell();
+		shell.setSize(500, 300);
+		shell.setText("SWT Application");
+		shell.setLayout(new GridLayout(1, false));
+		
+		Menu menu = new Menu(shell, SWT.BAR);
+		shell.setMenuBar(menu);
+		
+		MenuItem mntmFile = new MenuItem(menu, SWT.CASCADE);
+		mntmFile.setText("File");
+		
+		Menu menu_1 = new Menu(mntmFile);
+		mntmFile.setMenu(menu_1);
+		
+		MenuItem mntmShowHistory = new MenuItem(menu_1, SWT.NONE);
+		mntmShowHistory.setText("Show History");
+		
+		MenuItem mntmExecBatchFile = new MenuItem(menu_1, SWT.NONE);
+		mntmExecBatchFile.setText("Exec. Batch File");
+		
+		new MenuItem(menu_1, SWT.SEPARATOR);
+		
+		MenuItem mntmLoad = new MenuItem(menu_1, SWT.NONE);
+		mntmLoad.setText("Load...");
+		
+		MenuItem mntmSave = new MenuItem(menu_1, SWT.NONE);
+		mntmSave.setText("Save...");
+		
+		new MenuItem(menu_1, SWT.SEPARATOR);
+		
+		MenuItem mntmExit = new MenuItem(menu_1, SWT.NONE);
+		mntmExit.setText("Exit");
+		
+		MenuItem mntmHelp = new MenuItem(menu, SWT.CASCADE);
+		mntmHelp.setText("Help");
+		
+		Menu menu_2 = new Menu(mntmHelp);
+		mntmHelp.setMenu(menu_2);
+		
+		MenuItem mntmAbout = new MenuItem(menu_2, SWT.NONE);
+		mntmAbout.setText("About");
+		
+		TabFolder tabFolder = new TabFolder(shell, SWT.NONE);
+		tabFolder.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true, 1, 1));
+		
+		TabItem tbtmConsoleMode = new TabItem(tabFolder, SWT.NONE);
+		tbtmConsoleMode.setText("Console");
+		
+		Composite composite = new Composite(tabFolder, SWT.NO_BACKGROUND);
+		tbtmConsoleMode.setControl(composite);
+		composite.setLayout(new GridLayout(3, false));
+		
+		Label lblCommand = new Label(composite, SWT.NONE);
+		lblCommand.setText("Command:");
+		
+		textCommand = new Text(composite, SWT.BORDER);
+		textCommand.addKeyListener(new KeyAdapter() {
+			@Override
+			public void keyReleased(KeyEvent e) {
+				if( e.keyCode==SWT.CR ) {
+					String command = textCommand.getText().trim();
+					CommandExecuter.getInstance().exec(command);
+				}
+			}
+		});
+		GridData gd_textCommand = new GridData(SWT.FILL, SWT.CENTER, true, false, 1, 1);
+		gd_textCommand.widthHint = 304;
+		textCommand.setLayoutData(gd_textCommand);
+		
+		Button btnEnter = new Button(composite, SWT.NONE);
+		btnEnter.addSelectionListener(new SelectionAdapter() {
+			@Override
+			public void widgetSelected(SelectionEvent e) {
+				// Event handler for executing commands
+				String command = textCommand.getText().trim();
+				CommandExecuter.getInstance().exec(command);
+			}
+		});
+		btnEnter.setText("Enter");
+		
+		textConsoleOutput = new Text(composite, SWT.BORDER | SWT.H_SCROLL | SWT.V_SCROLL | SWT.CANCEL);
+		GridData gd_textConsoleOutput = new GridData(SWT.FILL, SWT.FILL, true, true, 3, 1);
+		gd_textConsoleOutput.heightHint = 102;
+		gd_textConsoleOutput.widthHint = 456;
+		textConsoleOutput.setLayoutData(gd_textConsoleOutput);
+		
+		TabItem tbtmSequences = new TabItem(tabFolder, SWT.NONE);
+		tbtmSequences.setText("Sequences");
+		
+		Composite composite_2 = new Composite(tabFolder, SWT.NO_BACKGROUND);
+		tbtmSequences.setControl(composite_2);
+		composite_2.setLayout(new GridLayout(5, false));
+		
+		list = new List(composite_2, SWT.BORDER | SWT.V_SCROLL | SWT.MULTI);
+		list.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true, 5, 1));
+		list.setItems(new String[] {});
+		for( String sequencesName : GlobalDataContainer.getInstance().getAllSequencesNames() ) {
+			list.add(sequencesName);
+		}
+		
+		Button btnEdit = new Button(composite_2, SWT.NONE);
+		btnEdit.addSelectionListener(new SelectionAdapter() {
+			@Override
+			public void widgetSelected(SelectionEvent e) {
+				// TODO edit sequences event handler
+			}
+		});
+		btnEdit.setText("Edit");
+		
+		Button btnDelete = new Button(composite_2, SWT.NONE);
+		btnDelete.addSelectionListener(new SelectionAdapter() {
+			@Override
+			public void widgetSelected(SelectionEvent e) {
+				String[] selectedSequences = list.getSelection();
+				for( String selected : selectedSequences) {
+					GlobalDataContainer.getInstance().removeData(selected);
+				}
+			}
+		});
+		btnDelete.setText("Delete");
+		
+		Button btnReplay = new Button(composite_2, SWT.NONE);
+		btnReplay.setText("Replay");
+		
+		Button btnTrainModel = new Button(composite_2, SWT.NONE);
+		btnTrainModel.setText("Train Model");
+		
+		Button btnParse = new Button(composite_2, SWT.NONE);
+		btnParse.setText("Parse");
+		
+		TabItem tbtmModels = new TabItem(tabFolder, SWT.NONE);
+		tbtmModels.setText("Models");
+		
+		Composite composite_1 = new Composite(tabFolder, SWT.NO_BACKGROUND);
+		tbtmModels.setControl(composite_1);
+		composite_1.setLayout(new GridLayout(5, false));
+		
+		List list_1 = new List(composite_1, SWT.BORDER | SWT.V_SCROLL | SWT.MULTI);
+		list_1.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true, 5, 1));
+		
+		Button btnShow = new Button(composite_1, SWT.NONE);
+		btnShow.setText("Visualize");
+		
+		Button btnDelete_1 = new Button(composite_1, SWT.NONE);
+		btnDelete_1.setText("Delete");
+		
+		Button btnGenSequences = new Button(composite_1, SWT.NONE);
+		btnGenSequences.setText("Gen. Sequences");
+		
+		Button btnProperties = new Button(composite_1, SWT.NONE);
+		btnProperties.setText("Properties");
+		
+		Button btnCreateDot = new Button(composite_1, SWT.NONE);
+		btnCreateDot.setText("Create DOT");
+		
+		TabItem tbtmData = new TabItem(tabFolder, SWT.NONE);
+		tbtmData.setText("Data");
+		
+		Composite composite_3 = new Composite(tabFolder, SWT.NO_BACKGROUND);
+		tbtmData.setControl(composite_3);
+		composite_3.setLayout(new GridLayout(3, false));
+		
+		List list_2 = new List(composite_3, SWT.BORDER | SWT.V_SCROLL);
+		list_2.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true, 3, 1));
+		
+		Button btnLoad = new Button(composite_3, SWT.NONE);
+		btnLoad.setText("Load");
+		
+		Button btnSave = new Button(composite_3, SWT.NONE);
+		btnSave.setText("Save");
+		
+		Button btnDelete_2 = new Button(composite_3, SWT.NONE);
+		btnDelete_2.setText("Delete");
+
+	}
+	public Text getTextConsoleOutput() {
+		return textConsoleOutput;
+	}
+}
Index: /trunk/EventBenchConsole/src/de/ugoe/cs/eventbench/swt/ModelProperties.java
===================================================================
--- /trunk/EventBenchConsole/src/de/ugoe/cs/eventbench/swt/ModelProperties.java	(revision 188)
+++ /trunk/EventBenchConsole/src/de/ugoe/cs/eventbench/swt/ModelProperties.java	(revision 188)
@@ -0,0 +1,102 @@
+package de.ugoe.cs.eventbench.swt;
+
+import org.eclipse.swt.widgets.Dialog;
+import org.eclipse.swt.widgets.Display;
+import org.eclipse.swt.widgets.Shell;
+import org.eclipse.swt.widgets.List;
+import org.eclipse.swt.SWT;
+import org.eclipse.swt.widgets.Group;
+import org.eclipse.swt.widgets.Label;
+import org.eclipse.swt.widgets.Button;
+import org.eclipse.swt.layout.GridLayout;
+import org.eclipse.swt.layout.GridData;
+import org.eclipse.swt.layout.FillLayout;
+
+public class ModelProperties extends Dialog {
+
+	protected Object result;
+	protected Shell shlModelProperties;
+
+	/**
+	 * Create the dialog.
+	 * @param parent
+	 * @param style
+	 */
+	public ModelProperties(Shell parent, int style) {
+		super(parent, style);
+		setText("SWT Dialog");
+	}
+
+	/**
+	 * Open the dialog.
+	 * @return the result
+	 */
+	public Object open() {
+		createContents();
+		shlModelProperties.open();
+		shlModelProperties.layout();
+		Display display = getParent().getDisplay();
+		while (!shlModelProperties.isDisposed()) {
+			if (!display.readAndDispatch()) {
+				display.sleep();
+			}
+		}
+		return result;
+	}
+
+	/**
+	 * Create contents of the dialog.
+	 */
+	private void createContents() {
+		shlModelProperties = new Shell(getParent(), SWT.DIALOG_TRIM | SWT.RESIZE);
+		shlModelProperties.setSize(230, 318);
+		shlModelProperties.setText("Model Properties");
+		shlModelProperties.setLayout(new GridLayout(2, false));
+		
+		Group grpEvents = new Group(shlModelProperties, SWT.NONE);
+		FillLayout fl_grpEvents = new FillLayout(SWT.HORIZONTAL);
+		fl_grpEvents.marginHeight = 5;
+		fl_grpEvents.marginWidth = 5;
+		grpEvents.setLayout(fl_grpEvents);
+		grpEvents.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true, 2, 1));
+		grpEvents.setText("Events");
+		
+		List list = new List(grpEvents, SWT.BORDER | SWT.V_SCROLL);
+		
+		Group grpStatistics = new Group(shlModelProperties, SWT.NONE);
+		grpStatistics.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, false, 2, 1));
+		grpStatistics.setText("Statistics");
+		grpStatistics.setLayout(new GridLayout(2, false));
+		
+		Label lblNumEvents = new Label(grpStatistics, SWT.NONE);
+		lblNumEvents.setLayoutData(new GridData(SWT.FILL, SWT.TOP, true, false, 1, 1));
+		lblNumEvents.setText("Num. Events");
+		
+		Label label = new Label(grpStatistics, SWT.RIGHT);
+		label.setLayoutData(new GridData(SWT.RIGHT, SWT.TOP, false, false, 1, 1));
+		label.setText("####");
+		
+		Label lblNumTrieLeafs = new Label(grpStatistics, SWT.NONE);
+		lblNumTrieLeafs.setLayoutData(new GridData(SWT.FILL, SWT.TOP, true, false, 1, 1));
+		lblNumTrieLeafs.setText("Size (#Trie Leafs)");
+		
+		Label label_1 = new Label(grpStatistics, SWT.RIGHT);
+		label_1.setLayoutData(new GridData(SWT.RIGHT, SWT.TOP, false, false, 1, 1));
+		label_1.setText("####");
+		
+		Label lblEntropy = new Label(grpStatistics, SWT.NONE);
+		lblEntropy.setLayoutData(new GridData(SWT.FILL, SWT.TOP, true, false, 1, 1));
+		lblEntropy.setText("Entropy");
+		
+		Label label_2 = new Label(grpStatistics, SWT.RIGHT);
+		label_2.setLayoutData(new GridData(SWT.RIGHT, SWT.TOP, false, false, 1, 1));
+		label_2.setText("####");
+		
+		Button btnCalculateEntropy = new Button(shlModelProperties, SWT.NONE);
+		btnCalculateEntropy.setText("Calculate Entropy");
+		
+		Button btnClose = new Button(shlModelProperties, SWT.NONE);
+		btnClose.setText("Close");
+
+	}
+}
Index: /trunk/EventBenchConsole/src/de/ugoe/cs/eventbench/swt/SWTConsole.java
===================================================================
--- /trunk/EventBenchConsole/src/de/ugoe/cs/eventbench/swt/SWTConsole.java	(revision 188)
+++ /trunk/EventBenchConsole/src/de/ugoe/cs/eventbench/swt/SWTConsole.java	(revision 188)
@@ -0,0 +1,42 @@
+package de.ugoe.cs.eventbench.swt;
+
+import org.eclipse.swt.widgets.Text;
+
+import de.ugoe.cs.util.console.Console;
+import de.ugoe.cs.util.console.ConsoleObserver;
+
+public class SWTConsole implements ConsoleObserver {
+
+	Text output;
+	
+	public SWTConsole(Text output) {
+		Console.getInstance().registerObserver(this);
+		this.output = output;
+	}
+	
+	@Override
+	public void updateText(String newMessage) {
+		output.append(newMessage);
+	}
+
+	@Override
+	public void errStream(String errMessage) {
+		output.append(errMessage);
+
+	}
+
+	@Override
+	public void trace(String traceMessage) {
+		output.append(traceMessage);
+	}
+
+	@Override
+	public void printStacktrace(Exception e) {
+		// TODO print stacktrace
+	}
+	
+	@Override
+	public void commandNotification(String command) {
+		output.append("> " + command);	
+	}
+}
Index: /trunk/EventBenchConsole/src/de/ugoe/cs/eventbench/swt/TrainModelDialog.java
===================================================================
--- /trunk/EventBenchConsole/src/de/ugoe/cs/eventbench/swt/TrainModelDialog.java	(revision 188)
+++ /trunk/EventBenchConsole/src/de/ugoe/cs/eventbench/swt/TrainModelDialog.java	(revision 188)
@@ -0,0 +1,112 @@
+package de.ugoe.cs.eventbench.swt;
+
+import org.eclipse.swt.widgets.Dialog;
+import org.eclipse.swt.widgets.Display;
+import org.eclipse.swt.widgets.Shell;
+import org.eclipse.swt.widgets.Button;
+import org.eclipse.swt.SWT;
+import org.eclipse.swt.widgets.Group;
+import org.eclipse.swt.widgets.Label;
+import org.eclipse.swt.widgets.Text;
+import org.eclipse.swt.widgets.Spinner;
+import org.eclipse.swt.layout.GridLayout;
+import org.eclipse.swt.layout.GridData;
+
+public class TrainModelDialog extends Dialog {
+
+	protected Object result;
+	protected Shell shlTrainUsageModel;
+	private Text text_1;
+
+	/**
+	 * Create the dialog.
+	 * @param parent
+	 * @param style
+	 */
+	public TrainModelDialog(Shell parent, int style) {
+		super(parent, style);
+		setText("SWT Dialog");
+	}
+
+	/**
+	 * Open the dialog.
+	 * @return the result
+	 */
+	public Object open() {
+		createContents();
+		shlTrainUsageModel.open();
+		shlTrainUsageModel.layout();
+		Display display = getParent().getDisplay();
+		while (!shlTrainUsageModel.isDisposed()) {
+			if (!display.readAndDispatch()) {
+				display.sleep();
+			}
+		}
+		return result;
+	}
+
+	/**
+	 * Create contents of the dialog.
+	 */
+	private void createContents() {
+		shlTrainUsageModel = new Shell(getParent(), SWT.DIALOG_TRIM | SWT.MIN | SWT.APPLICATION_MODAL);
+		shlTrainUsageModel.setSize(219, 279);
+		shlTrainUsageModel.setText("Train Usage Model");
+		shlTrainUsageModel.setLayout(new GridLayout(2, false));
+		
+		Group grpGeneralInformation = new Group(shlTrainUsageModel, SWT.NONE);
+		grpGeneralInformation.setLayoutData(new GridData(SWT.FILL, SWT.FILL, false, false, 2, 1));
+		grpGeneralInformation.setText("Name");
+		grpGeneralInformation.setLayout(new GridLayout(1, false));
+		
+		text_1 = new Text(grpGeneralInformation, SWT.BORDER);
+		text_1.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, false, 1, 1));
+		
+		Group grpType = new Group(shlTrainUsageModel, SWT.NONE);
+		grpType.setLayoutData(new GridData(SWT.FILL, SWT.FILL, false, false, 2, 1));
+		grpType.setText("Type");
+		grpType.setLayout(new GridLayout(1, false));
+		
+		Button btnFirstorderMarkovModel = new Button(grpType, SWT.RADIO);
+		btnFirstorderMarkovModel.setLayoutData(new GridData(SWT.LEFT, SWT.FILL, false, false, 1, 1));
+		btnFirstorderMarkovModel.setText("First-Order Markov Model");
+		
+		Button btnHighorderMarkovModel = new Button(grpType, SWT.RADIO);
+		btnHighorderMarkovModel.setLayoutData(new GridData(SWT.LEFT, SWT.FILL, false, false, 1, 1));
+		btnHighorderMarkovModel.setText("High-Order Markov Model");
+		
+		Button btnPredictionByPartial = new Button(grpType, SWT.RADIO);
+		btnPredictionByPartial.setLayoutData(new GridData(SWT.LEFT, SWT.FILL, false, false, 1, 1));
+		btnPredictionByPartial.setText("Prediction by Partial Match");
+		
+		Button btnDeterministicFiniteAutomaton = new Button(grpType, SWT.RADIO);
+		btnDeterministicFiniteAutomaton.setLayoutData(new GridData(SWT.LEFT, SWT.FILL, false, false, 1, 1));
+		btnDeterministicFiniteAutomaton.setText("Deterministic Finite Automaton");
+		
+		Group grpModelProperties = new Group(shlTrainUsageModel, SWT.NONE);
+		grpModelProperties.setLayout(new GridLayout(4, false));
+		grpModelProperties.setLayoutData(new GridData(SWT.FILL, SWT.FILL, false, true, 2, 1));
+		grpModelProperties.setText("Order");
+		
+		Label lblMin = new Label(grpModelProperties, SWT.NONE);
+		lblMin.setText("Min.");
+		
+		Spinner spinner_1 = new Spinner(grpModelProperties, SWT.BORDER);
+		
+		Label lblMax = new Label(grpModelProperties, SWT.NONE);
+		lblMax.setText("Max.");
+		
+		Spinner spinner = new Spinner(grpModelProperties, SWT.BORDER);
+		new Label(grpModelProperties, SWT.NONE);
+		new Label(grpModelProperties, SWT.NONE);
+		new Label(grpModelProperties, SWT.NONE);
+		new Label(grpModelProperties, SWT.NONE);
+		
+		Button btnTrain = new Button(shlTrainUsageModel, SWT.NONE);
+		btnTrain.setText("Train!");
+		
+		Button btnAbort = new Button(shlTrainUsageModel, SWT.NONE);
+		btnAbort.setText("Abort");
+
+	}
+}
