blob: 0c48fbbfe68ca24c48567b1d6ac881652a590772 [file] [log] [blame]
/*******************************************************************************
* 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.
*/
@Override
public PerformWhen getPerformWhen() {
return performWhen;
}
/**
* @param performWhen The performWhen to set.
*/
@Override
public void setPerformWhen(PerformWhen performWhen) {
this.performWhen = performWhen;
}
/**
* @param subItem the SubItem to add.
*/
@Override
public void addSubItem(AbstractSubItem subItem) {
if(subItems == null) {
subItems = new ArrayList();
}
subItems.add(subItem);
}
/**
* @return Returns the subItems.
*/
@Override
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;
}
@Override
public AbstractExecutable getExecutable() {
return executable;
}
@Override
public void setExecutable(AbstractExecutable executable) {
this.executable = executable;
}
public void setCompletionMessage(String message) {
this.completionMessage = message;
}
public String getCompletionMessage() {
return completionMessage;
}
}