net.bioclipse.metaprint2d.ui.MetaPrintGenerator.java Source code

Java tutorial

Introduction

Here is the source code for net.bioclipse.metaprint2d.ui.MetaPrintGenerator.java

Source

/*******************************************************************************
 * 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;

import java.awt.Color;
import java.util.Collections;
import java.util.List;
import java.util.Map;

import net.sf.metaprint2d.MetaPrintResult;
import net.bioclipse.metaprint2d.ui.prefs.MetaprintPrefs;

import org.eclipse.jface.preference.IPreferenceStore;
import org.openscience.cdk.interfaces.IAtom;
import org.openscience.cdk.interfaces.IAtomContainer;
import org.openscience.cdk.renderer.RendererModel;
import org.openscience.cdk.renderer.elements.ElementGroup;
import org.openscience.cdk.renderer.elements.IRenderingElement;
import org.openscience.cdk.renderer.elements.OvalElement;
import org.openscience.cdk.renderer.generators.IGenerator;
import org.openscience.cdk.renderer.generators.IGeneratorParameter;

public class MetaPrintGenerator implements IGenerator {

    public MetaPrintGenerator() {

    }

    /**
     * Set up the colored M2D circles based on calculated properties
     */
    public IRenderingElement generate(IAtomContainer ac, RendererModel model) {

        //        System.out.println("Generator found AC: " + ac);

        ElementGroup group = new ElementGroup();
        Object o = ac.getProperty(Metaprint2DConstants.METAPRINT_RESULT_PROPERTY);
        if (o == null)
            return group;

        //Read prefs for rendering params and compute real values
        IPreferenceStore store = Activator.getDefault().getPreferenceStore();
        boolean renderSolid = store.getBoolean(MetaprintPrefs.RENDER_SOLID_CIRCLES);
        int circleRadiusPref = store.getInt(MetaprintPrefs.CIRCLE_RADIUS);
        double circleRadius = (double) circleRadiusPref / 10;
        if (circleRadius <= 0 || circleRadius > 1)
            circleRadius = 0.4;

        //OLD
        //        Map<Integer, Double> mrlist = MetaPrint2DHelper
        //            .getNormResultsFromProperty( (String)o );

        Map<Integer, MetaPrintResult> mresmap = MetaPrint2DHelper.getMetaprintResultsFromProperty((String) o);

        for (int i = 0; i < ac.getAtomCount(); i++) { //Loop over all atoms
            for (Integer ii : mresmap.keySet()) { //Loop over list of atom indices with M2D results
                if (ii.intValue() == i) {
                    IAtom atom = ac.getAtom(i);

                    MetaPrintResult mres = mresmap.get(ii);

                    Color drawColor = MetaPrint2DHelper.getColorByNormValue(mres);

                    if (drawColor != null) {
                        if (model.getIsCompact() || renderSolid) {
                            group.add(new OvalElement(atom.getPoint2d().x, atom.getPoint2d().y, circleRadius, true,
                                    drawColor));
                            //                            group.add( new OvalElement( atom.getPoint2d().x,
                            //                                                        atom.getPoint2d().y,
                            //                                                        .4,true, drawColor ));
                        } else {

                            group.add(new OvalElement(atom.getPoint2d().x, atom.getPoint2d().y, circleRadius, false,
                                    drawColor));
                            group.add(new OvalElement(atom.getPoint2d().x, atom.getPoint2d().y,
                                    circleRadius + 0.002, false, drawColor));
                            //                            group.add( new OvalElement( atom.getPoint2d().x,
                            //                                                        atom.getPoint2d().y,
                            //                                                        .4,false, drawColor ));
                            //                            group.add( new OvalElement( atom.getPoint2d().x,
                            //                                                        atom.getPoint2d().y,
                            //                                                        .402,false, drawColor ));
                        }
                    }
                }
            }
        }

        return group;
    }

    public List<IGeneratorParameter<?>> getParameters() {
        return Collections.emptyList();
    }
}