/******************************************************************************* * Copyright (c) 2007 Jeff Mesnil * All rights reserved. This program and the accompanying materials * are made available under the terms of the Eclipse Public License v1.0 * which accompanies this distribution, and is available at * http://www.eclipse.org/legal/epl-v10.html *******************************************************************************/ package net.jmesnil.jmx.ui.internal; import net.jmesnil.jmx.resources.MBeanFeatureInfoWrapper; import net.jmesnil.jmx.resources.MBeanInfoWrapper; import net.jmesnil.jmx.ui.JMXUIActivator; import net.jmesnil.jmx.ui.internal.editors.MBeanEditor; import net.jmesnil.jmx.ui.internal.editors.MBeanEditorInput; import net.jmesnil.jmx.ui.internal.tree.ObjectNameNode; import org.eclipse.core.runtime.Assert; import org.eclipse.core.runtime.IStatus; import org.eclipse.ui.IEditorInput; import org.eclipse.ui.IEditorPart; import org.eclipse.ui.IWorkbenchPage; import org.eclipse.ui.PartInitException; public class EditorUtils { public static IEditorInput getEditorInput(Object input) { Assert.isNotNull(input); if (input instanceof ObjectNameNode) { ObjectNameNode node = (ObjectNameNode) input; MBeanInfoWrapper wrapper = node.getMbeanInfoWrapper(); return new MBeanEditorInput(wrapper); } if (input instanceof MBeanInfoWrapper) { MBeanInfoWrapper wrapper = (MBeanInfoWrapper) input; return new MBeanEditorInput(wrapper); } if (input instanceof MBeanFeatureInfoWrapper) { MBeanFeatureInfoWrapper wrapper = (MBeanFeatureInfoWrapper) input; return new MBeanEditorInput(wrapper.getMBeanInfoWrapper()); } return null; } public static IEditorPart isOpenInEditor(Object inputElement) { IEditorInput input = getEditorInput(inputElement); return isOpenInEditor(input); } private static IEditorPart isOpenInEditor(IEditorInput input) { if (input != null) { IWorkbenchPage p = JMXUIActivator.getActivePage(); if (p != null) { return p.findEditor(input); } } return null; } public static IEditorPart openMBeanEditor(IEditorInput input) { IEditorPart part = EditorUtils.isOpenInEditor(input); if (part != null) { JMXUIActivator.getActivePage().bringToTop(part); return part; } else { try { return JMXUIActivator.getActivePage().openEditor(input, MBeanEditor.ID); } catch (PartInitException e) { JMXUIActivator.log(IStatus.ERROR, e.getMessage(), e); } } return null; } public static void revealInEditor(IEditorPart editor, Object input) { if (input instanceof MBeanFeatureInfoWrapper) { MBeanFeatureInfoWrapper feature = (MBeanFeatureInfoWrapper) input; if (editor instanceof MBeanEditor) { ((MBeanEditor) editor).selectReveal(feature); } } } }