/******************************************************************************* * Copyright (c) 2002, 2006 IBM Corporation and others. * All rights reserved. This program and the accompanying materials * are made available under the terms of the Eclipse Public License v1.0 * which accompanies this distribution, and is available at * http://www.eclipse.org/legal/epl-v10.html * * Contributors: * IBM Corporation - initial API and implementation *******************************************************************************/ package org.eclipse.ui.internal.cheatsheets.data; import java.util.ArrayList; import java.util.Iterator; public class Item extends Intro implements IExecutableItem, IPerformWhenItem, ISubItemItem { private String title; private boolean skip; private boolean dialog; private ArrayList itemExtensions; private AbstractExecutable executable; private PerformWhen performWhen; private ArrayList subItems; private String completionMessage; /** * Constructor for Item. */ public Item() { super(); } public Item(String title, String description, String href, String contextId, boolean skip, boolean dialog) { super(description, href, contextId); this.title = title; this.skip = skip; this.dialog = dialog; } /** * Returns the title. * @return String */ public String getTitle() { return this.title; } /** * Returns whether this item is dynamic. An item is dynamic if it * has performWhen condition, conditionalSubItems or repeatedSubItems. * * @return <code>true</code> if this item is dynamic, and * <code>false</code> for normal items */ public boolean isDynamic() { if( performWhen != null || hasDynamicSubItems()) { return true; } return false; } /** * Returns whether or not this item requires opening a dialog. * @return whether the item requires opening a dialog */ public boolean isDialog() { return this.dialog; } /** * Returns the skip. * @return boolean */ public boolean isSkip() { return this.skip; } /** * Sets whether or not this item requires opening a dialog. * @param dialog whether the item requires opening a dialog */ public void setDialog(boolean dialog) { this.dialog = dialog; } /** * @param skip The skip to set. */ public void setSkip(boolean skip) { this.skip = skip; } /** * Sets the title. * @param title The title to set */ public void setTitle(String title) { this.title = title; } /** * Sets the item extensions for this item. * @param exts the extensions to set */ public void setItemExtensions(ArrayList exts){ this.itemExtensions = exts; } /** * Returns the item extensions, if any, for this item,. * @return list of the extensions or <code>null</code> */ public ArrayList getItemExtensions(){ return itemExtensions; } /** * @return Returns the performWhen. */ public PerformWhen getPerformWhen() { return performWhen; } /** * @param performWhen The performWhen to set. */ public void setPerformWhen(PerformWhen performWhen) { this.performWhen = performWhen; } /** * @param subItem the SubItem to add. */ public void addSubItem(AbstractSubItem subItem) { if(subItems == null) { subItems = new ArrayList(); } subItems.add(subItem); } /** * @return Returns the subItems. */ public ArrayList getSubItems() { return subItems; } private boolean hasDynamicSubItems() { if( subItems != null) { for (Iterator iter = subItems.iterator(); iter.hasNext();) { AbstractSubItem subItem = (AbstractSubItem)iter.next(); if( subItem instanceof RepeatedSubItem || subItem instanceof ConditionalSubItem || subItem instanceof SubItem && ((SubItem)subItem).getPerformWhen() != null ) { return true; } } } return false; } public AbstractExecutable getExecutable() { return executable; } public void setExecutable(AbstractExecutable executable) { this.executable = executable; } public void setCompletionMessage(String message) { this.completionMessage = message; } public String getCompletionMessage() { return completionMessage; } }