package com.hybris.impexformatter.hyperlink; import java.util.HashMap; import org.eclipse.core.resources.IFile; import org.eclipse.core.resources.IMarker; import org.eclipse.core.resources.IProject; import org.eclipse.core.resources.ResourcesPlugin; import org.eclipse.core.runtime.CoreException; import org.eclipse.jface.text.IRegion; import org.eclipse.jface.text.hyperlink.IHyperlink; import org.eclipse.swt.SWT; import org.eclipse.swt.widgets.MessageBox; import org.eclipse.ui.IWorkbenchPage; import org.eclipse.ui.PlatformUI; import org.eclipse.ui.ide.IDE; import com.hybris.impexformatter.Activator; public class ImpexTypeHyperlink implements IHyperlink { private final IRegion fUrlRegion; private String location; public ImpexTypeHyperlink(IRegion targetRegion, String text) { fUrlRegion = targetRegion; location = text; } @Override public IRegion getHyperlinkRegion() { return fUrlRegion; } @Override public String getHyperlinkText() { return null; } @Override public String getTypeLabel() { return null; } @Override public void open() { IWorkbenchPage page = PlatformUI.getWorkbench().getActiveWorkbenchWindow().getActivePage(); String typeLocation = Activator.getDefault().getTypeLoaderInfo(location); String fileName = typeLocation.substring(0, typeLocation.indexOf(":")); String extensionName = fileName.replaceAll("-items.xml", ""); String lineNumberStr = typeLocation.substring(typeLocation.indexOf(":") + 1, typeLocation.indexOf("(")); IProject extension = ResourcesPlugin.getWorkspace().getRoot().getProject(extensionName); IFile itemsxml = extension.getFile("resources/" + fileName); if (itemsxml.exists()) { IMarker marker; try { marker = itemsxml.createMarker(IMarker.TEXT); HashMap<String, Object> map = new HashMap<String, Object>(); map.put(IMarker.LINE_NUMBER, Integer.parseInt(lineNumberStr)); marker.setAttributes(map); //IDE.openEditor(getSite().getPage(), marker); IDE.openEditor(page, marker); marker.delete(); } catch (CoreException e) { Activator.logError("Eclipse CoreException", e); } } else { MessageBox dialog = new MessageBox(PlatformUI.getWorkbench().getDisplay().getActiveShell(), SWT.ICON_WARNING | SWT.OK); dialog.setText("Extension not found"); dialog.setMessage("The extension " + extensionName + " was not found in the workspace. Please import it and try again."); dialog.open(); } } }