Index: /trunk/autoquest-core-events-test/src/test/java/de/ugoe/cs/autoquest/eventcore/guimodel/AbstractDefaultGUIElementTest.java
===================================================================
--- /trunk/autoquest-core-events-test/src/test/java/de/ugoe/cs/autoquest/eventcore/guimodel/AbstractDefaultGUIElementTest.java	(revision 1875)
+++ /trunk/autoquest-core-events-test/src/test/java/de/ugoe/cs/autoquest/eventcore/guimodel/AbstractDefaultGUIElementTest.java	(revision 1876)
@@ -125,4 +125,12 @@
 
         /* (non-Javadoc)
+         * @see de.ugoe.cs.autoquest.eventcore.guimodel.IGUIElement#getView()
+         */
+        @Override
+        public IGUIView getView() {
+            return null;
+        }
+
+        /* (non-Javadoc)
          * @see de.ugoe.cs.autoquest.eventcore.guimodel.IGUIElement#getDistanceTo(IGUIElement)
          */
Index: /trunk/autoquest-core-events-test/src/test/java/de/ugoe/cs/autoquest/eventcore/guimodel/GUIModelTest.java
===================================================================
--- /trunk/autoquest-core-events-test/src/test/java/de/ugoe/cs/autoquest/eventcore/guimodel/GUIModelTest.java	(revision 1875)
+++ /trunk/autoquest-core-events-test/src/test/java/de/ugoe/cs/autoquest/eventcore/guimodel/GUIModelTest.java	(revision 1876)
@@ -1110,4 +1110,12 @@
 
         /* (non-Javadoc)
+         * @see de.ugoe.cs.autoquest.eventcore.guimodel.IGUIElement#getView()
+         */
+        @Override
+        public IGUIView getView() {
+            return null;
+        }
+
+        /* (non-Javadoc)
          * @see de.ugoe.cs.autoquest.eventcore.guimodel.IGUIElement#getDistanceTo(IGUIElement)
          */
Index: /trunk/autoquest-core-events-test/src/test/java/de/ugoe/cs/autoquest/eventcore/guimodel/MockGUIElement.java
===================================================================
--- /trunk/autoquest-core-events-test/src/test/java/de/ugoe/cs/autoquest/eventcore/guimodel/MockGUIElement.java	(revision 1875)
+++ /trunk/autoquest-core-events-test/src/test/java/de/ugoe/cs/autoquest/eventcore/guimodel/MockGUIElement.java	(revision 1876)
@@ -61,4 +61,9 @@
 
     @Override
