// ============================================================================
//
// Copyright (C) 2006-2016 Talend Inc. - www.talend.com
//
// This source code is available under agreement available at
// %InstallDIR%\features\org.talend.rcp.branding.%PRODUCTNAME%\%PRODUCTNAME%license.txt
//
// You should have received a copy of the agreement
// along with this program; if not, write to Talend SA
// 9 rue Pages 92150 Suresnes, France
//
// ============================================================================
package com.amalto.workbench.providers;
import org.eclipse.jface.viewers.ColumnLabelProvider;
import org.eclipse.jface.viewers.IColorProvider;
import org.eclipse.jface.viewers.IFontProvider;
import org.eclipse.swt.graphics.Color;
import org.eclipse.swt.graphics.Font;
import org.eclipse.swt.graphics.Image;
import org.eclipse.swt.graphics.Point;
import org.eclipse.swt.widgets.Display;
import org.talend.core.GlobalServiceRegister;
import org.talend.mdm.commmon.util.webapp.XSystemObjects;
import com.amalto.workbench.image.EImage;
import com.amalto.workbench.image.ImageCache;
import com.amalto.workbench.image.OverlayImageProvider;
import com.amalto.workbench.models.TreeObject;
import com.amalto.workbench.service.bridge.ITransformService;
import com.amalto.workbench.utils.EXObjectStatus;
import com.amalto.workbench.utils.FontUtils;
import com.amalto.workbench.utils.Util;
import com.amalto.workbench.webservices.WSGetRoutingRule;
import com.amalto.workbench.webservices.WSRoutingRule;
import com.amalto.workbench.webservices.WSRoutingRulePK;
import com.amalto.workbench.webservices.WSTransformerV2;
import com.amalto.workbench.webservices.WSView;
public class ServerTreeLabelProvider extends ColumnLabelProvider implements IColorProvider, IFontProvider {
private Font font = FontUtils.getBoldFont(Display.getCurrent().getSystemFont());
private Color color = new Color(null, 150, 150, 150);
@Override
public String getText(Object obj) {
String label = obj.toString();
if (obj instanceof TreeObject) {
label = filterName(label, (TreeObject) obj);
}
return label;
}
private String filterName(String label, TreeObject treeObject) {
String transformedName = label;
if (label == null || label.isEmpty()) {
return transformedName;
}
Object wsObject = treeObject.getWsObject();
ITransformService transformService = (ITransformService) GlobalServiceRegister.getDefault().getService(
ITransformService.class);
if (wsObject instanceof WSTransformerV2) {
transformedName = transformService.transformToSilyProcessName(label, true);
} else if (wsObject instanceof WSView) {
transformedName = transformService.transformToSilyViewName(label, true);
}
return transformedName;
}
@Override
public Image getImage(Object obj) {
// if (obj instanceof TreeParent) {
TreeObject object = (TreeObject) obj;
if (object.getType() == TreeObject._SERVER_) {
return ImageCache.getCreatedImage(EImage.DEFAULT.getPath());
} else if (object.getType() == TreeObject.DATA_CLUSTER) {
return ImageCache.getCreatedImage(EImage.DATA_CLUSTER.getPath());
} else if (object.getType() == TreeObject.DATA_MODEL) {
return ImageCache.getCreatedImage(EImage.DATA_MODEL.getPath());
} else if (object.getType() == TreeObject.RESOURCES || object.getType() == TreeObject.DATA_MODEL_RESOURCE
|| object.getType() == TreeObject.DATA_MODEL_TYPES_RESOURCE
|| object.getType() == TreeObject.CUSTOM_TYPES_RESOURCE || object.getType() == TreeObject.PICTURES_RESOURCE) {
return ImageCache.getCreatedImage(EImage.RESOURCES.getPath());
} else if (object.getType() == TreeObject.MENU) {
return ImageCache.getCreatedImage(EImage.MENU.getPath());
} else if (object.getType() == TreeObject.TRANSFORMER) {
return ImageCache.getCreatedImage(EImage.TRANSFORMER.getPath());
} else if (object.getType() == TreeObject.ROLE) {
return ImageCache.getCreatedImage(EImage.ROLE.getPath());
} else if (object.getType() == TreeObject.STORED_PROCEDURE) {
return ImageCache.getCreatedImage(EImage.STORED_PROCEDURE.getPath());
} else if (object.getType() == TreeObject.ROUTING_RULE) {
Image img = ImageCache.getCreatedImage(EImage.ROUTING_RULE.getPath());
if (object.isXObject()) {
WSRoutingRule ws = (WSRoutingRule) (object.getWsObject());
try {
if (ws == null) {
ws = Util.getMDMService(object).getRoutingRule(
new WSGetRoutingRule(new WSRoutingRulePK(object.getDisplayName())));
}
} catch (Exception e) {
}
if (ws != null && ws.isDeactive() != null && ws.isDeactive()) {
img = OverlayImageProvider.getImageWithStatus(img, EXObjectStatus.DEACTIVE);
}
}
return img;
} else if (object.getType() == TreeObject.VIEW) {
return ImageCache.getCreatedImage(EImage.VIEW.getPath());
} else if (object.getType() == TreeObject.DOCUMENT) {
return ImageCache.getCreatedImage(EImage.DOCUMENTS.getPath());
} else if (object.getType() == TreeObject.SUBSCRIPTION_ENGINE) {
return ImageCache.getCreatedImage(EImage.SUBSCRIPTION_ENGINE.getPath());
} else if (object.getType() == TreeObject.EVENT_MANAGEMENT) {
return ImageCache.getCreatedImage(EImage.EVENTM_ANAGEMENT.getPath());
} else if (object.getType() == TreeObject.WORKFLOW || object.getType() == TreeObject.WORKFLOW_PROCESS) {
return ImageCache.getCreatedImage(EImage.WORKFLOW_PROCESS.getPath());
} else if (object.getType() == TreeObject.JOB_REGISTRY || object.getType() == TreeObject.JOB
|| object.getType() == TreeObject.TIS_JOB) {
return ImageCache.getCreatedImage(EImage.JOB.getPath());
} else if (object.getType() == TreeObject.SERVICE_CONFIGURATION) {
return ImageCache.getCreatedImage(EImage.SERVICE_CONFIGURATION.getPath());
} else if (object.getType() == TreeObject.CATEGORY_FOLDER) {
return ImageCache.getCreatedImage("icons/directory-close.png");//$NON-NLS-1$
} else if (object.getType() == TreeObject.BUILT_IN_CATEGORY_FOLDER) {
if (object.getDisplayName().equals("Deployed Jobs")) {
return ImageCache.getCreatedImage("icons/folder_deployed-jobs.png");//$NON-NLS-1$
}
return ImageCache.getCreatedImage("icons/folder_source-jobs.png");//$NON-NLS-1$
} else if (object.getType() == TreeObject._INVISIBLE) {
return ImageCache.getCreatedImage(EImage.SANDGLASS.getPath());
} else if (object.getType() == TreeObject.CUSTOM_FORM) {
return ImageCache.getCreatedImage(EImage.CUSTOM_FORM.getPath());
}
return ImageCache.getCreatedImage("icons/phased_out.gif");//$NON-NLS-1$
}
@Override
public Color getBackground(Object element) {
return null;
}
@Override
public Color getForeground(Object element) {
TreeObject tb = (TreeObject) element;
if (XSystemObjects.isExist(tb.getType(), tb.getDisplayName())) {
return color;
} else if (tb.getType() == TreeObject._SERVER_) {
return null;
} else {
return null;
}
}
@Override
public Font getFont(Object element) {
TreeObject tb = (TreeObject) element;
if (XSystemObjects.isExist(tb.getType(), tb.getDisplayName())) {
return font;
}
return null;
}
@Override
public String getToolTipText(Object object) {
if (object instanceof TreeObject) {
if (((TreeObject) object).getType() == TreeObject._SERVER_) {
return ((TreeObject) object).getEndpointAddress();
}
}
return null;
}
@Override
public Point getToolTipShift(Object object) {
return new Point(5, 5);
}
@Override
public void dispose() {
color.dispose();
}
}