001: /*******************************************************************************
002: * Copyright (c) 2004, 2005 IBM Corporation and others.
003: * All rights reserved. This program and the accompanying materials
004: * are made available under the terms of the Eclipse Public License v1.0
005: * which accompanies this distribution, and is available at
006: * http://www.eclipse.org/legal/epl-v10.html
007: *
008: * Contributors:
009: * IBM Corporation - initial API and implementation
010: *******************************************************************************/package org.eclipse.ui.internal.intro.impl.model;
011:
012: import java.util.Vector;
013:
014: import org.eclipse.ui.internal.intro.impl.model.util.ModelUtil;
015: import org.osgi.framework.Bundle;
016: import org.w3c.dom.Element;
017:
018: /**
019: * An Intro Home page. A home page is special because it is the page that
020: * decides whether the OOBE pages are dynamic or static. This model class models
021: * the home and the standby page (since there is no difference between the two).
022: */
023: public class IntroHomePage extends AbstractIntroPage {
024:
025: private static final String ATT_URL = "url"; //$NON-NLS-1$
026:
027: private String url;
028: private boolean isDynamic = false;
029: private boolean isStandbyPage;
030:
031: IntroHomePage(Element element, Bundle bundle, String base) {
032: super (element, bundle, base);
033: url = getAttribute(element, ATT_URL);
034: if (url == null)
035: // if we do not have a URL attribute, then we have dynamic content.
036: isDynamic = true;
037: else
038: // check the url/standby-url attributes and update accordingly.
039: url = ModelUtil.resolveURL(base, url, bundle);
040: }
041:
042: /**
043: * @return Returns the url.
044: */
045: public String getUrl() {
046: return url;
047: }
048:
049: /**
050: * Returns true if this is a dynamic model or not. This is based on whether
051: * this root page has a URL attribute or not.
052: *
053: * @return Returns the isDynamic.
054: */
055: public boolean isDynamic() {
056: return isDynamic;
057: }
058:
059: /*
060: * (non-Javadoc)
061: *
062: * @see org.eclipse.ui.internal.intro.impl.model.IntroElement#getType()
063: */
064: public int getType() {
065: return AbstractIntroElement.HOME_PAGE;
066: }
067:
068: /**
069: * @return Returns the isStandbyPage.
070: */
071: public boolean isStandbyPage() {
072: return isStandbyPage;
073: }
074:
075: /**
076: * @param isStandbyPage
077: * The isStandbyPage to set.
078: */
079: public void setStandbyPage(boolean isStandbyPage) {
080: this .isStandbyPage = isStandbyPage;
081: }
082:
083: // THESE METHODS WILL BE REMOVED!
084: /**
085: * This method is a customized method for root page to return the root page
086: * links. Try to get the real links in the page, and all links in all divs.
087: */
088: public IntroLink[] getLinks() {
089: Vector linkVector = new Vector();
090:
091: AbstractIntroElement[] children = getChildren();
092: for (int i = 0; i < children.length; i++) {
093: AbstractIntroElement child = children[i];
094: if (child.isOfType(AbstractIntroElement.LINK))
095: linkVector.add(child);
096: else if (child.isOfType(AbstractIntroElement.GROUP)) {
097: addLinks((IntroGroup) child, linkVector);
098: }
099: }
100:
101: IntroLink[] links = new IntroLink[linkVector.size()];
102: linkVector.copyInto(links);
103: return links;
104: }
105:
106: private void addLinks(IntroGroup group, Vector linkVector) {
107: AbstractIntroElement[] children = group.getChildren();
108: for (int i = 0; i < children.length; i++) {
109: AbstractIntroElement child = children[i];
110: if (child.isOfType(AbstractIntroElement.LINK))
111: linkVector.add(child);
112: else if (child.isOfType(AbstractIntroElement.GROUP)) {
113: addLinks((IntroGroup) child, linkVector);
114: }
115: }
116: }
117:
118: }
|