+    public IGUIView getView() {
+        return null;
+    }
+
+    @Override
     public double getDistanceTo(IGUIElement otherElement) {
         return 0.0;
Index: /trunk/autoquest-core-events/src/main/java/de/ugoe/cs/autoquest/eventcore/guimodel/GUIElementGroup.java
===================================================================
--- /trunk/autoquest-core-events/src/main/java/de/ugoe/cs/autoquest/eventcore/guimodel/GUIElementGroup.java	(revision 1875)
+++ /trunk/autoquest-core-events/src/main/java/de/ugoe/cs/autoquest/eventcore/guimodel/GUIElementGroup.java	(revision 1876)
@@ -90,4 +90,12 @@
 
     /* (non-Javadoc)
+     * @see de.ugoe.cs.autoquest.eventcore.guimodel.IGUIElement#getView()
+     */
+    @Override
+    public IGUIView getView() {
+        return null;
+    }
+
+    /* (non-Javadoc)
      * @see de.ugoe.cs.autoquest.eventcore.guimodel.IGUIElement#getDistanceTo(IGUIElement)
      */
Index: /trunk/autoquest-core-events/src/main/java/de/ugoe/cs/autoquest/eventcore/guimodel/IGUIElement.java
===================================================================
--- /trunk/autoquest-core-events/src/main/java/de/ugoe/cs/autoquest/eventcore/guimodel/IGUIElement.java	(revision 1875)
+++ /trunk/autoquest-core-events/src/main/java/de/ugoe/cs/autoquest/eventcore/guimodel/IGUIElement.java	(revision 1876)
@@ -44,4 +44,13 @@
      */
     public IGUIElement getParent();
+
+    /**
+     * <p>
+     * Returns the view of the GUI to which this GUI element belongs.
+     * </p>
+     * 
+     * @return the parent
+     */
+    public IGUIView getView();
 
     /**
Index: /trunk/autoquest-core-events/src/main/java/de/ugoe/cs/autoquest/eventcore/guimodel/IGUIView.java
===================================================================
--- /trunk/autoquest-core-events/src/main/java/de/ugoe/cs/autoquest/eventcore/guimodel/IGUIView.java	(revision 1876)
+++ /trunk/autoquest-core-events/src/main/java/de/ugoe/cs/autoquest/eventcore/guimodel/IGUIView.java	(revision 1876)
@@ -0,0 +1,59 @@
+//   Copyright 2012 Georg-August-Universität Göttingen, Germany
+//
+//   Licensed under the Apache License, Version 2.0 (the "License");
+//   you may not use this file except in compliance with the License.
+//   You may obtain a copy of the License at
+//
+//       http://www.apache.org/licenses/LICENSE-2.0
+//
+//   Unless required by applicable law or agreed to in writing, software
+//   distributed under the License is distributed on an "AS IS" BASIS,
+//   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+//   See the License for the specific language governing permissions and
+//   limitations under the License.
+
+package de.ugoe.cs.autoquest.eventcore.guimodel;
+
+import java.io.Serializable;
+
+/**
+ * <p>
+ * Common interface for views in GUI. What is considered a view depends strongly on the concrete
+ * type of the GUI. For example, for web sites it may be any single page or a set of pages. For a
+ * desktop application, it may be modal dialogs and the main view.
+ * </p>
+ * 
+ * @version 1.1
+ * @author Patrick Harms, Steffen Herbold
+ */
+public interface IGUIView extends Serializable {
+
+    /**
+     * <p>
+     * Returns true, if the view is somewhat modal, i.e., it must be closed to see another view.
+     * </p>
+     * 
+     * @return true if the view is modal; false otherwise
+     */
+    public boolean isModal();
+
+    /**
+     * <p>
+     * Defines that {@link IGUIView} implementations have to define equals.
+     * </p>
+     * 
+     * @see Object#equals(Object)
+     */
+    @Override
+    public boolean equals(Object other);
+
+    /**
+     * <p>
+     * Defines that {@link IGUIView} implementations have to define hashCode.
+     * </p>
+     * 
+     * @see Object#hashCode()
+     */
+    @Override
+    public int hashCode();
+}
Index: /trunk/autoquest-plugin-android/src/main/java/de/ugoe/cs/autoquest/plugin/android/guimodel/ANDROIDGUIElement.java
===================================================================
--- /trunk/autoquest-plugin-android/src/main/java/de/ugoe/cs/autoquest/plugin/android/guimodel/ANDROIDGUIElement.java	(revision 1875)
+++ /trunk/autoquest-plugin-android/src/main/java/de/ugoe/cs/autoquest/plugin/android/guimodel/ANDROIDGUIElement.java	(revision 1876)
@@ -18,4 +18,5 @@
 import de.ugoe.cs.autoquest.eventcore.guimodel.IGUIElement;
 import de.ugoe.cs.autoquest.eventcore.guimodel.IGUIElementSpec;
+import de.ugoe.cs.autoquest.eventcore.guimodel.IGUIView;
 
 /**
@@ -71,4 +72,12 @@
     }
 
+    /* (non-Javadoc)
+     * @see de.ugoe.cs.autoquest.eventcore.guimodel.IGUIElement#getView()
+     */
+    @Override
+    public IGUIView getView() {
+        throw new UnsupportedOperationException();
+    }
+
     /*
      * (non-Javadoc)
@@ -101,5 +110,5 @@
         return "Android";
     }
-    
+
     /**
      * <p>
@@ -170,5 +179,5 @@
         return str;
     }
-    
+
     /*
      * (non-Javadoc)
Index: /trunk/autoquest-plugin-html/src/main/java/de/ugoe/cs/autoquest/plugin/html/guimodel/HTMLDocument.java
===================================================================
--- /trunk/autoquest-plugin-html/src/main/java/de/ugoe/cs/autoquest/plugin/html/guimodel/HTMLDocument.java	(revision 1875)
+++ /trunk/autoquest-plugin-html/src/main/java/de/ugoe/cs/autoquest/plugin/html/guimodel/HTMLDocument.java	(revision 1876)
@@ -17,4 +17,5 @@
 import de.ugoe.cs.autoquest.eventcore.guimodel.IDialog;
 import de.ugoe.cs.autoquest.eventcore.guimodel.IGUIElement;
+import de.ugoe.cs.autoquest.eventcore.guimodel.IGUIView;
 
 /**
@@ -68,4 +69,12 @@
     protected String getElementDescriptor() {
         return "Document";
+    }
+
+    /* (non-Javadoc)
+     * @see de.ugoe.cs.autoquest.eventcore.guimodel.IGUIElement#getView()
+     */
+    @Override
+    public IGUIView getView() {
+        return (HTMLDocumentSpec) this.getSpecification();
     }
 
Index: /trunk/autoquest-plugin-html/src/main/java/de/ugoe/cs/autoquest/plugin/html/guimodel/HTMLDocumentSpec.java
===================================================================
--- /trunk/autoquest-plugin-html/src/main/java/de/ugoe/cs/autoquest/plugin/html/guimodel/HTMLDocumentSpec.java	(revision 1875)
+++ /trunk/autoquest-plugin-html/src/main/java/de/ugoe/cs/autoquest/plugin/html/guimodel/HTMLDocumentSpec.java	(revision 1876)
@@ -16,4 +16,5 @@
 
 import de.ugoe.cs.autoquest.eventcore.guimodel.IGUIElementSpec;
+import de.ugoe.cs.autoquest.eventcore.guimodel.IGUIView;
 
 /**
@@ -27,5 +28,5 @@
  * @author Patrick Harms
  */
-public class HTMLDocumentSpec extends HTMLGUIElementSpec implements IGUIElementSpec {
+public class HTMLDocumentSpec extends HTMLGUIElementSpec implements IGUIElementSpec, IGUIView {
 
     /**
@@ -123,9 +124,31 @@
 
     /* (non-Javadoc)
+     * @see java.lang.Object#equals(java.lang.Object)
+     */
+    @Override
+    public boolean equals(Object obj) {
+        if (obj instanceof HTMLDocumentSpec) {
+            return getSimilarity((HTMLDocumentSpec) obj);
+        }
+        else {
+            return false;
+        }
+    }
+
+    /* (non-Javadoc)
      * @see java.lang.Object#toString()
      */
     @Override
     public String toString() {
-        return "Document(" + getPath() + ", \"" + getTitle() + "\")";
+        return "Document(" + getPath() + (getQuery() != null ? getQuery() : "") +
+            ", \"" + getTitle() + "\")";
+    }
+
+    /* (non-Javadoc)
+     * @see de.ugoe.cs.autoquest.eventcore.guimodel.IGUIView#isModal()
+     */
+    @Override
+    public boolean isModal() {
+        return true;
     }
 
@@ -148,5 +171,5 @@
      * @return the path in the URL of the document
      */
-    String getPath() {
+    public String getPath() {
         return path;
     }
@@ -159,5 +182,5 @@
      * @return the query in the URL of the document
      */
-    String getQuery() {
+    public String getQuery() {
         return query;
     }
@@ -170,5 +193,5 @@
      * @return the title of the document
      */
-    String getTitle() {
+    public String getTitle() {
         return title;
     }
Index: /trunk/autoquest-plugin-html/src/main/java/de/ugoe/cs/autoquest/plugin/html/guimodel/HTMLPageElement.java
===================================================================
--- /trunk/autoquest-plugin-html/src/main/java/de/ugoe/cs/autoquest/plugin/html/guimodel/HTMLPageElement.java	(revision 1875)
+++ /trunk/autoquest-plugin-html/src/main/java/de/ugoe/cs/autoquest/plugin/html/guimodel/HTMLPageElement.java	(revision 1876)
@@ -16,4 +16,5 @@
 
 import de.ugoe.cs.autoquest.eventcore.guimodel.IGUIElement;
+import de.ugoe.cs.autoquest.eventcore.guimodel.IGUIView;
 
 /**
@@ -78,4 +79,12 @@
     public int getIndex() {
         return ((HTMLPageElementSpec) super.getSpecification()).getIndex();
+    }
+
+    /* (non-Javadoc)
+     * @see de.ugoe.cs.autoquest.eventcore.guimodel.IGUIElement#getView()
+     */
+    @Override
+    public IGUIView getView() {
+        return ((HTMLPageElementSpec) super.getSpecification()).getPage();
     }
 
Index: /trunk/autoquest-plugin-html/src/main/java/de/ugoe/cs/autoquest/plugin/html/guimodel/HTMLServer.java
===================================================================
--- /trunk/autoquest-plugin-html/src/main/java/de/ugoe/cs/autoquest/plugin/html/guimodel/HTMLServer.java	(revision 1875)
+++ /trunk/autoquest-plugin-html/src/main/java/de/ugoe/cs/autoquest/plugin/html/guimodel/HTMLServer.java	(revision 1876)
@@ -17,4 +17,5 @@
 import de.ugoe.cs.autoquest.eventcore.guimodel.IFrame;
 import de.ugoe.cs.autoquest.eventcore.guimodel.IGUIElement;
+import de.ugoe.cs.autoquest.eventcore.guimodel.IGUIView;
 
 /**
@@ -88,4 +89,12 @@
 
     /* (non-Javadoc)
+     * @see de.ugoe.cs.autoquest.eventcore.guimodel.IGUIElement#getView()
+     */
+    @Override
+    public IGUIView getView() {
+        return null;
+    }
+
+    /* (non-Javadoc)
      * @see de.ugoe.cs.autoquest.eventcore.guimodel.IGUIElement#getDistanceTo(IGUIElement)
      */
Index: /trunk/autoquest-plugin-jfc/src/main/java/de/ugoe/cs/autoquest/plugin/jfc/guimodel/JFCDialog.java
===================================================================
--- /trunk/autoquest-plugin-jfc/src/main/java/de/ugoe/cs/autoquest/plugin/jfc/guimodel/JFCDialog.java	(revision 1875)
+++ /trunk/autoquest-plugin-jfc/src/main/java/de/ugoe/cs/autoquest/plugin/jfc/guimodel/JFCDialog.java	(revision 1876)
@@ -16,4 +16,5 @@
 
 import de.ugoe.cs.autoquest.eventcore.guimodel.IFrame;
+import de.ugoe.cs.autoquest.eventcore.guimodel.IGUIView;
 
 /**
@@ -25,5 +26,5 @@
  * @author Patrick Harms
  */
-public class JFCDialog extends JFCGUIElement implements IFrame {
+public class JFCDialog extends JFCGUIElement implements IFrame, IGUIView {
 
     /**
@@ -59,3 +60,11 @@
     }
 
+    /* (non-Javadoc)
+     * @see de.ugoe.cs.autoquest.eventcore.guimodel.IGUIView#isModal()
+     */
+    @Override
+    public boolean isModal() {
+        return true;
+    }
+
 }
Index: /trunk/autoquest-plugin-jfc/src/main/java/de/ugoe/cs/autoquest/plugin/jfc/guimodel/JFCFrame.java
===================================================================
--- /trunk/autoquest-plugin-jfc/src/main/java/de/ugoe/cs/autoquest/plugin/jfc/guimodel/JFCFrame.java	(revision 1875)
+++ /trunk/autoquest-plugin-jfc/src/main/java/de/ugoe/cs/autoquest/plugin/jfc/guimodel/JFCFrame.java	(revision 1876)
@@ -16,4 +16,5 @@
 
 import de.ugoe.cs.autoquest.eventcore.guimodel.IFrame;
+import de.ugoe.cs.autoquest.eventcore.guimodel.IGUIView;
 
 /**
@@ -25,5 +26,5 @@
  * @author Patrick Harms
  */
-public class JFCFrame extends JFCGUIElement implements IFrame {
+public class JFCFrame extends JFCGUIElement implements IFrame, IGUIView {
 
     /**
@@ -59,3 +60,11 @@
     }
 
+    /* (non-Javadoc)
+     * @see de.ugoe.cs.autoquest.eventcore.guimodel.IGUIView#isModal()
+     */
+    @Override
+    public boolean isModal() {
+        return false;
+    }
+
 }
Index: /trunk/autoquest-plugin-jfc/src/main/java/de/ugoe/cs/autoquest/plugin/jfc/guimodel/JFCGUIElement.java
===================================================================
--- /trunk/autoquest-plugin-jfc/src/main/java/de/ugoe/cs/autoquest/plugin/jfc/guimodel/JFCGUIElement.java	(revision 1875)
+++ /trunk/autoquest-plugin-jfc/src/main/java/de/ugoe/cs/autoquest/plugin/jfc/guimodel/JFCGUIElement.java	(revision 1876)
@@ -18,4 +18,5 @@
 import de.ugoe.cs.autoquest.eventcore.guimodel.IGUIElement;
 import de.ugoe.cs.autoquest.eventcore.guimodel.IGUIElementSpec;
+import de.ugoe.cs.autoquest.eventcore.guimodel.IGUIView;
 
 /**
@@ -186,4 +187,24 @@
     }
 
+    /* (non-Javadoc)
+     * @see de.ugoe.cs.autoquest.eventcore.guimodel.IGUIElement#getView()
+     */
+    @Override
+    public IGUIView getView() {
+        IGUIElement element = this;
+        
+        while ((element != null) && (!(element instanceof IGUIView))) {
+            if (!(element.getParent() instanceof JFCTabbedPane)) {
+                element = element.getParent();
+            }
+            else {
+                // break, as all children of a tabbed pane are always views
+                break;
+            }
+        }
+        
+        return (IGUIView) element;
+    }
+
     /*
      * (non-Javadoc)
Index: /trunk/autoquest-plugin-mfc/src/main/java/de/ugoe/cs/autoquest/plugin/mfc/guimodel/MFCDialog.java
===================================================================
--- /trunk/autoquest-plugin-mfc/src/main/java/de/ugoe/cs/autoquest/plugin/mfc/guimodel/MFCDialog.java	(revision 1875)
+++ /trunk/autoquest-plugin-mfc/src/main/java/de/ugoe/cs/autoquest/plugin/mfc/guimodel/MFCDialog.java	(revision 1876)
@@ -16,4 +16,5 @@
 
 import de.ugoe.cs.autoquest.eventcore.guimodel.IDialog;
+import de.ugoe.cs.autoquest.eventcore.guimodel.IGUIView;
 
 /**
@@ -25,5 +26,5 @@
  * @author Patrick Harms
  */
-public class MFCDialog extends MFCWindow implements IDialog {
+public class MFCDialog extends MFCWindow implements IDialog, IGUIView {
 
     /**
Index: /trunk/autoquest-plugin-mfc/src/main/java/de/ugoe/cs/autoquest/plugin/mfc/guimodel/MFCGUIElement.java
===================================================================
--- /trunk/autoquest-plugin-mfc/src/main/java/de/ugoe/cs/autoquest/plugin/mfc/guimodel/MFCGUIElement.java	(revision 1875)
+++ /trunk/autoquest-plugin-mfc/src/main/java/de/ugoe/cs/autoquest/plugin/mfc/guimodel/MFCGUIElement.java	(revision 1876)
@@ -18,4 +18,5 @@
 import de.ugoe.cs.autoquest.eventcore.guimodel.IGUIElement;
 import de.ugoe.cs.autoquest.eventcore.guimodel.IGUIElementSpec;
+import de.ugoe.cs.autoquest.eventcore.guimodel.IGUIView;
 
 /**
@@ -153,4 +154,18 @@
 
     /* (non-Javadoc)
+     * @see de.ugoe.cs.autoquest.eventcore.guimodel.IGUIElement#getView()
+     */
+    @Override
+    public IGUIView getView() {
+        IGUIElement element = this;
+        
+        while ((element != null) && (!(element instanceof IGUIView))) {
+            element = element.getParent();
+        }
+        
+        return (IGUIView) element;
+    }
+
+    /* (non-Javadoc)
      * @see de.ugoe.cs.autoquest.eventcore.guimodel.IGUIElement#getDistanceTo(IGUIElement)
      */
Index: /trunk/autoquest-plugin-mfc/src/main/java/de/ugoe/cs/autoquest/plugin/mfc/guimodel/MFCWindow.java
===================================================================
--- /trunk/autoquest-plugin-mfc/src/main/java/de/ugoe/cs/autoquest/plugin/mfc/guimodel/MFCWindow.java	(revision 1875)
+++ /trunk/autoquest-plugin-mfc/src/main/java/de/ugoe/cs/autoquest/plugin/mfc/guimodel/MFCWindow.java	(revision 1876)
@@ -16,4 +16,5 @@
 
 import de.ugoe.cs.autoquest.eventcore.guimodel.IFrame;
+import de.ugoe.cs.autoquest.eventcore.guimodel.IGUIView;
 
 /**
@@ -25,5 +26,5 @@
  * @author Patrick Harms
  */
-public class MFCWindow extends MFCGUIElement implements IFrame {
+public class MFCWindow extends MFCGUIElement implements IFrame, IGUIView {
 
     /**
Index: /trunk/autoquest-test-utils/src/main/java/de/ugoe/cs/autoquest/test/DummyGUIElement.java
===================================================================
--- /trunk/autoquest-test-utils/src/main/java/de/ugoe/cs/autoquest/test/DummyGUIElement.java	(revision 1875)
+++ /trunk/autoquest-test-utils/src/main/java/de/ugoe/cs/autoquest/test/DummyGUIElement.java	(revision 1876)
@@ -18,4 +18,5 @@
 import de.ugoe.cs.autoquest.eventcore.guimodel.IGUIElement;
 import de.ugoe.cs.autoquest.eventcore.guimodel.IGUIElementSpec;
+import de.ugoe.cs.autoquest.eventcore.guimodel.IGUIView;
 
 /**
@@ -92,4 +93,11 @@
     }
 
+    /* (non-Javadoc)
+     * @see de.ugoe.cs.autoquest.eventcore.guimodel.IGUIElement#getView()
+     */
+    @Override
+    public IGUIView getView() {
+        return null;
+    }
 
     /* (non-Javadoc)
