Package org.jfree.experimental.chart.swt.editor

Source Code of org.jfree.experimental.chart.swt.editor.SWTPlotAppearanceEditor

/* ===========================================================
* JFreeChart : a free chart library for the Java(tm) platform
* ===========================================================
*
* (C) Copyright 2000-2007, by Object Refinery Limited and Contributors.
*
* Project Info:  http://www.jfree.org/jfreechart/index.html
*
* This library is free software; you can redistribute it and/or modify it
* under the terms of the GNU Lesser General Public License as published by
* the Free Software Foundation; either version 2.1 of the License, or
* (at your option) any later version.
*
* This library is distributed in the hope that it will be useful, but
* WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
* or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public
* License for more details.
*
* You should have received a copy of the GNU Lesser General Public
* License along with this library; if not, write to the Free Software
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301,
* USA. 
*
* [Java is a trademark or registered trademark of Sun Microsystems, Inc.
* in the United States and other countries.]
*
* ----------------------------
* SWTPlotAppearanceEditor.java
* ----------------------------
* (C) Copyright 2006, 2007, by Henry Proudhon and Contributors.
*
* Original Author:  Henry Proudhon (henry.proudhon AT ensmp.fr);
* Contributor(s):   David Gilbert (for Object Refinery Limited);
*
* Changes
* -------
* 01-Aug-2006 : New class (HP);
*
*/

package org.jfree.experimental.chart.swt.editor;

import java.awt.BasicStroke;
import java.awt.Stroke;
import java.util.ResourceBundle;

import org.eclipse.swt.SWT;
import org.eclipse.swt.events.SelectionAdapter;
import org.eclipse.swt.events.SelectionEvent;
import org.eclipse.swt.graphics.Color;
import org.eclipse.swt.graphics.RGB;
import org.eclipse.swt.layout.FillLayout;
import org.eclipse.swt.layout.GridData;
import org.eclipse.swt.layout.GridLayout;
import org.eclipse.swt.widgets.Button;
import org.eclipse.swt.widgets.ColorDialog;
import org.eclipse.swt.widgets.Combo;
import org.eclipse.swt.widgets.Composite;
import org.eclipse.swt.widgets.Group;
import org.eclipse.swt.widgets.Label;
import org.eclipse.swt.widgets.Spinner;
import org.jfree.chart.plot.CategoryPlot;
import org.jfree.chart.plot.Plot;
import org.jfree.chart.plot.PlotOrientation;
import org.jfree.chart.plot.XYPlot;
import org.jfree.experimental.swt.SWTPaintCanvas;
import org.jfree.experimental.swt.SWTUtils;

/**
* An editor for plot properties.
*/
class SWTPlotAppearanceEditor extends Composite {
   
    private Spinner selectStroke;
   
    /** The stroke (pen) used to draw the outline of the plot. */
    private SWTStrokeCanvas strokeCanvas;
   
    /** The paint (color) used to fill the background of the plot. */
    private SWTPaintCanvas backgroundPaintCanvas;

    /** The paint (color) used to draw the outline of the plot. */
    private SWTPaintCanvas outlinePaintCanvas;

    /** The orientation for the plot. */
    private PlotOrientation plotOrientation;

    private Combo orientation;
   
    /** Orientation constants. */
    private final static String[] orientationNames = { "Vertical",
        "Horizontal" };
    private final static int ORIENTATION_VERTICAL = 0;
    private final static int ORIENTATION_HORIZONTAL = 1;

    /** The resourceBundle for the localization. */
    protected static ResourceBundle localizationResources
        = ResourceBundle.getBundle("org.jfree.chart.editor.LocalizationBundle");

