01: package com.meterware.httpunit;
02:
03: /********************************************************************************************************************
04: * $Id: FrameSelector.java,v 1.2 2004/09/29 17:15:24 russgold Exp $
05: *
06: * Copyright (c) 2004, Russell Gold
07: *
08: * Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated
09: * documentation files (the "Software"), to deal in the Software without restriction, including without limitation
10: * the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and
11: * to permit persons to whom the Software is furnished to do so, subject to the following conditions:
12: *
13: * The above copyright notice and this permission notice shall be included in all copies or substantial portions
14: * of the Software.
15: *
16: * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO
17: * THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18: * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF
19: * CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
20: * DEALINGS IN THE SOFTWARE.
21: *
22: *******************************************************************************************************************/
23:
24: /**
25: * An immutable class which describes the position of a frame in the window hierarchy.
26: *
27: * @author <a href="mailto:russgold@httpunit.org">Russell Gold</a>
28: *
29: * @since 1.6
30: **/
31: public class FrameSelector {
32:
33: public static FrameSelector TOP_FRAME = new FrameSelector(
34: WebRequest.TOP_FRAME);
35: static FrameSelector NEW_FRAME = new FrameSelector(
36: WebRequest.TOP_FRAME);
37:
38: private String _name;
39: private WebWindow _window;
40: private FrameSelector _parent;
41:
42: FrameSelector() {
43: _name = super .toString();
44: }
45:
46: FrameSelector(String name) {
47: _name = name;
48: }
49:
50: FrameSelector(String name, FrameSelector parent) {
51: _name = name;
52: _parent = parent;
53: }
54:
55: String getName() {
56: return _name;
57: }
58:
59: FrameSelector getParent() {
60: return _parent;
61: }
62:
63: public String toString() {
64: return "Frame Selector: [ " + getFullName() + " ]";
65: }
66:
67: private String getFullName() {
68: return _name
69: + (_parent == null ? "" : " in "
70: + _parent.getFullName());
71: }
72:
73: WebWindow getWindow() {
74: return _window != null ? _window : (_parent == null ? null
75: : _parent.getWindow());
76: }
77:
78: static FrameSelector newTopFrame(WebWindow window) {
79: return new FrameSelector(WebRequest.TOP_FRAME, window);
80: }
81:
82: private FrameSelector(String name, WebWindow window) {
83: _name = name;
84: _window = window;
85: }
86:
87: }
|