/** 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.views; import it.eng.spagobi.studio.core.util.ImageConstants; import it.eng.spagobi.studio.utils.bo.xmlMapping.XmlServerGenerator; import it.eng.spagobi.studio.utils.util.SpagoBIStudioConstants; import java.util.Iterator; import java.util.Vector; import org.eclipse.core.internal.resources.Folder; import org.eclipse.core.resources.IFile; import org.eclipse.core.resources.IFolder; import org.eclipse.core.resources.IProject; import org.eclipse.jface.viewers.ILabelProvider; import org.eclipse.swt.graphics.Image; import org.eclipse.swt.widgets.Composite; import org.eclipse.ui.internal.navigator.NavigatorDecoratingLabelProvider; import org.eclipse.ui.navigator.CommonViewer; import org.slf4j.Logger; import org.slf4j.LoggerFactory; public class ResourceNavigator extends org.eclipse.ui.navigator.CommonNavigator { public static final String VIEW_ID = "it.eng.spagobi.studio.core.views.ResourceNavigator"; private static Logger logger = LoggerFactory.getLogger(ResourceNavigator.class); // @Override // protected Object getInitialInput() { // return new CustomResourceWorkbenchRoot(); // } /** inner class: Personalize folders with icons * * @author gavardi * */ // public class MyLabelProvider extends LabelProvider { public class MyLabelProvider extends NavigatorDecoratingLabelProvider { // Prepare Icons // ImageDescriptor datasourceDescriptor=ImageDescriptorGatherer.getImageDesc(SpagoBIStudioConstants.FOLDER_ICON_DATA_SOURCE); // ImageDescriptor dataseDescriptor=ImageDescriptorGatherer.getImageDesc(SpagoBIStudioConstants.FOLDER_ICON_DATASET); // ImageDescriptor analysisDescriptor=ImageDescriptorGatherer.getImageDesc(SpagoBIStudioConstants.FOLDER_ICON_ANALYSIS); // ImageDescriptor metadataDescriptor=ImageDescriptorGatherer.getImageDesc(SpagoBIStudioConstants.FOLDER_ICON_METADATA_MODEL); // ImageDescriptor privateDocumentsDescriptor=ImageDescriptorGatherer.getImageDesc(SpagoBIStudioConstants.FOLDER_ICON_PRIVATE_DOCUMENTS); // ImageDescriptor resourceDescriptor=ImageDescriptorGatherer.getImageDesc(SpagoBIStudioConstants.FOLDER_ICON_RESOURCE); // ImageDescriptor serverDescriptor=ImageDescriptorGatherer.getImageDesc(SpagoBIStudioConstants.FOLDER_ICON_SERVER); // ImageDescriptor serverActiveDescriptor=ImageDescriptorGatherer.getImageDesc(SpagoBIStudioConstants.FOLDER_ICON_SERVER_ACTIVE); // ImageDescriptor serverInactiveDescriptor=ImageDescriptorGatherer.getImageDesc(SpagoBIStudioConstants.FOLDER_ICON_SERVER_INACTIVE); // ImageDescriptor sbiProjectDescriptor=ImageDescriptorGatherer.getImageDesc(SpagoBIStudioConstants.FOLDER_ICON_SBI_PROJECT); /** vector containing images*/ Vector<Image> images = new Vector<Image>(); public MyLabelProvider(ILabelProvider commonLabelProvider) { super(commonLabelProvider); } /** * Use personalized icons for SpagoBi structure project folders */ public Image getImage(Object object) { Image imageToReturn = null; if (object instanceof IFolder) { Folder folder = (Folder) object; org.eclipse.core.resources.IContainer container = folder.getParent(); // if father is project means they are system tables (to avoid name mismatches) String name = folder.getName(); String fatherName = container != null ? container.getName() : ""; if(container instanceof IProject){ if(name.equals(SpagoBIStudioConstants.FOLDER_RESOURCE)){ //imageToReturn = ImageConstants.resourceDescriptor.createImage(); imageToReturn = ImageConstants.resourceDescriptor.createImage(); images.add(imageToReturn); } else if(name.equals(SpagoBIStudioConstants.FOLDER_ANALYSIS)){ imageToReturn = ImageConstants.analysisDescriptor.createImage(); images.add(imageToReturn); } else if(name.equals(SpagoBIStudioConstants.FOLDER_METADATA_MODEL)){ imageToReturn = ImageConstants.metadataDescriptor.createImage(); images.add(imageToReturn); } else if(name.equals(SpagoBIStudioConstants.FOLDER_PRIVATE_DOCUMENTS)){ imageToReturn = ImageConstants.privateDocumentsDescriptor.createImage(); images.add(imageToReturn); } else if(name.equals(SpagoBIStudioConstants.FOLDER_DATASET)){ imageToReturn = ImageConstants.dataseDescriptor.createImage(); images.add(imageToReturn); } else if(name.equals(SpagoBIStudioConstants.FOLDER_OLAP_TEMPLATES)){ imageToReturn = ImageConstants.olapDescriptor.createImage(); images.add(imageToReturn); } } else{ // there asre some structure folders that have a father folder // data Source and server have father resources // if(name.equals(SpagoBIStudioConstants.FOLDER_DATA_SOURCE)){ // if(fatherName.equals(SpagoBIStudioConstants.FOLDER_RESOURCE)){ // imageToReturn = ImageConstants.datasourceDescriptor.createImage(); // images.add(imageToReturn); // } // } // else if(name.equals(SpagoBIStudioConstants.FOLDER_SERVER)){ if(fatherName.equals(SpagoBIStudioConstants.FOLDER_RESOURCE)){ imageToReturn = ImageConstants.serverDescriptor.createImage(); images.add(imageToReturn); } } } } // if it is a spagobi project folder else if(object instanceof IProject){ imageToReturn = ImageConstants.sbiProjectDescriptor.createImage(); images.add(imageToReturn); } // if it is a file else if (object instanceof IFile) { IFile file = (IFile)object; // if it is a server file String fatherName = (file.getParent() != null) ? file.getParent().getName() : ""; if(fatherName.equals(SpagoBIStudioConstants.FOLDER_SERVER) && file.getName().endsWith("."+SpagoBIStudioConstants.SERVER_EXTENSION)){ boolean isActive =new XmlServerGenerator().isServerActive(file); if(isActive) imageToReturn = ImageConstants.serverActiveDescriptor.createImage(); else imageToReturn = ImageConstants.serverInactiveDescriptor.createImage(); } } // default case if(imageToReturn == null){ imageToReturn = super.getImage(object); } return imageToReturn; } public void dispose() { for (Iterator iterator = images.iterator(); iterator.hasNext();) { Image imagesIt = (Image) iterator.next(); imagesIt.dispose(); } images.clear(); } } @Override public void createPartControl(Composite aParent) { super.createPartControl(aParent); // Override Label provider to use personalized folder CommonViewer viewer = getCommonViewer(); viewer.setLabelProvider(new MyLabelProvider((ILabelProvider)viewer.getLabelProvider())); // //WizardActionGroup //getCommonViewer().getNavigatorContentService() } }