/* ***************************************************************************** * 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.views; import net.bioclipse.cdk.jchempaint.editor.JChemPaintEditor; import net.bioclipse.cdk.ui.sdfeditor.editor.MultiPageMoleculesEditorPart; import net.bioclipse.metaprint2d.ui.Activator; import net.bioclipse.metaprint2d.ui.business.IMetaPrint2DManager; import net.bioclipse.metaprint2d.ui.model.MetaPrint2DCalculation; import org.eclipse.jface.dialogs.MessageDialog; import org.eclipse.swt.SWT; import org.eclipse.swt.layout.GridData; import org.eclipse.swt.layout.GridLayout; import org.eclipse.swt.widgets.Composite; import org.eclipse.swt.widgets.Control; import org.eclipse.swt.widgets.Label; import org.eclipse.swt.widgets.Widget; import org.eclipse.ui.IEditorPart; import org.eclipse.ui.IPartListener; import org.eclipse.ui.IPartListener2; import org.eclipse.ui.IWorkbenchPart; import org.eclipse.ui.IWorkbenchPartReference; import org.eclipse.ui.PlatformUI; import org.eclipse.ui.forms.events.HyperlinkAdapter; import org.eclipse.ui.forms.events.HyperlinkEvent; import org.eclipse.ui.forms.widgets.AbstractHyperlink; import org.eclipse.ui.forms.widgets.FormToolkit; import org.eclipse.ui.forms.widgets.Hyperlink; import org.eclipse.ui.forms.widgets.ScrolledForm; import org.eclipse.ui.internal.WorkbenchPartReference; import org.eclipse.ui.part.*; /** * * @author ola * */ public class MetaPrint2DReportView extends ViewPart implements IPartListener2{ public static final String VIEW_ID = "net.bioclipse.metaprint2d.ui.views.MetaPrint2DReportView"; private FormToolkit toolkit; private ScrolledForm form; private Label lblTime; private Label lblDB; private Label lblOperator; private IMetaPrint2DManager m2d; private Label lblStatus; /** * The constructor. */ public MetaPrint2DReportView() { m2d=Activator.getDefault().getMetaPrint2DManager(); } /** * This is a callback that will allow us to create the viewer and * initialize it. */ public void createPartControl(Composite parent) { toolkit = new FormToolkit(parent.getDisplay()); form = toolkit.createScrolledForm(parent); form.setText("Last MetaPrint2D run"); GridLayout layout = new GridLayout(); form.getBody().setLayout(layout); layout.numColumns = 2; GridData gdl = new GridData(); gdl.widthHint=100; GridData gdr = new GridData(GridData.GRAB_HORIZONTAL); gdr.widthHint=200; Label label4 = toolkit.createLabel(form.getBody(), "Status", SWT.NULL); label4.setLayoutData(gdl); lblStatus = toolkit.createLabel(form.getBody(), "Not run", SWT.NULL); lblStatus.setLayoutData(gdr); Label label3 = toolkit.createLabel(form.getBody(), "Database", SWT.NULL); label3.setLayoutData(gdl); lblDB = toolkit.createLabel(form.getBody(), "", SWT.NULL); lblDB.setLayoutData(gdr); Label label2 = toolkit.createLabel(form.getBody(), "Operator", SWT.NULL); label2.setLayoutData(gdl); lblOperator = toolkit.createLabel(form.getBody(), "", SWT.NULL); lblOperator.setLayoutData(gdr); Label label = toolkit.createLabel(form.getBody(), "Calculation time", SWT.NULL); label.setLayoutData(gdl); lblTime = toolkit.createLabel(form.getBody(), "", SWT.NULL); lblTime.setLayoutData(gdr); refresh(); } /** * Passing the focus request to the form. */ public void setFocus() { form.setFocus(); } /** * Disposes the toolkit */ public void dispose() { toolkit.dispose(); super.dispose(); } private void resreshValues(MetaPrint2DCalculation m2calc) { // TODO Auto-generated method stub } /*======================== * For PART listener below ========================*/ private void handlePartChange(IWorkbenchPartReference partRef) { IWorkbenchPart part=partRef.getPart(false); if (part==null) return; if (!(part instanceof IEditorPart))return; //OK, so it is an editor IEditorPart editor = (IEditorPart) part; visitEditor(editor); } private void visitEditor(IEditorPart part) { //Look up in manager the m2dcalculation MetaPrint2DCalculation m2calc =null; if ( part instanceof MultiPageMoleculesEditorPart ) { MultiPageMoleculesEditorPart jcpmulti = (MultiPageMoleculesEditorPart) part; if (jcpmulti.isJCPVisible()){ Object obj = jcpmulti.getAdapter(JChemPaintEditor.class); if (obj!= null){ part = (JChemPaintEditor)obj; } } } if (m2d.getCalculationMap().containsKey(part)){ m2calc = m2d.getCalculationMap().get(part); }else{ //See what active editor is IEditorPart ePart=PlatformUI.getWorkbench(). getActiveWorkbenchWindow().getActivePage().getActiveEditor(); if (m2d.getCalculationMap().containsKey(ePart)){ m2calc = m2d.getCalculationMap().get(ePart); } } if (m2calc!=null) refreshValues(m2calc); } private void refreshValues(final MetaPrint2DCalculation m2calc) { lblTime.setText(m2calc.getCalculationTime()); lblOperator.setText(m2calc.getOperator()); lblDB.setText(m2calc.getDatabase()); lblStatus.setText(m2calc.getStatus()); // if (m2calc.getStatus().equalsIgnoreCase("ok")){ // //Create a simple label // lblStatus=toolkit.createLabel(form.getBody(), m2calc.getStatus()); // form.update(); // }else{ // //Add hyperlink to review what went wrong // lblStatus = toolkit.createHyperlink(form.getBody(), // "Error", SWT.WRAP); // ((AbstractHyperlink) lblStatus).addHyperlinkListener(new HyperlinkAdapter() { // public void linkActivated(HyperlinkEvent e) { // MessageDialog.openError(getSite().getShell(), "MetaPrint2D error", m2calc.getStatus()); // } // }); // // } } public void refresh(){ if (PlatformUI.getWorkbench()==null) return; if (PlatformUI.getWorkbench().getActiveWorkbenchWindow()==null) return; if (PlatformUI.getWorkbench().getActiveWorkbenchWindow().getActivePage() ==null) return; if (PlatformUI.getWorkbench().getActiveWorkbenchWindow().getActivePage() .getActiveEditor()==null) return; IEditorPart ePart=PlatformUI.getWorkbench(). getActiveWorkbenchWindow().getActivePage().getActiveEditor(); visitEditor(ePart); } public void partActivated(IWorkbenchPartReference partRef) { handlePartChange(partRef); } public void partBroughtToTop(IWorkbenchPartReference partRef) { handlePartChange(partRef); } public void partClosed(IWorkbenchPartReference partRef) { // TODO Auto-generated method stub } public void partDeactivated(IWorkbenchPartReference partRef) { // TODO Auto-generated method stub } public void partHidden(IWorkbenchPartReference partRef) { // TODO Auto-generated method stub } public void partInputChanged(IWorkbenchPartReference partRef) { // TODO Auto-generated method stub } public void partOpened(IWorkbenchPartReference partRef) { handlePartChange(partRef); } public void partVisible(IWorkbenchPartReference partRef) { handlePartChange(partRef); } }