    SWTPlotAppearanceEditor(Composite parent, int style, Plot plot) {
        super(parent, style);
        FillLayout layout = new FillLayout();
        layout.marginHeight = layout.marginWidth = 4;
        this.setLayout(layout);

        Group general = new Group(this, SWT.NONE);
        GridLayout groupLayout = new GridLayout(3, false);
        groupLayout.marginHeight = groupLayout.marginWidth = 4;
        general.setLayout(groupLayout);
        general.setText( localizationResources.getString("General"));
       
        // row 1: stroke
        new Label(general, SWT.NONE).setText(localizationResources.getString(
                "Outline_stroke"));
        this.strokeCanvas = new SWTStrokeCanvas(general, SWT.NONE);
        this.strokeCanvas.setStroke(plot.getOutlineStroke());
        GridData strokeGridData = new GridData(SWT.FILL, SWT.CENTER, true,
                false);
        strokeGridData.heightHint = 20;
        this.strokeCanvas.setLayoutData(strokeGridData);
        this.selectStroke = new Spinner(general, SWT.BORDER);
        this.selectStroke.setMinimum(1);
        this.selectStroke.setMaximum(3);
        this.selectStroke.setLayoutData(new GridData(SWT.FILL, SWT.CENTER,
                false, false));
        this.selectStroke.addSelectionListener(
                new SelectionAdapter() {
                    public void widgetSelected(SelectionEvent event) {
                        int w = SWTPlotAppearanceEditor.this.selectStroke
                                .getSelection();
                        if (w > 0) {
                            SWTPlotAppearanceEditor.this.strokeCanvas.setStroke(
                                    new BasicStroke(w));
                            SWTPlotAppearanceEditor.this.strokeCanvas.redraw();
                        }
                    }
                }
        );
        // row 2: outline color
        new Label(general, SWT.NONE).setText(localizationResources.getString(
                "Outline_Paint"));
        this.outlinePaintCanvas = new SWTPaintCanvas(general, SWT.NONE,
                SWTUtils.toSwtColor(getDisplay(), plot.getOutlinePaint()));
        GridData outlineGridData = new GridData(SWT.FILL, SWT.CENTER, true,
                false);
        outlineGridData.heightHint = 20;
        this.outlinePaintCanvas.setLayoutData(outlineGridData);
        Button selectOutlineColor = new Button(general, SWT.PUSH);
        selectOutlineColor.setText(localizationResources.getString(
                "Select..."));
        selectOutlineColor.setLayoutData(new GridData(SWT.CENTER, SWT.CENTER,
                false, false));
        selectOutlineColor.addSelectionListener(
                new SelectionAdapter() {
                    public void widgetSelected(SelectionEvent event) {
                        ColorDialog dlg = new ColorDialog(getShell());
                        dlg.setText(localizationResources.getString(
                                "Outline_Paint"));
                        dlg.setRGB(SWTPlotAppearanceEditor.this
                                .outlinePaintCanvas.getColor().getRGB());
                        RGB rgb = dlg.open();
                        if (rgb != null) {
                            SWTPlotAppearanceEditor.this.outlinePaintCanvas
                                    .setColor(new Color(getDisplay(), rgb));
                        }
                    }
                }
        );
        // row 3: background paint
        new Label(general, SWT.NONE).setText(localizationResources.getString(
                "Background_paint"));
        this.backgroundPaintCanvas = new SWTPaintCanvas(general, SWT.NONE,
                SWTUtils.toSwtColor(getDisplay(), plot.getBackgroundPaint()));
        GridData bgGridData = new GridData(SWT.FILL, SWT.CENTER, true, false);
        bgGridData.heightHint = 20;
        this.backgroundPaintCanvas.setLayoutData(bgGridData);
        Button selectBgPaint = new Button(general, SWT.PUSH);
        selectBgPaint.setText(localizationResources.getString("Select..."));
        selectBgPaint.setLayoutData(new GridData(SWT.CENTER, SWT.CENTER, false,
                false));
        selectBgPaint.addSelectionListener(
                new SelectionAdapter() {
                    public void widgetSelected(SelectionEvent event) {
                        ColorDialog dlg = new ColorDialog(getShell());
                        dlg.setText(localizationResources.getString(
                                "Background_paint"));
                        dlg.setRGB(SWTPlotAppearanceEditor.this
                                .backgroundPaintCanvas.getColor().getRGB());
                        RGB rgb = dlg.open();
                        if (rgb != null) {
                            SWTPlotAppearanceEditor.this.backgroundPaintCanvas
                                    .setColor(new Color(getDisplay(), rgb));
                        }
                    }
                }
        );
        // row 4: orientation
        if (plot instanceof CategoryPlot) {
            this.plotOrientation = ((CategoryPlot) plot).getOrientation();
        }
        else if (plot instanceof XYPlot) {
            this.plotOrientation = ((XYPlot) plot).getOrientation();
        }
        if (this.plotOrientation != null) {
            boolean isVertical
                    = this.plotOrientation.equals(PlotOrientation.VERTICAL);
            int index = isVertical ? ORIENTATION_VERTICAL
                    : ORIENTATION_HORIZONTAL;
            new Label(general, SWT.NONE).setText(
                    localizationResources.getString("Orientation"));
            this.orientation = new Combo(general, SWT.DROP_DOWN);
            this.orientation.setItems(orientationNames);
            this.orientation.select(index);
            this.orientation.setLayoutData(new GridData(SWT.RIGHT, SWT.CENTER,
                    true, false, 2, 1));
            this.orientation.addSelectionListener(
                    new SelectionAdapter() {
                        public void widgetSelected(SelectionEvent event) {
                            switch (SWTPlotAppearanceEditor.this.orientation
                                    .getSelectionIndex()) {
                                case ORIENTATION_VERTICAL:
                                    SWTPlotAppearanceEditor.this.plotOrientation
                                            = PlotOrientation.VERTICAL;
                                    break;
                                case ORIENTATION_HORIZONTAL:
                                    SWTPlotAppearanceEditor.this.plotOrientation
                                            = PlotOrientation.HORIZONTAL;
                                    break;
                                default:
                                    SWTPlotAppearanceEditor.this.plotOrientation
                                            = PlotOrientation.VERTICAL;
                            }
                        }
                    }
            );
        }
    }

    /**
     * Returns the plot orientation.
     *
     * @return The plot orientation.
     */
    public PlotOrientation getPlotOrientation() {
        return this.plotOrientation;
    }
   
    /**
     * Returns the background paint.
     *
     * @return The background paint.
     */
    public Color getBackGroundPaint() {
        return this.backgroundPaintCanvas.getColor();
    }

    /**
     * Returns the outline paint.
     *
     * @return The outline paint.
     */
    public Color getOutlinePaint() {
        return this.outlinePaintCanvas.getColor();
    }

    /**
     * Returns the stroke.
     *
     * @return The stroke.
     */
    public Stroke getStroke() {
        return this.strokeCanvas.getStroke();
    }
}
TOP

Related Classes of org.jfree.experimental.chart.swt.editor.SWTPlotAppearanceEditor

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.