// ============================================================================ // // 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 org.talend.mdm.repository.ui.validate; import java.util.List; import org.apache.log4j.Logger; import org.eclipse.core.commands.ExecutionEvent; import org.eclipse.core.commands.ExecutionException; import org.eclipse.core.expressions.EvaluationContext; import org.eclipse.core.resources.IMarker; import org.eclipse.core.runtime.CoreException; import org.eclipse.e4.core.commands.ExpressionContext; import org.eclipse.ui.views.markers.MarkerItem; import org.eclipse.ui.views.markers.MarkerViewHandler; import org.talend.mdm.repository.core.marker.IValidationMarker; import org.talend.mdm.repository.ui.views.MDMProblemView; /** * created by HHB on 2013-4-8 only work for data model * */ public class JumpToSourceLineHandler extends MarkerViewHandler { static Logger log = Logger.getLogger(JumpToSourceLineHandler.class); private List selectedObjs; /* * (non-Javadoc) * * @see org.eclipse.core.commands.IHandler#execute(org.eclipse.core.commands.ExecutionEvent) */ @Override public Object execute(ExecutionEvent event) throws ExecutionException { IMarker[] selectedMarkers = getSelectedMarkers(event); MDMProblemView view = (MDMProblemView) getView(event); view.openSelectedMarkers(true); return null; } /* * (non-Javadoc) * * @see org.eclipse.core.commands.AbstractHandler#isEnabled() */ @Override public boolean isEnabled() { if (selectedObjs != null) { int size = selectedObjs.size(); if (size == 0 || size > 1) { return false; } Object object = selectedObjs.get(0); if (object instanceof MarkerItem) { IMarker marker = ((MarkerItem) object).getMarker(); try { String type = marker.getType(); if (type != null) { return IValidationMarker.MARKER_DATA_MODEL.equals(type) || IValidationMarker.MARKER_XSD_ERR.equals(type); } } catch (CoreException e) { log.error(e.getMessage(), e); } } } return false; } /* * (non-Javadoc) * * @see org.eclipse.core.commands.AbstractHandler#setEnabled(java.lang.Object) */ @Override public void setEnabled(Object evaluationContext) { if (evaluationContext != null) { Object defaultVariable = null; if (evaluationContext instanceof ExpressionContext) { ExpressionContext exc = (ExpressionContext) evaluationContext; defaultVariable = exc.getDefaultVariable(); } else if (evaluationContext instanceof EvaluationContext) { EvaluationContext context = (EvaluationContext) evaluationContext; defaultVariable = context.getDefaultVariable(); } if (defaultVariable instanceof List) { selectedObjs = (List) defaultVariable; } else { selectedObjs = null; } } } }