/* ***************************************************************************** * Copyright (c) 2009 Ola Spjuth. * 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 * * Contributors: * Ola Spjuth - initial API and implementation ******************************************************************************/ package net.bioclipse.metaprint2d.ui.actions; import net.bioclipse.cdk.domain.ICDKMolecule; import net.bioclipse.cdk.jchempaint.editor.JChemPaintEditor; import net.bioclipse.cdk.jchempaint.view.JChemPaintView; import net.bioclipse.cdk.ui.sdfeditor.editor.MoleculesEditor; import net.bioclipse.cdk.ui.sdfeditor.editor.MultiPageMoleculesEditorPart; import net.bioclipse.metaprint2d.ui.Activator; import net.bioclipse.metaprint2d.ui.MetaPrintGenerator; import net.bioclipse.metaprint2d.ui.Metaprint2DConstants; import net.bioclipse.metaprint2d.ui.business.IMetaPrint2DManager; import net.bioclipse.metaprint2d.ui.views.MetaPrint2DReportView; import org.apache.log4j.Logger; import org.eclipse.core.commands.AbstractHandler; import org.eclipse.core.commands.ExecutionEvent; import org.eclipse.core.commands.ExecutionException; import org.eclipse.core.commands.IHandler; import org.eclipse.ui.IEditorPart; import org.eclipse.ui.IViewPart; import org.eclipse.ui.PlatformUI; import org.eclipse.ui.contexts.IContextService; public class ClearMetaPrint2DHandler extends AbstractHandler implements IHandler { Logger logger = Logger.getLogger( ClearMetaPrint2DHandler.class ); public Object execute( ExecutionEvent event ) throws ExecutionException { //Make sure we are called from a supported editor IEditorPart part = PlatformUI.getWorkbench().getActiveWorkbenchWindow() .getActivePage().getActiveEditor(); if (part instanceof net.bioclipse.cdk.ui.sdfeditor.editor.MultiPageMoleculesEditorPart) { executeInMoleculesEditor(part); } else if ( part instanceof JChemPaintEditor ) { executeInJCP(part); } MetaPrintGenerator.setVisible(false); updateLinkedViews(); return null; } public void executeInJCP(IEditorPart part){ JChemPaintEditor jcpeditor = (JChemPaintEditor) part; //Turn of generators // jcpeditor.getWidget().setUseExtensionGenerators( false ); IMetaPrint2DManager m2d = Activator.getDefault().getMetaPrint2DManager(); m2d.clear( jcpeditor.getCDKMolecule()); jcpeditor.setMoleculeProperty(Metaprint2DConstants.METAPRINT_RESULT_PROPERTY, null); //manually update jcpeditor jcpeditor.update(); } private void updateLinkedViews() { //Manually refresh m2d report view IViewPart reportView = PlatformUI.getWorkbench(). getActiveWorkbenchWindow().getActivePage(). findView(MetaPrint2DReportView.VIEW_ID); if (reportView!=null) ((MetaPrint2DReportView)reportView).refresh(); //Manually refresh 2D view as well IViewPart jcpview = PlatformUI.getWorkbench().getActiveWorkbenchWindow() .getActivePage().findView( JChemPaintView.VIEW_ID ); if (jcpview!=null) ((JChemPaintView)jcpview).refresh(); } public void executeInMoleculesEditor(IEditorPart part) { MultiPageMoleculesEditorPart molPart=(MultiPageMoleculesEditorPart)part; IContextService contextService = (IContextService) PlatformUI.getWorkbench(). getService(IContextService.class); for (Object cs : contextService.getActiveContextIds()){ if (MultiPageMoleculesEditorPart.JCP_CONTEXT.equals( cs )){ //JCP is active Object obj = molPart.getAdapter(JChemPaintEditor.class); if (obj!= null){ JChemPaintEditor jcp=(JChemPaintEditor)obj; executeInJCP( jcp ); return; } } } MoleculesEditor molEditor=molPart.getMoleculesPage(); molEditor.setRenderer2DConfigurator( null ); molEditor.getMolTableViewer().refresh(); logger.debug("Removed renderer2dconfigurator in MoleculesTable"); } }