Index: /trunk/autoquest-ui-swt/src/main/java/de/ugoe/cs/autoquest/ui/swt/ConsoleTabComposite.java
===================================================================
--- /trunk/autoquest-ui-swt/src/main/java/de/ugoe/cs/autoquest/ui/swt/ConsoleTabComposite.java	(revision 1235)
+++ /trunk/autoquest-ui-swt/src/main/java/de/ugoe/cs/autoquest/ui/swt/ConsoleTabComposite.java	(revision 1236)
@@ -15,4 +15,6 @@
 package de.ugoe.cs.autoquest.ui.swt;
 
+import java.util.LinkedList;
+
 import org.eclipse.swt.SWT;
 import org.eclipse.swt.widgets.Event;
@@ -27,4 +29,6 @@
 import org.eclipse.swt.events.SelectionAdapter;
 import org.eclipse.swt.events.SelectionEvent;
+import org.eclipse.swt.events.TraverseEvent;
+import org.eclipse.swt.events.TraverseListener;
 
 import org.eclipse.swt.events.KeyAdapter;
@@ -32,4 +36,6 @@
 
 import de.ugoe.cs.util.console.CommandExecuter;
+import de.ugoe.cs.util.console.Console;
+import de.ugoe.cs.util.console.listener.ICommandListener;
 
 /**
@@ -41,5 +47,7 @@
  * @version 1.0
  */
-public class ConsoleTabComposite extends Composite {
+public class ConsoleTabComposite extends Composite implements ICommandListener {
+
+    protected java.util.List<String> commandHistory = new LinkedList<String>();
 
     protected Text textCommand;
@@ -56,4 +64,10 @@
         super(parent, style);
         createContents();
+        Console.getInstance().registerCommandListener(this);
+    }
+
+    @Override
+    public void commandNotification(String command) {
+        commandHistory.add(command);
     }
 
@@ -71,6 +85,26 @@
                     executeCommand();
                 }
+                else if (e.keyCode == SWT.TAB) {
+                    autoCompleteCommand();
+                }
+                else if (e.keyCode == SWT.ARROW_UP) {
+                    setToPreviousCommand();
+                }
+                else if (e.keyCode == SWT.ARROW_DOWN) {
+                    setToNextCommand();
+                }
             }
         });
+        textCommand.addTraverseListener(new TraverseListener() {
+            @Override
+            public void keyTraversed(TraverseEvent e) {
+                if ((e.detail == SWT.TRAVERSE_TAB_NEXT) || (e.detail == SWT.TRAVERSE_TAB_PREVIOUS))
+                {
+                    e.doit = false;
+                }
+            }
+            
+        });
+        
         GridData gd_textCommand = new GridData(SWT.FILL, SWT.CENTER, true, false, 1, 1);
         gd_textCommand.widthHint = 304;
@@ -108,4 +142,44 @@
     }
 
+    private void autoCompleteCommand() {
+        String commandPrefix = textCommand.getText().trim();
+        String completedPrefix = CommandExecuter.getInstance().autoCompleteCommand(commandPrefix);
+        
+        textCommand.setText(completedPrefix.toString());
+        textCommand.setSelection(completedPrefix.length());
+    }
+    
+    private void setToPreviousCommand() {
+        String currentCommand = textCommand.getText().trim();
+        
+        int index = 0;
+        for (index = 0; index < commandHistory.size(); index++) {
+            if (currentCommand.equals(commandHistory.get(index))) {
+                break;
+            }
+        }
+        
+        if (index > 0) {
+            textCommand.setText(commandHistory.get(index - 1));
+            textCommand.setSelection(commandHistory.get(index - 1).length());
+        }
+    }
+
+    private void setToNextCommand() {
+        String currentCommand = textCommand.getText().trim();
+        
+        int index = 0;
+        for (index = 0; index < commandHistory.size(); index++) {
+            if (currentCommand.equals(commandHistory.get(index))) {
+                break;
+            }
+        }
+        
+        if (index < (commandHistory.size() - 1)) {
+            textCommand.setText(commandHistory.get(index + 1));
+            textCommand.setSelection(commandHistory.get(index + 1).length());
+        }
+    }
+    
     @Override
     protected void checkSubclass() {
