blob: c536c921f6a779cbc5f638c3d7f5aa124b55bfd3 [file] [log] [blame]
//------------------------------------------------------------------------------
// Copyright (c) 2005, 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 implementation
//------------------------------------------------------------------------------
package org.eclipse.epf.library.layout.elements;
import java.util.Iterator;
import java.util.List;
import org.eclipse.epf.common.utils.StrUtil;
import org.eclipse.epf.library.LibraryPlugin;
import org.eclipse.epf.library.configuration.ConfigurationHelper;
import org.eclipse.epf.library.layout.ElementLayoutManager;
import org.eclipse.epf.library.layout.IElementLayout;
import org.eclipse.epf.library.layout.LayoutInfo;
import org.eclipse.epf.library.layout.util.XmlElement;
import org.eclipse.epf.library.util.ResourceHelper;
import org.eclipse.epf.uma.MethodElement;
/**
* The layout for a summary page of an element.
* <p>
* The summarypage layout a list of elements referenced by the owner element
*
* @author Jinhua Xi
* @since 1.0
*/
public class SummaryPageLayout implements IElementLayout {
private static final String LAYOUT_TYPE = "Summary"; //$NON-NLS-1$
private static final String LAYOUT_XSL = "summary.xsl"; //$NON-NLS-1$
ElementLayoutManager layoutManager;
MethodElement element;
List refList;
String title;
String prefix;
// String fileName;
IElementLayout elementLayout;
public SummaryPageLayout(ElementLayoutManager layoutManager,
MethodElement element, String title, List refList) {
this.layoutManager = layoutManager;
this.element = element;
this.refList = refList;
this.title = title;
this.elementLayout = layoutManager.getLayout(element, true);
}
public SummaryPageLayout(ElementLayoutManager layoutManager,
MethodElement element, String prefix, String title,
List refList)
{
this.layoutManager = layoutManager;
this.element = element;
this.refList = refList;
this.title = title;
this.prefix = (prefix != null && prefix.length() > 0 && prefix.indexOf("null") < 0) ? prefix : "Summary";
this.elementLayout = layoutManager.getLayout(element, true);
}
public String getId() {
return element.getGuid();
}
public String getType() {
return LAYOUT_TYPE;
}
public String getName() {
return title;
}
public String getDisplayName() {
return title;
}
public String getUrl() {
return elementLayout.getFilePath()
+ getFileName(ResourceHelper.FILE_EXT_HTML);
}
public String getShapeiconUrl() {
return null;
}
public String getNodeiconUrl() {
return null;
}
public String getDiagramiconUrl() {
return null;
}
public String getXslUrl() {
return LibraryPlugin.getDefault().getLayoutXslPath() + LAYOUT_XSL;
}
public String getBackPath() {
return elementLayout.getBackPath();
}
public String getFilePath() {
return elementLayout.getFilePath();
}
public String getFilePath(IElementLayout relativeTo) {
return elementLayout.getFilePath(relativeTo);
}
// public String getFileName(String ext) {
// return StrUtil.makeValidFileName(title + "_") + elementLayout.getFileName(ext); //$NON-NLS-1$
//
// }
public String getFileName(String ext) {
return StrUtil.removeSpecialCharacters(prefix + "_") + elementLayout.getFileName(ext); //$NON-NLS-1$
}
public MethodElement getElement() {
return element;
}
public ElementLayoutManager getLayoutMgr() {
return layoutManager;
}
/**
* @see org.eclipse.epf.library.layout.IElementLayout#getXmlElement(boolean)
*/
public XmlElement getXmlElement(boolean includeReferences) {
XmlElement elementXml = new XmlElement("Element") //$NON-NLS-1$
.setAttribute("Type", getType()) //$NON-NLS-1$
.setAttribute("Name", getName()) //$NON-NLS-1$
.setAttribute("Url", getUrl()) //$NON-NLS-1$
.setAttribute("BackPath", getBackPath()) //$NON-NLS-1$
.setAttribute("ImageUrl", getShapeiconUrl()) //$NON-NLS-1$
.setAttribute("DisplayName", getDisplayName()); //$NON-NLS-1$
if (includeReferences) {
String copyright = ConfigurationHelper.getCopyrightText(element,
layoutManager.getConfiguration());
if (copyright != null && copyright.length() > 0) {
elementXml.newChild("copyright").setValue(copyright); //$NON-NLS-1$
}
XmlElement refXml = elementXml
.newChild("referenceList").setAttribute("name", ""); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
for (Iterator it = refList.iterator(); it.hasNext();) {
Object e = it.next();
if (e instanceof MethodElement) {
MethodElement me = (MethodElement) e;
me = ConfigurationHelper.getCalculatedElement(me,
layoutManager.getConfiguration());
if (me != null) {
IElementLayout l = layoutManager.getLayout(me, true);
if (l != null) {
// don't include the references of the refereced
// elements, otherwise, may cause deadlock
refXml.addChild(l.getXmlElement(false));
}
}
}
}
}
return elementXml;
}
public List getLayouts() {
return null;
}
/**
* Returns the file name with the given extension for the given layout.
*/
public String getFileName(LayoutInfo info, String ext) {
return ResourceHelper.getFileName(element, null, info.name, ext);
}
public void setContentTarget(MethodElement targetElement) {
}
public void setElementOwner(MethodElement owner) {
}
/**
* check if the html content generated from this xsl file needs to be scanned or not
* scan the content is for identifying element references in the content and copy over resource files
* in some cases we don't need to scan the content, for example, the activity breakdown structure
*
* @param xslUrl the xsl that html is generated from, null for the default xsl layout
* @return boolean
*/
public boolean needContentScan(String xslUrl)
{
return false;
}
public void setShowElementLink(boolean show) {
}
}