/*
* RHQ Management Platform
* Copyright (C) 2010 Red Hat, Inc.
* All rights reserved.
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation version 2 of the License.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
* Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
*/
package org.rhq.coregui.client;
/**
* A view in the GUI which has a bookmarkable URL. The fragment portion of the URL is what
* uniquely identifies the view. View id's are hierarchical and are therefore represented as
* paths (e.g. "http://localhost:7080/coregui/CoreGUI.html#Resource/10001" is a view URL,
* whose view id is "Resource/1001". The URL of its parent view is
* ""http://localhost:7080/coregui/CoreGUI.html#Resource", whose view id is "Resource".
*
* @author Ian Springer
*/
public class View {
private ViewId id;
private BookmarkableView descendantViewRenderer;
private View parent;
public View(ViewId id) {
this(id, null);
}
public View(ViewId id, BookmarkableView descendantViewRenderer) {
if (id == null) {
throw new IllegalArgumentException("Id is null.");
}
this.id = id;
this.descendantViewRenderer = descendantViewRenderer;
}
/**
* Returns this view's unique id.
*
* @return this view's unique id
*/
public ViewId getId() {
return this.id;
}
/**
* Returns a view renderer that should be used to render descendant views, or null if
* the view renderer that rendered this view should also be used to render descendant
* views.
*
* @return a view renderer that should be used to render descendant views, or null if
* the view renderer that rendered this view should also be used to render
* descendant views
*/
public BookmarkableView getDescendantViewRenderer() {
if (this.descendantViewRenderer != null) {
return this.descendantViewRenderer;
} else if (this.parent != null) {
return this.parent.getDescendantViewRenderer();
} else {
return null;
}
}
public View getParent() {
return this.parent;
}
public void setParent(View parent) {
this.parent = parent;
}
@Override
public String toString() {
return "View[" + "id=" + id + ", descendantViewRenderer="
+ ((this.descendantViewRenderer != null) ? this.descendantViewRenderer.getClass().getName() : null) + ']';
}
}