/**
SpagoBI, the Open Source Business Intelligence suite
Copyright (C) 2012 Engineering Ingegneria Informatica S.p.A. - SpagoBI Competency Center
This Source Code Form is subject to the terms of the Mozilla Public
License, v. 2.0. If a copy of the MPL was not distributed with this file,
You can obtain one at http://mozilla.org/MPL/2.0/.
**/
package it.eng.spagobi.studio.core.util;
import it.eng.spagobi.studio.core.Activator;
import it.eng.spagobi.studio.utils.bo.Document;
import it.eng.spagobi.studio.utils.bo.Functionality;
import it.eng.spagobi.studio.utils.util.ImageDescriptorGatherer;
import java.util.HashMap;
import org.eclipse.jface.resource.ImageDescriptor;
import org.eclipse.swt.SWT;
import org.eclipse.swt.widgets.Composite;
import org.eclipse.swt.widgets.Display;
import org.eclipse.swt.widgets.Tree;
import org.eclipse.swt.widgets.TreeItem;
public class SdkFunctionalityTreeGenerator {
Tree tree=null;
Display display=null;
Composite container=null;
ImageDescriptor folderDescriptor=null;
ImageDescriptor treeBaseDescriptor=null;
HashMap<String, ImageDescriptor> imageDescriptors=null;
public Tree generateTree(Composite parent,Functionality func){
container=parent;
folderDescriptor=ImageDescriptorGatherer.getImageDesc("folder.gif", Activator.PLUGIN_ID);
treeBaseDescriptor=ImageDescriptorGatherer.getImageDesc("treebase.gif", Activator.PLUGIN_ID);
initializeField();
tree = new Tree(parent, SWT.MULTI | SWT.BORDER | SWT.V_SCROLL
| SWT.H_SCROLL);
TreeItem root=new TreeItem(tree,SWT.SINGLE);
root.setText("Functionalities");
root.setImage(treeBaseDescriptor.createImage());
createItemsList(root, func);
return tree;
}
// Private recursive method that adds documents in tree
// builds the tree with TreeItem named parent as root
private void createItemsList(TreeItem parent,Functionality func){
Functionality[] sdkFuncArray=func.getContainedFunctionalities();
if(sdkFuncArray!=null){
for (Functionality functionality : sdkFuncArray) {
TreeItem currItem=new TreeItem(parent,SWT.SINGLE);
currItem.setText(functionality.getName());
currItem.setData(functionality);
currItem.setImage(folderDescriptor.createImage());
createItemsList(currItem, functionality);
Document[] sdkDocuments=functionality.getContainedDocuments();
if(sdkDocuments!=null){
for (Document document : sdkDocuments) {
createDocumentsList(currItem, document);
}
}
}
}
}
private void createDocumentsList(TreeItem parent,Document doc){
TreeItem currDoc=new TreeItem(parent,SWT.CHECK);
currDoc.setText(doc.getName());
currDoc.setData(doc);
if(doc.getType()!=null){
ImageDescriptor descriptor=imageDescriptors.get(doc.getType().toUpperCase());
if(descriptor!=null){
currDoc.setImage(descriptor.createImage());
}
}
}
private void initializeField(){
imageDescriptors=new HashMap<String, ImageDescriptor>();
ImageDescriptor reportDescriptor=ImageDescriptorGatherer.getImageDesc("objecticon_REPORT.png", Activator.PLUGIN_ID);
ImageDescriptor olapDescriptor=ImageDescriptorGatherer.getImageDesc("objecticon_OLAP.png", Activator.PLUGIN_ID);
ImageDescriptor dashDescriptor=ImageDescriptorGatherer.getImageDesc("objecticon_DASH.png", Activator.PLUGIN_ID);
ImageDescriptor geoDescriptor=ImageDescriptorGatherer.getImageDesc("objecticon_MAP.png", Activator.PLUGIN_ID);
ImageDescriptor officeDocumentDescriptor=ImageDescriptorGatherer.getImageDesc("objecticon_OFFICE_DOC.png", Activator.PLUGIN_ID);
ImageDescriptor etlDescriptor=ImageDescriptorGatherer.getImageDesc("objecticon_ETL.png", Activator.PLUGIN_ID);
ImageDescriptor qbeDescriptor=ImageDescriptorGatherer.getImageDesc("objecticon_DATAMART.png", Activator.PLUGIN_ID);
ImageDescriptor dossierDescriptor=ImageDescriptorGatherer.getImageDesc("objecticon_DOSSIER.png", Activator.PLUGIN_ID);
ImageDescriptor compositeDescriptor=ImageDescriptorGatherer.getImageDesc("objecticon_COMPOSITE_DOCUMENT.png", Activator.PLUGIN_ID);
ImageDescriptor kpiDescriptor=ImageDescriptorGatherer.getImageDesc("objecticon_KPI.png", Activator.PLUGIN_ID);
ImageDescriptor dataMiningDescriptor=ImageDescriptorGatherer.getImageDesc("objecticon_DATA_MINING.png", Activator.PLUGIN_ID);
imageDescriptors.put("REPORT", reportDescriptor);
imageDescriptors.put("OLAP", olapDescriptor);
imageDescriptors.put("DASH", dashDescriptor);
imageDescriptors.put("MAP", geoDescriptor);
imageDescriptors.put("OFFICE_DOC", officeDocumentDescriptor);
imageDescriptors.put("ETL", etlDescriptor);
imageDescriptors.put("DOSSIER", dossierDescriptor);
imageDescriptors.put("DOCUMENT_COMPOSITE", compositeDescriptor);
imageDescriptors.put("DATAMART", qbeDescriptor);
imageDescriptors.put("KPI", kpiDescriptor);
imageDescriptors.put("DATA_MINING", kpiDescriptor);
}
}